@talismn/balances 0.0.0-pr2032-20250610083550 → 0.0.0-pr2033-20250610094543

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');
@@ -1185,16 +1185,25 @@ class MiniMetadataUpdater {
1185
1185
  if (specName === null) return;
1186
1186
  if (specVersion === null) return;
1187
1187
  const fetchMetadata = async () => {
1188
+ const errors = {
1189
+ v15: null,
1190
+ v14: null
1191
+ };
1188
1192
  try {
1189
- return await sapi.fetchBestMetadata((method, params, isCacheable) => {
1190
- if (!this.#chainConnectors.substrate) throw new Error("Substrate connector is not available");
1191
- return this.#chainConnectors.substrate.send(chainId, method, params, isCacheable);
1192
- }, true // allow v14 fallback
1193
- );
1194
- } catch (err) {
1195
- log.warn(`Failed to fetch metadata for chain ${chainId}`);
1196
- return undefined;
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;
1197
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;
1198
1207
  };
1199
1208
  const [metadataRpc, systemProperties] = await Promise.all([fetchMetadata(), this.#chainConnectors.substrate?.send(chainId, "system_properties", [])]);
1200
1209
  for (const mod of this.#balanceModules.filter(m => m.type.startsWith("substrate-"))) {
@@ -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');
@@ -1185,16 +1185,25 @@ class MiniMetadataUpdater {
1185
1185
  if (specName === null) return;
1186
1186
  if (specVersion === null) return;
1187
1187
  const fetchMetadata = async () => {
1188
+ const errors = {
1189
+ v15: null,
1190
+ v14: null
1191
+ };
1188
1192
  try {
1189
- return await sapi.fetchBestMetadata((method, params, isCacheable) => {
1190
- if (!this.#chainConnectors.substrate) throw new Error("Substrate connector is not available");
1191
- return this.#chainConnectors.substrate.send(chainId, method, params, isCacheable);
1192
- }, true // allow v14 fallback
1193
- );
1194
- } catch (err) {
1195
- log.warn(`Failed to fetch metadata for chain ${chainId}`);
1196
- return undefined;
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;
1197
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;
1198
1207
  };
1199
1208
  const [metadataRpc, systemProperties] = await Promise.all([fetchMetadata(), this.#chainConnectors.substrate?.send(chainId, "system_properties", [])]);
1200
1209
  for (const mod of this.#balanceModules.filter(m => m.type.startsWith("substrate-"))) {
@@ -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';
@@ -1172,16 +1172,25 @@ class MiniMetadataUpdater {
1172
1172
  if (specName === null) return;
1173
1173
  if (specVersion === null) return;
1174
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
+ }
1175
1186
  try {
1176
- return await fetchBestMetadata((method, params, isCacheable) => {
1177
- if (!this.#chainConnectors.substrate) throw new Error("Substrate connector is not available");
1178
- return this.#chainConnectors.substrate.send(chainId, method, params, isCacheable);
1179
- }, true // allow v14 fallback
1180
- );
1181
- } catch (err) {
1182
- log.warn(`Failed to fetch metadata for chain ${chainId}`);
1183
- return undefined;
1187
+ const response = await this.#chainConnectors.substrate?.send(chainId, "state_getMetadata", []);
1188
+ if (response) return response;
1189
+ } catch (v14Cause) {
1190
+ errors.v14 = v14Cause;
1184
1191
  }
1192
+ log.warn(`Failed to fetch both metadata v15 and v14 for chain ${chainId}`, errors.v15, errors.v14);
1193
+ return null;
1185
1194
  };
1186
1195
  const [metadataRpc, systemProperties] = await Promise.all([fetchMetadata(), this.#chainConnectors.substrate?.send(chainId, "system_properties", [])]);
1187
1196
  for (const mod of this.#balanceModules.filter(m => m.type.startsWith("substrate-"))) {
@@ -3838,7 +3847,7 @@ const SubForeignAssetsModule = hydrate => {
3838
3847
  const callData = Binary.fromBytes(mergeUint8([new Uint8Array(location), codec.enc(args)]));
3839
3848
  return {
3840
3849
  type: "substrate",
3841
- callData: toHex(callData.asBytes())
3850
+ callData: toHex$1(callData.asBytes())
3842
3851
  };
3843
3852
  } catch (cause) {
3844
3853
  throw new Error(`Failed to build ${moduleType$3} transfer tx`, {
@@ -7359,7 +7368,7 @@ const SubTokensModule = hydrate => {
7359
7368
  }
7360
7369
  return {
7361
7370
  type: "substrate",
7362
- callData: toHex(callData.asBytes())
7371
+ callData: toHex$1(callData.asBytes())
7363
7372
  };
7364
7373
  }
7365
7374
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talismn/balances",
3
- "version": "0.0.0-pr2032-20250610083550",
3
+ "version": "0.0.0-pr2033-20250610094543",
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-evm": "0.0.0-pr2032-20250610083550",
38
- "@talismn/chain-connector": "0.0.0-pr2032-20250610083550",
39
- "@talismn/chaindata-provider": "0.0.0-pr2032-20250610083550",
40
- "@talismn/scale": "0.1.2",
41
- "@talismn/sapi": "0.0.0-pr2032-20250610083550",
42
- "@talismn/token-rates": "0.0.0-pr2032-20250610083550",
43
- "@talismn/util": "0.4.2"
37
+ "@talismn/chain-connector": "0.0.0-pr2033-20250610094543",
38
+ "@talismn/chain-connector-evm": "0.0.0-pr2033-20250610094543",
39
+ "@talismn/chaindata-provider": "0.0.0-pr2033-20250610094543",
40
+ "@talismn/sapi": "0.0.4",
41
+ "@talismn/util": "0.4.2",
42
+ "@talismn/token-rates": "0.0.0-pr2033-20250610094543",
43
+ "@talismn/scale": "0.1.2"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@polkadot/api-contract": "16.1.2",