declare const brand: unique symbol; export type WithControlledProp}Change`)> = Record & Record void>; export type ExactEntriesOf

= Exclude<{ [K in keyof P]: [K, P[K]] }[keyof P], undefined>[]; /** * The inverse of Awaited. */ export type Awaitable = T | Promise | PromiseLike; /** * @example * type T0 = Join<[1, 2, 3, 4], '.'>; // '1.2.3.4' * type T1 = Join<['foo', 'bar', 'baz'], '-'>; // 'foo-bar-baz' * type T2 = Join<[], '.'>; // '' */ export type Join = T extends [] ? '' : T extends [string | number | boolean | bigint] ? `${T[0]}` : T extends [string | number | boolean | bigint, ...infer U] ? `${T[0]}${D}${Join}` : string; /** * @example * type T0 = Split<'foo', '.'>; // ['foo'] * type T1 = Split<'foo.bar.baz', '.'>; // ['foo', 'bar', 'baz'] * type T2 = Split<'foo.bar', ''>; // ['f', 'o', 'o', '.', 'b', 'a', 'r'] */ export type Split = string extends S ? string[] : S extends '' ? [] : S extends `${infer T}${D}${infer U}` ? [T, ...Split] : [S]; /** * @example * type T0 = CapitalizeAll<['foo', 'bar']>; // ['Foo', 'Bar'] * type T1 = CapitalizeAll<[]>; // [] */ export type CapitalizeAll = T extends [] ? [] : T extends [string, ...infer U] ? U extends string[] ? [Capitalize, ...CapitalizeAll] : never : never; /** * @example * type T0 = CapitalizeAll<['foo', 'bar', 'baz']>; // ['foo', 'Bar', 'Baz'] * type T1 = CapitalizeAll<['foo']>; // ['foo'] * type T2 = CapitalizeAll<[]>; // [] */ export type CapitalizeTail = T extends [] ? [] : T extends [string, ...infer U] ? U extends string[] ? [T[0], ...CapitalizeAll] : never : never; /** * sString template type that converts snake-case to camel-case * @example * type T0 = SnakeToCamel<'foo-bar-baz'>; // 'fooBarBaz' * type T1 = CapitalizeAll<'foo'>; // 'foo' * type T2 = CapitalizeAll<''>; // '' */ export type SnakeToCamel = Join>, ''>; /** * The inverso of NonNullable */ export type Maybe = T | undefined | null; export type ValueOf = T[keyof T]; export interface Brand { readonly [brand]: B; } export type Branded = A & Brand; export type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; export type ExpandNested = T extends infer O ? { [K in keyof O]: Expand } : never; export {};