iii-sdk 0.8.2 → 0.9.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 (48) hide show
  1. package/README.md +15 -11
  2. package/dist/index.cjs +234 -105
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +182 -3
  5. package/dist/index.d.cts.map +1 -1
  6. package/dist/index.d.mts +182 -3
  7. package/dist/index.d.mts.map +1 -1
  8. package/dist/index.mjs +234 -106
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/state.cjs +1 -0
  11. package/dist/state.cjs.map +1 -1
  12. package/dist/state.d.cts +43 -1
  13. package/dist/state.d.cts.map +1 -1
  14. package/dist/state.d.mts +43 -1
  15. package/dist/state.d.mts.map +1 -1
  16. package/dist/state.mjs +1 -0
  17. package/dist/state.mjs.map +1 -1
  18. package/dist/stream-BAjVneSg.d.mts +176 -0
  19. package/dist/stream-BAjVneSg.d.mts.map +1 -0
  20. package/dist/stream-DUNsytJU.d.cts +176 -0
  21. package/dist/stream-DUNsytJU.d.cts.map +1 -0
  22. package/dist/stream.d.cts +1 -1
  23. package/dist/stream.d.mts +1 -1
  24. package/dist/telemetry.cjs +1 -1
  25. package/dist/telemetry.d.cts +10 -11
  26. package/dist/telemetry.d.cts.map +1 -1
  27. package/dist/telemetry.d.mts +10 -11
  28. package/dist/telemetry.d.mts.map +1 -1
  29. package/dist/telemetry.mjs +1 -1
  30. package/dist/{utils-coGqiBHT.mjs → utils-5jD8F3OE.mjs} +241 -212
  31. package/dist/utils-5jD8F3OE.mjs.map +1 -0
  32. package/dist/{utils-CMrMD5Ij.d.mts → utils-BRn3Iff5.d.mts} +586 -210
  33. package/dist/utils-BRn3Iff5.d.mts.map +1 -0
  34. package/dist/{utils-BaGgUfjl.d.cts → utils-D6RPYBhs.d.cts} +586 -210
  35. package/dist/utils-D6RPYBhs.d.cts.map +1 -0
  36. package/dist/{utils-BJTjoUdq.cjs → utils-bsZVduQi.cjs} +240 -211
  37. package/dist/utils-bsZVduQi.cjs.map +1 -0
  38. package/package.json +4 -2
  39. package/typedoc.json +8 -0
  40. package/vitest.config.ts +4 -4
  41. package/dist/stream-BEp3rjfm.d.cts +0 -97
  42. package/dist/stream-BEp3rjfm.d.cts.map +0 -1
  43. package/dist/stream-Bzpo5JNV.d.mts +0 -97
  44. package/dist/stream-Bzpo5JNV.d.mts.map +0 -1
  45. package/dist/utils-BJTjoUdq.cjs.map +0 -1
  46. package/dist/utils-BaGgUfjl.d.cts.map +0 -1
  47. package/dist/utils-CMrMD5Ij.d.mts.map +0 -1
  48. package/dist/utils-coGqiBHT.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-D6RPYBhs.d.cts","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"],"sourcesContent":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  const require_index = require('./index.cjs');
2
- let __opentelemetry_api = require("@opentelemetry/api");
3
2
  let ws = require("ws");
3
+ let __opentelemetry_api = require("@opentelemetry/api");
4
+ let node_perf_hooks = require("node:perf_hooks");
4
5
  let __opentelemetry_resources = require("@opentelemetry/resources");
5
6
  let __opentelemetry_semantic_conventions = require("@opentelemetry/semantic-conventions");
6
7
  let node_crypto = require("node:crypto");
@@ -12,7 +13,6 @@ let __opentelemetry_instrumentation = require("@opentelemetry/instrumentation");
12
13
  let __opentelemetry_sdk_logs = require("@opentelemetry/sdk-logs");
13
14
  let __opentelemetry_api_logs = require("@opentelemetry/api-logs");
14
15
  let __opentelemetry_otlp_transformer = require("@opentelemetry/otlp-transformer");
