@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
|
@@ -2,7 +2,7 @@ import { DateTime, IANAZone, Settings } from 'luxon';
|
|
|
2
2
|
import { extend, extendOptional } from '../extensions/extend';
|
|
3
3
|
import { extendedFunctions } from '../extensions/function-extensions';
|
|
4
4
|
import { __sanitize, createSafeErrorSubclass, ExpressionError } from './safe-globals';
|
|
5
|
-
import { createDeepLazyProxy } from './lazy-proxy';
|
|
5
|
+
import { createDeepLazyProxy, throwIfErrorSentinel } from './lazy-proxy';
|
|
6
6
|
// Pre-create safe error subclass wrappers (reused across evaluations)
|
|
7
7
|
const SafeTypeError = createSafeErrorSubclass(TypeError);
|
|
8
8
|
const SafeSyntaxError = createSafeErrorSubclass(SyntaxError);
|
|
@@ -11,33 +11,36 @@ const SafeRangeError = createSafeErrorSubclass(RangeError);
|
|
|
11
11
|
const SafeReferenceError = createSafeErrorSubclass(ReferenceError);
|
|
12
12
|
const SafeURIError = createSafeErrorSubclass(URIError);
|
|
13
13
|
// ============================================================================
|
|
14
|
-
//
|
|
14
|
+
// Build Context Function
|
|
15
15
|
// ============================================================================
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* Build a fresh, closure-scoped evaluation context.
|
|
18
18
|
*
|
|
19
|
-
* This function
|
|
20
|
-
*
|
|
19
|
+
* This function creates a context object that contains everything needed to
|
|
20
|
+
* evaluate an expression, without touching any global mutable state
|
|
21
|
+
* (except luxon's Settings.defaultZone which is process-wide).
|
|
21
22
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* 2. Fetch primitives directly ($runIndex, $itemIndex)
|
|
25
|
-
* 3. Create function wrappers for callable properties ($items, etc.)
|
|
26
|
-
* 4. Expose all properties to globalThis for expression access
|
|
23
|
+
* The returned object is used as tournament's `this` context in the
|
|
24
|
+
* evalClosureSync wrapper.
|
|
27
25
|
*
|
|
28
|
-
*
|
|
26
|
+
* @param getValueAtPath - ivm.Reference for fetching values by path
|
|
27
|
+
* @param getArrayElement - ivm.Reference for fetching array elements
|
|
28
|
+
* @param callFunctionAtPath - ivm.Reference for calling functions by path
|
|
29
|
+
* @param timezone - Optional IANA timezone string
|
|
30
|
+
* @returns A context object with all workflow data, proxies, and builtins
|
|
29
31
|
*/
|
|
30
|
-
export function
|
|
32
|
+
export function buildContext(getValueAtPath, getArrayElement, callFunctionAtPath, timezone) {
|
|
31
33
|
if (timezone && !IANAZone.isValidZone(timezone)) {
|
|
32
34
|
throw new Error(`Invalid timezone: "${timezone}"`);
|
|
33
35
|
}
|
|
34
36
|
Settings.defaultZone = timezone ?? 'system';
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
//
|
|
37
|
+
const ctx = {};
|
|
38
|
+
// Callback bundle passed to createDeepLazyProxy so proxies don't touch globalThis
|
|
39
|
+
const callbacks = { getValueAtPath, getArrayElement, callFunctionAtPath };
|
|
40
|
+
// __sanitize must be on the context because PrototypeSanitizer generates:
|
|
41
|
+
// obj[this.__sanitize(expr)] where 'this' is the context (via .call(ctx) wrapping)
|
|
39
42
|
// Use a non-writable property descriptor so override attempts throw instead of silently succeeding.
|
|
40
|
-
Object.defineProperty(
|
|
43
|
+
Object.defineProperty(ctx, '__sanitize', {
|
|
41
44
|
get: () => __sanitize,
|
|
42
45
|
set: () => {
|
|
43
46
|
throw new ExpressionError('Cannot override "__sanitize" due to security concerns');
|
|
@@ -45,125 +48,117 @@ export function resetDataProxies(timezone) {
|
|
|
45
48
|
enumerable: false,
|
|
46
49
|
configurable: false,
|
|
47
50
|
});
|
|
48
|
-
// Verify callbacks are available
|
|
49
|
-
// Note: ivm.Reference may not be typeof 'function', check for existence
|
|
50
|
-
if (!globalThis.__getValueAtPath) {
|
|
51
|
-
throw new Error('__getValueAtPath callback not registered');
|
|
52
|
-
}
|
|
53
51
|
// -------------------------------------------------------------------------
|
|
54
52
|
// Create lazy proxies for complex workflow properties
|
|
55
53
|
// -------------------------------------------------------------------------
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
54
|
+
ctx.$json = createDeepLazyProxy(['$json'], undefined, callbacks);
|
|
55
|
+
ctx.$binary = createDeepLazyProxy(['$binary'], undefined, callbacks);
|
|
56
|
+
ctx.$input = createDeepLazyProxy(['$input'], undefined, callbacks);
|
|
57
|
+
ctx.$node = createDeepLazyProxy(['$node'], undefined, callbacks);
|
|
58
|
+
ctx.$parameter = createDeepLazyProxy(['$parameter'], undefined, callbacks);
|
|
59
|
+
ctx.$workflow = createDeepLazyProxy(['$workflow'], undefined, callbacks);
|
|
60
|
+
ctx.$prevNode = createDeepLazyProxy(['$prevNode'], undefined, callbacks);
|
|
61
|
+
ctx.$data = createDeepLazyProxy(['$data'], undefined, callbacks);
|
|
62
|
+
ctx.$env = createDeepLazyProxy(['$env'], undefined, callbacks);
|
|
63
|
+
ctx.process = createDeepLazyProxy(['process'], undefined, callbacks);
|
|
64
|
+
ctx.$execution = createDeepLazyProxy(['$execution'], undefined, callbacks);
|
|
65
|
+
ctx.$vars = createDeepLazyProxy(['$vars'], undefined, callbacks);
|
|
66
|
+
ctx.$secrets = createDeepLazyProxy(['$secrets'], undefined, callbacks);
|
|
65
67
|
// -------------------------------------------------------------------------
|
|
66
68
|
// Create DateTime values inside the isolate (not lazy-loaded from host,
|
|
67
69
|
// because host-side DateTime objects lose their prototype crossing the
|
|
68
70
|
// boundary). The isolate has its own luxon with the correct timezone
|
|
69
71
|
// already set via Settings.defaultZone above.
|
|
70
72
|
// -------------------------------------------------------------------------
|
|
71
|
-
|
|
72
|
-
|
|
73
|
+
ctx.$now = DateTime.now();
|
|
74
|
+
ctx.$today = DateTime.now().set({ hour: 0, minute: 0, second: 0, millisecond: 0 });
|
|
73
75
|
// -------------------------------------------------------------------------
|
|
74
76
|
// Fetch primitives directly (no lazy loading needed for simple values)
|
|
75
77
|
// -------------------------------------------------------------------------
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
try {
|
|
87
|
-
globalThis.__data.$itemIndex = globalThis.__getValueAtPath.applySync(null, [['$itemIndex']], {
|
|
88
|
-
arguments: { copy: true },
|
|
89
|
-
result: { copy: true },
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
catch (error) {
|
|
93
|
-
// Property doesn't exist - set to undefined
|
|
94
|
-
globalThis.__data.$itemIndex = undefined;
|
|
78
|
+
function fetchPrimitive(key) {
|
|
79
|
+
try {
|
|
80
|
+
return getValueAtPath.applySync(null, [[key]], {
|
|
81
|
+
arguments: { copy: true },
|
|
82
|
+
result: { copy: true },
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
95
88
|
}
|
|
89
|
+
ctx.$runIndex = fetchPrimitive('$runIndex');
|
|
90
|
+
ctx.$itemIndex = fetchPrimitive('$itemIndex');
|
|
91
|
+
ctx.$executionId = fetchPrimitive('$executionId');
|
|
92
|
+
ctx.$resumeWebhookUrl = fetchPrimitive('$resumeWebhookUrl');
|
|
93
|
+
ctx.$webhookId = fetchPrimitive('$webhookId');
|
|
94
|
+
ctx.$nodeId = fetchPrimitive('$nodeId');
|
|
95
|
+
ctx.$nodeVersion = fetchPrimitive('$nodeVersion');
|
|
96
96
|
// -------------------------------------------------------------------------
|
|
97
|
-
// Expose workflow data to globalThis for expression access
|
|
98
|
-
// -------------------------------------------------------------------------
|
|
99
|
-
globalThis.$json = globalThis.__data.$json;
|
|
100
|
-
globalThis.$binary = globalThis.__data.$binary;
|
|
101
|
-
globalThis.$input = globalThis.__data.$input;
|
|
102
|
-
globalThis.$node = globalThis.__data.$node;
|
|
103
|
-
globalThis.$parameter = globalThis.__data.$parameter;
|
|
104
|
-
globalThis.$workflow = globalThis.__data.$workflow;
|
|
105
|
-
globalThis.$prevNode = globalThis.__data.$prevNode;
|
|
106
|
-
globalThis.$runIndex = globalThis.__data.$runIndex;
|
|
107
|
-
globalThis.$itemIndex = globalThis.__data.$itemIndex;
|
|
108
|
-
globalThis.$data = globalThis.__data.$data;
|
|
109
|
-
globalThis.$env = globalThis.__data.$env;
|
|
110
|
-
globalThis.$now = globalThis.__data.$now;
|
|
111
|
-
globalThis.$today = globalThis.__data.$today;
|
|
112
97
|
// Expose standalone functions (min, max, average, numberList, zip, $ifEmpty, etc.)
|
|
113
|
-
|
|
98
|
+
// -------------------------------------------------------------------------
|
|
99
|
+
Object.assign(ctx, extendedFunctions);
|
|
114
100
|
// -------------------------------------------------------------------------
|
|
115
101
|
// Handle function properties (check if value is function metadata)
|
|
116
102
|
// -------------------------------------------------------------------------
|
|
117
|
-
//
|
|
118
|
-
|
|
103
|
+
// Probe a host-side property: if it is a function, create an isolate
|
|
104
|
+
// wrapper that forwards calls via callFunctionAtPath; otherwise copy
|
|
105
|
+
// the value as-is.
|
|
106
|
+
function exposeHostFunction(name) {
|
|
107
|
+
if (!callFunctionAtPath)
|
|
108
|
+
return;
|
|
119
109
|
try {
|
|
120
|
-
const
|
|
110
|
+
const value = getValueAtPath.applySync(null, [[name]], {
|
|
121
111
|
arguments: { copy: true },
|
|
122
112
|
result: { copy: true },
|
|
123
113
|
});
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
return globalThis.__callFunctionAtPath.applySync(null, [['$items'], ...args], {
|
|
114
|
+
if (value && typeof value === 'object' && value.__isFunction) {
|
|
115
|
+
ctx[name] = function (...args) {
|
|
116
|
+
const result = callFunctionAtPath.applySync(null, [[name], ...args], {
|
|
128
117
|
arguments: { copy: true },
|
|
129
118
|
result: { copy: true },
|
|
130
119
|
});
|
|
120
|
+
throwIfErrorSentinel(result);
|
|
121
|
+
return result;
|
|
131
122
|
};
|
|
132
|
-
globalThis.__data.$items = globalThis.$items;
|
|
133
123
|
}
|
|
134
124
|
else {
|
|
135
|
-
|
|
136
|
-
globalThis.$items = itemsValue;
|
|
137
|
-
globalThis.__data.$items = itemsValue;
|
|
125
|
+
ctx[name] = value;
|
|
138
126
|
}
|
|
139
127
|
}
|
|
140
|
-
catch
|
|
141
|
-
|
|
142
|
-
globalThis.$items = undefined;
|
|
143
|
-
globalThis.__data.$items = undefined;
|
|
128
|
+
catch {
|
|
129
|
+
ctx[name] = undefined;
|
|
144
130
|
}
|
|
145
131
|
}
|
|
132
|
+
exposeHostFunction('$items');
|
|
133
|
+
exposeHostFunction('$fromAI');
|
|
134
|
+
exposeHostFunction('$fromai');
|
|
135
|
+
exposeHostFunction('$fromAi');
|
|
146
136
|
// -------------------------------------------------------------------------
|
|
147
|
-
// Expose globals on
|
|
148
|
-
// pattern resolves them correctly (tournament checks
|
|
137
|
+
// Expose globals on ctx so tournament's "x in this ? this.x : global.x"
|
|
138
|
+
// pattern resolves them correctly (tournament checks ctx before global)
|
|
149
139
|
// -------------------------------------------------------------------------
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
// Expose extend/extendOptional on
|
|
154
|
-
// pattern resolves them correctly when the VM checks
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
// Wire builtins so tournament's VariablePolyfill resolves them from
|
|
158
|
-
initializeBuiltins(
|
|
140
|
+
ctx.DateTime = globalThis.DateTime;
|
|
141
|
+
ctx.Duration = globalThis.Duration;
|
|
142
|
+
ctx.Interval = globalThis.Interval;
|
|
143
|
+
// Expose extend/extendOptional on ctx so tournament's "x in this ? this.x : global.x"
|
|
144
|
+
// pattern resolves them correctly when the VM checks ctx first
|
|
145
|
+
ctx.extend = extend;
|
|
146
|
+
ctx.extendOptional = extendOptional;
|
|
147
|
+
// Wire builtins so tournament's VariablePolyfill resolves them from ctx
|
|
148
|
+
initializeBuiltins(ctx);
|
|
159
149
|
// $item(itemIndex) returns a sub-proxy for the specified item (legacy syntax)
|
|
160
|
-
|
|
150
|
+
ctx.$item = function (itemIndex) {
|
|
161
151
|
const indexStr = String(itemIndex);
|
|
162
152
|
return {
|
|
163
|
-
$json: createDeepLazyProxy(['$item', indexStr, '$json']),
|
|
164
|
-
$binary: createDeepLazyProxy(['$item', indexStr, '$binary']),
|
|
153
|
+
$json: createDeepLazyProxy(['$item', indexStr, '$json'], undefined, callbacks),
|
|
154
|
+
$binary: createDeepLazyProxy(['$item', indexStr, '$binary'], undefined, callbacks),
|
|
165
155
|
};
|
|
166
156
|
};
|
|
157
|
+
// $() function for accessing other nodes
|
|
158
|
+
ctx.$ = function (nodeName) {
|
|
159
|
+
return createDeepLazyProxy(['$', nodeName], undefined, callbacks);
|
|
160
|
+
};
|
|
161
|
+
return ctx;
|
|
167
162
|
}
|
|
168
163
|
// Matches initializeGlobalContext() lines 262-318 in packages/workflow/src/expression.ts
|
|
169
164
|
const DENYLISTED_GLOBALS = [
|
|
@@ -204,10 +199,10 @@ const DENYLISTED_GLOBALS = [
|
|
|
204
199
|
'unescape',
|
|
205
200
|
];
|
|
206
201
|
/**
|
|
207
|
-
* Wire builtins onto
|
|
202
|
+
* Wire builtins onto a context object so tournament's VariablePolyfill resolves them.
|
|
208
203
|
*
|
|
209
204
|
* Tournament transforms `Object` → `("Object" in this ? this : window).Object`.
|
|
210
|
-
* `this` =
|
|
205
|
+
* `this` = ctx. Without these entries on ctx, builtins fall through to
|
|
211
206
|
* `window` which doesn't exist in the isolate, causing a ReferenceError.
|
|
212
207
|
*
|
|
213
208
|
* Mirrors Expression.initializeGlobalContext() in packages/workflow/src/expression.ts.
|
|
@@ -275,4 +270,4 @@ function initializeBuiltins(data) {
|
|
|
275
270
|
data.Boolean = Boolean;
|
|
276
271
|
data.Symbol = Symbol;
|
|
277
272
|
}
|
|
278
|
-
//# sourceMappingURL=
|
|
273
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/runtime/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,20 +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
13
|
}
|
|
32
14
|
}
|
|
33
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"}
|
|
@@ -2,7 +2,7 @@ import { DateTime, Duration, Interval } from 'luxon';
|
|
|
2
2
|
import { extend, extendOptional } from '../extensions/extend';
|
|
3
3
|
import { SafeObject, SafeError, ExpressionError } from './safe-globals';
|
|
4
4
|
import { createDeepLazyProxy } from './lazy-proxy';
|
|
5
|
-
import {
|
|
5
|
+
import { buildContext } from './context';
|
|
6
6
|
import { __prepareForTransfer } from './serialize';
|
|
7
7
|
// ============================================================================
|
|
8
8
|
// Library Setup
|
|
@@ -20,8 +20,6 @@ globalThis.SafeObject = SafeObject;
|
|
|
20
20
|
globalThis.SafeError = SafeError;
|
|
21
21
|
globalThis.ExpressionError = ExpressionError;
|
|
22
22
|
globalThis.createDeepLazyProxy = createDeepLazyProxy;
|
|
23
|
-
globalThis.
|
|
23
|
+
globalThis.buildContext = buildContext;
|
|
24
24
|
globalThis.__prepareForTransfer = __prepareForTransfer;
|
|
25
|
-
// Initialize empty __data object (populated by resetDataProxies before each evaluation)
|
|
26
|
-
globalThis.__data = {};
|
|
27
25
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AA8BnD,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,gEAAgE;AAChE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B,UAAU,CAAC,cAAc,GAAG,cAAc,CAAC;AAC3C,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/B,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/B,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAE/B,+EAA+E;AAC/E,gDAAgD;AAChD,+EAA+E;AAE/E,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;AACnC,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;AAChC,UAAkB,CAAC,eAAe,GAAG,eAAe,CAAC;AAEtD,UAAU,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;AACrD,UAAU,CAAC,YAAY,GAAG,YAAY,CAAC;AACvC,UAAU,CAAC,oBAAoB,GAAG,oBAAoB,CAAC"}
|
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serialized error sentinel returned by host-side bridge callbacks.
|
|
3
|
+
* When a callback throws, the bridge catches the error and returns this
|
|
4
|
+
* sentinel instead of letting it cross the isolate boundary (which strips
|
|
5
|
+
* custom class identity and properties).
|
|
6
|
+
*/
|
|
7
|
+
export interface ErrorSentinel {
|
|
8
|
+
__isError: true;
|
|
9
|
+
name: string;
|
|
10
|
+
message: string;
|
|
11
|
+
stack?: string;
|
|
12
|
+
extra?: Record<string, unknown>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* If `value` is an error sentinel from a host-side callback, throw it
|
|
16
|
+
* directly. The isolate's outer try-catch will detect __isError and
|
|
17
|
+
* return it as the result. Error reconstruction happens on the host only.
|
|
18
|
+
*/
|
|
19
|
+
export declare function throwIfErrorSentinel(value: unknown): void;
|
|
1
20
|
/** Returns true if `obj` is a deep lazy proxy created by createDeepLazyProxy. */
|
|
2
21
|
export declare function isLazyProxy(obj: unknown): boolean;
|
|
3
22
|
/** Returns the basePath the proxy was created with, or undefined if not a proxy. */
|
|
@@ -9,14 +28,20 @@ export declare function getProxyPath(obj: object): string[] | undefined;
|
|
|
9
28
|
* the isolate boundary using metadata-driven callbacks.
|
|
10
29
|
*
|
|
11
30
|
* Pattern:
|
|
12
|
-
* 1. When property accessed: Call
|
|
31
|
+
* 1. When property accessed: Call getValueAtPath([path]) to get metadata
|
|
13
32
|
* 2. Metadata indicates type: primitive, object, array, or function
|
|
14
33
|
* 3. For objects/arrays: Create nested proxy for lazy loading
|
|
15
|
-
* 4. For functions: Create wrapper that calls
|
|
34
|
+
* 4. For functions: Create wrapper that calls callFunctionAtPath
|
|
16
35
|
* 5. Cache all fetched values in target to avoid repeated callbacks
|
|
17
36
|
*
|
|
18
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
|
|
19
40
|
* @returns Proxy object with lazy loading behavior
|
|
20
41
|
*/
|
|
21
|
-
export declare function createDeepLazyProxy(basePath?: string[]
|
|
42
|
+
export declare function createDeepLazyProxy(basePath?: string[], knownKeys?: string[], callbacks?: {
|
|
43
|
+
getValueAtPath: any;
|
|
44
|
+
getArrayElement: any;
|
|
45
|
+
callFunctionAtPath: any;
|
|
46
|
+
}): any;
|
|
22
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,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"}
|
|
@@ -8,6 +8,26 @@
|
|
|
8
8
|
// expression code. Avoids shadowing user data keys like __isProxy / __path.
|
|
9
9
|
// ---------------------------------------------------------------------------
|
|
10
10
|
const proxyPaths = new WeakMap();
|
|
11
|
+
function isObjectMetadata(value) {
|
|
12
|
+
return (typeof value === 'object' &&
|
|
13
|
+
value !== null &&
|
|
14
|
+
'__isObject' in value &&
|
|
15
|
+
value.__isObject === true);
|
|
16
|
+
}
|
|
17
|
+
function isErrorSentinel(value) {
|
|
18
|
+
return (typeof value === 'object' && value !== null && '__isError' in value && value.__isError === true);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* If `value` is an error sentinel from a host-side callback, throw it
|
|
22
|
+
* directly. The isolate's outer try-catch will detect __isError and
|
|
23
|
+
* return it as the result. Error reconstruction happens on the host only.
|
|
24
|
+
*/
|
|
25
|
+
export function throwIfErrorSentinel(value) {
|
|
26
|
+
if (isErrorSentinel(value)) {
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-throw-literal -- sentinel is reconstructed on the host
|
|
28
|
+
throw value;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
11
31
|
/** Returns true if `obj` is a deep lazy proxy created by createDeepLazyProxy. */
|
|
12
32
|
export function isLazyProxy(obj) {
|
|
13
33
|
return typeof obj === 'object' && obj !== null && proxyPaths.has(obj);
|
|
@@ -23,17 +43,53 @@ export function getProxyPath(obj) {
|
|
|
23
43
|
* the isolate boundary using metadata-driven callbacks.
|
|
24
44
|
*
|
|
25
45
|
* Pattern:
|
|
26
|
-
* 1. When property accessed: Call
|
|
46
|
+
* 1. When property accessed: Call getValueAtPath([path]) to get metadata
|
|
27
47
|
* 2. Metadata indicates type: primitive, object, array, or function
|
|
28
48
|
* 3. For objects/arrays: Create nested proxy for lazy loading
|
|
29
|
-
* 4. For functions: Create wrapper that calls
|
|
49
|
+
* 4. For functions: Create wrapper that calls callFunctionAtPath
|
|
30
50
|
* 5. Cache all fetched values in target to avoid repeated callbacks
|
|
31
51
|
*
|
|
32
52
|
* @param basePath - Current path in object tree (e.g., ['$json', 'user'])
|
|
53
|
+
* @param knownKeys - Optional pre-known keys for the proxy
|
|
54
|
+
* @param callbacks - ivm.Reference callbacks for cross-isolate communication
|
|
33
55
|
* @returns Proxy object with lazy loading behavior
|
|
34
56
|
*/
|
|
35
|
-
export function createDeepLazyProxy(basePath = []) {
|
|
57
|
+
export function createDeepLazyProxy(basePath = [], knownKeys, callbacks) {
|
|
58
|
+
if (!callbacks) {
|
|
59
|
+
throw new Error('createDeepLazyProxy requires callbacks parameter');
|
|
60
|
+
}
|
|
61
|
+
const { getValueAtPath, getArrayElement, callFunctionAtPath } = callbacks;
|
|
62
|
+
// Cache for keys fetched from the bridge (root proxies without knownKeys).
|
|
63
|
+
// Shared between ownKeys and getOwnPropertyDescriptor for consistency.
|
|
64
|
+
let fetchedKeys;
|
|
65
|
+
function resolveKeys() {
|
|
66
|
+
if (knownKeys)
|
|
67
|
+
return knownKeys;
|
|
68
|
+
if (fetchedKeys)
|
|
69
|
+
return fetchedKeys;
|
|
70
|
+
const value = getValueAtPath.applySync(null, [basePath], {
|
|
71
|
+
arguments: { copy: true },
|
|
72
|
+
result: { copy: true },
|
|
73
|
+
});
|
|
74
|
+
throwIfErrorSentinel(value);
|
|
75
|
+
if (isObjectMetadata(value)) {
|
|
76
|
+
fetchedKeys = value.__keys;
|
|
77
|
+
return fetchedKeys;
|
|
78
|
+
}
|
|
79
|
+
return [];
|
|
80
|
+
}
|
|
36
81
|
const proxy = new Proxy({}, {
|
|
82
|
+
ownKeys() {
|
|
83
|
+
return resolveKeys();
|
|
84
|
+
},
|
|
85
|
+
getOwnPropertyDescriptor(_target, prop) {
|
|
86
|
+
if (typeof prop === 'symbol')
|
|
87
|
+
return undefined;
|
|
88
|
+
if (resolveKeys().includes(prop)) {
|
|
89
|
+
return { configurable: true, enumerable: true, writable: false };
|
|
90
|
+
}
|
|
91
|
+
return undefined;
|
|
92
|
+
},
|
|
37
93
|
get(target, prop) {
|
|
38
94
|
// Handle Symbol properties - return undefined
|
|
39
95
|
// Symbols like Symbol.toStringTag are accessed internally
|
|
@@ -59,9 +115,9 @@ export function createDeepLazyProxy(basePath = []) {
|
|
|
59
115
|
}
|
|
60
116
|
// Build path for this property
|
|
61
117
|
const path = [...basePath, prop];
|
|
62
|
-
// Call back to
|
|
63
|
-
// Note:
|
|
64
|
-
const value =
|
|
118
|
+
// Call back to host to get metadata/value
|
|
119
|
+
// Note: getValueAtPath is an ivm.Reference passed via callbacks
|
|
120
|
+
const value = getValueAtPath.applySync(null, [path], {
|
|
65
121
|
arguments: { copy: true },
|
|
66
122
|
result: { copy: true },
|
|
67
123
|
});
|
|
@@ -70,14 +126,20 @@ export function createDeepLazyProxy(basePath = []) {
|
|
|
70
126
|
target[prop] = value;
|
|
71
127
|
return value;
|
|
72
128
|
}
|
|
129
|
+
// Handle errors serialized by host-side callbacks — reconstruct and throw
|
|
130
|
+
// so the isolate's outer try-catch can serialize them back via __reportError
|
|
131
|
+
throwIfErrorSentinel(value);
|
|
73
132
|
// Handle functions - metadata: { __isFunction: true, __name: string }
|
|
74
133
|
if (value && typeof value === 'object' && value.__isFunction) {
|
|
75
134
|
// Create function wrapper that calls back to parent
|
|
76
135
|
target[prop] = function (...args) {
|
|
77
|
-
|
|
136
|
+
const result = callFunctionAtPath.applySync(null, [path, ...args], {
|
|
78
137
|
arguments: { copy: true },
|
|
79
138
|
result: { copy: true },
|
|
80
139
|
});
|
|
140
|
+
// Check if the host-side function threw — reconstruct and throw
|
|
141
|
+
throwIfErrorSentinel(result);
|
|
142
|
+
return result;
|
|
81
143
|
};
|
|
82
144
|
return target[prop];
|
|
83
145
|
}
|
|
@@ -108,19 +170,21 @@ export function createDeepLazyProxy(basePath = []) {
|
|
|
108
170
|
// Check cache
|
|
109
171
|
if (!(arrProp in arrTarget)) {
|
|
110
172
|
// Fetch element from parent
|
|
111
|
-
const element =
|
|
173
|
+
const element = getArrayElement.applySync(null, [path, index], {
|
|
112
174
|
arguments: { copy: true },
|
|
113
175
|
result: { copy: true },
|
|
114
176
|
});
|
|
177
|
+
throwIfErrorSentinel(element);
|
|
115
178
|
// Handle element metadata (arrays and objects need proxies)
|
|
116
179
|
if (element && typeof element === 'object' && element.__isArray) {
|
|
117
180
|
const elementPath = [...path, String(index)];
|
|
118
|
-
arrTarget[arrProp] = createDeepLazyProxy(elementPath);
|
|
181
|
+
arrTarget[arrProp] = createDeepLazyProxy(elementPath, undefined, callbacks);
|
|
119
182
|
}
|
|
120
|
-
else if (element
|
|
121
|
-
// Object metadata: create nested proxy
|
|
183
|
+
else if (isObjectMetadata(element)) {
|
|
184
|
+
// Object metadata: create nested proxy, passing known keys to
|
|
185
|
+
// avoid an extra __getValueAtPath round-trip for ownKeys/Object.keys()
|
|
122
186
|
const elementPath = [...path, String(index)];
|
|
123
|
-
arrTarget[arrProp] = createDeepLazyProxy(elementPath);
|
|
187
|
+
arrTarget[arrProp] = createDeepLazyProxy(elementPath, element.__keys, callbacks);
|
|
124
188
|
}
|
|
125
189
|
else {
|
|
126
190
|
// Primitive element
|
|
@@ -138,9 +202,9 @@ export function createDeepLazyProxy(basePath = []) {
|
|
|
138
202
|
return target[prop];
|
|
139
203
|
}
|
|
140
204
|
// Handle objects - metadata: { __isObject: true, __keys: string[] }
|
|
141
|
-
if (value
|
|
142
|
-
// Create nested proxy for recursive lazy loading
|
|
143
|
-
target[prop] = createDeepLazyProxy(path);
|
|
205
|
+
if (isObjectMetadata(value)) {
|
|
206
|
+
// Create nested proxy for recursive lazy loading, passing known keys
|
|
207
|
+
target[prop] = createDeepLazyProxy(path, value.__keys, callbacks);
|
|
144
208
|
return target[prop];
|
|
145
209
|
}
|
|
146
210
|
// Primitive value - cache and return
|
|
@@ -158,10 +222,13 @@ export function createDeepLazyProxy(basePath = []) {
|
|
|
158
222
|
}
|
|
159
223
|
// Build path and check existence via callback
|
|
160
224
|
const path = [...basePath, prop];
|
|
161
|
-
const value =
|
|
225
|
+
const value = getValueAtPath.applySync(null, [path], {
|
|
162
226
|
arguments: { copy: true },
|
|
163
227
|
result: { copy: true },
|
|
164
228
|
});
|
|
229
|
+
// Handle errors serialized by host-side callbacks — reconstruct and throw
|
|
230
|
+
// so the isolate's outer try-catch can serialize them back via __reportError
|
|
231
|
+
throwIfErrorSentinel(value);
|
|
165
232
|
// Property exists if value is not undefined
|
|
166
233
|
// Note: null values mean property exists but is null
|
|
167
234
|
return value !== undefined;
|
|
@@ -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;AAEzF,8EAA8E;AAC9E,4EAA4E;AAC5E,4EAA4E;AAC5E,8EAA8E;AAC9E,MAAM,UAAU,GAAG,IAAI,OAAO,EAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"lazy-proxy.js","sourceRoot":"","sources":["../../../src/runtime/lazy-proxy.ts"],"names":[],"mappings":"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"}
|