@medialane/sdk 0.103.0 → 0.104.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 +28 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +47 -2
- package/dist/index.d.ts +47 -2
- package/dist/index.js +26 -1
- package/dist/index.js.map +1 -1
- package/dist/starknet/index.cjs +15 -0
- package/dist/starknet/index.cjs.map +1 -1
- package/dist/starknet/index.js +15 -0
- package/dist/starknet/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -392,7 +392,23 @@ declare function getServicesByCapability(cap: ServiceCapability): ServiceDefinit
|
|
|
392
392
|
declare function hasCapability(id: string | null | undefined, cap: ServiceCapability): boolean;
|
|
393
393
|
|
|
394
394
|
declare function normalizeAddress(chain: Chain, address: string): string;
|
|
395
|
-
declare
|
|
395
|
+
declare const canonicalHashBrand: unique symbol;
|
|
396
|
+
/**
|
|
397
|
+
* A felt hash in exactly one spelling: lowercase, zero-padded to 64 hex digits.
|
|
398
|
+
*
|
|
399
|
+
* Felts have many equal spellings — `0x0ab`, `0xAB` and `0xab` are the same
|
|
400
|
+
* value on chain but three different strings. Anything that uses a hash as an
|
|
401
|
+
* identity or uniqueness key must therefore compare canonical form, or the
|
|
402
|
+
* same on-chain fact can be presented as several distinct records.
|
|
403
|
+
*
|
|
404
|
+
* Only `normalizeHash` can produce this type, so a function that demands a
|
|
405
|
+
* `CanonicalHash` cannot be handed a raw caller-supplied string. It remains
|
|
406
|
+
* assignable to `string`, so existing readers are unaffected.
|
|
407
|
+
*/
|
|
408
|
+
type CanonicalHash = string & {
|
|
409
|
+
readonly [canonicalHashBrand]: true;
|
|
410
|
+
};
|
|
411
|
+
declare function normalizeHash(hash: string): CanonicalHash;
|
|
396
412
|
declare function shortenAddress(chain: Chain, address: string, chars?: number): string;
|
|
397
413
|
|
|
398
414
|
type SupportedToken = (typeof SUPPORTED_TOKENS)[number];
|
|
@@ -407,6 +423,22 @@ declare function u256ToBigInt(low: string, high: string): bigint;
|
|
|
407
423
|
declare function encodeU256(n: bigint): [string, string];
|
|
408
424
|
|
|
409
425
|
declare const PUBLIC_RPC_FALLBACKS: readonly string[];
|
|
426
|
+
/**
|
|
427
|
+
* Codes our own proxies emit to *refuse* a call on policy grounds: no API key,
|
|
428
|
+
* insufficient credits, rate limited, wrong origin.
|
|
429
|
+
*
|
|
430
|
+
* These must never be treated as transient. They sit inside the JSON-RPC
|
|
431
|
+
* reserved server-error range and carry messages like "Too many requests", so
|
|
432
|
+
* every generic transient heuristic below would otherwise match them — and a
|
|
433
|
+
* caller with a fallback list would quietly retry the same call against a
|
|
434
|
+
* different upstream. That turns a refusal into a redirect: the harder the
|
|
435
|
+
* meter says no, the faster traffic routes around it. A policy refusal is an
|
|
436
|
+
* answer, not a failure; retrying it elsewhere is always wrong.
|
|
437
|
+
*/
|
|
438
|
+
declare const POLICY_REFUSAL_CODES: readonly number[];
|
|
439
|
+
declare function isPolicyRefusal(input: {
|
|
440
|
+
body?: unknown;
|
|
441
|
+
}): boolean;
|
|
410
442
|
declare function isTransientRpcError(input: {
|
|
411
443
|
status?: number;
|
|
412
444
|
body?: unknown;
|
|
@@ -420,6 +452,19 @@ interface FailoverFetchOptions {
|
|
|
420
452
|
}) => void;
|
|
421
453
|
}
|
|
422
454
|
declare function createFailoverFetch(urls: string[], options?: FailoverFetchOptions): typeof fetch;
|
|
455
|
+
/**
|
|
456
|
+
* Hostnames and env-var names that reach a paid upstream directly.
|
|
457
|
+
*
|
|
458
|
+
* An app must never name one of these. Everything paid goes through the
|
|
459
|
+
* backend, the only place a call can be authenticated, scoped, rate limited
|
|
460
|
+
* and billed. An app that knows a node's address has a route around all four —
|
|
461
|
+
* and since the address ships in the client bundle, so does every visitor.
|
|
462
|
+
*
|
|
463
|
+
* The list lives here, not in each app, because it is the part that drifts:
|
|
464
|
+
* adding an upstream must protect every consumer at once. Each app keeps its
|
|
465
|
+
* own small test that scans its source for these with its own file APIs.
|
|
466
|
+
*/
|
|
467
|
+
declare const PAID_UPSTREAM_MARKERS: readonly string[];
|
|
423
468
|
|
|
424
469
|
interface RpcProxyConfig {
|
|
425
470
|
backendUrl: string;
|
|
@@ -540,4 +585,4 @@ declare const IPFS_SAFE_CONTENT_TYPE_PREFIXES: readonly ["image/jpeg", "image/pn
|
|
|
540
585
|
declare function resolveSafeImageContentType(contentType: string): string;
|
|
541
586
|
declare const MAX_IPFS_GATEWAY_RESPONSE_BYTES: number;
|
|
542
587
|
|
|
543
|
-
export { ALLOWED_IMAGE_CONTENT_TYPES, type AssetAttribute, type AssetMetadata, type BackendMetadataConfig, type BackendProxyConfig, type BackendUploadResult, type BuildAssetMetadataInput, Chain, DEFAULT_CURRENCY, type FailoverFetchOptions, type FeeEnv, IPFS_SAFE_CONTENT_TYPE_PREFIXES, MAX_IMAGE_PROXY_BYTES, MAX_IMAGE_REDIRECTS, MAX_IPFS_GATEWAY_RESPONSE_BYTES, PUBLIC_RPC_FALLBACKS, RESERVED_TRAITS, type RemixPolicy, type RemixPolicyInput, ResolvedFeeConfig, type RpcProxyConfig, STARKNET_COLLECTION_1155_CLASS_HASH, STARKNET_COLLECTION_1155_CONTRACT, STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH, STARKNET_COLLECTION_1155_START_BLOCK, STARKNET_COLLECTION_721_CONTRACT, STARKNET_COLLECTION_721_START_BLOCK, STARKNET_CREATOR_COIN_CLASS_HASH, STARKNET_CREATOR_COIN_EKUBO_LAUNCHER, STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH, STARKNET_CREATOR_COIN_FACTORY_CONTRACT, STARKNET_CREATOR_COIN_START_BLOCK, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_GENESIS_MINT_BR_CONTRACT, STARKNET_GENESIS_MINT_GLOBAL_CONTRACT, STARKNET_GENESIS_MINT_LAUNCH_CONTRACT, STARKNET_IPCOLLECTION_CLASS_HASH, STARKNET_IPNFT_CLASS_HASH, STARKNET_IP_CLUB_COLLECTION_CLASS_HASH, STARKNET_IP_CLUB_FACTORY_CONTRACT, STARKNET_IP_SPONSORSHIP_CLASS_HASH, STARKNET_IP_SPONSORSHIP_CONTRACT, STARKNET_IP_TICKETS_FACTORY_CONTRACT, STARKNET_IP_TICKET_COLLECTION_CLASS_HASH, STARKNET_MARKETPLACE_1155_CLASS_HASH, STARKNET_MARKETPLACE_1155_CONTRACT, STARKNET_MARKETPLACE_1155_START_BLOCK, STARKNET_MARKETPLACE_721_CLASS_HASH, STARKNET_MARKETPLACE_721_CONTRACT, STARKNET_MARKETPLACE_721_START_BLOCK, STARKNET_NFTCOMMENTS_CONTRACT, STARKNET_POP_COLLECTION_CLASS_HASH, STARKNET_POP_FACTORY_CONTRACT, SUPPORTED_TOKENS, SUPPORTED_URL_CHAINS, ServiceCapability, ServiceDefinition, type ServiceId, type SupportedToken, type SupportedTokenSymbol, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createBackendProxyHandler, createFailoverFetch, createRateLimiter, createRpcProxyHandler, encodeU256, formatAmount, getBackendSignedUrl, getDerivativesTerm, getListableTokens, getService, getServicesByCapability, getTokenByAddress, getTokenBySymbol, hasCapability, isPrivateHost, isSameOrigin, isServiceId, isTransientRpcError, isValidIpfsCidPath, listServices, normalizeAddress, normalizeHash, parseAmount, requestIp, resolveAppFeeConfig, resolveRemixPolicy, resolveSafeImageContentType, shortenAddress, stringifyBigInts, u256ToBigInt, uploadDirectoryToBackend, uploadFileToBackend, uploadJsonToBackend, validateUrl };
|
|
588
|
+
export { ALLOWED_IMAGE_CONTENT_TYPES, type AssetAttribute, type AssetMetadata, type BackendMetadataConfig, type BackendProxyConfig, type BackendUploadResult, type BuildAssetMetadataInput, type CanonicalHash, Chain, DEFAULT_CURRENCY, type FailoverFetchOptions, type FeeEnv, IPFS_SAFE_CONTENT_TYPE_PREFIXES, MAX_IMAGE_PROXY_BYTES, MAX_IMAGE_REDIRECTS, MAX_IPFS_GATEWAY_RESPONSE_BYTES, PAID_UPSTREAM_MARKERS, POLICY_REFUSAL_CODES, PUBLIC_RPC_FALLBACKS, RESERVED_TRAITS, type RemixPolicy, type RemixPolicyInput, ResolvedFeeConfig, type RpcProxyConfig, STARKNET_COLLECTION_1155_CLASS_HASH, STARKNET_COLLECTION_1155_CONTRACT, STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH, STARKNET_COLLECTION_1155_START_BLOCK, STARKNET_COLLECTION_721_CONTRACT, STARKNET_COLLECTION_721_START_BLOCK, STARKNET_CREATOR_COIN_CLASS_HASH, STARKNET_CREATOR_COIN_EKUBO_LAUNCHER, STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH, STARKNET_CREATOR_COIN_FACTORY_CONTRACT, STARKNET_CREATOR_COIN_START_BLOCK, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_GENESIS_MINT_BR_CONTRACT, STARKNET_GENESIS_MINT_GLOBAL_CONTRACT, STARKNET_GENESIS_MINT_LAUNCH_CONTRACT, STARKNET_IPCOLLECTION_CLASS_HASH, STARKNET_IPNFT_CLASS_HASH, STARKNET_IP_CLUB_COLLECTION_CLASS_HASH, STARKNET_IP_CLUB_FACTORY_CONTRACT, STARKNET_IP_SPONSORSHIP_CLASS_HASH, STARKNET_IP_SPONSORSHIP_CONTRACT, STARKNET_IP_TICKETS_FACTORY_CONTRACT, STARKNET_IP_TICKET_COLLECTION_CLASS_HASH, STARKNET_MARKETPLACE_1155_CLASS_HASH, STARKNET_MARKETPLACE_1155_CONTRACT, STARKNET_MARKETPLACE_1155_START_BLOCK, STARKNET_MARKETPLACE_721_CLASS_HASH, STARKNET_MARKETPLACE_721_CONTRACT, STARKNET_MARKETPLACE_721_START_BLOCK, STARKNET_NFTCOMMENTS_CONTRACT, STARKNET_POP_COLLECTION_CLASS_HASH, STARKNET_POP_FACTORY_CONTRACT, SUPPORTED_TOKENS, SUPPORTED_URL_CHAINS, ServiceCapability, ServiceDefinition, type ServiceId, type SupportedToken, type SupportedTokenSymbol, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createBackendProxyHandler, createFailoverFetch, createRateLimiter, createRpcProxyHandler, encodeU256, formatAmount, getBackendSignedUrl, getDerivativesTerm, getListableTokens, getService, getServicesByCapability, getTokenByAddress, getTokenBySymbol, hasCapability, isPolicyRefusal, isPrivateHost, isSameOrigin, isServiceId, isTransientRpcError, isValidIpfsCidPath, listServices, normalizeAddress, normalizeHash, parseAmount, requestIp, resolveAppFeeConfig, resolveRemixPolicy, resolveSafeImageContentType, shortenAddress, stringifyBigInts, u256ToBigInt, uploadDirectoryToBackend, uploadFileToBackend, uploadJsonToBackend, validateUrl };
|
package/dist/index.d.ts
CHANGED
|
@@ -392,7 +392,23 @@ declare function getServicesByCapability(cap: ServiceCapability): ServiceDefinit
|
|
|
392
392
|
declare function hasCapability(id: string | null | undefined, cap: ServiceCapability): boolean;
|
|
393
393
|
|
|
394
394
|
declare function normalizeAddress(chain: Chain, address: string): string;
|
|
395
|
-
declare
|
|
395
|
+
declare const canonicalHashBrand: unique symbol;
|
|
396
|
+
/**
|
|
397
|
+
* A felt hash in exactly one spelling: lowercase, zero-padded to 64 hex digits.
|
|
398
|
+
*
|
|
399
|
+
* Felts have many equal spellings — `0x0ab`, `0xAB` and `0xab` are the same
|
|
400
|
+
* value on chain but three different strings. Anything that uses a hash as an
|
|
401
|
+
* identity or uniqueness key must therefore compare canonical form, or the
|
|
402
|
+
* same on-chain fact can be presented as several distinct records.
|
|
403
|
+
*
|
|
404
|
+
* Only `normalizeHash` can produce this type, so a function that demands a
|
|
405
|
+
* `CanonicalHash` cannot be handed a raw caller-supplied string. It remains
|
|
406
|
+
* assignable to `string`, so existing readers are unaffected.
|
|
407
|
+
*/
|
|
408
|
+
type CanonicalHash = string & {
|
|
409
|
+
readonly [canonicalHashBrand]: true;
|
|
410
|
+
};
|
|
411
|
+
declare function normalizeHash(hash: string): CanonicalHash;
|
|
396
412
|
declare function shortenAddress(chain: Chain, address: string, chars?: number): string;
|
|
397
413
|
|
|
398
414
|
type SupportedToken = (typeof SUPPORTED_TOKENS)[number];
|
|
@@ -407,6 +423,22 @@ declare function u256ToBigInt(low: string, high: string): bigint;
|
|
|
407
423
|
declare function encodeU256(n: bigint): [string, string];
|
|
408
424
|
|
|
409
425
|
declare const PUBLIC_RPC_FALLBACKS: readonly string[];
|
|
426
|
+
/**
|
|
427
|
+
* Codes our own proxies emit to *refuse* a call on policy grounds: no API key,
|
|
428
|
+
* insufficient credits, rate limited, wrong origin.
|
|
429
|
+
*
|
|
430
|
+
* These must never be treated as transient. They sit inside the JSON-RPC
|
|
431
|
+
* reserved server-error range and carry messages like "Too many requests", so
|
|
432
|
+
* every generic transient heuristic below would otherwise match them — and a
|
|
433
|
+
* caller with a fallback list would quietly retry the same call against a
|
|
434
|
+
* different upstream. That turns a refusal into a redirect: the harder the
|
|
435
|
+
* meter says no, the faster traffic routes around it. A policy refusal is an
|
|
436
|
+
* answer, not a failure; retrying it elsewhere is always wrong.
|
|
437
|
+
*/
|
|
438
|
+
declare const POLICY_REFUSAL_CODES: readonly number[];
|
|
439
|
+
declare function isPolicyRefusal(input: {
|
|
440
|
+
body?: unknown;
|
|
441
|
+
}): boolean;
|
|
410
442
|
declare function isTransientRpcError(input: {
|
|
411
443
|
status?: number;
|
|
412
444
|
body?: unknown;
|
|
@@ -420,6 +452,19 @@ interface FailoverFetchOptions {
|
|
|
420
452
|
}) => void;
|
|
421
453
|
}
|
|
422
454
|
declare function createFailoverFetch(urls: string[], options?: FailoverFetchOptions): typeof fetch;
|
|
455
|
+
/**
|
|
456
|
+
* Hostnames and env-var names that reach a paid upstream directly.
|
|
457
|
+
*
|
|
458
|
+
* An app must never name one of these. Everything paid goes through the
|
|
459
|
+
* backend, the only place a call can be authenticated, scoped, rate limited
|
|
460
|
+
* and billed. An app that knows a node's address has a route around all four —
|
|
461
|
+
* and since the address ships in the client bundle, so does every visitor.
|
|
462
|
+
*
|
|
463
|
+
* The list lives here, not in each app, because it is the part that drifts:
|
|
464
|
+
* adding an upstream must protect every consumer at once. Each app keeps its
|
|
465
|
+
* own small test that scans its source for these with its own file APIs.
|
|
466
|
+
*/
|
|
467
|
+
declare const PAID_UPSTREAM_MARKERS: readonly string[];
|
|
423
468
|
|
|
424
469
|
interface RpcProxyConfig {
|
|
425
470
|
backendUrl: string;
|
|
@@ -540,4 +585,4 @@ declare const IPFS_SAFE_CONTENT_TYPE_PREFIXES: readonly ["image/jpeg", "image/pn
|
|
|
540
585
|
declare function resolveSafeImageContentType(contentType: string): string;
|
|
541
586
|
declare const MAX_IPFS_GATEWAY_RESPONSE_BYTES: number;
|
|
542
587
|
|
|
543
|
-
export { ALLOWED_IMAGE_CONTENT_TYPES, type AssetAttribute, type AssetMetadata, type BackendMetadataConfig, type BackendProxyConfig, type BackendUploadResult, type BuildAssetMetadataInput, Chain, DEFAULT_CURRENCY, type FailoverFetchOptions, type FeeEnv, IPFS_SAFE_CONTENT_TYPE_PREFIXES, MAX_IMAGE_PROXY_BYTES, MAX_IMAGE_REDIRECTS, MAX_IPFS_GATEWAY_RESPONSE_BYTES, PUBLIC_RPC_FALLBACKS, RESERVED_TRAITS, type RemixPolicy, type RemixPolicyInput, ResolvedFeeConfig, type RpcProxyConfig, STARKNET_COLLECTION_1155_CLASS_HASH, STARKNET_COLLECTION_1155_CONTRACT, STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH, STARKNET_COLLECTION_1155_START_BLOCK, STARKNET_COLLECTION_721_CONTRACT, STARKNET_COLLECTION_721_START_BLOCK, STARKNET_CREATOR_COIN_CLASS_HASH, STARKNET_CREATOR_COIN_EKUBO_LAUNCHER, STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH, STARKNET_CREATOR_COIN_FACTORY_CONTRACT, STARKNET_CREATOR_COIN_START_BLOCK, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_GENESIS_MINT_BR_CONTRACT, STARKNET_GENESIS_MINT_GLOBAL_CONTRACT, STARKNET_GENESIS_MINT_LAUNCH_CONTRACT, STARKNET_IPCOLLECTION_CLASS_HASH, STARKNET_IPNFT_CLASS_HASH, STARKNET_IP_CLUB_COLLECTION_CLASS_HASH, STARKNET_IP_CLUB_FACTORY_CONTRACT, STARKNET_IP_SPONSORSHIP_CLASS_HASH, STARKNET_IP_SPONSORSHIP_CONTRACT, STARKNET_IP_TICKETS_FACTORY_CONTRACT, STARKNET_IP_TICKET_COLLECTION_CLASS_HASH, STARKNET_MARKETPLACE_1155_CLASS_HASH, STARKNET_MARKETPLACE_1155_CONTRACT, STARKNET_MARKETPLACE_1155_START_BLOCK, STARKNET_MARKETPLACE_721_CLASS_HASH, STARKNET_MARKETPLACE_721_CONTRACT, STARKNET_MARKETPLACE_721_START_BLOCK, STARKNET_NFTCOMMENTS_CONTRACT, STARKNET_POP_COLLECTION_CLASS_HASH, STARKNET_POP_FACTORY_CONTRACT, SUPPORTED_TOKENS, SUPPORTED_URL_CHAINS, ServiceCapability, ServiceDefinition, type ServiceId, type SupportedToken, type SupportedTokenSymbol, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createBackendProxyHandler, createFailoverFetch, createRateLimiter, createRpcProxyHandler, encodeU256, formatAmount, getBackendSignedUrl, getDerivativesTerm, getListableTokens, getService, getServicesByCapability, getTokenByAddress, getTokenBySymbol, hasCapability, isPrivateHost, isSameOrigin, isServiceId, isTransientRpcError, isValidIpfsCidPath, listServices, normalizeAddress, normalizeHash, parseAmount, requestIp, resolveAppFeeConfig, resolveRemixPolicy, resolveSafeImageContentType, shortenAddress, stringifyBigInts, u256ToBigInt, uploadDirectoryToBackend, uploadFileToBackend, uploadJsonToBackend, validateUrl };
|
|
588
|
+
export { ALLOWED_IMAGE_CONTENT_TYPES, type AssetAttribute, type AssetMetadata, type BackendMetadataConfig, type BackendProxyConfig, type BackendUploadResult, type BuildAssetMetadataInput, type CanonicalHash, Chain, DEFAULT_CURRENCY, type FailoverFetchOptions, type FeeEnv, IPFS_SAFE_CONTENT_TYPE_PREFIXES, MAX_IMAGE_PROXY_BYTES, MAX_IMAGE_REDIRECTS, MAX_IPFS_GATEWAY_RESPONSE_BYTES, PAID_UPSTREAM_MARKERS, POLICY_REFUSAL_CODES, PUBLIC_RPC_FALLBACKS, RESERVED_TRAITS, type RemixPolicy, type RemixPolicyInput, ResolvedFeeConfig, type RpcProxyConfig, STARKNET_COLLECTION_1155_CLASS_HASH, STARKNET_COLLECTION_1155_CONTRACT, STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH, STARKNET_COLLECTION_1155_START_BLOCK, STARKNET_COLLECTION_721_CONTRACT, STARKNET_COLLECTION_721_START_BLOCK, STARKNET_CREATOR_COIN_CLASS_HASH, STARKNET_CREATOR_COIN_EKUBO_LAUNCHER, STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH, STARKNET_CREATOR_COIN_FACTORY_CONTRACT, STARKNET_CREATOR_COIN_START_BLOCK, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_GENESIS_MINT_BR_CONTRACT, STARKNET_GENESIS_MINT_GLOBAL_CONTRACT, STARKNET_GENESIS_MINT_LAUNCH_CONTRACT, STARKNET_IPCOLLECTION_CLASS_HASH, STARKNET_IPNFT_CLASS_HASH, STARKNET_IP_CLUB_COLLECTION_CLASS_HASH, STARKNET_IP_CLUB_FACTORY_CONTRACT, STARKNET_IP_SPONSORSHIP_CLASS_HASH, STARKNET_IP_SPONSORSHIP_CONTRACT, STARKNET_IP_TICKETS_FACTORY_CONTRACT, STARKNET_IP_TICKET_COLLECTION_CLASS_HASH, STARKNET_MARKETPLACE_1155_CLASS_HASH, STARKNET_MARKETPLACE_1155_CONTRACT, STARKNET_MARKETPLACE_1155_START_BLOCK, STARKNET_MARKETPLACE_721_CLASS_HASH, STARKNET_MARKETPLACE_721_CONTRACT, STARKNET_MARKETPLACE_721_START_BLOCK, STARKNET_NFTCOMMENTS_CONTRACT, STARKNET_POP_COLLECTION_CLASS_HASH, STARKNET_POP_FACTORY_CONTRACT, SUPPORTED_TOKENS, SUPPORTED_URL_CHAINS, ServiceCapability, ServiceDefinition, type ServiceId, type SupportedToken, type SupportedTokenSymbol, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createBackendProxyHandler, createFailoverFetch, createRateLimiter, createRpcProxyHandler, encodeU256, formatAmount, getBackendSignedUrl, getDerivativesTerm, getListableTokens, getService, getServicesByCapability, getTokenByAddress, getTokenBySymbol, hasCapability, isPolicyRefusal, isPrivateHost, isSameOrigin, isServiceId, isTransientRpcError, isValidIpfsCidPath, listServices, normalizeAddress, normalizeHash, parseAmount, requestIp, resolveAppFeeConfig, resolveRemixPolicy, resolveSafeImageContentType, shortenAddress, stringifyBigInts, u256ToBigInt, uploadDirectoryToBackend, uploadFileToBackend, uploadJsonToBackend, validateUrl };
|
package/dist/index.js
CHANGED
|
@@ -1278,8 +1278,23 @@ var PUBLIC_RPC_FALLBACKS = [
|
|
|
1278
1278
|
"https://rpc.starknet.lava.build"
|
|
1279
1279
|
];
|
|
1280
1280
|
var TRANSIENT_BODY_RE = /"code"\s*:\s*-32001|"code"\s*:\s*-32603|unable to complete|rate.?limit|too many|throttl|exceed.*quota|temporarily unavailable|service unavailable|overload|gateway.*time|upstream.*time|backend.*error/i;
|
|
1281
|
+
var POLICY_REFUSAL_CODES = [-32003, -32005, -32600];
|
|
1282
|
+
function isPolicyRefusal(input) {
|
|
1283
|
+
let body = input.body;
|
|
1284
|
+
if (typeof body === "string") {
|
|
1285
|
+
try {
|
|
1286
|
+
body = JSON.parse(body);
|
|
1287
|
+
} catch {
|
|
1288
|
+
return false;
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1291
|
+
const err = body?.error;
|
|
1292
|
+
const code = err && typeof err === "object" ? err.code : void 0;
|
|
1293
|
+
return typeof code === "number" && POLICY_REFUSAL_CODES.includes(code);
|
|
1294
|
+
}
|
|
1281
1295
|
function isTransientRpcError(input) {
|
|
1282
1296
|
const { status, body } = input;
|
|
1297
|
+
if (isPolicyRefusal({ body })) return false;
|
|
1283
1298
|
if (typeof status === "number" && (status === 429 || status >= 500)) return true;
|
|
1284
1299
|
if (body == null) return false;
|
|
1285
1300
|
if (typeof body === "object") {
|
|
@@ -1325,6 +1340,16 @@ function createFailoverFetch(urls, options = {}) {
|
|
|
1325
1340
|
};
|
|
1326
1341
|
return failover;
|
|
1327
1342
|
}
|
|
1343
|
+
var PAID_UPSTREAM_MARKERS = [
|
|
1344
|
+
"rpc.starknet.lava.build",
|
|
1345
|
+
"g.alchemy.com",
|
|
1346
|
+
"ALCHEMY_RPC_URL",
|
|
1347
|
+
"STARKNET_RPC_URL",
|
|
1348
|
+
"AVNU_PAYMASTER_API_KEY",
|
|
1349
|
+
"@avnu/avnu-sdk",
|
|
1350
|
+
"api.pinata.cloud",
|
|
1351
|
+
"PINATA_JWT"
|
|
1352
|
+
];
|
|
1328
1353
|
|
|
1329
1354
|
// src/server/rate-limit.ts
|
|
1330
1355
|
function createRateLimiter(windowMs, max) {
|
|
@@ -1626,6 +1651,6 @@ function resolveSafeImageContentType(contentType) {
|
|
|
1626
1651
|
}
|
|
1627
1652
|
var MAX_IPFS_GATEWAY_RESPONSE_BYTES = 25 * 1024 * 1024;
|
|
1628
1653
|
|
|
1629
|
-
export { ALLOWED_IMAGE_CONTENT_TYPES, ApiClient, CHAINS, DEFAULT_CHAIN, DEFAULT_CURRENCY, FeeConfigSchema, IPFS_SAFE_CONTENT_TYPE_PREFIXES, MAX_IMAGE_PROXY_BYTES, MAX_IMAGE_REDIRECTS, MAX_IPFS_GATEWAY_RESPONSE_BYTES, MedialaneApiError, OPEN_LICENSES, PUBLIC_RPC_FALLBACKS, RESERVED_TRAITS, STARKNET_COLLECTION_1155_CLASS_HASH, STARKNET_COLLECTION_1155_CONTRACT, STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH, STARKNET_COLLECTION_1155_START_BLOCK, STARKNET_COLLECTION_721_CONTRACT, STARKNET_COLLECTION_721_START_BLOCK, STARKNET_CREATOR_COIN_CLASS_HASH, STARKNET_CREATOR_COIN_EKUBO_LAUNCHER, STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH, STARKNET_CREATOR_COIN_FACTORY_CONTRACT, STARKNET_CREATOR_COIN_START_BLOCK, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_GENESIS_MINT_BR_CONTRACT, STARKNET_GENESIS_MINT_GLOBAL_CONTRACT, STARKNET_GENESIS_MINT_LAUNCH_CONTRACT, STARKNET_IPCOLLECTION_CLASS_HASH, STARKNET_IPNFT_CLASS_HASH, STARKNET_IP_CLUB_COLLECTION_CLASS_HASH, STARKNET_IP_CLUB_FACTORY_CONTRACT, STARKNET_IP_SPONSORSHIP_CLASS_HASH, STARKNET_IP_SPONSORSHIP_CONTRACT, STARKNET_IP_TICKETS_FACTORY_CONTRACT, STARKNET_IP_TICKET_COLLECTION_CLASS_HASH, STARKNET_MARKETPLACE_1155_CLASS_HASH, STARKNET_MARKETPLACE_1155_CONTRACT, STARKNET_MARKETPLACE_1155_START_BLOCK, STARKNET_MARKETPLACE_721_CLASS_HASH, STARKNET_MARKETPLACE_721_CONTRACT, STARKNET_MARKETPLACE_721_START_BLOCK, STARKNET_NFTCOMMENTS_CONTRACT, STARKNET_POP_COLLECTION_CLASS_HASH, STARKNET_POP_FACTORY_CONTRACT, SUPPORTED_TOKENS, SUPPORTED_URL_CHAINS, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createBackendProxyHandler, createFailoverFetch, createRateLimiter, createRpcProxyHandler, encodeU256, formatAmount, getBackendSignedUrl, getCoordinates, getDerivativesTerm, getListableTokens, getService, getServicesByCapability, getStarknetCoordinates, getTokenByAddress, getTokenBySymbol, hasCapability, isPrivateHost, isSameOrigin, isServiceId, isTransientRpcError, isValidIpfsCidPath, listServices, normalizeAddress, normalizeHash, parseAmount, requestIp, resolveAppFeeConfig, resolveConfig, resolveFeeConfig, resolveRemixPolicy, resolveSafeImageContentType, shortenAddress, stringifyBigInts, u256ToBigInt, uploadDirectoryToBackend, uploadFileToBackend, uploadJsonToBackend, validateUrl };
|
|
1654
|
+
export { ALLOWED_IMAGE_CONTENT_TYPES, ApiClient, CHAINS, DEFAULT_CHAIN, DEFAULT_CURRENCY, FeeConfigSchema, IPFS_SAFE_CONTENT_TYPE_PREFIXES, MAX_IMAGE_PROXY_BYTES, MAX_IMAGE_REDIRECTS, MAX_IPFS_GATEWAY_RESPONSE_BYTES, MedialaneApiError, OPEN_LICENSES, PAID_UPSTREAM_MARKERS, POLICY_REFUSAL_CODES, PUBLIC_RPC_FALLBACKS, RESERVED_TRAITS, STARKNET_COLLECTION_1155_CLASS_HASH, STARKNET_COLLECTION_1155_CONTRACT, STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH, STARKNET_COLLECTION_1155_START_BLOCK, STARKNET_COLLECTION_721_CONTRACT, STARKNET_COLLECTION_721_START_BLOCK, STARKNET_CREATOR_COIN_CLASS_HASH, STARKNET_CREATOR_COIN_EKUBO_LAUNCHER, STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH, STARKNET_CREATOR_COIN_FACTORY_CONTRACT, STARKNET_CREATOR_COIN_START_BLOCK, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_GENESIS_MINT_BR_CONTRACT, STARKNET_GENESIS_MINT_GLOBAL_CONTRACT, STARKNET_GENESIS_MINT_LAUNCH_CONTRACT, STARKNET_IPCOLLECTION_CLASS_HASH, STARKNET_IPNFT_CLASS_HASH, STARKNET_IP_CLUB_COLLECTION_CLASS_HASH, STARKNET_IP_CLUB_FACTORY_CONTRACT, STARKNET_IP_SPONSORSHIP_CLASS_HASH, STARKNET_IP_SPONSORSHIP_CONTRACT, STARKNET_IP_TICKETS_FACTORY_CONTRACT, STARKNET_IP_TICKET_COLLECTION_CLASS_HASH, STARKNET_MARKETPLACE_1155_CLASS_HASH, STARKNET_MARKETPLACE_1155_CONTRACT, STARKNET_MARKETPLACE_1155_START_BLOCK, STARKNET_MARKETPLACE_721_CLASS_HASH, STARKNET_MARKETPLACE_721_CONTRACT, STARKNET_MARKETPLACE_721_START_BLOCK, STARKNET_NFTCOMMENTS_CONTRACT, STARKNET_POP_COLLECTION_CLASS_HASH, STARKNET_POP_FACTORY_CONTRACT, SUPPORTED_TOKENS, SUPPORTED_URL_CHAINS, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createBackendProxyHandler, createFailoverFetch, createRateLimiter, createRpcProxyHandler, encodeU256, formatAmount, getBackendSignedUrl, getCoordinates, getDerivativesTerm, getListableTokens, getService, getServicesByCapability, getStarknetCoordinates, getTokenByAddress, getTokenBySymbol, hasCapability, isPolicyRefusal, isPrivateHost, isSameOrigin, isServiceId, isTransientRpcError, isValidIpfsCidPath, listServices, normalizeAddress, normalizeHash, parseAmount, requestIp, resolveAppFeeConfig, resolveConfig, resolveFeeConfig, resolveRemixPolicy, resolveSafeImageContentType, shortenAddress, stringifyBigInts, u256ToBigInt, uploadDirectoryToBackend, uploadFileToBackend, uploadJsonToBackend, validateUrl };
|
|
1630
1655
|
//# sourceMappingURL=index.js.map
|
|
1631
1656
|
//# sourceMappingURL=index.js.map
|