UNPKG

pragmatic-fp-ts

Version:

Opinionated functional programming library with easy use in mind

33 lines (32 loc) 1.55 kB
import { Either } from "./Either"; declare const nameProp = "__name"; type NameTag = { [key in typeof nameProp]: string; }; export type ValidatorFn<T = any> = ((_: unknown) => _ is T) & NameTag; export type Validator<T> = ((x: unknown) => Either<T>) & NameTag; export type ValidatorType<V extends Validator<any>> = V extends Validator<infer T> ? T : never; type ValidatorOptions = { decode?: boolean | ((_: string) => any); }; export declare const from: <T>(name: string, validate: (_: unknown) => _ is T) => Validator<T>; declare const _default: { from: <T>(name: string, validate: (_: unknown) => _ is T) => Validator<T>; any: Validator<any>; array: <T_1>(validate: Validator<T_1>) => ((x: unknown, { decode }?: ValidatorOptions) => Either<T_1[], Error>) & NameTag; boolean: Validator<boolean>; dateString: Validator<string>; dictionary: <T_2>(validate: Validator<T_2>) => Validator<Record<string, T_2>>; enum: <T_3>(allowed: T_3[], name?: string) => Validator<T_3>; nil: Validator<null | undefined>; number: Validator<number>; null: Validator<null>; nullable: <T_4>(type_: Validator<T_4>) => Validator<T_4 | null>; oneOf: <T_5>(...args: Validator<T_5>[]) => Validator<T_5>; optional: <T_6>(type_: Validator<T_6>) => Validator<T_6 | undefined>; record: <T_7 extends Record<string, any>>(schema: { [key in keyof T_7]: Validator<T_7[key]>; }) => Validator<T_7>; string: Validator<string>; undefined: Validator<undefined>; unknown: Validator<unknown>; }; export default _default;