n8n-workflow 2.44.2 → 2.45.1

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 (117) hide show
  1. package/dist/cjs/build.tsbuildinfo +1 -1
  2. package/dist/cjs/dynamic-credentials-helpers.d.ts +11 -2
  3. package/dist/cjs/dynamic-credentials-helpers.d.ts.map +1 -1
  4. package/dist/cjs/dynamic-credentials-helpers.js +40 -2
  5. package/dist/cjs/dynamic-credentials-helpers.js.map +1 -1
  6. package/dist/cjs/execution-context.d.ts +8 -0
  7. package/dist/cjs/execution-context.d.ts.map +1 -1
  8. package/dist/cjs/execution-context.js +12 -0
  9. package/dist/cjs/execution-context.js.map +1 -1
  10. package/dist/cjs/expression.d.ts +70 -0
  11. package/dist/cjs/expression.d.ts.map +1 -1
  12. package/dist/cjs/expression.js +199 -36
  13. package/dist/cjs/expression.js.map +1 -1
  14. package/dist/cjs/expressions/native-evaluation/compiler.d.ts +14 -0
  15. package/dist/cjs/expressions/native-evaluation/compiler.d.ts.map +1 -0
  16. package/dist/cjs/expressions/native-evaluation/compiler.js +68 -0
  17. package/dist/cjs/expressions/native-evaluation/compiler.js.map +1 -0
  18. package/dist/cjs/expressions/native-evaluation/evaluator.d.ts.map +1 -1
  19. package/dist/cjs/expressions/native-evaluation/evaluator.js +41 -8
  20. package/dist/cjs/expressions/native-evaluation/evaluator.js.map +1 -1
  21. package/dist/cjs/expressions/native-evaluation/grammar.d.ts +1 -0
  22. package/dist/cjs/expressions/native-evaluation/grammar.d.ts.map +1 -1
  23. package/dist/cjs/expressions/native-evaluation/grammar.js +48 -1
  24. package/dist/cjs/expressions/native-evaluation/grammar.js.map +1 -1
  25. package/dist/cjs/expressions/native-evaluation/index.d.ts.map +1 -1
  26. package/dist/cjs/expressions/native-evaluation/index.js +38 -66
  27. package/dist/cjs/expressions/native-evaluation/index.js.map +1 -1
  28. package/dist/cjs/expressions/native-evaluation/parser.d.ts.map +1 -1
  29. package/dist/cjs/expressions/native-evaluation/parser.js +33 -12
  30. package/dist/cjs/expressions/native-evaluation/parser.js.map +1 -1
  31. package/dist/cjs/expressions/native-evaluation/skeleton.d.ts +4 -0
  32. package/dist/cjs/expressions/native-evaluation/skeleton.d.ts.map +1 -0
  33. package/dist/cjs/expressions/native-evaluation/skeleton.js +89 -0
  34. package/dist/cjs/expressions/native-evaluation/skeleton.js.map +1 -0
  35. package/dist/cjs/expressions/native-evaluation/verify.d.ts +30 -0
  36. package/dist/cjs/expressions/native-evaluation/verify.d.ts.map +1 -0
  37. package/dist/cjs/expressions/native-evaluation/verify.js +193 -0
  38. package/dist/cjs/expressions/native-evaluation/verify.js.map +1 -0
  39. package/dist/cjs/extensions/expression-extension.d.ts +0 -1
  40. package/dist/cjs/extensions/expression-extension.d.ts.map +1 -1
  41. package/dist/cjs/extensions/expression-extension.js +3 -4
  42. package/dist/cjs/extensions/expression-extension.js.map +1 -1
  43. package/dist/cjs/extensions/expression-parser.js +2 -2
  44. package/dist/cjs/extensions/expression-parser.js.map +1 -1
  45. package/dist/cjs/interfaces.d.ts +71 -8
  46. package/dist/cjs/interfaces.d.ts.map +1 -1
  47. package/dist/cjs/interfaces.js.map +1 -1
  48. package/dist/cjs/message-event-bus.d.ts +8 -3
  49. package/dist/cjs/message-event-bus.d.ts.map +1 -1
  50. package/dist/cjs/message-event-bus.js +42 -4
  51. package/dist/cjs/message-event-bus.js.map +1 -1
  52. package/dist/cjs/redaction-channels.d.ts +45 -2
  53. package/dist/cjs/redaction-channels.d.ts.map +1 -1
  54. package/dist/cjs/redaction-channels.js +90 -2
  55. package/dist/cjs/redaction-channels.js.map +1 -1
  56. package/dist/cjs/run-execution-data/run-execution-data.v1.d.ts +5 -0
  57. package/dist/cjs/run-execution-data/run-execution-data.v1.d.ts.map +1 -1
  58. package/dist/cjs/run-execution-data/run-execution-data.v1.js.map +1 -1
  59. package/dist/esm/dynamic-credentials-helpers.d.ts +11 -2
  60. package/dist/esm/dynamic-credentials-helpers.d.ts.map +1 -1
  61. package/dist/esm/dynamic-credentials-helpers.js +39 -2
  62. package/dist/esm/dynamic-credentials-helpers.js.map +1 -1
  63. package/dist/esm/execution-context.d.ts +8 -0
  64. package/dist/esm/execution-context.d.ts.map +1 -1
  65. package/dist/esm/execution-context.js +12 -0
  66. package/dist/esm/execution-context.js.map +1 -1
  67. package/dist/esm/expression.d.ts +70 -0
  68. package/dist/esm/expression.d.ts.map +1 -1
  69. package/dist/esm/expression.js +200 -37
  70. package/dist/esm/expression.js.map +1 -1
  71. package/dist/esm/expressions/native-evaluation/compiler.d.ts +14 -0
  72. package/dist/esm/expressions/native-evaluation/compiler.d.ts.map +1 -0
  73. package/dist/esm/expressions/native-evaluation/compiler.js +65 -0
  74. package/dist/esm/expressions/native-evaluation/compiler.js.map +1 -0
  75. package/dist/esm/expressions/native-evaluation/evaluator.d.ts.map +1 -1
  76. package/dist/esm/expressions/native-evaluation/evaluator.js +42 -9
  77. package/dist/esm/expressions/native-evaluation/evaluator.js.map +1 -1
  78. package/dist/esm/expressions/native-evaluation/grammar.d.ts +1 -0
  79. package/dist/esm/expressions/native-evaluation/grammar.d.ts.map +1 -1
  80. package/dist/esm/expressions/native-evaluation/grammar.js +47 -0
  81. package/dist/esm/expressions/native-evaluation/grammar.js.map +1 -1
  82. package/dist/esm/expressions/native-evaluation/index.d.ts.map +1 -1
  83. package/dist/esm/expressions/native-evaluation/index.js +36 -64
  84. package/dist/esm/expressions/native-evaluation/index.js.map +1 -1
  85. package/dist/esm/expressions/native-evaluation/parser.d.ts.map +1 -1
  86. package/dist/esm/expressions/native-evaluation/parser.js +34 -13
  87. package/dist/esm/expressions/native-evaluation/parser.js.map +1 -1
  88. package/dist/esm/expressions/native-evaluation/skeleton.d.ts +4 -0
  89. package/dist/esm/expressions/native-evaluation/skeleton.d.ts.map +1 -0
  90. package/dist/esm/expressions/native-evaluation/skeleton.js +85 -0
  91. package/dist/esm/expressions/native-evaluation/skeleton.js.map +1 -0
  92. package/dist/esm/expressions/native-evaluation/verify.d.ts +30 -0
  93. package/dist/esm/expressions/native-evaluation/verify.d.ts.map +1 -0
  94. package/dist/esm/expressions/native-evaluation/verify.js +151 -0
  95. package/dist/esm/expressions/native-evaluation/verify.js.map +1 -0
  96. package/dist/esm/extensions/expression-extension.d.ts +0 -1
  97. package/dist/esm/extensions/expression-extension.d.ts.map +1 -1
  98. package/dist/esm/extensions/expression-extension.js +1 -1
  99. package/dist/esm/extensions/expression-extension.js.map +1 -1
  100. package/dist/esm/extensions/expression-parser.js +2 -2
  101. package/dist/esm/extensions/expression-parser.js.map +1 -1
  102. package/dist/esm/interfaces.d.ts +71 -8
  103. package/dist/esm/interfaces.d.ts.map +1 -1
  104. package/dist/esm/interfaces.js.map +1 -1
  105. package/dist/esm/message-event-bus.d.ts +8 -3
  106. package/dist/esm/message-event-bus.d.ts.map +1 -1
  107. package/dist/esm/message-event-bus.js +41 -3
  108. package/dist/esm/message-event-bus.js.map +1 -1
  109. package/dist/esm/redaction-channels.d.ts +45 -2
  110. package/dist/esm/redaction-channels.d.ts.map +1 -1
  111. package/dist/esm/redaction-channels.js +84 -2
  112. package/dist/esm/redaction-channels.js.map +1 -1
  113. package/dist/esm/run-execution-data/run-execution-data.v1.d.ts +5 -0
  114. package/dist/esm/run-execution-data/run-execution-data.v1.d.ts.map +1 -1
  115. package/dist/esm/run-execution-data/run-execution-data.v1.js.map +1 -1
  116. package/dist/esm/typecheck.tsbuildinfo +1 -1
  117. package/package.json +6 -6
