@codethread/tstl-validate
Version:
Fork and adaptation of valibot for use in typescript-to-lua
12 lines (11 loc) • 854 B
TypeScript
/** @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;