@metamask-previews/assets-controller 1.0.0-preview-e7b1aa6 → 1.0.0-preview-27e39dd44

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 (76) hide show
  1. package/CHANGELOG.md +0 -8
  2. package/dist/AssetsController.cjs +41 -109
  3. package/dist/AssetsController.cjs.map +1 -1
  4. package/dist/AssetsController.d.cts +2 -56
  5. package/dist/AssetsController.d.cts.map +1 -1
  6. package/dist/AssetsController.d.mts +2 -56
  7. package/dist/AssetsController.d.mts.map +1 -1
  8. package/dist/AssetsController.mjs +41 -109
  9. package/dist/AssetsController.mjs.map +1 -1
  10. package/dist/data-sources/AccountsApiDataSource.cjs +4 -61
  11. package/dist/data-sources/AccountsApiDataSource.cjs.map +1 -1
  12. package/dist/data-sources/AccountsApiDataSource.d.cts +3 -22
  13. package/dist/data-sources/AccountsApiDataSource.d.cts.map +1 -1
  14. package/dist/data-sources/AccountsApiDataSource.d.mts +3 -22
  15. package/dist/data-sources/AccountsApiDataSource.d.mts.map +1 -1
  16. package/dist/data-sources/AccountsApiDataSource.mjs +3 -59
  17. package/dist/data-sources/AccountsApiDataSource.mjs.map +1 -1
  18. package/dist/data-sources/PriceDataSource.cjs +1 -4
  19. package/dist/data-sources/PriceDataSource.cjs.map +1 -1
  20. package/dist/data-sources/PriceDataSource.d.cts +4 -8
  21. package/dist/data-sources/PriceDataSource.d.cts.map +1 -1
  22. package/dist/data-sources/PriceDataSource.d.mts +4 -8
  23. package/dist/data-sources/PriceDataSource.d.mts.map +1 -1
  24. package/dist/data-sources/PriceDataSource.mjs +1 -4
  25. package/dist/data-sources/PriceDataSource.mjs.map +1 -1
  26. package/dist/data-sources/RpcDataSource.cjs +9 -19
  27. package/dist/data-sources/RpcDataSource.cjs.map +1 -1
  28. package/dist/data-sources/RpcDataSource.d.cts +3 -8
  29. package/dist/data-sources/RpcDataSource.d.cts.map +1 -1
  30. package/dist/data-sources/RpcDataSource.d.mts +3 -8
  31. package/dist/data-sources/RpcDataSource.d.mts.map +1 -1
  32. package/dist/data-sources/RpcDataSource.mjs +9 -19
  33. package/dist/data-sources/RpcDataSource.mjs.map +1 -1
  34. package/dist/data-sources/TokenDataSource.cjs +0 -3
  35. package/dist/data-sources/TokenDataSource.cjs.map +1 -1
  36. package/dist/data-sources/TokenDataSource.d.cts +0 -1
  37. package/dist/data-sources/TokenDataSource.d.cts.map +1 -1
  38. package/dist/data-sources/TokenDataSource.d.mts +0 -1
  39. package/dist/data-sources/TokenDataSource.d.mts.map +1 -1
  40. package/dist/data-sources/TokenDataSource.mjs +0 -3
  41. package/dist/data-sources/TokenDataSource.mjs.map +1 -1
  42. package/dist/data-sources/evm-rpc-services/services/TokenDetector.cjs +0 -16
  43. package/dist/data-sources/evm-rpc-services/services/TokenDetector.cjs.map +1 -1
  44. package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.cts +1 -5
  45. package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.cts.map +1 -1
  46. package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.mts +1 -5
  47. package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.mts.map +1 -1
  48. package/dist/data-sources/evm-rpc-services/services/TokenDetector.mjs +0 -16
  49. package/dist/data-sources/evm-rpc-services/services/TokenDetector.mjs.map +1 -1
  50. package/dist/data-sources/evm-rpc-services/types/services.cjs.map +1 -1
  51. package/dist/data-sources/evm-rpc-services/types/services.d.cts +0 -4
  52. package/dist/data-sources/evm-rpc-services/types/services.d.cts.map +1 -1
  53. package/dist/data-sources/evm-rpc-services/types/services.d.mts +0 -4
  54. package/dist/data-sources/evm-rpc-services/types/services.d.mts.map +1 -1
  55. package/dist/data-sources/evm-rpc-services/types/services.mjs.map +1 -1
  56. package/dist/data-sources/index.cjs.map +1 -1
  57. package/dist/data-sources/index.d.cts +2 -2
  58. package/dist/data-sources/index.d.cts.map +1 -1
  59. package/dist/data-sources/index.d.mts +2 -2
  60. package/dist/data-sources/index.d.mts.map +1 -1
  61. package/dist/data-sources/index.mjs.map +1 -1
  62. package/dist/index.cjs.map +1 -1
  63. package/dist/index.d.cts +3 -3
  64. package/dist/index.d.cts.map +1 -1
  65. package/dist/index.d.mts +3 -3
  66. package/dist/index.d.mts.map +1 -1
  67. package/dist/index.mjs.map +1 -1
  68. package/dist/middlewares/DetectionMiddleware.cjs +0 -3
  69. package/dist/middlewares/DetectionMiddleware.cjs.map +1 -1
  70. package/dist/middlewares/DetectionMiddleware.d.cts +0 -1
  71. package/dist/middlewares/DetectionMiddleware.d.cts.map +1 -1
  72. package/dist/middlewares/DetectionMiddleware.d.mts +0 -1
  73. package/dist/middlewares/DetectionMiddleware.d.mts.map +1 -1
  74. package/dist/middlewares/DetectionMiddleware.mjs +0 -3
  75. package/dist/middlewares/DetectionMiddleware.mjs.map +1 -1
  76. package/package.json +1 -2