15
- let node_perf_hooks = require("node:perf_hooks");
16
16
 
17
17
  //#region src/iii-constants.ts
18
18
  /**
@@ -22,6 +22,7 @@ let node_perf_hooks = require("node:perf_hooks");
22
22
  const EngineFunctions = {
23
23
  LIST_FUNCTIONS: "engine::functions::list",
24
24
  LIST_WORKERS: "engine::workers::list",
25
+ LIST_TRIGGERS: "engine::triggers::list",
25
26
  REGISTER_WORKER: "engine::workers::register"
26
27
  };
27
28
  /** Engine trigger types */
@@ -47,6 +48,213 @@ const DEFAULT_BRIDGE_RECONNECTION_CONFIG = {
47
48
  /** Default invocation timeout in milliseconds */
48
49
  const DEFAULT_INVOCATION_TIMEOUT_MS = 3e4;
49
50
 
51
+ //#endregion
52
+ //#region src/worker-metrics.ts
53
+ /**
54
+ * Worker metrics collection for the III Node SDK.
55
+ *
56
+ * Collects CPU, memory, and event loop metrics for worker health monitoring.
57
+ * Uses the Node.js built-in `monitorEventLoopDelay` API for accurate
58
+ * event loop lag measurements.
59
+ */
60
+ /**
61
+ * Collects worker resource metrics including CPU, memory, and event loop lag.
62
+ *
63
+ * Uses the Node.js `monitorEventLoopDelay` API for high-precision event loop
64
+ * delay measurements instead of manual `setImmediate` timing.
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * const collector = new WorkerMetricsCollector()
69
+ *
70
+ * // Collect metrics periodically
71
+ * setInterval(() => {
72
+ * const metrics = collector.collect()
73
+ * console.log('CPU:', metrics.cpu_percent, '%')
74
+ * console.log('Event Loop Lag:', metrics.event_loop_lag_ms, 'ms')
75
+ * }, 5000)
76
+ *
77
+ * // Clean up when done
78
+ * collector.stopMonitoring()
79
+ * ```
80
+ */
81
+ var WorkerMetricsCollector = class {
82
+ /**
83
+ * Creates a new WorkerMetricsCollector instance.
84
+ *
85
+ * @param options - Configuration options
86
+ */
87
+ constructor(options = {}) {
88
+ this.eventLoopHistogram = null;
89
+ this.startTime = Date.now();
90
+ this.lastCpuUsage = process.cpuUsage();
91
+ this.lastCpuTime = node_perf_hooks.performance.now();
92
+ this.startEventLoopMonitoring(options.eventLoopResolutionMs ?? 20);
93
+ }
94
+ /**
95
+ * Starts the event loop delay histogram monitoring.
96
+ *
97
+ * @param resolutionMs - Histogram resolution in milliseconds
98
+ */
99
+ startEventLoopMonitoring(resolutionMs) {
100
+ this.eventLoopHistogram = (0, node_perf_hooks.monitorEventLoopDelay)({ resolution: Number.isFinite(resolutionMs) && resolutionMs > 0 ? Math.max(1, Math.floor(resolutionMs)) : 20 });
101
+ this.eventLoopHistogram.enable();
102
+ }
103
+ /**
104
+ * Stops the event loop monitoring and releases resources.
105
+ * Should be called when the collector is no longer needed.
106
+ */
107
+ stopMonitoring() {
108
+ if (this.eventLoopHistogram) {
109
+ this.eventLoopHistogram.disable();
110
+ this.eventLoopHistogram = null;
111
+ }
112
+ }
113
+ /**
114
+ * Collects current worker metrics.
115
+ *
116
+ * This method calculates CPU usage since the last collection,
117
+ * reads memory usage, and gets event loop delay statistics.
118
+ * The event loop histogram is reset after each collection for
119
+ * accurate per-interval measurements.
120
+ *
121
+ * @returns Current worker metrics snapshot
122
+ */
123
+ collect() {
124
+ const memoryUsage = process.memoryUsage();
125
+ const cpuUsage = process.cpuUsage();
126
+ const now = node_perf_hooks.performance.now();
127
+ const cpuDelta = {
128
+ user: cpuUsage.user - this.lastCpuUsage.user,
129
+ system: cpuUsage.system - this.lastCpuUsage.system
130
+ };
131
+ const timeDelta = (now - this.lastCpuTime) * 1e3;
132
+ const cpuPercent = timeDelta > 0 ? (cpuDelta.user + cpuDelta.system) / timeDelta * 100 : 0;
133
+ this.lastCpuUsage = cpuUsage;
134
+ this.lastCpuTime = now;
135
+ let eventLoopLagMs = 0;
136
+ if (this.eventLoopHistogram) {
137
+ eventLoopLagMs = this.eventLoopHistogram.mean / 1e6;
138
+ this.eventLoopHistogram.reset();
139
+ }
140
+ return {
141
+ memory_heap_used: memoryUsage.heapUsed,
142
+ memory_heap_total: memoryUsage.heapTotal,
143
+ memory_rss: memoryUsage.rss,
144
+ memory_external: memoryUsage.external,
145
+ cpu_user_micros: cpuUsage.user,
146
+ cpu_system_micros: cpuUsage.system,
147
+ cpu_percent: Math.min(cpuPercent, 100),
148
+ event_loop_lag_ms: eventLoopLagMs,
149
+ uptime_seconds: Math.floor((Date.now() - this.startTime) / 1e3),
150
+ timestamp_ms: Date.now(),
151
+ runtime: "node"
152
+ };
153
+ }
154
+ };
155
+
156
+ //#endregion
157
+ //#region src/otel-worker-gauges.ts
158
+ let registeredGauges = false;
159
+ let metricsCollector = null;
160
+ let registeredMeter = null;
161
+ let registeredBatchCallback = null;
162
+ let registeredObservables = [];
163
+ function registerWorkerGauges(meter$1, options) {
164
+ if (registeredGauges) return;
165
+ const { workerId, workerName } = options;
166
+ const baseAttributes = {
167
+ "worker.id": workerId,
168
+ ...workerName && { "worker.name": workerName }
169
+ };
170
+ metricsCollector = new WorkerMetricsCollector();
171
+ const memoryHeapUsed = meter$1.createObservableGauge("iii.worker.memory.heap_used", {
172
+ description: "Worker heap memory used in bytes",
173
+ unit: "bytes"
174
+ });
175
+ const memoryHeapTotal = meter$1.createObservableGauge("iii.worker.memory.heap_total", {
176
+ description: "Worker total heap memory in bytes",
177
+ unit: "bytes"
178
+ });
179
+ const memoryRss = meter$1.createObservableGauge("iii.worker.memory.rss", {
180
+ description: "Worker resident set size in bytes",
181
+ unit: "bytes"
182
+ });
183
+ const memoryExternal = meter$1.createObservableGauge("iii.worker.memory.external", {
184
+ description: "Worker external memory in bytes",
185
+ unit: "bytes"
186
+ });
187
+ const cpuPercent = meter$1.createObservableGauge("iii.worker.cpu.percent", {
188
+ description: "Worker CPU usage percentage",
189
+ unit: "%"
190
+ });
191
+ const cpuUserMicros = meter$1.createObservableGauge("iii.worker.cpu.user_micros", {
192
+ description: "Worker CPU user time in microseconds",
193
+ unit: "us"
194
+ });
195
+ const cpuSystemMicros = meter$1.createObservableGauge("iii.worker.cpu.system_micros", {
196
+ description: "Worker CPU system time in microseconds",
197
+ unit: "us"
198
+ });
199
+ const eventLoopLag = meter$1.createObservableGauge("iii.worker.event_loop.lag_ms", {
200
+ description: "Worker event loop lag in milliseconds",
201
+ unit: "ms"
202
+ });
203
+ const uptimeSeconds = meter$1.createObservableGauge("iii.worker.uptime_seconds", {
204
+ description: "Worker uptime in seconds",
205
+ unit: "s"
206
+ });
207
+ const batchCallback = (observableResult) => {
208
+ if (!metricsCollector) return;
209
+ const metrics$1 = metricsCollector.collect();
210
+ if (metrics$1.memory_heap_used !== void 0) observableResult.observe(memoryHeapUsed, metrics$1.memory_heap_used, baseAttributes);
211
+ if (metrics$1.memory_heap_total !== void 0) observableResult.observe(memoryHeapTotal, metrics$1.memory_heap_total, baseAttributes);
212
+ if (metrics$1.memory_rss !== void 0) observableResult.observe(memoryRss, metrics$1.memory_rss, baseAttributes);
213
+ if (metrics$1.memory_external !== void 0) observableResult.observe(memoryExternal, metrics$1.memory_external, baseAttributes);
214
+ if (metrics$1.cpu_percent !== void 0) observableResult.observe(cpuPercent, metrics$1.cpu_percent, baseAttributes);
215
+ if (metrics$1.cpu_user_micros !== void 0) observableResult.observe(cpuUserMicros, metrics$1.cpu_user_micros, baseAttributes);
216
+ if (metrics$1.cpu_system_micros !== void 0) observableResult.observe(cpuSystemMicros, metrics$1.cpu_system_micros, baseAttributes);
217
+ if (metrics$1.event_loop_lag_ms !== void 0) observableResult.observe(eventLoopLag, metrics$1.event_loop_lag_ms, baseAttributes);
218
+ if (metrics$1.uptime_seconds !== void 0) observableResult.observe(uptimeSeconds, metrics$1.uptime_seconds, baseAttributes);
219
+ };
220
+ meter$1.addBatchObservableCallback(batchCallback, [
221
+ memoryHeapUsed,
222
+ memoryHeapTotal,
223
+ memoryRss,
224
+ memoryExternal,
225
+ cpuPercent,
226
+ cpuUserMicros,
227
+ cpuSystemMicros,
228
+ eventLoopLag,
229
+ uptimeSeconds
230
+ ]);
231
+ registeredMeter = meter$1;
232
+ registeredBatchCallback = batchCallback;
233
+ registeredObservables = [
234
+ memoryHeapUsed,
235
+ memoryHeapTotal,
236
+ memoryRss,
237
+ memoryExternal,
238
+ cpuPercent,
239
+ cpuUserMicros,
240
+ cpuSystemMicros,
241
+ eventLoopLag,
242
+ uptimeSeconds
243
+ ];
244
+ registeredGauges = true;
245
+ }
246
+ function stopWorkerGauges() {
247
+ if (registeredMeter && registeredBatchCallback) registeredMeter.removeBatchObservableCallback(registeredBatchCallback, registeredObservables);
248
+ if (metricsCollector) {
249
+ metricsCollector.stopMonitoring();
250
+ metricsCollector = null;
251
+ }
252
+ registeredMeter = null;
253
+ registeredBatchCallback = null;
254
+ registeredObservables = [];
255
+ registeredGauges = false;
256
+ }
257
+
50
258
  //#endregion
51
259
  //#region src/telemetry-system/types.ts
52
260
  const ATTR_SERVICE_VERSION = "service.version";
@@ -705,7 +913,7 @@ function initOtel(config = {}) {
705
913
  const serviceVersion = config.serviceVersion ?? process.env.SERVICE_VERSION ?? DEFAULT_OTEL_CONFIG.serviceVersion;
706
914
  const serviceNamespace = config.serviceNamespace ?? process.env.SERVICE_NAMESPACE;
707
915
  const serviceInstanceId = config.serviceInstanceId ?? process.env.SERVICE_INSTANCE_ID ?? (0, node_crypto.randomUUID)();
708
- const engineWsUrl = config.engineWsUrl ?? process.env.III_BRIDGE_URL ?? DEFAULT_OTEL_CONFIG.engineWsUrl;
916
+ const engineWsUrl = config.engineWsUrl ?? process.env.III_URL ?? DEFAULT_OTEL_CONFIG.engineWsUrl;
709
917
  const resourceAttributes = {
710
918
  [__opentelemetry_semantic_conventions.ATTR_SERVICE_NAME]: serviceName,
711
919
  [ATTR_SERVICE_VERSION]: serviceVersion,
@@ -849,213 +1057,6 @@ async function withSpan(name, options, fn) {
849
1057
  });
850
1058
  }
851
1059
 
852
- //#endregion
853
- //#region src/worker-metrics.ts
854
- /**
855
- * Worker metrics collection for the III Node SDK.
856
- *
857
- * Collects CPU, memory, and event loop metrics for worker health monitoring.
858
- * Uses the Node.js built-in `monitorEventLoopDelay` API for accurate
859
- * event loop lag measurements.
860
- */
861
- /**
862
- * Collects worker resource metrics including CPU, memory, and event loop lag.
863
- *
864
- * Uses the Node.js `monitorEventLoopDelay` API for high-precision event loop
865
- * delay measurements instead of manual `setImmediate` timing.
866
- *
867
- * @example
868
- * ```typescript
869
- * const collector = new WorkerMetricsCollector()
870
- *
871
- * // Collect metrics periodically
872
- * setInterval(() => {
873
- * const metrics = collector.collect()
874
- * console.log('CPU:', metrics.cpu_percent, '%')
875
- * console.log('Event Loop Lag:', metrics.event_loop_lag_ms, 'ms')
876
- * }, 5000)
877
- *
878
- * // Clean up when done
879
- * collector.stopMonitoring()
880
- * ```
881
- */
882
- var WorkerMetricsCollector = class {
883
- /**
884
- * Creates a new WorkerMetricsCollector instance.
885
- *
886
- * @param options - Configuration options
887
- */
888
- constructor(options = {}) {
889
- this.eventLoopHistogram = null;
890
- this.startTime = Date.now();
891
- this.lastCpuUsage = process.cpuUsage();
892
- this.lastCpuTime = node_perf_hooks.performance.now();
893
- this.startEventLoopMonitoring(options.eventLoopResolutionMs ?? 20);
894
- }
895
- /**
896
- * Starts the event loop delay histogram monitoring.
897
- *
898
- * @param resolutionMs - Histogram resolution in milliseconds
899
- */
900
- startEventLoopMonitoring(resolutionMs) {
901
- this.eventLoopHistogram = (0, node_perf_hooks.monitorEventLoopDelay)({ resolution: Number.isFinite(resolutionMs) && resolutionMs > 0 ? Math.max(1, Math.floor(resolutionMs)) : 20 });
902
- this.eventLoopHistogram.enable();
903
- }
904
- /**
905
- * Stops the event loop monitoring and releases resources.
906
- * Should be called when the collector is no longer needed.
907
- */
908
- stopMonitoring() {
909
- if (this.eventLoopHistogram) {
910
- this.eventLoopHistogram.disable();
911
- this.eventLoopHistogram = null;
912
- }
913
- }
914
- /**
915
- * Collects current worker metrics.
916
- *
917
- * This method calculates CPU usage since the last collection,
918
- * reads memory usage, and gets event loop delay statistics.
919
- * The event loop histogram is reset after each collection for
920
- * accurate per-interval measurements.
921
- *
922
- * @returns Current worker metrics snapshot
923
- */
924
- collect() {
925
- const memoryUsage = process.memoryUsage();
926
- const cpuUsage = process.cpuUsage();
927
- const now = node_perf_hooks.performance.now();
928
- const cpuDelta = {
929
- user: cpuUsage.user - this.lastCpuUsage.user,
930
- system: cpuUsage.system - this.lastCpuUsage.system
931
- };
932
- const timeDelta = (now - this.lastCpuTime) * 1e3;
933
- const cpuPercent = timeDelta > 0 ? (cpuDelta.user + cpuDelta.system) / timeDelta * 100 : 0;
934
- this.lastCpuUsage = cpuUsage;
935
- this.lastCpuTime = now;
936
- let eventLoopLagMs = 0;
937
- if (this.eventLoopHistogram) {
938
- eventLoopLagMs = this.eventLoopHistogram.mean / 1e6;
939
- this.eventLoopHistogram.reset();
940
- }
941
- return {
942
- memory_heap_used: memoryUsage.heapUsed,
943
- memory_heap_total: memoryUsage.heapTotal,
944
- memory_rss: memoryUsage.rss,
945
- memory_external: memoryUsage.external,
946
- cpu_user_micros: cpuUsage.user,
947
- cpu_system_micros: cpuUsage.system,
948
- cpu_percent: Math.min(cpuPercent, 100),
949
- event_loop_lag_ms: eventLoopLagMs,
950
- uptime_seconds: Math.floor((Date.now() - this.startTime) / 1e3),
951
- timestamp_ms: Date.now(),
952
- runtime: "node"
953
- };
954
- }
955
- };
956
-
957
- //#endregion
958
- //#region src/otel-worker-gauges.ts
959
- let registeredGauges = false;
960
- let metricsCollector = null;
961
- let registeredMeter = null;
962
- let registeredBatchCallback = null;
963
- let registeredObservables = [];
964
- function registerWorkerGauges(meter$1, options) {
965
- if (registeredGauges) return;
966
- const { workerId, workerName } = options;
967
- const baseAttributes = {
968
- "worker.id": workerId,
969
- ...workerName && { "worker.name": workerName }
970
- };
971
- metricsCollector = new WorkerMetricsCollector();
972
- const memoryHeapUsed = meter$1.createObservableGauge("iii.worker.memory.heap_used", {
973
- description: "Worker heap memory used in bytes",
974
- unit: "bytes"
975
- });
976
- const memoryHeapTotal = meter$1.createObservableGauge("iii.worker.memory.heap_total", {
977
- description: "Worker total heap memory in bytes",
978
- unit: "bytes"
979
- });
980
- const memoryRss = meter$1.createObservableGauge("iii.worker.memory.rss", {
981
- description: "Worker resident set size in bytes",
982
- unit: "bytes"
983
- });
984
- const memoryExternal = meter$1.createObservableGauge("iii.worker.memory.external", {
985
- description: "Worker external memory in bytes",
986
- unit: "bytes"
987
- });
988
- const cpuPercent = meter$1.createObservableGauge("iii.worker.cpu.percent", {
989
- description: "Worker CPU usage percentage",
990
- unit: "%"
991
- });
992
- const cpuUserMicros = meter$1.createObservableGauge("iii.worker.cpu.user_micros", {
993
- description: "Worker CPU user time in microseconds",
994
- unit: "us"
995
- });
996
- const cpuSystemMicros = meter$1.createObservableGauge("iii.worker.cpu.system_micros", {
997
- description: "Worker CPU system time in microseconds",
998
- unit: "us"
999
- });
1000
- const eventLoopLag = meter$1.createObservableGauge("iii.worker.event_loop.lag_ms", {
1001
- description: "Worker event loop lag in milliseconds",
1002
- unit: "ms"
1003
- });
1004
- const uptimeSeconds = meter$1.createObservableGauge("iii.worker.uptime_seconds", {
1005
- description: "Worker uptime in seconds",
1006
- unit: "s"
1007
- });
1008
- const batchCallback = (observableResult) => {
1009
- if (!metricsCollector) return;
1010
- const metrics$1 = metricsCollector.collect();
1011
- if (metrics$1.memory_heap_used !== void 0) observableResult.observe(memoryHeapUsed, metrics$1.memory_heap_used, baseAttributes);
1012
- if (metrics$1.memory_heap_total !== void 0) observableResult.observe(memoryHeapTotal, metrics$1.memory_heap_total, baseAttributes);
1013
- if (metrics$1.memory_rss !== void 0) observableResult.observe(memoryRss, metrics$1.memory_rss, baseAttributes);
1014
- if (metrics$1.memory_external !== void 0) observableResult.observe(memoryExternal, metrics$1.memory_external, baseAttributes);
1015
- if (metrics$1.cpu_percent !== void 0) observableResult.observe(cpuPercent, metrics$1.cpu_percent, baseAttributes);
1016
- if (metrics$1.cpu_user_micros !== void 0) observableResult.observe(cpuUserMicros, metrics$1.cpu_user_micros, baseAttributes);
1017
- if (metrics$1.cpu_system_micros !== void 0) observableResult.observe(cpuSystemMicros, metrics$1.cpu_system_micros, baseAttributes);
1018
- if (metrics$1.event_loop_lag_ms !== void 0) observableResult.observe(eventLoopLag, metrics$1.event_loop_lag_ms, baseAttributes);
1019
- if (metrics$1.uptime_seconds !== void 0) observableResult.observe(uptimeSeconds, metrics$1.uptime_seconds, baseAttributes);
1020
- };
1021
- meter$1.addBatchObservableCallback(batchCallback, [
1022
- memoryHeapUsed,
1023
- memoryHeapTotal,
1024
- memoryRss,
1025
- memoryExternal,
1026
- cpuPercent,
1027
- cpuUserMicros,
1028
- cpuSystemMicros,
1029
- eventLoopLag,
1030
- uptimeSeconds
1031
- ]);
1032
- registeredMeter = meter$1;
1033
- registeredBatchCallback = batchCallback;
1034
- registeredObservables = [
1035
- memoryHeapUsed,
1036
- memoryHeapTotal,
1037
- memoryRss,
1038
- memoryExternal,
1039
- cpuPercent,
1040
- cpuUserMicros,
1041
- cpuSystemMicros,
1042
- eventLoopLag,
1043
- uptimeSeconds
1044
- ];
1045
- registeredGauges = true;
1046
- }
1047
- function stopWorkerGauges() {
1048
- if (registeredMeter && registeredBatchCallback) registeredMeter.removeBatchObservableCallback(registeredBatchCallback, registeredObservables);
1049
- if (metricsCollector) {
1050
- metricsCollector.stopMonitoring();
1051
- metricsCollector = null;
1052
- }
1053
- registeredMeter = null;
1054
- registeredBatchCallback = null;
1055
- registeredObservables = [];
1056
- registeredGauges = false;
1057
- }
1058
-
1059
1060
  //#endregion
1060
1061
  //#region src/utils.ts
1061
1062
  /**
@@ -1077,6 +1078,28 @@ function safeStringify(value) {
1077
1078
  return "[unserializable]";
1078
1079
  }
1079
1080
  }
1081
+ /**
1082
+ * Helper that wraps an HTTP-style handler (with separate `req`/`res` arguments)
1083
+ * into the function handler format expected by the SDK.
1084
+ *
1085
+ * @param callback - Async handler receiving an {@link HttpRequest} and {@link HttpResponse}.
1086
+ * @returns A function handler compatible with {@link ISdk.registerFunction}.
1087
+ *
1088
+ * @example
1089
+ * ```typescript
1090
+ * import { http } from 'iii-sdk'
1091
+ *
1092
+ * iii.registerFunction(
1093
+ * { id: 'my-api' },
1094
+ * http(async (req, res) => {
1095
+ * res.status(200)
1096
+ * res.headers({ 'content-type': 'application/json' })
1097
+ * res.stream.end(JSON.stringify({ hello: 'world' }))
1098
+ * res.close()
1099
+ * }),
1100
+ * )
1101
+ * ```
1102
+ */
1080
1103
  const http = (callback) => {
1081
1104
  return async (req) => {
1082
1105
  const { response, ...request } = req;
@@ -1094,6 +1117,12 @@ const http = (callback) => {
1094
1117
  });
1095
1118
  };
1096
1119
  };
1120
+ /**
1121
+ * Type guard that checks if a value is a {@link StreamChannelRef}.
1122
+ *
1123
+ * @param value - Value to check.
1124
+ * @returns `true` if the value is a valid `StreamChannelRef`.
1125
+ */
1097
1126
  const isChannelRef = (value) => {
1098
1127
  if (typeof value !== "object" || value === null) return false;
1099
1128
  const maybe = value;
@@ -1269,4 +1298,4 @@ Object.defineProperty(exports, 'withSpan', {
1269
1298
  return withSpan;
1270
1299
  }
1271
1300
  });
1272
- //# sourceMappingURL=utils-BJTjoUdq.cjs.map
1301
+ //# sourceMappingURL=utils-bsZVduQi.cjs.map