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.

25 lines (21 loc) 786 B
import type { SetableCriteriaTemplate, ClassicTypesTemplate, GenericTypesTemplate } from "../types"; export interface NumberSetableCriteria extends SetableCriteriaTemplate<"number"> { min?: number; max?: number; enum?: number[] | Record<string | number, number>; custom?: (input: number) => boolean; } export interface NumberClassicTypes extends ClassicTypesTemplate< NumberSetableCriteria, {} > {} type NumberGuardedCriteria<T extends NumberSetableCriteria> = T['enum'] extends number[] ? T['enum'][number] : T['enum'] extends Record<string | number, number> ? { [K in keyof T['enum']]: T['enum'][K] }[keyof T['enum']] : number; export interface NumberGenericTypes<T extends NumberSetableCriteria> extends GenericTypesTemplate< {}, NumberGuardedCriteria<T> > {}