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.
- package/dist/cjs/build.tsbuildinfo +1 -1
- package/dist/cjs/errors/expression.error.d.ts.map +1 -1
- package/dist/cjs/errors/expression.error.js +6 -0
- package/dist/cjs/errors/expression.error.js.map +1 -1
- package/dist/cjs/expression.d.ts +20 -0
- package/dist/cjs/expression.d.ts.map +1 -1
- package/dist/cjs/expression.js +90 -5
- package/dist/cjs/expression.js.map +1 -1
- package/dist/cjs/expressions/native-evaluation/compiler.d.ts +14 -0
- package/dist/cjs/expressions/native-evaluation/compiler.d.ts.map +1 -0
- package/dist/cjs/expressions/native-evaluation/compiler.js +68 -0
- package/dist/cjs/expressions/native-evaluation/compiler.js.map +1 -0
- package/dist/cjs/expressions/native-evaluation/evaluator.d.ts +4 -0
- package/dist/cjs/expressions/native-evaluation/evaluator.d.ts.map +1 -1
- package/dist/cjs/expressions/native-evaluation/evaluator.js +30 -25
- package/dist/cjs/expressions/native-evaluation/evaluator.js.map +1 -1
- package/dist/cjs/expressions/native-evaluation/index.d.ts +5 -3
- package/dist/cjs/expressions/native-evaluation/index.d.ts.map +1 -1
- package/dist/cjs/expressions/native-evaluation/index.js +56 -81
- package/dist/cjs/expressions/native-evaluation/index.js.map +1 -1
- package/dist/cjs/expressions/native-evaluation/skeleton.d.ts +4 -0
- package/dist/cjs/expressions/native-evaluation/skeleton.d.ts.map +1 -0
- package/dist/cjs/expressions/native-evaluation/skeleton.js +89 -0
- package/dist/cjs/expressions/native-evaluation/skeleton.js.map +1 -0
- package/dist/cjs/expressions/native-evaluation/verify.d.ts +30 -0
- package/dist/cjs/expressions/native-evaluation/verify.d.ts.map +1 -0
- package/dist/cjs/expressions/native-evaluation/verify.js +193 -0
- package/dist/cjs/expressions/native-evaluation/verify.js.map +1 -0
- package/dist/cjs/generate-schema-from-example.d.ts +6 -0
- package/dist/cjs/generate-schema-from-example.d.ts.map +1 -0
- package/dist/cjs/generate-schema-from-example.js +16 -0
- package/dist/cjs/generate-schema-from-example.js.map +1 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces.d.ts +2 -2
- package/dist/cjs/utils.d.ts +7 -0
- package/dist/cjs/utils.d.ts.map +1 -1
- package/dist/cjs/utils.js +10 -4
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/errors/expression.error.d.ts.map +1 -1
- package/dist/esm/errors/expression.error.js +6 -0
- package/dist/esm/errors/expression.error.js.map +1 -1
- package/dist/esm/expression.d.ts +20 -0
- package/dist/esm/expression.d.ts.map +1 -1
- package/dist/esm/expression.js +91 -6
- package/dist/esm/expression.js.map +1 -1
- package/dist/esm/expressions/native-evaluation/compiler.d.ts +14 -0
- package/dist/esm/expressions/native-evaluation/compiler.d.ts.map +1 -0
- package/dist/esm/expressions/native-evaluation/compiler.js +65 -0
- package/dist/esm/expressions/native-evaluation/compiler.js.map +1 -0
- package/dist/esm/expressions/native-evaluation/evaluator.d.ts +4 -0
- package/dist/esm/expressions/native-evaluation/evaluator.d.ts.map +1 -1
- package/dist/esm/expressions/native-evaluation/evaluator.js +30 -25
- package/dist/esm/expressions/native-evaluation/evaluator.js.map +1 -1
- package/dist/esm/expressions/native-evaluation/index.d.ts +5 -3
- package/dist/esm/expressions/native-evaluation/index.d.ts.map +1 -1
- package/dist/esm/expressions/native-evaluation/index.js +55 -80
- package/dist/esm/expressions/native-evaluation/index.js.map +1 -1
- package/dist/esm/expressions/native-evaluation/skeleton.d.ts +4 -0
- package/dist/esm/expressions/native-evaluation/skeleton.d.ts.map +1 -0
- package/dist/esm/expressions/native-evaluation/skeleton.js +85 -0
- package/dist/esm/expressions/native-evaluation/skeleton.js.map +1 -0
- package/dist/esm/expressions/native-evaluation/verify.d.ts +30 -0
- package/dist/esm/expressions/native-evaluation/verify.d.ts.map +1 -0
- package/dist/esm/expressions/native-evaluation/verify.js +151 -0
- package/dist/esm/expressions/native-evaluation/verify.js.map +1 -0
- package/dist/esm/generate-schema-from-example.d.ts +6 -0
- package/dist/esm/generate-schema-from-example.d.ts.map +1 -0
- package/dist/esm/generate-schema-from-example.js +13 -0
- package/dist/esm/generate-schema-from-example.js.map +1 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces.d.ts +2 -2
- package/dist/esm/typecheck.tsbuildinfo +1 -1
- package/dist/esm/utils.d.ts +7 -0
- package/dist/esm/utils.d.ts.map +1 -1
- package/dist/esm/utils.js +7 -1
- package/dist/esm/utils.js.map +1 -1
- package/package.json +8 -7
package/dist/esm/expression.d.ts
CHANGED
|
@@ -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":"AAAA,OAAO,KAAK,EAAwB,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../src/expression.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/expression.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
612
|
-
|
|
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 =
|
|
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;
|
|
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
|