1 | import { Key } from '../Any/Key';
|
2 | import { NonNullableFlat } from '../Object/NonNullable';
|
3 | import { Cast } from '../Any/Cast';
|
4 | import { List } from '../List/List';
|
5 | import { BuiltIn } from '../Misc/BuiltIn';
|
6 | import { Primitive } from '../Misc/Primitive';
|
7 | import { Length } from '../List/Length';
|
8 | import { Keys } from '../Any/Keys';
|
9 |
|
10 |
|
11 |
|
12 | declare type UnionOf<A> = A extends List ? A[number] : A[keyof A];
|
13 |
|
14 |
|
15 |
|
16 | declare type _Paths<O, P extends List = []> = UnionOf<{
|
17 | [K in keyof O]: O[K] extends BuiltIn | Primitive ? NonNullableFlat<[...P, K?]> : [
|
18 | Keys<O[K]>
|
19 | ] extends [never] ? NonNullableFlat<[...P, K?]> : 12 extends Length<P> ? NonNullableFlat<[...P, K?]> : _Paths<O[K], [...P, K?]>;
|
20 | }>;
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 | export declare type Paths<O, P extends List = []> = _Paths<O, P> extends infer X ? Cast<X, List<Key>> : never;
|
31 | export {};
|