import type { ArrayNode } from "./array-node.js"; import type { BaseNode } from "./base-node.js"; import type { RecordNode } from "./record-node.js"; import type { StructNode } from "./struct-node.js"; import type { UnionNode } from "./union-node.js"; type Nudge = T extends U ? T : never; type ObjectKeyToString = T extends string ? T : T extends number ? `${T}` : never; type PathToRecursive> = TDepth["length"] extends 10 ? never : (TDepth["length"] extends 0 ? never : TRoot extends TNode ? "" : never) | (TRoot extends ArrayNode ? `${TDepth["length"] extends 0 ? "" : "."}${number}${PathToRecursive}` : never) | (TRoot extends RecordNode ? `${TDepth["length"] extends 0 ? "" : "."}${string}${PathToRecursive}` : never) | (TRoot extends StructNode ? { [TKey in keyof TProperties]: TProperties[TKey] extends BaseNode ? `${TDepth["length"] extends 0 ? "" : "."}${ObjectKeyToString}${PathToRecursive}` : never; }[keyof TProperties] : never) | (TRoot extends UnionNode ? TChildNode extends any ? PathToRecursive : never : never); type PathToUnionBranch> = TUnionDepth["length"] extends 10 ? never : TNode extends UnionNode ? PathToRecursive | (TChildNode extends any ? PathToUnionBranch : never) : PathToRecursive; /** * Returns all dot-separated paths which point to a node of the given type in the given * configuration schema. */ export type PathTo = Nudge, string>; /** * Returns all dot-separated paths which point to a node in the given configuration schema. */ export type Path = PathTo; export {}; //# sourceMappingURL=path.d.ts.map