@n8n/expression-runtime 0.21.0 → 0.23.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/cjs/bridge/bridge-messages.d.ts +8 -8
- package/dist/cjs/bridge/bridge-messages.js +234 -244
- package/dist/cjs/bridge/bridge-messages.js.map +1 -1
- package/dist/cjs/bridge/isolated-vm-bridge.d.ts.map +1 -1
- package/dist/cjs/bridge/isolated-vm-bridge.js +633 -643
- package/dist/cjs/bridge/isolated-vm-bridge.js.map +1 -1
- package/dist/cjs/build.tsbuildinfo +1 -1
- package/dist/cjs/evaluator/error-classification.js +15 -25
- package/dist/cjs/evaluator/error-classification.js.map +1 -1
- package/dist/cjs/evaluator/expression-evaluator.d.ts +7 -1
- package/dist/cjs/evaluator/expression-evaluator.d.ts.map +1 -1
- package/dist/cjs/evaluator/expression-evaluator.js +152 -155
- package/dist/cjs/evaluator/expression-evaluator.js.map +1 -1
- package/dist/cjs/evaluator/lru-cache.d.ts.map +1 -1
- package/dist/cjs/evaluator/lru-cache.js +35 -45
- package/dist/cjs/evaluator/lru-cache.js.map +1 -1
- package/dist/cjs/extensions/array-extensions.js +589 -599
- package/dist/cjs/extensions/array-extensions.js.map +1 -1
- package/dist/cjs/extensions/boolean-extensions.js +38 -48
- package/dist/cjs/extensions/boolean-extensions.js.map +1 -1
- package/dist/cjs/extensions/date-extensions.js +500 -510
- package/dist/cjs/extensions/date-extensions.js.map +1 -1
- package/dist/cjs/extensions/expression-extension-error.d.ts.map +1 -1
- package/dist/cjs/extensions/expression-extension-error.js +12 -22
- package/dist/cjs/extensions/expression-extension-error.js.map +1 -1
- package/dist/cjs/extensions/extend.js +162 -172
- package/dist/cjs/extensions/extend.js.map +1 -1
- package/dist/cjs/extensions/extensions.js +2 -12
- package/dist/cjs/extensions/function-extensions.d.ts +10 -18
- package/dist/cjs/extensions/function-extensions.d.ts.map +1 -1
- package/dist/cjs/extensions/function-extensions.js +78 -88
- package/dist/cjs/extensions/function-extensions.js.map +1 -1
- package/dist/cjs/extensions/number-extensions.js +225 -235
- package/dist/cjs/extensions/number-extensions.js.map +1 -1
- package/dist/cjs/extensions/object-extensions.js +286 -296
- package/dist/cjs/extensions/object-extensions.js.map +1 -1
- package/dist/cjs/extensions/string-extensions.d.ts +1 -1
- package/dist/cjs/extensions/string-extensions.d.ts.map +1 -1
- package/dist/cjs/extensions/string-extensions.js +758 -768
- package/dist/cjs/extensions/string-extensions.js.map +1 -1
- package/dist/cjs/extensions/utils.d.ts.map +1 -1
- package/dist/cjs/extensions/utils.js +28 -38
- package/dist/cjs/extensions/utils.js.map +1 -1
- package/dist/cjs/index.js +32 -42
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/observability/metrics.d.ts +27 -27
- package/dist/cjs/observability/metrics.d.ts.map +1 -1
- package/dist/cjs/observability/metrics.js +59 -69
- package/dist/cjs/observability/metrics.js.map +1 -1
- package/dist/cjs/observability/noop-provider.js +28 -38
- package/dist/cjs/observability/noop-provider.js.map +1 -1
- package/dist/cjs/pool/idle-scaling-pool.d.ts.map +1 -1
- package/dist/cjs/pool/idle-scaling-pool.js +134 -144
- package/dist/cjs/pool/idle-scaling-pool.js.map +1 -1
- package/dist/cjs/pool/isolate-pool.d.ts.map +1 -1
- package/dist/cjs/pool/isolate-pool.js +101 -111
- package/dist/cjs/pool/isolate-pool.js.map +1 -1
- package/dist/cjs/runtime/context.js +418 -428
- package/dist/cjs/runtime/context.js.map +1 -1
- package/dist/cjs/runtime/index.js +26 -36
- package/dist/cjs/runtime/index.js.map +1 -1
- package/dist/cjs/runtime/jmespath.js +72 -82
- package/dist/cjs/runtime/jmespath.js.map +1 -1
- package/dist/cjs/runtime/lazy-proxy.js +238 -248
- package/dist/cjs/runtime/lazy-proxy.js.map +1 -1
- package/dist/cjs/runtime/safe-globals.d.ts.map +1 -1
- package/dist/cjs/runtime/safe-globals.js +134 -144
- package/dist/cjs/runtime/safe-globals.js.map +1 -1
- package/dist/cjs/runtime/serialize.js +54 -64
- package/dist/cjs/runtime/serialize.js.map +1 -1
- package/dist/cjs/runtime/utils.js +20 -30
- package/dist/cjs/runtime/utils.js.map +1 -1
- package/dist/cjs/types/bridge.js +15 -25
- package/dist/cjs/types/bridge.js.map +1 -1
- package/dist/cjs/types/evaluator.d.ts +5 -1
- package/dist/cjs/types/evaluator.d.ts.map +1 -1
- package/dist/cjs/types/evaluator.js +35 -45
- package/dist/cjs/types/evaluator.js.map +1 -1
- package/dist/cjs/types/index.js +14 -24
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/runtime.d.ts.map +1 -1
- package/dist/cjs/types/runtime.js +27 -37
- package/dist/cjs/types/runtime.js.map +1 -1
- package/dist/esm/bridge/bridge-messages.d.ts +8 -8
- package/dist/esm/bridge/isolated-vm-bridge.d.ts.map +1 -1
- 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 +7 -1
- package/dist/esm/evaluator/expression-evaluator.d.ts.map +1 -1
- package/dist/esm/evaluator/expression-evaluator.js +8 -1
- package/dist/esm/evaluator/expression-evaluator.js.map +1 -1
- package/dist/esm/evaluator/lru-cache.d.ts.map +1 -1
- package/dist/esm/evaluator/lru-cache.js.map +1 -1
- package/dist/esm/extensions/expression-extension-error.d.ts.map +1 -1
- package/dist/esm/extensions/function-extensions.d.ts +10 -18
- package/dist/esm/extensions/function-extensions.d.ts.map +1 -1
- package/dist/esm/extensions/number-extensions.js.map +1 -1
- package/dist/esm/extensions/string-extensions.d.ts +1 -1
- package/dist/esm/extensions/string-extensions.d.ts.map +1 -1
- package/dist/esm/extensions/string-extensions.js.map +1 -1
- package/dist/esm/extensions/utils.d.ts.map +1 -1
- package/dist/esm/observability/metrics.d.ts +27 -27
- package/dist/esm/observability/metrics.d.ts.map +1 -1
- package/dist/esm/pool/idle-scaling-pool.d.ts.map +1 -1
- package/dist/esm/pool/idle-scaling-pool.js.map +1 -1
- package/dist/esm/pool/isolate-pool.d.ts.map +1 -1
- package/dist/esm/pool/isolate-pool.js.map +1 -1
- package/dist/esm/runtime/lazy-proxy.js.map +1 -1
- package/dist/esm/runtime/safe-globals.d.ts.map +1 -1
- package/dist/esm/types/evaluator.d.ts +5 -1
- package/dist/esm/types/evaluator.d.ts.map +1 -1
- package/dist/esm/types/evaluator.js.map +1 -1
- package/dist/esm/types/runtime.d.ts.map +1 -1
- package/dist/esm/types/runtime.js.map +1 -1
- package/package.json +7 -6
|
@@ -1,270 +1,260 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
// ============================================================================
|
|
2
3
|
// Deep Lazy Proxy System
|
|
3
4
|
// ============================================================================
|
|
4
5
|
// For more information about Proxies see
|
|
5
6
|
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
|
|
6
|
-
(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.isObjectMetadata = isObjectMetadata;
|
|
9
|
+
exports.isArrayMetadata = isArrayMetadata;
|
|
10
|
+
exports.throwIfErrorSentinel = throwIfErrorSentinel;
|
|
11
|
+
exports.isLazyProxy = isLazyProxy;
|
|
12
|
+
exports.getProxyPath = getProxyPath;
|
|
13
|
+
exports.createDeepLazyProxy = createDeepLazyProxy;
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Proxy registry — used only for testing/introspection, not accessible from
|
|
16
|
+
// expression code. Avoids shadowing user data keys like __isProxy / __path.
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
const proxyPaths = new WeakMap();
|
|
19
|
+
function isObjectMetadata(value) {
|
|
20
|
+
return (typeof value === 'object' &&
|
|
21
|
+
value !== null &&
|
|
22
|
+
'__isObject' in value &&
|
|
23
|
+
value.__isObject === true);
|
|
24
|
+
}
|
|
25
|
+
function isArrayMetadata(value) {
|
|
26
|
+
return (typeof value === 'object' && value !== null && '__isArray' in value && value.__isArray === true);
|
|
27
|
+
}
|
|
28
|
+
function isErrorSentinel(value) {
|
|
29
|
+
return (typeof value === 'object' && value !== null && '__isError' in value && value.__isError === true);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* If `value` is an error sentinel from a host-side callback, throw it
|
|
33
|
+
* directly. The isolate's outer try-catch will detect __isError and
|
|
34
|
+
* return it as the result. Error reconstruction happens on the host only.
|
|
35
|
+
*/
|
|
36
|
+
function throwIfErrorSentinel(value) {
|
|
37
|
+
if (isErrorSentinel(value)) {
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/no-throw-literal -- sentinel is reconstructed on the host
|
|
39
|
+
throw value;
|
|
10
40
|
}
|
|
11
|
-
|
|
12
|
-
|
|
41
|
+
}
|
|
42
|
+
/** Returns true if `obj` is a deep lazy proxy created by createDeepLazyProxy. */
|
|
43
|
+
function isLazyProxy(obj) {
|
|
44
|
+
return typeof obj === 'object' && obj !== null && proxyPaths.has(obj);
|
|
45
|
+
}
|
|
46
|
+
/** Returns the basePath the proxy was created with, or undefined if not a proxy. */
|
|
47
|
+
function getProxyPath(obj) {
|
|
48
|
+
return proxyPaths.get(obj);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Creates a deep lazy-loading proxy for workflow data.
|
|
52
|
+
*
|
|
53
|
+
* This proxy system enables on-demand loading of nested properties across
|
|
54
|
+
* the isolate boundary using metadata-driven callbacks.
|
|
55
|
+
*
|
|
56
|
+
* Pattern:
|
|
57
|
+
* 1. When property accessed: Call getValueAtPath([path]) to get metadata
|
|
58
|
+
* 2. Metadata indicates type: primitive, object, or array
|
|
59
|
+
* 3. For objects/arrays: Create nested proxy (shape-matched) for lazy loading
|
|
60
|
+
* 4. Cache all fetched values in target to avoid repeated callbacks
|
|
61
|
+
*
|
|
62
|
+
* Callable host bindings (`$('Foo').first()`, `$items()`, etc.) do not flow
|
|
63
|
+
* through this proxy — they are wired as in-isolate stubs on `target` that
|
|
64
|
+
* route through the typed-RPC dispatcher (`callHost`).
|
|
65
|
+
*
|
|
66
|
+
* @param basePath - Current path in object tree (e.g., ['$json', 'user'])
|
|
67
|
+
* @param meta - Optional shape descriptor (object/array + known keys/length)
|
|
68
|
+
* @param callbacks - ivm.Reference callbacks for cross-isolate communication
|
|
69
|
+
* @returns Proxy object with lazy loading behavior
|
|
70
|
+
*/
|
|
71
|
+
function createDeepLazyProxy(basePath = [], meta, callbacks) {
|
|
72
|
+
if (!callbacks) {
|
|
73
|
+
throw new Error('createDeepLazyProxy requires callbacks parameter');
|
|
13
74
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
value.
|
|
33
|
-
|
|
34
|
-
function isArrayMetadata(value) {
|
|
35
|
-
return (typeof value === 'object' && value !== null && '__isArray' in value && value.__isArray === true);
|
|
36
|
-
}
|
|
37
|
-
function isErrorSentinel(value) {
|
|
38
|
-
return (typeof value === 'object' && value !== null && '__isError' in value && value.__isError === true);
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* If `value` is an error sentinel from a host-side callback, throw it
|
|
42
|
-
* directly. The isolate's outer try-catch will detect __isError and
|
|
43
|
-
* return it as the result. Error reconstruction happens on the host only.
|
|
44
|
-
*/
|
|
45
|
-
function throwIfErrorSentinel(value) {
|
|
46
|
-
if (isErrorSentinel(value)) {
|
|
47
|
-
// eslint-disable-next-line @typescript-eslint/no-throw-literal -- sentinel is reconstructed on the host
|
|
48
|
-
throw value;
|
|
75
|
+
const { getValueAtPath, getArrayElement } = callbacks;
|
|
76
|
+
const isArray = meta?.kind === 'array';
|
|
77
|
+
const arrayLength = isArray ? meta.length : 0;
|
|
78
|
+
const objectKeys = meta?.kind === 'object' ? meta.keys : undefined;
|
|
79
|
+
// Cache for keys fetched from the bridge (root object proxies without known keys).
|
|
80
|
+
// Shared between ownKeys and getOwnPropertyDescriptor for consistency.
|
|
81
|
+
let fetchedKeys;
|
|
82
|
+
function resolveObjectKeys() {
|
|
83
|
+
if (objectKeys)
|
|
84
|
+
return objectKeys;
|
|
85
|
+
if (fetchedKeys)
|
|
86
|
+
return fetchedKeys;
|
|
87
|
+
const value = getValueAtPath.applySync(null, [basePath], {
|
|
88
|
+
arguments: { copy: true },
|
|
89
|
+
result: { copy: true },
|
|
90
|
+
});
|
|
91
|
+
throwIfErrorSentinel(value);
|
|
92
|
+
if (isObjectMetadata(value)) {
|
|
93
|
+
fetchedKeys = value.__keys;
|
|
94
|
+
return fetchedKeys;
|
|
49
95
|
}
|
|
96
|
+
return [];
|
|
50
97
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
98
|
+
function isInArrayBounds(prop) {
|
|
99
|
+
const idx = Number(prop);
|
|
100
|
+
if (!Number.isInteger(idx) || idx < 0 || idx >= arrayLength)
|
|
101
|
+
return undefined;
|
|
102
|
+
if (String(idx) !== prop)
|
|
103
|
+
return undefined; // reject '00', '1.0', etc.
|
|
104
|
+
return idx;
|
|
54
105
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
*
|
|
65
|
-
* Pattern:
|
|
66
|
-
* 1. When property accessed: Call getValueAtPath([path]) to get metadata
|
|
67
|
-
* 2. Metadata indicates type: primitive, object, or array
|
|
68
|
-
* 3. For objects/arrays: Create nested proxy (shape-matched) for lazy loading
|
|
69
|
-
* 4. Cache all fetched values in target to avoid repeated callbacks
|
|
70
|
-
*
|
|
71
|
-
* Callable host bindings (`$('Foo').first()`, `$items()`, etc.) do not flow
|
|
72
|
-
* through this proxy — they are wired as in-isolate stubs on `target` that
|
|
73
|
-
* route through the typed-RPC dispatcher (`callHost`).
|
|
74
|
-
*
|
|
75
|
-
* @param basePath - Current path in object tree (e.g., ['$json', 'user'])
|
|
76
|
-
* @param meta - Optional shape descriptor (object/array + known keys/length)
|
|
77
|
-
* @param callbacks - ivm.Reference callbacks for cross-isolate communication
|
|
78
|
-
* @returns Proxy object with lazy loading behavior
|
|
79
|
-
*/
|
|
80
|
-
function createDeepLazyProxy(basePath = [], meta, callbacks) {
|
|
81
|
-
if (!callbacks) {
|
|
82
|
-
throw new Error('createDeepLazyProxy requires callbacks parameter');
|
|
83
|
-
}
|
|
84
|
-
const { getValueAtPath, getArrayElement } = callbacks;
|
|
85
|
-
const isArray = meta?.kind === 'array';
|
|
86
|
-
const arrayLength = isArray ? meta.length : 0;
|
|
87
|
-
const objectKeys = meta?.kind === 'object' ? meta.keys : undefined;
|
|
88
|
-
// Cache for keys fetched from the bridge (root object proxies without known keys).
|
|
89
|
-
// Shared between ownKeys and getOwnPropertyDescriptor for consistency.
|
|
90
|
-
let fetchedKeys;
|
|
91
|
-
function resolveObjectKeys() {
|
|
92
|
-
if (objectKeys)
|
|
93
|
-
return objectKeys;
|
|
94
|
-
if (fetchedKeys)
|
|
95
|
-
return fetchedKeys;
|
|
96
|
-
const value = getValueAtPath.applySync(null, [basePath], {
|
|
97
|
-
arguments: { copy: true },
|
|
98
|
-
result: { copy: true },
|
|
99
|
-
});
|
|
100
|
-
throwIfErrorSentinel(value);
|
|
101
|
-
if (isObjectMetadata(value)) {
|
|
102
|
-
fetchedKeys = value.__keys;
|
|
103
|
-
return fetchedKeys;
|
|
104
|
-
}
|
|
105
|
-
return [];
|
|
106
|
+
function materializeChild(basePath, propOrIdx, value) {
|
|
107
|
+
if (value === undefined || value === null)
|
|
108
|
+
return value;
|
|
109
|
+
throwIfErrorSentinel(value);
|
|
110
|
+
// `path = [...basePath, propOrIdx]` is built only inside the two branches
|
|
111
|
+
// that actually use it, so non-metadata objects don't pay for the spread.
|
|
112
|
+
if (isArrayMetadata(value)) {
|
|
113
|
+
const path = [...basePath, propOrIdx];
|
|
114
|
+
return createDeepLazyProxy(path, { kind: 'array', length: value.__length }, callbacks);
|
|
106
115
|
}
|
|
107
|
-
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
return undefined;
|
|
111
|
-
if (String(idx) !== prop)
|
|
112
|
-
return undefined; // reject '00', '1.0', etc.
|
|
113
|
-
return idx;
|
|
116
|
+
if (isObjectMetadata(value)) {
|
|
117
|
+
const path = [...basePath, propOrIdx];
|
|
118
|
+
return createDeepLazyProxy(path, { kind: 'object', keys: value.__keys }, callbacks);
|
|
114
119
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
if (isObjectMetadata(value)) {
|
|
126
|
-
const path = [...basePath, propOrIdx];
|
|
127
|
-
return createDeepLazyProxy(path, { kind: 'object', keys: value.__keys }, callbacks);
|
|
120
|
+
return value;
|
|
121
|
+
}
|
|
122
|
+
const target = isArray ? [] : {};
|
|
123
|
+
const proxy = new Proxy(target, {
|
|
124
|
+
ownKeys() {
|
|
125
|
+
if (isArray) {
|
|
126
|
+
const keys = Array.from({ length: arrayLength }, (_, i) => String(i));
|
|
127
|
+
// Required by proxy invariant: target [] has non-configurable 'length'
|
|
128
|
+
keys.push('length');
|
|
129
|
+
return keys;
|
|
128
130
|
}
|
|
129
|
-
return
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
ownKeys() {
|
|
134
|
-
if (isArray) {
|
|
135
|
-
const keys = Array.from({ length: arrayLength }, (_, i) => String(i));
|
|
136
|
-
// Required by proxy invariant: target [] has non-configurable 'length'
|
|
137
|
-
keys.push('length');
|
|
138
|
-
return keys;
|
|
139
|
-
}
|
|
140
|
-
return resolveObjectKeys();
|
|
141
|
-
},
|
|
142
|
-
getOwnPropertyDescriptor(_target, prop) {
|
|
143
|
-
if (typeof prop === 'symbol')
|
|
144
|
-
return undefined;
|
|
145
|
-
if (isArray) {
|
|
146
|
-
if (prop === 'length') {
|
|
147
|
-
// Match the target array's own length descriptor shape so the
|
|
148
|
-
// proxy invariant holds: writable & non-configurable.
|
|
149
|
-
return {
|
|
150
|
-
configurable: false,
|
|
151
|
-
enumerable: false,
|
|
152
|
-
writable: true,
|
|
153
|
-
value: arrayLength,
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
if (isInArrayBounds(prop) !== undefined) {
|
|
157
|
-
// Lazy proxies are read-only views of host data — writes from
|
|
158
|
-
// expression code must not propagate back across the isolate.
|
|
159
|
-
// Reading `proxy[prop]` triggers the get trap, which fetches the
|
|
160
|
-
// element from the host (if not cached) and stores it on the
|
|
161
|
-
// target. Including `value` matches a native array's data
|
|
162
|
-
// descriptor; the fetch is one-shot per index because of caching.
|
|
163
|
-
return {
|
|
164
|
-
configurable: true,
|
|
165
|
-
enumerable: true,
|
|
166
|
-
writable: false,
|
|
167
|
-
value: proxy[prop],
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
return undefined;
|
|
171
|
-
}
|
|
172
|
-
if (resolveObjectKeys().includes(prop)) {
|
|
173
|
-
return { configurable: true, enumerable: true, writable: false };
|
|
174
|
-
}
|
|
131
|
+
return resolveObjectKeys();
|
|
132
|
+
},
|
|
133
|
+
getOwnPropertyDescriptor(_target, prop) {
|
|
134
|
+
if (typeof prop === 'symbol')
|
|
175
135
|
return undefined;
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
if (typeof prop === 'symbol') {
|
|
187
|
-
return targetObj[prop];
|
|
188
|
-
}
|
|
189
|
-
// `toString` and `valueOf` aren't intercepted — they fall through to the
|
|
190
|
-
// target's prototype via the cache check below. That means `arr.toString()`
|
|
191
|
-
// returns the canonical comma-joined string (via `Array.prototype.toString`
|
|
192
|
-
// → `.join(',')`, paying one bridge call per element), and `obj.valueOf()`
|
|
193
|
-
// returns the proxy itself instead of the internal target. Pre-fix this
|
|
194
|
-
// trap shortcut to `''` / `targetObj` to avoid the O(n) cost, but the
|
|
195
|
-
// divergence from native was surprising in expressions like
|
|
196
|
-
// `={{ "items: " + $json.arr }}`. Users who care about the cost can call
|
|
197
|
-
// `$json.arr.length` and index explicitly.
|
|
198
|
-
// Array length is known at construction — no bridge call needed
|
|
199
|
-
if (isArray && prop === 'length') {
|
|
200
|
-
return arrayLength;
|
|
136
|
+
if (isArray) {
|
|
137
|
+
if (prop === 'length') {
|
|
138
|
+
// Match the target array's own length descriptor shape so the
|
|
139
|
+
// proxy invariant holds: writable & non-configurable.
|
|
140
|
+
return {
|
|
141
|
+
configurable: false,
|
|
142
|
+
enumerable: false,
|
|
143
|
+
writable: true,
|
|
144
|
+
value: arrayLength,
|
|
145
|
+
};
|
|
201
146
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
147
|
+
if (isInArrayBounds(prop) !== undefined) {
|
|
148
|
+
// Lazy proxies are read-only views of host data — writes from
|
|
149
|
+
// expression code must not propagate back across the isolate.
|
|
150
|
+
// Reading `proxy[prop]` triggers the get trap, which fetches the
|
|
151
|
+
// element from the host (if not cached) and stores it on the
|
|
152
|
+
// target. Including `value` matches a native array's data
|
|
153
|
+
// descriptor; the fetch is one-shot per index because of caching.
|
|
154
|
+
return {
|
|
155
|
+
configurable: true,
|
|
156
|
+
enumerable: true,
|
|
157
|
+
writable: false,
|
|
158
|
+
value: proxy[prop],
|
|
159
|
+
};
|
|
205
160
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
if (resolveObjectKeys().includes(prop)) {
|
|
164
|
+
return { configurable: true, enumerable: true, writable: false };
|
|
165
|
+
}
|
|
166
|
+
return undefined;
|
|
167
|
+
},
|
|
168
|
+
get(targetObj, prop) {
|
|
169
|
+
// Symbol-keyed access falls through to the proxy target so that
|
|
170
|
+
// well-known symbols on the prototype chain are reachable. For array
|
|
171
|
+
// proxies this exposes `Array.prototype[Symbol.iterator]` etc., which
|
|
172
|
+
// `[...arr]`, `for…of`, and destructuring need. For object proxies the
|
|
173
|
+
// `{}` target has no own symbol-keyed entries; reads return undefined.
|
|
174
|
+
// Symbols themselves aren't transferred across the isolate boundary —
|
|
175
|
+
// only the values yielded by iteration, which already pay the proxy's
|
|
176
|
+
// indexed `[[Get]]` (primitives or sub-proxies).
|
|
177
|
+
if (typeof prop === 'symbol') {
|
|
178
|
+
return targetObj[prop];
|
|
179
|
+
}
|
|
180
|
+
// `toString` and `valueOf` aren't intercepted — they fall through to the
|
|
181
|
+
// target's prototype via the cache check below. That means `arr.toString()`
|
|
182
|
+
// returns the canonical comma-joined string (via `Array.prototype.toString`
|
|
183
|
+
// → `.join(',')`, paying one bridge call per element), and `obj.valueOf()`
|
|
184
|
+
// returns the proxy itself instead of the internal target. Pre-fix this
|
|
185
|
+
// trap shortcut to `''` / `targetObj` to avoid the O(n) cost, but the
|
|
186
|
+
// divergence from native was surprising in expressions like
|
|
187
|
+
// `={{ "items: " + $json.arr }}`. Users who care about the cost can call
|
|
188
|
+
// `$json.arr.length` and index explicitly.
|
|
189
|
+
// Array length is known at construction — no bridge call needed
|
|
190
|
+
if (isArray && prop === 'length') {
|
|
191
|
+
return arrayLength;
|
|
192
|
+
}
|
|
193
|
+
// Check cache - if already fetched, return cached value
|
|
194
|
+
if (prop in targetObj) {
|
|
195
|
+
return targetObj[prop];
|
|
196
|
+
}
|
|
197
|
+
if (isArray) {
|
|
198
|
+
const idx = isInArrayBounds(prop);
|
|
199
|
+
if (idx === undefined)
|
|
200
|
+
return undefined;
|
|
201
|
+
const element = getArrayElement.applySync(null, [basePath, idx], {
|
|
228
202
|
arguments: { copy: true },
|
|
229
203
|
result: { copy: true },
|
|
230
204
|
});
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
// Implement 'in' operator support
|
|
236
|
-
// Example: '$json' in data
|
|
237
|
-
// Mirror the get trap: symbol-keyed lookups defer to the target so
|
|
238
|
-
// `Symbol.iterator in arr` reflects the prototype chain.
|
|
239
|
-
if (typeof prop === 'symbol')
|
|
240
|
-
return prop in targetObj;
|
|
241
|
-
if (isArray) {
|
|
242
|
-
if (prop === 'length')
|
|
243
|
-
return true;
|
|
244
|
-
if (prop in targetObj)
|
|
245
|
-
return true;
|
|
246
|
-
return isInArrayBounds(prop) !== undefined;
|
|
205
|
+
// Primitives (and null) skip `materializeChild`'s metadata checks.
|
|
206
|
+
if (element === null || typeof element !== 'object') {
|
|
207
|
+
targetObj[prop] = element;
|
|
208
|
+
return element;
|
|
247
209
|
}
|
|
248
|
-
|
|
249
|
-
|
|
210
|
+
targetObj[prop] = materializeChild(basePath, String(idx), element);
|
|
211
|
+
return targetObj[prop];
|
|
212
|
+
}
|
|
213
|
+
// Build path for this property — needed for the getValueAtPath call.
|
|
214
|
+
// materializeChild rebuilds it only inside metadata branches.
|
|
215
|
+
const path = [...basePath, prop];
|
|
216
|
+
// Call back to host to get metadata/value
|
|
217
|
+
// Note: getValueAtPath is an ivm.Reference passed via callbacks
|
|
218
|
+
const value = getValueAtPath.applySync(null, [path], {
|
|
219
|
+
arguments: { copy: true },
|
|
220
|
+
result: { copy: true },
|
|
221
|
+
});
|
|
222
|
+
targetObj[prop] = materializeChild(basePath, prop, value);
|
|
223
|
+
return targetObj[prop];
|
|
224
|
+
},
|
|
225
|
+
has(targetObj, prop) {
|
|
226
|
+
// Implement 'in' operator support
|
|
227
|
+
// Example: '$json' in data
|
|
228
|
+
// Mirror the get trap: symbol-keyed lookups defer to the target so
|
|
229
|
+
// `Symbol.iterator in arr` reflects the prototype chain.
|
|
230
|
+
if (typeof prop === 'symbol')
|
|
231
|
+
return prop in targetObj;
|
|
232
|
+
if (isArray) {
|
|
233
|
+
if (prop === 'length')
|
|
250
234
|
return true;
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
235
|
+
if (prop in targetObj)
|
|
236
|
+
return true;
|
|
237
|
+
return isInArrayBounds(prop) !== undefined;
|
|
238
|
+
}
|
|
239
|
+
// Check cache first
|
|
240
|
+
if (prop in targetObj) {
|
|
241
|
+
return true;
|
|
242
|
+
}
|
|
243
|
+
// Build path and check existence via callback
|
|
244
|
+
const path = [...basePath, prop];
|
|
245
|
+
const value = getValueAtPath.applySync(null, [path], {
|
|
246
|
+
arguments: { copy: true },
|
|
247
|
+
result: { copy: true },
|
|
248
|
+
});
|
|
249
|
+
// Handle errors serialized by host-side callbacks — reconstruct and throw
|
|
250
|
+
// so the isolate's outer try-catch can serialize them back via __reportError
|
|
251
|
+
throwIfErrorSentinel(value);
|
|
252
|
+
// Property exists if value is not undefined
|
|
253
|
+
// Note: null values mean property exists but is null
|
|
254
|
+
return value !== undefined;
|
|
255
|
+
},
|
|
256
|
+
});
|
|
257
|
+
proxyPaths.set(proxy, basePath);
|
|
258
|
+
return proxy;
|
|
259
|
+
}
|
|
270
260
|
//# sourceMappingURL=lazy-proxy.js.map
|
|
@@ -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
|
|
1
|
+
{"version":3,"file":"lazy-proxy.js","sourceRoot":"","sources":["../../../src/runtime/lazy-proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-globals.d.ts","sourceRoot":"","sources":["../../../src/runtime/safe-globals.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,mBAqCrB,CAAC;AAgBH;;GAEG;AACH,eAAO,MAAM,SAAS,kBAsBpB,CAAC;AAEH;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,gBAAgB,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,CAmBpF;AAMD,qBAAa,eAAgB,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"safe-globals.d.ts","sourceRoot":"","sources":["../../../src/runtime/safe-globals.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,mBAqCrB,CAAC;AAgBH;;GAEG;AACH,eAAO,MAAM,SAAS,kBAsBpB,CAAC;AAEH;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,gBAAgB,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,CAmBpF;AAMD,qBAAa,eAAgB,SAAQ,KAAK;IACzC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACD;AAwBD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CASlD"}
|