@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
|
@@ -3878,7 +3878,7 @@ function getEmbeddedTrustBase(network) {
|
|
|
3878
3878
|
case "dev":
|
|
3879
3879
|
return TRUSTBASE_DEV;
|
|
3880
3880
|
default:
|
|
3881
|
-
|
|
3881
|
+
throw new SphereError(`getEmbeddedTrustBase: unknown network "${network}"`, "INVALID_CONFIG");
|
|
3882
3882
|
}
|
|
3883
3883
|
}
|
|
3884
3884
|
var BaseTrustBaseLoader = class {
|
|
@@ -3898,9 +3898,24 @@ var BaseTrustBaseLoader = class {
|
|
|
3898
3898
|
// impl/browser/oracle/index.ts
|
|
3899
3899
|
var BrowserTrustBaseLoader = class extends BaseTrustBaseLoader {
|
|
3900
3900
|
url;
|
|
3901
|
-
|
|
3901
|
+
/**
|
|
3902
|
+
* @param networkOrUrl - a NetworkType, or a URL to fetch the trust base from
|
|
3903
|
+
* @param fallbackNetwork - network used for the embedded fallback when a URL is
|
|
3904
|
+
* supplied (and the fetch fails). Required when networkOrUrl is a URL — we must
|
|
3905
|
+
* never silently fall back to testnet on a different network.
|
|
3906
|
+
*/
|
|
3907
|
+
constructor(networkOrUrl, fallbackNetwork) {
|
|
3908
|
+
if (!networkOrUrl) {
|
|
3909
|
+
throw new SphereError("BrowserTrustBaseLoader: network or trustBaseUrl is required.", "INVALID_CONFIG");
|
|
3910
|
+
}
|
|
3902
3911
|
if (networkOrUrl.startsWith("/") || networkOrUrl.startsWith("http")) {
|
|
3903
|
-
|
|
3912
|
+
if (!fallbackNetwork) {
|
|
3913
|
+
throw new SphereError(
|
|
3914
|
+
"BrowserTrustBaseLoader: fallbackNetwork is required when a trustBaseUrl is supplied.",
|
|
3915
|
+
"INVALID_CONFIG"
|
|
3916
|
+
);
|
|
3917
|
+
}
|
|
3918
|
+
super(fallbackNetwork);
|
|
3904
3919
|
this.url = networkOrUrl;
|
|
3905
3920
|
} else {
|
|
3906
3921
|
super(networkOrUrl);
|
|
@@ -3918,14 +3933,21 @@ var BrowserTrustBaseLoader = class extends BaseTrustBaseLoader {
|
|
|
3918
3933
|
return null;
|
|
3919
3934
|
}
|
|
3920
3935
|
};
|
|
3921
|
-
function createBrowserTrustBaseLoader(networkOrUrl) {
|
|
3922
|
-
return new BrowserTrustBaseLoader(networkOrUrl);
|
|
3936
|
+
function createBrowserTrustBaseLoader(networkOrUrl, fallbackNetwork) {
|
|
3937
|
+
return new BrowserTrustBaseLoader(networkOrUrl, fallbackNetwork);
|
|
3923
3938
|
}
|
|
3924
3939
|
function createUnicityAggregatorProvider(config) {
|
|
3925
3940
|
const { trustBaseUrl, network, ...restConfig } = config;
|
|
3941
|
+
if (!trustBaseUrl && !network) {
|
|
3942
|
+
throw new SphereError(
|
|
3943
|
+
"createUnicityAggregatorProvider: network or trustBaseUrl required.",
|
|
3944
|
+
"INVALID_CONFIG"
|
|
3945
|
+
);
|
|
3946
|
+
}
|
|
3926
3947
|
return new UnicityAggregatorProvider({
|
|
3927
3948
|
...restConfig,
|
|
3928
|
-
|
|
3949
|
+
// When a URL is supplied, `network` (if any) is the embedded-fallback network.
|
|
3950
|
+
trustBaseLoader: createBrowserTrustBaseLoader(trustBaseUrl ?? network, network)
|
|
3929
3951
|
});
|
|
3930
3952
|
}
|
|
3931
3953
|
var createUnicityOracleProvider = createUnicityAggregatorProvider;
|
|
@@ -6367,6 +6389,19 @@ var TokenRegistry = class _TokenRegistry {
|
|
|
6367
6389
|
// ===========================================================================
|
|
6368
6390
|
// Cache (StorageProvider)
|
|
6369
6391
|
// ===========================================================================
|
|
6392
|
+
/**
|
|
6393
|
+
* Per-network cache keys. The registry cache MUST be namespaced by remoteUrl:
|
|
6394
|
+
* testnet and testnet2 ship DIFFERENT coinIds for the same symbol, so a single
|
|
6395
|
+
* global key let a stale testnet snapshot be served for a testnet2 request —
|
|
6396
|
+
* wrong/missing icons AND self-mint resolving the wrong-network coinId. Keying
|
|
6397
|
+
* by remoteUrl isolates the snapshots so a network can never read another's.
|
|
6398
|
+
*/
|
|
6399
|
+
cacheKeys() {
|
|
6400
|
+
const base = STORAGE_KEYS_GLOBAL.TOKEN_REGISTRY_CACHE;
|
|
6401
|
+
const baseTs = STORAGE_KEYS_GLOBAL.TOKEN_REGISTRY_CACHE_TS;
|
|
6402
|
+
if (!this.remoteUrl) return { data: base, ts: baseTs };
|
|
6403
|
+
return { data: `${base}:${this.remoteUrl}`, ts: `${baseTs}:${this.remoteUrl}` };
|
|
6404
|
+
}
|
|
6370
6405
|
/**
|
|
6371
6406
|
* Load definitions from StorageProvider cache.
|
|
6372
6407
|
* Only applies if cache exists and is fresh (within refreshIntervalMs).
|
|
@@ -6374,9 +6409,10 @@ var TokenRegistry = class _TokenRegistry {
|
|
|
6374
6409
|
async loadFromCache() {
|
|
6375
6410
|
if (!this.storage) return false;
|
|
6376
6411
|
try {
|
|
6412
|
+
const { data: dataKey, ts: tsKey } = this.cacheKeys();
|
|
6377
6413
|
const [cached, cachedTs] = await Promise.all([
|
|
6378
|
-
this.storage.get(
|
|
6379
|
-
this.storage.get(
|
|
6414
|
+
this.storage.get(dataKey),
|
|
6415
|
+
this.storage.get(tsKey)
|
|
6380
6416
|
]);
|
|
6381
6417
|
if (!cached || !cachedTs) return false;
|
|
6382
6418
|
const ts = parseInt(cachedTs, 10);
|
|
@@ -6399,9 +6435,10 @@ var TokenRegistry = class _TokenRegistry {
|
|
|
6399
6435
|
async saveToCache(definitions) {
|
|
6400
6436
|
if (!this.storage) return;
|
|
6401
6437
|
try {
|
|
6438
|
+
const { data: dataKey, ts: tsKey } = this.cacheKeys();
|
|
6402
6439
|
await Promise.all([
|
|
6403
|
-
this.storage.set(
|
|
6404
|
-
this.storage.set(
|
|
6440
|
+
this.storage.set(dataKey, JSON.stringify(definitions)),
|
|
6441
|
+
this.storage.set(tsKey, String(Date.now()))
|
|
6405
6442
|
]);
|
|
6406
6443
|
} catch {
|
|
6407
6444
|
}
|
|
@@ -6786,7 +6823,10 @@ function resolveTokenSyncConfig(network, config) {
|
|
|
6786
6823
|
return Object.keys(result).length > 0 ? result : void 0;
|
|
6787
6824
|
}
|
|
6788
6825
|
function createBrowserProviders(config) {
|
|
6789
|
-
|
|
6826
|
+
if (!config?.network) {
|
|
6827
|
+
throw new SphereError("createBrowserProviders: config.network is required.", "INVALID_CONFIG");
|
|
6828
|
+
}
|
|
6829
|
+
const network = config.network;
|
|
6790
6830
|
if (config?.debug !== void 0) {
|
|
6791
6831
|
logger.configure({ debug: config.debug });
|
|
6792
6832
|
}
|