@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.
Files changed (115) hide show
  1. package/dist/cjs/bridge/bridge-messages.d.ts +8 -8
  2. package/dist/cjs/bridge/bridge-messages.js +234 -244
  3. package/dist/cjs/bridge/bridge-messages.js.map +1 -1
  4. package/dist/cjs/bridge/isolated-vm-bridge.d.ts.map +1 -1
  5. package/dist/cjs/bridge/isolated-vm-bridge.js +633 -643
  6. package/dist/cjs/bridge/isolated-vm-bridge.js.map +1 -1
  7. package/dist/cjs/build.tsbuildinfo +1 -1
  8. package/dist/cjs/evaluator/error-classification.js +15 -25
  9. package/dist/cjs/evaluator/error-classification.js.map +1 -1
  10. package/dist/cjs/evaluator/expression-evaluator.d.ts +7 -1
  11. package/dist/cjs/evaluator/expression-evaluator.d.ts.map +1 -1
  12. package/dist/cjs/evaluator/expression-evaluator.js +152 -155
  13. package/dist/cjs/evaluator/expression-evaluator.js.map +1 -1
  14. package/dist/cjs/evaluator/lru-cache.d.ts.map +1 -1
  15. package/dist/cjs/evaluator/lru-cache.js +35 -45
  16. package/dist/cjs/evaluator/lru-cache.js.map +1 -1
  17. package/dist/cjs/extensions/array-extensions.js +589 -599
  18. package/dist/cjs/extensions/array-extensions.js.map +1 -1
  19. package/dist/cjs/extensions/boolean-extensions.js +38 -48
  20. package/dist/cjs/extensions/boolean-extensions.js.map +1 -1
  21. package/dist/cjs/extensions/date-extensions.js +500 -510
  22. package/dist/cjs/extensions/date-extensions.js.map +1 -1
  23. package/dist/cjs/extensions/expression-extension-error.d.ts.map +1 -1
  24. package/dist/cjs/extensions/expression-extension-error.js +12 -22
  25. package/dist/cjs/extensions/expression-extension-error.js.map +1 -1
  26. package/dist/cjs/extensions/extend.js +162 -172
  27. package/dist/cjs/extensions/extend.js.map +1 -1
  28. package/dist/cjs/extensions/extensions.js +2 -12
  29. package/dist/cjs/extensions/function-extensions.d.ts +10 -18
  30. package/dist/cjs/extensions/function-extensions.d.ts.map +1 -1
  31. package/dist/cjs/extensions/function-extensions.js +78 -88
  32. package/dist/cjs/extensions/function-extensions.js.map +1 -1
  33. package/dist/cjs/extensions/number-extensions.js +225 -235
  34. package/dist/cjs/extensions/number-extensions.js.map +1 -1
  35. package/dist/cjs/extensions/object-extensions.js +286 -296
  36. package/dist/cjs/extensions/object-extensions.js.map +1 -1
  37. package/dist/cjs/extensions/string-extensions.d.ts +1 -1
  38. package/dist/cjs/extensions/string-extensions.d.ts.map +1 -1
  39. package/dist/cjs/extensions/string-extensions.js +758 -768
  40. package/dist/cjs/extensions/string-extensions.js.map +1 -1
  41. package/dist/cjs/extensions/utils.d.ts.map +1 -1
  42. package/dist/cjs/extensions/utils.js +28 -38
  43. package/dist/cjs/extensions/utils.js.map +1 -1
  44. package/dist/cjs/index.js +32 -42
  45. package/dist/cjs/index.js.map +1 -1
  46. package/dist/cjs/observability/metrics.d.ts +27 -27
  47. package/dist/cjs/observability/metrics.d.ts.map +1 -1
  48. package/dist/cjs/observability/metrics.js +59 -69
  49. package/dist/cjs/observability/metrics.js.map +1 -1
  50. package/dist/cjs/observability/noop-provider.js +28 -38
  51. package/dist/cjs/observability/noop-provider.js.map +1 -1
  52. package/dist/cjs/pool/idle-scaling-pool.d.ts.map +1 -1
  53. package/dist/cjs/pool/idle-scaling-pool.js +134 -144
  54. package/dist/cjs/pool/idle-scaling-pool.js.map +1 -1
  55. package/dist/cjs/pool/isolate-pool.d.ts.map +1 -1
  56. package/dist/cjs/pool/isolate-pool.js +101 -111
  57. package/dist/cjs/pool/isolate-pool.js.map +1 -1
  58. package/dist/cjs/runtime/context.js +418 -428
  59. package/dist/cjs/runtime/context.js.map +1 -1
  60. package/dist/cjs/runtime/index.js +26 -36
  61. package/dist/cjs/runtime/index.js.map +1 -1
  62. package/dist/cjs/runtime/jmespath.js +72 -82
  63. package/dist/cjs/runtime/jmespath.js.map +1 -1
  64. package/dist/cjs/runtime/lazy-proxy.js +238 -248
  65. package/dist/cjs/runtime/lazy-proxy.js.map +1 -1
  66. package/dist/cjs/runtime/safe-globals.d.ts.map +1 -1
  67. package/dist/cjs/runtime/safe-globals.js +134 -144
  68. package/dist/cjs/runtime/safe-globals.js.map +1 -1
  69. package/dist/cjs/runtime/serialize.js +54 -64
  70. package/dist/cjs/runtime/serialize.js.map +1 -1
  71. package/dist/cjs/runtime/utils.js +20 -30
  72. package/dist/cjs/runtime/utils.js.map +1 -1
  73. package/dist/cjs/types/bridge.js +15 -25
  74. package/dist/cjs/types/bridge.js.map +1 -1
  75. package/dist/cjs/types/evaluator.d.ts +5 -1
  76. package/dist/cjs/types/evaluator.d.ts.map +1 -1
  77. package/dist/cjs/types/evaluator.js +35 -45
  78. package/dist/cjs/types/evaluator.js.map +1 -1
  79. package/dist/cjs/types/index.js +14 -24
  80. package/dist/cjs/types/index.js.map +1 -1
  81. package/dist/cjs/types/runtime.d.ts.map +1 -1
  82. package/dist/cjs/types/runtime.js +27 -37
  83. package/dist/cjs/types/runtime.js.map +1 -1
  84. package/dist/esm/bridge/bridge-messages.d.ts +8 -8
  85. package/dist/esm/bridge/isolated-vm-bridge.d.ts.map +1 -1
  86. package/dist/esm/bridge/isolated-vm-bridge.js.map +1 -1
  87. package/dist/esm/build.tsbuildinfo +1 -1
  88. package/dist/esm/evaluator/expression-evaluator.d.ts +7 -1
  89. package/dist/esm/evaluator/expression-evaluator.d.ts.map +1 -1
  90. package/dist/esm/evaluator/expression-evaluator.js +8 -1
  91. package/dist/esm/evaluator/expression-evaluator.js.map +1 -1
  92. package/dist/esm/evaluator/lru-cache.d.ts.map +1 -1
  93. package/dist/esm/evaluator/lru-cache.js.map +1 -1
  94. package/dist/esm/extensions/expression-extension-error.d.ts.map +1 -1
  95. package/dist/esm/extensions/function-extensions.d.ts +10 -18
  96. package/dist/esm/extensions/function-extensions.d.ts.map +1 -1
  97. package/dist/esm/extensions/number-extensions.js.map +1 -1
  98. package/dist/esm/extensions/string-extensions.d.ts +1 -1
  99. package/dist/esm/extensions/string-extensions.d.ts.map +1 -1
  100. package/dist/esm/extensions/string-extensions.js.map +1 -1
  101. package/dist/esm/extensions/utils.d.ts.map +1 -1
  102. package/dist/esm/observability/metrics.d.ts +27 -27
  103. package/dist/esm/observability/metrics.d.ts.map +1 -1
  104. package/dist/esm/pool/idle-scaling-pool.d.ts.map +1 -1
  105. package/dist/esm/pool/idle-scaling-pool.js.map +1 -1
  106. package/dist/esm/pool/isolate-pool.d.ts.map +1 -1
  107. package/dist/esm/pool/isolate-pool.js.map +1 -1
  108. package/dist/esm/runtime/lazy-proxy.js.map +1 -1
  109. package/dist/esm/runtime/safe-globals.d.ts.map +1 -1
  110. package/dist/esm/types/evaluator.d.ts +5 -1
  111. package/dist/esm/types/evaluator.d.ts.map +1 -1
  112. package/dist/esm/types/evaluator.js.map +1 -1
  113. package/dist/esm/types/runtime.d.ts.map +1 -1
  114. package/dist/esm/types/runtime.js.map +1 -1
  115. package/package.json +7 -6
