@n8n/expression-runtime 0.7.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle/runtime.esm.js +17 -17
- package/dist/bundle/runtime.esm.js.map +4 -4
- package/dist/bundle/runtime.iife.js +17 -17
- package/dist/bundle/runtime.iife.js.map +4 -4
- package/dist/cjs/bridge/isolated-vm-bridge.d.ts +48 -34
- package/dist/cjs/bridge/isolated-vm-bridge.d.ts.map +1 -1
- package/dist/cjs/bridge/isolated-vm-bridge.js +285 -236
- package/dist/cjs/bridge/isolated-vm-bridge.js.map +1 -1
- package/dist/cjs/build.tsbuildinfo +1 -1
- package/dist/cjs/evaluator/expression-evaluator.d.ts +8 -1
- package/dist/cjs/evaluator/expression-evaluator.d.ts.map +1 -1
- package/dist/cjs/evaluator/expression-evaluator.js +62 -6
- package/dist/cjs/evaluator/expression-evaluator.js.map +1 -1
- package/dist/cjs/extensions/boolean-extensions.d.ts +1 -1
- package/dist/cjs/extensions/object-extensions.d.ts.map +1 -1
- package/dist/cjs/extensions/object-extensions.js +8 -4
- package/dist/cjs/extensions/object-extensions.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/pool/isolate-pool.d.ts +35 -0
- package/dist/cjs/pool/isolate-pool.d.ts.map +1 -0
- package/dist/cjs/pool/isolate-pool.js +123 -0
- package/dist/cjs/pool/isolate-pool.js.map +1 -0
- package/dist/cjs/runtime/context.d.ts +18 -0
- package/dist/cjs/runtime/context.d.ts.map +1 -0
- package/dist/cjs/runtime/{reset.js → context.js} +95 -100
- package/dist/cjs/runtime/context.js.map +1 -0
- package/dist/cjs/runtime/index.d.ts +1 -19
- package/dist/cjs/runtime/index.d.ts.map +1 -1
- package/dist/cjs/runtime/index.js +3 -5
- package/dist/cjs/runtime/index.js.map +1 -1
- package/dist/cjs/runtime/lazy-proxy.d.ts +28 -3
- package/dist/cjs/runtime/lazy-proxy.d.ts.map +1 -1
- package/dist/cjs/runtime/lazy-proxy.js +84 -16
- package/dist/cjs/runtime/lazy-proxy.js.map +1 -1
- package/dist/cjs/types/bridge.d.ts +12 -7
- package/dist/cjs/types/bridge.d.ts.map +1 -1
- package/dist/cjs/types/bridge.js +7 -1
- package/dist/cjs/types/bridge.js.map +1 -1
- package/dist/cjs/types/evaluator.d.ts +24 -14
- package/dist/cjs/types/evaluator.d.ts.map +1 -1
- package/dist/cjs/types/evaluator.js.map +1 -1
- package/dist/cjs/types/index.d.ts +1 -1
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/esm/bridge/isolated-vm-bridge.d.ts +48 -34
- package/dist/esm/bridge/isolated-vm-bridge.d.ts.map +1 -1
- package/dist/esm/bridge/isolated-vm-bridge.js +285 -236
- package/dist/esm/bridge/isolated-vm-bridge.js.map +1 -1
- package/dist/esm/build.tsbuildinfo +1 -1
- package/dist/esm/evaluator/expression-evaluator.d.ts +8 -1
- package/dist/esm/evaluator/expression-evaluator.d.ts.map +1 -1
- package/dist/esm/evaluator/expression-evaluator.js +61 -5
- package/dist/esm/evaluator/expression-evaluator.js.map +1 -1
- package/dist/esm/extensions/object-extensions.d.ts.map +1 -1
- package/dist/esm/extensions/object-extensions.js +8 -4
- package/dist/esm/extensions/object-extensions.js.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- 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/pool/isolate-pool.d.ts +35 -0
- package/dist/esm/pool/isolate-pool.d.ts.map +1 -0
- package/dist/esm/pool/isolate-pool.js +107 -0
- package/dist/esm/pool/isolate-pool.js.map +1 -0
- package/dist/esm/runtime/context.d.ts +18 -0
- package/dist/esm/runtime/context.d.ts.map +1 -0
- package/dist/esm/runtime/{reset.js → context.js} +95 -100
- package/dist/esm/runtime/context.js.map +1 -0
- package/dist/esm/runtime/index.d.ts +1 -19
- package/dist/esm/runtime/index.d.ts.map +1 -1
- package/dist/esm/runtime/index.js +2 -4
- package/dist/esm/runtime/index.js.map +1 -1
- package/dist/esm/runtime/lazy-proxy.d.ts +28 -3
- package/dist/esm/runtime/lazy-proxy.d.ts.map +1 -1
- package/dist/esm/runtime/lazy-proxy.js +83 -16
- package/dist/esm/runtime/lazy-proxy.js.map +1 -1
- package/dist/esm/types/bridge.d.ts +12 -7
- package/dist/esm/types/bridge.d.ts.map +1 -1
- package/dist/esm/types/bridge.js +7 -1
- package/dist/esm/types/bridge.js.map +1 -1
- package/dist/esm/types/evaluator.d.ts +24 -14
- package/dist/esm/types/evaluator.d.ts.map +1 -1
- package/dist/esm/types/evaluator.js.map +1 -1
- package/dist/esm/types/index.d.ts +1 -1
- package/dist/esm/types/index.d.ts.map +1 -1
- package/package.json +10 -7
- package/dist/cjs/runtime/reset.d.ts +0 -16
- package/dist/cjs/runtime/reset.d.ts.map +0 -1
- package/dist/cjs/runtime/reset.js.map +0 -1
- package/dist/esm/runtime/reset.d.ts +0 -16
- package/dist/esm/runtime/reset.d.ts.map +0 -1
- package/dist/esm/runtime/reset.js.map +0 -1
|
@@ -4,9 +4,16 @@ export declare class ExpressionEvaluator implements IExpressionEvaluator {
|
|
|
4
4
|
private disposed;
|
|
5
5
|
private tournament?;
|
|
6
6
|
private codeCache;
|
|
7
|
+
private pool;
|
|
8
|
+
private bridgesByCaller;
|
|
9
|
+
private readonly createBridge;
|
|
7
10
|
constructor(config: EvaluatorConfig);
|
|
8
11
|
initialize(): Promise<void>;
|
|
9
|
-
|
|
12
|
+
acquire(caller: object): Promise<void>;
|
|
13
|
+
evaluate(expression: string, data: WorkflowData, caller: object, options?: EvaluateOptions): unknown;
|
|
14
|
+
private getBridge;
|
|
15
|
+
release(caller: object): Promise<void>;
|
|
16
|
+
waitForReplenishment(): Promise<void>;
|
|
10
17
|
/**
|
|
11
18
|
* Transform a template expression to executable JavaScript via tournament.
|
|
12
19
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression-evaluator.d.ts","sourceRoot":"","sources":["../../../src/evaluator/expression-evaluator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,eAAe,
|
|
1
|
+
{"version":3,"file":"expression-evaluator.d.ts","sourceRoot":"","sources":["../../../src/evaluator/expression-evaluator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,eAAe,EAEf,MAAM,UAAU,CAAC;AAMlB,qBAAa,mBAAoB,YAAW,oBAAoB;IAC/D,OAAO,CAAC,MAAM,CAAkB;IAEhC,OAAO,CAAC,QAAQ,CAAS;IAGzB,OAAO,CAAC,UAAU,CAAC,CAAa;IAIhC,OAAO,CAAC,SAAS,CAA2B;IAE5C,OAAO,CAAC,IAAI,CAAc;IAE1B,OAAO,CAAC,eAAe,CAAwC;IAE/D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+B;gBAEhD,MAAM,EAAE,eAAe;IAsB7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5C,QAAQ,CACP,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,eAAe,GACvB,OAAO;IA0BV,OAAO,CAAC,SAAS;IAeX,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3C;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IA2BpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,UAAU,IAAI,OAAO;CAGrB"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { Tournament } from '@n8n/tournament';
|
|
2
|
+
import { DEFAULT_BRIDGE_CONFIG } from '../types/bridge';
|
|
3
|
+
import { IsolateError } from '@n8n/errors';
|
|
4
|
+
import { IsolatePool, PoolDisposedError, PoolExhaustedError } from '../pool/isolate-pool';
|
|
2
5
|
import { LruCache } from './lru-cache';
|
|
3
6
|
export class ExpressionEvaluator {
|
|
4
7
|
config;
|
|
@@ -8,22 +11,53 @@ export class ExpressionEvaluator {
|
|
|
8
11
|
// Cache: template expression → tournament-transformed JavaScript code
|
|
9
12
|
// Cache hit rate in production: ~99.9% (same expressions repeat within a workflow)
|
|
10
13
|
codeCache;
|
|
14
|
+
pool;
|
|
15
|
+
bridgesByCaller = new WeakMap();
|
|
16
|
+
createBridge;
|
|
11
17
|
constructor(config) {
|
|
12
18
|
this.config = config;
|
|
13
19
|
this.codeCache = new LruCache(config.maxCodeCacheSize, () => {
|
|
14
20
|
this.config.observability?.metrics.counter('expression.code_cache.eviction', 1);
|
|
15
21
|
});
|
|
22
|
+
const logger = config.logger ?? DEFAULT_BRIDGE_CONFIG.logger;
|
|
23
|
+
this.createBridge = async () => {
|
|
24
|
+
const bridge = config.createBridge();
|
|
25
|
+
await bridge.initialize();
|
|
26
|
+
return bridge;
|
|
27
|
+
};
|
|
28
|
+
this.pool = new IsolatePool(this.createBridge, config.poolSize ?? 1, (error) => {
|
|
29
|
+
logger.error('[IsolatePool] Failed to replenish bridge', { error });
|
|
30
|
+
config.observability?.metrics.counter('expression.pool.replenish_failed', 1);
|
|
31
|
+
}, logger);
|
|
16
32
|
}
|
|
17
33
|
async initialize() {
|
|
18
|
-
await this.
|
|
34
|
+
await this.pool.initialize();
|
|
19
35
|
}
|
|
20
|
-
|
|
36
|
+
async acquire(caller) {
|
|
37
|
+
if (this.bridgesByCaller.has(caller))
|
|
38
|
+
return;
|
|
39
|
+
let bridge;
|
|
40
|
+
try {
|
|
41
|
+
bridge = this.pool.acquire();
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (error instanceof PoolDisposedError)
|
|
45
|
+
throw error;
|
|
46
|
+
if (!(error instanceof PoolExhaustedError))
|
|
47
|
+
throw error;
|
|
48
|
+
bridge = await this.createBridge();
|
|
49
|
+
}
|
|
50
|
+
this.config.observability?.metrics.counter('expression.pool.acquired', 1);
|
|
51
|
+
this.bridgesByCaller.set(caller, bridge);
|
|
52
|
+
}
|
|
53
|
+
evaluate(expression, data, caller, options) {
|
|
21
54
|
if (this.disposed)
|
|
22
|
-
throw new
|
|
55
|
+
throw new IsolateError('Evaluator disposed');
|
|
56
|
+
const bridge = this.getBridge(caller);
|
|
23
57
|
// Transform template expression → sanitized JavaScript (cached)
|
|
24
58
|
const transformedCode = this.getTransformedCode(expression);
|
|
25
59
|
try {
|
|
26
|
-
const result =
|
|
60
|
+
const result = bridge.execute(transformedCode, data, {
|
|
27
61
|
timezone: options?.timezone,
|
|
28
62
|
});
|
|
29
63
|
if (this.config.observability) {
|
|
@@ -38,6 +72,28 @@ export class ExpressionEvaluator {
|
|
|
38
72
|
throw error;
|
|
39
73
|
}
|
|
40
74
|
}
|
|
75
|
+
getBridge(caller) {
|
|
76
|
+
const bridge = this.bridgesByCaller.get(caller);
|
|
77
|
+
if (!bridge) {
|
|
78
|
+
throw new IsolateError('No bridge acquired for this context. Call acquire() first.');
|
|
79
|
+
}
|
|
80
|
+
// If the isolate died mid-execution (e.g. OOM), all remaining expressions
|
|
81
|
+
// in this execution are expected to fail. Recovery is per-execution, not per-expression.
|
|
82
|
+
if (bridge.isDisposed()) {
|
|
83
|
+
throw new IsolateError('Isolate for this caller is no longer available');
|
|
84
|
+
}
|
|
85
|
+
return bridge;
|
|
86
|
+
}
|
|
87
|
+
async release(caller) {
|
|
88
|
+
const bridge = this.bridgesByCaller.get(caller);
|
|
89
|
+
if (!bridge)
|
|
90
|
+
return;
|
|
91
|
+
this.bridgesByCaller.delete(caller);
|
|
92
|
+
await this.pool.release(bridge);
|
|
93
|
+
}
|
|
94
|
+
async waitForReplenishment() {
|
|
95
|
+
await this.pool.waitForReplenishment();
|
|
96
|
+
}
|
|
41
97
|
/**
|
|
42
98
|
* Transform a template expression to executable JavaScript via tournament.
|
|
43
99
|
*
|
|
@@ -74,7 +130,7 @@ export class ExpressionEvaluator {
|
|
|
74
130
|
this.disposed = true;
|
|
75
131
|
this.codeCache.clear();
|
|
76
132
|
this.config.observability?.metrics.gauge('expression.code_cache.size', 0);
|
|
77
|
-
await this.
|
|
133
|
+
await this.pool.dispose();
|
|
78
134
|
}
|
|
79
135
|
isDisposed() {
|
|
80
136
|
return this.disposed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression-evaluator.js","sourceRoot":"","sources":["../../../src/evaluator/expression-evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"expression-evaluator.js","sourceRoot":"","sources":["../../../src/evaluator/expression-evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-extensions.d.ts","sourceRoot":"","sources":["../../../src/extensions/object-extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAmEjD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiB7C;yBAjBe,OAAO;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"object-extensions.d.ts","sourceRoot":"","sources":["../../../src/extensions/object-extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAmEjD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiB7C;yBAjBe,OAAO;;;;;;;;;;;;AA8BvB,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,UAItC;yBAJe,SAAS;;;;;;;;;;;;AAMzB,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,UAEzC;yBAFe,YAAY;;;;;;;;;;;;AAI5B,wBAAgB,KAAK,cAEpB;AAED,wBAAgB,OAAO,cAEtB;AAED,wBAAgB,SAAS,cAExB;AAED,wBAAgB,UAAU,cAEzB;AA+LD,eAAO,MAAM,gBAAgB,EAAE,YAmB9B,CAAC"}
|
|
@@ -76,12 +76,16 @@ export function compact(value) {
|
|
|
76
76
|
// DIVERGENCE from packages/workflow/src/extensions/object-extensions.ts:
|
|
77
77
|
// The original uses URLSearchParams which is a Web API unavailable inside the
|
|
78
78
|
// V8 isolate. encodeURIComponent is an ECMAScript built-in available in all
|
|
79
|
-
// V8 contexts
|
|
79
|
+
// V8 contexts, but it doesn't encode !'()~ which WHATWG requires. The extra
|
|
80
|
+
// replace step covers those characters to match URLSearchParams output.
|
|
81
|
+
function whatwgEncode(str) {
|
|
82
|
+
return encodeURIComponent(str)
|
|
83
|
+
.replace(/%20/g, '+')
|
|
84
|
+
.replace(/[!'()~]/g, (c) => '%' + c.charCodeAt(0).toString(16).toUpperCase());
|
|
85
|
+
}
|
|
80
86
|
export function urlEncode(value) {
|
|
81
87
|
return Object.entries(value)
|
|
82
|
-
.map(([k, v]) =>
|
|
83
|
-
'=' +
|
|
84
|
-
encodeURIComponent(String(v)).replace(/%20/g, '+'))
|
|
88
|
+
.map(([k, v]) => whatwgEncode(k) + '=' + whatwgEncode(String(v)))
|
|
85
89
|
.join('&');
|
|
86
90
|
}
|
|
87
91
|
export function toJsonString(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-extensions.js","sourceRoot":"","sources":["../../../src/extensions/object-extensions.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"object-extensions.js","sourceRoot":"","sources":["../../../src/extensions/object-extensions.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { ExpressionEvaluator } from './evaluator/expression-evaluator';
|
|
2
2
|
export { IsolatedVmBridge } from './bridge/isolated-vm-bridge';
|
|
3
|
-
export type { IExpressionEvaluator, EvaluatorConfig, WorkflowData, EvaluateOptions, ExecuteOptions, RuntimeBridge, BridgeConfig, ObservabilityProvider, MetricsAPI, TracesAPI, Span, LogsAPI, } from './types';
|
|
3
|
+
export type { IExpressionEvaluator, EvaluatorConfig, WorkflowData, EvaluateOptions, ExecuteOptions, RuntimeBridge, BridgeConfig, Logger, ObservabilityProvider, MetricsAPI, TracesAPI, Span, LogsAPI, } from './types';
|
|
4
4
|
export { ExpressionError, MemoryLimitError, TimeoutError, SecurityViolationError, SyntaxError, } from './types';
|
|
5
|
+
export { IsolateError } from '@n8n/errors';
|
|
5
6
|
export { extend, extendOptional, EXTENSION_OBJECTS } from './extensions/extend';
|
|
6
7
|
export { ExpressionExtensionError } from './extensions/expression-extension-error';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAIvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,YAAY,EACX,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,UAAU,EACV,SAAS,EACT,IAAI,EACJ,OAAO,GACP,MAAM,SAAS,CAAC;AAGjB,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,WAAW,GACX,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAIvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,YAAY,EACX,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,MAAM,EACN,qBAAqB,EACrB,UAAU,EACV,SAAS,EACT,IAAI,EACJ,OAAO,GACP,MAAM,SAAS,CAAC;AAGjB,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,WAAW,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -5,6 +5,7 @@ export { ExpressionEvaluator } from './evaluator/expression-evaluator';
|
|
|
5
5
|
export { IsolatedVmBridge } from './bridge/isolated-vm-bridge';
|
|
6
6
|
// Error types
|
|
7
7
|
export { ExpressionError, MemoryLimitError, TimeoutError, SecurityViolationError, SyntaxError, } from './types';
|
|
8
|
+
export { IsolateError } from '@n8n/errors';
|
|
8
9
|
// Extension runtime exports
|
|
9
10
|
export { extend, extendOptional, EXTENSION_OBJECTS } from './extensions/extend';
|
|
10
11
|
export { ExpressionExtensionError } from './extensions/expression-extension-error';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAEvE,uEAAuE;AACvE,6EAA6E;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAEvE,uEAAuE;AACvE,6EAA6E;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAmB/D,cAAc;AACd,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,WAAW,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,4BAA4B;AAC5B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { RuntimeBridge } from '../types';
|
|
2
|
+
import type { Logger } from '../types/bridge';
|
|
3
|
+
import { IsolateError } from '@n8n/errors';
|
|
4
|
+
export declare class PoolDisposedError extends IsolateError {
|
|
5
|
+
constructor();
|
|
6
|
+
}
|
|
7
|
+
export declare class PoolExhaustedError extends IsolateError {
|
|
8
|
+
constructor();
|
|
9
|
+
}
|
|
10
|
+
export declare class IsolatePool {
|
|
11
|
+
private readonly createBridge;
|
|
12
|
+
private readonly size;
|
|
13
|
+
private readonly onReplenishFailed?;
|
|
14
|
+
private readonly logger?;
|
|
15
|
+
private bridges;
|
|
16
|
+
private disposed;
|
|
17
|
+
/** Number of bridges currently being created. */
|
|
18
|
+
private warming;
|
|
19
|
+
/** In-flight isolate replenishment promises. */
|
|
20
|
+
private replenishPromises;
|
|
21
|
+
constructor(createBridge: () => Promise<RuntimeBridge>, size: number, onReplenishFailed?: ((error: unknown) => void) | undefined, logger?: Logger | undefined);
|
|
22
|
+
initialize(): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Pops a warm bridge from the pool. Kickstarts replenishment.
|
|
25
|
+
* Throws if disposed or pool is empty. Callers are expected to handle the empty case by falling back to cold-start bridge creation.
|
|
26
|
+
*/
|
|
27
|
+
acquire(): RuntimeBridge;
|
|
28
|
+
release(bridge: RuntimeBridge): Promise<void>;
|
|
29
|
+
dispose(): Promise<void>;
|
|
30
|
+
private static readonly MAX_REPLENISH_RETRIES;
|
|
31
|
+
private static readonly REPLENISH_RETRY_BASE_MS;
|
|
32
|
+
waitForReplenishment(): Promise<void>;
|
|
33
|
+
private replenish;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=isolate-pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isolate-pool.d.ts","sourceRoot":"","sources":["../../../src/pool/isolate-pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,qBAAa,iBAAkB,SAAQ,YAAY;;CAKlD;AAED,qBAAa,kBAAmB,SAAQ,YAAY;;CAKnD;AAED,qBAAa,WAAW;IAStB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAXzB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,QAAQ,CAAS;IACzB,iDAAiD;IACjD,OAAO,CAAC,OAAO,CAAK;IACpB,gDAAgD;IAChD,OAAO,CAAC,iBAAiB,CAA4B;gBAGnC,YAAY,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,EAC1C,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,GAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,aAAA,EAC5C,MAAM,CAAC,EAAE,MAAM,YAAA;IAG3B,UAAU;IAoBhB;;;OAGG;IACH,OAAO,IAAI,aAAa;IAQlB,OAAO,CAAC,MAAM,EAAE,aAAa;IAK7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAK;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAO;IAEhD,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3C,OAAO,CAAC,SAAS;CA4BjB"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { IsolateError } from '@n8n/errors';
|
|
2
|
+
export class PoolDisposedError extends IsolateError {
|
|
3
|
+
constructor() {
|
|
4
|
+
super('Pool is disposed');
|
|
5
|
+
this.name = 'PoolDisposedError';
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export class PoolExhaustedError extends IsolateError {
|
|
9
|
+
constructor() {
|
|
10
|
+
super('No isolate bridge available in pool');
|
|
11
|
+
this.name = 'PoolExhaustedError';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export class IsolatePool {
|
|
15
|
+
createBridge;
|
|
16
|
+
size;
|
|
17
|
+
onReplenishFailed;
|
|
18
|
+
logger;
|
|
19
|
+
bridges = [];
|
|
20
|
+
disposed = false;
|
|
21
|
+
/** Number of bridges currently being created. */
|
|
22
|
+
warming = 0;
|
|
23
|
+
/** In-flight isolate replenishment promises. */
|
|
24
|
+
replenishPromises = new Set();
|
|
25
|
+
constructor(createBridge, size, onReplenishFailed, logger) {
|
|
26
|
+
this.createBridge = createBridge;
|
|
27
|
+
this.size = size;
|
|
28
|
+
this.onReplenishFailed = onReplenishFailed;
|
|
29
|
+
this.logger = logger;
|
|
30
|
+
}
|
|
31
|
+
async initialize() {
|
|
32
|
+
const results = await Promise.allSettled(Array.from({ length: this.size }, () => this.createBridge()));
|
|
33
|
+
for (const result of results) {
|
|
34
|
+
if (result.status === 'fulfilled') {
|
|
35
|
+
this.bridges.push(result.value);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this.logger?.error('[IsolatePool] Failed to create bridge during init', {
|
|
39
|
+
error: result.reason,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (this.bridges.length === 0) {
|
|
44
|
+
throw new IsolateError('IsolatePool failed to create any bridges');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Pops a warm bridge from the pool. Kickstarts replenishment.
|
|
49
|
+
* Throws if disposed or pool is empty. Callers are expected to handle the empty case by falling back to cold-start bridge creation.
|
|
50
|
+
*/
|
|
51
|
+
acquire() {
|
|
52
|
+
if (this.disposed)
|
|
53
|
+
throw new PoolDisposedError();
|
|
54
|
+
const bridge = this.bridges.shift();
|
|
55
|
+
if (!bridge)
|
|
56
|
+
throw new PoolExhaustedError();
|
|
57
|
+
void this.replenish();
|
|
58
|
+
return bridge;
|
|
59
|
+
}
|
|
60
|
+
async release(bridge) {
|
|
61
|
+
if (!bridge.isDisposed())
|
|
62
|
+
await bridge.dispose();
|
|
63
|
+
this.replenish();
|
|
64
|
+
}
|
|
65
|
+
async dispose() {
|
|
66
|
+
this.disposed = true;
|
|
67
|
+
await Promise.all([...this.replenishPromises]);
|
|
68
|
+
await Promise.all(this.bridges.map((b) => b.dispose()));
|
|
69
|
+
this.bridges = [];
|
|
70
|
+
}
|
|
71
|
+
static MAX_REPLENISH_RETRIES = 3;
|
|
72
|
+
static REPLENISH_RETRY_BASE_MS = 500;
|
|
73
|
+
async waitForReplenishment() {
|
|
74
|
+
if (this.replenishPromises.size > 0) {
|
|
75
|
+
await Promise.all([...this.replenishPromises]);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
replenish(attempt = 0) {
|
|
79
|
+
if (this.disposed)
|
|
80
|
+
return;
|
|
81
|
+
if (this.bridges.length + this.warming >= this.size)
|
|
82
|
+
return;
|
|
83
|
+
this.warming++;
|
|
84
|
+
let promise;
|
|
85
|
+
promise = this.createBridge()
|
|
86
|
+
.then((bridge) => {
|
|
87
|
+
this.warming--;
|
|
88
|
+
this.replenishPromises.delete(promise);
|
|
89
|
+
if (this.disposed) {
|
|
90
|
+
void bridge.dispose();
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
this.bridges.push(bridge);
|
|
94
|
+
})
|
|
95
|
+
.catch((error) => {
|
|
96
|
+
this.warming--;
|
|
97
|
+
this.replenishPromises.delete(promise);
|
|
98
|
+
this.onReplenishFailed?.(error);
|
|
99
|
+
if (attempt < IsolatePool.MAX_REPLENISH_RETRIES) {
|
|
100
|
+
const delay = IsolatePool.REPLENISH_RETRY_BASE_MS * 2 ** attempt;
|
|
101
|
+
setTimeout(() => this.replenish(attempt + 1), delay).unref();
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
this.replenishPromises.add(promise);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=isolate-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isolate-pool.js","sourceRoot":"","sources":["../../../src/pool/isolate-pool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IAClD;QACC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IACjC,CAAC;CACD;AAED,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IACnD;QACC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IAClC,CAAC;CACD;AAED,MAAM,OAAO,WAAW;IASL;IACA;IACA;IACA;IAXV,OAAO,GAAoB,EAAE,CAAC;IAC9B,QAAQ,GAAG,KAAK,CAAC;IACzB,iDAAiD;IACzC,OAAO,GAAG,CAAC,CAAC;IACpB,gDAAgD;IACxC,iBAAiB,GAAG,IAAI,GAAG,EAAiB,CAAC;IAErD,YACkB,YAA0C,EAC1C,IAAY,EACZ,iBAA4C,EAC5C,MAAe;QAHf,iBAAY,GAAZ,YAAY,CAA8B;QAC1C,SAAI,GAAJ,IAAI,CAAQ;QACZ,sBAAiB,GAAjB,iBAAiB,CAA2B;QAC5C,WAAM,GAAN,MAAM,CAAS;IAC9B,CAAC;IAEJ,KAAK,CAAC,UAAU;QACf,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACvC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAC5D,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,mDAAmD,EAAE;oBACvE,KAAK,EAAE,MAAM,CAAC,MAAM;iBACpB,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,YAAY,CAAC,0CAA0C,CAAC,CAAC;QACpE,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,OAAO;QACN,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,iBAAiB,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,kBAAkB,EAAE,CAAC;QAC5C,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC;IACf,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAqB;QAClC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAAE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACjD,IAAI,CAAC,SAAS,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO;QACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC/C,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACnB,CAAC;IAEO,MAAM,CAAU,qBAAqB,GAAG,CAAC,CAAC;IAC1C,MAAM,CAAU,uBAAuB,GAAG,GAAG,CAAC;IAEtD,KAAK,CAAC,oBAAoB;QACzB,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAChD,CAAC;IACF,CAAC;IAEO,SAAS,CAAC,OAAO,GAAG,CAAC;QAC5B,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QAE5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,OAAsB,CAAC;QAC3B,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;aAC3B,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAChB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;gBACtB,OAAO;YACR,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACzB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,CAAC;YAEhC,IAAI,OAAO,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC;gBACjD,MAAM,KAAK,GAAG,WAAW,CAAC,uBAAuB,GAAG,CAAC,IAAI,OAAO,CAAC;gBACjE,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YAC9D,CAAC;QACF,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build a fresh, closure-scoped evaluation context.
|
|
3
|
+
*
|
|
4
|
+
* This function creates a context object that contains everything needed to
|
|
5
|
+
* evaluate an expression, without touching any global mutable state
|
|
6
|
+
* (except luxon's Settings.defaultZone which is process-wide).
|
|
7
|
+
*
|
|
8
|
+
* The returned object is used as tournament's `this` context in the
|
|
9
|
+
* evalClosureSync wrapper.
|
|
10
|
+
*
|
|
11
|
+
* @param getValueAtPath - ivm.Reference for fetching values by path
|
|
12
|
+
* @param getArrayElement - ivm.Reference for fetching array elements
|
|
13
|
+
* @param callFunctionAtPath - ivm.Reference for calling functions by path
|
|
14
|
+
* @param timezone - Optional IANA timezone string
|
|
15
|
+
* @returns A context object with all workflow data, proxies, and builtins
|
|
16
|
+
*/
|
|
17
|
+
export declare function buildContext(getValueAtPath: any, getArrayElement: any, callFunctionAtPath: any, timezone?: string): Record<string, unknown>;
|
|
18
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/runtime/context.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAC3B,cAAc,EAAE,GAAG,EACnB,eAAe,EAAE,GAAG,EACpB,kBAAkB,EAAE,GAAG,EACvB,QAAQ,CAAC,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqJzB"}
|