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