n8n-workflow 2.45.0 → 2.45.2

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 (83) hide show
  1. package/dist/cjs/build.tsbuildinfo +1 -1
  2. package/dist/cjs/errors/expression.error.d.ts.map +1 -1
  3. package/dist/cjs/errors/expression.error.js +6 -0
  4. package/dist/cjs/errors/expression.error.js.map +1 -1
  5. package/dist/cjs/expression.d.ts +20 -0
  6. package/dist/cjs/expression.d.ts.map +1 -1
  7. package/dist/cjs/expression.js +90 -5
  8. package/dist/cjs/expression.js.map +1 -1
  9. package/dist/cjs/expressions/native-evaluation/compiler.d.ts +14 -0
  10. package/dist/cjs/expressions/native-evaluation/compiler.d.ts.map +1 -0
  11. package/dist/cjs/expressions/native-evaluation/compiler.js +68 -0
  12. package/dist/cjs/expressions/native-evaluation/compiler.js.map +1 -0
  13. package/dist/cjs/expressions/native-evaluation/evaluator.d.ts +4 -0
  14. package/dist/cjs/expressions/native-evaluation/evaluator.d.ts.map +1 -1
  15. package/dist/cjs/expressions/native-evaluation/evaluator.js +30 -25
  16. package/dist/cjs/expressions/native-evaluation/evaluator.js.map +1 -1
  17. package/dist/cjs/expressions/native-evaluation/index.d.ts +5 -3
  18. package/dist/cjs/expressions/native-evaluation/index.d.ts.map +1 -1
  19. package/dist/cjs/expressions/native-evaluation/index.js +56 -81
  20. package/dist/cjs/expressions/native-evaluation/index.js.map +1 -1
  21. package/dist/cjs/expressions/native-evaluation/skeleton.d.ts +4 -0
  22. package/dist/cjs/expressions/native-evaluation/skeleton.d.ts.map +1 -0
  23. package/dist/cjs/expressions/native-evaluation/skeleton.js +89 -0
  24. package/dist/cjs/expressions/native-evaluation/skeleton.js.map +1 -0
  25. package/dist/cjs/expressions/native-evaluation/verify.d.ts +30 -0
  26. package/dist/cjs/expressions/native-evaluation/verify.d.ts.map +1 -0
  27. package/dist/cjs/expressions/native-evaluation/verify.js +193 -0
  28. package/dist/cjs/expressions/native-evaluation/verify.js.map +1 -0
  29. package/dist/cjs/generate-schema-from-example.d.ts +6 -0
  30. package/dist/cjs/generate-schema-from-example.d.ts.map +1 -0
  31. package/dist/cjs/generate-schema-from-example.js +16 -0
  32. package/dist/cjs/generate-schema-from-example.js.map +1 -0
  33. package/dist/cjs/index.d.ts +1 -0
  34. package/dist/cjs/index.d.ts.map +1 -1
  35. package/dist/cjs/index.js +1 -0
  36. package/dist/cjs/index.js.map +1 -1
  37. package/dist/cjs/interfaces.d.ts +2 -2
  38. package/dist/cjs/utils.d.ts +7 -0
  39. package/dist/cjs/utils.d.ts.map +1 -1
  40. package/dist/cjs/utils.js +10 -4
  41. package/dist/cjs/utils.js.map +1 -1
  42. package/dist/esm/errors/expression.error.d.ts.map +1 -1
  43. package/dist/esm/errors/expression.error.js +6 -0
  44. package/dist/esm/errors/expression.error.js.map +1 -1
  45. package/dist/esm/expression.d.ts +20 -0
  46. package/dist/esm/expression.d.ts.map +1 -1
  47. package/dist/esm/expression.js +91 -6
  48. package/dist/esm/expression.js.map +1 -1
  49. package/dist/esm/expressions/native-evaluation/compiler.d.ts +14 -0
  50. package/dist/esm/expressions/native-evaluation/compiler.d.ts.map +1 -0
  51. package/dist/esm/expressions/native-evaluation/compiler.js +65 -0
  52. package/dist/esm/expressions/native-evaluation/compiler.js.map +1 -0
  53. package/dist/esm/expressions/native-evaluation/evaluator.d.ts +4 -0
  54. package/dist/esm/expressions/native-evaluation/evaluator.d.ts.map +1 -1
  55. package/dist/esm/expressions/native-evaluation/evaluator.js +30 -25
  56. package/dist/esm/expressions/native-evaluation/evaluator.js.map +1 -1
  57. package/dist/esm/expressions/native-evaluation/index.d.ts +5 -3
  58. package/dist/esm/expressions/native-evaluation/index.d.ts.map +1 -1
  59. package/dist/esm/expressions/native-evaluation/index.js +55 -80
  60. package/dist/esm/expressions/native-evaluation/index.js.map +1 -1
  61. package/dist/esm/expressions/native-evaluation/skeleton.d.ts +4 -0
  62. package/dist/esm/expressions/native-evaluation/skeleton.d.ts.map +1 -0
  63. package/dist/esm/expressions/native-evaluation/skeleton.js +85 -0
  64. package/dist/esm/expressions/native-evaluation/skeleton.js.map +1 -0
  65. package/dist/esm/expressions/native-evaluation/verify.d.ts +30 -0
  66. package/dist/esm/expressions/native-evaluation/verify.d.ts.map +1 -0
  67. package/dist/esm/expressions/native-evaluation/verify.js +151 -0
  68. package/dist/esm/expressions/native-evaluation/verify.js.map +1 -0
  69. package/dist/esm/generate-schema-from-example.d.ts +6 -0
  70. package/dist/esm/generate-schema-from-example.d.ts.map +1 -0
  71. package/dist/esm/generate-schema-from-example.js +13 -0
  72. package/dist/esm/generate-schema-from-example.js.map +1 -0
  73. package/dist/esm/index.d.ts +1 -0
  74. package/dist/esm/index.d.ts.map +1 -1
  75. package/dist/esm/index.js +1 -0
  76. package/dist/esm/index.js.map +1 -1
  77. package/dist/esm/interfaces.d.ts +2 -2
  78. package/dist/esm/typecheck.tsbuildinfo +1 -1
  79. package/dist/esm/utils.d.ts +7 -0
  80. package/dist/esm/utils.d.ts.map +1 -1
  81. package/dist/esm/utils.js +7 -1
  82. package/dist/esm/utils.js.map +1 -1
  83. package/package.json +8 -7
