UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

173 lines 4.6 kB
import { Refinement } from 'fp-ts/Refinement'; import { Literal, Schemable1, WithRefine1, WithUnion1 } from './Schemable'; /** * @category Model * @since 0.9.5 */ export interface Guard<I, A extends I> { is: (i: I) => i is A; } /** * @since 2.2.2 */ export declare type TypeOf<G> = G extends Guard<any, infer A> ? A : never; /** * @since 0.9.5 */ export declare type InputOf<G> = G extends Guard<infer I, any> ? I : never; /** * @category constructors * @since 0.9.5 */ export declare const literal: <A extends readonly [Literal, ...Literal[]]>(...values: A) => Guard<unknown, A[number]>; /** * @category Decoder * @since 0.9.5 */ export declare const string: Guard<unknown, string>; /** * Note: `NaN` is excluded. * * @category Decoder * @since 0.9.5 */ export declare const number: Guard<unknown, number>; /** * @category Decoder * @since 0.9.5 */ export declare const boolean: Guard<unknown, boolean>; /** * @category Decoder * @since 0.9.5 */ export declare const date: Guard<unknown, Date>; /** * @category Decoder * @since 0.9.5 */ export declare const unknownArray: Guard<unknown, Array<unknown>>; /** * @category Decoder * @since 0.9.5 */ export declare const unknownRecord: Guard<unknown, Record<string, unknown>>; /** * @category Combinator * @since 0.9.5 */ export declare const refine: <I, A extends I, B extends A>(refinement: Refinement<A, B>) => (from: Guard<I, A>) => Guard<I, B>; /** * @category Combinator * @since 0.9.5 */ export declare const nullable: <I, A extends I>(or: Guard<I, A>) => Guard<I | null, A | null>; /** * @category Combinator * @since 2.2.15 */ export declare const struct: <A>(properties: { [K in keyof A]: Guard<unknown, A[K]>; }) => Guard<unknown, { [K_1 in keyof A]: A[K_1]; }>; /** * Use `struct` instead. * * @category Combinator * @since 0.9.5 * @deprecated */ export declare const type: <A>(properties: { [K in keyof A]: Guard<unknown, A[K]>; }) => Guard<unknown, { [K_1 in keyof A]: A[K_1]; }>; /** * @category Combinator * @since 0.9.5 */ export declare const partial: <A>(properties: { [K in keyof A]: Guard<unknown, A[K]>; }) => Guard<unknown, Partial<{ [K_1 in keyof A]: A[K_1]; }>>; /** * @category Combinator * @since 0.9.5 */ export declare const array: <A>(item: Guard<unknown, A>) => Guard<unknown, A[]>; /** * @category Combinator * @since 0.9.5 */ export declare const record: <A>(codomain: Guard<unknown, A>) => Guard<unknown, Record<string, A>>; /** * @category Combinator * @since 0.9.5 */ export declare const tuple: <A extends readonly unknown[]>(...components: { [K in keyof A]: Guard<unknown, A[K]>; }) => Guard<unknown, A>; /** * @category Combinator * @since 0.9.5 */ export declare const intersect: <B>(right: Guard<unknown, B>) => <A>(left: Guard<unknown, A>) => Guard<unknown, A & B>; /** * @category Combinator * @since 0.9.5 */ export declare const union: <A>(second: Guard<unknown, A>) => <B>(first: Guard<unknown, B>) => Guard<unknown, A | B>; /** * @category Combinator * @since 0.9.5 */ export declare const sum: <T extends string>(tag: T) => <A>(members: { [K in keyof A]: Guard<unknown, A[K] & Record<T, K>>; }) => Guard<unknown, A[keyof A]>; /** * @category Combinator * @since 0.9.5 */ export declare const lazy: <A>(f: () => Guard<unknown, A>) => Guard<unknown, A>; /** * @category Combinator * @since 2.2.15 */ export declare const readonly: <I, A extends I>(guard: Guard<I, A>) => Guard<I, Readonly<A>>; /** * @category Combinator * @since 0.9.5 */ export declare const alt: <I, A extends I>(that: () => Guard<I, A>) => (me: Guard<I, A>) => Guard<I, A>; /** * @category Combinator * @since 0.9.5 */ export declare const zero: <I, A extends I>() => Guard<I, A>; /** * @category Combinator * @since 0.9.5 */ export declare const compose: <I, A extends I, B extends A>(to: Guard<A, B>) => (from: Guard<I, A>) => Guard<I, B>; /** * @category Combinator * @since 0.9.5 */ export declare const id: <A>() => Guard<A, A>; /** * @category instances * @since 0.9.5 */ export declare const URI = "@typed/fp/Guard"; /** * @category instances * @since 0.9.5 */ export declare type URI = typeof URI; declare module 'fp-ts/HKT' { interface URItoKind<A> { readonly [URI]: Guard<unknown, A>; } } /** * @category instances * @since 0.9.5 */ export declare const Schemable: Schemable1<URI>; /** * @category instances * @since 0.9.5 */ export declare const WithUnion: WithUnion1<URI>; /** * @category instances * @since 0.9.5 */ export declare const WithRefine: WithRefine1<URI>; //# sourceMappingURL=Guard.d.ts.map