@n8n/expression-runtime 0.7.0 → 0.8.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.
Files changed (82) hide show
  1. package/dist/bundle/runtime.esm.js +17 -17
  2. package/dist/bundle/runtime.esm.js.map +3 -3
  3. package/dist/bundle/runtime.iife.js +17 -17
  4. package/dist/bundle/runtime.iife.js.map +3 -3
  5. package/dist/cjs/bridge/isolated-vm-bridge.d.ts +8 -0
  6. package/dist/cjs/bridge/isolated-vm-bridge.d.ts.map +1 -1
  7. package/dist/cjs/bridge/isolated-vm-bridge.js +223 -117
  8. package/dist/cjs/bridge/isolated-vm-bridge.js.map +1 -1
  9. package/dist/cjs/build.tsbuildinfo +1 -1
  10. package/dist/cjs/evaluator/expression-evaluator.d.ts +8 -1
  11. package/dist/cjs/evaluator/expression-evaluator.d.ts.map +1 -1
  12. package/dist/cjs/evaluator/expression-evaluator.js +60 -5
  13. package/dist/cjs/evaluator/expression-evaluator.js.map +1 -1
  14. package/dist/cjs/extensions/boolean-extensions.d.ts +1 -1
  15. package/dist/cjs/extensions/object-extensions.d.ts.map +1 -1
  16. package/dist/cjs/extensions/object-extensions.js +8 -4
  17. package/dist/cjs/extensions/object-extensions.js.map +1 -1
  18. package/dist/cjs/index.d.ts +1 -1
  19. package/dist/cjs/index.d.ts.map +1 -1
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/cjs/pool/isolate-pool.d.ts +34 -0
  22. package/dist/cjs/pool/isolate-pool.d.ts.map +1 -0
  23. package/dist/cjs/pool/isolate-pool.js +122 -0
  24. package/dist/cjs/pool/isolate-pool.js.map +1 -0
  25. package/dist/cjs/runtime/index.d.ts +9 -0
  26. package/dist/cjs/runtime/index.d.ts.map +1 -1
  27. package/dist/cjs/runtime/index.js.map +1 -1
  28. package/dist/cjs/runtime/lazy-proxy.d.ts +20 -1
  29. package/dist/cjs/runtime/lazy-proxy.d.ts.map +1 -1
  30. package/dist/cjs/runtime/lazy-proxy.js +70 -8
  31. package/dist/cjs/runtime/lazy-proxy.js.map +1 -1
  32. package/dist/cjs/runtime/reset.d.ts.map +1 -1
  33. package/dist/cjs/runtime/reset.js +37 -21
  34. package/dist/cjs/runtime/reset.js.map +1 -1
  35. package/dist/cjs/types/bridge.d.ts +12 -7
  36. package/dist/cjs/types/bridge.d.ts.map +1 -1
  37. package/dist/cjs/types/bridge.js +7 -1
  38. package/dist/cjs/types/bridge.js.map +1 -1
  39. package/dist/cjs/types/evaluator.d.ts +24 -14
  40. package/dist/cjs/types/evaluator.d.ts.map +1 -1
  41. package/dist/cjs/types/evaluator.js.map +1 -1
  42. package/dist/cjs/types/index.d.ts +1 -1
  43. package/dist/cjs/types/index.d.ts.map +1 -1
  44. package/dist/esm/bridge/isolated-vm-bridge.d.ts +8 -0
  45. package/dist/esm/bridge/isolated-vm-bridge.d.ts.map +1 -1
  46. package/dist/esm/bridge/isolated-vm-bridge.js +223 -117
  47. package/dist/esm/bridge/isolated-vm-bridge.js.map +1 -1
  48. package/dist/esm/build.tsbuildinfo +1 -1
  49. package/dist/esm/evaluator/expression-evaluator.d.ts +8 -1
  50. package/dist/esm/evaluator/expression-evaluator.d.ts.map +1 -1
  51. package/dist/esm/evaluator/expression-evaluator.js +59 -4
  52. package/dist/esm/evaluator/expression-evaluator.js.map +1 -1
  53. package/dist/esm/extensions/object-extensions.d.ts.map +1 -1
  54. package/dist/esm/extensions/object-extensions.js +8 -4
  55. package/dist/esm/extensions/object-extensions.js.map +1 -1
  56. package/dist/esm/index.d.ts +1 -1
  57. package/dist/esm/index.d.ts.map +1 -1
  58. package/dist/esm/index.js.map +1 -1
  59. package/dist/esm/pool/isolate-pool.d.ts +34 -0
  60. package/dist/esm/pool/isolate-pool.d.ts.map +1 -0
  61. package/dist/esm/pool/isolate-pool.js +106 -0
  62. package/dist/esm/pool/isolate-pool.js.map +1 -0
  63. package/dist/esm/runtime/index.d.ts +9 -0
  64. package/dist/esm/runtime/index.d.ts.map +1 -1
  65. package/dist/esm/runtime/index.js.map +1 -1
  66. package/dist/esm/runtime/lazy-proxy.d.ts +20 -1
  67. package/dist/esm/runtime/lazy-proxy.d.ts.map +1 -1
  68. package/dist/esm/runtime/lazy-proxy.js +69 -8
  69. package/dist/esm/runtime/lazy-proxy.js.map +1 -1
  70. package/dist/esm/runtime/reset.d.ts.map +1 -1
  71. package/dist/esm/runtime/reset.js +38 -22
  72. package/dist/esm/runtime/reset.js.map +1 -1
  73. package/dist/esm/types/bridge.d.ts +12 -7
  74. package/dist/esm/types/bridge.d.ts.map +1 -1
  75. package/dist/esm/types/bridge.js +7 -1
  76. package/dist/esm/types/bridge.js.map +1 -1
  77. package/dist/esm/types/evaluator.d.ts +24 -14
  78. package/dist/esm/types/evaluator.d.ts.map +1 -1
  79. package/dist/esm/types/evaluator.js.map +1 -1
  80. package/dist/esm/types/index.d.ts +1 -1
  81. package/dist/esm/types/index.d.ts.map +1 -1
  82. package/package.json +6 -4