@@ -1,154 +1,144 @@
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;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IdleScalingPool = void 0;
4
+ const metrics_1 = require("../observability/metrics");
5
+ const isolate_pool_1 = require("./isolate-pool");
6
+ /**
7
+ * Wraps an `IsolatePool`, disposing it after a configured idle period and
8
+ * recreating it on the next acquire. The inner pool either fully exists or
9
+ * does not; callers never observe a partial state.
10
+ */
11
+ class IdleScalingPool {
12
+ createBridge;
13
+ size;
14
+ idleTimeoutMs;
15
+ onReplenishFailed;
16
+ logger;
17
+ observability;
18
+ innerPool = null;
19
+ pendingScaleUp = null;
20
+ pendingScaleDown = null;
21
+ idleTimer;
22
+ disposed = false;
23
+ disposePromise;
24
+ constructor(createBridge, size, idleTimeoutMs, onReplenishFailed, logger, observability) {
25
+ this.createBridge = createBridge;
26
+ this.size = size;
27
+ this.idleTimeoutMs = idleTimeoutMs;
28
+ this.onReplenishFailed = onReplenishFailed;
29
+ this.logger = logger;
30
+ this.observability = observability;
5
31
  }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "../observability/metrics", "./isolate-pool"], factory);
32
+ async initialize() {
33
+ this.innerPool = this.createInnerPool();
34
+ await this.innerPool.initialize();
35
+ this.resetIdleTimer();
8
36
  }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.IdleScalingPool = void 0;