@@ -1,5 +1,7 @@
1
1
  import type { ObservabilityProvider } from '@n8n/expression-runtime';
2
+ import { type NativeVerifyMismatch } from './expressions/native-evaluation/verify';
2
3
  import type { IDataObject, INodeParameters, IWorkflowDataProxyData, NodeParameterValue } from './interfaces';
4
+ export type { NativeVerifyMismatch } from './expressions/native-evaluation/verify';
3
5
  /** What one engine did with one expression. `errorClass` names the failure without its message. */
4
6
  export type ExpressionEvaluationOutcome = {
5
7
  ok: true;
@@ -39,6 +41,8 @@ export declare class Expression {
39
41
  private static readonly BROWSER_CALLER;
40
42
  private static useSharedCaller;
41
43
  private static nativeEvaluation;
44
+ private static nativeVerifier?;
45
+ private static observability?;
42
46
  private static shadowRunner?;
43
47
  constructor(timezone: string);
44
48
  /**
@@ -79,6 +83,15 @@ export declare class Expression {
79
83
  compileCache?: boolean;
80
84
  /** Experimental: interpret expressions that fit the native subset in-process. Applies to every engine. */
81
85
  nativeEvaluation?: boolean;
86
+ /**
87
+ * Experimental: share of native-subset expressions, from 0 to 1, to also evaluate
88
+ * natively and compare with the vm or quickjs engine, returning the engine's result.
89
+ * Only while native evaluation is off.
90
+ */
91
+ nativeEvaluationVerifySample?: number;
92
+ reportNativeVerifyMismatch?: (mismatch: NativeVerifyMismatch) => void;
93
+ /** Whether reports can be sent now. `verify` compares nothing while this is false. */
94
+ canReportNativeVerifyMismatch?: () => boolean;
82
95
  }): Promise<void>;
