@kanonak-protocol/expression 0.2.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/dist/index.d.ts +136 -35
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +674 -58
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -2,36 +2,95 @@
|
|
|
2
2
|
* `@kanonak-protocol/expression` — the Kanonak expression RUNTIME.
|
|
3
3
|
*
|
|
4
4
|
* A small, deterministic tree-walker that folds a `kanonak.org/transformations`
|
|
5
|
-
* (`tx`) + `kanonak.org/math` expression tree to a
|
|
5
|
+
* (`tx`) + `kanonak.org/math` expression tree to a value. Generated SDKs
|
|
6
6
|
* reference it so a typed expression can be *run*, not just *represented*.
|
|
7
7
|
*
|
|
8
8
|
* Three layers, exactly as the six-language proof established:
|
|
9
9
|
*
|
|
10
|
-
* 1. DISPATCH — derived from the ontology. An operator's
|
|
11
|
-
* `tx` superclass: UnaryNumericOp -> unary `value`; BinaryArithmetic /
|
|
12
|
-
* BinaryComparison -> binary; BooleanLogic -> n-ary `operands`;
|
|
13
|
-
*
|
|
14
|
-
*
|
|
10
|
+
* 1. DISPATCH — derived from the ontology. An operator's shape falls out of
|
|
11
|
+
* its `tx` superclass: UnaryNumericOp -> unary `value`; BinaryArithmetic /
|
|
12
|
+
* BinaryComparison -> binary; BooleanLogic -> n-ary `operands`;
|
|
13
|
+
* ListSourcedExpression / ListAggregate -> `source`; IteratingExpression
|
|
14
|
+
* -> `source` + `loopVar` + a body; plus the structural shapes the
|
|
15
|
+
* hierarchy can't imply (`Not`'s `operand`, `Clip`'s ternary, `Contains`'
|
|
16
|
+
* haystack/needle, `Matches`' matchSource/pattern). The tables below are
|
|
17
|
+
* that derivation, frozen.
|
|
15
18
|
*
|
|
16
|
-
* 2. PRIMITIVES — the
|
|
17
|
-
*
|
|
18
|
-
* matched in every language port (Round half-away-from-zero, floored
|
|
19
|
-
* Sign(0)=0, comparisons as 1/0
|
|
19
|
+
* 2. PRIMITIVES — the authored, determinism-bearing artifact. Tables map
|
|
20
|
+
* each operator URI to its fold. Determinism traps live here and are
|
|
21
|
+
* matched in every language port (Round half-away-from-zero, floored
|
|
22
|
+
* Modulo, Sign(0)=0, comparisons as 1/0, RFC 8785-style number
|
|
23
|
+
* stringification in Join, the pinned Matches regex subset).
|
|
20
24
|
*
|
|
21
25
|
* 3. THE FOLD — `evaluate`, a fixed shape: operators recurse + apply a
|
|
22
|
-
* primitive; literals return their
|
|
23
|
-
* VarRef, a domain `Step`/`Time`/`Smooth`,
|
|
24
|
-
* caller's `resolve(node, ctx, evaluate)`. The
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
26
|
+
* primitive; literals return their value; EVERYTHING ELSE (a typed
|
|
27
|
+
* VarRef, a domain `Step`/`Time`/`Smooth`, a host graph read, any future
|
|
28
|
+
* leaf) is handed to the caller's `resolve(node, ctx, evaluate)`. The
|
|
29
|
+
* runtime is a pure operator engine; binding, graph access, and
|
|
30
|
+
* domain-leaf semantics are the caller's business. A property read is
|
|
31
|
+
* just a caller leaf that returns a list — the kernel NEVER touches a
|
|
32
|
+
* graph.
|
|
33
|
+
*
|
|
34
|
+
* VALUE DOMAIN (expressionRuntimeVersion "2"): `number | string | ref | list`.
|
|
35
|
+
*
|
|
36
|
+
* - Booleans and comparison results remain `1`/`0` numbers (the v1 rule).
|
|
37
|
+
* - A `ref` is a canonical versionless URI identity (`{ ref: string }`),
|
|
38
|
+
* compared by URI-key equality — the same identity rule the ordered
|
|
39
|
+
* comparisons and `tx.Equals` share.
|
|
40
|
+
* - A `list` is an ordered sequence of values.
|
|
41
|
+
* - There is NO null/undefined: ABSENCE IS THE EMPTY LIST. A caller leaf
|
|
42
|
+
* for a property with no values returns `[]`; `IsSet` distinguishes.
|
|
43
|
+
*
|
|
44
|
+
* ERROR CONTRACT (v2 extension of the v1 fail-loud discipline):
|
|
45
|
+
*
|
|
46
|
+
* - COMPUTATIONS FAIL LOUD: an arithmetic/unary-numeric/boolean-logic
|
|
47
|
+
* operator whose operand is not a number, an aggregate over a non-numeric
|
|
48
|
+
* element, `Min`/`Max`/`Average` on an empty list, a nested list in
|
|
49
|
+
* `Join`, a non-string `Matches` source, an out-of-subset `Matches`
|
|
50
|
+
* pattern — all raise `ExpressionError`, never coerce.
|
|
51
|
+
* - PREDICATES FAIL CLOSED: `Equals` and the ordering comparisons on
|
|
52
|
+
* cross-kind or non-numeric operands return `0`, never error (the SHACL
|
|
53
|
+
* and reference-engine rule: a non-comparable value is a falsified
|
|
54
|
+
* constraint, not a crash).
|
|
55
|
+
*
|
|
56
|
+
* v1 COMPATIBILITY: the value domain is a strict superset and no numeric
|
|
57
|
+
* primitive changed — every v1 parity vector passes unchanged under v2. The
|
|
58
|
+
* conformance harness runs the v1 vector file through this kernel as the
|
|
59
|
+
* regression gate.
|
|
60
|
+
*
|
|
61
|
+
* LAMBDA BINDING (the one genuinely-new dispatch shape): the iterating
|
|
62
|
+
* operators (`Filter`, `ListMap`, `ForEach`) bind their `loopVar` per element.
|
|
63
|
+
* Within an iterating operator's body — and ONLY there — a `tx.VarRef` whose
|
|
64
|
+
* `varName` names a lexically-enclosing `loopVar` is resolved by the kernel to
|
|
65
|
+
* the bound element (innermost binder wins). Every other leaf, including a
|
|
66
|
+
* `VarRef` naming anything else, still goes to the caller's `resolve`. This is
|
|
67
|
+
* the scoped exception to "the kernel never privileges VarRef": VarRef is the
|
|
68
|
+
* bound-variable mechanism of the kernel's own binders, nothing more. The
|
|
69
|
+
* remaining iterating family (WindowedMap, PairwiseMap, Scan, DistinctBy,
|
|
70
|
+
* PartitionBy) is additive within v2 under this same reserved shape.
|
|
71
|
+
*
|
|
72
|
+
* `EXPRESSION_RUNTIME_VERSION` freezes the determinism contract; a change to
|
|
73
|
+
* any primitive, value rule, or dispatch entry requires a NEW version, never
|
|
74
|
+
* an edit in place. Adding an operator, or widening the Matches subset (an
|
|
75
|
+
* error becoming a defined result), is additive WITHIN a version.
|
|
32
76
|
*/
|
|
33
77
|
/** The frozen expression-runtime version (determinism contract). Not hashed. */
|
|
34
|
-
export declare const EXPRESSION_RUNTIME_VERSION = "
|
|
78
|
+
export declare const EXPRESSION_RUNTIME_VERSION = "2";
|
|
79
|
+
/**
|
|
80
|
+
* A reference value — a member's canonical versionless URI identity
|
|
81
|
+
* (`publisher/package/name`). Distinct from a string so `Equals` can hold the
|
|
82
|
+
* cross-kind-is-false rule: a URI is never equal to the string spelling of it.
|
|
83
|
+
*/
|
|
84
|
+
export interface RefValue {
|
|
85
|
+
ref: string;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* The v2 value domain. Booleans are `1`/`0` numbers; absence is the empty
|
|
89
|
+
* list; there is no null.
|
|
90
|
+
*/
|
|
91
|
+
export type Value = number | string | RefValue | Value[];
|
|
92
|
+
/** Discriminate a `RefValue` from the other object shape (arrays). */
|
|
93
|
+
export declare function isRef(v: Value): v is RefValue;
|
|
35
94
|
/** A node in the expression tree. `type` is the operator/literal/leaf canonical
|
|
36
95
|
* URI (versionless: `publisher/package/name`); operand keys are the frozen `tx`
|
|
37
96
|
* operand property local names. Unknown fields are ignored by the kernel and are
|
|
@@ -41,11 +100,12 @@ export interface ExprNode {
|
|
|
41
100
|
[operandOrValue: string]: unknown;
|
|
42
101
|
}
|
|
43
102
|
/** Resolve any node the kernel does not recognise as an operator or literal — a
|
|
44
|
-
* binding (`tx.VarRef`, a domain's typed `refersTo` VarRef)
|
|
45
|
-
* (
|
|
46
|
-
*
|
|
103
|
+
* binding (`tx.VarRef`, a domain's typed `refersTo` VarRef), a host graph read
|
|
104
|
+
* (a property-read leaf returning a list), or a domain leaf (`Step`, `Time`,
|
|
105
|
+
* `Smooth`…) — to a value. `ctx` is opaque caller state (the binding env, a
|
|
106
|
+
* graph handle, a sim clock, integration state). `evaluate` is handed back so a
|
|
47
107
|
* domain leaf containing sub-expressions can recurse into the kernel. */
|
|
48
|
-
export type Resolve<C> = (node: ExprNode, ctx: C, evaluate: (n: ExprNode, ctx: C) =>
|
|
108
|
+
export type Resolve<C> = (node: ExprNode, ctx: C, evaluate: (n: ExprNode, ctx: C) => Value) => Value;
|
|
49
109
|
/**
|
|
50
110
|
* The transitive closures ordered comparisons consult, keyed by the ordering
|
|
51
111
|
* property's canonical URI, then by member: `closures[property][from]` is the
|
|
@@ -71,29 +131,70 @@ export interface EvalOptions<C> {
|
|
|
71
131
|
export declare class ExpressionError extends Error {
|
|
72
132
|
}
|
|
73
133
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
134
|
+
* Validate a `Matches` pattern against the pinned subset — the intersection of
|
|
135
|
+
* RE2 and the host regex engines, chosen so every port compiles the same
|
|
136
|
+
* pattern to the same language. RE2 is both the restrictive common denominator
|
|
137
|
+
* and ReDoS-safe (no catastrophic backtracking), which is a REQUIREMENT for a
|
|
138
|
+
* predicate that may gate on adversarial input. Out-of-subset constructs are a
|
|
139
|
+
* LOUD error, the same discipline as Round/Modulo; WIDENING the subset later
|
|
140
|
+
* (an error becoming a defined result) is additive within v2.
|
|
141
|
+
*
|
|
142
|
+
* COUNTING UNIT — pinned: `.` and quantifiers count Unicode CODE POINTS, in
|
|
143
|
+
* every port. An astral-plane character (a surrogate pair in UTF-16 hosts)
|
|
144
|
+
* is ONE `.`, and `.{3}` matches exactly three code points — matching RE2's
|
|
145
|
+
* rune model and Python's, and what SHACL/SPARQL string length means. The
|
|
146
|
+
* UTF-16 engines must opt in (this port compiles with the `u` flag; Java
|
|
147
|
+
* and C# ports normalize equivalently) — without the pin, `.{m,n}` counts
|
|
148
|
+
* different units across exactly these seven targets, and the length
|
|
149
|
+
* lowering (`(?s)^.{m,}$`) would judge astral input differently per
|
|
150
|
+
* language. The astral vectors gate this: a port that counts code units
|
|
151
|
+
* fails conformance, not the tenant.
|
|
152
|
+
*
|
|
153
|
+
* Allowed: literals; `.`; anchors `^` `$`; alternation `|`; groups `(...)`,
|
|
154
|
+
* `(?:...)`; a WHOLE-PATTERN flag prefix over `i`/`m`/`s` (`(?i)` at position
|
|
155
|
+
* 0 only — each port translates it to its host flag mechanism); quantifiers
|
|
156
|
+
* `*` `+` `?` `{m}` `{m,}` `{m,n}`; character classes with ranges and
|
|
157
|
+
* negation; escapes `\d \D \w \W \s \S \b \B \n \r \t \f \v \xHH`, escaped
|
|
158
|
+
* syntax punctuation (`\.` `\*` `\+` `\?` `\(` `\)` `\[` `\]` `\{` `\}`
|
|
159
|
+
* `\|` `\^` `\$` `\\` `\/`), and `\-` inside character classes.
|
|
160
|
+
*
|
|
161
|
+
* Rejected (divergent or unsafe across engines): lookahead/lookbehind, named
|
|
162
|
+
* groups, backreferences (`\1`…, `\k`), MID-pattern flag groups (`(?i:…)` —
|
|
163
|
+
* not portable to the JS and Python engines), `\p{…}`/`\P{…}` unicode
|
|
164
|
+
* property classes, POSIX classes (`[[:alpha:]]`), class intersection
|
|
165
|
+
* (`&&`), atomic groups, conditionals, comments, octal/`\u`/`\x{…}` escapes,
|
|
166
|
+
* escaped space (`\ `), `\-` outside a class, and a bare unescaped `{` that
|
|
167
|
+
* is not a quantifier (literal braces must be escaped — engines disagree on
|
|
168
|
+
* the lenient reading, so the subset requires the explicit form).
|
|
169
|
+
*/
|
|
170
|
+
export declare function validateMatchesPattern(pattern: string): void;
|
|
171
|
+
/**
|
|
172
|
+
* Evaluate an expression tree to a value. Operators fold via the frozen
|
|
173
|
+
* dispatch + primitive tables; literals yield their value; any other node is
|
|
174
|
+
* delegated to `resolve`. `options` carries the ordered-comparison context
|
|
175
|
+
* (closures + identity-leaf resolution) and is only consulted when an
|
|
78
176
|
* `IsAtLeast` / `Dominates` node is reached.
|
|
79
177
|
*/
|
|
80
|
-
export declare function evaluate<C = unknown>(node: ExprNode, ctx: C, resolve: Resolve<C>, options?: EvalOptions<C>):
|
|
178
|
+
export declare function evaluate<C = unknown>(node: ExprNode, ctx: C, resolve: Resolve<C>, options?: EvalOptions<C>): Value;
|
|
81
179
|
/**
|
|
82
180
|
* One node of an evaluation trace — the verdict tree {@link explain} returns.
|
|
83
181
|
*
|
|
84
182
|
* Mirrors the expression: `type` is the node's type URI, `value` its result
|
|
85
183
|
* (`1`/`0` for booleans), `children` the operand traces in evaluation order.
|
|
86
184
|
* A short-circuited operand is simply ABSENT from `children` — the trace is
|
|
87
|
-
* truthful about what ran.
|
|
88
|
-
*
|
|
89
|
-
*
|
|
185
|
+
* truthful about what ran. An iterating operator's children are its source
|
|
186
|
+
* trace followed by one body trace per visited element. Ordered comparisons
|
|
187
|
+
* carry their resolved operand identities as `leftRef`/`rightRef` instead of
|
|
188
|
+
* children, since their operands are identities rather than value folds.
|
|
90
189
|
*
|
|
91
190
|
* This is a runtime return shape, not an ontology class: nothing authors a
|
|
92
|
-
* trace, so nothing about it is modelled or serialized as vocabulary.
|
|
191
|
+
* trace, so nothing about it is modelled or serialized as vocabulary. (A host
|
|
192
|
+
* assembling an AUTHORED report — e.g. a SHACL ValidationReport — builds it
|
|
193
|
+
* FROM these traces; the vocabulary lives with the host's ontology.)
|
|
93
194
|
*/
|
|
94
195
|
export interface TraceNode {
|
|
95
196
|
type: string;
|
|
96
|
-
value:
|
|
197
|
+
value: Value;
|
|
97
198
|
children: TraceNode[];
|
|
98
199
|
leftRef?: string;
|
|
99
200
|
rightRef?: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AAEH,gFAAgF;AAChF,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAK9C;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,EAAE,CAAC;AAEzD,sEAAsE;AACtE,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,QAAQ,CAE7C;AAED;;;+CAG+C;AAC/C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAED;;;;;yEAKyE;AACzE,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC;AAErG;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;AAE7E;;;kEAGkE;AAClE,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;AAE/D;;+DAE+D;AAC/D,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CAC5B;AAED,qBAAa,eAAgB,SAAQ,KAAK;CAAG;AAmQ7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CA0E5D;AA+JD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,GAAG,OAAO,EAClC,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,KAAK,CAEP;AA8KD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,CAAC,GAAG,OAAO,EACjC,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,SAAS,CAyKX"}
|
package/dist/index.js
CHANGED
|
@@ -2,38 +2,86 @@
|
|
|
2
2
|
* `@kanonak-protocol/expression` — the Kanonak expression RUNTIME.
|
|
3
3
|
*
|
|
4
4
|
* A small, deterministic tree-walker that folds a `kanonak.org/transformations`
|
|
5
|
-
* (`tx`) + `kanonak.org/math` expression tree to a
|
|
5
|
+
* (`tx`) + `kanonak.org/math` expression tree to a value. Generated SDKs
|
|
6
6
|
* reference it so a typed expression can be *run*, not just *represented*.
|
|
7
7
|
*
|
|
8
8
|
* Three layers, exactly as the six-language proof established:
|
|
9
9
|
*
|
|
10
|
-
* 1. DISPATCH — derived from the ontology. An operator's
|
|
11
|
-
* `tx` superclass: UnaryNumericOp -> unary `value`; BinaryArithmetic /
|
|
12
|
-
* BinaryComparison -> binary; BooleanLogic -> n-ary `operands`;
|
|
13
|
-
*
|
|
14
|
-
*
|
|
10
|
+
* 1. DISPATCH — derived from the ontology. An operator's shape falls out of
|
|
11
|
+
* its `tx` superclass: UnaryNumericOp -> unary `value`; BinaryArithmetic /
|
|
12
|
+
* BinaryComparison -> binary; BooleanLogic -> n-ary `operands`;
|
|
13
|
+
* ListSourcedExpression / ListAggregate -> `source`; IteratingExpression
|
|
14
|
+
* -> `source` + `loopVar` + a body; plus the structural shapes the
|
|
15
|
+
* hierarchy can't imply (`Not`'s `operand`, `Clip`'s ternary, `Contains`'
|
|
16
|
+
* haystack/needle, `Matches`' matchSource/pattern). The tables below are
|
|
17
|
+
* that derivation, frozen.
|
|
15
18
|
*
|
|
16
|
-
* 2. PRIMITIVES — the
|
|
17
|
-
*
|
|
18
|
-
* matched in every language port (Round half-away-from-zero, floored
|
|
19
|
-
* Sign(0)=0, comparisons as 1/0
|
|
19
|
+
* 2. PRIMITIVES — the authored, determinism-bearing artifact. Tables map
|
|
20
|
+
* each operator URI to its fold. Determinism traps live here and are
|
|
21
|
+
* matched in every language port (Round half-away-from-zero, floored
|
|
22
|
+
* Modulo, Sign(0)=0, comparisons as 1/0, RFC 8785-style number
|
|
23
|
+
* stringification in Join, the pinned Matches regex subset).
|
|
20
24
|
*
|
|
21
25
|
* 3. THE FOLD — `evaluate`, a fixed shape: operators recurse + apply a
|
|
22
|
-
* primitive; literals return their
|
|
23
|
-
* VarRef, a domain `Step`/`Time`/`Smooth`,
|
|
24
|
-
* caller's `resolve(node, ctx, evaluate)`. The
|
|
25
|
-
*
|
|
26
|
-
*
|
|
26
|
+
* primitive; literals return their value; EVERYTHING ELSE (a typed
|
|
27
|
+
* VarRef, a domain `Step`/`Time`/`Smooth`, a host graph read, any future
|
|
28
|
+
* leaf) is handed to the caller's `resolve(node, ctx, evaluate)`. The
|
|
29
|
+
* runtime is a pure operator engine; binding, graph access, and
|
|
30
|
+
* domain-leaf semantics are the caller's business. A property read is
|
|
31
|
+
* just a caller leaf that returns a list — the kernel NEVER touches a
|
|
32
|
+
* graph.
|
|
27
33
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
34
|
+
* VALUE DOMAIN (expressionRuntimeVersion "2"): `number | string | ref | list`.
|
|
35
|
+
*
|
|
36
|
+
* - Booleans and comparison results remain `1`/`0` numbers (the v1 rule).
|
|
37
|
+
* - A `ref` is a canonical versionless URI identity (`{ ref: string }`),
|
|
38
|
+
* compared by URI-key equality — the same identity rule the ordered
|
|
39
|
+
* comparisons and `tx.Equals` share.
|
|
40
|
+
* - A `list` is an ordered sequence of values.
|
|
41
|
+
* - There is NO null/undefined: ABSENCE IS THE EMPTY LIST. A caller leaf
|
|
42
|
+
* for a property with no values returns `[]`; `IsSet` distinguishes.
|
|
43
|
+
*
|
|
44
|
+
* ERROR CONTRACT (v2 extension of the v1 fail-loud discipline):
|
|
45
|
+
*
|
|
46
|
+
* - COMPUTATIONS FAIL LOUD: an arithmetic/unary-numeric/boolean-logic
|
|
47
|
+
* operator whose operand is not a number, an aggregate over a non-numeric
|
|
48
|
+
* element, `Min`/`Max`/`Average` on an empty list, a nested list in
|
|
49
|
+
* `Join`, a non-string `Matches` source, an out-of-subset `Matches`
|
|
50
|
+
* pattern — all raise `ExpressionError`, never coerce.
|
|
51
|
+
* - PREDICATES FAIL CLOSED: `Equals` and the ordering comparisons on
|
|
52
|
+
* cross-kind or non-numeric operands return `0`, never error (the SHACL
|
|
53
|
+
* and reference-engine rule: a non-comparable value is a falsified
|
|
54
|
+
* constraint, not a crash).
|
|
55
|
+
*
|
|
56
|
+
* v1 COMPATIBILITY: the value domain is a strict superset and no numeric
|
|
57
|
+
* primitive changed — every v1 parity vector passes unchanged under v2. The
|
|
58
|
+
* conformance harness runs the v1 vector file through this kernel as the
|
|
59
|
+
* regression gate.
|
|
60
|
+
*
|
|
61
|
+
* LAMBDA BINDING (the one genuinely-new dispatch shape): the iterating
|
|
62
|
+
* operators (`Filter`, `ListMap`, `ForEach`) bind their `loopVar` per element.
|
|
63
|
+
* Within an iterating operator's body — and ONLY there — a `tx.VarRef` whose
|
|
64
|
+
* `varName` names a lexically-enclosing `loopVar` is resolved by the kernel to
|
|
65
|
+
* the bound element (innermost binder wins). Every other leaf, including a
|
|
66
|
+
* `VarRef` naming anything else, still goes to the caller's `resolve`. This is
|
|
67
|
+
* the scoped exception to "the kernel never privileges VarRef": VarRef is the
|
|
68
|
+
* bound-variable mechanism of the kernel's own binders, nothing more. The
|
|
69
|
+
* remaining iterating family (WindowedMap, PairwiseMap, Scan, DistinctBy,
|
|
70
|
+
* PartitionBy) is additive within v2 under this same reserved shape.
|
|
71
|
+
*
|
|
72
|
+
* `EXPRESSION_RUNTIME_VERSION` freezes the determinism contract; a change to
|
|
73
|
+
* any primitive, value rule, or dispatch entry requires a NEW version, never
|
|
74
|
+
* an edit in place. Adding an operator, or widening the Matches subset (an
|
|
75
|
+
* error becoming a defined result), is additive WITHIN a version.
|
|
32
76
|
*/
|
|
33
77
|
/** The frozen expression-runtime version (determinism contract). Not hashed. */
|
|
34
|
-
export const EXPRESSION_RUNTIME_VERSION = '
|
|
78
|
+
export const EXPRESSION_RUNTIME_VERSION = '2';
|
|
35
79
|
const TX = 'kanonak.org/transformations';
|
|
36
80
|
const MATH = 'kanonak.org/math';
|
|
81
|
+
/** Discriminate a `RefValue` from the other object shape (arrays). */
|
|
82
|
+
export function isRef(v) {
|
|
83
|
+
return typeof v === 'object' && !Array.isArray(v);
|
|
84
|
+
}
|
|
37
85
|
export class ExpressionError extends Error {
|
|
38
86
|
}
|
|
39
87
|
const UN = (operand) => ({ kind: 'unary', operand });
|
|
@@ -73,6 +121,23 @@ const OPERATOR_ARITY = {
|
|
|
73
121
|
// semantics — handled explicitly in `evaluate`, not via the numeric tables.
|
|
74
122
|
[`${MATH}/Clip`]: { kind: 'ternary', a: 'clipValue', b: 'clipLower', c: 'clipUpper' },
|
|
75
123
|
};
|
|
124
|
+
/** IteratingExpression operators: `source` + `loopVar` + the body operand. */
|
|
125
|
+
const ITERATOR_BODY = {
|
|
126
|
+
[`${TX}/ForEach`]: 'emit',
|
|
127
|
+
[`${TX}/ListMap`]: 'mapBody',
|
|
128
|
+
[`${TX}/Filter`]: 'predicate',
|
|
129
|
+
};
|
|
130
|
+
/** KindPredicate operators the kernel can answer over ITS value domain.
|
|
131
|
+
* `IsBoolean` and `IsEmbedded` name kinds that exist only in a host object
|
|
132
|
+
* model (booleans are 1/0 numbers here; embedded nodes never enter the
|
|
133
|
+
* kernel), so they are NOT dispatch entries — they fall through to the
|
|
134
|
+
* caller's `resolve`, where the host answers with full fidelity. */
|
|
135
|
+
const KIND_PREDICATES = {
|
|
136
|
+
[`${TX}/IsString`]: (v) => typeof v === 'string',
|
|
137
|
+
[`${TX}/IsNumber`]: (v) => typeof v === 'number',
|
|
138
|
+
[`${TX}/IsReference`]: (v) => typeof v === 'object' && !Array.isArray(v),
|
|
139
|
+
[`${TX}/IsList`]: (v) => Array.isArray(v),
|
|
140
|
+
};
|
|
76
141
|
/** Floored modulo (the host `%` truncates toward zero): Modulo(-7,3) = 2. */
|
|
77
142
|
function flooredMod(a, b) {
|
|
78
143
|
if (b === 0)
|
|
@@ -89,7 +154,21 @@ function requireDomain(ok, msg) {
|
|
|
89
154
|
if (!ok)
|
|
90
155
|
throw new ExpressionError(msg);
|
|
91
156
|
}
|
|
92
|
-
/**
|
|
157
|
+
/** A computation operand must be a number — fail loud, never coerce. */
|
|
158
|
+
function requireNumber(v, op) {
|
|
159
|
+
if (typeof v !== 'number') {
|
|
160
|
+
throw new ExpressionError(`${op} requires a numeric operand, got ${kindOf(v)}`);
|
|
161
|
+
}
|
|
162
|
+
return v;
|
|
163
|
+
}
|
|
164
|
+
function kindOf(v) {
|
|
165
|
+
if (typeof v === 'number')
|
|
166
|
+
return 'number';
|
|
167
|
+
if (typeof v === 'string')
|
|
168
|
+
return 'string';
|
|
169
|
+
return Array.isArray(v) ? 'list' : 'ref';
|
|
170
|
+
}
|
|
171
|
+
/** Unary/binary numeric primitives, keyed by operator URI. The authored,
|
|
93
172
|
* determinism-bearing table — matched per language. */
|
|
94
173
|
const UNARY = {
|
|
95
174
|
[`${TX}/Abs`]: (x) => Math.abs(x),
|
|
@@ -103,7 +182,7 @@ const UNARY = {
|
|
|
103
182
|
[`${MATH}/Round`]: roundHalfAway,
|
|
104
183
|
[`${MATH}/Sign`]: (x) => Math.sign(x),
|
|
105
184
|
};
|
|
106
|
-
const
|
|
185
|
+
const BINARY_ARITH = {
|
|
107
186
|
[`${TX}/Add`]: (a, b) => a + b,
|
|
108
187
|
[`${TX}/Subtract`]: (a, b) => a - b,
|
|
109
188
|
[`${TX}/Multiply`]: (a, b) => a * b,
|
|
@@ -112,21 +191,356 @@ const BINARY = {
|
|
|
112
191
|
[`${MATH}/Modulo`]: flooredMod,
|
|
113
192
|
[`${MATH}/Minimum`]: (a, b) => Math.min(a, b),
|
|
114
193
|
[`${MATH}/Maximum`]: (a, b) => Math.max(a, b),
|
|
115
|
-
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Ordering comparisons are PREDICATES: on non-numeric operands they fail
|
|
197
|
+
* CLOSED (`0`), matching the reference engine and the SHACL rule that a
|
|
198
|
+
* non-comparable value falsifies a constraint. (Contrast the arithmetic
|
|
199
|
+
* table above, which fails loud.)
|
|
200
|
+
*/
|
|
201
|
+
const BINARY_ORDER = {
|
|
116
202
|
[`${TX}/GreaterThan`]: (a, b) => bool(a > b),
|
|
117
203
|
[`${TX}/LessThan`]: (a, b) => bool(a < b),
|
|
118
204
|
[`${TX}/GreaterThanOrEqual`]: (a, b) => bool(a >= b),
|
|
119
205
|
[`${TX}/LessThanOrEqual`]: (a, b) => bool(a <= b),
|
|
120
206
|
};
|
|
121
|
-
/**
|
|
207
|
+
/**
|
|
208
|
+
* Polymorphic value equality — the full `tx.Equals` ontology contract
|
|
209
|
+
* (v1 implemented its numeric half):
|
|
210
|
+
*
|
|
211
|
+
* - number/number, string/string: value equality.
|
|
212
|
+
* - ref/ref: canonical versionless URI-key equality — identity-by-name,
|
|
213
|
+
* the same rule as the ordered comparisons.
|
|
214
|
+
* - lists: never equal (a list is a container, not a comparable value).
|
|
215
|
+
* - any cross-kind pair: false. Never errors.
|
|
216
|
+
*/
|
|
217
|
+
function valuesEqual(a, b) {
|
|
218
|
+
if (typeof a === 'number' && typeof b === 'number')
|
|
219
|
+
return a === b;
|
|
220
|
+
if (typeof a === 'string' && typeof b === 'string')
|
|
221
|
+
return a === b;
|
|
222
|
+
if (typeof a === 'object' && typeof b === 'object' && !Array.isArray(a) && !Array.isArray(b)) {
|
|
223
|
+
return a.ref === b.ref;
|
|
224
|
+
}
|
|
225
|
+
return false;
|
|
226
|
+
}
|
|
227
|
+
/** Value of a literal node, or `undefined` if it is not a literal. In v2 the
|
|
228
|
+
* string and URI literals are kernel-known: `StringLiteral` yields its string,
|
|
229
|
+
* `UriLiteral` yields a ref value (its `refTo` IS its identity, the way an
|
|
230
|
+
* IntegerLiteral's number is its value). */
|
|
122
231
|
function literalValue(node) {
|
|
123
232
|
switch (node.type) {
|
|
124
233
|
case `${TX}/IntegerLiteral`: return Number(node.integerLiteral);
|
|
125
234
|
case `${TX}/DecimalLiteral`: return Number(node.decimalLiteral);
|
|
126
235
|
case `${TX}/BooleanLiteral`: return bool(node.booleanLiteral === true || node.booleanLiteral === 'true');
|
|
236
|
+
case `${TX}/StringLiteral`: {
|
|
237
|
+
const s = node.stringLiteral;
|
|
238
|
+
if (typeof s !== 'string')
|
|
239
|
+
throw new ExpressionError('StringLiteral is missing stringLiteral');
|
|
240
|
+
return s;
|
|
241
|
+
}
|
|
242
|
+
case `${TX}/UriLiteral`: {
|
|
243
|
+
const ref = node.refTo;
|
|
244
|
+
if (typeof ref !== 'string' || ref.length === 0) {
|
|
245
|
+
throw new ExpressionError('UriLiteral is missing refTo');
|
|
246
|
+
}
|
|
247
|
+
return { ref };
|
|
248
|
+
}
|
|
127
249
|
default: return undefined;
|
|
128
250
|
}
|
|
129
251
|
}
|
|
252
|
+
/**
|
|
253
|
+
* Stringify one Join element. Numbers follow the ECMAScript number-to-string
|
|
254
|
+
* rule — the same serialization RFC 8785 (JCS) pins and the canonical layer
|
|
255
|
+
* already implements in every port, so Join output is deterministic across
|
|
256
|
+
* languages. Refs stringify to their LOCAL name (the reference-engine rule for
|
|
257
|
+
* display joins). A nested list is a computation type error — loud.
|
|
258
|
+
*/
|
|
259
|
+
function joinElement(v) {
|
|
260
|
+
if (typeof v === 'string')
|
|
261
|
+
return v;
|
|
262
|
+
if (typeof v === 'number')
|
|
263
|
+
return String(v);
|
|
264
|
+
if (Array.isArray(v))
|
|
265
|
+
throw new ExpressionError('Join cannot stringify a nested list');
|
|
266
|
+
return v.ref.slice(v.ref.lastIndexOf('/') + 1);
|
|
267
|
+
}
|
|
268
|
+
/** `IsSet`: absence is the empty list; the empty string is also unset (the
|
|
269
|
+
* reference-engine rule). Everything else — including `0` — is set. */
|
|
270
|
+
function isSet(v) {
|
|
271
|
+
if (typeof v === 'string')
|
|
272
|
+
return v.length > 0;
|
|
273
|
+
if (Array.isArray(v))
|
|
274
|
+
return v.length > 0;
|
|
275
|
+
return true;
|
|
276
|
+
}
|
|
277
|
+
/** The `source`-operand fold table for the non-iterating list family. */
|
|
278
|
+
const LIST_FOLDS = {
|
|
279
|
+
[`${TX}/Count`]: (list) => list.length,
|
|
280
|
+
[`${TX}/Sum`]: (list) => {
|
|
281
|
+
let total = 0;
|
|
282
|
+
for (const el of list)
|
|
283
|
+
total += requireNumber(el, 'Sum');
|
|
284
|
+
return total;
|
|
285
|
+
},
|
|
286
|
+
[`${TX}/Min`]: (list) => {
|
|
287
|
+
if (list.length === 0)
|
|
288
|
+
throw new ExpressionError('Min on an empty list is undefined; guard with IsSet');
|
|
289
|
+
let best = requireNumber(list[0], 'Min');
|
|
290
|
+
for (let i = 1; i < list.length; i++) {
|
|
291
|
+
const n = requireNumber(list[i], 'Min');
|
|
292
|
+
if (n < best)
|
|
293
|
+
best = n;
|
|
294
|
+
}
|
|
295
|
+
return best;
|
|
296
|
+
},
|
|
297
|
+
[`${TX}/Max`]: (list) => {
|
|
298
|
+
if (list.length === 0)
|
|
299
|
+
throw new ExpressionError('Max on an empty list is undefined; guard with IsSet');
|
|
300
|
+
let best = requireNumber(list[0], 'Max');
|
|
301
|
+
for (let i = 1; i < list.length; i++) {
|
|
302
|
+
const n = requireNumber(list[i], 'Max');
|
|
303
|
+
if (n > best)
|
|
304
|
+
best = n;
|
|
305
|
+
}
|
|
306
|
+
return best;
|
|
307
|
+
},
|
|
308
|
+
[`${TX}/Average`]: (list) => {
|
|
309
|
+
if (list.length === 0)
|
|
310
|
+
throw new ExpressionError('Average on an empty list is undefined; guard with IsSet');
|
|
311
|
+
let total = 0;
|
|
312
|
+
for (const el of list)
|
|
313
|
+
total += requireNumber(el, 'Average');
|
|
314
|
+
return total / list.length;
|
|
315
|
+
},
|
|
316
|
+
[`${TX}/Join`]: (list, node) => {
|
|
317
|
+
const sep = typeof node.separator === 'string' ? node.separator : '';
|
|
318
|
+
return list.map(joinElement).join(sep);
|
|
319
|
+
},
|
|
320
|
+
[`${TX}/Reverse`]: (list) => [...list].reverse(),
|
|
321
|
+
};
|
|
322
|
+
// ---------------------------------------------------------------------------
|
|
323
|
+
// Matches — the pinned RE2-compatible XSD-regex subset.
|
|
324
|
+
// ---------------------------------------------------------------------------
|
|
325
|
+
/**
|
|
326
|
+
* Validate a `Matches` pattern against the pinned subset — the intersection of
|
|
327
|
+
* RE2 and the host regex engines, chosen so every port compiles the same
|
|
328
|
+
* pattern to the same language. RE2 is both the restrictive common denominator
|
|
329
|
+
* and ReDoS-safe (no catastrophic backtracking), which is a REQUIREMENT for a
|
|
330
|
+
* predicate that may gate on adversarial input. Out-of-subset constructs are a
|
|
331
|
+
* LOUD error, the same discipline as Round/Modulo; WIDENING the subset later
|
|
332
|
+
* (an error becoming a defined result) is additive within v2.
|
|
333
|
+
*
|
|
334
|
+
* COUNTING UNIT — pinned: `.` and quantifiers count Unicode CODE POINTS, in
|
|
335
|
+
* every port. An astral-plane character (a surrogate pair in UTF-16 hosts)
|
|
336
|
+
* is ONE `.`, and `.{3}` matches exactly three code points — matching RE2's
|
|
337
|
+
* rune model and Python's, and what SHACL/SPARQL string length means. The
|
|
338
|
+
* UTF-16 engines must opt in (this port compiles with the `u` flag; Java
|
|
339
|
+
* and C# ports normalize equivalently) — without the pin, `.{m,n}` counts
|
|
340
|
+
* different units across exactly these seven targets, and the length
|
|
341
|
+
* lowering (`(?s)^.{m,}$`) would judge astral input differently per
|
|
342
|
+
* language. The astral vectors gate this: a port that counts code units
|
|
343
|
+
* fails conformance, not the tenant.
|
|
344
|
+
*
|
|
345
|
+
* Allowed: literals; `.`; anchors `^` `$`; alternation `|`; groups `(...)`,
|
|
346
|
+
* `(?:...)`; a WHOLE-PATTERN flag prefix over `i`/`m`/`s` (`(?i)` at position
|
|
347
|
+
* 0 only — each port translates it to its host flag mechanism); quantifiers
|
|
348
|
+
* `*` `+` `?` `{m}` `{m,}` `{m,n}`; character classes with ranges and
|
|
349
|
+
* negation; escapes `\d \D \w \W \s \S \b \B \n \r \t \f \v \xHH`, escaped
|
|
350
|
+
* syntax punctuation (`\.` `\*` `\+` `\?` `\(` `\)` `\[` `\]` `\{` `\}`
|
|
351
|
+
* `\|` `\^` `\$` `\\` `\/`), and `\-` inside character classes.
|
|
352
|
+
*
|
|
353
|
+
* Rejected (divergent or unsafe across engines): lookahead/lookbehind, named
|
|
354
|
+
* groups, backreferences (`\1`…, `\k`), MID-pattern flag groups (`(?i:…)` —
|
|
355
|
+
* not portable to the JS and Python engines), `\p{…}`/`\P{…}` unicode
|
|
356
|
+
* property classes, POSIX classes (`[[:alpha:]]`), class intersection
|
|
357
|
+
* (`&&`), atomic groups, conditionals, comments, octal/`\u`/`\x{…}` escapes,
|
|
358
|
+
* escaped space (`\ `), `\-` outside a class, and a bare unescaped `{` that
|
|
359
|
+
* is not a quantifier (literal braces must be escaped — engines disagree on
|
|
360
|
+
* the lenient reading, so the subset requires the explicit form).
|
|
361
|
+
*/
|
|
362
|
+
export function validateMatchesPattern(pattern) {
|
|
363
|
+
const fail = (what) => {
|
|
364
|
+
throw new ExpressionError(`Matches pattern is outside the pinned regex subset (${what}): ${pattern}`);
|
|
365
|
+
};
|
|
366
|
+
// The u-legal intersection: character-class escapes, control escapes,
|
|
367
|
+
// \xHH, and escaped SYNTAX punctuation. `\-` is legal only INSIDE a class;
|
|
368
|
+
// `\ ` (escaped space) is not legal at all — both are Annex-B leniencies
|
|
369
|
+
// the code-point mode (and other engines) reject.
|
|
370
|
+
const ALLOWED_ESCAPES = new Set([
|
|
371
|
+
'd', 'D', 'w', 'W', 's', 'S', 'b', 'B', 'n', 'r', 't', 'f', 'v',
|
|
372
|
+
'.', '*', '+', '?', '(', ')', '[', ']', '{', '}', '|', '^', '$', '\\', '/',
|
|
373
|
+
]);
|
|
374
|
+
let inClass = false;
|
|
375
|
+
for (let i = 0; i < pattern.length; i++) {
|
|
376
|
+
const c = pattern[i];
|
|
377
|
+
if (c === '\\') {
|
|
378
|
+
const e = pattern[i + 1];
|
|
379
|
+
if (e === undefined)
|
|
380
|
+
fail('trailing backslash');
|
|
381
|
+
if (e === 'x') {
|
|
382
|
+
// \xHH only — \x{…} (RE2 long form) is not portable to the JS engine.
|
|
383
|
+
const hex = pattern.slice(i + 2, i + 4);
|
|
384
|
+
if (!/^[0-9a-fA-F]{2}$/.test(hex))
|
|
385
|
+
fail('\\x escape must be \\xHH');
|
|
386
|
+
if (pattern[i + 2] === '{')
|
|
387
|
+
fail('\\x{…} escape');
|
|
388
|
+
i += 3;
|
|
389
|
+
continue;
|
|
390
|
+
}
|
|
391
|
+
if (e >= '0' && e <= '9')
|
|
392
|
+
fail(`backreference or octal escape \\${e}`);
|
|
393
|
+
if (e === 'p' || e === 'P')
|
|
394
|
+
fail(`unicode property class \\${e}{…}`);
|
|
395
|
+
if (e === 'k')
|
|
396
|
+
fail('named backreference \\k');
|
|
397
|
+
if (e === 'u')
|
|
398
|
+
fail('\\u escape');
|
|
399
|
+
if (e === '-') {
|
|
400
|
+
if (!inClass)
|
|
401
|
+
fail('\\- outside a character class');
|
|
402
|
+
i++;
|
|
403
|
+
continue;
|
|
404
|
+
}
|
|
405
|
+
if ((e === 'b' || e === 'B') && inClass) {
|
|
406
|
+
// In-class \b is backspace in JS but an error in RE2-family engines —
|
|
407
|
+
// reject the divergent reading; word boundaries are outside-class only.
|
|
408
|
+
fail(`\\${e} inside a character class`);
|
|
409
|
+
}
|
|
410
|
+
if ((e === 'D' || e === 'W' || e === 'S') && inClass) {
|
|
411
|
+
// A negated shorthand inside a class is inexpressible as a textual
|
|
412
|
+
// fragment under the pinned ASCII expansion — reject rather than
|
|
413
|
+
// inherit each engine's own reading.
|
|
414
|
+
fail(`\\${e} inside a character class`);
|
|
415
|
+
}
|
|
416
|
+
if (!ALLOWED_ESCAPES.has(e))
|
|
417
|
+
fail(`escape \\${e}`);
|
|
418
|
+
i++;
|
|
419
|
+
continue;
|
|
420
|
+
}
|
|
421
|
+
if (inClass) {
|
|
422
|
+
if (c === ']') {
|
|
423
|
+
inClass = false;
|
|
424
|
+
continue;
|
|
425
|
+
}
|
|
426
|
+
if (c === '&' && pattern[i + 1] === '&')
|
|
427
|
+
fail('character-class intersection &&');
|
|
428
|
+
if (c === '[' && pattern[i + 1] === ':')
|
|
429
|
+
fail('POSIX class [[:…:]]');
|
|
430
|
+
continue;
|
|
431
|
+
}
|
|
432
|
+
if (c === '[') {
|
|
433
|
+
inClass = true;
|
|
434
|
+
continue;
|
|
435
|
+
}
|
|
436
|
+
if (c === '(' && pattern[i + 1] === '?') {
|
|
437
|
+
// Only (?: survives mid-pattern; the flag prefix (?ims) is legal at
|
|
438
|
+
// position 0 ONLY (validated by splitFlagPrefix before this scanner).
|
|
439
|
+
if (pattern[i + 2] !== ':')
|
|
440
|
+
fail(`group construct (?${pattern[i + 2] ?? ''}`);
|
|
441
|
+
i += 2; // resume after '?:'
|
|
442
|
+
continue;
|
|
443
|
+
}
|
|
444
|
+
if (c === '{') {
|
|
445
|
+
// A bare `{` must start a valid quantifier — engines disagree on the
|
|
446
|
+
// lenient literal reading, so the SCANNER enforces the rule uniformly
|
|
447
|
+
// (a literal brace is written \{), not each host's compile behavior.
|
|
448
|
+
if (!/^\{\d+(,\d*)?\}/.test(pattern.slice(i))) {
|
|
449
|
+
fail("bare '{' that is not a quantifier (write \\{)");
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
if (inClass)
|
|
454
|
+
fail('unterminated character class');
|
|
455
|
+
}
|
|
456
|
+
/** Split the whole-pattern flag prefix — `(?i)`, `(?ims)` at position 0 —
|
|
457
|
+
* from the body. Each port translates the flags to its host mechanism (`i`
|
|
458
|
+
* case-fold, `m` multiline anchors, `s` dot-matches-newline). */
|
|
459
|
+
function splitFlagPrefix(pattern) {
|
|
460
|
+
const m = /^\(\?([ims]+)\)/.exec(pattern);
|
|
461
|
+
if (!m)
|
|
462
|
+
return { flags: '', body: pattern };
|
|
463
|
+
return { flags: m[1], body: pattern.slice(m[0].length) };
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* The pinned ASCII expansions of the shorthand classes — the dialect defines
|
|
467
|
+
* `\d` `\w` `\s` BY these expansions, and every port applies them textually
|
|
468
|
+
* before compiling, because the native shorthands diverge across exactly our
|
|
469
|
+
* targets (Rust/Python `\d` matches Arabic-Indic digits; JS `\s` matches
|
|
470
|
+
* NBSP; `\b` is Unicode in Rust/Python, ASCII in JS/RE2). Outside a class
|
|
471
|
+
* the shorthand becomes a bracketed class; inside a class it splices as a
|
|
472
|
+
* fragment. `\b`/`\B` stay as-written — ASCII word boundaries, native in
|
|
473
|
+
* this engine (Rust: `(?-u:\b)`; Python: `re.ASCII`).
|
|
474
|
+
*/
|
|
475
|
+
const CLASS_EXPANSION_OUT = {
|
|
476
|
+
d: '[0-9]', D: '[^0-9]',
|
|
477
|
+
w: '[0-9A-Za-z_]', W: '[^0-9A-Za-z_]',
|
|
478
|
+
s: '[ \\t\\n\\r\\f\\x0B]', S: '[^ \\t\\n\\r\\f\\x0B]',
|
|
479
|
+
};
|
|
480
|
+
const CLASS_EXPANSION_IN = {
|
|
481
|
+
d: '0-9',
|
|
482
|
+
w: '0-9A-Za-z_',
|
|
483
|
+
s: ' \\t\\n\\r\\f\\x0B',
|
|
484
|
+
};
|
|
485
|
+
/** Apply the pinned ASCII expansions (subset-validated input, so every `\X`
|
|
486
|
+
* is a known escape and class boundaries are well-formed). Also pins the
|
|
487
|
+
* non-dotAll `.`: the dialect defines it as "any code point except \n" (the
|
|
488
|
+
* RE2/Python/Go norm) — THIS engine natively excludes \r/U+2028/U+2029 as
|
|
489
|
+
* well, so a non-dotAll `.` translates to `[^\n]`. Under `s`, every engine's
|
|
490
|
+
* dotAll means "everything" and `.` passes through. */
|
|
491
|
+
function expandShorthandClasses(body, dotAll) {
|
|
492
|
+
let out = '';
|
|
493
|
+
let inClass = false;
|
|
494
|
+
for (let i = 0; i < body.length; i++) {
|
|
495
|
+
const c = body[i];
|
|
496
|
+
if (c === '\\') {
|
|
497
|
+
const e = body[i + 1];
|
|
498
|
+
const table = inClass ? CLASS_EXPANSION_IN : CLASS_EXPANSION_OUT;
|
|
499
|
+
const expansion = table[e];
|
|
500
|
+
if (expansion !== undefined) {
|
|
501
|
+
out += expansion;
|
|
502
|
+
}
|
|
503
|
+
else {
|
|
504
|
+
out += c + e;
|
|
505
|
+
}
|
|
506
|
+
i++;
|
|
507
|
+
continue;
|
|
508
|
+
}
|
|
509
|
+
if (!inClass && c === '.' && !dotAll) {
|
|
510
|
+
out += '[^\\n]';
|
|
511
|
+
continue;
|
|
512
|
+
}
|
|
513
|
+
if (!inClass && c === '[')
|
|
514
|
+
inClass = true;
|
|
515
|
+
else if (inClass && c === ']')
|
|
516
|
+
inClass = false;
|
|
517
|
+
out += c;
|
|
518
|
+
}
|
|
519
|
+
return out;
|
|
520
|
+
}
|
|
521
|
+
/** Compile + test under fn:matches semantics: UNANCHORED (substring) — authors
|
|
522
|
+
* write `^…$` for a whole-string match. The flag prefix splits off first
|
|
523
|
+
* (translated to host RegExp flags), then the body is subset-validated, so
|
|
524
|
+
* the host engine only ever sees portable constructs. Always compiled with
|
|
525
|
+
* `u` — the pinned CODE-POINT counting unit (an astral character is one `.`;
|
|
526
|
+
* `.{m,n}` counts code points, matching RE2/Python and SHACL string length).
|
|
527
|
+
* `u` also rejects a bare literal `{`, turning an engine-divergent lenient
|
|
528
|
+
* reading into the subset's loud error. */
|
|
529
|
+
function matchesPattern(input, pattern) {
|
|
530
|
+
const { flags, body } = splitFlagPrefix(pattern);
|
|
531
|
+
validateMatchesPattern(body);
|
|
532
|
+
let re;
|
|
533
|
+
try {
|
|
534
|
+
re = new RegExp(expandShorthandClasses(body, flags.includes('s')), flags + 'u');
|
|
535
|
+
}
|
|
536
|
+
catch {
|
|
537
|
+
throw new ExpressionError(`Matches pattern does not compile: ${pattern}`);
|
|
538
|
+
}
|
|
539
|
+
return re.test(input);
|
|
540
|
+
}
|
|
541
|
+
// ---------------------------------------------------------------------------
|
|
542
|
+
// Ordered comparisons (unchanged from v1).
|
|
543
|
+
// ---------------------------------------------------------------------------
|
|
130
544
|
/**
|
|
131
545
|
* The identity an ordered comparison compares — a member's canonical
|
|
132
546
|
* versionless URI. `tx.UriLiteral` is the kernel-known constant leaf (its
|
|
@@ -175,26 +589,54 @@ function foldOrdered(node, ctx, options) {
|
|
|
175
589
|
: bool((closure[left] ?? []).includes(right));
|
|
176
590
|
return { value, left, right };
|
|
177
591
|
}
|
|
592
|
+
/** Innermost-wins lookup of a lambda-bound variable. */
|
|
593
|
+
function boundValue(frames, name) {
|
|
594
|
+
for (let i = frames.length - 1; i >= 0; i--) {
|
|
595
|
+
if (frames[i].name === name)
|
|
596
|
+
return frames[i].value;
|
|
597
|
+
}
|
|
598
|
+
return undefined;
|
|
599
|
+
}
|
|
178
600
|
/**
|
|
179
|
-
* Evaluate an expression tree to a
|
|
180
|
-
* dispatch + primitive tables; literals yield their
|
|
181
|
-
*
|
|
182
|
-
*
|
|
601
|
+
* Evaluate an expression tree to a value. Operators fold via the frozen
|
|
602
|
+
* dispatch + primitive tables; literals yield their value; any other node is
|
|
603
|
+
* delegated to `resolve`. `options` carries the ordered-comparison context
|
|
604
|
+
* (closures + identity-leaf resolution) and is only consulted when an
|
|
183
605
|
* `IsAtLeast` / `Dominates` node is reached.
|
|
184
606
|
*/
|
|
185
607
|
export function evaluate(node, ctx, resolve, options) {
|
|
186
|
-
|
|
608
|
+
return evalNode(node, ctx, resolve, options, []);
|
|
609
|
+
}
|
|
610
|
+
/** `source` operand evaluated as a list: a scalar promotes to a one-element
|
|
611
|
+
* list (the reference-engine rule); an empty list is absence. */
|
|
612
|
+
function evalSourceList(node, ctx, resolve, options, frames) {
|
|
613
|
+
const v = evalNode(operand(node, 'source'), ctx, resolve, options, frames);
|
|
614
|
+
return Array.isArray(v) ? v : [v];
|
|
615
|
+
}
|
|
616
|
+
function evalNode(node, ctx, resolve, options, frames) {
|
|
617
|
+
const recurse = (n, c) => evalNode(n, c, resolve, options, frames);
|
|
618
|
+
const recurseNumber = (n, c, op) => requireNumber(recurse(n, c), op);
|
|
187
619
|
const arity = OPERATOR_ARITY[node.type];
|
|
188
620
|
if (arity) {
|
|
189
621
|
switch (arity.kind) {
|
|
190
622
|
case 'unary': {
|
|
191
|
-
const x =
|
|
623
|
+
const x = recurseNumber(operand(node, arity.operand), ctx, node.type);
|
|
192
624
|
return UNARY[node.type](x);
|
|
193
625
|
}
|
|
194
626
|
case 'binary': {
|
|
195
627
|
const a = recurse(operand(node, arity.left), ctx);
|
|
196
628
|
const b = recurse(operand(node, arity.right), ctx);
|
|
197
|
-
|
|
629
|
+
if (node.type === `${TX}/Equals`)
|
|
630
|
+
return bool(valuesEqual(a, b));
|
|
631
|
+
const order = BINARY_ORDER[node.type];
|
|
632
|
+
if (order) {
|
|
633
|
+
// Predicate: non-numeric operands fail CLOSED.
|
|
634
|
+
if (typeof a !== 'number' || typeof b !== 'number')
|
|
635
|
+
return 0;
|
|
636
|
+
return order(a, b);
|
|
637
|
+
}
|
|
638
|
+
// Arithmetic: computation — fail LOUD on non-numbers.
|
|
639
|
+
return BINARY_ARITH[node.type](requireNumber(a, node.type), requireNumber(b, node.type));
|
|
198
640
|
}
|
|
199
641
|
case 'nary': {
|
|
200
642
|
const items = node[arity.operands];
|
|
@@ -203,7 +645,7 @@ export function evaluate(node, ctx, resolve, options) {
|
|
|
203
645
|
const isAnd = node.type === `${TX}/And`;
|
|
204
646
|
// Short-circuit; empty And is vacuously true, empty Or vacuously false.
|
|
205
647
|
for (const item of items) {
|
|
206
|
-
const v = truthy(recurse(item, ctx));
|
|
648
|
+
const v = truthy(requireNumber(recurse(item, ctx), node.type));
|
|
207
649
|
if (isAnd && !v)
|
|
208
650
|
return 0;
|
|
209
651
|
if (!isAnd && v)
|
|
@@ -213,28 +655,104 @@ export function evaluate(node, ctx, resolve, options) {
|
|
|
213
655
|
}
|
|
214
656
|
case 'ternary': {
|
|
215
657
|
// Only Clip today: clamp clipValue into [clipLower, clipUpper].
|
|
216
|
-
const v =
|
|
217
|
-
const lo =
|
|
218
|
-
const hi =
|
|
658
|
+
const v = recurseNumber(operand(node, arity.a), ctx, node.type);
|
|
659
|
+
const lo = recurseNumber(operand(node, arity.b), ctx, node.type);
|
|
660
|
+
const hi = recurseNumber(operand(node, arity.c), ctx, node.type);
|
|
219
661
|
return Math.min(Math.max(v, lo), hi);
|
|
220
662
|
}
|
|
221
663
|
}
|
|
222
664
|
}
|
|
223
665
|
if (node.type === `${TX}/Not`) {
|
|
224
|
-
return bool(!truthy(recurse(operand(node, 'operand'), ctx)));
|
|
666
|
+
return bool(!truthy(requireNumber(recurse(operand(node, 'operand'), ctx), node.type)));
|
|
225
667
|
}
|
|
226
668
|
if (node.type === `${TX}/IsAtLeast` || node.type === `${TX}/Dominates`) {
|
|
227
669
|
return foldOrdered(node, ctx, options).value;
|
|
228
670
|
}
|
|
671
|
+
const listFold = LIST_FOLDS[node.type];
|
|
672
|
+
if (listFold) {
|
|
673
|
+
return listFold(evalSourceList(node, ctx, resolve, options, frames), node);
|
|
674
|
+
}
|
|
675
|
+
const body = ITERATOR_BODY[node.type];
|
|
676
|
+
if (body) {
|
|
677
|
+
const loopVar = node.loopVar;
|
|
678
|
+
if (typeof loopVar !== 'string' || loopVar.length === 0) {
|
|
679
|
+
throw new ExpressionError(`${node.type} is missing loopVar`);
|
|
680
|
+
}
|
|
681
|
+
const list = evalSourceList(node, ctx, resolve, options, frames);
|
|
682
|
+
const bodyNode = operand(node, body);
|
|
683
|
+
const out = [];
|
|
684
|
+
for (const el of list) {
|
|
685
|
+
const inner = [...frames, { name: loopVar, value: el }];
|
|
686
|
+
const v = evalNode(bodyNode, ctx, resolve, options, inner);
|
|
687
|
+
if (node.type === `${TX}/Filter`) {
|
|
688
|
+
if (truthy(requireNumber(v, 'Filter predicate')))
|
|
689
|
+
out.push(el);
|
|
690
|
+
}
|
|
691
|
+
else if (node.type === `${TX}/ForEach`) {
|
|
692
|
+
// Flatten one level; an empty list contributes nothing — which is
|
|
693
|
+
// exactly the absence rule doing the reference engine's skip.
|
|
694
|
+
if (Array.isArray(v))
|
|
695
|
+
out.push(...v);
|
|
696
|
+
else
|
|
697
|
+
out.push(v);
|
|
698
|
+
}
|
|
699
|
+
else {
|
|
700
|
+
out.push(v);
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
return out;
|
|
704
|
+
}
|
|
705
|
+
if (node.type === `${TX}/Contains`) {
|
|
706
|
+
const haystack = evalNode(operand(node, 'haystack'), ctx, resolve, options, frames);
|
|
707
|
+
const needle = evalNode(operand(node, 'needle'), ctx, resolve, options, frames);
|
|
708
|
+
const list = Array.isArray(haystack) ? haystack : [haystack];
|
|
709
|
+
return bool(list.some((el) => valuesEqual(el, needle)));
|
|
710
|
+
}
|
|
711
|
+
if (node.type === `${TX}/IsSet`) {
|
|
712
|
+
return bool(isSet(evalNode(operand(node, 'checkExpr'), ctx, resolve, options, frames)));
|
|
713
|
+
}
|
|
714
|
+
if (node.type === `${TX}/ListItemAt`) {
|
|
715
|
+
const list = evalSourceList(node, ctx, resolve, options, frames);
|
|
716
|
+
const idx = evalNode(operand(node, 'itemIndex'), ctx, resolve, options, frames);
|
|
717
|
+
if (typeof idx !== 'number' || !Number.isInteger(idx) || idx < 0) {
|
|
718
|
+
throw new ExpressionError('ListItemAt itemIndex must be a non-negative integer');
|
|
719
|
+
}
|
|
720
|
+
// Past the end is ABSENCE, not an error — the empty list; guard with IsSet.
|
|
721
|
+
return idx < list.length ? list[idx] : [];
|
|
722
|
+
}
|
|
723
|
+
if (node.type === `${TX}/Matches`) {
|
|
724
|
+
const src = evalNode(operand(node, 'matchSource'), ctx, resolve, options, frames);
|
|
725
|
+
if (typeof src !== 'string') {
|
|
726
|
+
throw new ExpressionError(`Matches requires a string matchSource, got ${kindOf(src)}`);
|
|
727
|
+
}
|
|
728
|
+
const pattern = node.pattern;
|
|
729
|
+
if (typeof pattern !== 'string')
|
|
730
|
+
throw new ExpressionError('Matches is missing pattern');
|
|
731
|
+
return bool(matchesPattern(src, pattern));
|
|
732
|
+
}
|
|
733
|
+
const kind = KIND_PREDICATES[node.type];
|
|
734
|
+
if (kind) {
|
|
735
|
+
return bool(kind(evalNode(operand(node, 'kindCheck'), ctx, resolve, options, frames)));
|
|
736
|
+
}
|
|
229
737
|
const lit = literalValue(node);
|
|
230
738
|
if (lit !== undefined)
|
|
231
739
|
return lit;
|
|
232
|
-
//
|
|
233
|
-
|
|
740
|
+
// A VarRef naming a lexically-enclosing loopVar is the kernel's own bound
|
|
741
|
+
// variable — the ONLY leaf the kernel answers (see the header). Any other
|
|
742
|
+
// VarRef, and every other leaf, is the caller's.
|
|
743
|
+
if (node.type === `${TX}/VarRef` && typeof node.varName === 'string') {
|
|
744
|
+
const bound = boundValue(frames, node.varName);
|
|
745
|
+
if (bound !== undefined)
|
|
746
|
+
return bound;
|
|
747
|
+
}
|
|
748
|
+
// Not an operator or literal — a binding, graph read, or domain leaf. The
|
|
749
|
+
// caller owns it. (Recursion from inside `resolve` re-enters WITHOUT lambda
|
|
750
|
+
// frames: the caller's subtrees are the caller's scope.)
|
|
751
|
+
return resolve(node, ctx, (n, c) => evalNode(n, c, resolve, options, []));
|
|
234
752
|
}
|
|
235
753
|
function operand(node, key) {
|
|
236
754
|
const v = node[key];
|
|
237
|
-
if (v === null || v === undefined || typeof v !== 'object') {
|
|
755
|
+
if (v === null || v === undefined || typeof v !== 'object' || Array.isArray(v)) {
|
|
238
756
|
throw new ExpressionError(`${node.type} is missing operand '${key}'`);
|
|
239
757
|
}
|
|
240
758
|
return v;
|
|
@@ -252,22 +770,38 @@ function operand(node, key) {
|
|
|
252
770
|
* error, not a partial trace.
|
|
253
771
|
*/
|
|
254
772
|
export function explain(node, ctx, resolve, options) {
|
|
255
|
-
//
|
|
773
|
+
// Value recursion for subtrees the caller's `resolve` re-enters: those
|
|
256
774
|
// folds happen inside the caller and are invisible to the trace, exactly
|
|
257
775
|
// like the caller's own computation. Only kernel-visited nodes appear.
|
|
258
|
-
const recurseValue = (n, c) =>
|
|
259
|
-
const trace = (n, c) => {
|
|
776
|
+
const recurseValue = (n, c) => evalNode(n, c, resolve, options, []);
|
|
777
|
+
const trace = (n, c, frames) => {
|
|
778
|
+
const leaf = (value) => ({ type: n.type, value, children: [] });
|
|
260
779
|
const arity = OPERATOR_ARITY[n.type];
|
|
261
780
|
if (arity) {
|
|
262
781
|
switch (arity.kind) {
|
|
263
782
|
case 'unary': {
|
|
264
|
-
const x = trace(operand(n, arity.operand), c);
|
|
265
|
-
return { type: n.type, value: UNARY[n.type](x.value), children: [x] };
|
|
783
|
+
const x = trace(operand(n, arity.operand), c, frames);
|
|
784
|
+
return { type: n.type, value: UNARY[n.type](requireNumber(x.value, n.type)), children: [x] };
|
|
266
785
|
}
|
|
267
786
|
case 'binary': {
|
|
268
|
-
const a = trace(operand(n, arity.left), c);
|
|
269
|
-
const b = trace(operand(n, arity.right), c);
|
|
270
|
-
|
|
787
|
+
const a = trace(operand(n, arity.left), c, frames);
|
|
788
|
+
const b = trace(operand(n, arity.right), c, frames);
|
|
789
|
+
let value;
|
|
790
|
+
if (n.type === `${TX}/Equals`) {
|
|
791
|
+
value = bool(valuesEqual(a.value, b.value));
|
|
792
|
+
}
|
|
793
|
+
else {
|
|
794
|
+
const order = BINARY_ORDER[n.type];
|
|
795
|
+
if (order) {
|
|
796
|
+
value = typeof a.value !== 'number' || typeof b.value !== 'number'
|
|
797
|
+
? 0
|
|
798
|
+
: order(a.value, b.value);
|
|
799
|
+
}
|
|
800
|
+
else {
|
|
801
|
+
value = BINARY_ARITH[n.type](requireNumber(a.value, n.type), requireNumber(b.value, n.type));
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
return { type: n.type, value, children: [a, b] };
|
|
271
805
|
}
|
|
272
806
|
case 'nary': {
|
|
273
807
|
const items = n[arity.operands];
|
|
@@ -276,9 +810,9 @@ export function explain(node, ctx, resolve, options) {
|
|
|
276
810
|
const isAnd = n.type === `${TX}/And`;
|
|
277
811
|
const children = [];
|
|
278
812
|
for (const item of items) {
|
|
279
|
-
const child = trace(item, c);
|
|
813
|
+
const child = trace(item, c, frames);
|
|
280
814
|
children.push(child);
|
|
281
|
-
const v = truthy(child.value);
|
|
815
|
+
const v = truthy(requireNumber(child.value, n.type));
|
|
282
816
|
// Same short-circuit as `evaluate`: operands after the deciding
|
|
283
817
|
// one are never evaluated and never appear in the trace.
|
|
284
818
|
if (isAnd && !v)
|
|
@@ -289,30 +823,112 @@ export function explain(node, ctx, resolve, options) {
|
|
|
289
823
|
return { type: n.type, value: bool(isAnd), children };
|
|
290
824
|
}
|
|
291
825
|
case 'ternary': {
|
|
292
|
-
const v = trace(operand(n, arity.a), c);
|
|
293
|
-
const lo = trace(operand(n, arity.b), c);
|
|
294
|
-
const hi = trace(operand(n, arity.c), c);
|
|
826
|
+
const v = trace(operand(n, arity.a), c, frames);
|
|
827
|
+
const lo = trace(operand(n, arity.b), c, frames);
|
|
828
|
+
const hi = trace(operand(n, arity.c), c, frames);
|
|
295
829
|
return {
|
|
296
830
|
type: n.type,
|
|
297
|
-
value: Math.min(Math.max(v.value, lo.value), hi.value),
|
|
831
|
+
value: Math.min(Math.max(requireNumber(v.value, n.type), requireNumber(lo.value, n.type)), requireNumber(hi.value, n.type)),
|
|
298
832
|
children: [v, lo, hi],
|
|
299
833
|
};
|
|
300
834
|
}
|
|
301
835
|
}
|
|
302
836
|
}
|
|
303
837
|
if (n.type === `${TX}/Not`) {
|
|
304
|
-
const x = trace(operand(n, 'operand'), c);
|
|
305
|
-
return { type: n.type, value: bool(!truthy(x.value)), children: [x] };
|
|
838
|
+
const x = trace(operand(n, 'operand'), c, frames);
|
|
839
|
+
return { type: n.type, value: bool(!truthy(requireNumber(x.value, n.type))), children: [x] };
|
|
306
840
|
}
|
|
307
841
|
if (n.type === `${TX}/IsAtLeast` || n.type === `${TX}/Dominates`) {
|
|
308
842
|
const r = foldOrdered(n, c, options);
|
|
309
843
|
return { type: n.type, value: r.value, children: [], leftRef: r.left, rightRef: r.right };
|
|
310
844
|
}
|
|
845
|
+
const listFold = LIST_FOLDS[n.type];
|
|
846
|
+
if (listFold) {
|
|
847
|
+
const src = trace(operand(n, 'source'), c, frames);
|
|
848
|
+
const list = Array.isArray(src.value) ? src.value : [src.value];
|
|
849
|
+
return { type: n.type, value: listFold(list, n), children: [src] };
|
|
850
|
+
}
|
|
851
|
+
const body = ITERATOR_BODY[n.type];
|
|
852
|
+
if (body) {
|
|
853
|
+
const loopVar = n.loopVar;
|
|
854
|
+
if (typeof loopVar !== 'string' || loopVar.length === 0) {
|
|
855
|
+
throw new ExpressionError(`${n.type} is missing loopVar`);
|
|
856
|
+
}
|
|
857
|
+
const src = trace(operand(n, 'source'), c, frames);
|
|
858
|
+
const list = Array.isArray(src.value) ? src.value : [src.value];
|
|
859
|
+
const bodyNode = operand(n, body);
|
|
860
|
+
const children = [src];
|
|
861
|
+
const out = [];
|
|
862
|
+
for (const el of list) {
|
|
863
|
+
const inner = [...frames, { name: loopVar, value: el }];
|
|
864
|
+
const bodyTrace = trace(bodyNode, c, inner);
|
|
865
|
+
children.push(bodyTrace);
|
|
866
|
+
const v = bodyTrace.value;
|
|
867
|
+
if (n.type === `${TX}/Filter`) {
|
|
868
|
+
if (truthy(requireNumber(v, 'Filter predicate')))
|
|
869
|
+
out.push(el);
|
|
870
|
+
}
|
|
871
|
+
else if (n.type === `${TX}/ForEach`) {
|
|
872
|
+
if (Array.isArray(v))
|
|
873
|
+
out.push(...v);
|
|
874
|
+
else
|
|
875
|
+
out.push(v);
|
|
876
|
+
}
|
|
877
|
+
else {
|
|
878
|
+
out.push(v);
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
return { type: n.type, value: out, children };
|
|
882
|
+
}
|
|
883
|
+
if (n.type === `${TX}/Contains`) {
|
|
884
|
+
const hay = trace(operand(n, 'haystack'), c, frames);
|
|
885
|
+
const needle = trace(operand(n, 'needle'), c, frames);
|
|
886
|
+
const list = Array.isArray(hay.value) ? hay.value : [hay.value];
|
|
887
|
+
return {
|
|
888
|
+
type: n.type,
|
|
889
|
+
value: bool(list.some((el) => valuesEqual(el, needle.value))),
|
|
890
|
+
children: [hay, needle],
|
|
891
|
+
};
|
|
892
|
+
}
|
|
893
|
+
if (n.type === `${TX}/IsSet`) {
|
|
894
|
+
const x = trace(operand(n, 'checkExpr'), c, frames);
|
|
895
|
+
return { type: n.type, value: bool(isSet(x.value)), children: [x] };
|
|
896
|
+
}
|
|
897
|
+
if (n.type === `${TX}/ListItemAt`) {
|
|
898
|
+
const src = trace(operand(n, 'source'), c, frames);
|
|
899
|
+
const idx = trace(operand(n, 'itemIndex'), c, frames);
|
|
900
|
+
const list = Array.isArray(src.value) ? src.value : [src.value];
|
|
901
|
+
if (typeof idx.value !== 'number' || !Number.isInteger(idx.value) || idx.value < 0) {
|
|
902
|
+
throw new ExpressionError('ListItemAt itemIndex must be a non-negative integer');
|
|
903
|
+
}
|
|
904
|
+
const value = idx.value < list.length ? list[idx.value] : [];
|
|
905
|
+
return { type: n.type, value, children: [src, idx] };
|
|
906
|
+
}
|
|
907
|
+
if (n.type === `${TX}/Matches`) {
|
|
908
|
+
const src = trace(operand(n, 'matchSource'), c, frames);
|
|
909
|
+
if (typeof src.value !== 'string') {
|
|
910
|
+
throw new ExpressionError(`Matches requires a string matchSource, got ${kindOf(src.value)}`);
|
|
911
|
+
}
|
|
912
|
+
const pattern = n.pattern;
|
|
913
|
+
if (typeof pattern !== 'string')
|
|
914
|
+
throw new ExpressionError('Matches is missing pattern');
|
|
915
|
+
return { type: n.type, value: bool(matchesPattern(src.value, pattern)), children: [src] };
|
|
916
|
+
}
|
|
917
|
+
const kind = KIND_PREDICATES[n.type];
|
|
918
|
+
if (kind) {
|
|
919
|
+
const x = trace(operand(n, 'kindCheck'), c, frames);
|
|
920
|
+
return { type: n.type, value: bool(kind(x.value)), children: [x] };
|
|
921
|
+
}
|
|
311
922
|
const lit = literalValue(n);
|
|
312
923
|
if (lit !== undefined)
|
|
313
|
-
return
|
|
314
|
-
|
|
924
|
+
return leaf(lit);
|
|
925
|
+
if (n.type === `${TX}/VarRef` && typeof n.varName === 'string') {
|
|
926
|
+
const bound = boundValue(frames, n.varName);
|
|
927
|
+
if (bound !== undefined)
|
|
928
|
+
return leaf(bound);
|
|
929
|
+
}
|
|
930
|
+
return leaf(resolve(n, c, recurseValue));
|
|
315
931
|
};
|
|
316
|
-
return trace(node, ctx);
|
|
932
|
+
return trace(node, ctx, []);
|
|
317
933
|
}
|
|
318
934
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kanonak-protocol/expression",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "The Kanonak expression runtime (expressionRuntimeVersion \"
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "The Kanonak expression runtime (expressionRuntimeVersion \"2\") — a deterministic tree-walker that folds a kanonak.org/transformations + kanonak.org/math expression to a value (number | string | ref | list), verified against the shared parity vectors. The behavior every generated SDK evaluates through.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://kanonak.org",
|
|
7
7
|
"author": "Kanonak Maintainers (https://github.com/kanonak-protocol/runtime)",
|