@@ -1,4 +1,4 @@
1
- import { MemoryLimitError, SecurityViolationError, TimeoutError } from '@n8n/expression-runtime';
1
+ import { classifyExpressionError, MemoryLimitError, SecurityViolationError, TimeoutError, } from '@n8n/expression-runtime';
2
2
  import { DateTime, Duration, Interval } from 'luxon';
3
3
  import { UnexpectedError, UserError } from './errors';
4
4
  import { ExpressionExtensionError } from './errors/expression-extension.error';
@@ -7,6 +7,7 @@ import { evaluateExpression, setErrorHandler } from './expression-evaluator-prox
7
7
  import { expressionSandboxHooks, sanitizer, sanitizerName } from './expression-sandboxing';
8
8
  import { isExpression } from './expressions/expression-helpers';
9
9
  import { evaluateNatively } from './expressions/native-evaluation';
10
+ import { canVerifyNatively, NativeVerifier, } from './expressions/native-evaluation/verify';
10
11
  import * as LoggerProxy from './logger-proxy';
11
12
  import { extend, extendOptional } from './extensions';
12
13
  import { extendSyntax } from './extensions/expression-extension';
@@ -20,6 +21,31 @@ setErrorHandler((error) => {
20
21
  if (isExpressionError(error))
21
22
  throw error;
22
23
  });
