@n8n/expression-runtime 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle/runtime.esm.js +1 -1
- package/dist/bundle/runtime.esm.js.map +3 -3
- package/dist/bundle/runtime.iife.js +1 -1
- package/dist/bundle/runtime.iife.js.map +3 -3
- package/dist/cjs/build.tsbuildinfo +1 -1
- package/dist/cjs/evaluator/error-classification.d.ts +3 -0
- package/dist/cjs/evaluator/error-classification.d.ts.map +1 -0
- package/dist/cjs/evaluator/error-classification.js +26 -0
- package/dist/cjs/evaluator/error-classification.js.map +1 -0
- package/dist/cjs/evaluator/expression-evaluator.d.ts.map +1 -1
- package/dist/cjs/evaluator/expression-evaluator.js +31 -16
- package/dist/cjs/evaluator/expression-evaluator.js.map +1 -1
- package/dist/cjs/extensions/function-extensions.d.ts.map +1 -1
- package/dist/cjs/extensions/function-extensions.js +8 -5
- package/dist/cjs/extensions/function-extensions.js.map +1 -1
- package/dist/cjs/index.d.ts +5 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +8 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/observability/metrics.d.ts +65 -0
- package/dist/cjs/observability/metrics.d.ts.map +1 -0
- package/dist/cjs/observability/metrics.js +70 -0
- package/dist/cjs/observability/metrics.js.map +1 -0
- package/dist/cjs/observability/noop-provider.d.ts +3 -0
- package/dist/cjs/observability/noop-provider.d.ts.map +1 -0
- package/dist/cjs/observability/noop-provider.js +39 -0
- package/dist/cjs/observability/noop-provider.js.map +1 -0
- package/dist/cjs/pool/idle-scaling-pool.d.ts +35 -0
- package/dist/cjs/pool/idle-scaling-pool.d.ts.map +1 -0
- package/dist/cjs/pool/idle-scaling-pool.js +154 -0
- package/dist/cjs/pool/idle-scaling-pool.js.map +1 -0
- package/dist/cjs/pool/isolate-pool.d.ts +9 -1
- package/dist/cjs/pool/isolate-pool.d.ts.map +1 -1
- package/dist/cjs/pool/isolate-pool.js.map +1 -1
- package/dist/cjs/types/evaluator.d.ts +2 -0
- package/dist/cjs/types/evaluator.d.ts.map +1 -1
- package/dist/cjs/types/evaluator.js.map +1 -1
- package/dist/esm/build.tsbuildinfo +1 -1
- package/dist/esm/evaluator/error-classification.d.ts +3 -0
- package/dist/esm/evaluator/error-classification.d.ts.map +1 -0
- package/dist/esm/evaluator/error-classification.js +13 -0
- package/dist/esm/evaluator/error-classification.js.map +1 -0
- package/dist/esm/evaluator/expression-evaluator.d.ts.map +1 -1
- package/dist/esm/evaluator/expression-evaluator.js +30 -15
- package/dist/esm/evaluator/expression-evaluator.js.map +1 -1
- package/dist/esm/extensions/function-extensions.d.ts.map +1 -1
- package/dist/esm/extensions/function-extensions.js +8 -5
- package/dist/esm/extensions/function-extensions.js.map +1 -1
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/observability/metrics.d.ts +65 -0
- package/dist/esm/observability/metrics.d.ts.map +1 -0
- package/dist/esm/observability/metrics.js +57 -0
- package/dist/esm/observability/metrics.js.map +1 -0
- package/dist/esm/observability/noop-provider.d.ts +3 -0
- package/dist/esm/observability/noop-provider.d.ts.map +1 -0
- package/dist/esm/observability/noop-provider.js +26 -0
- package/dist/esm/observability/noop-provider.js.map +1 -0
- package/dist/esm/pool/idle-scaling-pool.d.ts +35 -0
- package/dist/esm/pool/idle-scaling-pool.d.ts.map +1 -0
- package/dist/esm/pool/idle-scaling-pool.js +140 -0
- package/dist/esm/pool/idle-scaling-pool.js.map +1 -0
- package/dist/esm/pool/isolate-pool.d.ts +9 -1
- package/dist/esm/pool/isolate-pool.d.ts.map +1 -1
- package/dist/esm/pool/isolate-pool.js.map +1 -1
- package/dist/esm/types/evaluator.d.ts +2 -0
- package/dist/esm/types/evaluator.d.ts.map +1 -1
- package/dist/esm/types/evaluator.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-classification.d.ts","sourceRoot":"","sources":["../../../src/evaluator/error-classification.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,cAAc,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAM3E"}
|
|
@@ -0,0 +1,26 @@
|
|
|
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", "../types"], factory);
|
|
8
|
+
}
|
|
9
|
+
})(function (require, exports) {
|
|
10
|
+
"use strict";
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.classifyExpressionError = classifyExpressionError;
|
|
13
|
+
const types_1 = require("../types");
|
|
14
|
+
function classifyExpressionError(error) {
|
|
15
|
+
if (error instanceof types_1.TimeoutError)
|
|
16
|
+
return 'timeout';
|
|
17
|
+
if (error instanceof types_1.MemoryLimitError)
|
|
18
|
+
return 'memory_limit';
|
|
19
|
+
if (error instanceof types_1.SecurityViolationError)
|
|
20
|
+
return 'security';
|
|
21
|
+
if (error instanceof types_1.SyntaxError)
|
|
22
|
+
return 'syntax';
|
|
23
|
+
return 'unknown';
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=error-classification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-classification.js","sourceRoot":"","sources":["../../../src/evaluator/error-classification.ts"],"names":[],"mappings":";;;;;;;;;;;IAIA,0DAMC;IAVD,oCAA+F;IAI/F,SAAgB,uBAAuB,CAAC,KAAc;QACrD,IAAI,KAAK,YAAY,oBAAY;YAAE,OAAO,SAAS,CAAC;QACpD,IAAI,KAAK,YAAY,wBAAgB;YAAE,OAAO,cAAc,CAAC;QAC7D,IAAI,KAAK,YAAY,8BAAsB;YAAE,OAAO,UAAU,CAAC;QAC/D,IAAI,KAAK,YAAY,mBAAW;YAAE,OAAO,QAAQ,CAAC;QAClD,OAAO,SAAS,CAAC;IAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression-evaluator.d.ts","sourceRoot":"","sources":["../../../src/evaluator/expression-evaluator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,eAAe,
|
|
1
|
+
{"version":3,"file":"expression-evaluator.d.ts","sourceRoot":"","sources":["../../../src/evaluator/expression-evaluator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,eAAe,EAGf,MAAM,UAAU,CAAC;AAyBlB,qBAAa,mBAAoB,YAAW,oBAAoB;IAC/D,OAAO,CAAC,MAAM,CAAkB;IAEhC,OAAO,CAAC,QAAQ,CAAS;IAGzB,OAAO,CAAC,UAAU,CAAC,CAAa;IAIhC,OAAO,CAAC,SAAS,CAA2B;IAE5C,OAAO,CAAC,IAAI,CAAQ;IAEpB,OAAO,CAAC,eAAe,CAAwC;IAE/D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+B;gBAEhD,MAAM,EAAE,eAAe;IA8B7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5C,QAAQ,CACP,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,eAAe,GACvB,OAAO;IAuBV,OAAO,CAAC,SAAS;IAeX,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3C;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IA8BpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,UAAU,IAAI,OAAO;CAGrB"}
|
|
@@ -4,7 +4,7 @@
|
|
|
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", "../types/bridge", "@n8n/errors", "../pool/isolate-pool", "./lru-cache"], factory);
|
|
7
|
+
define(["require", "exports", "@n8n/tournament", "../types/bridge", "@n8n/errors", "../pool/idle-scaling-pool", "../pool/isolate-pool", "../observability/metrics", "./error-classification", "./lru-cache"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
@@ -13,8 +13,21 @@
|
|
|
13
13
|
const tournament_1 = require("@n8n/tournament");
|
|
14
14
|
const bridge_1 = require("../types/bridge");
|
|
15
15
|
const errors_1 = require("@n8n/errors");
|
|
16
|
+
const idle_scaling_pool_1 = require("../pool/idle-scaling-pool");
|
|
16
17
|
const isolate_pool_1 = require("../pool/isolate-pool");
|
|
18
|
+
const metrics_1 = require("../observability/metrics");
|
|
19
|
+
const error_classification_1 = require("./error-classification");
|
|
17
20
|
const lru_cache_1 = require("./lru-cache");
|
|
21
|
+
function recordOutcome(observability, start, status, error) {
|
|
22
|
+
if (!observability)
|
|
23
|
+
return;
|
|
24
|
+
const durationSeconds = (performance.now() - start) / 1000;
|
|
25
|
+
const errorType = error !== undefined ? (0, error_classification_1.classifyExpressionError)(error) : undefined;
|
|
26
|
+
observability.metrics.histogram(metrics_1.EXPRESSION_METRICS.evaluationDuration.name, durationSeconds, {
|
|
27
|
+
status,
|
|
28
|
+
type: errorType ?? 'none',
|
|
29
|
+
});
|
|
30
|
+
}
|
|
18
31
|
class ExpressionEvaluator {
|
|
19
32
|
config;
|
|
20
33
|
disposed = false;
|
|
@@ -29,7 +42,7 @@
|
|
|
29
42
|
constructor(config) {
|
|
30
43
|
this.config = config;
|
|
31
44
|
this.codeCache = new lru_cache_1.LruCache(config.maxCodeCacheSize, () => {
|
|
32
|
-
this.config.observability?.metrics.counter(
|
|
45
|
+
this.config.observability?.metrics.counter(metrics_1.EXPRESSION_METRICS.codeCacheEviction.name, 1);
|
|
33
46
|
});
|
|
34
47
|
const logger = config.logger ?? bridge_1.DEFAULT_BRIDGE_CONFIG.logger;
|
|
35
48
|
this.createBridge = async () => {
|
|
@@ -37,10 +50,14 @@
|
|
|
37
50
|
await bridge.initialize();
|
|
38
51
|
return bridge;
|
|
39
52
|
};
|
|
40
|
-
|
|
53
|
+
const onReplenishFailed = (error) => {
|
|
41
54
|
logger.error('[IsolatePool] Failed to replenish bridge', { error });
|
|
42
|
-
config.observability?.metrics.counter(
|
|
43
|
-
}
|
|
55
|
+
config.observability?.metrics.counter(metrics_1.EXPRESSION_METRICS.poolReplenishFailed.name, 1);
|
|
56
|
+
};
|
|
57
|
+
this.pool =
|
|
58
|
+
config.idleTimeoutMs === undefined
|
|
59
|
+
? new isolate_pool_1.IsolatePool(this.createBridge, config.poolSize ?? 1, onReplenishFailed, logger)
|
|
60
|
+
: new idle_scaling_pool_1.IdleScalingPool(this.createBridge, config.poolSize ?? 1, config.idleTimeoutMs, onReplenishFailed, logger, config.observability);
|
|
44
61
|
}
|
|
45
62
|
async initialize() {
|
|
46
63
|
await this.pool.initialize();
|
|
@@ -59,7 +76,7 @@
|
|
|
59
76
|
throw error;
|
|
60
77
|
bridge = await this.createBridge();
|
|
61
78
|
}
|
|
62
|
-
this.config.observability?.metrics.counter(
|
|
79
|
+
this.config.observability?.metrics.counter(metrics_1.EXPRESSION_METRICS.poolAcquired.name, 1);
|
|
63
80
|
this.bridgesByCaller.set(caller, bridge);
|
|
64
81
|
}
|
|
65
82
|
evaluate(expression, data, caller, options) {
|
|
@@ -68,19 +85,17 @@
|
|
|
68
85
|
const bridge = this.getBridge(caller);
|
|
69
86
|
// Transform template expression → sanitized JavaScript (cached)
|
|
70
87
|
const transformedCode = this.getTransformedCode(expression);
|
|
88
|
+
const { observability } = this.config;
|
|
89
|
+
const start = performance.now();
|
|
71
90
|
try {
|
|
72
91
|
const result = bridge.execute(transformedCode, data, {
|
|
73
92
|
timezone: options?.timezone,
|
|
74
93
|
});
|
|
75
|
-
|
|
76
|
-
this.config.observability.metrics.counter('expression.evaluation.success', 1);
|
|
77
|
-
}
|
|
94
|
+
recordOutcome(observability, start, 'success');
|
|
78
95
|
return result;
|
|
79
96
|
}
|
|
80
97
|
catch (error) {
|
|
81
|
-
|
|
82
|
-
this.config.observability.metrics.counter('expression.evaluation.error', 1);
|
|
83
|
-
}
|
|
98
|
+
recordOutcome(observability, start, 'error', error);
|
|
84
99
|
throw error;
|
|
85
100
|
}
|
|
86
101
|
}
|
|
@@ -118,10 +133,10 @@
|
|
|
118
133
|
getTransformedCode(expression) {
|
|
119
134
|
const cached = this.codeCache.get(expression);
|
|
120
135
|
if (cached !== undefined) {
|
|
121
|
-
this.config.observability?.metrics.counter(
|
|
136
|
+
this.config.observability?.metrics.counter(metrics_1.EXPRESSION_METRICS.codeCacheHit.name, 1);
|
|
122
137
|
return cached;
|
|
123
138
|
}
|
|
124
|
-
this.config.observability?.metrics.counter(
|
|
139
|
+
this.config.observability?.metrics.counter(metrics_1.EXPRESSION_METRICS.codeCacheMiss.name, 1);
|
|
125
140
|
if (!this.tournament) {
|
|
126
141
|
// Tournament requires an errorHandler but we only use getExpressionCode()
|
|
127
142
|
// for AST transformation — we never call tournament.execute(), so this
|
|
@@ -135,13 +150,13 @@
|
|
|
135
150
|
}
|
|
136
151
|
const [transformedCode] = this.tournament.getExpressionCode(expression);
|
|
137
152
|
this.codeCache.set(expression, transformedCode);
|
|
138
|
-
this.config.observability?.metrics.gauge(
|
|
153
|
+
this.config.observability?.metrics.gauge(metrics_1.EXPRESSION_METRICS.codeCacheSize.name, this.codeCache.size);
|
|
139
154
|
return transformedCode;
|
|
140
155
|
}
|
|
141
156
|
async dispose() {
|
|
142
157
|
this.disposed = true;
|
|
143
158
|
this.codeCache.clear();
|
|
144
|
-
this.config.observability?.metrics.gauge(
|
|
159
|
+
this.config.observability?.metrics.gauge(metrics_1.EXPRESSION_METRICS.codeCacheSize.name, 0);
|
|
145
160
|
await this.pool.dispose();
|
|
146
161
|
}
|
|
147
162
|
isDisposed() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression-evaluator.js","sourceRoot":"","sources":["../../../src/evaluator/expression-evaluator.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,gDAA6C;
|
|
1
|
+
{"version":3,"file":"expression-evaluator.js","sourceRoot":"","sources":["../../../src/evaluator/expression-evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-extensions.d.ts","sourceRoot":"","sources":["../../../src/extensions/function-extensions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"function-extensions.d.ts","sourceRoot":"","sources":["../../../src/extensions/function-extensions.ts"],"names":[],"mappings":"AA4CA,iBAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,gBAsB/C;kBAtBQ,OAAO;;;;;;;;;;;;AAoChB,eAAO,MAAM,iBAAiB;;;iBAxCV,OAAO,KAAG,OAAO;uBAJX,MAAM,EAAE;wBA9BP,MAAM,OAAO,MAAM,KAAG,MAAM,EAAE;gBAgBtC,OAAO,EAAE,UAAU,OAAO,EAAE,KAAG,OAAO;;;wBAc/B,MAAM,EAAE;kBAId,OAAO,KAAG,OAAO;;CAoDpC,CAAC"}
|
|
@@ -29,14 +29,17 @@
|
|
|
29
29
|
return arr;
|
|
30
30
|
};
|
|
31
31
|
const zip = (keys, values) => {
|
|
32
|
+
if (!Array.isArray(keys) || !Array.isArray(values)) {
|
|
33
|
+
throw new expression_extension_error_1.ExpressionExtensionError('keys and values must be arrays');
|
|
34
|
+
}
|
|
32
35
|
if (keys.length !== values.length) {
|
|
33
36
|
throw new expression_extension_error_1.ExpressionExtensionError('keys and values not of equal length');
|
|
34
37
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
const result = {};
|
|
39
|
+
for (let i = 0; i < keys.length; i++) {
|
|
40
|
+
result[keys[i]] = values[i];
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
40
43
|
};
|
|
41
44
|
const average = (...args) => {
|
|
42
45
|
return (0, array_extensions_1.average)(args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-extensions.js","sourceRoot":"","sources":["../../../src/extensions/function-extensions.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,yDAAyD;IACzD,6EAAwE;IAExE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IAErB,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,GAAW,EAAY,EAAE;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,CAAC;QAEpC,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;gBACjB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACP,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YACjB,CAAC;QACF,CAAC;QAED,OAAO,GAAG,CAAC;IACZ,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,IAAe,EAAE,MAAiB,EAAW,EAAE;QAC3D,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,qDAAwB,CAAC,qCAAqC,CAAC,CAAC;QAC3E,CAAC;QACD,
|
|
1
|
+
{"version":3,"file":"function-extensions.js","sourceRoot":"","sources":["../../../src/extensions/function-extensions.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -3,6 +3,11 @@ export { IsolatedVmBridge } from './bridge/isolated-vm-bridge';
|
|
|
3
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 { IsolateError } from '@n8n/errors';
|
|
6
|
+
export { NoOpProvider } from './observability/noop-provider';
|
|
7
|
+
export { EXPRESSION_METRICS } from './observability/metrics';
|
|
8
|
+
export type { ExpressionMetricDef, ExpressionMetricKey, MetricDef } from './observability/metrics';
|
|
9
|
+
export { classifyExpressionError } from './evaluator/error-classification';
|
|
10
|
+
export type { ExpressionErrorType } from './evaluator/error-classification';
|
|
6
11
|
export { extend, extendOptional, EXTENSION_OBJECTS } from './extensions/extend';
|
|
7
12
|
export { ExpressionExtensionError } from './extensions/expression-extension-error';
|
|
8
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -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,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;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,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;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,YAAY,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAG5E,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
if (v !== undefined) module.exports = v;
|
|
5
5
|
}
|
|
6
6
|
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define(["require", "exports", "./evaluator/expression-evaluator", "./bridge/isolated-vm-bridge", "./types", "@n8n/errors", "./extensions/extend", "./extensions/expression-extension-error"], factory);
|
|
7
|
+
define(["require", "exports", "./evaluator/expression-evaluator", "./bridge/isolated-vm-bridge", "./types", "@n8n/errors", "./observability/noop-provider", "./observability/metrics", "./evaluator/error-classification", "./extensions/extend", "./extensions/expression-extension-error"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.ExpressionExtensionError = exports.EXTENSION_OBJECTS = exports.extendOptional = exports.extend = exports.IsolateError = exports.SyntaxError = exports.SecurityViolationError = exports.TimeoutError = exports.MemoryLimitError = exports.ExpressionError = exports.IsolatedVmBridge = exports.ExpressionEvaluator = void 0;
|
|
12
|
+
exports.ExpressionExtensionError = exports.EXTENSION_OBJECTS = exports.extendOptional = exports.extend = exports.classifyExpressionError = exports.EXPRESSION_METRICS = exports.NoOpProvider = exports.IsolateError = exports.SyntaxError = exports.SecurityViolationError = exports.TimeoutError = exports.MemoryLimitError = exports.ExpressionError = exports.IsolatedVmBridge = exports.ExpressionEvaluator = void 0;
|
|
13
13
|
// Main exports
|
|
14
14
|
var expression_evaluator_1 = require("./evaluator/expression-evaluator");
|
|
15
15
|
Object.defineProperty(exports, "ExpressionEvaluator", { enumerable: true, get: function () { return expression_evaluator_1.ExpressionEvaluator; } });
|
|
@@ -26,6 +26,12 @@
|
|
|
26
26
|
Object.defineProperty(exports, "SyntaxError", { enumerable: true, get: function () { return types_1.SyntaxError; } });
|
|
27
27
|
var errors_1 = require("@n8n/errors");
|
|
28
28
|
Object.defineProperty(exports, "IsolateError", { enumerable: true, get: function () { return errors_1.IsolateError; } });
|
|
29
|
+
var noop_provider_1 = require("./observability/noop-provider");
|
|
30
|
+
Object.defineProperty(exports, "NoOpProvider", { enumerable: true, get: function () { return noop_provider_1.NoOpProvider; } });
|
|
31
|
+
var metrics_1 = require("./observability/metrics");
|
|
32
|
+
Object.defineProperty(exports, "EXPRESSION_METRICS", { enumerable: true, get: function () { return metrics_1.EXPRESSION_METRICS; } });
|
|
33
|
+
var error_classification_1 = require("./evaluator/error-classification");
|
|
34
|
+
Object.defineProperty(exports, "classifyExpressionError", { enumerable: true, get: function () { return error_classification_1.classifyExpressionError; } });
|
|
29
35
|
// Extension runtime exports
|
|
30
36
|
var extend_1 = require("./extensions/extend");
|
|
31
37
|
Object.defineProperty(exports, "extend", { enumerable: true, get: function () { return extend_1.extend; } });
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -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;IAmBzB,cAAc;IACd,iCAMiB;IALhB,wGAAA,eAAe,OAAA;IACf,yGAAA,gBAAgB,OAAA;IAChB,qGAAA,YAAY,OAAA;IACZ,+GAAA,sBAAsB,OAAA;IACtB,oGAAA,WAAW,OAAA;IAEZ,sCAA2C;IAAlC,sGAAA,YAAY,OAAA;IAErB,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;IAEZ,sCAA2C;IAAlC,sGAAA,YAAY,OAAA;IAErB,+DAA6D;IAApD,6GAAA,YAAY,OAAA;IACrB,mDAA6D;IAApD,6GAAA,kBAAkB,OAAA;IAE3B,yEAA2E;IAAlE,+HAAA,uBAAuB,OAAA;IAGhC,4BAA4B;IAC5B,8CAAgF;IAAvE,gGAAA,MAAM,OAAA;IAAE,wGAAA,cAAc,OAAA;IAAE,2GAAA,iBAAiB,OAAA;IAClD,sFAAmF;IAA1E,sIAAA,wBAAwB,OAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export interface MetricDef {
|
|
2
|
+
name: string;
|
|
3
|
+
kind: 'counter' | 'gauge' | 'histogram';
|
|
4
|
+
labels: readonly string[];
|
|
5
|
+
help: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const EXPRESSION_METRICS: {
|
|
8
|
+
readonly evaluationDuration: {
|
|
9
|
+
readonly name: "expression.evaluation.duration_seconds";
|
|
10
|
+
readonly kind: "histogram";
|
|
11
|
+
readonly labels: readonly ["status", "type"];
|
|
12
|
+
readonly help: "Duration of VM-based expression evaluation in seconds.";
|
|
13
|
+
};
|
|
14
|
+
readonly codeCacheHit: {
|
|
15
|
+
readonly name: "expression.code_cache.hit";
|
|
16
|
+
readonly kind: "counter";
|
|
17
|
+
readonly labels: readonly [];
|
|
18
|
+
readonly help: "Expression code cache hits.";
|
|
19
|
+
};
|
|
20
|
+
readonly codeCacheMiss: {
|
|
21
|
+
readonly name: "expression.code_cache.miss";
|
|
22
|
+
readonly kind: "counter";
|
|
23
|
+
readonly labels: readonly [];
|
|
24
|
+
readonly help: "Expression code cache misses.";
|
|
25
|
+
};
|
|
26
|
+
readonly codeCacheEviction: {
|
|
27
|
+
readonly name: "expression.code_cache.eviction";
|
|
28
|
+
readonly kind: "counter";
|
|
29
|
+
readonly labels: readonly [];
|
|
30
|
+
readonly help: "Expression code cache evictions.";
|
|
31
|
+
};
|
|
32
|
+
readonly codeCacheSize: {
|
|
33
|
+
readonly name: "expression.code_cache.size";
|
|
34
|
+
readonly kind: "gauge";
|
|
35
|
+
readonly labels: readonly [];
|
|
36
|
+
readonly help: "Current expression code cache size.";
|
|
37
|
+
};
|
|
38
|
+
readonly poolAcquired: {
|
|
39
|
+
readonly name: "expression.pool.acquired";
|
|
40
|
+
readonly kind: "counter";
|
|
41
|
+
readonly labels: readonly [];
|
|
42
|
+
readonly help: "Bridges acquired from the expression pool.";
|
|
43
|
+
};
|
|
44
|
+
readonly poolReplenishFailed: {
|
|
45
|
+
readonly name: "expression.pool.replenish_failed";
|
|
46
|
+
readonly kind: "counter";
|
|
47
|
+
readonly labels: readonly [];
|
|
48
|
+
readonly help: "Failed pool bridge replenishments.";
|
|
49
|
+
};
|
|
50
|
+
readonly poolScaledUp: {
|
|
51
|
+
readonly name: "expression.pool.scaled_up";
|
|
52
|
+
readonly kind: "counter";
|
|
53
|
+
readonly labels: readonly [];
|
|
54
|
+
readonly help: "Expression pool scaled up from idle.";
|
|
55
|
+
};
|
|
56
|
+
readonly poolScaledToZero: {
|
|
57
|
+
readonly name: "expression.pool.scaled_to_zero";
|
|
58
|
+
readonly kind: "counter";
|
|
59
|
+
readonly labels: readonly [];
|
|
60
|
+
readonly help: "Expression pool scaled to zero after inactivity.";
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
export type ExpressionMetricKey = keyof typeof EXPRESSION_METRICS;
|
|
64
|
+
export type ExpressionMetricDef = (typeof EXPRESSION_METRICS)[ExpressionMetricKey];
|
|
65
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/observability/metrics.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,CAAC;IACxC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACb;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDe,CAAC;AAE/C,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAClE,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
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.EXPRESSION_METRICS = void 0;
|
|
13
|
+
exports.EXPRESSION_METRICS = {
|
|
14
|
+
evaluationDuration: {
|
|
15
|
+
name: 'expression.evaluation.duration_seconds',
|
|
16
|
+
kind: 'histogram',
|
|
17
|
+
labels: ['status', 'type'],
|
|
18
|
+
help: 'Duration of VM-based expression evaluation in seconds.',
|
|
19
|
+
},
|
|
20
|
+
codeCacheHit: {
|
|
21
|
+
name: 'expression.code_cache.hit',
|
|
22
|
+
kind: 'counter',
|
|
23
|
+
labels: [],
|
|
24
|
+
help: 'Expression code cache hits.',
|
|
25
|
+
},
|
|
26
|
+
codeCacheMiss: {
|
|
27
|
+
name: 'expression.code_cache.miss',
|
|
28
|
+
kind: 'counter',
|
|
29
|
+
labels: [],
|
|
30
|
+
help: 'Expression code cache misses.',
|
|
31
|
+
},
|
|
32
|
+
codeCacheEviction: {
|
|
33
|
+
name: 'expression.code_cache.eviction',
|
|
34
|
+
kind: 'counter',
|
|
35
|
+
labels: [],
|
|
36
|
+
help: 'Expression code cache evictions.',
|
|
37
|
+
},
|
|
38
|
+
codeCacheSize: {
|
|
39
|
+
name: 'expression.code_cache.size',
|
|
40
|
+
kind: 'gauge',
|
|
41
|
+
labels: [],
|
|
42
|
+
help: 'Current expression code cache size.',
|
|
43
|
+
},
|
|
44
|
+
poolAcquired: {
|
|
45
|
+
name: 'expression.pool.acquired',
|
|
46
|
+
kind: 'counter',
|
|
47
|
+
labels: [],
|
|
48
|
+
help: 'Bridges acquired from the expression pool.',
|
|
49
|
+
},
|
|
50
|
+
poolReplenishFailed: {
|
|
51
|
+
name: 'expression.pool.replenish_failed',
|
|
52
|
+
kind: 'counter',
|
|
53
|
+
labels: [],
|
|
54
|
+
help: 'Failed pool bridge replenishments.',
|
|
55
|
+
},
|
|
56
|
+
poolScaledUp: {
|
|
57
|
+
name: 'expression.pool.scaled_up',
|
|
58
|
+
kind: 'counter',
|
|
59
|
+
labels: [],
|
|
60
|
+
help: 'Expression pool scaled up from idle.',
|
|
61
|
+
},
|
|
62
|
+
poolScaledToZero: {
|
|
63
|
+
name: 'expression.pool.scaled_to_zero',
|
|
64
|
+
kind: 'counter',
|
|
65
|
+
labels: [],
|
|
66
|
+
help: 'Expression pool scaled to zero after inactivity.',
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/observability/metrics.ts"],"names":[],"mappings":";;;;;;;;;;;;IAOa,QAAA,kBAAkB,GAAG;QACjC,kBAAkB,EAAE;YACnB,IAAI,EAAE,wCAAwC;YAC9C,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC1B,IAAI,EAAE,wDAAwD;SAC9D;QACD,YAAY,EAAE;YACb,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,6BAA6B;SACnC;QACD,aAAa,EAAE;YACd,IAAI,EAAE,4BAA4B;YAClC,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,+BAA+B;SACrC;QACD,iBAAiB,EAAE;YAClB,IAAI,EAAE,gCAAgC;YACtC,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,kCAAkC;SACxC;QACD,aAAa,EAAE;YACd,IAAI,EAAE,4BAA4B;YAClC,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,qCAAqC;SAC3C;QACD,YAAY,EAAE;YACb,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,4CAA4C;SAClD;QACD,mBAAmB,EAAE;YACpB,IAAI,EAAE,kCAAkC;YACxC,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,oCAAoC;SAC1C;QACD,YAAY,EAAE;YACb,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,sCAAsC;SAC5C;QACD,gBAAgB,EAAE;YACjB,IAAI,EAAE,gCAAgC;YACtC,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,kDAAkD;SACxD;KAC4C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noop-provider.d.ts","sourceRoot":"","sources":["../../../src/observability/noop-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,qBAAqB,EAAmB,MAAM,UAAU,CAAC;AA0B5F,eAAO,MAAM,YAAY,EAAE,qBAI1B,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
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.NoOpProvider = void 0;
|
|
13
|
+
const noopSpan = {
|
|
14
|
+
setStatus() { },
|
|
15
|
+
setAttribute() { },
|
|
16
|
+
recordException() { },
|
|
17
|
+
end() { },
|
|
18
|
+
};
|
|
19
|
+
const noopMetrics = {
|
|
20
|
+
counter() { },
|
|
21
|
+
gauge() { },
|
|
22
|
+
histogram() { },
|
|
23
|
+
};
|
|
24
|
+
const noopTraces = {
|
|
25
|
+
startSpan: () => noopSpan,
|
|
26
|
+
};
|
|
27
|
+
const noopLogs = {
|
|
28
|
+
error() { },
|
|
29
|
+
warn() { },
|
|
30
|
+
info() { },
|
|
31
|
+
debug() { },
|
|
32
|
+
};
|
|
33
|
+
exports.NoOpProvider = {
|
|
34
|
+
metrics: noopMetrics,
|
|
35
|
+
traces: noopTraces,
|
|
36
|
+
logs: noopLogs,
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=noop-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noop-provider.js","sourceRoot":"","sources":["../../../src/observability/noop-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;IAEA,MAAM,QAAQ,GAAS;QACtB,SAAS,KAAI,CAAC;QACd,YAAY,KAAI,CAAC;QACjB,eAAe,KAAI,CAAC;QACpB,GAAG,KAAI,CAAC;KACR,CAAC;IAEF,MAAM,WAAW,GAAe;QAC/B,OAAO,KAAI,CAAC;QACZ,KAAK,KAAI,CAAC;QACV,SAAS,KAAI,CAAC;KACd,CAAC;IAEF,MAAM,UAAU,GAAc;QAC7B,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ;KACzB,CAAC;IAEF,MAAM,QAAQ,GAAY;QACzB,KAAK,KAAI,CAAC;QACV,IAAI,KAAI,CAAC;QACT,IAAI,KAAI,CAAC;QACT,KAAK,KAAI,CAAC;KACV,CAAC;IAEW,QAAA,YAAY,GAA0B;QAClD,OAAO,EAAE,WAAW;QACpB,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,QAAQ;KACd,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ObservabilityProvider, RuntimeBridge } from '../types';
|
|
2
|
+
import type { Logger } from '../types/bridge';
|
|
3
|
+
import type { IPool } from './isolate-pool';
|
|
4
|
+
/**
|
|
5
|
+
* Wraps an `IsolatePool`, disposing it after a configured idle period and
|
|
6
|
+
* recreating it on the next acquire. The inner pool either fully exists or
|
|
7
|
+
* does not; callers never observe a partial state.
|
|
8
|
+
*/
|
|
9
|
+
export declare class IdleScalingPool implements IPool {
|
|
10
|
+
private readonly createBridge;
|
|
11
|
+
private readonly size;
|
|
12
|
+
private readonly idleTimeoutMs?;
|
|
13
|
+
private readonly onReplenishFailed?;
|
|
14
|
+
private readonly logger?;
|
|
15
|
+
private readonly observability?;
|
|
16
|
+
private innerPool;
|
|
17
|
+
private pendingScaleUp;
|
|
18
|
+
private pendingScaleDown;
|
|
19
|
+
private idleTimer?;
|
|
20
|
+
private disposed;
|
|
21
|
+
private disposePromise?;
|
|
22
|
+
constructor(createBridge: () => Promise<RuntimeBridge>, size: number, idleTimeoutMs?: number | undefined, onReplenishFailed?: ((error: unknown) => void) | undefined, logger?: Logger | undefined, observability?: ObservabilityProvider | undefined);
|
|
23
|
+
initialize(): Promise<void>;
|
|
24
|
+
acquire(): RuntimeBridge;
|
|
25
|
+
release(bridge: RuntimeBridge): Promise<void>;
|
|
26
|
+
dispose(): Promise<void>;
|
|
27
|
+
private doDispose;
|
|
28
|
+
waitForReplenishment(): Promise<void>;
|
|
29
|
+
private drainPendingTransitions;
|
|
30
|
+
private createInnerPool;
|
|
31
|
+
private resetIdleTimer;
|
|
32
|
+
private triggerScaleUp;
|
|
33
|
+
private triggerScaleDown;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=idle-scaling-pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idle-scaling-pool.d.ts","sourceRoot":"","sources":["../../../src/pool/idle-scaling-pool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,KAAK;IAS3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAbhC,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,gBAAgB,CAA8B;IACtD,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAC,CAAgB;gBAGrB,YAAY,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,EAC1C,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,MAAM,YAAA,EACtB,iBAAiB,CAAC,GAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,aAAA,EAC5C,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,aAAa,CAAC,EAAE,qBAAqB,YAAA;IAGjD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC,OAAO,IAAI,aAAa;IAUlB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAIhB,SAAS;IAcjB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;YAK7B,uBAAuB;IAUrC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,gBAAgB;CAkBxB"}
|