export type ObjectLiteral = Record; export type ObjectLiteralKeys = { [K in keyof T as `${K & (string | number)}`]: T[K]; }; export type Flatten = Type extends Array ? Item : Type; export type OnlyScalar = T extends string | number | boolean | undefined | null ? T : never; export type OnlySingleObject = T extends { [key: string]: any; } ? T : never; export type OnlyObject = Flatten extends OnlySingleObject> ? T | Flatten : never; export type KeyWithOptionalPrefix = T extends string ? (`${O}${T}` | T) : never; type PrevIndex = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]; export type SimpleKeys = T extends ObjectLiteral ? ({ [Key in keyof T & (string | number)]: Flatten extends Record ? (Flatten extends Date ? `${Key}` : never) : `${Key}`; }[keyof T & (string | number)]) : string; export type NestedKeys = T extends ObjectLiteral ? ([ Depth ] extends [0] ? never : { [Key in keyof T & (string | number)]: Flatten extends Record ? (Flatten extends Date ? `${Key}` : `${Key}.${NestedKeys, PrevIndex[Depth]>}`) : `${Key}`; }[keyof T & (string | number)]) : string; export type NestedResourceKeys = T extends ObjectLiteral ? ([ Depth ] extends [0] ? never : { [Key in keyof T & (string | number)]: Flatten extends Record ? Key | `${Key}.${NestedResourceKeys, PrevIndex[Depth]>}` : never; }[keyof T & (string | number)]) : string; export type TypeFromNestedKeyPath = T extends ObjectLiteral ? { [K in Path]: K extends keyof T ? Flatten : K extends `${infer P}.${infer S}` ? Flatten extends Record ? TypeFromNestedKeyPath, S> : never : never; }[Path] : never; export {}; //# sourceMappingURL=types.d.ts.map