diff --git a/CHANGELOG.md b/CHANGELOG.md index 696b80fb..1c9dc53a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,15 @@ 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)) +- **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] ### Added diff --git a/package.json b/package.json index 90ee447f..0a11cbda 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", @@ -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", @@ -73,9 +73,10 @@ "dependencies": { "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.0", - "@metamask/base-controller": "^8.0.3", + "@metamask/base-controller": "^9.0.0", "@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..d6a33198 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'; 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..ba7c38d7 100644 --- a/src/SwapsController.ts +++ b/src/SwapsController.ts @@ -1,7 +1,6 @@ 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'; import { gweiDecToWEIBN, query, @@ -15,11 +14,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'; @@ -75,121 +70,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 +665,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( @@ -1258,22 +1253,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; }); } @@ -1328,7 +1326,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 +1349,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/yarn.lock b/yarn.lock index 52e71a2b..afbb9a83 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1184,35 +1184,35 @@ __metadata: languageName: node linkType: hard -"@metamask/base-controller@npm:^8.0.1, @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": + 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/base-controller@npm:^8.0.3": - version: 8.3.0 - resolution: "@metamask/base-controller@npm:8.3.0" +"@metamask/base-controller@npm:^9.0.0": + version: 9.0.0 + resolution: "@metamask/base-controller@npm:9.0.0" dependencies: - "@metamask/messenger": "npm:^0.2.0" - "@metamask/utils": "npm:^11.4.2" + "@metamask/messenger": "npm:^0.3.0" + "@metamask/utils": "npm:^11.8.1" immer: "npm:^9.0.6" - checksum: 10/f4dec29cbf984e38c8dab331a7b98ad3ebb81d1e64d25f28e01025a0e7b4b4f6ead9e5b830852b7eabd8ad971753868a932dc2d0076f4bd3eec415d8604eb7a4 + checksum: 10/27554d34ec85c4b585b87850c90dfeaaf9c7e6430f2ab2fa80a1ec06ccc17641e118afab7ad765a0b7255ffef37bc9f6ca5065d459228a2dc660bc463293310d 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" +"@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: "@metamask/eth-query": "npm:^4.0.0" "@metamask/ethjs-unit": "npm:^0.3.0" - "@metamask/utils": "npm:^11.8.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" @@ -1223,27 +1223,7 @@ __metadata: lodash: "npm:^4.17.21" peerDependencies: "@babel/runtime": ^7.0.0 - checksum: 10/68a30d60a0f94316635dbe6b7f4edb0adc62873b7834a72a1342b2f61ff85fdd1d994a4168af6b15aa23a8385627df7becb14a7aa033b875d96a97b9c07120c4 - 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 + checksum: 10/b00e2ba24a0903ec06c00de4506c789a717ecba3510244cc58435d26c990680e88d884ce417ba39e5cb3b8f7f16f3f42bdc77f284af248b7d1bd60abb80a836c languageName: node linkType: hard @@ -1306,74 +1286,71 @@ __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": - version: 4.1.6 - resolution: "@metamask/eth-json-rpc-provider@npm:4.1.6" +"@metamask/eth-json-rpc-provider@npm:^4.1.6": + version: 4.1.8 + resolution: "@metamask/eth-json-rpc-provider@npm:4.1.8" dependencies: - "@metamask/json-rpc-engine": "npm:^10.0.1" - "@metamask/rpc-errors": "npm:^7.0.1" + "@metamask/json-rpc-engine": "npm:^10.0.3" + "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/safe-event-emitter": "npm:^3.0.0" - "@metamask/utils": "npm:^10.0.0" + "@metamask/utils": "npm:^11.1.0" uuid: "npm:^8.3.2" - checksum: 10/aeec2c362a5386357e9f8c707da9baa4326e83889633723656b6801b6461ea8ab8f020b0d9ed0bbc2d8fd6add4af4c99cc9c9a1cbedca267a033a9f19da41200 + checksum: 10/8247f22a23ec0cae7f80c7755b00bfa337a27cc4d2ea416ed08f65a898cd6110057a3710e55e0454db7406c114a4a570b9a286baa8136db6f1c485f62a6c2800 languageName: node linkType: hard -"@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" +"@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.0.3" + "@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.1.0" + "@metamask/utils": "npm:^11.8.1" uuid: "npm:^8.3.2" - checksum: 10/8247f22a23ec0cae7f80c7755b00bfa337a27cc4d2ea416ed08f65a898cd6110057a3710e55e0454db7406c114a4a570b9a286baa8136db6f1c485f62a6c2800 + checksum: 10/1b874b04a0d8c53edf7036c8dbf4403101afba548cfd3bfc1fa969b893905a72e44c36a17b60ccb202f14a8e012b08031b4649c2ee77d604dc84dfbc6c88b812 languageName: node linkType: hard @@ -1387,7 +1364,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: @@ -1414,53 +1391,35 @@ __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 - 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 + "@metamask/network-controller": ^25.0.0 + checksum: 10/eb4d8e3534482763f7a27aa6cfa64b91b5c505276aca4a4d983bc52e4485090d558f0d206ce41e976e14dbfcc9bb8e24d508ef9eb5c1bad1568bae67611c80d3 languageName: node linkType: hard -"@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" +"@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: "@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/messenger@npm:^0.2.0": - version: 0.2.0 - resolution: "@metamask/messenger@npm:0.2.0" - checksum: 10/48f682d9cde1208fbda0936022dea37acc3828cc221203b5f917df25c131d9a250dc5e86e9263f5dba8ee7c05adc6752a68dfb57da7d297f95f38b052f4fe5c1 + "@metamask/utils": "npm:^11.8.1" + checksum: 10/ad28e430543ca93d4487ff3f9c2d2247013ed9bc1d73867b06f2cea09b0e864207c856cc90ef945e7323e3dacc03205ffdbaddce34fc6c9165cd96bd55dc7bd0 languageName: node linkType: hard @@ -1471,21 +1430,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" @@ -1494,8 +1454,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 @@ -1509,29 +1469,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 - 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 + "@metamask/network-controller": ^25.0.0 + checksum: 10/e1f5d45ce3b083d154ccacba54453bdeea6bbfafc461be559ce15ae435e0df500ebab8ffd06a5e7bc52e904c29d06c1a5ca0a29193f8778ca39dfd134a7f0794 languageName: node linkType: hard @@ -1545,7 +1495,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 @@ -1576,7 +1526,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:^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" @@ -1585,9 +1535,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/network-controller": "npm:^24.1.0" + "@metamask/messenger": "npm:^0.3.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" @@ -1614,8 +1565,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 @@ -1636,9 +1587,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.4.2, @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" @@ -1651,7 +1602,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 @@ -7063,8 +7014,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 @@ -7073,7 +7024,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10/9c796b84ba80ffc2c2adcdfc9c8e9a219ba99caa435c9a8d45f9ac593bba325563b3f83edc5eb067cc6d21b9a6bf2c930adf76dd40af5f58a5ca6859e81858f0 + checksum: 10/150e3f917b7cde568d833a5ea6ccc4132e59c38d04218afcf2b6c7b845752bd011a9e0dc1303c8694d3c402a0bdec5893661a390b71ff88f0fc81a4e4e66b09c languageName: node linkType: hard