@webacy-xyz/sdk-core 1.0.1

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 (137) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +96 -0
  3. package/dist/cjs/client-base.js +134 -0
  4. package/dist/cjs/client-base.js.map +1 -0
  5. package/dist/cjs/config.js +30 -0
  6. package/dist/cjs/config.js.map +1 -0
  7. package/dist/cjs/errors/authentication.js +35 -0
  8. package/dist/cjs/errors/authentication.js.map +1 -0
  9. package/dist/cjs/errors/base.js +76 -0
  10. package/dist/cjs/errors/base.js.map +1 -0
  11. package/dist/cjs/errors/index.js +16 -0
  12. package/dist/cjs/errors/index.js.map +1 -0
  13. package/dist/cjs/errors/network.js +45 -0
  14. package/dist/cjs/errors/network.js.map +1 -0
  15. package/dist/cjs/errors/not-found.js +38 -0
  16. package/dist/cjs/errors/not-found.js.map +1 -0
  17. package/dist/cjs/errors/rate-limit.js +53 -0
  18. package/dist/cjs/errors/rate-limit.js.map +1 -0
  19. package/dist/cjs/errors/validation.js +49 -0
  20. package/dist/cjs/errors/validation.js.map +1 -0
  21. package/dist/cjs/http/client.js +393 -0
  22. package/dist/cjs/http/client.js.map +1 -0
  23. package/dist/cjs/http/index.js +11 -0
  24. package/dist/cjs/http/index.js.map +1 -0
  25. package/dist/cjs/http/retry.js +43 -0
  26. package/dist/cjs/http/retry.js.map +1 -0
  27. package/dist/cjs/index.js +52 -0
  28. package/dist/cjs/index.js.map +1 -0
  29. package/dist/cjs/package.json +1 -0
  30. package/dist/cjs/resources/base.js +43 -0
  31. package/dist/cjs/resources/base.js.map +1 -0
  32. package/dist/cjs/resources/index.js +6 -0
  33. package/dist/cjs/resources/index.js.map +1 -0
  34. package/dist/cjs/types/chain.js +114 -0
  35. package/dist/cjs/types/chain.js.map +1 -0
  36. package/dist/cjs/types/common.js +49 -0
  37. package/dist/cjs/types/common.js.map +1 -0
  38. package/dist/cjs/types/index.js +18 -0
  39. package/dist/cjs/types/index.js.map +1 -0
  40. package/dist/cjs/types/modules.js +64 -0
  41. package/dist/cjs/types/modules.js.map +1 -0
  42. package/dist/cjs/utils/address-validation.js +124 -0
  43. package/dist/cjs/utils/address-validation.js.map +1 -0
  44. package/dist/cjs/utils/index.js +16 -0
  45. package/dist/cjs/utils/index.js.map +1 -0
  46. package/dist/cjs/utils/url-validation.js +31 -0
  47. package/dist/cjs/utils/url-validation.js.map +1 -0
  48. package/dist/esm/client-base.js +130 -0
  49. package/dist/esm/client-base.js.map +1 -0
  50. package/dist/esm/config.js +26 -0
  51. package/dist/esm/config.js.map +1 -0
  52. package/dist/esm/errors/authentication.js +31 -0
  53. package/dist/esm/errors/authentication.js.map +1 -0
  54. package/dist/esm/errors/base.js +72 -0
  55. package/dist/esm/errors/base.js.map +1 -0
  56. package/dist/esm/errors/index.js +7 -0
  57. package/dist/esm/errors/index.js.map +1 -0
  58. package/dist/esm/errors/network.js +41 -0
  59. package/dist/esm/errors/network.js.map +1 -0
  60. package/dist/esm/errors/not-found.js +34 -0
  61. package/dist/esm/errors/not-found.js.map +1 -0
  62. package/dist/esm/errors/rate-limit.js +49 -0
  63. package/dist/esm/errors/rate-limit.js.map +1 -0
  64. package/dist/esm/errors/validation.js +45 -0
  65. package/dist/esm/errors/validation.js.map +1 -0
  66. package/dist/esm/http/client.js +389 -0
  67. package/dist/esm/http/client.js.map +1 -0
  68. package/dist/esm/http/index.js +3 -0
  69. package/dist/esm/http/index.js.map +1 -0
  70. package/dist/esm/http/retry.js +37 -0
  71. package/dist/esm/http/retry.js.map +1 -0
  72. package/dist/esm/index.js +15 -0
  73. package/dist/esm/index.js.map +1 -0
  74. package/dist/esm/package.json +1 -0
  75. package/dist/esm/resources/base.js +39 -0
  76. package/dist/esm/resources/base.js.map +1 -0
  77. package/dist/esm/resources/index.js +2 -0
  78. package/dist/esm/resources/index.js.map +1 -0
  79. package/dist/esm/types/chain.js +109 -0
  80. package/dist/esm/types/chain.js.map +1 -0
  81. package/dist/esm/types/common.js +46 -0
  82. package/dist/esm/types/common.js.map +1 -0
  83. package/dist/esm/types/index.js +4 -0
  84. package/dist/esm/types/index.js.map +1 -0
  85. package/dist/esm/types/modules.js +61 -0
  86. package/dist/esm/types/modules.js.map +1 -0
  87. package/dist/esm/utils/address-validation.js +113 -0
  88. package/dist/esm/utils/address-validation.js.map +1 -0
  89. package/dist/esm/utils/index.js +3 -0
  90. package/dist/esm/utils/index.js.map +1 -0
  91. package/dist/esm/utils/url-validation.js +28 -0
  92. package/dist/esm/utils/url-validation.js.map +1 -0
  93. package/dist/types/client-base.d.ts +90 -0
  94. package/dist/types/client-base.d.ts.map +1 -0
  95. package/dist/types/config.d.ts +124 -0
  96. package/dist/types/config.d.ts.map +1 -0
  97. package/dist/types/errors/authentication.d.ts +24 -0
  98. package/dist/types/errors/authentication.d.ts.map +1 -0
  99. package/dist/types/errors/base.d.ts +53 -0
  100. package/dist/types/errors/base.d.ts.map +1 -0
  101. package/dist/types/errors/index.d.ts +7 -0
  102. package/dist/types/errors/index.d.ts.map +1 -0
  103. package/dist/types/errors/network.d.ts +30 -0
  104. package/dist/types/errors/network.d.ts.map +1 -0
  105. package/dist/types/errors/not-found.d.ts +27 -0
  106. package/dist/types/errors/not-found.d.ts.map +1 -0
  107. package/dist/types/errors/rate-limit.d.ts +37 -0
  108. package/dist/types/errors/rate-limit.d.ts.map +1 -0
  109. package/dist/types/errors/validation.d.ts +34 -0
  110. package/dist/types/errors/validation.d.ts.map +1 -0
  111. package/dist/types/http/client.d.ts +160 -0
  112. package/dist/types/http/client.d.ts.map +1 -0
  113. package/dist/types/http/index.d.ts +3 -0
  114. package/dist/types/http/index.d.ts.map +1 -0
  115. package/dist/types/http/retry.d.ts +32 -0
  116. package/dist/types/http/retry.d.ts.map +1 -0
  117. package/dist/types/index.d.ts +8 -0
  118. package/dist/types/index.d.ts.map +1 -0
  119. package/dist/types/resources/base.d.ts +26 -0
  120. package/dist/types/resources/base.d.ts.map +1 -0
  121. package/dist/types/resources/index.d.ts +2 -0
  122. package/dist/types/resources/index.d.ts.map +1 -0
  123. package/dist/types/types/chain.d.ts +60 -0
  124. package/dist/types/types/chain.d.ts.map +1 -0
  125. package/dist/types/types/common.d.ts +251 -0
  126. package/dist/types/types/common.d.ts.map +1 -0
  127. package/dist/types/types/index.d.ts +5 -0
  128. package/dist/types/types/index.d.ts.map +1 -0
  129. package/dist/types/types/modules.d.ts +51 -0
  130. package/dist/types/types/modules.d.ts.map +1 -0
  131. package/dist/types/utils/address-validation.d.ts +50 -0
  132. package/dist/types/utils/address-validation.d.ts.map +1 -0
  133. package/dist/types/utils/index.d.ts +3 -0
  134. package/dist/types/utils/index.d.ts.map +1 -0
  135. package/dist/types/utils/url-validation.d.ts +16 -0
  136. package/dist/types/utils/url-validation.d.ts.map +1 -0
  137. package/package.json +64 -0
