iii-sdk 0.8.3 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -11
- package/dist/index.cjs +278 -142
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +177 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +177 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +259 -125
- package/dist/index.mjs.map +1 -1
- package/dist/state.cjs +7 -5
- package/dist/state.cjs.map +1 -1
- package/dist/state.d.cts +38 -13
- package/dist/state.d.cts.map +1 -1
- package/dist/state.d.mts +38 -13
- package/dist/state.d.mts.map +1 -1
- package/dist/state.mjs +6 -5
- package/dist/state.mjs.map +1 -1
- package/dist/stream-C1zUjhzk.d.mts +145 -0
- package/dist/stream-C1zUjhzk.d.mts.map +1 -0
- package/dist/stream-lxenNA3s.d.cts +145 -0
- package/dist/stream-lxenNA3s.d.cts.map +1 -0
- package/dist/stream.d.cts +1 -1
- package/dist/stream.d.mts +1 -1
- package/dist/telemetry.cjs +6 -5
- package/dist/telemetry.d.cts +10 -11
- package/dist/telemetry.d.cts.map +1 -1
- package/dist/telemetry.d.mts +10 -11
- package/dist/telemetry.d.mts.map +1 -1
- package/dist/telemetry.mjs +1 -1
- package/dist/utils-BvWlFlLq.d.cts +839 -0
- package/dist/utils-BvWlFlLq.d.cts.map +1 -0
- package/dist/{utils-BJTjoUdq.cjs → utils-C6yTT4Js.cjs} +311 -282
- package/dist/utils-C6yTT4Js.cjs.map +1 -0
- package/dist/utils-_zSeatp1.d.mts +839 -0
- package/dist/utils-_zSeatp1.d.mts.map +1 -0
- package/dist/{utils-coGqiBHT.mjs → utils-xBUm8n1P.mjs} +246 -217
- package/dist/utils-xBUm8n1P.mjs.map +1 -0
- package/package.json +5 -3
- package/typedoc.json +8 -0
- package/vitest.config.ts +4 -4
- package/dist/stream-BEp3rjfm.d.cts +0 -97
- package/dist/stream-BEp3rjfm.d.cts.map +0 -1
- package/dist/stream-Bzpo5JNV.d.mts +0 -97
- package/dist/stream-Bzpo5JNV.d.mts.map +0 -1
- package/dist/utils-BJTjoUdq.cjs.map +0 -1
- package/dist/utils-BaGgUfjl.d.cts +0 -524
- package/dist/utils-BaGgUfjl.d.cts.map +0 -1
- package/dist/utils-CMrMD5Ij.d.mts +0 -524
- package/dist/utils-CMrMD5Ij.d.mts.map +0 -1
- package/dist/utils-coGqiBHT.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-_zSeatp1.d.mts","names":[],"sources":["../src/iii-types.ts","../src/channels.ts","../src/iii-constants.ts","../src/telemetry-system/types.ts","../src/telemetry-system/context.ts","../src/telemetry-system/index.ts","../src/triggers.ts","../src/types.ts","../src/utils.ts"],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { SpanKind, SpanKind as SpanKind$1, SpanStatusCode, SpanStatusCode as SpanStatusCode$1, context, metrics, propagation, trace } from "@opentelemetry/api";
|
|
2
1
|
import { WebSocket } from "ws";
|
|
2
|
+
import { SpanKind, SpanKind as SpanKind$1, SpanStatusCode, SpanStatusCode as SpanStatusCode$1, context, metrics, propagation, trace } from "@opentelemetry/api";
|
|
3
|
+
import { monitorEventLoopDelay, performance } from "node:perf_hooks";
|
|
3
4
|
import { Resource } from "@opentelemetry/resources";
|
|
4
5
|
import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
|
|
5
6
|
import { randomUUID } from "node:crypto";
|
|
@@ -11,7 +12,6 @@ import { registerInstrumentations } from "@opentelemetry/instrumentation";
|
|
|
11
12
|
import { BatchLogRecordProcessor, LoggerProvider } from "@opentelemetry/sdk-logs";
|
|
12
13
|
import { SeverityNumber as SeverityNumber$1 } from "@opentelemetry/api-logs";
|
|
13
14
|
import { JsonLogsSerializer, JsonMetricsSerializer, JsonTraceSerializer } from "@opentelemetry/otlp-transformer";
|
|
14
|
-
import { monitorEventLoopDelay, performance } from "node:perf_hooks";
|
|
15
15
|
|
|
16
16
|
//#region src/iii-constants.ts
|
|
17
17
|
/**
|
|
@@ -21,6 +21,7 @@ import { monitorEventLoopDelay, performance } from "node:perf_hooks";
|
|
|
21
21
|
const EngineFunctions = {
|
|
22
22
|
LIST_FUNCTIONS: "engine::functions::list",
|
|
23
23
|
LIST_WORKERS: "engine::workers::list",
|
|
24
|
+
LIST_TRIGGERS: "engine::triggers::list",
|
|
24
25
|
REGISTER_WORKER: "engine::workers::register"
|
|
25
26
|
};
|
|
26
27
|
/** Engine trigger types */
|
|
@@ -46,6 +47,213 @@ const DEFAULT_BRIDGE_RECONNECTION_CONFIG = {
|
|
|
46
47
|
/** Default invocation timeout in milliseconds */
|
|
47
48
|
const DEFAULT_INVOCATION_TIMEOUT_MS = 3e4;
|
|
48
49
|
|
|
50
|
+
//#endregion
|
|
51
|
+
//#region src/worker-metrics.ts
|
|
52
|
+
/**
|
|
53
|
+
* Worker metrics collection for the III Node SDK.
|
|
54
|
+
*
|
|
55
|
+
* Collects CPU, memory, and event loop metrics for worker health monitoring.
|
|
56
|
+
* Uses the Node.js built-in `monitorEventLoopDelay` API for accurate
|
|
57
|
+
* event loop lag measurements.
|
|
58
|
+
*/
|
|
59
|
+
/**
|
|
60
|
+
* Collects worker resource metrics including CPU, memory, and event loop lag.
|
|
61
|
+
*
|
|
62
|
+
* Uses the Node.js `monitorEventLoopDelay` API for high-precision event loop
|
|
63
|
+
* delay measurements instead of manual `setImmediate` timing.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* const collector = new WorkerMetricsCollector()
|
|
68
|
+
*
|
|
69
|
+
* // Collect metrics periodically
|
|
70
|
+
* setInterval(() => {
|
|
71
|
+
* const metrics = collector.collect()
|
|
72
|
+
* console.log('CPU:', metrics.cpu_percent, '%')
|
|
73
|
+
* console.log('Event Loop Lag:', metrics.event_loop_lag_ms, 'ms')
|
|
74
|
+
* }, 5000)
|
|
75
|
+
*
|
|
76
|
+
* // Clean up when done
|
|
77
|
+
* collector.stopMonitoring()
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
var WorkerMetricsCollector = class {
|
|
81
|
+
/**
|
|
82
|
+
* Creates a new WorkerMetricsCollector instance.
|
|
83
|
+
*
|
|
84
|
+
* @param options - Configuration options
|
|
85
|
+
*/
|
|
86
|
+
constructor(options = {}) {
|
|
87
|
+
this.eventLoopHistogram = null;
|
|
88
|
+
this.startTime = Date.now();
|
|
89
|
+
this.lastCpuUsage = process.cpuUsage();
|
|
90
|
+
this.lastCpuTime = performance.now();
|
|
91
|
+
this.startEventLoopMonitoring(options.eventLoopResolutionMs ?? 20);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Starts the event loop delay histogram monitoring.
|
|
95
|
+
*
|
|
96
|
+
* @param resolutionMs - Histogram resolution in milliseconds
|
|
97
|
+
*/
|
|
98
|
+
startEventLoopMonitoring(resolutionMs) {
|
|
99
|
+
this.eventLoopHistogram = monitorEventLoopDelay({ resolution: Number.isFinite(resolutionMs) && resolutionMs > 0 ? Math.max(1, Math.floor(resolutionMs)) : 20 });
|
|
100
|
+
this.eventLoopHistogram.enable();
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Stops the event loop monitoring and releases resources.
|
|
104
|
+
* Should be called when the collector is no longer needed.
|
|
105
|
+
*/
|
|
106
|
+
stopMonitoring() {
|
|
107
|
+
if (this.eventLoopHistogram) {
|
|
108
|
+
this.eventLoopHistogram.disable();
|
|
109
|
+
this.eventLoopHistogram = null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Collects current worker metrics.
|
|
114
|
+
*
|
|
115
|
+
* This method calculates CPU usage since the last collection,
|
|
116
|
+
* reads memory usage, and gets event loop delay statistics.
|
|
117
|
+
* The event loop histogram is reset after each collection for
|
|
118
|
+
* accurate per-interval measurements.
|
|
119
|
+
*
|
|
120
|
+
* @returns Current worker metrics snapshot
|
|
121
|
+
*/
|
|
122
|
+
collect() {
|
|
123
|
+
const memoryUsage = process.memoryUsage();
|
|
124
|
+
const cpuUsage = process.cpuUsage();
|
|
125
|
+
const now = performance.now();
|
|
126
|
+
const cpuDelta = {
|
|
127
|
+
user: cpuUsage.user - this.lastCpuUsage.user,
|
|
128
|
+
system: cpuUsage.system - this.lastCpuUsage.system
|
|
129
|
+
};
|
|
130
|
+
const timeDelta = (now - this.lastCpuTime) * 1e3;
|
|
131
|
+
const cpuPercent = timeDelta > 0 ? (cpuDelta.user + cpuDelta.system) / timeDelta * 100 : 0;
|
|
132
|
+
this.lastCpuUsage = cpuUsage;
|
|
133
|
+
this.lastCpuTime = now;
|
|
134
|
+
let eventLoopLagMs = 0;
|
|
135
|
+
if (this.eventLoopHistogram) {
|
|
136
|
+
eventLoopLagMs = this.eventLoopHistogram.mean / 1e6;
|
|
137
|
+
this.eventLoopHistogram.reset();
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
memory_heap_used: memoryUsage.heapUsed,
|
|
141
|
+
memory_heap_total: memoryUsage.heapTotal,
|
|
142
|
+
memory_rss: memoryUsage.rss,
|
|
143
|
+
memory_external: memoryUsage.external,
|
|
144
|
+
cpu_user_micros: cpuUsage.user,
|
|
145
|
+
cpu_system_micros: cpuUsage.system,
|
|
146
|
+
cpu_percent: Math.min(cpuPercent, 100),
|
|
147
|
+
event_loop_lag_ms: eventLoopLagMs,
|
|
148
|
+
uptime_seconds: Math.floor((Date.now() - this.startTime) / 1e3),
|
|
149
|
+
timestamp_ms: Date.now(),
|
|
150
|
+
runtime: "node"
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
//#endregion
|
|
156
|
+
//#region src/otel-worker-gauges.ts
|
|
157
|
+
let registeredGauges = false;
|
|
158
|
+
let metricsCollector = null;
|
|
159
|
+
let registeredMeter = null;
|
|
160
|
+
let registeredBatchCallback = null;
|
|
161
|
+
let registeredObservables = [];
|
|
162
|
+
function registerWorkerGauges(meter, options) {
|
|
163
|
+
if (registeredGauges) return;
|
|
164
|
+
const { workerId, workerName } = options;
|
|
165
|
+
const baseAttributes = {
|
|
166
|
+
"worker.id": workerId,
|
|
167
|
+
...workerName && { "worker.name": workerName }
|
|
168
|
+
};
|
|
169
|
+
metricsCollector = new WorkerMetricsCollector();
|
|
170
|
+
const memoryHeapUsed = meter.createObservableGauge("iii.worker.memory.heap_used", {
|
|
171
|
+
description: "Worker heap memory used in bytes",
|
|
172
|
+
unit: "bytes"
|
|
173
|
+
});
|
|
174
|
+
const memoryHeapTotal = meter.createObservableGauge("iii.worker.memory.heap_total", {
|
|
175
|
+
description: "Worker total heap memory in bytes",
|
|
176
|
+
unit: "bytes"
|
|
177
|
+
});
|
|
178
|
+
const memoryRss = meter.createObservableGauge("iii.worker.memory.rss", {
|
|
179
|
+
description: "Worker resident set size in bytes",
|
|
180
|
+
unit: "bytes"
|
|
181
|
+
});
|
|
182
|
+
const memoryExternal = meter.createObservableGauge("iii.worker.memory.external", {
|
|
183
|
+
description: "Worker external memory in bytes",
|
|
184
|
+
unit: "bytes"
|
|
185
|
+
});
|
|
186
|
+
const cpuPercent = meter.createObservableGauge("iii.worker.cpu.percent", {
|
|
187
|
+
description: "Worker CPU usage percentage",
|
|
188
|
+
unit: "%"
|
|
189
|
+
});
|
|
190
|
+
const cpuUserMicros = meter.createObservableGauge("iii.worker.cpu.user_micros", {
|
|
191
|
+
description: "Worker CPU user time in microseconds",
|
|
192
|
+
unit: "us"
|
|
193
|
+
});
|
|
194
|
+
const cpuSystemMicros = meter.createObservableGauge("iii.worker.cpu.system_micros", {
|
|
195
|
+
description: "Worker CPU system time in microseconds",
|
|
196
|
+
unit: "us"
|
|
197
|
+
});
|
|
198
|
+
const eventLoopLag = meter.createObservableGauge("iii.worker.event_loop.lag_ms", {
|
|
199
|
+
description: "Worker event loop lag in milliseconds",
|
|
200
|
+
unit: "ms"
|
|
201
|
+
});
|
|
202
|
+
const uptimeSeconds = meter.createObservableGauge("iii.worker.uptime_seconds", {
|
|
203
|
+
description: "Worker uptime in seconds",
|
|
204
|
+
unit: "s"
|
|
205
|
+
});
|
|
206
|
+
const batchCallback = (observableResult) => {
|
|
207
|
+
if (!metricsCollector) return;
|
|
208
|
+
const metrics = metricsCollector.collect();
|
|
209
|
+
if (metrics.memory_heap_used !== void 0) observableResult.observe(memoryHeapUsed, metrics.memory_heap_used, baseAttributes);
|
|
210
|
+
if (metrics.memory_heap_total !== void 0) observableResult.observe(memoryHeapTotal, metrics.memory_heap_total, baseAttributes);
|
|
211
|
+
if (metrics.memory_rss !== void 0) observableResult.observe(memoryRss, metrics.memory_rss, baseAttributes);
|
|
212
|
+
if (metrics.memory_external !== void 0) observableResult.observe(memoryExternal, metrics.memory_external, baseAttributes);
|
|
213
|
+
if (metrics.cpu_percent !== void 0) observableResult.observe(cpuPercent, metrics.cpu_percent, baseAttributes);
|
|
214
|
+
if (metrics.cpu_user_micros !== void 0) observableResult.observe(cpuUserMicros, metrics.cpu_user_micros, baseAttributes);
|
|
215
|
+
if (metrics.cpu_system_micros !== void 0) observableResult.observe(cpuSystemMicros, metrics.cpu_system_micros, baseAttributes);
|
|
216
|
+
if (metrics.event_loop_lag_ms !== void 0) observableResult.observe(eventLoopLag, metrics.event_loop_lag_ms, baseAttributes);
|
|
217
|
+
if (metrics.uptime_seconds !== void 0) observableResult.observe(uptimeSeconds, metrics.uptime_seconds, baseAttributes);
|
|
218
|
+
};
|
|
219
|
+
meter.addBatchObservableCallback(batchCallback, [
|
|
220
|
+
memoryHeapUsed,
|
|
221
|
+
memoryHeapTotal,
|
|
222
|
+
memoryRss,
|
|
223
|
+
memoryExternal,
|
|
224
|
+
cpuPercent,
|
|
225
|
+
cpuUserMicros,
|
|
226
|
+
cpuSystemMicros,
|
|
227
|
+
eventLoopLag,
|
|
228
|
+
uptimeSeconds
|
|
229
|
+
]);
|
|
230
|
+
registeredMeter = meter;
|
|
231
|
+
registeredBatchCallback = batchCallback;
|
|
232
|
+
registeredObservables = [
|
|
233
|
+
memoryHeapUsed,
|
|
234
|
+
memoryHeapTotal,
|
|
235
|
+
memoryRss,
|
|
236
|
+
memoryExternal,
|
|
237
|
+
cpuPercent,
|
|
238
|
+
cpuUserMicros,
|
|
239
|
+
cpuSystemMicros,
|
|
240
|
+
eventLoopLag,
|
|
241
|
+
uptimeSeconds
|
|
242
|
+
];
|
|
243
|
+
registeredGauges = true;
|
|
244
|
+
}
|
|
245
|
+
function stopWorkerGauges() {
|
|
246
|
+
if (registeredMeter && registeredBatchCallback) registeredMeter.removeBatchObservableCallback(registeredBatchCallback, registeredObservables);
|
|
247
|
+
if (metricsCollector) {
|
|
248
|
+
metricsCollector.stopMonitoring();
|
|
249
|
+
metricsCollector = null;
|
|
250
|
+
}
|
|
251
|
+
registeredMeter = null;
|
|
252
|
+
registeredBatchCallback = null;
|
|
253
|
+
registeredObservables = [];
|
|
254
|
+
registeredGauges = false;
|
|
255
|
+
}
|
|
256
|
+
|
|
49
257
|
//#endregion
|
|
50
258
|
//#region src/telemetry-system/types.ts
|
|
51
259
|
const ATTR_SERVICE_VERSION = "service.version";
|
|
@@ -324,7 +532,7 @@ var EngineMetricsExporter = class EngineMetricsExporter {
|
|
|
324
532
|
}
|
|
325
533
|
flushPending() {
|
|
326
534
|
const pending = this.pendingExports.splice(0, this.pendingExports.length);
|
|
327
|
-
for (const { metrics
|
|
535
|
+
for (const { metrics, resultCallback } of pending) this.sendExport(metrics, resultCallback);
|
|
328
536
|
}
|
|
329
537
|
sendExport(metricsData, resultCallback) {
|
|
330
538
|
try {
|
|
@@ -367,8 +575,8 @@ var EngineMetricsExporter = class EngineMetricsExporter {
|
|
|
367
575
|
}
|
|
368
576
|
this.sendExport(metricsData, resultCallback);
|
|
369
577
|
}
|
|
370
|
-
export(metrics
|
|
371
|
-
this.doExport(metrics
|
|
578
|
+
export(metrics, resultCallback) {
|
|
579
|
+
this.doExport(metrics, resultCallback);
|
|
372
580
|
}
|
|
373
581
|
async shutdown() {
|
|
374
582
|
const pending = this.pendingExports.splice(0, this.pendingExports.length);
|
|
@@ -564,7 +772,7 @@ let originalFetch = null;
|
|
|
564
772
|
/**
|
|
565
773
|
* Patch globalThis.fetch to create OTel CLIENT spans for every HTTP request.
|
|
566
774
|
*/
|
|
567
|
-
function patchGlobalFetch(tracer
|
|
775
|
+
function patchGlobalFetch(tracer) {
|
|
568
776
|
if (originalFetch) return;
|
|
569
777
|
originalFetch = globalThis.fetch;
|
|
570
778
|
const capturedFetch = originalFetch;
|
|
@@ -597,7 +805,7 @@ function patchGlobalFetch(tracer$1) {
|
|
|
597
805
|
if (port) spanAttributes["server.port"] = port;
|
|
598
806
|
if (query) spanAttributes["url.query"] = query;
|
|
599
807
|
const spanName = path ? `${method} ${path}` : method;
|
|
600
|
-
return tracer
|
|
808
|
+
return tracer.startActiveSpan(spanName, {
|
|
601
809
|
kind: SpanKind.CLIENT,
|
|
602
810
|
attributes: spanAttributes
|
|
603
811
|
}, context.active(), async (span) => {
|
|
@@ -704,7 +912,7 @@ function initOtel(config = {}) {
|
|
|
704
912
|
const serviceVersion = config.serviceVersion ?? process.env.SERVICE_VERSION ?? DEFAULT_OTEL_CONFIG.serviceVersion;
|
|
705
913
|
const serviceNamespace = config.serviceNamespace ?? process.env.SERVICE_NAMESPACE;
|
|
706
914
|
const serviceInstanceId = config.serviceInstanceId ?? process.env.SERVICE_INSTANCE_ID ?? randomUUID();
|
|
707
|
-
const engineWsUrl = config.engineWsUrl ?? process.env.
|
|
915
|
+
const engineWsUrl = config.engineWsUrl ?? process.env.III_URL ?? DEFAULT_OTEL_CONFIG.engineWsUrl;
|
|
708
916
|
const resourceAttributes = {
|
|
709
917
|
[ATTR_SERVICE_NAME]: serviceName,
|
|
710
918
|
[ATTR_SERVICE_VERSION]: serviceVersion,
|
|
@@ -848,213 +1056,6 @@ async function withSpan(name, options, fn) {
|
|
|
848
1056
|
});
|
|
849
1057
|
}
|
|
850
1058
|
|
|
851
|
-
//#endregion
|
|
852
|
-
//#region src/worker-metrics.ts
|
|
853
|
-
/**
|
|
854
|
-
* Worker metrics collection for the III Node SDK.
|
|
855
|
-
*
|
|
856
|
-
* Collects CPU, memory, and event loop metrics for worker health monitoring.
|
|
857
|
-
* Uses the Node.js built-in `monitorEventLoopDelay` API for accurate
|
|
858
|
-
* event loop lag measurements.
|
|
859
|
-
*/
|
|
860
|
-
/**
|
|
861
|
-
* Collects worker resource metrics including CPU, memory, and event loop lag.
|
|
862
|
-
*
|
|
863
|
-
* Uses the Node.js `monitorEventLoopDelay` API for high-precision event loop
|
|
864
|
-
* delay measurements instead of manual `setImmediate` timing.
|
|
865
|
-
*
|
|
866
|
-
* @example
|
|
867
|
-
* ```typescript
|
|
868
|
-
* const collector = new WorkerMetricsCollector()
|
|
869
|
-
*
|
|
870
|
-
* // Collect metrics periodically
|
|
871
|
-
* setInterval(() => {
|
|
872
|
-
* const metrics = collector.collect()
|
|
873
|
-
* console.log('CPU:', metrics.cpu_percent, '%')
|
|
874
|
-
* console.log('Event Loop Lag:', metrics.event_loop_lag_ms, 'ms')
|
|
875
|
-
* }, 5000)
|
|
876
|
-
*
|
|
877
|
-
* // Clean up when done
|
|
878
|
-
* collector.stopMonitoring()
|
|
879
|
-
* ```
|
|
880
|
-
*/
|
|
881
|
-
var WorkerMetricsCollector = class {
|
|
882
|
-
/**
|
|
883
|
-
* Creates a new WorkerMetricsCollector instance.
|
|
884
|
-
*
|
|
885
|
-
* @param options - Configuration options
|
|
886
|
-
*/
|
|
887
|
-
constructor(options = {}) {
|
|
888
|
-
this.eventLoopHistogram = null;
|
|
889
|
-
this.startTime = Date.now();
|
|
890
|
-
this.lastCpuUsage = process.cpuUsage();
|
|
891
|
-
this.lastCpuTime = performance.now();
|
|
892
|
-
this.startEventLoopMonitoring(options.eventLoopResolutionMs ?? 20);
|
|
893
|
-
}
|
|
894
|
-
/**
|
|
895
|
-
* Starts the event loop delay histogram monitoring.
|
|
896
|
-
*
|
|
897
|
-
* @param resolutionMs - Histogram resolution in milliseconds
|
|
898
|
-
*/
|
|
899
|
-
startEventLoopMonitoring(resolutionMs) {
|
|
900
|
-
this.eventLoopHistogram = monitorEventLoopDelay({ resolution: Number.isFinite(resolutionMs) && resolutionMs > 0 ? Math.max(1, Math.floor(resolutionMs)) : 20 });
|
|
901
|
-
this.eventLoopHistogram.enable();
|
|
902
|
-
}
|
|
903
|
-
/**
|
|
904
|
-
* Stops the event loop monitoring and releases resources.
|
|
905
|
-
* Should be called when the collector is no longer needed.
|
|
906
|
-
*/
|
|
907
|
-
stopMonitoring() {
|
|
908
|
-
if (this.eventLoopHistogram) {
|
|
909
|
-
this.eventLoopHistogram.disable();
|
|
910
|
-
this.eventLoopHistogram = null;
|
|
911
|
-
}
|
|
912
|
-
}
|
|
913
|
-
/**
|
|
914
|
-
* Collects current worker metrics.
|
|
915
|
-
*
|
|
916
|
-
* This method calculates CPU usage since the last collection,
|
|
917
|
-
* reads memory usage, and gets event loop delay statistics.
|
|
918
|
-
* The event loop histogram is reset after each collection for
|
|
919
|
-
* accurate per-interval measurements.
|
|
920
|
-
*
|
|
921
|
-
* @returns Current worker metrics snapshot
|
|
922
|
-
*/
|
|
923
|
-
collect() {
|
|
924
|
-
const memoryUsage = process.memoryUsage();
|
|
925
|
-
const cpuUsage = process.cpuUsage();
|
|
926
|
-
const now = performance.now();
|
|
927
|
-
const cpuDelta = {
|
|
928
|
-
user: cpuUsage.user - this.lastCpuUsage.user,
|
|
929
|
-
system: cpuUsage.system - this.lastCpuUsage.system
|
|
930
|
-
};
|
|
931
|
-
const timeDelta = (now - this.lastCpuTime) * 1e3;
|
|
932
|
-
const cpuPercent = timeDelta > 0 ? (cpuDelta.user + cpuDelta.system) / timeDelta * 100 : 0;
|
|
933
|
-
this.lastCpuUsage = cpuUsage;
|
|
934
|
-
this.lastCpuTime = now;
|
|
935
|
-
let eventLoopLagMs = 0;
|
|
936
|
-
if (this.eventLoopHistogram) {
|
|
937
|
-
eventLoopLagMs = this.eventLoopHistogram.mean / 1e6;
|
|
938
|
-
this.eventLoopHistogram.reset();
|
|
939
|
-
}
|
|
940
|
-
return {
|
|
941
|
-
memory_heap_used: memoryUsage.heapUsed,
|
|
942
|
-
memory_heap_total: memoryUsage.heapTotal,
|
|
943
|
-
memory_rss: memoryUsage.rss,
|
|
944
|
-
memory_external: memoryUsage.external,
|
|
945
|
-
cpu_user_micros: cpuUsage.user,
|
|
946
|
-
cpu_system_micros: cpuUsage.system,
|
|
947
|
-
cpu_percent: Math.min(cpuPercent, 100),
|
|
948
|
-
event_loop_lag_ms: eventLoopLagMs,
|
|
949
|
-
uptime_seconds: Math.floor((Date.now() - this.startTime) / 1e3),
|
|
950
|
-
timestamp_ms: Date.now(),
|
|
951
|
-
runtime: "node"
|
|
952
|
-
};
|
|
953
|
-
}
|
|
954
|
-
};
|
|
955
|
-
|
|
956
|
-
//#endregion
|
|
957
|
-
//#region src/otel-worker-gauges.ts
|
|
958
|
-
let registeredGauges = false;
|
|
959
|
-
let metricsCollector = null;
|
|
960
|
-
let registeredMeter = null;
|
|
961
|
-
let registeredBatchCallback = null;
|
|
962
|
-
let registeredObservables = [];
|
|
963
|
-
function registerWorkerGauges(meter$1, options) {
|
|
964
|
-
if (registeredGauges) return;
|
|
965
|
-
const { workerId, workerName } = options;
|
|
966
|
-
const baseAttributes = {
|
|
967
|
-
"worker.id": workerId,
|
|
968
|
-
...workerName && { "worker.name": workerName }
|
|
969
|
-
};
|
|
970
|
-
metricsCollector = new WorkerMetricsCollector();
|
|
971
|
-
const memoryHeapUsed = meter$1.createObservableGauge("iii.worker.memory.heap_used", {
|
|
972
|
-
description: "Worker heap memory used in bytes",
|
|
973
|
-
unit: "bytes"
|
|
974
|
-
});
|
|
975
|
-
const memoryHeapTotal = meter$1.createObservableGauge("iii.worker.memory.heap_total", {
|
|
976
|
-
description: "Worker total heap memory in bytes",
|
|
977
|
-
unit: "bytes"
|
|
978
|
-
});
|
|
979
|
-
const memoryRss = meter$1.createObservableGauge("iii.worker.memory.rss", {
|
|
980
|
-
description: "Worker resident set size in bytes",
|
|
981
|
-
unit: "bytes"
|
|
982
|
-
});
|
|
983
|
-
const memoryExternal = meter$1.createObservableGauge("iii.worker.memory.external", {
|
|
984
|
-
description: "Worker external memory in bytes",
|
|
985
|
-
unit: "bytes"
|
|
986
|
-
});
|
|
987
|
-
const cpuPercent = meter$1.createObservableGauge("iii.worker.cpu.percent", {
|
|
988
|
-
description: "Worker CPU usage percentage",
|
|
989
|
-
unit: "%"
|
|
990
|
-
});
|
|
991
|
-
const cpuUserMicros = meter$1.createObservableGauge("iii.worker.cpu.user_micros", {
|
|
992
|
-
description: "Worker CPU user time in microseconds",
|
|
993
|
-
unit: "us"
|
|
994
|
-
});
|
|
995
|
-
const cpuSystemMicros = meter$1.createObservableGauge("iii.worker.cpu.system_micros", {
|
|
996
|
-
description: "Worker CPU system time in microseconds",
|
|
997
|
-
unit: "us"
|
|
998
|
-
});
|
|
999
|
-
const eventLoopLag = meter$1.createObservableGauge("iii.worker.event_loop.lag_ms", {
|
|
1000
|
-
description: "Worker event loop lag in milliseconds",
|
|
1001
|
-
unit: "ms"
|
|
1002
|
-
});
|
|
1003
|
-
const uptimeSeconds = meter$1.createObservableGauge("iii.worker.uptime_seconds", {
|
|
1004
|
-
description: "Worker uptime in seconds",
|
|
1005
|
-
unit: "s"
|
|
1006
|
-
});
|
|
1007
|
-
const batchCallback = (observableResult) => {
|
|
1008
|
-
if (!metricsCollector) return;
|
|
1009
|
-
const metrics$1 = metricsCollector.collect();
|
|
1010
|
-
if (metrics$1.memory_heap_used !== void 0) observableResult.observe(memoryHeapUsed, metrics$1.memory_heap_used, baseAttributes);
|
|
1011
|
-
if (metrics$1.memory_heap_total !== void 0) observableResult.observe(memoryHeapTotal, metrics$1.memory_heap_total, baseAttributes);
|
|
1012
|
-
if (metrics$1.memory_rss !== void 0) observableResult.observe(memoryRss, metrics$1.memory_rss, baseAttributes);
|
|
1013
|
-
if (metrics$1.memory_external !== void 0) observableResult.observe(memoryExternal, metrics$1.memory_external, baseAttributes);
|
|
1014
|
-
if (metrics$1.cpu_percent !== void 0) observableResult.observe(cpuPercent, metrics$1.cpu_percent, baseAttributes);
|
|
1015
|
-
if (metrics$1.cpu_user_micros !== void 0) observableResult.observe(cpuUserMicros, metrics$1.cpu_user_micros, baseAttributes);
|
|
1016
|
-
if (metrics$1.cpu_system_micros !== void 0) observableResult.observe(cpuSystemMicros, metrics$1.cpu_system_micros, baseAttributes);
|
|
1017
|
-
if (metrics$1.event_loop_lag_ms !== void 0) observableResult.observe(eventLoopLag, metrics$1.event_loop_lag_ms, baseAttributes);
|
|
1018
|
-
if (metrics$1.uptime_seconds !== void 0) observableResult.observe(uptimeSeconds, metrics$1.uptime_seconds, baseAttributes);
|
|
1019
|
-
};
|
|
1020
|
-
meter$1.addBatchObservableCallback(batchCallback, [
|
|
1021
|
-
memoryHeapUsed,
|
|
1022
|
-
memoryHeapTotal,
|
|
1023
|
-
memoryRss,
|
|
1024
|
-
memoryExternal,
|
|
1025
|
-
cpuPercent,
|
|
1026
|
-
cpuUserMicros,
|
|
1027
|
-
cpuSystemMicros,
|
|
1028
|
-
eventLoopLag,
|
|
1029
|
-
uptimeSeconds
|
|
1030
|
-
]);
|
|
1031
|
-
registeredMeter = meter$1;
|
|
1032
|
-
registeredBatchCallback = batchCallback;
|
|
1033
|
-
registeredObservables = [
|
|
1034
|
-
memoryHeapUsed,
|
|
1035
|
-
memoryHeapTotal,
|
|
1036
|
-
memoryRss,
|
|
1037
|
-
memoryExternal,
|
|
1038
|
-
cpuPercent,
|
|
1039
|
-
cpuUserMicros,
|
|
1040
|
-
cpuSystemMicros,
|
|
1041
|
-
eventLoopLag,
|
|
1042
|
-
uptimeSeconds
|
|
1043
|
-
];
|
|
1044
|
-
registeredGauges = true;
|
|
1045
|
-
}
|
|
1046
|
-
function stopWorkerGauges() {
|
|
1047
|
-
if (registeredMeter && registeredBatchCallback) registeredMeter.removeBatchObservableCallback(registeredBatchCallback, registeredObservables);
|
|
1048
|
-
if (metricsCollector) {
|
|
1049
|
-
metricsCollector.stopMonitoring();
|
|
1050
|
-
metricsCollector = null;
|
|
1051
|
-
}
|
|
1052
|
-
registeredMeter = null;
|
|
1053
|
-
registeredBatchCallback = null;
|
|
1054
|
-
registeredObservables = [];
|
|
1055
|
-
registeredGauges = false;
|
|
1056
|
-
}
|
|
1057
|
-
|
|
1058
1059
|
//#endregion
|
|
1059
1060
|
//#region src/utils.ts
|
|
1060
1061
|
/**
|
|
@@ -1076,6 +1077,28 @@ function safeStringify(value) {
|
|
|
1076
1077
|
return "[unserializable]";
|
|
1077
1078
|
}
|
|
1078
1079
|
}
|
|
1080
|
+
/**
|
|
1081
|
+
* Helper that wraps an HTTP-style handler (with separate `req`/`res` arguments)
|
|
1082
|
+
* into the function handler format expected by the SDK.
|
|
1083
|
+
*
|
|
1084
|
+
* @param callback - Async handler receiving an {@link HttpRequest} and {@link HttpResponse}.
|
|
1085
|
+
* @returns A function handler compatible with {@link ISdk.registerFunction}.
|
|
1086
|
+
*
|
|
1087
|
+
* @example
|
|
1088
|
+
* ```typescript
|
|
1089
|
+
* import { http } from 'iii-sdk'
|
|
1090
|
+
*
|
|
1091
|
+
* iii.registerFunction(
|
|
1092
|
+
* { id: 'my-api' },
|
|
1093
|
+
* http(async (req, res) => {
|
|
1094
|
+
* res.status(200)
|
|
1095
|
+
* res.headers({ 'content-type': 'application/json' })
|
|
1096
|
+
* res.stream.end(JSON.stringify({ hello: 'world' }))
|
|
1097
|
+
* res.close()
|
|
1098
|
+
* }),
|
|
1099
|
+
* )
|
|
1100
|
+
* ```
|
|
1101
|
+
*/
|
|
1079
1102
|
const http = (callback) => {
|
|
1080
1103
|
return async (req) => {
|
|
1081
1104
|
const { response, ...request } = req;
|
|
@@ -1093,6 +1116,12 @@ const http = (callback) => {
|
|
|
1093
1116
|
});
|
|
1094
1117
|
};
|
|
1095
1118
|
};
|
|
1119
|
+
/**
|
|
1120
|
+
* Type guard that checks if a value is a {@link StreamChannelRef}.
|
|
1121
|
+
*
|
|
1122
|
+
* @param value - Value to check.
|
|
1123
|
+
* @returns `true` if the value is a valid `StreamChannelRef`.
|
|
1124
|
+
*/
|
|
1096
1125
|
const isChannelRef = (value) => {
|
|
1097
1126
|
if (typeof value !== "object" || value === null) return false;
|
|
1098
1127
|
const maybe = value;
|
|
@@ -1100,5 +1129,5 @@ const isChannelRef = (value) => {
|
|
|
1100
1129
|
};
|
|
1101
1130
|
|
|
1102
1131
|
//#endregion
|
|
1103
|
-
export { EngineTriggers as A,
|
|
1104
|
-
//# sourceMappingURL=utils-
|
|
1132
|
+
export { EngineTriggers as A, setBaggageEntry as C, DEFAULT_BRIDGE_RECONNECTION_CONFIG as D, WorkerMetricsCollector as E, DEFAULT_INVOCATION_TIMEOUT_MS as O, removeBaggageEntry as S, stopWorkerGauges as T, extractTraceparent as _, SpanKind$1 as a, injectBaggage as b, getMeter as c, shutdownOtel as d, withSpan as f, extractContext as g, extractBaggage as h, SeverityNumber$1 as i, LogFunctions as j, EngineFunctions as k, getTracer as l, currentTraceId as m, isChannelRef as n, SpanStatusCode$1 as o, currentSpanId as p, safeStringify as r, getLogger as s, http as t, initOtel as u, getAllBaggage as v, registerWorkerGauges as w, injectTraceparent as x, getBaggageEntry as y };
|
|
1133
|
+
//# sourceMappingURL=utils-xBUm8n1P.mjs.map
|