iii-sdk 0.19.7 → 0.20.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/channel.cjs +5 -0
- package/dist/channel.d.cts +2 -0
- package/dist/channel.d.mts +2 -0
- package/dist/channel.mjs +3 -0
- package/dist/{utils-DXL7JI0q.mjs → channels-De8fNMyx.mjs} +3 -108
- package/dist/channels-De8fNMyx.mjs.map +1 -0
- package/dist/{utils-CuS1Knym.cjs → channels-ZbQzcwnN.cjs} +3 -166
- package/dist/channels-ZbQzcwnN.cjs.map +1 -0
- package/dist/engine.cjs +5 -0
- package/dist/engine.d.cts +3 -0
- package/dist/engine.d.mts +3 -0
- package/dist/engine.mjs +3 -0
- package/dist/errors.cjs +28 -0
- package/dist/errors.cjs.map +1 -0
- package/dist/errors.d.cts +40 -0
- package/dist/errors.d.cts.map +1 -0
- package/dist/errors.d.mts +40 -0
- package/dist/errors.d.mts.map +1 -0
- package/dist/errors.mjs +25 -0
- package/dist/errors.mjs.map +1 -0
- package/dist/helpers.cjs +6 -5
- package/dist/helpers.cjs.map +1 -1
- package/dist/helpers.d.cts +23 -5
- package/dist/helpers.d.cts.map +1 -1
- package/dist/helpers.d.mts +23 -5
- package/dist/helpers.d.mts.map +1 -1
- package/dist/helpers.mjs +4 -3
- package/dist/helpers.mjs.map +1 -1
- package/dist/iii-constants-Baptl8nm.d.mts +47 -0
- package/dist/iii-constants-Baptl8nm.d.mts.map +1 -0
- package/dist/iii-constants-BqXp8xSN.d.cts +47 -0
- package/dist/iii-constants-BqXp8xSN.d.cts.map +1 -0
- package/dist/iii-constants-Br94RUNi.cjs +67 -0
- package/dist/iii-constants-Br94RUNi.cjs.map +1 -0
- package/dist/iii-constants-_k3SoHry.mjs +43 -0
- package/dist/iii-constants-_k3SoHry.mjs.map +1 -0
- package/dist/iii-types-6aHBgy7l.cjs +24 -0
- package/dist/iii-types-6aHBgy7l.cjs.map +1 -0
- package/dist/iii-types-CRx2qAjB.mjs +18 -0
- package/dist/iii-types-CRx2qAjB.mjs.map +1 -0
- package/dist/index.cjs +81 -162
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +14 -81
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +14 -81
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +18 -94
- package/dist/index.mjs.map +1 -1
- package/dist/internal.cjs +0 -0
- package/dist/internal.d.cts +2 -0
- package/dist/internal.d.mts +2 -0
- package/dist/internal.mjs +1 -0
- package/dist/protocol.cjs +4 -0
- package/dist/protocol.d.cts +2 -0
- package/dist/protocol.d.mts +2 -0
- package/dist/protocol.mjs +3 -0
- package/dist/runtime.cjs +0 -0
- package/dist/runtime.d.cts +3 -0
- package/dist/runtime.d.mts +3 -0
- package/dist/runtime.mjs +1 -0
- package/dist/state.cjs.map +1 -1
- package/dist/state.d.cts +3 -7
- package/dist/state.d.cts.map +1 -1
- package/dist/state.d.mts +3 -7
- package/dist/state.d.mts.map +1 -1
- package/dist/state.mjs.map +1 -1
- package/dist/stream.d.cts +5 -246
- package/dist/stream.d.cts.map +1 -1
- package/dist/stream.d.mts +5 -246
- package/dist/stream.d.mts.map +1 -1
- package/dist/trigger.cjs +0 -0
- package/dist/trigger.d.cts +2 -0
- package/dist/trigger.d.mts +2 -0
- package/dist/trigger.mjs +1 -0
- package/dist/{utils-BnRzIUCy.d.cts → types-ChnmRit-.d.mts} +30 -217
- package/dist/types-ChnmRit-.d.mts.map +1 -0
- package/dist/{utils-e84Qph-9.d.mts → types-pzKubHk_.d.cts} +30 -217
- package/dist/types-pzKubHk_.d.cts.map +1 -0
- package/dist/utils-63wxBJg-.cjs +121 -0
- package/dist/utils-63wxBJg-.cjs.map +1 -0
- package/dist/utils-8G4hHqvZ.mjs +69 -0
- package/dist/utils-8G4hHqvZ.mjs.map +1 -0
- package/package.json +37 -2
- package/typedoc.json +13 -1
- package/vitest.config.ts +3 -3
- package/dist/utils-BnRzIUCy.d.cts.map +0 -1
- package/dist/utils-CuS1Knym.cjs.map +0 -1
- package/dist/utils-DXL7JI0q.mjs.map +0 -1
- package/dist/utils-e84Qph-9.d.mts.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,93 +1,17 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
-
const require_utils = require('./utils-
|
|
3
|
-
|
|
2
|
+
const require_utils = require('./utils-63wxBJg-.cjs');
|
|
3
|
+
const require_errors = require('./errors.cjs');
|
|
4
|
+
const require_channels = require('./channels-ZbQzcwnN.cjs');
|
|
5
|
+
const require_iii_constants = require('./iii-constants-Br94RUNi.cjs');
|
|
6
|
+
const require_iii_types = require('./iii-types-6aHBgy7l.cjs');
|
|
4
7
|
let _opentelemetry_api = require("@opentelemetry/api");
|
|
5
8
|
let node_module = require("node:module");
|
|
6
9
|
let node_os = require("node:os");
|
|
7
10
|
node_os = require_utils.__toESM(node_os);
|
|
8
|
-
let
|
|
9
|
-
let
|
|
10
|
-
|
|
11
|
-
//#region src/errors.ts
|
|
12
|
-
var IIIInvocationError = class extends Error {
|
|
13
|
-
constructor(init) {
|
|
14
|
-
super(`${init.code}: ${init.message}`);
|
|
15
|
-
this.name = "IIIInvocationError";
|
|
16
|
-
this.code = init.code;
|
|
17
|
-
this.function_id = init.function_id;
|
|
18
|
-
this.stacktrace = init.stacktrace;
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* True when `value` looks like the wire `ErrorBody` the engine sends in
|
|
23
|
-
* `InvocationResult.error`: `{ code: string, message: string, stacktrace?: string }`.
|
|
24
|
-
* Used to distinguish an engine rejection (which we wrap in
|
|
25
|
-
* {@link IIIInvocationError}) from a JS `Error` thrown elsewhere.
|
|
26
|
-
*/
|
|
27
|
-
function isErrorBody(value) {
|
|
28
|
-
if (typeof value !== "object" || value === null) return false;
|
|
29
|
-
const v = value;
|
|
30
|
-
return typeof v.code === "string" && typeof v.message === "string" && (v.stacktrace === void 0 || typeof v.stacktrace === "string");
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
//#endregion
|
|
34
|
-
//#region src/iii-constants.ts
|
|
35
|
-
/**
|
|
36
|
-
* Constants for the III module.
|
|
37
|
-
*/
|
|
38
|
-
/**
|
|
39
|
-
* Engine function paths for internal operations.
|
|
40
|
-
*
|
|
41
|
-
* Naming note: `LIST_TRIGGERS` / `INFO_TRIGGERS` cover trigger TYPES
|
|
42
|
-
* (templates). `LIST_REGISTERED_TRIGGERS` / `INFO_REGISTERED_TRIGGERS`
|
|
43
|
-
* cover trigger INSTANCES (subscriber rows). The old
|
|
44
|
-
* `engine::trigger-types::list` builtin has been removed and is now
|
|
45
|
-
* served by `engine::triggers::list`.
|
|
46
|
-
*/
|
|
47
|
-
const EngineFunctions = {
|
|
48
|
-
LIST_FUNCTIONS: "engine::functions::list",
|
|
49
|
-
INFO_FUNCTIONS: "engine::functions::info",
|
|
50
|
-
LIST_WORKERS: "engine::workers::list",
|
|
51
|
-
INFO_WORKERS: "engine::workers::info",
|
|
52
|
-
LIST_TRIGGERS: "engine::triggers::list",
|
|
53
|
-
INFO_TRIGGERS: "engine::triggers::info",
|
|
54
|
-
LIST_REGISTERED_TRIGGERS: "engine::registered-triggers::list",
|
|
55
|
-
INFO_REGISTERED_TRIGGERS: "engine::registered-triggers::info",
|
|
56
|
-
REGISTER_WORKER: "engine::workers::register"
|
|
57
|
-
};
|
|
58
|
-
/** Engine trigger types */
|
|
59
|
-
const EngineTriggers = {
|
|
60
|
-
FUNCTIONS_AVAILABLE: "engine::functions-available",
|
|
61
|
-
LOG: "log"
|
|
62
|
-
};
|
|
63
|
-
/** Default reconnection configuration */
|
|
64
|
-
const DEFAULT_BRIDGE_RECONNECTION_CONFIG = {
|
|
65
|
-
initialDelayMs: 1e3,
|
|
66
|
-
maxDelayMs: 3e4,
|
|
67
|
-
backoffMultiplier: 2,
|
|
68
|
-
jitterFactor: .3,
|
|
69
|
-
maxRetries: -1
|
|
70
|
-
};
|
|
71
|
-
/** Default invocation timeout in milliseconds */
|
|
72
|
-
const DEFAULT_INVOCATION_TIMEOUT_MS = 3e4;
|
|
73
|
-
|
|
74
|
-
//#endregion
|
|
75
|
-
//#region src/iii-types.ts
|
|
76
|
-
let MessageType = /* @__PURE__ */ function(MessageType) {
|
|
77
|
-
MessageType["RegisterFunction"] = "registerfunction";
|
|
78
|
-
MessageType["UnregisterFunction"] = "unregisterfunction";
|
|
79
|
-
MessageType["InvokeFunction"] = "invokefunction";
|
|
80
|
-
MessageType["InvocationResult"] = "invocationresult";
|
|
81
|
-
MessageType["RegisterTriggerType"] = "registertriggertype";
|
|
82
|
-
MessageType["RegisterTrigger"] = "registertrigger";
|
|
83
|
-
MessageType["UnregisterTrigger"] = "unregistertrigger";
|
|
84
|
-
MessageType["UnregisterTriggerType"] = "unregistertriggertype";
|
|
85
|
-
MessageType["TriggerRegistrationResult"] = "triggerregistrationresult";
|
|
86
|
-
MessageType["WorkerRegistered"] = "workerregistered";
|
|
87
|
-
return MessageType;
|
|
88
|
-
}({});
|
|
11
|
+
let ws = require("ws");
|
|
12
|
+
let _iii_dev_helpers_observability = require("@iii-dev/helpers/observability");
|
|
13
|
+
let _iii_dev_helpers_observability_internal = require("@iii-dev/helpers/observability/internal");
|
|
89
14
|
|
|
90
|
-
//#endregion
|
|
91
15
|
//#region src/iii.ts
|
|
92
16
|
const { version: SDK_VERSION } = (0, node_module.createRequire)(require("url").pathToFileURL(__filename).href)("../package.json");
|
|
93
17
|
function getOsInfo() {
|
|
@@ -109,11 +33,11 @@ var Sdk = class {
|
|
|
109
33
|
this.connectionState = "disconnected";
|
|
110
34
|
this.isShuttingDown = false;
|
|
111
35
|
this.registerTriggerType = (triggerType, handler) => {
|
|
112
|
-
this.sendMessage(MessageType.RegisterTriggerType, triggerType, true);
|
|
36
|
+
this.sendMessage(require_iii_types.MessageType.RegisterTriggerType, triggerType, true);
|
|
113
37
|
this.triggerTypes.set(triggerType.id, {
|
|
114
38
|
message: {
|
|
115
39
|
...triggerType,
|
|
116
|
-
message_type: MessageType.RegisterTriggerType
|
|
40
|
+
message_type: require_iii_types.MessageType.RegisterTriggerType
|
|
117
41
|
},
|
|
118
42
|
handler
|
|
119
43
|
});
|
|
@@ -143,7 +67,7 @@ var Sdk = class {
|
|
|
143
67
|
};
|
|
144
68
|
};
|
|
145
69
|
this.unregisterTriggerType = (triggerType) => {
|
|
146
|
-
this.sendMessage(MessageType.UnregisterTriggerType, triggerType, true);
|
|
70
|
+
this.sendMessage(require_iii_types.MessageType.UnregisterTriggerType, triggerType, true);
|
|
147
71
|
this.triggerTypes.delete(triggerType.id);
|
|
148
72
|
};
|
|
149
73
|
this.registerTrigger = (trigger) => {
|
|
@@ -151,14 +75,14 @@ var Sdk = class {
|
|
|
151
75
|
const fullTrigger = {
|
|
152
76
|
...trigger,
|
|
153
77
|
id,
|
|
154
|
-
message_type: MessageType.RegisterTrigger
|
|
78
|
+
message_type: require_iii_types.MessageType.RegisterTrigger
|
|
155
79
|
};
|
|
156
|
-
this.sendMessage(MessageType.RegisterTrigger, fullTrigger, true);
|
|
80
|
+
this.sendMessage(require_iii_types.MessageType.RegisterTrigger, fullTrigger, true);
|
|
157
81
|
this.triggers.set(id, fullTrigger);
|
|
158
82
|
return { unregister: () => {
|
|
159
|
-
this.sendMessage(MessageType.UnregisterTrigger, {
|
|
83
|
+
this.sendMessage(require_iii_types.MessageType.UnregisterTrigger, {
|
|
160
84
|
id,
|
|
161
|
-
message_type: MessageType.UnregisterTrigger,
|
|
85
|
+
message_type: require_iii_types.MessageType.UnregisterTrigger,
|
|
162
86
|
type: fullTrigger.type
|
|
163
87
|
});
|
|
164
88
|
this.triggers.delete(id);
|
|
@@ -171,11 +95,11 @@ var Sdk = class {
|
|
|
171
95
|
const fullMessage = isHandler ? {
|
|
172
96
|
...options,
|
|
173
97
|
id: functionId,
|
|
174
|
-
message_type: MessageType.RegisterFunction
|
|
98
|
+
message_type: require_iii_types.MessageType.RegisterFunction
|
|
175
99
|
} : {
|
|
176
100
|
...options,
|
|
177
101
|
id: functionId,
|
|
178
|
-
message_type: MessageType.RegisterFunction,
|
|
102
|
+
message_type: require_iii_types.MessageType.RegisterFunction,
|
|
179
103
|
invocation: {
|
|
180
104
|
url: handlerOrInvocation.url,
|
|
181
105
|
method: handlerOrInvocation.method ?? "POST",
|
|
@@ -184,18 +108,18 @@ var Sdk = class {
|
|
|
184
108
|
auth: handlerOrInvocation.auth
|
|
185
109
|
}
|
|
186
110
|
};
|
|
187
|
-
this.sendMessage(MessageType.RegisterFunction, fullMessage, true);
|
|
111
|
+
this.sendMessage(require_iii_types.MessageType.RegisterFunction, fullMessage, true);
|
|
188
112
|
if (isHandler) {
|
|
189
113
|
const handler = handlerOrInvocation;
|
|
190
114
|
this.functions.set(functionId, {
|
|
191
115
|
message: fullMessage,
|
|
192
116
|
handler: async (input, traceparent, baggage) => {
|
|
193
117
|
const tracePayloads = !(process.env.III_DISABLE_TRACE_PAYLOADS === "1" || process.env.III_DISABLE_TRACE_PAYLOADS?.toLowerCase() === "true");
|
|
194
|
-
const payloadMaxBytes = (0,
|
|
118
|
+
const payloadMaxBytes = (0, _iii_dev_helpers_observability.resolveMaxBytesFromEnv)();
|
|
195
119
|
const runHandler = async () => {
|
|
196
120
|
if (tracePayloads) {
|
|
197
|
-
const { json, truncated } = (0,
|
|
198
|
-
(0,
|
|
121
|
+
const { json, truncated } = (0, _iii_dev_helpers_observability.redactAndTruncate)(input, payloadMaxBytes);
|
|
122
|
+
(0, _iii_dev_helpers_observability.recordSpanEvent)("iii.invocation.input", {
|
|
199
123
|
"iii.payload.json": json,
|
|
200
124
|
"iii.payload.truncated": truncated
|
|
201
125
|
});
|
|
@@ -203,8 +127,8 @@ var Sdk = class {
|
|
|
203
127
|
try {
|
|
204
128
|
const result = await handler(input);
|
|
205
129
|
if (tracePayloads) {
|
|
206
|
-
const { json, truncated } = (0,
|
|
207
|
-
(0,
|
|
130
|
+
const { json, truncated } = (0, _iii_dev_helpers_observability.redactAndTruncate)(result, payloadMaxBytes);
|
|
131
|
+
(0, _iii_dev_helpers_observability.recordSpanEvent)("iii.invocation.output", {
|
|
208
132
|
"iii.payload.json": json,
|
|
209
133
|
"iii.payload.truncated": truncated,
|
|
210
134
|
"iii.payload.ok": true
|
|
@@ -213,8 +137,8 @@ var Sdk = class {
|
|
|
213
137
|
return result;
|
|
214
138
|
} catch (err) {
|
|
215
139
|
if (tracePayloads) {
|
|
216
|
-
const { json, truncated } = (0,
|
|
217
|
-
(0,
|
|
140
|
+
const { json, truncated } = (0, _iii_dev_helpers_observability.redactAndTruncate)({ error: err instanceof Error ? err.message : String(err) }, payloadMaxBytes);
|
|
141
|
+
(0, _iii_dev_helpers_observability.recordSpanEvent)("iii.invocation.output", {
|
|
218
142
|
"iii.payload.json": json,
|
|
219
143
|
"iii.payload.truncated": truncated,
|
|
220
144
|
"iii.payload.ok": false
|
|
@@ -223,9 +147,9 @@ var Sdk = class {
|
|
|
223
147
|
throw err;
|
|
224
148
|
}
|
|
225
149
|
};
|
|
226
|
-
if ((0,
|
|
227
|
-
const parentContext = (0,
|
|
228
|
-
return _opentelemetry_api.context.with(parentContext, () => (0,
|
|
150
|
+
if ((0, _iii_dev_helpers_observability_internal.getTracer)()) {
|
|
151
|
+
const parentContext = (0, _iii_dev_helpers_observability.extractContext)(traceparent, baggage);
|
|
152
|
+
return _opentelemetry_api.context.with(parentContext, () => (0, _iii_dev_helpers_observability.withSpan)(`execute ${functionId}`, { kind: _opentelemetry_api.SpanKind.INTERNAL }, async () => await runHandler()));
|
|
229
153
|
}
|
|
230
154
|
const traceId = crypto.randomUUID().replace(/-/g, "");
|
|
231
155
|
const spanId = crypto.randomUUID().replace(/-/g, "").slice(0, 16);
|
|
@@ -241,7 +165,7 @@ var Sdk = class {
|
|
|
241
165
|
return {
|
|
242
166
|
id: functionId,
|
|
243
167
|
unregister: () => {
|
|
244
|
-
this.sendMessage(MessageType.UnregisterFunction, { id: functionId }, true);
|
|
168
|
+
this.sendMessage(require_iii_types.MessageType.UnregisterFunction, { id: functionId }, true);
|
|
245
169
|
this.functions.delete(functionId);
|
|
246
170
|
}
|
|
247
171
|
};
|
|
@@ -252,8 +176,8 @@ var Sdk = class {
|
|
|
252
176
|
payload: { buffer_size: bufferSize }
|
|
253
177
|
});
|
|
254
178
|
return {
|
|
255
|
-
writer: new
|
|
256
|
-
reader: new
|
|
179
|
+
writer: new require_channels.ChannelWriter(this.address, result.writer),
|
|
180
|
+
reader: new require_channels.ChannelReader(this.address, result.reader),
|
|
257
181
|
writerRef: result.writer,
|
|
258
182
|
readerRef: result.reader
|
|
259
183
|
};
|
|
@@ -262,9 +186,9 @@ var Sdk = class {
|
|
|
262
186
|
const { function_id, payload, action, timeoutMs } = request;
|
|
263
187
|
const effectiveTimeout = timeoutMs ?? this.invocationTimeoutMs;
|
|
264
188
|
if (action?.type === "void") {
|
|
265
|
-
const traceparent = (0,
|
|
266
|
-
const baggage = (0,
|
|
267
|
-
this.sendMessage(MessageType.InvokeFunction, {
|
|
189
|
+
const traceparent = (0, _iii_dev_helpers_observability.injectTraceparent)();
|
|
190
|
+
const baggage = (0, _iii_dev_helpers_observability.injectBaggage)();
|
|
191
|
+
this.sendMessage(require_iii_types.MessageType.InvokeFunction, {
|
|
268
192
|
function_id,
|
|
269
193
|
data: payload,
|
|
270
194
|
traceparent,
|
|
@@ -274,13 +198,13 @@ var Sdk = class {
|
|
|
274
198
|
return;
|
|
275
199
|
}
|
|
276
200
|
const invocation_id = crypto.randomUUID();
|
|
277
|
-
const traceparent = (0,
|
|
278
|
-
const baggage = (0,
|
|
201
|
+
const traceparent = (0, _iii_dev_helpers_observability.injectTraceparent)();
|
|
202
|
+
const baggage = (0, _iii_dev_helpers_observability.injectBaggage)();
|
|
279
203
|
return new Promise((resolve, reject) => {
|
|
280
204
|
const timeout = setTimeout(() => {
|
|
281
205
|
if (this.invocations.get(invocation_id)) {
|
|
282
206
|
this.invocations.delete(invocation_id);
|
|
283
|
-
reject(new
|
|
207
|
+
reject(new require_errors.InvocationError({
|
|
284
208
|
code: "TIMEOUT",
|
|
285
209
|
message: `invocation timed out after ${effectiveTimeout}ms`,
|
|
286
210
|
function_id
|
|
@@ -299,7 +223,7 @@ var Sdk = class {
|
|
|
299
223
|
function_id,
|
|
300
224
|
timeout
|
|
301
225
|
});
|
|
302
|
-
this.sendMessage(MessageType.InvokeFunction, {
|
|
226
|
+
this.sendMessage(require_iii_types.MessageType.InvokeFunction, {
|
|
303
227
|
invocation_id,
|
|
304
228
|
function_id,
|
|
305
229
|
data: payload,
|
|
@@ -319,7 +243,7 @@ var Sdk = class {
|
|
|
319
243
|
this.shutdown = async () => {
|
|
320
244
|
this.isShuttingDown = true;
|
|
321
245
|
this.stopMetricsReporting();
|
|
322
|
-
await (0,
|
|
246
|
+
await (0, _iii_dev_helpers_observability.shutdownOtel)();
|
|
323
247
|
this.clearReconnectTimeout();
|
|
324
248
|
for (const [_id, invocation] of this.invocations) {
|
|
325
249
|
if (invocation.timeout) clearTimeout(invocation.timeout);
|
|
@@ -341,10 +265,10 @@ var Sdk = class {
|
|
|
341
265
|
this.metricsReportingEnabled = options?.enableMetricsReporting ?? true;
|
|
342
266
|
this.invocationTimeoutMs = options?.invocationTimeoutMs ?? 3e4;
|
|
343
267
|
this.reconnectionConfig = {
|
|
344
|
-
...DEFAULT_BRIDGE_RECONNECTION_CONFIG,
|
|
268
|
+
...require_iii_constants.DEFAULT_BRIDGE_RECONNECTION_CONFIG,
|
|
345
269
|
...options?.reconnectionConfig
|
|
346
270
|
};
|
|
347
|
-
(0,
|
|
271
|
+
(0, _iii_dev_helpers_observability.initOtel)({
|
|
348
272
|
...options?.otel,
|
|
349
273
|
engineWsUrl: this.address
|
|
350
274
|
});
|
|
@@ -354,7 +278,7 @@ var Sdk = class {
|
|
|
354
278
|
const telemetryOpts = this.options?.telemetry;
|
|
355
279
|
const language = telemetryOpts?.language ?? Intl.DateTimeFormat().resolvedOptions().locale ?? process.env.LANG?.split(".")[0];
|
|
356
280
|
this.trigger({
|
|
357
|
-
function_id: EngineFunctions.REGISTER_WORKER,
|
|
281
|
+
function_id: require_iii_constants.EngineFunctions.REGISTER_WORKER,
|
|
358
282
|
payload: {
|
|
359
283
|
runtime: "node",
|
|
360
284
|
version: SDK_VERSION,
|
|
@@ -416,18 +340,18 @@ var Sdk = class {
|
|
|
416
340
|
}
|
|
417
341
|
startMetricsReporting() {
|
|
418
342
|
if (!this.metricsReportingEnabled || !this.workerId) return;
|
|
419
|
-
const meter = (0,
|
|
343
|
+
const meter = (0, _iii_dev_helpers_observability_internal.getMeter)();
|
|
420
344
|
if (!meter) {
|
|
421
345
|
console.warn("[iii] Worker metrics disabled: OpenTelemetry not initialized. Call initOtel() with metricsEnabled: true before creating the iii.");
|
|
422
346
|
return;
|
|
423
347
|
}
|
|
424
|
-
(0,
|
|
348
|
+
(0, _iii_dev_helpers_observability.registerWorkerGauges)(meter, {
|
|
425
349
|
workerId: this.workerId,
|
|
426
350
|
workerName: this.workerName
|
|
427
351
|
});
|
|
428
352
|
}
|
|
429
353
|
stopMetricsReporting() {
|
|
430
|
-
(0,
|
|
354
|
+
(0, _iii_dev_helpers_observability.stopWorkerGauges)();
|
|
431
355
|
}
|
|
432
356
|
onSocketClose() {
|
|
433
357
|
this.ws?.removeAllListeners();
|
|
@@ -443,18 +367,18 @@ var Sdk = class {
|
|
|
443
367
|
this.setConnectionState("connected");
|
|
444
368
|
this.ws?.on("message", this.onMessage.bind(this));
|
|
445
369
|
this.triggerTypes.forEach(({ message }) => {
|
|
446
|
-
this.sendMessage(MessageType.RegisterTriggerType, message, true);
|
|
370
|
+
this.sendMessage(require_iii_types.MessageType.RegisterTriggerType, message, true);
|
|
447
371
|
});
|
|
448
372
|
this.functions.forEach(({ message }) => {
|
|
449
|
-
this.sendMessage(MessageType.RegisterFunction, message, true);
|
|
373
|
+
this.sendMessage(require_iii_types.MessageType.RegisterFunction, message, true);
|
|
450
374
|
});
|
|
451
375
|
this.triggers.forEach((trigger) => {
|
|
452
|
-
this.sendMessage(MessageType.RegisterTrigger, trigger, true);
|
|
376
|
+
this.sendMessage(require_iii_types.MessageType.RegisterTrigger, trigger, true);
|
|
453
377
|
});
|
|
454
378
|
const pending = this.messagesToSend;
|
|
455
379
|
this.messagesToSend = [];
|
|
456
380
|
for (const message of pending) {
|
|
457
|
-
if (message.type === MessageType.InvokeFunction && typeof message.invocation_id === "string" && !this.invocations.has(message.invocation_id)) continue;
|
|
381
|
+
if (message.type === require_iii_types.MessageType.InvokeFunction && typeof message.invocation_id === "string" && !this.invocations.has(message.invocation_id)) continue;
|
|
458
382
|
this.sendMessageRaw(JSON.stringify(message));
|
|
459
383
|
}
|
|
460
384
|
this.registerWorkerMetadata();
|
|
@@ -473,7 +397,7 @@ var Sdk = class {
|
|
|
473
397
|
}
|
|
474
398
|
toWireFormat(messageType, message) {
|
|
475
399
|
const { message_type: _, ...rest } = message;
|
|
476
|
-
if (messageType === MessageType.RegisterTrigger && "type" in message) {
|
|
400
|
+
if (messageType === require_iii_types.MessageType.RegisterTrigger && "type" in message) {
|
|
477
401
|
const { type: triggerType, ...triggerRest } = message;
|
|
478
402
|
return {
|
|
479
403
|
type: messageType,
|
|
@@ -481,7 +405,7 @@ var Sdk = class {
|
|
|
481
405
|
trigger_type: triggerType
|
|
482
406
|
};
|
|
483
407
|
}
|
|
484
|
-
if (messageType === MessageType.UnregisterTrigger && "type" in message) {
|
|
408
|
+
if (messageType === require_iii_types.MessageType.UnregisterTrigger && "type" in message) {
|
|
485
409
|
const { type: triggerType, ...triggerRest } = message;
|
|
486
410
|
return {
|
|
487
411
|
type: messageType,
|
|
@@ -489,7 +413,7 @@ var Sdk = class {
|
|
|
489
413
|
trigger_type: triggerType
|
|
490
414
|
};
|
|
491
415
|
}
|
|
492
|
-
if (messageType === MessageType.TriggerRegistrationResult && "type" in message) {
|
|
416
|
+
if (messageType === require_iii_types.MessageType.TriggerRegistrationResult && "type" in message) {
|
|
493
417
|
const { type: triggerType, ...resultRest } = message;
|
|
494
418
|
return {
|
|
495
419
|
type: messageType,
|
|
@@ -508,10 +432,10 @@ var Sdk = class {
|
|
|
508
432
|
else if (!skipIfClosed) this.messagesToSend.push(wireMessage);
|
|
509
433
|
}
|
|
510
434
|
logError(message, error) {
|
|
511
|
-
const otelLogger = (0,
|
|
435
|
+
const otelLogger = (0, _iii_dev_helpers_observability.getLogger)();
|
|
512
436
|
const errorMessage = error instanceof Error ? error.message : String(error ?? "");
|
|
513
437
|
if (otelLogger) otelLogger.emit({
|
|
514
|
-
severityNumber:
|
|
438
|
+
severityNumber: _iii_dev_helpers_observability.SeverityNumber.ERROR,
|
|
515
439
|
body: `[iii] ${message}${errorMessage ? `: ${errorMessage}` : ""}`
|
|
516
440
|
});
|
|
517
441
|
else console.error(`[iii] ${message}`, error ?? "");
|
|
@@ -526,7 +450,7 @@ var Sdk = class {
|
|
|
526
450
|
this.invocations.delete(invocation_id);
|
|
527
451
|
}
|
|
528
452
|
/**
|
|
529
|
-
* Wrap a wire-format `ErrorBody` in {@link
|
|
453
|
+
* Wrap a wire-format `ErrorBody` in {@link InvocationError} so callers get
|
|
530
454
|
* a real `Error` with a readable `.message` and a typed `.code`. Pass-through
|
|
531
455
|
* for values that are already `Error` subclasses. Everything else is wrapped
|
|
532
456
|
* under an `UNKNOWN` code so `String(err) !== '[object Object]'` holds for
|
|
@@ -534,20 +458,20 @@ var Sdk = class {
|
|
|
534
458
|
*/
|
|
535
459
|
toInvocationError(error, function_id) {
|
|
536
460
|
if (error instanceof Error) return error;
|
|
537
|
-
if (isErrorBody(error)) return new
|
|
461
|
+
if (require_errors.isErrorBody(error)) return new require_errors.InvocationError({
|
|
538
462
|
code: error.code,
|
|
539
463
|
message: error.message,
|
|
540
464
|
function_id,
|
|
541
465
|
stacktrace: error.stacktrace
|
|
542
466
|
});
|
|
543
|
-
return new
|
|
467
|
+
return new require_errors.InvocationError({
|
|
544
468
|
code: "UNKNOWN",
|
|
545
469
|
message: typeof error === "string" ? error : JSON.stringify(error) ?? String(error),
|
|
546
470
|
function_id
|
|
547
471
|
});
|
|
548
472
|
}
|
|
549
473
|
resolveChannelValue(value) {
|
|
550
|
-
if (require_utils.isChannelRef(value)) return value.direction === "read" ? new
|
|
474
|
+
if (require_utils.isChannelRef(value)) return value.direction === "read" ? new require_channels.ChannelReader(this.address, value) : new require_channels.ChannelWriter(this.address, value);
|
|
551
475
|
if (Array.isArray(value)) return value.map((item) => this.resolveChannelValue(item));
|
|
552
476
|
if (value !== null && typeof value === "object") {
|
|
553
477
|
const out = {};
|
|
@@ -558,8 +482,8 @@ var Sdk = class {
|
|
|
558
482
|
}
|
|
559
483
|
async onInvokeFunction(invocation_id, function_id, input, traceparent, baggage) {
|
|
560
484
|
const fn = this.functions.get(function_id);
|
|
561
|
-
const getResponseTraceparent = () => (0,
|
|
562
|
-
const getResponseBaggage = () => (0,
|
|
485
|
+
const getResponseTraceparent = () => (0, _iii_dev_helpers_observability.injectTraceparent)() ?? traceparent;
|
|
486
|
+
const getResponseBaggage = () => (0, _iii_dev_helpers_observability.injectBaggage)() ?? baggage;
|
|
563
487
|
const resolvedInput = this.resolveChannelValue(input);
|
|
564
488
|
if (fn?.handler) {
|
|
565
489
|
if (!invocation_id) {
|
|
@@ -572,7 +496,7 @@ var Sdk = class {
|
|
|
572
496
|
}
|
|
573
497
|
try {
|
|
574
498
|
const result = await fn.handler(resolvedInput, traceparent, baggage);
|
|
575
|
-
this.sendMessage(MessageType.InvocationResult, {
|
|
499
|
+
this.sendMessage(require_iii_types.MessageType.InvocationResult, {
|
|
576
500
|
invocation_id,
|
|
577
501
|
function_id,
|
|
578
502
|
result,
|
|
@@ -581,7 +505,7 @@ var Sdk = class {
|
|
|
581
505
|
});
|
|
582
506
|
} catch (error) {
|
|
583
507
|
const isError = error instanceof Error;
|
|
584
|
-
this.sendMessage(MessageType.InvocationResult, {
|
|
508
|
+
this.sendMessage(require_iii_types.MessageType.InvocationResult, {
|
|
585
509
|
invocation_id,
|
|
586
510
|
function_id,
|
|
587
511
|
error: {
|
|
@@ -596,7 +520,7 @@ var Sdk = class {
|
|
|
596
520
|
} else {
|
|
597
521
|
const errorCode = fn ? "function_not_invokable" : "function_not_found";
|
|
598
522
|
const errorMessage = fn ? "Function is HTTP-invoked and cannot be invoked locally" : "Function not found";
|
|
599
|
-
if (invocation_id) this.sendMessage(MessageType.InvocationResult, {
|
|
523
|
+
if (invocation_id) this.sendMessage(require_iii_types.MessageType.InvocationResult, {
|
|
600
524
|
invocation_id,
|
|
601
525
|
function_id,
|
|
602
526
|
error: {
|
|
@@ -618,16 +542,16 @@ var Sdk = class {
|
|
|
618
542
|
config,
|
|
619
543
|
metadata
|
|
620
544
|
});
|
|
621
|
-
this.sendMessage(MessageType.TriggerRegistrationResult, {
|
|
545
|
+
this.sendMessage(require_iii_types.MessageType.TriggerRegistrationResult, {
|
|
622
546
|
id,
|
|
623
|
-
message_type: MessageType.TriggerRegistrationResult,
|
|
547
|
+
message_type: require_iii_types.MessageType.TriggerRegistrationResult,
|
|
624
548
|
type: trigger_type,
|
|
625
549
|
function_id
|
|
626
550
|
});
|
|
627
551
|
} catch (error) {
|
|
628
|
-
this.sendMessage(MessageType.TriggerRegistrationResult, {
|
|
552
|
+
this.sendMessage(require_iii_types.MessageType.TriggerRegistrationResult, {
|
|
629
553
|
id,
|
|
630
|
-
message_type: MessageType.TriggerRegistrationResult,
|
|
554
|
+
message_type: require_iii_types.MessageType.TriggerRegistrationResult,
|
|
631
555
|
type: trigger_type,
|
|
632
556
|
function_id,
|
|
633
557
|
error: {
|
|
@@ -636,9 +560,9 @@ var Sdk = class {
|
|
|
636
560
|
}
|
|
637
561
|
});
|
|
638
562
|
}
|
|
639
|
-
else this.sendMessage(MessageType.TriggerRegistrationResult, {
|
|
563
|
+
else this.sendMessage(require_iii_types.MessageType.TriggerRegistrationResult, {
|
|
640
564
|
id,
|
|
641
|
-
message_type: MessageType.TriggerRegistrationResult,
|
|
565
|
+
message_type: require_iii_types.MessageType.TriggerRegistrationResult,
|
|
642
566
|
type: trigger_type,
|
|
643
567
|
function_id,
|
|
644
568
|
error: {
|
|
@@ -681,16 +605,16 @@ var Sdk = class {
|
|
|
681
605
|
this.logError("Failed to parse incoming message", error);
|
|
682
606
|
return;
|
|
683
607
|
}
|
|
684
|
-
if (msgType === MessageType.InvocationResult) {
|
|
608
|
+
if (msgType === require_iii_types.MessageType.InvocationResult) {
|
|
685
609
|
const { invocation_id, result, error } = message;
|
|
686
610
|
this.onInvocationResult(invocation_id, result, error);
|
|
687
|
-
} else if (msgType === MessageType.InvokeFunction) {
|
|
611
|
+
} else if (msgType === require_iii_types.MessageType.InvokeFunction) {
|
|
688
612
|
const { invocation_id, function_id, data, traceparent, baggage } = message;
|
|
689
613
|
this.onInvokeFunction(invocation_id, function_id, data, traceparent, baggage);
|
|
690
|
-
} else if (msgType === MessageType.RegisterTrigger) this.onRegisterTrigger(message);
|
|
691
|
-
else if (msgType === MessageType.UnregisterTrigger) this.onUnregisterTrigger(message);
|
|
692
|
-
else if (msgType === MessageType.TriggerRegistrationResult) this.onTriggerRegistrationResult(message);
|
|
693
|
-
else if (msgType === MessageType.WorkerRegistered) {
|
|
614
|
+
} else if (msgType === require_iii_types.MessageType.RegisterTrigger) this.onRegisterTrigger(message);
|
|
615
|
+
else if (msgType === require_iii_types.MessageType.UnregisterTrigger) this.onUnregisterTrigger(message);
|
|
616
|
+
else if (msgType === require_iii_types.MessageType.TriggerRegistrationResult) this.onTriggerRegistrationResult(message);
|
|
617
|
+
else if (msgType === require_iii_types.MessageType.WorkerRegistered) {
|
|
694
618
|
const { worker_id } = message;
|
|
695
619
|
this.workerId = worker_id;
|
|
696
620
|
console.debug("[iii] Worker registered with ID:", worker_id);
|
|
@@ -699,21 +623,21 @@ var Sdk = class {
|
|
|
699
623
|
}
|
|
700
624
|
};
|
|
701
625
|
/**
|
|
702
|
-
* Factory object that constructs routing actions for {@link
|
|
626
|
+
* Factory object that constructs routing actions for {@link IIIClient.trigger}.
|
|
703
627
|
*
|
|
704
628
|
* @example
|
|
705
629
|
* ```typescript
|
|
706
630
|
* import { TriggerAction } from 'iii-sdk'
|
|
707
631
|
*
|
|
708
632
|
* // Enqueue to a named queue
|
|
709
|
-
*
|
|
633
|
+
* worker.trigger({
|
|
710
634
|
* function_id: 'process',
|
|
711
635
|
* payload: { data: 'hello' },
|
|
712
636
|
* action: TriggerAction.Enqueue({ queue: 'jobs' }),
|
|
713
637
|
* })
|
|
714
638
|
*
|
|
715
639
|
* // Fire-and-forget
|
|
716
|
-
*
|
|
640
|
+
* worker.trigger({
|
|
717
641
|
* function_id: 'notify',
|
|
718
642
|
* payload: {},
|
|
719
643
|
* action: TriggerAction.Void(),
|
|
@@ -733,13 +657,13 @@ const TriggerAction = {
|
|
|
733
657
|
*
|
|
734
658
|
* @param address - WebSocket URL of the III engine (e.g. `ws://localhost:49134`).
|
|
735
659
|
* @param options - Optional {@link InitOptions} for worker name, timeouts, reconnection, and OTel.
|
|
736
|
-
* @returns A connected {@link
|
|
660
|
+
* @returns A connected {@link IIIClient} instance.
|
|
737
661
|
*
|
|
738
662
|
* @example
|
|
739
663
|
* ```typescript
|
|
740
664
|
* import { registerWorker } from 'iii-sdk'
|
|
741
665
|
*
|
|
742
|
-
* const
|
|
666
|
+
* const worker = registerWorker(process.env.III_URL ?? 'ws://localhost:49134', {
|
|
743
667
|
* workerName: 'my-worker',
|
|
744
668
|
* })
|
|
745
669
|
* ```
|
|
@@ -747,12 +671,7 @@ const TriggerAction = {
|
|
|
747
671
|
const registerWorker = (address, options) => new Sdk(address, options);
|
|
748
672
|
|
|
749
673
|
//#endregion
|
|
750
|
-
exports.
|
|
751
|
-
exports.ChannelWriter = require_utils.ChannelWriter;
|
|
752
|
-
exports.EngineFunctions = EngineFunctions;
|
|
753
|
-
exports.EngineTriggers = EngineTriggers;
|
|
754
|
-
exports.IIIInvocationError = IIIInvocationError;
|
|
674
|
+
exports.InvocationError = require_errors.InvocationError;
|
|
755
675
|
exports.TriggerAction = TriggerAction;
|
|
756
|
-
exports.http = require_utils.http;
|
|
757
676
|
exports.registerWorker = registerWorker;
|
|
758
677
|
//# sourceMappingURL=index.cjs.map
|