typesea 0.1.0 → 0.2.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 +67 -6
- package/README.md +98 -17
- 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 +18 -2
- package/dist/aot/index.d.ts.map +1 -1
- package/dist/aot/index.js +93 -14
- 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 +37 -6
- package/dist/builders/composite.d.ts.map +1 -1
- package/dist/builders/composite.js +84 -10
- package/dist/builders/index.d.ts +2 -0
- package/dist/builders/index.d.ts.map +1 -1
- package/dist/builders/index.js +2 -0
- package/dist/builders/modifier.d.ts +30 -5
- package/dist/builders/modifier.d.ts.map +1 -1
- package/dist/builders/modifier.js +38 -5
- package/dist/builders/object/guard.d.ts +18 -22
- package/dist/builders/object/guard.d.ts.map +1 -1
- package/dist/builders/object/guard.js +26 -26
- package/dist/builders/object/index.d.ts +2 -0
- package/dist/builders/object/index.d.ts.map +1 -1
- package/dist/builders/object/index.js +2 -0
- package/dist/builders/object/schema.d.ts +55 -9
- package/dist/builders/object/schema.d.ts.map +1 -1
- package/dist/builders/object/schema.js +92 -15
- package/dist/builders/object/types.d.ts +5 -31
- package/dist/builders/object/types.d.ts.map +1 -1
- package/dist/builders/object/types.js +2 -0
- package/dist/builders/scalar.d.ts +29 -8
- package/dist/builders/scalar.d.ts.map +1 -1
- package/dist/builders/scalar.js +33 -8
- package/dist/builders/table.d.ts +4 -0
- package/dist/builders/table.d.ts.map +1 -1
- package/dist/builders/table.js +4 -0
- package/dist/builders/types.d.ts +14 -4
- package/dist/builders/types.d.ts.map +1 -1
- package/dist/builders/types.js +2 -0
- package/dist/compile/check-composite.d.ts +22 -1
- package/dist/compile/check-composite.d.ts.map +1 -1
- package/dist/compile/check-composite.js +564 -24
- package/dist/compile/check-scalar.d.ts +78 -0
- package/dist/compile/check-scalar.d.ts.map +1 -1
- package/dist/compile/check-scalar.js +432 -1
- package/dist/compile/check.d.ts +12 -0
- package/dist/compile/check.d.ts.map +1 -1
- package/dist/compile/check.js +37 -0
- package/dist/compile/context.d.ts +47 -9
- package/dist/compile/context.d.ts.map +1 -1
- package/dist/compile/context.js +51 -8
- 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 +1907 -171
- package/dist/compile/guard.d.ts +15 -24
- package/dist/compile/guard.d.ts.map +1 -1
- package/dist/compile/guard.js +158 -74
- 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 +131 -5
- package/dist/compile/runtime.d.ts +80 -12
- package/dist/compile/runtime.d.ts.map +1 -1
- package/dist/compile/runtime.js +25 -6
- package/dist/compile/source.d.ts +10 -2
- package/dist/compile/source.d.ts.map +1 -1
- package/dist/compile/source.js +361 -26
- package/dist/compile/types.d.ts +20 -0
- package/dist/compile/types.d.ts.map +1 -1
- package/dist/compile/types.js +2 -0
- package/dist/decoder/index.d.ts +32 -46
- package/dist/decoder/index.d.ts.map +1 -1
- package/dist/decoder/index.js +102 -38
- package/dist/evaluate/check-composite.d.ts +59 -0
- package/dist/evaluate/check-composite.d.ts.map +1 -1
- package/dist/evaluate/check-composite.js +151 -3
- package/dist/evaluate/check-scalar.d.ts +16 -0
- package/dist/evaluate/check-scalar.d.ts.map +1 -1
- package/dist/evaluate/check-scalar.js +32 -0
- package/dist/evaluate/check.d.ts +7 -0
- package/dist/evaluate/check.d.ts.map +1 -1
- package/dist/evaluate/check.js +43 -0
- 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 +59 -13
- package/dist/evaluate/shared.d.ts.map +1 -1
- package/dist/evaluate/shared.js +66 -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/base.d.ts +79 -29
- package/dist/guard/base.d.ts.map +1 -1
- package/dist/guard/base.js +91 -29
- 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 +2 -0
- package/dist/guard/index.d.ts.map +1 -1
- package/dist/guard/index.js +2 -0
- package/dist/guard/number.d.ts +26 -11
- package/dist/guard/number.d.ts.map +1 -1
- package/dist/guard/number.js +30 -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 +62 -9
- package/dist/guard/read.d.ts.map +1 -1
- package/dist/guard/read.js +83 -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 +33 -13
- package/dist/guard/string.d.ts.map +1 -1
- package/dist/guard/string.js +37 -13
- package/dist/guard/types.d.ts +92 -40
- package/dist/guard/types.d.ts.map +1 -1
- package/dist/guard/types.js +2 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- 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 +16 -126
- package/dist/ir/builder.d.ts.map +1 -1
- package/dist/ir/builder.js +77 -137
- package/dist/ir/freeze.d.ts +4 -0
- package/dist/ir/freeze.d.ts.map +1 -1
- package/dist/ir/freeze.js +59 -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 +90 -55
- 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 +477 -61
- package/dist/issue/index.d.ts +41 -9
- package/dist/issue/index.d.ts.map +1 -1
- package/dist/issue/index.js +61 -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 +10 -0
- package/dist/json-schema/emit-composite.d.ts.map +1 -1
- package/dist/json-schema/emit-composite.js +15 -1
- 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 +70 -9
- 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 +12 -1
- 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 +38 -15
- package/dist/json-schema/types.d.ts.map +1 -1
- package/dist/json-schema/types.js +2 -0
- package/dist/kind/index.d.ts +15 -28
- package/dist/kind/index.d.ts.map +1 -1
- package/dist/kind/index.js +15 -10
- package/dist/lower/index.d.ts +6 -1
- package/dist/lower/index.d.ts.map +1 -1
- package/dist/lower/index.js +411 -44
- package/dist/message/index.d.ts +46 -10
- package/dist/message/index.d.ts.map +1 -1
- package/dist/message/index.js +88 -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 +615 -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 +45 -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 +21 -5
- 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 +268 -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 +117 -13
- 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 +18 -0
- package/dist/schema/index.d.ts +3 -0
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +3 -0
- 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 +20 -96
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js +5 -1
- package/dist/schema/undefined.d.ts +17 -0
- package/dist/schema/undefined.d.ts.map +1 -0
- package/dist/schema/undefined.js +72 -0
- package/dist/schema/validate.d.ts +8 -1
- package/dist/schema/validate.d.ts.map +1 -1
- package/dist/schema/validate.js +146 -55
- package/docs/api.md +57 -0
- package/docs/assets/benchmark-headline.svg +163 -0
- package/docs/engine-notes.md +58 -15
- package/docs/index.html +130 -110
- package/package.json +65 -65
package/dist/schema/freeze.js
CHANGED
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file schema/freeze.ts
|
|
3
3
|
* @brief Schema freezing and collection hardening.
|
|
4
|
+
* @details Freezing hardens builder output before execution engines or exporters rely on
|
|
5
|
+
* schema identity and shape stability.
|
|
4
6
|
*/
|
|
5
7
|
import { SchemaTag, StringCheckTag } from "../kind/index.js";
|
|
6
8
|
import { isPlainRegExp } from "./common.js";
|
|
7
9
|
/**
|
|
8
10
|
* @brief freeze schema.
|
|
11
|
+
* @details Freezing hardens builder output before execution engines or exporters rely on
|
|
12
|
+
* schema identity and shape stability.
|
|
9
13
|
*/
|
|
10
14
|
export function freezeSchema(schema) {
|
|
11
15
|
return freezeSchemaInner(schema, new WeakSet());
|
|
12
16
|
}
|
|
13
17
|
/**
|
|
14
18
|
* @brief freeze schema inner.
|
|
19
|
+
* @details Freezing hardens builder output before execution engines or exporters rely on
|
|
20
|
+
* schema identity and shape stability.
|
|
15
21
|
*/
|
|
16
22
|
function freezeSchemaInner(schema, frozen) {
|
|
17
23
|
if (frozen.has(schema)) {
|
|
@@ -72,6 +78,8 @@ function freezeSchemaInner(schema, frozen) {
|
|
|
72
78
|
}
|
|
73
79
|
/**
|
|
74
80
|
* @brief freeze array.
|
|
81
|
+
* @details Freezing hardens builder output before execution engines or exporters rely on
|
|
82
|
+
* schema identity and shape stability.
|
|
75
83
|
*/
|
|
76
84
|
function freezeArray(values, frozen) {
|
|
77
85
|
for (let index = 0; index < values.length; index += 1) {
|
|
@@ -85,6 +93,8 @@ function freezeArray(values, frozen) {
|
|
|
85
93
|
}
|
|
86
94
|
/**
|
|
87
95
|
* @brief freeze string checks.
|
|
96
|
+
* @details Freezing hardens builder output before execution engines or exporters rely on
|
|
97
|
+
* schema identity and shape stability.
|
|
88
98
|
*/
|
|
89
99
|
function freezeStringChecks(values, frozen) {
|
|
90
100
|
for (let index = 0; index < values.length; index += 1) {
|
|
@@ -102,6 +112,8 @@ function freezeStringChecks(values, frozen) {
|
|
|
102
112
|
}
|
|
103
113
|
/**
|
|
104
114
|
* @brief freeze regex check.
|
|
115
|
+
* @details Freezing hardens builder output before execution engines or exporters rely on
|
|
116
|
+
* schema identity and shape stability.
|
|
105
117
|
*/
|
|
106
118
|
function freezeRegexCheck(check) {
|
|
107
119
|
const regex = check.regex;
|
|
@@ -125,6 +137,8 @@ function freezeRegexCheck(check) {
|
|
|
125
137
|
}
|
|
126
138
|
/**
|
|
127
139
|
* @brief freeze schema array.
|
|
140
|
+
* @details Freezing hardens builder output before execution engines or exporters rely on
|
|
141
|
+
* schema identity and shape stability.
|
|
128
142
|
*/
|
|
129
143
|
function freezeSchemaArray(values, frozen) {
|
|
130
144
|
for (let index = 0; index < values.length; index += 1) {
|
|
@@ -137,6 +151,8 @@ function freezeSchemaArray(values, frozen) {
|
|
|
137
151
|
}
|
|
138
152
|
/**
|
|
139
153
|
* @brief freeze object entries.
|
|
154
|
+
* @details Freezing hardens builder output before execution engines or exporters rely on
|
|
155
|
+
* schema identity and shape stability.
|
|
140
156
|
*/
|
|
141
157
|
function freezeObjectEntries(entries, frozen) {
|
|
142
158
|
for (let index = 0; index < entries.length; index += 1) {
|
|
@@ -150,6 +166,8 @@ function freezeObjectEntries(entries, frozen) {
|
|
|
150
166
|
}
|
|
151
167
|
/**
|
|
152
168
|
* @brief freeze discriminated union cases.
|
|
169
|
+
* @details Freezing hardens builder output before execution engines or exporters rely on
|
|
170
|
+
* schema identity and shape stability.
|
|
153
171
|
*/
|
|
154
172
|
function freezeDiscriminatedUnionCases(cases, frozen) {
|
|
155
173
|
for (let index = 0; index < cases.length; index += 1) {
|
package/dist/schema/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file schema/index.ts
|
|
3
3
|
* @brief Schema module aggregate.
|
|
4
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
5
|
+
* validation, compilation, or export.
|
|
4
6
|
*/
|
|
5
7
|
export type { ArraySchema, BigIntSchema, BooleanSchema, BrandSchema, DiscriminatedUnionCase, DiscriminatedUnionSchema, IntersectionSchema, LazySchema, LiteralSchema, LiteralValue, NeverSchema, NullableSchema, NumberCheck, NumberGteCheck, NumberIntegerCheck, NumberLteCheck, NumberSchema, ObjectEntry, ObjectKeyLookup, ObjectSchema, OptionalSchema, RecordSchema, RefineSchema, Schema, StringCheck, StringMaxCheck, StringMinCheck, StringRegexCheck, StringSchema, StringUuidCheck, SymbolSchema, TupleSchema, UndefinedableSchema, UnionSchema, UnknownSchema } from "./types.js";
|
|
6
8
|
export { UUID_PATTERN } from "./types.js";
|
|
@@ -8,4 +10,5 @@ export { isLiteralValue } from "./literal.js";
|
|
|
8
10
|
export { isSchemaValue } from "./validate.js";
|
|
9
11
|
export { freezeSchema } from "./freeze.js";
|
|
10
12
|
export { resolveLazySchema } from "./lazy.js";
|
|
13
|
+
export { schemaCanAcceptUndefined } from "./undefined.js";
|
|
11
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACR,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAAc,EACd,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,eAAe,EACf,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,WAAW,EACX,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,aAAa,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/schema/index.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file schema/index.ts
|
|
3
3
|
* @brief Schema module aggregate.
|
|
4
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
5
|
+
* validation, compilation, or export.
|
|
4
6
|
*/
|
|
5
7
|
export { UUID_PATTERN } from "./types.js";
|
|
6
8
|
export { isLiteralValue } from "./literal.js";
|
|
7
9
|
export { isSchemaValue } from "./validate.js";
|
|
8
10
|
export { freezeSchema } from "./freeze.js";
|
|
9
11
|
export { resolveLazySchema } from "./lazy.js";
|
|
12
|
+
export { schemaCanAcceptUndefined } from "./undefined.js";
|
package/dist/schema/lazy.d.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file schema/lazy.ts
|
|
3
3
|
* @brief Lazy schema resolution.
|
|
4
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
5
|
+
* validation, compilation, or export.
|
|
4
6
|
*/
|
|
5
7
|
import type { LazySchema, Schema } from "./types.js";
|
|
6
8
|
/**
|
|
7
9
|
* @brief resolve lazy schema.
|
|
10
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
11
|
+
* validation, compilation, or export.
|
|
8
12
|
*/
|
|
9
13
|
export declare function resolveLazySchema(schema: LazySchema, resolving: WeakSet<object>): Schema;
|
|
10
14
|
//# sourceMappingURL=lazy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/schema/lazy.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/schema/lazy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,GAC3B,MAAM,CAcR"}
|
package/dist/schema/lazy.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file schema/lazy.ts
|
|
3
3
|
* @brief Lazy schema resolution.
|
|
4
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
5
|
+
* validation, compilation, or export.
|
|
4
6
|
*/
|
|
5
7
|
import { SchemaTag } from "../kind/index.js";
|
|
6
8
|
import { freezeSchema } from "./freeze.js";
|
|
7
9
|
import { isSchemaValue } from "./validate.js";
|
|
8
10
|
/**
|
|
9
11
|
* @brief resolve lazy schema.
|
|
12
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
13
|
+
* validation, compilation, or export.
|
|
10
14
|
*/
|
|
11
15
|
export function resolveLazySchema(schema, resolving) {
|
|
12
16
|
if (resolving.has(schema)) {
|
package/dist/schema/literal.d.ts
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file schema/literal.ts
|
|
3
3
|
* @brief Literal-value boundary checks.
|
|
4
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
5
|
+
* validation, compilation, or export.
|
|
4
6
|
*/
|
|
5
7
|
import type { LiteralValue } from "./types.js";
|
|
6
8
|
/**
|
|
7
|
-
* @brief
|
|
9
|
+
* @brief Validate values that TypeSea can store as exact literals.
|
|
10
|
+
* @param value Candidate literal payload.
|
|
11
|
+
* @returns True for JavaScript primitive literal values plus null and undefined.
|
|
12
|
+
* @details Objects are excluded because literal matching uses `Object.is`.
|
|
13
|
+
* Keeping literals primitive preserves stable interpreter and codegen behavior.
|
|
8
14
|
*/
|
|
9
15
|
export declare function isLiteralValue(value: unknown): value is LiteralValue;
|
|
10
16
|
//# sourceMappingURL=literal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../src/schema/literal.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../src/schema/literal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAWpE"}
|
package/dist/schema/literal.js
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file schema/literal.ts
|
|
3
3
|
* @brief Literal-value boundary checks.
|
|
4
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
5
|
+
* validation, compilation, or export.
|
|
4
6
|
*/
|
|
5
7
|
/**
|
|
6
|
-
* @brief
|
|
8
|
+
* @brief Validate values that TypeSea can store as exact literals.
|
|
9
|
+
* @param value Candidate literal payload.
|
|
10
|
+
* @returns True for JavaScript primitive literal values plus null and undefined.
|
|
11
|
+
* @details Objects are excluded because literal matching uses `Object.is`.
|
|
12
|
+
* Keeping literals primitive preserves stable interpreter and codegen behavior.
|
|
7
13
|
*/
|
|
8
14
|
export function isLiteralValue(value) {
|
|
9
15
|
const valueType = typeof value;
|
package/dist/schema/types.d.ts
CHANGED
|
@@ -1,146 +1,89 @@
|
|
|
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
7
|
import { NumberCheckTag, ObjectModeTag, PresenceTag, SchemaTag, StringCheckTag } from "../kind/index.js";
|
|
6
|
-
/**
|
|
7
|
-
* @brief literal value.
|
|
8
|
-
*/
|
|
9
8
|
export type LiteralValue = string | number | bigint | boolean | symbol | null | undefined;
|
|
10
9
|
/**
|
|
11
|
-
* @brief 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.
|
|
12
13
|
*/
|
|
13
14
|
export type Schema = UnknownSchema | NeverSchema | StringSchema | NumberSchema | BigIntSchema | SymbolSchema | BooleanSchema | LiteralSchema | ArraySchema | ObjectSchema | UnionSchema | IntersectionSchema | OptionalSchema | UndefinedableSchema | NullableSchema | DiscriminatedUnionSchema | BrandSchema | TupleSchema | RecordSchema | LazySchema | RefineSchema;
|
|
14
|
-
/**
|
|
15
|
-
* @brief unknown schema.
|
|
16
|
-
*/
|
|
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
25
|
export type StringCheck = StringMinCheck | StringMaxCheck | StringRegexCheck | StringUuidCheck;
|
|
37
|
-
/**
|
|
38
|
-
* @brief string min check.
|
|
39
|
-
*/
|
|
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
|
-
* @brief number schema.
|
|
67
|
-
*/
|
|
68
42
|
export interface NumberSchema {
|
|
69
43
|
readonly tag: typeof SchemaTag.Number;
|
|
70
44
|
readonly checks: readonly NumberCheck[];
|
|
71
45
|
}
|
|
72
|
-
/**
|
|
73
|
-
* @brief big int schema.
|
|
74
|
-
*/
|
|
75
46
|
export interface BigIntSchema {
|
|
76
47
|
readonly tag: typeof SchemaTag.BigInt;
|
|
77
48
|
}
|
|
78
|
-
/**
|
|
79
|
-
* @brief symbol schema.
|
|
80
|
-
*/
|
|
81
49
|
export interface SymbolSchema {
|
|
82
50
|
readonly tag: typeof SchemaTag.Symbol;
|
|
83
51
|
}
|
|
84
|
-
/**
|
|
85
|
-
* @brief number check.
|
|
86
|
-
*/
|
|
87
52
|
export type NumberCheck = NumberIntegerCheck | NumberGteCheck | NumberLteCheck;
|
|
88
|
-
/**
|
|
89
|
-
* @brief number integer check.
|
|
90
|
-
*/
|
|
91
53
|
export interface NumberIntegerCheck {
|
|
92
54
|
readonly tag: typeof NumberCheckTag.Integer;
|
|
93
55
|
}
|
|
94
|
-
/**
|
|
95
|
-
* @brief number gte check.
|
|
96
|
-
*/
|
|
97
56
|
export interface NumberGteCheck {
|
|
98
57
|
readonly tag: typeof NumberCheckTag.Gte;
|
|
99
58
|
readonly value: number;
|
|
100
59
|
}
|
|
101
|
-
/**
|
|
102
|
-
* @brief number lte check.
|
|
103
|
-
*/
|
|
104
60
|
export interface NumberLteCheck {
|
|
105
61
|
readonly tag: typeof NumberCheckTag.Lte;
|
|
106
62
|
readonly value: number;
|
|
107
63
|
}
|
|
108
|
-
/**
|
|
109
|
-
* @brief boolean schema.
|
|
110
|
-
*/
|
|
111
64
|
export interface BooleanSchema {
|
|
112
65
|
readonly tag: typeof SchemaTag.Boolean;
|
|
113
66
|
}
|
|
114
|
-
/**
|
|
115
|
-
* @brief literal schema.
|
|
116
|
-
*/
|
|
117
67
|
export interface LiteralSchema {
|
|
118
68
|
readonly tag: typeof SchemaTag.Literal;
|
|
119
69
|
readonly value: LiteralValue;
|
|
120
70
|
}
|
|
121
|
-
/**
|
|
122
|
-
* @brief array schema.
|
|
123
|
-
*/
|
|
124
71
|
export interface ArraySchema {
|
|
125
72
|
readonly tag: typeof SchemaTag.Array;
|
|
126
73
|
readonly item: Schema;
|
|
127
74
|
}
|
|
128
|
-
/**
|
|
129
|
-
* @brief tuple schema.
|
|
130
|
-
*/
|
|
131
75
|
export interface TupleSchema {
|
|
132
76
|
readonly tag: typeof SchemaTag.Tuple;
|
|
133
77
|
readonly items: readonly Schema[];
|
|
134
78
|
}
|
|
135
|
-
/**
|
|
136
|
-
* @brief record schema.
|
|
137
|
-
*/
|
|
138
79
|
export interface RecordSchema {
|
|
139
80
|
readonly tag: typeof SchemaTag.Record;
|
|
140
81
|
readonly value: Schema;
|
|
141
82
|
}
|
|
142
83
|
/**
|
|
143
|
-
* @brief
|
|
84
|
+
* @brief Object schema with both ordered entries and an O(1) key lookup.
|
|
85
|
+
* @details Codegen uses entries for stable field order and keyLookup for strict
|
|
86
|
+
* unknown-key checks.
|
|
144
87
|
*/
|
|
145
88
|
export interface ObjectSchema {
|
|
146
89
|
readonly tag: typeof SchemaTag.Object;
|
|
@@ -149,86 +92,65 @@ export interface ObjectSchema {
|
|
|
149
92
|
readonly keyLookup: ObjectKeyLookup;
|
|
150
93
|
readonly mode: ObjectModeTag;
|
|
151
94
|
}
|
|
152
|
-
/**
|
|
153
|
-
* @brief object key lookup.
|
|
154
|
-
*/
|
|
155
95
|
export type ObjectKeyLookup = Readonly<Record<string, true>>;
|
|
156
|
-
/**
|
|
157
|
-
* @brief object entry.
|
|
158
|
-
*/
|
|
159
96
|
export interface ObjectEntry {
|
|
160
97
|
readonly key: string;
|
|
161
98
|
readonly schema: Schema;
|
|
162
99
|
readonly presence: PresenceTag;
|
|
163
100
|
}
|
|
164
|
-
/**
|
|
165
|
-
* @brief union schema.
|
|
166
|
-
*/
|
|
167
101
|
export interface UnionSchema {
|
|
168
102
|
readonly tag: typeof SchemaTag.Union;
|
|
169
103
|
readonly options: readonly Schema[];
|
|
170
104
|
}
|
|
171
|
-
/**
|
|
172
|
-
* @brief intersection schema.
|
|
173
|
-
*/
|
|
174
105
|
export interface IntersectionSchema {
|
|
175
106
|
readonly tag: typeof SchemaTag.Intersection;
|
|
176
107
|
readonly left: Schema;
|
|
177
108
|
readonly right: Schema;
|
|
178
109
|
}
|
|
179
|
-
/**
|
|
180
|
-
* @brief optional schema.
|
|
181
|
-
*/
|
|
182
110
|
export interface OptionalSchema {
|
|
183
111
|
readonly tag: typeof SchemaTag.Optional;
|
|
184
112
|
readonly inner: Schema;
|
|
185
113
|
}
|
|
186
|
-
/**
|
|
187
|
-
* @brief undefinedable schema.
|
|
188
|
-
*/
|
|
189
114
|
export interface UndefinedableSchema {
|
|
190
115
|
readonly tag: typeof SchemaTag.Undefinedable;
|
|
191
116
|
readonly inner: Schema;
|
|
192
117
|
}
|
|
193
|
-
/**
|
|
194
|
-
* @brief nullable schema.
|
|
195
|
-
*/
|
|
196
118
|
export interface NullableSchema {
|
|
197
119
|
readonly tag: typeof SchemaTag.Nullable;
|
|
198
120
|
readonly inner: Schema;
|
|
199
121
|
}
|
|
200
122
|
/**
|
|
201
|
-
* @brief
|
|
123
|
+
* @brief Tagged union schema whose cases share one discriminant key.
|
|
124
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
125
|
+
* validation, compilation, or export.
|
|
202
126
|
*/
|
|
203
127
|
export interface DiscriminatedUnionSchema {
|
|
204
128
|
readonly tag: typeof SchemaTag.DiscriminatedUnion;
|
|
205
129
|
readonly key: string;
|
|
206
130
|
readonly cases: readonly DiscriminatedUnionCase[];
|
|
207
131
|
}
|
|
208
|
-
/**
|
|
209
|
-
* @brief discriminated union case.
|
|
210
|
-
*/
|
|
211
132
|
export interface DiscriminatedUnionCase {
|
|
212
133
|
readonly literal: string;
|
|
213
134
|
readonly schema: Schema;
|
|
214
135
|
}
|
|
215
|
-
/**
|
|
216
|
-
* @brief brand schema.
|
|
217
|
-
*/
|
|
218
136
|
export interface BrandSchema {
|
|
219
137
|
readonly tag: typeof SchemaTag.Brand;
|
|
220
138
|
readonly inner: Schema;
|
|
221
139
|
readonly brand: string;
|
|
222
140
|
}
|
|
223
141
|
/**
|
|
224
|
-
* @brief
|
|
142
|
+
* @brief Lazy schema thunk for recursive shapes.
|
|
143
|
+
* @details Builders cache resolved schemas before validation so recursion does
|
|
144
|
+
* not allocate a fresh schema tree per input node.
|
|
225
145
|
*/
|
|
226
146
|
export interface LazySchema {
|
|
227
147
|
readonly tag: typeof SchemaTag.Lazy;
|
|
228
148
|
readonly get: () => Schema;
|
|
229
149
|
}
|
|
230
150
|
/**
|
|
231
|
-
* @brief
|
|
151
|
+
* @brief User predicate fallback.
|
|
152
|
+
* @details Refinements are intentionally opaque to IR optimization; codegen can
|
|
153
|
+
* only call the predicate after the inner schema succeeds.
|
|
232
154
|
*/
|
|
233
155
|
export interface RefineSchema {
|
|
234
156
|
readonly tag: typeof SchemaTag.Refine;
|
|
@@ -237,7 +159,9 @@ export interface RefineSchema {
|
|
|
237
159
|
readonly name: string;
|
|
238
160
|
}
|
|
239
161
|
/**
|
|
240
|
-
* @brief
|
|
162
|
+
* @brief UUID pattern shared by interpreter and generated validators.
|
|
163
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
164
|
+
* validation, compilation, or export.
|
|
241
165
|
*/
|
|
242
166
|
export declare const UUID_PATTERN: RegExp;
|
|
243
167
|
//# 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,13 @@
|
|
|
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
7
|
import { 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;
|
|
@@ -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,CAwChE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
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.BigInt:
|
|
47
|
+
case SchemaTag.Symbol:
|
|
48
|
+
case SchemaTag.Boolean:
|
|
49
|
+
case SchemaTag.Array:
|
|
50
|
+
case SchemaTag.Object:
|
|
51
|
+
case SchemaTag.DiscriminatedUnion:
|
|
52
|
+
case SchemaTag.Tuple:
|
|
53
|
+
case SchemaTag.Record:
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* @brief Return whether at least one schema in a closed array may accept undefined.
|
|
59
|
+
* @details Schema helpers enforce construction-time invariants before values reach
|
|
60
|
+
* validation, compilation, or export.
|
|
61
|
+
* @param schemas Closed schema list owned by a union-like node.
|
|
62
|
+
* @returns True when one member admits undefined without evaluating input data.
|
|
63
|
+
*/
|
|
64
|
+
function schemaArrayCanAcceptUndefined(schemas) {
|
|
65
|
+
for (let index = 0; index < schemas.length; index += 1) {
|
|
66
|
+
const schema = schemas[index];
|
|
67
|
+
if (schema !== undefined && schemaCanAcceptUndefined(schema)) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
@@ -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;AAoBH,OAAO,KAAK,EAER,MAAM,EAET,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAK7D"}
|