valia
Version:
A runtime data validator in TypeScript with advanced type inference, built-in validation functions, and seamless integration for server and client environments.
35 lines (31 loc) • 855 B
text/typescript
import type {
SetableCriteriaTemplate,
FlowTypesTemplate,
SetableCriteria,
MountedCriteria,
GuardedCriteria,
FormatNames
} from "../types";
export interface ArraySetableCriteria<
T extends FormatNames = FormatNames
> extends SetableCriteriaTemplate<"array"> {
/** @default true */
empty?: boolean;
min?: number;
max?: number;
item: SetableCriteria<T>;
}
export interface ArrayMountedCriteria<T extends ArraySetableCriteria> {
item: MountedCriteria<T['item']>;
empty:
unknown extends T['empty']
? true
: ArraySetableCriteria['empty'] extends T['empty']
? boolean
: T['empty'];
}
export type ArrayGuardedCriteria<T extends ArraySetableCriteria> = GuardedCriteria<T['item']>[];
export interface ArrayFlowTypes<T extends ArraySetableCriteria> extends FlowTypesTemplate<
ArrayMountedCriteria<T>,
ArrayGuardedCriteria<T>
> {}