@ninenity/neutrun 1.2.0 → 1.9.2

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 (73) hide show
  1. package/README.md +2 -2
  2. package/dist/CLI/Localize.d.ts +6 -0
  3. package/dist/CLI/Localize.d.ts.map +1 -1
  4. package/dist/CLI/Localize.js +63 -14
  5. package/dist/CLI/Localize.js.map +1 -1
  6. package/dist/Shared/Client.d.ts +1 -0
  7. package/dist/Shared/Client.d.ts.map +1 -1
  8. package/dist/Shared/Client.js +69 -2
  9. package/dist/Shared/Client.js.map +1 -1
  10. package/dist/Shared/ComponentRuntime.d.ts.map +1 -1
  11. package/dist/Shared/ComponentRuntime.js +2 -0
  12. package/dist/Shared/ComponentRuntime.js.map +1 -1
  13. package/dist/Shared/Config.js +2 -2
  14. package/dist/Shared/Config.js.map +1 -1
  15. package/dist/Shared/Definer.d.ts.map +1 -1
  16. package/dist/Shared/Definer.js +2 -0
  17. package/dist/Shared/Definer.js.map +1 -1
  18. package/dist/Shared/Environment.d.ts +10 -0
  19. package/dist/Shared/Environment.d.ts.map +1 -0
  20. package/dist/Shared/Environment.js +18 -0
  21. package/dist/Shared/Environment.js.map +1 -0
  22. package/dist/Shared/ExpressApi.d.ts +60 -1
  23. package/dist/Shared/ExpressApi.d.ts.map +1 -1
  24. package/dist/Shared/ExpressApi.js +393 -29
  25. package/dist/Shared/ExpressApi.js.map +1 -1
  26. package/dist/Shared/InteractionResponse.d.ts +12 -0
  27. package/dist/Shared/InteractionResponse.d.ts.map +1 -0
  28. package/dist/Shared/InteractionResponse.js +72 -0
  29. package/dist/Shared/InteractionResponse.js.map +1 -0
  30. package/dist/Shared/Neutrun.d.ts +1 -0
  31. package/dist/Shared/Neutrun.d.ts.map +1 -1
  32. package/dist/Shared/Neutrun.js +13 -5
  33. package/dist/Shared/Neutrun.js.map +1 -1
  34. package/dist/Shared/NinenityApi.d.ts +54 -1
  35. package/dist/Shared/NinenityApi.d.ts.map +1 -1
  36. package/dist/Shared/NinenityApi.js +421 -18
  37. package/dist/Shared/NinenityApi.js.map +1 -1
  38. package/dist/Shared/Observability.d.ts +59 -0
  39. package/dist/Shared/Observability.d.ts.map +1 -0
  40. package/dist/Shared/Observability.js +184 -0
  41. package/dist/Shared/Observability.js.map +1 -0
  42. package/dist/Shared/ProcessManager.d.ts +1 -0
  43. package/dist/Shared/ProcessManager.d.ts.map +1 -1
  44. package/dist/Shared/ProcessManager.js +21 -6
  45. package/dist/Shared/ProcessManager.js.map +1 -1
  46. package/dist/Shared/ServerMetricsService.d.ts +85 -0
  47. package/dist/Shared/ServerMetricsService.d.ts.map +1 -0
  48. package/dist/Shared/ServerMetricsService.js +284 -0
  49. package/dist/Shared/ServerMetricsService.js.map +1 -0
  50. package/dist/Shared/TelemetryPacket.d.ts +28 -0
  51. package/dist/Shared/TelemetryPacket.d.ts.map +1 -0
  52. package/dist/Shared/TelemetryPacket.js +22 -0
  53. package/dist/Shared/TelemetryPacket.js.map +1 -0
  54. package/dist/Shared/TelemetryService.d.ts +34 -0
  55. package/dist/Shared/TelemetryService.d.ts.map +1 -1
  56. package/dist/Shared/TelemetryService.js +235 -19
  57. package/dist/Shared/TelemetryService.js.map +1 -1
  58. package/dist/Shared/WebSocket.d.ts.map +1 -1
  59. package/dist/Shared/WebSocket.js +39 -9
  60. package/dist/Shared/WebSocket.js.map +1 -1
  61. package/dist/api.d.ts +2 -2
  62. package/dist/api.d.ts.map +1 -1
  63. package/dist/api.js +4 -1
  64. package/dist/api.js.map +1 -1
  65. package/dist/express.d.ts +2 -0
  66. package/dist/express.d.ts.map +1 -1
  67. package/dist/express.js +4 -1
  68. package/dist/express.js.map +1 -1
  69. package/dist/index.d.ts +12 -4
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +18 -2
  72. package/dist/index.js.map +1 -1
  73. package/package.json +10 -2