83
96
  private static buildEvaluator;
84
97
  /**
@@ -120,6 +133,11 @@ export declare class Expression {
120
133
  static setExpressionEngine(engine: 'legacy' | 'vm' | 'quickjs'): void;
121
134
  /** Toggle native evaluation without restarting the engine. For tests and benchmarks; production sets `N8N_EXPRESSION_ENGINE_NATIVE_EVALUATION`. */
122
135
  static setNativeEvaluation(enabled: boolean): void;
136
+ /** For tests; production sets `N8N_EXPRESSION_ENGINE_NATIVE_EVALUATION_VERIFY_SAMPLE`. */
137
+ static setNativeEvaluationVerify(sample: number, reportMismatch?: (mismatch: NativeVerifyMismatch) => void, canReportMismatch?: () => boolean): void;
138
+ private static shouldVerifyNative;
139
+ private static evaluateNative;
140
+ private static countNativeResult;
123
141
  static initializeGlobalContext(data: IDataObject): void;
124
142
  static resolveWithoutWorkflow(expression: string, data?: IDataObject): string | (() => unknown) | null;
125
143
  /**
@@ -137,6 +155,8 @@ export declare class Expression {
137
155
  * @param {boolean} [returnObjectAsString=false] - Whether to convert objects to strings
138
156
  */
139
157
  resolveSimpleParameterValue(parameterValue: NodeParameterValue, data: IWorkflowDataProxyData, returnObjectAsString?: boolean): NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[];
158
+ /** Returns or throws the engine's result, after comparing it with `native`. */
159
+ private renderAndVerify;
140
160
  private finalizeResolvedValue;
141
161
  private renderExpression;
142
162
  private static startShadow;
