n8n-workflow 2.43.1 → 2.43.3

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 (77) hide show
  1. package/dist/cjs/build.tsbuildinfo +1 -1
  2. package/dist/cjs/common/map-connections-by-destination.d.ts +2 -0
  3. package/dist/cjs/common/map-connections-by-destination.d.ts.map +1 -1
  4. package/dist/cjs/common/map-connections-by-destination.js +12 -0
  5. package/dist/cjs/common/map-connections-by-destination.js.map +1 -1
  6. package/dist/cjs/expressions/native-evaluation/evaluator.d.ts +17 -1
  7. package/dist/cjs/expressions/native-evaluation/evaluator.d.ts.map +1 -1
  8. package/dist/cjs/expressions/native-evaluation/evaluator.js +149 -39
  9. package/dist/cjs/expressions/native-evaluation/evaluator.js.map +1 -1
  10. package/dist/cjs/expressions/native-evaluation/grammar.d.ts +37 -1
  11. package/dist/cjs/expressions/native-evaluation/grammar.d.ts.map +1 -1
  12. package/dist/cjs/expressions/native-evaluation/grammar.js +47 -6
  13. package/dist/cjs/expressions/native-evaluation/grammar.js.map +1 -1
  14. package/dist/cjs/expressions/native-evaluation/index.d.ts +1 -1
  15. package/dist/cjs/expressions/native-evaluation/index.d.ts.map +1 -1
  16. package/dist/cjs/expressions/native-evaluation/index.js +7 -3
  17. package/dist/cjs/expressions/native-evaluation/index.js.map +1 -1
  18. package/dist/cjs/expressions/native-evaluation/parser.d.ts +1 -1
  19. package/dist/cjs/expressions/native-evaluation/parser.d.ts.map +1 -1
  20. package/dist/cjs/expressions/native-evaluation/parser.js +131 -17
  21. package/dist/cjs/expressions/native-evaluation/parser.js.map +1 -1
  22. package/dist/cjs/extensions/array-extensions.js +2 -2
  23. package/dist/cjs/extensions/array-extensions.js.map +1 -1
  24. package/dist/cjs/interfaces.d.ts +12 -0
  25. package/dist/cjs/interfaces.d.ts.map +1 -1
  26. package/dist/cjs/node-helpers.d.ts.map +1 -1
  27. package/dist/cjs/node-helpers.js +16 -3
  28. package/dist/cjs/node-helpers.js.map +1 -1
  29. package/dist/cjs/nodes-api-version.d.ts +9 -18
  30. package/dist/cjs/nodes-api-version.d.ts.map +1 -1
  31. package/dist/cjs/nodes-api-version.js +24 -19
  32. package/dist/cjs/nodes-api-version.js.map +1 -1
  33. package/dist/cjs/workflow-structure-validation.d.ts.map +1 -1
  34. package/dist/cjs/workflow-structure-validation.js +2 -1
  35. package/dist/cjs/workflow-structure-validation.js.map +1 -1
  36. package/dist/cjs/workflow.d.ts.map +1 -1
  37. package/dist/cjs/workflow.js +1 -36
  38. package/dist/cjs/workflow.js.map +1 -1
  39. package/dist/esm/common/map-connections-by-destination.d.ts +2 -0
  40. package/dist/esm/common/map-connections-by-destination.d.ts.map +1 -1
  41. package/dist/esm/common/map-connections-by-destination.js +11 -0
  42. package/dist/esm/common/map-connections-by-destination.js.map +1 -1
  43. package/dist/esm/expressions/native-evaluation/evaluator.d.ts +17 -1
  44. package/dist/esm/expressions/native-evaluation/evaluator.d.ts.map +1 -1
  45. package/dist/esm/expressions/native-evaluation/evaluator.js +148 -39
  46. package/dist/esm/expressions/native-evaluation/evaluator.js.map +1 -1
  47. package/dist/esm/expressions/native-evaluation/grammar.d.ts +37 -1
  48. package/dist/esm/expressions/native-evaluation/grammar.d.ts.map +1 -1
  49. package/dist/esm/expressions/native-evaluation/grammar.js +46 -5
  50. package/dist/esm/expressions/native-evaluation/grammar.js.map +1 -1
  51. package/dist/esm/expressions/native-evaluation/index.d.ts +1 -1
  52. package/dist/esm/expressions/native-evaluation/index.d.ts.map +1 -1
  53. package/dist/esm/expressions/native-evaluation/index.js +5 -4
  54. package/dist/esm/expressions/native-evaluation/index.js.map +1 -1
  55. package/dist/esm/expressions/native-evaluation/parser.d.ts +1 -1
  56. package/dist/esm/expressions/native-evaluation/parser.d.ts.map +1 -1
  57. package/dist/esm/expressions/native-evaluation/parser.js +132 -18
  58. package/dist/esm/expressions/native-evaluation/parser.js.map +1 -1
  59. package/dist/esm/extensions/array-extensions.js +2 -2
  60. package/dist/esm/extensions/array-extensions.js.map +1 -1
  61. package/dist/esm/interfaces.d.ts +12 -0
  62. package/dist/esm/interfaces.d.ts.map +1 -1
  63. package/dist/esm/node-helpers.d.ts.map +1 -1
  64. package/dist/esm/node-helpers.js +16 -3
  65. package/dist/esm/node-helpers.js.map +1 -1
  66. package/dist/esm/nodes-api-version.d.ts +9 -18
  67. package/dist/esm/nodes-api-version.d.ts.map +1 -1
  68. package/dist/esm/nodes-api-version.js +22 -19
  69. package/dist/esm/nodes-api-version.js.map +1 -1
  70. package/dist/esm/typecheck.tsbuildinfo +1 -1
  71. package/dist/esm/workflow-structure-validation.d.ts.map +1 -1
  72. package/dist/esm/workflow-structure-validation.js +2 -1
  73. package/dist/esm/workflow-structure-validation.js.map +1 -1
  74. package/dist/esm/workflow.d.ts.map +1 -1
  75. package/dist/esm/workflow.js +1 -36
  76. package/dist/esm/workflow.js.map +1 -1
  77. package/package.json +5 -5
