@n8n/expression-runtime 0.8.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle/runtime.esm.js +15 -15
- package/dist/bundle/runtime.esm.js.map +4 -4
- package/dist/bundle/runtime.iife.js +15 -15
- package/dist/bundle/runtime.iife.js.map +4 -4
- package/dist/cjs/bridge/isolated-vm-bridge.d.ts +40 -34
- package/dist/cjs/bridge/isolated-vm-bridge.d.ts.map +1 -1
- package/dist/cjs/bridge/isolated-vm-bridge.js +97 -154
- 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.map +1 -1
- package/dist/cjs/evaluator/expression-evaluator.js +5 -4
- package/dist/cjs/evaluator/expression-evaluator.js.map +1 -1
- package/dist/cjs/extensions/function-extensions.d.ts.map +1 -1
- package/dist/cjs/extensions/function-extensions.js +8 -5
- package/dist/cjs/extensions/function-extensions.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- 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 +3 -2
- package/dist/cjs/pool/isolate-pool.d.ts.map +1 -1
- package/dist/cjs/pool/isolate-pool.js +5 -4
- package/dist/cjs/pool/isolate-pool.js.map +1 -1
- 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} +93 -114
- package/dist/cjs/runtime/context.js.map +1 -0
- package/dist/cjs/runtime/index.d.ts +1 -28
- 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 +9 -3
- package/dist/cjs/runtime/lazy-proxy.d.ts.map +1 -1
- package/dist/cjs/runtime/lazy-proxy.js +19 -13
- package/dist/cjs/runtime/lazy-proxy.js.map +1 -1
- package/dist/esm/bridge/isolated-vm-bridge.d.ts +40 -34
- package/dist/esm/bridge/isolated-vm-bridge.d.ts.map +1 -1
- package/dist/esm/bridge/isolated-vm-bridge.js +97 -154
- 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.map +1 -1
- package/dist/esm/evaluator/expression-evaluator.js +4 -3
- package/dist/esm/evaluator/expression-evaluator.js.map +1 -1
- package/dist/esm/extensions/function-extensions.d.ts.map +1 -1
- package/dist/esm/extensions/function-extensions.js +8 -5
- package/dist/esm/extensions/function-extensions.js.map +1 -1
- 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/pool/isolate-pool.d.ts +3 -2
- package/dist/esm/pool/isolate-pool.d.ts.map +1 -1
- package/dist/esm/pool/isolate-pool.js +4 -3
- package/dist/esm/pool/isolate-pool.js.map +1 -1
- 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} +92 -113
- package/dist/esm/runtime/context.js.map +1 -0
- package/dist/esm/runtime/index.d.ts +1 -28
- 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 +9 -3
- package/dist/esm/runtime/lazy-proxy.d.ts.map +1 -1
- package/dist/esm/runtime/lazy-proxy.js +19 -13
- package/dist/esm/runtime/lazy-proxy.js.map +1 -1
- package/package.json +5 -4
- 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
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
declare global {
|
|
2
2
|
namespace globalThis {
|
|
3
|
-
var __getValueAtPath: any;
|
|
4
|
-
var __getArrayElement: any;
|
|
5
|
-
var __callFunctionAtPath: any;
|
|
6
|
-
var __data: Record<string, unknown>;
|
|
7
3
|
var createDeepLazyProxy: (basePath?: string[]) => any;
|
|
8
|
-
var
|
|
4
|
+
var buildContext: (getValueAtPath: any, getArrayElement: any, callFunctionAtPath: any, timezone?: string) => Record<string, unknown>;
|
|
9
5
|
var SafeObject: typeof Object;
|
|
10
6
|
var SafeError: typeof Error;
|
|
11
7
|
var DateTime: typeof import('luxon').DateTime;
|
|
@@ -14,29 +10,6 @@ declare global {
|
|
|
14
10
|
var __prepareForTransfer: (value: unknown) => unknown;
|
|
15
11
|
var extend: typeof import('../extensions/extend').extend;
|
|
16
12
|
var extendOptional: typeof import('../extensions/extend').extendOptional;
|
|
17
|
-
var $json: unknown;
|
|
18
|
-
var $binary: unknown;
|
|
19
|
-
var $input: unknown;
|
|
20
|
-
var $node: unknown;
|
|
21
|
-
var $parameter: unknown;
|
|
22
|
-
var $workflow: unknown;
|
|
23
|
-
var $prevNode: unknown;
|
|
24
|
-
var $data: unknown;
|
|
25
|
-
var $env: unknown;
|
|
26
|
-
var $runIndex: number | undefined;
|
|
27
|
-
var $itemIndex: number | undefined;
|
|
28
|
-
var $now: import('luxon').DateTime;
|
|
29
|
-
var $today: import('luxon').DateTime;
|
|
30
|
-
var $items: unknown;
|
|
31
|
-
var $execution: unknown;
|
|
32
|
-
var $vars: unknown;
|
|
33
|
-
var $secrets: unknown;
|
|
34
|
-
var $executionId: string | undefined;
|
|
35
|
-
var $resumeWebhookUrl: string | undefined;
|
|
36
|
-
var $webhookId: string | undefined;
|
|
37
|
-
var $nodeId: string | undefined;
|
|
38
|
-
var $nodeVersion: number | undefined;
|
|
39
|
-
var $: (nodeName: string) => unknown;
|
|
40
13
|
}
|
|
41
14
|
}
|
|
42
15
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"AAUA,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,UAAU,CAAC;QAEpB,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"AAUA,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,UAAU,CAAC;QAEpB,IAAI,mBAAmB,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC;QAGtD,IAAI,YAAY,EAAE,CACjB,cAAc,EAAE,GAAG,EACnB,eAAe,EAAE,GAAG,EACpB,kBAAkB,EAAE,GAAG,EACvB,QAAQ,CAAC,EAAE,MAAM,KACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAG7B,IAAI,UAAU,EAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,SAAS,EAAE,OAAO,KAAK,CAAC;QAG5B,IAAI,QAAQ,EAAE,cAAc,OAAO,EAAE,QAAQ,CAAC;QAC9C,IAAI,QAAQ,EAAE,cAAc,OAAO,EAAE,QAAQ,CAAC;QAC9C,IAAI,QAAQ,EAAE,cAAc,OAAO,EAAE,QAAQ,CAAC;QAC9C,IAAI,oBAAoB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;QACtD,IAAI,MAAM,EAAE,cAAc,sBAAsB,EAAE,MAAM,CAAC;QACzD,IAAI,cAAc,EAAE,cAAc,sBAAsB,EAAE,cAAc,CAAC;KACzE;CACD"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
if (v !== undefined) module.exports = v;
|
|
5
5
|
}
|
|
6
6
|
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define(["require", "exports", "luxon", "../extensions/extend", "./safe-globals", "./lazy-proxy", "./
|
|
7
|
+
define(["require", "exports", "luxon", "../extensions/extend", "./safe-globals", "./lazy-proxy", "./context", "./serialize"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
const extend_1 = require("../extensions/extend");
|
|
14
14
|
const safe_globals_1 = require("./safe-globals");
|
|
15
15
|
const lazy_proxy_1 = require("./lazy-proxy");
|
|
16
|
-
const
|
|
16
|
+
const context_1 = require("./context");
|
|
17
17
|
const serialize_1 = require("./serialize");
|
|
18
18
|
// ============================================================================
|
|
19
19
|
// Library Setup
|
|
@@ -31,9 +31,7 @@
|
|
|
31
31
|
globalThis.SafeError = safe_globals_1.SafeError;
|
|
32
32
|
globalThis.ExpressionError = safe_globals_1.ExpressionError;
|
|
33
33
|
globalThis.createDeepLazyProxy = lazy_proxy_1.createDeepLazyProxy;
|
|
34
|
-
globalThis.
|
|
34
|
+
globalThis.buildContext = context_1.buildContext;
|
|
35
35
|
globalThis.__prepareForTransfer = serialize_1.__prepareForTransfer;
|
|
36
|
-
// Initialize empty __data object (populated by resetDataProxies before each evaluation)
|
|
37
|
-
globalThis.__data = {};
|
|
38
36
|
});
|
|
39
37
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":";;;;;;;;;;;IAAA,iCAAqD;IAErD,iDAA8D;IAE9D,iDAAwE;IACxE,6CAAmD;IACnD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":";;;;;;;;;;;IAAA,iCAAqD;IAErD,iDAA8D;IAE9D,iDAAwE;IACxE,6CAAmD;IACnD,uCAAyC;IACzC,2CAAmD;IA8BnD,+EAA+E;IAC/E,gBAAgB;IAChB,+EAA+E;IAE/E,gEAAgE;IAChE,UAAU,CAAC,MAAM,GAAG,eAAM,CAAC;IAC3B,UAAU,CAAC,cAAc,GAAG,uBAAc,CAAC;IAC3C,UAAU,CAAC,QAAQ,GAAG,gBAAQ,CAAC;IAC/B,UAAU,CAAC,QAAQ,GAAG,gBAAQ,CAAC;IAC/B,UAAU,CAAC,QAAQ,GAAG,gBAAQ,CAAC;IAE/B,+EAA+E;IAC/E,gDAAgD;IAChD,+EAA+E;IAE/E,UAAU,CAAC,UAAU,GAAG,yBAAU,CAAC;IACnC,UAAU,CAAC,SAAS,GAAG,wBAAS,CAAC;IAChC,UAAkB,CAAC,eAAe,GAAG,8BAAe,CAAC;IAEtD,UAAU,CAAC,mBAAmB,GAAG,gCAAmB,CAAC;IACrD,UAAU,CAAC,YAAY,GAAG,sBAAY,CAAC;IACvC,UAAU,CAAC,oBAAoB,GAAG,gCAAoB,CAAC"}
|
|
@@ -28,14 +28,20 @@ export declare function getProxyPath(obj: object): string[] | undefined;
|
|
|
28
28
|
* the isolate boundary using metadata-driven callbacks.
|
|
29
29
|
*
|
|
30
30
|
* Pattern:
|
|
31
|
-
* 1. When property accessed: Call
|
|
31
|
+
* 1. When property accessed: Call getValueAtPath([path]) to get metadata
|
|
32
32
|
* 2. Metadata indicates type: primitive, object, array, or function
|
|
33
33
|
* 3. For objects/arrays: Create nested proxy for lazy loading
|
|
34
|
-
* 4. For functions: Create wrapper that calls
|
|
34
|
+
* 4. For functions: Create wrapper that calls callFunctionAtPath
|
|
35
35
|
* 5. Cache all fetched values in target to avoid repeated callbacks
|
|
36
36
|
*
|
|
37
37
|
* @param basePath - Current path in object tree (e.g., ['$json', 'user'])
|
|
38
|
+
* @param knownKeys - Optional pre-known keys for the proxy
|
|
39
|
+
* @param callbacks - ivm.Reference callbacks for cross-isolate communication
|
|
38
40
|
* @returns Proxy object with lazy loading behavior
|
|
39
41
|
*/
|
|
40
|
-
export declare function createDeepLazyProxy(basePath?: string[], knownKeys?: string[]
|
|
42
|
+
export declare function createDeepLazyProxy(basePath?: string[], knownKeys?: string[], callbacks?: {
|
|
43
|
+
getValueAtPath: any;
|
|
44
|
+
getArrayElement: any;
|
|
45
|
+
callFunctionAtPath: any;
|
|
46
|
+
}): any;
|
|
41
47
|
//# sourceMappingURL=lazy-proxy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy-proxy.d.ts","sourceRoot":"","sources":["../../../src/runtime/lazy-proxy.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC7B,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAsBD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAKzD;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEjD;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAE9D;AAED
|
|
1
|
+
{"version":3,"file":"lazy-proxy.d.ts","sourceRoot":"","sources":["../../../src/runtime/lazy-proxy.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC7B,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAsBD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAKzD;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEjD;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAE9D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAClC,QAAQ,GAAE,MAAM,EAAO,EACvB,SAAS,CAAC,EAAE,MAAM,EAAE,EACpB,SAAS,CAAC,EAAE;IACX,cAAc,EAAE,GAAG,CAAC;IACpB,eAAe,EAAE,GAAG,CAAC;IACrB,kBAAkB,EAAE,GAAG,CAAC;CACxB,GACC,GAAG,CAsML"}
|
|
@@ -58,16 +58,22 @@
|
|
|
58
58
|
* the isolate boundary using metadata-driven callbacks.
|
|
59
59
|
*
|
|
60
60
|
* Pattern:
|
|
61
|
-
* 1. When property accessed: Call
|
|
61
|
+
* 1. When property accessed: Call getValueAtPath([path]) to get metadata
|
|
62
62
|
* 2. Metadata indicates type: primitive, object, array, or function
|
|
63
63
|
* 3. For objects/arrays: Create nested proxy for lazy loading
|
|
64
|
-
* 4. For functions: Create wrapper that calls
|
|
64
|
+
* 4. For functions: Create wrapper that calls callFunctionAtPath
|
|
65
65
|
* 5. Cache all fetched values in target to avoid repeated callbacks
|
|
66
66
|
*
|
|
67
67
|
* @param basePath - Current path in object tree (e.g., ['$json', 'user'])
|
|
68
|
+
* @param knownKeys - Optional pre-known keys for the proxy
|
|
69
|
+
* @param callbacks - ivm.Reference callbacks for cross-isolate communication
|
|
68
70
|
* @returns Proxy object with lazy loading behavior
|
|
69
71
|
*/
|
|
70
|
-
function createDeepLazyProxy(basePath = [], knownKeys) {
|
|
72
|
+
function createDeepLazyProxy(basePath = [], knownKeys, callbacks) {
|
|
73
|
+
if (!callbacks) {
|
|
74
|
+
throw new Error('createDeepLazyProxy requires callbacks parameter');
|
|
75
|
+
}
|
|
76
|
+
const { getValueAtPath, getArrayElement, callFunctionAtPath } = callbacks;
|
|
71
77
|
// Cache for keys fetched from the bridge (root proxies without knownKeys).
|
|
72
78
|
// Shared between ownKeys and getOwnPropertyDescriptor for consistency.
|
|
73
79
|
let fetchedKeys;
|
|
@@ -76,7 +82,7 @@
|
|
|
76
82
|
return knownKeys;
|
|
77
83
|
if (fetchedKeys)
|
|
78
84
|
return fetchedKeys;
|
|
79
|
-
const value =
|
|
85
|
+
const value = getValueAtPath.applySync(null, [basePath], {
|
|
80
86
|
arguments: { copy: true },
|
|
81
87
|
result: { copy: true },
|
|
82
88
|
});
|
|
@@ -124,9 +130,9 @@
|
|
|
124
130
|
}
|
|
125
131
|
// Build path for this property
|
|
126
132
|
const path = [...basePath, prop];
|
|
127
|
-
// Call back to
|
|
128
|
-
// Note:
|
|
129
|
-
const value =
|
|
133
|
+
// Call back to host to get metadata/value
|
|
134
|
+
// Note: getValueAtPath is an ivm.Reference passed via callbacks
|
|
135
|
+
const value = getValueAtPath.applySync(null, [path], {
|
|
130
136
|
arguments: { copy: true },
|
|
131
137
|
result: { copy: true },
|
|
132
138
|
});
|
|
@@ -142,7 +148,7 @@
|
|
|
142
148
|
if (value && typeof value === 'object' && value.__isFunction) {
|
|
143
149
|
// Create function wrapper that calls back to parent
|
|
144
150
|
target[prop] = function (...args) {
|
|
145
|
-
const result =
|
|
151
|
+
const result = callFunctionAtPath.applySync(null, [path, ...args], {
|
|
146
152
|
arguments: { copy: true },
|
|
147
153
|
result: { copy: true },
|
|
148
154
|
});
|
|
@@ -179,7 +185,7 @@
|
|
|
179
185
|
// Check cache
|
|
180
186
|
if (!(arrProp in arrTarget)) {
|
|
181
187
|
// Fetch element from parent
|
|
182
|
-
const element =
|
|
188
|
+
const element = getArrayElement.applySync(null, [path, index], {
|
|
183
189
|
arguments: { copy: true },
|
|
184
190
|
result: { copy: true },
|
|
185
191
|
});
|
|
@@ -187,13 +193,13 @@
|
|
|
187
193
|
// Handle element metadata (arrays and objects need proxies)
|
|
188
194
|
if (element && typeof element === 'object' && element.__isArray) {
|
|
189
195
|
const elementPath = [...path, String(index)];
|
|
190
|
-
arrTarget[arrProp] = createDeepLazyProxy(elementPath);
|
|
196
|
+
arrTarget[arrProp] = createDeepLazyProxy(elementPath, undefined, callbacks);
|
|
191
197
|
}
|
|
192
198
|
else if (isObjectMetadata(element)) {
|
|
193
199
|
// Object metadata: create nested proxy, passing known keys to
|
|
194
200
|
// avoid an extra __getValueAtPath round-trip for ownKeys/Object.keys()
|
|
195
201
|
const elementPath = [...path, String(index)];
|
|
196
|
-
arrTarget[arrProp] = createDeepLazyProxy(elementPath, element.__keys);
|
|
202
|
+
arrTarget[arrProp] = createDeepLazyProxy(elementPath, element.__keys, callbacks);
|
|
197
203
|
}
|
|
198
204
|
else {
|
|
199
205
|
// Primitive element
|
|
@@ -213,7 +219,7 @@
|
|
|
213
219
|
// Handle objects - metadata: { __isObject: true, __keys: string[] }
|
|
214
220
|
if (isObjectMetadata(value)) {
|
|
215
221
|
// Create nested proxy for recursive lazy loading, passing known keys
|
|
216
|
-
target[prop] = createDeepLazyProxy(path, value.__keys);
|
|
222
|
+
target[prop] = createDeepLazyProxy(path, value.__keys, callbacks);
|
|
217
223
|
return target[prop];
|
|
218
224
|
}
|
|
219
225
|
// Primitive value - cache and return
|
|
@@ -231,7 +237,7 @@
|
|
|
231
237
|
}
|
|
232
238
|
// Build path and check existence via callback
|
|
233
239
|
const path = [...basePath, prop];
|
|
234
|
-
const value =
|
|
240
|
+
const value = getValueAtPath.applySync(null, [path], {
|
|
235
241
|
arguments: { copy: true },
|
|
236
242
|
result: { copy: true },
|
|
237
243
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy-proxy.js","sourceRoot":"","sources":["../../../src/runtime/lazy-proxy.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAC/E,yCAAyC;AACzC,yFAAyF;;;;;;;;;;;;IA+CzF,oDAKC;IAGD,kCAEC;IAGD,oCAEC;
|
|
1
|
+
{"version":3,"file":"lazy-proxy.js","sourceRoot":"","sources":["../../../src/runtime/lazy-proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,11 +17,6 @@ export declare class IsolatedVmBridge implements RuntimeBridge {
|
|
|
17
17
|
private disposed;
|
|
18
18
|
private config;
|
|
19
19
|
private logger;
|
|
20
|
-
private scriptCache;
|
|
21
|
-
private valueAtPathRef?;
|
|
22
|
-
private arrayElementRef?;
|
|
23
|
-
private callFunctionRef?;
|
|
24
|
-
private resetDataProxiesRef?;
|
|
25
20
|
constructor(config?: BridgeConfig);
|
|
26
21
|
/**
|
|
27
22
|
* Initialize the isolate and create execution context.
|
|
@@ -42,7 +37,7 @@ export declare class IsolatedVmBridge implements RuntimeBridge {
|
|
|
42
37
|
* - DateTime, extend, extendOptional (expression engine globals)
|
|
43
38
|
* - SafeObject and SafeError wrappers
|
|
44
39
|
* - createDeepLazyProxy function
|
|
45
|
-
* -
|
|
40
|
+
* - buildContext function
|
|
46
41
|
*
|
|
47
42
|
* @private
|
|
48
43
|
* @throws {Error} If context not initialized or bundle loading fails
|
|
@@ -61,56 +56,67 @@ export declare class IsolatedVmBridge implements RuntimeBridge {
|
|
|
61
56
|
/**
|
|
62
57
|
* Inject the E() error handler into the isolate context.
|
|
63
58
|
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* -
|
|
68
|
-
*
|
|
59
|
+
* There are two exception-handling layers inside the isolate:
|
|
60
|
+
*
|
|
61
|
+
* 1. **Inner layer (this handler, `E()`)** — Tournament wraps each
|
|
62
|
+
* expression with try-catch that calls `E(error, this)`. This handler
|
|
63
|
+
* must match the legacy engine's behavior (set in expression.ts via
|
|
64
|
+
* setErrorHandler):
|
|
65
|
+
* - Re-throw ExpressionError / ExpressionExtensionError
|
|
66
|
+
* - Swallow everything else (TypeErrors, generic Errors, etc.)
|
|
67
|
+
*
|
|
68
|
+
* 2. **Outer layer (`wrappedCode` try-catch in `execute()`)** — Catches
|
|
69
|
+
* anything that escaped `E()` (e.g. re-thrown ExpressionErrors) and
|
|
70
|
+
* serializes it into a sentinel object so the host can reconstruct it.
|
|
71
|
+
*
|
|
72
|
+
* Inside the isolate, errors from host callbacks arrive as sentinel
|
|
73
|
+
* objects ({ __isError, name, message, ... }) rather than class instances,
|
|
74
|
+
* so we match by name instead of instanceof.
|
|
69
75
|
*
|
|
70
76
|
* @private
|
|
71
77
|
* @throws {Error} If context not initialized
|
|
72
78
|
*/
|
|
73
79
|
private injectErrorHandler;
|
|
74
80
|
/**
|
|
75
|
-
*
|
|
81
|
+
* Create an ivm.Reference callback for getting value/metadata at a path.
|
|
76
82
|
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
* 2. Initialize fresh workflow data references
|
|
80
|
-
* 3. Expose workflow properties to globalThis
|
|
81
|
-
*
|
|
82
|
-
* The reset function runs in the isolate and calls back to the host
|
|
83
|
-
* via ivm.Reference callbacks to fetch workflow data.
|
|
83
|
+
* Used by createDeepLazyProxy when accessing properties. Returns metadata
|
|
84
|
+
* markers for functions, arrays, and objects, or the primitive value directly.
|
|
84
85
|
*
|
|
86
|
+
* @param data - Current workflow data to use for callback responses
|
|
85
87
|
* @private
|
|
86
|
-
* @throws {Error} If context not initialized or reset fails
|
|
87
88
|
*/
|
|
88
|
-
private
|
|
89
|
+
private createGetValueAtPathRef;
|
|
89
90
|
/**
|
|
90
|
-
*
|
|
91
|
+
* Create an ivm.Reference callback for getting array elements at an index.
|
|
91
92
|
*
|
|
92
|
-
*
|
|
93
|
-
* to fetch data from the host process:
|
|
93
|
+
* Used by array proxy when accessing numeric indices.
|
|
94
94
|
*
|
|
95
|
-
* -
|
|
96
|
-
*
|
|
97
|
-
|
|
95
|
+
* @param data - Current workflow data to use for callback responses
|
|
96
|
+
* @private
|
|
97
|
+
*/
|
|
98
|
+
private createGetArrayElementRef;
|
|
99
|
+
/**
|
|
100
|
+
* Create an ivm.Reference callback for calling functions at a path.
|
|
98
101
|
*
|
|
99
|
-
*
|
|
102
|
+
* Used when expressions invoke functions from workflow data.
|
|
100
103
|
*
|
|
101
104
|
* @param data - Current workflow data to use for callback responses
|
|
102
105
|
* @private
|
|
103
106
|
*/
|
|
104
|
-
private
|
|
107
|
+
private createCallFunctionAtPathRef;
|
|
105
108
|
/**
|
|
106
109
|
* Execute JavaScript code in the isolated context.
|
|
107
110
|
*
|
|
108
111
|
* Flow:
|
|
109
|
-
* 1.
|
|
110
|
-
* 2.
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
112
|
+
* 1. Create three ivm.Reference callbacks scoped to the current data
|
|
113
|
+
* 2. Use evalClosureSync to run the code in a closure where $0/$1/$2
|
|
114
|
+
* are the callback references — no global mutable state
|
|
115
|
+
* 3. buildContext() inside the isolate creates a fresh evaluation context
|
|
116
|
+
* from the closure-scoped references
|
|
117
|
+
*
|
|
118
|
+
* Each call gets its own closure, so nested and concurrent evaluations
|
|
119
|
+
* cannot interfere with each other.
|
|
114
120
|
*
|
|
115
121
|
* @param code - JavaScript expression to evaluate
|
|
116
122
|
* @param data - Workflow data (e.g., { $json: {...}, $runIndex: 0 })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isolated-vm-bridge.d.ts","sourceRoot":"","sources":["../../../src/bridge/isolated-vm-bridge.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AA0E5E;;;;;;;;;;GAUG;AACH,qBAAa,gBAAiB,YAAW,aAAa;IACrD,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,MAAM,CAAmC;
|
|
1
|
+
{"version":3,"file":"isolated-vm-bridge.d.ts","sourceRoot":"","sources":["../../../src/bridge/isolated-vm-bridge.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AA0E5E;;;;;;;;;;GAUG;AACH,qBAAa,gBAAiB,YAAW,aAAa;IACrD,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,MAAM,CAAmC;gBAErC,MAAM,GAAE,YAAiB;IAYrC;;;;;;;;;;OAUG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BjC;;;;;;;;;;;OAWG;YACW,mBAAmB;IAgCjC;;;;;;;;OAQG;YACW,iBAAiB;IA4B/B;;;;;;;;;;;;;;;;;;;;;;OAsBG;YACW,kBAAkB;IAwBhC;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IAgE/B;;;;;;;OAOG;IACH,OAAO,CAAC,wBAAwB;IAyDhC;;;;;;;OAOG;IACH,OAAO,CAAC,2BAA2B;IAkCnC;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO;IAsFvF;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAexB;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B;;;;OAIG;IACH,UAAU,IAAI,OAAO;CAGrB"}
|