UNPKG

3.11 kBTypeScriptView Raw
1/**
2 * @since 2.2.3
3 */
4import { Invariant1 } from 'fp-ts/es6/Invariant';
5import * as D from './Decoder';
6import * as JE from './JsonEncoder';
7import * as C from './Codec';
8import { Literal, Schemable1, WithRefinement1 } from './Schemable';
9/**
10 * Laws:
11 *
12 * 1. `pipe(codec.decode(u), E.fold(() => u, codec.encode)) = u` for all `u` in `unknown`
13 * 2. `codec.decode(codec.encode(a)) = E.right(a)` for all `a` in `A`
14 *
15 * @since 2.2.3
16 */
17export interface JsonCodec<A> extends C.Codec<JE.Json, A> {
18}
19/**
20 * @since 2.2.2
21 */
22export declare type TypeOf<C> = JE.TypeOf<C>;
23/**
24 * @since 2.2.3
25 */
26export declare const make: <A>(decoder: D.Decoder<A>, encoder: JE.JsonEncoder<A>) => JsonCodec<A>;
27/**
28 * @since 2.2.3
29 */
30export declare const literal: <A extends ReadonlyArray<Literal>>(...values: A) => JsonCodec<A[number]>;
31/**
32 * @since 2.2.3
33 */
34export declare const string: JsonCodec<string>;
35/**
36 * @since 2.2.3
37 */
38export declare const number: JsonCodec<number>;
39/**
40 * @since 2.2.3
41 */
42export declare const boolean: JsonCodec<boolean>;
43/**
44 * @since 2.2.3
45 */
46export declare const withExpected: <A>(codec: JsonCodec<A>, expected: (actual: unknown, e: D.DecodeError) => D.DecodeError) => JsonCodec<A>;
47/**
48 * @since 2.2.3
49 */
50export declare const refinement: <A, B extends A>(from: JsonCodec<A>, refinement: (a: A) => a is B, expected: string) => JsonCodec<B>;
51/**
52 * @since 2.2.3
53 */
54export declare const nullable: <A>(or: JsonCodec<A>) => JsonCodec<null | A>;
55/**
56 * @since 2.2.3
57 */
58export declare const type: <A>(properties: {
59 [K in keyof A]: JsonCodec<A[K]>;
60}) => JsonCodec<{
61 [K in keyof A]: A[K];
62}>;
63/**
64 * @since 2.2.3
65 */
66export declare const partial: <A>(properties: {
67 [K in keyof A]: JsonCodec<A[K]>;
68}) => JsonCodec<Partial<{
69 [K in keyof A]: A[K];
70}>>;
71/**
72 * @since 2.2.3
73 */
74export declare const record: <A>(codomain: JsonCodec<A>) => JsonCodec<Record<string, A>>;
75/**
76 * @since 2.2.3
77 */
78export declare const array: <A>(items: JsonCodec<A>) => JsonCodec<Array<A>>;
79/**
80 * @since 2.2.3
81 */
82export declare const tuple: <A extends ReadonlyArray<unknown>>(...components: {
83 [K in keyof A]: JsonCodec<A[K]>;
84}) => JsonCodec<A>;
85/**
86 * @since 2.2.3
87 */
88export declare const intersection: <A, B>(left: JsonCodec<A>, right: JsonCodec<B>) => JsonCodec<A & B>;
89/**
90 * @since 2.2.3
91 */
92export declare const sum: <T extends string>(tag: T) => <A>(members: {
93 [K in keyof A]: JsonCodec<A[K]>;
94}) => JsonCodec<A[keyof A]>;
95/**
96 * @since 2.2.3
97 */
98export declare const lazy: <A>(id: string, f: () => JsonCodec<A>) => JsonCodec<A>;
99/**
100 * @since 2.2.3
101 */
102export declare const imap: <A, B>(f: (a: A) => B, g: (b: B) => A) => (fa: JsonCodec<A>) => JsonCodec<B>;
103/**
104 * @since 2.2.3
105 */
106export declare const URI = "io-ts/JsonCodec";
107/**
108 * @since 2.2.3
109 */
110export declare type URI = typeof URI;
111declare module 'fp-ts/es6/HKT' {
112 interface URItoKind<A> {
113 readonly [URI]: JsonCodec<A>;
114 }
115}
116/**
117 * @since 2.2.3
118 */
119export declare const invariantJsonCodec: Invariant1<URI>;
120/**
121 * @since 2.2.3
122 */
123export declare const schemableJsonCodec: Schemable1<URI> & WithRefinement1<URI>;