UNPKG

@codethread/tstl-validate

Version:

Fork and adaptation of valibot for use in typescript-to-lua

24 lines (23 loc) 887 B
/** @noSelfInFile */ import { type EnumSchema, type ObjectSchema, type ObjectSchemaAsync } from '../../schemas/index'; /** * Converts union to intersection types. */ type UnionToIntersection<T> = (T extends never ? never : (arg: T) => never) extends (arg: infer U) => never ? U : never; /** * Converts union to tuple types. */ type UnionToTuple<T> = UnionToIntersection<T extends never ? never : () => T> extends () => infer W ? [...UnionToTuple<Exclude<T, W>>, W] : []; /** * Returns a tuple or never type. */ type TupleOrNever<T> = T extends [string, ...string[]] ? T : never; /** * Creates a enum schema of object keys. * * @param schema The object schema. * * @returns A enum schema. */ export declare function keyof<TSchema extends ObjectSchema<any> | ObjectSchemaAsync<any>>(schema: TSchema): EnumSchema<TupleOrNever<UnionToTuple<keyof TSchema['object']>>>; export {};