@metamask-previews/assets-controller 8.3.3-preview-86a6309 → 8.3.3-preview-ddb114f71

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.
Files changed (54) hide show
  1. package/CHANGELOG.md +10 -4
  2. package/dist/AssetsController.cjs +31 -7
  3. package/dist/AssetsController.cjs.map +1 -1
  4. package/dist/AssetsController.d.cts +2 -2
  5. package/dist/AssetsController.d.cts.map +1 -1
  6. package/dist/AssetsController.d.mts +2 -2
  7. package/dist/AssetsController.d.mts.map +1 -1
  8. package/dist/AssetsController.mjs +31 -7
  9. package/dist/AssetsController.mjs.map +1 -1
  10. package/dist/data-sources/BackendWebsocketDataSource.cjs +5 -7
  11. package/dist/data-sources/BackendWebsocketDataSource.cjs.map +1 -1
  12. package/dist/data-sources/BackendWebsocketDataSource.d.cts +2 -2
  13. package/dist/data-sources/BackendWebsocketDataSource.d.cts.map +1 -1
  14. package/dist/data-sources/BackendWebsocketDataSource.d.mts +2 -2
  15. package/dist/data-sources/BackendWebsocketDataSource.d.mts.map +1 -1
  16. package/dist/data-sources/BackendWebsocketDataSource.mjs +5 -7
  17. package/dist/data-sources/BackendWebsocketDataSource.mjs.map +1 -1
  18. package/dist/data-sources/RpcDataSource.cjs +29 -50
  19. package/dist/data-sources/RpcDataSource.cjs.map +1 -1
  20. package/dist/data-sources/RpcDataSource.d.cts +4 -2
  21. package/dist/data-sources/RpcDataSource.d.cts.map +1 -1
  22. package/dist/data-sources/RpcDataSource.d.mts +4 -2
  23. package/dist/data-sources/RpcDataSource.d.mts.map +1 -1
  24. package/dist/data-sources/RpcDataSource.mjs +29 -50
  25. package/dist/data-sources/RpcDataSource.mjs.map +1 -1
  26. package/dist/data-sources/StakedBalanceDataSource.cjs +1 -27
  27. package/dist/data-sources/StakedBalanceDataSource.cjs.map +1 -1
  28. package/dist/data-sources/StakedBalanceDataSource.d.cts.map +1 -1
  29. package/dist/data-sources/StakedBalanceDataSource.d.mts.map +1 -1
  30. package/dist/data-sources/StakedBalanceDataSource.mjs +1 -27
  31. package/dist/data-sources/StakedBalanceDataSource.mjs.map +1 -1
  32. package/dist/data-sources/TokenDataSource.cjs +9 -18
  33. package/dist/data-sources/TokenDataSource.cjs.map +1 -1
  34. package/dist/data-sources/TokenDataSource.d.cts +3 -1
  35. package/dist/data-sources/TokenDataSource.d.cts.map +1 -1
  36. package/dist/data-sources/TokenDataSource.d.mts +3 -1
  37. package/dist/data-sources/TokenDataSource.d.mts.map +1 -1
  38. package/dist/data-sources/TokenDataSource.mjs +9 -18
  39. package/dist/data-sources/TokenDataSource.mjs.map +1 -1
  40. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.cjs +103 -9
  41. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.cjs.map +1 -1
  42. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.cts +14 -5
  43. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.cts.map +1 -1
  44. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.mts +14 -5
  45. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.mts.map +1 -1
  46. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.mjs +103 -9
  47. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.mjs.map +1 -1
  48. package/dist/defaults.cjs +1 -20
  49. package/dist/defaults.cjs.map +1 -1
  50. package/dist/defaults.d.cts.map +1 -1
  51. package/dist/defaults.d.mts.map +1 -1
  52. package/dist/defaults.mjs +1 -20
  53. package/dist/defaults.mjs.map +1 -1
  54. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,14 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ### Added
