@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,79 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
// ============================================================================
|
|
2
3
|
// Safe Wrappers for Security-Sensitive Globals
|
|
3
4
|
// ============================================================================
|
|
4
|
-
(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ExpressionError = exports.SafeError = exports.SafeObject = void 0;
|
|
7
|
+
exports.createSafeErrorSubclass = createSafeErrorSubclass;
|
|
8
|
+
exports.__sanitize = __sanitize;
|
|
9
|
+
/**
|
|
10
|
+
* SafeObject - Blocks dangerous Object methods that could lead to RCE
|
|
11
|
+
*
|
|
12
|
+
* Blocked methods:
|
|
13
|
+
* - defineProperty, setPrototypeOf: Prevent prototype pollution
|
|
14
|
+
* - getOwnPropertyDescriptor: Prevent property descriptor manipulation
|
|
15
|
+
* - __defineGetter__, __defineSetter__: Legacy descriptor manipulation
|
|
16
|
+
*/
|
|
17
|
+
exports.SafeObject = new Proxy(Object, {
|
|
18
|
+
get(target, prop) {
|
|
19
|
+
// Block dangerous methods (return undefined)
|
|
20
|
+
const blockedMethods = [
|
|
21
|
+
'defineProperty',
|
|
22
|
+
'defineProperties',
|
|
23
|
+
'setPrototypeOf',
|
|
24
|
+
'getOwnPropertyDescriptor',
|
|
25
|
+
'getOwnPropertyDescriptors',
|
|
26
|
+
'__defineGetter__',
|
|
27
|
+
'__defineSetter__',
|
|
28
|
+
'__lookupGetter__',
|
|
29
|
+
'__lookupSetter__',
|
|
30
|
+
];
|
|
31
|
+
if (blockedMethods.includes(prop)) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
// Block getPrototypeOf by throwing (more secure than returning undefined)
|
|
35
|
+
if (prop === 'getPrototypeOf') {
|
|
36
|
+
throw new Error('Object.getPrototypeOf is not allowed');
|
|
37
|
+
}
|
|
38
|
+
// Wrap Object.create to accept only one argument (blocks property descriptor injection)
|
|
39
|
+
if (prop === 'create') {
|
|
40
|
+
return (proto) => Object.create(proto);
|
|
41
|
+
}
|
|
42
|
+
// Allow other Object methods
|
|
43
|
+
const value = target[prop];
|
|
44
|
+
if (typeof value === 'function') {
|
|
45
|
+
// Use arrow function wrapper to preserve 'this' binding
|
|
46
|
+
return (...args) => value.apply(target, args);
|
|
47
|
+
}
|
|
48
|
+
return value;
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
/**
|
|
52
|
+
* Properties blocked on Error and all Error subclasses.
|
|
53
|
+
* These can be exploited for sandbox escape via V8's stack trace API.
|
|
54
|
+
*/
|
|
55
|
+
const blockedErrorProperties = new Set([
|
|
56
|
+
'captureStackTrace',
|
|
57
|
+
'prepareStackTrace',
|
|
58
|
+
'stackTraceLimit',
|
|
59
|
+
'__defineGetter__',
|
|
60
|
+
'__defineSetter__',
|
|
61
|
+
'__lookupGetter__',
|
|
62
|
+
'__lookupSetter__',
|
|
63
|
+
]);
|
|
64
|
+
/**
|
|
65
|
+
* SafeError - Blocks stack manipulation methods on Error constructor.
|
|
66
|
+
*/
|
|
67
|
+
exports.SafeError = new Proxy(Error, {
|
|
68
|
+
get(target, prop) {
|
|
69
|
+
if (blockedErrorProperties.has(prop)) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
const value = target[prop];
|
|
73
|
+
if (typeof value === 'function') {
|
|
74
|
+
return (...args) => value.apply(target, args);
|
|
75
|
+
}
|
|
76
|
+
return value;
|
|
77
|
+
},
|
|
78
|
+
set(target, prop, value) {
|
|
79
|
+
// Block setting prepareStackTrace
|
|
80
|
+
if (prop === 'prepareStackTrace') {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
target[prop] = value;
|
|
84
|
+
return true;
|
|
85
|
+
},
|
|
86
|
+
defineProperty() {
|
|
87
|
+
return false;
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
/**
|
|
91
|
+
* Creates a safe wrapper for Error subclasses (TypeError, SyntaxError, etc.)
|
|
92
|
+
* Blocks the same dangerous properties as SafeError for defense in depth.
|
|
93
|
+
*/
|
|
94
|
+
function createSafeErrorSubclass(ErrorClass) {
|
|
95
|
+
return new Proxy(ErrorClass, {
|
|
77
96
|
get(target, prop) {
|
|
78
97
|
if (blockedErrorProperties.has(prop)) {
|
|
79
98
|
return undefined;
|
|
@@ -84,82 +103,53 @@
|
|
|
84
103
|
}
|
|
85
104
|
return value;
|
|
86
105
|
},
|
|
87
|
-
set(
|
|
88
|
-
|
|
89
|
-
if (prop === 'prepareStackTrace') {
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
target[prop] = value;
|
|
93
|
-
return true;
|
|
106
|
+
set() {
|
|
107
|
+
return false;
|
|
94
108
|
},
|
|
95
109
|
defineProperty() {
|
|
96
110
|
return false;
|
|
97
111
|
},
|
|
98
112
|
});
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
return undefined;
|
|
108
|
-
}
|
|
109
|
-
const value = target[prop];
|
|
110
|
-
if (typeof value === 'function') {
|
|
111
|
-
return (...args) => value.apply(target, args);
|
|
112
|
-
}
|
|
113
|
-
return value;
|
|
114
|
-
},
|
|
115
|
-
set() {
|
|
116
|
-
return false;
|
|
117
|
-
},
|
|
118
|
-
defineProperty() {
|
|
119
|
-
return false;
|
|
120
|
-
},
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
// ============================================================================
|
|
124
|
-
// ExpressionError - used by tournament-generated error handlers
|
|
125
|
-
// ============================================================================
|
|
126
|
-
class ExpressionError extends Error {
|
|
127
|
-
constructor(message) {
|
|
128
|
-
super(message);
|
|
129
|
-
this.name = 'ExpressionError';
|
|
130
|
-
}
|
|
113
|
+
}
|
|
114
|
+
// ============================================================================
|
|
115
|
+
// ExpressionError - used by tournament-generated error handlers
|
|
116
|
+
// ============================================================================
|
|
117
|
+
class ExpressionError extends Error {
|
|
118
|
+
constructor(message) {
|
|
119
|
+
super(message);
|
|
120
|
+
this.name = 'ExpressionError';
|
|
131
121
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
return key;
|
|
122
|
+
}
|
|
123
|
+
exports.ExpressionError = ExpressionError;
|
|
124
|
+
// ============================================================================
|
|
125
|
+
// Runtime sanitizer for dynamic property access
|
|
126
|
+
// Generated by PrototypeSanitizer: obj[expr] → obj[this.__sanitize(expr)]
|
|
127
|
+
// Must match the blocklist in packages/workflow/src/expression-sandboxing.ts
|
|
128
|
+
// ============================================================================
|
|
129
|
+
const unsafeObjectProperties = new Set([
|
|
130
|
+
'__proto__',
|
|
131
|
+
'prototype',
|
|
132
|
+
'constructor',
|
|
133
|
+
'__defineGetter__',
|
|
134
|
+
'__defineSetter__',
|
|
135
|
+
'__lookupGetter__',
|
|
136
|
+
'__lookupSetter__',
|
|
137
|
+
'toString',
|
|
138
|
+
'valueOf',
|
|
139
|
+
'toLocaleString',
|
|
140
|
+
'hasOwnProperty',
|
|
141
|
+
'isPrototypeOf',
|
|
142
|
+
'propertyIsEnumerable',
|
|
143
|
+
]);
|
|
144
|
+
function __sanitize(value) {
|
|
145
|
+
// Symbols are not string-coercible and fall outside the denylist; pass through.
|
|
146
|
+
if (typeof value === 'symbol')
|
|
147
|
+
return value;
|
|
148
|
+
// Coerce once and return the string so the caller uses the already-checked key.
|
|
149
|
+
const key = String(value);
|
|
150
|
+
if (unsafeObjectProperties.has(key)) {
|
|
151
|
+
throw new ExpressionError(`Cannot access "${key}" due to security concerns`);
|
|
163
152
|
}
|
|
164
|
-
|
|
153
|
+
return key;
|
|
154
|
+
}
|
|
165
155
|
//# sourceMappingURL=safe-globals.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-globals.js","sourceRoot":"","sources":["../../../src/runtime/safe-globals.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,+CAA+C;AAC/C,+EAA+E
|
|
1
|
+
{"version":3,"file":"safe-globals.js","sourceRoot":"","sources":["../../../src/runtime/safe-globals.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,67 +1,57 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.__prepareForTransfer = __prepareForTransfer;
|
|
4
|
+
const luxon_1 = require("luxon");
|
|
5
|
+
/** Type guard: plain object with Object.prototype or null prototype. */
|
|
6
|
+
function isPlainObject(value) {
|
|
7
|
+
const proto = Object.getPrototypeOf(value);
|
|
8
|
+
return proto === Object.prototype || proto === null;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Prepare a value for transfer across the V8 isolate boundary.
|
|
12
|
+
*
|
|
13
|
+
* isolated-vm's `copy: true` uses structured clone, which strips prototypes
|
|
14
|
+
* from non-standard types. Luxon DateTime/Duration/Interval lose their class
|
|
15
|
+
* identity and arrive on the host as plain objects.
|
|
16
|
+
*
|
|
17
|
+
* This function recursively walks a value and converts types that don't
|
|
18
|
+
* survive structured clone into their string representations. It runs
|
|
19
|
+
* inside the isolate before the result is transferred.
|
|
20
|
+
*
|
|
21
|
+
* Note: JS Date objects survive structured clone with prototype intact
|
|
22
|
+
* (Date is a standard structured-cloneable type) and are not converted.
|
|
23
|
+
*
|
|
24
|
+
* Circular references are not handled — expression results should not
|
|
25
|
+
* contain cycles.
|
|
26
|
+
*/
|
|
27
|
+
function __prepareForTransfer(value) {
|
|
28
|
+
if (value === null || value === undefined)
|
|
29
|
+
return value;
|
|
30
|
+
if (typeof value !== 'object')
|
|
31
|
+
return value;
|
|
32
|
+
// Luxon DateTime -> ISO string (toISO() returns null for invalid DateTime)
|
|
33
|
+
if (luxon_1.DateTime.isDateTime(value))
|
|
34
|
+
return value.toISO() ?? null;
|
|
35
|
+
// Luxon Duration -> ISO string (toISO() returns null for invalid Duration)
|
|
36
|
+
if (luxon_1.Duration.isDuration(value))
|
|
37
|
+
return value.toISO() ?? null;
|
|
38
|
+
// Luxon Interval -> ISO string (toISO() returns "Invalid Interval" for invalid Interval)
|
|
39
|
+
if (luxon_1.Interval.isInterval(value)) {
|
|
40
|
+
const iso = value.toISO();
|
|
41
|
+
return iso === 'Invalid Interval' ? null : iso;
|
|
5
42
|
}
|
|
6
|
-
|
|
7
|
-
|
|
43
|
+
// Array — walk elements
|
|
44
|
+
if (Array.isArray(value))
|
|
45
|
+
return value.map(__prepareForTransfer);
|
|
46
|
+
// Only walk plain objects — structured-cloneable types like Date, Map, Set,
|
|
47
|
+
// RegExp, Error, typed arrays survive copy:true with prototypes intact.
|
|
48
|
+
if (!isPlainObject(value))
|
|
49
|
+
return value;
|
|
50
|
+
// Plain object — walk values
|
|
51
|
+
const result = {};
|
|
52
|
+
for (const key of Object.keys(value)) {
|
|
53
|
+
result[key] = __prepareForTransfer(value[key]);
|
|
8
54
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.__prepareForTransfer = __prepareForTransfer;
|
|
13
|
-
const luxon_1 = require("luxon");
|
|
14
|
-
/** Type guard: plain object with Object.prototype or null prototype. */
|
|
15
|
-
function isPlainObject(value) {
|
|
16
|
-
const proto = Object.getPrototypeOf(value);
|
|
17
|
-
return proto === Object.prototype || proto === null;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Prepare a value for transfer across the V8 isolate boundary.
|
|
21
|
-
*
|
|
22
|
-
* isolated-vm's `copy: true` uses structured clone, which strips prototypes
|
|
23
|
-
* from non-standard types. Luxon DateTime/Duration/Interval lose their class
|
|
24
|
-
* identity and arrive on the host as plain objects.
|
|
25
|
-
*
|
|
26
|
-
* This function recursively walks a value and converts types that don't
|
|
27
|
-
* survive structured clone into their string representations. It runs
|
|
28
|
-
* inside the isolate before the result is transferred.
|
|
29
|
-
*
|
|
30
|
-
* Note: JS Date objects survive structured clone with prototype intact
|
|
31
|
-
* (Date is a standard structured-cloneable type) and are not converted.
|
|
32
|
-
*
|
|
33
|
-
* Circular references are not handled — expression results should not
|
|
34
|
-
* contain cycles.
|
|
35
|
-
*/
|
|
36
|
-
function __prepareForTransfer(value) {
|
|
37
|
-
if (value === null || value === undefined)
|
|
38
|
-
return value;
|
|
39
|
-
if (typeof value !== 'object')
|
|
40
|
-
return value;
|
|
41
|
-
// Luxon DateTime -> ISO string (toISO() returns null for invalid DateTime)
|
|
42
|
-
if (luxon_1.DateTime.isDateTime(value))
|
|
43
|
-
return value.toISO() ?? null;
|
|
44
|
-
// Luxon Duration -> ISO string (toISO() returns null for invalid Duration)
|
|
45
|
-
if (luxon_1.Duration.isDuration(value))
|
|
46
|
-
return value.toISO() ?? null;
|
|
47
|
-
// Luxon Interval -> ISO string (toISO() returns "Invalid Interval" for invalid Interval)
|
|
48
|
-
if (luxon_1.Interval.isInterval(value)) {
|
|
49
|
-
const iso = value.toISO();
|
|
50
|
-
return iso === 'Invalid Interval' ? null : iso;
|
|
51
|
-
}
|
|
52
|
-
// Array — walk elements
|
|
53
|
-
if (Array.isArray(value))
|
|
54
|
-
return value.map(__prepareForTransfer);
|
|
55
|
-
// Only walk plain objects — structured-cloneable types like Date, Map, Set,
|
|
56
|
-
// RegExp, Error, typed arrays survive copy:true with prototypes intact.
|
|
57
|
-
if (!isPlainObject(value))
|
|
58
|
-
return value;
|
|
59
|
-
// Plain object — walk values
|
|
60
|
-
const result = {};
|
|
61
|
-
for (const key of Object.keys(value)) {
|
|
62
|
-
result[key] = __prepareForTransfer(value[key]);
|
|
63
|
-
}
|
|
64
|
-
return result;
|
|
65
|
-
}
|
|
66
|
-
});
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
67
57
|
//# sourceMappingURL=serialize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../src/runtime/serialize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../src/runtime/serialize.ts"],"names":[],"mappings":";;;AAAA,iCAAqD;AAErD,wEAAwE;AACxE,SAAS,aAAa,CAAC,KAAa;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,8BAAqC,KAAc;IAClD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5C,2EAA2E;IAC3E,IAAI,gBAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;IAC7D,2EAA2E;IAC3E,IAAI,gBAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;IAC7D,yFAAyF;IACzF,IAAI,gBAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,OAAO,GAAG,KAAK,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAChD,CAAC;IAED,wBAAwB;IACxB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAEjE,4EAA4E;IAC5E,wEAAwE;IACxE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,6BAA6B;IAC7B,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
@@ -1,31 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
* registered method and route it through whatever the trap dispatches on,
|
|
22
|
-
* producing a malformed envelope and breaking the user-visible fallthrough.
|
|
23
|
-
*
|
|
24
|
-
* Parameter order matches the `Object.hasOwn(obj, key)` / `Reflect.has(obj, key)`
|
|
25
|
-
* convention from the standard library.
|
|
26
|
-
*/
|
|
27
|
-
function isKeyOf(object, key) {
|
|
28
|
-
return typeof key !== 'symbol' && Object.hasOwn(object, key);
|
|
29
|
-
}
|
|
30
|
-
});
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isKeyOf = isKeyOf;
|
|
4
|
+
/**
|
|
5
|
+
* Type guard: narrows `key` to `keyof T` when it is a real own (non-inherited)
|
|
6
|
+
* string key of `object`. Used in `Proxy` `get`/`has` traps to route on a
|
|
7
|
+
* registry of known property names without resorting to `as keyof T` casts.
|
|
8
|
+
*
|
|
9
|
+
* Uses `Object.hasOwn` rather than the `in` operator so prototype-chain
|
|
10
|
+
* properties (`toString`, `constructor`, `hasOwnProperty`, ...) do NOT pass
|
|
11
|
+
* the guard. Otherwise a synthetic `Proxy` would treat `obj.toString` as a
|
|
12
|
+
* registered method and route it through whatever the trap dispatches on,
|
|
13
|
+
* producing a malformed envelope and breaking the user-visible fallthrough.
|
|
14
|
+
*
|
|
15
|
+
* Parameter order matches the `Object.hasOwn(obj, key)` / `Reflect.has(obj, key)`
|
|
16
|
+
* convention from the standard library.
|
|
17
|
+
*/
|
|
18
|
+
function isKeyOf(object, key) {
|
|
19
|
+
return typeof key !== 'symbol' && Object.hasOwn(object, key);
|
|
20
|
+
}
|
|
31
21
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/runtime/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/runtime/utils.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;GAaG;AACH,iBAA0C,MAAS,EAAE,GAAgB;IACpE,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9D,CAAC"}
|
package/dist/cjs/types/bridge.js
CHANGED
|
@@ -1,32 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
// ============================================================================
|
|
2
3
|
// Phase 1.1: Bridge Interface (CORE - IMPLEMENT FIRST)
|
|
3
4
|
//
|
|
4
5
|
// This is the main interface all environments must implement.
|
|
5
6
|
// Start here for CLI/backend (IsolatedVmBridge) or frontend (WebWorkerBridge).
|
|
6
7
|
// ============================================================================
|
|
7
|
-
(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
warn: () => { },
|
|
22
|
-
info: () => { },
|
|
23
|
-
debug: () => { },
|
|
24
|
-
};
|
|
25
|
-
/** Default values for BridgeConfig. Bridge implementations should use this as their baseline. */
|
|
26
|
-
exports.DEFAULT_BRIDGE_CONFIG = {
|
|
27
|
-
memoryLimit: 128,
|
|
28
|
-
timeout: 5000,
|
|
29
|
-
logger: NO_OP_LOGGER,
|
|
30
|
-
};
|
|
31
|
-
});
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.DEFAULT_BRIDGE_CONFIG = void 0;
|
|
10
|
+
const NO_OP_LOGGER = {
|
|
11
|
+
error: () => { },
|
|
12
|
+
warn: () => { },
|
|
13
|
+
info: () => { },
|
|
14
|
+
debug: () => { },
|
|
15
|
+
};
|
|
16
|
+
/** Default values for BridgeConfig. Bridge implementations should use this as their baseline. */
|
|
17
|
+
exports.DEFAULT_BRIDGE_CONFIG = {
|
|
18
|
+
memoryLimit: 128,
|
|
19
|
+
timeout: 5000,
|
|
20
|
+
logger: NO_OP_LOGGER,
|
|
21
|
+
};
|
|
32
22
|
//# sourceMappingURL=bridge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/types/bridge.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,uDAAuD;AACvD,EAAE;AACF,8DAA8D;AAC9D,+EAA+E;AAC/E,+EAA+E
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/types/bridge.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,uDAAuD;AACvD,EAAE;AACF,8DAA8D;AAC9D,+EAA+E;AAC/E,+EAA+E;;;AA6E/E,MAAM,YAAY,GAAW;IAC5B,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;CACf,CAAC;AAEF,iGAAiG;AACpF,QAAA,qBAAqB,GAA2B;IAC5D,WAAW,EAAE,GAAG;IAChB,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,YAAY;CACpB,CAAC"}
|
|
@@ -60,8 +60,12 @@ export interface IExpressionEvaluator {
|
|
|
60
60
|
* Acquire a bridge for an owner object (e.g. an Expression instance).
|
|
61
61
|
* Must be called before evaluate(). The same object must be passed as
|
|
62
62
|
* the caller argument to evaluate().
|
|
63
|
+
*
|
|
64
|
+
* Returns whether a bridge was newly acquired: `false` means the owner
|
|
65
|
+
* already held one, so the current scope must not release it (release is
|
|
66
|
+
* not reference-counted).
|
|
63
67
|
*/
|
|
64
|
-
acquire(owner: object): Promise<
|
|
68
|
+
acquire(owner: object): Promise<boolean>;
|
|
65
69
|
/**
|
|
66
70
|
* Release the bridge held for an owner object.
|
|
67
71
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../src/types/evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAO9C;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC/B,oDAAoD;IACpD,YAAY,EAAE,MAAM,aAAa,CAAC;IAElC;;OAEG;IACH,aAAa,CAAC,EAAE,qBAAqB,CAAC;IAEtC;;;;OAIG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC;IAExB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,2FAA2F;IAC3F,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACpC;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;;;;;;;OAQG;IACH,QAAQ,CACP,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,eAAe,GACvB,OAAO,CAAC;IAEX
|
|
1
|
+
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../src/types/evaluator.ts"],"names":[],"mappings":"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"}
|