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