@talismn/balances 0.0.0-pr2032-20250610081842 → 0.0.0-pr2033-20250610094153

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.
@@ -2,10 +2,11 @@
2
2
 
3
3
  var PromisePool = require('@supercharge/promise-pool');
4
4
  var chaindataProvider = require('@talismn/chaindata-provider');
5
- var sapi = require('@talismn/sapi');
5
+ var scale = require('@talismn/scale');
6
6
  var dexie = require('dexie');
7
7
  var isEqual = require('lodash/isEqual');
8
8
  var rxjs = require('rxjs');
9
+ var scaleTs = require('scale-ts');
9
10
  var anylogger = require('anylogger');
10
11
  var tokenRates = require('@talismn/token-rates');
11
12
  var util = require('@talismn/util');
@@ -15,14 +16,13 @@ var utilCrypto = require('@polkadot/util-crypto');
15
16
  var pako = require('pako');
16
17
  var viem = require('viem');
17
18
  var txwrapperCore = require('@substrate/txwrapper-core');
18
- var scale = require('@talismn/scale');
19
19
  var camelCase = require('lodash/camelCase');
20
20
  var types = require('@polkadot/types');
21
21
  var groupBy = require('lodash/groupBy');
22
22
  var utils = require('@polkadot-api/utils');
23
23
  var polkadotApi = require('polkadot-api');
24
24
  var chainConnector = require('@talismn/chain-connector');
25
- var scaleTs = require('scale-ts');
25
+ var sapi = require('@talismn/sapi');
26
26
  var upperFirst = require('lodash/upperFirst');
27
27
  var apiContract = require('@polkadot/api-contract');
28
28
  var lzString = require('lz-string');
@@ -1184,8 +1184,28 @@ class MiniMetadataUpdater {
1184
1184
  } = chain;
1185
1185
  if (specName === null) return;
1186
1186
  if (specVersion === null) return;
