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/ir/types.d.ts
CHANGED
|
@@ -1,54 +1,44 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file types.ts
|
|
3
3
|
* @brief Sea-of-Nodes graph value model.
|
|
4
|
+
* @details IR helpers preserve Sea-of-Nodes invariants before graphs cross optimizer,
|
|
5
|
+
* compiler, or public introspection boundaries.
|
|
4
6
|
*/
|
|
5
|
-
import { NodeTag } from "../kind/index.js";
|
|
6
|
-
import type { LiteralValue, Schema } from "../schema/index.js";
|
|
7
|
+
import { NodeTag, type ObjectModeTag, type PresenceTag } from "../kind/index.js";
|
|
8
|
+
import type { ArrayCheck, LiteralValue, Schema } from "../schema/index.js";
|
|
7
9
|
/**
|
|
8
|
-
* @brief
|
|
10
|
+
* @brief Dense index into Graph.nodes.
|
|
11
|
+
* @details Node ids are arena-local and may change after graph rewrites.
|
|
9
12
|
*/
|
|
10
13
|
export type NodeId = number;
|
|
14
|
+
export type GraphNode = StartNode | ParamNode | ConstNode | GetPropNode | UnaryPredicateNode | EqualsNode | NumericCompareNode | StringBoundNode | RegexNode | HasOwnNode | HasOwnDataNode | StrictKeysNode | ArrayEveryNode | TupleItemsNode | RecordEveryNode | DiscriminantDispatchNode | ObjectShapeNode | UnionDispatchNode | PrimitiveUnionNode | SchemaCheckNode | BooleanFoldNode | ReturnNode;
|
|
11
15
|
/**
|
|
12
|
-
* @brief graph
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* @brief graph.
|
|
16
|
+
* @brief Immutable validation graph.
|
|
17
|
+
* @details entry is the control anchor, result is the boolean value consumed by
|
|
18
|
+
* compiled predicates and introspection tools.
|
|
17
19
|
*/
|
|
18
20
|
export interface Graph {
|
|
19
21
|
readonly nodes: readonly GraphNode[];
|
|
20
22
|
readonly entry: NodeId;
|
|
21
23
|
readonly result: NodeId;
|
|
22
24
|
}
|
|
23
|
-
/**
|
|
24
|
-
* @brief start node.
|
|
25
|
-
*/
|
|
26
25
|
export interface StartNode {
|
|
27
26
|
readonly id: NodeId;
|
|
28
27
|
readonly tag: typeof NodeTag.Start;
|
|
29
28
|
readonly deps: readonly [];
|
|
30
29
|
}
|
|
31
|
-
/**
|
|
32
|
-
* @brief param node.
|
|
33
|
-
*/
|
|
34
30
|
export interface ParamNode {
|
|
35
31
|
readonly id: NodeId;
|
|
36
32
|
readonly tag: typeof NodeTag.Param;
|
|
37
33
|
readonly deps: readonly [];
|
|
38
34
|
readonly name: string;
|
|
39
35
|
}
|
|
40
|
-
/**
|
|
41
|
-
* @brief const node.
|
|
42
|
-
*/
|
|
43
36
|
export interface ConstNode {
|
|
44
37
|
readonly id: NodeId;
|
|
45
38
|
readonly tag: typeof NodeTag.Const;
|
|
46
39
|
readonly deps: readonly [];
|
|
47
40
|
readonly value: LiteralValue;
|
|
48
41
|
}
|
|
49
|
-
/**
|
|
50
|
-
* @brief get prop node.
|
|
51
|
-
*/
|
|
52
42
|
export interface GetPropNode {
|
|
53
43
|
readonly id: NodeId;
|
|
54
44
|
readonly tag: typeof NodeTag.GetProp;
|
|
@@ -56,18 +46,12 @@ export interface GetPropNode {
|
|
|
56
46
|
readonly object: NodeId;
|
|
57
47
|
readonly key: string;
|
|
58
48
|
}
|
|
59
|
-
/**
|
|
60
|
-
* @brief unary predicate node.
|
|
61
|
-
*/
|
|
62
49
|
export interface UnaryPredicateNode {
|
|
63
50
|
readonly id: NodeId;
|
|
64
51
|
readonly tag: typeof NodeTag.IsString | typeof NodeTag.IsNumber | typeof NodeTag.IsBoolean | typeof NodeTag.IsBigInt | typeof NodeTag.IsSymbol | typeof NodeTag.IsObject | typeof NodeTag.IsArray | typeof NodeTag.IsUndefined | typeof NodeTag.IsNull | typeof NodeTag.IsInteger | typeof NodeTag.Not;
|
|
65
52
|
readonly deps: readonly [NodeId];
|
|
66
53
|
readonly value: NodeId;
|
|
67
54
|
}
|
|
68
|
-
/**
|
|
69
|
-
* @brief equals node.
|
|
70
|
-
*/
|
|
71
55
|
export interface EqualsNode {
|
|
72
56
|
readonly id: NodeId;
|
|
73
57
|
readonly tag: typeof NodeTag.Equals;
|
|
@@ -75,9 +59,6 @@ export interface EqualsNode {
|
|
|
75
59
|
readonly left: NodeId;
|
|
76
60
|
readonly right: NodeId;
|
|
77
61
|
}
|
|
78
|
-
/**
|
|
79
|
-
* @brief numeric compare node.
|
|
80
|
-
*/
|
|
81
62
|
export interface NumericCompareNode {
|
|
82
63
|
readonly id: NodeId;
|
|
83
64
|
readonly tag: typeof NodeTag.Gte | typeof NodeTag.Lte;
|
|
@@ -85,9 +66,6 @@ export interface NumericCompareNode {
|
|
|
85
66
|
readonly left: NodeId;
|
|
86
67
|
readonly right: NodeId;
|
|
87
68
|
}
|
|
88
|
-
/**
|
|
89
|
-
* @brief string bound node.
|
|
90
|
-
*/
|
|
91
69
|
export interface StringBoundNode {
|
|
92
70
|
readonly id: NodeId;
|
|
93
71
|
readonly tag: typeof NodeTag.StringMin | typeof NodeTag.StringMax;
|
|
@@ -95,9 +73,6 @@ export interface StringBoundNode {
|
|
|
95
73
|
readonly value: NodeId;
|
|
96
74
|
readonly bound: number;
|
|
97
75
|
}
|
|
98
|
-
/**
|
|
99
|
-
* @brief regex node.
|
|
100
|
-
*/
|
|
101
76
|
export interface RegexNode {
|
|
102
77
|
readonly id: NodeId;
|
|
103
78
|
readonly tag: typeof NodeTag.Regex;
|
|
@@ -106,9 +81,6 @@ export interface RegexNode {
|
|
|
106
81
|
readonly regex: RegExp;
|
|
107
82
|
readonly name: string;
|
|
108
83
|
}
|
|
109
|
-
/**
|
|
110
|
-
* @brief has own node.
|
|
111
|
-
*/
|
|
112
84
|
export interface HasOwnNode {
|
|
113
85
|
readonly id: NodeId;
|
|
114
86
|
readonly tag: typeof NodeTag.HasOwn;
|
|
@@ -116,9 +88,6 @@ export interface HasOwnNode {
|
|
|
116
88
|
readonly object: NodeId;
|
|
117
89
|
readonly key: string;
|
|
118
90
|
}
|
|
119
|
-
/**
|
|
120
|
-
* @brief has own data node.
|
|
121
|
-
*/
|
|
122
91
|
export interface HasOwnDataNode {
|
|
123
92
|
readonly id: NodeId;
|
|
124
93
|
readonly tag: typeof NodeTag.HasOwnData;
|
|
@@ -126,9 +95,6 @@ export interface HasOwnDataNode {
|
|
|
126
95
|
readonly object: NodeId;
|
|
127
96
|
readonly key: string;
|
|
128
97
|
}
|
|
129
|
-
/**
|
|
130
|
-
* @brief strict keys node.
|
|
131
|
-
*/
|
|
132
98
|
export interface StrictKeysNode {
|
|
133
99
|
readonly id: NodeId;
|
|
134
100
|
readonly tag: typeof NodeTag.StrictKeys;
|
|
@@ -137,7 +103,9 @@ export interface StrictKeysNode {
|
|
|
137
103
|
readonly keys: readonly string[];
|
|
138
104
|
}
|
|
139
105
|
/**
|
|
140
|
-
* @brief array
|
|
106
|
+
* @brief Homogeneous array loop with a lowered child graph for each item.
|
|
107
|
+
* @details The original schema is retained for diagnostics and opaque fallback;
|
|
108
|
+
* boolean compilation consumes itemGraph first.
|
|
141
109
|
*/
|
|
142
110
|
export interface ArrayEveryNode {
|
|
143
111
|
readonly id: NodeId;
|
|
@@ -145,9 +113,13 @@ export interface ArrayEveryNode {
|
|
|
145
113
|
readonly deps: readonly [NodeId];
|
|
146
114
|
readonly value: NodeId;
|
|
147
115
|
readonly item: Schema;
|
|
116
|
+
readonly checks: readonly ArrayCheck[];
|
|
117
|
+
readonly itemGraph: Graph;
|
|
148
118
|
}
|
|
149
119
|
/**
|
|
150
|
-
* @brief tuple
|
|
120
|
+
* @brief Fixed-index tuple check with one child graph per item.
|
|
121
|
+
* @details Codegen can emit straight-line descriptor reads because the item
|
|
122
|
+
* count is known at lowering time.
|
|
151
123
|
*/
|
|
152
124
|
export interface TupleItemsNode {
|
|
153
125
|
readonly id: NodeId;
|
|
@@ -155,9 +127,12 @@ export interface TupleItemsNode {
|
|
|
155
127
|
readonly deps: readonly [NodeId];
|
|
156
128
|
readonly value: NodeId;
|
|
157
129
|
readonly items: readonly Schema[];
|
|
130
|
+
readonly itemGraphs: readonly Graph[];
|
|
158
131
|
}
|
|
159
132
|
/**
|
|
160
|
-
* @brief record
|
|
133
|
+
* @brief Own-key record loop with a lowered graph for each value.
|
|
134
|
+
* @details The loop must skip inherited enumerable properties even when user
|
|
135
|
+
* input has a hostile prototype.
|
|
161
136
|
*/
|
|
162
137
|
export interface RecordEveryNode {
|
|
163
138
|
readonly id: NodeId;
|
|
@@ -165,13 +140,13 @@ export interface RecordEveryNode {
|
|
|
165
140
|
readonly deps: readonly [NodeId];
|
|
166
141
|
readonly value: NodeId;
|
|
167
142
|
readonly item: Schema;
|
|
143
|
+
readonly itemGraph: Graph;
|
|
168
144
|
}
|
|
169
|
-
/**
|
|
170
|
-
* @brief discriminant dispatch lookup.
|
|
171
|
-
*/
|
|
172
145
|
export type DiscriminantDispatchLookup = Readonly<Record<string, number>>;
|
|
173
146
|
/**
|
|
174
|
-
* @brief
|
|
147
|
+
* @brief Object union dispatch keyed by one literal property.
|
|
148
|
+
* @details The lookup table lets codegen choose a branch before validating the
|
|
149
|
+
* whole object, avoiding linear scans on tagged unions.
|
|
175
150
|
*/
|
|
176
151
|
export interface DiscriminantDispatchNode {
|
|
177
152
|
readonly id: NodeId;
|
|
@@ -181,10 +156,74 @@ export interface DiscriminantDispatchNode {
|
|
|
181
156
|
readonly key: string;
|
|
182
157
|
readonly literals: readonly string[];
|
|
183
158
|
readonly schemas: readonly Schema[];
|
|
159
|
+
readonly graphs: readonly Graph[];
|
|
184
160
|
readonly lookup: DiscriminantDispatchLookup;
|
|
185
161
|
}
|
|
186
162
|
/**
|
|
187
|
-
* @brief schema
|
|
163
|
+
* @brief Object field schema paired with its lowered validation graph.
|
|
164
|
+
* @details Presence is stored beside the graph so object compilation can choose
|
|
165
|
+
* between required fast paths and optional descriptor checks.
|
|
166
|
+
*/
|
|
167
|
+
export interface ObjectShapeEntry {
|
|
168
|
+
readonly key: string;
|
|
169
|
+
readonly schema: Schema;
|
|
170
|
+
readonly graph: Graph;
|
|
171
|
+
readonly presence: PresenceTag;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* @brief Structured object check after lowering a declared shape.
|
|
175
|
+
* @details allRequired enables strict object fast paths that avoid optional
|
|
176
|
+
* property branching when every field must exist.
|
|
177
|
+
*/
|
|
178
|
+
export interface ObjectShapeNode {
|
|
179
|
+
readonly id: NodeId;
|
|
180
|
+
readonly tag: typeof NodeTag.ObjectShape;
|
|
181
|
+
readonly deps: readonly [NodeId];
|
|
182
|
+
readonly value: NodeId;
|
|
183
|
+
readonly entries: readonly ObjectShapeEntry[];
|
|
184
|
+
readonly keys: readonly string[];
|
|
185
|
+
readonly mode: ObjectModeTag;
|
|
186
|
+
readonly catchall: Schema | undefined;
|
|
187
|
+
readonly catchallGraph: Graph | undefined;
|
|
188
|
+
readonly allRequired: boolean;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* @brief Bit mask of possible root JavaScript kinds for a union arm.
|
|
192
|
+
* @details IR helpers preserve Sea-of-Nodes invariants before graphs cross optimizer,
|
|
193
|
+
* compiler, or public introspection boundaries.
|
|
194
|
+
*/
|
|
195
|
+
export type UnionDispatchMask = number;
|
|
196
|
+
/**
|
|
197
|
+
* @brief General union dispatch with coarse root-kind partitioning.
|
|
198
|
+
* @details Masks let codegen skip arms whose root type cannot match before
|
|
199
|
+
* entering their child graphs.
|
|
200
|
+
*/
|
|
201
|
+
export interface UnionDispatchNode {
|
|
202
|
+
readonly id: NodeId;
|
|
203
|
+
readonly tag: typeof NodeTag.UnionDispatch;
|
|
204
|
+
readonly deps: readonly [NodeId];
|
|
205
|
+
readonly value: NodeId;
|
|
206
|
+
readonly options: readonly Schema[];
|
|
207
|
+
readonly graphs: readonly Graph[];
|
|
208
|
+
readonly masks: readonly UnionDispatchMask[];
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* @brief Union specialized to primitive arms only.
|
|
212
|
+
* @details This node avoids object/array bookkeeping and emits a compact
|
|
213
|
+
* typeof/switch style predicate.
|
|
214
|
+
*/
|
|
215
|
+
export interface PrimitiveUnionNode {
|
|
216
|
+
readonly id: NodeId;
|
|
217
|
+
readonly tag: typeof NodeTag.PrimitiveUnion;
|
|
218
|
+
readonly deps: readonly [NodeId];
|
|
219
|
+
readonly value: NodeId;
|
|
220
|
+
readonly graphs: readonly Graph[];
|
|
221
|
+
readonly masks: readonly UnionDispatchMask[];
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* @brief Opaque schema fallback retained when lowering cannot express a rule.
|
|
225
|
+
* @details New optimizations should reduce the number of SchemaCheck nodes on
|
|
226
|
+
* hot paths, not teach consumers to reinterpret arbitrary schema trees.
|
|
188
227
|
*/
|
|
189
228
|
export interface SchemaCheckNode {
|
|
190
229
|
readonly id: NodeId;
|
|
@@ -194,7 +233,9 @@ export interface SchemaCheckNode {
|
|
|
194
233
|
readonly schema: Schema;
|
|
195
234
|
}
|
|
196
235
|
/**
|
|
197
|
-
* @brief boolean
|
|
236
|
+
* @brief Variadic boolean combiner.
|
|
237
|
+
* @details Optimization passes flatten nested folds so codegen can emit one
|
|
238
|
+
* predictable branch chain.
|
|
198
239
|
*/
|
|
199
240
|
export interface BooleanFoldNode {
|
|
200
241
|
readonly id: NodeId;
|
|
@@ -202,9 +243,6 @@ export interface BooleanFoldNode {
|
|
|
202
243
|
readonly deps: readonly NodeId[];
|
|
203
244
|
readonly values: readonly NodeId[];
|
|
204
245
|
}
|
|
205
|
-
/**
|
|
206
|
-
* @brief return node.
|
|
207
|
-
*/
|
|
208
246
|
export interface ReturnNode {
|
|
209
247
|
readonly id: NodeId;
|
|
210
248
|
readonly tag: typeof NodeTag.Return;
|
package/dist/ir/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ir/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ir/types.ts"],"names":[],"mappings":"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"}
|
package/dist/ir/types.js
CHANGED
package/dist/ir/validate.d.ts
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file validate.ts
|
|
3
3
|
* @brief Runtime validation for graph objects.
|
|
4
|
+
* @details Graph validation protects optimizer and compiler passes before they assume dense
|
|
5
|
+
* node ids and valid dependency edges.
|
|
4
6
|
*/
|
|
5
7
|
import type { Graph } from "./types.js";
|
|
6
8
|
/**
|
|
7
|
-
* @brief
|
|
9
|
+
* @brief Validate an unknown value as a frozen-style Sea-of-Nodes graph.
|
|
10
|
+
* @param value Candidate graph object supplied to graph consumers.
|
|
11
|
+
* @returns True when the full graph has a dense arena and well-formed nodes.
|
|
12
|
+
* @details Graph objects can cross public introspection boundaries. Validation
|
|
13
|
+
* therefore rejects accessors, sparse arrays, and prototype-backed fields before
|
|
14
|
+
* optimization or freezing reads graph metadata.
|
|
8
15
|
*/
|
|
9
16
|
export declare function isGraphValue(value: unknown): value is Graph;
|
|
10
17
|
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/ir/validate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/ir/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,KAAK,EAAE,KAAK,EAAqB,MAAM,YAAY,CAAC;AAE3D;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAE3D"}
|