@@ -6,10 +6,7 @@ import type { KeyringControllerLockEvent, KeyringControllerUnlockEvent } from "@
6
6
  import type { InternalAccount } from "@metamask/keyring-internal-api";
7
7
  import type { Messenger } from "@metamask/messenger";
8
8
  import type { NetworkEnablementControllerGetStateAction, NetworkEnablementControllerEvents } from "@metamask/network-enablement-controller";
9
- import type { PreferencesControllerStateChangeEvent } from "@metamask/preferences-controller";
10
9
  import type { AssetsControllerMethodActions } from "./AssetsController-method-action-types.mjs";
11
- import type { AccountsApiDataSourceConfig } from "./data-sources/AccountsApiDataSource.mjs";
12
- import type { PriceDataSourceConfig } from "./data-sources/PriceDataSource.mjs";
13
10
  import type { RpcDataSourceConfig } from "./data-sources/RpcDataSource.mjs";
14
11
  import type { AccountId, AssetPreferences, ChainId, Caip19AssetId, AssetMetadata, AssetPrice, AssetBalance, AssetType, DataType, DataRequest, DataResponse, Asset } from "./types.mjs";
15
12
  declare const CONTROLLER_NAME: "AssetsController";
@@ -80,24 +77,8 @@ export type AssetsControllerAssetsDetectedEvent = {
80
77
  };
81
78
  export type AssetsControllerEvents = AssetsControllerStateChangeEvent | AssetsControllerBalanceChangedEvent | AssetsControllerPriceChangedEvent | AssetsControllerAssetsDetectedEvent;
82
79
  type AllowedActions = AccountTreeControllerGetAccountsFromSelectedAccountGroupAction | NetworkEnablementControllerGetStateAction | BackendWebSocketServiceActions;
83
- type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent | NetworkEnablementControllerEvents | BackendWebSocketServiceEvents | KeyringControllerLockEvent | KeyringControllerUnlockEvent | PreferencesControllerStateChangeEvent;
80
+ type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent | NetworkEnablementControllerEvents | BackendWebSocketServiceEvents | KeyringControllerLockEvent | KeyringControllerUnlockEvent;
84
81
  export type AssetsControllerMessenger = Messenger<typeof CONTROLLER_NAME, AssetsControllerActions | AllowedActions, AssetsControllerEvents | AllowedEvents>;