@@ -1,3 +1,5 @@
1
1
  import type { IConnections } from '../interfaces';
2
+ export declare const MAX_CONNECTION_INDEX = 1000;
3
+ export declare const MAX_DESTINATION_INPUT_SLOTS = 100000;
2
4
  export declare function mapConnectionsByDestination(connections: IConnections): IConnections;
3
5
  //# sourceMappingURL=map-connections-by-destination.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"map-connections-by-destination.d.ts","sourceRoot":"","sources":["../../../src/common/map-connections-by-destination.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,eAAe,CAAC;AAEtE,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,YAAY,gBA4CpE"}
1
+ {"version":3,"file":"map-connections-by-destination.d.ts","sourceRoot":"","sources":["../../../src/common/map-connections-by-destination.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,eAAe,CAAC;AAEtE,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,eAAO,MAAM,2BAA2B,SAAU,CAAC;AAEnD,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,YAAY,gBAwDpE"}
@@ -1,11 +1,16 @@
1
1
  "use strict";
2
2
  /* eslint-disable @typescript-eslint/no-for-in-array */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.MAX_DESTINATION_INPUT_SLOTS = exports.MAX_CONNECTION_INDEX = void 0;
4
5
  exports.mapConnectionsByDestination = mapConnectionsByDestination;
6
+ const errors_1 = require("../errors");
7
+ exports.MAX_CONNECTION_INDEX = 1000;
8
+ exports.MAX_DESTINATION_INPUT_SLOTS = 100_000;
5
9
  function mapConnectionsByDestination(connections) {
6
10
  const returnConnection = {};
7
11
  let connectionInfo;
8
12
  let maxIndex;
13
+ let inputSlots = 0;
9
14
  for (const sourceNode in connections) {
10
15
  if (!connections.hasOwnProperty(sourceNode)) {
11
16
  continue;
@@ -19,6 +24,9 @@ function mapConnectionsByDestination(connections) {
19
24
  continue;
20
25
  }
21
26
  for (connectionInfo of connections[sourceNode][type][inputIndex] ?? []) {
27
+ if (connectionInfo.index > exports.MAX_CONNECTION_INDEX) {
28
+ throw new errors_1.UserError(`Connection from "${sourceNode}" to "${connectionInfo.node}" has an input index above ${exports.MAX_CONNECTION_INDEX}`);
29
+ }
22
30
  if (!returnConnection.hasOwnProperty(connectionInfo.node)) {
23
31
  returnConnection[connectionInfo.node] = {};
24
32
  }
@@ -26,6 +34,10 @@ function mapConnectionsByDestination(connections) {
26
34
  returnConnection[connectionInfo.node][connectionInfo.type] = [];
27
35
  }
28
36
  maxIndex = returnConnection[connectionInfo.node][connectionInfo.type].length - 1;
37
+ inputSlots += Math.max(0, connectionInfo.index - maxIndex);
38
+ if (inputSlots > exports.MAX_DESTINATION_INPUT_SLOTS) {
39
+ throw new errors_1.UserError(`Workflow connections use more than ${exports.MAX_DESTINATION_INPUT_SLOTS} input slots`);
40
+ }
29
41
  for (let j = maxIndex; j < connectionInfo.index; j++) {
30
42
  returnConnection[connectionInfo.node][connectionInfo.type].push([]);
31
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"map-connections-by-destination.js","sourceRoot":"","sources":["../../../src/common/map-connections-by-destination.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAIvD,qCAA4C,WAAyB;IACpE,MAAM,gBAAgB,GAAiB,EAAE,CAAC;IAE1C,IAAI,cAAc,CAAC;IACnB,IAAI,QAAgB,CAAC;IACrB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACtC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7C,SAAS;QACV,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAyB,EAAE,CAAC;YACjF,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,SAAS;YACV,CAAC;YAED,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC/D,SAAS;gBACV,CAAC;gBAED,KAAK,cAAc,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;oBACxE,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC3D,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC5C,CAAC;oBACD,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;wBAChF,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;oBACjE,CAAC;oBAED,QAAQ,GAAG,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;oBACjF,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;wBACtD,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACrE,CAAC;oBAED,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;wBACtF,IAAI,EAAE,UAAU;wBAChB,IAAI;wBACJ,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC;qBAC/B,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,gBAAgB,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"map-connections-by-destination.js","sourceRoot":"","sources":["../../../src/common/map-connections-by-destination.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,21 @@
1
1
  import type { IWorkflowDataProxyData } from '../../interfaces';
2
2
  import { type SimpleNode } from './grammar';
3
+ /**
4
+ * One evaluation's state: the data proxy, the value bound to the callback
5
+ * parameter while a body runs, and the step and work budgets spent so far.
6
+ * Only one callback is ever in scope (a nested one is unrepresentable), so a
7
+ * single slot holds the parameter, and both budgets are shared by every node
8
+ * of the expression.
9
+ */
10
+ export declare class Env {
11
+ readonly data: IWorkflowDataProxyData;
12
+ param: unknown;
13
+ steps: number;
14
+ work: number;
15
+ readonly parameters: Map<string | number, unknown>;
16
+ constructor(data: IWorkflowDataProxyData);
17
+ charge(units: number): void;
18
+ }
3
19
  /**
4
20
  * Thrown when a runtime value falls outside what parsing proved statically
5
21
  * (a whitelisted string method on a non-string receiver, an operator on an
@@ -17,5 +33,5 @@ export declare function bounded<T>(value: T): T;
17
33
  * handler, which rethrows ExpressionErrors and swallows everything else (the
18
34
  * chunk then yields undefined). Mirror that exactly.
19
35
  */
20
- export declare function evalChunk(node: SimpleNode, data: IWorkflowDataProxyData): unknown;
36
+ export declare function evalChunk(node: SimpleNode, env: Env): unknown;
21
37
  //# sourceMappingURL=evaluator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../../src/expressions/native-evaluation/evaluator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAaN,KAAK,UAAU,EACf,MAAM,WAAW,CAAC;AAQnB;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;CAAG;AA0BjD,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAQtC;AA2VD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAajF"}
1
+ {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../../src/expressions/native-evaluation/evaluator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAgBN,KAAK,UAAU,EACf,MAAM,WAAW,CAAC;AAQnB;;;;;;GAMG;AACH,qBAAa,GAAG;IASH,QAAQ,CAAC,IAAI,EAAE,sBAAsB;IARjD,KAAK,EAAE,OAAO,CAAa;IAE3B,KAAK,SAAK;IAEV,IAAI,SAAK;IAET,QAAQ,CAAC,UAAU,gCAAuC;IAE1D,YAAqB,IAAI,EAAE,sBAAsB,EAAI;IAErD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAG1B;CACD;AAED;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;CAAG;AA0BjD,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAQtC;AAmbD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAa7D"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EngineFallbackError = void 0;
3
+ exports.EngineFallbackError = exports.Env = void 0;
4
4
  exports.bounded = bounded;
5
5
  exports.evalChunk = evalChunk;
6
6
  const expression_extension_error_1 = require("../../errors/expression-extension.error");
@@ -11,6 +11,29 @@ const grammar_1 = require("./grammar");
11
11
  // evalNode reads only fields parseSimple constructed, because those are the
12
12
  // only fields that exist. The switch has no default branch: adding a kind to
13
13
  // the grammar stops compilation until it is handled here.
14
+ /**
15
+ * One evaluation's state: the data proxy, the value bound to the callback
16
+ * parameter while a body runs, and the step and work budgets spent so far.
17
+ * Only one callback is ever in scope (a nested one is unrepresentable), so a
18
+ * single slot holds the parameter, and both budgets are shared by every node
19
+ * of the expression.
20
+ */
21
+ class Env {
22
+ data;
23
+ param = undefined;
24
+ steps = 0;
25
+ work = 0;
26
+ parameters = new Map();
27
+ constructor(data) {
28
+ this.data = data;
29
+ }
30
+ charge(units) {
31
+ this.work += units;
32
+ if (this.work > grammar_1.MAX_WORK)
33
+ throw new EngineFallbackError();
34
+ }
35
+ }
36
+ exports.Env = Env;
14
37
  /**
15
38
  * Thrown when a runtime value falls outside what parsing proved statically
16
39
  * (a whitelisted string method on a non-string receiver, an operator on an
@@ -71,25 +94,26 @@ const binaryOps = Object.freeze({
71
94
  '%': (l, r) => l % r,
72
95
  });
73
96
  /* eslint-enable @typescript-eslint/no-explicit-any */
74
- function evalMember(node, data) {
75
- const object = evalNode(node.object, data);
97
+ function evalMember(node, env) {
98
+ const object = evalNode(node.object, env);
76
99
  if (node.optional && (object === null || object === undefined)) {
77
100
  throw chainShortCircuit;
78
101
  }
79
102
  if (!isIndexable(object)) {
80
103
  throw new TypeError(`Cannot read properties of ${(0, grammar_1.toStr)(object)} (reading '${node.key}')`);
81
104
  }
82
- // Below the roots (get-trap proxies, where Object.hasOwn misreports every
83
- // key) the data is plain JSON, so an inherited property is a host prototype
84
- // the isolates never see. The engine decides what it yields.
105
+ // Below the roots and node references (get-trap proxies, where Object.hasOwn
106
+ // misreports every key) the data is plain JSON, so an inherited property is
107
+ // a host prototype the isolates never see. The engine decides what it yields.
85
108
  const inherited = node.object.kind !== 'root' &&
109
+ node.object.kind !== 'nodeRef' &&
86
110
  typeof object === 'object' &&
87
111
  node.key in object &&
88
112
  !(0, grammar_1.hasOwn)(object, node.key);
89
113
  if (inherited) {
90
114
  throw new EngineFallbackError();
91
115
  }
92
- const value = object[node.key];
116
+ const value = isParameterRead(node) ? readParameter(object, node.key, env) : object[node.key];
93
117
  // Neither crosses an engine boundary the same way twice (the vm bridge
94
118
  // drops a nested function but fails on an inherited one; legacy throws),
95
119
  // so the configured engine decides rather than this module guessing.
@@ -98,6 +122,19 @@ function evalMember(node, data) {
98
122
  }
99
123
  return value;
100
124
  }
125
+ const isParameterRead = (node) => node.object.kind === 'root' && node.object.name === '$parameter';
126
+ /**
127
+ * A `$parameter` read resolves a nested `=` expression through the proxy on
128
+ * every access, each in its own evaluation with its own budgets. A callback
129
+ * body would resolve it once per element, multiplying the budgets. The vm
130
+ * bridge resolves each parameter once per evaluation; do the same, so nested
131
+ * work is one budget per key the expression names.
132
+ */
133
+ function readParameter(proxy, key, env) {
134
+ if (!env.parameters.has(key))
135
+ env.parameters.set(key, proxy[key]);
136
+ return env.parameters.get(key);
137
+ }
101
138
  /**
102
139
  * Parsing only proves the method name; the receiver's type is data. A
103
140
  * receiver whose type has no allowlist entry for the method could be
@@ -133,9 +170,10 @@ function isAllowedArgument(method, arg) {
133
170
  * interrupted, so the input size is the budget. A receiver above the result
134
171
  * cap goes to the engine before any work is done, and the amplifying methods
135
172
  * (which can allocate far beyond MAX_RESULT_LENGTH before bounded() sees the
136
- * result) bail on an upper bound of their output.
173
+ * result) bail on an upper bound of their output. Returns that bound, which
174
+ * the caller charges against the expression's work budget.
137
175
  */
138
- function assertPreflightSize(receiver, method, args) {
176
+ function preflightSize(receiver, method, args) {
139
177
  let upperBound = typeof receiver === 'number' ? 0 : receiver.length;
140
178
  if (method === 'concat') {
141
179
  for (const arg of args) {
@@ -172,6 +210,7 @@ function assertPreflightSize(receiver, method, args) {
172
210
  if (upperBound > grammar_1.MAX_RESULT_LENGTH) {
173
211
  throw new EngineFallbackError();
174
212
  }
213
+ return upperBound;
175
214
  }
176
215
  /**
177
216
  * Element count of `array.flat(depth)`, stopping early once past the cap
@@ -258,8 +297,8 @@ function assertConcatWeight(receiver, args) {
258
297
  if (weight > grammar_1.MAX_RESULT_LENGTH)
259
298
  throw new EngineFallbackError();
260
299
  }
261
- function evalCall(node, data) {
262
- const receiver = evalNode(node.receiver, data);
300
+ function evalReceiver(node, env) {
301
+ const receiver = evalNode(node.receiver, env);
263
302
  const receiverMissing = receiver === null || receiver === undefined;
264
303
  if (node.optional && receiverMissing) {
265
304
  throw chainShortCircuit;
@@ -267,13 +306,20 @@ function evalCall(node, data) {
267
306
  if (receiverMissing) {
268
307
  throw new TypeError(`Cannot read properties of ${(0, grammar_1.toStr)(receiver)} (reading '${node.method}')`);
269
308
  }
309
+ return receiver;
310
+ }
311
+ function evalCall(node, env) {
312
+ const receiver = evalReceiver(node, env);
313
+ if (node.receiver.kind === 'nodeRef') {
314
+ return evalNodeRefCall(receiver, node.method);
315
+ }
270
316
  // An own property shadowing the method (an engine-resolved $parameter value
271
317
  // can carry one) would take precedence in the engines.
272
318
  if ((0, grammar_1.hasOwn)(receiver, node.method)) {
273
319
  throw new EngineFallbackError();
274
320
  }
275
321
  const method = methodFor(receiver, node.method);
276
- const args = node.args.map((argument) => evalNode(argument, data));
322
+ const args = node.args.map((argument) => evalNode(argument, env));
277
323
  if (!args.every((arg) => isAllowedArgument(node.method, arg))) {
278
324
  throw new EngineFallbackError();
279
325
  }
@@ -283,12 +329,61 @@ function evalCall(node, data) {
283
329
  if (node.method === 'concat')
284
330
  assertConcatWeight(receiver, args);
285
331
  }
286
- assertPreflightSize(receiver, node.method, args);
332
+ env.charge(preflightSize(receiver, node.method, args));
287
333
  return bounded(method.apply(receiver, args));
288
334
  }
289
- function evalChain(node, data) {
335
+ /**
336
+ * `some`/`every`/`find`/`filter`/`map` with a callback body. The native
337
+ * method drives the iteration; the body runs per element with the element
338
+ * bound to the parameter, under the shared step and work budgets. map is the one
339
+ * method whose result is new content per element, so it is bounded by the
340
+ * content weight of its results the way concat is bounded by its operands.
341
+ */
342
+ function evalIterate(node, env) {
343
+ const receiver = evalReceiver(node, env);
344
+ if (!(0, grammar_1.isArray)(receiver) || (0, grammar_1.hasOwn)(receiver, node.method)) {
345
+ throw new EngineFallbackError();
346
+ }
347
+ const method = grammar_1.ITERATOR_NATIVES.get(node.method);
348
+ if (method === undefined)
349
+ throw new EngineFallbackError();
350
+ env.charge(preflightSize(receiver, node.method, []));
351
+ let weight = 0;
352
+ const visit = (element) => {
353
+ if (++env.steps > grammar_1.MAX_STEPS)
354
+ throw new EngineFallbackError();
355
+ env.param = element;
356
+ const result = evalNode(node.body, env);
357
+ if (node.method === 'map') {
358
+ weight += contentWeight(result, grammar_1.MAX_RESULT_LENGTH - weight);
359
+ if (weight > grammar_1.MAX_RESULT_LENGTH)
360
+ throw new EngineFallbackError();
361
+ }
362
+ return result;
363
+ };
364
+ return bounded(method.call(receiver, visit));
365
+ }
366
+ /**
367
+ * `first()`, `last()` and `all()` on a node proxy. The proxy hands back a
368
+ * host function that reads run data for the node the reference names, which
369
+ * is what the engines call too (the vm bridge routes it through typed RPC).
370
+ */
371
+ function evalNodeRefCall(proxy, method) {
372
+ const fn = Reflect.get(proxy, method);
373
+ if (typeof fn !== 'function')
374
+ throw new EngineFallbackError();
375
+ return bounded(fn.call(proxy));
376
+ }
377
+ function evalNodeRef(node, env) {
378
+ if (node.ref === 'input')
379
+ return env.data.$input;
380
+ if (node.ref === 'legacy')
381
+ return env.data.$node[node.name];
382
+ return env.data.$(node.name);
383
+ }
384
+ function evalChain(node, env) {
290
385
  try {
291
- return evalNode(node.expression, data);
386
+ return evalNode(node.expression, env);
292
387
  }
293
388
  catch (error) {
294
389
  if (error === chainShortCircuit)
@@ -296,8 +391,8 @@ function evalChain(node, data) {
296
391
  throw error;
297
392
  }
298
393
  }
299
- function evalUnary(node, data) {
300
- const argument = evalNode(node.argument, data);
394
+ function evalUnary(node, env) {
395
+ const argument = evalNode(node.argument, env);
301
396
  if (node.op === '!') {
302
397
  return !argument;
303
398
  }
@@ -306,49 +401,64 @@ function evalUnary(node, data) {
306
401
  }
307
402
  return node.op === '-' ? -(0, grammar_1.toNum)(argument) : (0, grammar_1.toNum)(argument);
308
403
  }
309
- function evalBinary(node, data) {
310
- const left = evalNode(node.left, data);
311
- const right = evalNode(node.right, data);
404
+ function evalBinary(node, env) {
405
+ const left = evalNode(node.left, env);
406
+ const right = evalNode(node.right, env);
312
407
  if (!isPrimitive(left) || !isPrimitive(right)) {
313
408
  throw new EngineFallbackError();
314
409
  }
315
- return binaryOps[node.op](left, right);
410
+ const result = binaryOps[node.op](left, right);
411
+ // `+` is the one operator that allocates; a body concatenating a payload
412
+ // string per element repeats that allocation.
413
+ if (typeof result === 'string')
414
+ env.charge(result.length);
415
+ return result;
316
416
  }
317
- function evalLogical(node, data) {
318
- const left = evalNode(node.left, data);
417
+ function evalLogical(node, env) {
418
+ const left = evalNode(node.left, env);
319
419
  switch (node.op) {
320
420
  case '&&':
321
- return left ? evalNode(node.right, data) : left;
421
+ return left ? evalNode(node.right, env) : left;
322
422
  case '||':
323
- return left ? left : evalNode(node.right, data);
423
+ return left ? left : evalNode(node.right, env);
324
424
  case '??':
325
- return left ?? evalNode(node.right, data);
425
+ return left ?? evalNode(node.right, env);
326
426
  }
327
427
  }
328
- function evalNode(node, data) {
428
+ function evalNode(node, env) {
329
429
  switch (node.kind) {
330
430
  case 'literal':
331
431
  return node.value;
332
432
  case 'root':
333
- return node.name === '$json' ? data.$json : data.$parameter;
433
+ return env.data[node.name];
434
+ case 'nodeRef':
435
+ return evalNodeRef(node, env);
334
436
  case 'undefined':
335
437
  return undefined;
336
438
  case 'member':
337
- return evalMember(node, data);
439
+ return evalMember(node, env);
338
440
  case 'chain':
339
- return evalChain(node, data);
441
+ return evalChain(node, env);
340
442
  case 'unary':
341
- return evalUnary(node, data);
443
+ return evalUnary(node, env);
342
444
  case 'binary':
343
- return evalBinary(node, data);
445
+ return evalBinary(node, env);
344
446
  case 'logical':
345
- return evalLogical(node, data);
447
+ return evalLogical(node, env);
346
448
  case 'conditional':
347
- return evalNode(node.test, data)
348
- ? evalNode(node.consequent, data)
349
- : evalNode(node.alternate, data);
449
+ return evalNode(node.test, env)
450
+ ? evalNode(node.consequent, env)
451
+ : evalNode(node.alternate, env);
350
452
  case 'call':
351
- return evalCall(node, data);
453
+ return evalCall(node, env);
454
+ case 'array':
455
+ // A literal is built afresh on every evaluation, once per visit in a body.
456
+ env.charge(node.elements.length);
457
+ return node.elements.map((element) => element.value);
458
+ case 'param':
459
+ return env.param;
460
+ case 'iterate':
461
+ return evalIterate(node, env);
352
462
  }
353
463
  }
354
464
  /**
@@ -356,9 +466,9 @@ function evalNode(node, data) {
356
466
  * handler, which rethrows ExpressionErrors and swallows everything else (the
357
467
  * chunk then yields undefined). Mirror that exactly.
358
468
  */
359
- function evalChunk(node, data) {
469
+ function evalChunk(node, env) {
360
470
  try {
361
- return evalNode(node, data);
471
+ return evalNode(node, env);
362
472
  }
363
473
  catch (error) {
364
474
  const rethrow = error instanceof EngineFallbackError ||
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../../src/expressions/native-evaluation/evaluator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../../src/expressions/native-evaluation/evaluator.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,18 @@ export type SimpleNode = {
9
9
  value: string | number | boolean | null;
10
10
  } | {
11
11
  kind: 'root';
12
- name: '$json' | '$parameter';
12
+ name: DataRoot;
13
+ } | {
14
+ kind: 'nodeRef';
15
+ ref: 'input';
16
+ } | {
17
+ kind: 'nodeRef';
18
+ ref: 'node';
19
+ name: string;
20
+ } | {
21
+ kind: 'nodeRef';
22
+ ref: 'legacy';
23
+ name: string;
13
24
  } | {
14
25
  kind: 'undefined';
15
26
  } | {
@@ -45,7 +56,26 @@ export type SimpleNode = {
45
56
  method: string;
46
57
  args: SimpleNode[];
47
58
  optional: boolean;
59
+ } | {
60
+ kind: 'array';
61
+ elements: Literal[];
62
+ } | {
63
+ kind: 'param';
64
+ } | {
65
+ kind: 'iterate';
66
+ receiver: SimpleNode;
67
+ method: IteratorMethod;
68
+ body: SimpleNode;
69
+ optional: boolean;
48
70
  };
71
+ export type Literal = Extract<SimpleNode, {
72
+ kind: 'literal';
73
+ }>;
74
+ export declare const DATA_ROOTS: readonly ['$json', '$parameter', '$vars', '$binary', '$itemIndex', '$runIndex'];
75
+ export type DataRoot = (typeof DATA_ROOTS)[number];
76
+ export declare const NODE_REF_MEMBERS: Set<string>;
77
+ export declare const LEGACY_NODE_REF_MEMBERS: Set<string>;
78
+ export declare const NODE_REF_METHODS: Set<string>;
49
79
  export declare const isArray: (arg: any) => arg is any[];
50
80
  export declare const hasOwn: (o: object, v: PropertyKey) => boolean;
51
81
  export declare const toStr: StringConstructor;
@@ -55,8 +85,14 @@ export type NativeMethod = (this: unknown, ...args: unknown[]) => unknown;
55
85
  export declare const STRING_METHODS: ReadonlyMap<string, NativeMethod>;
56
86
  export declare const NUMBER_METHODS: ReadonlyMap<string, NativeMethod>;
57
87
  export declare const ARRAY_METHODS: ReadonlyMap<string, NativeMethod>;
88
+ export declare const ITERATOR_METHODS: readonly ['some', 'every', 'find', 'filter', 'map'];
89
+ export type IteratorMethod = (typeof ITERATOR_METHODS)[number];
90
+ export declare const ITERATOR_NATIVES: ReadonlyMap<string, NativeMethod>;
91
+ export declare const RESERVED_NAMES: Set<string>;
58
92
  export declare const CALLABLE_METHODS: Set<string>;
59
93
  export declare const MAX_RESULT_LENGTH = 1000000;
94
+ export declare const MAX_STEPS = 100000;
95
+ export declare const MAX_WORK: number;
60
96
  export declare const MAX_DEPTH = 64;
61
97
  export declare const isObj: (value: unknown) => value is Record<string, unknown>;
62
98
  export declare const isOneOf: <T extends string>(ops: readonly T[], op: unknown) => op is T;
@@ -1 +1 @@
1
- {"version":3,"file":"grammar.d.ts","sourceRoot":"","sources":["../../../../src/expressions/native-evaluation/grammar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grammar.d.ts","sourceRoot":"","sources":["../../../../src/expressions/native-evaluation/grammar.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isOneOf = exports.isObj = exports.MAX_DEPTH = exports.MAX_RESULT_LENGTH = exports.CALLABLE_METHODS = exports.ARRAY_METHODS = exports.NUMBER_METHODS = exports.STRING_METHODS = exports.clone = exports.toNum = exports.toStr = exports.hasOwn = exports.isArray = exports.UNARY_OPS = exports.BINARY_OPS = void 0;
3
+ exports.isOneOf = exports.isObj = exports.MAX_DEPTH = exports.MAX_WORK = exports.MAX_STEPS = exports.MAX_RESULT_LENGTH = exports.CALLABLE_METHODS = exports.RESERVED_NAMES = exports.ITERATOR_NATIVES = exports.ITERATOR_METHODS = exports.ARRAY_METHODS = exports.NUMBER_METHODS = exports.STRING_METHODS = exports.clone = exports.toNum = exports.toStr = exports.hasOwn = exports.isArray = exports.NODE_REF_METHODS = exports.LEGACY_NODE_REF_MEMBERS = exports.NODE_REF_MEMBERS = exports.DATA_ROOTS = exports.UNARY_OPS = exports.BINARY_OPS = void 0;
4
4
  // The closed subset grammar, its operator and method allowlists, and the
5
5
  // limits the parser and the evaluator share. See index.ts for the overview.
6
6
  exports.BINARY_OPS = [
@@ -19,8 +19,7 @@ exports.BINARY_OPS = [
19
19
  '%',
20
20
  ];
21
21
  exports.UNARY_OPS = ['!', '-', '+'];
22
- // Roots are `$json` and `$parameter` only (the literal comparisons in
23
- // parseIdentifier). More roots are CAT-4697. `$now`/`$today` are excluded on
22
+ // Data roots: plain reads off the data proxy. `$now`/`$today` are excluded on
24
23
  // purpose: they are Luxon DateTimes whose methods would make every useful
25
24
  // expression on them a CallExpression anyway.
26
25
  //
@@ -28,6 +27,27 @@ exports.UNARY_OPS = ['!', '-', '+'];
28
27
  // re-entering resolveSimpleParameterValue - a nested non-simple value simply
29
28
  // takes the engine path there (under lazy acquisition, creating the bridge on
30
29
  // demand).
30
+ //
31
+ // Note on $binary: the proxy strips the `data` field from every entry, so a
32
+ // whole-value read never carries a payload.
33
+ exports.DATA_ROOTS = [
34
+ '$json',
35
+ '$parameter',
36
+ '$vars',
37
+ '$binary',
38
+ '$itemIndex',
39
+ '$runIndex',
40
+ ];
41
+ // Node references: `$('Name')` and `$input` resolve to the node proxy, the
42
+ // legacy `$node['Name']` to the item-level proxy. A nodeRef is only ever
43
+ // built as the object of an allowlisted member (NODE_REF_MEMBERS) or the
44
+ // receiver of an allowlisted zero-argument call (NODE_REF_METHODS), so a bare
45
+ // reference is unrepresentable. Evaluation goes through the same host proxy
46
+ // the engines call, paired-item resolution included, which is what keeps the
47
+ // two paths in parity; the proxy's ExpressionErrors propagate unchanged.
48
+ exports.NODE_REF_MEMBERS = new Set(['item']);
49
+ exports.LEGACY_NODE_REF_MEMBERS = new Set(['json', 'binary']);
50
+ exports.NODE_REF_METHODS = new Set(['first', 'last', 'all']);
31
51
  // Intrinsics are captured at import so a later patch to a prototype or a
32
52
  // global (a polyfill, a community package) does not change what the native
33
53
  // path runs; the isolates never see such a patch either.
@@ -51,9 +71,9 @@ const captureMethods = (proto, names) => {
51
71
  // natives pass through untouched) - pinned by a test in the parity corpus.
52
72
  // The receiver's type is only known at runtime: a receiver whose type has no
53
73
  // allowlist entry for the method makes the evaluation bail to the engine
54
- // (EngineFallbackError below). Callback-taking forms (regex/function args,
55
- // array callbacks) are unrepresentable: those argument nodes decline parsing.
56
- // Accepting callbacks is CAT-4698.
74
+ // (EngineFallbackError below). Regex and function arguments are
75
+ // unrepresentable: those argument nodes decline parsing. The one callback
76
+ // form is ITERATOR_METHODS below.
57
77
  exports.STRING_METHODS = captureMethods(String.prototype, [
58
78
  'toUpperCase',
59
79
  'toLowerCase',
@@ -92,6 +112,17 @@ exports.ARRAY_METHODS = captureMethods(Array.prototype, [
92
112
  'toSorted',
93
113
  'toReversed',
94
114
  ]);
115
+ // Array methods that take one callback. The callback is a single-parameter
116
+ // arrow function with an expression body in the same closed grammar; the
117
+ // parameter is the only name it adds, and a nested callback declines. These
118
+ // are the only calls where the interpreter runs an expression per element,
119
+ // so they are a grammar kind of their own (iterate), under MAX_STEPS.
120
+ exports.ITERATOR_METHODS = ['some', 'every', 'find', 'filter', 'map'];
121
+ exports.ITERATOR_NATIVES = captureMethods(Array.prototype, [...exports.ITERATOR_METHODS]);
122
+ // A callback parameter may not take one of these names: the body would then
123
+ // read the parameter where this grammar reads the root. `undefined` is a
124
+ // legal parameter name in JS; here it is a literal.
125
+ exports.RESERVED_NAMES = new Set([...exports.DATA_ROOTS, '$input', '$node', '$', 'undefined']);
95
126
  exports.CALLABLE_METHODS = new Set([
96
127
  ...exports.STRING_METHODS.keys(),
97
128
  ...exports.NUMBER_METHODS.keys(),
@@ -102,6 +133,16 @@ exports.CALLABLE_METHODS = new Set([
102
133
  // engine so those limits apply (nested replaceAll('', ...) or concat chains
103
134
  // can otherwise expand without bound on the main thread).
104
135
  exports.MAX_RESULT_LENGTH = 1_000_000;
136
+ // Callback body evaluations one expression may run, across all its iterate
137
+ // nodes. The receiver cap alone would let a body with its own allocation
138
+ // (a replaceAll per element) repeat a million times on the main thread.
139
+ exports.MAX_STEPS = 100_000;
140
+ // Characters one expression may put through its method calls and string
141
+ // concatenations in total. The step cap bounds visits, not the work one
142
+ // visit does (a body can scan a MAX_RESULT_LENGTH string per element); this
143
+ // bounds the product, in units the interpreter already computes, so it does
144
+ // not depend on the clock or the machine.
145
+ exports.MAX_WORK = 10 * exports.MAX_RESULT_LENGTH;
105
146
  // Nesting depth of the subset grammar. Parsing and evaluation both recurse
106
147
  // once per level, so this keeps a pathological expression off the host stack;
107
148
  // real expressions are a handful of levels deep.