@talismn/balances 0.0.0-pr2075-20250710091134 → 0.0.0-pr2075-20250710094113

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.
@@ -6202,6 +6202,7 @@ const POOL = new PQueue__default.default({
6202
6202
  const getMiniMetadatas = async (chainConnector, chaindataProvider, networkId, specVersion) => {
6203
6203
  if (specVersion === undefined) specVersion = await getSpecVersion(chainConnector, networkId);
6204
6204
  const cacheKey = getCacheKey(networkId, specVersion);
6205
+ if (CACHE.has(cacheKey)) return CACHE.get(cacheKey);
6205
6206
  const pResult = POOL.add(() => fetchMiniMetadatas(chainConnector, chaindataProvider, networkId, specVersion));
6206
6207
 
6207
6208
  // keep the results in cache (unless call fails) as observables call this function a lot of times
@@ -6215,15 +6216,13 @@ const getMiniMetadatas = async (chainConnector, chaindataProvider, networkId, sp
6215
6216
  });
6216
6217
  }
6217
6218
  };
6218
- const fetchMiniMetadatas = async (chainConnector, chaindataProvider, chainId, specVersion, signal) => {
6219
+ const fetchMiniMetadatas = async (chainConnector, chaindataProvider, chainId, specVersion) => {
6219
6220
  const start = performance.now();
6220
6221
  log.info("[miniMetadata] fetching minimetadatas for %s", chainId);
6221
6222
  try {
6222
6223
  const network = await chaindataProvider.getNetworkById(chainId, "polkadot");
6223
6224
  if (!network) throw new Error(`Network ${chainId} not found in chaindataProvider`);
6224
- signal?.throwIfAborted();
6225
6225
  const metadataRpc = await getMetadataRpc(chainConnector, chainId);
6226
- signal?.throwIfAborted();
6227
6226
  return Promise.all(BALANCE_MODULES.filter(m => m.platform === "polkadot").map(mod => mod.getMiniMetadata({
6228
6227
  networkId: chainId,
6229
6228
  metadataRpc,
@@ -6421,13 +6420,17 @@ class BalancesProvider {
6421
6420
  miniMetadatas
6422
6421
  }));
6423
6422
  }));
6424
- }));
6423
+ }),
6424
+ // emit only when mini metadata changes, as a change here would restart all subscriptions for the network
6425
+ rxjs.distinctUntilChanged(lodashEs.isEqual));
6425
6426
  }
6426
6427
  getStoredMiniMetadatas$(miniMetadataIds) {
6427
6428
  return this.storedMiniMetadataMapById$.pipe(rxjs.map(mapById => {
6428
6429
  const miniMetadatas = miniMetadataIds.map(id => mapById[id]);
6429
6430
  return miniMetadatas.length && miniMetadatas.every(util.isTruthy) ? miniMetadatas : null;
6430
- }));
6431
+ }),
6432
+ // source changes very often
6433
+ rxjs.distinctUntilChanged(lodashEs.isEqual));
6431
6434
  }
6432
6435
  getDefaultMiniMetadatas$(miniMetadataIds) {
6433
6436
  return this.#chaindataProvider.miniMetadatasMapById$.pipe(rxjs.map(mapById => {
@@ -6202,6 +6202,7 @@ const POOL = new PQueue__default.default({
6202
6202
  const getMiniMetadatas = async (chainConnector, chaindataProvider, networkId, specVersion) => {
6203
6203
  if (specVersion === undefined) specVersion = await getSpecVersion(chainConnector, networkId);
6204
6204
  const cacheKey = getCacheKey(networkId, specVersion);
6205
+ if (CACHE.has(cacheKey)) return CACHE.get(cacheKey);
6205
6206
  const pResult = POOL.add(() => fetchMiniMetadatas(chainConnector, chaindataProvider, networkId, specVersion));
6206
6207
 
6207
6208
  // keep the results in cache (unless call fails) as observables call this function a lot of times
@@ -6215,15 +6216,13 @@ const getMiniMetadatas = async (chainConnector, chaindataProvider, networkId, sp
6215
6216
  });
6216
6217
  }
6217
6218
  };
6218
- const fetchMiniMetadatas = async (chainConnector, chaindataProvider, chainId, specVersion, signal) => {
6219
+ const fetchMiniMetadatas = async (chainConnector, chaindataProvider, chainId, specVersion) => {
6219
6220
  const start = performance.now();
6220
6221
  log.info("[miniMetadata] fetching minimetadatas for %s", chainId);
6221
6222
  try {
6222
6223
  const network = await chaindataProvider.getNetworkById(chainId, "polkadot");
6223
6224
  if (!network) throw new Error(`Network ${chainId} not found in chaindataProvider`);
6224
- signal?.throwIfAborted();
6225
6225
  const metadataRpc = await getMetadataRpc(chainConnector, chainId);
6226
- signal?.throwIfAborted();
6227
6226
  return Promise.all(BALANCE_MODULES.filter(m => m.platform === "polkadot").map(mod => mod.getMiniMetadata({
6228
6227
  networkId: chainId,
6229
6228
  metadataRpc,
@@ -6421,13 +6420,17 @@ class BalancesProvider {
6421
6420
  miniMetadatas
6422
6421
  }));
6423
6422
  }));
6424
- }));
6423
+ }),
6424
+ // emit only when mini metadata changes, as a change here would restart all subscriptions for the network
6425
+ rxjs.distinctUntilChanged(lodashEs.isEqual));
6425
6426
  }