11
-
12
- - Add USDC on ARC mainnet (`eip155:5042/erc20:0x3600000000000000000000000000000000000000`) to default tokens to display on ARC ([#9011](https://github.com/MetaMask/core/pull/9011))
13
-
14
10
  ### Changed
15
11
 
12
+ - **BREAKING:** `RpcDataSourceOptions`, `TokenDataSourceOptions`, and `BackendWebsocketDataSourceOptions` no longer accept `isNativeAsset: (assetId) => boolean`; replace it with `getAssetType: (assetId) => 'native' | 'erc20' | 'spl'` ([#9063](https://github.com/MetaMask/core/pull/9063))
13
+ - Token detection via `TokensApiClient` is now gated behind the `/v2/supportedNetworks` endpoint; chains absent from the supported-networks list are skipped and return an empty token list, and token-list request failures return an empty array instead of throwing ([#9063](https://github.com/MetaMask/core/pull/9063))
16
14
  - Bump `@metamask/transaction-controller` from `^67.0.0` to `^67.1.0` ([#9066](https://github.com/MetaMask/core/pull/9066))
17
15
 
16
+ ### Removed
17
+
18
+ - **BREAKING:** Remove `TransactionController:incomingTransactionsReceived` from `AssetsController` allowed events and `RpcDataSourceAllowedEvents`; remove associated balance refresh on incoming transactions ([#9012](https://github.com/MetaMask/core/pull/9012))
19
+
20
+ ### Fixed
21
+
22
+ - `RpcDataSource`, `TokenDataSource`, and `BackendWebsocketDataSource` now correctly classify native tokens exposed via a non-zero-address ERC-20 interface (e.g. Immutable zkEVM's IMX, Arc's USDC at `0x3600…0000`) as `type: 'native'` instead of `type: 'erc20'` ([#9063](https://github.com/MetaMask/core/pull/9063))
23
+
18
24
  ## [8.3.3]
19
25
 
20
26
  ### Changed
@@ -13,7 +13,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
13
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
15
  };
16
- var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trace, _AssetsController_captureException, _AssetsController_firstInitFetchReported, _AssetsController_stateSizeReported, _AssetsController_emitTrace, _AssetsController_emitStateSizeTrace, _AssetsController_uiOpen, _AssetsController_keyringUnlocked, _AssetsController_controllerMutex, _AssetsController_activeSubscriptions, _AssetsController_enabledChains, _AssetsController_lastKnownAccountIds, _AssetsController_getSelectedAccounts, _AssetsController_backendWebsocketDataSource, _AssetsController_accountsApiDataSource, _AssetsController_snapDataSource, _AssetsController_rpcDataSource, _AssetsController_stakedBalanceDataSource, _AssetsController_allBalanceDataSources_get, _AssetsController_priceDataSource, _AssetsController_detectionMiddleware, _AssetsController_customAssetGraduationMiddleware, _AssetsController_rpcFallbackMiddleware, _AssetsController_tokenDataSource, _AssetsController_unsubscribeBasicFunctionality, _AssetsController_queryApiClient, _AssetsController_onActiveChainsUpdated, _AssetsController_initializeNativeAssetsMap, _AssetsController_initializeState, _AssetsController_extractEnabledChains, _AssetsController_normalizeChainReference, _AssetsController_subscribeToEvents, _AssetsController_onUnapprovedTransactionAdded, _AssetsController_updateActive, _AssetsController_handleAccountTreeStateChange, _AssetsController_registerActionHandlers, _AssetsController_handleActiveChainsUpdate, _AssetsController_executeMiddlewares, _AssetsController_getNativeAssetMap, _AssetsController_isNativeAsset, _AssetsController_resolveNativeAssetIds, _AssetsController_getNativeAssetIdsForEnabledChains, _AssetsController_getNativeAssetIdsForAccount, _AssetsController_ensureNativeBalancesDefaultZero, _AssetsController_ensureDefaultTrackedAssetsSeeded, _AssetsController_updateState, _AssetsController_getAssetsFromState, _AssetsController_shouldHideNativeToken, _AssetsController_tokenStandardToAssetType, _AssetsController_start, _AssetsController_stop, _AssetsController_subscribeAssets, _AssetsController_subscribeAssetsBalance, _AssetsController_subscribeRpcCustomAssetsSupplement, _AssetsController_unsubscribeBySubscriptionKey, _AssetsController_subscribeStakedBalance, _AssetsController_buildChainToAccountsMap, _AssetsController_subscribeDataSource, _AssetsController_unsubscribeDataSource, _AssetsController_buildDataRequest, _AssetsController_getEnabledChainsForAccount, _AssetsController_handleAccountGroupChanged, _AssetsController_handleEnabledNetworksChanged, _AssetsController_handleNetworkAdded, _AssetsController_refreshAssetsAfterNetworkChange;
16
+ var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trace, _AssetsController_captureException, _AssetsController_firstInitFetchReported, _AssetsController_stateSizeReported, _AssetsController_emitTrace, _AssetsController_emitStateSizeTrace, _AssetsController_uiOpen, _AssetsController_keyringUnlocked, _AssetsController_controllerMutex, _AssetsController_activeSubscriptions, _AssetsController_enabledChains, _AssetsController_lastKnownAccountIds, _AssetsController_getSelectedAccounts, _AssetsController_backendWebsocketDataSource, _AssetsController_accountsApiDataSource, _AssetsController_snapDataSource, _AssetsController_rpcDataSource, _AssetsController_stakedBalanceDataSource, _AssetsController_allBalanceDataSources_get, _AssetsController_priceDataSource, _AssetsController_detectionMiddleware, _AssetsController_customAssetGraduationMiddleware, _AssetsController_rpcFallbackMiddleware, _AssetsController_tokenDataSource, _AssetsController_unsubscribeBasicFunctionality, _AssetsController_queryApiClient, _AssetsController_onActiveChainsUpdated, _AssetsController_initializeNativeAssetsMap, _AssetsController_initializeState, _AssetsController_extractEnabledChains, _AssetsController_normalizeChainReference, _AssetsController_subscribeToEvents, _AssetsController_onUnapprovedTransactionAdded, _AssetsController_updateActive, _AssetsController_handleAccountTreeStateChange, _AssetsController_registerActionHandlers, _AssetsController_handleActiveChainsUpdate, _AssetsController_executeMiddlewares, _AssetsController_getNativeAssetMap, _AssetsController_isNativeAsset, _AssetsController_getAssetType, _AssetsController_resolveNativeAssetIds, _AssetsController_getNativeAssetIdsForEnabledChains, _AssetsController_getNativeAssetIdsForAccount, _AssetsController_ensureNativeBalancesDefaultZero, _AssetsController_ensureDefaultTrackedAssetsSeeded, _AssetsController_updateState, _AssetsController_getAssetsFromState, _AssetsController_shouldHideNativeToken, _AssetsController_tokenStandardToAssetType, _AssetsController_start, _AssetsController_stop, _AssetsController_subscribeAssets, _AssetsController_subscribeAssetsBalance, _AssetsController_subscribeRpcCustomAssetsSupplement, _AssetsController_unsubscribeBySubscriptionKey, _AssetsController_subscribeStakedBalance, _AssetsController_buildChainToAccountsMap, _AssetsController_subscribeDataSource, _AssetsController_unsubscribeDataSource, _AssetsController_buildDataRequest, _AssetsController_getEnabledChainsForAccount, _AssetsController_handleAccountGroupChanged, _AssetsController_handleEnabledNetworksChanged, _AssetsController_handleNetworkAdded, _AssetsController_refreshAssetsAfterNetworkChange;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.AssetsController = exports.getDefaultAssetsControllerState = void 0;
19
19
  const base_controller_1 = require("@metamask/base-controller");
@@ -306,7 +306,7 @@ class AssetsController extends base_controller_1.BaseController {
306
306
  messenger: this.messenger,
307
307
  queryApiClient,
308
308
  onActiveChainsUpdated: __classPrivateFieldGet(this, _AssetsController_onActiveChainsUpdated, "f"),
309
- isNativeAsset: (assetId) => __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_isNativeAsset).call(this, assetId),
309
+ getAssetType: (assetId) => __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getAssetType).call(this, assetId),
310
310
  }), "f");
311
311
  __classPrivateFieldSet(this, _AssetsController_accountsApiDataSource, new AccountsApiDataSource_1.AccountsApiDataSource({
312
312
  queryApiClient,
@@ -329,6 +329,7 @@ class AssetsController extends base_controller_1.BaseController {
329
329
  queryClient: queryApiClient.queryClient,
330
330
  ...rpcConfig,
331
331
  isOnboarded: rpcConfig.isOnboarded ?? isOnboarded,
332
+ getAssetType: (assetId) => __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getAssetType).call(this, assetId),
332
333
  }), "f");
333
334
  __classPrivateFieldSet(this, _AssetsController_stakedBalanceDataSource, new StakedBalanceDataSource_1.StakedBalanceDataSource({
334
335
  messenger: this.messenger,
@@ -340,6 +341,7 @@ class AssetsController extends base_controller_1.BaseController {
340
341
  getNativeAssetIds: () => {
341
342
  return __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetIdsForEnabledChains).call(this);
342
343
  },
344
+ getAssetType: (assetId) => __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getAssetType).call(this, assetId),
343
345
  }), "f");
344
346
  __classPrivateFieldSet(this, _AssetsController_priceDataSource, new PriceDataSource_1.PriceDataSource({
345
347
  queryApiClient,
@@ -1280,6 +1282,16 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
1280
1282
  return true;
1281
1283
  }
1282
1284
  return false;
1285
+ }, _AssetsController_getAssetType = function _AssetsController_getAssetType(assetId) {
1286
+ const parsed = (0, utils_1.parseCaipAssetType)(assetId);
1287
+ if (__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_isNativeAsset).call(this, assetId)) {
1288
+ return 'native';
1289
+ }
1290
+ if (parsed.chain.namespace === utils_1.KnownCaipNamespace.Solana &&
1291
+ parsed.assetNamespace === TokenDataSource_1.CaipAssetNamespace.Token) {
1292
+ return 'spl';
1293
+ }
1294
+ return 'erc20';
1283
1295
  }, _AssetsController_resolveNativeAssetIds = function _AssetsController_resolveNativeAssetIds(chains) {
1284
1296
  const nativeAssetMap = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetMap).call(this);
1285
1297
  const ids = [];
@@ -1409,15 +1421,27 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
1409
1421
  for (const [accountId, accountBalances] of Object.entries(normalizedResponse.assetsBalance)) {
1410
1422
  const previousBalances = previousState.assetsBalance[accountId] ?? {};
1411
1423
  const customAssetIds = state.customAssets[accountId] ?? [];
1412
- // Full: response is authoritative; preserve custom assets not in response.
1424
+ // Full: response is authoritative for the chains it covered;
1425
+ // balances for chains not in the response are preserved from
1426
+ // previous state so unsupported chains (e.g. Ink on AccountsAPI)
1427
+ // are never inadvertently reset to zero.
1413
1428
  // Merge: response overlays previous balances.
1414
- // Callers that fetch partial data (e.g. newly added chains) must set updateMode: 'merge'.
1415
1429
  const effective = mode === 'merge'
1416
1430
  ? { ...previousBalances, ...accountBalances }
1417
1431
  : (() => {
1418
- const next = {
1419
- ...accountBalances,
1420
- };
1432
+ // Determine which chain namespaces this response covers.
1433
+ const coveredChains = new Set(Object.keys(accountBalances).map((assetId) => assetId.split('/')[0]));
1434
+ // Start from previous balances, dropping only entries for
1435
+ // chains this response is authoritative over.
1436
+ const next = {};
1437
+ for (const [assetId, balance] of Object.entries(previousBalances)) {
1438
+ if (!coveredChains.has(assetId.split('/')[0])) {
1439
+ next[assetId] = balance;
1440
+ }
1441
+ }
1442
+ // Apply the response (authoritative for covered chains).
1443
+ Object.assign(next, accountBalances);
1444
+ // Preserve custom assets that the response omitted.
1421
1445
  for (const customId of customAssetIds) {
1422
1446
  if (!(customId in next)) {
1423
1447
  const prev = previousBalances[customId];