typesea 0.1.0
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/CHANGELOG.md +9 -0
- package/LICENSE +21 -0
- package/README.md +320 -0
- package/dist/adapters/index.d.ts +152 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +396 -0
- package/dist/aot/index.d.ts +33 -0
- package/dist/aot/index.d.ts.map +1 -0
- package/dist/aot/index.js +295 -0
- package/dist/async/index.d.ts +111 -0
- package/dist/async/index.d.ts.map +1 -0
- package/dist/async/index.js +221 -0
- package/dist/builders/composite.d.ts +31 -0
- package/dist/builders/composite.d.ts.map +1 -0
- package/dist/builders/composite.js +165 -0
- package/dist/builders/index.d.ts +11 -0
- package/dist/builders/index.d.ts.map +1 -0
- package/dist/builders/index.js +9 -0
- package/dist/builders/modifier.d.ts +26 -0
- package/dist/builders/modifier.d.ts.map +1 -0
- package/dist/builders/modifier.js +67 -0
- package/dist/builders/object/guard.d.ts +62 -0
- package/dist/builders/object/guard.d.ts.map +1 -0
- package/dist/builders/object/guard.js +113 -0
- package/dist/builders/object/index.d.ts +7 -0
- package/dist/builders/object/index.d.ts.map +1 -0
- package/dist/builders/object/index.js +5 -0
- package/dist/builders/object/schema.d.ts +44 -0
- package/dist/builders/object/schema.d.ts.map +1 -0
- package/dist/builders/object/schema.js +257 -0
- package/dist/builders/object/types.d.ts +63 -0
- package/dist/builders/object/types.d.ts.map +1 -0
- package/dist/builders/object/types.js +5 -0
- package/dist/builders/scalar.d.ts +39 -0
- package/dist/builders/scalar.d.ts.map +1 -0
- package/dist/builders/scalar.js +63 -0
- package/dist/builders/table.d.ts +53 -0
- package/dist/builders/table.d.ts.map +1 -0
- package/dist/builders/table.js +48 -0
- package/dist/builders/types.d.ts +26 -0
- package/dist/builders/types.d.ts.map +1 -0
- package/dist/builders/types.js +5 -0
- package/dist/compile/check-composite.d.ts +34 -0
- package/dist/compile/check-composite.d.ts.map +1 -0
- package/dist/compile/check-composite.js +117 -0
- package/dist/compile/check-scalar.d.ts +24 -0
- package/dist/compile/check-scalar.d.ts.map +1 -0
- package/dist/compile/check-scalar.js +73 -0
- package/dist/compile/check.d.ts +15 -0
- package/dist/compile/check.d.ts.map +1 -0
- package/dist/compile/check.js +98 -0
- package/dist/compile/context.d.ts +35 -0
- package/dist/compile/context.d.ts.map +1 -0
- package/dist/compile/context.js +72 -0
- package/dist/compile/graph-predicate.d.ts +19 -0
- package/dist/compile/graph-predicate.d.ts.map +1 -0
- package/dist/compile/graph-predicate.js +460 -0
- package/dist/compile/guard.d.ts +41 -0
- package/dist/compile/guard.d.ts.map +1 -0
- package/dist/compile/guard.js +180 -0
- package/dist/compile/index.d.ts +8 -0
- package/dist/compile/index.d.ts.map +1 -0
- package/dist/compile/index.js +6 -0
- package/dist/compile/issue.d.ts +18 -0
- package/dist/compile/issue.d.ts.map +1 -0
- package/dist/compile/issue.js +28 -0
- package/dist/compile/names.d.ts +16 -0
- package/dist/compile/names.d.ts.map +1 -0
- package/dist/compile/names.js +82 -0
- package/dist/compile/predicate.d.ts +23 -0
- package/dist/compile/predicate.d.ts.map +1 -0
- package/dist/compile/predicate.js +317 -0
- package/dist/compile/runtime.d.ts +55 -0
- package/dist/compile/runtime.d.ts.map +1 -0
- package/dist/compile/runtime.js +63 -0
- package/dist/compile/source.d.ts +11 -0
- package/dist/compile/source.d.ts.map +1 -0
- package/dist/compile/source.js +51 -0
- package/dist/compile/types.d.ts +52 -0
- package/dist/compile/types.d.ts.map +1 -0
- package/dist/compile/types.js +5 -0
- package/dist/decoder/index.d.ts +106 -0
- package/dist/decoder/index.d.ts.map +1 -0
- package/dist/decoder/index.js +262 -0
- package/dist/evaluate/check-composite.d.ts +39 -0
- package/dist/evaluate/check-composite.d.ts.map +1 -0
- package/dist/evaluate/check-composite.js +184 -0
- package/dist/evaluate/check-scalar.d.ts +20 -0
- package/dist/evaluate/check-scalar.d.ts.map +1 -0
- package/dist/evaluate/check-scalar.js +81 -0
- package/dist/evaluate/check.d.ts +11 -0
- package/dist/evaluate/check.d.ts.map +1 -0
- package/dist/evaluate/check.js +126 -0
- package/dist/evaluate/index.d.ts +7 -0
- package/dist/evaluate/index.d.ts.map +1 -0
- package/dist/evaluate/index.js +6 -0
- package/dist/evaluate/issue.d.ts +10 -0
- package/dist/evaluate/issue.d.ts.map +1 -0
- package/dist/evaluate/issue.js +11 -0
- package/dist/evaluate/predicate.d.ts +26 -0
- package/dist/evaluate/predicate.d.ts.map +1 -0
- package/dist/evaluate/predicate.js +37 -0
- package/dist/evaluate/shared.d.ts +59 -0
- package/dist/evaluate/shared.d.ts.map +1 -0
- package/dist/evaluate/shared.js +96 -0
- package/dist/evaluate/state.d.ts +65 -0
- package/dist/evaluate/state.d.ts.map +1 -0
- package/dist/evaluate/state.js +66 -0
- package/dist/guard/base.d.ts +72 -0
- package/dist/guard/base.d.ts.map +1 -0
- package/dist/guard/base.js +136 -0
- package/dist/guard/error.d.ts +19 -0
- package/dist/guard/error.d.ts.map +1 -0
- package/dist/guard/error.js +22 -0
- package/dist/guard/index.d.ts +10 -0
- package/dist/guard/index.d.ts.map +1 -0
- package/dist/guard/index.js +8 -0
- package/dist/guard/number.d.ts +32 -0
- package/dist/guard/number.d.ts.map +1 -0
- package/dist/guard/number.js +71 -0
- package/dist/guard/props.d.ts +18 -0
- package/dist/guard/props.d.ts.map +1 -0
- package/dist/guard/props.js +35 -0
- package/dist/guard/read.d.ts +42 -0
- package/dist/guard/read.d.ts.map +1 -0
- package/dist/guard/read.js +114 -0
- package/dist/guard/registry.d.ts +15 -0
- package/dist/guard/registry.d.ts.map +1 -0
- package/dist/guard/registry.js +21 -0
- package/dist/guard/string.d.ts +36 -0
- package/dist/guard/string.d.ts.map +1 -0
- package/dist/guard/string.js +95 -0
- package/dist/guard/types.d.ts +103 -0
- package/dist/guard/types.d.ts.map +1 -0
- package/dist/guard/types.js +5 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/internal/index.d.ts +34 -0
- package/dist/internal/index.d.ts.map +1 -0
- package/dist/internal/index.js +56 -0
- package/dist/ir/builder.d.ts +173 -0
- package/dist/ir/builder.d.ts.map +1 -0
- package/dist/ir/builder.js +481 -0
- package/dist/ir/freeze.d.ts +10 -0
- package/dist/ir/freeze.d.ts.map +1 -0
- package/dist/ir/freeze.js +102 -0
- package/dist/ir/index.d.ts +9 -0
- package/dist/ir/index.d.ts.map +1 -0
- package/dist/ir/index.js +7 -0
- package/dist/ir/regexp.d.ts +6 -0
- package/dist/ir/regexp.d.ts.map +1 -0
- package/dist/ir/regexp.js +12 -0
- package/dist/ir/types.d.ts +215 -0
- package/dist/ir/types.d.ts.map +1 -0
- package/dist/ir/types.js +5 -0
- package/dist/ir/validate.d.ts +10 -0
- package/dist/ir/validate.d.ts.map +1 -0
- package/dist/ir/validate.js +271 -0
- package/dist/issue/index.d.ts +44 -0
- package/dist/issue/index.d.ts.map +1 -0
- package/dist/issue/index.js +152 -0
- package/dist/json-schema/emit-combinator.d.ts +28 -0
- package/dist/json-schema/emit-combinator.d.ts.map +1 -0
- package/dist/json-schema/emit-combinator.js +96 -0
- package/dist/json-schema/emit-composite.d.ts +28 -0
- package/dist/json-schema/emit-composite.d.ts.map +1 -0
- package/dist/json-schema/emit-composite.js +127 -0
- package/dist/json-schema/emit-scalar.d.ts +25 -0
- package/dist/json-schema/emit-scalar.d.ts.map +1 -0
- package/dist/json-schema/emit-scalar.js +104 -0
- package/dist/json-schema/emit-types.d.ts +12 -0
- package/dist/json-schema/emit-types.d.ts.map +1 -0
- package/dist/json-schema/emit-types.js +5 -0
- package/dist/json-schema/emit.d.ts +12 -0
- package/dist/json-schema/emit.d.ts.map +1 -0
- package/dist/json-schema/emit.js +62 -0
- package/dist/json-schema/freeze.d.ts +14 -0
- package/dist/json-schema/freeze.d.ts.map +1 -0
- package/dist/json-schema/freeze.js +114 -0
- package/dist/json-schema/index.d.ts +20 -0
- package/dist/json-schema/index.d.ts.map +1 -0
- package/dist/json-schema/index.js +76 -0
- package/dist/json-schema/issue.d.ts +11 -0
- package/dist/json-schema/issue.d.ts.map +1 -0
- package/dist/json-schema/issue.js +14 -0
- package/dist/json-schema/read.d.ts +29 -0
- package/dist/json-schema/read.d.ts.map +1 -0
- package/dist/json-schema/read.js +87 -0
- package/dist/json-schema/types.d.ts +106 -0
- package/dist/json-schema/types.d.ts.map +1 -0
- package/dist/json-schema/types.js +5 -0
- package/dist/kind/index.d.ts +119 -0
- package/dist/kind/index.d.ts.map +1 -0
- package/dist/kind/index.js +94 -0
- package/dist/lower/index.d.ts +7 -0
- package/dist/lower/index.d.ts.map +1 -0
- package/dist/lower/index.js +199 -0
- package/dist/message/index.d.ts +51 -0
- package/dist/message/index.d.ts.map +1 -0
- package/dist/message/index.js +269 -0
- package/dist/optimize/compact.d.ts +10 -0
- package/dist/optimize/compact.d.ts.map +1 -0
- package/dist/optimize/compact.js +60 -0
- package/dist/optimize/fold-boolean.d.ts +15 -0
- package/dist/optimize/fold-boolean.d.ts.map +1 -0
- package/dist/optimize/fold-boolean.js +75 -0
- package/dist/optimize/fold-common.d.ts +45 -0
- package/dist/optimize/fold-common.d.ts.map +1 -0
- package/dist/optimize/fold-common.js +71 -0
- package/dist/optimize/fold-scalar.d.ts +59 -0
- package/dist/optimize/fold-scalar.d.ts.map +1 -0
- package/dist/optimize/fold-scalar.js +174 -0
- package/dist/optimize/fold.d.ts +10 -0
- package/dist/optimize/fold.d.ts.map +1 -0
- package/dist/optimize/fold.js +103 -0
- package/dist/optimize/index.d.ts +10 -0
- package/dist/optimize/index.d.ts.map +1 -0
- package/dist/optimize/index.js +23 -0
- package/dist/optimize/map-node.d.ts +21 -0
- package/dist/optimize/map-node.d.ts.map +1 -0
- package/dist/optimize/map-node.js +222 -0
- package/dist/optimize/remap.d.ts +30 -0
- package/dist/optimize/remap.d.ts.map +1 -0
- package/dist/optimize/remap.js +46 -0
- package/dist/optimize/rewrite.d.ts +22 -0
- package/dist/optimize/rewrite.d.ts.map +1 -0
- package/dist/optimize/rewrite.js +34 -0
- package/dist/plan/cache.d.ts +20 -0
- package/dist/plan/cache.d.ts.map +1 -0
- package/dist/plan/cache.js +122 -0
- package/dist/plan/index.d.ts +8 -0
- package/dist/plan/index.d.ts.map +1 -0
- package/dist/plan/index.js +6 -0
- package/dist/plan/predicate.d.ts +27 -0
- package/dist/plan/predicate.d.ts.map +1 -0
- package/dist/plan/predicate.js +415 -0
- package/dist/plan/schema-predicate.d.ts +15 -0
- package/dist/plan/schema-predicate.d.ts.map +1 -0
- package/dist/plan/schema-predicate.js +277 -0
- package/dist/plan/types.d.ts +18 -0
- package/dist/plan/types.d.ts.map +1 -0
- package/dist/plan/types.js +5 -0
- package/dist/result/index.d.ts +27 -0
- package/dist/result/index.d.ts.map +1 -0
- package/dist/result/index.js +20 -0
- package/dist/schema/common.d.ts +30 -0
- package/dist/schema/common.d.ts.map +1 -0
- package/dist/schema/common.js +102 -0
- package/dist/schema/freeze.d.ts +10 -0
- package/dist/schema/freeze.d.ts.map +1 -0
- package/dist/schema/freeze.js +163 -0
- package/dist/schema/index.d.ts +11 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +9 -0
- package/dist/schema/lazy.d.ts +10 -0
- package/dist/schema/lazy.d.ts.map +1 -0
- package/dist/schema/lazy.js +25 -0
- package/dist/schema/literal.d.ts +10 -0
- package/dist/schema/literal.d.ts.map +1 -0
- package/dist/schema/literal.js +17 -0
- package/dist/schema/types.d.ts +243 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +9 -0
- package/dist/schema/validate.d.ts +10 -0
- package/dist/schema/validate.d.ts.map +1 -0
- package/dist/schema/validate.js +268 -0
- package/docs/api.md +301 -0
- package/docs/engine-notes.md +153 -0
- package/docs/index.html +1242 -0
- package/package.json +68 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @brief schema tag.
|
|
3
|
+
*/
|
|
4
|
+
export declare const SchemaTag: {
|
|
5
|
+
readonly String: 1;
|
|
6
|
+
readonly Number: 2;
|
|
7
|
+
readonly Boolean: 3;
|
|
8
|
+
readonly Literal: 4;
|
|
9
|
+
readonly Array: 5;
|
|
10
|
+
readonly Object: 6;
|
|
11
|
+
readonly Union: 7;
|
|
12
|
+
readonly Optional: 8;
|
|
13
|
+
readonly Undefinedable: 9;
|
|
14
|
+
readonly Nullable: 10;
|
|
15
|
+
readonly DiscriminatedUnion: 11;
|
|
16
|
+
readonly Brand: 12;
|
|
17
|
+
readonly Tuple: 13;
|
|
18
|
+
readonly Record: 14;
|
|
19
|
+
readonly Lazy: 15;
|
|
20
|
+
readonly Refine: 16;
|
|
21
|
+
readonly Unknown: 17;
|
|
22
|
+
readonly Never: 18;
|
|
23
|
+
readonly BigInt: 19;
|
|
24
|
+
readonly Symbol: 20;
|
|
25
|
+
readonly Intersection: 21;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* @brief schema tag.
|
|
29
|
+
*/
|
|
30
|
+
export type SchemaTag = (typeof SchemaTag)[keyof typeof SchemaTag];
|
|
31
|
+
/**
|
|
32
|
+
* @brief object mode tag.
|
|
33
|
+
*/
|
|
34
|
+
export declare const ObjectModeTag: {
|
|
35
|
+
readonly Passthrough: 1;
|
|
36
|
+
readonly Strict: 2;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* @brief object mode tag.
|
|
40
|
+
*/
|
|
41
|
+
export type ObjectModeTag = (typeof ObjectModeTag)[keyof typeof ObjectModeTag];
|
|
42
|
+
/**
|
|
43
|
+
* @brief presence tag.
|
|
44
|
+
*/
|
|
45
|
+
export declare const PresenceTag: {
|
|
46
|
+
readonly Required: 1;
|
|
47
|
+
readonly Optional: 2;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* @brief presence tag.
|
|
51
|
+
*/
|
|
52
|
+
export type PresenceTag = (typeof PresenceTag)[keyof typeof PresenceTag];
|
|
53
|
+
/**
|
|
54
|
+
* @brief string check tag.
|
|
55
|
+
*/
|
|
56
|
+
export declare const StringCheckTag: {
|
|
57
|
+
readonly Min: 1;
|
|
58
|
+
readonly Max: 2;
|
|
59
|
+
readonly Regex: 3;
|
|
60
|
+
readonly Uuid: 4;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* @brief string check tag.
|
|
64
|
+
*/
|
|
65
|
+
export type StringCheckTag = (typeof StringCheckTag)[keyof typeof StringCheckTag];
|
|
66
|
+
/**
|
|
67
|
+
* @brief number check tag.
|
|
68
|
+
*/
|
|
69
|
+
export declare const NumberCheckTag: {
|
|
70
|
+
readonly Integer: 1;
|
|
71
|
+
readonly Gte: 2;
|
|
72
|
+
readonly Lte: 3;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* @brief number check tag.
|
|
76
|
+
*/
|
|
77
|
+
export type NumberCheckTag = (typeof NumberCheckTag)[keyof typeof NumberCheckTag];
|
|
78
|
+
/**
|
|
79
|
+
* @brief node tag.
|
|
80
|
+
*/
|
|
81
|
+
export declare const NodeTag: {
|
|
82
|
+
readonly Start: 1;
|
|
83
|
+
readonly Param: 2;
|
|
84
|
+
readonly Const: 3;
|
|
85
|
+
readonly GetProp: 4;
|
|
86
|
+
readonly IsString: 20;
|
|
87
|
+
readonly IsNumber: 21;
|
|
88
|
+
readonly IsBoolean: 22;
|
|
89
|
+
readonly IsObject: 23;
|
|
90
|
+
readonly IsArray: 24;
|
|
91
|
+
readonly IsUndefined: 25;
|
|
92
|
+
readonly IsNull: 26;
|
|
93
|
+
readonly Equals: 27;
|
|
94
|
+
readonly StringMin: 28;
|
|
95
|
+
readonly StringMax: 29;
|
|
96
|
+
readonly Regex: 30;
|
|
97
|
+
readonly IsInteger: 31;
|
|
98
|
+
readonly Gte: 32;
|
|
99
|
+
readonly Lte: 33;
|
|
100
|
+
readonly HasOwn: 34;
|
|
101
|
+
readonly ArrayEvery: 35;
|
|
102
|
+
readonly SchemaCheck: 36;
|
|
103
|
+
readonly IsBigInt: 37;
|
|
104
|
+
readonly IsSymbol: 38;
|
|
105
|
+
readonly StrictKeys: 39;
|
|
106
|
+
readonly HasOwnData: 40;
|
|
107
|
+
readonly TupleItems: 41;
|
|
108
|
+
readonly RecordEvery: 42;
|
|
109
|
+
readonly DiscriminantDispatch: 43;
|
|
110
|
+
readonly Not: 50;
|
|
111
|
+
readonly And: 51;
|
|
112
|
+
readonly Or: 52;
|
|
113
|
+
readonly Return: 70;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* @brief node tag.
|
|
117
|
+
*/
|
|
118
|
+
export type NodeTag = (typeof NodeTag)[keyof typeof NodeTag];
|
|
119
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kind/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;CAsBZ,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,aAAa;;;CAGhB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAE/E;;GAEG;AACH,eAAO,MAAM,WAAW;;;CAGd,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,cAAc,GACxB,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,cAAc,GACxB,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCV,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @brief schema tag.
|
|
3
|
+
*/
|
|
4
|
+
export const SchemaTag = {
|
|
5
|
+
String: 1,
|
|
6
|
+
Number: 2,
|
|
7
|
+
Boolean: 3,
|
|
8
|
+
Literal: 4,
|
|
9
|
+
Array: 5,
|
|
10
|
+
Object: 6,
|
|
11
|
+
Union: 7,
|
|
12
|
+
Optional: 8,
|
|
13
|
+
Undefinedable: 9,
|
|
14
|
+
Nullable: 10,
|
|
15
|
+
DiscriminatedUnion: 11,
|
|
16
|
+
Brand: 12,
|
|
17
|
+
Tuple: 13,
|
|
18
|
+
Record: 14,
|
|
19
|
+
Lazy: 15,
|
|
20
|
+
Refine: 16,
|
|
21
|
+
Unknown: 17,
|
|
22
|
+
Never: 18,
|
|
23
|
+
BigInt: 19,
|
|
24
|
+
Symbol: 20,
|
|
25
|
+
Intersection: 21
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* @brief object mode tag.
|
|
29
|
+
*/
|
|
30
|
+
export const ObjectModeTag = {
|
|
31
|
+
Passthrough: 1,
|
|
32
|
+
Strict: 2
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* @brief presence tag.
|
|
36
|
+
*/
|
|
37
|
+
export const PresenceTag = {
|
|
38
|
+
Required: 1,
|
|
39
|
+
Optional: 2
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* @brief string check tag.
|
|
43
|
+
*/
|
|
44
|
+
export const StringCheckTag = {
|
|
45
|
+
Min: 1,
|
|
46
|
+
Max: 2,
|
|
47
|
+
Regex: 3,
|
|
48
|
+
Uuid: 4
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* @brief number check tag.
|
|
52
|
+
*/
|
|
53
|
+
export const NumberCheckTag = {
|
|
54
|
+
Integer: 1,
|
|
55
|
+
Gte: 2,
|
|
56
|
+
Lte: 3
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* @brief node tag.
|
|
60
|
+
*/
|
|
61
|
+
export const NodeTag = {
|
|
62
|
+
Start: 1,
|
|
63
|
+
Param: 2,
|
|
64
|
+
Const: 3,
|
|
65
|
+
GetProp: 4,
|
|
66
|
+
IsString: 20,
|
|
67
|
+
IsNumber: 21,
|
|
68
|
+
IsBoolean: 22,
|
|
69
|
+
IsObject: 23,
|
|
70
|
+
IsArray: 24,
|
|
71
|
+
IsUndefined: 25,
|
|
72
|
+
IsNull: 26,
|
|
73
|
+
Equals: 27,
|
|
74
|
+
StringMin: 28,
|
|
75
|
+
StringMax: 29,
|
|
76
|
+
Regex: 30,
|
|
77
|
+
IsInteger: 31,
|
|
78
|
+
Gte: 32,
|
|
79
|
+
Lte: 33,
|
|
80
|
+
HasOwn: 34,
|
|
81
|
+
ArrayEvery: 35,
|
|
82
|
+
SchemaCheck: 36,
|
|
83
|
+
IsBigInt: 37,
|
|
84
|
+
IsSymbol: 38,
|
|
85
|
+
StrictKeys: 39,
|
|
86
|
+
HasOwnData: 40,
|
|
87
|
+
TupleItems: 41,
|
|
88
|
+
RecordEvery: 42,
|
|
89
|
+
DiscriminantDispatch: 43,
|
|
90
|
+
Not: 50,
|
|
91
|
+
And: 51,
|
|
92
|
+
Or: 52,
|
|
93
|
+
Return: 70
|
|
94
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lower/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAgB,KAAK,KAAK,EAAe,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE/D;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAOjD"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { NumberCheckTag, ObjectModeTag, PresenceTag, SchemaTag, StringCheckTag } from "../kind/index.js";
|
|
2
|
+
import { GraphBuilder } from "../ir/index.js";
|
|
3
|
+
import { UUID_PATTERN } from "../schema/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* @brief lower schema.
|
|
6
|
+
*/
|
|
7
|
+
export function lowerSchema(schema) {
|
|
8
|
+
const builder = new GraphBuilder();
|
|
9
|
+
const entry = builder.start();
|
|
10
|
+
const input = builder.param("input");
|
|
11
|
+
const result = lowerPredicate(builder, schema, input);
|
|
12
|
+
const ret = builder.ret(entry, result);
|
|
13
|
+
return builder.finish(entry, ret);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @brief lower predicate.
|
|
17
|
+
*/
|
|
18
|
+
function lowerPredicate(builder, schema, value) {
|
|
19
|
+
switch (schema.tag) {
|
|
20
|
+
case SchemaTag.Unknown:
|
|
21
|
+
return builder.constant(true);
|
|
22
|
+
case SchemaTag.Never:
|
|
23
|
+
return builder.constant(false);
|
|
24
|
+
case SchemaTag.String:
|
|
25
|
+
return lowerString(builder, schema, value);
|
|
26
|
+
case SchemaTag.Number:
|
|
27
|
+
return lowerNumber(builder, schema, value);
|
|
28
|
+
case SchemaTag.BigInt:
|
|
29
|
+
return builder.isBigInt(value);
|
|
30
|
+
case SchemaTag.Symbol:
|
|
31
|
+
return builder.isSymbol(value);
|
|
32
|
+
case SchemaTag.Boolean:
|
|
33
|
+
return builder.isBoolean(value);
|
|
34
|
+
case SchemaTag.Literal:
|
|
35
|
+
return builder.equals(value, builder.constant(schema.value));
|
|
36
|
+
case SchemaTag.Array:
|
|
37
|
+
return builder.and([
|
|
38
|
+
builder.isArray(value),
|
|
39
|
+
builder.arrayEvery(value, schema.item)
|
|
40
|
+
]);
|
|
41
|
+
case SchemaTag.Tuple:
|
|
42
|
+
return builder.and([
|
|
43
|
+
builder.isArray(value),
|
|
44
|
+
builder.tupleItems(value, schema.items)
|
|
45
|
+
]);
|
|
46
|
+
case SchemaTag.Record:
|
|
47
|
+
return builder.and([
|
|
48
|
+
builder.isObject(value),
|
|
49
|
+
builder.recordEvery(value, schema.value)
|
|
50
|
+
]);
|
|
51
|
+
case SchemaTag.Object:
|
|
52
|
+
return lowerObject(builder, schema, value);
|
|
53
|
+
case SchemaTag.Union:
|
|
54
|
+
return lowerUnion(builder, schema.options, value);
|
|
55
|
+
case SchemaTag.Intersection:
|
|
56
|
+
return builder.and([
|
|
57
|
+
lowerPredicate(builder, schema.left, value),
|
|
58
|
+
lowerPredicate(builder, schema.right, value)
|
|
59
|
+
]);
|
|
60
|
+
case SchemaTag.Optional:
|
|
61
|
+
case SchemaTag.Undefinedable:
|
|
62
|
+
return builder.or([
|
|
63
|
+
builder.isUndefined(value),
|
|
64
|
+
lowerPredicate(builder, schema.inner, value)
|
|
65
|
+
]);
|
|
66
|
+
case SchemaTag.Nullable:
|
|
67
|
+
return builder.or([
|
|
68
|
+
builder.isNull(value),
|
|
69
|
+
lowerPredicate(builder, schema.inner, value)
|
|
70
|
+
]);
|
|
71
|
+
case SchemaTag.DiscriminatedUnion:
|
|
72
|
+
return lowerDiscriminatedUnion(builder, schema.key, schema.cases, value);
|
|
73
|
+
case SchemaTag.Brand:
|
|
74
|
+
return lowerPredicate(builder, schema.inner, value);
|
|
75
|
+
case SchemaTag.Lazy:
|
|
76
|
+
case SchemaTag.Refine:
|
|
77
|
+
return builder.schemaCheck(value, schema);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* @brief lower string.
|
|
82
|
+
*/
|
|
83
|
+
function lowerString(builder, schema, value) {
|
|
84
|
+
const tests = [builder.isString(value)];
|
|
85
|
+
const checks = schema.checks;
|
|
86
|
+
for (let index = 0; index < checks.length; index += 1) {
|
|
87
|
+
const check = checks[index];
|
|
88
|
+
if (check === undefined) {
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
switch (check.tag) {
|
|
92
|
+
case StringCheckTag.Min:
|
|
93
|
+
tests.push(builder.stringMin(value, check.value));
|
|
94
|
+
break;
|
|
95
|
+
case StringCheckTag.Max:
|
|
96
|
+
tests.push(builder.stringMax(value, check.value));
|
|
97
|
+
break;
|
|
98
|
+
case StringCheckTag.Regex:
|
|
99
|
+
tests.push(builder.regex(value, check.regex, check.name));
|
|
100
|
+
break;
|
|
101
|
+
case StringCheckTag.Uuid:
|
|
102
|
+
tests.push(builder.regex(value, UUID_PATTERN, "uuid"));
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return builder.and(tests);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* @brief lower number.
|
|
110
|
+
*/
|
|
111
|
+
function lowerNumber(builder, schema, value) {
|
|
112
|
+
const tests = [builder.isNumber(value)];
|
|
113
|
+
const checks = schema.checks;
|
|
114
|
+
for (let index = 0; index < checks.length; index += 1) {
|
|
115
|
+
const check = checks[index];
|
|
116
|
+
if (check === undefined) {
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
switch (check.tag) {
|
|
120
|
+
case NumberCheckTag.Integer:
|
|
121
|
+
tests.push(builder.isInteger(value));
|
|
122
|
+
break;
|
|
123
|
+
case NumberCheckTag.Gte:
|
|
124
|
+
tests.push(builder.gte(value, builder.constant(check.value)));
|
|
125
|
+
break;
|
|
126
|
+
case NumberCheckTag.Lte:
|
|
127
|
+
tests.push(builder.lte(value, builder.constant(check.value)));
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return builder.and(tests);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* @brief lower object.
|
|
135
|
+
*/
|
|
136
|
+
function lowerObject(builder, schema, value) {
|
|
137
|
+
const entries = schema.entries;
|
|
138
|
+
const tests = [builder.isObject(value)];
|
|
139
|
+
for (let index = 0; index < entries.length; index += 1) {
|
|
140
|
+
const entry = entries[index];
|
|
141
|
+
if (entry === undefined) {
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
const prop = builder.getProp(value, entry.key);
|
|
145
|
+
const propTest = lowerPredicate(builder, entry.schema, prop);
|
|
146
|
+
const hasData = builder.hasOwnData(value, entry.key);
|
|
147
|
+
if (entry.presence === PresenceTag.Optional) {
|
|
148
|
+
const hasKey = builder.hasOwn(value, entry.key);
|
|
149
|
+
tests.push(builder.or([
|
|
150
|
+
builder.not(hasKey),
|
|
151
|
+
builder.and([hasData, propTest])
|
|
152
|
+
]));
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
tests.push(hasData);
|
|
156
|
+
tests.push(propTest);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (schema.mode === ObjectModeTag.Strict) {
|
|
160
|
+
const keys = new Array(entries.length);
|
|
161
|
+
for (let index = 0; index < entries.length; index += 1) {
|
|
162
|
+
const entry = entries[index];
|
|
163
|
+
if (entry !== undefined) {
|
|
164
|
+
keys[index] = entry.key;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
tests.push(builder.strictKeys(value, keys));
|
|
168
|
+
}
|
|
169
|
+
return builder.and(tests);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* @brief lower union.
|
|
173
|
+
*/
|
|
174
|
+
function lowerUnion(builder, options, value) {
|
|
175
|
+
const tests = [];
|
|
176
|
+
for (let index = 0; index < options.length; index += 1) {
|
|
177
|
+
const option = options[index];
|
|
178
|
+
if (option === undefined) {
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
tests.push(lowerPredicate(builder, option, value));
|
|
182
|
+
}
|
|
183
|
+
return builder.or(tests);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* @brief lower discriminated union.
|
|
187
|
+
*/
|
|
188
|
+
function lowerDiscriminatedUnion(builder, key, cases, value) {
|
|
189
|
+
const literals = new Array(cases.length);
|
|
190
|
+
const schemas = new Array(cases.length);
|
|
191
|
+
for (let index = 0; index < cases.length; index += 1) {
|
|
192
|
+
const unionCase = cases[index];
|
|
193
|
+
if (unionCase !== undefined) {
|
|
194
|
+
literals[index] = unionCase.literal;
|
|
195
|
+
schemas[index] = unionCase.schema;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return builder.discriminantDispatch(value, key, literals, schemas);
|
|
199
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type CheckResult, type Issue, type IssueCode, type PathSegment } from "../issue/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* @brief message locale.
|
|
4
|
+
*/
|
|
5
|
+
export type MessageLocale = "en" | "ko";
|
|
6
|
+
/**
|
|
7
|
+
* @brief issue message context.
|
|
8
|
+
*/
|
|
9
|
+
export interface IssueMessageContext {
|
|
10
|
+
readonly path: string;
|
|
11
|
+
readonly code: IssueCode;
|
|
12
|
+
readonly expected: string;
|
|
13
|
+
readonly actual: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @brief issue message formatter.
|
|
17
|
+
*/
|
|
18
|
+
export type IssueMessageFormatter = (issue: Issue, context: IssueMessageContext) => string;
|
|
19
|
+
/**
|
|
20
|
+
* @brief issue message template.
|
|
21
|
+
*/
|
|
22
|
+
export type IssueMessageTemplate = string | IssueMessageFormatter;
|
|
23
|
+
/**
|
|
24
|
+
* @brief issue message catalog.
|
|
25
|
+
*/
|
|
26
|
+
export type IssueMessageCatalog = Partial<Readonly<Record<IssueCode, IssueMessageTemplate>>>;
|
|
27
|
+
/**
|
|
28
|
+
* @brief issue message options.
|
|
29
|
+
*/
|
|
30
|
+
export interface IssueMessageOptions {
|
|
31
|
+
readonly locale: MessageLocale | undefined;
|
|
32
|
+
readonly catalog: IssueMessageCatalog | undefined;
|
|
33
|
+
readonly pathFormatter: ((path: readonly PathSegment[]) => string) | undefined;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @brief define messages.
|
|
37
|
+
*/
|
|
38
|
+
export declare function defineMessages(catalog: IssueMessageCatalog): IssueMessageCatalog;
|
|
39
|
+
/**
|
|
40
|
+
* @brief format issue.
|
|
41
|
+
*/
|
|
42
|
+
export declare function formatIssue(issue: Issue, options?: Partial<IssueMessageOptions>): string;
|
|
43
|
+
/**
|
|
44
|
+
* @brief format issues.
|
|
45
|
+
*/
|
|
46
|
+
export declare function formatIssues(issues: readonly Issue[], options?: Partial<IssueMessageOptions>): readonly string[];
|
|
47
|
+
/**
|
|
48
|
+
* @brief with messages.
|
|
49
|
+
*/
|
|
50
|
+
export declare function withMessages<TValue>(result: CheckResult<TValue>, options?: Partial<IssueMessageOptions>): CheckResult<TValue>;
|
|
51
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/message/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAG3B;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAClC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,mBAAmB,KACzB,MAAM,CAAC;AAEZ;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,qBAAqB,CAAC;AAElE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACvC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,CAClD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,aAAa,EAClB,CAAC,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,KAAK,MAAM,CAAC,GAC1C,SAAS,CAAC;CACf;AAWD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,mBAAmB,GAAG,mBAAmB,CAEhF;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACrC,MAAM,CAOR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACrC,SAAS,MAAM,EAAE,CAWnB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EACjC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAC3B,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACrC,WAAW,CAAC,MAAM,CAAC,CAoBrB"}
|