UNPKG

crazy-parser

Version:

A light-weight parser combinator

28 lines (27 loc) 1.32 kB
export type Validator<A, I = unknown, E extends TypeError = TypeError> = (input: I) => A | E; export declare const str: Validator<string>; export declare const num: Validator<number>; export declare const bool: Validator<boolean>; export declare const nil: Validator<null>; export declare const array: <A>(inner: Validator<A>) => Validator<A[]>; export declare const obj: <Vs extends Record<string, any>, _Vs = Vs>(inner: { [k in keyof Vs]: Validator<Vs[k]>; }, fallback?: { [k in keyof _Vs]?: _Vs[k]; }) => Validator<{ [i in keyof Vs]: Vs[i]; }>; export declare const sequence: <Ts extends any[]>(...inners: { [k in keyof Ts]: Validator<Ts[k]>; }) => Validator<Ts>; export declare const asum: <Ts extends any[]>(...inners: { [k in keyof Ts]: Validator<Ts[k]>; }) => Validator<Ts[number]>; type Ands<Ts extends any[]> = Ts extends [infer Head, ...infer Tail] ? Head & Ands<Tail> : unknown; export declare const ands: <Ts extends any[]>(...inners: { [k in keyof Ts]: Validator<Ts[k]>; }) => Validator<Ands<Ts>>; export declare const eq: <A>(value: A) => Validator<A>; export declare const where: <A, NewA extends A = A>(validator: Validator<A>, predicate: (a: A) => boolean, error?: TypeError) => Validator<NewA>; export declare function lazy<V extends Validator<any>>(vg: () => V): V; export {};