export type Primitive = null | undefined | string | number | boolean | symbol | bigint; type BrowserNativeObject = Date | FileList | File | Blob | Map | Set | Uint16Array | Uint32Array | Uint8Array; type AddDotToKey = `.${TKey}`; type ToString = `${TKey}`; export type LiteralUnion = LiteralType | (BaseType & Record); type RecursiveKeyOfHandleValue = TValue extends Primitive | BrowserNativeObject | TraversedTypes ? Text : TValue extends Array ? `${Text}` | RecursiveKeyOfHandleValue : TValue extends object ? TValue extends File | Date | Blob | Map | Set | Uint16Array | Uint32Array | Uint8Array | TraversedTypes ? Text : Text | `${Text}${AddDotToKey>}` : Text; export type RecursiveKeyOf = { [TKey in keyof TObj & (string | number)]: RecursiveKeyOfHandleValue, TraversedTypes>; }[keyof TObj & (string | number)]; export type FormKey | any[]> = LiteralUnion ? RecursiveKeyOfHandleValue : RecursiveKeyOf, string>; export type OnlyOnTouch = Array ? FormKey : string>; export {};