24
+ // Expression code can set `name` to any text, so only these names leave the engine.
25
+ const KNOWN_ERROR_CLASSES = new Set([
26
+ 'Error AggregateError EvalError InternalError RangeError ReferenceError SyntaxError',
27
+ 'TypeError URIError ExpressionError ExpressionExtensionError UserError',
28
+ ]
29
+ .join(' ')
30
+ .split(' '));
31
+ function errorClassOf(error) {
32
+ // Timeout and memory errors share the name `ExpressionError`, so classify them first.
33
+ // `mapVmError` wraps them in an ExpressionError and keeps them as `cause`.
34
+ const runtimeClass = classifyExpressionError(error instanceof ExpressionError && error.cause ? error.cause : error);
35
+ if (runtimeClass !== 'unknown')
36
+ return runtimeClass;
37
+ // A minified build renames classes, and n8n errors take their `name` from the
38
+ // constructor, so check the class before the name. The subclass comes first.
39
+ if (error instanceof ExpressionExtensionError)
40
+ return 'ExpressionExtensionError';
41
+ if (error instanceof ExpressionError)
42
+ return 'ExpressionError';
43
+ if (error instanceof UserError)
44
+ return 'UserError';
45
+ if (!(error instanceof Error))
46
+ return typeof error;
47
+ return KNOWN_ERROR_CLASSES.has(error.name) ? error.name : 'other';
48
+ }
23
49
  /**
24
50
  * Map errors from the VM expression evaluator to host-side error types.
25
51
  *
@@ -192,6 +218,8 @@ export class Expression {
192
218
  static BROWSER_CALLER = {};
193
219
  static useSharedCaller = false;
194
220
  static nativeEvaluation = false;
221
+ static nativeVerifier;
222
+ static shadowRunner;
195
223
  constructor(timezone) {
196
224
  this.timezone = timezone;
197
225
  }
@@ -220,37 +248,26 @@ export class Expression {
220
248
  */
