@metamask-previews/assets-controller 2.4.0-preview-3685bfb → 2.4.0-preview-45f35b773
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.
- package/CHANGELOG.md +5 -0
- package/dist/AssetsController.cjs +26 -12
- package/dist/AssetsController.cjs.map +1 -1
- package/dist/AssetsController.d.cts +6 -20
- package/dist/AssetsController.d.cts.map +1 -1
- package/dist/AssetsController.d.mts +6 -20
- package/dist/AssetsController.d.mts.map +1 -1
- package/dist/AssetsController.mjs +26 -12
- package/dist/AssetsController.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/middlewares/ParallelMiddleware.cjs +56 -16
- package/dist/middlewares/ParallelMiddleware.cjs.map +1 -1
- package/dist/middlewares/ParallelMiddleware.d.cts +3 -7
- package/dist/middlewares/ParallelMiddleware.d.cts.map +1 -1
- package/dist/middlewares/ParallelMiddleware.d.mts +3 -7
- package/dist/middlewares/ParallelMiddleware.d.mts.map +1 -1
- package/dist/middlewares/ParallelMiddleware.mjs +56 -16
- package/dist/middlewares/ParallelMiddleware.mjs.map +1 -1
- package/dist/middlewares/index.cjs.map +1 -1
- package/dist/middlewares/index.d.cts +2 -1
- package/dist/middlewares/index.d.cts.map +1 -1
- package/dist/middlewares/index.d.mts +2 -1
- package/dist/middlewares/index.d.mts.map +1 -1
- package/dist/middlewares/index.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +15 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +15 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,8 +7,13 @@ 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
|
+
- Per-data-source latency inside parallel middlewares: `durationByDataSource` now includes entries such as `ParallelMiddleware.TokenDataSource`, `ParallelMiddleware.PriceDataSource`, and `ParallelBalanceMiddleware.<SourceName>` (ms), so traces can see which internal sources contributed to `ParallelMiddleware` and `ParallelBalanceMiddleware` timings.
|
|
13
|
+
|
|
10
14
|
### Changed
|
|
11
15
|
|
|
16
|
+
- **BREAKING:** First-init-fetch measurement moved from MetaMetrics to Sentry. Option `trackMetaMetricsEvent` is replaced by `trace: TraceCallback`. Type `AssetsControllerFirstInitFetchMetaMetricsPayload` is removed; trace request data is not typed in this package. ([#8147](https://github.com/MetaMask/core/pull/8147))
|
|
12
17
|
- `TokenDataSource` now always includes native token asset IDs (from `NetworkEnablementController.nativeAssetIdentifiers`) in metadata fetch calls, ensuring native tokens always have up-to-date metadata ([#8227](https://github.com/MetaMask/core/pull/8227))
|
|
13
18
|
- `TokenDataSource` now filters out non-native tokens with fewer than 3 occurrences from metadata responses, and also removes their balances and detected asset entries, to prevent spam tokens from being stored in state ([#8227](https://github.com/MetaMask/core/pull/8227))
|
|
14
19
|
- `TokenDataSource` now requests `includeOccurrences` when fetching v3 asset metadata ([#8227](https://github.com/MetaMask/core/pull/8227))
|
|
@@ -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,
|
|
16
|
+
var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trace, _AssetsController_firstInitFetchReported, _AssetsController_uiOpen, _AssetsController_keyringUnlocked, _AssetsController_controllerMutex, _AssetsController_activeSubscriptions, _AssetsController_enabledChains, _AssetsController_selectedAccounts_get, _AssetsController_backendWebsocketDataSource, _AssetsController_accountsApiDataSource, _AssetsController_snapDataSource, _AssetsController_rpcDataSource, _AssetsController_stakedBalanceDataSource, _AssetsController_allBalanceDataSources_get, _AssetsController_priceDataSource, _AssetsController_detectionMiddleware, _AssetsController_tokenDataSource, _AssetsController_unsubscribeBasicFunctionality, _AssetsController_onActiveChainsUpdated, _AssetsController_initializeState, _AssetsController_extractEnabledChains, _AssetsController_normalizeChainReference, _AssetsController_subscribeToEvents, _AssetsController_updateActive, _AssetsController_registerActionHandlers, _AssetsController_handleActiveChainsUpdate, _AssetsController_executeMiddlewares, _AssetsController_resolveNativeAssetIds, _AssetsController_getNativeAssetIdsForEnabledChains, _AssetsController_getNativeAssetIdsForAccount, _AssetsController_ensureNativeBalancesDefaultZero, _AssetsController_updateState, _AssetsController_getAssetsFromState, _AssetsController_tokenStandardToAssetType, _AssetsController_start, _AssetsController_stop, _AssetsController_subscribeAssets, _AssetsController_subscribeAssetsBalance, _AssetsController_subscribeStakedBalance, _AssetsController_buildChainToAccountsMap, _AssetsController_subscribeDataSource, _AssetsController_unsubscribeDataSource, _AssetsController_buildDataRequest, _AssetsController_getEnabledChainsForAccount, _AssetsController_handleAccountGroupChanged, _AssetsController_handleEnabledNetworksChanged;
|
|
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");
|
|
@@ -199,7 +199,7 @@ function normalizeResponse(response) {
|
|
|
199
199
|
* - The controller does NOT manage polling - it simply receives pushed updates
|
|
200
200
|
*/
|
|
201
201
|
class AssetsController extends base_controller_1.BaseController {
|
|
202
|
-
constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig,
|
|
202
|
+
constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, }) {
|
|
203
203
|
super({
|
|
204
204
|
name: CONTROLLER_NAME,
|
|
205
205
|
messenger,
|
|
@@ -216,8 +216,8 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
216
216
|
_AssetsController_isBasicFunctionality.set(this, void 0);
|
|
217
217
|
/** Default update interval hint passed to data sources */
|
|
218
218
|
_AssetsController_defaultUpdateInterval.set(this, void 0);
|
|
219
|
-
/** Optional callback for first init/fetch
|
|
220
|
-
|
|
219
|
+
/** Optional trace callback for first init/fetch measurement (duration). */
|
|
220
|
+
_AssetsController_trace.set(this, void 0);
|
|
221
221
|
/** Whether we have already reported first init fetch for this session (reset on #stop). */
|
|
222
222
|
_AssetsController_firstInitFetchReported.set(this, false);
|
|
223
223
|
/** Whether the client (UI) is open. Combined with #keyringUnlocked for #updateActive. */
|
|
@@ -247,7 +247,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
247
247
|
__classPrivateFieldSet(this, _AssetsController_isEnabled, isEnabled(), "f");
|
|
248
248
|
__classPrivateFieldSet(this, _AssetsController_isBasicFunctionality, isBasicFunctionality ?? (() => true), "f");
|
|
249
249
|
__classPrivateFieldSet(this, _AssetsController_defaultUpdateInterval, defaultUpdateInterval, "f");
|
|
250
|
-
__classPrivateFieldSet(this,
|
|
250
|
+
__classPrivateFieldSet(this, _AssetsController_trace, trace, "f");
|
|
251
251
|
const rpcConfig = rpcDataSourceConfig ?? {};
|
|
252
252
|
__classPrivateFieldSet(this, _AssetsController_onActiveChainsUpdated, (dataSourceName, chains, previousChains) => {
|
|
253
253
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_handleActiveChainsUpdate).call(this, dataSourceName, chains, previousChains);
|
|
@@ -369,14 +369,23 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
369
369
|
options.chainIds.length < __classPrivateFieldGet(this, _AssetsController_enabledChains, "f").size;
|
|
370
370
|
const updateMode = options?.updateMode ?? (isPartialChainFetch ? 'merge' : 'full');
|
|
371
371
|
await __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateState).call(this, { ...response, updateMode });
|
|
372
|
-
if (__classPrivateFieldGet(this,
|
|
372
|
+
if (__classPrivateFieldGet(this, _AssetsController_trace, "f") && !__classPrivateFieldGet(this, _AssetsController_firstInitFetchReported, "f")) {
|
|
373
373
|
__classPrivateFieldSet(this, _AssetsController_firstInitFetchReported, true, "f");
|
|
374
374
|
const durationMs = Date.now() - startTime;
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
375
|
+
try {
|
|
376
|
+
await __classPrivateFieldGet(this, _AssetsController_trace, "f").call(this, {
|
|
377
|
+
name: 'AssetsController First Init Fetch',
|
|
378
|
+
data: {
|
|
379
|
+
duration_ms: durationMs,
|
|
380
|
+
chain_ids: JSON.stringify(chainIds),
|
|
381
|
+
...durationByDataSource,
|
|
382
|
+
},
|
|
383
|
+
tags: { controller: 'AssetsController' },
|
|
384
|
+
}, () => undefined);
|
|
385
|
+
}
|
|
386
|
+
catch {
|
|
387
|
+
// Telemetry failure must not break.
|
|
388
|
+
}
|
|
380
389
|
}
|
|
381
390
|
}
|
|
382
391
|
const result = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getAssetsFromState).call(this, accounts, chainIds, assetTypes);
|
|
@@ -757,7 +766,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
757
766
|
}
|
|
758
767
|
}
|
|
759
768
|
exports.AssetsController = AssetsController;
|
|
760
|
-
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(),
|
|
769
|
+
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trace = new WeakMap(), _AssetsController_firstInitFetchReported = new WeakMap(), _AssetsController_uiOpen = new WeakMap(), _AssetsController_keyringUnlocked = 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_stakedBalanceDataSource = new WeakMap(), _AssetsController_priceDataSource = new WeakMap(), _AssetsController_detectionMiddleware = new WeakMap(), _AssetsController_tokenDataSource = new WeakMap(), _AssetsController_unsubscribeBasicFunctionality = new WeakMap(), _AssetsController_onActiveChainsUpdated = new WeakMap(), _AssetsController_instances = new WeakSet(), _AssetsController_selectedAccounts_get = function _AssetsController_selectedAccounts_get() {
|
|
761
770
|
return this.messenger.call('AccountTreeController:getAccountsFromSelectedAccountGroup');
|
|
762
771
|
}, _AssetsController_allBalanceDataSources_get = function _AssetsController_allBalanceDataSources_get() {
|
|
763
772
|
return [
|
|
@@ -910,6 +919,11 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
910
919
|
durationByDataSource[name] = exclusive;
|
|
911
920
|
}
|
|
912
921
|
}
|
|
922
|
+
if (result.durationByDataSource) {
|
|
923
|
+
for (const [key, ms] of Object.entries(result.durationByDataSource)) {
|
|
924
|
+
durationByDataSource[key] = ms;
|
|
925
|
+
}
|
|
926
|
+
}
|
|
913
927
|
return { response: result.response, durationByDataSource };
|
|
914
928
|
}, _AssetsController_resolveNativeAssetIds = function _AssetsController_resolveNativeAssetIds(chains) {
|
|
915
929
|
const { nativeAssetIdentifiers } = this.messenger.call('NetworkEnablementController:getState');
|