typesea 0.1.0 → 0.3.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 +85 -6
- package/README.md +143 -28
- package/dist/adapters/index.d.ts +50 -8
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +169 -48
- package/dist/aot/index.d.ts +19 -3
- package/dist/aot/index.d.ts.map +1 -1
- package/dist/aot/index.js +115 -17
- package/dist/async/index.d.ts +28 -56
- package/dist/async/index.d.ts.map +1 -1
- package/dist/async/index.js +94 -37
- package/dist/builders/composite.d.ts +43 -9
- package/dist/builders/composite.d.ts.map +1 -1
- package/dist/builders/composite.js +100 -17
- package/dist/builders/index.d.ts +8 -5
- package/dist/builders/index.d.ts.map +1 -1
- package/dist/builders/index.js +7 -4
- package/dist/builders/modifier.d.ts +36 -5
- package/dist/builders/modifier.d.ts.map +1 -1
- package/dist/builders/modifier.js +52 -5
- package/dist/builders/object/guard.d.ts +72 -24
- package/dist/builders/object/guard.d.ts.map +1 -1
- package/dist/builders/object/guard.js +139 -29
- package/dist/builders/object/index.d.ts +4 -2
- package/dist/builders/object/index.d.ts.map +1 -1
- package/dist/builders/object/index.js +3 -1
- package/dist/builders/object/schema.d.ts +88 -11
- package/dist/builders/object/schema.d.ts.map +1 -1
- package/dist/builders/object/schema.js +290 -23
- package/dist/builders/object/types.d.ts +20 -31
- package/dist/builders/object/types.d.ts.map +1 -1
- package/dist/builders/object/types.js +2 -0
- package/dist/builders/runtime.d.ts +40 -0
- package/dist/builders/runtime.d.ts.map +1 -0
- package/dist/builders/runtime.js +150 -0
- package/dist/builders/scalar.d.ts +49 -9
- package/dist/builders/scalar.d.ts.map +1 -1
- package/dist/builders/scalar.js +87 -9
- package/dist/builders/table.d.ts +35 -5
- package/dist/builders/table.d.ts.map +1 -1
- package/dist/builders/table.js +35 -5
- package/dist/builders/types.d.ts +20 -4
- package/dist/builders/types.d.ts.map +1 -1
- package/dist/builders/types.js +2 -0
- package/dist/compile/check-composite.d.ts +25 -2
- package/dist/compile/check-composite.d.ts.map +1 -1
- package/dist/compile/check-composite.js +699 -27
- package/dist/compile/check-scalar.d.ts +88 -0
- package/dist/compile/check-scalar.d.ts.map +1 -1
- package/dist/compile/check-scalar.js +570 -3
- package/dist/compile/check.d.ts +12 -0
- package/dist/compile/check.d.ts.map +1 -1
- package/dist/compile/check.js +62 -3
- package/dist/compile/context.d.ts +47 -9
- package/dist/compile/context.d.ts.map +1 -1
- package/dist/compile/context.js +53 -8
- package/dist/compile/first.d.ts +26 -0
- package/dist/compile/first.d.ts.map +1 -0
- package/dist/compile/first.js +850 -0
- package/dist/compile/graph-predicate.d.ts +4 -2
- package/dist/compile/graph-predicate.d.ts.map +1 -1
- package/dist/compile/graph-predicate.js +2272 -165
- package/dist/compile/guard.d.ts +16 -24
- package/dist/compile/guard.d.ts.map +1 -1
- package/dist/compile/guard.js +202 -72
- package/dist/compile/index.d.ts +3 -1
- package/dist/compile/index.d.ts.map +1 -1
- package/dist/compile/index.js +2 -0
- package/dist/compile/issue.d.ts +110 -0
- package/dist/compile/issue.d.ts.map +1 -1
- package/dist/compile/issue.js +184 -1
- package/dist/compile/names.d.ts +12 -2
- package/dist/compile/names.d.ts.map +1 -1
- package/dist/compile/names.js +19 -3
- package/dist/compile/predicate.d.ts +24 -0
- package/dist/compile/predicate.d.ts.map +1 -1
- package/dist/compile/predicate.js +287 -10
- package/dist/compile/runtime.d.ts +100 -13
- package/dist/compile/runtime.d.ts.map +1 -1
- package/dist/compile/runtime.js +56 -6
- package/dist/compile/source.d.ts +10 -2
- package/dist/compile/source.d.ts.map +1 -1
- package/dist/compile/source.js +385 -26
- package/dist/compile/types.d.ts +22 -0
- package/dist/compile/types.d.ts.map +1 -1
- package/dist/compile/types.js +2 -0
- package/dist/decoder/index.d.ts +92 -46
- package/dist/decoder/index.d.ts.map +1 -1
- package/dist/decoder/index.js +266 -39
- package/dist/evaluate/check-composite.d.ts +111 -2
- package/dist/evaluate/check-composite.d.ts.map +1 -1
- package/dist/evaluate/check-composite.js +343 -8
- package/dist/evaluate/check-scalar.d.ts +25 -0
- package/dist/evaluate/check-scalar.d.ts.map +1 -1
- package/dist/evaluate/check-scalar.js +124 -3
- package/dist/evaluate/check.d.ts +7 -0
- package/dist/evaluate/check.d.ts.map +1 -1
- package/dist/evaluate/check.js +62 -4
- package/dist/evaluate/index.d.ts +2 -0
- package/dist/evaluate/index.d.ts.map +1 -1
- package/dist/evaluate/index.js +2 -0
- package/dist/evaluate/issue.d.ts +11 -1
- package/dist/evaluate/issue.d.ts.map +1 -1
- package/dist/evaluate/issue.js +15 -1
- package/dist/evaluate/predicate.d.ts +16 -5
- package/dist/evaluate/predicate.d.ts.map +1 -1
- package/dist/evaluate/predicate.js +20 -5
- package/dist/evaluate/shared.d.ts +78 -13
- package/dist/evaluate/shared.d.ts.map +1 -1
- package/dist/evaluate/shared.js +101 -8
- package/dist/evaluate/state.d.ts +35 -13
- package/dist/evaluate/state.d.ts.map +1 -1
- package/dist/evaluate/state.js +35 -2
- package/dist/guard/array.d.ts +48 -0
- package/dist/guard/array.d.ts.map +1 -0
- package/dist/guard/array.js +84 -0
- package/dist/guard/base.d.ts +111 -31
- package/dist/guard/base.d.ts.map +1 -1
- package/dist/guard/base.js +165 -32
- package/dist/guard/date.d.ts +34 -0
- package/dist/guard/date.d.ts.map +1 -0
- package/dist/guard/date.js +60 -0
- package/dist/guard/error.d.ts +10 -5
- package/dist/guard/error.d.ts.map +1 -1
- package/dist/guard/error.js +10 -5
- package/dist/guard/index.d.ts +4 -0
- package/dist/guard/index.d.ts.map +1 -1
- package/dist/guard/index.js +4 -0
- package/dist/guard/number.d.ts +86 -11
- package/dist/guard/number.d.ts.map +1 -1
- package/dist/guard/number.js +159 -11
- package/dist/guard/props.d.ts +27 -3
- package/dist/guard/props.d.ts.map +1 -1
- package/dist/guard/props.js +27 -3
- package/dist/guard/read.d.ts +115 -10
- package/dist/guard/read.d.ts.map +1 -1
- package/dist/guard/read.js +185 -10
- package/dist/guard/registry.d.ts +12 -2
- package/dist/guard/registry.d.ts.map +1 -1
- package/dist/guard/registry.js +15 -3
- package/dist/guard/string.d.ts +115 -13
- package/dist/guard/string.d.ts.map +1 -1
- package/dist/guard/string.js +250 -13
- package/dist/guard/types.d.ts +110 -40
- package/dist/guard/types.d.ts.map +1 -1
- package/dist/guard/types.js +2 -0
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/internal/index.d.ts +42 -6
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +51 -8
- package/dist/ir/builder.d.ts +17 -127
- package/dist/ir/builder.d.ts.map +1 -1
- package/dist/ir/builder.js +80 -137
- package/dist/ir/freeze.d.ts +4 -0
- package/dist/ir/freeze.d.ts.map +1 -1
- package/dist/ir/freeze.js +66 -0
- package/dist/ir/index.d.ts +3 -1
- package/dist/ir/index.d.ts.map +1 -1
- package/dist/ir/index.js +2 -0
- package/dist/ir/regexp.d.ts +2 -0
- package/dist/ir/regexp.d.ts.map +1 -1
- package/dist/ir/regexp.js +2 -0
- package/dist/ir/types.d.ts +94 -56
- package/dist/ir/types.d.ts.map +1 -1
- package/dist/ir/types.js +2 -0
- package/dist/ir/validate.d.ts +8 -1
- package/dist/ir/validate.d.ts.map +1 -1
- package/dist/ir/validate.js +511 -61
- package/dist/issue/index.d.ts +42 -10
- package/dist/issue/index.d.ts.map +1 -1
- package/dist/issue/index.js +65 -11
- package/dist/json-schema/emit-combinator.d.ts +44 -4
- package/dist/json-schema/emit-combinator.d.ts.map +1 -1
- package/dist/json-schema/emit-combinator.js +44 -4
- package/dist/json-schema/emit-composite.d.ts +16 -2
- package/dist/json-schema/emit-composite.d.ts.map +1 -1
- package/dist/json-schema/emit-composite.js +81 -13
- package/dist/json-schema/emit-scalar.d.ts +26 -3
- package/dist/json-schema/emit-scalar.d.ts.map +1 -1
- package/dist/json-schema/emit-scalar.js +124 -10
- package/dist/json-schema/emit-types.d.ts +11 -1
- package/dist/json-schema/emit-types.d.ts.map +1 -1
- package/dist/json-schema/emit-types.js +2 -0
- package/dist/json-schema/emit.d.ts +12 -1
- package/dist/json-schema/emit.d.ts.map +1 -1
- package/dist/json-schema/emit.js +23 -3
- package/dist/json-schema/freeze.d.ts +13 -2
- package/dist/json-schema/freeze.d.ts.map +1 -1
- package/dist/json-schema/freeze.js +41 -8
- package/dist/json-schema/index.d.ts +16 -2
- package/dist/json-schema/index.d.ts.map +1 -1
- package/dist/json-schema/index.js +23 -3
- package/dist/json-schema/issue.d.ts +4 -1
- package/dist/json-schema/issue.d.ts.map +1 -1
- package/dist/json-schema/issue.js +4 -1
- package/dist/json-schema/read.d.ts +24 -3
- package/dist/json-schema/read.d.ts.map +1 -1
- package/dist/json-schema/read.js +59 -12
- package/dist/json-schema/types.d.ts +45 -16
- package/dist/json-schema/types.d.ts.map +1 -1
- package/dist/json-schema/types.js +2 -0
- package/dist/kind/index.d.ts +40 -28
- package/dist/kind/index.d.ts.map +1 -1
- package/dist/kind/index.js +41 -13
- package/dist/lower/index.d.ts +6 -1
- package/dist/lower/index.d.ts.map +1 -1
- package/dist/lower/index.js +462 -46
- package/dist/message/index.d.ts +64 -10
- package/dist/message/index.d.ts.map +1 -1
- package/dist/message/index.js +155 -17
- package/dist/optimize/algebraic.d.ts +54 -0
- package/dist/optimize/algebraic.d.ts.map +1 -0
- package/dist/optimize/algebraic.js +314 -0
- package/dist/optimize/compact.d.ts +8 -1
- package/dist/optimize/compact.d.ts.map +1 -1
- package/dist/optimize/compact.js +13 -2
- package/dist/optimize/domain.d.ts +16 -0
- package/dist/optimize/domain.d.ts.map +1 -0
- package/dist/optimize/domain.js +619 -0
- package/dist/optimize/fold-boolean.d.ts +17 -2
- package/dist/optimize/fold-boolean.d.ts.map +1 -1
- package/dist/optimize/fold-boolean.js +59 -14
- package/dist/optimize/fold-common.d.ts +43 -8
- package/dist/optimize/fold-common.d.ts.map +1 -1
- package/dist/optimize/fold-common.js +37 -6
- package/dist/optimize/fold-constraints.d.ts +33 -0
- package/dist/optimize/fold-constraints.d.ts.map +1 -0
- package/dist/optimize/fold-constraints.js +484 -0
- package/dist/optimize/fold-scalar.d.ts +98 -13
- package/dist/optimize/fold-scalar.d.ts.map +1 -1
- package/dist/optimize/fold-scalar.js +98 -13
- package/dist/optimize/fold.d.ts +8 -1
- package/dist/optimize/fold.d.ts.map +1 -1
- package/dist/optimize/fold.js +22 -2
- package/dist/optimize/index.d.ts +9 -1
- package/dist/optimize/index.d.ts.map +1 -1
- package/dist/optimize/index.js +18 -3
- package/dist/optimize/map-node.d.ts +3 -1
- package/dist/optimize/map-node.d.ts.map +1 -1
- package/dist/optimize/map-node.js +48 -3
- package/dist/optimize/peephole.d.ts +16 -0
- package/dist/optimize/peephole.d.ts.map +1 -0
- package/dist/optimize/peephole.js +254 -0
- package/dist/optimize/remap.d.ts +2 -0
- package/dist/optimize/remap.d.ts.map +1 -1
- package/dist/optimize/remap.js +2 -0
- package/dist/optimize/rewrite.d.ts +13 -8
- package/dist/optimize/rewrite.d.ts.map +1 -1
- package/dist/optimize/rewrite.js +13 -8
- package/dist/plan/cache.d.ts +9 -3
- package/dist/plan/cache.d.ts.map +1 -1
- package/dist/plan/cache.js +34 -6
- package/dist/plan/index.d.ts +2 -0
- package/dist/plan/index.d.ts.map +1 -1
- package/dist/plan/index.js +2 -0
- package/dist/plan/predicate.d.ts +2 -0
- package/dist/plan/predicate.d.ts.map +1 -1
- package/dist/plan/predicate.js +298 -29
- package/dist/plan/schema-predicate.d.ts +6 -0
- package/dist/plan/schema-predicate.d.ts.map +1 -1
- package/dist/plan/schema-predicate.js +382 -19
- package/dist/plan/types.d.ts +2 -0
- package/dist/plan/types.d.ts.map +1 -1
- package/dist/plan/types.js +2 -0
- package/dist/result/index.d.ts +19 -5
- package/dist/result/index.d.ts.map +1 -1
- package/dist/result/index.js +10 -2
- package/dist/schema/common.d.ts +69 -6
- package/dist/schema/common.d.ts.map +1 -1
- package/dist/schema/common.js +104 -10
- package/dist/schema/freeze.d.ts +4 -0
- package/dist/schema/freeze.d.ts.map +1 -1
- package/dist/schema/freeze.js +40 -0
- package/dist/schema/index.d.ts +5 -2
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +4 -1
- package/dist/schema/lazy.d.ts +4 -0
- package/dist/schema/lazy.d.ts.map +1 -1
- package/dist/schema/lazy.js +4 -0
- package/dist/schema/literal.d.ts +7 -1
- package/dist/schema/literal.d.ts.map +1 -1
- package/dist/schema/literal.js +7 -1
- package/dist/schema/types.d.ts +109 -100
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js +13 -2
- package/dist/schema/undefined.d.ts +17 -0
- package/dist/schema/undefined.d.ts.map +1 -0
- package/dist/schema/undefined.js +77 -0
- package/dist/schema/validate.d.ts +8 -1
- package/dist/schema/validate.d.ts.map +1 -1
- package/dist/schema/validate.js +255 -57
- package/docs/api.md +128 -8
- package/docs/assets/benchmark-headline.svg +163 -0
- package/docs/engine-notes.md +62 -15
- package/docs/index.html +1340 -702
- package/docs/ko/api.md +375 -0
- package/docs/ko/engine-notes.md +156 -0
- package/docs/ko/readme.md +378 -0
- package/package.json +66 -65
package/dist/schema/types.d.ts
CHANGED
|
@@ -1,146 +1,166 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file schema/types.ts
|
|
3
3
|
* @brief Schema tags and structural TypeSea schema records.
|
|
4
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
5
|
+
* validation, compilation, or export.
|
|
4
6
|
*/
|
|
5
|
-
import { NumberCheckTag, ObjectModeTag, PresenceTag, SchemaTag, StringCheckTag } from "../kind/index.js";
|
|
6
|
-
/**
|
|
7
|
-
* @brief literal value.
|
|
8
|
-
*/
|
|
7
|
+
import { ArrayCheckTag, DateCheckTag, NumberCheckTag, ObjectModeTag, PresenceTag, SchemaTag, StringCheckTag } from "../kind/index.js";
|
|
9
8
|
export type LiteralValue = string | number | bigint | boolean | symbol | null | undefined;
|
|
10
9
|
/**
|
|
11
|
-
* @brief schema.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @brief unknown schema.
|
|
10
|
+
* @brief Frozen schema tree consumed by interpreters, IR lowering, and codegen.
|
|
11
|
+
* @details These records are deliberately data-only. Builder methods normalize
|
|
12
|
+
* unsafe inputs before they enter this representation.
|
|
16
13
|
*/
|
|
14
|
+
export type Schema = UnknownSchema | NeverSchema | StringSchema | NumberSchema | DateSchema | BigIntSchema | SymbolSchema | BooleanSchema | LiteralSchema | ArraySchema | ObjectSchema | UnionSchema | IntersectionSchema | OptionalSchema | UndefinedableSchema | NullableSchema | DiscriminatedUnionSchema | BrandSchema | TupleSchema | RecordSchema | MapSchema | SetSchema | InstanceOfSchema | PropertySchema | LazySchema | RefineSchema;
|
|
17
15
|
export interface UnknownSchema {
|
|
18
16
|
readonly tag: typeof SchemaTag.Unknown;
|
|
19
17
|
}
|
|
20
|
-
/**
|
|
21
|
-
* @brief never schema.
|
|
22
|
-
*/
|
|
23
18
|
export interface NeverSchema {
|
|
24
19
|
readonly tag: typeof SchemaTag.Never;
|
|
25
20
|
}
|
|
26
|
-
/**
|
|
27
|
-
* @brief string schema.
|
|
28
|
-
*/
|
|
29
21
|
export interface StringSchema {
|
|
30
22
|
readonly tag: typeof SchemaTag.String;
|
|
31
23
|
readonly checks: readonly StringCheck[];
|
|
32
24
|
}
|
|
33
|
-
|
|
34
|
-
* @brief string check.
|
|
35
|
-
*/
|
|
36
|
-
export type StringCheck = StringMinCheck | StringMaxCheck | StringRegexCheck | StringUuidCheck;
|
|
37
|
-
/**
|
|
38
|
-
* @brief string min check.
|
|
39
|
-
*/
|
|
25
|
+
export type StringCheck = StringMinCheck | StringMaxCheck | StringRegexCheck | StringUuidCheck | StringEmailCheck | StringUrlCheck | StringIsoDateCheck | StringIsoDateTimeCheck | StringUlidCheck | StringIpv4Check | StringIpv6Check;
|
|
40
26
|
export interface StringMinCheck {
|
|
41
27
|
readonly tag: typeof StringCheckTag.Min;
|
|
42
28
|
readonly value: number;
|
|
43
29
|
}
|
|
44
|
-
/**
|
|
45
|
-
* @brief string max check.
|
|
46
|
-
*/
|
|
47
30
|
export interface StringMaxCheck {
|
|
48
31
|
readonly tag: typeof StringCheckTag.Max;
|
|
49
32
|
readonly value: number;
|
|
50
33
|
}
|
|
51
|
-
/**
|
|
52
|
-
* @brief string regex check.
|
|
53
|
-
*/
|
|
54
34
|
export interface StringRegexCheck {
|
|
55
35
|
readonly tag: typeof StringCheckTag.Regex;
|
|
56
36
|
readonly regex: RegExp;
|
|
57
37
|
readonly name: string;
|
|
58
38
|
}
|
|
59
|
-
/**
|
|
60
|
-
* @brief string uuid check.
|
|
61
|
-
*/
|
|
62
39
|
export interface StringUuidCheck {
|
|
63
40
|
readonly tag: typeof StringCheckTag.Uuid;
|
|
64
41
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
42
|
+
export interface StringEmailCheck {
|
|
43
|
+
readonly tag: typeof StringCheckTag.Email;
|
|
44
|
+
}
|
|
45
|
+
export interface StringUrlCheck {
|
|
46
|
+
readonly tag: typeof StringCheckTag.Url;
|
|
47
|
+
}
|
|
48
|
+
export interface StringIsoDateCheck {
|
|
49
|
+
readonly tag: typeof StringCheckTag.IsoDate;
|
|
50
|
+
}
|
|
51
|
+
export interface StringIsoDateTimeCheck {
|
|
52
|
+
readonly tag: typeof StringCheckTag.IsoDateTime;
|
|
53
|
+
}
|
|
54
|
+
export interface StringUlidCheck {
|
|
55
|
+
readonly tag: typeof StringCheckTag.Ulid;
|
|
56
|
+
}
|
|
57
|
+
export interface StringIpv4Check {
|
|
58
|
+
readonly tag: typeof StringCheckTag.Ipv4;
|
|
59
|
+
}
|
|
60
|
+
export interface StringIpv6Check {
|
|
61
|
+
readonly tag: typeof StringCheckTag.Ipv6;
|
|
62
|
+
}
|
|
68
63
|
export interface NumberSchema {
|
|
69
64
|
readonly tag: typeof SchemaTag.Number;
|
|
70
65
|
readonly checks: readonly NumberCheck[];
|
|
71
66
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
67
|
+
export interface DateSchema {
|
|
68
|
+
readonly tag: typeof SchemaTag.Date;
|
|
69
|
+
readonly checks: readonly DateCheck[];
|
|
70
|
+
}
|
|
71
|
+
export type DateCheck = DateMinCheck | DateMaxCheck;
|
|
72
|
+
export interface DateMinCheck {
|
|
73
|
+
readonly tag: typeof DateCheckTag.Min;
|
|
74
|
+
readonly value: number;
|
|
75
|
+
}
|
|
76
|
+
export interface DateMaxCheck {
|
|
77
|
+
readonly tag: typeof DateCheckTag.Max;
|
|
78
|
+
readonly value: number;
|
|
79
|
+
}
|
|
75
80
|
export interface BigIntSchema {
|
|
76
81
|
readonly tag: typeof SchemaTag.BigInt;
|
|
77
82
|
}
|
|
78
|
-
/**
|
|
79
|
-
* @brief symbol schema.
|
|
80
|
-
*/
|
|
81
83
|
export interface SymbolSchema {
|
|
82
84
|
readonly tag: typeof SchemaTag.Symbol;
|
|
83
85
|
}
|
|
84
|
-
|
|
85
|
-
* @brief number check.
|
|
86
|
-
*/
|
|
87
|
-
export type NumberCheck = NumberIntegerCheck | NumberGteCheck | NumberLteCheck;
|
|
88
|
-
/**
|
|
89
|
-
* @brief number integer check.
|
|
90
|
-
*/
|
|
86
|
+
export type NumberCheck = NumberIntegerCheck | NumberGteCheck | NumberLteCheck | NumberGtCheck | NumberLtCheck | NumberMultipleOfCheck;
|
|
91
87
|
export interface NumberIntegerCheck {
|
|
92
88
|
readonly tag: typeof NumberCheckTag.Integer;
|
|
93
89
|
}
|
|
94
|
-
/**
|
|
95
|
-
* @brief number gte check.
|
|
96
|
-
*/
|
|
97
90
|
export interface NumberGteCheck {
|
|
98
91
|
readonly tag: typeof NumberCheckTag.Gte;
|
|
99
92
|
readonly value: number;
|
|
100
93
|
}
|
|
101
|
-
/**
|
|
102
|
-
* @brief number lte check.
|
|
103
|
-
*/
|
|
104
94
|
export interface NumberLteCheck {
|
|
105
95
|
readonly tag: typeof NumberCheckTag.Lte;
|
|
106
96
|
readonly value: number;
|
|
107
97
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
98
|
+
export interface NumberGtCheck {
|
|
99
|
+
readonly tag: typeof NumberCheckTag.Gt;
|
|
100
|
+
readonly value: number;
|
|
101
|
+
}
|
|
102
|
+
export interface NumberLtCheck {
|
|
103
|
+
readonly tag: typeof NumberCheckTag.Lt;
|
|
104
|
+
readonly value: number;
|
|
105
|
+
}
|
|
106
|
+
export interface NumberMultipleOfCheck {
|
|
107
|
+
readonly tag: typeof NumberCheckTag.MultipleOf;
|
|
108
|
+
readonly value: number;
|
|
109
|
+
}
|
|
111
110
|
export interface BooleanSchema {
|
|
112
111
|
readonly tag: typeof SchemaTag.Boolean;
|
|
113
112
|
}
|
|
114
|
-
/**
|
|
115
|
-
* @brief literal schema.
|
|
116
|
-
*/
|
|
117
113
|
export interface LiteralSchema {
|
|
118
114
|
readonly tag: typeof SchemaTag.Literal;
|
|
119
115
|
readonly value: LiteralValue;
|
|
120
116
|
}
|
|
121
|
-
/**
|
|
122
|
-
* @brief array schema.
|
|
123
|
-
*/
|
|
124
117
|
export interface ArraySchema {
|
|
125
118
|
readonly tag: typeof SchemaTag.Array;
|
|
126
119
|
readonly item: Schema;
|
|
120
|
+
readonly checks: readonly ArrayCheck[];
|
|
121
|
+
}
|
|
122
|
+
export type ArrayCheck = ArrayMinCheck | ArrayMaxCheck;
|
|
123
|
+
export interface ArrayMinCheck {
|
|
124
|
+
readonly tag: typeof ArrayCheckTag.Min;
|
|
125
|
+
readonly value: number;
|
|
126
|
+
}
|
|
127
|
+
export interface ArrayMaxCheck {
|
|
128
|
+
readonly tag: typeof ArrayCheckTag.Max;
|
|
129
|
+
readonly value: number;
|
|
127
130
|
}
|
|
128
|
-
/**
|
|
129
|
-
* @brief tuple schema.
|
|
130
|
-
*/
|
|
131
131
|
export interface TupleSchema {
|
|
132
132
|
readonly tag: typeof SchemaTag.Tuple;
|
|
133
133
|
readonly items: readonly Schema[];
|
|
134
|
+
readonly rest: Schema | undefined;
|
|
134
135
|
}
|
|
135
|
-
/**
|
|
136
|
-
* @brief record schema.
|
|
137
|
-
*/
|
|
138
136
|
export interface RecordSchema {
|
|
139
137
|
readonly tag: typeof SchemaTag.Record;
|
|
140
138
|
readonly value: Schema;
|
|
141
139
|
}
|
|
140
|
+
export interface MapSchema {
|
|
141
|
+
readonly tag: typeof SchemaTag.Map;
|
|
142
|
+
readonly key: Schema;
|
|
143
|
+
readonly value: Schema;
|
|
144
|
+
}
|
|
145
|
+
export interface SetSchema {
|
|
146
|
+
readonly tag: typeof SchemaTag.Set;
|
|
147
|
+
readonly item: Schema;
|
|
148
|
+
}
|
|
149
|
+
export interface InstanceOfSchema {
|
|
150
|
+
readonly tag: typeof SchemaTag.InstanceOf;
|
|
151
|
+
readonly constructor: abstract new (...args: never[]) => unknown;
|
|
152
|
+
readonly name: string;
|
|
153
|
+
}
|
|
154
|
+
export interface PropertySchema {
|
|
155
|
+
readonly tag: typeof SchemaTag.Property;
|
|
156
|
+
readonly base: Schema;
|
|
157
|
+
readonly key: string;
|
|
158
|
+
readonly value: Schema;
|
|
159
|
+
}
|
|
142
160
|
/**
|
|
143
|
-
* @brief
|
|
161
|
+
* @brief Object schema with both ordered entries and an O(1) key lookup.
|
|
162
|
+
* @details Codegen uses entries for stable field order and keyLookup for strict
|
|
163
|
+
* unknown-key checks.
|
|
144
164
|
*/
|
|
145
165
|
export interface ObjectSchema {
|
|
146
166
|
readonly tag: typeof SchemaTag.Object;
|
|
@@ -148,87 +168,67 @@ export interface ObjectSchema {
|
|
|
148
168
|
readonly keys: readonly string[];
|
|
149
169
|
readonly keyLookup: ObjectKeyLookup;
|
|
150
170
|
readonly mode: ObjectModeTag;
|
|
171
|
+
readonly catchall: Schema | undefined;
|
|
151
172
|
}
|
|
152
|
-
/**
|
|
153
|
-
* @brief object key lookup.
|
|
154
|
-
*/
|
|
155
173
|
export type ObjectKeyLookup = Readonly<Record<string, true>>;
|
|
156
|
-
/**
|
|
157
|
-
* @brief object entry.
|
|
158
|
-
*/
|
|
159
174
|
export interface ObjectEntry {
|
|
160
175
|
readonly key: string;
|
|
161
176
|
readonly schema: Schema;
|
|
162
177
|
readonly presence: PresenceTag;
|
|
163
178
|
}
|
|
164
|
-
/**
|
|
165
|
-
* @brief union schema.
|
|
166
|
-
*/
|
|
167
179
|
export interface UnionSchema {
|
|
168
180
|
readonly tag: typeof SchemaTag.Union;
|
|
169
181
|
readonly options: readonly Schema[];
|
|
170
182
|
}
|
|
171
|
-
/**
|
|
172
|
-
* @brief intersection schema.
|
|
173
|
-
*/
|
|
174
183
|
export interface IntersectionSchema {
|
|
175
184
|
readonly tag: typeof SchemaTag.Intersection;
|
|
176
185
|
readonly left: Schema;
|
|
177
186
|
readonly right: Schema;
|
|
178
187
|
}
|
|
179
|
-
/**
|
|
180
|
-
* @brief optional schema.
|
|
181
|
-
*/
|
|
182
188
|
export interface OptionalSchema {
|
|
183
189
|
readonly tag: typeof SchemaTag.Optional;
|
|
184
190
|
readonly inner: Schema;
|
|
185
191
|
}
|
|
186
|
-
/**
|
|
187
|
-
* @brief undefinedable schema.
|
|
188
|
-
*/
|
|
189
192
|
export interface UndefinedableSchema {
|
|
190
193
|
readonly tag: typeof SchemaTag.Undefinedable;
|
|
191
194
|
readonly inner: Schema;
|
|
192
195
|
}
|
|
193
|
-
/**
|
|
194
|
-
* @brief nullable schema.
|
|
195
|
-
*/
|
|
196
196
|
export interface NullableSchema {
|
|
197
197
|
readonly tag: typeof SchemaTag.Nullable;
|
|
198
198
|
readonly inner: Schema;
|
|
199
199
|
}
|
|
200
200
|
/**
|
|
201
|
-
* @brief
|
|
201
|
+
* @brief Tagged union schema whose cases share one discriminant key.
|
|
202
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
203
|
+
* validation, compilation, or export.
|
|
202
204
|
*/
|
|
203
205
|
export interface DiscriminatedUnionSchema {
|
|
204
206
|
readonly tag: typeof SchemaTag.DiscriminatedUnion;
|
|
205
207
|
readonly key: string;
|
|
206
208
|
readonly cases: readonly DiscriminatedUnionCase[];
|
|
207
209
|
}
|
|
208
|
-
/**
|
|
209
|
-
* @brief discriminated union case.
|
|
210
|
-
*/
|
|
211
210
|
export interface DiscriminatedUnionCase {
|
|
212
211
|
readonly literal: string;
|
|
213
212
|
readonly schema: Schema;
|
|
214
213
|
}
|
|
215
|
-
/**
|
|
216
|
-
* @brief brand schema.
|
|
217
|
-
*/
|
|
218
214
|
export interface BrandSchema {
|
|
219
215
|
readonly tag: typeof SchemaTag.Brand;
|
|
220
216
|
readonly inner: Schema;
|
|
221
217
|
readonly brand: string;
|
|
222
218
|
}
|
|
223
219
|
/**
|
|
224
|
-
* @brief
|
|
220
|
+
* @brief Lazy schema thunk for recursive shapes.
|
|
221
|
+
* @details Builders cache resolved schemas before validation so recursion does
|
|
222
|
+
* not allocate a fresh schema tree per input node.
|
|
225
223
|
*/
|
|
226
224
|
export interface LazySchema {
|
|
227
225
|
readonly tag: typeof SchemaTag.Lazy;
|
|
228
226
|
readonly get: () => Schema;
|
|
229
227
|
}
|
|
230
228
|
/**
|
|
231
|
-
* @brief
|
|
229
|
+
* @brief User predicate fallback.
|
|
230
|
+
* @details Refinements are intentionally opaque to IR optimization; codegen can
|
|
231
|
+
* only call the predicate after the inner schema succeeds.
|
|
232
232
|
*/
|
|
233
233
|
export interface RefineSchema {
|
|
234
234
|
readonly tag: typeof SchemaTag.Refine;
|
|
@@ -237,7 +237,16 @@ export interface RefineSchema {
|
|
|
237
237
|
readonly name: string;
|
|
238
238
|
}
|
|
239
239
|
/**
|
|
240
|
-
* @brief
|
|
240
|
+
* @brief UUID pattern shared by interpreter and generated validators.
|
|
241
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
242
|
+
* validation, compilation, or export.
|
|
241
243
|
*/
|
|
242
244
|
export declare const UUID_PATTERN: RegExp;
|
|
245
|
+
export declare const EMAIL_PATTERN: RegExp;
|
|
246
|
+
export declare const URL_PATTERN: RegExp;
|
|
247
|
+
export declare const ISO_DATE_PATTERN: RegExp;
|
|
248
|
+
export declare const ISO_DATETIME_PATTERN: RegExp;
|
|
249
|
+
export declare const ULID_PATTERN: RegExp;
|
|
250
|
+
export declare const IPV4_PATTERN: RegExp;
|
|
251
|
+
export declare const IPV6_PATTERN: RegExp;
|
|
243
252
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/types.js
CHANGED
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file schema/types.ts
|
|
3
3
|
* @brief Schema tags and structural TypeSea schema records.
|
|
4
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
5
|
+
* validation, compilation, or export.
|
|
4
6
|
*/
|
|
5
|
-
import { NumberCheckTag, ObjectModeTag, PresenceTag, SchemaTag, StringCheckTag } from "../kind/index.js";
|
|
7
|
+
import { ArrayCheckTag, DateCheckTag, NumberCheckTag, ObjectModeTag, PresenceTag, SchemaTag, StringCheckTag } from "../kind/index.js";
|
|
6
8
|
/**
|
|
7
|
-
* @brief
|
|
9
|
+
* @brief UUID pattern shared by interpreter and generated validators.
|
|
10
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
11
|
+
* validation, compilation, or export.
|
|
8
12
|
*/
|
|
9
13
|
export const UUID_PATTERN = /^(?:00000000-0000-0000-0000-000000000000|[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})$/iu;
|
|
14
|
+
export const EMAIL_PATTERN = /^(?!\.)(?!.*\.\.)[A-Z0-9!#$%&'*+/=?^_`{|}~.-]+@[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?(?:\.[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?)+$/iu;
|
|
15
|
+
export const URL_PATTERN = /^[A-Z][A-Z0-9+.-]*:[^\s]+$/iu;
|
|
16
|
+
export const ISO_DATE_PATTERN = /^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/u;
|
|
17
|
+
export const ISO_DATETIME_PATTERN = /^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|[+-](?:[01]\d|2[0-3]):?[0-5]\d)$/u;
|
|
18
|
+
export const ULID_PATTERN = /^[0-7][0-9A-HJKMNP-TV-Z]{25}$/iu;
|
|
19
|
+
export const IPV4_PATTERN = /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/u;
|
|
20
|
+
export const IPV6_PATTERN = /^(?:(?:[0-9a-f]{1,4}:){7}[0-9a-f]{1,4}|(?:[0-9a-f]{1,4}:){1,7}:|(?:[0-9a-f]{1,4}:){1,6}:[0-9a-f]{1,4}|(?:[0-9a-f]{1,4}:){1,5}(?::[0-9a-f]{1,4}){1,2}|(?:[0-9a-f]{1,4}:){1,4}(?::[0-9a-f]{1,4}){1,3}|(?:[0-9a-f]{1,4}:){1,3}(?::[0-9a-f]{1,4}){1,4}|(?:[0-9a-f]{1,4}:){1,2}(?::[0-9a-f]{1,4}){1,5}|[0-9a-f]{1,4}:(?:(?::[0-9a-f]{1,4}){1,6})|:(?:(?::[0-9a-f]{1,4}){1,7}|:))$/iu;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file undefined.ts
|
|
3
|
+
* @brief Conservative undefined-acceptance analysis for schema slots.
|
|
4
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
5
|
+
* validation, compilation, or export.
|
|
6
|
+
*/
|
|
7
|
+
import type { Schema } from "./types.js";
|
|
8
|
+
/**
|
|
9
|
+
* @brief Return whether `undefined` may satisfy a schema.
|
|
10
|
+
* @details This is intentionally conservative for lazy and refine schemas because
|
|
11
|
+
* the caller may not have a recursion state or a safe way to run user predicates.
|
|
12
|
+
* @param schema Schema node whose static acceptance set is inspected.
|
|
13
|
+
* @returns True when an absent array slot can be treated as already accepted.
|
|
14
|
+
* @invariant This routine never executes user predicates or lazy factories.
|
|
15
|
+
*/
|
|
16
|
+
export declare function schemaCanAcceptUndefined(schema: Schema): boolean;
|
|
17
|
+
//# sourceMappingURL=undefined.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"undefined.d.ts","sourceRoot":"","sources":["../../src/schema/undefined.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CA6ChE"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file undefined.ts
|
|
3
|
+
* @brief Conservative undefined-acceptance analysis for schema slots.
|
|
4
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
5
|
+
* validation, compilation, or export.
|
|
6
|
+
*/
|
|
7
|
+
import { SchemaTag } from "../kind/index.js";
|
|
8
|
+
/**
|
|
9
|
+
* @brief Return whether `undefined` may satisfy a schema.
|
|
10
|
+
* @details This is intentionally conservative for lazy and refine schemas because
|
|
11
|
+
* the caller may not have a recursion state or a safe way to run user predicates.
|
|
12
|
+
* @param schema Schema node whose static acceptance set is inspected.
|
|
13
|
+
* @returns True when an absent array slot can be treated as already accepted.
|
|
14
|
+
* @invariant This routine never executes user predicates or lazy factories.
|
|
15
|
+
*/
|
|
16
|
+
export function schemaCanAcceptUndefined(schema) {
|
|
17
|
+
switch (schema.tag) {
|
|
18
|
+
case SchemaTag.Unknown:
|
|
19
|
+
case SchemaTag.Optional:
|
|
20
|
+
case SchemaTag.Undefinedable:
|
|
21
|
+
return true;
|
|
22
|
+
case SchemaTag.Lazy:
|
|
23
|
+
case SchemaTag.Refine:
|
|
24
|
+
/*
|
|
25
|
+
* Opaque child logic may reject undefined. A sparse hole must flow
|
|
26
|
+
* through the child validator instead of being skipped up front.
|
|
27
|
+
*/
|
|
28
|
+
return false;
|
|
29
|
+
case SchemaTag.Literal:
|
|
30
|
+
return schema.value === undefined;
|
|
31
|
+
case SchemaTag.Union:
|
|
32
|
+
return schemaArrayCanAcceptUndefined(schema.options);
|
|
33
|
+
case SchemaTag.Intersection:
|
|
34
|
+
/*
|
|
35
|
+
* Intersections require both branches to accept the same value. If
|
|
36
|
+
* either branch rejects undefined, a sparse hole must stay visible.
|
|
37
|
+
*/
|
|
38
|
+
return schemaCanAcceptUndefined(schema.left) &&
|
|
39
|
+
schemaCanAcceptUndefined(schema.right);
|
|
40
|
+
case SchemaTag.Nullable:
|
|
41
|
+
case SchemaTag.Brand:
|
|
42
|
+
return schemaCanAcceptUndefined(schema.inner);
|
|
43
|
+
case SchemaTag.Never:
|
|
44
|
+
case SchemaTag.String:
|
|
45
|
+
case SchemaTag.Number:
|
|
46
|
+
case SchemaTag.Date:
|
|
47
|
+
case SchemaTag.BigInt:
|
|
48
|
+
case SchemaTag.Symbol:
|
|
49
|
+
case SchemaTag.Boolean:
|
|
50
|
+
case SchemaTag.Array:
|
|
51
|
+
case SchemaTag.Map:
|
|
52
|
+
case SchemaTag.Set:
|
|
53
|
+
case SchemaTag.InstanceOf:
|
|
54
|
+
case SchemaTag.Property:
|
|
55
|
+
case SchemaTag.Object:
|
|
56
|
+
case SchemaTag.DiscriminatedUnion:
|
|
57
|
+
case SchemaTag.Tuple:
|
|
58
|
+
case SchemaTag.Record:
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* @brief Return whether at least one schema in a closed array may accept undefined.
|
|
64
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
65
|
+
* validation, compilation, or export.
|
|
66
|
+
* @param schemas Closed schema list owned by a union-like node.
|
|
67
|
+
* @returns True when one member admits undefined without evaluating input data.
|
|
68
|
+
*/
|
|
69
|
+
function schemaArrayCanAcceptUndefined(schemas) {
|
|
70
|
+
for (let index = 0; index < schemas.length; index += 1) {
|
|
71
|
+
const schema = schemas[index];
|
|
72
|
+
if (schema !== undefined && schemaCanAcceptUndefined(schema)) {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file schema/validate.ts
|
|
3
3
|
* @brief Runtime validators for direct schema objects.
|
|
4
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
5
|
+
* validation, compilation, or export.
|
|
4
6
|
*/
|
|
5
7
|
import type { Schema } from "./types.js";
|
|
6
8
|
/**
|
|
7
|
-
* @brief
|
|
9
|
+
* @brief Validate an unknown value as a TypeSea schema tree.
|
|
10
|
+
* @param value Candidate schema object from a public boundary.
|
|
11
|
+
* @returns True when the complete tree satisfies the internal schema layout.
|
|
12
|
+
* @details This routine is intentionally stricter than normal JavaScript object
|
|
13
|
+
* access: every record and vector must be data-only so later consumers can read
|
|
14
|
+
* fields without invoking user code.
|
|
8
15
|
*/
|
|
9
16
|
export declare function isSchemaValue(value: unknown): value is Schema;
|
|
10
17
|
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/schema/validate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/schema/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH,OAAO,KAAK,EAIR,MAAM,EAET,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAK7D"}
|