@metamask-previews/assets-controller 16.1.0-preview-d27fd1d8f → 16.1.0-preview-7aac301dc
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 +9 -0
- package/dist/AssetsController.d.ts.map +1 -1
- package/dist/AssetsController.js +29 -125
- package/dist/AssetsController.js.map +1 -1
- package/dist/data-sources/TokenDataSource.d.ts.map +1 -1
- package/dist/data-sources/TokenDataSource.js +29 -36
- package/dist/data-sources/TokenDataSource.js.map +1 -1
- package/dist/pipeline/buildFastFetchSources.d.ts +42 -0
- package/dist/pipeline/buildFastFetchSources.d.ts.map +1 -0
- package/dist/pipeline/buildFastFetchSources.js +38 -0
- package/dist/pipeline/buildFastFetchSources.js.map +1 -0
- package/dist/pipeline/executeAssetsPipeline.d.ts +33 -0
- package/dist/pipeline/executeAssetsPipeline.d.ts.map +1 -0
- package/dist/pipeline/executeAssetsPipeline.js +112 -0
- package/dist/pipeline/executeAssetsPipeline.js.map +1 -0
- package/dist/pipeline/index.d.ts +5 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +3 -0
- package/dist/pipeline/index.js.map +1 -0
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,15 @@ 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
|
+
|
|
10
19
|
## [16.1.0]
|
|
11
20
|
|
|
12
21
|
### 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';
|
|
18
17
|
import { projectLogger, createModuleLogger } from './logger.js';
|
|
19
18
|
import { CustomAssetGraduationMiddleware } from './middlewares/CustomAssetGraduationMiddleware.js';
|
|
20
19
|
import { DetectionMiddleware } from './middlewares/DetectionMiddleware.js';
|
|
21
20
|
import { createParallelBalanceMiddleware, createParallelMiddleware, } from './middlewares/ParallelMiddleware.js';
|
|
22
21
|
import { RpcFallbackMiddleware } from './middlewares/RpcFallbackMiddleware.js';
|
|
23
22
|
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,8 +60,6 @@ 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';
|
|
65
63
|
const TRACE_UPDATE_PIPELINE = 'AssetsUpdatePipeline';
|
|
66
64
|
/** Parent span that nests update enrichment; dashboard charts {@link TRACE_UPDATE_PIPELINE}. */
|
|
67
65
|
const TRACE_UPDATE_PARENT = 'AssetsUpdateEnrichment';
|
|
@@ -842,6 +840,9 @@ export class AssetsController extends BaseController {
|
|
|
842
840
|
* Execute middlewares with request/response context.
|
|
843
841
|
* Returns response and exclusive duration per source (sum ≈ wall time).
|
|
844
842
|
*
|
|
843
|
+
* Thin wrapper over {@link executeAssetsPipeline} that supplies the
|
|
844
|
+
* controller-owned state accessor and exception reporter.
|
|
845
|
+
*
|
|
845
846
|
* @param params - Middleware execution options.
|
|
846
847
|
* @param params.sources - Data sources or middlewares with getName() and assetsMiddleware.
|
|
847
848
|
* @param params.request - The data request.
|
|
@@ -851,101 +852,11 @@ export class AssetsController extends BaseController {
|
|
|
851
852
|
* @returns Response and durationByDataSource (exclusive ms per source name).
|
|
852
853
|
*/
|
|
853
854
|
async #executeMiddlewares(params) {
|
|
854
|
-
|
|
855
|
-
|
|
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,
|
|
855
|
+
return executeAssetsPipeline({
|
|
856
|
+
...params,
|
|
882
857
|
getAssetsState: () => this.state,
|
|
858
|
+
captureException: this.#captureException,
|
|
883
859
|
});
|
|
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 };
|
|
949
860
|
}
|
|
950
861
|
// ============================================================================
|
|
951
862
|
// PUBLIC API: QUERY METHODS
|
|
@@ -985,24 +896,15 @@ export class AssetsController extends BaseController {
|
|
|
985
896
|
// Fast/slow pipelines use merge so partial API snapshots cannot wipe
|
|
986
897
|
// tokens missing from the response (e.g. USDC when only native balance
|
|
987
898
|
// is returned). Balances present in the response are still refreshed.
|
|
988
|
-
const fastSources =
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
this.#customAssetGraduationMiddleware,
|
|
998
|
-
this.#rpcFallbackMiddleware,
|
|
999
|
-
this.#detectionMiddleware,
|
|
1000
|
-
createParallelMiddleware([
|
|
1001
|
-
this.#tokenDataSource,
|
|
1002
|
-
this.#priceDataSource,
|
|
1003
|
-
]),
|
|
1004
|
-
]
|
|
1005
|
-
: [this.#stakedBalanceDataSource, this.#detectionMiddleware];
|
|
899
|
+
const fastSources = buildFastFetchSources({
|
|
900
|
+
accountsApiDataSource: this.#accountsApiDataSource,
|
|
901
|
+
stakedBalanceDataSource: this.#stakedBalanceDataSource,
|
|
902
|
+
customAssetGraduationMiddleware: this.#customAssetGraduationMiddleware,
|
|
903
|
+
rpcFallbackMiddleware: this.#rpcFallbackMiddleware,
|
|
904
|
+
detectionMiddleware: this.#detectionMiddleware,
|
|
905
|
+
tokenDataSource: this.#tokenDataSource,
|
|
906
|
+
priceDataSource: this.#priceDataSource,
|
|
907
|
+
}, { isBasicFunctionality: this.#isBasicFunctionality() });
|
|
1006
908
|
const { response } = await withTrace({
|
|
1007
909
|
name: TRACE_FETCH_PIPELINE,
|
|
1008
910
|
trace: pipelineTrace,
|
|
@@ -1807,9 +1709,6 @@ export class AssetsController extends BaseController {
|
|
|
1807
1709
|
const prices = state.assetsPrice;
|
|
1808
1710
|
if (normalizedResponse.assetsInfo) {
|
|
1809
1711
|
for (const [key, value] of Object.entries(normalizedResponse.assetsInfo)) {
|
|
1810
|
-
if (!isEqual(previousState.assetsInfo[key], value)) {
|
|
1811
|
-
changedMetadata.push(key);
|
|
1812
|
-
}
|
|
1813
1712
|
const existing = metadata[key];
|
|
1814
1713
|
const incoming = value;
|
|
1815
1714
|
// When the API returns no symbol or name for this token, it has no
|
|
@@ -1817,18 +1716,19 @@ export class AssetsController extends BaseController {
|
|
|
1817
1716
|
// the API). Preserve richer metadata already in state (e.g. from
|
|
1818
1717
|
// pendingMetadata set by addCustomAsset) so that the correct
|
|
1819
1718
|
// decimals/symbol/name/image are not overwritten with empty values.
|
|
1820
|
-
|
|
1821
|
-
|
|
1719
|
+
const nextValue = existing && !incoming.symbol && !incoming.name
|
|
1720
|
+
? {
|
|
1822
1721
|
...existing,
|
|
1823
1722
|
...incoming,
|
|
1824
1723
|
symbol: existing.symbol,
|
|
1825
1724
|
name: existing.name,
|
|
1826
1725
|
decimals: existing.decimals ?? incoming.decimals,
|
|
1827
1726
|
image: existing.image ?? incoming.image,
|
|
1828
|
-
}
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
metadata[key] =
|
|
1727
|
+
}
|
|
1728
|
+
: value;
|
|
1729
|
+
if (!isEqual(previousState.assetsInfo[key], nextValue)) {
|
|
1730
|
+
metadata[key] = nextValue;
|
|
1731
|
+
changedMetadata.push(key);
|
|
1832
1732
|
}
|
|
1833
1733
|
}
|
|
1834
1734
|
}
|
|
@@ -1899,12 +1799,16 @@ export class AssetsController extends BaseController {
|
|
|
1899
1799
|
});
|
|
1900
1800
|
}
|
|
1901
1801
|
}
|
|
1902
|
-
|
|
1802
|
+
if (!isEqual(previousBalances, effective)) {
|
|
1803
|
+
balances[accountId] = effective;
|
|
1804
|
+
}
|
|
1903
1805
|
}
|
|
1904
1806
|
}
|
|
1905
1807
|
if (normalizedResponse.assetsPrice) {
|
|
1906
1808
|
for (const [key, value] of Object.entries(normalizedResponse.assetsPrice)) {
|
|
1907
|
-
|
|
1809
|
+
if (!isEqual(previousPrices[key], value)) {
|
|
1810
|
+
prices[key] = value;
|
|
1811
|
+
}
|
|
1908
1812
|
}
|
|
1909
1813
|
}
|
|
1910
1814
|
});
|