@@ -0,0 +1,393 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HttpClient = void 0;
4
+ const errors_1 = require("../errors");
5
+ const retry_1 = require("./retry");
6
+ const config_1 = require("../config");
7
+ /**
8
+ * HTTP client with retry support and interceptors
9
+ */
10
+ class HttpClient {
11
+ baseUrl;
12
+ defaultHeaders;
13
+ defaultTimeout;
14
+ retryConfig;
15
+ requestInterceptors = [];
16
+ responseInterceptors = [];
17
+ errorInterceptors = [];
18
+ debug;
19
+ logger;
20
+ constructor(config) {
21
+ this.baseUrl = config.baseUrl.replace(/\/$/, ''); // Remove trailing slash
22
+ this.defaultHeaders = {
23
+ 'Content-Type': 'application/json',
24
+ Accept: 'application/json',
25
+ ...config.headers,
26
+ };
27
+ this.defaultTimeout = config.timeout ?? 30000;
28
+ this.retryConfig = { ...retry_1.DEFAULT_RETRY_CONFIG, ...config.retry };
29
+ this.debug = config.debug ?? false;
30
+ this.logger = config.logger ?? config_1.defaultLogger;
31
+ }
32
+ /**
33
+ * Check if request logging is enabled
34
+ */
35
+ shouldLogRequests() {
36
+ return this.debug === true || this.debug === 'all' || this.debug === 'requests';
37
+ }
38
+ /**
39
+ * Check if response logging is enabled
40
+ */
41
+ shouldLogResponses() {
42
+ return this.debug === true || this.debug === 'all' || this.debug === 'responses';
43
+ }
44
+ /**
45
+ * Check if error logging is enabled
46
+ */
47
+ shouldLogErrors() {
48
+ return this.debug === true || this.debug === 'all' || this.debug === 'errors';
49
+ }
50
+ /**
51
+ * Log a request
52
+ */
53
+ logRequest(method, url, body) {
54
+ if (this.shouldLogRequests()) {
55
+ this.logger.debug(`→ ${method} ${url}`, body ? { body: this.sanitizeBody(body) } : undefined);
56
+ }
57
+ }
58
+ /**
59
+ * Log a response
60
+ */
61
+ logResponse(method, url, status, duration) {
62
+ if (this.shouldLogResponses()) {
63
+ this.logger.debug(`← ${method} ${url} ${status} (${duration}ms)`);
64
+ }
65
+ }
66
+ /**
67
+ * Log an error
68
+ */
69
+ logError(method, url, error) {
70
+ if (this.shouldLogErrors()) {
71
+ this.logger.error(`✗ ${method} ${url} - ${error.code}: ${error.message}`, {
72
+ code: error.code,
73
+ status: error.status,
74
+ requestId: error.requestId,
75
+ });
76
+ }
77
+ }
78
+ /**
79
+ * Sanitize request body for logging (remove sensitive data)
80
+ * Recursively processes nested objects and arrays
81
+ */
82
+ sanitizeBody(body) {
83
+ if (typeof body !== 'object' || body === null) {
84
+ return body;
85
+ }
86
+ // Handle arrays recursively
87
+ if (Array.isArray(body)) {
88
+ return body.map((item) => this.sanitizeBody(item));
89
+ }
90
+ // Remove potentially sensitive fields from logs
91
+ const sanitized = {};
92
+ const sensitiveKeys = [
93
+ 'apikey',
94
+ 'api_key',
95
+ 'secret',
96
+ 'password',
97
+ 'token',
98
+ 'authorization',
99
+ 'auth',
100
+ 'credentials',
101
+ 'bearer',
102
+ ];
103
+ for (const [key, value] of Object.entries(body)) {
104
+ if (sensitiveKeys.includes(key.toLowerCase())) {
105
+ sanitized[key] = '[REDACTED]';
106
+ }
107
+ else if (typeof value === 'object' && value !== null) {
108
+ sanitized[key] = this.sanitizeBody(value);
109
+ }
110
+ else {
111
+ sanitized[key] = value;
112
+ }
113
+ }
114
+ return sanitized;
115
+ }
116
+ /**
117
+ * Add a request interceptor
118
+ */
119
+ addRequestInterceptor(interceptor) {
120
+ this.requestInterceptors.push(interceptor);
121
+ }
122
+ /**
123
+ * Add a response interceptor
124
+ */
125
+ addResponseInterceptor(interceptor) {
126
+ this.responseInterceptors.push(interceptor);
127
+ }
128
+ /**
129
+ * Add an error interceptor
130
+ */
131
+ addErrorInterceptor(interceptor) {
132
+ this.errorInterceptors.push(interceptor);
133
+ }
134
+ /**
135
+ * Make a GET request
136
+ */
137
+ async get(path, config) {
138
+ return this.request(path, { ...config, method: 'GET' });
139
+ }
140
+ /**
141
+ * Make a POST request
142
+ */
143
+ async post(path, body, config) {
144
+ return this.request(path, { ...config, method: 'POST', body });
145
+ }
146
+ /**
147
+ * Make a PUT request
148
+ */
149
+ async put(path, body, config) {
150
+ return this.request(path, { ...config, method: 'PUT', body });
151
+ }
152
+ /**
153
+ * Make a PATCH request
154
+ */
155
+ async patch(path, body, config) {
156
+ return this.request(path, { ...config, method: 'PATCH', body });
157
+ }
158
+ /**
159
+ * Make a DELETE request
160
+ */
161
+ async delete(path, config) {
162
+ return this.request(path, { ...config, method: 'DELETE' });
163
+ }
164
+ /**
165
+ * Make an HTTP request with retry support
166
+ */
167
+ async request(path, config = {}) {
168
+ const url = `${this.baseUrl}${path.startsWith('/') ? path : `/${path}`}`;
169
+ // Apply request interceptors
170
+ let finalConfig = { ...config };
171
+ for (const interceptor of this.requestInterceptors) {
172
+ finalConfig = await interceptor(url, finalConfig);
173
+ }
174
+ let lastError;
175
+ let attempt = 0;
176
+ while (attempt <= this.retryConfig.maxRetries) {
177
+ try {
178
+ const response = await this.executeRequest(url, finalConfig);
179
+ // Apply response interceptors
180
+ let finalResponse = response;
181
+ for (const interceptor of this.responseInterceptors) {
182
+ finalResponse = (await interceptor(finalResponse));
183
+ }
184
+ return finalResponse;
185
+ }
186
+ catch (error) {
187
+ lastError = error instanceof errors_1.WebacyError ? error : this.wrapError(error);
188
+ // Apply error interceptors
189
+ for (const interceptor of this.errorInterceptors) {
190
+ lastError = await interceptor(lastError);
191
+ }
192
+ // Check if we should retry
193
+ if (!lastError.isRetryable() || attempt >= this.retryConfig.maxRetries) {
194
+ throw lastError;
195
+ }
196
+ // Calculate retry delay
197
+ const retryAfter = lastError instanceof errors_1.RateLimitError ? lastError.retryAfter : undefined;
198
+ const delay = (0, retry_1.calculateRetryDelay)(attempt, this.retryConfig, retryAfter);
199
+ await (0, retry_1.sleep)(delay);
200
+ attempt++;
201
+ }
202
+ }
203
+ throw lastError ?? new errors_1.NetworkError('Request failed after all retries');
204
+ }
205
+ /**
206
+ * Execute a single HTTP request
207
+ */
208
+ async executeRequest(url, config) {
209
+ const method = config.method ?? 'GET';
210
+ const timeout = config.timeout ?? this.defaultTimeout;
211
+ const controller = new AbortController();
212
+ let didTimeout = false;
213
+ const timeoutId = setTimeout(() => {
214
+ didTimeout = true;
215
+ controller.abort();
216
+ }, timeout);
217
+ const startTime = Date.now();
218
+ // Log the outgoing request
219
+ this.logRequest(method, url, config.body);
220
+ // Combine abort signals if user provided one
221
+ const signal = config.signal
222
+ ? this.combineAbortSignals(config.signal, controller.signal)
223
+ : controller.signal;
224
+ try {
225
+ const response = await fetch(url, {
226
+ method,
227
+ headers: {
228
+ ...this.defaultHeaders,
229
+ ...config.headers,
230
+ },
231
+ body: config.body ? JSON.stringify(config.body) : undefined,
232
+ signal,
233
+ });
234
+ clearTimeout(timeoutId);
235
+ const duration = Date.now() - startTime;
236
+ const requestId = response.headers.get('x-request-id') ?? undefined;
237
+ // Handle non-OK responses
238
+ if (!response.ok) {
239
+ const error = await this.createErrorFromResponse(response, requestId, url);
240
+ this.logError(method, url, error);
241
+ throw error;
242
+ }
243
+ // Log successful response
244
+ this.logResponse(method, url, response.status, duration);
245
+ // Parse response body
246
+ const contentType = response.headers.get('content-type');
247
+ let data;
248
+ if (contentType?.includes('application/json')) {
249
+ data = (await response.json());
250
+ }
251
+ else {
252
+ data = (await response.text());
253
+ }
254
+ return {
255
+ data,
256
+ status: response.status,
257
+ headers: response.headers,
258
+ requestId,
259
+ };
260
+ }
261
+ catch (error) {
262
+ clearTimeout(timeoutId);
263
+ if (error instanceof errors_1.WebacyError) {
264
+ throw error;
265
+ }
266
+ // Handle fetch errors
267
+ let networkError;
268
+ if (error instanceof Error) {
269
+ if (error.name === 'AbortError') {
270
+ // Distinguish between timeout and user-cancelled requests
271
+ if (didTimeout) {
272
+ networkError = new errors_1.NetworkError('Request timed out', { cause: error, endpoint: url });
273
+ }
274
+ else {
275
+ networkError = new errors_1.NetworkError('Request was cancelled by the caller', {
276
+ cause: error,
277
+ endpoint: url,
278
+ });
279
+ }
280
+ }
281
+ else {
282
+ networkError = new errors_1.NetworkError(error.message, { cause: error, endpoint: url });
283
+ }
284
+ }
285
+ else {
286
+ networkError = new errors_1.NetworkError('An unknown error occurred', { endpoint: url });
287
+ }
288
+ this.logError(method, url, networkError);
289
+ throw networkError;
290
+ }
291
+ }
292
+ /**
293
+ * Create an appropriate error from an HTTP response
294
+ */
295
+ async createErrorFromResponse(response, requestId, endpoint) {
296
+ let errorBody = {};
297
+ try {
298
+ errorBody = (await response.json());
299
+ }
300
+ catch {
301
+ // Ignore JSON parse errors
302
+ }
303
+ const message = errorBody.message ?? errorBody.error ?? response.statusText;
304
+ switch (response.status) {
305
+ case 401:
306
+ case 403:
307
+ return new errors_1.AuthenticationError(message, { requestId, endpoint });
308
+ case 404:
309
+ return new errors_1.NotFoundError(message, { requestId, endpoint });
310
+ case 429: {
311
+ const retryAfter = response.headers.get('retry-after');
312
+ const resetAt = response.headers.get('x-ratelimit-reset');
313
+ return new errors_1.RateLimitError(message, {
314
+ retryAfter: this.parseRetryAfter(retryAfter),
315
+ resetAt: this.parseRetryAfter(resetAt),
316
+ requestId,
317
+ endpoint,
318
+ });
319
+ }
320
+ case 400:
321
+ return new errors_1.ValidationError(message, {
322
+ errors: errorBody.errors,
323
+ requestId,
324
+ endpoint,
325
+ });
326
+ default:
327
+ if ((0, retry_1.isRetryableStatusCode)(response.status, this.retryConfig)) {
328
+ return new errors_1.NetworkError(message, {
329
+ cause: new Error(`HTTP ${response.status}`),
330
+ endpoint,
331
+ });
332
+ }
333
+ return new errors_1.WebacyError(message, {
334
+ status: response.status,
335
+ code: 'API_ERROR',
336
+ requestId,
337
+ endpoint,
338
+ });
339
+ }
340
+ }
341
+ /**
342
+ * Wrap an unknown error in a WebacyError
343
+ */
344
+ wrapError(error) {
345
+ if (error instanceof errors_1.WebacyError) {
346
+ return error;
347
+ }
348
+ if (error instanceof Error) {
349
+ return new errors_1.NetworkError(error.message, { cause: error });
350
+ }
351
+ return new errors_1.NetworkError('An unknown error occurred');
352
+ }
353
+ /**
354
+ * Parse and validate Retry-After header value
355
+ *
356
+ * Handles edge cases:
357
+ * - NaN from non-numeric strings (e.g., HTTP-date format)
358
+ * - Negative values
359
+ * - Extremely large values (capped at 5 minutes)
360
+ *
361
+ * @param value - Raw header value
362
+ * @returns Validated retry delay in seconds, or undefined if invalid
363
+ */
364
+ parseRetryAfter(value) {
365
+ if (!value)
366
+ return undefined;
367
+ const parsed = parseInt(value, 10);
368
+ // Handle NaN (e.g., from HTTP-date format like "Wed, 21 Oct 2015 07:28:00 GMT")
369
+ // and negative values
370
+ if (Number.isNaN(parsed) || parsed < 0) {
371
+ return undefined;
372
+ }
373
+ // Cap at 5 minutes to prevent excessive delays from malformed headers
374
+ const MAX_RETRY_AFTER_SECONDS = 300;
375
+ return Math.min(parsed, MAX_RETRY_AFTER_SECONDS);
376
+ }
377
+ /**
378
+ * Combine multiple abort signals
379
+ */
380
+ combineAbortSignals(...signals) {
381
+ const controller = new AbortController();
382
+ for (const signal of signals) {
383
+ if (signal.aborted) {
384
+ controller.abort(signal.reason);
385
+ break;
386
+ }
387
+ signal.addEventListener('abort', () => controller.abort(signal.reason), { once: true });
388
+ }
389
+ return controller.signal;
390
+ }
391
+ }
392
+ exports.HttpClient = HttpClient;
393
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/http/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sleep = exports.isRetryableStatusCode = exports.calculateRetryDelay = exports.DEFAULT_RETRY_CONFIG = exports.HttpClient = void 0;
4
+ var client_1 = require("./client");
5
+ Object.defineProperty(exports, "HttpClient", { enumerable: true, get: function () { return client_1.HttpClient; } });
6
+ var retry_1 = require("./retry");
7
+ Object.defineProperty(exports, "DEFAULT_RETRY_CONFIG", { enumerable: true, get: function () { return retry_1.DEFAULT_RETRY_CONFIG; } });
8
+ Object.defineProperty(exports, "calculateRetryDelay", { enumerable: true, get: function () { return retry_1.calculateRetryDelay; } });
9
+ Object.defineProperty(exports, "isRetryableStatusCode", { enumerable: true, get: function () { return retry_1.isRetryableStatusCode; } });
10
+ Object.defineProperty(exports, "sleep", { enumerable: true, get: function () { return retry_1.sleep; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http/index.ts"],"names":[],"mappings":";;;AAAA,mCAQkB;AAPhB,oGAAA,UAAU,OAAA;AASZ,iCAMiB;AAJf,6GAAA,oBAAoB,OAAA;AACpB,4GAAA,mBAAmB,OAAA;AACnB,8GAAA,qBAAqB,OAAA;AACrB,8FAAA,KAAK,OAAA"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_RETRY_CONFIG = void 0;
4
+ exports.calculateRetryDelay = calculateRetryDelay;
5
+ exports.isRetryableStatusCode = isRetryableStatusCode;
6
+ exports.sleep = sleep;
7
+ /**
8
+ * Default retry configuration
9
+ */
10
+ exports.DEFAULT_RETRY_CONFIG = {
11
+ maxRetries: 3,
12
+ initialDelay: 1000,
13
+ maxDelay: 30000,
14
+ backoffMultiplier: 2,
15
+ retryableStatusCodes: [408, 429, 500, 502, 503, 504],
16
+ };
17
+ /**
18
+ * Calculate delay for a retry attempt using exponential backoff with jitter
19
+ */
20
+ function calculateRetryDelay(attempt, config, retryAfter) {
21
+ // If server provided Retry-After, use it
22
+ if (retryAfter && retryAfter > 0) {
23
+ return Math.min(retryAfter * 1000, config.maxDelay);
24
+ }
25
+ // Exponential backoff with jitter
26
+ const exponentialDelay = config.initialDelay * Math.pow(config.backoffMultiplier, attempt);
27
+ const jitter = Math.random() * 0.3 * exponentialDelay; // 30% jitter
28
+ const delay = exponentialDelay + jitter;
29
+ return Math.min(delay, config.maxDelay);
30
+ }
31
+ /**
32
+ * Check if a status code is retryable
33
+ */
34
+ function isRetryableStatusCode(statusCode, config) {
35
+ return config.retryableStatusCodes.includes(statusCode);
36
+ }
37
+ /**
38
+ * Sleep for a given number of milliseconds
39
+ */
40
+ function sleep(ms) {
41
+ return new Promise((resolve) => setTimeout(resolve, ms));
42
+ }
43
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/http/retry.ts"],"names":[],"mappings":";;;AA8BA,kDAgBC;AAKD,sDAEC;AAKD,sBAEC;AA5CD;;GAEG;AACU,QAAA,oBAAoB,GAAgB;IAC/C,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,IAAI;IAClB,QAAQ,EAAE,KAAK;IACf,iBAAiB,EAAE,CAAC;IACpB,oBAAoB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CACrD,CAAC;AAEF;;GAEG;AACH,SAAgB,mBAAmB,CACjC,OAAe,EACf,MAAmB,EACnB,UAAmB;IAEnB,yCAAyC;IACzC,IAAI,UAAU,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,kCAAkC;IAClC,MAAM,gBAAgB,GAAG,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC3F,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,gBAAgB,CAAC,CAAC,aAAa;IACpE,MAAM,KAAK,GAAG,gBAAgB,GAAG,MAAM,CAAC;IAExC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,UAAkB,EAAE,MAAmB;IAC3E,OAAO,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,SAAgB,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isValidUrl = exports.normalizeEvmAddress = exports.normalizeAddress = exports.isValidStellarAddress = exports.isValidSuiAddress = exports.isValidTonAddress = exports.isValidBitcoinAddress = exports.isValidSolanaAddress = exports.isValidEvmAddress = exports.isValidAddress = exports.TokenStandard = exports.TypeOfAddress = exports.RiskLevel = exports.RiskScore = exports.RiskModule = exports.CHAIN_NAMES = exports.CHAIN_IDS = exports.isEvmChain = exports.getChainCompatibility = exports.ChainCompatibility = exports.Chain = exports.NetworkError = exports.NotFoundError = exports.ValidationError = exports.RateLimitError = exports.AuthenticationError = exports.WebacyError = exports.DEFAULT_RETRY_CONFIG = exports.HttpClient = exports.BaseResource = exports.BaseClient = exports.defaultLogger = exports.buildBaseUrl = exports.DEFAULT_CONFIG = void 0;
4
+ // Configuration
5
+ var config_1 = require("./config");
6
+ Object.defineProperty(exports, "DEFAULT_CONFIG", { enumerable: true, get: function () { return config_1.DEFAULT_CONFIG; } });
7
+ Object.defineProperty(exports, "buildBaseUrl", { enumerable: true, get: function () { return config_1.buildBaseUrl; } });
8
+ Object.defineProperty(exports, "defaultLogger", { enumerable: true, get: function () { return config_1.defaultLogger; } });
9
+ // Base client
10
+ var client_base_1 = require("./client-base");
11
+ Object.defineProperty(exports, "BaseClient", { enumerable: true, get: function () { return client_base_1.BaseClient; } });
12
+ // Base resource
13
+ var resources_1 = require("./resources");
14
+ Object.defineProperty(exports, "BaseResource", { enumerable: true, get: function () { return resources_1.BaseResource; } });
15
+ // HTTP client
16
+ var http_1 = require("./http");
17
+ Object.defineProperty(exports, "HttpClient", { enumerable: true, get: function () { return http_1.HttpClient; } });
18
+ Object.defineProperty(exports, "DEFAULT_RETRY_CONFIG", { enumerable: true, get: function () { return http_1.DEFAULT_RETRY_CONFIG; } });
19
+ // Errors
20
+ var errors_1 = require("./errors");
21
+ Object.defineProperty(exports, "WebacyError", { enumerable: true, get: function () { return errors_1.WebacyError; } });
22
+ Object.defineProperty(exports, "AuthenticationError", { enumerable: true, get: function () { return errors_1.AuthenticationError; } });
23
+ Object.defineProperty(exports, "RateLimitError", { enumerable: true, get: function () { return errors_1.RateLimitError; } });
24
+ Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return errors_1.ValidationError; } });
25
+ Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return errors_1.NotFoundError; } });
26
+ Object.defineProperty(exports, "NetworkError", { enumerable: true, get: function () { return errors_1.NetworkError; } });
27
+ // Types
28
+ var types_1 = require("./types");
29
+ Object.defineProperty(exports, "Chain", { enumerable: true, get: function () { return types_1.Chain; } });
30
+ Object.defineProperty(exports, "ChainCompatibility", { enumerable: true, get: function () { return types_1.ChainCompatibility; } });
31
+ Object.defineProperty(exports, "getChainCompatibility", { enumerable: true, get: function () { return types_1.getChainCompatibility; } });
32
+ Object.defineProperty(exports, "isEvmChain", { enumerable: true, get: function () { return types_1.isEvmChain; } });
33
+ Object.defineProperty(exports, "CHAIN_IDS", { enumerable: true, get: function () { return types_1.CHAIN_IDS; } });
34
+ Object.defineProperty(exports, "CHAIN_NAMES", { enumerable: true, get: function () { return types_1.CHAIN_NAMES; } });
35
+ Object.defineProperty(exports, "RiskModule", { enumerable: true, get: function () { return types_1.RiskModule; } });
36
+ Object.defineProperty(exports, "RiskScore", { enumerable: true, get: function () { return types_1.RiskScore; } });
37
+ Object.defineProperty(exports, "RiskLevel", { enumerable: true, get: function () { return types_1.RiskLevel; } });
38
+ Object.defineProperty(exports, "TypeOfAddress", { enumerable: true, get: function () { return types_1.TypeOfAddress; } });
39
+ Object.defineProperty(exports, "TokenStandard", { enumerable: true, get: function () { return types_1.TokenStandard; } });
40
+ // Utilities
41
+ var utils_1 = require("./utils");
42
+ Object.defineProperty(exports, "isValidAddress", { enumerable: true, get: function () { return utils_1.isValidAddress; } });
43
+ Object.defineProperty(exports, "isValidEvmAddress", { enumerable: true, get: function () { return utils_1.isValidEvmAddress; } });
44
+ Object.defineProperty(exports, "isValidSolanaAddress", { enumerable: true, get: function () { return utils_1.isValidSolanaAddress; } });
45
+ Object.defineProperty(exports, "isValidBitcoinAddress", { enumerable: true, get: function () { return utils_1.isValidBitcoinAddress; } });
46
+ Object.defineProperty(exports, "isValidTonAddress", { enumerable: true, get: function () { return utils_1.isValidTonAddress; } });
47
+ Object.defineProperty(exports, "isValidSuiAddress", { enumerable: true, get: function () { return utils_1.isValidSuiAddress; } });
48
+ Object.defineProperty(exports, "isValidStellarAddress", { enumerable: true, get: function () { return utils_1.isValidStellarAddress; } });
49
+ Object.defineProperty(exports, "normalizeAddress", { enumerable: true, get: function () { return utils_1.normalizeAddress; } });
50
+ Object.defineProperty(exports, "normalizeEvmAddress", { enumerable: true, get: function () { return utils_1.normalizeEvmAddress; } });
51
+ Object.defineProperty(exports, "isValidUrl", { enumerable: true, get: function () { return utils_1.isValidUrl; } });
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,gBAAgB;AAChB,mCAOkB;AALhB,wGAAA,cAAc,OAAA;AACd,sGAAA,YAAY,OAAA;AAGZ,uGAAA,aAAa,OAAA;AAGf,cAAc;AACd,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAEnB,gBAAgB;AAChB,yCAA2C;AAAlC,yGAAA,YAAY,OAAA;AAErB,cAAc;AACd,+BAUgB;AATd,kGAAA,UAAU,OAAA;AAQV,4GAAA,oBAAoB,OAAA;AAGtB,SAAS;AACT,mCAOkB;AANhB,qGAAA,WAAW,OAAA;AACX,6GAAA,mBAAmB,OAAA;AACnB,wGAAA,cAAc,OAAA;AACd,yGAAA,eAAe,OAAA;AACf,uGAAA,aAAa,OAAA;AACb,sGAAA,YAAY,OAAA;AAGd,QAAQ;AACR,iCA2BiB;AA1Bf,8FAAA,KAAK,OAAA;AACL,2GAAA,kBAAkB,OAAA;AAClB,8GAAA,qBAAqB,OAAA;AACrB,mGAAA,UAAU,OAAA;AACV,kGAAA,SAAS,OAAA;AACT,oGAAA,WAAW,OAAA;AACX,mGAAA,UAAU,OAAA;AACV,kGAAA,SAAS,OAAA;AACT,kGAAA,SAAS,OAAA;AACT,sGAAA,aAAa,OAAA;AACb,sGAAA,aAAa,OAAA;AAkBf,YAAY;AACZ,iCAWiB;AAVf,uGAAA,cAAc,OAAA;AACd,0GAAA,iBAAiB,OAAA;AACjB,6GAAA,oBAAoB,OAAA;AACpB,8GAAA,qBAAqB,OAAA;AACrB,0GAAA,iBAAiB,OAAA;AACjB,0GAAA,iBAAiB,OAAA;AACjB,8GAAA,qBAAqB,OAAA;AACrB,yGAAA,gBAAgB,OAAA;AAChB,4GAAA,mBAAmB,OAAA;AACnB,mGAAA,UAAU,OAAA"}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseResource = void 0;
4
+ const errors_1 = require("../errors");
5
+ const types_1 = require("../types");
6
+ const utils_1 = require("../utils");
7
+ /**
8
+ * Base class for API resources
9
+ *
10
+ * Provides common functionality for chain resolution and address validation
11
+ * that is shared across all resource implementations.
12
+ */
13
+ class BaseResource {
14
+ httpClient;
15
+ defaultChain;
16
+ constructor(httpClient, defaultChain) {
17
+ this.httpClient = httpClient;
18
+ this.defaultChain = defaultChain;
19
+ }
20
+ /**
21
+ * Resolve the chain to use for a request
22
+ * @throws ValidationError if no chain is specified and no default is set
23
+ */
24
+ resolveChain(options) {
25
+ const chain = options?.chain ?? this.defaultChain;
26
+ if (!chain) {
27
+ throw new errors_1.ValidationError('Chain is required. Either specify chain in options or set defaultChain in client configuration.');
28
+ }
29
+ return chain;
30
+ }
31
+ /**
32
+ * Validate address format for the given chain
33
+ * @throws ValidationError if address format is invalid for the chain
34
+ */
35
+ validateAddress(address, chain) {
36
+ if (!(0, utils_1.isValidAddress)(address, chain)) {
37
+ const chainName = types_1.CHAIN_NAMES[chain] || chain;
38
+ throw new errors_1.ValidationError(`Invalid ${chainName} address: "${address}". Please provide a valid address format for the ${chainName} blockchain.`);
39
+ }
40
+ }
41
+ }
42
+ exports.BaseResource = BaseResource;
43
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/resources/base.ts"],"names":[],"mappings":";;;AACA,sCAA4C;AAC5C,oCAA8C;AAC9C,oCAA0C;AAE1C;;;;;GAKG;AACH,MAAsB,YAAY;IAEX;IACA;IAFrB,YACqB,UAAsB,EACtB,YAAoB;QADpB,eAAU,GAAV,UAAU,CAAY;QACtB,iBAAY,GAAZ,YAAY,CAAQ;IACtC,CAAC;IAEJ;;;OAGG;IACO,YAAY,CAAC,OAA2B;QAChD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,wBAAe,CACvB,iGAAiG,CAClG,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACO,eAAe,CAAC,OAAe,EAAE,KAAY;QACrD,IAAI,CAAC,IAAA,sBAAc,EAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,mBAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;YAC9C,MAAM,IAAI,wBAAe,CACvB,WAAW,SAAS,cAAc,OAAO,oDAAoD,SAAS,cAAc,CACrH,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAhCD,oCAgCC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseResource = void 0;
4
+ var base_1 = require("./base");
5
+ Object.defineProperty(exports, "BaseResource", { enumerable: true, get: function () { return base_1.BaseResource; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resources/index.ts"],"names":[],"mappings":";;;AAAA,+BAAsC;AAA7B,oGAAA,YAAY,OAAA"}