@n8n/expression-runtime 0.29.1 → 0.31.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/README.md +4 -0
- 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/host-functions.d.ts +74 -0
- package/dist/cjs/bridge/host-functions.d.ts.map +1 -0
- package/dist/cjs/bridge/host-functions.js +336 -0
- package/dist/cjs/bridge/host-functions.js.map +1 -0
- package/dist/cjs/bridge/isolated-vm-bridge.d.ts +24 -150
- package/dist/cjs/bridge/isolated-vm-bridge.d.ts.map +1 -1
- package/dist/cjs/bridge/isolated-vm-bridge.js +130 -429
- package/dist/cjs/bridge/isolated-vm-bridge.js.map +1 -1
- package/dist/cjs/bridge/quickjs-bridge.d.ts +21 -6
- package/dist/cjs/bridge/quickjs-bridge.d.ts.map +1 -1
- package/dist/cjs/bridge/quickjs-bridge.js +377 -402
- package/dist/cjs/bridge/quickjs-bridge.js.map +1 -1
- package/dist/cjs/build.tsbuildinfo +1 -1
- package/dist/cjs/evaluator/expression-evaluator.d.ts +17 -0
- package/dist/cjs/evaluator/expression-evaluator.d.ts.map +1 -1
- package/dist/cjs/evaluator/expression-evaluator.js +61 -1
- package/dist/cjs/evaluator/expression-evaluator.js.map +1 -1
- package/dist/cjs/extensions/array-extensions.d.ts.map +1 -1
- package/dist/cjs/extensions/array-extensions.js +7 -15
- package/dist/cjs/extensions/array-extensions.js.map +1 -1
- package/dist/cjs/extensions/function-extensions.d.ts.map +1 -1
- package/dist/cjs/extensions/function-extensions.js +2 -10
- package/dist/cjs/extensions/function-extensions.js.map +1 -1
- package/dist/cjs/extensions/object-extensions.d.ts.map +1 -1
- package/dist/cjs/extensions/object-extensions.js +3 -11
- package/dist/cjs/extensions/object-extensions.js.map +1 -1
- package/dist/cjs/extensions/utils.d.ts +1 -0
- package/dist/cjs/extensions/utils.d.ts.map +1 -1
- package/dist/cjs/extensions/utils.js +10 -0
- package/dist/cjs/extensions/utils.js.map +1 -1
- package/dist/cjs/observability/metrics.d.ts +12 -0
- package/dist/cjs/observability/metrics.d.ts.map +1 -1
- package/dist/cjs/observability/metrics.js +12 -0
- package/dist/cjs/observability/metrics.js.map +1 -1
- package/dist/cjs/runtime/lazy-proxy.d.ts +2 -0
- package/dist/cjs/runtime/lazy-proxy.d.ts.map +1 -1
- package/dist/cjs/runtime/lazy-proxy.js +29 -15
- package/dist/cjs/runtime/lazy-proxy.js.map +1 -1
- package/dist/cjs/runtime/luxon-transfer.d.ts +62 -0
- package/dist/cjs/runtime/luxon-transfer.d.ts.map +1 -0
- package/dist/cjs/runtime/luxon-transfer.js +200 -0
- package/dist/cjs/runtime/luxon-transfer.js.map +1 -0
- package/dist/cjs/runtime/serialize.d.ts +7 -7
- package/dist/cjs/runtime/serialize.d.ts.map +1 -1
- package/dist/cjs/runtime/serialize.js +42 -30
- package/dist/cjs/runtime/serialize.js.map +1 -1
- package/dist/cjs/runtime/transfer.d.ts +77 -0
- package/dist/cjs/runtime/transfer.d.ts.map +1 -0
- package/dist/cjs/runtime/transfer.js +183 -0
- package/dist/cjs/runtime/transfer.js.map +1 -0
- package/dist/cjs/types/bridge.d.ts +16 -0
- package/dist/cjs/types/bridge.d.ts.map +1 -1
- package/dist/cjs/types/bridge.js +1 -0
- package/dist/cjs/types/bridge.js.map +1 -1
- package/dist/cjs/types/evaluator.d.ts +9 -0
- package/dist/cjs/types/evaluator.d.ts.map +1 -1
- package/dist/cjs/types/evaluator.js.map +1 -1
- package/dist/esm/bridge/host-functions.d.ts +74 -0
- package/dist/esm/bridge/host-functions.d.ts.map +1 -0
- package/dist/esm/bridge/host-functions.js +328 -0
- package/dist/esm/bridge/host-functions.js.map +1 -0
- package/dist/esm/bridge/isolated-vm-bridge.d.ts +24 -150
- package/dist/esm/bridge/isolated-vm-bridge.d.ts.map +1 -1
- package/dist/esm/bridge/isolated-vm-bridge.js +126 -425
- package/dist/esm/bridge/isolated-vm-bridge.js.map +1 -1
- package/dist/esm/bridge/quickjs-bridge.d.ts +21 -6
- package/dist/esm/bridge/quickjs-bridge.d.ts.map +1 -1
- package/dist/esm/bridge/quickjs-bridge.js +368 -393
- package/dist/esm/bridge/quickjs-bridge.js.map +1 -1
- package/dist/esm/build.tsbuildinfo +1 -1
- package/dist/esm/evaluator/expression-evaluator.d.ts +17 -0
- package/dist/esm/evaluator/expression-evaluator.d.ts.map +1 -1
- package/dist/esm/evaluator/expression-evaluator.js +61 -1
- package/dist/esm/evaluator/expression-evaluator.js.map +1 -1
- package/dist/esm/extensions/array-extensions.d.ts.map +1 -1
- package/dist/esm/extensions/array-extensions.js +1 -9
- package/dist/esm/extensions/array-extensions.js.map +1 -1
- package/dist/esm/extensions/function-extensions.d.ts.map +1 -1
- package/dist/esm/extensions/function-extensions.js +1 -9
- package/dist/esm/extensions/function-extensions.js.map +1 -1
- package/dist/esm/extensions/object-extensions.d.ts.map +1 -1
- package/dist/esm/extensions/object-extensions.js +1 -9
- package/dist/esm/extensions/object-extensions.js.map +1 -1
- package/dist/esm/extensions/utils.d.ts +1 -0
- package/dist/esm/extensions/utils.d.ts.map +1 -1
- package/dist/esm/extensions/utils.js +9 -0
- package/dist/esm/extensions/utils.js.map +1 -1
- package/dist/esm/observability/metrics.d.ts +12 -0
- package/dist/esm/observability/metrics.d.ts.map +1 -1
- package/dist/esm/observability/metrics.js +12 -0
- package/dist/esm/observability/metrics.js.map +1 -1
- package/dist/esm/runtime/lazy-proxy.d.ts +2 -0
- package/dist/esm/runtime/lazy-proxy.d.ts.map +1 -1
- package/dist/esm/runtime/lazy-proxy.js +29 -15
- package/dist/esm/runtime/lazy-proxy.js.map +1 -1
- package/dist/esm/runtime/luxon-transfer.d.ts +62 -0
- package/dist/esm/runtime/luxon-transfer.d.ts.map +1 -0
- package/dist/esm/runtime/luxon-transfer.js +183 -0
- package/dist/esm/runtime/luxon-transfer.js.map +1 -0
- package/dist/esm/runtime/serialize.d.ts +7 -7
- package/dist/esm/runtime/serialize.d.ts.map +1 -1
- package/dist/esm/runtime/serialize.js +42 -30
- package/dist/esm/runtime/serialize.js.map +1 -1
- package/dist/esm/runtime/transfer.d.ts +77 -0
- package/dist/esm/runtime/transfer.d.ts.map +1 -0
- package/dist/esm/runtime/transfer.js +173 -0
- package/dist/esm/runtime/transfer.js.map +1 -0
- package/dist/esm/types/bridge.d.ts +16 -0
- package/dist/esm/types/bridge.d.ts.map +1 -1
- package/dist/esm/types/bridge.js +1 -0
- package/dist/esm/types/bridge.js.map +1 -1
- package/dist/esm/types/evaluator.d.ts +9 -0
- package/dist/esm/types/evaluator.d.ts.map +1 -1
- package/dist/esm/types/evaluator.js.map +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framing for values that cross the runtime boundary.
|
|
3
|
+
*
|
|
4
|
+
* Results cross by structured clone, which does not carry the prototype of a
|
|
5
|
+
* class instance. A type the host must get back as a real instance goes across
|
|
6
|
+
* as a structured-cloneable marker object instead: a plain object naming its
|
|
7
|
+
* type under `__n8nType`, which the host reads and rebuilds from.
|
|
8
|
+
*
|
|
9
|
+
* This module knows the framing and nothing about any single type. The encoders
|
|
10
|
+
* and the decoders live next to the type they carry, such as `luxon-transfer`.
|
|
11
|
+
*
|
|
12
|
+
* User data can hold the same keys. The escape wrapper below lets the host tell
|
|
13
|
+
* a marker from user data that looks like one.
|
|
14
|
+
*/
|
|
15
|
+
/** Names the type a marker carries, and marks the object as one of ours. */
|
|
16
|
+
export declare const TRANSFER_TYPE_KEY = "__n8nType";
|
|
17
|
+
/** Marks a wrapper whose payload is user data, not a marker. */
|
|
18
|
+
export declare const TRANSFER_ESCAPED_KEY = "__n8nEscaped";
|
|
19
|
+
/** Marks an escaped payload the host must return without any walk. */
|
|
20
|
+
export declare const TRANSFER_OPAQUE_KEY = "__n8nOpaque";
|
|
21
|
+
/** Holds the payload of an escaped wrapper. */
|
|
22
|
+
export declare const TRANSFER_VALUE_KEY = "__value";
|
|
23
|
+
/**
|
|
24
|
+
* Keys that make an object look like our framing.
|
|
25
|
+
*
|
|
26
|
+
* An object with one of these own keys is escaped, so the host reads it as
|
|
27
|
+
* data. The opaque flag is in the set for the same reason. If it were not, user
|
|
28
|
+
* data that holds it would make the host return an object without a walk.
|
|
29
|
+
*
|
|
30
|
+
* One type key covers every marker, so a new type does not grow this set.
|
|
31
|
+
*/
|
|
32
|
+
export declare const TRANSFER_FRAMING_KEYS: readonly string[];
|
|
33
|
+
export interface TransferSentinel {
|
|
34
|
+
[TRANSFER_TYPE_KEY]: string;
|
|
35
|
+
}
|
|
36
|
+
export interface EscapedTransferValue {
|
|
37
|
+
[TRANSFER_ESCAPED_KEY]: true;
|
|
38
|
+
[TRANSFER_OPAQUE_KEY]?: true;
|
|
39
|
+
[TRANSFER_VALUE_KEY]: unknown;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Rebuild a real instance from a marker.
|
|
43
|
+
*
|
|
44
|
+
* Only the guest walk writes the type key, and it escapes any user object that
|
|
45
|
+
* carries one, so a decoder only ever sees a type its own encoder wrote.
|
|
46
|
+
*/
|
|
47
|
+
export type SentinelDecoder = (sentinel: TransferSentinel) => unknown;
|
|
48
|
+
/** Give back a sentinel for a value the decoder owns, or nothing for any other. */
|
|
49
|
+
export type SentinelEncoder = (value: object) => TransferSentinel | undefined;
|
|
50
|
+
/** The type a marker names, or nothing when the value is not a marker. */
|
|
51
|
+
export declare function transferTypeOf(value: unknown): string | undefined;
|
|
52
|
+
export declare function isTransferSentinel(value: unknown): value is TransferSentinel;
|
|
53
|
+
export declare function isEscapedTransferValue(value: unknown): value is EscapedTransferValue;
|
|
54
|
+
/**
|
|
55
|
+
* An escaped wrapper whose payload must be returned as data without any
|
|
56
|
+
* further inspection for markers.
|
|
57
|
+
*/
|
|
58
|
+
export declare function isOpaqueTransferValue(value: unknown): boolean;
|
|
59
|
+
/** Type guard: plain object with Object.prototype or null prototype. */
|
|
60
|
+
export declare function isPlainObject(value: object): value is Record<string, unknown>;
|
|
61
|
+
/** Types that structured clone copies with the prototype intact. */
|
|
62
|
+
export declare function isStructuredCloneBuiltin(value: object): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Rebuild instances from the markers `__prepareForTransfer` emits.
|
|
65
|
+
*
|
|
66
|
+
* Walks the same shapes that function walks: a top-level value, arrays, and
|
|
67
|
+
* plain objects. Other structured-cloneable types are returned untouched.
|
|
68
|
+
* A payload marked opaque is returned as data, without any inspection.
|
|
69
|
+
* Objects already visited are reused, so a graph that repeats or contains
|
|
70
|
+
* itself is walked once.
|
|
71
|
+
*
|
|
72
|
+
* A value that holds no marker is given back as it is. The walk copies every
|
|
73
|
+
* plain object and array it enters, and most results carry no marker at all,
|
|
74
|
+
* so the copy would double what an expression allocates for nothing.
|
|
75
|
+
*/
|
|
76
|
+
export declare function unwrapTransferSentinels(value: unknown, decode: SentinelDecoder): unknown;
|
|
77
|
+
//# sourceMappingURL=transfer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../src/runtime/transfer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAE7C,gEAAgE;AAChE,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAEnD,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AAEjD,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAE5C;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAIlD,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAChC,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACpC,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC;IAC7B,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC;IAC7B,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,gBAAgB,KAAK,OAAO,CAAC;AAEtE,mFAAmF;AACnF,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,gBAAgB,GAAG,SAAS,CAAC;AAO9E,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGjE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAEpF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE7D;AAED,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAG7E;AAED,oEAAoE;AACpE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAW/D;AAyED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAGxF"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Framing for values that cross the runtime boundary.
|
|
4
|
+
*
|
|
5
|
+
* Results cross by structured clone, which does not carry the prototype of a
|
|
6
|
+
* class instance. A type the host must get back as a real instance goes across
|
|
7
|
+
* as a structured-cloneable marker object instead: a plain object naming its
|
|
8
|
+
* type under `__n8nType`, which the host reads and rebuilds from.
|
|
9
|
+
*
|
|
10
|
+
* This module knows the framing and nothing about any single type. The encoders
|
|
11
|
+
* and the decoders live next to the type they carry, such as `luxon-transfer`.
|
|
12
|
+
*
|
|
13
|
+
* User data can hold the same keys. The escape wrapper below lets the host tell
|
|
14
|
+
* a marker from user data that looks like one.
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.TRANSFER_FRAMING_KEYS = exports.TRANSFER_VALUE_KEY = exports.TRANSFER_OPAQUE_KEY = exports.TRANSFER_ESCAPED_KEY = exports.TRANSFER_TYPE_KEY = void 0;
|
|
18
|
+
exports.transferTypeOf = transferTypeOf;
|
|
19
|
+
exports.isTransferSentinel = isTransferSentinel;
|
|
20
|
+
exports.isEscapedTransferValue = isEscapedTransferValue;
|
|
21
|
+
exports.isOpaqueTransferValue = isOpaqueTransferValue;
|
|
22
|
+
exports.isPlainObject = isPlainObject;
|
|
23
|
+
exports.isStructuredCloneBuiltin = isStructuredCloneBuiltin;
|
|
24
|
+
exports.unwrapTransferSentinels = unwrapTransferSentinels;
|
|
25
|
+
/** Names the type a marker carries, and marks the object as one of ours. */
|
|
26
|
+
exports.TRANSFER_TYPE_KEY = '__n8nType';
|
|
27
|
+
/** Marks a wrapper whose payload is user data, not a marker. */
|
|
28
|
+
exports.TRANSFER_ESCAPED_KEY = '__n8nEscaped';
|
|
29
|
+
/** Marks an escaped payload the host must return without any walk. */
|
|
30
|
+
exports.TRANSFER_OPAQUE_KEY = '__n8nOpaque';
|
|
31
|
+
/** Holds the payload of an escaped wrapper. */
|
|
32
|
+
exports.TRANSFER_VALUE_KEY = '__value';
|
|
33
|
+
/**
|
|
34
|
+
* Keys that make an object look like our framing.
|
|
35
|
+
*
|
|
36
|
+
* An object with one of these own keys is escaped, so the host reads it as
|
|
37
|
+
* data. The opaque flag is in the set for the same reason. If it were not, user
|
|
38
|
+
* data that holds it would make the host return an object without a walk.
|
|
39
|
+
*
|
|
40
|
+
* One type key covers every marker, so a new type does not grow this set.
|
|
41
|
+
*/
|
|
42
|
+
exports.TRANSFER_FRAMING_KEYS = [
|
|
43
|
+
exports.TRANSFER_TYPE_KEY,
|
|
44
|
+
exports.TRANSFER_ESCAPED_KEY,
|
|
45
|
+
exports.TRANSFER_OPAQUE_KEY,
|
|
46
|
+
];
|
|
47
|
+
function readKey(value, key) {
|
|
48
|
+
if (typeof value !== 'object' || value === null)
|
|
49
|
+
return undefined;
|
|
50
|
+
return Reflect.get(value, key);
|
|
51
|
+
}
|
|
52
|
+
/** The type a marker names, or nothing when the value is not a marker. */
|
|
53
|
+
function transferTypeOf(value) {
|
|
54
|
+
const type = readKey(value, exports.TRANSFER_TYPE_KEY);
|
|
55
|
+
return typeof type === 'string' ? type : undefined;
|
|
56
|
+
}
|
|
57
|
+
function isTransferSentinel(value) {
|
|
58
|
+
return transferTypeOf(value) !== undefined;
|
|
59
|
+
}
|
|
60
|
+
function isEscapedTransferValue(value) {
|
|
61
|
+
return readKey(value, exports.TRANSFER_ESCAPED_KEY) === true;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* An escaped wrapper whose payload must be returned as data without any
|
|
65
|
+
* further inspection for markers.
|
|
66
|
+
*/
|
|
67
|
+
function isOpaqueTransferValue(value) {
|
|
68
|
+
return readKey(value, exports.TRANSFER_OPAQUE_KEY) === true;
|
|
69
|
+
}
|
|
70
|
+
/** Type guard: plain object with Object.prototype or null prototype. */
|
|
71
|
+
function isPlainObject(value) {
|
|
72
|
+
const proto = Object.getPrototypeOf(value);
|
|
73
|
+
return proto === Object.prototype || proto === null;
|
|
74
|
+
}
|
|
75
|
+
/** Types that structured clone copies with the prototype intact. */
|
|
76
|
+
function isStructuredCloneBuiltin(value) {
|
|
77
|
+
return (value instanceof Date ||
|
|
78
|
+
value instanceof RegExp ||
|
|
79
|
+
value instanceof Map ||
|
|
80
|
+
value instanceof Set ||
|
|
81
|
+
value instanceof Error ||
|
|
82
|
+
value instanceof Promise ||
|
|
83
|
+
value instanceof ArrayBuffer ||
|
|
84
|
+
ArrayBuffer.isView(value));
|
|
85
|
+
}
|
|
86
|
+
function unwrapPlainObject(value, decode, seen) {
|
|
87
|
+
const result = {};
|
|
88
|
+
// Record the result before the walk. A value that refers to itself then
|
|
89
|
+
// resolves to the same object.
|
|
90
|
+
seen.set(value, result);
|
|
91
|
+
for (const key of Object.keys(value)) {
|
|
92
|
+
result[key] = unwrapValue(value[key], decode, seen);
|
|
93
|
+
}
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
function unwrapValue(value, decode, seen) {
|
|
97
|
+
if (value === null || value === undefined)
|
|
98
|
+
return value;
|
|
99
|
+
if (typeof value !== 'object')
|
|
100
|
+
return value;
|
|
101
|
+
if (seen.has(value))
|
|
102
|
+
return seen.get(value);
|
|
103
|
+
if (Array.isArray(value)) {
|
|
104
|
+
const result = new Array(value.length);
|
|
105
|
+
seen.set(value, result);
|
|
106
|
+
// `forEach` steps over the holes of a sparse array, which keeps it sparse.
|
|
107
|
+
value.forEach((item, index) => {
|
|
108
|
+
result[index] = unwrapValue(item, decode, seen);
|
|
109
|
+
});
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
if (!isPlainObject(value))
|
|
113
|
+
return value;
|
|
114
|
+
if (isTransferSentinel(value))
|
|
115
|
+
return decode(value);
|
|
116
|
+
if (isEscapedTransferValue(value)) {
|
|
117
|
+
const inner = value[exports.TRANSFER_VALUE_KEY];
|
|
118
|
+
// An opaque payload is a value the guest could not walk, so nothing in it
|
|
119
|
+
// is our framing. Give it back as it is. A walked payload only had its own
|
|
120
|
+
// keys collide, so the walk goes on below and rebuilds markers deeper in.
|
|
121
|
+
if (isOpaqueTransferValue(value))
|
|
122
|
+
return inner;
|
|
123
|
+
if (typeof inner !== 'object' || inner === null)
|
|
124
|
+
return inner;
|
|
125
|
+
// An array payload is walked as an array. Its own entries carry no framing,
|
|
126
|
+
// so reading it as a marker is never right.
|
|
127
|
+
if (Array.isArray(inner))
|
|
128
|
+
return unwrapValue(inner, decode, seen);
|
|
129
|
+
if (!isPlainObject(inner))
|
|
130
|
+
return inner;
|
|
131
|
+
return unwrapPlainObject(inner, decode, seen);
|
|
132
|
+
}
|
|
133
|
+
return unwrapPlainObject(value, decode, seen);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Say whether a value holds anything the walk would rebuild.
|
|
137
|
+
*
|
|
138
|
+
* Reads the same shapes the walk reads and builds nothing, so a result with no
|
|
139
|
+
* marker in it costs a read and no memory. `for...in` over a plain object and
|
|
140
|
+
* an index loop over an array both avoid the key array `Object.keys` returns.
|
|
141
|
+
*/
|
|
142
|
+
function holdsSentinel(value, seen) {
|
|
143
|
+
if (value === null || typeof value !== 'object')
|
|
144
|
+
return false;
|
|
145
|
+
if (seen.has(value))
|
|
146
|
+
return false;
|
|
147
|
+
seen.add(value);
|
|
148
|
+
if (Array.isArray(value)) {
|
|
149
|
+
for (let index = 0; index < value.length; index++) {
|
|
150
|
+
if (holdsSentinel(value[index], seen))
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
if (!isPlainObject(value))
|
|
156
|
+
return false;
|
|
157
|
+
if (isTransferSentinel(value) || isEscapedTransferValue(value))
|
|
158
|
+
return true;
|
|
159
|
+
for (const key in value) {
|
|
160
|
+
if (holdsSentinel(value[key], seen))
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Rebuild instances from the markers `__prepareForTransfer` emits.
|
|
167
|
+
*
|
|
168
|
+
* Walks the same shapes that function walks: a top-level value, arrays, and
|
|
169
|
+
* plain objects. Other structured-cloneable types are returned untouched.
|
|
170
|
+
* A payload marked opaque is returned as data, without any inspection.
|
|
171
|
+
* Objects already visited are reused, so a graph that repeats or contains
|
|
172
|
+
* itself is walked once.
|
|
173
|
+
*
|
|
174
|
+
* A value that holds no marker is given back as it is. The walk copies every
|
|
175
|
+
* plain object and array it enters, and most results carry no marker at all,
|
|
176
|
+
* so the copy would double what an expression allocates for nothing.
|
|
177
|
+
*/
|
|
178
|
+
function unwrapTransferSentinels(value, decode) {
|
|
179
|
+
if (!holdsSentinel(value, new Set()))
|
|
180
|
+
return value;
|
|
181
|
+
return unwrapValue(value, decode, new Map());
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=transfer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../../src/runtime/transfer.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,17 @@ export interface RuntimeBridge {
|
|
|
14
14
|
* Must be called before any execute() calls.
|
|
15
15
|
*/
|
|
16
16
|
initialize(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Synchronous variant of initialize(), for creating a bridge on demand
|
|
19
|
+
* from inside the synchronous evaluate() path (lazy acquisition with an
|
|
20
|
+
* exhausted pool). Optional: a bridge whose setup is inherently async can
|
|
21
|
+
* omit it, but then it can only enter service through pool warmup.
|
|
22
|
+
*
|
|
23
|
+
* May require one-time async preparation to have happened earlier in the
|
|
24
|
+
* process (e.g. QuickJS's WASM module load); implementations must throw a
|
|
25
|
+
* clear error when that preparation is missing.
|
|
26
|
+
*/
|
|
27
|
+
initializeSync?(): void;
|
|
17
28
|
/**
|
|
18
29
|
* Execute JavaScript code in the isolated context.
|
|
19
30
|
*
|
|
@@ -65,6 +76,11 @@ export interface BridgeConfig {
|
|
|
65
76
|
timeout?: number;
|
|
66
77
|
/** Optional logger. Falls back to no-op if not provided. */
|
|
67
78
|
logger?: Logger;
|
|
79
|
+
/**
|
|
80
|
+
* Reuse V8 compile cache for the runtime bundle. isolated-vm only.
|
|
81
|
+
* Default: false
|
|
82
|
+
*/
|
|
83
|
+
compileCache?: boolean;
|
|
68
84
|
}
|
|
69
85
|
/** Default values for BridgeConfig. Bridge implementations should use this as their baseline. */
|
|
70
86
|
export declare const DEFAULT_BRIDGE_CONFIG: Required<BridgeConfig>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/types/bridge.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC7B;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC;IAE7E;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,MAAM;IACtB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/types/bridge.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC7B;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;;;;;;;;OASG;IACH,cAAc,CAAC,IAAI,IAAI,CAAC;IAExB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC;IAE7E;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,MAAM;IACtB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AASD,iGAAiG;AACjG,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,YAAY,CAKxD,CAAC;AAEF,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB"}
|
package/dist/cjs/types/bridge.js
CHANGED
|
@@ -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;;;AAiG/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;IACpB,YAAY,EAAE,KAAK;CACnB,CAAC"}
|
|
@@ -32,6 +32,15 @@ export interface EvaluatorConfig {
|
|
|
32
32
|
poolSize?: number;
|
|
33
33
|
/** If set, scale the pool to 0 warm bridges after this many ms with no isolate acquire. */
|
|
34
34
|
idleTimeoutMs?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Lazy acquisition mode (prototype): acquire() only opens a scope for the
|
|
37
|
+
* caller; the bridge is created synchronously on the first evaluate() that
|
|
38
|
+
* actually needs the engine. Callers whose expressions never reach the
|
|
39
|
+
* engine (e.g. handled by a host-side fast path) never consume a bridge.
|
|
40
|
+
* On pool exhaustion the bridge is cold-started synchronously via
|
|
41
|
+
* RuntimeBridge.initializeSync().
|
|
42
|
+
*/
|
|
43
|
+
lazyAcquire?: boolean;
|
|
35
44
|
/** Optional logger. Passed through to pool. Falls back to no-op. */
|
|
36
45
|
logger?: Logger;
|
|
37
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../src/types/evaluator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../src/types/evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../src/types/evaluator.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../src/types/evaluator.ts"],"names":[],"mappings":";;;AAyVA,+EAA+E;AAC/E,uDAAuD;AACvD,EAAE;AACF,0DAA0D;AAC1D,wDAAwD;AACxD,+EAA+E;AAE/E;;GAEG;AACH,qBAA6B,SAAQ,KAAK;IAGjC,OAAO;IAFf,YACC,OAAe,EACR,OAKN;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;uBAPR,OAAO;QAQd,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAC/B,CAAC;CACD;;AAED;;GAEG;AACH,sBAA8B,SAAQ,eAAe;CAAG;;AACxD,kBAA0B,SAAQ,eAAe;CAAG;;AACpD,4BAAoC,SAAQ,eAAe;CAAG;;AAC9D,iBAAyB,SAAQ,eAAe;CAAG"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { WorkflowData } from '../types';
|
|
2
|
+
import type { ErrorSentinel } from '../runtime/lazy-proxy';
|
|
3
|
+
/** Check if a value is an error sentinel returned by serializeError. */
|
|
4
|
+
export declare function isErrorSentinel(value: unknown): value is ErrorSentinel;
|
|
5
|
+
/**
|
|
6
|
+
* Serialize an error into a transferable metadata object.
|
|
7
|
+
*
|
|
8
|
+
* Host-side callbacks (getValueAtPath, etc.) catch errors and return this
|
|
9
|
+
* sentinel instead of letting the error cross the boundary (which strips
|
|
10
|
+
* custom class identity and properties). The guest-side proxy detects
|
|
11
|
+
* __isError and throws the sentinel; the host reconstructs a real Error
|
|
12
|
+
* after it round-trips back (see reconstructError).
|
|
13
|
+
*/
|
|
14
|
+
export declare function serializeError(err: unknown): ErrorSentinel;
|
|
15
|
+
/**
|
|
16
|
+
* Reconstruct an error from a serialized error sentinel.
|
|
17
|
+
*
|
|
18
|
+
* Restores the name, stack, and custom properties that would otherwise be
|
|
19
|
+
* lost crossing the guest boundary.
|
|
20
|
+
*/
|
|
21
|
+
export declare function reconstructError(data: ErrorSentinel): Error;
|
|
22
|
+
/**
|
|
23
|
+
* Navigate the data object by path and return metadata or a primitive value.
|
|
24
|
+
*
|
|
25
|
+
* Used by createDeepLazyProxy when accessing properties. Returns metadata
|
|
26
|
+
* markers for arrays and objects, or the primitive value directly.
|
|
27
|
+
*
|
|
28
|
+
* Special-case: paths starting with ['$item', index] call data.$item(index)
|
|
29
|
+
* to get the sub-proxy for that item, then continue navigating the rest;
|
|
30
|
+
* likewise ['$', nodeName] calls data.$(nodeName).
|
|
31
|
+
*
|
|
32
|
+
* Function-typed values are returned as `undefined` — every callable on
|
|
33
|
+
* the host data surface (`$('Foo').first()`, `$items()`, `$fromAI()`,
|
|
34
|
+
* `$evaluateExpression()`, `$getPairedItem()`) is wired guest-side via
|
|
35
|
+
* the typed-RPC dispatcher (`callHost`). No expression form should
|
|
36
|
+
* reach a function through this path (invariant:
|
|
37
|
+
* __tests__/host-fn-shadowing.test.ts).
|
|
38
|
+
*/
|
|
39
|
+
export declare function getValueAtPath(data: WorkflowData, pathArr: string[]): unknown;
|
|
40
|
+
/**
|
|
41
|
+
* Get an array element at an index, navigating to the array by path first
|
|
42
|
+
* (same `$`/`$item` special-casing as getValueAtPath).
|
|
43
|
+
*
|
|
44
|
+
* Used by the array proxy when accessing numeric indices.
|
|
45
|
+
*/
|
|
46
|
+
export declare function getArrayElement(data: WorkflowData, pathArr: string[], index: number): unknown;
|
|
47
|
+
/**
|
|
48
|
+
* Host-side dispatcher for the typed-RPC `callHost` channel.
|
|
49
|
+
*
|
|
50
|
+
* The guest sends one envelope per typed RPC invocation:
|
|
51
|
+
* `callHost({ type: 'getNodeFirst', nodeName, branchIndex?, runIndex? })`
|
|
52
|
+
*
|
|
53
|
+
* Inputs cross a trust boundary, so the dispatcher parses every envelope
|
|
54
|
+
* with the host-side zod schema (`bridgeMessageSchema`) before any
|
|
55
|
+
* dispatch happens. Anything that deviates from the declared shape —
|
|
56
|
+
* unknown `type`, missing required fields, extra unexpected fields,
|
|
57
|
+
* wrong field types — fails the parse and throws; the calling bridge
|
|
58
|
+
* catches and returns an error sentinel to the guest.
|
|
59
|
+
*
|
|
60
|
+
* After parsing, `switch (msg.type)` dispatches with a fully narrowed
|
|
61
|
+
* message type. The operation set is exactly the cases in this switch;
|
|
62
|
+
* the `type` field selects a static branch in source, not a property
|
|
63
|
+
* lookup on a runtime object. Each case reads a fixed literal property
|
|
64
|
+
* name off the host-side data proxy — the guest cannot influence which
|
|
65
|
+
* property is dereferenced.
|
|
66
|
+
*
|
|
67
|
+
* Return-value note: cases must return plain, structured-clone-able,
|
|
68
|
+
* JSON-shaped data. Each bridge marshals the result across its own
|
|
69
|
+
* boundary (structured clone for isolated-vm, sentinel-wrapped JSON
|
|
70
|
+
* round-trip for QuickJS), so engine objects or other non-cloneable
|
|
71
|
+
* values must not be returned.
|
|
72
|
+
*/
|
|
73
|
+
export declare function dispatchHostCall(rawMsg: unknown, data: WorkflowData): unknown;
|
|
74
|
+
//# sourceMappingURL=host-functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-functions.d.ts","sourceRoot":"","sources":["../../../src/bridge/host-functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAc3D,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAMtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAc1D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,KAAK,CAa3D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CA0D7E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAmE7F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CA2G7E"}
|