import { S as Substract } from './chunks/CM89_aaq.js'; import { p as IsZero } from './chunks/DZEfmVOc.js'; import './BooleanNor.js'; import './BooleanNot.js'; import './BooleanOr.js'; import './Tuple.js'; import './BooleanAnd.js'; import './MaybeReadonly.js'; import './TupleLength.js'; /** * Extract nested value of an object recursively. This is useful for creating a * type that can be used to access nested properties of an object allowing * comprehensive autocompletion and type checking. * * @template T Object type to extract value from. * @template P Path to the value to extract. * @returns The value at the path. * @example Get<{ foo: { bar: { baz: 'baz' } } }, 'foo.bar.baz'> // 'baz' */ type Get = IsZero extends true ? never : P extends `${infer K}.${infer N}` ? K extends keyof T ? Get> : T extends Iterable ? `${K}` extends `${number}` ? Get> : never : never : P extends keyof T ? T[P] : T extends Iterable ? `${P}` extends `${number}` ? U : never : never; export type { Get };