UNPKG

@sudoo/pattern

Version:
87 lines (86 loc) 2.85 kB
import { CommonPattern } from "./common"; export declare type StringPattern = { readonly type: 'string'; readonly regexp?: RegExp; readonly minimumLength?: number; readonly maximumLength?: number; readonly enum?: string[]; } & CommonPattern; export declare type NumberPattern = { readonly type: 'number'; readonly allowNaN?: boolean; readonly allowInfinity?: boolean; readonly integer?: boolean; readonly float?: boolean; readonly fraction?: boolean; readonly minimum?: number; readonly maximum?: number; readonly enum?: number[]; } & CommonPattern; export declare type BigIntPattern = { readonly type: 'bigint'; readonly minimum?: bigint; readonly maximum?: bigint; readonly enum?: bigint[]; } & CommonPattern; export declare type BooleanPattern = { readonly type: 'boolean'; readonly ensureTrue?: boolean; readonly ensureFalse?: boolean; } & CommonPattern; export declare type DatePattern = { readonly type: 'date'; readonly allowString?: boolean; readonly before?: Date; readonly after?: Date; } & CommonPattern; export declare type FunctionPattern = { readonly type: 'function'; } & CommonPattern; export declare type MapPattern = { readonly type: 'map'; readonly map: Record<string, Pattern>; readonly strict?: boolean; } & CommonPattern; export declare type RecordPattern = { readonly type: 'record'; readonly key: Pattern; readonly value: Pattern; } & CommonPattern; export declare type ListPattern = { readonly type: 'list'; readonly element: Pattern; readonly minimumSize?: number; readonly maximumSize?: number; } & CommonPattern; export declare type TuplePattern = { readonly type: 'tuple'; readonly list: Pattern[]; } & CommonPattern; export declare type CustomPattern = { readonly type: 'custom'; readonly validate: (value: any) => boolean; } & CommonPattern; export declare type OrPattern = { readonly type: 'or'; readonly options: Pattern[]; } & CommonPattern; export declare type AndPattern = { readonly type: 'and'; readonly requirements: Pattern[]; } & CommonPattern; export declare type ExactPattern = { readonly type: 'exact'; readonly value: any; } & CommonPattern; export declare type EmptyPattern = { readonly type: 'empty'; readonly allowUndefined?: boolean; readonly allowNull?: boolean; } & CommonPattern; export declare type AnyPattern = { readonly type: 'any'; readonly banishUndefined?: boolean; readonly banishNull?: boolean; } & CommonPattern; export declare type Pattern = StringPattern | NumberPattern | BigIntPattern | BooleanPattern | DatePattern | FunctionPattern | MapPattern | RecordPattern | ListPattern | TuplePattern | CustomPattern | OrPattern | AndPattern | ExactPattern | EmptyPattern | AnyPattern;