@@ -1,12 +1,55 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
5
38
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Ninenity = exports.NinenityClient = exports.NinenityError = void 0;
39
+ exports.Ninenity = exports.NinenityClient = exports.NinenityCircuitOpenError = exports.NinenityTimeoutError = exports.NinenityNetworkError = exports.NinenityError = void 0;
40
+ const axios_1 = __importStar(require("axios"));
7
41
  const Config_1 = __importDefault(require("./Config"));
42
+ const Observability_1 = __importDefault(require("./Observability"));
43
+ const Environment_1 = require("./Environment");
8
44
  const DEFAULT_TIMEOUT_MS = 10_000;
9
45
  const DEFAULT_MAX_RESPONSE_BYTES = 2 * 1024 * 1024;
46
+ const DEFAULT_RETRY_ATTEMPTS = 3;
47
+ const DEFAULT_RETRY_BASE_DELAY_MS = 250;
48
+ const DEFAULT_RETRY_MAX_DELAY_MS = 5_000;
49
+ const DEFAULT_CIRCUIT_FAILURE_THRESHOLD = 5;
50
+ const DEFAULT_CIRCUIT_COOLDOWN_MS = 30_000;
51
+ const DEFAULT_RETRY_STATUSES = [408, 429, 500, 502, 503, 504];
52
+ const DEFAULT_RETRY_METHODS = ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE'];
10
53
  class NinenityError extends Error {
11
54
  status;
12
55
  data;
@@ -22,28 +65,75 @@ class NinenityError extends Error {
22
65
  }
23
66
  }
24
67
  exports.NinenityError = NinenityError;
