@talismn/balances 0.0.0-pr2075-20250711064604 → 0.0.0-pr2075-20250711073805
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.
@@ -20,6 +20,7 @@ export declare class BalancesProvider {
|
|
20
20
|
fetchBalances(addressesByTokenId: Record<TokenId, Address[]>): Promise<IBalance[]>;
|
21
21
|
private getNetworkBalances$;
|
22
22
|
private getNetworkMiniMetadatas$;
|
23
|
+
private getNetworkSpecVersion$;
|
23
24
|
private getMiniMetadatas$;
|
24
25
|
private getStoredMiniMetadatas$;
|
25
26
|
private getDefaultMiniMetadatas$;
|
@@ -6335,7 +6335,9 @@ class BalancesProvider {
|
|
6335
6335
|
networkId,
|
6336
6336
|
tokensWithAddresses,
|
6337
6337
|
connector: this.#chainConnectors.evm
|
6338
|
-
}).pipe(rxjs.
|
6338
|
+
}).pipe(rxjs.catchError(() => rxjs.EMPTY),
|
6339
|
+
// don't emit, let provider mark balances stale
|
6340
|
+
rxjs.map(results => ({
|
6339
6341
|
status: "live",
|
6340
6342
|
// exclude zero balances
|
6341
6343
|
balances: results.success.filter(b => new Balance(b).total.planck > 0n)
|
@@ -6351,7 +6353,9 @@ class BalancesProvider {
|
|
6351
6353
|
tokensWithAddresses,
|
6352
6354
|
connector: this.#chainConnectors.substrate,
|
6353
6355
|
miniMetadata: miniMetadata
|
6354
|
-
}).pipe(rxjs.
|
6356
|
+
}).pipe(rxjs.catchError(() => rxjs.EMPTY),
|
6357
|
+
// don't emit, let provider mark balances stale
|
6358
|
+
rxjs.map(results => ({
|
6355
6359
|
status: "live",
|
6356
6360
|
// exclude zero balances
|
6357
6361
|
balances: results.success.filter(b => new Balance(b).total.planck > 0n)
|
@@ -6378,7 +6382,20 @@ class BalancesProvider {
|
|
6378
6382
|
});
|
6379
6383
|
}
|
6380
6384
|
getNetworkMiniMetadatas$(networkId) {
|
6381
|
-
return this.#chaindataProvider.getNetworkById$(networkId).pipe(rxjs.switchMap(network => chaindataProvider.isNetworkDot(network)
|
6385
|
+
return this.#chaindataProvider.getNetworkById$(networkId).pipe(rxjs.switchMap(network => chaindataProvider.isNetworkDot(network) ? this.getNetworkSpecVersion$(networkId).pipe(rxjs.switchMap(specVersion => specVersion === null ? rxjs.of([]) : this.getMiniMetadatas$(networkId, specVersion))) : rxjs.of([])));
|
6386
|
+
}
|
6387
|
+
getNetworkSpecVersion$(networkId) {
|
6388
|
+
return rxjs.from(viem.withRetry(async () => {
|
6389
|
+
if (!this.#chainConnectors.substrate) return null;
|
6390
|
+
return await getSpecVersion(this.#chainConnectors.substrate, networkId);
|
6391
|
+
}, {
|
6392
|
+
delay: 2_000
|
6393
|
+
})).pipe(rxjs.catchError(() => {
|
6394
|
+
log.warn("Failed to fetch spec version for network", {
|
6395
|
+
networkId
|
6396
|
+
});
|
6397
|
+
return rxjs.of(null);
|
6398
|
+
}));
|
6382
6399
|
}
|
6383
6400
|
getMiniMetadatas$(networkId, specVersion) {
|
6384
6401
|
const miniMetadataIds = BALANCE_MODULES.filter(mod => mod.platform === "polkadot").map(mod => deriveMiniMetadataId({
|
@@ -6335,7 +6335,9 @@ class BalancesProvider {
|
|
6335
6335
|
networkId,
|
6336
6336
|
tokensWithAddresses,
|
6337
6337
|
connector: this.#chainConnectors.evm
|
6338
|
-
}).pipe(rxjs.
|
6338
|
+
}).pipe(rxjs.catchError(() => rxjs.EMPTY),
|
6339
|
+
// don't emit, let provider mark balances stale
|
6340
|
+
rxjs.map(results => ({
|
6339
6341
|
status: "live",
|
6340
6342
|
// exclude zero balances
|
6341
6343
|
balances: results.success.filter(b => new Balance(b).total.planck > 0n)
|
@@ -6351,7 +6353,9 @@ class BalancesProvider {
|
|
6351
6353
|
tokensWithAddresses,
|
6352
6354
|
connector: this.#chainConnectors.substrate,
|
6353
6355
|
miniMetadata: miniMetadata
|
6354
|
-
}).pipe(rxjs.
|
6356
|
+
}).pipe(rxjs.catchError(() => rxjs.EMPTY),
|
6357
|
+
// don't emit, let provider mark balances stale
|
6358
|
+
rxjs.map(results => ({
|
6355
6359
|
status: "live",
|
6356
6360
|
// exclude zero balances
|
6357
6361
|
balances: results.success.filter(b => new Balance(b).total.planck > 0n)
|
@@ -6378,7 +6382,20 @@ class BalancesProvider {
|
|
6378
6382
|
});
|
6379
6383
|
}
|
6380
6384
|
getNetworkMiniMetadatas$(networkId) {
|
6381
|
-
return this.#chaindataProvider.getNetworkById$(networkId).pipe(rxjs.switchMap(network => chaindataProvider.isNetworkDot(network)
|
6385
|
+
return this.#chaindataProvider.getNetworkById$(networkId).pipe(rxjs.switchMap(network => chaindataProvider.isNetworkDot(network) ? this.getNetworkSpecVersion$(networkId).pipe(rxjs.switchMap(specVersion => specVersion === null ? rxjs.of([]) : this.getMiniMetadatas$(networkId, specVersion))) : rxjs.of([])));
|
6386
|
+
}
|
6387
|
+
getNetworkSpecVersion$(networkId) {
|
6388
|
+
return rxjs.from(viem.withRetry(async () => {
|
6389
|
+
if (!this.#chainConnectors.substrate) return null;
|
6390
|
+
return await getSpecVersion(this.#chainConnectors.substrate, networkId);
|
6391
|
+
}, {
|
6392
|
+
delay: 2_000
|
6393
|
+
})).pipe(rxjs.catchError(() => {
|
6394
|
+
log.warn("Failed to fetch spec version for network", {
|
6395
|
+
networkId
|
6396
|
+
});
|
6397
|
+
return rxjs.of(null);
|
6398
|
+
}));
|
6382
6399
|
}
|
6383
6400
|
getMiniMetadatas$(networkId, specVersion) {
|
6384
6401
|
const miniMetadataIds = BALANCE_MODULES.filter(mod => mod.platform === "polkadot").map(mod => deriveMiniMetadataId({
|
@@ -5,7 +5,7 @@ import { parseAbi, erc20Abi, getContract, ContractFunctionExecutionError, hexToS
|
|
5
5
|
import { assign, omit, isEqual, keyBy, keys, uniq, fromPairs, values, toPairs } from 'lodash-es';
|
6
6
|
import z from 'zod/v4';
|
7
7
|
import anylogger from 'anylogger';
|
8
|
-
import { of, Observable, distinctUntilChanged, map, timer, switchMap, from, firstValueFrom, combineLatest, BehaviorSubject, shareReplay, startWith, filter, tap } from 'rxjs';
|
8
|
+
import { of, Observable, distinctUntilChanged, map, timer, switchMap, from, firstValueFrom, combineLatest, BehaviorSubject, shareReplay, startWith, filter, catchError, EMPTY, tap } from 'rxjs';
|
9
9
|
import { parseMetadataRpc, toHex, unifyMetadata, decAnyMetadata, getDynamicBuilder, getLookupFn, decodeScale, getStorageKeyPrefix, Twox128, compactMetadata, encodeMetadata, papiParse, papiStringify } from '@talismn/scale';
|
10
10
|
import { newTokenRates } from '@talismn/token-rates';
|
11
11
|
import BigNumber from 'bignumber.js';
|
@@ -6326,7 +6326,9 @@ class BalancesProvider {
|
|
6326
6326
|
networkId,
|
6327
6327
|
tokensWithAddresses,
|
6328
6328
|
connector: this.#chainConnectors.evm
|
6329
|
-
}).pipe(
|
6329
|
+
}).pipe(catchError(() => EMPTY),
|
6330
|
+
// don't emit, let provider mark balances stale
|
6331
|
+
map(results => ({
|
6330
6332
|
status: "live",
|
6331
6333
|
// exclude zero balances
|
6332
6334
|
balances: results.success.filter(b => new Balance(b).total.planck > 0n)
|
@@ -6342,7 +6344,9 @@ class BalancesProvider {
|
|
6342
6344
|
tokensWithAddresses,
|
6343
6345
|
connector: this.#chainConnectors.substrate,
|
6344
6346
|
miniMetadata: miniMetadata
|
6345
|
-
}).pipe(
|
6347
|
+
}).pipe(catchError(() => EMPTY),
|
6348
|
+
// don't emit, let provider mark balances stale
|
6349
|
+
map(results => ({
|
6346
6350
|
status: "live",
|
6347
6351
|
// exclude zero balances
|
6348
6352
|
balances: results.success.filter(b => new Balance(b).total.planck > 0n)
|
@@ -6369,7 +6373,20 @@ class BalancesProvider {
|
|
6369
6373
|
});
|
6370
6374
|
}
|
6371
6375
|
getNetworkMiniMetadatas$(networkId) {
|
6372
|
-
return this.#chaindataProvider.getNetworkById$(networkId).pipe(switchMap(network => isNetworkDot(network)
|
6376
|
+
return this.#chaindataProvider.getNetworkById$(networkId).pipe(switchMap(network => isNetworkDot(network) ? this.getNetworkSpecVersion$(networkId).pipe(switchMap(specVersion => specVersion === null ? of([]) : this.getMiniMetadatas$(networkId, specVersion))) : of([])));
|
6377
|
+
}
|
6378
|
+
getNetworkSpecVersion$(networkId) {
|
6379
|
+
return from(withRetry(async () => {
|
6380
|
+
if (!this.#chainConnectors.substrate) return null;
|
6381
|
+
return await getSpecVersion(this.#chainConnectors.substrate, networkId);
|
6382
|
+
}, {
|
6383
|
+
delay: 2_000
|
6384
|
+
})).pipe(catchError(() => {
|
6385
|
+
log.warn("Failed to fetch spec version for network", {
|
6386
|
+
networkId
|
6387
|
+
});
|
6388
|
+
return of(null);
|
6389
|
+
}));
|
6373
6390
|
}
|
6374
6391
|
getMiniMetadatas$(networkId, specVersion) {
|
6375
6392
|
const miniMetadataIds = BALANCE_MODULES.filter(mod => mod.platform === "polkadot").map(mod => deriveMiniMetadataId({
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@talismn/balances",
|
3
|
-
"version": "0.0.0-pr2075-
|
3
|
+
"version": "0.0.0-pr2075-20250711073805",
|
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-
|
38
|
-
"@talismn/chain-connector-evm": "0.0.0-pr2075-
|
39
|
-
"@talismn/
|
40
|
-
"@talismn/
|
41
|
-
"@talismn/
|
42
|
-
"@talismn/token-rates": "0.0.0-pr2075-
|
43
|
-
"@talismn/util": "0.0.0-pr2075-
|
37
|
+
"@talismn/chain-connector": "0.0.0-pr2075-20250711073805",
|
38
|
+
"@talismn/chain-connector-evm": "0.0.0-pr2075-20250711073805",
|
39
|
+
"@talismn/scale": "0.0.0-pr2075-20250711073805",
|
40
|
+
"@talismn/sapi": "0.0.0-pr2075-20250711073805",
|
41
|
+
"@talismn/chaindata-provider": "0.0.0-pr2075-20250711073805",
|
42
|
+
"@talismn/token-rates": "0.0.0-pr2075-20250711073805",
|
43
|
+
"@talismn/util": "0.0.0-pr2075-20250711073805"
|
44
44
|
},
|
45
45
|
"devDependencies": {
|
46
46
|
"@polkadot/api-contract": "16.1.2",
|