@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.
Files changed (201) hide show
  1. package/README.md +67 -18
  2. package/dist/chunk-BH25NHMN.js +74 -0
  3. package/dist/chunk-BH25NHMN.js.map +1 -0
  4. package/dist/chunk-D62NIFP4.js +33 -0
  5. package/dist/chunk-D62NIFP4.js.map +1 -0
  6. package/dist/chunk-MKLDAZ2Z.js +6920 -0
  7. package/dist/chunk-MKLDAZ2Z.js.map +1 -0
  8. package/dist/esbuild.d.ts +8 -0
  9. package/dist/esbuild.js +14 -0
  10. package/dist/esbuild.js.map +1 -0
  11. package/dist/index.d.ts +2810 -11
  12. package/dist/index.js +2425 -43
  13. package/dist/index.js.map +1 -1
  14. package/dist/node-loader.d.ts +18 -0
  15. package/dist/node-loader.js +47 -0
  16. package/dist/node-loader.js.map +1 -0
  17. package/dist/rollup.d.ts +8 -0
  18. package/dist/rollup.js +14 -0
  19. package/dist/rollup.js.map +1 -0
  20. package/dist/rspack.d.ts +7 -0
  21. package/dist/rspack.js +14 -0
  22. package/dist/rspack.js.map +1 -0
  23. package/dist/unplugin-6wnvFiEo.d.ts +17 -0
  24. package/dist/vite.d.ts +8 -17
  25. package/dist/vite.js +13 -33
  26. package/dist/vite.js.map +1 -1
  27. package/dist/webpack.d.ts +8 -0
  28. package/dist/webpack.js +14 -0
  29. package/dist/webpack.js.map +1 -0
  30. package/package.json +40 -22
  31. package/dist/analyzer/index.d.ts +0 -6
  32. package/dist/analyzer/index.d.ts.map +0 -1
  33. package/dist/analyzer/index.js +0 -6
  34. package/dist/analyzer/index.js.map +0 -1
  35. package/dist/analyzer/scope.d.ts +0 -77
  36. package/dist/analyzer/scope.d.ts.map +0 -1
  37. package/dist/analyzer/scope.js +0 -296
  38. package/dist/analyzer/scope.js.map +0 -1
  39. package/dist/analyzer/validator.d.ts +0 -60
  40. package/dist/analyzer/validator.d.ts.map +0 -1
  41. package/dist/analyzer/validator.js +0 -439
  42. package/dist/analyzer/validator.js.map +0 -1
  43. package/dist/api/compile-mel-patch-collector.d.ts +0 -32
  44. package/dist/api/compile-mel-patch-collector.d.ts.map +0 -1
  45. package/dist/api/compile-mel-patch-collector.js +0 -425
  46. package/dist/api/compile-mel-patch-collector.js.map +0 -1
  47. package/dist/api/compile-mel-patch-expr.d.ts +0 -9
  48. package/dist/api/compile-mel-patch-expr.d.ts.map +0 -1
  49. package/dist/api/compile-mel-patch-expr.js +0 -179
  50. package/dist/api/compile-mel-patch-expr.js.map +0 -1
  51. package/dist/api/compile-mel-patch-location.d.ts +0 -10
  52. package/dist/api/compile-mel-patch-location.d.ts.map +0 -1
  53. package/dist/api/compile-mel-patch-location.js +0 -48
  54. package/dist/api/compile-mel-patch-location.js.map +0 -1
  55. package/dist/api/compile-mel-patch.d.ts +0 -6
  56. package/dist/api/compile-mel-patch.d.ts.map +0 -1
  57. package/dist/api/compile-mel-patch.js +0 -244
  58. package/dist/api/compile-mel-patch.js.map +0 -1
  59. package/dist/api/compile-mel.d.ts +0 -126
  60. package/dist/api/compile-mel.d.ts.map +0 -1
  61. package/dist/api/compile-mel.js +0 -114
  62. package/dist/api/compile-mel.js.map +0 -1
  63. package/dist/api/index.d.ts +0 -10
  64. package/dist/api/index.d.ts.map +0 -1
  65. package/dist/api/index.js +0 -9
  66. package/dist/api/index.js.map +0 -1
  67. package/dist/diagnostics/codes.d.ts +0 -25
  68. package/dist/diagnostics/codes.d.ts.map +0 -1
  69. package/dist/diagnostics/codes.js +0 -154
  70. package/dist/diagnostics/codes.js.map +0 -1
  71. package/dist/diagnostics/index.d.ts +0 -6
  72. package/dist/diagnostics/index.d.ts.map +0 -1
  73. package/dist/diagnostics/index.js +0 -6
  74. package/dist/diagnostics/index.js.map +0 -1
  75. package/dist/diagnostics/types.d.ts +0 -67
  76. package/dist/diagnostics/types.d.ts.map +0 -1
  77. package/dist/diagnostics/types.js +0 -58
  78. package/dist/diagnostics/types.js.map +0 -1
  79. package/dist/evaluation/context.d.ts +0 -91
  80. package/dist/evaluation/context.d.ts.map +0 -1
  81. package/dist/evaluation/context.js +0 -53
  82. package/dist/evaluation/context.js.map +0 -1
  83. package/dist/evaluation/evaluate-expr.d.ts +0 -24
  84. package/dist/evaluation/evaluate-expr.d.ts.map +0 -1
  85. package/dist/evaluation/evaluate-expr.js +0 -577
  86. package/dist/evaluation/evaluate-expr.js.map +0 -1
  87. package/dist/evaluation/evaluate-patch.d.ts +0 -123
  88. package/dist/evaluation/evaluate-patch.d.ts.map +0 -1
  89. package/dist/evaluation/evaluate-patch.js +0 -202
  90. package/dist/evaluation/evaluate-patch.js.map +0 -1
  91. package/dist/evaluation/evaluate-runtime-patch.d.ts +0 -86
  92. package/dist/evaluation/evaluate-runtime-patch.d.ts.map +0 -1
  93. package/dist/evaluation/evaluate-runtime-patch.js +0 -185
  94. package/dist/evaluation/evaluate-runtime-patch.js.map +0 -1
  95. package/dist/evaluation/index.d.ts +0 -15
  96. package/dist/evaluation/index.d.ts.map +0 -1
  97. package/dist/evaluation/index.js +0 -13
  98. package/dist/evaluation/index.js.map +0 -1
  99. package/dist/generator/index.d.ts +0 -7
  100. package/dist/generator/index.d.ts.map +0 -1
  101. package/dist/generator/index.js +0 -7
  102. package/dist/generator/index.js.map +0 -1
  103. package/dist/generator/ir.d.ts +0 -348
  104. package/dist/generator/ir.d.ts.map +0 -1
  105. package/dist/generator/ir.js +0 -715
  106. package/dist/generator/ir.js.map +0 -1
  107. package/dist/generator/lowering.d.ts +0 -11
  108. package/dist/generator/lowering.d.ts.map +0 -1
  109. package/dist/generator/lowering.js +0 -369
  110. package/dist/generator/lowering.js.map +0 -1
  111. package/dist/generator/normalizer.d.ts +0 -16
  112. package/dist/generator/normalizer.d.ts.map +0 -1
  113. package/dist/generator/normalizer.js +0 -181
  114. package/dist/generator/normalizer.js.map +0 -1
  115. package/dist/index.d.ts.map +0 -1
  116. package/dist/lexer/index.d.ts +0 -7
  117. package/dist/lexer/index.d.ts.map +0 -1
  118. package/dist/lexer/index.js +0 -7
  119. package/dist/lexer/index.js.map +0 -1
  120. package/dist/lexer/lexer.d.ts +0 -59
  121. package/dist/lexer/lexer.d.ts.map +0 -1
  122. package/dist/lexer/lexer.js +0 -433
  123. package/dist/lexer/lexer.js.map +0 -1
  124. package/dist/lexer/source-location.d.ts +0 -41
  125. package/dist/lexer/source-location.d.ts.map +0 -1
  126. package/dist/lexer/source-location.js +0 -33
  127. package/dist/lexer/source-location.js.map +0 -1
  128. package/dist/lexer/tokens.d.ts +0 -47
  129. package/dist/lexer/tokens.d.ts.map +0 -1
  130. package/dist/lexer/tokens.js +0 -73
  131. package/dist/lexer/tokens.js.map +0 -1
  132. package/dist/loader.d.ts +0 -23
  133. package/dist/loader.d.ts.map +0 -1
  134. package/dist/loader.js +0 -62
  135. package/dist/loader.js.map +0 -1
  136. package/dist/lowering/context.d.ts +0 -96
  137. package/dist/lowering/context.d.ts.map +0 -1
  138. package/dist/lowering/context.js +0 -42
  139. package/dist/lowering/context.js.map +0 -1
  140. package/dist/lowering/errors.d.ts +0 -84
  141. package/dist/lowering/errors.d.ts.map +0 -1
  142. package/dist/lowering/errors.js +0 -81
  143. package/dist/lowering/errors.js.map +0 -1
  144. package/dist/lowering/index.d.ts +0 -20
  145. package/dist/lowering/index.d.ts.map +0 -1
  146. package/dist/lowering/index.js +0 -13
  147. package/dist/lowering/index.js.map +0 -1
  148. package/dist/lowering/lower-expr.d.ts +0 -76
  149. package/dist/lowering/lower-expr.d.ts.map +0 -1
  150. package/dist/lowering/lower-expr.js +0 -366
  151. package/dist/lowering/lower-expr.js.map +0 -1
  152. package/dist/lowering/lower-patch.d.ts +0 -231
  153. package/dist/lowering/lower-patch.d.ts.map +0 -1
  154. package/dist/lowering/lower-patch.js +0 -146
  155. package/dist/lowering/lower-patch.js.map +0 -1
  156. package/dist/lowering/lower-runtime-patch.d.ts +0 -100
  157. package/dist/lowering/lower-runtime-patch.d.ts.map +0 -1
  158. package/dist/lowering/lower-runtime-patch.js +0 -49
  159. package/dist/lowering/lower-runtime-patch.js.map +0 -1
  160. package/dist/mel-module.d.ts +0 -13
  161. package/dist/mel-module.d.ts.map +0 -1
  162. package/dist/mel-module.js +0 -33
  163. package/dist/mel-module.js.map +0 -1
  164. package/dist/parser/ast.d.ts +0 -344
  165. package/dist/parser/ast.d.ts.map +0 -1
  166. package/dist/parser/ast.js +0 -24
  167. package/dist/parser/ast.js.map +0 -1
  168. package/dist/parser/index.d.ts +0 -7
  169. package/dist/parser/index.d.ts.map +0 -1
  170. package/dist/parser/index.js +0 -7
  171. package/dist/parser/index.js.map +0 -1
  172. package/dist/parser/parser.d.ts +0 -92
  173. package/dist/parser/parser.d.ts.map +0 -1
  174. package/dist/parser/parser.js +0 -892
  175. package/dist/parser/parser.js.map +0 -1
  176. package/dist/parser/precedence.d.ts +0 -44
  177. package/dist/parser/precedence.d.ts.map +0 -1
  178. package/dist/parser/precedence.js +0 -69
  179. package/dist/parser/precedence.js.map +0 -1
  180. package/dist/renderer/expr-node.d.ts +0 -172
  181. package/dist/renderer/expr-node.d.ts.map +0 -1
  182. package/dist/renderer/expr-node.js +0 -218
  183. package/dist/renderer/expr-node.js.map +0 -1
  184. package/dist/renderer/fragment.d.ts +0 -84
  185. package/dist/renderer/fragment.d.ts.map +0 -1
  186. package/dist/renderer/fragment.js +0 -172
  187. package/dist/renderer/fragment.js.map +0 -1
  188. package/dist/renderer/index.d.ts +0 -23
  189. package/dist/renderer/index.d.ts.map +0 -1
  190. package/dist/renderer/index.js +0 -27
  191. package/dist/renderer/index.js.map +0 -1
  192. package/dist/renderer/patch-op.d.ts +0 -82
  193. package/dist/renderer/patch-op.d.ts.map +0 -1
  194. package/dist/renderer/patch-op.js +0 -204
  195. package/dist/renderer/patch-op.js.map +0 -1
  196. package/dist/renderer/type-expr.d.ts +0 -61
  197. package/dist/renderer/type-expr.d.ts.map +0 -1
  198. package/dist/renderer/type-expr.js +0 -131
  199. package/dist/renderer/type-expr.js.map +0 -1
  200. package/dist/vite.d.ts.map +0 -1
  201. 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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"}