@rlajous/sdk-core 1.0.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 (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +96 -0
  3. package/dist/cjs/client-base.js +155 -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 +335 -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 +48 -0
  28. package/dist/cjs/index.js.map +1 -0
  29. package/dist/cjs/package.json +1 -0
  30. package/dist/cjs/types/chain.js +114 -0
  31. package/dist/cjs/types/chain.js.map +1 -0
  32. package/dist/cjs/types/common.js +49 -0
  33. package/dist/cjs/types/common.js.map +1 -0
  34. package/dist/cjs/types/index.js +18 -0
  35. package/dist/cjs/types/index.js.map +1 -0
  36. package/dist/cjs/types/modules.js +64 -0
  37. package/dist/cjs/types/modules.js.map +1 -0
  38. package/dist/cjs/utils/address-validation.js +124 -0
  39. package/dist/cjs/utils/address-validation.js.map +1 -0
  40. package/dist/cjs/utils/index.js +14 -0
  41. package/dist/cjs/utils/index.js.map +1 -0
  42. package/dist/esm/client-base.js +151 -0
  43. package/dist/esm/client-base.js.map +1 -0
  44. package/dist/esm/config.js +26 -0
  45. package/dist/esm/config.js.map +1 -0
  46. package/dist/esm/errors/authentication.js +31 -0
  47. package/dist/esm/errors/authentication.js.map +1 -0
  48. package/dist/esm/errors/base.js +72 -0
  49. package/dist/esm/errors/base.js.map +1 -0
  50. package/dist/esm/errors/index.js +7 -0
  51. package/dist/esm/errors/index.js.map +1 -0
  52. package/dist/esm/errors/network.js +41 -0
  53. package/dist/esm/errors/network.js.map +1 -0
  54. package/dist/esm/errors/not-found.js +34 -0
  55. package/dist/esm/errors/not-found.js.map +1 -0
  56. package/dist/esm/errors/rate-limit.js +49 -0
  57. package/dist/esm/errors/rate-limit.js.map +1 -0
  58. package/dist/esm/errors/validation.js +45 -0
  59. package/dist/esm/errors/validation.js.map +1 -0
  60. package/dist/esm/http/client.js +331 -0
  61. package/dist/esm/http/client.js.map +1 -0
  62. package/dist/esm/http/index.js +3 -0
  63. package/dist/esm/http/index.js.map +1 -0
  64. package/dist/esm/http/retry.js +37 -0
  65. package/dist/esm/http/retry.js.map +1 -0
  66. package/dist/esm/index.js +13 -0
  67. package/dist/esm/index.js.map +1 -0
  68. package/dist/esm/package.json +1 -0
  69. package/dist/esm/types/chain.js +109 -0
  70. package/dist/esm/types/chain.js.map +1 -0
  71. package/dist/esm/types/common.js +46 -0
  72. package/dist/esm/types/common.js.map +1 -0
  73. package/dist/esm/types/index.js +4 -0
  74. package/dist/esm/types/index.js.map +1 -0
  75. package/dist/esm/types/modules.js +61 -0
  76. package/dist/esm/types/modules.js.map +1 -0
  77. package/dist/esm/utils/address-validation.js +113 -0
  78. package/dist/esm/utils/address-validation.js.map +1 -0
  79. package/dist/esm/utils/index.js +2 -0
  80. package/dist/esm/utils/index.js.map +1 -0
  81. package/dist/types/client-base.d.ts +94 -0
  82. package/dist/types/client-base.d.ts.map +1 -0
  83. package/dist/types/config.d.ts +124 -0
  84. package/dist/types/config.d.ts.map +1 -0
  85. package/dist/types/errors/authentication.d.ts +24 -0
  86. package/dist/types/errors/authentication.d.ts.map +1 -0
  87. package/dist/types/errors/base.d.ts +53 -0
  88. package/dist/types/errors/base.d.ts.map +1 -0
  89. package/dist/types/errors/index.d.ts +7 -0
  90. package/dist/types/errors/index.d.ts.map +1 -0
  91. package/dist/types/errors/network.d.ts +30 -0
  92. package/dist/types/errors/network.d.ts.map +1 -0
  93. package/dist/types/errors/not-found.d.ts +27 -0
  94. package/dist/types/errors/not-found.d.ts.map +1 -0
  95. package/dist/types/errors/rate-limit.d.ts +37 -0
  96. package/dist/types/errors/rate-limit.d.ts.map +1 -0
  97. package/dist/types/errors/validation.d.ts +34 -0
  98. package/dist/types/errors/validation.d.ts.map +1 -0
  99. package/dist/types/http/client.d.ts +147 -0
  100. package/dist/types/http/client.d.ts.map +1 -0
  101. package/dist/types/http/index.d.ts +3 -0
  102. package/dist/types/http/index.d.ts.map +1 -0
  103. package/dist/types/http/retry.d.ts +32 -0
  104. package/dist/types/http/retry.d.ts.map +1 -0
  105. package/dist/types/index.d.ts +7 -0
  106. package/dist/types/index.d.ts.map +1 -0
  107. package/dist/types/types/chain.d.ts +60 -0
  108. package/dist/types/types/chain.d.ts.map +1 -0
  109. package/dist/types/types/common.d.ts +251 -0
  110. package/dist/types/types/common.d.ts.map +1 -0
  111. package/dist/types/types/index.d.ts +5 -0
  112. package/dist/types/types/index.d.ts.map +1 -0
  113. package/dist/types/types/modules.d.ts +51 -0
  114. package/dist/types/types/modules.d.ts.map +1 -0
  115. package/dist/types/utils/address-validation.d.ts +50 -0
  116. package/dist/types/utils/address-validation.d.ts.map +1 -0
  117. package/dist/types/utils/index.d.ts +2 -0
  118. package/dist/types/utils/index.d.ts.map +1 -0
  119. package/package.json +64 -0
@@ -0,0 +1,335 @@
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
+ */
81
+ sanitizeBody(body) {
82
+ if (typeof body !== 'object' || body === null) {
83
+ return body;
84
+ }
85
+ // Remove potentially sensitive fields from logs
86
+ const sanitized = { ...body };
87
+ const sensitiveKeys = ['apiKey', 'api_key', 'secret', 'password', 'token'];
88
+ for (const key of sensitiveKeys) {
89
+ if (key in sanitized) {
90
+ sanitized[key] = '[REDACTED]';
91
+ }
92
+ }
93
+ return sanitized;
94
+ }
95
+ /**
96
+ * Add a request interceptor
97
+ */
98
+ addRequestInterceptor(interceptor) {
99
+ this.requestInterceptors.push(interceptor);
100
+ }
101
+ /**
102
+ * Add a response interceptor
103
+ */
104
+ addResponseInterceptor(interceptor) {
105
+ this.responseInterceptors.push(interceptor);
106
+ }
107
+ /**
108
+ * Add an error interceptor
109
+ */
110
+ addErrorInterceptor(interceptor) {
111
+ this.errorInterceptors.push(interceptor);
112
+ }
113
+ /**
114
+ * Make a GET request
115
+ */
116
+ async get(path, config) {
117
+ return this.request(path, { ...config, method: 'GET' });
118
+ }
119
+ /**
120
+ * Make a POST request
121
+ */
122
+ async post(path, body, config) {
123
+ return this.request(path, { ...config, method: 'POST', body });
124
+ }
125
+ /**
126
+ * Make a PUT request
127
+ */
128
+ async put(path, body, config) {
129
+ return this.request(path, { ...config, method: 'PUT', body });
130
+ }
131
+ /**
132
+ * Make a PATCH request
133
+ */
134
+ async patch(path, body, config) {
135
+ return this.request(path, { ...config, method: 'PATCH', body });
136
+ }
137
+ /**
138
+ * Make a DELETE request
139
+ */
140
+ async delete(path, config) {
141
+ return this.request(path, { ...config, method: 'DELETE' });
142
+ }
143
+ /**
144
+ * Make an HTTP request with retry support
145
+ */
146
+ async request(path, config = {}) {
147
+ const url = `${this.baseUrl}${path.startsWith('/') ? path : `/${path}`}`;
148
+ // Apply request interceptors
149
+ let finalConfig = { ...config };
150
+ for (const interceptor of this.requestInterceptors) {
151
+ finalConfig = await interceptor(url, finalConfig);
152
+ }
153
+ let lastError;
154
+ let attempt = 0;
155
+ while (attempt <= this.retryConfig.maxRetries) {
156
+ try {
157
+ const response = await this.executeRequest(url, finalConfig);
158
+ // Apply response interceptors
159
+ let finalResponse = response;
160
+ for (const interceptor of this.responseInterceptors) {
161
+ finalResponse = (await interceptor(finalResponse));
162
+ }
163
+ return finalResponse;
164
+ }
165
+ catch (error) {
166
+ lastError = error instanceof errors_1.WebacyError ? error : this.wrapError(error);
167
+ // Apply error interceptors
168
+ for (const interceptor of this.errorInterceptors) {
169
+ lastError = await interceptor(lastError);
170
+ }
171
+ // Check if we should retry
172
+ if (!lastError.isRetryable() || attempt >= this.retryConfig.maxRetries) {
173
+ throw lastError;
174
+ }
175
+ // Calculate retry delay
176
+ const retryAfter = lastError instanceof errors_1.RateLimitError ? lastError.retryAfter : undefined;
177
+ const delay = (0, retry_1.calculateRetryDelay)(attempt, this.retryConfig, retryAfter);
178
+ await (0, retry_1.sleep)(delay);
179
+ attempt++;
180
+ }
181
+ }
182
+ throw lastError ?? new errors_1.NetworkError('Request failed after all retries');
183
+ }
184
+ /**
185
+ * Execute a single HTTP request
186
+ */
187
+ async executeRequest(url, config) {
188
+ const method = config.method ?? 'GET';
189
+ const timeout = config.timeout ?? this.defaultTimeout;
190
+ const controller = new AbortController();
191
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
192
+ const startTime = Date.now();
193
+ // Log the outgoing request
194
+ this.logRequest(method, url, config.body);
195
+ // Combine abort signals if user provided one
196
+ const signal = config.signal
197
+ ? this.combineAbortSignals(config.signal, controller.signal)
198
+ : controller.signal;
199
+ try {
200
+ const response = await fetch(url, {
201
+ method,
202
+ headers: {
203
+ ...this.defaultHeaders,
204
+ ...config.headers,
205
+ },
206
+ body: config.body ? JSON.stringify(config.body) : undefined,
207
+ signal,
208
+ });
209
+ clearTimeout(timeoutId);
210
+ const duration = Date.now() - startTime;
211
+ const requestId = response.headers.get('x-request-id') ?? undefined;
212
+ // Handle non-OK responses
213
+ if (!response.ok) {
214
+ const error = await this.createErrorFromResponse(response, requestId, url);
215
+ this.logError(method, url, error);
216
+ throw error;
217
+ }
218
+ // Log successful response
219
+ this.logResponse(method, url, response.status, duration);
220
+ // Parse response body
221
+ const contentType = response.headers.get('content-type');
222
+ let data;
223
+ if (contentType?.includes('application/json')) {
224
+ data = (await response.json());
225
+ }
226
+ else {
227
+ data = (await response.text());
228
+ }
229
+ return {
230
+ data,
231
+ status: response.status,
232
+ headers: response.headers,
233
+ requestId,
234
+ };
235
+ }
236
+ catch (error) {
237
+ clearTimeout(timeoutId);
238
+ if (error instanceof errors_1.WebacyError) {
239
+ throw error;
240
+ }
241
+ // Handle fetch errors
242
+ let networkError;
243
+ if (error instanceof Error) {
244
+ if (error.name === 'AbortError') {
245
+ networkError = new errors_1.NetworkError('Request timed out', { cause: error, endpoint: url });
246
+ }
247
+ else {
248
+ networkError = new errors_1.NetworkError(error.message, { cause: error, endpoint: url });
249
+ }
250
+ }
251
+ else {
252
+ networkError = new errors_1.NetworkError('An unknown error occurred', { endpoint: url });
253
+ }
254
+ this.logError(method, url, networkError);
255
+ throw networkError;
256
+ }
257
+ }
258
+ /**
259
+ * Create an appropriate error from an HTTP response
260
+ */
261
+ async createErrorFromResponse(response, requestId, endpoint) {
262
+ let errorBody = {};
263
+ try {
264
+ errorBody = (await response.json());
265
+ }
266
+ catch {
267
+ // Ignore JSON parse errors
268
+ }
269
+ const message = errorBody.message ?? errorBody.error ?? response.statusText;
270
+ switch (response.status) {
271
+ case 401:
272
+ case 403:
273
+ return new errors_1.AuthenticationError(message, { requestId, endpoint });
274
+ case 404:
275
+ return new errors_1.NotFoundError(message, { requestId, endpoint });
276
+ case 429: {
277
+ const retryAfter = response.headers.get('retry-after');
278
+ const resetAt = response.headers.get('x-ratelimit-reset');
279
+ return new errors_1.RateLimitError(message, {
280
+ retryAfter: retryAfter ? parseInt(retryAfter, 10) : undefined,
281
+ resetAt: resetAt ? parseInt(resetAt, 10) : undefined,
282
+ requestId,
283
+ endpoint,
284
+ });
285
+ }
286
+ case 400:
287
+ return new errors_1.ValidationError(message, {
288
+ errors: errorBody.errors,
289
+ requestId,
290
+ endpoint,
291
+ });
292
+ default:
293
+ if ((0, retry_1.isRetryableStatusCode)(response.status, this.retryConfig)) {
294
+ return new errors_1.NetworkError(message, {
295
+ cause: new Error(`HTTP ${response.status}`),
296
+ endpoint,
297
+ });
298
+ }
299
+ return new errors_1.WebacyError(message, {
300
+ status: response.status,
301
+ code: 'API_ERROR',
302
+ requestId,
303
+ endpoint,
304
+ });
305
+ }
306
+ }
307
+ /**
308
+ * Wrap an unknown error in a WebacyError
309
+ */
310
+ wrapError(error) {
311
+ if (error instanceof errors_1.WebacyError) {
312
+ return error;
313
+ }
314
+ if (error instanceof Error) {
315
+ return new errors_1.NetworkError(error.message, { cause: error });
316
+ }
317
+ return new errors_1.NetworkError('An unknown error occurred');
318
+ }
319
+ /**
320
+ * Combine multiple abort signals
321
+ */
322
+ combineAbortSignals(...signals) {
323
+ const controller = new AbortController();
324
+ for (const signal of signals) {
325
+ if (signal.aborted) {
326
+ controller.abort(signal.reason);
327
+ break;
328
+ }
329
+ signal.addEventListener('abort', () => controller.abort(signal.reason), { once: true });
330
+ }
331
+ return controller.signal;
332
+ }
333
+ }
334
+ exports.HttpClient = HttpClient;
335
+ //# 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,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ 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.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
+ // HTTP client
13
+ var http_1 = require("./http");
14
+ Object.defineProperty(exports, "HttpClient", { enumerable: true, get: function () { return http_1.HttpClient; } });
15
+ Object.defineProperty(exports, "DEFAULT_RETRY_CONFIG", { enumerable: true, get: function () { return http_1.DEFAULT_RETRY_CONFIG; } });
16
+ // Errors
17
+ var errors_1 = require("./errors");
18
+ Object.defineProperty(exports, "WebacyError", { enumerable: true, get: function () { return errors_1.WebacyError; } });
19
+ Object.defineProperty(exports, "AuthenticationError", { enumerable: true, get: function () { return errors_1.AuthenticationError; } });
20
+ Object.defineProperty(exports, "RateLimitError", { enumerable: true, get: function () { return errors_1.RateLimitError; } });
21
+ Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return errors_1.ValidationError; } });
22
+ Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return errors_1.NotFoundError; } });
23
+ Object.defineProperty(exports, "NetworkError", { enumerable: true, get: function () { return errors_1.NetworkError; } });
24
+ // Types
25
+ var types_1 = require("./types");
26
+ Object.defineProperty(exports, "Chain", { enumerable: true, get: function () { return types_1.Chain; } });
27
+ Object.defineProperty(exports, "ChainCompatibility", { enumerable: true, get: function () { return types_1.ChainCompatibility; } });
28
+ Object.defineProperty(exports, "getChainCompatibility", { enumerable: true, get: function () { return types_1.getChainCompatibility; } });
29
+ Object.defineProperty(exports, "isEvmChain", { enumerable: true, get: function () { return types_1.isEvmChain; } });
30
+ Object.defineProperty(exports, "CHAIN_IDS", { enumerable: true, get: function () { return types_1.CHAIN_IDS; } });
31
+ Object.defineProperty(exports, "CHAIN_NAMES", { enumerable: true, get: function () { return types_1.CHAIN_NAMES; } });
32
+ Object.defineProperty(exports, "RiskModule", { enumerable: true, get: function () { return types_1.RiskModule; } });
33
+ Object.defineProperty(exports, "RiskScore", { enumerable: true, get: function () { return types_1.RiskScore; } });
34
+ Object.defineProperty(exports, "RiskLevel", { enumerable: true, get: function () { return types_1.RiskLevel; } });
35
+ Object.defineProperty(exports, "TypeOfAddress", { enumerable: true, get: function () { return types_1.TypeOfAddress; } });
36
+ Object.defineProperty(exports, "TokenStandard", { enumerable: true, get: function () { return types_1.TokenStandard; } });
37
+ // Utilities
38
+ var utils_1 = require("./utils");
39
+ Object.defineProperty(exports, "isValidAddress", { enumerable: true, get: function () { return utils_1.isValidAddress; } });
40
+ Object.defineProperty(exports, "isValidEvmAddress", { enumerable: true, get: function () { return utils_1.isValidEvmAddress; } });
41
+ Object.defineProperty(exports, "isValidSolanaAddress", { enumerable: true, get: function () { return utils_1.isValidSolanaAddress; } });
42
+ Object.defineProperty(exports, "isValidBitcoinAddress", { enumerable: true, get: function () { return utils_1.isValidBitcoinAddress; } });
43
+ Object.defineProperty(exports, "isValidTonAddress", { enumerable: true, get: function () { return utils_1.isValidTonAddress; } });
44
+ Object.defineProperty(exports, "isValidSuiAddress", { enumerable: true, get: function () { return utils_1.isValidSuiAddress; } });
45
+ Object.defineProperty(exports, "isValidStellarAddress", { enumerable: true, get: function () { return utils_1.isValidStellarAddress; } });
46
+ Object.defineProperty(exports, "normalizeAddress", { enumerable: true, get: function () { return utils_1.normalizeAddress; } });
47
+ Object.defineProperty(exports, "normalizeEvmAddress", { enumerable: true, get: function () { return utils_1.normalizeEvmAddress; } });
48
+ //# 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,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,iCAUiB;AATf,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"}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CHAIN_NAMES = exports.CHAIN_IDS = exports.ChainCompatibility = exports.Chain = void 0;
4
+ exports.getChainCompatibility = getChainCompatibility;
5
+ exports.isEvmChain = isEvmChain;
6
+ /**
7
+ * Supported blockchain networks
8
+ */
9
+ var Chain;
10
+ (function (Chain) {
11
+ /** Ethereum Mainnet */
12
+ Chain["ETH"] = "eth";
13
+ /** Ethereum Sepolia Testnet */
14
+ Chain["SEP"] = "sep";
15
+ /** Arbitrum One */
16
+ Chain["ARB"] = "arb";
17
+ /** Polygon (MATIC) */
18
+ Chain["POL"] = "pol";
19
+ /** Solana */
20
+ Chain["SOL"] = "sol";
21
+ /** Optimism */
22
+ Chain["OPT"] = "opt";
23
+ /** Base */
24
+ Chain["BASE"] = "base";
25
+ /** BNB Smart Chain */
26
+ Chain["BSC"] = "bsc";
27
+ /** TON (The Open Network) */
28
+ Chain["TON"] = "ton";
29
+ /** Sei */
30
+ Chain["SEI"] = "sei";
31
+ /** Bitcoin */
32
+ Chain["BTC"] = "btc";
33
+ /** Sui */
34
+ Chain["SUI"] = "sui";
35
+ /** Stellar */
36
+ Chain["STELLAR"] = "stellar";
37
+ })(Chain || (exports.Chain = Chain = {}));
38
+ /**
39
+ * Chain compatibility groups for feature detection
40
+ */
41
+ var ChainCompatibility;
42
+ (function (ChainCompatibility) {
43
+ ChainCompatibility["EVM"] = "EVM";
44
+ ChainCompatibility["SOLANA"] = "SOLANA";
45
+ ChainCompatibility["TON"] = "TON";
46
+ ChainCompatibility["BTC"] = "BTC";
47
+ ChainCompatibility["SEI"] = "SEI";
48
+ ChainCompatibility["SUI"] = "SUI";
49
+ ChainCompatibility["STELLAR"] = "STELLAR";
50
+ })(ChainCompatibility || (exports.ChainCompatibility = ChainCompatibility = {}));
51
+ /**
52
+ * Get the compatibility group for a chain
53
+ */
54
+ function getChainCompatibility(chain) {
55
+ switch (chain) {
56
+ case Chain.ETH:
57
+ case Chain.SEP:
58
+ case Chain.ARB:
59
+ case Chain.POL:
60
+ case Chain.OPT:
61
+ case Chain.BASE:
62
+ case Chain.BSC:
63
+ return ChainCompatibility.EVM;
64
+ case Chain.SOL:
65
+ return ChainCompatibility.SOLANA;
66
+ case Chain.TON:
67
+ return ChainCompatibility.TON;
68
+ case Chain.BTC:
69
+ return ChainCompatibility.BTC;
70
+ case Chain.SEI:
71
+ return ChainCompatibility.SEI;
72
+ case Chain.SUI:
73
+ return ChainCompatibility.SUI;
74
+ case Chain.STELLAR:
75
+ return ChainCompatibility.STELLAR;
76
+ }
77
+ }
78
+ /**
79
+ * Check if a chain is EVM-compatible
80
+ */
81
+ function isEvmChain(chain) {
82
+ return getChainCompatibility(chain) === ChainCompatibility.EVM;
83
+ }
84
+ /**
85
+ * Chain ID mapping for EVM chains
86
+ */
87
+ exports.CHAIN_IDS = {
88
+ [Chain.ETH]: 1,
89
+ [Chain.SEP]: 11155111,
90
+ [Chain.BSC]: 56,
91
+ [Chain.POL]: 137,
92
+ [Chain.OPT]: 10,
93
+ [Chain.ARB]: 42161,
94
+ [Chain.BASE]: 8453,
95
+ };
96
+ /**
97
+ * Human-readable chain names
98
+ */
99
+ exports.CHAIN_NAMES = {
100
+ [Chain.ETH]: 'Ethereum',
101
+ [Chain.SEP]: 'Sepolia',
102
+ [Chain.ARB]: 'Arbitrum',
103
+ [Chain.POL]: 'Polygon',
104
+ [Chain.SOL]: 'Solana',
105
+ [Chain.OPT]: 'Optimism',
106
+ [Chain.BASE]: 'Base',
107
+ [Chain.BSC]: 'BNB Smart Chain',
108
+ [Chain.TON]: 'TON',
109
+ [Chain.SEI]: 'Sei',
110
+ [Chain.BTC]: 'Bitcoin',
111
+ [Chain.SUI]: 'Sui',
112
+ [Chain.STELLAR]: 'Stellar',
113
+ };
114
+ //# sourceMappingURL=chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../src/types/chain.ts"],"names":[],"mappings":";;;AAgDA,sDAuBC;AAKD,gCAEC;AA9ED;;GAEG;AACH,IAAY,KA2BX;AA3BD,WAAY,KAAK;IACf,uBAAuB;IACvB,oBAAW,CAAA;IACX,+BAA+B;IAC/B,oBAAW,CAAA;IACX,mBAAmB;IACnB,oBAAW,CAAA;IACX,sBAAsB;IACtB,oBAAW,CAAA;IACX,aAAa;IACb,oBAAW,CAAA;IACX,eAAe;IACf,oBAAW,CAAA;IACX,WAAW;IACX,sBAAa,CAAA;IACb,sBAAsB;IACtB,oBAAW,CAAA;IACX,6BAA6B;IAC7B,oBAAW,CAAA;IACX,UAAU;IACV,oBAAW,CAAA;IACX,cAAc;IACd,oBAAW,CAAA;IACX,UAAU;IACV,oBAAW,CAAA;IACX,cAAc;IACd,4BAAmB,CAAA;AACrB,CAAC,EA3BW,KAAK,qBAAL,KAAK,QA2BhB;AAED;;GAEG;AACH,IAAY,kBAQX;AARD,WAAY,kBAAkB;IAC5B,iCAAW,CAAA;IACX,uCAAiB,CAAA;IACjB,iCAAW,CAAA;IACX,iCAAW,CAAA;IACX,iCAAW,CAAA;IACX,iCAAW,CAAA;IACX,yCAAmB,CAAA;AACrB,CAAC,EARW,kBAAkB,kCAAlB,kBAAkB,QAQ7B;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,KAAY;IAChD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,KAAK,CAAC,GAAG,CAAC;QACf,KAAK,KAAK,CAAC,GAAG,CAAC;QACf,KAAK,KAAK,CAAC,GAAG,CAAC;QACf,KAAK,KAAK,CAAC,GAAG,CAAC;QACf,KAAK,KAAK,CAAC,GAAG,CAAC;QACf,KAAK,KAAK,CAAC,IAAI,CAAC;QAChB,KAAK,KAAK,CAAC,GAAG;YACZ,OAAO,kBAAkB,CAAC,GAAG,CAAC;QAChC,KAAK,KAAK,CAAC,GAAG;YACZ,OAAO,kBAAkB,CAAC,MAAM,CAAC;QACnC,KAAK,KAAK,CAAC,GAAG;YACZ,OAAO,kBAAkB,CAAC,GAAG,CAAC;QAChC,KAAK,KAAK,CAAC,GAAG;YACZ,OAAO,kBAAkB,CAAC,GAAG,CAAC;QAChC,KAAK,KAAK,CAAC,GAAG;YACZ,OAAO,kBAAkB,CAAC,GAAG,CAAC;QAChC,KAAK,KAAK,CAAC,GAAG;YACZ,OAAO,kBAAkB,CAAC,GAAG,CAAC;QAChC,KAAK,KAAK,CAAC,OAAO;YAChB,OAAO,kBAAkB,CAAC,OAAO,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,KAAY;IACrC,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,kBAAkB,CAAC,GAAG,CAAC;AACjE,CAAC;AAED;;GAEG;AACU,QAAA,SAAS,GAAmC;IACvD,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IACd,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ;IACrB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE;IACf,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG;IAChB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE;IACf,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;IAClB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI;CACnB,CAAC;AAEF;;GAEG;AACU,QAAA,WAAW,GAA0B;IAChD,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU;IACvB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS;IACtB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU;IACvB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS;IACtB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ;IACrB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU;IACvB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM;IACpB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,iBAAiB;IAC9B,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;IAClB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;IAClB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS;IACtB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;IAClB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS;CAC3B,CAAC"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokenStandard = exports.TypeOfAddress = exports.RiskLevel = exports.RiskScore = void 0;
4
+ /**
5
+ * Risk score classification
6
+ */
7
+ var RiskScore;
8
+ (function (RiskScore) {
9
+ RiskScore["HIGH"] = "High Risk";
10
+ RiskScore["MEDIUM"] = "Medium Risk";
11
+ RiskScore["LOW"] = "Low Risk";
12
+ RiskScore["TRUSTED"] = "Trusted";
13
+ RiskScore["UNKNOWN"] = "Unknown";
14
+ })(RiskScore || (exports.RiskScore = RiskScore = {}));
15
+ /**
16
+ * Risk level enum
17
+ */
18
+ var RiskLevel;
19
+ (function (RiskLevel) {
20
+ RiskLevel["Low"] = "low";
21
+ RiskLevel["Medium"] = "medium";
22
+ RiskLevel["High"] = "high";
23
+ RiskLevel["Suspicious"] = "suspicious";
24
+ })(RiskLevel || (exports.RiskLevel = RiskLevel = {}));
25
+ /**
26
+ * Address type classification
27
+ */
28
+ var TypeOfAddress;
29
+ (function (TypeOfAddress) {
30
+ TypeOfAddress["EOA"] = "EOA";
31
+ TypeOfAddress["CONTRACT"] = "CONTRACT";
32
+ TypeOfAddress["TOKEN"] = "TOKEN";
33
+ TypeOfAddress["CONTRACT_WALLET"] = "CONTRACT_WALLET";
34
+ TypeOfAddress["MULTISIG"] = "MULTISIG";
35
+ })(TypeOfAddress || (exports.TypeOfAddress = TypeOfAddress = {}));
36
+ /**
37
+ * Token standard
38
+ */
39
+ var TokenStandard;
40
+ (function (TokenStandard) {
41
+ TokenStandard["ERC20"] = "ERC20";
42
+ TokenStandard["ERC721"] = "ERC721";
43
+ TokenStandard["ERC1155"] = "ERC1155";
44
+ TokenStandard["SPL"] = "SPL";
45
+ TokenStandard["JETTON"] = "JETTON";
46
+ TokenStandard["STELLAR_ASSET"] = "STELLAR_ASSET";
47
+ TokenStandard["SUI_COIN"] = "SUI_COIN";
48
+ })(TokenStandard || (exports.TokenStandard = TokenStandard = {}));
49
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/types/common.ts"],"names":[],"mappings":";;;AA8CA;;GAEG;AACH,IAAY,SAMX;AAND,WAAY,SAAS;IACnB,+BAAkB,CAAA;IAClB,mCAAsB,CAAA;IACtB,6BAAgB,CAAA;IAChB,gCAAmB,CAAA;IACnB,gCAAmB,CAAA;AACrB,CAAC,EANW,SAAS,yBAAT,SAAS,QAMpB;AAED;;GAEG;AACH,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,8BAAiB,CAAA;IACjB,0BAAa,CAAA;IACb,sCAAyB,CAAA;AAC3B,CAAC,EALW,SAAS,yBAAT,SAAS,QAKpB;AA2ID;;GAEG;AACH,IAAY,aAMX;AAND,WAAY,aAAa;IACvB,4BAAW,CAAA;IACX,sCAAqB,CAAA;IACrB,gCAAe,CAAA;IACf,oDAAmC,CAAA;IACnC,sCAAqB,CAAA;AACvB,CAAC,EANW,aAAa,6BAAb,aAAa,QAMxB;AAED;;GAEG;AACH,IAAY,aAQX;AARD,WAAY,aAAa;IACvB,gCAAe,CAAA;IACf,kCAAiB,CAAA;IACjB,oCAAmB,CAAA;IACnB,4BAAW,CAAA;IACX,kCAAiB,CAAA;IACjB,gDAA+B,CAAA;IAC/B,sCAAqB,CAAA;AACvB,CAAC,EARW,aAAa,6BAAb,aAAa,QAQxB"}