@metamask-previews/assets-controller 6.1.0-preview-127523577 → 6.1.0-preview-eb7b1aa4b
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 +0 -11
- package/dist/AssetsController.cjs +6 -59
- package/dist/AssetsController.cjs.map +1 -1
- package/dist/AssetsController.d.cts +1 -8
- package/dist/AssetsController.d.cts.map +1 -1
- package/dist/AssetsController.d.mts +1 -8
- package/dist/AssetsController.d.mts.map +1 -1
- package/dist/AssetsController.mjs +6 -59
- package/dist/AssetsController.mjs.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.cjs +3 -6
- package/dist/data-sources/AccountsApiDataSource.cjs.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.cts +0 -6
- package/dist/data-sources/AccountsApiDataSource.d.cts.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.mts +0 -6
- package/dist/data-sources/AccountsApiDataSource.d.mts.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.mjs +4 -7
- package/dist/data-sources/AccountsApiDataSource.mjs.map +1 -1
- package/dist/data-sources/PriceDataSource.cjs +8 -12
- package/dist/data-sources/PriceDataSource.cjs.map +1 -1
- package/dist/data-sources/PriceDataSource.d.cts +0 -5
- package/dist/data-sources/PriceDataSource.d.cts.map +1 -1
- package/dist/data-sources/PriceDataSource.d.mts +0 -5
- package/dist/data-sources/PriceDataSource.d.mts.map +1 -1
- package/dist/data-sources/PriceDataSource.mjs +8 -12
- package/dist/data-sources/PriceDataSource.mjs.map +1 -1
- package/dist/data-sources/TokenDataSource.cjs +4 -8
- package/dist/data-sources/TokenDataSource.cjs.map +1 -1
- package/dist/data-sources/TokenDataSource.d.cts +0 -5
- package/dist/data-sources/TokenDataSource.d.cts.map +1 -1
- package/dist/data-sources/TokenDataSource.d.mts +0 -5
- package/dist/data-sources/TokenDataSource.d.mts.map +1 -1
- package/dist/data-sources/TokenDataSource.mjs +4 -8
- package/dist/data-sources/TokenDataSource.mjs.map +1 -1
- package/dist/index.cjs +1 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -2
- package/dist/index.mjs.map +1 -1
- package/dist/middlewares/index.cjs +1 -5
- package/dist/middlewares/index.cjs.map +1 -1
- package/dist/middlewares/index.d.cts +0 -4
- package/dist/middlewares/index.d.cts.map +1 -1
- package/dist/middlewares/index.d.mts +0 -4
- package/dist/middlewares/index.d.mts.map +1 -1
- package/dist/middlewares/index.mjs +0 -2
- package/dist/middlewares/index.mjs.map +1 -1
- package/dist/utils/index.cjs +1 -3
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts +0 -1
- package/dist/utils/index.d.cts.map +1 -1
- package/dist/utils/index.d.mts +0 -1
- package/dist/utils/index.d.mts.map +1 -1
- package/dist/utils/index.mjs +0 -1
- package/dist/utils/index.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/errors.cjs +0 -25
- package/dist/errors.cjs.map +0 -1
- package/dist/errors.d.cts +0 -25
- package/dist/errors.d.cts.map +0 -1
- package/dist/errors.d.mts +0 -25
- package/dist/errors.d.mts.map +0 -1
- package/dist/errors.mjs +0 -21
- package/dist/errors.mjs.map +0 -1
- package/dist/middlewares/CustomAssetGraduationMiddleware.cjs +0 -121
- package/dist/middlewares/CustomAssetGraduationMiddleware.cjs.map +0 -1
- package/dist/middlewares/CustomAssetGraduationMiddleware.d.cts +0 -25
- package/dist/middlewares/CustomAssetGraduationMiddleware.d.cts.map +0 -1
- package/dist/middlewares/CustomAssetGraduationMiddleware.d.mts +0 -25
- package/dist/middlewares/CustomAssetGraduationMiddleware.d.mts.map +0 -1
- package/dist/middlewares/CustomAssetGraduationMiddleware.mjs +0 -117
- package/dist/middlewares/CustomAssetGraduationMiddleware.mjs.map +0 -1
- package/dist/middlewares/RpcFallbackMiddleware.cjs +0 -90
- package/dist/middlewares/RpcFallbackMiddleware.cjs.map +0 -1
- package/dist/middlewares/RpcFallbackMiddleware.d.cts +0 -23
- package/dist/middlewares/RpcFallbackMiddleware.d.cts.map +0 -1
- package/dist/middlewares/RpcFallbackMiddleware.d.mts +0 -23
- package/dist/middlewares/RpcFallbackMiddleware.d.mts.map +0 -1
- package/dist/middlewares/RpcFallbackMiddleware.mjs +0 -86
- package/dist/middlewares/RpcFallbackMiddleware.mjs.map +0 -1
- package/dist/utils/fetchWithTimeout.cjs +0 -30
- package/dist/utils/fetchWithTimeout.cjs.map +0 -1
- package/dist/utils/fetchWithTimeout.d.cts +0 -11
- package/dist/utils/fetchWithTimeout.d.cts.map +0 -1
- package/dist/utils/fetchWithTimeout.d.mts +0 -11
- package/dist/utils/fetchWithTimeout.d.mts.map +0 -1
- package/dist/utils/fetchWithTimeout.mjs +0 -26
- package/dist/utils/fetchWithTimeout.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,17 +7,6 @@ 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 `CustomAssetGraduationMiddleware` that removes an EVM asset from `customAssets[selectedAccount]` when `AccountsApiDataSource` or `BackendWebsocketDataSource` reports a balance for it ([#8582](https://github.com/MetaMask/core/pull/8582))
|
|
13
|
-
- Non-EVM custom assets (Solana, BTC, Tron) are not affected.
|
|
14
|
-
- `RpcDataSource` continues to be the sole balance fetcher for assets still in `customAssets`.
|
|
15
|
-
- Add `RpcFallbackMiddleware` to the fast pipeline so chains that error in `response.errors` (network error, `unprocessedNetworks`, timeout) fall back to `RpcDataSource` ([#8582](https://github.com/MetaMask/core/pull/8582))
|
|
16
|
-
- Successful RPC results are merged into the response and recovered chains are cleared from `response.errors`.
|
|
17
|
-
- Add a configurable `fetchTimeoutMs` option (default `15000`) to `AccountsApiDataSource`, `PriceDataSource`, and `TokenDataSource` ([#8582](https://github.com/MetaMask/core/pull/8582))
|
|
18
|
-
- On timeout, AccountsAPI marks every requested chain as errored so `RpcFallbackMiddleware` picks them up; price and token enrichment degrade gracefully.
|
|
19
|
-
- Add `fetchWithTimeout` utility that races an async task against a timeout ([#8582](https://github.com/MetaMask/core/pull/8582))
|
|
20
|
-
|
|
21
10
|
## [6.1.0]
|
|
22
11
|
|
|
23
12
|
### Added
|
|
@@ -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,
|
|
16
|
+
var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trace, _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_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_updateState, _AssetsController_getAssetsFromState, _AssetsController_shouldHideNativeToken, _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");
|
|
@@ -30,12 +30,9 @@ const RpcDataSource_1 = require("./data-sources/RpcDataSource.cjs");
|
|
|
30
30
|
const SnapDataSource_1 = require("./data-sources/SnapDataSource.cjs");
|
|
31
31
|
const StakedBalanceDataSource_1 = require("./data-sources/StakedBalanceDataSource.cjs");
|
|
32
32
|
const TokenDataSource_1 = require("./data-sources/TokenDataSource.cjs");
|
|
33
|
-
const errors_1 = require("./errors.cjs");
|
|
34
33
|
const logger_1 = require("./logger.cjs");
|
|
35
|
-
const CustomAssetGraduationMiddleware_1 = require("./middlewares/CustomAssetGraduationMiddleware.cjs");
|
|
36
34
|
const DetectionMiddleware_1 = require("./middlewares/DetectionMiddleware.cjs");
|
|
37
35
|
const ParallelMiddleware_1 = require("./middlewares/ParallelMiddleware.cjs");
|
|
38
|
-
const RpcFallbackMiddleware_1 = require("./middlewares/RpcFallbackMiddleware.cjs");
|
|
39
36
|
const utils_2 = require("./utils/index.cjs");
|
|
40
37
|
const constants_1 = require("./utils/constants.cjs");
|
|
41
38
|
const NATIVE_ASSETS_QUERY_KEY = ['nativeAssets'];
|
|
@@ -215,7 +212,7 @@ function normalizeResponse(response) {
|
|
|
215
212
|
* - The controller does NOT manage polling - it simply receives pushed updates
|
|
216
213
|
*/
|
|
217
214
|
class AssetsController extends base_controller_1.BaseController {
|
|
218
|
-
constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace,
|
|
215
|
+
constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, isOnboarded, }) {
|
|
219
216
|
super({
|
|
220
217
|
name: CONTROLLER_NAME,
|
|
221
218
|
messenger,
|
|
@@ -234,8 +231,6 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
234
231
|
_AssetsController_defaultUpdateInterval.set(this, void 0);
|
|
235
232
|
/** Optional trace callback for first init/fetch measurement (duration). */
|
|
236
233
|
_AssetsController_trace.set(this, void 0);
|
|
237
|
-
/** Optional reporter for Issue-style errors (e.g. Sentry.captureException). */
|
|
238
|
-
_AssetsController_captureException.set(this, void 0);
|
|
239
234
|
/** Whether we have already reported first init fetch for this session (reset on #stop). */
|
|
240
235
|
_AssetsController_firstInitFetchReported.set(this, false);
|
|
241
236
|
/** Whether we have already reported state size for this session (reset on #stop). */
|
|
@@ -267,8 +262,6 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
267
262
|
_AssetsController_stakedBalanceDataSource.set(this, void 0);
|
|
268
263
|
_AssetsController_priceDataSource.set(this, void 0);
|
|
269
264
|
_AssetsController_detectionMiddleware.set(this, void 0);
|
|
270
|
-
_AssetsController_customAssetGraduationMiddleware.set(this, void 0);
|
|
271
|
-
_AssetsController_rpcFallbackMiddleware.set(this, void 0);
|
|
272
265
|
_AssetsController_tokenDataSource.set(this, void 0);
|
|
273
266
|
_AssetsController_unsubscribeBasicFunctionality.set(this, null);
|
|
274
267
|
_AssetsController_queryApiClient.set(this, void 0);
|
|
@@ -277,7 +270,6 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
277
270
|
__classPrivateFieldSet(this, _AssetsController_isBasicFunctionality, isBasicFunctionality ?? (() => true), "f");
|
|
278
271
|
__classPrivateFieldSet(this, _AssetsController_defaultUpdateInterval, defaultUpdateInterval, "f");
|
|
279
272
|
__classPrivateFieldSet(this, _AssetsController_trace, trace, "f");
|
|
280
|
-
__classPrivateFieldSet(this, _AssetsController_captureException, captureException, "f");
|
|
281
273
|
__classPrivateFieldSet(this, _AssetsController_queryApiClient, queryApiClient, "f");
|
|
282
274
|
const rpcConfig = rpcDataSourceConfig ?? {};
|
|
283
275
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_initializeNativeAssetsMap).call(this, queryApiClient);
|
|
@@ -332,20 +324,6 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
332
324
|
...priceDataSourceConfig,
|
|
333
325
|
}), "f");
|
|
334
326
|
__classPrivateFieldSet(this, _AssetsController_detectionMiddleware, new DetectionMiddleware_1.DetectionMiddleware(), "f");
|
|
335
|
-
__classPrivateFieldSet(this, _AssetsController_customAssetGraduationMiddleware, new CustomAssetGraduationMiddleware_1.CustomAssetGraduationMiddleware({
|
|
336
|
-
getSelectedAccountId: () => {
|
|
337
|
-
try {
|
|
338
|
-
return __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this)[0]?.id;
|
|
339
|
-
}
|
|
340
|
-
catch {
|
|
341
|
-
return undefined;
|
|
342
|
-
}
|
|
343
|
-
},
|
|
344
|
-
removeCustomAsset: (accountId, assetId) => this.removeCustomAsset(accountId, assetId),
|
|
345
|
-
}), "f");
|
|
346
|
-
__classPrivateFieldSet(this, _AssetsController_rpcFallbackMiddleware, new RpcFallbackMiddleware_1.RpcFallbackMiddleware({
|
|
347
|
-
rpcDataSource: __classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f"),
|
|
348
|
-
}), "f");
|
|
349
327
|
if (!__classPrivateFieldGet(this, _AssetsController_isEnabled, "f")) {
|
|
350
328
|
log('AssetsController is disabled, skipping initialization');
|
|
351
329
|
return;
|
|
@@ -414,11 +392,6 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
414
392
|
__classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f"),
|
|
415
393
|
__classPrivateFieldGet(this, _AssetsController_stakedBalanceDataSource, "f"),
|
|
416
394
|
]),
|
|
417
|
-
// Graduation must run BEFORE the RPC fallback so it only sees
|
|
418
|
-
// AccountsApi/Websocket balances. RPC intentionally carries
|
|
419
|
-
// custom assets and must never trigger graduation.
|
|
420
|
-
__classPrivateFieldGet(this, _AssetsController_customAssetGraduationMiddleware, "f"),
|
|
421
|
-
__classPrivateFieldGet(this, _AssetsController_rpcFallbackMiddleware, "f"),
|
|
422
395
|
__classPrivateFieldGet(this, _AssetsController_detectionMiddleware, "f"),
|
|
423
396
|
(0, ParallelMiddleware_1.createParallelMiddleware)([
|
|
424
397
|
__classPrivateFieldGet(this, _AssetsController_tokenDataSource, "f"),
|
|
@@ -822,17 +795,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
822
795
|
...resolvedRequest,
|
|
823
796
|
dataTypes: resolvedRequest.dataTypes.filter((dt) => dt !== 'metadata' && dt !== 'price'),
|
|
824
797
|
};
|
|
825
|
-
|
|
826
|
-
// RPC already fetches custom assets on purpose, and Snap handles non-EVM
|
|
827
|
-
// chains the rule does not apply to, so skip the middleware for those.
|
|
828
|
-
const shouldGraduateCustomAssets = sourceId === 'AccountsApiDataSource' ||
|
|
829
|
-
sourceId === 'BackendWebsocketDataSource';
|
|
830
|
-
const enrichmentSources = [
|
|
831
|
-
...(shouldGraduateCustomAssets
|
|
832
|
-
? [__classPrivateFieldGet(this, _AssetsController_customAssetGraduationMiddleware, "f")]
|
|
833
|
-
: []),
|
|
834
|
-
__classPrivateFieldGet(this, _AssetsController_detectionMiddleware, "f"),
|
|
835
|
-
];
|
|
798
|
+
const enrichmentSources = [__classPrivateFieldGet(this, _AssetsController_detectionMiddleware, "f")];
|
|
836
799
|
if (__classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this)) {
|
|
837
800
|
enrichmentSources.push((0, ParallelMiddleware_1.createParallelMiddleware)([
|
|
838
801
|
__classPrivateFieldGet(this, _AssetsController_tokenDataSource, "f"),
|
|
@@ -887,7 +850,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
887
850
|
}
|
|
888
851
|
}
|
|
889
852
|
exports.AssetsController = AssetsController;
|
|
890
|
-
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trace = new WeakMap(),
|
|
853
|
+
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trace = new WeakMap(), _AssetsController_firstInitFetchReported = new WeakMap(), _AssetsController_stateSizeReported = new WeakMap(), _AssetsController_uiOpen = new WeakMap(), _AssetsController_keyringUnlocked = new WeakMap(), _AssetsController_controllerMutex = new WeakMap(), _AssetsController_activeSubscriptions = new WeakMap(), _AssetsController_enabledChains = new WeakMap(), _AssetsController_lastKnownAccountIds = 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_queryApiClient = new WeakMap(), _AssetsController_onActiveChainsUpdated = new WeakMap(), _AssetsController_instances = new WeakSet(), _AssetsController_emitTrace = function _AssetsController_emitTrace(name, data, tags = {
|
|
891
854
|
controller: 'AssetsController',
|
|
892
855
|
}) {
|
|
893
856
|
if (!__classPrivateFieldGet(this, _AssetsController_trace, "f")) {
|
|
@@ -1197,28 +1160,12 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1197
1160
|
account_count: request.accountsWithSupportedChains.length,
|
|
1198
1161
|
});
|
|
1199
1162
|
}
|
|
1200
|
-
//
|
|
1163
|
+
// Emit error traces for failed middlewares
|
|
1201
1164
|
if (middlewareErrors.length > 0) {
|
|
1202
|
-
const failedSources = middlewareErrors.join(',');
|
|
1203
|
-
const assetsError = new errors_1.AssetsDataSourceError({
|
|
1204
|
-
failedSources,
|
|
1205
|
-
errorCount: middlewareErrors.length,
|
|
1206
|
-
chainCount: request.chainIds.length,
|
|
1207
|
-
});
|
|
1208
|
-
try {
|
|
1209
|
-
__classPrivateFieldGet(this, _AssetsController_captureException, "f")?.call(this, assetsError);
|
|
1210
|
-
}
|
|
1211
|
-
catch {
|
|
1212
|
-
// Never let telemetry throw.
|
|
1213
|
-
}
|
|
1214
1165
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_emitTrace).call(this, TRACE_DATA_SOURCE_ERROR, {
|
|
1215
|
-
failed_sources:
|
|
1166
|
+
failed_sources: middlewareErrors.join(','),
|
|
1216
1167
|
error_count: middlewareErrors.length,
|
|
1217
1168
|
chain_count: request.chainIds.length,
|
|
1218
|
-
}, {
|
|
1219
|
-
controller: 'AssetsController',
|
|
1220
|
-
severity: 'error',
|
|
1221
|
-
error_type: assetsError.name,
|
|
1222
1169
|
});
|
|
1223
1170
|
}
|
|
1224
1171
|
return { response: result.response, durationByDataSource };
|