UNPKG

@codethread/tstl-validate

Version:

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

12 lines (11 loc) 854 B
/** @noSelfInFile */ import type { ObjectSchema, ObjectSchemaAsync } from '../../schemas/index'; /** * Merges schema objects types. */ export type MergeSchemaObjects<TObjectSchemas extends (ObjectSchema<any> | ObjectSchemaAsync<any>)[]> = TObjectSchemas extends [infer TFirstObjectSchema] ? TFirstObjectSchema extends ObjectSchema<any> | ObjectSchemaAsync<any> ? TFirstObjectSchema['object'] : never : TObjectSchemas extends [ infer TFirstObjectSchema, ...infer TRestObjectSchemas ] ? TFirstObjectSchema extends ObjectSchema<any> | ObjectSchemaAsync<any> ? TRestObjectSchemas extends (ObjectSchema<any> | ObjectSchemaAsync<any>)[] ? { [TKey in Exclude<keyof TFirstObjectSchema['object'], keyof MergeSchemaObjects<TRestObjectSchemas>>]: TFirstObjectSchema['object'][TKey]; } & MergeSchemaObjects<TRestObjectSchemas> : never : never : never;