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.

35 lines (30 loc) 958 B
import type { SetableCriteriaTemplate, FlowTypesTemplate } from "../types"; export interface NumberSetableCriteria extends SetableCriteriaTemplate<"number"> { /** @default true */ empty?: boolean; min?: number; max?: number; enum?: number[] | Record<string | number, number>; custom?: (input: number) => boolean; } export interface NumberDefaultCriteria { empty: boolean; } export interface NumberMountedCriteria<T extends NumberSetableCriteria> { empty: unknown extends T['empty'] ? true : NumberSetableCriteria['empty'] extends T['empty'] ? boolean : T['empty']; } type NumberGuardedCriteria<T extends NumberSetableCriteria> = T['enum'] extends number[] ? T['enum'][number] : T['enum'] extends Record<string | number, number> ? T['enum'][keyof T['enum']] : number; export interface NumberFlowTypes<T extends NumberSetableCriteria> extends FlowTypesTemplate< NumberMountedCriteria<T>, NumberGuardedCriteria<T> > {}