68
+ class NinenityNetworkError extends Error {
69
+ url;
70
+ code;
71
+ constructor(message, url, options = {}) {
72
+ super(message, options.cause === undefined ? undefined : { cause: options.cause });
73
+ this.name = 'NinenityNetworkError';
74
+ this.url = url;
75
+ this.code = options.code;
76
+ }
77
+ }
78
+ exports.NinenityNetworkError = NinenityNetworkError;
79
+ class NinenityTimeoutError extends NinenityNetworkError {
80
+ timeoutMs;
81
+ constructor(url, timeoutMs, cause) {
82
+ super(`Ninenity API request timed out after ${timeoutMs}ms.`, url, {
83
+ code: 'ETIMEDOUT',
84
+ cause
85
+ });
86
+ this.name = 'NinenityTimeoutError';
87
+ this.timeoutMs = timeoutMs;
88
+ }
89
+ }
90
+ exports.NinenityTimeoutError = NinenityTimeoutError;
91
+ class NinenityCircuitOpenError extends Error {
92
+ retryAfterMs;
93
+ constructor(retryAfterMs) {
94
+ super(`Ninenity API circuit is open. Retry after ${retryAfterMs}ms.`);
95
+ this.name = 'NinenityCircuitOpenError';
96
+ this.retryAfterMs = retryAfterMs;
97
+ }
98
+ }
99
+ exports.NinenityCircuitOpenError = NinenityCircuitOpenError;
25
100
  class NinenityClient {
26
101
  baseUrl;
27
102
  apiKey;
28
103
  apiSecret;
29
104
  botId;
30
105
  installationId;
106
+ environment;
31
107
  timeoutMs;
32
108
  maxResponseBytes;
33
109
  fetchImpl;
110
+ axiosImpl;
111
+ retryOptions;
112
+ circuitOptions;
113
+ circuitState = 'closed';
114
+ circuitFailures = 0;
115
+ circuitOpenedAt = 0;
116
+ halfOpenRequestActive = false;
34
117
  constructor(options = {}) {
35
118
  this.baseUrl = normalizeBaseUrl(options.baseUrl ?? Config_1.default.API_URL);
36
119
  this.apiKey = options.apiKey ?? process.env.API_KEY?.trim() ?? '';
37
120
  this.apiSecret = options.apiSecret ?? process.env.API_SECRET?.trim() ?? '';
38
121
  this.botId = options.botId ?? (process.env.BOT_ID?.trim() || undefined);
39
122
  this.installationId = options.installationId ?? (process.env.TEFUTAKI_HUB_INSTALLATION_ID?.trim() || undefined);
40
- this.timeoutMs = Math.max(1_000, options.timeoutMs ?? DEFAULT_TIMEOUT_MS);
41
- this.maxResponseBytes = Math.max(1_024, options.maxResponseBytes ?? DEFAULT_MAX_RESPONSE_BYTES);
42
- const fetchImpl = options.fetch ?? globalThis.fetch;
43
- if (typeof fetchImpl !== 'function') {
44
- throw new Error('NinenityClient exige Node.js com fetch global ou a opção fetch.');
45
- }
46
- this.fetchImpl = fetchImpl.bind(globalThis);
123
+ this.environment = (0, Environment_1.getBotEnvironment)(options.environment);
124
+ this.timeoutMs = clampInteger(options.timeoutMs, 100, 120_000, DEFAULT_TIMEOUT_MS);
125
+ this.maxResponseBytes = clampInteger(options.maxResponseBytes, 1_024, 100 * 1024 * 1024, DEFAULT_MAX_RESPONSE_BYTES);
126
+ this.fetchImpl = options.fetch?.bind(globalThis);
127
+ this.retryOptions = normalizeRetryOptions(options.retry);
128
+ this.circuitOptions = normalizeCircuitOptions(options.circuitBreaker);
129
+ this.axiosImpl = axios_1.default.create({
130
+ timeout: this.timeoutMs,
131
+ maxContentLength: this.maxResponseBytes,
132
+ maxBodyLength: Number.POSITIVE_INFINITY,
133
+ responseType: 'arraybuffer',
134
+ validateStatus: () => true,
135
+ transitional: { clarifyTimeoutError: true }
136
+ });
47
137
  }
48
138
  get isConfigured() {
49
139
  return Boolean(this.apiKey && this.apiSecret);
@@ -64,10 +154,67 @@ class NinenityClient {
64
154
  return this.request('DELETE', path, options);
65
155
  }
66
156
  async request(method, path, options = {}) {
157
+ const normalizedMethod = String(method || 'GET').trim().toUpperCase();
67
158
  const url = createUrl(this.baseUrl, path, options.query);
68
159
  if (new URL(url).origin !== new URL(this.baseUrl).origin) {
69
160
  throw new Error('NinenityClient aceita apenas URLs da origem configurada em baseUrl.');
70
161
  }
162
+ const circuitProbe = this.acquireCircuitPermission();
163
+ const startedAt = performance.now();
164
+ const headers = this.createHeaders(options);
165
+ const body = serializeBody(options.body, headers);
166
+ const timeoutMs = clampInteger(options.timeoutMs, 100, 120_000, this.timeoutMs);
167
+ const retryOptions = mergeRetryOptions(this.retryOptions, options.retry);
168
+ const mayRetry = canRetryMethod(normalizedMethod, headers, options.idempotencyKey, retryOptions);
169
+ const maxAttempts = mayRetry && retryOptions.enabled ? retryOptions.maxAttempts : 1;
170
+ let attempt = 0;
171
+ let finalError;
172
+ try {
173
+ while (attempt < maxAttempts) {
174
+ attempt += 1;
175
+ try {
176
+ const result = this.fetchImpl
177
+ ? await this.executeWithFetch(normalizedMethod, url, headers, body, options, timeoutMs)
178
+ : await this.executeWithAxios(normalizedMethod, url, headers, body, options, timeoutMs);
179
+ if (!result.ok) {
180
+ throw new NinenityError(`Ninenity API request failed with HTTP ${result.status}.`, result, url);
181
+ }
182
+ this.recordCircuitSuccess(circuitProbe);
183
+ Observability_1.default.increment('ninenity_http_requests_total', 1, {
184
+ method: normalizedMethod,
185
+ outcome: 'success',
186
+ status: statusClass(result.status)
187
+ });
188
+ return result;
189
+ }
190
+ catch (error) {
191
+ finalError = normalizeTransportError(error, url, timeoutMs, options.signal);
192
+ if (attempt >= maxAttempts || !shouldRetry(finalError, retryOptions))
193
+ break;
194
+ const delayMs = calculateRetryDelay(attempt, finalError, retryOptions);
195
+ Observability_1.default.increment('ninenity_http_retries_total', 1, {
196
+ method: normalizedMethod,
197
+ reason: retryReason(finalError)
198
+ });
199
+ await waitForRetry(delayMs, options.signal, url);
200
+ }
201
+ }
202
+ this.recordCircuitFailure(finalError, circuitProbe);
203
+ Observability_1.default.increment('ninenity_http_requests_total', 1, {
204
+ method: normalizedMethod,
205
+ outcome: 'error',
206
+ status: errorStatusClass(finalError)
207
+ });
208
+ throw finalError;
209
+ }
210
+ finally {
211
+ if (circuitProbe)
212
+ this.halfOpenRequestActive = false;
213
+ Observability_1.default.observe('ninenity_http_request_duration_ms', Math.max(0, performance.now() - startedAt), { method: normalizedMethod });
214
+ Observability_1.default.setGauge('ninenity_http_circuit_state', circuitStateValue(this.circuitState));
215
+ }
216
+ }
217
+ createHeaders(options) {
71
218
  const headers = new Headers(options.headers);
72
219
  headers.set('Accept', headers.get('Accept') ?? 'application/json');
73
220
  if (this.apiKey)
@@ -79,10 +226,53 @@ class NinenityClient {
79
226
  if (this.installationId && !headers.has('x-installation-id')) {
80
227
  headers.set('x-installation-id', this.installationId);
81
228
  }
82
- const body = serializeBody(options.body, headers);
83
- const { body: _body, headers: _headers, query: _query, signal: callerSignal, ...requestInit } = options;
229
+ if (!headers.has('x-bot-environment')) {
230
+ headers.set('x-bot-environment', this.environment);
231
+ }
232
+ if (options.idempotencyKey && !headers.has('idempotency-key')) {
233
+ headers.set('idempotency-key', options.idempotencyKey.slice(0, 200));
234
+ }
235
+ const currentRequestId = headers.get('x-request-id')?.trim() ?? '';
236
+ if (!/^[a-zA-Z0-9._:-]{8,100}$/.test(currentRequestId)) {
237
+ headers.set('x-request-id', normalizeRequestId(options.correlationId ?? Observability_1.default.getCorrelationId()));
238
+ }
239
+ return headers;
240
+ }
241
+ async executeWithAxios(method, url, headers, body, options, timeoutMs) {
242
+ let response;
243
+ try {
244
+ response = await this.axiosImpl.request({
245
+ url,
246
+ method,
247
+ headers: Object.fromEntries(headers.entries()),
248
+ data: body,
249
+ timeout: timeoutMs,
250
+ signal: options.signal ?? undefined,
251
+ maxRedirects: options.redirect === 'manual' || options.redirect === 'error' ? 0 : 5
252
+ });
253
+ }
254
+ catch (error) {
255
+ if (error instanceof axios_1.AxiosError || axios_1.default.isAxiosError(error)) {
256
+ if (error.code === 'ERR_FR_MAX_BODY_LENGTH_EXCEEDED' || error.code === 'ERR_BAD_RESPONSE') {
257
+ if (/maxContentLength|larger than/i.test(error.message)) {
258
+ throw new RangeError(`Ninenity API response exceeded ${this.maxResponseBytes} bytes.`);
259
+ }
260
+ }
261
+ }
262
+ throw error;
263
+ }
264
+ const responseHeaders = axiosHeadersToHeaders(response);
265
+ return {
266
+ data: parseResponseBuffer(response.data, responseHeaders, this.maxResponseBytes),
267
+ status: response.status,
268
+ ok: response.status >= 200 && response.status < 300,
269
+ headers: responseHeaders
270
+ };
271
+ }
272
+ async executeWithFetch(method, url, headers, body, options, timeoutMs) {
273
+ const { body: _body, headers: _headers, query: _query, retry: _retry, timeoutMs: _timeoutMs, idempotencyKey: _idempotencyKey, correlationId: _correlationId, signal: callerSignal, ...requestInit } = options;
84
274
  const controller = new AbortController();
85
- const timeout = setTimeout(() => controller.abort(), this.timeoutMs);
275
+ const timeout = setTimeout(() => controller.abort(), timeoutMs);
86
276
  timeout.unref?.();
87
277
  const onAbort = () => controller.abort();
88
278
  if (callerSignal) {
@@ -99,23 +289,68 @@ class NinenityClient {
99
289
  body,
100
290
  signal: controller.signal
101
291
  });
102
- const data = await parseResponse(response, this.maxResponseBytes);
103
- const result = {
292
+ const data = await parseFetchResponse(response, this.maxResponseBytes);
293
+ return {
104
294
  data,
105
295
  status: response.status,
106
296
  ok: response.ok,
107
297
  headers: response.headers
108
298
  };
109
- if (!response.ok) {
110
- throw new NinenityError(`Ninenity API request failed with HTTP ${response.status}.`, result, url);
299
+ }
300
+ catch (error) {
301
+ if (controller.signal.aborted && !callerSignal?.aborted) {
302
+ throw new NinenityTimeoutError(url, timeoutMs, error);
111
303
  }
112
- return result;
304
+ throw error;
113
305
  }
114
306
  finally {
115
307
  clearTimeout(timeout);
116
308
  callerSignal?.removeEventListener('abort', onAbort);
117
309
  }
118
310
  }
311
+ acquireCircuitPermission() {
312
+ if (!this.circuitOptions.enabled)
313
+ return false;
314
+ if (this.circuitState === 'open') {
315
+ const elapsed = Date.now() - this.circuitOpenedAt;
316
+ if (elapsed < this.circuitOptions.cooldownMs) {
317
+ Observability_1.default.increment('ninenity_http_circuit_rejections_total');
318
+ throw new NinenityCircuitOpenError(this.circuitOptions.cooldownMs - elapsed);
319
+ }
320
+ this.circuitState = 'half-open';
321
+ }
322
+ if (this.circuitState === 'half-open') {
323
+ if (this.halfOpenRequestActive) {
324
+ Observability_1.default.increment('ninenity_http_circuit_rejections_total');
325
+ throw new NinenityCircuitOpenError(this.circuitOptions.cooldownMs);
326
+ }
327
+ this.halfOpenRequestActive = true;
328
+ return true;
329
+ }
330
+ return false;
331
+ }
332
+ recordCircuitSuccess(wasProbe) {
333
+ if (!this.circuitOptions.enabled)
334
+ return;
335
+ this.circuitFailures = 0;
336
+ if (wasProbe || this.circuitState !== 'closed')
337
+ this.circuitState = 'closed';
338
+ }
339
+ recordCircuitFailure(error, wasProbe) {
340
+ if (!this.circuitOptions.enabled)
341
+ return;
342
+ if (!isCircuitFailure(error)) {
343
+ if (wasProbe)
344
+ this.recordCircuitSuccess(true);
345
+ return;
346
+ }
347
+ this.circuitFailures += 1;
348
+ if (wasProbe || this.circuitFailures >= this.circuitOptions.failureThreshold) {
349
+ this.circuitState = 'open';
350
+ this.circuitOpenedAt = Date.now();
351
+ Observability_1.default.increment('ninenity_http_circuit_opened_total');
352
+ }
353
+ }
119
354
  }
120
355
  exports.NinenityClient = NinenityClient;
121
356
  exports.Ninenity = new NinenityClient();
@@ -155,11 +390,20 @@ function serializeBody(body, headers) {
155
390
  headers.set('Content-Type', 'application/json');
156
391
  return JSON.stringify(body);
157
392
  }
158
- async function parseResponse(response, maxBytes) {
393
+ async function parseFetchResponse(response, maxBytes) {
159
394
  const text = await readResponseText(response, maxBytes);
395
+ return parseText(text, response.headers.get('content-type') ?? '');
396
+ }
397
+ function parseResponseBuffer(data, headers, maxBytes) {
398
+ const buffer = Buffer.isBuffer(data) ? data : Buffer.from(data);
399
+ if (buffer.byteLength > maxBytes) {
400
+ throw new RangeError(`Ninenity API response exceeded ${maxBytes} bytes.`);
401
+ }
402
+ return parseText(buffer.toString('utf8'), headers.get('content-type') ?? '');
403
+ }
404
+ function parseText(text, contentType) {
160
405
  if (!text)
161
406
  return undefined;
162
- const contentType = response.headers.get('content-type') ?? '';
163
407
  if (contentType.includes('application/json')) {
164
408
  try {
165
409
  return JSON.parse(text);
@@ -203,4 +447,163 @@ async function readResponseText(response, maxBytes) {
203
447
  }
204
448
  return Buffer.concat(chunks.map((chunk) => Buffer.from(chunk))).toString('utf8');
205
449
  }
450
+ function axiosHeadersToHeaders(response) {
451
+ const headers = new Headers();
452
+ for (const [key, value] of Object.entries(response.headers)) {
453
+ if (value === undefined || value === null)
454
+ continue;
455
+ if (Array.isArray(value)) {
456
+ for (const item of value)
457
+ headers.append(key, String(item));
458
+ }
459
+ else {
460
+ headers.set(key, String(value));
461
+ }
462
+ }
463
+ return headers;
464
+ }
465
+ function normalizeTransportError(error, url, timeoutMs, callerSignal) {
466
+ if (error instanceof NinenityError ||
467
+ error instanceof NinenityNetworkError ||
468
+ error instanceof NinenityCircuitOpenError ||
469
+ error instanceof RangeError)
470
+ return error;
471
+ if (axios_1.default.isAxiosError(error)) {
472
+ if (error.code === 'ETIMEDOUT' || error.code === 'ECONNABORTED') {
473
+ return new NinenityTimeoutError(url, timeoutMs, error);
474
+ }
475
+ const message = callerSignal?.aborted
476
+ ? 'Ninenity API request was aborted.'
477
+ : 'Ninenity API network request failed.';
478
+ return new NinenityNetworkError(message, url, { code: error.code, cause: error });
479
+ }
480
+ const name = error instanceof Error ? error.name : '';
481
+ if (name === 'AbortError' && !callerSignal?.aborted) {
482
+ return new NinenityTimeoutError(url, timeoutMs, error);
483
+ }
484
+ return new NinenityNetworkError(callerSignal?.aborted ? 'Ninenity API request was aborted.' : 'Ninenity API network request failed.', url, { cause: error });
485
+ }
486
+ function normalizeRetryOptions(value) {
487
+ const input = typeof value === 'object' ? value : {};
488
+ return {
489
+ enabled: typeof value === 'boolean' ? value : input.enabled ?? true,
490
+ maxAttempts: clampInteger(input.maxAttempts, 1, 6, DEFAULT_RETRY_ATTEMPTS),
491
+ baseDelayMs: clampInteger(input.baseDelayMs, 10, 30_000, DEFAULT_RETRY_BASE_DELAY_MS),
492
+ maxDelayMs: clampInteger(input.maxDelayMs, 10, 120_000, DEFAULT_RETRY_MAX_DELAY_MS),
493
+ statuses: sanitizeStatuses(input.statuses ?? DEFAULT_RETRY_STATUSES),
494
+ methods: (input.methods ?? DEFAULT_RETRY_METHODS).map((method) => method.toUpperCase()),
495
+ respectRetryAfter: input.respectRetryAfter ?? true
496
+ };
497
+ }
498
+ function mergeRetryOptions(base, override) {
499
+ if (override === undefined)
500
+ return base;
501
+ if (typeof override === 'boolean')
502
+ return { ...base, enabled: override };
503
+ return normalizeRetryOptions({ ...base, ...override });
504
+ }
505
+ function normalizeCircuitOptions(value) {
506
+ const input = typeof value === 'object' ? value : {};
507
+ return {
508
+ enabled: typeof value === 'boolean' ? value : input.enabled ?? true,
509
+ failureThreshold: clampInteger(input.failureThreshold, 1, 100, DEFAULT_CIRCUIT_FAILURE_THRESHOLD),
510
+ cooldownMs: clampInteger(input.cooldownMs, 1_000, 10 * 60_000, DEFAULT_CIRCUIT_COOLDOWN_MS)
511
+ };
512
+ }
513
+ function canRetryMethod(method, headers, idempotencyKey, options) {
514
+ return options.methods.includes(method) || Boolean(idempotencyKey || headers.has('idempotency-key'));
515
+ }
516
+ function shouldRetry(error, options) {
517
+ if (error instanceof NinenityNetworkError)
518
+ return true;
519
+ return error instanceof NinenityError && options.statuses.includes(error.status);
520
+ }
521
+ function isCircuitFailure(error) {
522
+ return error instanceof NinenityNetworkError || (error instanceof NinenityError && error.status >= 500);
523
+ }
524
+ function calculateRetryDelay(failedAttempt, error, options) {
525
+ if (options.respectRetryAfter && error instanceof NinenityError) {
526
+ const retryAfter = parseRetryAfter(error.response.headers.get('retry-after'));
527
+ if (retryAfter !== undefined)
528
+ return Math.min(retryAfter, options.maxDelayMs);
529
+ }
530
+ const ceiling = Math.min(options.maxDelayMs, options.baseDelayMs * 2 ** Math.max(0, failedAttempt - 1));
531
+ return Math.floor(Math.random() * (ceiling + 1));
532
+ }
533
+ function parseRetryAfter(value) {
534
+ if (!value)
535
+ return undefined;
536
+ const seconds = Number(value);
537
+ if (Number.isFinite(seconds) && seconds >= 0)
538
+ return Math.round(seconds * 1_000);
539
+ const date = Date.parse(value);
540
+ if (Number.isFinite(date))
541
+ return Math.max(0, date - Date.now());
542
+ return undefined;
543
+ }
544
+ async function waitForRetry(milliseconds, signal, url) {
545
+ if (signal?.aborted)
546
+ throw new NinenityNetworkError('Ninenity API request was aborted.', url);
547
+ await new Promise((resolve, reject) => {
548
+ const finish = () => {
549
+ signal?.removeEventListener('abort', onAbort);
550
+ resolve();
551
+ };
552
+ const timer = setTimeout(finish, milliseconds);
553
+ timer.unref?.();
554
+ const onAbort = () => {
555
+ clearTimeout(timer);
556
+ signal?.removeEventListener('abort', onAbort);
557
+ reject(new NinenityNetworkError('Ninenity API request was aborted.', url));
558
+ };
559
+ signal?.addEventListener('abort', onAbort, { once: true });
560
+ if (signal?.aborted)
561
+ onAbort();
562
+ });
563
+ }
564
+ function retryReason(error) {
565
+ if (error instanceof NinenityTimeoutError)
566
+ return 'timeout';
567
+ if (error instanceof NinenityNetworkError)
568
+ return 'network';
569
+ if (error instanceof NinenityError)
570
+ return `http_${error.status}`;
571
+ return 'unknown';
572
+ }
573
+ function errorStatusClass(error) {
574
+ if (error instanceof NinenityError)
575
+ return statusClass(error.status);
576
+ if (error instanceof NinenityTimeoutError)
577
+ return 'timeout';
578
+ if (error instanceof NinenityNetworkError)
579
+ return 'network';
580
+ return 'internal';
581
+ }
582
+ function statusClass(status) {
583
+ return `${Math.floor(status / 100)}xx`;
584
+ }
585
+ function circuitStateValue(state) {
586
+ if (state === 'open')
587
+ return 1;
588
+ if (state === 'half-open')
589
+ return 0.5;
590
+ return 0;
591
+ }
592
+ function normalizeRequestId(value) {
593
+ const normalized = String(value || '').trim();
594
+ if (/^[a-zA-Z0-9._:-]{8,100}$/.test(normalized))
595
+ return normalized;
596
+ return Observability_1.default.createCorrelationId();
597
+ }
598
+ function sanitizeStatuses(statuses) {
599
+ return Array.from(new Set(statuses
600
+ .map(Number)
601
+ .filter((status) => Number.isInteger(status) && status >= 400 && status <= 599)));
602
+ }
603
+ function clampInteger(value, minimum, maximum, fallback) {
604
+ const parsed = Number(value);
605
+ if (!Number.isFinite(parsed))
606
+ return fallback;
607
+ return Math.max(minimum, Math.min(maximum, Math.floor(parsed)));
608
+ }
206
609
  //# sourceMappingURL=NinenityApi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NinenityApi.js","sourceRoot":"","sources":["../../src/Shared/NinenityApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NinenityApi.js","sourceRoot":"","sources":["../../src/Shared/NinenityApi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ export type MetricLabelValue = string | number | boolean;
2
+ export type MetricLabels = Record<string, MetricLabelValue | null | undefined>;
3
+ export interface ObservabilityContext {
4
+ correlationId: string;
5
+ requestId?: string;
6
+ source?: string;
7
+ }
8
+ export interface CounterSnapshot {
9
+ name: string;
10
+ labels: Record<string, MetricLabelValue>;
11
+ value: number;
12
+ }
13
+ export interface GaugeSnapshot extends CounterSnapshot {
14
+ }
15
+ export interface HistogramSnapshot {
16
+ name: string;
17
+ labels: Record<string, MetricLabelValue>;
18
+ count: number;
19
+ sum: number;
20
+ min: number;
21
+ max: number;
22
+ average: number;
23
+ }
24
+ export interface ObservabilitySnapshot {
25
+ generatedAt: string;
26
+ droppedSeries: number;
27
+ counters: CounterSnapshot[];
28
+ gauges: GaugeSnapshot[];
29
+ histograms: HistogramSnapshot[];
30
+ }
31
+ export interface ObservabilityOptions {
32
+ maxSeries?: number;
33
+ maxLabels?: number;
34
+ }
35
+ export declare class ObservabilityRegistry {
36
+ private readonly contextStorage;
37
+ private readonly counters;
38
+ private readonly gauges;
39
+ private readonly histograms;
40
+ private readonly maxSeries;
41
+ private readonly maxLabels;
42
+ private droppedSeries;
43
+ constructor(options?: ObservabilityOptions);
44
+ createCorrelationId(): string;
45
+ getContext(): ObservabilityContext | undefined;
46
+ getCorrelationId(): string | undefined;
47
+ run<T>(context: Partial<ObservabilityContext>, callback: () => T): T;
48
+ increment(name: string, value?: number, labels?: MetricLabels): void;
49
+ setGauge(name: string, value: number, labels?: MetricLabels): void;
50
+ observe(name: string, value: number, labels?: MetricLabels): void;
51
+ snapshot(reset?: boolean): ObservabilitySnapshot;
52
+ reset(): void;
53
+ private resetMeasurements;
54
+ private getOrCreateSeries;
55
+ private get totalSeries();
56
+ }
57
+ export declare const Observability: ObservabilityRegistry;
58
+ export default Observability;
59
+ //# sourceMappingURL=Observability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Observability.d.ts","sourceRoot":"","sources":["../../src/Shared/Observability.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AACxD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAA;AAE9E,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACxC,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe;CAAG;AAEzD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,MAAM,EAAE,aAAa,EAAE,CAAA;IACvB,UAAU,EAAE,iBAAiB,EAAE,CAAA;CAChC;AAcD,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgD;IAC/E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsD;IAC/E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsD;IAC7E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAChE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,aAAa,CAAI;gBAEN,OAAO,GAAE,oBAAyB;IAK9C,mBAAmB,IAAI,MAAM;IAI7B,UAAU,IAAI,oBAAoB,GAAG,SAAS;IAI9C,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAItC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC;IAcpE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAI,EAAE,MAAM,GAAE,YAAiB,GAAG,IAAI;IAOnE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,YAAiB,GAAG,IAAI;IAOtE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,YAAiB,GAAG,IAAI;IAgBrE,QAAQ,CAAC,KAAK,UAAQ,GAAG,qBAAqB;IA+B9C,KAAK,IAAI,IAAI;IAOpB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,KAAK,WAAW,GAEtB;CACF;AAED,eAAO,MAAM,aAAa,uBAA8B,CAAA;AACxD,eAAe,aAAa,CAAA"}