1187
- if (!this.#chainConnectors.substrate) return;
1188
- const [metadataRpc, systemProperties] = await Promise.all([sapi.fetchBestMetadata((method, params, isCacheable) => this.#chainConnectors.substrate.send(chainId, method, params, isCacheable)), this.#chainConnectors.substrate.send(chainId, "system_properties", [])]);
1187
+ const fetchMetadata = async () => {
1188
+ const errors = {
1189
+ v15: null,
1190
+ v14: null
1191
+ };
1192
+ try {
1193
+ const response = await this.#chainConnectors.substrate?.send(chainId, "state_call", ["Metadata_metadata_at_version", scale.toHex(scaleTs.u32.enc(15))]);
1194
+ const result = response ? scaleTs.Option(scaleTs.Bytes()).dec(response) : null;
1195
+ if (result) return result;
1196
+ } catch (v15Cause) {
1197
+ errors.v15 = v15Cause;
1198
+ }
1199
+ try {
1200
+ const response = await this.#chainConnectors.substrate?.send(chainId, "state_getMetadata", []);
1201
+ if (response) return response;
1202
+ } catch (v14Cause) {
1203
+ errors.v14 = v14Cause;
1204
+ }
1205
+ log.warn(`Failed to fetch both metadata v15 and v14 for chain ${chainId}`, errors.v15, errors.v14);
1206
+ return null;
1207
+ };
1208
+ const [metadataRpc, systemProperties] = await Promise.all([fetchMetadata(), this.#chainConnectors.substrate?.send(chainId, "system_properties", [])]);
1189
1209
  for (const mod of this.#balanceModules.filter(m => m.type.startsWith("substrate-"))) {
1190
1210
  const balancesConfig = (chain.balancesConfig ?? []).find(({
1191
1211
  moduleType
@@ -2,10 +2,11 @@
2
2
 
3
3
  var PromisePool = require('@supercharge/promise-pool');
4
4
  var chaindataProvider = require('@talismn/chaindata-provider');
5
- var sapi = require('@talismn/sapi');
5
+ var scale = require('@talismn/scale');
6
6
  var dexie = require('dexie');
7
7
  var isEqual = require('lodash/isEqual');
8
8
  var rxjs = require('rxjs');
9
+ var scaleTs = require('scale-ts');
9
10
  var anylogger = require('anylogger');
10
11
  var tokenRates = require('@talismn/token-rates');
11
12
  var util = require('@talismn/util');
@@ -15,14 +16,13 @@ var utilCrypto = require('@polkadot/util-crypto');
15
16
  var pako = require('pako');
16
17
  var viem = require('viem');
17
18
  var txwrapperCore = require('@substrate/txwrapper-core');
18
- var scale = require('@talismn/scale');
19
19
  var camelCase = require('lodash/camelCase');
20
20
  var types = require('@polkadot/types');
21
21
  var groupBy = require('lodash/groupBy');
22
22
  var utils = require('@polkadot-api/utils');
23
23
  var polkadotApi = require('polkadot-api');
24
24
  var chainConnector = require('@talismn/chain-connector');
25
- var scaleTs = require('scale-ts');
25
+ var sapi = require('@talismn/sapi');
26
26
  var upperFirst = require('lodash/upperFirst');
27
27
  var apiContract = require('@polkadot/api-contract');
28
28
  var lzString = require('lz-string');
@@ -1184,8 +1184,28 @@ class MiniMetadataUpdater {
1184
1184
  } = chain;
1185
1185
  if (specName === null) return;
1186
1186
  if (specVersion === null) return;
1187
- if (!this.#chainConnectors.substrate) return;
1188
- const [metadataRpc, systemProperties] = await Promise.all([sapi.fetchBestMetadata((method, params, isCacheable) => this.#chainConnectors.substrate.send(chainId, method, params, isCacheable)), this.#chainConnectors.substrate.send(chainId, "system_properties", [])]);
1187
+ const fetchMetadata = async () => {
1188
+ const errors = {
1189
+ v15: null,
1190
+ v14: null
1191
+ };
1192
+ try {
1193
+ const response = await this.#chainConnectors.substrate?.send(chainId, "state_call", ["Metadata_metadata_at_version", scale.toHex(scaleTs.u32.enc(15))]);
1194
+ const result = response ? scaleTs.Option(scaleTs.Bytes()).dec(response) : null;
1195
+ if (result) return result;
1196
+ } catch (v15Cause) {
1197
+ errors.v15 = v15Cause;
1198
+ }
1199
+ try {
1200
+ const response = await this.#chainConnectors.substrate?.send(chainId, "state_getMetadata", []);
1201
+ if (response) return response;
1202
+ } catch (v14Cause) {
1203
+ errors.v14 = v14Cause;
1204
+ }
1205
+ log.warn(`Failed to fetch both metadata v15 and v14 for chain ${chainId}`, errors.v15, errors.v14);
1206
+ return null;
1207
+ };
1208
+ const [metadataRpc, systemProperties] = await Promise.all([fetchMetadata(), this.#chainConnectors.substrate?.send(chainId, "system_properties", [])]);
1189
1209
  for (const mod of this.#balanceModules.filter(m => m.type.startsWith("substrate-"))) {
1190
1210
  const balancesConfig = (chain.balancesConfig ?? []).find(({
1191
1211
  moduleType
@@ -1,9 +1,10 @@
1
1
  import PromisePool$1, { PromisePool } from '@supercharge/promise-pool';
2
2
  import { fetchMiniMetadatas, fetchInitMiniMetadatas, availableTokenLogoFilenames, githubTokenLogoUrl } from '@talismn/chaindata-provider';
3
- import { fetchBestMetadata, getScaleApi } from '@talismn/sapi';
3
+ import { toHex, unifyMetadata, decAnyMetadata, getDynamicBuilder, getLookupFn, getMetadataVersion, compactMetadata, encodeMetadata, decodeScale, encodeStateKey, papiParse } from '@talismn/scale';
4
4
  import { Dexie, liveQuery } from 'dexie';
5
5
  import isEqual from 'lodash/isEqual';
6
6
  import { from, Observable, scan, share, map, switchAll, combineLatest, mergeMap, toArray, interval, startWith, exhaustMap, pipe, filter, shareReplay, combineLatestWith, distinctUntilChanged, firstValueFrom, BehaviorSubject, debounceTime, takeUntil, switchMap, withLatestFrom, concatMap } from 'rxjs';
7
+ import { u32, Option, Bytes, u128, Struct } from 'scale-ts';
7
8
  import anylogger from 'anylogger';
8
9
  import { newTokenRates } from '@talismn/token-rates';
9
10
  import { isBigInt, BigMath, planckToTokens, isTruthy, isArrayOf, isEthereumAddress, hasOwnProperty, decodeAnyAddress, isNotNil, blake2Concat, firstThenDebounce, Deferred } from '@talismn/util';
@@ -13,14 +14,13 @@ import { xxhashAsU8a, blake2AsU8a } from '@polkadot/util-crypto';
13
14
  import pako from 'pako';
14
15
  import { parseAbi, isHex, hexToBigInt } from 'viem';
15
16
  import { defineMethod } from '@substrate/txwrapper-core';
16
- import { unifyMetadata, decAnyMetadata, getDynamicBuilder, getLookupFn, getMetadataVersion, compactMetadata, encodeMetadata, decodeScale, encodeStateKey, papiParse } from '@talismn/scale';
17
17
  import camelCase from 'lodash/camelCase';
18
18
  import { Metadata, TypeRegistry } from '@polkadot/types';
19
19
  import groupBy from 'lodash/groupBy';
20
- import { mergeUint8, toHex } from '@polkadot-api/utils';
20
+ import { mergeUint8, toHex as toHex$1 } from '@polkadot-api/utils';
21
21
  import { Binary, AccountId } from 'polkadot-api';
22
22
  import { ChainConnectionError } from '@talismn/chain-connector';
23
- import { u32, u128, Struct } from 'scale-ts';
23
+ import { getScaleApi } from '@talismn/sapi';
24
24
  import upperFirst from 'lodash/upperFirst';
25
25
  import { Abi } from '@polkadot/api-contract';
26
26
  import { compressToEncodedURIComponent } from 'lz-string';
@@ -1171,8 +1171,28 @@ class MiniMetadataUpdater {
1171
1171
  } = chain;
1172
1172
  if (specName === null) return;
1173
1173
  if (specVersion === null) return;
1174
- if (!this.#chainConnectors.substrate) return;
1175
- const [metadataRpc, systemProperties] = await Promise.all([fetchBestMetadata((method, params, isCacheable) => this.#chainConnectors.substrate.send(chainId, method, params, isCacheable)), this.#chainConnectors.substrate.send(chainId, "system_properties", [])]);
1174
+ const fetchMetadata = async () => {
1175
+ const errors = {
1176
+ v15: null,
1177
+ v14: null
1178
+ };
1179
+ try {
1180
+ const response = await this.#chainConnectors.substrate?.send(chainId, "state_call", ["Metadata_metadata_at_version", toHex(u32.enc(15))]);
1181
+ const result = response ? Option(Bytes()).dec(response) : null;
1182
+ if (result) return result;
1183
+ } catch (v15Cause) {
1184
+ errors.v15 = v15Cause;
1185
+ }
1186
+ try {
1187
+ const response = await this.#chainConnectors.substrate?.send(chainId, "state_getMetadata", []);
1188
+ if (response) return response;
1189
+ } catch (v14Cause) {
1190
+ errors.v14 = v14Cause;
1191
+ }
1192
+ log.warn(`Failed to fetch both metadata v15 and v14 for chain ${chainId}`, errors.v15, errors.v14);
1193
+ return null;
1194
+ };
1195
+ const [metadataRpc, systemProperties] = await Promise.all([fetchMetadata(), this.#chainConnectors.substrate?.send(chainId, "system_properties", [])]);
1176
1196
  for (const mod of this.#balanceModules.filter(m => m.type.startsWith("substrate-"))) {
1177
1197
  const balancesConfig = (chain.balancesConfig ?? []).find(({
1178
1198
  moduleType
@@ -3827,7 +3847,7 @@ const SubForeignAssetsModule = hydrate => {
3827
3847
  const callData = Binary.fromBytes(mergeUint8([new Uint8Array(location), codec.enc(args)]));
3828
3848
  return {
3829
3849
  type: "substrate",
3830
- callData: toHex(callData.asBytes())
3850
+ callData: toHex$1(callData.asBytes())
3831
3851
  };
3832
3852
  } catch (cause) {
3833
3853
  throw new Error(`Failed to build ${moduleType$3} transfer tx`, {
@@ -7348,7 +7368,7 @@ const SubTokensModule = hydrate => {
7348
7368
  }
7349
7369
  return {
7350
7370
  type: "substrate",
7351
- callData: toHex(callData.asBytes())
7371
+ callData: toHex$1(callData.asBytes())
7352
7372
  };
7353
7373
  }
7354
7374
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talismn/balances",
3
- "version": "0.0.0-pr2032-20250610081842",
3
+ "version": "0.0.0-pr2033-20250610094153",
4
4
  "author": "Talisman",
5
5
  "homepage": "https://talisman.xyz",
6
6
  "license": "GPL-3.0-or-later",
@@ -34,13 +34,13 @@
34
34
  "rxjs": "^7.8.1",
35
35
  "scale-ts": "^1.6.1",
36
36
  "viem": "^2.27.3",
37
- "@talismn/chain-connector": "0.0.0-pr2032-20250610081842",
38
- "@talismn/chain-connector-evm": "0.0.0-pr2032-20250610081842",
39
- "@talismn/chaindata-provider": "0.0.0-pr2032-20250610081842",
40
- "@talismn/sapi": "0.0.0-pr2032-20250610081842",
37
+ "@talismn/chain-connector": "0.0.0-pr2033-20250610094153",
38
+ "@talismn/chaindata-provider": "0.0.0-pr2033-20250610094153",
39
+ "@talismn/chain-connector-evm": "0.0.0-pr2033-20250610094153",
41
40
  "@talismn/scale": "0.1.2",
42
- "@talismn/token-rates": "0.0.0-pr2032-20250610081842",
43
- "@talismn/util": "0.4.2"
41
+ "@talismn/token-rates": "0.0.0-pr2033-20250610094153",
42
+ "@talismn/util": "0.4.2",
43
+ "@talismn/sapi": "0.0.4"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@polkadot/api-contract": "16.1.2",