13
- const metrics_1 = require("../observability/metrics");
14
- const isolate_pool_1 = require("./isolate-pool");
15
- /**
16
- * Wraps an `IsolatePool`, disposing it after a configured idle period and
17
- * recreating it on the next acquire. The inner pool either fully exists or
18
- * does not; callers never observe a partial state.
19
- */
20
- class IdleScalingPool {
21
- createBridge;
22
- size;
23
- idleTimeoutMs;
24
- onReplenishFailed;
25
- logger;
26
- observability;
27
- innerPool = null;
28
- pendingScaleUp = null;
29
- pendingScaleDown = null;
30
- idleTimer;
31
- disposed = false;
32
- disposePromise;
33
- constructor(createBridge, size, idleTimeoutMs, onReplenishFailed, logger, observability) {
34
- this.createBridge = createBridge;
35
- this.size = size;
36
- this.idleTimeoutMs = idleTimeoutMs;
37
- this.onReplenishFailed = onReplenishFailed;
38
- this.logger = logger;
39
- this.observability = observability;
37
+ acquire() {
38
+ if (this.disposed)
39
+ throw new isolate_pool_1.PoolDisposedError();
40
+ if (!this.innerPool) {
41
+ this.triggerScaleUp();
42
+ throw new isolate_pool_1.PoolExhaustedError();
40
43
  }
41
- async initialize() {
42
- this.innerPool = this.createInnerPool();
43
- await this.innerPool.initialize();
44
- this.resetIdleTimer();
45
- }
46
- acquire() {
47
- if (this.disposed)
48
- throw new isolate_pool_1.PoolDisposedError();
49
- if (!this.innerPool) {
50
- this.triggerScaleUp();
51
- throw new isolate_pool_1.PoolExhaustedError();
52
- }
53
- this.resetIdleTimer();
54
- return this.innerPool.acquire();
55
- }
56
- async release(bridge) {
57
- if (this.innerPool && !this.disposed) {
58
- // Pool is live: delegate so the inner pool disposes and replenishes.
59
- await this.innerPool.release(bridge);
60
- }
61
- else if (!bridge.isDisposed()) {
62
- // Pool is idle, disposed, or the bridge came from cold-start fallback:
63
- // no pool to delegate to, just dispose to free the V8 isolate.
64
- await bridge.dispose();
65
- }
66
- }
67
- async dispose() {
68
- return (this.disposePromise ??= this.doDispose());
69
- }
70
- async doDispose() {
71
- this.disposed = true;
72
- if (this.idleTimer) {
73
- clearTimeout(this.idleTimer);
74
- this.idleTimer = undefined;
75
- }
76
- await this.drainPendingTransitions();
77
- if (this.innerPool) {
78
- const toDispose = this.innerPool;
79
- this.innerPool = null;
80
- await toDispose.dispose();
81
- }
82
- }
83
- async waitForReplenishment() {
84
- await this.drainPendingTransitions();
85
- if (this.innerPool)
86
- await this.innerPool.waitForReplenishment();
87
- }
88
- async drainPendingTransitions() {
89
- // Snapshot both fields before awaiting so a transition starting between reads
90
- // can't be missed. Waits for transitions in flight now, not ones started later.
91
- const promises = [];
92
- if (this.pendingScaleUp)
93
- promises.push(this.pendingScaleUp.catch(() => { }));
94
- if (this.pendingScaleDown)
95
- promises.push(this.pendingScaleDown.catch(() => { }));
96
- await Promise.all(promises);
44
+ this.resetIdleTimer();
45
+ return this.innerPool.acquire();
46
+ }
47
+ async release(bridge) {
48
+ if (this.innerPool && !this.disposed) {
49
+ // Pool is live: delegate so the inner pool disposes and replenishes.
50
+ await this.innerPool.release(bridge);
97
51
  }
98
- createInnerPool() {
99
- return new isolate_pool_1.IsolatePool(this.createBridge, this.size, this.onReplenishFailed, this.logger);
52
+ else if (!bridge.isDisposed()) {
53
+ // Pool is idle, disposed, or the bridge came from cold-start fallback:
54
+ // no pool to delegate to, just dispose to free the V8 isolate.
55
+ await bridge.dispose();
100
56
  }
101
- resetIdleTimer() {
102
- if (this.idleTimeoutMs === undefined)
103
- return;
104
- if (this.idleTimer)
105
- clearTimeout(this.idleTimer);
106
- this.idleTimer = setTimeout(() => this.triggerScaleDown(), this.idleTimeoutMs);
107
- this.idleTimer.unref();
108
- }
109
- triggerScaleUp() {
110
- if (this.pendingScaleUp || this.innerPool || this.disposed)
111
- return;
112
- this.logger?.debug('[IdleScalingPool] Scaling up from idle');
113
- this.observability?.metrics.counter(metrics_1.EXPRESSION_METRICS.poolScaledUp.name, 1);
114
- const newInner = this.createInnerPool();
115
- this.pendingScaleUp = newInner
116
- .initialize()
117
- .then(async () => {
118
- if (this.disposed) {
119
- await newInner.dispose();
120
- return;
121
- }
122
- this.innerPool = newInner;
123
- this.resetIdleTimer();
124
- })
125
- .catch(async (error) => {
126
- this.logger?.error('[IdleScalingPool] Scale-up failed', { error });
127
- await newInner.dispose().catch(() => { });
128
- })
129
- .finally(() => {
130
- this.pendingScaleUp = null;
131
- });
57
+ }
58
+ async dispose() {
59
+ return (this.disposePromise ??= this.doDispose());
60
+ }
61
+ async doDispose() {
62
+ this.disposed = true;
63
+ if (this.idleTimer) {
64
+ clearTimeout(this.idleTimer);
65
+ this.idleTimer = undefined;
132
66
  }
133
- triggerScaleDown() {
134
- if (this.pendingScaleDown || this.pendingScaleUp || !this.innerPool || this.disposed)
135
- return;
136
- this.logger?.debug('[IdleScalingPool] Scaling to 0 after inactivity', {
137
- idleTimeoutMs: this.idleTimeoutMs,
138
- });
139
- this.observability?.metrics.counter(metrics_1.EXPRESSION_METRICS.poolScaledToZero.name, 1);
140
- const oldInner = this.innerPool;
67
+ await this.drainPendingTransitions();
68
+ if (this.innerPool) {
69
+ const toDispose = this.innerPool;
141
70
  this.innerPool = null;
142
- this.pendingScaleDown = oldInner
143
- .dispose()
144
- .catch((error) => {
145
- this.logger?.error('[IdleScalingPool] Scale-down dispose failed', { error });
146
- })
147
- .finally(() => {
148
- this.pendingScaleDown = null;
149
- });
71
+ await toDispose.dispose();
150
72
  }
151
73
  }
152
- exports.IdleScalingPool = IdleScalingPool;
153
- });
74
+ async waitForReplenishment() {
75
+ await this.drainPendingTransitions();
76
+ if (this.innerPool)
77
+ await this.innerPool.waitForReplenishment();
78
+ }
79
+ async drainPendingTransitions() {
80
+ // Snapshot both fields before awaiting so a transition starting between reads
81
+ // can't be missed. Waits for transitions in flight now, not ones started later.
82
+ const promises = [];
83
+ if (this.pendingScaleUp)
84
+ promises.push(this.pendingScaleUp.catch(() => { }));
85
+ if (this.pendingScaleDown)
86
+ promises.push(this.pendingScaleDown.catch(() => { }));
87
+ await Promise.all(promises);
88
+ }
89
+ createInnerPool() {
90
+ return new isolate_pool_1.IsolatePool(this.createBridge, this.size, this.onReplenishFailed, this.logger);
91
+ }
92
+ resetIdleTimer() {
93
+ if (this.idleTimeoutMs === undefined)
94
+ return;
95
+ if (this.idleTimer)
96
+ clearTimeout(this.idleTimer);
97
+ this.idleTimer = setTimeout(() => this.triggerScaleDown(), this.idleTimeoutMs);
98
+ this.idleTimer.unref();
99
+ }
100
+ triggerScaleUp() {
101
+ if (this.pendingScaleUp || this.innerPool || this.disposed)
102
+ return;
103
+ this.logger?.debug('[IdleScalingPool] Scaling up from idle');
104
+ this.observability?.metrics.counter(metrics_1.EXPRESSION_METRICS.poolScaledUp.name, 1);
105
+ const newInner = this.createInnerPool();
106
+ this.pendingScaleUp = newInner
107
+ .initialize()
108
+ .then(async () => {
109
+ if (this.disposed) {
110
+ await newInner.dispose();
111
+ return;
112
+ }
113
+ this.innerPool = newInner;
114
+ this.resetIdleTimer();
115
+ })
116
+ .catch(async (error) => {
117
+ this.logger?.error('[IdleScalingPool] Scale-up failed', { error });
118
+ await newInner.dispose().catch(() => { });
119
+ })
120
+ .finally(() => {
121
+ this.pendingScaleUp = null;
122
+ });
123
+ }
124
+ triggerScaleDown() {
125
+ if (this.pendingScaleDown || this.pendingScaleUp || !this.innerPool || this.disposed)
126
+ return;
127
+ this.logger?.debug('[IdleScalingPool] Scaling to 0 after inactivity', {
128
+ idleTimeoutMs: this.idleTimeoutMs,
129
+ });
130
+ this.observability?.metrics.counter(metrics_1.EXPRESSION_METRICS.poolScaledToZero.name, 1);
131
+ const oldInner = this.innerPool;
132
+ this.innerPool = null;
133
+ this.pendingScaleDown = oldInner
134
+ .dispose()
135
+ .catch((error) => {
136
+ this.logger?.error('[IdleScalingPool] Scale-down dispose failed', { error });
137
+ })
138
+ .finally(() => {
139
+ this.pendingScaleDown = null;
140
+ });
141
+ }
142
+ }
143
+ exports.IdleScalingPool = IdleScalingPool;
154
144
  //# sourceMappingURL=idle-scaling-pool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"idle-scaling-pool.js","sourceRoot":"","sources":["../../../src/pool/idle-scaling-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"idle-scaling-pool.js","sourceRoot":"","sources":["../../../src/pool/idle-scaling-pool.ts"],"names":[],"mappings":"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"}
@@ -1 +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;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,qBAAa,iBAAkB,SAAQ,YAAY;;CAKlD;AAED,qBAAa,kBAAmB,SAAQ,YAAY;;CAKnD;AAED,iEAAiE;AACjE,MAAM,WAAW,KAAK;IACrB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,IAAI,aAAa,CAAC;IACzB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,qBAAa,WAAY,YAAW,KAAK;IASvC,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"}
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;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,qBAAa,iBAAkB,SAAQ,YAAY;IAClD,cAGC;CACD;AAED,qBAAa,kBAAmB,SAAQ,YAAY;IACnD,cAGC;CACD;AAED,iEAAiE;AACjE,MAAM,WAAW,KAAK;IACrB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,IAAI,aAAa,CAAC;IACzB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,qBAAa,WAAY,YAAW,KAAK;IASvC,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;IAErD,YACkB,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,EAC7B;IAEE,UAAU,kBAkBf;IAED;;;OAGG;IACH,OAAO,IAAI,aAAa,CAMvB;IAEK,OAAO,CAAC,MAAM,EAAE,aAAa,iBAGlC;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAK7B;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAK;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAO;IAEhD,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAI1C;IAED,OAAO,CAAC,SAAS;CA4BjB"}
@@ -1,123 +1,113 @@
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;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IsolatePool = exports.PoolExhaustedError = exports.PoolDisposedError = void 0;
4
+ const errors_1 = require("@n8n/errors");
5
+ class PoolDisposedError extends errors_1.IsolateError {
6
+ constructor() {
7
+ super('Pool is disposed');
8
+ this.name = 'PoolDisposedError';
5
9
  }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "@n8n/errors"], factory);
10
+ }
11
+ exports.PoolDisposedError = PoolDisposedError;
12
+ class PoolExhaustedError extends errors_1.IsolateError {
13
+ constructor() {
14
+ super('No isolate bridge available in pool');
15
+ this.name = 'PoolExhaustedError';
8
16
  }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.IsolatePool = exports.PoolExhaustedError = exports.PoolDisposedError = void 0;
13
- const errors_1 = require("@n8n/errors");
14
- class PoolDisposedError extends errors_1.IsolateError {
15
- constructor() {
16
- super('Pool is disposed');
17
- this.name = 'PoolDisposedError';
18
- }
19
- }
20
- exports.PoolDisposedError = PoolDisposedError;
21
- class PoolExhaustedError extends errors_1.IsolateError {
22
- constructor() {
23
- super('No isolate bridge available in pool');
24
- this.name = 'PoolExhaustedError';
25
- }
17
+ }
18
+ exports.PoolExhaustedError = PoolExhaustedError;
19
+ class IsolatePool {
20
+ createBridge;
21
+ size;
22
+ onReplenishFailed;
23
+ logger;
24
+ bridges = [];
25
+ disposed = false;
26
+ /** Number of bridges currently being created. */
27
+ warming = 0;
28
+ /** In-flight isolate replenishment promises. */
29
+ replenishPromises = new Set();
30
+ constructor(createBridge, size, onReplenishFailed, logger) {
31
+ this.createBridge = createBridge;
32
+ this.size = size;
33
+ this.onReplenishFailed = onReplenishFailed;
34
+ this.logger = logger;
26
35
  }
27
- exports.PoolExhaustedError = PoolExhaustedError;
28
- class IsolatePool {
29
- createBridge;
30
- size;
31
- onReplenishFailed;
32
- logger;
33
- bridges = [];
34
- disposed = false;
35
- /** Number of bridges currently being created. */
36
- warming = 0;
37
- /** In-flight isolate replenishment promises. */
38
- replenishPromises = new Set();
39
- constructor(createBridge, size, onReplenishFailed, logger) {
40
- this.createBridge = createBridge;
41
- this.size = size;
42
- this.onReplenishFailed = onReplenishFailed;
43
- this.logger = logger;
44
- }
45
- async initialize() {
46
- const results = await Promise.allSettled(Array.from({ length: this.size }, () => this.createBridge()));
47
- for (const result of results) {
48
- if (result.status === 'fulfilled') {
49
- this.bridges.push(result.value);
50
- }
51
- else {
52
- this.logger?.error('[IsolatePool] Failed to create bridge during init', {
53
- error: result.reason,
54
- });
55
- }
36
+ async initialize() {
37
+ const results = await Promise.allSettled(Array.from({ length: this.size }, () => this.createBridge()));
38
+ for (const result of results) {
39
+ if (result.status === 'fulfilled') {
40
+ this.bridges.push(result.value);
56
41
  }
57
- if (this.bridges.length === 0) {
58
- throw new errors_1.IsolateError('IsolatePool failed to create any bridges');
42
+ else {
43
+ this.logger?.error('[IsolatePool] Failed to create bridge during init', {
44
+ error: result.reason,
45
+ });
59
46
  }
60
47
  }
61
- /**
62
- * Pops a warm bridge from the pool. Kickstarts replenishment.
63
- * Throws if disposed or pool is empty. Callers are expected to handle the empty case by falling back to cold-start bridge creation.
64
- */
65
- acquire() {
66
- if (this.disposed)
67
- throw new PoolDisposedError();
68
- const bridge = this.bridges.shift();
69
- if (!bridge)
70
- throw new PoolExhaustedError();
71
- void this.replenish();
72
- return bridge;
48
+ if (this.bridges.length === 0) {
49
+ throw new errors_1.IsolateError('IsolatePool failed to create any bridges');
73
50
  }
74
- async release(bridge) {
75
- if (!bridge.isDisposed())
76
- await bridge.dispose();
77
- this.replenish();
78
- }
79
- async dispose() {
80
- this.disposed = true;
51
+ }
52
+ /**
53
+ * Pops a warm bridge from the pool. Kickstarts replenishment.
54
+ * Throws if disposed or pool is empty. Callers are expected to handle the empty case by falling back to cold-start bridge creation.
55
+ */
56
+ acquire() {
57
+ if (this.disposed)
58
+ throw new PoolDisposedError();
59
+ const bridge = this.bridges.shift();
60
+ if (!bridge)
61
+ throw new PoolExhaustedError();
62
+ void this.replenish();
63
+ return bridge;
64
+ }
65
+ async release(bridge) {
66
+ if (!bridge.isDisposed())
67
+ await bridge.dispose();
68
+ this.replenish();
69
+ }
70
+ async dispose() {
71
+ this.disposed = true;
72
+ await Promise.all([...this.replenishPromises]);
73
+ await Promise.all(this.bridges.map((b) => b.dispose()));
74
+ this.bridges = [];
75
+ }
76
+ static MAX_REPLENISH_RETRIES = 3;
77
+ static REPLENISH_RETRY_BASE_MS = 500;
78
+ async waitForReplenishment() {
79
+ if (this.replenishPromises.size > 0) {
81
80
  await Promise.all([...this.replenishPromises]);
82
- await Promise.all(this.bridges.map((b) => b.dispose()));
83
- this.bridges = [];
84
- }
85
- static MAX_REPLENISH_RETRIES = 3;
86
- static REPLENISH_RETRY_BASE_MS = 500;
87
- async waitForReplenishment() {
88
- if (this.replenishPromises.size > 0) {
89
- await Promise.all([...this.replenishPromises]);
90
- }
91
81
  }
92
- replenish(attempt = 0) {
93
- if (this.disposed)
94
- return;
95
- if (this.bridges.length + this.warming >= this.size)
82
+ }
83
+ replenish(attempt = 0) {
84
+ if (this.disposed)
85
+ return;
86
+ if (this.bridges.length + this.warming >= this.size)
87
+ return;
88
+ this.warming++;
89
+ let promise;
90
+ promise = this.createBridge()
91
+ .then((bridge) => {
92
+ this.warming--;
93
+ this.replenishPromises.delete(promise);
94
+ if (this.disposed) {
95
+ void bridge.dispose();
96
96
  return;
97
- this.warming++;
98
- let promise;
99
- promise = this.createBridge()
100
- .then((bridge) => {
101
- this.warming--;
102
- this.replenishPromises.delete(promise);
103
- if (this.disposed) {
104
- void bridge.dispose();
105
- return;
106
- }
107
- this.bridges.push(bridge);
108
- })
109
- .catch((error) => {
110
- this.warming--;
111
- this.replenishPromises.delete(promise);
112
- this.onReplenishFailed?.(error);
113
- if (attempt < IsolatePool.MAX_REPLENISH_RETRIES) {
114
- const delay = IsolatePool.REPLENISH_RETRY_BASE_MS * 2 ** attempt;
115
- setTimeout(() => this.replenish(attempt + 1), delay).unref();
116
- }
117
- });
118
- this.replenishPromises.add(promise);
119
- }
97
+ }
98
+ this.bridges.push(bridge);
99
+ })
100
+ .catch((error) => {
101
+ this.warming--;
102
+ this.replenishPromises.delete(promise);
103
+ this.onReplenishFailed?.(error);
104
+ if (attempt < IsolatePool.MAX_REPLENISH_RETRIES) {
105
+ const delay = IsolatePool.REPLENISH_RETRY_BASE_MS * 2 ** attempt;
106
+ setTimeout(() => this.replenish(attempt + 1), delay).unref();
107
+ }
108
+ });
109
+ this.replenishPromises.add(promise);
120
110
  }
121
- exports.IsolatePool = IsolatePool;
122
- });
111
+ }
112
+ exports.IsolatePool = IsolatePool;
123
113
  //# sourceMappingURL=isolate-pool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isolate-pool.js","sourceRoot":"","sources":["../../../src/pool/isolate-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"isolate-pool.js","sourceRoot":"","sources":["../../../src/pool/isolate-pool.ts"],"names":[],"mappings":"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"}