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
|
@@ -1,29 +1,50 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file read.ts
|
|
3
3
|
* @brief Input normalization for JSON Schema export.
|
|
4
|
+
* @details JSON Schema helpers emit only representations that preserve TypeSea semantics or
|
|
5
|
+
* report a structured export issue.
|
|
4
6
|
*/
|
|
5
7
|
import { type Schema } from "../schema/index.js";
|
|
6
8
|
import type { JsonSchemaOptions } from "./types.js";
|
|
7
9
|
/**
|
|
8
10
|
* @brief draft 07 schema id.
|
|
11
|
+
* @details JSON Schema helpers emit only representations that preserve TypeSea semantics or
|
|
12
|
+
* report a structured export issue.
|
|
9
13
|
* @invariant The value is the default dialect marker for TypeSea JSON Schema output.
|
|
10
14
|
*/
|
|
11
15
|
export declare const JSON_SCHEMA_DRAFT_07_ID = "http://json-schema.org/draft-07/schema#";
|
|
12
16
|
/**
|
|
13
17
|
* @brief draft 2020 12 schema id.
|
|
18
|
+
* @details JSON Schema helpers emit only representations that preserve TypeSea semantics or
|
|
19
|
+
* report a structured export issue.
|
|
14
20
|
* @invariant The value selects the `prefixItems` tuple keyword set.
|
|
15
21
|
*/
|
|
16
22
|
export declare const JSON_SCHEMA_2020_12_ID = "https://json-schema.org/draft/2020-12/schema";
|
|
17
23
|
/**
|
|
18
|
-
* @brief
|
|
24
|
+
* @brief Read the schema carried by a guard for JSON Schema export.
|
|
25
|
+
* @param guard Candidate guard-like value.
|
|
26
|
+
* @returns Frozen schema accepted by the exporter.
|
|
27
|
+
* @throws TypeError when the receiver does not expose a valid TypeSea schema.
|
|
28
|
+
* @details Export can be used at package or build boundaries, so forged
|
|
29
|
+
* prototype schema fields are rejected before conversion begins.
|
|
19
30
|
*/
|
|
20
31
|
export declare function readJsonSchemaGuardSchema(guard: unknown): Schema;
|
|
21
32
|
/**
|
|
22
|
-
* @brief
|
|
33
|
+
* @brief Validate and freeze a direct schema export input.
|
|
34
|
+
* @details JSON Schema helpers emit only representations that preserve TypeSea semantics or
|
|
35
|
+
* report a structured export issue.
|
|
36
|
+
* @param schema Candidate TypeSea schema.
|
|
37
|
+
* @returns Frozen schema tree safe for traversal by emitters.
|
|
38
|
+
* @throws TypeError when the schema shape is malformed.
|
|
23
39
|
*/
|
|
24
40
|
export declare function readJsonSchemaSchema(schema: unknown): Schema;
|
|
25
41
|
/**
|
|
26
|
-
* @brief
|
|
42
|
+
* @brief Normalize JSON Schema exporter options.
|
|
43
|
+
* @param options Candidate options object.
|
|
44
|
+
* @returns Dialect and schema id with defaults filled in.
|
|
45
|
+
* @throws TypeError when option fields are not supported.
|
|
46
|
+
* @details Options are read through own data slots so a caller cannot influence
|
|
47
|
+
* export dialect through inherited getters or prototype state.
|
|
27
48
|
*/
|
|
28
49
|
export declare function readJsonSchemaOptions(options: unknown): JsonSchemaOptions;
|
|
29
50
|
//# sourceMappingURL=read.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/json-schema/read.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/json-schema/read.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGH,KAAK,MAAM,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAER,iBAAiB,EACpB,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,4CAA4C,CAAC;AAEjF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,iDAAiD,CAAC;AAErF;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKhE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAK5D;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,iBAAiB,CAmBzE"}
|
package/dist/json-schema/read.js
CHANGED
|
@@ -1,29 +1,45 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file read.ts
|
|
3
3
|
* @brief Input normalization for JSON Schema export.
|
|
4
|
+
* @details JSON Schema helpers emit only representations that preserve TypeSea semantics or
|
|
5
|
+
* report a structured export issue.
|
|
4
6
|
*/
|
|
5
7
|
import { freezeSchema, isSchemaValue } from "../schema/index.js";
|
|
6
8
|
/**
|
|
7
9
|
* @brief draft 07 schema id.
|
|
10
|
+
* @details JSON Schema helpers emit only representations that preserve TypeSea semantics or
|
|
11
|
+
* report a structured export issue.
|
|
8
12
|
* @invariant The value is the default dialect marker for TypeSea JSON Schema output.
|
|
9
13
|
*/
|
|
10
14
|
export const JSON_SCHEMA_DRAFT_07_ID = "http://json-schema.org/draft-07/schema#";
|
|
11
15
|
/**
|
|
12
16
|
* @brief draft 2020 12 schema id.
|
|
17
|
+
* @details JSON Schema helpers emit only representations that preserve TypeSea semantics or
|
|
18
|
+
* report a structured export issue.
|
|
13
19
|
* @invariant The value selects the `prefixItems` tuple keyword set.
|
|
14
20
|
*/
|
|
15
21
|
export const JSON_SCHEMA_2020_12_ID = "https://json-schema.org/draft/2020-12/schema";
|
|
16
22
|
/**
|
|
17
|
-
* @brief
|
|
23
|
+
* @brief Read the schema carried by a guard for JSON Schema export.
|
|
24
|
+
* @param guard Candidate guard-like value.
|
|
25
|
+
* @returns Frozen schema accepted by the exporter.
|
|
26
|
+
* @throws TypeError when the receiver does not expose a valid TypeSea schema.
|
|
27
|
+
* @details Export can be used at package or build boundaries, so forged
|
|
28
|
+
* prototype schema fields are rejected before conversion begins.
|
|
18
29
|
*/
|
|
19
30
|
export function readJsonSchemaGuardSchema(guard) {
|
|
20
31
|
if (!isRecord(guard)) {
|
|
21
32
|
throw new TypeError("JSON Schema guard must be a TypeSea guard");
|
|
22
33
|
}
|
|
23
|
-
return readJsonSchemaSchema(guard
|
|
34
|
+
return readJsonSchemaSchema(readOwnDataProperty(guard, "schema"));
|
|
24
35
|
}
|
|
25
36
|
/**
|
|
26
|
-
* @brief
|
|
37
|
+
* @brief Validate and freeze a direct schema export input.
|
|
38
|
+
* @details JSON Schema helpers emit only representations that preserve TypeSea semantics or
|
|
39
|
+
* report a structured export issue.
|
|
40
|
+
* @param schema Candidate TypeSea schema.
|
|
41
|
+
* @returns Frozen schema tree safe for traversal by emitters.
|
|
42
|
+
* @throws TypeError when the schema shape is malformed.
|
|
27
43
|
*/
|
|
28
44
|
export function readJsonSchemaSchema(schema) {
|
|
29
45
|
if (!isSchemaValue(schema)) {
|
|
@@ -32,7 +48,12 @@ export function readJsonSchemaSchema(schema) {
|
|
|
32
48
|
return freezeSchema(schema);
|
|
33
49
|
}
|
|
34
50
|
/**
|
|
35
|
-
* @brief
|
|
51
|
+
* @brief Normalize JSON Schema exporter options.
|
|
52
|
+
* @param options Candidate options object.
|
|
53
|
+
* @returns Dialect and schema id with defaults filled in.
|
|
54
|
+
* @throws TypeError when option fields are not supported.
|
|
55
|
+
* @details Options are read through own data slots so a caller cannot influence
|
|
56
|
+
* export dialect through inherited getters or prototype state.
|
|
36
57
|
*/
|
|
37
58
|
export function readJsonSchemaOptions(options) {
|
|
38
59
|
if (options === undefined) {
|
|
@@ -44,8 +65,8 @@ export function readJsonSchemaOptions(options) {
|
|
|
44
65
|
if (!isRecord(options)) {
|
|
45
66
|
throw new TypeError("JSON Schema options must be an object");
|
|
46
67
|
}
|
|
47
|
-
const schemaId = options
|
|
48
|
-
const dialect = readJsonSchemaDialect(options
|
|
68
|
+
const schemaId = readOwnDataProperty(options, "schemaId");
|
|
69
|
+
const dialect = readJsonSchemaDialect(readOwnDataProperty(options, "dialect"), schemaId);
|
|
49
70
|
if (schemaId !== undefined && typeof schemaId !== "string") {
|
|
50
71
|
throw new TypeError("JSON Schema schemaId must be a string");
|
|
51
72
|
}
|
|
@@ -55,9 +76,13 @@ export function readJsonSchemaOptions(options) {
|
|
|
55
76
|
};
|
|
56
77
|
}
|
|
57
78
|
/**
|
|
58
|
-
* @brief
|
|
59
|
-
* @details
|
|
79
|
+
* @brief Normalize the requested JSON Schema dialect.
|
|
80
|
+
* @details JSON Schema helpers emit only representations that preserve TypeSea semantics or
|
|
81
|
+
* report a structured export issue.
|
|
82
|
+
* @param value Candidate dialect option.
|
|
83
|
+
* @param schemaId Schema id used as a compatibility hint.
|
|
60
84
|
* @returns Normalized JSON Schema dialect.
|
|
85
|
+
* @throws TypeError when the dialect string is outside the supported set.
|
|
61
86
|
*/
|
|
62
87
|
function readJsonSchemaDialect(value, schemaId) {
|
|
63
88
|
if (value === undefined) {
|
|
@@ -69,9 +94,11 @@ function readJsonSchemaDialect(value, schemaId) {
|
|
|
69
94
|
throw new TypeError("JSON Schema dialect must be draft-07 or 2020-12");
|
|
70
95
|
}
|
|
71
96
|
/**
|
|
72
|
-
* @brief
|
|
73
|
-
* @details
|
|
74
|
-
*
|
|
97
|
+
* @brief Infer the dialect from a well-known schema id marker.
|
|
98
|
+
* @details JSON Schema helpers emit only representations that preserve TypeSea semantics or
|
|
99
|
+
* report a structured export issue.
|
|
100
|
+
* @param schemaId Candidate schema id.
|
|
101
|
+
* @returns Draft 2020-12 when the id names that draft, otherwise draft-07.
|
|
75
102
|
*/
|
|
76
103
|
function inferJsonSchemaDialect(schemaId) {
|
|
77
104
|
if (typeof schemaId === "string" && schemaId.includes("2020-12")) {
|
|
@@ -80,8 +107,28 @@ function inferJsonSchemaDialect(schemaId) {
|
|
|
80
107
|
return "draft-07";
|
|
81
108
|
}
|
|
82
109
|
/**
|
|
83
|
-
* @brief
|
|
110
|
+
* @brief Accept option records before descriptor-based reads.
|
|
111
|
+
* @details JSON Schema helpers emit only representations that preserve TypeSea semantics or
|
|
112
|
+
* report a structured export issue.
|
|
113
|
+
* @param value Candidate options or guard object.
|
|
114
|
+
* @returns True for non-array objects.
|
|
84
115
|
*/
|
|
85
116
|
function isRecord(value) {
|
|
86
117
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
87
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* @brief Read one own data option without consulting prototypes.
|
|
121
|
+
* @details JSON Schema helpers emit only representations that preserve TypeSea semantics or
|
|
122
|
+
* report a structured export issue.
|
|
123
|
+
* @param value Object being normalized.
|
|
124
|
+
* @param key Field name or symbol.
|
|
125
|
+
* @returns Stored field value, or undefined when absent.
|
|
126
|
+
*/
|
|
127
|
+
function readOwnDataProperty(value, key) {
|
|
128
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
129
|
+
if (descriptor === undefined ||
|
|
130
|
+
!Object.prototype.hasOwnProperty.call(descriptor, "value")) {
|
|
131
|
+
return undefined;
|
|
132
|
+
}
|
|
133
|
+
return descriptor.value;
|
|
134
|
+
}
|
|
@@ -1,28 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file types.ts
|
|
3
3
|
* @brief JSON Schema export data contracts.
|
|
4
|
+
* @details JSON Schema helpers emit only representations that preserve TypeSea semantics or
|
|
5
|
+
* report a structured export issue.
|
|
4
6
|
*/
|
|
5
7
|
import type { PathSegment } from "../issue/index.js";
|
|
6
8
|
/**
|
|
7
|
-
* @brief
|
|
9
|
+
* @brief Public JSON Schema fragment produced by the exporter.
|
|
10
|
+
* @details JSON Schema allows boolean schemas at every position, so the TypeSea
|
|
11
|
+
* model keeps that union explicit instead of wrapping boolean fragments in
|
|
12
|
+
* object shells.
|
|
8
13
|
*/
|
|
9
14
|
export type JsonSchema = boolean | JsonSchemaObject;
|
|
10
15
|
/**
|
|
11
|
-
* @brief
|
|
16
|
+
* @brief Literal values that can be represented losslessly in JSON Schema.
|
|
17
|
+
* @details Undefined, bigint, symbol, NaN, infinity, and negative zero are not
|
|
18
|
+
* part of this type because the exporter reports them as unsupported instead of
|
|
19
|
+
* weakening literal semantics.
|
|
12
20
|
*/
|
|
13
21
|
export type JsonSchemaPrimitive = string | number | boolean | null;
|
|
14
22
|
/**
|
|
15
|
-
* @brief
|
|
23
|
+
* @brief Type names accepted by the emitted JSON Schema `type` keyword.
|
|
24
|
+
* @details The list is intentionally closed so emitters cannot spell dialect
|
|
25
|
+
* keywords or runtime-only TypeSea domains as plain strings.
|
|
16
26
|
*/
|
|
17
27
|
export type JsonSchemaTypeName = "null" | "boolean" | "object" | "array" | "number" | "integer" | "string";
|
|
18
28
|
/**
|
|
19
|
-
* @brief
|
|
29
|
+
* @brief JSON Schema dialects supported by TypeSea emission.
|
|
20
30
|
* @details Defines the keyword set selected for emitted schemas.
|
|
21
31
|
* @invariant Each dialect maps to one stable tuple representation.
|
|
22
32
|
*/
|
|
23
33
|
export type JsonSchemaDialect = "draft-07" | "2020-12";
|
|
24
34
|
/**
|
|
25
|
-
* @brief
|
|
35
|
+
* @brief Readonly JSON Schema object shape returned from public APIs.
|
|
36
|
+
* @details The interface contains only keywords emitted by TypeSea. Keeping the
|
|
37
|
+
* shape narrow catches accidental exporter drift in TypeScript before release.
|
|
26
38
|
*/
|
|
27
39
|
export interface JsonSchemaObject {
|
|
28
40
|
readonly $schema?: string;
|
|
@@ -34,10 +46,14 @@ export interface JsonSchemaObject {
|
|
|
34
46
|
readonly maxLength?: number;
|
|
35
47
|
readonly minimum?: number;
|
|
36
48
|
readonly maximum?: number;
|
|
49
|
+
readonly exclusiveMinimum?: number;
|
|
50
|
+
readonly exclusiveMaximum?: number;
|
|
51
|
+
readonly multipleOf?: number;
|
|
37
52
|
readonly items?: JsonSchema | readonly JsonSchema[];
|
|
38
53
|
/**
|
|
39
|
-
* @brief
|
|
40
|
-
* @details
|
|
54
|
+
* @brief Draft-07 tuple tail schema for values past fixed positions.
|
|
55
|
+
* @details Older validators read this field when `items` is an array, so it
|
|
56
|
+
* must be emitted for strict TypeSea tuple length semantics.
|
|
41
57
|
* @invariant When `items` is an array, this field controls values past the fixed tuple length.
|
|
42
58
|
*/
|
|
43
59
|
readonly additionalItems?: JsonSchema;
|
|
@@ -51,11 +67,15 @@ export interface JsonSchemaObject {
|
|
|
51
67
|
readonly allOf?: readonly JsonSchema[];
|
|
52
68
|
}
|
|
53
69
|
/**
|
|
54
|
-
* @brief
|
|
70
|
+
* @brief Closed set of JSON Schema export failure codes.
|
|
71
|
+
* @details Codes are stable machine-readable diagnostics. The human message may
|
|
72
|
+
* change, but adapter logic can branch on these strings.
|
|
55
73
|
*/
|
|
56
|
-
export type JsonSchemaExportCode = "unsupported_bigint" | "unsupported_symbol" | "unsupported_undefined" | "unsupported_number_literal" | "unsupported_number_bound" | "unsupported_regex_flags" | "unsupported_lazy" | "unsupported_refine" | "unsupported_decoder" | "unsupported_async_decoder" | "unsupported_child";
|
|
74
|
+
export type JsonSchemaExportCode = "unsupported_bigint" | "unsupported_symbol" | "unsupported_date" | "unsupported_runtime_object" | "unsupported_undefined" | "unsupported_number_literal" | "unsupported_number_bound" | "unsupported_regex_flags" | "unsupported_lazy" | "unsupported_refine" | "unsupported_decoder" | "unsupported_async_decoder" | "unsupported_child";
|
|
57
75
|
/**
|
|
58
|
-
* @brief
|
|
76
|
+
* @brief Structured diagnostic produced when export would lose semantics.
|
|
77
|
+
* @details Paths point into the TypeSea schema tree, not the emitted JSON
|
|
78
|
+
* Schema, because failures occur before a complete output document exists.
|
|
59
79
|
*/
|
|
60
80
|
export interface JsonSchemaExportIssue {
|
|
61
81
|
readonly path: readonly PathSegment[];
|
|
@@ -63,19 +83,24 @@ export interface JsonSchemaExportIssue {
|
|
|
63
83
|
readonly message: string;
|
|
64
84
|
}
|
|
65
85
|
/**
|
|
66
|
-
* @brief
|
|
86
|
+
* @brief Configuration accepted by JSON Schema export APIs.
|
|
87
|
+
* @details Options are normalized before emission so the lower-level emitters
|
|
88
|
+
* can select dialect behavior without repeatedly checking optional fields.
|
|
67
89
|
*/
|
|
68
90
|
export interface JsonSchemaOptions {
|
|
69
91
|
/**
|
|
70
|
-
* @brief
|
|
71
|
-
* @details
|
|
92
|
+
* @brief Keyword family selected for the emitted document.
|
|
93
|
+
* @details Tuple schemas use `items` arrays for draft-07 and `prefixItems`
|
|
94
|
+
* for 2020-12.
|
|
72
95
|
* @invariant Tuple schemas use `items` arrays for draft-07 and `prefixItems` for 2020-12.
|
|
73
96
|
*/
|
|
74
97
|
readonly dialect: JsonSchemaDialect;
|
|
75
98
|
readonly schemaId: string | undefined;
|
|
76
99
|
}
|
|
77
100
|
/**
|
|
78
|
-
* @brief mutable
|
|
101
|
+
* @brief Internal mutable JSON Schema object used during emission.
|
|
102
|
+
* @details Emitters fill this shape in local loops, then `freezeJsonSchema`
|
|
103
|
+
* hardens it before the value crosses the public API boundary.
|
|
79
104
|
*/
|
|
80
105
|
export interface MutableJsonSchemaObject {
|
|
81
106
|
$schema?: string;
|
|
@@ -87,10 +112,14 @@ export interface MutableJsonSchemaObject {
|
|
|
87
112
|
maxLength?: number;
|
|
88
113
|
minimum?: number;
|
|
89
114
|
maximum?: number;
|
|
115
|
+
exclusiveMinimum?: number;
|
|
116
|
+
exclusiveMaximum?: number;
|
|
117
|
+
multipleOf?: number;
|
|
90
118
|
items?: JsonSchema | readonly JsonSchema[];
|
|
91
119
|
/**
|
|
92
|
-
* @brief
|
|
93
|
-
* @details
|
|
120
|
+
* @brief Draft-07 tuple tail schema for values past fixed positions.
|
|
121
|
+
* @details Older validators read this field when `items` is an array, so it
|
|
122
|
+
* must be emitted for strict TypeSea tuple length semantics.
|
|
94
123
|
* @invariant When `items` is an array, this field controls values past the fixed tuple length.
|
|
95
124
|
*/
|
|
96
125
|
additionalItems?: JsonSchema;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/json-schema/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/json-schema/types.ts"],"names":[],"mappings":"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"}
|
package/dist/kind/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @brief schema
|
|
2
|
+
* @brief Numeric schema tags used in frozen schema records.
|
|
3
|
+
* @details Plain objects avoid TypeScript enum emit and keep runtime constants
|
|
4
|
+
* stable for generated validators.
|
|
3
5
|
*/
|
|
4
6
|
export declare const SchemaTag: {
|
|
5
7
|
readonly String: 1;
|
|
@@ -23,60 +25,70 @@ export declare const SchemaTag: {
|
|
|
23
25
|
readonly BigInt: 19;
|
|
24
26
|
readonly Symbol: 20;
|
|
25
27
|
readonly Intersection: 21;
|
|
28
|
+
readonly Date: 22;
|
|
29
|
+
readonly Map: 23;
|
|
30
|
+
readonly Set: 24;
|
|
31
|
+
readonly InstanceOf: 25;
|
|
32
|
+
readonly Property: 26;
|
|
26
33
|
};
|
|
27
|
-
/**
|
|
28
|
-
* @brief schema tag.
|
|
29
|
-
*/
|
|
30
34
|
export type SchemaTag = (typeof SchemaTag)[keyof typeof SchemaTag];
|
|
31
35
|
/**
|
|
32
|
-
* @brief
|
|
36
|
+
* @brief Object unknown-key policy tags.
|
|
37
|
+
* @details This declaration records the local invariant that callers rely on after this
|
|
38
|
+
* module boundary.
|
|
33
39
|
*/
|
|
34
40
|
export declare const ObjectModeTag: {
|
|
35
41
|
readonly Passthrough: 1;
|
|
36
42
|
readonly Strict: 2;
|
|
37
43
|
};
|
|
38
|
-
/**
|
|
39
|
-
* @brief object mode tag.
|
|
40
|
-
*/
|
|
41
44
|
export type ObjectModeTag = (typeof ObjectModeTag)[keyof typeof ObjectModeTag];
|
|
42
45
|
/**
|
|
43
|
-
* @brief presence
|
|
46
|
+
* @brief Required/optional field presence tags for object entries.
|
|
47
|
+
* @details This declaration is kept narrow so downstream code can rely on a closed set of
|
|
48
|
+
* supported values.
|
|
44
49
|
*/
|
|
45
50
|
export declare const PresenceTag: {
|
|
46
51
|
readonly Required: 1;
|
|
47
52
|
readonly Optional: 2;
|
|
48
53
|
};
|
|
49
|
-
/**
|
|
50
|
-
* @brief presence tag.
|
|
51
|
-
*/
|
|
52
54
|
export type PresenceTag = (typeof PresenceTag)[keyof typeof PresenceTag];
|
|
53
|
-
/**
|
|
54
|
-
* @brief string check tag.
|
|
55
|
-
*/
|
|
56
55
|
export declare const StringCheckTag: {
|
|
57
56
|
readonly Min: 1;
|
|
58
57
|
readonly Max: 2;
|
|
59
58
|
readonly Regex: 3;
|
|
60
59
|
readonly Uuid: 4;
|
|
60
|
+
readonly Email: 5;
|
|
61
|
+
readonly Url: 6;
|
|
62
|
+
readonly IsoDate: 7;
|
|
63
|
+
readonly IsoDateTime: 8;
|
|
64
|
+
readonly Ulid: 9;
|
|
65
|
+
readonly Ipv4: 10;
|
|
66
|
+
readonly Ipv6: 11;
|
|
61
67
|
};
|
|
62
|
-
/**
|
|
63
|
-
* @brief string check tag.
|
|
64
|
-
*/
|
|
65
68
|
export type StringCheckTag = (typeof StringCheckTag)[keyof typeof StringCheckTag];
|
|
66
|
-
/**
|
|
67
|
-
* @brief number check tag.
|
|
68
|
-
*/
|
|
69
69
|
export declare const NumberCheckTag: {
|
|
70
70
|
readonly Integer: 1;
|
|
71
71
|
readonly Gte: 2;
|
|
72
72
|
readonly Lte: 3;
|
|
73
|
+
readonly Gt: 4;
|
|
74
|
+
readonly Lt: 5;
|
|
75
|
+
readonly MultipleOf: 6;
|
|
73
76
|
};
|
|
74
|
-
/**
|
|
75
|
-
* @brief number check tag.
|
|
76
|
-
*/
|
|
77
77
|
export type NumberCheckTag = (typeof NumberCheckTag)[keyof typeof NumberCheckTag];
|
|
78
|
+
export declare const DateCheckTag: {
|
|
79
|
+
readonly Min: 1;
|
|
80
|
+
readonly Max: 2;
|
|
81
|
+
};
|
|
82
|
+
export type DateCheckTag = (typeof DateCheckTag)[keyof typeof DateCheckTag];
|
|
83
|
+
export declare const ArrayCheckTag: {
|
|
84
|
+
readonly Min: 1;
|
|
85
|
+
readonly Max: 2;
|
|
86
|
+
};
|
|
87
|
+
export type ArrayCheckTag = (typeof ArrayCheckTag)[keyof typeof ArrayCheckTag];
|
|
78
88
|
/**
|
|
79
|
-
* @brief node
|
|
89
|
+
* @brief IR node tags with reserved numeric ranges by node family.
|
|
90
|
+
* @details Sparse ranges make graph dumps easier to scan and leave room for
|
|
91
|
+
* adding specialized nodes without renumbering old ones.
|
|
80
92
|
*/
|
|
81
93
|
export declare const NodeTag: {
|
|
82
94
|
readonly Start: 1;
|
|
@@ -107,13 +119,13 @@ export declare const NodeTag: {
|
|
|
107
119
|
readonly TupleItems: 41;
|
|
108
120
|
readonly RecordEvery: 42;
|
|
109
121
|
readonly DiscriminantDispatch: 43;
|
|
122
|
+
readonly ObjectShape: 44;
|
|
123
|
+
readonly UnionDispatch: 45;
|
|
124
|
+
readonly PrimitiveUnion: 46;
|
|
110
125
|
readonly Not: 50;
|
|
111
126
|
readonly And: 51;
|
|
112
127
|
readonly Or: 52;
|
|
113
128
|
readonly Return: 70;
|
|
114
129
|
};
|
|
115
|
-
/**
|
|
116
|
-
* @brief node tag.
|
|
117
|
-
*/
|
|
118
130
|
export type NodeTag = (typeof NodeTag)[keyof typeof NodeTag];
|
|
119
131
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/kind/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kind/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kind/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BZ,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;CAGhB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAE/E;;;;GAIG;AACH,eAAO,MAAM,WAAW;;;CAGd,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEzE,eAAO,MAAM,cAAc;;;;;;;;;;;;CAYjB,CAAC;AAEX,MAAM,MAAM,cAAc,GACtB,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAEzD,eAAO,MAAM,cAAc;;;;;;;CAOjB,CAAC;AAEX,MAAM,MAAM,cAAc,GACtB,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAEzD,eAAO,MAAM,YAAY;;;CAGf,CAAC;AAEX,MAAM,MAAM,YAAY,GACpB,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAErD,eAAO,MAAM,aAAa;;;CAGhB,CAAC;AAEX,MAAM,MAAM,aAAa,GACrB,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCV,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC"}
|
package/dist/kind/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @brief schema
|
|
2
|
+
* @brief Numeric schema tags used in frozen schema records.
|
|
3
|
+
* @details Plain objects avoid TypeScript enum emit and keep runtime constants
|
|
4
|
+
* stable for generated validators.
|
|
3
5
|
*/
|
|
4
6
|
export const SchemaTag = {
|
|
5
7
|
String: 1,
|
|
@@ -22,41 +24,64 @@ export const SchemaTag = {
|
|
|
22
24
|
Never: 18,
|
|
23
25
|
BigInt: 19,
|
|
24
26
|
Symbol: 20,
|
|
25
|
-
Intersection: 21
|
|
27
|
+
Intersection: 21,
|
|
28
|
+
Date: 22,
|
|
29
|
+
Map: 23,
|
|
30
|
+
Set: 24,
|
|
31
|
+
InstanceOf: 25,
|
|
32
|
+
Property: 26
|
|
26
33
|
};
|
|
27
34
|
/**
|
|
28
|
-
* @brief
|
|
35
|
+
* @brief Object unknown-key policy tags.
|
|
36
|
+
* @details This declaration records the local invariant that callers rely on after this
|
|
37
|
+
* module boundary.
|
|
29
38
|
*/
|
|
30
39
|
export const ObjectModeTag = {
|
|
31
40
|
Passthrough: 1,
|
|
32
41
|
Strict: 2
|
|
33
42
|
};
|
|
34
43
|
/**
|
|
35
|
-
* @brief presence
|
|
44
|
+
* @brief Required/optional field presence tags for object entries.
|
|
45
|
+
* @details This declaration is kept narrow so downstream code can rely on a closed set of
|
|
46
|
+
* supported values.
|
|
36
47
|
*/
|
|
37
48
|
export const PresenceTag = {
|
|
38
49
|
Required: 1,
|
|
39
50
|
Optional: 2
|
|
40
51
|
};
|
|
41
|
-
/**
|
|
42
|
-
* @brief string check tag.
|
|
43
|
-
*/
|
|
44
52
|
export const StringCheckTag = {
|
|
45
53
|
Min: 1,
|
|
46
54
|
Max: 2,
|
|
47
55
|
Regex: 3,
|
|
48
|
-
Uuid: 4
|
|
56
|
+
Uuid: 4,
|
|
57
|
+
Email: 5,
|
|
58
|
+
Url: 6,
|
|
59
|
+
IsoDate: 7,
|
|
60
|
+
IsoDateTime: 8,
|
|
61
|
+
Ulid: 9,
|
|
62
|
+
Ipv4: 10,
|
|
63
|
+
Ipv6: 11
|
|
49
64
|
};
|
|
50
|
-
/**
|
|
51
|
-
* @brief number check tag.
|
|
52
|
-
*/
|
|
53
65
|
export const NumberCheckTag = {
|
|
54
66
|
Integer: 1,
|
|
55
67
|
Gte: 2,
|
|
56
|
-
Lte: 3
|
|
68
|
+
Lte: 3,
|
|
69
|
+
Gt: 4,
|
|
70
|
+
Lt: 5,
|
|
71
|
+
MultipleOf: 6
|
|
72
|
+
};
|
|
73
|
+
export const DateCheckTag = {
|
|
74
|
+
Min: 1,
|
|
75
|
+
Max: 2
|
|
76
|
+
};
|
|
77
|
+
export const ArrayCheckTag = {
|
|
78
|
+
Min: 1,
|
|
79
|
+
Max: 2
|
|
57
80
|
};
|
|
58
81
|
/**
|
|
59
|
-
* @brief node
|
|
82
|
+
* @brief IR node tags with reserved numeric ranges by node family.
|
|
83
|
+
* @details Sparse ranges make graph dumps easier to scan and leave room for
|
|
84
|
+
* adding specialized nodes without renumbering old ones.
|
|
60
85
|
*/
|
|
61
86
|
export const NodeTag = {
|
|
62
87
|
Start: 1,
|
|
@@ -87,6 +112,9 @@ export const NodeTag = {
|
|
|
87
112
|
TupleItems: 41,
|
|
88
113
|
RecordEvery: 42,
|
|
89
114
|
DiscriminantDispatch: 43,
|
|
115
|
+
ObjectShape: 44,
|
|
116
|
+
UnionDispatch: 45,
|
|
117
|
+
PrimitiveUnion: 46,
|
|
90
118
|
Not: 50,
|
|
91
119
|
And: 51,
|
|
92
120
|
Or: 52,
|
package/dist/lower/index.d.ts
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { type Graph } from "../ir/index.js";
|
|
2
2
|
import { type Schema } from "../schema/index.js";
|
|
3
3
|
/**
|
|
4
|
-
* @brief
|
|
4
|
+
* @brief Convert one schema root into a Sea-of-Nodes predicate graph.
|
|
5
|
+
* @details The graph always starts with a single input parameter and ends in a
|
|
6
|
+
* boolean return node. Keeping that calling convention uniform lets optimizer,
|
|
7
|
+
* interpreter, compiler, and AOT code consume the same IR shape.
|
|
8
|
+
* @param schema Root schema to lower into predicate IR.
|
|
9
|
+
* @returns Graph with one parameter and one return node.
|
|
5
10
|
*/
|
|
6
11
|
export declare function lowerSchema(schema: Schema): Graph;
|
|
7
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lower/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lower/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAEH,KAAK,KAAK,EAIb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EASH,KAAK,MAAM,EACd,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAOjD"}
|