221
249
  static async initExpressionEngine(options) {
222
250
  this.nativeEvaluation = options.nativeEvaluation ?? false;
223
- if (options.engine === 'legacy')
251
+ const verifySample = options.nativeEvaluationVerifySample ?? 0;
252
+ this.nativeVerifier = options.reportNativeVerifyMismatch
253
+ ? new NativeVerifier(verifySample, options.reportNativeVerifyMismatch, options.canReportNativeVerifyMismatch)
254
+ : undefined;
255
+ if (verifySample > 0 && this.nativeEvaluation) {
256
+ LoggerProxy.warn('Native evaluation verify sample is ignored because native evaluation is on');
257
+ }
258
+ if (options.engine === 'legacy') {
259
+ // Legacy differs from the isolates on purpose in places, so its
260
+ // differences would read as native bugs.
261
+ if (verifySample > 0 && !this.nativeEvaluation) {
262
+ LoggerProxy.warn('Native evaluation verify sample is ignored because it only applies to the vm or quickjs expression engine');
263
+ }
224
264
  return;
265
+ }
225
266
  if (options.engine === 'vm' && IS_FRONTEND)
226
267
  return;
227
268
  this.expressionEngine = options.engine;
228
269
  if (!this.vmEvaluator) {
229
- // Dynamic import to avoid loading expression-runtime in browser environments
230
- const runtime = await import('@n8n/expression-runtime');
231
- const createBridge = options.engine === 'quickjs'
232
- ? () => new runtime.QuickJsBridge({
233
- timeout: options.bridgeTimeout,
234
- memoryLimit: options.bridgeMemoryLimit,
235
- logger: LoggerProxy,
236
- runtimeBundle: options.runtimeBundle,
237
- })
238
- : () => new runtime.IsolatedVmBridge({
239
- timeout: options.bridgeTimeout,
240
- memoryLimit: options.bridgeMemoryLimit,
241
- logger: LoggerProxy,
242
- compileCache: options.compileCache,
243
- });
244
- const evaluator = new runtime.ExpressionEvaluator({
245
- createBridge,
246
- maxCodeCacheSize: options.maxCodeCacheSize,
247
- poolSize: options.poolSize,
248
- idleTimeoutMs: options.idleTimeoutMs,
249
- lazyAcquire: options.lazyAcquire,
250
- hooks: expressionSandboxHooks,
251
- logger: LoggerProxy,
252
- observability: options.observability,
253
- });
270
+ const evaluator = await this.buildEvaluator({ ...options, engine: options.engine });
254
271
  // Publish the evaluator only once it is usable. A half-started one
255
272
  // would leave `shouldUseVm` reporting the engine as active while no
256
273
  // bridge is acquired, so callers could neither retry the start nor
@@ -283,6 +300,73 @@ export class Expression {
283
300
  }
284
301
  }
285
302
  }
303
+ static async buildEvaluator(options) {
304
+ // Dynamic import to avoid loading expression-runtime in browser environments
305
+ const runtime = await import('@n8n/expression-runtime');
306
+ const createBridge = options.engine === 'quickjs'
307
+ ? () => new runtime.QuickJsBridge({
308
+ timeout: options.bridgeTimeout,
309
+ memoryLimit: options.bridgeMemoryLimit,
310
+ logger: LoggerProxy,
311
+ runtimeBundle: options.runtimeBundle,
312
+ })
313
+ : () => new runtime.IsolatedVmBridge({
314
+ timeout: options.bridgeTimeout,
315
+ memoryLimit: options.bridgeMemoryLimit,
316
+ logger: LoggerProxy,
317
+ compileCache: options.compileCache,
318
+ });
319
+ return new runtime.ExpressionEvaluator({
320
+ createBridge,
321
+ maxCodeCacheSize: options.maxCodeCacheSize,
322
+ poolSize: options.poolSize,
323
+ idleTimeoutMs: options.idleTimeoutMs,
324
+ lazyAcquire: options.lazyAcquire,
325
+ hooks: expressionSandboxHooks,
326
+ logger: LoggerProxy,
327
+ observability: options.observability,
328
+ });
329
+ }
330
+ /**
331
+ * Start a QuickJS evaluator for a shadow run, next to whatever engine is
332
+ * active. It has its own bridge and caller, so it never changes what the main
333
+ * engine does, and it uses the same sandbox hooks, so the comparison is fair.
334
+ */
335
+ static async createQuickJsShadowEvaluator(options) {
336
+ const evaluator = await this.buildEvaluator({
337
+ ...options,
338
+ engine: 'quickjs',
339
+ poolSize: 1,
340
+ lazyAcquire: true,
341
+ });
342
+ const caller = {};
343
+ try {
344
+ await evaluator.initialize();
345
+ await evaluator.acquire(caller);
346
+ }
347
+ catch (error) {
348
+ await evaluator.dispose().catch(() => { });
349
+ throw error;
350
+ }
351
+ return {
352
+ evaluate: (expression, data, timezone) => {
353
+ try {
354
+ return { ok: true, value: evaluator.evaluate(expression, data, caller, { timezone }) };
355
+ }
356
+ catch (error) {
357
+ return { ok: false, error: mapVmError(error), errorClass: errorClassOf(error) };
358
+ }
359
+ },
360
+ dispose: async () => {
361
+ await evaluator.release(caller);
362
+ await evaluator.dispose();
363
+ },
364
+ };
365
+ }
366
+ /** Install the runner that compares a second engine with legacy, or remove it with `undefined`. */
367
+ static setShadowRunner(runner) {
368
+ this.shadowRunner = runner;
369
+ }
286
370
  /** Returns whether an isolate was newly acquired; `false` means this caller already held one and must not release it. */
