@medialane/sdk 0.71.0 → 0.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +42 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +16 -3
- package/dist/index.d.ts +16 -3
- package/dist/index.js +37 -7
- package/dist/index.js.map +1 -1
- package/dist/{services-B4E-tTin.d.ts → services-Byw4_DBm.d.ts} +5 -1
- package/dist/{services-D7n-cJYt.d.cts → services-CGbMik_G.d.cts} +5 -1
- package/dist/starknet/index.cjs +16 -6
- package/dist/starknet/index.cjs.map +1 -1
- package/dist/starknet/index.d.cts +1 -1
- package/dist/starknet/index.d.ts +1 -1
- package/dist/starknet/index.js +16 -6
- package/dist/starknet/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -231,15 +231,16 @@ async function withRetry(fn, opts) {
|
|
|
231
231
|
return await fn();
|
|
232
232
|
} catch (err) {
|
|
233
233
|
lastError = err;
|
|
234
|
-
if (err instanceof MedialaneApiError && err.status < 500) {
|
|
234
|
+
if (err instanceof MedialaneApiError && err.status < 500 && err.status !== 429) {
|
|
235
235
|
throw err;
|
|
236
236
|
}
|
|
237
|
-
const isRetryable = err instanceof MedialaneApiError && err.status >= 500 || err instanceof TypeError;
|
|
237
|
+
const isRetryable = err instanceof MedialaneApiError && (err.status >= 500 || err.status === 429) || err instanceof TypeError;
|
|
238
238
|
if (!isRetryable || attempt === maxAttempts - 1) {
|
|
239
239
|
throw err;
|
|
240
240
|
}
|
|
241
|
-
const
|
|
242
|
-
const
|
|
241
|
+
const retryAfterMs = err instanceof MedialaneApiError ? err.retryAfterMs : void 0;
|
|
242
|
+
const backoff = baseDelayMs * Math.pow(2, attempt) + Math.random() * baseDelayMs;
|
|
243
|
+
const delay = Math.min(retryAfterMs ?? backoff, maxDelayMs);
|
|
243
244
|
await sleep(delay);
|
|
244
245
|
}
|
|
245
246
|
}
|
|
@@ -256,13 +257,22 @@ function deriveErrorCode(status) {
|
|
|
256
257
|
return "UNKNOWN";
|
|
257
258
|
}
|
|
258
259
|
var MedialaneApiError = class extends Error {
|
|
259
|
-
constructor(status, message) {
|
|
260
|
+
constructor(status, message, retryAfterMs) {
|
|
260
261
|
super(message);
|
|
261
262
|
this.status = status;
|
|
263
|
+
this.retryAfterMs = retryAfterMs;
|
|
262
264
|
this.name = "MedialaneApiError";
|
|
263
265
|
this.code = deriveErrorCode(status);
|
|
264
266
|
}
|
|
265
267
|
};
|
|
268
|
+
function parseRetryAfter(value) {
|
|
269
|
+
if (!value) return void 0;
|
|
270
|
+
const seconds = Number(value);
|
|
271
|
+
if (Number.isFinite(seconds)) return Math.max(0, seconds * 1e3);
|
|
272
|
+
const date = Date.parse(value);
|
|
273
|
+
if (!Number.isNaN(date)) return Math.max(0, date - Date.now());
|
|
274
|
+
return void 0;
|
|
275
|
+
}
|
|
266
276
|
var ApiClient = class {
|
|
267
277
|
constructor(baseUrl, apiKey, retryOptions, chain = "STARKNET") {
|
|
268
278
|
this.baseUrl = baseUrl;
|
|
@@ -301,7 +311,7 @@ var ApiClient = class {
|
|
|
301
311
|
if (body.error) message = body.error;
|
|
302
312
|
} catch {
|
|
303
313
|
}
|
|
304
|
-
throw new MedialaneApiError(response.status, message);
|
|
314
|
+
throw new MedialaneApiError(response.status, message, parseRetryAfter(response.headers.get("retry-after")));
|
|
305
315
|
}
|
|
306
316
|
return response;
|
|
307
317
|
}, this.retryOptions);
|
|
@@ -908,6 +918,26 @@ var SUPPORTED_TOKENS = [
|
|
|
908
918
|
];
|
|
909
919
|
var DEFAULT_CURRENCY = "USDC";
|
|
910
920
|
|
|
921
|
+
// src/routes.ts
|
|
922
|
+
var SUPPORTED_URL_CHAINS = ["STARKNET"];
|
|
923
|
+
function chainSlug(chain) {
|
|
924
|
+
return chain.toLowerCase();
|
|
925
|
+
}
|
|
926
|
+
function chainFromSlug(slug) {
|
|
927
|
+
const upper = slug.toUpperCase();
|
|
928
|
+
return SUPPORTED_URL_CHAINS.includes(upper) ? upper : null;
|
|
929
|
+
}
|
|
930
|
+
var seg = (v) => v == null ? "" : String(v);
|
|
931
|
+
function assetHref(chain, contract, tokenId) {
|
|
932
|
+
return `/asset/${chainSlug(chain)}/${seg(contract)}/${seg(tokenId)}`;
|
|
933
|
+
}
|
|
934
|
+
function collectionHref(chain, contract) {
|
|
935
|
+
return `/collections/${chainSlug(chain)}/${seg(contract)}`;
|
|
936
|
+
}
|
|
937
|
+
function coinHref(chain, address) {
|
|
938
|
+
return `/coins/${chainSlug(chain)}/${seg(address)}`;
|
|
939
|
+
}
|
|
940
|
+
|
|
911
941
|
// src/services/registry.ts
|
|
912
942
|
var SN2 = getStarknetCoordinates("STARKNET");
|
|
913
943
|
var SERVICES = {
|
|
@@ -1342,6 +1372,12 @@ exports.STARKNET_NFTCOMMENTS_CONTRACT = STARKNET_NFTCOMMENTS_CONTRACT;
|
|
|
1342
1372
|
exports.STARKNET_POP_COLLECTION_CLASS_HASH = STARKNET_POP_COLLECTION_CLASS_HASH;
|
|
1343
1373
|
exports.STARKNET_POP_FACTORY_CONTRACT = STARKNET_POP_FACTORY_CONTRACT;
|
|
1344
1374
|
exports.SUPPORTED_TOKENS = SUPPORTED_TOKENS;
|
|
1375
|
+
exports.SUPPORTED_URL_CHAINS = SUPPORTED_URL_CHAINS;
|
|
1376
|
+
exports.assetHref = assetHref;
|
|
1377
|
+
exports.chainFromSlug = chainFromSlug;
|
|
1378
|
+
exports.chainSlug = chainSlug;
|
|
1379
|
+
exports.coinHref = coinHref;
|
|
1380
|
+
exports.collectionHref = collectionHref;
|
|
1345
1381
|
exports.createFailoverFetch = createFailoverFetch;
|
|
1346
1382
|
exports.formatAmount = formatAmount;
|
|
1347
1383
|
exports.getCoordinates = getCoordinates;
|