@fncts/schema 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AST.d.ts +528 -0
- package/ASTAnnotation.d.ts +82 -0
- package/ASTAnnotationMap.d.ts +14 -0
- package/Gen.d.ts +15 -0
- package/InvalidInterpretationError.d.ts +5 -0
- package/ParseError.d.ts +107 -0
- package/ParseResult.d.ts +24 -0
- package/Parser/api.d.ts +42 -0
- package/Parser/definition.d.ts +22 -0
- package/Parser/interpreter.d.ts +6 -0
- package/Parser.d.ts +2 -0
- package/Schema/api/conc.d.ts +18 -0
- package/Schema/api/hashMap.d.ts +21 -0
- package/Schema/api/immutableArray.d.ts +23 -0
- package/Schema/api/list.d.ts +23 -0
- package/Schema/api/maybe.d.ts +21 -0
- package/Schema/api.d.ts +243 -0
- package/Schema/definition.d.ts +29 -0
- package/Schema/derivations.d.ts +70 -0
- package/Schema.d.ts +2 -144
- package/_cjs/AST.cjs +1171 -0
- package/_cjs/AST.cjs.map +1 -0
- package/_cjs/ASTAnnotation.cjs +111 -0
- package/_cjs/ASTAnnotation.cjs.map +1 -0
- package/_cjs/ASTAnnotationMap.cjs +35 -0
- package/_cjs/ASTAnnotationMap.cjs.map +1 -0
- package/_cjs/Gen.cjs +185 -0
- package/_cjs/Gen.cjs.map +1 -0
- package/_cjs/InvalidInterpretationError.cjs +18 -0
- package/_cjs/InvalidInterpretationError.cjs.map +1 -0
- package/_cjs/ParseError.cjs +222 -0
- package/_cjs/ParseError.cjs.map +1 -0
- package/_cjs/{Decoder.cjs → ParseResult.cjs} +24 -22
- package/_cjs/ParseResult.cjs.map +1 -0
- package/_cjs/Parser/api.cjs +80 -0
- package/_cjs/Parser/api.cjs.map +1 -0
- package/_cjs/{Guard.cjs → Parser/definition.cjs} +17 -22
- package/_cjs/Parser/definition.cjs.map +1 -0
- package/_cjs/Parser/interpreter.cjs +409 -0
- package/_cjs/Parser/interpreter.cjs.map +1 -0
- package/_cjs/Parser.cjs +28 -0
- package/_cjs/Parser.cjs.map +1 -0
- package/_cjs/Schema/api/conc.cjs +84 -0
- package/_cjs/Schema/api/conc.cjs.map +1 -0
- package/_cjs/Schema/api/hashMap.cjs +161 -0
- package/_cjs/Schema/api/hashMap.cjs.map +1 -0
- package/_cjs/Schema/api/immutableArray.cjs +90 -0
- package/_cjs/Schema/api/immutableArray.cjs.map +1 -0
- package/_cjs/Schema/api/list.cjs +98 -0
- package/_cjs/Schema/api/list.cjs.map +1 -0
- package/_cjs/Schema/api/maybe.cjs +75 -0
- package/_cjs/Schema/api/maybe.cjs.map +1 -0
- package/_cjs/Schema/api.cjs +424 -0
- package/_cjs/Schema/api.cjs.map +1 -0
- package/_cjs/Schema/definition.cjs +26 -0
- package/_cjs/Schema/definition.cjs.map +1 -0
- package/_cjs/Schema/derivations.cjs +108 -0
- package/_cjs/Schema/derivations.cjs.map +1 -0
- package/_cjs/Schema.cjs +20 -237
- package/_cjs/Schema.cjs.map +1 -1
- package/_cjs/utils.cjs +52 -0
- package/_cjs/utils.cjs.map +1 -0
- package/_mjs/AST.mjs +1060 -0
- package/_mjs/AST.mjs.map +1 -0
- package/_mjs/ASTAnnotation.mjs +80 -0
- package/_mjs/ASTAnnotation.mjs.map +1 -0
- package/_mjs/ASTAnnotationMap.mjs +27 -0
- package/_mjs/ASTAnnotationMap.mjs.map +1 -0
- package/_mjs/Gen.mjs +176 -0
- package/_mjs/Gen.mjs.map +1 -0
- package/_mjs/InvalidInterpretationError.mjs +10 -0
- package/_mjs/InvalidInterpretationError.mjs.map +1 -0
- package/_mjs/ParseError.mjs +200 -0
- package/_mjs/ParseError.mjs.map +1 -0
- package/_mjs/ParseResult.mjs +21 -0
- package/_mjs/ParseResult.mjs.map +1 -0
- package/_mjs/Parser/api.mjs +67 -0
- package/_mjs/Parser/api.mjs.map +1 -0
- package/_mjs/Parser/definition.mjs +15 -0
- package/_mjs/Parser/definition.mjs.map +1 -0
- package/_mjs/Parser/interpreter.mjs +401 -0
- package/_mjs/Parser/interpreter.mjs.map +1 -0
- package/_mjs/Parser.mjs +4 -0
- package/_mjs/Parser.mjs.map +1 -0
- package/_mjs/Schema/api/conc.mjs +72 -0
- package/_mjs/Schema/api/conc.mjs.map +1 -0
- package/_mjs/Schema/api/hashMap.mjs +150 -0
- package/_mjs/Schema/api/hashMap.mjs.map +1 -0
- package/_mjs/Schema/api/immutableArray.mjs +79 -0
- package/_mjs/Schema/api/immutableArray.mjs.map +1 -0
- package/_mjs/Schema/api/list.mjs +87 -0
- package/_mjs/Schema/api/list.mjs.map +1 -0
- package/_mjs/Schema/api/maybe.mjs +64 -0
- package/_mjs/Schema/api/maybe.mjs.map +1 -0
- package/_mjs/Schema/api.mjs +367 -0
- package/_mjs/Schema/api.mjs.map +1 -0
- package/_mjs/Schema/definition.mjs +16 -0
- package/_mjs/Schema/definition.mjs.map +1 -0
- package/_mjs/Schema/derivations.mjs +94 -0
- package/_mjs/Schema/derivations.mjs.map +1 -0
- package/_mjs/Schema.mjs +3 -212
- package/_mjs/Schema.mjs.map +1 -1
- package/_mjs/utils.mjs +41 -0
- package/_mjs/utils.mjs.map +1 -0
- package/_src/AST.ts +1353 -0
- package/_src/ASTAnnotation.ts +98 -0
- package/_src/ASTAnnotationMap.ts +38 -0
- package/_src/Gen.ts +171 -0
- package/_src/InvalidInterpretationError.ts +6 -0
- package/_src/ParseError.ts +237 -0
- package/_src/ParseResult.ts +26 -0
- package/_src/Parser/api.ts +71 -0
- package/_src/Parser/definition.ts +24 -0
- package/_src/Parser/interpreter.ts +442 -0
- package/_src/Parser.ts +4 -0
- package/_src/Schema/api/conc.ts +78 -0
- package/_src/Schema/api/hashMap.ts +184 -0
- package/_src/Schema/api/immutableArray.ts +88 -0
- package/_src/Schema/api/list.ts +96 -0
- package/_src/Schema/api/maybe.ts +68 -0
- package/_src/Schema/api.ts +530 -0
- package/_src/Schema/definition.ts +32 -0
- package/_src/Schema/derivations.ts +185 -0
- package/_src/Schema.ts +4 -254
- package/_src/global.ts +53 -0
- package/_src/utils.ts +48 -0
- package/global.d.ts +52 -0
- package/package.json +2 -2
- package/utils.d.ts +8 -0
- package/Decoder.d.ts +0 -3
- package/Encoder.d.ts +0 -4
- package/Guard.d.ts +0 -3
- package/Schemable.d.ts +0 -39
- package/_cjs/Decoder.cjs.map +0 -1
- package/_cjs/Encoder.cjs +0 -45
- package/_cjs/Encoder.cjs.map +0 -1
- package/_cjs/Guard.cjs.map +0 -1
- package/_cjs/Schemable.cjs +0 -6
- package/_cjs/Schemable.cjs.map +0 -1
- package/_mjs/Decoder.mjs +0 -20
- package/_mjs/Decoder.mjs.map +0 -1
- package/_mjs/Encoder.mjs +0 -36
- package/_mjs/Encoder.mjs.map +0 -1
- package/_mjs/Guard.mjs +0 -20
- package/_mjs/Guard.mjs.map +0 -1
- package/_mjs/Schemable.mjs +0 -2
- package/_mjs/Schemable.mjs.map +0 -1
- package/_src/Decoder.ts +0 -20
- package/_src/Encoder.ts +0 -38
- package/_src/Guard.ts +0 -20
- package/_src/Schemable.ts +0 -46
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Brand, Validation } from "@fncts/base/data/Branded";
|
|
2
|
+
import { Check } from "@fncts/typelevel";
|
|
3
|
+
import { Schema } from "@fncts/schema/Schema/definition";
|
|
4
|
+
import { LiteralValue, AST } from "@fncts/schema/AST";
|
|
5
|
+
import { Maybe } from "@fncts/base/data/Maybe/definition";
|
|
6
|
+
import { Vector } from "@fncts/base/collection/immutable/Vector";
|
|
7
|
+
import type { OptionalKeys, RequiredKeys } from "@fncts/typelevel/Object";
|
|
8
|
+
/**
|
|
9
|
+
* @tsplus derive fncts.schema.Schema<_> 10
|
|
10
|
+
* @tsplus location "@fncts/schema/Schema/derivations"
|
|
11
|
+
*/
|
|
12
|
+
export declare function deriveValidation<A extends Brand.Valid<any, any>>(...[base, brands]: Check<Brand.IsValidated<A>> extends Check.True ? [
|
|
13
|
+
base: Schema<Brand.Unbranded<A>>,
|
|
14
|
+
brands: {
|
|
15
|
+
[K in keyof A[Brand.valid] & string]: Validation<A[Brand.valid][K], K>;
|
|
16
|
+
}
|
|
17
|
+
] : never): Schema<A>;
|
|
18
|
+
/**
|
|
19
|
+
* @tsplus derive fncts.schema.Schema<_> 20
|
|
20
|
+
* @tsplus location "@fncts/schema/Schema/derivations"
|
|
21
|
+
*/
|
|
22
|
+
export declare function deriveLiteral<A extends LiteralValue>(...[value]: Check<Check.IsLiteral<A> & Check.Not<Check.IsUnion<A>>> extends Check.True ? [value: A] : never): Schema<A>;
|
|
23
|
+
type MaybeKeys<A> = {
|
|
24
|
+
[K in keyof A]: A[K] extends Maybe<any> ? K : never;
|
|
25
|
+
}[keyof A];
|
|
26
|
+
/**
|
|
27
|
+
* @tsplus derive fncts.schema.Schema<_> 20
|
|
28
|
+
* @tsplus location "@fncts/schema/Schema/derivations"
|
|
29
|
+
*/
|
|
30
|
+
export declare function deriveStruct<A extends Record<string, any>>(...[requiredFields, optionalFields, maybeFields]: Check<Check.IsStruct<A>> extends Check.True ? [
|
|
31
|
+
...[
|
|
32
|
+
requiredFields: {
|
|
33
|
+
[k in Exclude<RequiredKeys<A>, MaybeKeys<A>>]: Schema<A[k]>;
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
...([OptionalKeys<A>] extends [never] ? [optionalFields: {}] : [
|
|
37
|
+
optionalFields: {
|
|
38
|
+
[k in OptionalKeys<A>]: Schema<NonNullable<A[k]>>;
|
|
39
|
+
}
|
|
40
|
+
]),
|
|
41
|
+
...([MaybeKeys<A>] extends [never] ? [] : [
|
|
42
|
+
maybeFields: {
|
|
43
|
+
[k in MaybeKeys<A>]: [A[k]] extends [Maybe<infer _A>] ? Schema<_A> : never;
|
|
44
|
+
}
|
|
45
|
+
])
|
|
46
|
+
] : never): Schema<A>;
|
|
47
|
+
/**
|
|
48
|
+
* @tsplus derive fncts.schema.Schema<_> 10
|
|
49
|
+
* @tsplus location "@fncts/schema/Schema/derivations"
|
|
50
|
+
*/
|
|
51
|
+
export declare function deriveTuple<A extends ReadonlyArray<unknown>>(...[components]: Check<Check.IsTuple<A>> extends Check.True ? [components: {
|
|
52
|
+
[K in keyof A]: Schema<A[K]>;
|
|
53
|
+
}] : never): Schema<A>;
|
|
54
|
+
/**
|
|
55
|
+
* @tsplus derive fncts.schema.Schema lazy
|
|
56
|
+
* @tsplus location "@fncts/schema/Schema/derivations"
|
|
57
|
+
*/
|
|
58
|
+
export declare function deriveLazy<A>(f: (_: Schema<A>) => Schema<A>): Schema<A>;
|
|
59
|
+
/**
|
|
60
|
+
* @tsplus derive fncts.schema.Schema[fncts.Array]<_> 10
|
|
61
|
+
* @tsplus derive fncts.schema.Schema[fncts.ReadonlyArray]<_> 10
|
|
62
|
+
* @tsplus location "@fncts/schema/Schema/derivations"
|
|
63
|
+
*/
|
|
64
|
+
export declare function deriveArray<A extends ReadonlyArray<any>>(...[element]: [A] extends [ReadonlyArray<infer _A>] ? Check<Check.IsEqual<A, ReadonlyArray<_A>>> extends Check.True ? [element: Schema<_A>] : never : never): Schema<A>;
|
|
65
|
+
/**
|
|
66
|
+
* @tsplus derive fncts.schema.Schema<_> 15
|
|
67
|
+
* @tsplus location "@fncts/schema/Schema/derivations"
|
|
68
|
+
*/
|
|
69
|
+
export declare function deriveRecord<A extends Record<string | symbol, any>>(...[keySchema, valueSchema]: [A] extends [Record<infer X, infer Y>] ? Check<Check.Not<Check.IsUnion<A>> & Check.IsEqual<A, Record<X, Y>>> extends Check.True ? [keySchema: Schema<X>, valueSchema: Schema<Y>] : never : never): Schema<A>;
|
|
70
|
+
export {};
|
package/Schema.d.ts
CHANGED
|
@@ -1,144 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import type { Schemable as S, SchemableKind } from "@fncts/schema/Schemable";
|
|
4
|
-
import type { Literal } from "@fncts/typelevel/Any";
|
|
5
|
-
export declare const SchemaVariance: unique symbol;
|
|
6
|
-
export type SchemaVariance = typeof SchemaVariance;
|
|
7
|
-
export declare const SchemaTypeId: unique symbol;
|
|
8
|
-
export type SchemaTypeId = typeof SchemaTypeId;
|
|
9
|
-
export declare const enum SchemaTag {
|
|
10
|
-
Unknown = 0,
|
|
11
|
-
String = 1,
|
|
12
|
-
Number = 2,
|
|
13
|
-
Boolean = 3,
|
|
14
|
-
BigInt = 4,
|
|
15
|
-
Literal = 5,
|
|
16
|
-
Nullable = 6,
|
|
17
|
-
Struct = 7,
|
|
18
|
-
Partial = 8,
|
|
19
|
-
Array = 9,
|
|
20
|
-
Record = 10,
|
|
21
|
-
Tuple = 11,
|
|
22
|
-
Lazy = 12,
|
|
23
|
-
Validation = 13,
|
|
24
|
-
Union = 14
|
|
25
|
-
}
|
|
26
|
-
export interface SchemaF extends HKT {
|
|
27
|
-
readonly type: Schema<this["A"]>;
|
|
28
|
-
}
|
|
29
|
-
export declare abstract class Schema<in out A> {
|
|
30
|
-
readonly [SchemaTypeId]: SchemaTypeId;
|
|
31
|
-
[SchemaVariance]: {
|
|
32
|
-
_A: (_: A) => A;
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
export declare class UnknownSchema extends Schema<unknown> {
|
|
36
|
-
readonly _tag = SchemaTag.Unknown;
|
|
37
|
-
}
|
|
38
|
-
export declare class StringSchema extends Schema<string> {
|
|
39
|
-
readonly _tag = SchemaTag.String;
|
|
40
|
-
}
|
|
41
|
-
export declare class NumberSchema extends Schema<number> {
|
|
42
|
-
readonly _tag = SchemaTag.Number;
|
|
43
|
-
}
|
|
44
|
-
export declare class BooleanSchema extends Schema<boolean> {
|
|
45
|
-
readonly _tag = SchemaTag.Boolean;
|
|
46
|
-
}
|
|
47
|
-
export declare class BigIntSchema extends Schema<bigint> {
|
|
48
|
-
readonly _tag = SchemaTag.BigInt;
|
|
49
|
-
}
|
|
50
|
-
export declare class LiteralSchema<A extends Literal> extends Schema<A> {
|
|
51
|
-
readonly value: A;
|
|
52
|
-
readonly _tag = SchemaTag.Literal;
|
|
53
|
-
constructor(value: A);
|
|
54
|
-
}
|
|
55
|
-
export declare class NullableSchema<A> extends Schema<A | null | undefined> {
|
|
56
|
-
readonly base: Schema<A>;
|
|
57
|
-
readonly _tag = SchemaTag.Nullable;
|
|
58
|
-
constructor(base: Schema<A>);
|
|
59
|
-
}
|
|
60
|
-
export declare class StructSchema<A extends Record<string, any>> extends Schema<A> {
|
|
61
|
-
readonly fields: {
|
|
62
|
-
[K in keyof A]: Schema<A[K]>;
|
|
63
|
-
};
|
|
64
|
-
readonly _tag = SchemaTag.Struct;
|
|
65
|
-
constructor(fields: {
|
|
66
|
-
[K in keyof A]: Schema<A[K]>;
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
export declare class PartialSchema<A extends Record<string, any>> extends Schema<Partial<A>> {
|
|
70
|
-
readonly fields: {
|
|
71
|
-
[K in keyof A]: Schema<A[K]>;
|
|
72
|
-
};
|
|
73
|
-
readonly _tag = SchemaTag.Partial;
|
|
74
|
-
constructor(fields: {
|
|
75
|
-
[K in keyof A]: Schema<A[K]>;
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
export declare class ArraySchema<A> extends Schema<ReadonlyArray<A>> {
|
|
79
|
-
readonly base: Schema<A>;
|
|
80
|
-
readonly _tag = SchemaTag.Array;
|
|
81
|
-
constructor(base: Schema<A>);
|
|
82
|
-
}
|
|
83
|
-
export declare class RecordSchema<A> extends Schema<Record<string, A>> {
|
|
84
|
-
readonly base: Schema<A>;
|
|
85
|
-
readonly _tag = SchemaTag.Record;
|
|
86
|
-
constructor(base: Schema<A>);
|
|
87
|
-
}
|
|
88
|
-
export declare class TupleSchema<A extends ReadonlyArray<any>> extends Schema<A> {
|
|
89
|
-
readonly components: {
|
|
90
|
-
[K in keyof A]: Schema<A[K]>;
|
|
91
|
-
};
|
|
92
|
-
readonly _tag = SchemaTag.Tuple;
|
|
93
|
-
constructor(components: {
|
|
94
|
-
[K in keyof A]: Schema<A[K]>;
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
export declare class LazySchema<A> extends Schema<A> {
|
|
98
|
-
readonly make: () => Schema<A>;
|
|
99
|
-
readonly _tag = SchemaTag.Lazy;
|
|
100
|
-
constructor(make: () => Schema<A>);
|
|
101
|
-
}
|
|
102
|
-
export declare class ValidationSchema<A, B extends ReadonlyArray<Validation<A, any>>> extends Schema<A & {
|
|
103
|
-
[K in keyof B]: B[K] extends Validation<any, infer S> ? Brand.Valid<A, S> : never;
|
|
104
|
-
}[number]> {
|
|
105
|
-
readonly base: Schema<A>;
|
|
106
|
-
readonly validations: readonly [...B];
|
|
107
|
-
readonly _tag = SchemaTag.Validation;
|
|
108
|
-
constructor(base: Schema<A>, validations: readonly [...B]);
|
|
109
|
-
}
|
|
110
|
-
export declare class UnionSchema<A extends ReadonlyArray<any>> extends Schema<A[number]> {
|
|
111
|
-
readonly members: {
|
|
112
|
-
[K in keyof A]: Schema<A[K]>;
|
|
113
|
-
};
|
|
114
|
-
readonly _tag = SchemaTag.Union;
|
|
115
|
-
constructor(members: {
|
|
116
|
-
[K in keyof A]: Schema<A[K]>;
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
export declare const unknown: Schema<unknown>;
|
|
120
|
-
export declare const string: Schema<string>;
|
|
121
|
-
export declare const number: Schema<number>;
|
|
122
|
-
export declare const boolean: Schema<boolean>;
|
|
123
|
-
export declare const bigint: Schema<bigint>;
|
|
124
|
-
export declare function literal<A extends Literal>(value: A): Schema<A>;
|
|
125
|
-
export declare function nullable<A>(base: Schema<A>): Schema<A | null | undefined>;
|
|
126
|
-
export declare function struct<A extends Record<string, any>>(fields: {
|
|
127
|
-
[K in keyof A]: Schema<A[K]>;
|
|
128
|
-
}): Schema<A>;
|
|
129
|
-
export declare function partial<A extends Record<string, any>>(fields: {
|
|
130
|
-
[K in keyof A]: Schema<A[K]>;
|
|
131
|
-
}): Schema<Partial<A>>;
|
|
132
|
-
export declare function array<A>(base: Schema<A>): Schema<ReadonlyArray<A>>;
|
|
133
|
-
export declare function record<A>(base: Schema<A>): Schema<Record<string, A>>;
|
|
134
|
-
export declare function tuple<A extends ReadonlyArray<any>>(...components: {
|
|
135
|
-
[K in keyof A]: Schema<A[K]>;
|
|
136
|
-
}): Schema<A>;
|
|
137
|
-
export declare function lazy<A>(make: () => Schema<A>): Schema<A>;
|
|
138
|
-
export declare function validation<A, B extends ReadonlyArray<Validation<A, any>>>(...validations: B): (base: Schema<A>) => Schema<A & { [K in keyof B]: B[K] extends Validation<any, infer S_1 extends string> ? Brand.Valid<A, S_1> : never; }[number]>;
|
|
139
|
-
export declare function union<A extends ReadonlyArray<any>>(...members: {
|
|
140
|
-
[K in keyof A]: Schema<A[K]>;
|
|
141
|
-
}): Schema<A[number]>;
|
|
142
|
-
export type Concrete = UnknownSchema | StringSchema | NumberSchema | BooleanSchema | BigIntSchema | LiteralSchema<any> | NullableSchema<any> | StructSchema<Record<string, any>> | PartialSchema<Record<string, any>> | ArraySchema<any> | RecordSchema<any> | TupleSchema<ReadonlyArray<any>> | LazySchema<any> | ValidationSchema<any, ReadonlyArray<Validation<any, any>>> | UnionSchema<ReadonlyArray<any>>;
|
|
143
|
-
export declare function concrete(_: Schema<any>): asserts _ is Concrete;
|
|
144
|
-
export declare function interpret<F extends HKT>(S: S<F>): <A>(schema: Schema<A>) => SchemableKind<F, A>;
|
|
1
|
+
export * from "./Schema/api.js";
|
|
2
|
+
export * from "./Schema/definition.js";
|