@manifesto-ai/compiler 1.6.2 → 1.8.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/README.md +67 -18
- package/dist/chunk-BH25NHMN.js +74 -0
- package/dist/chunk-BH25NHMN.js.map +1 -0
- package/dist/chunk-D62NIFP4.js +33 -0
- package/dist/chunk-D62NIFP4.js.map +1 -0
- package/dist/chunk-MKLDAZ2Z.js +6920 -0
- package/dist/chunk-MKLDAZ2Z.js.map +1 -0
- package/dist/esbuild.d.ts +8 -0
- package/dist/esbuild.js +14 -0
- package/dist/esbuild.js.map +1 -0
- package/dist/index.d.ts +2810 -11
- package/dist/index.js +2425 -43
- package/dist/index.js.map +1 -1
- package/dist/node-loader.d.ts +18 -0
- package/dist/node-loader.js +47 -0
- package/dist/node-loader.js.map +1 -0
- package/dist/rollup.d.ts +8 -0
- package/dist/rollup.js +14 -0
- package/dist/rollup.js.map +1 -0
- package/dist/rspack.d.ts +7 -0
- package/dist/rspack.js +14 -0
- package/dist/rspack.js.map +1 -0
- package/dist/unplugin-6wnvFiEo.d.ts +17 -0
- package/dist/vite.d.ts +8 -17
- package/dist/vite.js +13 -33
- package/dist/vite.js.map +1 -1
- package/dist/webpack.d.ts +8 -0
- package/dist/webpack.js +14 -0
- package/dist/webpack.js.map +1 -0
- package/package.json +40 -22
- package/dist/analyzer/index.d.ts +0 -6
- package/dist/analyzer/index.d.ts.map +0 -1
- package/dist/analyzer/index.js +0 -6
- package/dist/analyzer/index.js.map +0 -1
- package/dist/analyzer/scope.d.ts +0 -77
- package/dist/analyzer/scope.d.ts.map +0 -1
- package/dist/analyzer/scope.js +0 -296
- package/dist/analyzer/scope.js.map +0 -1
- package/dist/analyzer/validator.d.ts +0 -60
- package/dist/analyzer/validator.d.ts.map +0 -1
- package/dist/analyzer/validator.js +0 -439
- package/dist/analyzer/validator.js.map +0 -1
- package/dist/api/compile-mel-patch-collector.d.ts +0 -32
- package/dist/api/compile-mel-patch-collector.d.ts.map +0 -1
- package/dist/api/compile-mel-patch-collector.js +0 -425
- package/dist/api/compile-mel-patch-collector.js.map +0 -1
- package/dist/api/compile-mel-patch-expr.d.ts +0 -9
- package/dist/api/compile-mel-patch-expr.d.ts.map +0 -1
- package/dist/api/compile-mel-patch-expr.js +0 -179
- package/dist/api/compile-mel-patch-expr.js.map +0 -1
- package/dist/api/compile-mel-patch-location.d.ts +0 -10
- package/dist/api/compile-mel-patch-location.d.ts.map +0 -1
- package/dist/api/compile-mel-patch-location.js +0 -48
- package/dist/api/compile-mel-patch-location.js.map +0 -1
- package/dist/api/compile-mel-patch.d.ts +0 -6
- package/dist/api/compile-mel-patch.d.ts.map +0 -1
- package/dist/api/compile-mel-patch.js +0 -244
- package/dist/api/compile-mel-patch.js.map +0 -1
- package/dist/api/compile-mel.d.ts +0 -126
- package/dist/api/compile-mel.d.ts.map +0 -1
- package/dist/api/compile-mel.js +0 -114
- package/dist/api/compile-mel.js.map +0 -1
- package/dist/api/index.d.ts +0 -10
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -9
- package/dist/api/index.js.map +0 -1
- package/dist/diagnostics/codes.d.ts +0 -25
- package/dist/diagnostics/codes.d.ts.map +0 -1
- package/dist/diagnostics/codes.js +0 -154
- package/dist/diagnostics/codes.js.map +0 -1
- package/dist/diagnostics/index.d.ts +0 -6
- package/dist/diagnostics/index.d.ts.map +0 -1
- package/dist/diagnostics/index.js +0 -6
- package/dist/diagnostics/index.js.map +0 -1
- package/dist/diagnostics/types.d.ts +0 -67
- package/dist/diagnostics/types.d.ts.map +0 -1
- package/dist/diagnostics/types.js +0 -58
- package/dist/diagnostics/types.js.map +0 -1
- package/dist/evaluation/context.d.ts +0 -91
- package/dist/evaluation/context.d.ts.map +0 -1
- package/dist/evaluation/context.js +0 -53
- package/dist/evaluation/context.js.map +0 -1
- package/dist/evaluation/evaluate-expr.d.ts +0 -24
- package/dist/evaluation/evaluate-expr.d.ts.map +0 -1
- package/dist/evaluation/evaluate-expr.js +0 -577
- package/dist/evaluation/evaluate-expr.js.map +0 -1
- package/dist/evaluation/evaluate-patch.d.ts +0 -123
- package/dist/evaluation/evaluate-patch.d.ts.map +0 -1
- package/dist/evaluation/evaluate-patch.js +0 -202
- package/dist/evaluation/evaluate-patch.js.map +0 -1
- package/dist/evaluation/evaluate-runtime-patch.d.ts +0 -86
- package/dist/evaluation/evaluate-runtime-patch.d.ts.map +0 -1
- package/dist/evaluation/evaluate-runtime-patch.js +0 -185
- package/dist/evaluation/evaluate-runtime-patch.js.map +0 -1
- package/dist/evaluation/index.d.ts +0 -15
- package/dist/evaluation/index.d.ts.map +0 -1
- package/dist/evaluation/index.js +0 -13
- package/dist/evaluation/index.js.map +0 -1
- package/dist/generator/index.d.ts +0 -7
- package/dist/generator/index.d.ts.map +0 -1
- package/dist/generator/index.js +0 -7
- package/dist/generator/index.js.map +0 -1
- package/dist/generator/ir.d.ts +0 -348
- package/dist/generator/ir.d.ts.map +0 -1
- package/dist/generator/ir.js +0 -715
- package/dist/generator/ir.js.map +0 -1
- package/dist/generator/lowering.d.ts +0 -11
- package/dist/generator/lowering.d.ts.map +0 -1
- package/dist/generator/lowering.js +0 -369
- package/dist/generator/lowering.js.map +0 -1
- package/dist/generator/normalizer.d.ts +0 -16
- package/dist/generator/normalizer.d.ts.map +0 -1
- package/dist/generator/normalizer.js +0 -181
- package/dist/generator/normalizer.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/lexer/index.d.ts +0 -7
- package/dist/lexer/index.d.ts.map +0 -1
- package/dist/lexer/index.js +0 -7
- package/dist/lexer/index.js.map +0 -1
- package/dist/lexer/lexer.d.ts +0 -59
- package/dist/lexer/lexer.d.ts.map +0 -1
- package/dist/lexer/lexer.js +0 -433
- package/dist/lexer/lexer.js.map +0 -1
- package/dist/lexer/source-location.d.ts +0 -41
- package/dist/lexer/source-location.d.ts.map +0 -1
- package/dist/lexer/source-location.js +0 -33
- package/dist/lexer/source-location.js.map +0 -1
- package/dist/lexer/tokens.d.ts +0 -47
- package/dist/lexer/tokens.d.ts.map +0 -1
- package/dist/lexer/tokens.js +0 -73
- package/dist/lexer/tokens.js.map +0 -1
- package/dist/loader.d.ts +0 -23
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -62
- package/dist/loader.js.map +0 -1
- package/dist/lowering/context.d.ts +0 -96
- package/dist/lowering/context.d.ts.map +0 -1
- package/dist/lowering/context.js +0 -42
- package/dist/lowering/context.js.map +0 -1
- package/dist/lowering/errors.d.ts +0 -84
- package/dist/lowering/errors.d.ts.map +0 -1
- package/dist/lowering/errors.js +0 -81
- package/dist/lowering/errors.js.map +0 -1
- package/dist/lowering/index.d.ts +0 -20
- package/dist/lowering/index.d.ts.map +0 -1
- package/dist/lowering/index.js +0 -13
- package/dist/lowering/index.js.map +0 -1
- package/dist/lowering/lower-expr.d.ts +0 -76
- package/dist/lowering/lower-expr.d.ts.map +0 -1
- package/dist/lowering/lower-expr.js +0 -366
- package/dist/lowering/lower-expr.js.map +0 -1
- package/dist/lowering/lower-patch.d.ts +0 -231
- package/dist/lowering/lower-patch.d.ts.map +0 -1
- package/dist/lowering/lower-patch.js +0 -146
- package/dist/lowering/lower-patch.js.map +0 -1
- package/dist/lowering/lower-runtime-patch.d.ts +0 -100
- package/dist/lowering/lower-runtime-patch.d.ts.map +0 -1
- package/dist/lowering/lower-runtime-patch.js +0 -49
- package/dist/lowering/lower-runtime-patch.js.map +0 -1
- package/dist/mel-module.d.ts +0 -13
- package/dist/mel-module.d.ts.map +0 -1
- package/dist/mel-module.js +0 -33
- package/dist/mel-module.js.map +0 -1
- package/dist/parser/ast.d.ts +0 -344
- package/dist/parser/ast.d.ts.map +0 -1
- package/dist/parser/ast.js +0 -24
- package/dist/parser/ast.js.map +0 -1
- package/dist/parser/index.d.ts +0 -7
- package/dist/parser/index.d.ts.map +0 -1
- package/dist/parser/index.js +0 -7
- package/dist/parser/index.js.map +0 -1
- package/dist/parser/parser.d.ts +0 -92
- package/dist/parser/parser.d.ts.map +0 -1
- package/dist/parser/parser.js +0 -892
- package/dist/parser/parser.js.map +0 -1
- package/dist/parser/precedence.d.ts +0 -44
- package/dist/parser/precedence.d.ts.map +0 -1
- package/dist/parser/precedence.js +0 -69
- package/dist/parser/precedence.js.map +0 -1
- package/dist/renderer/expr-node.d.ts +0 -172
- package/dist/renderer/expr-node.d.ts.map +0 -1
- package/dist/renderer/expr-node.js +0 -218
- package/dist/renderer/expr-node.js.map +0 -1
- package/dist/renderer/fragment.d.ts +0 -84
- package/dist/renderer/fragment.d.ts.map +0 -1
- package/dist/renderer/fragment.js +0 -172
- package/dist/renderer/fragment.js.map +0 -1
- package/dist/renderer/index.d.ts +0 -23
- package/dist/renderer/index.d.ts.map +0 -1
- package/dist/renderer/index.js +0 -27
- package/dist/renderer/index.js.map +0 -1
- package/dist/renderer/patch-op.d.ts +0 -82
- package/dist/renderer/patch-op.d.ts.map +0 -1
- package/dist/renderer/patch-op.js +0 -204
- package/dist/renderer/patch-op.js.map +0 -1
- package/dist/renderer/type-expr.d.ts +0 -61
- package/dist/renderer/type-expr.d.ts.map +0 -1
- package/dist/renderer/type-expr.js +0 -131
- package/dist/renderer/type-expr.js.map +0 -1
- package/dist/vite.d.ts.map +0 -1
- package/loader.cjs +0 -22
|
@@ -1,577 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Expression Evaluation
|
|
3
|
-
*
|
|
4
|
-
* Evaluates Core IR expressions against evaluation context.
|
|
5
|
-
*
|
|
6
|
-
* AXIOM A35: Expression evaluation is total; invalid operations return null, never throw.
|
|
7
|
-
*
|
|
8
|
-
* @see SPEC v0.4.0 §18
|
|
9
|
-
*/
|
|
10
|
-
import { parsePath } from "@manifesto-ai/core";
|
|
11
|
-
// ============ Main Evaluation Function ============
|
|
12
|
-
/**
|
|
13
|
-
* Evaluate a Core IR expression.
|
|
14
|
-
*
|
|
15
|
-
* Total function: returns null on any error, never throws.
|
|
16
|
-
*
|
|
17
|
-
* @param expr - Core IR expression
|
|
18
|
-
* @param ctx - Evaluation context
|
|
19
|
-
* @returns Evaluated value or null on error
|
|
20
|
-
*
|
|
21
|
-
* @see SPEC v0.4.0 §18.4, A35
|
|
22
|
-
*/
|
|
23
|
-
export function evaluateExpr(expr, ctx) {
|
|
24
|
-
try {
|
|
25
|
-
return evaluateNode(expr, ctx);
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
// Total function: never throw
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Internal evaluation (may throw, caught by evaluateExpr).
|
|
34
|
-
*/
|
|
35
|
-
function evaluateNode(expr, ctx) {
|
|
36
|
-
switch (expr.kind) {
|
|
37
|
-
// Literals
|
|
38
|
-
case "lit":
|
|
39
|
-
return expr.value;
|
|
40
|
-
case "get":
|
|
41
|
-
return resolvePath(expr.path, ctx);
|
|
42
|
-
// Comparison
|
|
43
|
-
case "eq":
|
|
44
|
-
return evaluateEq(expr.left, expr.right, ctx);
|
|
45
|
-
case "neq":
|
|
46
|
-
return evaluateNeq(expr.left, expr.right, ctx);
|
|
47
|
-
case "gt":
|
|
48
|
-
return evaluateComparison(expr.left, expr.right, ctx, (a, b) => a > b);
|
|
49
|
-
case "gte":
|
|
50
|
-
return evaluateComparison(expr.left, expr.right, ctx, (a, b) => a >= b);
|
|
51
|
-
case "lt":
|
|
52
|
-
return evaluateComparison(expr.left, expr.right, ctx, (a, b) => a < b);
|
|
53
|
-
case "lte":
|
|
54
|
-
return evaluateComparison(expr.left, expr.right, ctx, (a, b) => a <= b);
|
|
55
|
-
// Logical
|
|
56
|
-
case "and":
|
|
57
|
-
return evaluateAnd(expr.args, ctx);
|
|
58
|
-
case "or":
|
|
59
|
-
return evaluateOr(expr.args, ctx);
|
|
60
|
-
case "not":
|
|
61
|
-
return evaluateNot(expr.arg, ctx);
|
|
62
|
-
// Conditional
|
|
63
|
-
case "if":
|
|
64
|
-
return evaluateIf(expr.cond, expr.then, expr.else, ctx);
|
|
65
|
-
// Arithmetic
|
|
66
|
-
case "add":
|
|
67
|
-
return evaluateArithmetic(expr.left, expr.right, ctx, (a, b) => a + b);
|
|
68
|
-
case "sub":
|
|
69
|
-
return evaluateArithmetic(expr.left, expr.right, ctx, (a, b) => a - b);
|
|
70
|
-
case "mul":
|
|
71
|
-
return evaluateArithmetic(expr.left, expr.right, ctx, (a, b) => a * b);
|
|
72
|
-
case "div":
|
|
73
|
-
return evaluateDiv(expr.left, expr.right, ctx);
|
|
74
|
-
case "mod":
|
|
75
|
-
return evaluateMod(expr.left, expr.right, ctx);
|
|
76
|
-
// String
|
|
77
|
-
case "concat":
|
|
78
|
-
return evaluateConcat(expr.args, ctx);
|
|
79
|
-
case "substring":
|
|
80
|
-
return evaluateSubstring(expr.str, expr.start, expr.end, ctx);
|
|
81
|
-
case "trim":
|
|
82
|
-
return evaluateTrim(expr.str, ctx);
|
|
83
|
-
// Collection
|
|
84
|
-
case "len":
|
|
85
|
-
return evaluateLen(expr.arg, ctx);
|
|
86
|
-
case "at":
|
|
87
|
-
return evaluateAt(expr.array, expr.index, ctx);
|
|
88
|
-
case "first":
|
|
89
|
-
return evaluateFirst(expr.array, ctx);
|
|
90
|
-
case "last":
|
|
91
|
-
return evaluateLast(expr.array, ctx);
|
|
92
|
-
case "slice":
|
|
93
|
-
return evaluateSlice(expr.array, expr.start, expr.end, ctx);
|
|
94
|
-
case "includes":
|
|
95
|
-
return evaluateIncludes(expr.array, expr.item, ctx);
|
|
96
|
-
case "filter":
|
|
97
|
-
return evaluateFilter(expr.array, expr.predicate, ctx);
|
|
98
|
-
case "map":
|
|
99
|
-
return evaluateMap(expr.array, expr.mapper, ctx);
|
|
100
|
-
case "find":
|
|
101
|
-
return evaluateFind(expr.array, expr.predicate, ctx);
|
|
102
|
-
case "every":
|
|
103
|
-
return evaluateEvery(expr.array, expr.predicate, ctx);
|
|
104
|
-
case "some":
|
|
105
|
-
return evaluateSome(expr.array, expr.predicate, ctx);
|
|
106
|
-
case "append":
|
|
107
|
-
return evaluateAppend(expr.array, expr.items, ctx);
|
|
108
|
-
// Object
|
|
109
|
-
case "object":
|
|
110
|
-
return evaluateObject(expr.fields, ctx);
|
|
111
|
-
case "field":
|
|
112
|
-
return evaluateFieldAccess(expr.object, expr.property, ctx);
|
|
113
|
-
case "keys":
|
|
114
|
-
return evaluateKeys(expr.obj, ctx);
|
|
115
|
-
case "values":
|
|
116
|
-
return evaluateValues(expr.obj, ctx);
|
|
117
|
-
case "entries":
|
|
118
|
-
return evaluateEntries(expr.obj, ctx);
|
|
119
|
-
case "merge":
|
|
120
|
-
return evaluateMerge(expr.objects, ctx);
|
|
121
|
-
// Type
|
|
122
|
-
case "typeof":
|
|
123
|
-
return evaluateTypeof(expr.arg, ctx);
|
|
124
|
-
case "isNull":
|
|
125
|
-
return evaluateIsNull(expr.arg, ctx);
|
|
126
|
-
case "coalesce":
|
|
127
|
-
return evaluateCoalesce(expr.args, ctx);
|
|
128
|
-
default:
|
|
129
|
-
// Unknown kind → null
|
|
130
|
-
return null;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
// ============ Path Resolution ============
|
|
134
|
-
/**
|
|
135
|
-
* Resolve a path in the evaluation context.
|
|
136
|
-
*
|
|
137
|
-
* Path prefixes:
|
|
138
|
-
* - meta.* → ctx.meta
|
|
139
|
-
* - input.* → ctx.input
|
|
140
|
-
* - $item.* → ctx.item
|
|
141
|
-
* - computed.* → ctx.snapshot.computed
|
|
142
|
-
* - (other) → ctx.snapshot.data
|
|
143
|
-
*
|
|
144
|
-
* @see SPEC v0.4.0 §18.7
|
|
145
|
-
*/
|
|
146
|
-
function resolvePath(path, ctx) {
|
|
147
|
-
const parts = parsePath(path);
|
|
148
|
-
// Special prefixes
|
|
149
|
-
if (parts[0] === "meta") {
|
|
150
|
-
return getValueAtPath(ctx.meta, parts.slice(1));
|
|
151
|
-
}
|
|
152
|
-
if (parts[0] === "input") {
|
|
153
|
-
return getValueAtPath(ctx.input, parts.slice(1));
|
|
154
|
-
}
|
|
155
|
-
if (parts[0] === "$item") {
|
|
156
|
-
if (ctx.item === undefined) {
|
|
157
|
-
return null;
|
|
158
|
-
}
|
|
159
|
-
if (parts.length === 1) {
|
|
160
|
-
return ctx.item;
|
|
161
|
-
}
|
|
162
|
-
return getValueAtPath(ctx.item, parts.slice(1));
|
|
163
|
-
}
|
|
164
|
-
if (parts[0] === "computed") {
|
|
165
|
-
return getValueAtPath(ctx.snapshot.computed, parts.slice(1));
|
|
166
|
-
}
|
|
167
|
-
// Default: resolve in snapshot.data
|
|
168
|
-
return getValueAtPath(ctx.snapshot.data, parts);
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Get value at a path in an object.
|
|
172
|
-
*/
|
|
173
|
-
function getValueAtPath(obj, parts) {
|
|
174
|
-
if (parts.length === 0) {
|
|
175
|
-
return obj;
|
|
176
|
-
}
|
|
177
|
-
if (obj === null || obj === undefined) {
|
|
178
|
-
return null;
|
|
179
|
-
}
|
|
180
|
-
if (typeof obj !== "object") {
|
|
181
|
-
return null;
|
|
182
|
-
}
|
|
183
|
-
const [head, ...rest] = parts;
|
|
184
|
-
const next = obj[head];
|
|
185
|
-
if (rest.length === 0) {
|
|
186
|
-
return next === undefined ? null : next;
|
|
187
|
-
}
|
|
188
|
-
return getValueAtPath(next, rest);
|
|
189
|
-
}
|
|
190
|
-
// ============ Comparison Operators ============
|
|
191
|
-
function evaluateEq(left, right, ctx) {
|
|
192
|
-
const l = evaluateNode(left, ctx);
|
|
193
|
-
const r = evaluateNode(right, ctx);
|
|
194
|
-
return deepEqual(l, r);
|
|
195
|
-
}
|
|
196
|
-
function evaluateNeq(left, right, ctx) {
|
|
197
|
-
const result = evaluateEq(left, right, ctx);
|
|
198
|
-
if (result === null)
|
|
199
|
-
return null;
|
|
200
|
-
return !result;
|
|
201
|
-
}
|
|
202
|
-
function evaluateComparison(left, right, ctx, compare) {
|
|
203
|
-
const l = evaluateNode(left, ctx);
|
|
204
|
-
const r = evaluateNode(right, ctx);
|
|
205
|
-
if (typeof l !== "number" || typeof r !== "number") {
|
|
206
|
-
return null;
|
|
207
|
-
}
|
|
208
|
-
return compare(l, r);
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Deep equality check.
|
|
212
|
-
*/
|
|
213
|
-
function deepEqual(a, b) {
|
|
214
|
-
if (a === b)
|
|
215
|
-
return true;
|
|
216
|
-
if (a === null || b === null)
|
|
217
|
-
return a === b;
|
|
218
|
-
if (typeof a !== typeof b)
|
|
219
|
-
return false;
|
|
220
|
-
if (Array.isArray(a) && Array.isArray(b)) {
|
|
221
|
-
if (a.length !== b.length)
|
|
222
|
-
return false;
|
|
223
|
-
return a.every((item, i) => deepEqual(item, b[i]));
|
|
224
|
-
}
|
|
225
|
-
if (typeof a === "object" && typeof b === "object") {
|
|
226
|
-
const aKeys = Object.keys(a);
|
|
227
|
-
const bKeys = Object.keys(b);
|
|
228
|
-
if (aKeys.length !== bKeys.length)
|
|
229
|
-
return false;
|
|
230
|
-
return aKeys.every((key) => Object.prototype.hasOwnProperty.call(b, key) &&
|
|
231
|
-
deepEqual(a[key], b[key]));
|
|
232
|
-
}
|
|
233
|
-
return false;
|
|
234
|
-
}
|
|
235
|
-
// ============ Logical Operators ============
|
|
236
|
-
function evaluateAnd(args, ctx) {
|
|
237
|
-
for (const arg of args) {
|
|
238
|
-
const result = evaluateNode(arg, ctx);
|
|
239
|
-
if (result !== true) {
|
|
240
|
-
return result === false ? false : null;
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
return true;
|
|
244
|
-
}
|
|
245
|
-
function evaluateOr(args, ctx) {
|
|
246
|
-
for (const arg of args) {
|
|
247
|
-
const result = evaluateNode(arg, ctx);
|
|
248
|
-
if (result === true) {
|
|
249
|
-
return true;
|
|
250
|
-
}
|
|
251
|
-
if (result !== false) {
|
|
252
|
-
return null;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
return false;
|
|
256
|
-
}
|
|
257
|
-
function evaluateNot(arg, ctx) {
|
|
258
|
-
const result = evaluateNode(arg, ctx);
|
|
259
|
-
if (typeof result !== "boolean") {
|
|
260
|
-
return null;
|
|
261
|
-
}
|
|
262
|
-
return !result;
|
|
263
|
-
}
|
|
264
|
-
// ============ Conditional ============
|
|
265
|
-
function evaluateIf(cond, thenExpr, elseExpr, ctx) {
|
|
266
|
-
const condResult = evaluateNode(cond, ctx);
|
|
267
|
-
if (condResult === true) {
|
|
268
|
-
return evaluateNode(thenExpr, ctx);
|
|
269
|
-
}
|
|
270
|
-
if (condResult === false) {
|
|
271
|
-
return evaluateNode(elseExpr, ctx);
|
|
272
|
-
}
|
|
273
|
-
// Non-boolean condition → null
|
|
274
|
-
return null;
|
|
275
|
-
}
|
|
276
|
-
// ============ Arithmetic Operators ============
|
|
277
|
-
function evaluateArithmetic(left, right, ctx, op) {
|
|
278
|
-
const l = evaluateNode(left, ctx);
|
|
279
|
-
const r = evaluateNode(right, ctx);
|
|
280
|
-
if (typeof l !== "number" || typeof r !== "number") {
|
|
281
|
-
return null;
|
|
282
|
-
}
|
|
283
|
-
const result = op(l, r);
|
|
284
|
-
if (!Number.isFinite(result)) {
|
|
285
|
-
return null;
|
|
286
|
-
}
|
|
287
|
-
return result;
|
|
288
|
-
}
|
|
289
|
-
function evaluateDiv(left, right, ctx) {
|
|
290
|
-
const l = evaluateNode(left, ctx);
|
|
291
|
-
const r = evaluateNode(right, ctx);
|
|
292
|
-
if (typeof l !== "number" || typeof r !== "number") {
|
|
293
|
-
return null;
|
|
294
|
-
}
|
|
295
|
-
// Division by zero → null
|
|
296
|
-
if (r === 0) {
|
|
297
|
-
return null;
|
|
298
|
-
}
|
|
299
|
-
return l / r;
|
|
300
|
-
}
|
|
301
|
-
function evaluateMod(left, right, ctx) {
|
|
302
|
-
const l = evaluateNode(left, ctx);
|
|
303
|
-
const r = evaluateNode(right, ctx);
|
|
304
|
-
if (typeof l !== "number" || typeof r !== "number") {
|
|
305
|
-
return null;
|
|
306
|
-
}
|
|
307
|
-
// Modulo by zero → null
|
|
308
|
-
if (r === 0) {
|
|
309
|
-
return null;
|
|
310
|
-
}
|
|
311
|
-
return l % r;
|
|
312
|
-
}
|
|
313
|
-
// ============ String Operators ============
|
|
314
|
-
function evaluateConcat(args, ctx) {
|
|
315
|
-
const values = [];
|
|
316
|
-
for (const arg of args) {
|
|
317
|
-
const val = evaluateNode(arg, ctx);
|
|
318
|
-
if (typeof val !== "string") {
|
|
319
|
-
return null;
|
|
320
|
-
}
|
|
321
|
-
values.push(val);
|
|
322
|
-
}
|
|
323
|
-
return values.join("");
|
|
324
|
-
}
|
|
325
|
-
function evaluateSubstring(str, start, end, ctx) {
|
|
326
|
-
const s = evaluateNode(str, ctx);
|
|
327
|
-
const startIdx = evaluateNode(start, ctx);
|
|
328
|
-
if (typeof s !== "string" || typeof startIdx !== "number") {
|
|
329
|
-
return null;
|
|
330
|
-
}
|
|
331
|
-
if (end === undefined) {
|
|
332
|
-
return s.substring(startIdx);
|
|
333
|
-
}
|
|
334
|
-
const endIdx = evaluateNode(end, ctx);
|
|
335
|
-
if (typeof endIdx !== "number") {
|
|
336
|
-
return null;
|
|
337
|
-
}
|
|
338
|
-
return s.substring(startIdx, endIdx);
|
|
339
|
-
}
|
|
340
|
-
function evaluateTrim(str, ctx) {
|
|
341
|
-
const s = evaluateNode(str, ctx);
|
|
342
|
-
if (typeof s !== "string") {
|
|
343
|
-
return null;
|
|
344
|
-
}
|
|
345
|
-
return s.trim();
|
|
346
|
-
}
|
|
347
|
-
// ============ Collection Operators ============
|
|
348
|
-
function evaluateLen(arg, ctx) {
|
|
349
|
-
const val = evaluateNode(arg, ctx);
|
|
350
|
-
if (Array.isArray(val)) {
|
|
351
|
-
return val.length;
|
|
352
|
-
}
|
|
353
|
-
if (typeof val === "string") {
|
|
354
|
-
return val.length;
|
|
355
|
-
}
|
|
356
|
-
if (val !== null && typeof val === "object") {
|
|
357
|
-
return Object.keys(val).length;
|
|
358
|
-
}
|
|
359
|
-
return null;
|
|
360
|
-
}
|
|
361
|
-
function evaluateAt(array, index, ctx) {
|
|
362
|
-
const base = evaluateNode(array, ctx);
|
|
363
|
-
const key = evaluateNode(index, ctx);
|
|
364
|
-
// Array indexing: at(array, numericIndex)
|
|
365
|
-
if (Array.isArray(base) && typeof key === "number") {
|
|
366
|
-
if (key < 0 || key >= base.length) {
|
|
367
|
-
return null;
|
|
368
|
-
}
|
|
369
|
-
return base[key];
|
|
370
|
-
}
|
|
371
|
-
// Record lookup: at(record, stringKey) — exclude arrays
|
|
372
|
-
if (typeof base === "object" && base !== null && !Array.isArray(base) && typeof key === "string") {
|
|
373
|
-
return base[key] ?? null;
|
|
374
|
-
}
|
|
375
|
-
return null;
|
|
376
|
-
}
|
|
377
|
-
function evaluateFirst(array, ctx) {
|
|
378
|
-
const arr = evaluateNode(array, ctx);
|
|
379
|
-
if (!Array.isArray(arr) || arr.length === 0) {
|
|
380
|
-
return null;
|
|
381
|
-
}
|
|
382
|
-
return arr[0];
|
|
383
|
-
}
|
|
384
|
-
function evaluateLast(array, ctx) {
|
|
385
|
-
const arr = evaluateNode(array, ctx);
|
|
386
|
-
if (!Array.isArray(arr) || arr.length === 0) {
|
|
387
|
-
return null;
|
|
388
|
-
}
|
|
389
|
-
return arr[arr.length - 1];
|
|
390
|
-
}
|
|
391
|
-
function evaluateSlice(array, start, end, ctx) {
|
|
392
|
-
const arr = evaluateNode(array, ctx);
|
|
393
|
-
const startIdx = evaluateNode(start, ctx);
|
|
394
|
-
if (!Array.isArray(arr) || typeof startIdx !== "number") {
|
|
395
|
-
return null;
|
|
396
|
-
}
|
|
397
|
-
if (end === undefined) {
|
|
398
|
-
return arr.slice(startIdx);
|
|
399
|
-
}
|
|
400
|
-
const endIdx = evaluateNode(end, ctx);
|
|
401
|
-
if (typeof endIdx !== "number") {
|
|
402
|
-
return null;
|
|
403
|
-
}
|
|
404
|
-
return arr.slice(startIdx, endIdx);
|
|
405
|
-
}
|
|
406
|
-
function evaluateIncludes(array, item, ctx) {
|
|
407
|
-
const arr = evaluateNode(array, ctx);
|
|
408
|
-
const val = evaluateNode(item, ctx);
|
|
409
|
-
if (!Array.isArray(arr)) {
|
|
410
|
-
return null;
|
|
411
|
-
}
|
|
412
|
-
return arr.some((el) => deepEqual(el, val));
|
|
413
|
-
}
|
|
414
|
-
function evaluateFilter(array, predicate, ctx) {
|
|
415
|
-
const arr = evaluateNode(array, ctx);
|
|
416
|
-
if (!Array.isArray(arr)) {
|
|
417
|
-
return null;
|
|
418
|
-
}
|
|
419
|
-
const result = [];
|
|
420
|
-
for (const item of arr) {
|
|
421
|
-
const itemCtx = { ...ctx, item };
|
|
422
|
-
const keep = evaluateNode(predicate, itemCtx);
|
|
423
|
-
if (keep === true) {
|
|
424
|
-
result.push(item);
|
|
425
|
-
}
|
|
426
|
-
else if (keep !== false) {
|
|
427
|
-
// Non-boolean predicate → null
|
|
428
|
-
return null;
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
return result;
|
|
432
|
-
}
|
|
433
|
-
function evaluateMap(array, mapper, ctx) {
|
|
434
|
-
const arr = evaluateNode(array, ctx);
|
|
435
|
-
if (!Array.isArray(arr)) {
|
|
436
|
-
return null;
|
|
437
|
-
}
|
|
438
|
-
const result = [];
|
|
439
|
-
for (const item of arr) {
|
|
440
|
-
const itemCtx = { ...ctx, item };
|
|
441
|
-
const mapped = evaluateNode(mapper, itemCtx);
|
|
442
|
-
result.push(mapped);
|
|
443
|
-
}
|
|
444
|
-
return result;
|
|
445
|
-
}
|
|
446
|
-
function evaluateFind(array, predicate, ctx) {
|
|
447
|
-
const arr = evaluateNode(array, ctx);
|
|
448
|
-
if (!Array.isArray(arr)) {
|
|
449
|
-
return null;
|
|
450
|
-
}
|
|
451
|
-
for (const item of arr) {
|
|
452
|
-
const itemCtx = { ...ctx, item };
|
|
453
|
-
const match = evaluateNode(predicate, itemCtx);
|
|
454
|
-
if (match === true) {
|
|
455
|
-
return item;
|
|
456
|
-
}
|
|
457
|
-
if (match !== false) {
|
|
458
|
-
// Non-boolean predicate → null
|
|
459
|
-
return null;
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
return null;
|
|
463
|
-
}
|
|
464
|
-
function evaluateEvery(array, predicate, ctx) {
|
|
465
|
-
const arr = evaluateNode(array, ctx);
|
|
466
|
-
if (!Array.isArray(arr)) {
|
|
467
|
-
return null;
|
|
468
|
-
}
|
|
469
|
-
for (const item of arr) {
|
|
470
|
-
const itemCtx = { ...ctx, item };
|
|
471
|
-
const result = evaluateNode(predicate, itemCtx);
|
|
472
|
-
if (result === false) {
|
|
473
|
-
return false;
|
|
474
|
-
}
|
|
475
|
-
if (result !== true) {
|
|
476
|
-
// Non-boolean predicate → null
|
|
477
|
-
return null;
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
return true;
|
|
481
|
-
}
|
|
482
|
-
function evaluateSome(array, predicate, ctx) {
|
|
483
|
-
const arr = evaluateNode(array, ctx);
|
|
484
|
-
if (!Array.isArray(arr)) {
|
|
485
|
-
return null;
|
|
486
|
-
}
|
|
487
|
-
for (const item of arr) {
|
|
488
|
-
const itemCtx = { ...ctx, item };
|
|
489
|
-
const result = evaluateNode(predicate, itemCtx);
|
|
490
|
-
if (result === true) {
|
|
491
|
-
return true;
|
|
492
|
-
}
|
|
493
|
-
if (result !== false) {
|
|
494
|
-
// Non-boolean predicate → null
|
|
495
|
-
return null;
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
return false;
|
|
499
|
-
}
|
|
500
|
-
function evaluateAppend(array, items, ctx) {
|
|
501
|
-
const arr = evaluateNode(array, ctx);
|
|
502
|
-
if (!Array.isArray(arr)) {
|
|
503
|
-
return null;
|
|
504
|
-
}
|
|
505
|
-
const itemValues = items.map((item) => evaluateNode(item, ctx));
|
|
506
|
-
return [...arr, ...itemValues];
|
|
507
|
-
}
|
|
508
|
-
// ============ Object Operators ============
|
|
509
|
-
function evaluateObject(fields, ctx) {
|
|
510
|
-
const result = {};
|
|
511
|
-
for (const [key, value] of Object.entries(fields)) {
|
|
512
|
-
result[key] = evaluateNode(value, ctx);
|
|
513
|
-
}
|
|
514
|
-
return result;
|
|
515
|
-
}
|
|
516
|
-
function evaluateFieldAccess(objectExpr, property, ctx) {
|
|
517
|
-
const obj = evaluateNode(objectExpr, ctx);
|
|
518
|
-
if (obj === null || typeof obj !== "object" || Array.isArray(obj)) {
|
|
519
|
-
return null;
|
|
520
|
-
}
|
|
521
|
-
return obj[property] ?? null;
|
|
522
|
-
}
|
|
523
|
-
function evaluateKeys(obj, ctx) {
|
|
524
|
-
const o = evaluateNode(obj, ctx);
|
|
525
|
-
if (o === null || typeof o !== "object" || Array.isArray(o)) {
|
|
526
|
-
return null;
|
|
527
|
-
}
|
|
528
|
-
return Object.keys(o);
|
|
529
|
-
}
|
|
530
|
-
function evaluateValues(obj, ctx) {
|
|
531
|
-
const o = evaluateNode(obj, ctx);
|
|
532
|
-
if (o === null || typeof o !== "object" || Array.isArray(o)) {
|
|
533
|
-
return null;
|
|
534
|
-
}
|
|
535
|
-
return Object.values(o);
|
|
536
|
-
}
|
|
537
|
-
function evaluateEntries(obj, ctx) {
|
|
538
|
-
const o = evaluateNode(obj, ctx);
|
|
539
|
-
if (o === null || typeof o !== "object" || Array.isArray(o)) {
|
|
540
|
-
return null;
|
|
541
|
-
}
|
|
542
|
-
return Object.entries(o);
|
|
543
|
-
}
|
|
544
|
-
function evaluateMerge(objects, ctx) {
|
|
545
|
-
const result = {};
|
|
546
|
-
for (const objExpr of objects) {
|
|
547
|
-
const o = evaluateNode(objExpr, ctx);
|
|
548
|
-
if (o === null || typeof o !== "object" || Array.isArray(o)) {
|
|
549
|
-
return null;
|
|
550
|
-
}
|
|
551
|
-
Object.assign(result, o);
|
|
552
|
-
}
|
|
553
|
-
return result;
|
|
554
|
-
}
|
|
555
|
-
// ============ Type Operators ============
|
|
556
|
-
function evaluateTypeof(arg, ctx) {
|
|
557
|
-
const val = evaluateNode(arg, ctx);
|
|
558
|
-
if (val === null)
|
|
559
|
-
return "null";
|
|
560
|
-
if (Array.isArray(val))
|
|
561
|
-
return "array";
|
|
562
|
-
return typeof val;
|
|
563
|
-
}
|
|
564
|
-
function evaluateIsNull(arg, ctx) {
|
|
565
|
-
const val = evaluateNode(arg, ctx);
|
|
566
|
-
return val === null;
|
|
567
|
-
}
|
|
568
|
-
function evaluateCoalesce(args, ctx) {
|
|
569
|
-
for (const arg of args) {
|
|
570
|
-
const val = evaluateNode(arg, ctx);
|
|
571
|
-
if (val !== null && val !== undefined) {
|
|
572
|
-
return val;
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
return null;
|
|
576
|
-
}
|
|
577
|
-
//# sourceMappingURL=evaluate-expr.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate-expr.js","sourceRoot":"","sources":["../../src/evaluation/evaluate-expr.ts"],"names":[],"mappings":"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"}
|