@ninenity/neutrun 1.0.0 → 1.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 (104) hide show
  1. package/README.md +3 -2
  2. package/dist/Emojis/Pool.d.ts.map +1 -1
  3. package/dist/Emojis/Pool.js +3 -0
  4. package/dist/Emojis/Pool.js.map +1 -1
  5. package/dist/Logger/index.js +1 -1
  6. package/dist/Shared/ChannelLoader.d.ts.map +1 -1
  7. package/dist/Shared/ChannelLoader.js +22 -8
  8. package/dist/Shared/ChannelLoader.js.map +1 -1
  9. package/dist/Shared/Client.d.ts +4 -0
  10. package/dist/Shared/Client.d.ts.map +1 -1
  11. package/dist/Shared/Client.js +32 -43
  12. package/dist/Shared/Client.js.map +1 -1
  13. package/dist/Shared/ComponentRuntime.d.ts.map +1 -1
  14. package/dist/Shared/ComponentRuntime.js +14 -3
  15. package/dist/Shared/ComponentRuntime.js.map +1 -1
  16. package/dist/Shared/ConfigLoader.d.ts.map +1 -1
  17. package/dist/Shared/ConfigLoader.js +33 -8
  18. package/dist/Shared/ConfigLoader.js.map +1 -1
  19. package/dist/Shared/CooldownManager.d.ts.map +1 -1
  20. package/dist/Shared/CooldownManager.js +6 -0
  21. package/dist/Shared/CooldownManager.js.map +1 -1
  22. package/dist/Shared/Definer.d.ts.map +1 -1
  23. package/dist/Shared/Definer.js +0 -9
  24. package/dist/Shared/Definer.js.map +1 -1
  25. package/dist/Shared/Environment.d.ts +10 -0
  26. package/dist/Shared/Environment.d.ts.map +1 -0
  27. package/dist/Shared/Environment.js +18 -0
  28. package/dist/Shared/Environment.js.map +1 -0
  29. package/dist/Shared/EventBus.d.ts.map +1 -1
  30. package/dist/Shared/EventBus.js +4 -1
  31. package/dist/Shared/EventBus.js.map +1 -1
  32. package/dist/Shared/ExpressApi.d.ts +114 -0
  33. package/dist/Shared/ExpressApi.d.ts.map +1 -0
  34. package/dist/Shared/ExpressApi.js +1009 -0
  35. package/dist/Shared/ExpressApi.js.map +1 -0
  36. package/dist/Shared/InteractionManager.d.ts.map +1 -1
  37. package/dist/Shared/InteractionManager.js +28 -4
  38. package/dist/Shared/InteractionManager.js.map +1 -1
  39. package/dist/Shared/LogTransport.d.ts +3 -1
  40. package/dist/Shared/LogTransport.d.ts.map +1 -1
  41. package/dist/Shared/LogTransport.js +19 -5
  42. package/dist/Shared/LogTransport.js.map +1 -1
  43. package/dist/Shared/Neutrun.d.ts +9 -9
  44. package/dist/Shared/Neutrun.d.ts.map +1 -1
  45. package/dist/Shared/Neutrun.js +87 -37
  46. package/dist/Shared/Neutrun.js.map +1 -1
  47. package/dist/Shared/NinenityApi.d.ts +103 -0
  48. package/dist/Shared/NinenityApi.d.ts.map +1 -0
  49. package/dist/Shared/NinenityApi.js +609 -0
  50. package/dist/Shared/NinenityApi.js.map +1 -0
  51. package/dist/Shared/Observability.d.ts +59 -0
  52. package/dist/Shared/Observability.d.ts.map +1 -0
  53. package/dist/Shared/Observability.js +184 -0
  54. package/dist/Shared/Observability.js.map +1 -0
  55. package/dist/Shared/Plugin.d.ts +1 -1
  56. package/dist/Shared/Plugin.d.ts.map +1 -1
  57. package/dist/Shared/Pool.d.ts.map +1 -1
  58. package/dist/Shared/Pool.js +3 -0
  59. package/dist/Shared/Pool.js.map +1 -1
  60. package/dist/Shared/ProcessManager.d.ts +2 -1
  61. package/dist/Shared/ProcessManager.d.ts.map +1 -1
  62. package/dist/Shared/ProcessManager.js +56 -26
  63. package/dist/Shared/ProcessManager.js.map +1 -1
  64. package/dist/Shared/QueueManager.d.ts.map +1 -1
  65. package/dist/Shared/QueueManager.js +35 -13
  66. package/dist/Shared/QueueManager.js.map +1 -1
  67. package/dist/Shared/RoleLoader.d.ts.map +1 -1
  68. package/dist/Shared/RoleLoader.js +22 -8
  69. package/dist/Shared/RoleLoader.js.map +1 -1
  70. package/dist/Shared/RuntimeAliases.d.ts +10 -0
  71. package/dist/Shared/RuntimeAliases.d.ts.map +1 -0
  72. package/dist/Shared/RuntimeAliases.js +29 -0
  73. package/dist/Shared/RuntimeAliases.js.map +1 -0
  74. package/dist/Shared/Supervisor.d.ts.map +1 -1
  75. package/dist/Shared/Supervisor.js +59 -6
  76. package/dist/Shared/Supervisor.js.map +1 -1
  77. package/dist/Shared/TelemetryService.d.ts +21 -0
  78. package/dist/Shared/TelemetryService.d.ts.map +1 -1
  79. package/dist/Shared/TelemetryService.js +95 -2
  80. package/dist/Shared/TelemetryService.js.map +1 -1
  81. package/dist/Shared/WebSocket.d.ts +1 -1
  82. package/dist/Shared/WebSocket.d.ts.map +1 -1
  83. package/dist/Shared/WebSocket.js +96 -39
  84. package/dist/Shared/WebSocket.js.map +1 -1
  85. package/dist/Types/Client.Type.d.ts +3 -3
  86. package/dist/Types/Client.Type.d.ts.map +1 -1
  87. package/dist/Types/Client.Type.js.map +1 -1
  88. package/dist/api.d.ts +3 -0
  89. package/dist/api.d.ts.map +1 -0
  90. package/dist/api.js +11 -0
  91. package/dist/api.js.map +1 -0
  92. package/dist/discordjs.d.ts +8 -0
  93. package/dist/discordjs.d.ts.map +1 -0
  94. package/dist/discordjs.js +24 -0
  95. package/dist/discordjs.js.map +1 -0
  96. package/dist/express.d.ts +13 -0
  97. package/dist/express.d.ts.map +1 -0
  98. package/dist/express.js +19 -0
  99. package/dist/express.js.map +1 -0
  100. package/dist/index.d.ts +14 -3
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +29 -2
  103. package/dist/index.js.map +1 -1
  104. package/package.json +28 -4