6426
6427
  getStoredMiniMetadatas$(miniMetadataIds) {
6427
6428
  return this.storedMiniMetadataMapById$.pipe(rxjs.map(mapById => {
6428
6429
  const miniMetadatas = miniMetadataIds.map(id => mapById[id]);
6429
6430
  return miniMetadatas.length && miniMetadatas.every(util.isTruthy) ? miniMetadatas : null;
6430
- }));
6431
+ }),
6432
+ // source changes very often
6433
+ rxjs.distinctUntilChanged(lodashEs.isEqual));
6431
6434
  }
6432
6435
  getDefaultMiniMetadatas$(miniMetadataIds) {
6433
6436
  return this.#chaindataProvider.miniMetadatasMapById$.pipe(rxjs.map(mapById => {
@@ -6193,6 +6193,7 @@ const POOL = new PQueue({
6193
6193
  const getMiniMetadatas = async (chainConnector, chaindataProvider, networkId, specVersion) => {
6194
6194
  if (specVersion === undefined) specVersion = await getSpecVersion(chainConnector, networkId);
6195
6195
  const cacheKey = getCacheKey(networkId, specVersion);
6196
+ if (CACHE.has(cacheKey)) return CACHE.get(cacheKey);
6196
6197
  const pResult = POOL.add(() => fetchMiniMetadatas(chainConnector, chaindataProvider, networkId, specVersion));
6197
6198
 
6198
6199
  // keep the results in cache (unless call fails) as observables call this function a lot of times
@@ -6206,15 +6207,13 @@ const getMiniMetadatas = async (chainConnector, chaindataProvider, networkId, sp
6206
6207
  });
6207
6208
  }
6208
6209
  };
6209
- const fetchMiniMetadatas = async (chainConnector, chaindataProvider, chainId, specVersion, signal) => {
6210
+ const fetchMiniMetadatas = async (chainConnector, chaindataProvider, chainId, specVersion) => {
6210
6211
  const start = performance.now();
6211
6212
  log.info("[miniMetadata] fetching minimetadatas for %s", chainId);
6212
6213
  try {
6213
6214
  const network = await chaindataProvider.getNetworkById(chainId, "polkadot");
6214
6215
  if (!network) throw new Error(`Network ${chainId} not found in chaindataProvider`);
6215
- signal?.throwIfAborted();
6216
6216
  const metadataRpc = await getMetadataRpc(chainConnector, chainId);
6217
- signal?.throwIfAborted();
6218
6217
  return Promise.all(BALANCE_MODULES.filter(m => m.platform === "polkadot").map(mod => mod.getMiniMetadata({
6219
6218
  networkId: chainId,
6220
6219
  metadataRpc,
@@ -6412,13 +6411,17 @@ class BalancesProvider {
6412
6411
  miniMetadatas
6413
6412
  }));
6414
6413
  }));
6415
- }));
6414
+ }),
6415
+ // emit only when mini metadata changes, as a change here would restart all subscriptions for the network
6416
+ distinctUntilChanged(isEqual));
6416
6417
  }
6417
6418
  getStoredMiniMetadatas$(miniMetadataIds) {
6418
6419
  return this.storedMiniMetadataMapById$.pipe(map(mapById => {
6419
6420
  const miniMetadatas = miniMetadataIds.map(id => mapById[id]);
6420
6421
  return miniMetadatas.length && miniMetadatas.every(isTruthy) ? miniMetadatas : null;
6421
- }));
6422
+ }),
6423
+ // source changes very often
6424
+ distinctUntilChanged(isEqual));
6422
6425
  }
6423
6426
  getDefaultMiniMetadatas$(miniMetadataIds) {
6424
6427
  return this.#chaindataProvider.miniMetadatasMapById$.pipe(map(mapById => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talismn/balances",
3
- "version": "0.0.0-pr2075-20250710091134",
3
+ "version": "0.0.0-pr2075-20250710094113",
4
4
  "author": "Talisman",
5
5
  "homepage": "https://talisman.xyz",
6
6
  "license": "GPL-3.0-or-later",
@@ -34,13 +34,13 @@
34
34
  "scale-ts": "^1.6.1",
35
35
  "viem": "^2.27.3",
36
36
  "zod": "^3.25.62",
37
- "@talismn/chain-connector": "0.0.0-pr2075-20250710091134",
38
- "@talismn/chain-connector-evm": "0.0.0-pr2075-20250710091134",
39
- "@talismn/chaindata-provider": "0.0.0-pr2075-20250710091134",
40
- "@talismn/sapi": "0.0.0-pr2075-20250710091134",
41
- "@talismn/token-rates": "0.0.0-pr2075-20250710091134",
42
- "@talismn/util": "0.0.0-pr2075-20250710091134",
43
- "@talismn/scale": "0.0.0-pr2075-20250710091134"
37
+ "@talismn/chain-connector-evm": "0.0.0-pr2075-20250710094113",
38
+ "@talismn/chain-connector": "0.0.0-pr2075-20250710094113",
39
+ "@talismn/chaindata-provider": "0.0.0-pr2075-20250710094113",
40
+ "@talismn/sapi": "0.0.0-pr2075-20250710094113",
41
+ "@talismn/scale": "0.0.0-pr2075-20250710094113",
42
+ "@talismn/util": "0.0.0-pr2075-20250710094113",
43
+ "@talismn/token-rates": "0.0.0-pr2075-20250710094113"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@polkadot/api-contract": "16.1.2",