@metamask-previews/assets-controller 16.1.0-preview-0a1dd02ad → 16.1.0-preview-91712a148
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 -9
- package/dist/AssetsController.d.ts.map +1 -1
- package/dist/AssetsController.js +125 -29
- package/dist/AssetsController.js.map +1 -1
- package/dist/data-sources/TokenDataSource.d.ts.map +1 -1
- package/dist/data-sources/TokenDataSource.js +36 -29
- package/dist/data-sources/TokenDataSource.js.map +1 -1
- package/package.json +2 -3
- package/dist/pipeline/buildFastFetchSources.d.ts +0 -42
- package/dist/pipeline/buildFastFetchSources.d.ts.map +0 -1
- package/dist/pipeline/buildFastFetchSources.js +0 -38
- package/dist/pipeline/buildFastFetchSources.js.map +0 -1
- package/dist/pipeline/executeAssetsPipeline.d.ts +0 -33
- package/dist/pipeline/executeAssetsPipeline.d.ts.map +0 -1
- package/dist/pipeline/executeAssetsPipeline.js +0 -112
- package/dist/pipeline/executeAssetsPipeline.js.map +0 -1
- package/dist/pipeline/index.d.ts +0 -5
- package/dist/pipeline/index.d.ts.map +0 -1
- package/dist/pipeline/index.js +0 -3
- package/dist/pipeline/index.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,15 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
-
### Changed
|
|
11
|
-
|
|
12
|
-
- Bump `@metamask/transaction-controller` from `^70.0.1` to `^70.1.0` ([#10262](https://github.com/MetaMask/core/pull/10262))
|
|
13
|
-
|
|
14
|
-
### Fixed
|
|
15
|
-
|
|
16
|
-
- Skip `#updateState` assignments for metadata, balances, and prices that are deep-equal to what's already in state, so Immer no longer emits a no-op `stateChange` (and a full state persist) on every poll that repeats unchanged data ([#10260](https://github.com/MetaMask/core/pull/10260))
|
|
17
|
-
- `TokenDataSource` spam filtering now removes filtered assets from `assetsBalance` and `detectedAssets` using case-insensitive asset ID matching (previously only `assetsInfo` was matched case-insensitively), so spam tokens whose IDs arrive in a different case than state no longer survive in the pipeline response and persist to state ([#10172](https://github.com/MetaMask/core/pull/10172))
|
|
18
|
-
|
|
19
10
|
## [16.1.0]
|
|
20
11
|
|
|
21
12
|
### Added
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsController.d.ts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8DAA8D,EAC9D,qCAAqC,EACrC,wCAAwC,EACxC,oDAAoD,EACpD,uCAAuC,EACxC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,0CAA0C,EAAE,MAAM,+BAA+B,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,8BAA8B,EAC9B,gCAAgC,EACjC,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,4DAA4D,EAAE,MAAM,sCAAsC,CAAC;AACzH,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,4BAA4B,CAAC;AAC9E,OAAO,KAAK,EACV,iBAAiB,EACjB,yCAAyC,EACzC,wCAAwC,EACxC,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,iCAAiC,EACjC,0BAA0B,EAC1B,4BAA4B,EAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EACV,2CAA2C,EAC3C,+BAA+B,EAC/B,kCAAkC,EAClC,sCAAsC,EACtC,oCAAoC,EAEpC,iCAAiC,EAClC,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACV,yCAAyC,EACzC,iCAAiC,EAElC,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EACV,cAAc,EACd,+BAA+B,EAChC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,sCAAsC,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,kCAAkC,CAAC;AAC9F,OAAO,KAAK,EACV,yCAAyC,EACzC,2CAA2C,EAC5C,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EACV,oCAAoC,EACpC,iCAAiC,EACjC,gCAAgC,EACjC,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACV,8CAA8C,EAC9C,oDAAoD,EAErD,MAAM,kCAAkC,CAAC;AAa1C,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,2CAA2C,CAAC;AAO/F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAI3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAK/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,KAAK,EAAE,6CAA6C,EAAE,MAAM,kCAAkC,CAAC;AAEtG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"AssetsController.d.ts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"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"}
|
package/dist/AssetsController.js
CHANGED
|
@@ -14,13 +14,13 @@ import { SnapDataSource } from './data-sources/SnapDataSource.js';
|
|
|
14
14
|
import { StakedBalanceDataSource } from './data-sources/StakedBalanceDataSource.js';
|
|
15
15
|
import { CaipAssetNamespace, TokenDataSource, } from './data-sources/TokenDataSource.js';
|
|
16
16
|
import { CHAINS_WITH_DEFAULT_TRACKED_ASSETS, DEFAULT_TRACKED_ASSETS_BY_CHAIN, buildDefaultAssetsInfo, getDefaultAssetMetadata, } from './defaults.js';
|
|
17
|
+
import { AssetsDataSourceError } from './errors.js';
|
|
17
18
|
import { projectLogger, createModuleLogger } from './logger.js';
|
|
18
19
|
import { CustomAssetGraduationMiddleware } from './middlewares/CustomAssetGraduationMiddleware.js';
|
|
19
20
|
import { DetectionMiddleware } from './middlewares/DetectionMiddleware.js';
|
|
20
21
|
import { createParallelBalanceMiddleware, createParallelMiddleware, } from './middlewares/ParallelMiddleware.js';
|
|
21
22
|
import { RpcFallbackMiddleware } from './middlewares/RpcFallbackMiddleware.js';
|
|
22
23
|
import { cleanSpamAssets, isUnlockCleanupEnabled, tempHealAssetsInfoMetadata, } from './migrations/healAssetsInfoMetadata.js';
|
|
23
|
-
import { buildFastFetchSources, executeAssetsPipeline, } from './pipeline/index.js';
|
|
24
24
|
import { ZERO_ADDRESS } from './utils/constants.js';
|
|
25
25
|
import { pickRpcCustomAssetsSupplement } from './utils/customAssetsRpcSupplement.js';
|
|
26
26
|
import { normalizeAmountString, normalizeAssetId, formatExchangeRatesForBridge, formatStateForTransactionPay, buildNativeAssetsFromConstant, buildNativeAssetsFromApi, getDefaultNativeAssetBalance, } from './utils/index.js';
|
|
@@ -60,6 +60,8 @@ const TRACE_FULL_FETCH = 'AssetsFullFetch';
|
|
|
60
60
|
/** Parent span that nests per-source timings; dashboard charts {@link TRACE_FULL_FETCH}. */
|
|
61
61
|
const TRACE_FETCH_PIPELINE = 'AssetsFetchPipeline';
|
|
62
62
|
const TRACE_BACKGROUND_FETCH = 'AssetsBackgroundFetch';
|
|
63
|
+
const TRACE_DATA_SOURCE_TIMING = 'AssetsDataSourceTiming';
|
|
64
|
+
const TRACE_DATA_SOURCE_ERROR = 'AssetsDataSourceError';
|
|
63
65
|
const TRACE_UPDATE_PIPELINE = 'AssetsUpdatePipeline';
|
|
64
66
|
/** Parent span that nests update enrichment; dashboard charts {@link TRACE_UPDATE_PIPELINE}. */
|
|
65
67
|
const TRACE_UPDATE_PARENT = 'AssetsUpdateEnrichment';
|
|
@@ -840,9 +842,6 @@ export class AssetsController extends BaseController {
|
|
|
840
842
|
* Execute middlewares with request/response context.
|
|
841
843
|
* Returns response and exclusive duration per source (sum ≈ wall time).
|
|
842
844
|
*
|
|
843
|
-
* Thin wrapper over {@link executeAssetsPipeline} that supplies the
|
|
844
|
-
* controller-owned state accessor and exception reporter.
|
|
845
|
-
*
|
|
846
845
|
* @param params - Middleware execution options.
|
|
847
846
|
* @param params.sources - Data sources or middlewares with getName() and assetsMiddleware.
|
|
848
847
|
* @param params.request - The data request.
|
|
@@ -852,11 +851,101 @@ export class AssetsController extends BaseController {
|
|
|
852
851
|
* @returns Response and durationByDataSource (exclusive ms per source name).
|
|
853
852
|
*/
|
|
854
853
|
async #executeMiddlewares(params) {
|
|
855
|
-
|
|
856
|
-
|
|
854
|
+
const { sources, request, initialResponse = {}, parentContext, trace, } = params;
|
|
855
|
+
const names = sources.map((source) => source.getName());
|
|
856
|
+
const middlewares = sources.map((source) => source.assetsMiddleware);
|
|
857
|
+
const inclusive = [];
|
|
858
|
+
const wrapped = middlewares.map((middleware, i) => (async (ctx, next) => {
|
|
859
|
+
const start = performance.now();
|
|
860
|
+
try {
|
|
861
|
+
return await middleware(ctx, next);
|
|
862
|
+
}
|
|
863
|
+
finally {
|
|
864
|
+
inclusive[i] = performance.now() - start;
|
|
865
|
+
}
|
|
866
|
+
}));
|
|
867
|
+
const middlewareErrors = [];
|
|
868
|
+
const chain = wrapped.reduceRight((next, middleware, index) => async (ctx) => {
|
|
869
|
+
try {
|
|
870
|
+
return await middleware(ctx, next);
|
|
871
|
+
}
|
|
872
|
+
catch (error) {
|
|
873
|
+
const sourceName = names[index] ?? `middleware_${index}`;
|
|
874
|
+
middlewareErrors.push(sourceName);
|
|
875
|
+
console.error('[AssetsController] Middleware failed:', error);
|
|
876
|
+
return next(ctx);
|
|
877
|
+
}
|
|
878
|
+
}, async (ctx) => ctx);
|
|
879
|
+
const result = await chain({
|
|
880
|
+
request,
|
|
881
|
+
response: initialResponse,
|
|
857
882
|
getAssetsState: () => this.state,
|
|
858
|
-
captureException: this.#captureException,
|
|
859
883
|
});
|
|
884
|
+
const durationByDataSource = {};
|
|
885
|
+
for (let i = 0; i < inclusive.length; i++) {
|
|
886
|
+
const nextInc = i + 1 < inclusive.length ? (inclusive[i + 1] ?? 0) : 0;
|
|
887
|
+
const exclusive = Math.max(0, (inclusive[i] ?? 0) - nextInc);
|
|
888
|
+
const name = names[i];
|
|
889
|
+
if (name !== undefined) {
|
|
890
|
+
durationByDataSource[name] = exclusive;
|
|
891
|
+
}
|
|
892
|
+
}
|
|
893
|
+
if (result.durationByDataSource) {
|
|
894
|
+
for (const [key, ms] of Object.entries(result.durationByDataSource)) {
|
|
895
|
+
durationByDataSource[key] = ms;
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
// Emit per-source timing as subspans under the parent fetch/update span
|
|
899
|
+
// (no-op when `trace` is omitted — unlock/first-init only).
|
|
900
|
+
for (const [sourceName, durationMs] of Object.entries(durationByDataSource)) {
|
|
901
|
+
emitTrace({
|
|
902
|
+
name: TRACE_DATA_SOURCE_TIMING,
|
|
903
|
+
trace,
|
|
904
|
+
data: {
|
|
905
|
+
source: sourceName,
|
|
906
|
+
duration_ms: durationMs,
|
|
907
|
+
chain_count: request.chainIds.length,
|
|
908
|
+
account_count: request.accountsWithSupportedChains.length,
|
|
909
|
+
},
|
|
910
|
+
tags: {
|
|
911
|
+
controller: 'AssetsController',
|
|
912
|
+
// String tag so Spans widgets can group by `source`.
|
|
913
|
+
source: sourceName,
|
|
914
|
+
},
|
|
915
|
+
parentContext,
|
|
916
|
+
});
|
|
917
|
+
}
|
|
918
|
+
// Failed middlewares: Issues (optional) + perf/Dashboard spans
|
|
919
|
+
if (middlewareErrors.length > 0) {
|
|
920
|
+
const failedSources = middlewareErrors.join(',');
|
|
921
|
+
const assetsError = new AssetsDataSourceError({
|
|
922
|
+
failedSources,
|
|
923
|
+
errorCount: middlewareErrors.length,
|
|
924
|
+
chainCount: request.chainIds.length,
|
|
925
|
+
});
|
|
926
|
+
try {
|
|
927
|
+
this.#captureException?.(assetsError);
|
|
928
|
+
}
|
|
929
|
+
catch {
|
|
930
|
+
// Never let telemetry throw.
|
|
931
|
+
}
|
|
932
|
+
emitTrace({
|
|
933
|
+
name: TRACE_DATA_SOURCE_ERROR,
|
|
934
|
+
trace,
|
|
935
|
+
data: {
|
|
936
|
+
failed_sources: failedSources,
|
|
937
|
+
error_count: middlewareErrors.length,
|
|
938
|
+
chain_count: request.chainIds.length,
|
|
939
|
+
},
|
|
940
|
+
tags: {
|
|
941
|
+
controller: 'AssetsController',
|
|
942
|
+
severity: 'error',
|
|
943
|
+
error_type: assetsError.name,
|
|
944
|
+
},
|
|
945
|
+
parentContext,
|
|
946
|
+
});
|
|
947
|
+
}
|
|
948
|
+
return { response: result.response, durationByDataSource };
|
|
860
949
|
}
|
|
861
950
|
// ============================================================================
|
|
862
951
|
// PUBLIC API: QUERY METHODS
|
|
@@ -896,15 +985,24 @@ export class AssetsController extends BaseController {
|
|
|
896
985
|
// Fast/slow pipelines use merge so partial API snapshots cannot wipe
|
|
897
986
|
// tokens missing from the response (e.g. USDC when only native balance
|
|
898
987
|
// is returned). Balances present in the response are still refreshed.
|
|
899
|
-
const fastSources =
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
988
|
+
const fastSources = this.#isBasicFunctionality()
|
|
989
|
+
? [
|
|
990
|
+
createParallelBalanceMiddleware([
|
|
991
|
+
this.#accountsApiDataSource,
|
|
992
|
+
this.#stakedBalanceDataSource,
|
|
993
|
+
]),
|
|
994
|
+
// Graduation must run BEFORE the RPC fallback so it only sees
|
|
995
|
+
// AccountsApi/Websocket balances. RPC intentionally carries
|
|
996
|
+
// custom assets and must never trigger graduation.
|
|
997
|
+
this.#customAssetGraduationMiddleware,
|
|
998
|
+
this.#rpcFallbackMiddleware,
|
|
999
|
+
this.#detectionMiddleware,
|
|
1000
|
+
createParallelMiddleware([
|
|
1001
|
+
this.#tokenDataSource,
|
|
1002
|
+
this.#priceDataSource,
|
|
1003
|
+
]),
|
|
1004
|
+
]
|
|
1005
|
+
: [this.#stakedBalanceDataSource, this.#detectionMiddleware];
|
|
908
1006
|
const { response } = await withTrace({
|
|
909
1007
|
name: TRACE_FETCH_PIPELINE,
|
|
910
1008
|
trace: pipelineTrace,
|
|
@@ -1709,6 +1807,9 @@ export class AssetsController extends BaseController {
|
|
|
1709
1807
|
const prices = state.assetsPrice;
|
|
1710
1808
|
if (normalizedResponse.assetsInfo) {
|
|
1711
1809
|
for (const [key, value] of Object.entries(normalizedResponse.assetsInfo)) {
|
|
1810
|
+
if (!isEqual(previousState.assetsInfo[key], value)) {
|
|
1811
|
+
changedMetadata.push(key);
|
|
1812
|
+
}
|
|
1712
1813
|
const existing = metadata[key];
|
|
1713
1814
|
const incoming = value;
|
|
1714
1815
|
// When the API returns no symbol or name for this token, it has no
|
|
@@ -1716,19 +1817,18 @@ export class AssetsController extends BaseController {
|
|
|
1716
1817
|
// the API). Preserve richer metadata already in state (e.g. from
|
|
1717
1818
|
// pendingMetadata set by addCustomAsset) so that the correct
|
|
1718
1819
|
// decimals/symbol/name/image are not overwritten with empty values.
|
|
1719
|
-
|
|
1720
|
-
|
|
1820
|
+
if (existing && !incoming.symbol && !incoming.name) {
|
|
1821
|
+
metadata[key] = {
|
|
1721
1822
|
...existing,
|
|
1722
1823
|
...incoming,
|
|
1723
1824
|
symbol: existing.symbol,
|
|
1724
1825
|
name: existing.name,
|
|
1725
1826
|
decimals: existing.decimals ?? incoming.decimals,
|
|
1726
1827
|
image: existing.image ?? incoming.image,
|
|
1727
|
-
}
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
metadata[key] =
|
|
1731
|
-
changedMetadata.push(key);
|
|
1828
|
+
};
|
|
1829
|
+
}
|
|
1830
|
+
else {
|
|
1831
|
+
metadata[key] = value;
|
|
1732
1832
|
}
|
|
1733
1833
|
}
|
|
1734
1834
|
}
|
|
@@ -1799,16 +1899,12 @@ export class AssetsController extends BaseController {
|
|
|
1799
1899
|
});
|
|
1800
1900
|
}
|
|
1801
1901
|
}
|
|
1802
|
-
|
|
1803
|
-
balances[accountId] = effective;
|
|
1804
|
-
}
|
|
1902
|
+
balances[accountId] = effective;
|
|
1805
1903
|
}
|
|
1806
1904
|
}
|
|
1807
1905
|
if (normalizedResponse.assetsPrice) {
|
|
1808
1906
|
for (const [key, value] of Object.entries(normalizedResponse.assetsPrice)) {
|
|
1809
|
-
|
|
1810
|
-
prices[key] = value;
|
|
1811
|
-
}
|
|
1907
|
+
prices[key] = value;
|
|
1812
1908
|
}
|
|
1813
1909
|
}
|
|
1814
1910
|
});
|