@@ -0,0 +1,609 @@
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
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.Ninenity = exports.NinenityClient = exports.NinenityCircuitOpenError = exports.NinenityTimeoutError = exports.NinenityNetworkError = exports.NinenityError = void 0;
40
+ const axios_1 = __importStar(require("axios"));
41
+ const Config_1 = __importDefault(require("./Config"));
42
+ const Observability_1 = __importDefault(require("./Observability"));
43
+ const Environment_1 = require("./Environment");
44
+ const DEFAULT_TIMEOUT_MS = 10_000;
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'];
53
+ class NinenityError extends Error {
54
+ status;
55
+ data;
56
+ url;
57
+ response;
58
+ constructor(message, response, url) {
59
+ super(message);
60
+ this.name = 'NinenityError';
61
+ this.status = response.status;
62
+ this.data = response.data;
63
+ this.response = response;
64
+ this.url = url;
65
+ }
66
+ }
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;
100
+ class NinenityClient {
101
+ baseUrl;
102
+ apiKey;
103
+ apiSecret;
104
+ botId;
105
+ installationId;
106
+ environment;
107
+ timeoutMs;
108
+ maxResponseBytes;
109
+ fetchImpl;
110
+ axiosImpl;
111
+ retryOptions;
112
+ circuitOptions;
113
+ circuitState = 'closed';
114
+ circuitFailures = 0;
115
+ circuitOpenedAt = 0;
116
+ halfOpenRequestActive = false;
117
+ constructor(options = {}) {
118
+ this.baseUrl = normalizeBaseUrl(options.baseUrl ?? Config_1.default.API_URL);
119
+ this.apiKey = options.apiKey ?? process.env.API_KEY?.trim() ?? '';
120
+ this.apiSecret = options.apiSecret ?? process.env.API_SECRET?.trim() ?? '';
121
+ this.botId = options.botId ?? (process.env.BOT_ID?.trim() || undefined);
122
+ this.installationId = options.installationId ?? (process.env.TEFUTAKI_HUB_INSTALLATION_ID?.trim() || undefined);
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
+ });
137
+ }
138
+ get isConfigured() {
139
+ return Boolean(this.apiKey && this.apiSecret);
140
+ }
141
+ get(path, options) {
142
+ return this.request('GET', path, options);
143
+ }
144
+ post(path, body, options) {
145
+ return this.request('POST', path, { ...options, body });
146
+ }
147
+ put(path, body, options) {
148
+ return this.request('PUT', path, { ...options, body });
149
+ }
150
+ patch(path, body, options) {
151
+ return this.request('PATCH', path, { ...options, body });
152
+ }
153
+ delete(path, options) {
154
+ return this.request('DELETE', path, options);
155
+ }
156
+ async request(method, path, options = {}) {
157
+ const normalizedMethod = String(method || 'GET').trim().toUpperCase();
158
+ const url = createUrl(this.baseUrl, path, options.query);
159
+ if (new URL(url).origin !== new URL(this.baseUrl).origin) {
160
+ throw new Error('NinenityClient aceita apenas URLs da origem configurada em baseUrl.');
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) {
218
+ const headers = new Headers(options.headers);
219
+ headers.set('Accept', headers.get('Accept') ?? 'application/json');
220
+ if (this.apiKey)
221
+ headers.set('x-api-key', this.apiKey);
222
+ if (this.apiSecret)
223
+ headers.set('x-api-secret', this.apiSecret);
224
+ if (this.botId && !headers.has('x-bot-id'))
225
+ headers.set('x-bot-id', this.botId);
226
+ if (this.installationId && !headers.has('x-installation-id')) {
227
+ headers.set('x-installation-id', this.installationId);
228
+ }
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;
274
+ const controller = new AbortController();
275
+ const timeout = setTimeout(() => controller.abort(), timeoutMs);
276
+ timeout.unref?.();
277
+ const onAbort = () => controller.abort();
278
+ if (callerSignal) {
279
+ if (callerSignal.aborted)
280
+ controller.abort();
281
+ else
282
+ callerSignal.addEventListener('abort', onAbort, { once: true });
283
+ }
284
+ try {
285
+ const response = await this.fetchImpl(url, {
286
+ ...requestInit,
287
+ method,
288
+ headers,
289
+ body,
290
+ signal: controller.signal
291
+ });
292
+ const data = await parseFetchResponse(response, this.maxResponseBytes);
293
+ return {
294
+ data,
295
+ status: response.status,
296
+ ok: response.ok,
297
+ headers: response.headers
298
+ };
299
+ }
300
+ catch (error) {
301
+ if (controller.signal.aborted && !callerSignal?.aborted) {
302
+ throw new NinenityTimeoutError(url, timeoutMs, error);
303
+ }
304
+ throw error;
305
+ }
306
+ finally {
307
+ clearTimeout(timeout);
308
+ callerSignal?.removeEventListener('abort', onAbort);
309
+ }
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
+ }
354
+ }
355
+ exports.NinenityClient = NinenityClient;
356
+ exports.Ninenity = new NinenityClient();
357
+ function normalizeBaseUrl(value) {
358
+ const normalized = value.trim();
359
+ if (!normalized)
360
+ throw new Error('Ninenity API base URL cannot be empty.');
361
+ const parsed = new URL(normalized);
362
+ if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
363
+ throw new TypeError('Ninenity API base URL must use http:// or https://.');
364
+ }
365
+ parsed.hash = '';
366
+ parsed.search = '';
367
+ parsed.pathname = parsed.pathname.replace(/\/+$/, '') || '/';
368
+ return parsed.toString().replace(/\/$/, '');
369
+ }
370
+ function createUrl(baseUrl, path, query) {
371
+ const url = /^https?:\/\//i.test(path)
372
+ ? new URL(path)
373
+ : new URL(path.replace(/^\/+/, ''), `${baseUrl}/`);
374
+ for (const [key, value] of Object.entries(query ?? {})) {
375
+ if (value !== undefined && value !== null)
376
+ url.searchParams.set(key, String(value));
377
+ }
378
+ return url.toString();
379
+ }
380
+ function serializeBody(body, headers) {
381
+ if (body === undefined)
382
+ return undefined;
383
+ if (typeof body === 'string')
384
+ return body;
385
+ if (body instanceof URLSearchParams || body instanceof FormData || body instanceof Blob)
386
+ return body;
387
+ if (body instanceof ArrayBuffer || ArrayBuffer.isView(body))
388
+ return body;
389
+ if (!headers.has('Content-Type'))
390
+ headers.set('Content-Type', 'application/json');
391
+ return JSON.stringify(body);
392
+ }
393
+ async function parseFetchResponse(response, maxBytes) {
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) {
405
+ if (!text)
406
+ return undefined;
407
+ if (contentType.includes('application/json')) {
408
+ try {
409
+ return JSON.parse(text);
410
+ }
411
+ catch {
412
+ return text;
413
+ }
414
+ }
415
+ try {
416
+ return JSON.parse(text);
417
+ }
418
+ catch {
419
+ return text;
420
+ }
421
+ }
422
+ async function readResponseText(response, maxBytes) {
423
+ const contentLength = Number(response.headers.get('content-length'));
424
+ if (Number.isFinite(contentLength) && contentLength > maxBytes) {
425
+ throw new RangeError(`Ninenity API response exceeded ${maxBytes} bytes.`);
426
+ }
427
+ if (!response.body)
428
+ return '';
429
+ const reader = response.body.getReader();
430
+ const chunks = [];
431
+ let total = 0;
432
+ try {
433
+ while (true) {
434
+ const { done, value } = await reader.read();
435
+ if (done)
436
+ break;
437
+ total += value.byteLength;
438
+ if (total > maxBytes) {
439
+ await reader.cancel();
440
+ throw new RangeError(`Ninenity API response exceeded ${maxBytes} bytes.`);
441
+ }
442
+ chunks.push(value);
443
+ }
444
+ }
445
+ finally {
446
+ reader.releaseLock();
447
+ }
448
+ return Buffer.concat(chunks.map((chunk) => Buffer.from(chunk))).toString('utf8');
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
+ }
609
+ //# sourceMappingURL=NinenityApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NinenityApi.js","sourceRoot":"","sources":["../../src/Shared/NinenityApi.ts"],"names":[],"mappings":"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"}