@unicitylabs/sphere-sdk 0.8.0-dev.3 → 0.8.0-dev.5
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/core/index.cjs +37 -11
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +8 -3
- package/dist/core/index.d.ts +8 -3
- package/dist/core/index.js +37 -11
- package/dist/core/index.js.map +1 -1
- package/dist/impl/browser/index.cjs +51 -11
- package/dist/impl/browser/index.cjs.map +1 -1
- package/dist/impl/browser/index.js +51 -11
- package/dist/impl/browser/index.js.map +1 -1
- package/dist/impl/nodejs/index.cjs +49 -12
- package/dist/impl/nodejs/index.cjs.map +1 -1
- package/dist/impl/nodejs/index.d.cts +8 -2
- package/dist/impl/nodejs/index.d.ts +8 -2
- package/dist/impl/nodejs/index.js +49 -12
- package/dist/impl/nodejs/index.js.map +1 -1
- package/dist/index.cjs +37 -11
- 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 -11
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -3830,7 +3830,7 @@ function getEmbeddedTrustBase(network) {
|
|
|
3830
3830
|
case "dev":
|
|
3831
3831
|
return TRUSTBASE_DEV;
|
|
3832
3832
|
default:
|
|
3833
|
-
|
|
3833
|
+
throw new SphereError(`getEmbeddedTrustBase: unknown network "${network}"`, "INVALID_CONFIG");
|
|
3834
3834
|
}
|
|
3835
3835
|
}
|
|
3836
3836
|
var BaseTrustBaseLoader = class {
|
|
@@ -3850,9 +3850,24 @@ var BaseTrustBaseLoader = class {
|
|
|
3850
3850
|
// impl/browser/oracle/index.ts
|
|
3851
3851
|
var BrowserTrustBaseLoader = class extends BaseTrustBaseLoader {
|
|
3852
3852
|
url;
|
|
3853
|
-
|
|
3853
|
+
/**
|
|
3854
|
+
* @param networkOrUrl - a NetworkType, or a URL to fetch the trust base from
|
|
3855
|
+
* @param fallbackNetwork - network used for the embedded fallback when a URL is
|
|
3856
|
+
* supplied (and the fetch fails). Required when networkOrUrl is a URL — we must
|
|
3857
|
+
* never silently fall back to testnet on a different network.
|
|
3858
|
+
*/
|
|
3859
|
+
constructor(networkOrUrl, fallbackNetwork) {
|
|
3860
|
+
if (!networkOrUrl) {
|
|
3861
|
+
throw new SphereError("BrowserTrustBaseLoader: network or trustBaseUrl is required.", "INVALID_CONFIG");
|
|
3862
|
+
}
|
|
3854
3863
|
if (networkOrUrl.startsWith("/") || networkOrUrl.startsWith("http")) {
|
|
3855
|
-
|
|
3864
|
+
if (!fallbackNetwork) {
|
|
3865
|
+
throw new SphereError(
|
|
3866
|
+
"BrowserTrustBaseLoader: fallbackNetwork is required when a trustBaseUrl is supplied.",
|
|
3867
|
+
"INVALID_CONFIG"
|
|
3868
|
+
);
|
|
3869
|
+
}
|
|
3870
|
+
super(fallbackNetwork);
|
|
3856
3871
|
this.url = networkOrUrl;
|
|
3857
3872
|
} else {
|
|
3858
3873
|
super(networkOrUrl);
|
|
@@ -3870,14 +3885,21 @@ var BrowserTrustBaseLoader = class extends BaseTrustBaseLoader {
|
|
|
3870
3885
|
return null;
|
|
3871
3886
|
}
|
|
3872
3887
|
};
|
|
3873
|
-
function createBrowserTrustBaseLoader(networkOrUrl) {
|
|
3874
|
-
return new BrowserTrustBaseLoader(networkOrUrl);
|
|
3888
|
+
function createBrowserTrustBaseLoader(networkOrUrl, fallbackNetwork) {
|
|
3889
|
+
return new BrowserTrustBaseLoader(networkOrUrl, fallbackNetwork);
|
|
3875
3890
|
}
|
|
3876
3891
|
function createUnicityAggregatorProvider(config) {
|
|
3877
3892
|
const { trustBaseUrl, network, ...restConfig } = config;
|
|
3893
|
+
if (!trustBaseUrl && !network) {
|
|
3894
|
+
throw new SphereError(
|
|
3895
|
+
"createUnicityAggregatorProvider: network or trustBaseUrl required.",
|
|
3896
|
+
"INVALID_CONFIG"
|
|
3897
|
+
);
|
|
3898
|
+
}
|
|
3878
3899
|
return new UnicityAggregatorProvider({
|
|
3879
3900
|
...restConfig,
|
|
3880
|
-
|
|
3901
|
+
// When a URL is supplied, `network` (if any) is the embedded-fallback network.
|
|
3902
|
+
trustBaseLoader: createBrowserTrustBaseLoader(trustBaseUrl ?? network, network)
|
|
3881
3903
|
});
|
|
3882
3904
|
}
|
|
3883
3905
|
var createUnicityOracleProvider = createUnicityAggregatorProvider;
|
|
@@ -6319,6 +6341,19 @@ var TokenRegistry = class _TokenRegistry {
|
|
|
6319
6341
|
// ===========================================================================
|
|
6320
6342
|
// Cache (StorageProvider)
|
|
6321
6343
|
// ===========================================================================
|
|
6344
|
+
/**
|
|
6345
|
+
* Per-network cache keys. The registry cache MUST be namespaced by remoteUrl:
|
|
6346
|
+
* testnet and testnet2 ship DIFFERENT coinIds for the same symbol, so a single
|
|
6347
|
+
* global key let a stale testnet snapshot be served for a testnet2 request —
|
|
6348
|
+
* wrong/missing icons AND self-mint resolving the wrong-network coinId. Keying
|
|
6349
|
+
* by remoteUrl isolates the snapshots so a network can never read another's.
|
|
6350
|
+
*/
|
|
6351
|
+
cacheKeys() {
|
|
6352
|
+
const base = STORAGE_KEYS_GLOBAL.TOKEN_REGISTRY_CACHE;
|
|
6353
|
+
const baseTs = STORAGE_KEYS_GLOBAL.TOKEN_REGISTRY_CACHE_TS;
|
|
6354
|
+
if (!this.remoteUrl) return { data: base, ts: baseTs };
|
|
6355
|
+
return { data: `${base}:${this.remoteUrl}`, ts: `${baseTs}:${this.remoteUrl}` };
|
|
6356
|
+
}
|
|
6322
6357
|
/**
|
|
6323
6358
|
* Load definitions from StorageProvider cache.
|
|
6324
6359
|
* Only applies if cache exists and is fresh (within refreshIntervalMs).
|
|
@@ -6326,9 +6361,10 @@ var TokenRegistry = class _TokenRegistry {
|
|
|
6326
6361
|
async loadFromCache() {
|
|
6327
6362
|
if (!this.storage) return false;
|
|
6328
6363
|
try {
|
|
6364
|
+
const { data: dataKey, ts: tsKey } = this.cacheKeys();
|
|
6329
6365
|
const [cached, cachedTs] = await Promise.all([
|
|
6330
|
-
this.storage.get(
|
|
6331
|
-
this.storage.get(
|
|
6366
|
+
this.storage.get(dataKey),
|
|
6367
|
+
this.storage.get(tsKey)
|
|
6332
6368
|
]);
|
|
6333
6369
|
if (!cached || !cachedTs) return false;
|
|
6334
6370
|
const ts = parseInt(cachedTs, 10);
|
|
@@ -6351,9 +6387,10 @@ var TokenRegistry = class _TokenRegistry {
|
|
|
6351
6387
|
async saveToCache(definitions) {
|
|
6352
6388
|
if (!this.storage) return;
|
|
6353
6389
|
try {
|
|
6390
|
+
const { data: dataKey, ts: tsKey } = this.cacheKeys();
|
|
6354
6391
|
await Promise.all([
|
|
6355
|
-
this.storage.set(
|
|
6356
|
-
this.storage.set(
|
|
6392
|
+
this.storage.set(dataKey, JSON.stringify(definitions)),
|
|
6393
|
+
this.storage.set(tsKey, String(Date.now()))
|
|
6357
6394
|
]);
|
|
6358
6395
|
} catch {
|
|
6359
6396
|
}
|
|
@@ -6738,7 +6775,10 @@ function resolveTokenSyncConfig(network, config) {
|
|
|
6738
6775
|
return Object.keys(result).length > 0 ? result : void 0;
|
|
6739
6776
|
}
|
|
6740
6777
|
function createBrowserProviders(config) {
|
|
6741
|
-
|
|
6778
|
+
if (!config?.network) {
|
|
6779
|
+
throw new SphereError("createBrowserProviders: config.network is required.", "INVALID_CONFIG");
|
|
6780
|
+
}
|
|
6781
|
+
const network = config.network;
|
|
6742
6782
|
if (config?.debug !== void 0) {
|
|
6743
6783
|
logger.configure({ debug: config.debug });
|
|
6744
6784
|
}
|