287
371
  async acquireIsolate() {
288
372
  if (Expression.vmEvaluator)
@@ -349,6 +433,18 @@ export class Expression {
349
433
  static setNativeEvaluation(enabled) {
350
434
  this.nativeEvaluation = enabled;
351
435
  }
436
+ /** For tests; production sets `N8N_EXPRESSION_ENGINE_NATIVE_EVALUATION_VERIFY_SAMPLE`. */
437
+ static setNativeEvaluationVerify(sample, reportMismatch, canReportMismatch) {
438
+ this.nativeVerifier = reportMismatch
439
+ ? new NativeVerifier(sample, reportMismatch, canReportMismatch)
440
+ : undefined;
441
+ }
442
+ static shouldVerifyNative(expression) {
443
+ return (!this.nativeEvaluation &&
444
+ this.shouldUseVm() &&
445
+ this.nativeVerifier?.isSampled() === true &&
446
+ canVerifyNatively(expression));
447
+ }
352
448
  static initializeGlobalContext(data) {
353
449
  /**
354
450
  * Denylist
@@ -540,7 +636,19 @@ export class Expression {
540
636
  // An expression that fits the native subset grammar is interpreted
541
637
  // in-process, skipping the global-context setup, extendSyntax, and the
542
638
  // engine (isolate). Everything else takes the regular pipeline below.
543
- if (Expression.nativeEvaluation) {
639
+ // Verify mode evaluates natively here, then returns the engine's result.
640
+ let nativeResult;
641
+ if (Expression.shouldVerifyNative(parameterValue)) {
642
+ try {
643
+ const native = evaluateNatively(parameterValue, data);
644
+ if (native.handled)
645
+ nativeResult = { ok: true, value: native.value };
646
+ }
647
+ catch (error) {
648
+ nativeResult = { ok: false, error, errorClass: errorClassOf(error) };
649
+ }
650
+ }
651
+ else if (Expression.nativeEvaluation) {
544
652
  const native = evaluateNatively(parameterValue, data);
545
653
  if (native.handled)
546
654
  return this.finalizeResolvedValue(native.value, returnObjectAsString);
@@ -601,9 +709,25 @@ export class Expression {
601
709
  }
602
710
  // Execute the expression
603
711
  const extendedExpression = extendSyntax(parameterValue);
604
- const returnValue = this.renderExpression(extendedExpression, data);
712
+ const returnValue = nativeResult === undefined
713
+ ? this.renderExpression(extendedExpression, data, parameterValue)
714
+ : this.renderAndVerify(extendedExpression, data, parameterValue, nativeResult);
605
715
  return this.finalizeResolvedValue(returnValue, returnObjectAsString);
606
716
  }
717
+ /** Returns or throws the engine's result, after comparing it with `native`. */
718
+ renderAndVerify(expression, data, source, native) {
719
+ let engine;
720
+ try {
721
+ engine = { ok: true, value: this.renderExpression(expression, data, source) };
722
+ }
723
+ catch (error) {
724
+ engine = { ok: false, error, errorClass: errorClassOf(error) };
725
+ }
726
+ Expression.nativeVerifier?.compare(source, Expression.expressionEngine, native, engine, data);
727
+ if (!engine.ok)
728
+ throw engine.error;
729
+ return engine.value;
730
+ }
607
731
  finalizeResolvedValue(returnValue, returnObjectAsString) {
608
732
  if (typeof returnValue === 'function') {
609
733
  if (returnValue.name === 'DateTime')
@@ -617,7 +741,7 @@ export class Expression {
617
741
  // the previous inline code relied on.
618
742
  return returnValue;
619
743
  }
620
- renderExpression(expression, data) {
744
+ renderExpression(expression, data, source) {
621
745
  const evaluator = Expression.vmEvaluator;
622
746
  if (evaluator && Expression.isVmEngineSelected()) {
623
747
  const caller = Expression.useSharedCaller ? Expression.BROWSER_CALLER : this;
@@ -640,22 +764,61 @@ export class Expression {
640
764
  throw new UnexpectedError(`The ${Expression.expressionEngine} expression engine has not been initialized. Call Expression.initExpressionEngine() during application startup.`);
641
765
  }
642
766
  // Fall back to current implementation
767
+ const finishShadow = Expression.startShadow({
768
+ expression,
769
+ source,
770
+ data,
771
+ timezone: this.timezone,
772
+ });
773
+ const legacy = this.evaluateLegacy(expression, data);
774
+ if (finishShadow) {
775
+ try {
776
+ finishShadow(legacy.ok
777
+ ? { ok: true, value: legacy.value }
778
+ : { ok: false, error: legacy.error, errorClass: errorClassOf(legacy.error) });
779
+ }
780
+ catch {
781
+ // A shadow run only observes: its failure must not reach the user.
782
+ }
783
+ }
784
+ if (legacy.ok)
785
+ return legacy.value;
786
+ if (legacy.thrown)
787
+ throw legacy.thrown;
788
+ return null;
789
+ }
790
+ static startShadow(context) {
791
+ if (!this.shadowRunner)
792
+ return undefined;
643
793
  try {
644
- return evaluateExpression(expression, data);
794
+ return this.shadowRunner.beforeLegacy(context);
795
+ }
796
+ catch {
797
+ return undefined;
798
+ }
799
+ }
800
+ /**
801
+ * Evaluate with the legacy engine. A failure without `thrown` is one the
802
+ * editor shows as `null`; a shadow run still counts it as an error.
803
+ */
804
+ evaluateLegacy(expression, data) {
805
+ try {
806
+ return { ok: true, value: evaluateExpression(expression, data) };
645
807
  }
646
808
  catch (error) {
647
809
  if (isExpressionError(error))
648
- throw error;
649
- if (isSyntaxError(error))
650
- throw new UserError('invalid syntax');
810
+ return { ok: false, error, thrown: error };
811
+ if (isSyntaxError(error)) {
812
+ return { ok: false, error, thrown: new UserError('invalid syntax') };
813
+ }
651
814
  if (isTypeError(error) && IS_FRONTEND && error.message.endsWith('is not a function')) {
652
815
  const match = error.message.match(/(?<msg>[^.]+is not a function)/);
653
816
  if (!match?.groups?.msg)
654
- return null;
655
- throw new UserError(match.groups.msg);
817
+ return { ok: false, error };
818
+ return { ok: false, error, thrown: new UserError(match.groups.msg) };
656
819
  }
820
+ return { ok: false, error };
657
821
  }
658
- return null;
659
822
  }
660
823
  }
661
824
  //# sourceMappingURL=expression.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"expression.js","sourceRoot":"","sources":["../../src/expression.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expression.js","sourceRoot":"","sources":["../../src/expression.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { SimpleNode } from './grammar';
2
+ export type CompiledChunk = {
3
+ type: 'text';
4
+ text: string;
5
+ } | {
6
+ type: 'code';
7
+ node: SimpleNode;
8
+ };
9
+ export interface CompiledExpression {
10
+ chunks: CompiledChunk[];
11
+ isWholeValue: boolean;
12
+ }
13
+ export declare function getCompiled(expression: string): CompiledExpression | null;
14
+ //# sourceMappingURL=compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../../src/expressions/native-evaluation/compiler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEhG,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,aAAa,EAAE,CAAC;IAGxB,YAAY,EAAE,OAAO,CAAC;CACtB;AA0DD,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAWzE"}
@@ -0,0 +1,65 @@
1
+ import { getParsedExpression } from '@n8n/tournament';
2
+ import { LruCache } from '@n8n/utils/lru-cache';
3
+ import { parseSimple, usesPolyfilledChain } from './parser';
4
+ // null = outside the subset. Declined expressions are cached too, so an
5
+ // expression the engine owns costs one parse here, not one per evaluation.
6
+ // Entries are keyed by expression text, so the key length is capped to keep
7
+ // the cache's memory bounded; longer expressions are compiled per evaluation.
8
+ const cache = new LruCache(1024);
9
+ const MAX_CACHED_EXPRESSION_LENGTH = 10_000;
10
+ // One code chunk of the split expression, or null when it is outside the
11
+ // subset. A throw during the re-parse must always mean "declined", never
12
+ // escape.
13
+ function compileChunk(chunk) {
14
+ const body = chunk.parsed.program.body;
15
+ if (body.length !== 1)
16
+ return null;
17
+ const statement = body[0];
18
+ if (statement.type !== 'ExpressionStatement')
19
+ return null;
20
+ try {
21
+ return parseSimple(statement.expression);
22
+ }
23
+ catch {
24
+ return null;
25
+ }
26
+ }
27
+ function compile(expression) {
28
+ let parsed;
29
+ try {
30
+ parsed = getParsedExpression(expression);
31
+ }
32
+ catch {
33
+ // Syntax errors fall through to the engine for its error reporting.
34
+ return null;
35
+ }
36
+ const chunks = [];
37
+ const nodes = [];
38
+ for (const chunk of parsed) {
39
+ if (chunk.type === 'text') {
40
+ chunks.push(chunk);
41
+ continue;
42
+ }
43
+ const node = compileChunk(chunk);
44
+ if (node === null)
45
+ return null;
46
+ chunks.push({ type: 'code', node });
47
+ nodes.push(node);
48
+ }
49
+ if (usesPolyfilledChain(nodes))
50
+ return null;
51
+ // Mirrors the branch condition in ExpressionBuilder.getExpressionCode.
52
+ const isWholeValue = chunks.length === 2 && chunks[0].type === 'text' && chunks[0].text === '';
53
+ return { chunks, isWholeValue };
54
+ }
55
+ export function getCompiled(expression) {
56
+ if (expression.length > MAX_CACHED_EXPRESSION_LENGTH)
57
+ return compile(expression);
58
+ let compiled = cache.get(expression);
59
+ if (compiled === undefined) {
60
+ compiled = compile(expression);
61
+ cache.set(expression, compiled);
62
+ }
63
+ return compiled;
64
+ }
65
+ //# sourceMappingURL=compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../../src/expressions/native-evaluation/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAW5D,wEAAwE;AACxE,2EAA2E;AAC3E,4EAA4E;AAC5E,8EAA8E;AAC9E,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAoC,IAAI,CAAC,CAAC;AACpE,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAE5C,yEAAyE;AACzE,yEAAyE;AACzE,UAAU;AACV,SAAS,YAAY,CAAC,KAAiB;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IACvC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,SAAS,CAAC,IAAI,KAAK,qBAAqB;QAAE,OAAO,IAAI,CAAC;IAE1D,IAAI,CAAC;QACJ,OAAO,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED,SAAS,OAAO,CAAC,UAAkB;IAClC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACJ,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACR,oEAAoE;QACpE,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,SAAS;QACV,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAE/B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,mBAAmB,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5C,uEAAuE;IACvE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;IAE/F,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,UAAkB;IAC7C,IAAI,UAAU,CAAC,MAAM,GAAG,4BAA4B;QAAE,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;IAEjF,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAErC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/B,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../../src/expressions/native-evaluation/evaluator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAkBN,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;AAsfD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAa7D"}
1
+ {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../../src/expressions/native-evaluation/evaluator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAmBN,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;AA0hBD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAa7D"}
@@ -1,7 +1,8 @@
1
+ import { DateTime } from 'luxon';
1
2
  import { ExpressionExtensionError } from '../../errors/expression-extension.error';
2
3
  import { ExpressionError } from '../../errors/expression.error';
3
- import { DateTime } from 'luxon';
4
- import { ARRAY_METHODS, ITERATOR_NATIVES, MAX_DEPTH, MAX_RESULT_LENGTH, MAX_STEPS, MAX_WORK, NUMBER_METHODS, STRING_METHODS, TIME_MEMBERS, TIME_METHODS, hasOwn, isArray, isObj, toNum, toStr, } from './grammar';
4
+ import { extend } from '../../extensions';
5
+ import { ARRAY_METHODS, EXTENSION_METHODS, ITERATOR_NATIVES, MAX_DEPTH, MAX_RESULT_LENGTH, MAX_STEPS, MAX_WORK, NUMBER_METHODS, STRING_METHODS, TIME_MEMBERS, TIME_METHODS, hasOwn, isArray, isObj, toNum, toStr, } from './grammar';
5
6
  // ── Evaluation: total over the grammar. ────────────────────────────────────
6
7
  //
7
8
  // evalNode reads only fields parseSimple constructed, because those are the
@@ -331,23 +332,22 @@ function evalReceiver(node, env) {
331
332
  return receiver;
332
333
  }
333
334
  function evalCall(node, env) {
334
- const receiver = evalReceiver(node, env);
335
335
  if (node.receiver.kind === 'nodeRef') {
336
- return evalNodeRefCall(receiver, node.method, env);
336
+ return evalNodeRefCall(evalReceiver(node, env), node.method, env);
337
337
  }
338
338
  if (node.receiver.kind === 'timeRoot') {
339
- return evalTimeRead(receiver, TIME_METHODS.get(node.method));
339
+ return evalTimeRead(evalReceiver(node, env), TIME_METHODS.get(node.method));
340
340
  }
341
+ if (EXTENSION_METHODS.has(node.method))
342
+ return evalExtension(node, env);
343
+ const receiver = evalReceiver(node, env);
341
344
  // An own property shadowing the method (an engine-resolved $parameter value
342
345
  // can carry one) would take precedence in the engines.
343
346
  if (hasOwn(receiver, node.method)) {
344
347
  throw new EngineFallbackError();
345
348
  }
346
349
  const method = methodFor(receiver, node.method);
347
- const args = node.args.map((argument) => evalNode(argument, env));
348
- if (!args.every((arg) => isAllowedArgument(node.method, arg))) {
349
- throw new EngineFallbackError();
350
- }
350
+ const args = evalArgs(node, env);
351
351
  if (isArray(receiver)) {
352
352
  if (STRINGIFIES_ELEMENTS.has(node.method))
353
353
  assertPrimitiveElements(receiver);
@@ -359,6 +359,39 @@ function evalCall(node, env) {
359
359
  env.charge(elementContentWork(receiver, node.method));
360
360
  return bounded(method.apply(receiver, args));
361
361
  }
362
+ function evalArgs(node, env) {
363
+ const args = node.args.map((argument) => evalNode(argument, env));
364
+ if (!args.every((arg) => isAllowedArgument(node.method, arg))) {
365
+ throw new EngineFallbackError();
366
+ }
367
+ return args;
368
+ }
369
+ /**
370
+ * An allowlisted extension runs through extend(), the same host dispatch the
371
+ * engines call. extendSyntax rewrites the call into that dispatch whatever
372
+ * the receiver holds: an own property does not shadow it, and a missing
373
+ * receiver is extend()'s own error, not a TypeError. Every extension is at
374
+ * most linear in its receiver, so the receiver's content is the work charged
375
+ * and the pre-flight bound. A receiver that can be a root proxy is declined
376
+ * at parse time (mayBeRoot), and a result the engines would copy
377
+ * differently (a Date, a class instance, an iterator) is theirs too.
378
+ */
379
+ function evalExtension(node, env) {
380
+ const receiver = evalNode(node.receiver, env);
381
+ if (node.optional && (receiver === null || receiver === undefined)) {
382
+ throw chainShortCircuit;
383
+ }
384
+ const args = evalArgs(node, env);
385
+ const weight = contentWeight(receiver, MAX_RESULT_LENGTH);
386
+ if (weight > MAX_RESULT_LENGTH)
387
+ throw new EngineFallbackError();
388
+ env.charge(weight);
389
+ const result = extend(receiver, node.method, args);
390
+ if (isObj(result) && !isArray(result) && Object.getPrototypeOf(result) !== Object.prototype) {
391
+ throw new EngineFallbackError();
392
+ }
393
+ return bounded(result);
394
+ }
362
395
  /**
363
396
  * `some`/`every`/`find`/`filter`/`map` with a callback body. The native
364
397
  * method drives the iteration; the body runs per element with the element