@@ -1 +1 @@
1
- {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../src/expression.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../src/expression.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { classifyExpressionError, MemoryLimitError, SecurityViolationError, TimeoutError, } from '@n8n/expression-runtime';
1
+ import { classifyExpressionError, EXPRESSION_METRICS, 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';
@@ -29,7 +30,8 @@ const KNOWN_ERROR_CLASSES = new Set([
29
30
  .split(' '));
30
31
  function errorClassOf(error) {
31
32
  // Timeout and memory errors share the name `ExpressionError`, so classify them first.
32
- const runtimeClass = classifyExpressionError(error);
33
+ // `mapVmError` wraps them in an ExpressionError and keeps them as `cause`.
34
+ const runtimeClass = classifyExpressionError(error instanceof ExpressionError && error.cause ? error.cause : error);
33
35
  if (runtimeClass !== 'unknown')
34
36
  return runtimeClass;
35
37
  // A minified build renames classes, and n8n errors take their `name` from the
@@ -216,6 +218,8 @@ export class Expression {
216
218
  static BROWSER_CALLER = {};
217
219
  static useSharedCaller = false;
218
220
  static nativeEvaluation = false;
221
+ static nativeVerifier;
222
+ static observability;
219
223
  static shadowRunner;
220
224
  constructor(timezone) {
221
225
  this.timezone = timezone;
@@ -245,8 +249,22 @@ export class Expression {
245
249
  */
246
250
  static async initExpressionEngine(options) {
247
251
  this.nativeEvaluation = options.nativeEvaluation ?? false;
248
- if (options.engine === 'legacy')
252
+ this.observability = options.observability;
253
+ const verifySample = options.nativeEvaluationVerifySample ?? 0;
254
+ this.nativeVerifier = options.reportNativeVerifyMismatch
255
+ ? new NativeVerifier(verifySample, options.reportNativeVerifyMismatch, options.canReportNativeVerifyMismatch)
256
+ : undefined;
257
+ if (verifySample > 0 && this.nativeEvaluation) {
258
+ LoggerProxy.warn('Native evaluation verify sample is ignored because native evaluation is on');
259
+ }
260
+ if (options.engine === 'legacy') {
261
+ // Legacy differs from the isolates on purpose in places, so its
262
+ // differences would read as native bugs.
263
+ if (verifySample > 0 && !this.nativeEvaluation) {
264
+ LoggerProxy.warn('Native evaluation verify sample is ignored because it only applies to the vm or quickjs expression engine');
265
+ }
249
266
  return;
267
+ }
250
268
  if (options.engine === 'vm' && IS_FRONTEND)
251
269
  return;
252
270
  this.expressionEngine = options.engine;
@@ -417,6 +435,45 @@ export class Expression {
417
435
  static setNativeEvaluation(enabled) {
418
436
  this.nativeEvaluation = enabled;
419
437
  }
438
+ /** For tests; production sets `N8N_EXPRESSION_ENGINE_NATIVE_EVALUATION_VERIFY_SAMPLE`. */
439
+ static setNativeEvaluationVerify(sample, reportMismatch, canReportMismatch) {
440
+ this.nativeVerifier = reportMismatch
441
+ ? new NativeVerifier(sample, reportMismatch, canReportMismatch)
442
+ : undefined;
443
+ }
444
+ static shouldVerifyNative(expression) {
445
+ return (!this.nativeEvaluation &&
446
+ this.shouldUseVm() &&
447
+ this.nativeVerifier?.isSampled() === true &&
448
+ canVerifyNatively(expression));
449
+ }
450
+ static evaluateNative(expression, data) {
451
+ let native;
452
+ try {
453
+ native = evaluateNatively(expression, data);
454
+ }
455
+ catch (error) {
456
+ // The error is the expression's result: the engine does not run.
457
+ this.countNativeResult('handled');
458
+ throw error;
459
+ }
460
+ if (native.handled) {
461
+ this.countNativeResult('handled');
462
+ }
463
+ else if (native.fallbackReason) {
464
+ this.countNativeResult('fallback', native.fallbackReason);
465
+ }
466
+ else {
467
+ this.countNativeResult('declined');
468
+ }
469
+ return native;
470
+ }
471
+ static countNativeResult(result, reason = 'none') {
472
+ this.observability?.metrics.counter(EXPRESSION_METRICS.nativeEvaluations.name, 1, {
473
+ result,
474
+ reason,
475
+ });
476
+ }
420
477
  static initializeGlobalContext(data) {
421
478
  /**
422
479
  * Denylist
@@ -608,8 +665,20 @@ export class Expression {
608
665
  // An expression that fits the native subset grammar is interpreted
609
666
  // in-process, skipping the global-context setup, extendSyntax, and the
610
667
  // engine (isolate). Everything else takes the regular pipeline below.
611
- if (Expression.nativeEvaluation) {
612
- const native = evaluateNatively(parameterValue, data);
668
+ // Verify mode evaluates natively here, then returns the engine's result.
669
+ let nativeResult;
670
+ if (Expression.shouldVerifyNative(parameterValue)) {
671
+ try {
672
+ const native = evaluateNatively(parameterValue, data);
673
+ if (native.handled)
674
+ nativeResult = { ok: true, value: native.value };
675
+ }
676
+ catch (error) {
677
+ nativeResult = { ok: false, error, errorClass: errorClassOf(error) };
678
+ }
679
+ }
680
+ else if (Expression.nativeEvaluation) {
681
+ const native = Expression.evaluateNative(parameterValue, data);
613
682
  if (native.handled)
614
683
  return this.finalizeResolvedValue(native.value, returnObjectAsString);
615
684
  }
@@ -669,9 +738,25 @@ export class Expression {
669
738
  }
670
739
  // Execute the expression
671
740
  const extendedExpression = extendSyntax(parameterValue);
672
- const returnValue = this.renderExpression(extendedExpression, data, parameterValue);
741
+ const returnValue = nativeResult === undefined
742
+ ? this.renderExpression(extendedExpression, data, parameterValue)
743
+ : this.renderAndVerify(extendedExpression, data, parameterValue, nativeResult);
673
744
  return this.finalizeResolvedValue(returnValue, returnObjectAsString);
674
745
  }
746
+ /** Returns or throws the engine's result, after comparing it with `native`. */
747
+ renderAndVerify(expression, data, source, native) {
748
+ let engine;
749
+ try {
750
+ engine = { ok: true, value: this.renderExpression(expression, data, source) };
751
+ }
752
+ catch (error) {
753
+ engine = { ok: false, error, errorClass: errorClassOf(error) };
754
+ }
755
+ Expression.nativeVerifier?.compare(source, Expression.expressionEngine, native, engine, data);
756
+ if (!engine.ok)
757
+ throw engine.error;
758
+ return engine.value;
759
+ }
675
760
  finalizeResolvedValue(returnValue, returnObjectAsString) {
676
761
  if (typeof returnValue === 'function') {
677
762
  if (returnValue.name === 'DateTime')
@@ -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"}
@@ -26,7 +26,11 @@ export declare class Env {
26
26
  * are pure and workflow data is JSON, so the only cost is the repeated work.
27
27
  */
28
28
  export declare class EngineFallbackError extends Error {
29
+ readonly reason: NativeFallbackReason;
30
+ constructor(reason: NativeFallbackReason);
29
31
  }
32
+ /** Why a runtime value sent an expression back to the engine. */
33
+ export type NativeFallbackReason = 'too_large' | 'too_deep' | 'too_much_work' | 'unsupported_method' | 'unsupported_type' | 'replace_pattern';
30
34
  export declare function bounded<T>(value: T): T;
31
35
  /**
32
36
  * Tournament wraps each code chunk in try/catch and routes errors to the E()
@@ -1 +1 @@
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
+ {"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;IACjC,QAAQ,CAAC,MAAM,EAAE,oBAAoB;IAAjD,YAAqB,MAAM,EAAE,oBAAoB,EAEhD;CACD;AAED,iEAAiE;AACjE,MAAM,MAAM,oBAAoB,GAC7B,WAAW,GACX,UAAU,GACV,eAAe,GACf,oBAAoB,GACpB,kBAAkB,GAClB,iBAAiB,CAAC;AA0BrB,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAQtC;AA4hBD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAa7D"}
@@ -27,7 +27,7 @@ export class Env {
27
27
  charge(units) {
28
28
  this.work += units;
29
29
  if (this.work > MAX_WORK)
30
- throw new EngineFallbackError();
30
+ throw new EngineFallbackError('too_much_work');
31
31
  }
32
32
  }
33
33
  /**
@@ -40,6 +40,11 @@ export class Env {
40
40
  * are pure and workflow data is JSON, so the only cost is the repeated work.
41
41
  */
42
42
  export class EngineFallbackError extends Error {
43
+ reason;
44
+ constructor(reason) {
45
+ super();
46
+ this.reason = reason;
47
+ }
43
48
  }
44
49
  /**
45
50
  * Thrown by an optional member/call on a nullish receiver and caught by the
@@ -64,7 +69,7 @@ const isPrimitive = (value) => value === null || (typeof value !== 'object' && t
64
69
  export function bounded(value) {
65
70
  const isSizeable = typeof value === 'string' || isArray(value);
66
71
  if (isSizeable && value.length > MAX_RESULT_LENGTH) {
67
- throw new EngineFallbackError();
72
+ throw new EngineFallbackError('too_large');
68
73
  }
69
74
  return value;
70
75
  }
@@ -109,7 +114,7 @@ function evalMember(node, env) {
109
114
  node.key in object &&
110
115
  !hasOwn(object, node.key);
111
116
  if (inherited) {
112
- throw new EngineFallbackError();
117
+ throw new EngineFallbackError('unsupported_type');
113
118
  }
114
119
  // A node reference member (`.item`, `.json`) resolves through the proxy.
115
120
  if (node.object.kind === 'nodeRef')
@@ -119,7 +124,7 @@ function evalMember(node, env) {
119
124
  // drops a nested function but fails on an inherited one; legacy throws),
120
125
  // so the configured engine decides rather than this module guessing.
121
126
  if (typeof value === 'function' || typeof value === 'symbol') {
122
- throw new EngineFallbackError();
127
+ throw new EngineFallbackError('unsupported_type');
123
128
  }
124
129
  return value;
125
130
  }
@@ -153,7 +158,7 @@ function methodFor(receiver, name) {
153
158
  method = ARRAY_METHODS.get(name);
154
159
  }
155
160
  if (method === undefined)
156
- throw new EngineFallbackError();
161
+ throw new EngineFallbackError('unsupported_method');
157
162
  return method;
158
163
  }
159
164
  /**
@@ -194,7 +199,7 @@ function preflightSize(receiver, method, args) {
194
199
  // (a literal "$&") stays native while `$$$&` (a literal "$" then `$&`)
195
200
  // bails. With a string pattern every other `$` is literal.
196
201
  if (/\$[&`']/.test(replacement.replaceAll('$$', '')))
197
- throw new EngineFallbackError();
202
+ throw new EngineFallbackError('replace_pattern');
198
203
  upperBound =
199
204
  method === 'replace'
200
205
  ? receiver.length + replacement.length
@@ -209,7 +214,7 @@ function preflightSize(receiver, method, args) {
209
214
  }
210
215
  }
211
216
  if (upperBound > MAX_RESULT_LENGTH) {
212
- throw new EngineFallbackError();
217
+ throw new EngineFallbackError('too_large');
213
218
  }
214
219
  return upperBound;
215
220
  }
@@ -243,10 +248,10 @@ function assertPrimitiveElements(receiver) {
243
248
  // The receiver cap applies before the scan, so the scan never walks more
244
249
  // than the cap either.
245
250
  if (receiver.length > MAX_RESULT_LENGTH)
246
- throw new EngineFallbackError();
251
+ throw new EngineFallbackError('too_large');
247
252
  for (const element of receiver) {
248
253
  if (!isPrimitive(element))
249
- throw new EngineFallbackError();
254
+ throw new EngineFallbackError('unsupported_type');
250
255
  }
251
256
  }
252
257
  /**
@@ -278,7 +283,7 @@ function elementContentWork(receiver, method) {
278
283
  */
279
284
  function contentWeight(value, budget, depth = 0) {
280
285
  if (depth > MAX_DEPTH)
281
- throw new EngineFallbackError();
286
+ throw new EngineFallbackError('too_deep');
282
287
  if (typeof value === 'string')
283
288
  return value.length;
284
289
  if (!isObj(value))
@@ -318,7 +323,7 @@ function assertConcatWeight(receiver, args) {
318
323
  weight += contentWeight(arg, MAX_RESULT_LENGTH - weight);
319
324
  }
320
325
  if (weight > MAX_RESULT_LENGTH)
321
- throw new EngineFallbackError();
326
+ throw new EngineFallbackError('too_large');
322
327
  }
323
328
  function evalReceiver(node, env) {
324
329
  const receiver = evalNode(node.receiver, env);
@@ -344,7 +349,7 @@ function evalCall(node, env) {
344
349
  // An own property shadowing the method (an engine-resolved $parameter value
345
350
  // can carry one) would take precedence in the engines.
346
351
  if (hasOwn(receiver, node.method)) {
347
- throw new EngineFallbackError();
352
+ throw new EngineFallbackError('unsupported_method');
348
353
  }
349
354
  const method = methodFor(receiver, node.method);
350
355
  const args = evalArgs(node, env);
@@ -362,7 +367,7 @@ function evalCall(node, env) {
362
367
  function evalArgs(node, env) {
363
368
  const args = node.args.map((argument) => evalNode(argument, env));
364
369
  if (!args.every((arg) => isAllowedArgument(node.method, arg))) {
365
- throw new EngineFallbackError();
370
+ throw new EngineFallbackError('unsupported_type');
366
371
  }
367
372
  return args;
368
373
  }
@@ -384,11 +389,11 @@ function evalExtension(node, env) {
384
389
  const args = evalArgs(node, env);
385
390
  const weight = contentWeight(receiver, MAX_RESULT_LENGTH);
386
391
  if (weight > MAX_RESULT_LENGTH)
387
- throw new EngineFallbackError();
392
+ throw new EngineFallbackError('too_large');
388
393
  env.charge(weight);
389
394
  const result = extend(receiver, node.method, args);
390
395
  if (isObj(result) && !isArray(result) && Object.getPrototypeOf(result) !== Object.prototype) {
391
- throw new EngineFallbackError();
396
+ throw new EngineFallbackError('unsupported_type');
392
397
  }
393
398
  return bounded(result);
394
399
  }
@@ -402,22 +407,22 @@ function evalExtension(node, env) {
402
407
  function evalIterate(node, env) {
403
408
  const receiver = evalReceiver(node, env);
404
409
  if (!isArray(receiver) || hasOwn(receiver, node.method)) {
405
- throw new EngineFallbackError();
410
+ throw new EngineFallbackError('unsupported_method');
406
411
  }
407
412
  const method = ITERATOR_NATIVES.get(node.method);
408
413
  if (method === undefined)
409
- throw new EngineFallbackError();
414
+ throw new EngineFallbackError('unsupported_method');
410
415
  env.charge(preflightSize(receiver, node.method, []));
411
416
  let weight = 0;
412
417
  const visit = (element) => {
413
418
  if (++env.steps > MAX_STEPS)
414
- throw new EngineFallbackError();
419
+ throw new EngineFallbackError('too_much_work');
415
420
  env.param = element;
416
421
  const result = evalNode(node.body, env);
417
422
  if (node.method === 'map') {
418
423
  weight += contentWeight(result, MAX_RESULT_LENGTH - weight);
419
424
  if (weight > MAX_RESULT_LENGTH)
420
- throw new EngineFallbackError();
425
+ throw new EngineFallbackError('too_large');
421
426
  }
422
427
  return result;
423
428
  };
@@ -433,13 +438,13 @@ function evalIterate(node, env) {
433
438
  function evalNodeRefCall(proxy, method, env) {
434
439
  const fn = Reflect.get(proxy, method);
435
440
  if (typeof fn !== 'function')
436
- throw new EngineFallbackError();
441
+ throw new EngineFallbackError('unsupported_method');
437
442
  const result = bounded(fn.call(proxy));
438
443
  // A node name that is an Object.prototype key resolves through a plain
439
444
  // object lookup on the host. Only the item shapes stay native.
440
445
  const expected = method === 'all' ? isArray(result) : result === undefined || isItem(result);
441
446
  if (!expected)
442
- throw new EngineFallbackError();
447
+ throw new EngineFallbackError('unsupported_type');
443
448
  env.charge(isArray(result) ? result.length : 1);
444
449
  return result;
445
450
  }
@@ -452,10 +457,10 @@ const isItem = (value) => isObj(value) && !isArray(value);
452
457
  */
453
458
  function evalTimeRead(root, fn) {
454
459
  if (fn === undefined || !DateTime.isDateTime(root))
455
- throw new EngineFallbackError();
460
+ throw new EngineFallbackError('unsupported_method');
456
461
  const result = fn.call(root);
457
462
  if (!isPrimitive(result))
458
- throw new EngineFallbackError();
463
+ throw new EngineFallbackError('unsupported_type');
459
464
  return result;
460
465
  }
461
466
  function evalNodeRef(node, env) {
@@ -481,7 +486,7 @@ function evalUnary(node, env) {
481
486
  return !argument;
482
487
  }
483
488
  if (!isPrimitive(argument)) {
484
- throw new EngineFallbackError();
489
+ throw new EngineFallbackError('unsupported_type');
485
490
  }
486
491
  return node.op === '-' ? -toNum(argument) : toNum(argument);
487
492
  }
@@ -489,7 +494,7 @@ function evalBinary(node, env) {
489
494
  const left = evalNode(node.left, env);
490
495
  const right = evalNode(node.right, env);
491
496
  if (!isPrimitive(left) || !isPrimitive(right)) {
492
- throw new EngineFallbackError();
497
+ throw new EngineFallbackError('unsupported_type');
493
498
  }
494
499
  const result = binaryOps[node.op](left, right);
495
500
  // `+` is the one operator that allocates; a body concatenating a payload