85
- /**
86
- * Payload for the first init/fetch MetaMetrics event.
87
- * Passed to the optional trackMetaMetricsEvent callback when the initial
88
- * asset fetch completes after unlock or app open.
89
- */
90
- export type AssetsControllerFirstInitFetchMetaMetricsPayload = {
91
- /** Duration of the first init fetch in milliseconds (wall-clock). */
92
- durationMs: number;
93
- /** Chain IDs requested in the fetch (e.g. ['eip155:1', 'eip155:137']). */
94
- chainIds: string[];
95
- /**
96
- * Exclusive latency in ms per data source (time spent in that source only).
97
- * Sum of values approximates durationMs. Order: same as middleware chain.
98
- */
99
- durationByDataSource: Record<string, number>;
100
- };
101
82
  export type AssetsControllerOptions = {
102
83
  messenger: AssetsControllerMessenger;
103
84
  state?: Partial<AssetsControllerState>;
@@ -105,23 +86,6 @@ export type AssetsControllerOptions = {
105
86
  defaultUpdateInterval?: number;
106
87
  /** Function to determine if the controller is enabled. Defaults to true. */
107
88
  isEnabled?: () => boolean;
108
- /**
109
- * Getter for basic functionality (matches the "Basic functionality" setting in the UI).
110
- * When it returns true, internet services are on: token/price APIs are used for metadata, price,
111
- * and price subscription. When false, only RPC is used (no token/price APIs).
112
- * No value is stored; the getter is invoked when needed.
113
- * Defaults to () => true when not provided (APIs enabled).
114
- */
115
- isBasicFunctionality?: () => boolean;
116
- /**
117
- * Called by the controller with an onChange callback. The consumer subscribes to its own
118
- * basic-functionality source (e.g. PreferencesController:stateChange in extension, or a
119
- * different mechanism in mobile) and invokes onChange(isBasic) when the value changes.
120
- * The controller will then refresh its subscriptions. May return an unsubscribe function
121
- * called on controller destroy. Optional; when omitted, basic-functionality changes are not
122
- * subscribed to (e.g. host can notify via root messenger or another path).
123
- */
124
- subscribeToBasicFunctionalityChange?: (onChange: (isBasic: boolean) => void) => void | (() => void);
125
89
  /**
126
90
  * API client for balance/price/metadata. The controller instantiates data sources
127
91
  * and uses them directly when this is provided.
@@ -129,15 +93,6 @@ export type AssetsControllerOptions = {
129
93
  queryApiClient: ApiPlatformClient;
130
94
  /** Optional configuration for RpcDataSource. */
131
95
  rpcDataSourceConfig?: RpcDataSourceConfig;
132
- /**
133
- * Optional callback invoked when the first init/fetch completes (e.g. after unlock).
134
- * Use this to track first init fetch duration in MetaMetrics.
135
- */
136
- trackMetaMetricsEvent?: (payload: AssetsControllerFirstInitFetchMetaMetricsPayload) => void;
137
- /** Optional configuration for AccountsApiDataSource. */
138
- accountsApiDataSourceConfig?: AccountsApiDataSourceConfig;
139
- /** Optional configuration for PriceDataSource. */
140
- priceDataSourceConfig?: PriceDataSourceConfig;
141
96
  };
142
97
  /**
143
98
  * AssetsController provides a unified interface for managing asset balances
@@ -166,7 +121,7 @@ export type AssetsControllerOptions = {
166
121
  */
167
122
  export declare class AssetsController extends BaseController<typeof CONTROLLER_NAME, AssetsControllerState, AssetsControllerMessenger> {
168
123
  #private;
169
- constructor({ messenger, state, defaultUpdateInterval, isEnabled, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trackMetaMetricsEvent, accountsApiDataSourceConfig, priceDataSourceConfig, }: AssetsControllerOptions);
124
+ constructor({ messenger, state, defaultUpdateInterval, isEnabled, queryApiClient, rpcDataSourceConfig, }: AssetsControllerOptions);
170
125
  /**
171
126
  * Handle when a data source's supported chains change.
172
127
  * Used to refresh balance subscriptions and run a one-time fetch when a new chain is supported.
@@ -251,15 +206,6 @@ export declare class AssetsController extends BaseController<typeof CONTROLLER_N
251
206
  * Unsubscribe from price updates.
252
207
  */
253
208
  unsubscribeAssetsPrice(): void;
254
- /**
255
- * Handle basic functionality toggle change. Call this from the consumer (extension or mobile)
256
- * when the user changes the "Basic functionality" setting. Refreshes subscriptions so the
257
- * current {@link AssetsControllerOptions.isBasicFunctionality} getter is used (true = APIs on,
258
- * false = RPC only).
259
- *
260
- * @param _isBasic - The new value (for call-site clarity; the getter is the source of truth).
261
- */
262
- handleBasicFunctionalityChange(_isBasic: boolean): void;
263
209
  /**
264
210
  * Handle assets updated from a data source.
265
211
  * Called via the onAssetsUpdate callback passed in SubscriptionRequest when the controller subscribes to a data source.
@@ -1 +1 @@
1
- {"version":3,"file":"AssetsController.d.mts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AssetsController.d.mts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
10
10
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
11
11
  };
12
- var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trackMetaMetricsEvent, _AssetsController_firstInitFetchReported, _AssetsController_controllerMutex, _AssetsController_activeSubscriptions, _AssetsController_enabledChains, _AssetsController_selectedAccounts_get, _AssetsController_backendWebsocketDataSource, _AssetsController_accountsApiDataSource, _AssetsController_snapDataSource, _AssetsController_rpcDataSource, _AssetsController_allBalanceDataSources_get, _AssetsController_priceDataSource, _AssetsController_detectionMiddleware, _AssetsController_tokenDataSource, _AssetsController_unsubscribeBasicFunctionality, _AssetsController_initializeState, _AssetsController_extractEnabledChains, _AssetsController_normalizeChainReference, _AssetsController_subscribeToEvents, _AssetsController_registerActionHandlers, _AssetsController_executeMiddlewares, _AssetsController_updateState, _AssetsController_getAssetsFromState, _AssetsController_tokenStandardToAssetType, _AssetsController_start, _AssetsController_stop, _AssetsController_subscribeAssets, _AssetsController_subscribeAssetsBalance, _AssetsController_buildChainToAccountsMap, _AssetsController_subscribeDataSource, _AssetsController_unsubscribeDataSource, _AssetsController_buildDataRequest, _AssetsController_getEnabledChainsForAccount, _AssetsController_handleAccountGroupChanged, _AssetsController_handleEnabledNetworksChanged;
12
+ var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_defaultUpdateInterval, _AssetsController_controllerMutex, _AssetsController_activeSubscriptions, _AssetsController_enabledChains, _AssetsController_selectedAccounts_get, _AssetsController_backendWebsocketDataSource, _AssetsController_accountsApiDataSource, _AssetsController_snapDataSource, _AssetsController_rpcDataSource, _AssetsController_subscriptionBalanceDataSources_get, _AssetsController_priceDataSource, _AssetsController_detectionMiddleware, _AssetsController_tokenDataSource, _AssetsController_initializeState, _AssetsController_extractEnabledChains, _AssetsController_normalizeChainReference, _AssetsController_subscribeToEvents, _AssetsController_registerActionHandlers, _AssetsController_executeMiddlewares, _AssetsController_updateState, _AssetsController_getAssetsFromState, _AssetsController_tokenStandardToAssetType, _AssetsController_start, _AssetsController_stop, _AssetsController_subscribeAssets, _AssetsController_subscribeAssetsBalance, _AssetsController_buildChainToAccountsMap, _AssetsController_subscribeDataSource, _AssetsController_unsubscribeDataSource, _AssetsController_buildDataRequest, _AssetsController_getEnabledChainsForAccount, _AssetsController_handleAccountGroupChanged, _AssetsController_handleEnabledNetworksChanged;
13
13
  import { BaseController } from "@metamask/base-controller";
14
14
  import { parseCaipAssetType } from "@metamask/utils";
15
15
  import { Mutex } from "async-mutex";
@@ -176,7 +176,7 @@ function normalizeResponse(response) {
176
176
  * - The controller does NOT manage polling - it simply receives pushed updates
177
177
  */
178
178
  export class AssetsController extends BaseController {
179
- constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trackMetaMetricsEvent, accountsApiDataSourceConfig, priceDataSourceConfig, }) {
179
+ constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, queryApiClient, rpcDataSourceConfig, }) {
180
180
  super({
181
181
  name: CONTROLLER_NAME,
182
182
  messenger,
@@ -189,14 +189,8 @@ export class AssetsController extends BaseController {
189
189
  _AssetsController_instances.add(this);
190
190
  /** Whether the controller is enabled */
191
191
  _AssetsController_isEnabled.set(this, void 0);
192
- /** Getter for basic functionality (only balance fetch/subscribe use RPC; token/price API not used). No attribute stored. */
193
- _AssetsController_isBasicFunctionality.set(this, void 0);
194
192
  /** Default update interval hint passed to data sources */
195
193
  _AssetsController_defaultUpdateInterval.set(this, void 0);
196
- /** Optional callback for first init/fetch MetaMetrics (duration). */
197
- _AssetsController_trackMetaMetricsEvent.set(this, void 0);
198
- /** Whether we have already reported first init fetch for this session (reset on #stop). */
199
- _AssetsController_firstInitFetchReported.set(this, false);
200
194
  _AssetsController_controllerMutex.set(this, new Mutex());
201
195
  /**
202
196
  * Active balance subscriptions keyed by account ID.
@@ -214,11 +208,8 @@ export class AssetsController extends BaseController {
214
208
  _AssetsController_priceDataSource.set(this, void 0);
215
209
  _AssetsController_detectionMiddleware.set(this, void 0);
216
210
  _AssetsController_tokenDataSource.set(this, void 0);
217
- _AssetsController_unsubscribeBasicFunctionality.set(this, null);
218
211
  __classPrivateFieldSet(this, _AssetsController_isEnabled, isEnabled(), "f");
219
- __classPrivateFieldSet(this, _AssetsController_isBasicFunctionality, isBasicFunctionality ?? (() => true), "f");
220
212
  __classPrivateFieldSet(this, _AssetsController_defaultUpdateInterval, defaultUpdateInterval, "f");
221
- __classPrivateFieldSet(this, _AssetsController_trackMetaMetricsEvent, trackMetaMetricsEvent, "f");
222
213
  const rpcConfig = rpcDataSourceConfig ?? {};
223
214
  const onActiveChainsUpdated = (dataSourceName, chains, previousChains) => this.handleActiveChainsUpdate(dataSourceName, chains, previousChains);
224
215
  __classPrivateFieldSet(this, _AssetsController_backendWebsocketDataSource, new BackendWebsocketDataSource({
@@ -229,7 +220,6 @@ export class AssetsController extends BaseController {
229
220
  __classPrivateFieldSet(this, _AssetsController_accountsApiDataSource, new AccountsApiDataSource({
230
221
  queryApiClient,
231
222
  onActiveChainsUpdated,
232
- ...accountsApiDataSourceConfig,
233
223
  }), "f");
234
224
  __classPrivateFieldSet(this, _AssetsController_snapDataSource, new SnapDataSource({
235
225
  messenger: this.messenger,
@@ -245,7 +235,6 @@ export class AssetsController extends BaseController {
245
235
  }), "f");
246
236
  __classPrivateFieldSet(this, _AssetsController_priceDataSource, new PriceDataSource({
247
237
  queryApiClient,
248
- ...priceDataSourceConfig,
249
238
  }), "f");
250
239
  __classPrivateFieldSet(this, _AssetsController_detectionMiddleware, new DetectionMiddleware(), "f");
251
240
  if (!__classPrivateFieldGet(this, _AssetsController_isEnabled, "f")) {
@@ -258,14 +247,6 @@ export class AssetsController extends BaseController {
258
247
  __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_initializeState).call(this);
259
248
  __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeToEvents).call(this);
260
249
  __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_registerActionHandlers).call(this);
261
- // Subscribe to basic-functionality changes after construction so a synchronous
262
- // onChange during subscribe cannot run before data sources are initialized.
263
- if (subscribeToBasicFunctionalityChange) {
264
- const unsubscribe = subscribeToBasicFunctionalityChange((isBasic) => this.handleBasicFunctionalityChange(isBasic));
265
- if (typeof unsubscribe === 'function') {
266
- __classPrivateFieldSet(this, _AssetsController_unsubscribeBasicFunctionality, unsubscribe, "f");
267
- }
268
- }
269
250
  }
270
251
  // ============================================================================
271
252
  // DATA SOURCE CHAIN MANAGEMENT
@@ -325,34 +306,21 @@ export class AssetsController extends BaseController {
325
306
  customAssets.push(...accountCustomAssets);
326
307
  }
327
308
  if (options?.forceUpdate) {
328
- const startTime = Date.now();
329
309
  const request = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_buildDataRequest).call(this, accounts, chainIds, {
330
310
  assetTypes,
331
311
  dataTypes,
332
312
  customAssets: customAssets.length > 0 ? customAssets : undefined,
333
313
  forceUpdate: true,
334
314
  });
335
- const sources = __classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this)
336
- ? [
337
- __classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f"),
338
- __classPrivateFieldGet(this, _AssetsController_snapDataSource, "f"),
339
- __classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f"),
340
- __classPrivateFieldGet(this, _AssetsController_detectionMiddleware, "f"),
341
- __classPrivateFieldGet(this, _AssetsController_tokenDataSource, "f"),
342
- __classPrivateFieldGet(this, _AssetsController_priceDataSource, "f"),
343
- ]
344
- : [__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f"), __classPrivateFieldGet(this, _AssetsController_detectionMiddleware, "f")];
345
- const { response, durationByDataSource } = await __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_executeMiddlewares).call(this, sources, request);
315
+ const response = await __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_executeMiddlewares).call(this, [
316
+ __classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f").assetsMiddleware,
317
+ __classPrivateFieldGet(this, _AssetsController_snapDataSource, "f").assetsMiddleware,
318
+ __classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f").assetsMiddleware,
319
+ __classPrivateFieldGet(this, _AssetsController_detectionMiddleware, "f").assetsMiddleware,
320
+ __classPrivateFieldGet(this, _AssetsController_tokenDataSource, "f").assetsMiddleware,
321
+ __classPrivateFieldGet(this, _AssetsController_priceDataSource, "f").assetsMiddleware,
322
+ ], request);
346
323
  await __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateState).call(this, response);
347
- if (__classPrivateFieldGet(this, _AssetsController_trackMetaMetricsEvent, "f") && !__classPrivateFieldGet(this, _AssetsController_firstInitFetchReported, "f")) {
348
- __classPrivateFieldSet(this, _AssetsController_firstInitFetchReported, true, "f");
349
- const durationMs = Date.now() - startTime;
350
- __classPrivateFieldGet(this, _AssetsController_trackMetaMetricsEvent, "f").call(this, {
351
- durationMs,
352
- chainIds,
353
- durationByDataSource,
354
- });
355
- }
356
324
  }
357
325
  return __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getAssetsFromState).call(this, accounts, chainIds, assetTypes);
358
326
  }
@@ -518,9 +486,6 @@ export class AssetsController extends BaseController {
518
486
  * @param options.updateInterval - Polling interval in ms.
519
487
  */
520
488
  subscribeAssetsPrice(accounts, chainIds, options = {}) {
521
- if (!__classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this)) {
522
- return;
523
- }
524
489
  const { updateInterval = __classPrivateFieldGet(this, _AssetsController_defaultUpdateInterval, "f") } = options;
525
490
  const subscriptionKey = 'ds:PriceDataSource';
526
491
  const existingSubscription = __classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").get(subscriptionKey);
@@ -560,18 +525,6 @@ export class AssetsController extends BaseController {
560
525
  __classPrivateFieldGet(this, _AssetsController_priceDataSource, "f").unsubscribe(subscriptionKey).catch(console.error);
561
526
  existingSubscription.unsubscribe();
562
527
  }
563
- /**
564
- * Handle basic functionality toggle change. Call this from the consumer (extension or mobile)
565
- * when the user changes the "Basic functionality" setting. Refreshes subscriptions so the
566
- * current {@link AssetsControllerOptions.isBasicFunctionality} getter is used (true = APIs on,
567
- * false = RPC only).
568
- *
569
- * @param _isBasic - The new value (for call-site clarity; the getter is the source of truth).
570
- */
571
- handleBasicFunctionalityChange(_isBasic) {
572
- __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_stop).call(this);
573
- __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
574
- }
575
528
  /**
576
529
  * Handle assets updated from a data source.
577
530
  * Called via the onAssetsUpdate callback passed in SubscriptionRequest when the controller subscribes to a data source.
@@ -589,7 +542,11 @@ export class AssetsController extends BaseController {
589
542
  });
590
543
  // Run through enrichment middlewares (Event Stack: Detection → Token → Price)
591
544
  // Include 'metadata' in dataTypes so TokenDataSource runs to enrich detected assets
592
- const { response: enrichedResponse } = await __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_executeMiddlewares).call(this, [__classPrivateFieldGet(this, _AssetsController_detectionMiddleware, "f"), __classPrivateFieldGet(this, _AssetsController_tokenDataSource, "f"), __classPrivateFieldGet(this, _AssetsController_priceDataSource, "f")], request ?? {
545
+ const enrichedResponse = await __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_executeMiddlewares).call(this, [
546
+ __classPrivateFieldGet(this, _AssetsController_detectionMiddleware, "f").assetsMiddleware,
547
+ __classPrivateFieldGet(this, _AssetsController_tokenDataSource, "f").assetsMiddleware,
548
+ __classPrivateFieldGet(this, _AssetsController_priceDataSource, "f").assetsMiddleware,
549
+ ], request ?? {
593
550
  accountsWithSupportedChains: [],
594
551
  chainIds: [],
595
552
  dataTypes: ['balance', 'metadata', 'price'],
@@ -601,20 +558,21 @@ export class AssetsController extends BaseController {
601
558
  // ============================================================================
602
559
  destroy() {
603
560
  log('Destroying AssetsController', {
604
- dataSourceCount: __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_allBalanceDataSources_get).length,
561
+ dataSourceCount: __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_subscriptionBalanceDataSources_get).length,
605
562
  subscriptionCount: __classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").size,
606
563
  });
607
564
  // Destroy instantiated data sources
608
565
  __classPrivateFieldGet(this, _AssetsController_backendWebsocketDataSource, "f")?.destroy?.();
609
566
  __classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f")?.destroy?.();
610
567
  __classPrivateFieldGet(this, _AssetsController_snapDataSource, "f")?.destroy?.();
611
- __classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f")?.destroy?.();
568
+ if (__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f") &&
569
+ 'destroy' in __classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f") &&
570
+ typeof __classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f").destroy ===
571
+ 'function') {
572
+ __classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f").destroy();
573
+ }
612
574
  // Stop all active subscriptions
613
575
  __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_stop).call(this);
614
- if (__classPrivateFieldGet(this, _AssetsController_unsubscribeBasicFunctionality, "f")) {
615
- __classPrivateFieldGet(this, _AssetsController_unsubscribeBasicFunctionality, "f").call(this);
616
- __classPrivateFieldSet(this, _AssetsController_unsubscribeBasicFunctionality, null, "f");
617
- }
618
576
  // Unregister action handlers
619
577
  this.messenger.unregisterActionHandler('AssetsController:getAssets');
620
578
  this.messenger.unregisterActionHandler('AssetsController:getAssetsBalance');
@@ -627,9 +585,9 @@ export class AssetsController extends BaseController {
627
585
  this.messenger.unregisterActionHandler('AssetsController:unhideAsset');
628
586
  }
629
587
  }
630
- _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trackMetaMetricsEvent = new WeakMap(), _AssetsController_firstInitFetchReported = new WeakMap(), _AssetsController_controllerMutex = new WeakMap(), _AssetsController_activeSubscriptions = new WeakMap(), _AssetsController_enabledChains = new WeakMap(), _AssetsController_backendWebsocketDataSource = new WeakMap(), _AssetsController_accountsApiDataSource = new WeakMap(), _AssetsController_snapDataSource = new WeakMap(), _AssetsController_rpcDataSource = new WeakMap(), _AssetsController_priceDataSource = new WeakMap(), _AssetsController_detectionMiddleware = new WeakMap(), _AssetsController_tokenDataSource = new WeakMap(), _AssetsController_unsubscribeBasicFunctionality = new WeakMap(), _AssetsController_instances = new WeakSet(), _AssetsController_selectedAccounts_get = function _AssetsController_selectedAccounts_get() {
588
+ _AssetsController_isEnabled = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_controllerMutex = new WeakMap(), _AssetsController_activeSubscriptions = new WeakMap(), _AssetsController_enabledChains = new WeakMap(), _AssetsController_backendWebsocketDataSource = new WeakMap(), _AssetsController_accountsApiDataSource = new WeakMap(), _AssetsController_snapDataSource = new WeakMap(), _AssetsController_rpcDataSource = new WeakMap(), _AssetsController_priceDataSource = new WeakMap(), _AssetsController_detectionMiddleware = new WeakMap(), _AssetsController_tokenDataSource = new WeakMap(), _AssetsController_instances = new WeakSet(), _AssetsController_selectedAccounts_get = function _AssetsController_selectedAccounts_get() {
631
589
  return this.messenger.call('AccountTreeController:getAccountsFromSelectedAccountGroup');
632
- }, _AssetsController_allBalanceDataSources_get = function _AssetsController_allBalanceDataSources_get() {
590
+ }, _AssetsController_subscriptionBalanceDataSources_get = function _AssetsController_subscriptionBalanceDataSources_get() {
633
591
  return [
634
592
  __classPrivateFieldGet(this, _AssetsController_backendWebsocketDataSource, "f"),
635
593
  __classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f"),
@@ -688,27 +646,14 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
688
646
  // ============================================================================
689
647
  /**
690
648
  * Execute middlewares with request/response context.
691
- * Returns response and exclusive duration per source (sum ≈ wall time).
692
649
  *
693
- * @param sources - Data sources or middlewares with getName() and assetsMiddleware (executed in order).
650
+ * @param middlewares - Middlewares to execute in order.
694
651
  * @param request - The data request.
695
652
  * @param initialResponse - Optional initial response (for enriching existing data).
696
- * @returns Response and durationByDataSource (exclusive ms per source name).
653
+ * @returns The final DataResponse after all middlewares have processed.
697
654
  */
698
- async function _AssetsController_executeMiddlewares(sources, request, initialResponse = {}) {
699
- const names = sources.map((source) => source.getName());
700
- const middlewares = sources.map((source) => source.assetsMiddleware);
701
- const inclusive = [];
702
- const wrapped = middlewares.map((middleware, i) => (async (ctx, next) => {
703
- const start = Date.now();
704
- try {
705
- return await middleware(ctx, next);
706
- }
707
- finally {
708
- inclusive[i] = Date.now() - start;
709
- }
710
- }));
711
- const chain = wrapped.reduceRight((next, middleware) => async (ctx) => {
655
+ async function _AssetsController_executeMiddlewares(middlewares, request, initialResponse = {}) {
656
+ const chain = middlewares.reduceRight((next, middleware) => async (ctx) => {
712
657
  try {
713
658
  return await middleware(ctx, next);
714
659
  }
@@ -722,16 +667,7 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
722
667
  response: initialResponse,
723
668
  getAssetsState: () => this.state,
724
669
  });
725
- const durationByDataSource = {};
726
- for (let i = 0; i < inclusive.length; i++) {
727
- const nextInc = i + 1 < inclusive.length ? (inclusive[i + 1] ?? 0) : 0;
728
- const exclusive = Math.max(0, (inclusive[i] ?? 0) - nextInc);
729
- const name = names[i];
730
- if (name !== undefined) {
731
- durationByDataSource[name] = exclusive;
732
- }
733
- }
734
- return { response: result.response, durationByDataSource };
670
+ return result.response;
735
671
  }, _AssetsController_updateState =
736
672
  // ============================================================================
737
673
  // STATE MANAGEMENT
@@ -926,29 +862,29 @@ async function _AssetsController_updateState(response) {
926
862
  enabledChainCount: __classPrivateFieldGet(this, _AssetsController_enabledChains, "f").size,
927
863
  });
928
864
  __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
929
- this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), {
930
- chainIds: [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")],
931
- forceUpdate: true,
932
- }).catch((error) => {
933
- log('Failed to fetch assets', error);
934
- });
865
+ if (__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get).length > 0) {
866
+ this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), {
867
+ chainIds: [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")],
868
+ forceUpdate: true,
869
+ }).catch((error) => {
870
+ log('Failed to fetch assets', error);
871
+ });
872
+ }
935
873
  }, _AssetsController_stop = function _AssetsController_stop() {
936
874
  log('Stopping asset tracking', {
937
875
  activeSubscriptionCount: __classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").size,
938
876
  hasPriceSubscription: __classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").has('ds:PriceDataSource'),
939
877
  });
940
- __classPrivateFieldSet(this, _AssetsController_firstInitFetchReported, false, "f");
941
878
  // Stop price subscription first (uses direct messenger call)
942
879
  this.unsubscribeAssetsPrice();
943
880
  // Stop balance subscriptions by properly notifying data sources via messenger
944
- // This ensures data sources stop their polling timers.
945
- // Use #allBalanceDataSources so we unsubscribe from every source that may have
946
- // been subscribed (e.g. when switching from full to basic functionality).
881
+ // This ensures data sources stop their polling timers
882
+ // Convert to array first to avoid modifying map during iteration
947
883
  const subscriptionKeys = [...__classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").keys()];
948
884
  for (const subscriptionKey of subscriptionKeys) {
949
885
  if (subscriptionKey.startsWith('ds:')) {
950
886
  const sourceId = subscriptionKey.slice(3);
951
- const source = __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_allBalanceDataSources_get).find((ds) => ds.getName() === sourceId);
887
+ const source = __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_subscriptionBalanceDataSources_get).find((ds) => ds.getName() === sourceId);
952
888
  if (source) {
953
889
  __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_unsubscribeDataSource).call(this, source);
954
890
  }
@@ -968,11 +904,7 @@ async function _AssetsController_updateState(response) {
968
904
  }, _AssetsController_subscribeAssetsBalance = function _AssetsController_subscribeAssetsBalance(accounts, chainIds) {
969
905
  const chainToAccounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_buildChainToAccountsMap).call(this, accounts, new Set(chainIds));
970
906
  const remainingChains = new Set(chainToAccounts.keys());
971
- // When basic functionality is on (getter true), use all balance data sources; when off (getter false), RPC only.
972
- const balanceDataSources = __classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this)
973
- ? __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_allBalanceDataSources_get)
974
- : [__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f")];
975
- for (const source of balanceDataSources) {
907
+ for (const source of __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_subscriptionBalanceDataSources_get)) {
976
908
  const availableChains = new Set(source.getActiveChainsSync());
977
909
  const assignedChains = [];
978
910
  for (const chainId of remainingChains) {