From 12741da31fbdf7a74d95958bd5b522eedb642935 Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Mon, 29 Sep 2025 11:46:29 +0200 Subject: [PATCH 01/11] refactor: migrate `SwapsController` to `@metamask/messenger` --- package.json | 3 +- src/SwapsController.test.ts | 95 +++++++++++++++++++++++++------------ src/SwapsController.ts | 66 +++++++++++++------------- src/types.ts | 8 ++-- tsconfig.json | 2 +- yarn.lock | 23 ++------- 6 files changed, 107 insertions(+), 90 deletions(-) diff --git a/package.json b/package.json index 90ee447f..8bd663be 100644 --- a/package.json +++ b/package.json @@ -73,9 +73,10 @@ "dependencies": { "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.0", - "@metamask/base-controller": "^8.0.3", + "@metamask/base-controller": "^8.0.4", "@metamask/controller-utils": "^11.3.0", "@metamask/eth-query": "^4.0.0", + "@metamask/messenger": "^0.3.0", "@metamask/utils": "^10.0.0", "async-mutex": "^0.5.0", "bignumber.js": "^9.0.1", diff --git a/src/SwapsController.test.ts b/src/SwapsController.test.ts index 7bcea356..e0d85dbf 100644 --- a/src/SwapsController.test.ts +++ b/src/SwapsController.test.ts @@ -10,20 +10,29 @@ import { SwapsControllerState, } from './types'; import * as swapsUtil from './swapsUtil'; -import { - NetworkClientId, - NetworkControllerGetNetworkClientByIdAction, - NetworkControllerNetworkDidChangeEvent, -} from '@metamask/network-controller'; +import { NetworkClientId } from '@metamask/network-controller'; import { FakeProvider } from './fake-provider.test'; import { Hex } from '@metamask/utils'; -import { deriveStateFromMetadata, Messenger } from '@metamask/base-controller'; +import { deriveStateFromMetadata } from '@metamask/base-controller/next'; import * as ethQueryModule from '@metamask/eth-query'; +import { + Messenger, + MessengerActions, + MessengerEvents, + MOCK_ANY_NAMESPACE, + MockAnyNamespace, +} from '@metamask/messenger'; import * as ethersContracts from '@ethersproject/contracts'; import * as ethersProviders from '@ethersproject/providers'; import { Interface } from '@ethersproject/abi'; import abiERC20 from 'human-standard-token-abi'; +type AllActions = MessengerActions; + +type AllEvents = MessengerEvents; + +type RootMessenger = Messenger; + // Override this module so that its members can be spied on jest.mock('@metamask/eth-query', () => { return { @@ -524,10 +533,9 @@ describe('SwapsController', () => { topAssetsLastFetched: 2, tokensLastFetched: 3, }; - const rootMessenger = new Messenger< - NetworkControllerGetNetworkClientByIdAction, - NetworkControllerNetworkDidChangeEvent - >(); + const rootMessenger: RootMessenger = new Messenger({ + namespace: MOCK_ANY_NAMESPACE, + }); rootMessenger.registerActionHandler( 'NetworkController:getNetworkClientById', // @ts-expect-error Intentionally not providing a full @@ -545,10 +553,19 @@ describe('SwapsController', () => { ); }, ); - const swapsControllerMessenger = rootMessenger.getRestricted({ - name: 'SwapsController', - allowedActions: ['NetworkController:getNetworkClientById'], - allowedEvents: ['NetworkController:networkDidChange'], + const swapsControllerMessenger = new Messenger< + 'SwapsController', + AllActions, + AllEvents, + RootMessenger + >({ + namespace: 'SwapsController', + parent: rootMessenger, + }); + rootMessenger.delegate({ + messenger: swapsControllerMessenger, + actions: ['NetworkController:getNetworkClientById'], + events: ['NetworkController:networkDidChange'], }); const controller = getSwapsController({ options: { @@ -575,10 +592,9 @@ describe('SwapsController', () => { it('clears the main part of state and initializes the cached data for the new chain ID if none previously existed', async () => { const networkClientId = 'AAAA-BBBB-CCCC-DDDD'; const chainId = BSC_CHAIN_ID; - const rootMessenger = new Messenger< - NetworkControllerGetNetworkClientByIdAction, - NetworkControllerNetworkDidChangeEvent - >(); + const rootMessenger: RootMessenger = new Messenger({ + namespace: MOCK_ANY_NAMESPACE, + }); rootMessenger.registerActionHandler( 'NetworkController:getNetworkClientById', // @ts-expect-error Intentionally not providing a full @@ -596,10 +612,19 @@ describe('SwapsController', () => { ); }, ); - const swapsControllerMessenger = rootMessenger.getRestricted({ - name: 'SwapsController', - allowedActions: ['NetworkController:getNetworkClientById'], - allowedEvents: ['NetworkController:networkDidChange'], + const swapsControllerMessenger = new Messenger< + 'SwapsController', + AllActions, + AllEvents, + RootMessenger + >({ + namespace: 'SwapsController', + parent: rootMessenger, + }); + rootMessenger.delegate({ + messenger: swapsControllerMessenger, + actions: ['NetworkController:getNetworkClientById'], + events: ['NetworkController:networkDidChange'], }); const controller = getSwapsController({ options: { @@ -637,10 +662,9 @@ describe('SwapsController', () => { it('does not change state if the new chain ID is not among the list of supported chain IDs', async () => { const networkClientId = 'AAAA-BBBB-CCCC-DDDD'; const chainId = '0x99999999'; - const rootMessenger = new Messenger< - NetworkControllerGetNetworkClientByIdAction, - NetworkControllerNetworkDidChangeEvent - >(); + const rootMessenger: RootMessenger = new Messenger({ + namespace: MOCK_ANY_NAMESPACE, + }); rootMessenger.registerActionHandler( 'NetworkController:getNetworkClientById', // @ts-expect-error Intentionally not providing a full @@ -658,10 +682,19 @@ describe('SwapsController', () => { ); }, ); - const swapsControllerMessenger = rootMessenger.getRestricted({ - name: 'SwapsController', - allowedActions: ['NetworkController:getNetworkClientById'], - allowedEvents: ['NetworkController:networkDidChange'], + const swapsControllerMessenger = new Messenger< + 'SwapsController', + AllActions, + AllEvents, + RootMessenger + >({ + namespace: 'SwapsController', + parent: rootMessenger, + }); + rootMessenger.delegate({ + messenger: swapsControllerMessenger, + actions: ['NetworkController:getNetworkClientById'], + events: ['NetworkController:networkDidChange'], }); const controller = getSwapsController({ options: { @@ -5307,7 +5340,7 @@ describe('SwapsController', () => { deriveStateFromMetadata( controller.state, controller.metadata, - 'anonymous', + 'includeInDebugSnapshot', ), ).toMatchInlineSnapshot(` { diff --git a/src/SwapsController.ts b/src/SwapsController.ts index 27e9fe65..c6cdcc35 100644 --- a/src/SwapsController.ts +++ b/src/SwapsController.ts @@ -1,7 +1,9 @@ import { Contract } from '@ethersproject/contracts'; import { Web3Provider } from '@ethersproject/providers'; -import type { StateMetadata } from '@metamask/base-controller'; -import { BaseController } from '@metamask/base-controller'; +import { + BaseController, + type StateMetadata, +} from '@metamask/base-controller/next'; import { gweiDecToWEIBN, query, @@ -75,121 +77,121 @@ const metadata: StateMetadata = { quotes: { includeInStateLogs: true, persist: false, - anonymous: false, + includeInDebugSnapshot: false, usedInUi: true, }, quoteValues: { includeInStateLogs: true, persist: false, - anonymous: false, + includeInDebugSnapshot: false, usedInUi: true, }, fetchParams: { includeInStateLogs: true, persist: false, - anonymous: false, + includeInDebugSnapshot: false, usedInUi: true, }, fetchParamsMetaData: { includeInStateLogs: true, persist: false, - anonymous: false, + includeInDebugSnapshot: false, usedInUi: true, }, topAggSavings: { includeInStateLogs: true, persist: false, - anonymous: false, + includeInDebugSnapshot: false, usedInUi: true, }, aggregatorMetadata: { includeInStateLogs: false, persist: false, - anonymous: true, + includeInDebugSnapshot: true, usedInUi: true, }, tokens: { includeInStateLogs: false, persist: false, - anonymous: true, + includeInDebugSnapshot: true, usedInUi: true, }, topAssets: { includeInStateLogs: false, persist: false, - anonymous: true, + includeInDebugSnapshot: true, usedInUi: true, }, approvalTransaction: { includeInStateLogs: true, persist: false, - anonymous: false, + includeInDebugSnapshot: false, usedInUi: true, }, aggregatorMetadataLastFetched: { includeInStateLogs: true, persist: false, - anonymous: true, + includeInDebugSnapshot: true, usedInUi: true, }, quotesLastFetched: { includeInStateLogs: true, persist: false, - anonymous: true, + includeInDebugSnapshot: true, usedInUi: true, }, error: { includeInStateLogs: true, persist: false, - anonymous: false, + includeInDebugSnapshot: false, usedInUi: true, }, topAggId: { includeInStateLogs: true, persist: false, - anonymous: false, + includeInDebugSnapshot: false, usedInUi: true, }, tokensLastFetched: { includeInStateLogs: true, persist: false, - anonymous: true, + includeInDebugSnapshot: true, usedInUi: true, }, isInPolling: { includeInStateLogs: true, persist: false, - anonymous: true, + includeInDebugSnapshot: true, usedInUi: true, }, pollingCyclesLeft: { includeInStateLogs: true, persist: false, - anonymous: true, + includeInDebugSnapshot: true, usedInUi: true, }, quoteRefreshSeconds: { includeInStateLogs: true, persist: false, - anonymous: true, + includeInDebugSnapshot: true, usedInUi: true, }, usedGasEstimate: { includeInStateLogs: true, persist: false, - anonymous: false, + includeInDebugSnapshot: false, usedInUi: true, }, usedCustomGas: { includeInStateLogs: true, persist: false, - anonymous: false, + includeInDebugSnapshot: false, usedInUi: true, }, chainCache: { includeInStateLogs: false, persist: false, - anonymous: false, + includeInDebugSnapshot: false, usedInUi: true, }, }; @@ -670,42 +672,42 @@ export default class SwapsController extends BaseController< this.#pollCountLimit = pollCountLimit; this.#supportedChainIds = supportedChainIds; - this.messagingSystem.registerActionHandler( + this.messenger.registerActionHandler( `SwapsController:updateQuotesWithGasPrice`, this.updateQuotesWithGasPrice.bind(this), ); - this.messagingSystem.registerActionHandler( + this.messenger.registerActionHandler( `SwapsController:updateSelectedQuoteWithGasLimit`, this.updateSelectedQuoteWithGasLimit.bind(this), ); - this.messagingSystem.registerActionHandler( + this.messenger.registerActionHandler( `SwapsController:startFetchAndSetQuotes`, this.startFetchAndSetQuotes.bind(this), ); - this.messagingSystem.registerActionHandler( + this.messenger.registerActionHandler( `SwapsController:fetchTokenWithCache`, this.fetchTokenWithCache.bind(this), ); - this.messagingSystem.registerActionHandler( + this.messenger.registerActionHandler( `SwapsController:fetchTopAssetsWithCache`, this.fetchTopAssetsWithCache.bind(this), ); - this.messagingSystem.registerActionHandler( + this.messenger.registerActionHandler( `SwapsController:fetchAggregatorMetadataWithCache`, this.fetchAggregatorMetadataWithCache.bind(this), ); - this.messagingSystem.registerActionHandler( + this.messenger.registerActionHandler( `SwapsController:stopPollingAndResetState`, this.stopPollingAndResetState.bind(this), ); - this.messagingSystem.subscribe( + this.messenger.subscribe( 'NetworkController:networkDidChange', (networkControllerState) => { const chainId = this.#getChainId( @@ -1328,7 +1330,7 @@ export default class SwapsController extends BaseController< }; #setNetwork(networkClientId: NetworkClientId) { - const networkClient = this.messagingSystem.call( + const networkClient = this.messenger.call( 'NetworkController:getNetworkClientById', networkClientId, ); @@ -1351,7 +1353,7 @@ export default class SwapsController extends BaseController< } #getChainId(networkClientId: NetworkClientId) { - const networkClient = this.messagingSystem.call( + const networkClient = this.messenger.call( 'NetworkController:getNetworkClientById', networkClientId, ); diff --git a/src/types.ts b/src/types.ts index 37758fda..a7fdc68e 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,7 +1,6 @@ import type { AccessList } from '@ethereumjs/tx'; import type { Web3Provider } from '@ethersproject/providers'; import type { - RestrictedMessenger, ControllerStateChangeEvent, ControllerGetStateAction, } from '@metamask/base-controller'; @@ -11,6 +10,7 @@ import type { GasFeeController, GasFeeEstimates, } from '@metamask/gas-fee-controller'; +import type { Messenger } from '@metamask/messenger'; import type { NetworkClient, NetworkClientId, @@ -365,12 +365,10 @@ export type AllowedEvents = NetworkControllerNetworkDidChangeEvent; /** * The messenger for the SwapsController. */ -export type SwapsControllerMessenger = RestrictedMessenger< +export type SwapsControllerMessenger = Messenger< typeof controllerName, SwapsControllerActions | AllowedActions, - SwapsControllerEvents | AllowedEvents, - AllowedActions['type'], - AllowedEvents['type'] + SwapsControllerEvents | AllowedEvents >; export type SwapsControllerOptions = { diff --git a/tsconfig.json b/tsconfig.json index c157144d..41527957 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,7 +7,7 @@ "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "module": "CommonJS", - "moduleResolution": "Node", + "moduleResolution": "Node16", "noUnusedLocals": true, "noUnusedParameters": true, "outDir": "dist", diff --git a/yarn.lock b/yarn.lock index 52e71a2b..34d089f6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1184,7 +1184,7 @@ __metadata: languageName: node linkType: hard -"@metamask/base-controller@npm:^8.0.1, @metamask/base-controller@npm:^8.1.0": +"@metamask/base-controller@npm:^8.0.1, @metamask/base-controller@npm:^8.0.4, @metamask/base-controller@npm:^8.1.0": version: 8.4.0 resolution: "@metamask/base-controller@npm:8.4.0" dependencies: @@ -1195,17 +1195,6 @@ __metadata: languageName: node linkType: hard -"@metamask/base-controller@npm:^8.0.3": - version: 8.3.0 - resolution: "@metamask/base-controller@npm:8.3.0" - dependencies: - "@metamask/messenger": "npm:^0.2.0" - "@metamask/utils": "npm:^11.4.2" - immer: "npm:^9.0.6" - checksum: 10/f4dec29cbf984e38c8dab331a7b98ad3ebb81d1e64d25f28e01025a0e7b4b4f6ead9e5b830852b7eabd8ad971753868a932dc2d0076f4bd3eec415d8604eb7a4 - languageName: node - linkType: hard - "@metamask/controller-utils@npm:^11.10.0, @metamask/controller-utils@npm:^11.12.0": version: 11.14.0 resolution: "@metamask/controller-utils@npm:11.14.0" @@ -1457,13 +1446,6 @@ __metadata: languageName: node linkType: hard -"@metamask/messenger@npm:^0.2.0": - version: 0.2.0 - resolution: "@metamask/messenger@npm:0.2.0" - checksum: 10/48f682d9cde1208fbda0936022dea37acc3828cc221203b5f917df25c131d9a250dc5e86e9263f5dba8ee7c05adc6752a68dfb57da7d297f95f38b052f4fe5c1 - languageName: node - linkType: hard - "@metamask/messenger@npm:^0.3.0": version: 0.3.0 resolution: "@metamask/messenger@npm:0.3.0" @@ -1576,7 +1558,7 @@ __metadata: "@ethersproject/providers": "npm:^5.7.0" "@lavamoat/allow-scripts": "npm:^3.0.0" "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/base-controller": "npm:^8.0.3" + "@metamask/base-controller": "npm:^8.0.4" "@metamask/controller-utils": "npm:^11.3.0" "@metamask/error-reporting-service": "npm:^2.0.0" "@metamask/eslint-config": "npm:^12.2.0" @@ -1587,6 +1569,7 @@ __metadata: "@metamask/eth-query": "npm:^4.0.0" "@metamask/gas-fee-controller": "npm:^24.0.0" "@metamask/json-rpc-engine": "npm:^10.0.1" + "@metamask/messenger": "npm:^0.3.0" "@metamask/network-controller": "npm:^24.1.0" "@metamask/utils": "npm:^10.0.0" "@types/jest": "npm:^29.5.14" From ca8874ade9480ed7efde5d14e3b0e9f16552bfa0 Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Mon, 29 Sep 2025 11:49:27 +0200 Subject: [PATCH 02/11] revert `moduleResolution` change --- tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index 41527957..c157144d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,7 +7,7 @@ "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "module": "CommonJS", - "moduleResolution": "Node16", + "moduleResolution": "Node", "noUnusedLocals": true, "noUnusedParameters": true, "outDir": "dist", From 842f91d632d36a255c1de06809699e4b9de926fa Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Thu, 23 Oct 2025 11:02:36 -0230 Subject: [PATCH 03/11] Fix ws lockfile entry --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 34d089f6..3916fcf3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7046,8 +7046,8 @@ __metadata: linkType: hard "ws@npm:7.4.6": - version: 7.5.10 - resolution: "ws@npm:7.5.10" + version: 7.4.6 + resolution: "ws@npm:7.4.6" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -7056,7 +7056,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10/9c796b84ba80ffc2c2adcdfc9c8e9a219ba99caa435c9a8d45f9ac593bba325563b3f83edc5eb067cc6d21b9a6bf2c930adf76dd40af5f58a5ca6859e81858f0 + checksum: 10/150e3f917b7cde568d833a5ea6ccc4132e59c38d04218afcf2b6c7b845752bd011a9e0dc1303c8694d3c402a0bdec5893661a390b71ff88f0fc81a4e4e66b09c languageName: node linkType: hard From b9ad8581680243cf11de4ee08ac7871f917ebc3b Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Thu, 23 Oct 2025 14:22:09 -0230 Subject: [PATCH 04/11] Update base-controller --- package.json | 2 +- yarn.lock | 80 +++++++++------------------------------------------- 2 files changed, 14 insertions(+), 68 deletions(-) diff --git a/package.json b/package.json index 8bd663be..6f27229c 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "dependencies": { "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.0", - "@metamask/base-controller": "^8.0.4", + "@metamask/base-controller": "^8.4.2", "@metamask/controller-utils": "^11.3.0", "@metamask/eth-query": "^4.0.0", "@metamask/messenger": "^0.3.0", diff --git a/yarn.lock b/yarn.lock index 3916fcf3..8a4619ec 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1184,18 +1184,18 @@ __metadata: languageName: node linkType: hard -"@metamask/base-controller@npm:^8.0.1, @metamask/base-controller@npm:^8.0.4, @metamask/base-controller@npm:^8.1.0": - version: 8.4.0 - resolution: "@metamask/base-controller@npm:8.4.0" +"@metamask/base-controller@npm:^8.0.1, @metamask/base-controller@npm:^8.1.0, @metamask/base-controller@npm:^8.4.2": + version: 8.4.2 + resolution: "@metamask/base-controller@npm:8.4.2" dependencies: "@metamask/messenger": "npm:^0.3.0" - "@metamask/utils": "npm:^11.8.0" + "@metamask/utils": "npm:^11.8.1" immer: "npm:^9.0.6" - checksum: 10/1be56bb5c86be8332c2d00e890e7fb4305d4fd1504ed4be7cad8bfa4cce76dc80e78f6706bbad79a45700ef4aa53d3fe0e219e36798244c1f7dfc6ab0a1393f7 + checksum: 10/e5c4d97a35952072dc8e93c90a334ea60a8d9faa7c15584b5ce8f60b151cf56a7dd5304cb8549b183cdd61d53421b45e3c4688170fcd0a3e2c6a184aeb942067 languageName: node linkType: hard -"@metamask/controller-utils@npm:^11.10.0, @metamask/controller-utils@npm:^11.12.0": +"@metamask/controller-utils@npm:^11.10.0, @metamask/controller-utils@npm:^11.12.0, @metamask/controller-utils@npm:^11.3.0": version: 11.14.0 resolution: "@metamask/controller-utils@npm:11.14.0" dependencies: @@ -1216,26 +1216,6 @@ __metadata: languageName: node linkType: hard -"@metamask/controller-utils@npm:^11.3.0": - version: 11.4.4 - resolution: "@metamask/controller-utils@npm:11.4.4" - dependencies: - "@ethereumjs/util": "npm:^8.1.0" - "@metamask/eth-query": "npm:^4.0.0" - "@metamask/ethjs-unit": "npm:^0.3.0" - "@metamask/utils": "npm:^10.0.0" - "@spruceid/siwe-parser": "npm:2.1.0" - "@types/bn.js": "npm:^5.1.5" - bignumber.js: "npm:^9.1.2" - bn.js: "npm:^5.2.1" - eth-ens-namehash: "npm:^2.0.8" - fast-deep-equal: "npm:^3.1.3" - peerDependencies: - "@babel/runtime": ^7.0.0 - checksum: 10/0833800d4733f52fbf232efedc97ce66603430fd20ec10e71e6dc4c23295b3b59cc3c8109b86b8039b9ae0c0d2428815428924c367b88f9ea6013152a86d862b - languageName: node - linkType: hard - "@metamask/error-reporting-service@npm:^2.0.0": version: 2.0.0 resolution: "@metamask/error-reporting-service@npm:2.0.0" @@ -1340,20 +1320,7 @@ __metadata: languageName: node linkType: hard -"@metamask/eth-json-rpc-provider@npm:^4.1.5, @metamask/eth-json-rpc-provider@npm:^4.1.6": - version: 4.1.6 - resolution: "@metamask/eth-json-rpc-provider@npm:4.1.6" - dependencies: - "@metamask/json-rpc-engine": "npm:^10.0.1" - "@metamask/rpc-errors": "npm:^7.0.1" - "@metamask/safe-event-emitter": "npm:^3.0.0" - "@metamask/utils": "npm:^10.0.0" - uuid: "npm:^8.3.2" - checksum: 10/aeec2c362a5386357e9f8c707da9baa4326e83889633723656b6801b6461ea8ab8f020b0d9ed0bbc2d8fd6add4af4c99cc9c9a1cbedca267a033a9f19da41200 - languageName: node - linkType: hard - -"@metamask/eth-json-rpc-provider@npm:^4.1.7, @metamask/eth-json-rpc-provider@npm:^4.1.8": +"@metamask/eth-json-rpc-provider@npm:^4.1.5, @metamask/eth-json-rpc-provider@npm:^4.1.6, @metamask/eth-json-rpc-provider@npm:^4.1.7, @metamask/eth-json-rpc-provider@npm:^4.1.8": version: 4.1.8 resolution: "@metamask/eth-json-rpc-provider@npm:4.1.8" dependencies: @@ -1424,18 +1391,7 @@ __metadata: languageName: node linkType: hard -"@metamask/json-rpc-engine@npm:^10.0.1": - version: 10.0.1 - resolution: "@metamask/json-rpc-engine@npm:10.0.1" - dependencies: - "@metamask/rpc-errors": "npm:^7.0.1" - "@metamask/safe-event-emitter": "npm:^3.0.0" - "@metamask/utils": "npm:^10.0.0" - checksum: 10/15a8eeab9af39b9ed87311da728e81169484ace733a8ef9fc469bd887654e37afa19f9e5228246dc80daad3fbf9b16067e73b2969d37d44acf5bc6ffa2c70082 - languageName: node - linkType: hard - -"@metamask/json-rpc-engine@npm:^10.0.2, @metamask/json-rpc-engine@npm:^10.0.3": +"@metamask/json-rpc-engine@npm:^10.0.1, @metamask/json-rpc-engine@npm:^10.0.2, @metamask/json-rpc-engine@npm:^10.0.3": version: 10.0.3 resolution: "@metamask/json-rpc-engine@npm:10.0.3" dependencies: @@ -1507,16 +1463,6 @@ __metadata: languageName: node linkType: hard -"@metamask/rpc-errors@npm:^7.0.1": - version: 7.0.1 - resolution: "@metamask/rpc-errors@npm:7.0.1" - dependencies: - "@metamask/utils": "npm:^10.0.0" - fast-safe-stringify: "npm:^2.0.6" - checksum: 10/819708b4a7d9695ee67fd867d8f94bb5a273b479a242b17bd53c83d1fceec421fc42928f0bb340f4f138ec803dd82ec9659ce7b09a86aedad6a81d5a39ec5c35 - languageName: node - linkType: hard - "@metamask/rpc-errors@npm:^7.0.2": version: 7.0.3 resolution: "@metamask/rpc-errors@npm:7.0.3" @@ -1558,7 +1504,7 @@ __metadata: "@ethersproject/providers": "npm:^5.7.0" "@lavamoat/allow-scripts": "npm:^3.0.0" "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/base-controller": "npm:^8.0.4" + "@metamask/base-controller": "npm:^8.4.2" "@metamask/controller-utils": "npm:^11.3.0" "@metamask/error-reporting-service": "npm:^2.0.0" "@metamask/eslint-config": "npm:^12.2.0" @@ -1619,9 +1565,9 @@ __metadata: languageName: node linkType: hard -"@metamask/utils@npm:^11.0.1, @metamask/utils@npm:^11.1.0, @metamask/utils@npm:^11.2.0, @metamask/utils@npm:^11.4.2, @metamask/utils@npm:^11.8.0": - version: 11.8.0 - resolution: "@metamask/utils@npm:11.8.0" +"@metamask/utils@npm:^11.0.1, @metamask/utils@npm:^11.1.0, @metamask/utils@npm:^11.2.0, @metamask/utils@npm:^11.4.2, @metamask/utils@npm:^11.8.0, @metamask/utils@npm:^11.8.1": + version: 11.8.1 + resolution: "@metamask/utils@npm:11.8.1" dependencies: "@ethereumjs/tx": "npm:^4.2.0" "@metamask/superstruct": "npm:^3.1.0" @@ -1634,7 +1580,7 @@ __metadata: pony-cause: "npm:^2.1.10" semver: "npm:^7.5.4" uuid: "npm:^9.0.1" - checksum: 10/d5a9d8c04223fc62b0d4a078b505e062f5d1d47e752df36802189bec19a9e68aee7a9b0df9b15e7e6fa15fd9d65f61c7e4909604209dddc21f0943cd9a2fd5d1 + checksum: 10/efd3aab7f86b4a74d396cf1d5fc76e748ff78906802fdc15ec9ce2d1a9bd6b035e8e036ea93eb6b9ea33782c70adb9000772eb7a5e0164e8e9e2ebb077dca3ab languageName: node linkType: hard From 4c94bcbd302f22fc22b41f7276f7199f55a5d3f9 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Thu, 23 Oct 2025 14:27:00 -0230 Subject: [PATCH 05/11] Fix type error --- src/SwapsController.ts | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/SwapsController.ts b/src/SwapsController.ts index c6cdcc35..397d924d 100644 --- a/src/SwapsController.ts +++ b/src/SwapsController.ts @@ -17,11 +17,7 @@ import { type GasFeeEstimates, } from '@metamask/gas-fee-controller'; import type { NetworkClientId } from '@metamask/network-controller'; -import { - getKnownPropertyNames, - isErrorWithMessage, - type Hex, -} from '@metamask/utils'; +import { isErrorWithMessage, type Hex } from '@metamask/utils'; import { Mutex } from 'async-mutex'; import { BigNumber } from 'bignumber.js'; import abiERC20 from 'human-standard-token-abi'; @@ -1260,22 +1256,25 @@ export default class SwapsController extends BaseController< this.#handle && clearTimeout(this.#handle); this.#pollCount = Number(this.#pollCountLimit) + 1; this.update((_state) => { - const currentState = { ..._state }; - const defaultState = getDefaultSwapsControllerState(); - getKnownPropertyNames(defaultState).forEach((key) => { - const typedKey = key; - (_state as any)[typedKey] = defaultState[typedKey]; - }); _state.isInPolling = false; - _state.tokensLastFetched = currentState.tokensLastFetched; - _state.aggregatorMetadataLastFetched = - currentState.aggregatorMetadataLastFetched; - _state.tokens = currentState.tokens; - _state.topAssets = currentState.topAssets; - _state.aggregatorMetadata = currentState.aggregatorMetadata; - _state.chainCache = currentState.chainCache; _state.error.key = error.key; _state.error.description = error.description; + + // Partially reset state + const defaultState = getDefaultSwapsControllerState(); + _state.quotes = defaultState.quotes; + _state.quoteValues = defaultState.quoteValues; + _state.fetchParams = defaultState.fetchParams; + _state.fetchParamsMetaData = defaultState.fetchParamsMetaData; + _state.topAggSavings = defaultState.topAggSavings; + _state.approvalTransaction = defaultState.approvalTransaction; + _state.quotesLastFetched = defaultState.quotesLastFetched; + _state.topAggId = defaultState.topAggId; + _state.isInPolling = defaultState.isInPolling; + _state.pollingCyclesLeft = defaultState.pollingCyclesLeft; + _state.quoteRefreshSeconds = defaultState.quoteRefreshSeconds; + _state.usedGasEstimate = defaultState.usedGasEstimate; + _state.usedCustomGas = defaultState.usedCustomGas; }); } From f73be25ad6d2062e9f0a1785accc7eebe19acaa5 Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Mon, 27 Oct 2025 20:36:06 +0100 Subject: [PATCH 06/11] chore: bump @metamask/base-controller from 8.0.3 to 9.0.9 --- CHANGELOG.md | 7 +++++++ package.json | 2 +- src/SwapsController.ts | 5 +---- yarn.lock | 15 +++++++++++++-- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 696b80fb..7123cff1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- **BREAKING:** Use new `Messenger` from `@metamask/messenger` ([#421](https://github.com/MetaMask/swaps-controller/pull/421)) + - Previously, `SwapsController` accepted a `RestrictedMessenger` instance from `@metamask/base-controller`. +- **BREAKING:** Metadata property `anonymous` renamed to `includeInDebugSnapshot` ([#421](https://github.com/MetaMask/swaps-controller/pull/421)) +- Bump `@metamask/base-controller` from `^8.0.3` to `^9.0.0`(([#421](https://github.com/MetaMask/swaps-controller/pull/421)) + ## [14.0.0] ### Added diff --git a/package.json b/package.json index 6f27229c..52f16fe5 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "dependencies": { "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.0", - "@metamask/base-controller": "^8.4.2", + "@metamask/base-controller": "^9.0.0", "@metamask/controller-utils": "^11.3.0", "@metamask/eth-query": "^4.0.0", "@metamask/messenger": "^0.3.0", diff --git a/src/SwapsController.ts b/src/SwapsController.ts index 397d924d..ba7c38d7 100644 --- a/src/SwapsController.ts +++ b/src/SwapsController.ts @@ -1,9 +1,6 @@ import { Contract } from '@ethersproject/contracts'; import { Web3Provider } from '@ethersproject/providers'; -import { - BaseController, - type StateMetadata, -} from '@metamask/base-controller/next'; +import { BaseController, type StateMetadata } from '@metamask/base-controller'; import { gweiDecToWEIBN, query, diff --git a/yarn.lock b/yarn.lock index 8a4619ec..bfab4e79 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1184,7 +1184,7 @@ __metadata: languageName: node linkType: hard -"@metamask/base-controller@npm:^8.0.1, @metamask/base-controller@npm:^8.1.0, @metamask/base-controller@npm:^8.4.2": +"@metamask/base-controller@npm:^8.0.1, @metamask/base-controller@npm:^8.1.0": version: 8.4.2 resolution: "@metamask/base-controller@npm:8.4.2" dependencies: @@ -1195,6 +1195,17 @@ __metadata: languageName: node linkType: hard +"@metamask/base-controller@npm:^9.0.0": + version: 9.0.0 + resolution: "@metamask/base-controller@npm:9.0.0" + dependencies: + "@metamask/messenger": "npm:^0.3.0" + "@metamask/utils": "npm:^11.8.1" + immer: "npm:^9.0.6" + checksum: 10/27554d34ec85c4b585b87850c90dfeaaf9c7e6430f2ab2fa80a1ec06ccc17641e118afab7ad765a0b7255ffef37bc9f6ca5065d459228a2dc660bc463293310d + languageName: node + linkType: hard + "@metamask/controller-utils@npm:^11.10.0, @metamask/controller-utils@npm:^11.12.0, @metamask/controller-utils@npm:^11.3.0": version: 11.14.0 resolution: "@metamask/controller-utils@npm:11.14.0" @@ -1504,7 +1515,7 @@ __metadata: "@ethersproject/providers": "npm:^5.7.0" "@lavamoat/allow-scripts": "npm:^3.0.0" "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/base-controller": "npm:^8.4.2" + "@metamask/base-controller": "npm:^9.0.0" "@metamask/controller-utils": "npm:^11.3.0" "@metamask/error-reporting-service": "npm:^2.0.0" "@metamask/eslint-config": "npm:^12.2.0" From 7c6749a440713f477afd9a78509c8f541186d84b Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Mon, 27 Oct 2025 20:36:54 +0100 Subject: [PATCH 07/11] fix: remove /next --- src/SwapsController.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SwapsController.test.ts b/src/SwapsController.test.ts index e0d85dbf..d6a33198 100644 --- a/src/SwapsController.test.ts +++ b/src/SwapsController.test.ts @@ -13,7 +13,7 @@ import * as swapsUtil from './swapsUtil'; import { NetworkClientId } from '@metamask/network-controller'; import { FakeProvider } from './fake-provider.test'; import { Hex } from '@metamask/utils'; -import { deriveStateFromMetadata } from '@metamask/base-controller/next'; +import { deriveStateFromMetadata } from '@metamask/base-controller'; import * as ethQueryModule from '@metamask/eth-query'; import { Messenger, From c570d7f4a63ed6a6f47ca7a58f93791bd19f2bcc Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Mon, 27 Oct 2025 20:43:24 +0100 Subject: [PATCH 08/11] fix: peer deeps bump --- CHANGELOG.md | 2 ++ package.json | 4 ++-- yarn.lock | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7123cff1..1c9dc53a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **BREAKING:** Use new `Messenger` from `@metamask/messenger` ([#421](https://github.com/MetaMask/swaps-controller/pull/421)) - Previously, `SwapsController` accepted a `RestrictedMessenger` instance from `@metamask/base-controller`. - **BREAKING:** Metadata property `anonymous` renamed to `includeInDebugSnapshot` ([#421](https://github.com/MetaMask/swaps-controller/pull/421)) +- **BREAKING:** Bump peer dependency `@metamask/gas-fee-controller` from `^24.0.0` to `^25.0.0` ([#421](https://github.com/MetaMask/swaps-controller/pull/421)) +- **BREAKING:** Bump peer dependency `@metamask/network-controller` from `^24.0.0` to `^25.0.0` ([#421](https://github.com/MetaMask/swaps-controller/pull/421)) - Bump `@metamask/base-controller` from `^8.0.3` to `^9.0.0`(([#421](https://github.com/MetaMask/swaps-controller/pull/421)) ## [14.0.0] diff --git a/package.json b/package.json index 52f16fe5..7c3ee6ec 100644 --- a/package.json +++ b/package.json @@ -32,8 +32,8 @@ "prepack": "./scripts/prepack.sh" }, "peerDependencies": { - "@metamask/gas-fee-controller": "^24.0.0", - "@metamask/network-controller": "^24.0.0" + "@metamask/gas-fee-controller": "^25.0.0", + "@metamask/network-controller": "^25.0.0" }, "devDependencies": { "@babel/runtime": "^7.0.0", diff --git a/yarn.lock b/yarn.lock index bfab4e79..47463ef7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1554,8 +1554,8 @@ __metadata: ts-jest: "npm:^29.1.1" typescript: "npm:^5.1.0" peerDependencies: - "@metamask/gas-fee-controller": ^24.0.0 - "@metamask/network-controller": ^24.0.0 + "@metamask/gas-fee-controller": ^25.0.0 + "@metamask/network-controller": ^25.0.0 languageName: unknown linkType: soft From 16c296f5c962863e9a6271a979dd6669c5fb48c8 Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Mon, 27 Oct 2025 20:44:28 +0100 Subject: [PATCH 09/11] fix: dev deps bump --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 7c3ee6ec..0a11cbda 100644 --- a/package.json +++ b/package.json @@ -46,9 +46,9 @@ "@metamask/eslint-config-nodejs": "^12.1.0", "@metamask/eslint-config-typescript": "^12.1.0", "@metamask/eth-json-rpc-provider": "^4.1.6", - "@metamask/gas-fee-controller": "^24.0.0", + "@metamask/gas-fee-controller": "^25.0.0", "@metamask/json-rpc-engine": "^10.0.1", - "@metamask/network-controller": "^24.1.0", + "@metamask/network-controller": "^25.0.0", "@types/jest": "^29.5.14", "@types/node": "^20.10.4", "@typescript-eslint/eslint-plugin": "^5.42.1", From 672a2d6f41890311f3868491ade4a3aec00fa5ce Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Mon, 27 Oct 2025 21:30:20 +0100 Subject: [PATCH 10/11] fix: update lock file --- yarn.lock | 171 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 107 insertions(+), 64 deletions(-) diff --git a/yarn.lock b/yarn.lock index 47463ef7..31ed7a8c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1184,7 +1184,7 @@ __metadata: languageName: node linkType: hard -"@metamask/base-controller@npm:^8.0.1, @metamask/base-controller@npm:^8.1.0": +"@metamask/base-controller@npm:^8.0.1": version: 8.4.2 resolution: "@metamask/base-controller@npm:8.4.2" dependencies: @@ -1206,7 +1206,28 @@ __metadata: languageName: node linkType: hard -"@metamask/controller-utils@npm:^11.10.0, @metamask/controller-utils@npm:^11.12.0, @metamask/controller-utils@npm:^11.3.0": +"@metamask/controller-utils@npm:^11.14.1": + version: 11.14.1 + resolution: "@metamask/controller-utils@npm:11.14.1" + dependencies: + "@metamask/eth-query": "npm:^4.0.0" + "@metamask/ethjs-unit": "npm:^0.3.0" + "@metamask/utils": "npm:^11.8.1" + "@spruceid/siwe-parser": "npm:2.1.0" + "@types/bn.js": "npm:^5.1.5" + bignumber.js: "npm:^9.1.2" + bn.js: "npm:^5.2.1" + cockatiel: "npm:^3.1.2" + eth-ens-namehash: "npm:^2.0.8" + fast-deep-equal: "npm:^3.1.3" + lodash: "npm:^4.17.21" + peerDependencies: + "@babel/runtime": ^7.0.0 + checksum: 10/b00e2ba24a0903ec06c00de4506c789a717ecba3510244cc58435d26c990680e88d884ce417ba39e5cb3b8f7f16f3f42bdc77f284af248b7d1bd60abb80a836c + languageName: node + linkType: hard + +"@metamask/controller-utils@npm:^11.3.0": version: 11.14.0 resolution: "@metamask/controller-utils@npm:11.14.0" dependencies: @@ -1286,52 +1307,49 @@ __metadata: languageName: node linkType: hard -"@metamask/eth-block-tracker@npm:^12.0.0, @metamask/eth-block-tracker@npm:^12.0.1": - version: 12.0.1 - resolution: "@metamask/eth-block-tracker@npm:12.0.1" +"@metamask/eth-block-tracker@npm:^14.0.0": + version: 14.0.0 + resolution: "@metamask/eth-block-tracker@npm:14.0.0" dependencies: - "@metamask/eth-json-rpc-provider": "npm:^4.1.5" - "@metamask/safe-event-emitter": "npm:^3.1.1" - "@metamask/utils": "npm:^11.0.1" + "@metamask/eth-json-rpc-provider": "npm:^5.0.1" + "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/utils": "npm:^11.8.1" json-rpc-random-id: "npm:^1.0.1" - pify: "npm:^5.0.0" - checksum: 10/732dc58819bfb3593e2bde88f0cde5049db70d11ffffbe4ec18353edf2621328741f6ebb2ec5e6f6db26411c15b827941f88ca6eb739b2591624f85cfa5f687b + checksum: 10/63515bcc5fad22dba78d824f1fafd989e9a6770b318b91f46ba4a68326fafbeb9929146a82713f92e4920d489dc3a9bb81b5f457946053e8cf89bc4062788b36 languageName: node linkType: hard -"@metamask/eth-json-rpc-infura@npm:^10.2.0": - version: 10.2.0 - resolution: "@metamask/eth-json-rpc-infura@npm:10.2.0" +"@metamask/eth-json-rpc-infura@npm:^10.3.0": + version: 10.3.0 + resolution: "@metamask/eth-json-rpc-infura@npm:10.3.0" dependencies: - "@metamask/eth-json-rpc-provider": "npm:^4.1.7" - "@metamask/json-rpc-engine": "npm:^10.0.2" + "@metamask/eth-json-rpc-provider": "npm:^5.0.0" + "@metamask/json-rpc-engine": "npm:^10.1.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/utils": "npm:^11.0.1" - checksum: 10/f3e2ac8f8657259978923bdb08cee660ae8e1f6a3f2a67c9e8b93a55030c42b0a8ba45e9321dd6d52f7a4309d1c4241745c2c292d6be0596dd4954ac38d586f6 + checksum: 10/164c9ef1285a0895db668f3949d9258df721d348c857c4337b964f147000221d69fd103851c6483d8dd6bfe851c76cc5299155a8818eac0b92334469c40ccaef languageName: node linkType: hard -"@metamask/eth-json-rpc-middleware@npm:^17.0.1": - version: 17.1.0 - resolution: "@metamask/eth-json-rpc-middleware@npm:17.1.0" +"@metamask/eth-json-rpc-middleware@npm:^21.0.0": + version: 21.0.0 + resolution: "@metamask/eth-json-rpc-middleware@npm:21.0.0" dependencies: - "@metamask/eth-block-tracker": "npm:^12.0.0" - "@metamask/eth-json-rpc-provider": "npm:^4.1.7" - "@metamask/eth-sig-util": "npm:^8.1.2" - "@metamask/json-rpc-engine": "npm:^10.0.2" + "@metamask/eth-block-tracker": "npm:^14.0.0" + "@metamask/eth-json-rpc-provider": "npm:^5.0.1" + "@metamask/eth-sig-util": "npm:^8.2.0" + "@metamask/json-rpc-engine": "npm:^10.1.1" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/utils": "npm:^11.1.0" - "@types/bn.js": "npm:^5.1.5" - bn.js: "npm:^5.2.1" + "@metamask/utils": "npm:^11.8.1" klona: "npm:^2.0.6" pify: "npm:^5.0.0" safe-stable-stringify: "npm:^2.4.3" - checksum: 10/4a2d66a7b38b4a3eb5cbe290815681b803829b5e367a484e2ac9b78fdea70a1c7dce4a8f924140d745a05f945b4dfdd53c883fd2661bc1c22dc563b4f0aafd38 + checksum: 10/3859035c7647202160fa73a8b2837153454b0097713bf822b4c22a14e971176895546c548e5899f0e600d1adbc3b79071ad468a8a1df3f06247ff5bd8b867353 languageName: node linkType: hard -"@metamask/eth-json-rpc-provider@npm:^4.1.5, @metamask/eth-json-rpc-provider@npm:^4.1.6, @metamask/eth-json-rpc-provider@npm:^4.1.7, @metamask/eth-json-rpc-provider@npm:^4.1.8": +"@metamask/eth-json-rpc-provider@npm:^4.1.6": version: 4.1.8 resolution: "@metamask/eth-json-rpc-provider@npm:4.1.8" dependencies: @@ -1344,6 +1362,19 @@ __metadata: languageName: node linkType: hard +"@metamask/eth-json-rpc-provider@npm:^5.0.0, @metamask/eth-json-rpc-provider@npm:^5.0.1": + version: 5.0.1 + resolution: "@metamask/eth-json-rpc-provider@npm:5.0.1" + dependencies: + "@metamask/json-rpc-engine": "npm:^10.1.1" + "@metamask/rpc-errors": "npm:^7.0.2" + "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/utils": "npm:^11.8.1" + uuid: "npm:^8.3.2" + checksum: 10/1b874b04a0d8c53edf7036c8dbf4403101afba548cfd3bfc1fa969b893905a72e44c36a17b60ccb202f14a8e012b08031b4649c2ee77d604dc84dfbc6c88b812 + languageName: node + linkType: hard + "@metamask/eth-query@npm:^4.0.0": version: 4.0.0 resolution: "@metamask/eth-query@npm:4.0.0" @@ -1354,7 +1385,7 @@ __metadata: languageName: node linkType: hard -"@metamask/eth-sig-util@npm:^8.1.2": +"@metamask/eth-sig-util@npm:^8.2.0": version: 8.2.0 resolution: "@metamask/eth-sig-util@npm:8.2.0" dependencies: @@ -1381,28 +1412,28 @@ __metadata: languageName: node linkType: hard -"@metamask/gas-fee-controller@npm:^24.0.0": - version: 24.0.0 - resolution: "@metamask/gas-fee-controller@npm:24.0.0" +"@metamask/gas-fee-controller@npm:^25.0.0": + version: 25.0.0 + resolution: "@metamask/gas-fee-controller@npm:25.0.0" dependencies: - "@metamask/base-controller": "npm:^8.0.1" - "@metamask/controller-utils": "npm:^11.10.0" + "@metamask/base-controller": "npm:^9.0.0" + "@metamask/controller-utils": "npm:^11.14.1" "@metamask/eth-query": "npm:^4.0.0" "@metamask/ethjs-unit": "npm:^0.3.0" - "@metamask/polling-controller": "npm:^14.0.0" - "@metamask/utils": "npm:^11.2.0" + "@metamask/polling-controller": "npm:^15.0.0" + "@metamask/utils": "npm:^11.8.1" "@types/bn.js": "npm:^5.1.5" "@types/uuid": "npm:^8.3.0" bn.js: "npm:^5.2.1" uuid: "npm:^8.3.2" peerDependencies: "@babel/runtime": ^7.0.0 - "@metamask/network-controller": ^24.0.0 - checksum: 10/125e79a3854bea3e0655c3e76f4b2078827ceb348917ae040fa5a75a4cf4091ecc41606583952add508fdcd7fa90b9e20c49c096080db704043e7cf0c8bd99fd + "@metamask/network-controller": ^25.0.0 + checksum: 10/eb4d8e3534482763f7a27aa6cfa64b91b5c505276aca4a4d983bc52e4485090d558f0d206ce41e976e14dbfcc9bb8e24d508ef9eb5c1bad1568bae67611c80d3 languageName: node linkType: hard -"@metamask/json-rpc-engine@npm:^10.0.1, @metamask/json-rpc-engine@npm:^10.0.2, @metamask/json-rpc-engine@npm:^10.0.3": +"@metamask/json-rpc-engine@npm:^10.0.1, @metamask/json-rpc-engine@npm:^10.0.3": version: 10.0.3 resolution: "@metamask/json-rpc-engine@npm:10.0.3" dependencies: @@ -1413,6 +1444,17 @@ __metadata: languageName: node linkType: hard +"@metamask/json-rpc-engine@npm:^10.1.0, @metamask/json-rpc-engine@npm:^10.1.1": + version: 10.1.1 + resolution: "@metamask/json-rpc-engine@npm:10.1.1" + dependencies: + "@metamask/rpc-errors": "npm:^7.0.2" + "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/utils": "npm:^11.8.1" + checksum: 10/ad28e430543ca93d4487ff3f9c2d2247013ed9bc1d73867b06f2cea09b0e864207c856cc90ef945e7323e3dacc03205ffdbaddce34fc6c9165cd96bd55dc7bd0 + languageName: node + linkType: hard + "@metamask/messenger@npm:^0.3.0": version: 0.3.0 resolution: "@metamask/messenger@npm:0.3.0" @@ -1420,21 +1462,22 @@ __metadata: languageName: node linkType: hard -"@metamask/network-controller@npm:^24.1.0": - version: 24.1.0 - resolution: "@metamask/network-controller@npm:24.1.0" +"@metamask/network-controller@npm:^25.0.0": + version: 25.0.0 + resolution: "@metamask/network-controller@npm:25.0.0" dependencies: - "@metamask/base-controller": "npm:^8.1.0" - "@metamask/controller-utils": "npm:^11.12.0" - "@metamask/eth-block-tracker": "npm:^12.0.1" - "@metamask/eth-json-rpc-infura": "npm:^10.2.0" - "@metamask/eth-json-rpc-middleware": "npm:^17.0.1" - "@metamask/eth-json-rpc-provider": "npm:^4.1.8" + "@metamask/base-controller": "npm:^9.0.0" + "@metamask/controller-utils": "npm:^11.14.1" + "@metamask/eth-block-tracker": "npm:^14.0.0" + "@metamask/eth-json-rpc-infura": "npm:^10.3.0" + "@metamask/eth-json-rpc-middleware": "npm:^21.0.0" + "@metamask/eth-json-rpc-provider": "npm:^5.0.1" "@metamask/eth-query": "npm:^4.0.0" - "@metamask/json-rpc-engine": "npm:^10.0.3" + "@metamask/json-rpc-engine": "npm:^10.1.1" + "@metamask/messenger": "npm:^0.3.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/swappable-obj-proxy": "npm:^2.3.0" - "@metamask/utils": "npm:^11.4.2" + "@metamask/utils": "npm:^11.8.1" async-mutex: "npm:^0.5.0" fast-deep-equal: "npm:^3.1.3" immer: "npm:^9.0.6" @@ -1443,8 +1486,8 @@ __metadata: uri-js: "npm:^4.4.1" uuid: "npm:^8.3.2" peerDependencies: - "@metamask/error-reporting-service": ^2.0.0 - checksum: 10/ffb19ed3260c7d70e1b2acd09b4c59758d562435dd54d591dbcc0a7b7bf616ca750416dc62db173caecda5aee241af292a8653e6254ee515286d3af08a56c9b5 + "@metamask/error-reporting-service": ^3.0.0 + checksum: 10/1fcad4f22f4b090b7de64134fdc6e4085f5bb4bb1dea53d7d25122c708f18d90a61caa5e6098a483ecbbb8cd93cdd2a145484cb129c7e8def4a9b726e9b4ee4c languageName: node linkType: hard @@ -1458,19 +1501,19 @@ __metadata: languageName: node linkType: hard -"@metamask/polling-controller@npm:^14.0.0": - version: 14.0.0 - resolution: "@metamask/polling-controller@npm:14.0.0" +"@metamask/polling-controller@npm:^15.0.0": + version: 15.0.0 + resolution: "@metamask/polling-controller@npm:15.0.0" dependencies: - "@metamask/base-controller": "npm:^8.0.1" - "@metamask/controller-utils": "npm:^11.10.0" - "@metamask/utils": "npm:^11.2.0" + "@metamask/base-controller": "npm:^9.0.0" + "@metamask/controller-utils": "npm:^11.14.1" + "@metamask/utils": "npm:^11.8.1" "@types/uuid": "npm:^8.3.0" fast-json-stable-stringify: "npm:^2.1.0" uuid: "npm:^8.3.2" peerDependencies: - "@metamask/network-controller": ^24.0.0 - checksum: 10/94c0744b49a2f262b266fa3b58010650876f49d295902d9796a08fa30d6584d18b635a70a5f02d9676cb623871b45afd7892bdc7546e6ddac574e02b6cd5be36 + "@metamask/network-controller": ^25.0.0 + checksum: 10/e1f5d45ce3b083d154ccacba54453bdeea6bbfafc461be559ce15ae435e0df500ebab8ffd06a5e7bc52e904c29d06c1a5ca0a29193f8778ca39dfd134a7f0794 languageName: node linkType: hard @@ -1484,7 +1527,7 @@ __metadata: languageName: node linkType: hard -"@metamask/safe-event-emitter@npm:^3.0.0, @metamask/safe-event-emitter@npm:^3.1.1": +"@metamask/safe-event-emitter@npm:^3.0.0": version: 3.1.2 resolution: "@metamask/safe-event-emitter@npm:3.1.2" checksum: 10/8ef7579f9317eb5c94ecf3e6abb8d13b119af274b678805eac76abe4c0667bfdf539f385e552bb973e96333b71b77aa7c787cb3fce9cd5fb4b00f1dbbabf880d @@ -1524,10 +1567,10 @@ __metadata: "@metamask/eslint-config-typescript": "npm:^12.1.0" "@metamask/eth-json-rpc-provider": "npm:^4.1.6" "@metamask/eth-query": "npm:^4.0.0" - "@metamask/gas-fee-controller": "npm:^24.0.0" + "@metamask/gas-fee-controller": "npm:^25.0.0" "@metamask/json-rpc-engine": "npm:^10.0.1" "@metamask/messenger": "npm:^0.3.0" - "@metamask/network-controller": "npm:^24.1.0" + "@metamask/network-controller": "npm:^25.0.0" "@metamask/utils": "npm:^10.0.0" "@types/jest": "npm:^29.5.14" "@types/node": "npm:^20.10.4" @@ -1576,7 +1619,7 @@ __metadata: languageName: node linkType: hard -"@metamask/utils@npm:^11.0.1, @metamask/utils@npm:^11.1.0, @metamask/utils@npm:^11.2.0, @metamask/utils@npm:^11.4.2, @metamask/utils@npm:^11.8.0, @metamask/utils@npm:^11.8.1": +"@metamask/utils@npm:^11.0.1, @metamask/utils@npm:^11.1.0, @metamask/utils@npm:^11.4.2, @metamask/utils@npm:^11.8.0, @metamask/utils@npm:^11.8.1": version: 11.8.1 resolution: "@metamask/utils@npm:11.8.1" dependencies: From d49af03436a68d973e257bce376af1aa5b227ae4 Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Mon, 27 Oct 2025 21:30:53 +0100 Subject: [PATCH 11/11] fix: dedupe deps --- yarn.lock | 38 +++----------------------------------- 1 file changed, 3 insertions(+), 35 deletions(-) diff --git a/yarn.lock b/yarn.lock index 31ed7a8c..afbb9a83 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1206,7 +1206,7 @@ __metadata: languageName: node linkType: hard -"@metamask/controller-utils@npm:^11.14.1": +"@metamask/controller-utils@npm:^11.14.1, @metamask/controller-utils@npm:^11.3.0": version: 11.14.1 resolution: "@metamask/controller-utils@npm:11.14.1" dependencies: @@ -1227,27 +1227,6 @@ __metadata: languageName: node linkType: hard -"@metamask/controller-utils@npm:^11.3.0": - version: 11.14.0 - resolution: "@metamask/controller-utils@npm:11.14.0" - dependencies: - "@metamask/eth-query": "npm:^4.0.0" - "@metamask/ethjs-unit": "npm:^0.3.0" - "@metamask/utils": "npm:^11.8.0" - "@spruceid/siwe-parser": "npm:2.1.0" - "@types/bn.js": "npm:^5.1.5" - bignumber.js: "npm:^9.1.2" - bn.js: "npm:^5.2.1" - cockatiel: "npm:^3.1.2" - eth-ens-namehash: "npm:^2.0.8" - fast-deep-equal: "npm:^3.1.3" - lodash: "npm:^4.17.21" - peerDependencies: - "@babel/runtime": ^7.0.0 - checksum: 10/68a30d60a0f94316635dbe6b7f4edb0adc62873b7834a72a1342b2f61ff85fdd1d994a4168af6b15aa23a8385627df7becb14a7aa033b875d96a97b9c07120c4 - languageName: node - linkType: hard - "@metamask/error-reporting-service@npm:^2.0.0": version: 2.0.0 resolution: "@metamask/error-reporting-service@npm:2.0.0" @@ -1433,18 +1412,7 @@ __metadata: languageName: node linkType: hard -"@metamask/json-rpc-engine@npm:^10.0.1, @metamask/json-rpc-engine@npm:^10.0.3": - version: 10.0.3 - resolution: "@metamask/json-rpc-engine@npm:10.0.3" - dependencies: - "@metamask/rpc-errors": "npm:^7.0.2" - "@metamask/safe-event-emitter": "npm:^3.0.0" - "@metamask/utils": "npm:^11.1.0" - checksum: 10/0558f511aada9bfb13d3b55f6a834543431cc6148a681d3a2885f6171fefbcf092ea4aabc7bbb547de6fdf382cdaf6a73ca5175c63c2d1b6560f763b4b37162e - languageName: node - linkType: hard - -"@metamask/json-rpc-engine@npm:^10.1.0, @metamask/json-rpc-engine@npm:^10.1.1": +"@metamask/json-rpc-engine@npm:^10.0.1, @metamask/json-rpc-engine@npm:^10.0.3, @metamask/json-rpc-engine@npm:^10.1.0, @metamask/json-rpc-engine@npm:^10.1.1": version: 10.1.1 resolution: "@metamask/json-rpc-engine@npm:10.1.1" dependencies: @@ -1619,7 +1587,7 @@ __metadata: languageName: node linkType: hard -"@metamask/utils@npm:^11.0.1, @metamask/utils@npm:^11.1.0, @metamask/utils@npm:^11.4.2, @metamask/utils@npm:^11.8.0, @metamask/utils@npm:^11.8.1": +"@metamask/utils@npm:^11.0.1, @metamask/utils@npm:^11.1.0, @metamask/utils@npm:^11.4.2, @metamask/utils@npm:^11.8.1": version: 11.8.1 resolution: "@metamask/utils@npm:11.8.1" dependencies: