mirror of
https://github.com/LukeHagar/form.git
synced 2025-12-06 12:27:45 +00:00
fix: limit deep keys to max depth of 10
This commit is contained in:
@@ -133,22 +133,28 @@ type AllowedIndexes<
|
|||||||
? AllowedIndexes<Tail, Keys | Tail['length']>
|
? AllowedIndexes<Tail, Keys | Tail['length']>
|
||||||
: Keys
|
: Keys
|
||||||
|
|
||||||
export type DeepKeys<T> = unknown extends T
|
export type DeepKeys<T, TDepth extends any[] = []> = TDepth['length'] extends 10
|
||||||
|
? never
|
||||||
|
: unknown extends T
|
||||||
? keyof T
|
? keyof T
|
||||||
: object extends T
|
: object extends T
|
||||||
? string
|
? string
|
||||||
: T extends readonly any[] & IsTuple<T>
|
: T extends readonly any[] & IsTuple<T>
|
||||||
? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>>
|
? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>, TDepth>
|
||||||
: T extends any[]
|
: T extends any[]
|
||||||
? DeepKeys<T[number]>
|
? DeepKeys<T[number]>
|
||||||
: T extends Date
|
: T extends Date
|
||||||
? never
|
? never
|
||||||
: T extends object
|
: T extends object
|
||||||
? (keyof T & string) | DeepKeysPrefix<T, keyof T>
|
? (keyof T & string) | DeepKeysPrefix<T, keyof T, TDepth>
|
||||||
: never
|
: never
|
||||||
|
|
||||||
type DeepKeysPrefix<T, TPrefix> = TPrefix extends keyof T & (number | string)
|
type DeepKeysPrefix<
|
||||||
? `${TPrefix}.${DeepKeys<T[TPrefix]> & string}`
|
T,
|
||||||
|
TPrefix,
|
||||||
|
TDepth extends any[],
|
||||||
|
> = TPrefix extends keyof T & (number | string)
|
||||||
|
? `${TPrefix}.${DeepKeys<T[TPrefix], [...TDepth, any]> & string}`
|
||||||
: never
|
: never
|
||||||
|
|
||||||
export type DeepValue<T, TProp> = T extends Record<string | number, any>
|
export type DeepValue<T, TProp> = T extends Record<string | number, any>
|
||||||
|
|||||||
Reference in New Issue
Block a user