UNPKG

4.37 kBTypeScriptView Raw
1/**
2 * @since 2.2.0
3 */
4import { Either } from 'fp-ts/es6/Either';
5import { NonEmptyArray } from 'fp-ts/es6/NonEmptyArray';
6import { Forest, Tree } from 'fp-ts/es6/Tree';
7import * as G from './Guard';
8import { Literal, Schemable1, WithRefinement1, WithUnion1, WithUnknownContainers1 } from './Schemable';
9import { Functor1 } from 'fp-ts/es6/Functor';
10import { Alt1 } from 'fp-ts/es6/Alt';
11/**
12 * @since 2.2.2
13 */
14export interface DecodeError extends NonEmptyArray<Tree<string>> {
15}
16/**
17 * @since 2.2.0
18 */
19export interface Decoder<A> {
20 readonly decode: (u: unknown) => Either<DecodeError, A>;
21}
22/**
23 * @since 2.2.0
24 */
25export declare type TypeOf<D> = D extends Decoder<infer A> ? A : never;
26/**
27 * @since 2.2.0
28 */
29export declare function tree<A>(value: A, forest?: Forest<A>): Tree<A>;
30/**
31 * @since 2.2.0
32 */
33export declare function success<A>(a: A): Either<DecodeError, A>;
34/**
35 * @since 2.2.0
36 */
37export declare function failure<A = never>(message: string): Either<DecodeError, A>;
38/**
39 * @since 2.2.2
40 */
41export declare function isNotEmpty<A>(as: ReadonlyArray<A>): as is NonEmptyArray<A>;
42/**
43 * @since 2.2.3
44 */
45export declare function of<A>(a: A): Decoder<A>;
46/**
47 * @since 2.2.0
48 */
49export declare function fromGuard<A>(guard: G.Guard<A>, expected: string): Decoder<A>;
50/**
51 * @since 2.2.0
52 */
53export declare function literal<A extends ReadonlyArray<Literal>>(...values: A): Decoder<A[number]>;
54/**
55 * @since 2.2.0
56 */
57export declare const never: Decoder<never>;
58/**
59 * @since 2.2.0
60 */
61export declare const string: Decoder<string>;
62/**
63 * @since 2.2.0
64 */
65export declare const number: Decoder<number>;
66/**
67 * @since 2.2.0
68 */
69export declare const boolean: Decoder<boolean>;
70/**
71 * @since 2.2.0
72 */
73export declare const UnknownArray: Decoder<Array<unknown>>;
74/**
75 * @since 2.2.0
76 */
77export declare const UnknownRecord: Decoder<Record<string, unknown>>;
78/**
79 * @since 2.2.0
80 */
81export declare function withExpected<A>(decoder: Decoder<A>, expected: (actual: unknown, e: DecodeError) => DecodeError): Decoder<A>;
82/**
83 * @since 2.2.0
84 */
85export declare function refinement<A, B extends A>(from: Decoder<A>, refinement: (a: A) => a is B, expected: string): Decoder<B>;
86/**
87 * @since 2.2.0
88 */
89export declare function parse<A, B>(from: Decoder<A>, parser: (a: A) => Either<string, B>): Decoder<B>;
90/**
91 * @since 2.2.0
92 */
93export declare function nullable<A>(or: Decoder<A>): Decoder<null | A>;
94/**
95 * @since 2.2.0
96 */
97export declare function type<A>(properties: {
98 [K in keyof A]: Decoder<A[K]>;
99}): Decoder<{
100 [K in keyof A]: A[K];
101}>;
102/**
103 * @since 2.2.0
104 */
105export declare function partial<A>(properties: {
106 [K in keyof A]: Decoder<A[K]>;
107}): Decoder<Partial<{
108 [K in keyof A]: A[K];
109}>>;
110/**
111 * @since 2.2.0
112 */
113export declare function record<A>(codomain: Decoder<A>): Decoder<Record<string, A>>;
114/**
115 * @since 2.2.0
116 */
117export declare function array<A>(items: Decoder<A>): Decoder<Array<A>>;
118/**
119 * @since 2.2.0
120 */
121export declare function tuple<A extends ReadonlyArray<unknown>>(...components: {
122 [K in keyof A]: Decoder<A[K]>;
123}): Decoder<A>;
124/**
125 * @since 2.2.0
126 */
127export declare function intersection<A, B>(left: Decoder<A>, right: Decoder<B>): Decoder<A & B>;
128/**
129 * @since 2.2.0
130 */
131export declare function lazy<A>(id: string, f: () => Decoder<A>): Decoder<A>;
132/**
133 * @since 2.2.0
134 */
135export declare function sum<T extends string>(tag: T): <A>(members: {
136 [K in keyof A]: Decoder<A[K]>;
137}) => Decoder<A[keyof A]>;
138/**
139 * @since 2.2.0
140 */
141export declare function union<A extends ReadonlyArray<unknown>>(...members: {
142 [K in keyof A]: Decoder<A[K]>;
143}): Decoder<A[number]>;
144/**
145 * @since 2.2.0
146 */
147export declare const map: <A, B>(f: (a: A) => B) => (fa: Decoder<A>) => Decoder<B>;
148/**
149 * @since 2.2.0
150 */
151export declare const alt: <A>(that: () => Decoder<A>) => (fa: Decoder<A>) => Decoder<A>;
152/**
153 * @since 2.2.0
154 */
155export declare const URI = "io-ts/Decoder";
156/**
157 * @since 2.2.0
158 */
159export declare type URI = typeof URI;
160declare module 'fp-ts/es6/HKT' {
161 interface URItoKind<A> {
162 readonly [URI]: Decoder<A>;
163 }
164}
165/**
166 * @since 2.2.3
167 */
168export declare const functorDecoder: Functor1<URI>;
169/**
170 * @since 2.2.3
171 */
172export declare const altDecoder: Alt1<URI>;
173/**
174 * @since 2.2.3
175 */
176export declare const schemableDecoder: Schemable1<URI> & WithUnknownContainers1<URI> & WithUnion1<URI> & WithRefinement1<URI>;