@metamask/assets-controller 6.1.0 → 6.2.1
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 +33 -4
- package/dist/AssetsController.cjs +151 -15
- package/dist/AssetsController.cjs.map +1 -1
- package/dist/AssetsController.d.cts +8 -1
- package/dist/AssetsController.d.cts.map +1 -1
- package/dist/AssetsController.d.mts +8 -1
- package/dist/AssetsController.d.mts.map +1 -1
- package/dist/AssetsController.mjs +151 -15
- package/dist/AssetsController.mjs.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.cjs +6 -3
- package/dist/data-sources/AccountsApiDataSource.cjs.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.cts +6 -0
- package/dist/data-sources/AccountsApiDataSource.d.cts.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.mts +6 -0
- package/dist/data-sources/AccountsApiDataSource.d.mts.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.mjs +7 -4
- package/dist/data-sources/AccountsApiDataSource.mjs.map +1 -1
- package/dist/data-sources/PriceDataSource.cjs +12 -8
- package/dist/data-sources/PriceDataSource.cjs.map +1 -1
- package/dist/data-sources/PriceDataSource.d.cts +5 -0
- package/dist/data-sources/PriceDataSource.d.cts.map +1 -1
- package/dist/data-sources/PriceDataSource.d.mts +5 -0
- package/dist/data-sources/PriceDataSource.d.mts.map +1 -1
- package/dist/data-sources/PriceDataSource.mjs +12 -8
- package/dist/data-sources/PriceDataSource.mjs.map +1 -1
- package/dist/data-sources/RpcDataSource.cjs +9 -2
- package/dist/data-sources/RpcDataSource.cjs.map +1 -1
- package/dist/data-sources/RpcDataSource.d.cts.map +1 -1
- package/dist/data-sources/RpcDataSource.d.mts.map +1 -1
- package/dist/data-sources/RpcDataSource.mjs +9 -2
- package/dist/data-sources/RpcDataSource.mjs.map +1 -1
- package/dist/data-sources/TokenDataSource.cjs +8 -4
- package/dist/data-sources/TokenDataSource.cjs.map +1 -1
- package/dist/data-sources/TokenDataSource.d.cts +5 -0
- package/dist/data-sources/TokenDataSource.d.cts.map +1 -1
- package/dist/data-sources/TokenDataSource.d.mts +5 -0
- package/dist/data-sources/TokenDataSource.d.mts.map +1 -1
- package/dist/data-sources/TokenDataSource.mjs +8 -4
- package/dist/data-sources/TokenDataSource.mjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.cjs +40 -22
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.cjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.cts +7 -0
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.cts.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.mts +7 -0
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.mts.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.mjs +40 -22
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.mjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/types/state.cjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/types/state.d.cts +6 -0
- package/dist/data-sources/evm-rpc-services/types/state.d.cts.map +1 -1
- package/dist/data-sources/evm-rpc-services/types/state.d.mts +6 -0
- package/dist/data-sources/evm-rpc-services/types/state.d.mts.map +1 -1
- package/dist/data-sources/evm-rpc-services/types/state.mjs.map +1 -1
- package/dist/errors.cjs +25 -0
- package/dist/errors.cjs.map +1 -0
- package/dist/errors.d.cts +25 -0
- package/dist/errors.d.cts.map +1 -0
- package/dist/errors.d.mts +25 -0
- package/dist/errors.d.mts.map +1 -0
- package/dist/errors.mjs +21 -0
- package/dist/errors.mjs.map +1 -0
- package/dist/index.cjs +5 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +3 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -1
- package/dist/index.mjs.map +1 -1
- package/dist/middlewares/CustomAssetGraduationMiddleware.cjs +121 -0
- package/dist/middlewares/CustomAssetGraduationMiddleware.cjs.map +1 -0
- package/dist/middlewares/CustomAssetGraduationMiddleware.d.cts +25 -0
- package/dist/middlewares/CustomAssetGraduationMiddleware.d.cts.map +1 -0
- package/dist/middlewares/CustomAssetGraduationMiddleware.d.mts +25 -0
- package/dist/middlewares/CustomAssetGraduationMiddleware.d.mts.map +1 -0
- package/dist/middlewares/CustomAssetGraduationMiddleware.mjs +117 -0
- package/dist/middlewares/CustomAssetGraduationMiddleware.mjs.map +1 -0
- package/dist/middlewares/RpcFallbackMiddleware.cjs +90 -0
- package/dist/middlewares/RpcFallbackMiddleware.cjs.map +1 -0
- package/dist/middlewares/RpcFallbackMiddleware.d.cts +23 -0
- package/dist/middlewares/RpcFallbackMiddleware.d.cts.map +1 -0
- package/dist/middlewares/RpcFallbackMiddleware.d.mts +23 -0
- package/dist/middlewares/RpcFallbackMiddleware.d.mts.map +1 -0
- package/dist/middlewares/RpcFallbackMiddleware.mjs +86 -0
- package/dist/middlewares/RpcFallbackMiddleware.mjs.map +1 -0
- package/dist/middlewares/index.cjs +5 -1
- package/dist/middlewares/index.cjs.map +1 -1
- package/dist/middlewares/index.d.cts +4 -0
- package/dist/middlewares/index.d.cts.map +1 -1
- package/dist/middlewares/index.d.mts +4 -0
- package/dist/middlewares/index.d.mts.map +1 -1
- package/dist/middlewares/index.mjs +2 -0
- package/dist/middlewares/index.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +7 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +7 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/fetchWithTimeout.cjs +30 -0
- package/dist/utils/fetchWithTimeout.cjs.map +1 -0
- package/dist/utils/fetchWithTimeout.d.cts +11 -0
- package/dist/utils/fetchWithTimeout.d.cts.map +1 -0
- package/dist/utils/fetchWithTimeout.d.mts +11 -0
- package/dist/utils/fetchWithTimeout.d.mts.map +1 -0
- package/dist/utils/fetchWithTimeout.mjs +26 -0
- package/dist/utils/fetchWithTimeout.mjs.map +1 -0
- package/dist/utils/index.cjs +3 -1
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts +1 -0
- package/dist/utils/index.d.cts.map +1 -1
- package/dist/utils/index.d.mts +1 -0
- package/dist/utils/index.d.mts.map +1 -1
- package/dist/utils/index.mjs +1 -0
- package/dist/utils/index.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -147,6 +147,13 @@ export type AssetsControllerOptions = {
|
|
|
147
147
|
* Use this to report first init fetch duration to Sentry (e.g. via addBreadcrumb or setMeasurement).
|
|
148
148
|
*/
|
|
149
149
|
trace?: TraceCallback;
|
|
150
|
+
/**
|
|
151
|
+
* Optional Sentry (or compatible) reporter for **issue** events. When data source middlewares
|
|
152
|
+
* fail, the controller constructs an `AssetsDataSourceError` and passes it here so you can call
|
|
153
|
+
* `Sentry.captureException`. Span-only trace callbacks do not create Issues;
|
|
154
|
+
* wire this if you need Sentry alerts on middleware failures.
|
|
155
|
+
*/
|
|
156
|
+
captureException?: (error: Error) => void;
|
|
150
157
|
/** Optional configuration for AccountsApiDataSource. */
|
|
151
158
|
accountsApiDataSourceConfig?: AccountsApiDataSourceConfig;
|
|
152
159
|
/** Optional configuration for PriceDataSource. */
|
|
@@ -190,7 +197,7 @@ export type AssetsControllerOptions = {
|
|
|
190
197
|
*/
|
|
191
198
|
export declare class AssetsController extends BaseController<typeof CONTROLLER_NAME, AssetsControllerState, AssetsControllerMessenger> {
|
|
192
199
|
#private;
|
|
193
|
-
constructor({ messenger, state, defaultUpdateInterval, isEnabled, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, isOnboarded, }: AssetsControllerOptions);
|
|
200
|
+
constructor({ messenger, state, defaultUpdateInterval, isEnabled, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, captureException, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, isOnboarded, }: AssetsControllerOptions);
|
|
194
201
|
/**
|
|
195
202
|
* Returns the callback passed to data sources for reporting active chain updates.
|
|
196
203
|
* Used by tests to simulate a data source reporting chain changes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsController.d.cts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8DAA8D,EAC9D,oDAAoD,EACpD,qCAAqC,EACtC,0CAA0C;AAC3C,OAAO,KAAK,EAAE,0CAA0C,EAAE,sCAAsC;AAChG,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,KAAK,EAAE,gCAAgC,EAAE,oCAAoC;AAGpF,OAAO,KAAK,EAAE,aAAa,EAAE,mCAAmC;AAChE,OAAO,KAAK,EACV,iBAAiB,EACjB,8BAA8B,EAC9B,6BAA6B,EAC7B,iBAAiB,EAClB,+BAA+B;AAChC,OAAO,KAAK,EACV,0BAA0B,EAC1B,4BAA4B,EAC7B,qCAAqC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EACV,2CAA2C,EAC3C,+BAA+B,EAC/B,iCAAiC,EAClC,qCAAqC;AACtC,OAAO,KAAK,EACV,yCAAyC,EACzC,iCAAiC,EAElC,gDAAgD;AACjD,OAAO,KAAK,EACV,cAAc,EACd,+BAA+B,EAChC,wCAAwC;AACzC,OAAO,EAAE,sCAAsC,EAAE,sCAAsC;AACvF,OAAO,KAAK,EAAE,qCAAqC,EAAE,yCAAyC;AAC9F,OAAO,KAAK,EACV,oCAAoC,EACpC,iCAAiC,EAClC,oCAAoC;AACrC,OAAO,KAAK,EACV,sDAAsD,EACtD,8CAA8C,EAC9C,oDAAoD,EAErD,yCAAyC;AAW1C,OAAO,KAAK,EAAE,6BAA6B,EAAE,mDAA+C;AAM5F,OAAO,KAAK,EAAE,2BAA2B,EAAE,iDAA6C;AAGxF,OAAO,KAAK,EAAE,qBAAqB,EAAE,2CAAuC;AAE5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,yCAAqC;AAExE,OAAO,KAAK,EAAE,6CAA6C,EAAE,0CAAsC;AAEnG,OAAO,KAAK,EAAE,6BAA6B,EAAE,mDAA+C;
|
|
1
|
+
{"version":3,"file":"AssetsController.d.cts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8DAA8D,EAC9D,oDAAoD,EACpD,qCAAqC,EACtC,0CAA0C;AAC3C,OAAO,KAAK,EAAE,0CAA0C,EAAE,sCAAsC;AAChG,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,KAAK,EAAE,gCAAgC,EAAE,oCAAoC;AAGpF,OAAO,KAAK,EAAE,aAAa,EAAE,mCAAmC;AAChE,OAAO,KAAK,EACV,iBAAiB,EACjB,8BAA8B,EAC9B,6BAA6B,EAC7B,iBAAiB,EAClB,+BAA+B;AAChC,OAAO,KAAK,EACV,0BAA0B,EAC1B,4BAA4B,EAC7B,qCAAqC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EACV,2CAA2C,EAC3C,+BAA+B,EAC/B,iCAAiC,EAClC,qCAAqC;AACtC,OAAO,KAAK,EACV,yCAAyC,EACzC,iCAAiC,EAElC,gDAAgD;AACjD,OAAO,KAAK,EACV,cAAc,EACd,+BAA+B,EAChC,wCAAwC;AACzC,OAAO,EAAE,sCAAsC,EAAE,sCAAsC;AACvF,OAAO,KAAK,EAAE,qCAAqC,EAAE,yCAAyC;AAC9F,OAAO,KAAK,EACV,oCAAoC,EACpC,iCAAiC,EAClC,oCAAoC;AACrC,OAAO,KAAK,EACV,sDAAsD,EACtD,8CAA8C,EAC9C,oDAAoD,EAErD,yCAAyC;AAW1C,OAAO,KAAK,EAAE,6BAA6B,EAAE,mDAA+C;AAM5F,OAAO,KAAK,EAAE,2BAA2B,EAAE,iDAA6C;AAGxF,OAAO,KAAK,EAAE,qBAAqB,EAAE,2CAAuC;AAE5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,yCAAqC;AAExE,OAAO,KAAK,EAAE,6CAA6C,EAAE,0CAAsC;AAEnG,OAAO,KAAK,EAAE,6BAA6B,EAAE,mDAA+C;AAY5F,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAGhB,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,aAAa,EAEb,UAAU,EACV,YAAY,EAEZ,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAY,EAMZ,KAAK,EACN,oBAAgB;AAQjB,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC3B,0BAAgB;AASjB;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAMF,QAAA,MAAM,eAAe,oBAA8B,CAAC;AAqCpD;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,6DAA6D;IAC7D,UAAU,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,CAAC;IACjD,+BAA+B;IAC/B,aAAa,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG;YAAE,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAAA;SAAE,CAAA;KAAE,CAAC;IAC5E,4BAA4B;IAC5B,WAAW,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAC;IAC/C,mEAAmE;IACnE,YAAY,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE,CAAA;KAAE,CAAC;IACvD,6CAA6C;IAC7C,gBAAgB,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAAC;IAC1D,8CAA8C;IAC9C,gBAAgB,EAAE,iBAAiB,CAAC;CACrC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,qBAAqB,CASvE;AAMD,MAAM,MAAM,8BAA8B,GAAG,wBAAwB,CACnE,OAAO,eAAe,EACtB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAC/B,8BAA8B,GAC9B,6BAA6B,CAAC;AAElC,MAAM,MAAM,gCAAgC,GAAG,0BAA0B,CACvE,OAAO,eAAe,EACtB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,IAAI,EAAE,GAAG,OAAO,eAAe,iBAAiB,CAAC;IACjD,OAAO,EAAE;QACP;YACE,SAAS,EAAE,SAAS,CAAC;YACrB,OAAO,EAAE,aAAa,CAAC;YACvB,cAAc,EAAE,MAAM,CAAC;YACvB,SAAS,EAAE,MAAM,CAAC;SACnB;KACF,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,IAAI,EAAE,GAAG,OAAO,eAAe,eAAe,CAAC;IAC/C,OAAO,EAAE,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;KAAE,CAAC,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,IAAI,EAAE,GAAG,OAAO,eAAe,iBAAiB,CAAC;IACjD,OAAO,EAAE,CAAC;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,QAAQ,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAC9B,gCAAgC,GAChC,mCAAmC,GACnC,iCAAiC,GACjC,mCAAmC,CAAC;AAExC,KAAK,cAAc,GAEf,0CAA0C,GAC1C,8DAA8D,GAE9D,+BAA+B,GAC/B,2CAA2C,GAE3C,yCAAyC,GAEzC,oCAAoC,GACpC,iCAAiC,GACjC,cAAc,GAEd,8BAA8B,GAE9B,sCAAsC,CAAC;AAE3C,KAAK,aAAa,GAEd,oDAAoD,GACpD,qCAAqC,GACrC,gCAAgC,GAChC,0BAA0B,GAC1B,4BAA4B,GAC5B,qCAAqC,GACrC,oDAAoD,GAEpD,iCAAiC,GACjC,8CAA8C,GAC9C,sDAAsD,GAEtD,iCAAiC,GAEjC,6CAA6C,GAC7C,+BAA+B,GAE/B,6BAA6B,CAAC;AAElC,MAAM,MAAM,yBAAyB,GAAG,SAAS,CAC/C,OAAO,eAAe,EACtB,uBAAuB,GAAG,cAAc,EACxC,sBAAsB,GAAG,aAAa,CACvC,CAAC;AAMF,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,yBAAyB,CAAC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACvC,gEAAgE;IAChE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;IAC1B;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC;IACrC;;;;;;;OAOG;IACH,mCAAmC,CAAC,EAAE,CACpC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,KACjC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IACzB;;;OAGG;IACH,cAAc,EAAE,iBAAiB,CAAC;IAClC,gDAAgD;IAChD,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C;;;;OAIG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC1C,wDAAwD;IACxD,2BAA2B,CAAC,EAAE,2BAA2B,CAAC;IAC1D,kDAAkD;IAClD,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,0DAA0D;IAC1D,6BAA6B,CAAC,EAAE,6BAA6B,CAAC;IAC9D;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;CAC7B,CAAC;AA0HF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,gBAAiB,SAAQ,cAAc,CAClD,OAAO,eAAe,EACtB,qBAAqB,EACrB,yBAAyB,CAC1B;;gBAoMa,EACV,SAAS,EACT,KAAU,EACV,qBAAmD,EACnD,SAA+B,EAC/B,oBAAoB,EACpB,mCAAmC,EACnC,cAAc,EACd,mBAAmB,EACnB,KAAK,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,qBAAqB,EACrB,6BAA6B,EAC7B,WAAW,GACZ,EAAE,uBAAuB;IA6a1B;;;;;OAKG;IACH,wBAAwB,IAAI,CAC1B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,OAAO,EAAE,EACvB,cAAc,EAAE,OAAO,EAAE,KACtB,IAAI;IAyIH,SAAS,CACb,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;QACrB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;QACzB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;QACvB,oBAAoB,CAAC,EAAE,aAAa,EAAE,CAAC;QACvC,+IAA+I;QAC/I,UAAU,CAAC,EAAE,gBAAgB,CAAC;KAC/B,GACA,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IA0HrD,gBAAgB,CACpB,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;QACrB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;QACzB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,GACA,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;IAuBlE,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,GAAG,SAAS;IAI7D,cAAc,CAClB,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;QACrB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;QACzB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,GACA,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAqB7C;;;;;;;;OAQG;IACH,yBAAyB,IAAI,yBAAyB;IAatD;;;;;;;;OAQG;IACH,yBAAyB,IAAI,0BAA0B;IAoBvD;;;;;;;;;;;;OAYG;IACG,cAAc,CAClB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,aAAa,EACtB,eAAe,CAAC,EAAE,oBAAoB,GACrC,OAAO,CAAC,IAAI,CAAC;IAkEhB;;;;;OAKG;IACH,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAuBrE;;;;;OAKG;IACH,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa,EAAE;IAQtD;;;;;;OAMG;IACH,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAavC;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAoBzC;;;;OAIG;IACH,mBAAmB,CAAC,gBAAgB,EAAE,iBAAiB,GAAG,IAAI;IAmC9D;;;;;;OAMG;IACH,oBAAoB,CAAC,QAAQ,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAqC5E;;OAEG;IACH,sBAAsB,IAAI,IAAI;IAmjB9B;;;;;;;OAOG;IACH,8BAA8B,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAofvD;;;;;;;;;OASG;IACG,kBAAkB,CACtB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC;IAuEhB,OAAO,IAAI,IAAI;CAwChB"}
|
|
@@ -147,6 +147,13 @@ export type AssetsControllerOptions = {
|
|
|
147
147
|
* Use this to report first init fetch duration to Sentry (e.g. via addBreadcrumb or setMeasurement).
|
|
148
148
|
*/
|
|
149
149
|
trace?: TraceCallback;
|
|
150
|
+
/**
|
|
151
|
+
* Optional Sentry (or compatible) reporter for **issue** events. When data source middlewares
|
|
152
|
+
* fail, the controller constructs an `AssetsDataSourceError` and passes it here so you can call
|
|
153
|
+
* `Sentry.captureException`. Span-only trace callbacks do not create Issues;
|
|
154
|
+
* wire this if you need Sentry alerts on middleware failures.
|
|
155
|
+
*/
|
|
156
|
+
captureException?: (error: Error) => void;
|
|
150
157
|
/** Optional configuration for AccountsApiDataSource. */
|
|
151
158
|
accountsApiDataSourceConfig?: AccountsApiDataSourceConfig;
|
|
152
159
|
/** Optional configuration for PriceDataSource. */
|
|
@@ -190,7 +197,7 @@ export type AssetsControllerOptions = {
|
|
|
190
197
|
*/
|
|
191
198
|
export declare class AssetsController extends BaseController<typeof CONTROLLER_NAME, AssetsControllerState, AssetsControllerMessenger> {
|
|
192
199
|
#private;
|
|
193
|
-
constructor({ messenger, state, defaultUpdateInterval, isEnabled, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, isOnboarded, }: AssetsControllerOptions);
|
|
200
|
+
constructor({ messenger, state, defaultUpdateInterval, isEnabled, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, captureException, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, isOnboarded, }: AssetsControllerOptions);
|
|
194
201
|
/**
|
|
195
202
|
* Returns the callback passed to data sources for reporting active chain updates.
|
|
196
203
|
* Used by tests to simulate a data source reporting chain changes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsController.d.mts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8DAA8D,EAC9D,oDAAoD,EACpD,qCAAqC,EACtC,0CAA0C;AAC3C,OAAO,KAAK,EAAE,0CAA0C,EAAE,sCAAsC;AAChG,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,KAAK,EAAE,gCAAgC,EAAE,oCAAoC;AAGpF,OAAO,KAAK,EAAE,aAAa,EAAE,mCAAmC;AAChE,OAAO,KAAK,EACV,iBAAiB,EACjB,8BAA8B,EAC9B,6BAA6B,EAC7B,iBAAiB,EAClB,+BAA+B;AAChC,OAAO,KAAK,EACV,0BAA0B,EAC1B,4BAA4B,EAC7B,qCAAqC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EACV,2CAA2C,EAC3C,+BAA+B,EAC/B,iCAAiC,EAClC,qCAAqC;AACtC,OAAO,KAAK,EACV,yCAAyC,EACzC,iCAAiC,EAElC,gDAAgD;AACjD,OAAO,KAAK,EACV,cAAc,EACd,+BAA+B,EAChC,wCAAwC;AACzC,OAAO,EAAE,sCAAsC,EAAE,sCAAsC;AACvF,OAAO,KAAK,EAAE,qCAAqC,EAAE,yCAAyC;AAC9F,OAAO,KAAK,EACV,oCAAoC,EACpC,iCAAiC,EAClC,oCAAoC;AACrC,OAAO,KAAK,EACV,sDAAsD,EACtD,8CAA8C,EAC9C,oDAAoD,EAErD,yCAAyC;AAW1C,OAAO,KAAK,EAAE,6BAA6B,EAAE,mDAA+C;AAM5F,OAAO,KAAK,EAAE,2BAA2B,EAAE,iDAA6C;AAGxF,OAAO,KAAK,EAAE,qBAAqB,EAAE,2CAAuC;AAE5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,yCAAqC;AAExE,OAAO,KAAK,EAAE,6CAA6C,EAAE,0CAAsC;AAEnG,OAAO,KAAK,EAAE,6BAA6B,EAAE,mDAA+C;
|
|
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_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;
|
|
12
|
+
var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trace, _AssetsController_captureException, _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_customAssetGraduationMiddleware, _AssetsController_rpcFallbackMiddleware, _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_subscribeRpcCustomAssetsSupplement, _AssetsController_unsubscribeBySubscriptionKey, _AssetsController_subscribeStakedBalance, _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 { clientControllerSelectors } from "@metamask/client-controller";
|
|
15
15
|
import { CHAIN_IDS_WITH_NO_NATIVE_TOKEN } from "@metamask/controller-utils";
|
|
@@ -25,9 +25,12 @@ import { RpcDataSource } from "./data-sources/RpcDataSource.mjs";
|
|
|
25
25
|
import { SnapDataSource } from "./data-sources/SnapDataSource.mjs";
|
|
26
26
|
import { StakedBalanceDataSource } from "./data-sources/StakedBalanceDataSource.mjs";
|
|
27
27
|
import { TokenDataSource } from "./data-sources/TokenDataSource.mjs";
|
|
28
|
+
import { AssetsDataSourceError } from "./errors.mjs";
|
|
28
29
|
import { projectLogger, createModuleLogger } from "./logger.mjs";
|
|
30
|
+
import { CustomAssetGraduationMiddleware } from "./middlewares/CustomAssetGraduationMiddleware.mjs";
|
|
29
31
|
import { DetectionMiddleware } from "./middlewares/DetectionMiddleware.mjs";
|
|
30
32
|
import { createParallelBalanceMiddleware, createParallelMiddleware } from "./middlewares/ParallelMiddleware.mjs";
|
|
33
|
+
import { RpcFallbackMiddleware } from "./middlewares/RpcFallbackMiddleware.mjs";
|
|
31
34
|
import { normalizeAssetId, formatExchangeRatesForBridge, formatStateForTransactionPay, buildNativeAssetsFromConstant, buildNativeAssetsFromApi } from "./utils/index.mjs";
|
|
32
35
|
import { ZERO_ADDRESS } from "./utils/constants.mjs";
|
|
33
36
|
const NATIVE_ASSETS_QUERY_KEY = ['nativeAssets'];
|
|
@@ -206,7 +209,7 @@ function normalizeResponse(response) {
|
|
|
206
209
|
* - The controller does NOT manage polling - it simply receives pushed updates
|
|
207
210
|
*/
|
|
208
211
|
export class AssetsController extends BaseController {
|
|
209
|
-
constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, isOnboarded, }) {
|
|
212
|
+
constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, captureException, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, isOnboarded, }) {
|
|
210
213
|
super({
|
|
211
214
|
name: CONTROLLER_NAME,
|
|
212
215
|
messenger,
|
|
@@ -225,6 +228,8 @@ export class AssetsController extends BaseController {
|
|
|
225
228
|
_AssetsController_defaultUpdateInterval.set(this, void 0);
|
|
226
229
|
/** Optional trace callback for first init/fetch measurement (duration). */
|
|
227
230
|
_AssetsController_trace.set(this, void 0);
|
|
231
|
+
/** Optional reporter for Issue-style errors (e.g. Sentry.captureException). */
|
|
232
|
+
_AssetsController_captureException.set(this, void 0);
|
|
228
233
|
/** Whether we have already reported first init fetch for this session (reset on #stop). */
|
|
229
234
|
_AssetsController_firstInitFetchReported.set(this, false);
|
|
230
235
|
/** Whether we have already reported state size for this session (reset on #stop). */
|
|
@@ -256,6 +261,8 @@ export class AssetsController extends BaseController {
|
|
|
256
261
|
_AssetsController_stakedBalanceDataSource.set(this, void 0);
|
|
257
262
|
_AssetsController_priceDataSource.set(this, void 0);
|
|
258
263
|
_AssetsController_detectionMiddleware.set(this, void 0);
|
|
264
|
+
_AssetsController_customAssetGraduationMiddleware.set(this, void 0);
|
|
265
|
+
_AssetsController_rpcFallbackMiddleware.set(this, void 0);
|
|
259
266
|
_AssetsController_tokenDataSource.set(this, void 0);
|
|
260
267
|
_AssetsController_unsubscribeBasicFunctionality.set(this, null);
|
|
261
268
|
_AssetsController_queryApiClient.set(this, void 0);
|
|
@@ -264,6 +271,7 @@ export class AssetsController extends BaseController {
|
|
|
264
271
|
__classPrivateFieldSet(this, _AssetsController_isBasicFunctionality, isBasicFunctionality ?? (() => true), "f");
|
|
265
272
|
__classPrivateFieldSet(this, _AssetsController_defaultUpdateInterval, defaultUpdateInterval, "f");
|
|
266
273
|
__classPrivateFieldSet(this, _AssetsController_trace, trace, "f");
|
|
274
|
+
__classPrivateFieldSet(this, _AssetsController_captureException, captureException, "f");
|
|
267
275
|
__classPrivateFieldSet(this, _AssetsController_queryApiClient, queryApiClient, "f");
|
|
268
276
|
const rpcConfig = rpcDataSourceConfig ?? {};
|
|
269
277
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_initializeNativeAssetsMap).call(this, queryApiClient);
|
|
@@ -318,6 +326,20 @@ export class AssetsController extends BaseController {
|
|
|
318
326
|
...priceDataSourceConfig,
|
|
319
327
|
}), "f");
|
|
320
328
|
__classPrivateFieldSet(this, _AssetsController_detectionMiddleware, new DetectionMiddleware(), "f");
|
|
329
|
+
__classPrivateFieldSet(this, _AssetsController_customAssetGraduationMiddleware, new CustomAssetGraduationMiddleware({
|
|
330
|
+
getSelectedAccountId: () => {
|
|
331
|
+
try {
|
|
332
|
+
return __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this)[0]?.id;
|
|
333
|
+
}
|
|
334
|
+
catch {
|
|
335
|
+
return undefined;
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
removeCustomAsset: (accountId, assetId) => this.removeCustomAsset(accountId, assetId),
|
|
339
|
+
}), "f");
|
|
340
|
+
__classPrivateFieldSet(this, _AssetsController_rpcFallbackMiddleware, new RpcFallbackMiddleware({
|
|
341
|
+
rpcDataSource: __classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f"),
|
|
342
|
+
}), "f");
|
|
321
343
|
if (!__classPrivateFieldGet(this, _AssetsController_isEnabled, "f")) {
|
|
322
344
|
log('AssetsController is disabled, skipping initialization');
|
|
323
345
|
return;
|
|
@@ -386,6 +408,11 @@ export class AssetsController extends BaseController {
|
|
|
386
408
|
__classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f"),
|
|
387
409
|
__classPrivateFieldGet(this, _AssetsController_stakedBalanceDataSource, "f"),
|
|
388
410
|
]),
|
|
411
|
+
// Graduation must run BEFORE the RPC fallback so it only sees
|
|
412
|
+
// AccountsApi/Websocket balances. RPC intentionally carries
|
|
413
|
+
// custom assets and must never trigger graduation.
|
|
414
|
+
__classPrivateFieldGet(this, _AssetsController_customAssetGraduationMiddleware, "f"),
|
|
415
|
+
__classPrivateFieldGet(this, _AssetsController_rpcFallbackMiddleware, "f"),
|
|
389
416
|
__classPrivateFieldGet(this, _AssetsController_detectionMiddleware, "f"),
|
|
390
417
|
createParallelMiddleware([
|
|
391
418
|
__classPrivateFieldGet(this, _AssetsController_tokenDataSource, "f"),
|
|
@@ -597,6 +624,9 @@ export class AssetsController extends BaseController {
|
|
|
597
624
|
updateMode: 'merge',
|
|
598
625
|
});
|
|
599
626
|
}
|
|
627
|
+
// Re-evaluate subscriptions so the supplemental RPC poll picks up the
|
|
628
|
+
// new customAsset on chains another data source already owns.
|
|
629
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
|
|
600
630
|
}
|
|
601
631
|
/**
|
|
602
632
|
* Remove a custom asset from an account.
|
|
@@ -616,6 +646,9 @@ export class AssetsController extends BaseController {
|
|
|
616
646
|
}
|
|
617
647
|
}
|
|
618
648
|
});
|
|
649
|
+
// Re-evaluate subscriptions so the supplemental RPC poll for that chain
|
|
650
|
+
// is torn down when no more customAssets remain there.
|
|
651
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
|
|
619
652
|
}
|
|
620
653
|
/**
|
|
621
654
|
* Get all custom assets for an account.
|
|
@@ -789,7 +822,17 @@ export class AssetsController extends BaseController {
|
|
|
789
822
|
...resolvedRequest,
|
|
790
823
|
dataTypes: resolvedRequest.dataTypes.filter((dt) => dt !== 'metadata' && dt !== 'price'),
|
|
791
824
|
};
|
|
792
|
-
|
|
825
|
+
// Graduate custom assets only when AccountsAPI / Websocket reports them.
|
|
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
|
+
];
|
|
793
836
|
if (__classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this)) {
|
|
794
837
|
enrichmentSources.push(createParallelMiddleware([
|
|
795
838
|
__classPrivateFieldGet(this, _AssetsController_tokenDataSource, "f"),
|
|
@@ -843,13 +886,13 @@ export class AssetsController extends BaseController {
|
|
|
843
886
|
this.messenger.unregisterActionHandler('AssetsController:unhideAsset');
|
|
844
887
|
}
|
|
845
888
|
}
|
|
846
|
-
_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 = {
|
|
889
|
+
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trace = new WeakMap(), _AssetsController_captureException = 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_customAssetGraduationMiddleware = new WeakMap(), _AssetsController_rpcFallbackMiddleware = 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 = {
|
|
847
890
|
controller: 'AssetsController',
|
|
848
891
|
}) {
|
|
849
892
|
if (!__classPrivateFieldGet(this, _AssetsController_trace, "f")) {
|
|
850
893
|
return;
|
|
851
894
|
}
|
|
852
|
-
__classPrivateFieldGet(this, _AssetsController_trace, "f").call(this, { name, data, tags }, () => undefined)
|
|
895
|
+
__classPrivateFieldGet(this, _AssetsController_trace, "f").call(this, { name, data, tags }, () => undefined)?.catch(() => {
|
|
853
896
|
// Telemetry failure must not break.
|
|
854
897
|
});
|
|
855
898
|
}, _AssetsController_emitStateSizeTrace = function _AssetsController_emitStateSizeTrace() {
|
|
@@ -1153,12 +1196,28 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1153
1196
|
account_count: request.accountsWithSupportedChains.length,
|
|
1154
1197
|
});
|
|
1155
1198
|
}
|
|
1156
|
-
//
|
|
1199
|
+
// Failed middlewares: Issues (optional) + perf/Dashboard spans
|
|
1157
1200
|
if (middlewareErrors.length > 0) {
|
|
1201
|
+
const failedSources = middlewareErrors.join(',');
|
|
1202
|
+
const assetsError = new AssetsDataSourceError({
|
|
1203
|
+
failedSources,
|
|
1204
|
+
errorCount: middlewareErrors.length,
|
|
1205
|
+
chainCount: request.chainIds.length,
|
|
1206
|
+
});
|
|
1207
|
+
try {
|
|
1208
|
+
__classPrivateFieldGet(this, _AssetsController_captureException, "f")?.call(this, assetsError);
|
|
1209
|
+
}
|
|
1210
|
+
catch {
|
|
1211
|
+
// Never let telemetry throw.
|
|
1212
|
+
}
|
|
1158
1213
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_emitTrace).call(this, TRACE_DATA_SOURCE_ERROR, {
|
|
1159
|
-
failed_sources:
|
|
1214
|
+
failed_sources: failedSources,
|
|
1160
1215
|
error_count: middlewareErrors.length,
|
|
1161
1216
|
chain_count: request.chainIds.length,
|
|
1217
|
+
}, {
|
|
1218
|
+
controller: 'AssetsController',
|
|
1219
|
+
severity: 'error',
|
|
1220
|
+
error_type: assetsError.name,
|
|
1162
1221
|
});
|
|
1163
1222
|
}
|
|
1164
1223
|
return { response: result.response, durationByDataSource };
|
|
@@ -1500,12 +1559,20 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1500
1559
|
];
|
|
1501
1560
|
const subscriptionKeys = [...__classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").keys()];
|
|
1502
1561
|
for (const subscriptionKey of subscriptionKeys) {
|
|
1503
|
-
if (subscriptionKey.startsWith('ds:')) {
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1562
|
+
if (!subscriptionKey.startsWith('ds:')) {
|
|
1563
|
+
continue;
|
|
1564
|
+
}
|
|
1565
|
+
// Subscription keys take the form `ds:<SourceName>` for the regular
|
|
1566
|
+
// subscription or `ds:<SourceName>:<suffix>` for supplemental
|
|
1567
|
+
// subscriptions (e.g. `ds:RpcDataSource:custom`). Split on `:` and
|
|
1568
|
+
// pick the source-name segment so both shapes resolve correctly.
|
|
1569
|
+
const [, sourceId] = subscriptionKey.split(':');
|
|
1570
|
+
const source = allSources.find((ds) => ds.getName() === sourceId);
|
|
1571
|
+
if (source) {
|
|
1572
|
+
// Unsubscribe by the actual key — `#unsubscribeDataSource` only
|
|
1573
|
+
// knows the regular `ds:<SourceName>` shape and would miss
|
|
1574
|
+
// supplemental subscriptions, leaking their polling timers.
|
|
1575
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_unsubscribeBySubscriptionKey).call(this, source, subscriptionKey);
|
|
1509
1576
|
}
|
|
1510
1577
|
}
|
|
1511
1578
|
__classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").clear();
|
|
@@ -1528,6 +1595,7 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1528
1595
|
const balanceDataSources = __classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this)
|
|
1529
1596
|
? __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_allBalanceDataSources_get)
|
|
1530
1597
|
: [__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f")];
|
|
1598
|
+
let rpcAssignedChains = new Set();
|
|
1531
1599
|
for (const source of balanceDataSources) {
|
|
1532
1600
|
const availableChains = new Set(source.getActiveChainsSync());
|
|
1533
1601
|
const assignedChains = [];
|
|
@@ -1541,6 +1609,9 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1541
1609
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_unsubscribeDataSource).call(this, source);
|
|
1542
1610
|
continue;
|
|
1543
1611
|
}
|
|
1612
|
+
if (source === __classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f")) {
|
|
1613
|
+
rpcAssignedChains = new Set(assignedChains);
|
|
1614
|
+
}
|
|
1544
1615
|
const seenIds = new Set();
|
|
1545
1616
|
const accountsForSource = assignedChains
|
|
1546
1617
|
.flatMap((chainId) => chainToAccounts.get(chainId) ?? [])
|
|
@@ -1549,6 +1620,67 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1549
1620
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeDataSource).call(this, source, accountsForSource, assignedChains);
|
|
1550
1621
|
}
|
|
1551
1622
|
}
|
|
1623
|
+
// Supplemental RPC subscription for customAssets on chains another data
|
|
1624
|
+
// source claimed during regular handoff. RPC is the sole balance fetcher
|
|
1625
|
+
// for customAssets, so we must always poll them — even when (e.g.)
|
|
1626
|
+
// AccountsApi is already covering the chain for normal balances. The
|
|
1627
|
+
// supplemental subscription runs in `customAssetsOnly` mode so it does
|
|
1628
|
+
// NOT double-poll the regular tracked balances.
|
|
1629
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeRpcCustomAssetsSupplement).call(this, accounts, chainToAccounts, rpcAssignedChains);
|
|
1630
|
+
}, _AssetsController_subscribeRpcCustomAssetsSupplement = function _AssetsController_subscribeRpcCustomAssetsSupplement(accounts, chainToAccounts, rpcAssignedChains) {
|
|
1631
|
+
const rpc = __classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f");
|
|
1632
|
+
const rpcAvailableChains = new Set(rpc.getActiveChainsSync());
|
|
1633
|
+
// Collect chains that have customAssets for at least one of the given
|
|
1634
|
+
// accounts and are NOT already covered by the regular RPC subscription.
|
|
1635
|
+
const supplementalChainSet = new Set();
|
|
1636
|
+
const accountsWithCustomAssets = new Set();
|
|
1637
|
+
for (const account of accounts) {
|
|
1638
|
+
const customForAccount = this.state.customAssets[account.id] ?? [];
|
|
1639
|
+
if (customForAccount.length === 0) {
|
|
1640
|
+
continue;
|
|
1641
|
+
}
|
|
1642
|
+
accountsWithCustomAssets.add(account.id);
|
|
1643
|
+
for (const assetId of customForAccount) {
|
|
1644
|
+
let chainId;
|
|
1645
|
+
try {
|
|
1646
|
+
chainId = extractChainId(assetId);
|
|
1647
|
+
}
|
|
1648
|
+
catch {
|
|
1649
|
+
continue;
|
|
1650
|
+
}
|
|
1651
|
+
if (rpcAssignedChains.has(chainId)) {
|
|
1652
|
+
continue;
|
|
1653
|
+
}
|
|
1654
|
+
if (!rpcAvailableChains.has(chainId)) {
|
|
1655
|
+
continue;
|
|
1656
|
+
}
|
|
1657
|
+
if (!chainToAccounts.has(chainId)) {
|
|
1658
|
+
continue;
|
|
1659
|
+
}
|
|
1660
|
+
supplementalChainSet.add(chainId);
|
|
1661
|
+
}
|
|
1662
|
+
}
|
|
1663
|
+
const supplementalKey = `ds:${rpc.getName()}:custom`;
|
|
1664
|
+
if (supplementalChainSet.size === 0) {
|
|
1665
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_unsubscribeBySubscriptionKey).call(this, rpc, supplementalKey);
|
|
1666
|
+
return;
|
|
1667
|
+
}
|
|
1668
|
+
const supplementalChains = [...supplementalChainSet];
|
|
1669
|
+
const supplementalAccounts = accounts.filter((account) => accountsWithCustomAssets.has(account.id));
|
|
1670
|
+
if (supplementalAccounts.length === 0) {
|
|
1671
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_unsubscribeBySubscriptionKey).call(this, rpc, supplementalKey);
|
|
1672
|
+
return;
|
|
1673
|
+
}
|
|
1674
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeDataSource).call(this, rpc, supplementalAccounts, supplementalChains, {
|
|
1675
|
+
subscriptionKey: supplementalKey,
|
|
1676
|
+
customAssetsOnly: true,
|
|
1677
|
+
});
|
|
1678
|
+
}, _AssetsController_unsubscribeBySubscriptionKey = function _AssetsController_unsubscribeBySubscriptionKey(source, subscriptionKey) {
|
|
1679
|
+
const existingSubscription = __classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").get(subscriptionKey);
|
|
1680
|
+
if (existingSubscription) {
|
|
1681
|
+
source.unsubscribe(subscriptionKey).catch(() => undefined);
|
|
1682
|
+
existingSubscription.unsubscribe();
|
|
1683
|
+
}
|
|
1552
1684
|
}, _AssetsController_subscribeStakedBalance = function _AssetsController_subscribeStakedBalance(accounts, chainIds) {
|
|
1553
1685
|
const source = __classPrivateFieldGet(this, _AssetsController_stakedBalanceDataSource, "f");
|
|
1554
1686
|
if (!source) {
|
|
@@ -1577,9 +1709,9 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1577
1709
|
}
|
|
1578
1710
|
}
|
|
1579
1711
|
return chainToAccounts;
|
|
1580
|
-
}, _AssetsController_subscribeDataSource = function _AssetsController_subscribeDataSource(source, accounts, chains) {
|
|
1712
|
+
}, _AssetsController_subscribeDataSource = function _AssetsController_subscribeDataSource(source, accounts, chains, options = {}) {
|
|
1581
1713
|
const sourceId = source.getName();
|
|
1582
|
-
const subscriptionKey = `ds:${sourceId}`;
|
|
1714
|
+
const subscriptionKey = options.subscriptionKey ?? `ds:${sourceId}`;
|
|
1583
1715
|
const existingSubscription = __classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").get(subscriptionKey);
|
|
1584
1716
|
const isUpdate = existingSubscription !== undefined;
|
|
1585
1717
|
log('Subscribe to data source', {
|
|
@@ -1588,12 +1720,16 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1588
1720
|
isUpdate,
|
|
1589
1721
|
accountCount: accounts.length,
|
|
1590
1722
|
chainCount: chains.length,
|
|
1723
|
+
customAssetsOnly: options.customAssetsOnly === true,
|
|
1591
1724
|
});
|
|
1592
1725
|
const subscribeReq = {
|
|
1593
1726
|
request: __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_buildDataRequest).call(this, accounts, chains, {
|
|
1594
1727
|
assetTypes: ['fungible'],
|
|
1595
1728
|
dataTypes: ['balance'],
|
|
1596
1729
|
updateInterval: __classPrivateFieldGet(this, _AssetsController_defaultUpdateInterval, "f"),
|
|
1730
|
+
...(options.customAssetsOnly === true
|
|
1731
|
+
? { customAssetsOnly: true }
|
|
1732
|
+
: {}),
|
|
1597
1733
|
}),
|
|
1598
1734
|
subscriptionId: subscriptionKey,
|
|
1599
1735
|
isUpdate,
|