UNPKG

valia

Version:

A runtime data validator in TypeScript with advanced type inference, built-in validation functions, and seamless integration for server and client environments.

46 lines (40 loc) 1.07 kB
import type { SetableCriteriaTemplate, FlowTypesTemplate, SetableCriteria, MountedCriteria, GuardedCriteria, FormatNames } from "../types"; type SetableUnion<T extends FormatNames = FormatNames> = [SetableCriteria<T>, SetableCriteria<T>, ...SetableCriteria<T>[]]; export interface UnionSetableCriteria< T extends FormatNames = FormatNames > extends SetableCriteriaTemplate<"union"> { union: SetableUnion<T>; } type MountedUnion<T extends SetableUnion> = T extends infer U ? { [I in keyof U]: U[I] extends SetableCriteria ? MountedCriteria<U[I]> : never; } : never; export interface UnionMountedCriteria<T extends UnionSetableCriteria> { union: MountedUnion<T['union']>; } type UnionGuardedCriteria<T extends UnionSetableCriteria> = T['union'] extends infer U ? { [I in keyof U]: U[I] extends SetableCriteria ? GuardedCriteria<U[I]> : never; }[any] : never; export interface UnionFlowTypes<T extends UnionSetableCriteria> extends FlowTypesTemplate< UnionMountedCriteria<T>, UnionGuardedCriteria<T> > {}