@@ -4,13 +4,15 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "@n8n/tournament", "./lru-cache"], factory);
7
+ define(["require", "exports", "@n8n/tournament", "../types/bridge", "../pool/isolate-pool", "./lru-cache"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.ExpressionEvaluator = void 0;
13
13
  const tournament_1 = require("@n8n/tournament");
14
+ const bridge_1 = require("../types/bridge");
15
+ const isolate_pool_1 = require("../pool/isolate-pool");
14
16
  const lru_cache_1 = require("./lru-cache");
15
17
  class ExpressionEvaluator {
16
18
  config;
@@ -20,22 +22,53 @@
20
22
  // Cache: template expression → tournament-transformed JavaScript code
21
23
  // Cache hit rate in production: ~99.9% (same expressions repeat within a workflow)
22
24
  codeCache;
25
+ pool;
26
+ bridgesByCaller = new WeakMap();
27
+ createBridge;
23
28
  constructor(config) {
24
29
  this.config = config;
25
30
  this.codeCache = new lru_cache_1.LruCache(config.maxCodeCacheSize, () => {
26
31
  this.config.observability?.metrics.counter('expression.code_cache.eviction', 1);
27
32
  });
33
+ const logger = config.logger ?? bridge_1.DEFAULT_BRIDGE_CONFIG.logger;
34
+ this.createBridge = async () => {
35
+ const bridge = config.createBridge();
36
+ await bridge.initialize();
37
+ return bridge;
38
+ };
39
+ this.pool = new isolate_pool_1.IsolatePool(this.createBridge, config.poolSize ?? 1, (error) => {
40
+ logger.error('[IsolatePool] Failed to replenish bridge', { error });
41
+ config.observability?.metrics.counter('expression.pool.replenish_failed', 1);
42
+ }, logger);
28
43
  }
29
44
  async initialize() {
30
- await this.config.bridge.initialize();
45
+ await this.pool.initialize();
31
46
  }
32
- evaluate(expression, data, options) {
47
+ async acquire(caller) {
48
+ if (this.bridgesByCaller.has(caller))
49
+ return;
50
+ let bridge;
51
+ try {
52
+ bridge = this.pool.acquire();
53
+ }
54
+ catch (error) {
55
+ if (error instanceof isolate_pool_1.PoolDisposedError)
56
+ throw error;
57
+ if (!(error instanceof isolate_pool_1.PoolExhaustedError))
58
+ throw error;
59
+ bridge = await this.createBridge();
60
+ }
61
+ this.config.observability?.metrics.counter('expression.pool.acquired', 1);
62
+ this.bridgesByCaller.set(caller, bridge);
63
+ }
64
+ evaluate(expression, data, caller, options) {
33
65
  if (this.disposed)
34
66
  throw new Error('Evaluator disposed');
67
+ const bridge = this.getBridge(caller);
35
68
  // Transform template expression → sanitized JavaScript (cached)
36
69
  const transformedCode = this.getTransformedCode(expression);
37
70
  try {
38
- const result = this.config.bridge.execute(transformedCode, data, {
71
+ const result = bridge.execute(transformedCode, data, {
39
72
  timezone: options?.timezone,
40
73
  });
41
74
  if (this.config.observability) {
@@ -50,6 +83,28 @@
50
83
  throw error;
51
84
  }
52
85
  }
86
+ getBridge(caller) {
87
+ const bridge = this.bridgesByCaller.get(caller);
88
+ if (!bridge) {
89
+ throw new Error('No bridge acquired for this context. Call acquire() first.');
90
+ }
91
+ // If the isolate died mid-execution (e.g. OOM), all remaining expressions
92
+ // in this execution are expected to fail. Recovery is per-execution, not per-expression.
93
+ if (bridge.isDisposed()) {
94
+ throw new Error('Isolate for this caller is no longer available');
95
+ }
96
+ return bridge;
97
+ }
98
+ async release(caller) {
99
+ const bridge = this.bridgesByCaller.get(caller);
100
+ if (!bridge)
101
+ return;
102
+ this.bridgesByCaller.delete(caller);
103
+ await this.pool.release(bridge);
104
+ }
105
+ async waitForReplenishment() {
106
+ await this.pool.waitForReplenishment();
107
+ }
53
108
  /**
54
109
  * Transform a template expression to executable JavaScript via tournament.
55
110
  *
@@ -86,7 +141,7 @@
86
141
  this.disposed = true;
87
142
  this.codeCache.clear();
88
143
  this.config.observability?.metrics.gauge('expression.code_cache.size', 0);
89
- await this.config.bridge.dispose();
144
+ await this.pool.dispose();
90
145
  }
91
146
  isDisposed() {
92
147
  return this.disposed;
@@ -1 +1 @@
1
- {"version":3,"file":"expression-evaluator.js","sourceRoot":"","sources":["../../../src/evaluator/expression-evaluator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expression-evaluator.js","sourceRoot":"","sources":["../../../src/evaluator/expression-evaluator.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { ExtensionMap } from './extensions';
2
2
  export declare function toBoolean(value: boolean): boolean;
3
- export declare function toInt(value: boolean): 1 | 0;
3
+ export declare function toInt(value: boolean): 0 | 1;
4
4
  export declare function toDateTime(): undefined;
5
5
  export declare const booleanExtensions: ExtensionMap;
6
6
  //# sourceMappingURL=boolean-extensions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"object-extensions.d.ts","sourceRoot":"","sources":["../../../src/extensions/object-extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAmEjD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiB7C;yBAjBe,OAAO;;;;;;;;;;;;AAuBvB,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,UAStC;yBATe,SAAS;;;;;;;;;;;;AAWzB,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,UAEzC;yBAFe,YAAY;;;;;;;;;;;;AAI5B,wBAAgB,KAAK,cAEpB;AAED,wBAAgB,OAAO,cAEtB;AAED,wBAAgB,SAAS,cAExB;AAED,wBAAgB,UAAU,cAEzB;AA+LD,eAAO,MAAM,gBAAgB,EAAE,YAmB9B,CAAC"}
1
+ {"version":3,"file":"object-extensions.d.ts","sourceRoot":"","sources":["../../../src/extensions/object-extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAmEjD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiB7C;yBAjBe,OAAO;;;;;;;;;;;;AA8BvB,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,UAItC;yBAJe,SAAS;;;;;;;;;;;;AAMzB,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,UAEzC;yBAFe,YAAY;;;;;;;;;;;;AAI5B,wBAAgB,KAAK,cAEpB;AAED,wBAAgB,OAAO,cAEtB;AAED,wBAAgB,SAAS,cAExB;AAED,wBAAgB,UAAU,cAEzB;AA+LD,eAAO,MAAM,gBAAgB,EAAE,YAmB9B,CAAC"}
@@ -95,12 +95,16 @@
95
95
  // DIVERGENCE from packages/workflow/src/extensions/object-extensions.ts:
96
96
  // The original uses URLSearchParams which is a Web API unavailable inside the
97
97
  // V8 isolate. encodeURIComponent is an ECMAScript built-in available in all
98
- // V8 contexts and produces the same output for the supported input type.
98
+ // V8 contexts, but it doesn't encode !'()~ which WHATWG requires. The extra
99
+ // replace step covers those characters to match URLSearchParams output.
100
+ function whatwgEncode(str) {
101
+ return encodeURIComponent(str)
102
+ .replace(/%20/g, '+')
103
+ .replace(/[!'()~]/g, (c) => '%' + c.charCodeAt(0).toString(16).toUpperCase());
104
+ }
99
105
  function urlEncode(value) {
100
106
  return Object.entries(value)
101
- .map(([k, v]) => encodeURIComponent(k).replace(/%20/g, '+') +
102
- '=' +
103
- encodeURIComponent(String(v)).replace(/%20/g, '+'))
107
+ .map(([k, v]) => whatwgEncode(k) + '=' + whatwgEncode(String(v)))
104
108
  .join('&');
105
109
  }
106
110
  function toJsonString(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"object-extensions.js","sourceRoot":"","sources":["../../../src/extensions/object-extensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"object-extensions.js","sourceRoot":"","sources":["../../../src/extensions/object-extensions.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  export { ExpressionEvaluator } from './evaluator/expression-evaluator';
2
2
  export { IsolatedVmBridge } from './bridge/isolated-vm-bridge';
3
- export type { IExpressionEvaluator, EvaluatorConfig, WorkflowData, EvaluateOptions, ExecuteOptions, RuntimeBridge, BridgeConfig, ObservabilityProvider, MetricsAPI, TracesAPI, Span, LogsAPI, } from './types';
3
+ export type { IExpressionEvaluator, EvaluatorConfig, WorkflowData, EvaluateOptions, ExecuteOptions, RuntimeBridge, BridgeConfig, Logger, ObservabilityProvider, MetricsAPI, TracesAPI, Span, LogsAPI, } from './types';
4
4
  export { ExpressionError, MemoryLimitError, TimeoutError, SecurityViolationError, SyntaxError, } from './types';
5
5
  export { extend, extendOptional, EXTENSION_OBJECTS } from './extensions/extend';
6
6
  export { ExpressionExtensionError } from './extensions/expression-extension-error';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAIvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,YAAY,EACX,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,UAAU,EACV,SAAS,EACT,IAAI,EACJ,OAAO,GACP,MAAM,SAAS,CAAC;AAGjB,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,WAAW,GACX,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAIvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,YAAY,EACX,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,MAAM,EACN,qBAAqB,EACrB,UAAU,EACV,SAAS,EACT,IAAI,EACJ,OAAO,GACP,MAAM,SAAS,CAAC;AAGjB,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,WAAW,GACX,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,eAAe;IACf,yEAAuE;IAA9D,2HAAA,mBAAmB,OAAA;IAE5B,uEAAuE;IACvE,6EAA6E;IAC7E,kEAA+D;IAAtD,sHAAA,gBAAgB,OAAA;IAkBzB,cAAc;IACd,iCAMiB;IALhB,wGAAA,eAAe,OAAA;IACf,yGAAA,gBAAgB,OAAA;IAChB,qGAAA,YAAY,OAAA;IACZ,+GAAA,sBAAsB,OAAA;IACtB,oGAAA,WAAW,OAAA;IAGZ,4BAA4B;IAC5B,8CAAgF;IAAvE,gGAAA,MAAM,OAAA;IAAE,wGAAA,cAAc,OAAA;IAAE,2GAAA,iBAAiB,OAAA;IAClD,sFAAmF;IAA1E,sIAAA,wBAAwB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,eAAe;IACf,yEAAuE;IAA9D,2HAAA,mBAAmB,OAAA;IAE5B,uEAAuE;IACvE,6EAA6E;IAC7E,kEAA+D;IAAtD,sHAAA,gBAAgB,OAAA;IAmBzB,cAAc;IACd,iCAMiB;IALhB,wGAAA,eAAe,OAAA;IACf,yGAAA,gBAAgB,OAAA;IAChB,qGAAA,YAAY,OAAA;IACZ,+GAAA,sBAAsB,OAAA;IACtB,oGAAA,WAAW,OAAA;IAGZ,4BAA4B;IAC5B,8CAAgF;IAAvE,gGAAA,MAAM,OAAA;IAAE,wGAAA,cAAc,OAAA;IAAE,2GAAA,iBAAiB,OAAA;IAClD,sFAAmF;IAA1E,sIAAA,wBAAwB,OAAA"}
@@ -0,0 +1,34 @@
1
+ import type { RuntimeBridge } from '../types';
2
+ import type { Logger } from '../types/bridge';
3
+ export declare class PoolDisposedError extends Error {
4
+ constructor();
5
+ }
6
+ export declare class PoolExhaustedError extends Error {
7
+ constructor();
8
+ }
9
+ export declare class IsolatePool {
10
+ private readonly createBridge;
11
+ private readonly size;
12
+ private readonly onReplenishFailed?;
13
+ private readonly logger?;
14
+ private bridges;
15
+ private disposed;
16
+ /** Number of bridges currently being created. */
17
+ private warming;
18
+ /** In-flight isolate replenishment promises. */
19
+ private replenishPromises;
20
+ constructor(createBridge: () => Promise<RuntimeBridge>, size: number, onReplenishFailed?: ((error: unknown) => void) | undefined, logger?: Logger | undefined);
21
+ initialize(): Promise<void>;
22
+ /**
23
+ * Pops a warm bridge from the pool. Kickstarts replenishment.
24
+ * Throws if disposed or pool is empty. Callers are expected to handle the empty case by falling back to cold-start bridge creation.
25
+ */
26
+ acquire(): RuntimeBridge;
27
+ release(bridge: RuntimeBridge): Promise<void>;
28
+ dispose(): Promise<void>;
29
+ private static readonly MAX_REPLENISH_RETRIES;
30
+ private static readonly REPLENISH_RETRY_BASE_MS;
31
+ waitForReplenishment(): Promise<void>;
32
+ private replenish;
33
+ }
34
+ //# sourceMappingURL=isolate-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isolate-pool.d.ts","sourceRoot":"","sources":["../../../src/pool/isolate-pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,qBAAa,iBAAkB,SAAQ,KAAK;;CAK3C;AAED,qBAAa,kBAAmB,SAAQ,KAAK;;CAK5C;AAED,qBAAa,WAAW;IAStB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAXzB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,QAAQ,CAAS;IACzB,iDAAiD;IACjD,OAAO,CAAC,OAAO,CAAK;IACpB,gDAAgD;IAChD,OAAO,CAAC,iBAAiB,CAA4B;gBAGnC,YAAY,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,EAC1C,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,GAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,aAAA,EAC5C,MAAM,CAAC,EAAE,MAAM,YAAA;IAG3B,UAAU;IAoBhB;;;OAGG;IACH,OAAO,IAAI,aAAa;IAQlB,OAAO,CAAC,MAAM,EAAE,aAAa;IAK7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAK;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAO;IAEhD,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3C,OAAO,CAAC,SAAS;CA4BjB"}
@@ -0,0 +1,122 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.IsolatePool = exports.PoolExhaustedError = exports.PoolDisposedError = void 0;
13
+ class PoolDisposedError extends Error {
14
+ constructor() {
15
+ super('Pool is disposed');
16
+ this.name = 'PoolDisposedError';
17
+ }
18
+ }
19
+ exports.PoolDisposedError = PoolDisposedError;
20
+ class PoolExhaustedError extends Error {
21
+ constructor() {
22
+ super('No isolate bridge available in pool');
23
+ this.name = 'PoolExhaustedError';
24
+ }
25
+ }
26
+ exports.PoolExhaustedError = PoolExhaustedError;
27
+ class IsolatePool {
28
+ createBridge;
29
+ size;
30
+ onReplenishFailed;
31
+ logger;
32
+ bridges = [];
33
+ disposed = false;
34
+ /** Number of bridges currently being created. */
35
+ warming = 0;
36
+ /** In-flight isolate replenishment promises. */
37
+ replenishPromises = new Set();
38
+ constructor(createBridge, size, onReplenishFailed, logger) {
39
+ this.createBridge = createBridge;
40
+ this.size = size;
41
+ this.onReplenishFailed = onReplenishFailed;
42
+ this.logger = logger;
43
+ }
44
+ async initialize() {
45
+ const results = await Promise.allSettled(Array.from({ length: this.size }, () => this.createBridge()));
46
+ for (const result of results) {
47
+ if (result.status === 'fulfilled') {
48
+ this.bridges.push(result.value);
49
+ }
50
+ else {
51
+ this.logger?.error('[IsolatePool] Failed to create bridge during init', {
52
+ error: result.reason,
53
+ });
54
+ }
55
+ }
56
+ if (this.bridges.length === 0) {
57
+ throw new Error('IsolatePool failed to create any bridges');
58
+ }
59
+ }
60
+ /**
61
+ * Pops a warm bridge from the pool. Kickstarts replenishment.
62
+ * Throws if disposed or pool is empty. Callers are expected to handle the empty case by falling back to cold-start bridge creation.
63
+ */
64
+ acquire() {
65
+ if (this.disposed)
66
+ throw new PoolDisposedError();
67
+ const bridge = this.bridges.shift();
68
+ if (!bridge)
69
+ throw new PoolExhaustedError();
70
+ void this.replenish();
71
+ return bridge;
72
+ }
73
+ async release(bridge) {
74
+ if (!bridge.isDisposed())
75
+ await bridge.dispose();
76
+ this.replenish();
77
+ }
78
+ async dispose() {
79
+ this.disposed = true;
80
+ await Promise.all([...this.replenishPromises]);
81
+ await Promise.all(this.bridges.map((b) => b.dispose()));
82
+ this.bridges = [];
83
+ }
84
+ static MAX_REPLENISH_RETRIES = 3;
85
+ static REPLENISH_RETRY_BASE_MS = 500;
86
+ async waitForReplenishment() {
87
+ if (this.replenishPromises.size > 0) {
88
+ await Promise.all([...this.replenishPromises]);
89
+ }
90
+ }
91
+ replenish(attempt = 0) {
92
+ if (this.disposed)
93
+ return;
94
+ if (this.bridges.length + this.warming >= this.size)
95
+ return;
96
+ this.warming++;
97
+ let promise;
98
+ promise = this.createBridge()
99
+ .then((bridge) => {
100
+ this.warming--;
101
+ this.replenishPromises.delete(promise);
102
+ if (this.disposed) {
103
+ void bridge.dispose();
104
+ return;
105
+ }
106
+ this.bridges.push(bridge);
107
+ })
108
+ .catch((error) => {
109
+ this.warming--;
110
+ this.replenishPromises.delete(promise);
111
+ this.onReplenishFailed?.(error);
112
+ if (attempt < IsolatePool.MAX_REPLENISH_RETRIES) {
113
+ const delay = IsolatePool.REPLENISH_RETRY_BASE_MS * 2 ** attempt;
114
+ setTimeout(() => this.replenish(attempt + 1), delay).unref();
115
+ }
116
+ });
117
+ this.replenishPromises.add(promise);
118
+ }
119
+ }
120
+ exports.IsolatePool = IsolatePool;
121
+ });
122
+ //# sourceMappingURL=isolate-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isolate-pool.js","sourceRoot":"","sources":["../../../src/pool/isolate-pool.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,15 @@ declare global {
28
28
  var $now: import('luxon').DateTime;
29
29
  var $today: import('luxon').DateTime;
30
30
  var $items: unknown;
31
+ var $execution: unknown;
32
+ var $vars: unknown;
33
+ var $secrets: unknown;
34
+ var $executionId: string | undefined;
35
+ var $resumeWebhookUrl: string | undefined;
36
+ var $webhookId: string | undefined;
37
+ var $nodeId: string | undefined;
38
+ var $nodeVersion: number | undefined;
39
+ var $: (nodeName: string) => unknown;
31
40
  }
32
41
  }
33
42
  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,gBAAgB,EAAE,GAAG,CAAC;QAC1B,IAAI,iBAAiB,EAAE,GAAG,CAAC;QAC3B,IAAI,oBAAoB,EAAE,GAAG,CAAC;QAG9B,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAGpC,IAAI,mBAAmB,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC;QAGtD,IAAI,gBAAgB,EAAE,MAAM,IAAI,CAAC;QAGjC,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;QAGzE,IAAI,KAAK,EAAE,OAAO,CAAC;QACnB,IAAI,OAAO,EAAE,OAAO,CAAC;QACrB,IAAI,MAAM,EAAE,OAAO,CAAC;QACpB,IAAI,KAAK,EAAE,OAAO,CAAC;QACnB,IAAI,UAAU,EAAE,OAAO,CAAC;QACxB,IAAI,SAAS,EAAE,OAAO,CAAC;QACvB,IAAI,SAAS,EAAE,OAAO,CAAC;QACvB,IAAI,KAAK,EAAE,OAAO,CAAC;QACnB,IAAI,IAAI,EAAE,OAAO,CAAC;QAClB,IAAI,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;QAClC,IAAI,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,IAAI,IAAI,EAAE,OAAO,OAAO,EAAE,QAAQ,CAAC;QACnC,IAAI,MAAM,EAAE,OAAO,OAAO,EAAE,QAAQ,CAAC;QACrC,IAAI,MAAM,EAAE,OAAO,CAAC;KACpB;CACD"}
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,gBAAgB,EAAE,GAAG,CAAC;QAC1B,IAAI,iBAAiB,EAAE,GAAG,CAAC;QAC3B,IAAI,oBAAoB,EAAE,GAAG,CAAC;QAG9B,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAGpC,IAAI,mBAAmB,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC;QAGtD,IAAI,gBAAgB,EAAE,MAAM,IAAI,CAAC;QAGjC,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;QAGzE,IAAI,KAAK,EAAE,OAAO,CAAC;QACnB,IAAI,OAAO,EAAE,OAAO,CAAC;QACrB,IAAI,MAAM,EAAE,OAAO,CAAC;QACpB,IAAI,KAAK,EAAE,OAAO,CAAC;QACnB,IAAI,UAAU,EAAE,OAAO,CAAC;QACxB,IAAI,SAAS,EAAE,OAAO,CAAC;QACvB,IAAI,SAAS,EAAE,OAAO,CAAC;QACvB,IAAI,KAAK,EAAE,OAAO,CAAC;QACnB,IAAI,IAAI,EAAE,OAAO,CAAC;QAClB,IAAI,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;QAClC,IAAI,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,IAAI,IAAI,EAAE,OAAO,OAAO,EAAE,QAAQ,CAAC;QACnC,IAAI,MAAM,EAAE,OAAO,OAAO,EAAE,QAAQ,CAAC;QACrC,IAAI,MAAM,EAAE,OAAO,CAAC;QACpB,IAAI,UAAU,EAAE,OAAO,CAAC;QACxB,IAAI,KAAK,EAAE,OAAO,CAAC;QACnB,IAAI,QAAQ,EAAE,OAAO,CAAC;QACtB,IAAI,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;QACrC,IAAI,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1C,IAAI,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,IAAI,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;QAChC,IAAI,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;KACrC;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":";;;;;;;;;;;IAAA,iCAAqD;IAErD,iDAA8D;IAE9D,iDAAwE;IACxE,6CAAmD;IACnD,mCAA2C;IAC3C,2CAAmD;IAiDnD,+EAA+E;IAC/E,gBAAgB;IAChB,+EAA+E;IAE/E,gEAAgE;IAChE,UAAU,CAAC,MAAM,GAAG,eAAM,CAAC;IAC3B,UAAU,CAAC,cAAc,GAAG,uBAAc,CAAC;IAC3C,UAAU,CAAC,QAAQ,GAAG,gBAAQ,CAAC;IAC/B,UAAU,CAAC,QAAQ,GAAG,gBAAQ,CAAC;IAC/B,UAAU,CAAC,QAAQ,GAAG,gBAAQ,CAAC;IAE/B,+EAA+E;IAC/E,gDAAgD;IAChD,+EAA+E;IAE/E,UAAU,CAAC,UAAU,GAAG,yBAAU,CAAC;IACnC,UAAU,CAAC,SAAS,GAAG,wBAAS,CAAC;IAChC,UAAkB,CAAC,eAAe,GAAG,8BAAe,CAAC;IAEtD,UAAU,CAAC,mBAAmB,GAAG,gCAAmB,CAAC;IACrD,UAAU,CAAC,gBAAgB,GAAG,wBAAgB,CAAC;IAC/C,UAAU,CAAC,oBAAoB,GAAG,gCAAoB,CAAC;IAEvD,wFAAwF;IACxF,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":";;;;;;;;;;;IAAA,iCAAqD;IAErD,iDAA8D;IAE9D,iDAAwE;IACxE,6CAAmD;IACnD,mCAA2C;IAC3C,2CAAmD;IA0DnD,+EAA+E;IAC/E,gBAAgB;IAChB,+EAA+E;IAE/E,gEAAgE;IAChE,UAAU,CAAC,MAAM,GAAG,eAAM,CAAC;IAC3B,UAAU,CAAC,cAAc,GAAG,uBAAc,CAAC;IAC3C,UAAU,CAAC,QAAQ,GAAG,gBAAQ,CAAC;IAC/B,UAAU,CAAC,QAAQ,GAAG,gBAAQ,CAAC;IAC/B,UAAU,CAAC,QAAQ,GAAG,gBAAQ,CAAC;IAE/B,+EAA+E;IAC/E,gDAAgD;IAChD,+EAA+E;IAE/E,UAAU,CAAC,UAAU,GAAG,yBAAU,CAAC;IACnC,UAAU,CAAC,SAAS,GAAG,wBAAS,CAAC;IAChC,UAAkB,CAAC,eAAe,GAAG,8BAAe,CAAC;IAEtD,UAAU,CAAC,mBAAmB,GAAG,gCAAmB,CAAC;IACrD,UAAU,CAAC,gBAAgB,GAAG,wBAAgB,CAAC;IAC/C,UAAU,CAAC,oBAAoB,GAAG,gCAAoB,CAAC;IAEvD,wFAAwF;IACxF,UAAU,CAAC,MAAM,GAAG,EAAE,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. */
@@ -18,5 +37,5 @@ export declare function getProxyPath(obj: object): string[] | undefined;
18
37
  * @param basePath - Current path in object tree (e.g., ['$json', 'user'])
19
38
  * @returns Proxy object with lazy loading behavior
20
39
  */
21
- export declare function createDeepLazyProxy(basePath?: string[]): any;
40
+ export declare function createDeepLazyProxy(basePath?: string[], knownKeys?: string[]): any;
22
41
  //# 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;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,GAAE,MAAM,EAAO,GAAG,GAAG,CAwJhE"}
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;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,GAAE,MAAM,EAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,CAkMtF"}
@@ -14,6 +14,7 @@
14
14
  })(function (require, exports) {
15
15
  "use strict";
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.throwIfErrorSentinel = throwIfErrorSentinel;
17
18
  exports.isLazyProxy = isLazyProxy;
18
19
  exports.getProxyPath = getProxyPath;
19
20
  exports.createDeepLazyProxy = createDeepLazyProxy;
@@ -22,6 +23,26 @@
22
23
  // expression code. Avoids shadowing user data keys like __isProxy / __path.
23
24
  // ---------------------------------------------------------------------------
24
25
  const proxyPaths = new WeakMap();
26
+ function isObjectMetadata(value) {
27
+ return (typeof value === 'object' &&
28
+ value !== null &&
29
+ '__isObject' in value &&
30
+ value.__isObject === true);
31
+ }
32
+ function isErrorSentinel(value) {
33
+ return (typeof value === 'object' && value !== null && '__isError' in value && value.__isError === true);
34
+ }
35
+ /**
36
+ * If `value` is an error sentinel from a host-side callback, throw it
37
+ * directly. The isolate's outer try-catch will detect __isError and
38
+ * return it as the result. Error reconstruction happens on the host only.
39
+ */
40
+ function throwIfErrorSentinel(value) {
41
+ if (isErrorSentinel(value)) {
42
+ // eslint-disable-next-line @typescript-eslint/no-throw-literal -- sentinel is reconstructed on the host
43
+ throw value;
44
+ }
45
+ }
25
46
  /** Returns true if `obj` is a deep lazy proxy created by createDeepLazyProxy. */
26
47
  function isLazyProxy(obj) {
27
48
  return typeof obj === 'object' && obj !== null && proxyPaths.has(obj);
@@ -46,8 +67,38 @@
46
67
  * @param basePath - Current path in object tree (e.g., ['$json', 'user'])
47
68
  * @returns Proxy object with lazy loading behavior
48
69
  */
49
- function createDeepLazyProxy(basePath = []) {
70
+ function createDeepLazyProxy(basePath = [], knownKeys) {
71
+ // Cache for keys fetched from the bridge (root proxies without knownKeys).
72
+ // Shared between ownKeys and getOwnPropertyDescriptor for consistency.
73
+ let fetchedKeys;
74
+ function resolveKeys() {
75
+ if (knownKeys)
76
+ return knownKeys;
77
+ if (fetchedKeys)
78
+ return fetchedKeys;
79
+ const value = globalThis.__getValueAtPath.applySync(null, [basePath], {
80
+ arguments: { copy: true },
81
+ result: { copy: true },
82
+ });
83
+ throwIfErrorSentinel(value);
84
+ if (isObjectMetadata(value)) {
85
+ fetchedKeys = value.__keys;
86
+ return fetchedKeys;
87
+ }
88
+ return [];
89
+ }
50
90
  const proxy = new Proxy({}, {
91
+ ownKeys() {
92
+ return resolveKeys();
93
+ },
94
+ getOwnPropertyDescriptor(_target, prop) {
95
+ if (typeof prop === 'symbol')
96
+ return undefined;
97
+ if (resolveKeys().includes(prop)) {
98
+ return { configurable: true, enumerable: true, writable: false };
99
+ }
100
+ return undefined;
101
+ },
51
102
  get(target, prop) {
52
103
  // Handle Symbol properties - return undefined
53
104
  // Symbols like Symbol.toStringTag are accessed internally
@@ -84,14 +135,20 @@
84
135
  target[prop] = value;
85
136
  return value;
86
137
  }
138
+ // Handle errors serialized by host-side callbacks — reconstruct and throw
139
+ // so the isolate's outer try-catch can serialize them back via __reportError
140
+ throwIfErrorSentinel(value);
87
141
  // Handle functions - metadata: { __isFunction: true, __name: string }
88
142
  if (value && typeof value === 'object' && value.__isFunction) {
89
143
  // Create function wrapper that calls back to parent
90
144
  target[prop] = function (...args) {
91
- return globalThis.__callFunctionAtPath.applySync(null, [path, ...args], {
145
+ const result = globalThis.__callFunctionAtPath.applySync(null, [path, ...args], {
92
146
  arguments: { copy: true },
93
147
  result: { copy: true },
94
148
  });
149
+ // Check if the host-side function threw — reconstruct and throw
150
+ throwIfErrorSentinel(result);
151
+ return result;
95
152
  };
96
153
  return target[prop];
97
154
  }
@@ -126,15 +183,17 @@
126
183
  arguments: { copy: true },
127
184
  result: { copy: true },
128
185
  });
186
+ throwIfErrorSentinel(element);
129
187
  // Handle element metadata (arrays and objects need proxies)
130
188
  if (element && typeof element === 'object' && element.__isArray) {
131
189
  const elementPath = [...path, String(index)];
132
190
  arrTarget[arrProp] = createDeepLazyProxy(elementPath);
133
191
  }
134
- else if (element && typeof element === 'object' && element.__isObject) {
135
- // Object metadata: create nested proxy
192
+ else if (isObjectMetadata(element)) {
193
+ // Object metadata: create nested proxy, passing known keys to
194
+ // avoid an extra __getValueAtPath round-trip for ownKeys/Object.keys()
136
195
  const elementPath = [...path, String(index)];
137
- arrTarget[arrProp] = createDeepLazyProxy(elementPath);
196
+ arrTarget[arrProp] = createDeepLazyProxy(elementPath, element.__keys);
138
197
  }
139
198
  else {
140
199
  // Primitive element
@@ -152,9 +211,9 @@
152
211
  return target[prop];
153
212
  }
154
213
  // Handle objects - metadata: { __isObject: true, __keys: string[] }
155
- if (value && typeof value === 'object' && value.__isObject) {
156
- // Create nested proxy for recursive lazy loading
157
- target[prop] = createDeepLazyProxy(path);
214
+ if (isObjectMetadata(value)) {
215
+ // Create nested proxy for recursive lazy loading, passing known keys
216
+ target[prop] = createDeepLazyProxy(path, value.__keys);
158
217
  return target[prop];
159
218
  }
160
219
  // Primitive value - cache and return
@@ -176,6 +235,9 @@
176
235
  arguments: { copy: true },
177
236
  result: { copy: true },
178
237
  });
238
+ // Handle errors serialized by host-side callbacks — reconstruct and throw
239
+ // so the isolate's outer try-catch can serialize them back via __reportError
240
+ throwIfErrorSentinel(value);
179
241
  // Property exists if value is not undefined
180
242
  // Note: null values mean property exists but is null
181
243
  return value !== undefined;