@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
|
@@ -16,11 +16,7 @@ export declare class IsolatedVmBridge implements RuntimeBridge {
|
|
|
16
16
|
private initialized;
|
|
17
17
|
private disposed;
|
|
18
18
|
private config;
|
|
19
|
-
private
|
|
20
|
-
private valueAtPathRef?;
|
|
21
|
-
private arrayElementRef?;
|
|
22
|
-
private callFunctionRef?;
|
|
23
|
-
private resetDataProxiesRef?;
|
|
19
|
+
private logger;
|
|
24
20
|
constructor(config?: BridgeConfig);
|
|
25
21
|
/**
|
|
26
22
|
* Initialize the isolate and create execution context.
|
|
@@ -41,7 +37,7 @@ export declare class IsolatedVmBridge implements RuntimeBridge {
|
|
|
41
37
|
* - DateTime, extend, extendOptional (expression engine globals)
|
|
42
38
|
* - SafeObject and SafeError wrappers
|
|
43
39
|
* - createDeepLazyProxy function
|
|
44
|
-
* -
|
|
40
|
+
* - buildContext function
|
|
45
41
|
*
|
|
46
42
|
* @private
|
|
47
43
|
* @throws {Error} If context not initialized or bundle loading fails
|
|
@@ -60,56 +56,67 @@ export declare class IsolatedVmBridge implements RuntimeBridge {
|
|
|
60
56
|
/**
|
|
61
57
|
* Inject the E() error handler into the isolate context.
|
|
62
58
|
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
* -
|
|
67
|
-
*
|
|
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.
|
|
68
75
|
*
|
|
69
76
|
* @private
|
|
70
77
|
* @throws {Error} If context not initialized
|
|
71
78
|
*/
|
|
72
79
|
private injectErrorHandler;
|
|
73
80
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
* This method should be called before each execute() to:
|
|
77
|
-
* 1. Clear proxy caches from previous evaluations
|
|
78
|
-
* 2. Initialize fresh workflow data references
|
|
79
|
-
* 3. Expose workflow properties to globalThis
|
|
81
|
+
* Create an ivm.Reference callback for getting value/metadata at a path.
|
|
80
82
|
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
+
* Used by createDeepLazyProxy when accessing properties. Returns metadata
|
|
84
|
+
* markers for functions, arrays, and objects, or the primitive value directly.
|
|
83
85
|
*
|
|
86
|
+
* @param data - Current workflow data to use for callback responses
|
|
84
87
|
* @private
|
|
85
|
-
* @throws {Error} If context not initialized or reset fails
|
|
86
88
|
*/
|
|
87
|
-
private
|
|
89
|
+
private createGetValueAtPathRef;
|
|
88
90
|
/**
|
|
89
|
-
*
|
|
91
|
+
* Create an ivm.Reference callback for getting array elements at an index.
|
|
90
92
|
*
|
|
91
|
-
*
|
|
92
|
-
* to fetch data from the host process:
|
|
93
|
+
* Used by array proxy when accessing numeric indices.
|
|
93
94
|
*
|
|
94
|
-
* -
|
|
95
|
-
*
|
|
96
|
-
|
|
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.
|
|
97
101
|
*
|
|
98
|
-
*
|
|
102
|
+
* Used when expressions invoke functions from workflow data.
|
|
99
103
|
*
|
|
100
104
|
* @param data - Current workflow data to use for callback responses
|
|
101
105
|
* @private
|
|
102
106
|
*/
|
|
103
|
-
private
|
|
107
|
+
private createCallFunctionAtPathRef;
|
|
104
108
|
/**
|
|
105
109
|
* Execute JavaScript code in the isolated context.
|
|
106
110
|
*
|
|
107
111
|
* Flow:
|
|
108
|
-
* 1.
|
|
109
|
-
* 2.
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
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.
|
|
113
120
|
*
|
|
114
121
|
* @param code - JavaScript expression to evaluate
|
|
115
122
|
* @param data - Workflow data (e.g., { $json: {...}, $runIndex: 0 })
|
|
@@ -117,6 +124,13 @@ export declare class IsolatedVmBridge implements RuntimeBridge {
|
|
|
117
124
|
* @throws {Error} If bridge not initialized or execution fails
|
|
118
125
|
*/
|
|
119
126
|
execute(code: string, data: Record<string, unknown>, options?: ExecuteOptions): unknown;
|
|
127
|
+
/**
|
|
128
|
+
* Reconstruct an error from serialized isolate data.
|
|
129
|
+
*
|
|
130
|
+
* Maps error names back to their host-side classes and restores
|
|
131
|
+
* custom properties that would otherwise be lost crossing the boundary.
|
|
132
|
+
*/
|
|
133
|
+
private reconstructError;
|
|
120
134
|
/**
|
|
121
135
|
* Dispose of the isolate and free resources.
|
|
122
136
|
*
|
|
@@ -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;
|
|
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"}
|