import { SourceRecord } from "../types.js"; export type JoinableKeys = { [K in keyof T]: NonNullable extends SourceRecord | SourceRecord[] ? `${Extract}` : never; }[keyof T]; type Prev = [never, 0, 1, 2, 3, 4, 5]; type IsAny = 0 extends 1 & T ? true : false; type NestedIndexKeys = [Depth] extends [never] ? never : T extends (infer U)[] ? NestedIndexKeys : T extends object ? { [K in keyof T]: NonNullable extends { __brand: "index"; } ? IsAny extends true ? never : `${Prefix}${Prefix extends "" ? "" : "."}${Extract}` : NonNullable extends object ? NestedIndexKeys, `${Prefix}${Prefix extends "" ? "" : "."}${Extract}`, Prev[Depth]> : never; }[keyof T] : never; export type Fields = NestedIndexKeys; export type PrefixIndexDepth = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10; export type PrefixIndexDefinition = Record; export type PrefixIndexLine = { v: string; vs: string; ref: Record>; }; export type RawPrefixIndexLine = { slug: string; values: Record>; }; export {};