diff --git a/package.json b/package.json index feb9d66fd0..5d0f731505 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/core-monorepo", - "version": "977.0.0", + "version": "978.0.0", "private": true, "description": "Monorepo for packages shared between MetaMask clients", "repository": { @@ -55,7 +55,7 @@ "@metamask/eth-block-tracker": "^15.0.1", "@metamask/eth-json-rpc-provider": "^6.0.1", "@metamask/json-rpc-engine": "^10.5.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/utils": "^11.9.0", "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", diff --git a/packages/account-tree-controller/CHANGELOG.md b/packages/account-tree-controller/CHANGELOG.md index 8eef03ff2d..7144f0a421 100644 --- a/packages/account-tree-controller/CHANGELOG.md +++ b/packages/account-tree-controller/CHANGELOG.md @@ -14,7 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Bump `@metamask/accounts-controller` from `^38.0.0` to `^38.1.0` ([#8755](https://github.com/MetaMask/core/pull/8755)) +- Bump `@metamask/accounts-controller` from `^38.0.0` to `^38.1.1` ([#8755](https://github.com/MetaMask/core/pull/8755), [#8774](https://github.com/MetaMask/core/pull/8774)) ## [7.3.0] diff --git a/packages/account-tree-controller/package.json b/packages/account-tree-controller/package.json index 5c446de004..c27f2bd60b 100644 --- a/packages/account-tree-controller/package.json +++ b/packages/account-tree-controller/package.json @@ -53,7 +53,7 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@metamask/accounts-controller": "^38.1.0", + "@metamask/accounts-controller": "^38.1.1", "@metamask/base-controller": "^9.1.0", "@metamask/keyring-api": "^23.1.0", "@metamask/keyring-controller": "^25.5.0", diff --git a/packages/accounts-controller/CHANGELOG.md b/packages/accounts-controller/CHANGELOG.md index 014a12d630..eb53fa85f3 100644 --- a/packages/accounts-controller/CHANGELOG.md +++ b/packages/accounts-controller/CHANGELOG.md @@ -7,9 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [38.1.1] + ### Changed -- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765)) +- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774)) ## [38.1.0] @@ -90,8 +92,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Add `accountIdByAddress` mapping to state ([#7893](https://github.com/MetaMask/core/pull/7893)) - This state was added to improve lookup times for an account by address from O(n) to O(1). - `getAccountByAddress` also leverages this new map, thus, should be slightly faster too. -- Add logging capabilities ([#8118](https://github.com/MetaMask/core/pull/8118/)) -- Expose missing public `AccountsController` methods through its messenger ([#7976](https://github.com/MetaMask/core/pull/7976/)) +- Add logging capabilities ([#8118](https://github.com/MetaMask/core/pull/8118)) +- Expose missing public `AccountsController` methods through its messenger ([#7976](https://github.com/MetaMask/core/pull/7976)) - The following actions are now available: - `AccountController:loadBackupAction` - Corresponding action types (e.g. `AccountControllerLoadBackupAction`) are available as well. @@ -236,7 +238,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Use new typed `KeyringAccount.options` for BIP-44 compatible accounts ([#6122](https://github.com/MetaMask/core/pull/6122)), ([#6147](https://github.com/MetaMask/core/pull/6147)) +- Use new typed `KeyringAccount.options` for BIP-44 compatible accounts, ([#6122](https://github.com/MetaMask/core/pull/6122), [#6147](https://github.com/MetaMask/core/pull/6147)) ### Changed @@ -307,7 +309,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed -- `@metamask/network-controller` peer dependency is no longer also a direct dependency ([#5464](https://github.com/MetaMask/core/pull/5464))) +- `@metamask/network-controller` peer dependency is no longer also a direct dependency) ([#5464](https://github.com/MetaMask/core/pull/5464)) ## [26.1.0] @@ -345,7 +347,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Bump `@metamask/keyring-controller"` from `^19.1.0` to `^19.2.0` ([#5357](https://github.com/MetaMask/core/pull/5357)) - Bump `@metamask/keyring-api"` from `^17.0.0` to `^17.2.0` ([#5366](https://github.com/MetaMask/core/pull/5366)) -- Bump `@metamask/keyring-internal-api` from `^4.0.1` to `^4.0.3` ([#5356](https://github.com/MetaMask/core/pull/5356)), ([#5366](https://github.com/MetaMask/core/pull/5366)) +- Bump `@metamask/keyring-internal-api` from `^4.0.1` to `^4.0.3`, ([#5356](https://github.com/MetaMask/core/pull/5356), [#5366](https://github.com/MetaMask/core/pull/5366)) - Bump `@metamask/eth-snap-keyring` from `^10.0.0` to `^11.1.0` ([#5366](https://github.com/MetaMask/core/pull/5366)) - Bump `@metamask/utils` from `^11.1.0` to `^11.2.0` ([#5301](https://github.com/MetaMask/core/pull/5301)) @@ -358,7 +360,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- **BREAKING:** Add `@metamask/network-controller@^22.0.0` peer dependency ([#5215](https://github.com/MetaMask/core/pull/5215)), ([#5327](https://github.com/MetaMask/core/pull/5327)) +- **BREAKING:** Add `@metamask/network-controller@^22.0.0` peer dependency, ([#5215](https://github.com/MetaMask/core/pull/5215), [#5327](https://github.com/MetaMask/core/pull/5327)) ## [23.1.0] @@ -379,7 +381,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **BREAKING:** Bump `@metamask/snaps-controllers` peer dependency from `^9.7.0` to `^9.19.0` ([#5265](https://github.com/MetaMask/core/pull/5265)) - Bump `@metamask/keyring-api"` from `^16.1.0` to `^17.0.0` ([#5280](https://github.com/MetaMask/core/pull/5280)) - Bump `@metamask/eth-snap-keyring` from `^9.1.1` to `^10.0.0` ([#5280](https://github.com/MetaMask/core/pull/5280)) -- Bump `@metamask/snaps-sdk` from `^6.7.0` to `^6.17.1` ([#5220](https://github.com/MetaMask/core/pull/5220)), ([#5265](https://github.com/MetaMask/core/pull/5265)) +- Bump `@metamask/snaps-sdk` from `^6.7.0` to `^6.17.1`, ([#5220](https://github.com/MetaMask/core/pull/5220), [#5265](https://github.com/MetaMask/core/pull/5265)) - Bump `@metamask/snaps-utils` from `^8.9.0` to `^8.10.0` ([#5265](https://github.com/MetaMask/core/pull/5265)) - Bump `@metamask/utils` from `^11.0.1` to `^11.1.0` ([#5223](https://github.com/MetaMask/core/pull/5223)) @@ -398,9 +400,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - **BREAKING:** Now requires `SnapKeyring:account{AssetList,Balances,Transactions}Updated` events to be registered on the messenger ([#5190](https://github.com/MetaMask/core/pull/5190)) -- Bump `@metamask/keyring-api` from `^14.0.0` to `^16.1.0` ([#5190](https://github.com/MetaMask/core/pull/5190)), ([#5208](https://github.com/MetaMask/core/pull/5208)) -- Bump `@metamask/keyring-internal-api` from `^2.0.1` to `^4.0.1` ([#5190](https://github.com/MetaMask/core/pull/5190)), ([#5208](https://github.com/MetaMask/core/pull/5208)) -- Bump `@metamask/eth-snap-keyring` from `^8.1.1` to `^9.1.1` ([#5190](https://github.com/MetaMask/core/pull/5190)), ([#5208](https://github.com/MetaMask/core/pull/5208)) +- Bump `@metamask/keyring-api` from `^14.0.0` to `^16.1.0`, ([#5190](https://github.com/MetaMask/core/pull/5190), [#5208](https://github.com/MetaMask/core/pull/5208)) +- Bump `@metamask/keyring-internal-api` from `^2.0.1` to `^4.0.1`, ([#5190](https://github.com/MetaMask/core/pull/5190), [#5208](https://github.com/MetaMask/core/pull/5208)) +- Bump `@metamask/eth-snap-keyring` from `^8.1.1` to `^9.1.1`, ([#5190](https://github.com/MetaMask/core/pull/5190), [#5208](https://github.com/MetaMask/core/pull/5208)) ## [21.0.2] @@ -420,9 +422,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- **BREAKING:** Add `scopes` field to `KeyringAccount` ([#5066](https://github.com/MetaMask/core/pull/5066)), ([#5136](https://github.com/MetaMask/core/pull/5136)) +- **BREAKING:** Add `scopes` field to `KeyringAccount`, ([#5066](https://github.com/MetaMask/core/pull/5066), [#5136](https://github.com/MetaMask/core/pull/5136)) - This field is now required and will be used to identify the supported chains (using CAIP-2 chain IDs) for every accounts. -- Bump `@metamask/base-controller` from `^7.0.0` to `^7.1.1` ([#5079](https://github.com/MetaMask/core/pull/5079)), ([#5135](https://github.com/MetaMask/core/pull/5135)) +- Bump `@metamask/base-controller` from `^7.0.0` to `^7.1.1`, ([#5079](https://github.com/MetaMask/core/pull/5079), [#5135](https://github.com/MetaMask/core/pull/5135)) - Bump `@metamask/utils` to `^11.0.1` ([#5080](https://github.com/MetaMask/core/pull/5080)) - Bump `@metamask/rpc-errors` to `^7.0.2` ([#5080](https://github.com/MetaMask/core/pull/5080)) @@ -454,7 +456,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- **BREAKING:** Bump peer dependency `@metamask/keyring-controller` from `^18.0.0` to `^19.0.0` ([#4915](https://github.com/MetaMask/core/pull/4956)) +- **BREAKING:** Bump peer dependency `@metamask/keyring-controller` from `^18.0.0` to `^19.0.0` ([#4915](https://github.com/MetaMask/core/pull/4915)) - **BREAKING:** Bump `@metamask/keyring-api` from `^8.1.3` to `^10.1.0` ([#4948](https://github.com/MetaMask/core/pull/4948)) - If you are depending on `@metamask/providers` directly, you will need to upgrade to `18.1.0`. - Bump `@metamask/eth-snap-keyring` from `^4.3.6` to `^5.0.1` ([#4948](https://github.com/MetaMask/core/pull/4948)) @@ -479,7 +481,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Bump accounts related packages ([#4713](https://github.com/MetaMask/core/pull/4713)), ([#4728](https://github.com/MetaMask/core/pull/4728)) +- Bump accounts related packages, ([#4713](https://github.com/MetaMask/core/pull/4713), [#4728](https://github.com/MetaMask/core/pull/4728)) - Those packages are now built slightly differently and are part of the [accounts monorepo](https://github.com/MetaMask/accounts). - Bump `@metamask/keyring-api` from `^8.1.0` to `^8.1.4` - Bump `@metamask/eth-snap-keyring` from `^4.3.3` to `^4.3.6` @@ -503,7 +505,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ["Are the Types Wrong?"](https://arethetypeswrong.github.io/) tool as ["masquerading as CJS"](https://github.com/arethetypeswrong/arethetypeswrong.github.io/blob/main/docs/problems/FalseCJS.md). All of the ATTW checks now pass. -- Remove chunk files ([#4648](https://github.com/MetaMask/core/pull/4648)). +- Remove chunk files. ([#4648](https://github.com/MetaMask/core/pull/4648)) - Previously, the build tool we used to generate JavaScript files extracted common code to "chunk" files. While this was intended to make this package more tree-shakeable, it also made debugging more difficult for our @@ -513,7 +515,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Add event `AccountsController:accountRenamed` and export corresponding event type `AccountsControllerAccountRenamedEvent` ([#4664](https://github.com/MetaMask/core/pull/4664)), ([#4660](https://github.com/MetaMask/core/pull/4660)) +- Add event `AccountsController:accountRenamed` and export corresponding event type `AccountsControllerAccountRenamedEvent`, ([#4664](https://github.com/MetaMask/core/pull/4664), [#4660](https://github.com/MetaMask/core/pull/4660)) - Add new `nameLastUpdatedAt` timestamp to account's metadata ([#4589](https://github.com/MetaMask/core/pull/4589)) ### Changed @@ -797,7 +799,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Initial release ([#1637](https://github.com/MetaMask/core/pull/1637)) -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/accounts-controller@38.1.0...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/accounts-controller@38.1.1...HEAD +[38.1.1]: https://github.com/MetaMask/core/compare/@metamask/accounts-controller@38.1.0...@metamask/accounts-controller@38.1.1 [38.1.0]: https://github.com/MetaMask/core/compare/@metamask/accounts-controller@38.0.0...@metamask/accounts-controller@38.1.0 [38.0.0]: https://github.com/MetaMask/core/compare/@metamask/accounts-controller@37.2.0...@metamask/accounts-controller@38.0.0 [37.2.0]: https://github.com/MetaMask/core/compare/@metamask/accounts-controller@37.1.1...@metamask/accounts-controller@37.2.0 diff --git a/packages/accounts-controller/package.json b/packages/accounts-controller/package.json index 1ce5482461..5d59260faa 100644 --- a/packages/accounts-controller/package.json +++ b/packages/accounts-controller/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/accounts-controller", - "version": "38.1.0", + "version": "38.1.1", "description": "Manages internal accounts", "keywords": [ "Ethereum", @@ -62,7 +62,7 @@ "@metamask/keyring-sdk": "^2.1.1", "@metamask/keyring-utils": "^3.2.1", "@metamask/messenger": "^1.2.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/superstruct": "^3.1.0", "@metamask/utils": "^11.9.0", "deepmerge": "^4.2.2", @@ -73,7 +73,7 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/providers": "^22.1.0", "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", diff --git a/packages/address-book-controller/CHANGELOG.md b/packages/address-book-controller/CHANGELOG.md index 2c4eb095ee..b88fb656a5 100644 --- a/packages/address-book-controller/CHANGELOG.md +++ b/packages/address-book-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [7.1.2] ### Changed diff --git a/packages/address-book-controller/package.json b/packages/address-book-controller/package.json index 022ab26e5e..008645625a 100644 --- a/packages/address-book-controller/package.json +++ b/packages/address-book-controller/package.json @@ -54,7 +54,7 @@ }, "dependencies": { "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0", "@metamask/utils": "^11.9.0" }, diff --git a/packages/analytics-data-regulation-controller/CHANGELOG.md b/packages/analytics-data-regulation-controller/CHANGELOG.md index b1e7e4fad2..1737e557f9 100644 --- a/packages/analytics-data-regulation-controller/CHANGELOG.md +++ b/packages/analytics-data-regulation-controller/CHANGELOG.md @@ -10,7 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Bump `@metamask/messenger` from `^1.1.0` to `^1.2.0` ([#8373](https://github.com/MetaMask/core/pull/8373), [#8632](https://github.com/MetaMask/core/pull/8632)) -- Bump `@metamask/controller-utils` from `^11.19.0` to `^12.0.0` ([#8344](https://github.com/MetaMask/core/pull/8344), [#8755](https://github.com/MetaMask/core/pull/8755)) +- Bump `@metamask/controller-utils` from `^11.19.0` to `^12.1.0` ([#8344](https://github.com/MetaMask/core/pull/8344), [#8755](https://github.com/MetaMask/core/pull/8755), [#8774](https://github.com/MetaMask/core/pull/8774)) - Bump `@metamask/base-controller` from `^9.0.1` to `^9.1.0` ([#8457](https://github.com/MetaMask/core/pull/8457)) [Unreleased]: https://github.com/MetaMask/core/ diff --git a/packages/analytics-data-regulation-controller/package.json b/packages/analytics-data-regulation-controller/package.json index 57ffab073e..175818a43e 100644 --- a/packages/analytics-data-regulation-controller/package.json +++ b/packages/analytics-data-regulation-controller/package.json @@ -54,7 +54,7 @@ }, "dependencies": { "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0", "@metamask/utils": "^11.9.0" }, diff --git a/packages/assets-controller/CHANGELOG.md b/packages/assets-controller/CHANGELOG.md index 66e3eac048..737848319c 100644 --- a/packages/assets-controller/CHANGELOG.md +++ b/packages/assets-controller/CHANGELOG.md @@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [7.1.1] + +### Changed + +- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/assets-controllers` from `^107.0.0` to `^108.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/network-controller` from `^31.1.0` to `^32.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [7.1.0] ### Changed @@ -471,7 +480,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Refactor `RpcDataSource` to delegate polling to `BalanceFetcher` and `TokenDetector` services ([#7709](https://github.com/MetaMask/core/pull/7709)) - Refactor `BalanceFetcher` and `TokenDetector` to extend `StaticIntervalPollingControllerOnly` for independent polling management ([#7709](https://github.com/MetaMask/core/pull/7709)) -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@7.1.0...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@7.1.1...HEAD +[7.1.1]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@7.1.0...@metamask/assets-controller@7.1.1 [7.1.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@7.0.1...@metamask/assets-controller@7.1.0 [7.0.1]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@7.0.0...@metamask/assets-controller@7.0.1 [7.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@6.4.0...@metamask/assets-controller@7.0.0 diff --git a/packages/assets-controller/package.json b/packages/assets-controller/package.json index ab2bcf2731..db0da5e20a 100644 --- a/packages/assets-controller/package.json +++ b/packages/assets-controller/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/assets-controller", - "version": "7.1.0", + "version": "7.1.1", "description": "Tracks assets balances/prices and handles token detection across all digital assets", "keywords": [ "Ethereum", @@ -57,18 +57,18 @@ "@ethersproject/abi": "^5.7.0", "@ethersproject/providers": "^5.7.0", "@metamask/account-tree-controller": "^7.3.0", - "@metamask/accounts-controller": "^38.1.0", - "@metamask/assets-controllers": "^107.0.0", + "@metamask/accounts-controller": "^38.1.1", + "@metamask/assets-controllers": "^108.0.0", "@metamask/base-controller": "^9.1.0", "@metamask/client-controller": "^1.0.1", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/core-backend": "^6.2.2", "@metamask/keyring-api": "^23.1.0", "@metamask/keyring-controller": "^25.5.0", "@metamask/keyring-internal-api": "^11.0.1", "@metamask/keyring-snap-client": "^9.0.2", "@metamask/messenger": "^1.2.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/network-enablement-controller": "^5.1.1", "@metamask/permission-controller": "^13.1.1", "@metamask/phishing-controller": "^17.1.2", diff --git a/packages/assets-controllers/CHANGELOG.md b/packages/assets-controllers/CHANGELOG.md index e06912fa6b..dd00e1d802 100644 --- a/packages/assets-controllers/CHANGELOG.md +++ b/packages/assets-controllers/CHANGELOG.md @@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [108.0.0] + +### Changed + +- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/network-controller` from `^31.1.0` to `^32.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [107.0.0] ### Added @@ -3073,7 +3081,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Use Ethers for AssetsContractController ([#845](https://github.com/MetaMask/core/pull/845)) -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@107.0.0...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@108.0.0...HEAD +[108.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@107.0.0...@metamask/assets-controllers@108.0.0 [107.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@106.0.1...@metamask/assets-controllers@107.0.0 [106.0.1]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@106.0.0...@metamask/assets-controllers@106.0.1 [106.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@105.1.0...@metamask/assets-controllers@106.0.0 diff --git a/packages/assets-controllers/package.json b/packages/assets-controllers/package.json index 4f99321565..01180e3487 100644 --- a/packages/assets-controllers/package.json +++ b/packages/assets-controllers/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/assets-controllers", - "version": "107.0.0", + "version": "108.0.0", "description": "Controllers which manage interactions involving ERC-20, ERC-721, and ERC-1155 tokens (including NFTs)", "keywords": [ "Ethereum", @@ -61,11 +61,11 @@ "@ethersproject/providers": "^5.7.0", "@metamask/abi-utils": "^2.0.3", "@metamask/account-tree-controller": "^7.3.0", - "@metamask/accounts-controller": "^38.1.0", + "@metamask/accounts-controller": "^38.1.1", "@metamask/approval-controller": "^9.0.1", "@metamask/base-controller": "^9.1.0", "@metamask/contract-metadata": "^2.4.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/core-backend": "^6.2.2", "@metamask/eth-query": "^4.0.0", "@metamask/keyring-api": "^23.1.0", @@ -73,7 +73,7 @@ "@metamask/messenger": "^1.2.0", "@metamask/metamask-eth-abis": "^3.1.1", "@metamask/multichain-account-service": "^9.0.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/network-enablement-controller": "^5.1.1", "@metamask/permission-controller": "^13.1.1", "@metamask/phishing-controller": "^17.1.2", diff --git a/packages/authenticated-user-storage/CHANGELOG.md b/packages/authenticated-user-storage/CHANGELOG.md index 1b10b5b916..c32b3fca7b 100644 --- a/packages/authenticated-user-storage/CHANGELOG.md +++ b/packages/authenticated-user-storage/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [1.0.1] ### Changed diff --git a/packages/authenticated-user-storage/package.json b/packages/authenticated-user-storage/package.json index 9051dc5fb0..78374b1484 100644 --- a/packages/authenticated-user-storage/package.json +++ b/packages/authenticated-user-storage/package.json @@ -54,7 +54,7 @@ }, "dependencies": { "@metamask/base-data-service": "^0.1.2", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0", "@metamask/superstruct": "^3.1.0", "@metamask/utils": "^11.9.0" diff --git a/packages/base-data-service/CHANGELOG.md b/packages/base-data-service/CHANGELOG.md index 50e0426b5a..ff06bb7e9a 100644 --- a/packages/base-data-service/CHANGELOG.md +++ b/packages/base-data-service/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [0.1.2] ### Changed diff --git a/packages/base-data-service/package.json b/packages/base-data-service/package.json index 7a5f629354..98d22500a5 100644 --- a/packages/base-data-service/package.json +++ b/packages/base-data-service/package.json @@ -54,7 +54,7 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0", "@metamask/utils": "^11.9.0", "@tanstack/query-core": "^4.43.0", diff --git a/packages/bridge-controller/CHANGELOG.md b/packages/bridge-controller/CHANGELOG.md index 5ab089cb42..72306fa915 100644 --- a/packages/bridge-controller/CHANGELOG.md +++ b/packages/bridge-controller/CHANGELOG.md @@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [72.0.4] + +### Changed + +- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/assets-controller` from `^7.1.0` to `^7.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/assets-controllers` from `^107.0.0` to `^108.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/network-controller` from `^31.1.0` to `^32.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [72.0.3] ### Changed @@ -1462,7 +1472,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Initial release ([#5317](https://github.com/MetaMask/core/pull/5317)) -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@72.0.3...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@72.0.4...HEAD +[72.0.4]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@72.0.3...@metamask/bridge-controller@72.0.4 [72.0.3]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@72.0.2...@metamask/bridge-controller@72.0.3 [72.0.2]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@72.0.1...@metamask/bridge-controller@72.0.2 [72.0.1]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@72.0.0...@metamask/bridge-controller@72.0.1 diff --git a/packages/bridge-controller/package.json b/packages/bridge-controller/package.json index bc065c5084..ad2f1b43c1 100644 --- a/packages/bridge-controller/package.json +++ b/packages/bridge-controller/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/bridge-controller", - "version": "72.0.3", + "version": "72.0.4", "description": "Manages bridge-related quote fetching functionality for MetaMask", "keywords": [ "Ethereum", @@ -57,17 +57,17 @@ "@ethersproject/constants": "^5.7.0", "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.0", - "@metamask/accounts-controller": "^38.1.0", - "@metamask/assets-controller": "^7.1.0", - "@metamask/assets-controllers": "^107.0.0", + "@metamask/accounts-controller": "^38.1.1", + "@metamask/assets-controller": "^7.1.1", + "@metamask/assets-controllers": "^108.0.0", "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/gas-fee-controller": "^26.2.1", "@metamask/keyring-api": "^23.1.0", "@metamask/messenger": "^1.2.0", "@metamask/metamask-eth-abis": "^3.1.1", "@metamask/multichain-network-controller": "^3.1.1", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/polling-controller": "^16.0.5", "@metamask/profile-sync-controller": "^28.0.2", "@metamask/remote-feature-flag-controller": "^4.2.1", diff --git a/packages/bridge-status-controller/CHANGELOG.md b/packages/bridge-status-controller/CHANGELOG.md index 7d2e375e42..1c0f79ab54 100644 --- a/packages/bridge-status-controller/CHANGELOG.md +++ b/packages/bridge-status-controller/CHANGELOG.md @@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [71.1.4] + +### Changed + +- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/bridge-controller` from `^72.0.3` to `^72.0.4` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/network-controller` from `^31.1.0` to `^32.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [71.1.3] ### Changed @@ -1181,7 +1190,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Initial release ([#5317](https://github.com/MetaMask/core/pull/5317)) -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@71.1.3...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@71.1.4...HEAD +[71.1.4]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@71.1.3...@metamask/bridge-status-controller@71.1.4 [71.1.3]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@71.1.2...@metamask/bridge-status-controller@71.1.3 [71.1.2]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@71.1.1...@metamask/bridge-status-controller@71.1.2 [71.1.1]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@71.1.0...@metamask/bridge-status-controller@71.1.1 diff --git a/packages/bridge-status-controller/package.json b/packages/bridge-status-controller/package.json index 0788e65aeb..a020056345 100644 --- a/packages/bridge-status-controller/package.json +++ b/packages/bridge-status-controller/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/bridge-status-controller", - "version": "71.1.3", + "version": "71.1.4", "description": "Manages bridge-related status fetching functionality for MetaMask", "keywords": [ "Ethereum", @@ -52,14 +52,14 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@metamask/accounts-controller": "^38.1.0", + "@metamask/accounts-controller": "^38.1.1", "@metamask/base-controller": "^9.1.0", - "@metamask/bridge-controller": "^72.0.3", - "@metamask/controller-utils": "^12.0.0", + "@metamask/bridge-controller": "^72.0.4", + "@metamask/controller-utils": "^12.1.0", "@metamask/gas-fee-controller": "^26.2.1", "@metamask/keyring-controller": "^25.5.0", "@metamask/messenger": "^1.2.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/polling-controller": "^16.0.5", "@metamask/profile-sync-controller": "^28.0.2", "@metamask/snaps-controllers": "^19.0.0", diff --git a/packages/chain-agnostic-permission/CHANGELOG.md b/packages/chain-agnostic-permission/CHANGELOG.md index e5c5b69636..fb760a5f33 100644 --- a/packages/chain-agnostic-permission/CHANGELOG.md +++ b/packages/chain-agnostic-permission/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [1.6.1] ### Changed diff --git a/packages/chain-agnostic-permission/package.json b/packages/chain-agnostic-permission/package.json index 61800cfbec..bbe8dde61c 100644 --- a/packages/chain-agnostic-permission/package.json +++ b/packages/chain-agnostic-permission/package.json @@ -52,7 +52,7 @@ }, "dependencies": { "@metamask/api-specs": "^0.14.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/permission-controller": "^13.1.1", "@metamask/rpc-errors": "^7.0.2", "@metamask/utils": "^11.9.0", diff --git a/packages/chomp-api-service/CHANGELOG.md b/packages/chomp-api-service/CHANGELOG.md index fdd9182667..f0484419b1 100644 --- a/packages/chomp-api-service/CHANGELOG.md +++ b/packages/chomp-api-service/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [3.1.0] ### Changed diff --git a/packages/chomp-api-service/package.json b/packages/chomp-api-service/package.json index 1b388da2c1..78d9e2330f 100644 --- a/packages/chomp-api-service/package.json +++ b/packages/chomp-api-service/package.json @@ -52,7 +52,7 @@ }, "dependencies": { "@metamask/base-data-service": "^0.1.2", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0", "@metamask/superstruct": "^3.1.0", "@metamask/utils": "^11.9.0", diff --git a/packages/claims-controller/CHANGELOG.md b/packages/claims-controller/CHANGELOG.md index 7e4ad0e02a..15662986f2 100644 --- a/packages/claims-controller/CHANGELOG.md +++ b/packages/claims-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [0.5.1] ### Changed diff --git a/packages/claims-controller/package.json b/packages/claims-controller/package.json index 90cf681bf0..f9cb3b0870 100644 --- a/packages/claims-controller/package.json +++ b/packages/claims-controller/package.json @@ -54,7 +54,7 @@ }, "dependencies": { "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/keyring-controller": "^25.5.0", "@metamask/messenger": "^1.2.0", "@metamask/profile-sync-controller": "^28.0.2", diff --git a/packages/compliance-controller/CHANGELOG.md b/packages/compliance-controller/CHANGELOG.md index 10beedd9c6..69fdef8341 100644 --- a/packages/compliance-controller/CHANGELOG.md +++ b/packages/compliance-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [2.0.1] ### Changed diff --git a/packages/compliance-controller/package.json b/packages/compliance-controller/package.json index eaca995fff..23f88e21a7 100644 --- a/packages/compliance-controller/package.json +++ b/packages/compliance-controller/package.json @@ -54,7 +54,7 @@ }, "dependencies": { "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0", "@metamask/superstruct": "^3.1.0", "@metamask/utils": "^11.9.0", diff --git a/packages/config-registry-controller/CHANGELOG.md b/packages/config-registry-controller/CHANGELOG.md index 6938ce5f76..8da9c85691 100644 --- a/packages/config-registry-controller/CHANGELOG.md +++ b/packages/config-registry-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [0.3.1] ### Changed diff --git a/packages/config-registry-controller/package.json b/packages/config-registry-controller/package.json index e94fa1f8a2..74201544ff 100644 --- a/packages/config-registry-controller/package.json +++ b/packages/config-registry-controller/package.json @@ -55,7 +55,7 @@ }, "dependencies": { "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/keyring-controller": "^25.5.0", "@metamask/messenger": "^1.2.0", "@metamask/polling-controller": "^16.0.5", diff --git a/packages/controller-utils/CHANGELOG.md b/packages/controller-utils/CHANGELOG.md index b271c0cdfe..2b259a8304 100644 --- a/packages/controller-utils/CHANGELOG.md +++ b/packages/controller-utils/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [12.1.0] + ### Added - Add `DEFAULT_INFURA_NETWORKS` with Infura network names to be enabled by default ([#8767](https://github.com/MetaMask/core/pull/8767)) @@ -666,7 +668,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 All changes listed after this point were applied to this package following the monorepo conversion. -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/controller-utils@12.0.0...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/controller-utils@12.1.0...HEAD +[12.1.0]: https://github.com/MetaMask/core/compare/@metamask/controller-utils@12.0.0...@metamask/controller-utils@12.1.0 [12.0.0]: https://github.com/MetaMask/core/compare/@metamask/controller-utils@11.20.0...@metamask/controller-utils@12.0.0 [11.20.0]: https://github.com/MetaMask/core/compare/@metamask/controller-utils@11.19.0...@metamask/controller-utils@11.20.0 [11.19.0]: https://github.com/MetaMask/core/compare/@metamask/controller-utils@11.18.0...@metamask/controller-utils@11.19.0 diff --git a/packages/controller-utils/package.json b/packages/controller-utils/package.json index f582d8595b..ef99885586 100644 --- a/packages/controller-utils/package.json +++ b/packages/controller-utils/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/controller-utils", - "version": "12.0.0", + "version": "12.1.0", "description": "Data and convenience functions shared by multiple packages", "keywords": [ "Ethereum", diff --git a/packages/core-backend/CHANGELOG.md b/packages/core-backend/CHANGELOG.md index 691e40cd62..08cdccdd2e 100644 --- a/packages/core-backend/CHANGELOG.md +++ b/packages/core-backend/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [6.2.2] ### Changed diff --git a/packages/core-backend/package.json b/packages/core-backend/package.json index 97dc4a6095..1dbe1eb9ec 100644 --- a/packages/core-backend/package.json +++ b/packages/core-backend/package.json @@ -53,8 +53,8 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@metamask/accounts-controller": "^38.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/accounts-controller": "^38.1.1", + "@metamask/controller-utils": "^12.1.0", "@metamask/keyring-controller": "^25.5.0", "@metamask/messenger": "^1.2.0", "@metamask/profile-sync-controller": "^28.0.2", diff --git a/packages/earn-controller/CHANGELOG.md b/packages/earn-controller/CHANGELOG.md index 1288cce7b6..0dd920a0e1 100644 --- a/packages/earn-controller/CHANGELOG.md +++ b/packages/earn-controller/CHANGELOG.md @@ -7,9 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [12.1.2] + ### Changed -- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765)) +- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) ## [12.1.1] @@ -106,7 +109,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Bump `@metamask/network-controller` from `^29.0.0` to `^30.0.0` ([#7996](https://github.com/MetaMask/core/pull/7996)) - Bump `@metamask/keyring-api` from `^21.0.0` to `^21.5.0` ([#7857](https://github.com/MetaMask/core/pull/7857)) -- Bump `@metamask/account-tree-controller` from `^4.0.0` to `^4.1.1` ([#7869](https://github.com/MetaMask/core/pull/7869)), ([#7897](https://github.com/MetaMask/core/pull/7897)) +- Bump `@metamask/account-tree-controller` from `^4.0.0` to `^4.1.1`, ([#7869](https://github.com/MetaMask/core/pull/7869), [#7897](https://github.com/MetaMask/core/pull/7897)) - Bump `@metamask/controller-utils` from `^11.18.0` to `^11.19.0` ([#7995](https://github.com/MetaMask/core/pull/7995)) ## [11.1.0] @@ -446,7 +449,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Initial release ([#5271](https://github.com/MetaMask/core/pull/5271)) -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/earn-controller@12.1.1...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/earn-controller@12.1.2...HEAD +[12.1.2]: https://github.com/MetaMask/core/compare/@metamask/earn-controller@12.1.1...@metamask/earn-controller@12.1.2 [12.1.1]: https://github.com/MetaMask/core/compare/@metamask/earn-controller@12.1.0...@metamask/earn-controller@12.1.1 [12.1.0]: https://github.com/MetaMask/core/compare/@metamask/earn-controller@12.0.0...@metamask/earn-controller@12.1.0 [12.0.0]: https://github.com/MetaMask/core/compare/@metamask/earn-controller@11.2.1...@metamask/earn-controller@12.0.0 diff --git a/packages/earn-controller/package.json b/packages/earn-controller/package.json index 2bb0060285..ebce8d3af3 100644 --- a/packages/earn-controller/package.json +++ b/packages/earn-controller/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/earn-controller", - "version": "12.1.1", + "version": "12.1.2", "description": "Manages state for earning features and coordinates interactions between staking services, SDK integrations, and other controllers to enable users to participate in various earning opportunities", "keywords": [ "Ethereum", @@ -57,10 +57,10 @@ "@ethersproject/providers": "^5.7.0", "@metamask/account-tree-controller": "^7.3.0", "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/keyring-api": "^23.1.0", "@metamask/messenger": "^1.2.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/stake-sdk": "^3.2.1", "reselect": "^5.1.1" }, diff --git a/packages/eip-7702-internal-rpc-middleware/CHANGELOG.md b/packages/eip-7702-internal-rpc-middleware/CHANGELOG.md index cce54fdab4..fcf4591c23 100644 --- a/packages/eip-7702-internal-rpc-middleware/CHANGELOG.md +++ b/packages/eip-7702-internal-rpc-middleware/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [0.1.1] ### Changed diff --git a/packages/eip-7702-internal-rpc-middleware/package.json b/packages/eip-7702-internal-rpc-middleware/package.json index 004c0b9b3b..9b4d3169c7 100644 --- a/packages/eip-7702-internal-rpc-middleware/package.json +++ b/packages/eip-7702-internal-rpc-middleware/package.json @@ -51,7 +51,7 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/rpc-errors": "^7.0.2", "@metamask/superstruct": "^3.1.0", "@metamask/utils": "^11.9.0" diff --git a/packages/eip1193-permission-middleware/CHANGELOG.md b/packages/eip1193-permission-middleware/CHANGELOG.md index eb6869cb08..eb075645c0 100644 --- a/packages/eip1193-permission-middleware/CHANGELOG.md +++ b/packages/eip1193-permission-middleware/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [2.0.1] ### Changed diff --git a/packages/eip1193-permission-middleware/package.json b/packages/eip1193-permission-middleware/package.json index 8c5c2d725b..8492deaa7b 100644 --- a/packages/eip1193-permission-middleware/package.json +++ b/packages/eip1193-permission-middleware/package.json @@ -52,7 +52,7 @@ }, "dependencies": { "@metamask/chain-agnostic-permission": "^1.6.1", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/json-rpc-engine": "^10.5.0", "@metamask/permission-controller": "^13.1.1", "@metamask/utils": "^11.9.0", diff --git a/packages/ens-controller/CHANGELOG.md b/packages/ens-controller/CHANGELOG.md index f62cb48044..b084a89271 100644 --- a/packages/ens-controller/CHANGELOG.md +++ b/packages/ens-controller/CHANGELOG.md @@ -7,9 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [19.1.3] + ### Changed -- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765)) +- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) ## [19.1.2] @@ -136,9 +139,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Bump `@metamask/base-controller` from `^7.0.2` to `^8.0.0` ([#5079](https://github.com/MetaMask/core/pull/5079)), ([#5135](https://github.com/MetaMask/core/pull/5135)), ([#5305](https://github.com/MetaMask/core/pull/5305)) -- Bump `@metamask/controller-utils` from `^11.4.4` to `^11.5.0` ([#5135](https://github.com/MetaMask/core/pull/5135)), ([#5272](https://github.com/MetaMask/core/pull/5272)) -- Bump `@metamask/utils` from `^10.0.0` to `^11.1.0` ([#5080](https://github.com/MetaMask/core/pull/5080)), ([#5223](https://github.com/MetaMask/core/pull/5223)) +- Bump `@metamask/base-controller` from `^7.0.2` to `^8.0.0`,, ([#5079](https://github.com/MetaMask/core/pull/5079), [#5135](https://github.com/MetaMask/core/pull/5135), [#5305](https://github.com/MetaMask/core/pull/5305)) +- Bump `@metamask/controller-utils` from `^11.4.4` to `^11.5.0`, ([#5135](https://github.com/MetaMask/core/pull/5135), [#5272](https://github.com/MetaMask/core/pull/5272)) +- Bump `@metamask/utils` from `^10.0.0` to `^11.1.0`, ([#5080](https://github.com/MetaMask/core/pull/5080), [#5223](https://github.com/MetaMask/core/pull/5223)) ## [15.0.1] @@ -172,7 +175,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ["Are the Types Wrong?"](https://arethetypeswrong.github.io/) tool as ["masquerading as CJS"](https://github.com/arethetypeswrong/arethetypeswrong.github.io/blob/main/docs/problems/FalseCJS.md). All of the ATTW checks now pass. -- Remove chunk files ([#4648](https://github.com/MetaMask/core/pull/4648)). +- Remove chunk files. ([#4648](https://github.com/MetaMask/core/pull/4648)) - Previously, the build tool we used to generate JavaScript files extracted common code to "chunk" files. While this was intended to make this package more tree-shakeable, it also made debugging more difficult for our @@ -398,7 +401,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 All changes listed after this point were applied to this package following the monorepo conversion. -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/ens-controller@19.1.2...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/ens-controller@19.1.3...HEAD +[19.1.3]: https://github.com/MetaMask/core/compare/@metamask/ens-controller@19.1.2...@metamask/ens-controller@19.1.3 [19.1.2]: https://github.com/MetaMask/core/compare/@metamask/ens-controller@19.1.1...@metamask/ens-controller@19.1.2 [19.1.1]: https://github.com/MetaMask/core/compare/@metamask/ens-controller@19.1.0...@metamask/ens-controller@19.1.1 [19.1.0]: https://github.com/MetaMask/core/compare/@metamask/ens-controller@19.0.3...@metamask/ens-controller@19.1.0 diff --git a/packages/ens-controller/package.json b/packages/ens-controller/package.json index 52b4d83986..6a3a57cf87 100644 --- a/packages/ens-controller/package.json +++ b/packages/ens-controller/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/ens-controller", - "version": "19.1.2", + "version": "19.1.3", "description": "Maps ENS names to their resolved addresses by chain id", "keywords": [ "Ethereum", @@ -55,9 +55,9 @@ "dependencies": { "@ethersproject/providers": "^5.7.0", "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/utils": "^11.9.0", "punycode": "^2.1.1" }, diff --git a/packages/eth-json-rpc-middleware/package.json b/packages/eth-json-rpc-middleware/package.json index 2d144e35db..4485e3787c 100644 --- a/packages/eth-json-rpc-middleware/package.json +++ b/packages/eth-json-rpc-middleware/package.json @@ -71,7 +71,7 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@ts-bridge/cli": "^0.6.4", "@types/deep-freeze-strict": "^1.1.0", "@types/jest": "^29.5.14", diff --git a/packages/gas-fee-controller/CHANGELOG.md b/packages/gas-fee-controller/CHANGELOG.md index 9f6a12bb22..1e652c65fb 100644 --- a/packages/gas-fee-controller/CHANGELOG.md +++ b/packages/gas-fee-controller/CHANGELOG.md @@ -9,7 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765)) +- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) ## [26.2.1] diff --git a/packages/gas-fee-controller/package.json b/packages/gas-fee-controller/package.json index a9f654e20e..3a18f10a44 100644 --- a/packages/gas-fee-controller/package.json +++ b/packages/gas-fee-controller/package.json @@ -54,11 +54,11 @@ }, "dependencies": { "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/eth-query": "^4.0.0", "@metamask/ethjs-unit": "^0.3.0", "@metamask/messenger": "^1.2.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/polling-controller": "^16.0.5", "@metamask/utils": "^11.9.0", "@types/bn.js": "^5.1.5", diff --git a/packages/gator-permissions-controller/CHANGELOG.md b/packages/gator-permissions-controller/CHANGELOG.md index fd6f0a2b35..f5d56588b3 100644 --- a/packages/gator-permissions-controller/CHANGELOG.md +++ b/packages/gator-permissions-controller/CHANGELOG.md @@ -7,9 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [4.1.2] + ### Changed -- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765)) +- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774)) ## [4.1.1] @@ -244,7 +246,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Initial release ([#6033](https://github.com/MetaMask/core/pull/6033)) -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/gator-permissions-controller@4.1.1...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/gator-permissions-controller@4.1.2...HEAD +[4.1.2]: https://github.com/MetaMask/core/compare/@metamask/gator-permissions-controller@4.1.1...@metamask/gator-permissions-controller@4.1.2 [4.1.1]: https://github.com/MetaMask/core/compare/@metamask/gator-permissions-controller@4.1.0...@metamask/gator-permissions-controller@4.1.1 [4.1.0]: https://github.com/MetaMask/core/compare/@metamask/gator-permissions-controller@4.0.0...@metamask/gator-permissions-controller@4.1.0 [4.0.0]: https://github.com/MetaMask/core/compare/@metamask/gator-permissions-controller@3.0.1...@metamask/gator-permissions-controller@4.0.0 diff --git a/packages/gator-permissions-controller/package.json b/packages/gator-permissions-controller/package.json index 1c44868f78..e55b53610f 100644 --- a/packages/gator-permissions-controller/package.json +++ b/packages/gator-permissions-controller/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/gator-permissions-controller", - "version": "4.1.1", + "version": "4.1.2", "description": "Controller for managing gator permissions with profile sync integration", "keywords": [ "Ethereum", @@ -59,7 +59,7 @@ "@metamask/delegation-core": "^2.0.0", "@metamask/delegation-deployments": "^1.3.0", "@metamask/messenger": "^1.2.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/snaps-controllers": "^19.0.0", "@metamask/snaps-sdk": "^11.0.0", "@metamask/snaps-utils": "^12.1.2", diff --git a/packages/geolocation-controller/CHANGELOG.md b/packages/geolocation-controller/CHANGELOG.md index 8e12a3b0f2..e5c499c769 100644 --- a/packages/geolocation-controller/CHANGELOG.md +++ b/packages/geolocation-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [0.1.3] ### Changed diff --git a/packages/geolocation-controller/package.json b/packages/geolocation-controller/package.json index f80abfb11e..70351f3b0a 100644 --- a/packages/geolocation-controller/package.json +++ b/packages/geolocation-controller/package.json @@ -54,7 +54,7 @@ }, "dependencies": { "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0" }, "devDependencies": { diff --git a/packages/logging-controller/CHANGELOG.md b/packages/logging-controller/CHANGELOG.md index bc6aa0e819..414e6703f2 100644 --- a/packages/logging-controller/CHANGELOG.md +++ b/packages/logging-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [8.0.2] ### Changed diff --git a/packages/logging-controller/package.json b/packages/logging-controller/package.json index 260d4a5b21..72083cfc12 100644 --- a/packages/logging-controller/package.json +++ b/packages/logging-controller/package.json @@ -54,7 +54,7 @@ }, "dependencies": { "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0", "uuid": "^8.3.2" }, diff --git a/packages/message-manager/CHANGELOG.md b/packages/message-manager/CHANGELOG.md index e4f9edd64b..c00daf76cb 100644 --- a/packages/message-manager/CHANGELOG.md +++ b/packages/message-manager/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [14.1.2] ### Changed diff --git a/packages/message-manager/package.json b/packages/message-manager/package.json index a74f9b4f10..680620dd81 100644 --- a/packages/message-manager/package.json +++ b/packages/message-manager/package.json @@ -52,7 +52,7 @@ }, "dependencies": { "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/eth-sig-util": "^8.2.0", "@metamask/messenger": "^1.2.0", "@metamask/utils": "^11.9.0", diff --git a/packages/money-account-balance-service/CHANGELOG.md b/packages/money-account-balance-service/CHANGELOG.md index 1fd2c0ddf8..8c6a42e411 100644 --- a/packages/money-account-balance-service/CHANGELOG.md +++ b/packages/money-account-balance-service/CHANGELOG.md @@ -7,9 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.0.2] + ### Changed -- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765)) +- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) ## [1.0.1] @@ -53,7 +56,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Compute mUSD-equivalent value of vault share holdings (`getMusdEquivalentValue`) - Fetch vault APY from the Veda performance REST API (`getVaultApy`) -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/money-account-balance-service@1.0.1...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/money-account-balance-service@1.0.2...HEAD +[1.0.2]: https://github.com/MetaMask/core/compare/@metamask/money-account-balance-service@1.0.1...@metamask/money-account-balance-service@1.0.2 [1.0.1]: https://github.com/MetaMask/core/compare/@metamask/money-account-balance-service@1.0.0...@metamask/money-account-balance-service@1.0.1 [1.0.0]: https://github.com/MetaMask/core/compare/@metamask/money-account-balance-service@0.2.0...@metamask/money-account-balance-service@1.0.0 [0.2.0]: https://github.com/MetaMask/core/compare/@metamask/money-account-balance-service@0.1.0...@metamask/money-account-balance-service@0.2.0 diff --git a/packages/money-account-balance-service/package.json b/packages/money-account-balance-service/package.json index 612b6cb531..47555750bc 100644 --- a/packages/money-account-balance-service/package.json +++ b/packages/money-account-balance-service/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/money-account-balance-service", - "version": "1.0.1", + "version": "1.0.2", "description": "Data service for fetching Money account balances, exchange rates, and vault APY", "keywords": [ "Ethereum", @@ -56,10 +56,10 @@ "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.0", "@metamask/base-data-service": "^0.1.2", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0", "@metamask/metamask-eth-abis": "^3.1.1", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/remote-feature-flag-controller": "^4.2.1", "@metamask/superstruct": "^3.1.0", "@metamask/utils": "^11.9.0" diff --git a/packages/money-account-controller/CHANGELOG.md b/packages/money-account-controller/CHANGELOG.md index fbcef004be..00855c3838 100644 --- a/packages/money-account-controller/CHANGELOG.md +++ b/packages/money-account-controller/CHANGELOG.md @@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Bump `@metamask/accounts-controller` from `^38.0.0` to `^38.1.0` ([#8755](https://github.com/MetaMask/core/pull/8755)) +- Bump `@metamask/accounts-controller` from `^38.0.0` to `^38.1.1` ([#8755](https://github.com/MetaMask/core/pull/8755), [#8774](https://github.com/MetaMask/core/pull/8774)) ## [0.3.0] diff --git a/packages/money-account-controller/package.json b/packages/money-account-controller/package.json index cfadbfa915..8f2c9a5619 100644 --- a/packages/money-account-controller/package.json +++ b/packages/money-account-controller/package.json @@ -53,7 +53,7 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@metamask/accounts-controller": "^38.1.0", + "@metamask/accounts-controller": "^38.1.1", "@metamask/base-controller": "^9.1.0", "@metamask/eth-money-keyring": "^2.0.4", "@metamask/keyring-api": "^23.1.0", diff --git a/packages/money-account-upgrade-controller/CHANGELOG.md b/packages/money-account-upgrade-controller/CHANGELOG.md index d5c375aaaf..ea90a8a858 100644 --- a/packages/money-account-upgrade-controller/CHANGELOG.md +++ b/packages/money-account-upgrade-controller/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [2.0.1] + +### Changed + +- Bump `@metamask/network-controller` from `^31.1.0` to `^32.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [2.0.0] ### Added @@ -79,7 +85,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Add `MoneyAccountUpgradeController` with `upgradeAccount` method ([#8426](https://github.com/MetaMask/core/pull/8426)) -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/money-account-upgrade-controller@2.0.0...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/money-account-upgrade-controller@2.0.1...HEAD +[2.0.1]: https://github.com/MetaMask/core/compare/@metamask/money-account-upgrade-controller@2.0.0...@metamask/money-account-upgrade-controller@2.0.1 [2.0.0]: https://github.com/MetaMask/core/compare/@metamask/money-account-upgrade-controller@1.3.2...@metamask/money-account-upgrade-controller@2.0.0 [1.3.2]: https://github.com/MetaMask/core/compare/@metamask/money-account-upgrade-controller@1.3.1...@metamask/money-account-upgrade-controller@1.3.2 [1.3.1]: https://github.com/MetaMask/core/compare/@metamask/money-account-upgrade-controller@1.3.0...@metamask/money-account-upgrade-controller@1.3.1 diff --git a/packages/money-account-upgrade-controller/package.json b/packages/money-account-upgrade-controller/package.json index a2a7851848..961f715505 100644 --- a/packages/money-account-upgrade-controller/package.json +++ b/packages/money-account-upgrade-controller/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/money-account-upgrade-controller", - "version": "2.0.0", + "version": "2.0.1", "description": "MetaMask Money account upgrade controller", "keywords": [ "Ethereum", @@ -61,7 +61,7 @@ "@metamask/delegation-deployments": "^1.3.0", "@metamask/keyring-controller": "^25.5.0", "@metamask/messenger": "^1.2.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/utils": "^11.9.0" }, "devDependencies": { diff --git a/packages/multichain-account-service/CHANGELOG.md b/packages/multichain-account-service/CHANGELOG.md index c1cc881d7b..d6cef628ae 100644 --- a/packages/multichain-account-service/CHANGELOG.md +++ b/packages/multichain-account-service/CHANGELOG.md @@ -17,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Removed `MultichainAccountServiceConfig.snapPlatformWatcher` and the `SnapPlatformWatcherConfig` type export. Configure the keyring-wait timeout via `SnapAccountService`'s `config.snapPlatformWatcher.snapKeyringWaitTimeoutMs` instead. - The service messenger no longer needs `SnapController:getState`, `SnapController:stateChange` or `KeyringController:stateChange`. - **BREAKING:** Rename `SnapAccountProvider.ensureCanUseSnapPlatform()` to `ensureReady()` ([#8715](https://github.com/MetaMask/core/pull/8715)) -- Bump `@metamask/accounts-controller` from `^38.0.0` to `^38.1.0` ([#8755](https://github.com/MetaMask/core/pull/8755)) +- Bump `@metamask/accounts-controller` from `^38.0.0` to `^38.1.1` ([#8755](https://github.com/MetaMask/core/pull/8755), [#8774](https://github.com/MetaMask/core/pull/8774)) ## [9.0.0] diff --git a/packages/multichain-account-service/package.json b/packages/multichain-account-service/package.json index 444863bc02..7c5d024f77 100644 --- a/packages/multichain-account-service/package.json +++ b/packages/multichain-account-service/package.json @@ -54,7 +54,7 @@ }, "dependencies": { "@ethereumjs/util": "^9.1.0", - "@metamask/accounts-controller": "^38.1.0", + "@metamask/accounts-controller": "^38.1.1", "@metamask/base-controller": "^9.1.0", "@metamask/eth-snap-keyring": "^22.0.1", "@metamask/key-tree": "^10.1.1", @@ -76,7 +76,7 @@ "devDependencies": { "@metamask/account-api": "^1.0.4", "@metamask/auto-changelog": "^6.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/eth-hd-keyring": "^14.1.1", "@metamask/providers": "^22.1.0", "@ts-bridge/cli": "^0.6.4", diff --git a/packages/multichain-api-middleware/CHANGELOG.md b/packages/multichain-api-middleware/CHANGELOG.md index b48693dbc6..15baf237a3 100644 --- a/packages/multichain-api-middleware/CHANGELOG.md +++ b/packages/multichain-api-middleware/CHANGELOG.md @@ -7,9 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [3.1.2] + ### Changed -- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765)) +- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) ## [3.1.1] @@ -225,7 +229,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Initial release -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/multichain-api-middleware@3.1.1...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/multichain-api-middleware@3.1.2...HEAD +[3.1.2]: https://github.com/MetaMask/core/compare/@metamask/multichain-api-middleware@3.1.1...@metamask/multichain-api-middleware@3.1.2 [3.1.1]: https://github.com/MetaMask/core/compare/@metamask/multichain-api-middleware@3.1.0...@metamask/multichain-api-middleware@3.1.1 [3.1.0]: https://github.com/MetaMask/core/compare/@metamask/multichain-api-middleware@3.0.0...@metamask/multichain-api-middleware@3.1.0 [3.0.0]: https://github.com/MetaMask/core/compare/@metamask/multichain-api-middleware@2.0.0...@metamask/multichain-api-middleware@3.0.0 diff --git a/packages/multichain-api-middleware/package.json b/packages/multichain-api-middleware/package.json index 8fb6c1ae84..3c30d5ccd5 100644 --- a/packages/multichain-api-middleware/package.json +++ b/packages/multichain-api-middleware/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/multichain-api-middleware", - "version": "3.1.1", + "version": "3.1.2", "description": "JSON-RPC methods and middleware to support the MetaMask Multichain API", "keywords": [ "Ethereum", @@ -51,12 +51,12 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@metamask/accounts-controller": "^38.1.0", + "@metamask/accounts-controller": "^38.1.1", "@metamask/api-specs": "^0.14.0", "@metamask/chain-agnostic-permission": "^1.6.1", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/json-rpc-engine": "^10.5.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/permission-controller": "^13.1.1", "@metamask/rpc-errors": "^7.0.2", "@metamask/snaps-controllers": "^19.0.0", diff --git a/packages/multichain-network-controller/CHANGELOG.md b/packages/multichain-network-controller/CHANGELOG.md index 409e11aaea..c39d6e8dd9 100644 --- a/packages/multichain-network-controller/CHANGELOG.md +++ b/packages/multichain-network-controller/CHANGELOG.md @@ -9,7 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765)) +- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) ## [3.1.1] diff --git a/packages/multichain-network-controller/package.json b/packages/multichain-network-controller/package.json index e632aede33..e0a8cb89cc 100644 --- a/packages/multichain-network-controller/package.json +++ b/packages/multichain-network-controller/package.json @@ -53,13 +53,13 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@metamask/accounts-controller": "^38.1.0", + "@metamask/accounts-controller": "^38.1.1", "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/keyring-api": "^23.1.0", "@metamask/keyring-internal-api": "^11.0.1", "@metamask/messenger": "^1.2.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/superstruct": "^3.1.0", "@metamask/utils": "^11.9.0", "@solana/addresses": "^2.0.0", diff --git a/packages/multichain-transactions-controller/CHANGELOG.md b/packages/multichain-transactions-controller/CHANGELOG.md index 3da6980494..3eed8fcb99 100644 --- a/packages/multichain-transactions-controller/CHANGELOG.md +++ b/packages/multichain-transactions-controller/CHANGELOG.md @@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Bump `@metamask/accounts-controller` from `^38.0.0` to `^38.1.0` ([#8755](https://github.com/MetaMask/core/pull/8755)) +- Bump `@metamask/accounts-controller` from `^38.0.0` to `^38.1.1` ([#8755](https://github.com/MetaMask/core/pull/8755), [#8774](https://github.com/MetaMask/core/pull/8774)) - Bump `@metamask/polling-controller` from `^16.0.4` to `^16.0.5` ([#8755](https://github.com/MetaMask/core/pull/8755)) ## [7.1.0] diff --git a/packages/multichain-transactions-controller/package.json b/packages/multichain-transactions-controller/package.json index 3d1e3435fd..e78c3dd6ec 100644 --- a/packages/multichain-transactions-controller/package.json +++ b/packages/multichain-transactions-controller/package.json @@ -53,7 +53,7 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@metamask/accounts-controller": "^38.1.0", + "@metamask/accounts-controller": "^38.1.1", "@metamask/base-controller": "^9.1.0", "@metamask/keyring-api": "^23.1.0", "@metamask/keyring-internal-api": "^11.0.1", diff --git a/packages/name-controller/CHANGELOG.md b/packages/name-controller/CHANGELOG.md index bd8c282ff5..68aeac2afa 100644 --- a/packages/name-controller/CHANGELOG.md +++ b/packages/name-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [9.1.2] ### Changed diff --git a/packages/name-controller/package.json b/packages/name-controller/package.json index 9013ae823f..31d0544abc 100644 --- a/packages/name-controller/package.json +++ b/packages/name-controller/package.json @@ -55,7 +55,7 @@ }, "dependencies": { "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0", "@metamask/utils": "^11.9.0", "async-mutex": "^0.5.0" diff --git a/packages/network-controller/CHANGELOG.md b/packages/network-controller/CHANGELOG.md index fc10c79f9c..0cf143e822 100644 --- a/packages/network-controller/CHANGELOG.md +++ b/packages/network-controller/CHANGELOG.md @@ -7,10 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [32.0.0] + ### Changed - **BREAKING:** Remove Sei, MegaETH, Avalanche, and ZKSync from list of default networks ([#8767](https://github.com/MetaMask/core/pull/8767)) - You will need to add them as network configurations first before switching to them. +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) ## [31.1.0] @@ -1182,7 +1185,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 All changes listed after this point were applied to this package following the monorepo conversion. -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/network-controller@31.1.0...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/network-controller@32.0.0...HEAD +[32.0.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@31.1.0...@metamask/network-controller@32.0.0 [31.1.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@31.0.0...@metamask/network-controller@31.1.0 [31.0.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@30.1.0...@metamask/network-controller@31.0.0 [30.1.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@30.0.1...@metamask/network-controller@30.1.0 diff --git a/packages/network-controller/package.json b/packages/network-controller/package.json index 95fb1b4a35..d48d99f683 100644 --- a/packages/network-controller/package.json +++ b/packages/network-controller/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/network-controller", - "version": "31.1.0", + "version": "32.0.0", "description": "Provides an interface to the currently selected network via a MetaMask-compatible provider object", "keywords": [ "Ethereum", @@ -55,7 +55,7 @@ "dependencies": { "@metamask/base-controller": "^9.1.0", "@metamask/connectivity-controller": "^0.2.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/eth-block-tracker": "^15.0.1", "@metamask/eth-json-rpc-infura": "^10.3.0", "@metamask/eth-json-rpc-middleware": "^23.1.3", diff --git a/packages/network-enablement-controller/CHANGELOG.md b/packages/network-enablement-controller/CHANGELOG.md index 1348e07859..9268a902ae 100644 --- a/packages/network-enablement-controller/CHANGELOG.md +++ b/packages/network-enablement-controller/CHANGELOG.md @@ -10,7 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Add Monad mainnet (`0x8f`, chain ID 143) to the default enabled network map for new users ([#8743](https://github.com/MetaMask/core/pull/8743)) -- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765)) +- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) ## [5.1.1] diff --git a/packages/network-enablement-controller/package.json b/packages/network-enablement-controller/package.json index f7e337fc7a..2990af15be 100644 --- a/packages/network-enablement-controller/package.json +++ b/packages/network-enablement-controller/package.json @@ -54,11 +54,11 @@ }, "dependencies": { "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/keyring-api": "^23.1.0", "@metamask/messenger": "^1.2.0", "@metamask/multichain-network-controller": "^3.1.1", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/slip44": "^4.3.0", "@metamask/transaction-controller": "^65.3.0", "@metamask/utils": "^11.9.0", diff --git a/packages/notification-services-controller/CHANGELOG.md b/packages/notification-services-controller/CHANGELOG.md index af221eb0fa..6af7aa9410 100644 --- a/packages/notification-services-controller/CHANGELOG.md +++ b/packages/notification-services-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [23.1.1] ### Changed diff --git a/packages/notification-services-controller/package.json b/packages/notification-services-controller/package.json index c86a084c4b..ee73118105 100644 --- a/packages/notification-services-controller/package.json +++ b/packages/notification-services-controller/package.json @@ -107,7 +107,7 @@ "dependencies": { "@contentful/rich-text-html-renderer": "^16.5.2", "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/keyring-controller": "^25.5.0", "@metamask/messenger": "^1.2.0", "@metamask/profile-sync-controller": "^28.0.2", diff --git a/packages/permission-controller/CHANGELOG.md b/packages/permission-controller/CHANGELOG.md index 4ddde2cdee..923a2a3f8f 100644 --- a/packages/permission-controller/CHANGELOG.md +++ b/packages/permission-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [13.1.1] ### Changed diff --git a/packages/permission-controller/package.json b/packages/permission-controller/package.json index 5d0622297b..2f8bcfed67 100644 --- a/packages/permission-controller/package.json +++ b/packages/permission-controller/package.json @@ -55,7 +55,7 @@ "dependencies": { "@metamask/approval-controller": "^9.0.1", "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/json-rpc-engine": "^10.5.0", "@metamask/messenger": "^1.2.0", "@metamask/rpc-errors": "^7.0.2", diff --git a/packages/perps-controller/CHANGELOG.md b/packages/perps-controller/CHANGELOG.md index 7edee5817a..2605d219fd 100644 --- a/packages/perps-controller/CHANGELOG.md +++ b/packages/perps-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [6.0.1] ### Changed diff --git a/packages/perps-controller/package.json b/packages/perps-controller/package.json index c1b1ec9344..76dd2e996b 100644 --- a/packages/perps-controller/package.json +++ b/packages/perps-controller/package.json @@ -58,7 +58,7 @@ "dependencies": { "@metamask/abi-utils": "^2.0.3", "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0", "@metamask/utils": "^11.9.0", "@nktkas/hyperliquid": "^0.32.2", @@ -72,7 +72,7 @@ "@metamask/geolocation-controller": "^0.1.3", "@metamask/keyring-controller": "^25.5.0", "@metamask/keyring-internal-api": "^11.0.1", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/profile-sync-controller": "^28.0.2", "@metamask/remote-feature-flag-controller": "^4.2.1", "@metamask/transaction-controller": "^65.3.0", diff --git a/packages/phishing-controller/CHANGELOG.md b/packages/phishing-controller/CHANGELOG.md index 82f3877f78..e7041f37dd 100644 --- a/packages/phishing-controller/CHANGELOG.md +++ b/packages/phishing-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [17.1.2] ### Changed diff --git a/packages/phishing-controller/package.json b/packages/phishing-controller/package.json index 0373b96ad2..62727c5dab 100644 --- a/packages/phishing-controller/package.json +++ b/packages/phishing-controller/package.json @@ -54,7 +54,7 @@ }, "dependencies": { "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0", "@metamask/transaction-controller": "^65.3.0", "@noble/hashes": "^1.8.0", diff --git a/packages/polling-controller/CHANGELOG.md b/packages/polling-controller/CHANGELOG.md index e4825c5511..5246b9d8f0 100644 --- a/packages/polling-controller/CHANGELOG.md +++ b/packages/polling-controller/CHANGELOG.md @@ -9,7 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765)) +- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) ## [16.0.5] diff --git a/packages/polling-controller/package.json b/packages/polling-controller/package.json index 10631d1ebb..5681321326 100644 --- a/packages/polling-controller/package.json +++ b/packages/polling-controller/package.json @@ -52,8 +52,8 @@ }, "dependencies": { "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/controller-utils": "^12.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/utils": "^11.9.0", "@types/uuid": "^8.3.0", "fast-json-stable-stringify": "^2.1.0", diff --git a/packages/profile-metrics-controller/CHANGELOG.md b/packages/profile-metrics-controller/CHANGELOG.md index ef1fe8dc37..9a5a6b88a1 100644 --- a/packages/profile-metrics-controller/CHANGELOG.md +++ b/packages/profile-metrics-controller/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [3.1.4] ### Changed diff --git a/packages/profile-metrics-controller/package.json b/packages/profile-metrics-controller/package.json index 92f56df96a..4c5eac6cb4 100644 --- a/packages/profile-metrics-controller/package.json +++ b/packages/profile-metrics-controller/package.json @@ -53,9 +53,9 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@metamask/accounts-controller": "^38.1.0", + "@metamask/accounts-controller": "^38.1.1", "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/keyring-controller": "^25.5.0", "@metamask/messenger": "^1.2.0", "@metamask/polling-controller": "^16.0.5", diff --git a/packages/ramps-controller/CHANGELOG.md b/packages/ramps-controller/CHANGELOG.md index 7cde1209e7..f12b445cfa 100644 --- a/packages/ramps-controller/CHANGELOG.md +++ b/packages/ramps-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [13.3.1] ### Changed diff --git a/packages/ramps-controller/package.json b/packages/ramps-controller/package.json index 6b2eb788e2..8ee2a49b69 100644 --- a/packages/ramps-controller/package.json +++ b/packages/ramps-controller/package.json @@ -55,7 +55,7 @@ }, "dependencies": { "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0" }, "devDependencies": { diff --git a/packages/remote-feature-flag-controller/CHANGELOG.md b/packages/remote-feature-flag-controller/CHANGELOG.md index 56ef251c6a..0b7be74d54 100644 --- a/packages/remote-feature-flag-controller/CHANGELOG.md +++ b/packages/remote-feature-flag-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [4.2.1] ### Changed diff --git a/packages/remote-feature-flag-controller/package.json b/packages/remote-feature-flag-controller/package.json index c2a6c50e16..4aee0e042c 100644 --- a/packages/remote-feature-flag-controller/package.json +++ b/packages/remote-feature-flag-controller/package.json @@ -54,7 +54,7 @@ }, "dependencies": { "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0", "@metamask/utils": "^11.9.0", "uuid": "^8.3.2" diff --git a/packages/sample-controllers/CHANGELOG.md b/packages/sample-controllers/CHANGELOG.md index 428f34b360..66cdc48c94 100644 --- a/packages/sample-controllers/CHANGELOG.md +++ b/packages/sample-controllers/CHANGELOG.md @@ -7,9 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [5.0.1] + ### Changed -- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765)) +- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774)) ## [5.0.0] @@ -148,7 +150,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Initial release of @metamask/sample-controllers. -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/sample-controllers@5.0.0...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/sample-controllers@5.0.1...HEAD +[5.0.1]: https://github.com/MetaMask/core/compare/@metamask/sample-controllers@5.0.0...@metamask/sample-controllers@5.0.1 [5.0.0]: https://github.com/MetaMask/core/compare/@metamask/sample-controllers@4.0.4...@metamask/sample-controllers@5.0.0 [4.0.4]: https://github.com/MetaMask/core/compare/@metamask/sample-controllers@4.0.3...@metamask/sample-controllers@4.0.4 [4.0.3]: https://github.com/MetaMask/core/compare/@metamask/sample-controllers@4.0.2...@metamask/sample-controllers@4.0.3 diff --git a/packages/sample-controllers/package.json b/packages/sample-controllers/package.json index e75382d83c..af86d7edea 100644 --- a/packages/sample-controllers/package.json +++ b/packages/sample-controllers/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/sample-controllers", - "version": "5.0.0", + "version": "5.0.1", "description": "Sample package to illustrate best practices for controllers", "keywords": [ "Ethereum", @@ -56,14 +56,14 @@ "@metamask/base-controller": "^9.1.0", "@metamask/base-data-service": "^0.1.2", "@metamask/messenger": "^1.2.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/superstruct": "^3.1.0", "@metamask/utils": "^11.9.0", "@tanstack/query-core": "^4.43.0" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", diff --git a/packages/selected-network-controller/CHANGELOG.md b/packages/selected-network-controller/CHANGELOG.md index 026e3afdcd..25dba4eaa2 100644 --- a/packages/selected-network-controller/CHANGELOG.md +++ b/packages/selected-network-controller/CHANGELOG.md @@ -7,9 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [26.1.3] + ### Changed -- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765)) +- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774)) ## [26.1.2] @@ -491,7 +493,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Initial Release ([#1643](https://github.com/MetaMask/core/pull/1643)) -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@26.1.2...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@26.1.3...HEAD +[26.1.3]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@26.1.2...@metamask/selected-network-controller@26.1.3 [26.1.2]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@26.1.1...@metamask/selected-network-controller@26.1.2 [26.1.1]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@26.1.0...@metamask/selected-network-controller@26.1.1 [26.1.0]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@26.0.3...@metamask/selected-network-controller@26.1.0 diff --git a/packages/selected-network-controller/package.json b/packages/selected-network-controller/package.json index dd593769b5..bb3d611928 100644 --- a/packages/selected-network-controller/package.json +++ b/packages/selected-network-controller/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/selected-network-controller", - "version": "26.1.2", + "version": "26.1.3", "description": "Provides an interface to the currently selected networkClientId for a given domain", "keywords": [ "Ethereum", @@ -56,7 +56,7 @@ "@metamask/base-controller": "^9.1.0", "@metamask/json-rpc-engine": "^10.5.0", "@metamask/messenger": "^1.2.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/permission-controller": "^13.1.1", "@metamask/swappable-obj-proxy": "^2.3.0", "@metamask/utils": "^11.9.0" diff --git a/packages/shield-controller/CHANGELOG.md b/packages/shield-controller/CHANGELOG.md index 02fd4aef6b..f54289d54e 100644 --- a/packages/shield-controller/CHANGELOG.md +++ b/packages/shield-controller/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/signature-controller` from `^39.2.1` to `^39.2.2` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [5.1.2] ### Changed diff --git a/packages/shield-controller/package.json b/packages/shield-controller/package.json index cc3b4ca1e0..e1a3982bb4 100644 --- a/packages/shield-controller/package.json +++ b/packages/shield-controller/package.json @@ -54,9 +54,9 @@ }, "dependencies": { "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0", - "@metamask/signature-controller": "^39.2.1", + "@metamask/signature-controller": "^39.2.2", "@metamask/transaction-controller": "^65.3.0", "@metamask/utils": "^11.9.0", "cockatiel": "^3.1.2" diff --git a/packages/signature-controller/CHANGELOG.md b/packages/signature-controller/CHANGELOG.md index 3a01f50412..5eb2afb0c2 100644 --- a/packages/signature-controller/CHANGELOG.md +++ b/packages/signature-controller/CHANGELOG.md @@ -7,9 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [39.2.2] + ### Changed -- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765)) +- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/gator-permissions-controller` from `^4.1.1` to `^4.1.2` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) ## [39.2.1] @@ -759,7 +764,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Initial release ([#1214](https://github.com/MetaMask/core/pull/1214)) -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@39.2.1...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@39.2.2...HEAD +[39.2.2]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@39.2.1...@metamask/signature-controller@39.2.2 [39.2.1]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@39.2.0...@metamask/signature-controller@39.2.1 [39.2.0]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@39.1.2...@metamask/signature-controller@39.2.0 [39.1.2]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@39.1.1...@metamask/signature-controller@39.1.2 diff --git a/packages/signature-controller/package.json b/packages/signature-controller/package.json index 845d1cabcf..40ebaff016 100644 --- a/packages/signature-controller/package.json +++ b/packages/signature-controller/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/signature-controller", - "version": "39.2.1", + "version": "39.2.2", "description": "Processes signing requests in order to sign arbitrary and typed data", "keywords": [ "Ethereum", @@ -53,16 +53,16 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@metamask/accounts-controller": "^38.1.0", + "@metamask/accounts-controller": "^38.1.1", "@metamask/approval-controller": "^9.0.1", "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/eth-sig-util": "^8.2.0", - "@metamask/gator-permissions-controller": "^4.1.1", + "@metamask/gator-permissions-controller": "^4.1.2", "@metamask/keyring-controller": "^25.5.0", "@metamask/logging-controller": "^8.0.2", "@metamask/messenger": "^1.2.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/utils": "^11.9.0", "jsonschema": "^1.4.1", "lodash": "^4.17.21", diff --git a/packages/snap-account-service/CHANGELOG.md b/packages/snap-account-service/CHANGELOG.md index 8aae4645b9..2d89203d8f 100644 --- a/packages/snap-account-service/CHANGELOG.md +++ b/packages/snap-account-service/CHANGELOG.md @@ -28,9 +28,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - The service messenger now requires the `KeyringController:withController` action. - Add `handleKeyringSnapMessage` ([#8758](https://github.com/MetaMask/core/pull/8758)) - This will be the new entry point for consumer that needs to forward keyring events to a account management Snap (instead of using the legacy Snap keyring instance directly). -- Forward selected account group accounts ([#8763](https://github.com/MetaMask/core/pull/8763)) +- Forward selected account group accounts ([#8763](https://github.com/MetaMask/core/pull/8763)), ([#8770](https://github.com/MetaMask/core/pull/8770)) - This logic used to live on the clients. - - The service messenger now requires the `KeyringController:unlock`, `AccountTreeController:selectedAccountGroupChange` events and `AccountTreeController:getAccountGroupObject` action. + - The service messenger now requires the `KeyringController:unlock`, `AccountTreeController:selectedAccountGroupChange`, `AccountTreeController:accountGroup{Created,Updated,Removed}` events. + - The service messenger now requires the `AccountTreeController:getSelectedAccountGroup` and `AccountTreeController:getAccountGroupObject` actions. ### Changed diff --git a/packages/snap-account-service/src/SnapAccountService.test.ts b/packages/snap-account-service/src/SnapAccountService.test.ts index 871206f85d..e1569d63a0 100644 --- a/packages/snap-account-service/src/SnapAccountService.test.ts +++ b/packages/snap-account-service/src/SnapAccountService.test.ts @@ -40,6 +40,18 @@ type MockTruncatedSnap = Pick< 'id' | 'initialPermissions' | 'enabled' | 'blocked' >; +/** Mock account group type for tests. */ +type MockAccountGroup = Pick; + +/** Mock Snap keyring type for tests. */ +type MockSnapKeyring = { + type: KeyringTypes.snap; + handleKeyringSnapMessage?: jest.MockedFunction< + SnapKeyring['handleKeyringSnapMessage'] + >; + setSelectedAccounts?: jest.MockedFunction; +}; + type Mocks = { // eslint-disable-next-line @typescript-eslint/naming-convention SnapController: { @@ -105,6 +117,9 @@ function getMessenger( 'KeyringController:stateChange', 'KeyringController:unlock', 'AccountTreeController:selectedAccountGroupChange', + 'AccountTreeController:accountGroupCreated', + 'AccountTreeController:accountGroupUpdated', + 'AccountTreeController:accountGroupRemoved', ], }); return messenger; @@ -202,11 +217,57 @@ function buildSnap(id: string, hasKeyring: boolean): TruncatedSnap { /** * Builds a minimal `AccountGroupObject` for tests. * + * @param id - The group ID. * @param accounts - The list of account IDs in the group. * @returns A minimal `AccountGroupObject`. */ -function buildGroup(accounts: string[]): AccountGroupObject { - return { accounts } as unknown as AccountGroupObject; +function buildGroup( + id: AccountGroupId, + accounts: string[], +): AccountGroupObject { + return { id, accounts } as MockAccountGroup as AccountGroupObject; +} + +/** + * Publishes an AccountTreeController accountGroupCreated event on the root + * messenger. + * + * @param rootMessenger - The root messenger. + * @param group - The created account group. + */ +function publishAccountGroupCreated( + rootMessenger: RootMessenger, + group: AccountGroupObject, +): void { + rootMessenger.publish('AccountTreeController:accountGroupCreated', group); +} + +/** + * Publishes an AccountTreeController accountGroupUpdated event on the root + * messenger. + * + * @param rootMessenger - The root messenger. + * @param group - The updated account group. + */ +function publishAccountGroupUpdated( + rootMessenger: RootMessenger, + group: AccountGroupObject, +): void { + rootMessenger.publish('AccountTreeController:accountGroupUpdated', group); +} + +/** + * Publishes an AccountTreeController accountGroupRemoved event on the root + * messenger. + * + * @param rootMessenger - The root messenger. + * @param groupId - The removed account group ID. + */ +function publishAccountGroupRemoved( + rootMessenger: RootMessenger, + groupId: AccountGroupId, +): void { + rootMessenger.publish('AccountTreeController:accountGroupRemoved', groupId); } /** @@ -277,7 +338,7 @@ function mockLegacySnapKeyring( >; }, ): void { - const snapKeyring = { + const snapKeyring: MockSnapKeyring = { type: KeyringTypes.snap, handleKeyringSnapMessage, setSelectedAccounts, @@ -287,7 +348,7 @@ function mockLegacySnapKeyring( get keyrings() { return Object.freeze([ { - keyring: snapKeyring as unknown as KeyringEntry['keyring'], + keyring: snapKeyring as KeyringEntry['keyring'], metadata: { id: 'id-snap', name: KeyringTypes.snap }, }, ]); @@ -642,7 +703,7 @@ describe('SnapAccountService', () => { const setSelectedAccounts = jest.fn().mockResolvedValue(undefined); mockLegacySnapKeyring(mocks, { setSelectedAccounts }); mocks.AccountTreeController.getAccountGroupObject.mockReturnValue( - buildGroup(MOCK_ACCOUNTS), + buildGroup(MOCK_GROUP_ID, MOCK_ACCOUNTS), ); expect(service).toBeDefined(); @@ -694,7 +755,7 @@ describe('SnapAccountService', () => { const setSelectedAccounts = jest.fn().mockRejectedValue(error); mockLegacySnapKeyring(mocks, { setSelectedAccounts }); mocks.AccountTreeController.getAccountGroupObject.mockReturnValue( - buildGroup(MOCK_ACCOUNTS), + buildGroup(MOCK_GROUP_ID, MOCK_ACCOUNTS), ); const consoleErrorSpy = jest .spyOn(console, 'error') @@ -706,7 +767,7 @@ describe('SnapAccountService', () => { expect(setSelectedAccounts).toHaveBeenCalledWith(MOCK_ACCOUNTS); expect(consoleErrorSpy).toHaveBeenCalledWith( - 'Error handling selected account group change:', + 'Error forwarding selected accounts:', error, ); @@ -729,7 +790,7 @@ describe('SnapAccountService', () => { MOCK_GROUP_ID, ); mocks.AccountTreeController.getAccountGroupObject.mockReturnValue( - buildGroup(MOCK_ACCOUNTS), + buildGroup(MOCK_GROUP_ID, MOCK_ACCOUNTS), ); expect(service).toBeDefined(); @@ -770,7 +831,7 @@ describe('SnapAccountService', () => { MOCK_GROUP_ID, ); mocks.AccountTreeController.getAccountGroupObject.mockReturnValue( - buildGroup(MOCK_ACCOUNTS), + buildGroup(MOCK_GROUP_ID, MOCK_ACCOUNTS), ); const consoleErrorSpy = jest .spyOn(console, 'error') @@ -782,11 +843,116 @@ describe('SnapAccountService', () => { expect(setSelectedAccounts).toHaveBeenCalledWith(MOCK_ACCOUNTS); expect(consoleErrorSpy).toHaveBeenCalledWith( - 'Error forwarding selected account group on unlock:', + 'Error forwarding selected accounts:', error, ); consoleErrorSpy.mockRestore(); }); }); + + describe.each([ + ['accountGroupCreated', publishAccountGroupCreated] as const, + ['accountGroupUpdated', publishAccountGroupUpdated] as const, + ])('on AccountTreeController:%s', (_eventName, publishEvent) => { + const MOCK_GROUP_ID = 'keyring:01JABC/group-1' as AccountGroupId; + const OTHER_GROUP_ID = 'keyring:01JABC/group-2' as AccountGroupId; + const MOCK_ACCOUNTS = [ + '00000000-0000-0000-0000-000000000001', + '00000000-0000-0000-0000-000000000002', + ]; + + it('forwards the accounts from the event payload when the affected group is the selected one', async () => { + const { service, rootMessenger, mocks } = setup(); + const setSelectedAccounts = jest.fn().mockResolvedValue(undefined); + mockLegacySnapKeyring(mocks, { setSelectedAccounts }); + mocks.AccountTreeController.getSelectedAccountGroup.mockReturnValue( + MOCK_GROUP_ID, + ); + expect(service).toBeDefined(); + + publishEvent(rootMessenger, buildGroup(MOCK_GROUP_ID, MOCK_ACCOUNTS)); + await flushMicrotasks(); + + expect( + mocks.AccountTreeController.getAccountGroupObject, + ).not.toHaveBeenCalled(); + expect(setSelectedAccounts).toHaveBeenCalledWith(MOCK_ACCOUNTS); + }); + + it('does nothing when the affected group is not the selected one', async () => { + const { service, rootMessenger, mocks } = setup(); + const setSelectedAccounts = jest.fn().mockResolvedValue(undefined); + mockLegacySnapKeyring(mocks, { setSelectedAccounts }); + mocks.AccountTreeController.getSelectedAccountGroup.mockReturnValue( + OTHER_GROUP_ID, + ); + expect(service).toBeDefined(); + + publishEvent(rootMessenger, buildGroup(MOCK_GROUP_ID, MOCK_ACCOUNTS)); + await flushMicrotasks(); + + expect( + mocks.AccountTreeController.getAccountGroupObject, + ).not.toHaveBeenCalled(); + expect(setSelectedAccounts).not.toHaveBeenCalled(); + }); + + it('does nothing when no account group is selected', async () => { + const { service, rootMessenger, mocks } = setup(); + const setSelectedAccounts = jest.fn().mockResolvedValue(undefined); + mockLegacySnapKeyring(mocks, { setSelectedAccounts }); + mocks.AccountTreeController.getSelectedAccountGroup.mockReturnValue(''); + expect(service).toBeDefined(); + + publishEvent(rootMessenger, buildGroup(MOCK_GROUP_ID, MOCK_ACCOUNTS)); + await flushMicrotasks(); + + expect( + mocks.AccountTreeController.getAccountGroupObject, + ).not.toHaveBeenCalled(); + expect(setSelectedAccounts).not.toHaveBeenCalled(); + }); + }); + + describe('on AccountTreeController:accountGroupRemoved', () => { + const MOCK_GROUP_ID = 'keyring:01JABC/group-1' as AccountGroupId; + const OTHER_GROUP_ID = 'keyring:01JABC/group-2' as AccountGroupId; + + it('clears the selected accounts when the removed group is the selected one', async () => { + const { service, rootMessenger, mocks } = setup(); + const setSelectedAccounts = jest.fn().mockResolvedValue(undefined); + mockLegacySnapKeyring(mocks, { setSelectedAccounts }); + mocks.AccountTreeController.getSelectedAccountGroup.mockReturnValue( + MOCK_GROUP_ID, + ); + expect(service).toBeDefined(); + + publishAccountGroupRemoved(rootMessenger, MOCK_GROUP_ID); + await flushMicrotasks(); + + expect( + mocks.AccountTreeController.getAccountGroupObject, + ).not.toHaveBeenCalled(); + expect(setSelectedAccounts).toHaveBeenCalledWith([]); + }); + + it('does nothing when the removed group is not the selected one', async () => { + const { service, rootMessenger, mocks } = setup(); + const setSelectedAccounts = jest.fn().mockResolvedValue(undefined); + mockLegacySnapKeyring(mocks, { setSelectedAccounts }); + mocks.AccountTreeController.getSelectedAccountGroup.mockReturnValue( + OTHER_GROUP_ID, + ); + expect(service).toBeDefined(); + + publishAccountGroupRemoved(rootMessenger, MOCK_GROUP_ID); + await flushMicrotasks(); + + expect( + mocks.AccountTreeController.getAccountGroupObject, + ).not.toHaveBeenCalled(); + expect(setSelectedAccounts).not.toHaveBeenCalled(); + }); + }); }); diff --git a/packages/snap-account-service/src/SnapAccountService.ts b/packages/snap-account-service/src/SnapAccountService.ts index ec2a285bec..7f73096178 100644 --- a/packages/snap-account-service/src/SnapAccountService.ts +++ b/packages/snap-account-service/src/SnapAccountService.ts @@ -11,7 +11,7 @@ import type { KeyringEntry, } from '@metamask/keyring-controller'; import { KeyringTypes } from '@metamask/keyring-controller'; -import type { BaseKeyring } from '@metamask/keyring-utils'; +import type { AccountId, BaseKeyring } from '@metamask/keyring-utils'; import type { Messenger } from '@metamask/messenger'; import type { SnapControllerGetRunnableSnapsAction, @@ -42,6 +42,10 @@ import type { AccountTreeControllerGetAccountGroupObjectAction, AccountTreeControllerGetSelectedAccountGroupAction, AccountTreeControllerSelectedAccountGroupChangeEvent, + AccountTreeControllerAccountGroupCreatedEvent, + AccountTreeControllerAccountGroupUpdatedEvent, + AccountTreeControllerAccountGroupRemovedEvent, + AccountGroupObject, } from './types'; /** @@ -100,7 +104,10 @@ type AllowedEvents = | SnapControllerSnapUninstalledEvent | KeyringControllerStateChangeEvent | KeyringControllerUnlockEvent - | AccountTreeControllerSelectedAccountGroupChangeEvent; + | AccountTreeControllerSelectedAccountGroupChangeEvent + | AccountTreeControllerAccountGroupCreatedEvent + | AccountTreeControllerAccountGroupUpdatedEvent + | AccountTreeControllerAccountGroupRemovedEvent; /** * The messenger which is restricted to actions and events accessed by @@ -181,6 +188,21 @@ export class SnapAccountService { (groupId) => this.#handleSelectedAccountGroupChange(groupId), ); + this.#messenger.subscribe( + 'AccountTreeController:accountGroupCreated', + (group) => this.#handleAccountGroupCreatedOrUpdated(group), + ); + + this.#messenger.subscribe( + 'AccountTreeController:accountGroupUpdated', + (group) => this.#handleAccountGroupCreatedOrUpdated(group), + ); + + this.#messenger.subscribe( + 'AccountTreeController:accountGroupRemoved', + (groupId) => this.#handleAccountGroupRemoved(groupId), + ); + this.#messenger.subscribe('KeyringController:unlock', () => this.#handleUnlock(), ); @@ -193,9 +215,10 @@ export class SnapAccountService { * @param groupId - The ID of the newly selected account group. */ #handleSelectedAccountGroupChange(groupId: AccountGroupId | ''): void { - this.#forwardSelectedAccountGroup(groupId).catch((error) => { - console.error('Error handling selected account group change:', error); - }); + this.#forwardSelectedAccounts( + groupId, + this.#getAccountGroup(groupId)?.accounts, + ); } /** @@ -203,15 +226,38 @@ export class SnapAccountService { * selected account group's accounts to the Snap keyring. */ #handleUnlock(): void { - const groupId = this.#messenger.call( - 'AccountTreeController:getSelectedAccountGroup', + const groupId = this.#getSelectedAccountGroupId(); + this.#forwardSelectedAccounts( + groupId, + this.#getAccountGroup(groupId)?.accounts, ); - this.#forwardSelectedAccountGroup(groupId).catch((error) => { - console.error( - 'Error forwarding selected account group on unlock:', - error, + } + + /** + * Handles created or updated account groups by forwarding the accounts of the currently + * selected account group to the Snap keyring, if the created/updated group is currently selected. + * + * @param group - The account group being created or updated. + */ + #handleAccountGroupCreatedOrUpdated(group: AccountGroupObject): void { + if (group.id === this.#getSelectedAccountGroupId()) { + this.#forwardSelectedAccounts(group.id, group.accounts); + } + } + + /** + * Handles removed account groups by forwarding the accounts of the currently + * selected account group to the Snap keyring, if the removed group is currently selected. + * + * @param groupId - The ID of the account group being removed. + */ + #handleAccountGroupRemoved(groupId: AccountGroupId): void { + if (groupId === this.#getSelectedAccountGroupId()) { + this.#forwardSelectedAccounts( + groupId, + [], // Clearing accounts since the group is removed ); - }); + } } /** @@ -322,24 +368,73 @@ export class SnapAccountService { * * @param groupId - The ID of the account group whose accounts should be * forwarded. If empty, this is a no-op. + * @param accounts - The accounts to forward. If not defined, this is a no-op. */ - async #forwardSelectedAccountGroup( + #forwardSelectedAccounts( groupId: AccountGroupId | '', - ): Promise { - if (groupId) { - const group = this.#messenger.call( - 'AccountTreeController:getAccountGroupObject', - groupId, + accounts: AccountId[] | undefined, + ): void { + if (!groupId) { + log( + 'No selected account group, skipping forwarding selected accounts to Snap keyring.', ); + return; + } - if (group) { + if (!accounts) { + log( + `Account group ("${groupId}") has no accounts, skipping forwarding selected accounts to Snap keyring.`, + ); + return; + } + + const forwardSelectedAccounts = async (): Promise => { + if (accounts.length) { log( - `Forwarding selected accounts (from "${groupId}") to Snap keyring: ${group.accounts.join(', ')}`, + `Forwarding selected accounts (from "${groupId}"): ${accounts.join(', ')}`, ); - - const snapKeyring = await this.getLegacySnapKeyring(); - await snapKeyring.setSelectedAccounts(group.accounts); + } else { + log(`Clearing selected accounts (from "${groupId}")`); } + + const snapKeyring = await this.getLegacySnapKeyring(); + await snapKeyring.setSelectedAccounts(accounts); + }; + + // There is nothing we can do if forwarding fails. This will auto-recover on the next relevant event. + forwardSelectedAccounts().catch((error) => { + console.error('Error forwarding selected accounts:', error); + }); + } + + /** + * Gets the account group object for the given group ID. + * + * @param groupId - The ID of the account group. + * @returns The account group object, or undefined if the group ID is empty or the group does not exist. + */ + #getAccountGroup( + groupId: AccountGroupId | '', + ): AccountGroupObject | undefined { + if (!groupId) { + return undefined; } + + return this.#messenger.call( + 'AccountTreeController:getAccountGroupObject', + groupId, + ); + } + + /** + * Gets the currently selected account group ID. + * + * @returns The currently selected account group ID, or an empty string if + * there is no selected account group. + */ + #getSelectedAccountGroupId(): AccountGroupId | '' { + return this.#messenger.call( + 'AccountTreeController:getSelectedAccountGroup', + ); } } diff --git a/packages/snap-account-service/src/types.ts b/packages/snap-account-service/src/types.ts index 9e175a1b7e..e9485a7d5f 100644 --- a/packages/snap-account-service/src/types.ts +++ b/packages/snap-account-service/src/types.ts @@ -25,6 +25,7 @@ import { AccountId } from '@metamask/keyring-utils'; * narrow. See the note above. */ export type AccountGroupObject = { + id: AccountGroupId; accounts: AccountId[]; }; @@ -51,3 +52,27 @@ export type AccountTreeControllerSelectedAccountGroupChangeEvent = { type: `AccountTreeController:selectedAccountGroupChange`; payload: [AccountGroupId | '', AccountGroupId | '']; }; + +/** + * Mirror of `AccountTreeControllerAccountGroupCreatedEvent`. + */ +export type AccountTreeControllerAccountGroupCreatedEvent = { + type: `AccountTreeController:accountGroupCreated`; + payload: [AccountGroupObject]; +}; + +/** + * Mirror of `AccountTreeControllerAccountGroupUpdatedEvent`. + */ +export type AccountTreeControllerAccountGroupUpdatedEvent = { + type: `AccountTreeController:accountGroupUpdated`; + payload: [AccountGroupObject]; +}; + +/** + * Mirror of `AccountTreeControllerAccountGroupRemovedEvent`. + */ +export type AccountTreeControllerAccountGroupRemovedEvent = { + type: `AccountTreeController:accountGroupRemoved`; + payload: [AccountGroupId]; +}; diff --git a/packages/social-controllers/CHANGELOG.md b/packages/social-controllers/CHANGELOG.md index 6a968cd8d8..136a6cb94b 100644 --- a/packages/social-controllers/CHANGELOG.md +++ b/packages/social-controllers/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [2.2.1] ### Changed diff --git a/packages/social-controllers/package.json b/packages/social-controllers/package.json index 96abbbd61b..17df8bf5d8 100644 --- a/packages/social-controllers/package.json +++ b/packages/social-controllers/package.json @@ -55,7 +55,7 @@ "dependencies": { "@metamask/base-controller": "^9.1.0", "@metamask/base-data-service": "^0.1.2", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0", "@metamask/profile-sync-controller": "^28.0.2", "@metamask/superstruct": "^3.1.0" diff --git a/packages/subscription-controller/CHANGELOG.md b/packages/subscription-controller/CHANGELOG.md index 2012ccbe90..603776d04c 100644 --- a/packages/subscription-controller/CHANGELOG.md +++ b/packages/subscription-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [6.1.3] ### Changed diff --git a/packages/subscription-controller/package.json b/packages/subscription-controller/package.json index 20723a6f50..2b4c81643d 100644 --- a/packages/subscription-controller/package.json +++ b/packages/subscription-controller/package.json @@ -54,7 +54,7 @@ }, "dependencies": { "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/messenger": "^1.2.0", "@metamask/polling-controller": "^16.0.5", "@metamask/profile-sync-controller": "^28.0.2", diff --git a/packages/transaction-controller/CHANGELOG.md b/packages/transaction-controller/CHANGELOG.md index 73ce879b0d..265b87eb90 100644 --- a/packages/transaction-controller/CHANGELOG.md +++ b/packages/transaction-controller/CHANGELOG.md @@ -9,14 +9,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Add optional `fiat` object (with `orderId` and `provider` properties) to `MetamaskPayMetadata` type for persisting fiat on-ramp order data on transactions ([#8694](https://github.com/MetaMask/core/pull/8694)) - Add `predictAcrossWithdraw` to the `TransactionType` enum ([#8759](https://github.com/MetaMask/core/pull/8759)) ### Changed -- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765)) +- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774)) - `estimateGasBatch` now falls back to the sum of per-tx `gas` values in the EIP-7702 path when node simulation fails, instead of returning the block-gas-limit fallback ([#8735](https://github.com/MetaMask/core/pull/8735)) - Real 7702 simulation is still preferred when it succeeds (the bundled call has no per-tx intrinsic gas cost so the estimate is typically tighter than summing per-tx limits). - Required for callers that submit batches whose individual sub-calls cannot be simulated standalone, for example predict-withdraw, where the batch's first sub-call (`Safe.execTransaction`) provides source-token balance to subsequent sub-calls (approve + swap), and simulating the relay-only sub-calls in isolation reverts because the EOA has no balance until the Safe sub-call has run. +- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) ## [65.3.0] diff --git a/packages/transaction-controller/package.json b/packages/transaction-controller/package.json index dd3add2b8b..9e74edb8f4 100644 --- a/packages/transaction-controller/package.json +++ b/packages/transaction-controller/package.json @@ -60,15 +60,15 @@ "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.0", "@ethersproject/wallet": "^5.7.0", - "@metamask/accounts-controller": "^38.1.0", + "@metamask/accounts-controller": "^38.1.1", "@metamask/approval-controller": "^9.0.1", "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/core-backend": "^6.2.2", "@metamask/gas-fee-controller": "^26.2.1", "@metamask/messenger": "^1.2.0", "@metamask/metamask-eth-abis": "^3.1.1", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/nonce-tracker": "^6.0.0", "@metamask/remote-feature-flag-controller": "^4.2.1", "@metamask/rpc-errors": "^7.0.2", diff --git a/packages/transaction-controller/src/types.ts b/packages/transaction-controller/src/types.ts index 541dd360d1..6ec3b783f3 100644 --- a/packages/transaction-controller/src/types.ts +++ b/packages/transaction-controller/src/types.ts @@ -2170,6 +2170,14 @@ export type MetamaskPayMetadata = { /** Chain ID of the payment token. */ chainId?: Hex; + /** Fiat on-ramp metadata (order ID and provider). */ + fiat?: { + /** Order ID (normalized format: /providers/{provider}/orders/{id}). */ + orderId: string; + /** Provider code (e.g. "transak-native"). */ + provider: string; + }; + /** * Whether this is a post-quote transaction (e.g., withdrawal flow). * When true, the token represents the destination rather than source. diff --git a/packages/transaction-pay-controller/CHANGELOG.md b/packages/transaction-pay-controller/CHANGELOG.md index edae0d5fbb..fbe8309fb6 100644 --- a/packages/transaction-pay-controller/CHANGELOG.md +++ b/packages/transaction-pay-controller/CHANGELOG.md @@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Derive fiat order source amount from on-chain transaction data (`order.txHash`) with fallback to `order.cryptoAmount` ([#8694](https://github.com/MetaMask/core/pull/8694)) +- Persist fiat order ID and provider code on `transaction.metamaskPay` before polling, so activity views can query order status after controller state cleanup ([#8694](https://github.com/MetaMask/core/pull/8694)) + +## [22.3.1] + +### Changed + +- Bump `@metamask/assets-controller` from `^7.1.0` to `^7.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/assets-controllers` from `^107.0.0` to `^108.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/bridge-controller` from `^72.0.3` to `^72.0.4` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/bridge-status-controller` from `^71.1.3` to `^71.1.4` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/network-controller` from `^31.1.0` to `^32.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) + ## [22.3.0] ### Added @@ -856,7 +872,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Initial release ([#6820](https://github.com/MetaMask/core/pull/6820)) -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.3.0...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.3.1...HEAD +[22.3.1]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.3.0...@metamask/transaction-pay-controller@22.3.1 [22.3.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.2.0...@metamask/transaction-pay-controller@22.3.0 [22.2.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.1.0...@metamask/transaction-pay-controller@22.2.0 [22.1.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.0.2...@metamask/transaction-pay-controller@22.1.0 diff --git a/packages/transaction-pay-controller/package.json b/packages/transaction-pay-controller/package.json index 9e620f5e1f..066e8be7f5 100644 --- a/packages/transaction-pay-controller/package.json +++ b/packages/transaction-pay-controller/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/transaction-pay-controller", - "version": "22.3.0", + "version": "22.3.1", "description": "Manages alternate payment strategies to provide required funds for transactions in MetaMask", "keywords": [ "Ethereum", @@ -57,16 +57,16 @@ "@ethersproject/abi": "^5.7.0", "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.0", - "@metamask/assets-controller": "^7.1.0", - "@metamask/assets-controllers": "^107.0.0", + "@metamask/assets-controller": "^7.1.1", + "@metamask/assets-controllers": "^108.0.0", "@metamask/base-controller": "^9.1.0", - "@metamask/bridge-controller": "^72.0.3", - "@metamask/bridge-status-controller": "^71.1.3", - "@metamask/controller-utils": "^12.0.0", + "@metamask/bridge-controller": "^72.0.4", + "@metamask/bridge-status-controller": "^71.1.4", + "@metamask/controller-utils": "^12.1.0", "@metamask/gas-fee-controller": "^26.2.1", "@metamask/messenger": "^1.2.0", "@metamask/metamask-eth-abis": "^3.1.1", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/ramps-controller": "^13.3.1", "@metamask/remote-feature-flag-controller": "^4.2.1", "@metamask/transaction-controller": "^65.3.0", diff --git a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.test.ts b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.test.ts index c26170a866..f3ea32cb8a 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.test.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.test.ts @@ -14,17 +14,19 @@ import type { QuoteRequest, TransactionPayQuote, } from '../../types'; -import { buildCaipAssetType, getTokenInfo } from '../../utils/token'; +import { buildCaipAssetType } from '../../utils/token'; +import { updateTransaction } from '../../utils/transaction'; import { getRelayQuotes } from '../relay/relay-quotes'; import { submitRelayQuotes } from '../relay/relay-submit'; import type { RelayQuote } from '../relay/types'; import type { TransactionPayFiatAsset } from './constants'; import { submitFiatQuotes } from './fiat-submit'; import type { FiatQuote } from './types'; -import { deriveFiatAssetForFiatPayment } from './utils'; +import { deriveFiatAssetForFiatPayment, resolveSourceAmountRaw } from './utils'; jest.mock('./utils'); jest.mock('../../utils/token'); +jest.mock('../../utils/transaction'); jest.mock('../relay/relay-quotes'); jest.mock('../relay/relay-submit'); @@ -45,6 +47,8 @@ const FIAT_ASSET_MOCK: TransactionPayFiatAsset = { chainId: '0x89', }; +const FIAT_ASSET_CAIP_ID_MOCK = 'eip155:137/slip44:966'; + const RAMPS_QUOTE_MOCK: RampsQuote = { provider: '/providers/transak-native-staging', quote: { @@ -230,14 +234,13 @@ function getRequest({ }; } -const FIAT_ASSET_CAIP_ID_MOCK = 'eip155:137/slip44:966'; - describe('submitFiatQuotes', () => { const buildCaipAssetTypeMock = jest.mocked(buildCaipAssetType); - const getTokenInfoMock = jest.mocked(getTokenInfo); const deriveFiatAssetForFiatPaymentMock = jest.mocked( deriveFiatAssetForFiatPayment, ); + const resolveSourceAmountRawMock = jest.mocked(resolveSourceAmountRaw); + const updateTransactionMock = jest.mocked(updateTransaction); const getRelayQuotesMock = jest.mocked(getRelayQuotes); const submitRelayQuotesMock = jest.mocked(submitRelayQuotes); @@ -246,8 +249,8 @@ describe('submitFiatQuotes', () => { jest.useRealTimers(); buildCaipAssetTypeMock.mockReturnValue(FIAT_ASSET_CAIP_ID_MOCK); - getTokenInfoMock.mockReturnValue({ decimals: 18, symbol: 'POL' }); deriveFiatAssetForFiatPaymentMock.mockReturnValue(FIAT_ASSET_MOCK); + resolveSourceAmountRawMock.mockResolvedValue('1000000000000000000'); getRelayQuotesMock.mockResolvedValue([RELAY_QUOTE_RESULT_MOCK]); submitRelayQuotesMock.mockResolvedValue({ transactionHash: '0x1234', @@ -264,6 +267,7 @@ describe('submitFiatQuotes', () => { }, status: RampsOrderStatus.Completed, }); + resolveSourceAmountRawMock.mockResolvedValue('1234500000000000000'); const { callMock, request } = getRequest({ order }); const result = await submitFiatQuotes(request); @@ -274,6 +278,12 @@ describe('submitFiatQuotes', () => { ORDER_ID_MOCK, WALLET_ADDRESS_MOCK, ); + expect(resolveSourceAmountRawMock).toHaveBeenCalledWith({ + messenger: expect.anything(), + order, + fiatAsset: FIAT_ASSET_MOCK, + walletAddress: WALLET_ADDRESS_MOCK, + }); expect(getRelayQuotesMock).toHaveBeenCalledTimes(1); expect(getRelayQuotesMock.mock.calls[0][0].requests).toStrictEqual([ expect.objectContaining({ @@ -297,6 +307,46 @@ describe('submitFiatQuotes', () => { expect(result).toStrictEqual({ transactionHash: '0x1234' }); }); + it('persists fiat order metadata on the transaction before polling', async () => { + const { request } = getRequest(); + + await submitFiatQuotes(request); + + expect(updateTransactionMock).toHaveBeenCalledWith( + { + transactionId: TRANSACTION_ID_MOCK, + messenger: request.messenger, + note: 'Persist fiat order metadata', + }, + expect.any(Function), + ); + + const txDraft = { metamaskPay: undefined } as unknown as TransactionMeta; + const updateFn = updateTransactionMock.mock.calls[0][1]; + updateFn(txDraft); + + expect(txDraft.metamaskPay).toStrictEqual({ + fiat: { orderId: ORDER_ID_MOCK, provider: 'transak-native-staging' }, + }); + }); + + it('preserves existing metamaskPay fields when persisting fiat order metadata', async () => { + const { request } = getRequest(); + + await submitFiatQuotes(request); + + const txDraft = { + metamaskPay: { totalFiat: '20.00' }, + } as unknown as TransactionMeta; + const updateFn = updateTransactionMock.mock.calls[0][1]; + updateFn(txDraft); + + expect(txDraft.metamaskPay).toStrictEqual({ + totalFiat: '20.00', + fiat: { orderId: ORDER_ID_MOCK, provider: 'transak-native-staging' }, + }); + }); + it('throws if wallet address is missing', async () => { const { request } = getRequest({ transaction: { @@ -511,7 +561,11 @@ describe('submitFiatQuotes', () => { }); it('throws if token info is unavailable for the fiat asset', async () => { - getTokenInfoMock.mockReturnValue(undefined); + resolveSourceAmountRawMock.mockRejectedValue( + new Error( + `Unable to resolve token info for fiat asset ${FIAT_ASSET_MOCK.address} on chain ${FIAT_ASSET_MOCK.chainId}`, + ), + ); const { request } = getRequest(); await expect(submitFiatQuotes(request)).rejects.toThrow( @@ -549,20 +603,16 @@ describe('submitFiatQuotes', () => { ); }); - it.each([ - ['0', 'Invalid fiat order crypto amount: 0'], - ['-1', 'Invalid fiat order crypto amount: -1'], - ['NaN', 'Invalid fiat order crypto amount: NaN'], - ])( - 'throws if order crypto amount is invalid (%s)', - async (cryptoAmount, expectedError) => { - const { request } = getRequest({ - order: getFiatOrderMock({ cryptoAmount }), - }); - - await expect(submitFiatQuotes(request)).rejects.toThrow(expectedError); - }, - ); + it('throws if resolveSourceAmountRaw rejects', async () => { + resolveSourceAmountRawMock.mockRejectedValue( + new Error('Invalid fiat order crypto amount: 0'), + ); + const { request } = getRequest(); + + await expect(submitFiatQuotes(request)).rejects.toThrow( + 'Invalid fiat order crypto amount: 0', + ); + }); it('throws if request has no fiat quotes', async () => { const { request } = getRequest(); @@ -582,10 +632,11 @@ describe('submitFiatQuotes', () => { ); }); - it('throws if crypto amount rounds to zero after decimal shift', async () => { - const { request } = getRequest({ - order: getFiatOrderMock({ cryptoAmount: '0.0000000000000000001' }), - }); + it('throws if resolveSourceAmountRaw throws for zero amount', async () => { + resolveSourceAmountRawMock.mockRejectedValue( + new Error('Computed fiat order source amount is not positive'), + ); + const { request } = getRequest(); await expect(submitFiatQuotes(request)).rejects.toThrow( 'Computed fiat order source amount is not positive', diff --git a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.ts b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.ts index a2b88eedfd..753ef243a8 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.ts @@ -14,13 +14,14 @@ import type { QuoteRequest, TransactionPayControllerMessenger, } from '../../types'; -import { buildCaipAssetType, getTokenInfo } from '../../utils/token'; +import { buildCaipAssetType } from '../../utils/token'; +import { updateTransaction } from '../../utils/transaction'; import { getRelayQuotes } from '../relay/relay-quotes'; import { submitRelayQuotes } from '../relay/relay-submit'; import type { RelayQuote } from '../relay/types'; import type { TransactionPayFiatAsset } from './constants'; import type { FiatQuote } from './types'; -import { deriveFiatAssetForFiatPayment } from './utils'; +import { deriveFiatAssetForFiatPayment, resolveSourceAmountRaw } from './utils'; const log = createModuleLogger(projectLogger, 'fiat-submit'); @@ -70,6 +71,18 @@ export async function submitFiatQuotes( throw new Error('Missing provider code for fiat submission'); } + updateTransaction( + { + transactionId, + messenger, + note: 'Persist fiat order metadata', + }, + (tx) => { + tx.metamaskPay ??= {}; + tx.metamaskPay.fiat = { orderId, provider: providerCode }; + }, + ); + log('Starting fiat order polling', { orderId, providerCode, @@ -108,41 +121,6 @@ function extractProviderCode(provider: string | undefined): string | null { return parts.length >= 2 && parts[0] === 'providers' ? parts[1] : null; } -/** - * Converts the order's human-readable crypto amount to a raw token amount. - * - * @param options - The conversion options. - * @param options.cryptoAmount - Human-readable crypto amount from the completed order. - * @param options.decimals - Token decimals for the fiat asset. - * @returns The raw token amount as a string. - */ -function getRawSourceAmountFromOrder({ - cryptoAmount, - decimals, -}: { - cryptoAmount: RampsOrder['cryptoAmount']; - decimals: number; -}): string { - const normalizedAmount = new BigNumber(String(cryptoAmount)); - - if (!normalizedAmount.isFinite() || normalizedAmount.lte(0)) { - throw new Error( - `Invalid fiat order crypto amount: ${String(cryptoAmount)}`, - ); - } - - const rawAmount = normalizedAmount - .shiftedBy(decimals) - .decimalPlaces(0, BigNumber.ROUND_DOWN) - .toFixed(0); - - if (!new BigNumber(rawAmount).gt(0)) { - throw new Error('Computed fiat order source amount is not positive'); - } - - return rawAmount; -} - /** * Validates that the completed order's crypto asset matches the expected fiat asset. * @@ -331,21 +309,13 @@ async function submitRelayAfterFiatCompletion({ transactionId, }); - const tokenInfo = getTokenInfo( - messenger, - fiatAsset.address, - fiatAsset.chainId, - ); - - if (!tokenInfo) { - throw new Error( - `Unable to resolve token info for fiat asset ${fiatAsset.address} on chain ${fiatAsset.chainId}`, - ); - } + const walletAddress = transaction.txParams.from as Hex; - const sourceAmountRaw = getRawSourceAmountFromOrder({ - cryptoAmount: order.cryptoAmount, - decimals: tokenInfo.decimals, + const sourceAmountRaw = await resolveSourceAmountRaw({ + messenger, + order, + fiatAsset, + walletAddress, }); const baseRequest = quotes[0].request; diff --git a/packages/transaction-pay-controller/src/strategy/fiat/utils.test.ts b/packages/transaction-pay-controller/src/strategy/fiat/utils.test.ts index 5f91a94114..c6278b1c37 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/utils.test.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/utils.test.ts @@ -1,11 +1,49 @@ +import { Web3Provider } from '@ethersproject/providers'; +import type { RampsOrder } from '@metamask/ramps-controller'; import type { TransactionMeta } from '@metamask/transaction-controller'; import { TransactionType } from '@metamask/transaction-controller'; +import type { Hex } from '@metamask/utils'; import { getDefaultRemoteFeatureFlagControllerState } from '../../../../remote-feature-flag-controller/src/remote-feature-flag-controller'; +import { NATIVE_TOKEN_ADDRESS } from '../../constants'; import { getMessengerMock } from '../../tests/messenger-mock'; import { ETH_MAINNET_FIAT_ASSET, FIAT_ASSET_ID_BY_TX_TYPE } from './constants'; import type { TransactionPayFiatAsset } from './constants'; -import { deriveFiatAssetForFiatPayment } from './utils'; +import { + deriveFiatAssetForFiatPayment, + getRawSourceAmountFromOrderCryptoAmount, + resolveSourceAmountRaw, +} from './utils'; + +jest.mock('@ethersproject/providers', () => ({ + ...jest.requireActual('@ethersproject/providers'), + Web3Provider: jest.fn(), +})); + +const TX_HASH_MOCK = '0xabc123'; +const WALLET_ADDRESS_MOCK = '0x1111111111111111111111111111111111111111' as Hex; +const ERC20_ADDRESS_MOCK = '0x2222222222222222222222222222222222222222' as Hex; +const CHAIN_ID_MOCK = '0x1' as Hex; +const NETWORK_CLIENT_ID_MOCK = 'net-client-1'; +const PROVIDER_MOCK = { request: jest.fn() }; + +const NATIVE_FIAT_ASSET_MOCK: TransactionPayFiatAsset = { + address: NATIVE_TOKEN_ADDRESS, + chainId: CHAIN_ID_MOCK, +}; + +const ERC20_FIAT_ASSET_MOCK: TransactionPayFiatAsset = { + address: ERC20_ADDRESS_MOCK, + chainId: CHAIN_ID_MOCK, +}; + +function getOrderMock(overrides: Partial = {}): RampsOrder { + return { + cryptoAmount: '1.5', + txHash: TX_HASH_MOCK, + ...overrides, + } as RampsOrder; +} const FEATURE_FLAG_ASSET_MOCK: TransactionPayFiatAsset = { address: '0x0000000000000000000000000000000000000abc', @@ -166,4 +204,219 @@ describe('Fiat Utils', () => { expect(result).toStrictEqual(ETH_MAINNET_FIAT_ASSET); }); }); + + describe('resolveSourceAmountRaw', () => { + const { + messenger: resolveMessenger, + findNetworkClientIdByChainIdMock, + getNetworkClientByIdMock, + getTokensControllerStateMock, + getRemoteFeatureFlagControllerStateMock: + resolveRemoteFeatureFlagControllerStateMock, + } = getMessengerMock(); + + let mockGetTransactionReceipt: jest.Mock; + let mockSend: jest.Mock; + let mockGetTransaction: jest.Mock; + + beforeEach(() => { + jest.resetAllMocks(); + + mockGetTransactionReceipt = jest.fn(); + mockSend = jest.fn(); + mockGetTransaction = jest.fn(); + + findNetworkClientIdByChainIdMock.mockReturnValue(NETWORK_CLIENT_ID_MOCK); + getNetworkClientByIdMock.mockReturnValue({ + provider: PROVIDER_MOCK, + } as never); + + resolveRemoteFeatureFlagControllerStateMock.mockReturnValue({ + ...getDefaultRemoteFeatureFlagControllerState(), + }); + + getTokensControllerStateMock.mockReturnValue({ + allTokens: { + [CHAIN_ID_MOCK]: { + '0x0': [ + { + address: ERC20_ADDRESS_MOCK, + decimals: 6, + symbol: 'USDC', + aggregators: [], + image: '', + name: 'USDC', + isERC721: false, + }, + ], + }, + }, + allTokensStale: {}, + allIgnoredTokens: {}, + allDetectedTokens: {}, + } as never); + + (Web3Provider as unknown as jest.Mock).mockImplementation(() => ({ + getTransactionReceipt: mockGetTransactionReceipt, + send: mockSend, + getTransaction: mockGetTransaction, + })); + }); + + it('returns on-chain ERC-20 amount from receipt logs', async () => { + mockGetTransactionReceipt.mockResolvedValue({ + logs: [ + { + address: ERC20_ADDRESS_MOCK, + topics: [ + '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', + `0x000000000000000000000000${'aa'.repeat(20)}`, + `0x000000000000000000000000${WALLET_ADDRESS_MOCK.slice(2).toLowerCase()}`, + ], + data: '0x00000000000000000000000000000000000000000000000000000000006acfc0', + }, + ], + }); + + const result = await resolveSourceAmountRaw({ + messenger: resolveMessenger, + order: getOrderMock(), + fiatAsset: ERC20_FIAT_ASSET_MOCK, + walletAddress: WALLET_ADDRESS_MOCK, + }); + + expect(result).toBe('7000000'); + }); + + it('falls back to cryptoAmount when txHash is missing', async () => { + const result = await resolveSourceAmountRaw({ + messenger: resolveMessenger, + order: getOrderMock({ txHash: '' }), + fiatAsset: ERC20_FIAT_ASSET_MOCK, + walletAddress: WALLET_ADDRESS_MOCK, + }); + + expect(result).toBe('1500000'); + expect(mockGetTransactionReceipt).not.toHaveBeenCalled(); + }); + + it('falls back to cryptoAmount when receipt is null', async () => { + mockGetTransactionReceipt.mockResolvedValue(null); + + const result = await resolveSourceAmountRaw({ + messenger: resolveMessenger, + order: getOrderMock(), + fiatAsset: ERC20_FIAT_ASSET_MOCK, + walletAddress: WALLET_ADDRESS_MOCK, + }); + + expect(result).toBe('1500000'); + }); + + it('falls back to cryptoAmount when on-chain read throws', async () => { + mockGetTransactionReceipt.mockRejectedValue(new Error('Network error')); + + const result = await resolveSourceAmountRaw({ + messenger: resolveMessenger, + order: getOrderMock(), + fiatAsset: ERC20_FIAT_ASSET_MOCK, + walletAddress: WALLET_ADDRESS_MOCK, + }); + + expect(result).toBe('1500000'); + }); + + it('returns native amount from debug_traceTransaction', async () => { + mockSend.mockResolvedValue({ + to: WALLET_ADDRESS_MOCK.toLowerCase(), + value: '0x1bc16d674ec80000', + calls: [], + }); + + const result = await resolveSourceAmountRaw({ + messenger: resolveMessenger, + order: getOrderMock(), + fiatAsset: NATIVE_FIAT_ASSET_MOCK, + walletAddress: WALLET_ADDRESS_MOCK, + }); + + expect(result).toBe('2000000000000000000'); + }); + + it('falls back to tx.value for native when trace is unsupported', async () => { + mockSend.mockRejectedValue(new Error('Method not found')); + mockGetTransaction.mockResolvedValue({ + to: WALLET_ADDRESS_MOCK.toLowerCase(), + value: { toString: () => '2000000000000000000' }, + }); + + const result = await resolveSourceAmountRaw({ + messenger: resolveMessenger, + order: getOrderMock(), + fiatAsset: NATIVE_FIAT_ASSET_MOCK, + walletAddress: WALLET_ADDRESS_MOCK, + }); + + expect(result).toBe('2000000000000000000'); + }); + + it('throws when token info cannot be resolved for fallback', async () => { + getTokensControllerStateMock.mockReturnValue({ + allTokens: {}, + allTokensStale: {}, + allIgnoredTokens: {}, + allDetectedTokens: {}, + } as never); + + await expect( + resolveSourceAmountRaw({ + messenger: resolveMessenger, + order: getOrderMock({ txHash: '' }), + fiatAsset: ERC20_FIAT_ASSET_MOCK, + walletAddress: WALLET_ADDRESS_MOCK, + }), + ).rejects.toThrow( + `Unable to resolve token info for fiat asset ${ERC20_ADDRESS_MOCK} on chain ${CHAIN_ID_MOCK}`, + ); + }); + }); + + describe('getRawSourceAmountFromOrderCryptoAmount', () => { + it('converts human-readable amount to raw token amount', () => { + expect( + getRawSourceAmountFromOrderCryptoAmount({ + cryptoAmount: '1.2345', + decimals: 18, + }), + ).toBe('1234500000000000000'); + }); + + it('truncates fractional sub-decimal amounts', () => { + expect( + getRawSourceAmountFromOrderCryptoAmount({ + cryptoAmount: '1.1234567', + decimals: 6, + }), + ).toBe('1123456'); + }); + + it.each([ + ['0', 'Invalid fiat order crypto amount: 0'], + ['-1', 'Invalid fiat order crypto amount: -1'], + ['NaN', 'Invalid fiat order crypto amount: NaN'], + ])('throws for invalid crypto amount %s', (cryptoAmount, expectedError) => { + expect(() => + getRawSourceAmountFromOrderCryptoAmount({ cryptoAmount, decimals: 18 }), + ).toThrow(expectedError); + }); + + it('throws when computed amount rounds to zero', () => { + expect(() => + getRawSourceAmountFromOrderCryptoAmount({ + cryptoAmount: '0.0000000000000000001', + decimals: 18, + }), + ).toThrow('Computed fiat order source amount is not positive'); + }); + }); }); diff --git a/packages/transaction-pay-controller/src/strategy/fiat/utils.ts b/packages/transaction-pay-controller/src/strategy/fiat/utils.ts index 8759473531..c3615e1dab 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/utils.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/utils.ts @@ -1,11 +1,20 @@ +import type { RampsOrder } from '@metamask/ramps-controller'; import type { TransactionMeta } from '@metamask/transaction-controller'; import { TransactionType } from '@metamask/transaction-controller'; +import type { Hex } from '@metamask/utils'; +import { createModuleLogger } from '@metamask/utils'; +import { BigNumber } from 'bignumber.js'; +import { projectLogger } from '../../logger'; import type { TransactionPayControllerMessenger } from '../../types'; import { getFiatAssetPerTransactionType } from '../../utils/feature-flags'; +import { getTokenInfo } from '../../utils/token'; +import { getTransferredAmountFromTxHash } from '../../utils/transaction'; import type { TransactionPayFiatAsset } from './constants'; import { FIAT_ASSET_ID_BY_TX_TYPE } from './constants'; +const log = createModuleLogger(projectLogger, 'fiat-utils'); + export function deriveFiatAssetForFiatPayment( transaction: TransactionMeta, messenger: TransactionPayControllerMessenger, @@ -26,3 +35,106 @@ function resolveTransactionType( (tx) => tx.type && FIAT_ASSET_ID_BY_TX_TYPE[tx.type] !== undefined, )?.type; } + +/** + * Resolves the raw source amount for a completed fiat order. + * + * Attempts to read the actual transferred amount from the on-chain transaction + * identified by `order.txHash`. If the on-chain read fails or returns + * no amount, falls back to computing the amount from `order.cryptoAmount`. + * + * @param options - The resolution options. + * @param options.messenger - Controller messenger for network access. + * @param options.order - The completed on-ramp order. + * @param options.fiatAsset - The fiat asset describing the expected token. + * @param options.walletAddress - Recipient wallet address for on-chain lookup. + * @returns The raw (atomic) source amount as a decimal string. + */ +export async function resolveSourceAmountRaw({ + messenger, + order, + fiatAsset, + walletAddress, +}: { + messenger: TransactionPayControllerMessenger; + order: RampsOrder; + fiatAsset: TransactionPayFiatAsset; + walletAddress: Hex; +}): Promise { + if (order.txHash) { + try { + const onChainAmount = await getTransferredAmountFromTxHash({ + messenger, + txHash: order.txHash, + chainId: fiatAsset.chainId, + tokenAddress: fiatAsset.address, + walletAddress, + }); + + if (onChainAmount) { + log('Resolved source amount from on-chain transaction', { + txHash: order.txHash, + onChainAmount, + }); + return onChainAmount; + } + } catch (error) { + log( + 'Failed to read on-chain amount, falling back to order.cryptoAmount', + { txHash: order.txHash, error }, + ); + } + } + + const tokenInfo = getTokenInfo( + messenger, + fiatAsset.address, + fiatAsset.chainId, + ); + + if (!tokenInfo) { + throw new Error( + `Unable to resolve token info for fiat asset ${fiatAsset.address} on chain ${fiatAsset.chainId}`, + ); + } + + return getRawSourceAmountFromOrderCryptoAmount({ + cryptoAmount: order.cryptoAmount, + decimals: tokenInfo.decimals, + }); +} + +/** + * Converts the order's human-readable crypto amount to a raw token amount. + * + * @param options - The conversion options. + * @param options.cryptoAmount - Human-readable crypto amount from the completed order. + * @param options.decimals - Token decimals for the fiat asset. + * @returns The raw token amount as a string. + */ +export function getRawSourceAmountFromOrderCryptoAmount({ + cryptoAmount, + decimals, +}: { + cryptoAmount: RampsOrder['cryptoAmount']; + decimals: number; +}): string { + const normalizedAmount = new BigNumber(String(cryptoAmount)); + + if (!normalizedAmount.isFinite() || normalizedAmount.lte(0)) { + throw new Error( + `Invalid fiat order crypto amount: ${String(cryptoAmount)}`, + ); + } + + const rawAmount = normalizedAmount + .shiftedBy(decimals) + .decimalPlaces(0, BigNumber.ROUND_DOWN) + .toFixed(0); + + if (!new BigNumber(rawAmount).gt(0)) { + throw new Error('Computed fiat order source amount is not positive'); + } + + return rawAmount; +} diff --git a/packages/transaction-pay-controller/src/utils/transaction.test.ts b/packages/transaction-pay-controller/src/utils/transaction.test.ts index c409c89670..a2328da53f 100644 --- a/packages/transaction-pay-controller/src/utils/transaction.test.ts +++ b/packages/transaction-pay-controller/src/utils/transaction.test.ts @@ -1,3 +1,6 @@ +import { Interface } from '@ethersproject/abi'; +import { Web3Provider } from '@ethersproject/providers'; +import { abiERC20 } from '@metamask/metamask-eth-abis'; import { TransactionStatus, TransactionType, @@ -7,6 +10,7 @@ import type { TransactionControllerState } from '@metamask/transaction-controlle import type { Hex } from '@metamask/utils'; import { noop } from 'lodash'; +import { NATIVE_TOKEN_ADDRESS } from '../constants'; import { getMessengerMock } from '../tests/messenger-mock'; import type { TransactionData, @@ -19,6 +23,7 @@ import { FINALIZED_STATUSES, collectTransactionIds, getTransaction, + getTransferredAmountFromTxHash, isPredictWithdrawTransaction, subscribeAssetChanges, subscribeTransactionChanges, @@ -28,6 +33,10 @@ import { jest.mock('./feature-flags'); jest.mock('./required-tokens'); +jest.mock('@ethersproject/providers', () => ({ + ...jest.requireActual('@ethersproject/providers'), + Web3Provider: jest.fn(), +})); const TRANSACTION_ID_MOCK = '123-456'; const ERROR_MESSAGE_MOCK = 'Test error'; @@ -652,3 +661,429 @@ describe('Transaction Utils', () => { }); }); }); + +const TX_HASH_MOCK = '0xabc123'; +const WALLET_ADDRESS_RECEIPT_MOCK = + '0x1111111111111111111111111111111111111111' as Hex; +const ERC20_ADDRESS_RECEIPT_MOCK = + '0x2222222222222222222222222222222222222222' as Hex; +const CHAIN_ID_RECEIPT_MOCK = '0x1' as Hex; +const NETWORK_CLIENT_ID_RECEIPT_MOCK = 'net-client-1'; +const PROVIDER_RECEIPT_MOCK = { request: jest.fn() }; + +const TRANSFER_EVENT_TOPIC = + '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'; + +const erc20Interface = new Interface(abiERC20); + +function paddedAddress(address: Hex): string { + return `0x000000000000000000000000${address.slice(2).toLowerCase()}`; +} + +function encodeTransferLog( + to: Hex, + amount: string, +): { + address: string; + topics: string[]; + data: string; +} { + const encoded = erc20Interface.encodeEventLog( + erc20Interface.getEvent('Transfer'), + [WALLET_ADDRESS_RECEIPT_MOCK, to, amount], + ); + + return { + address: ERC20_ADDRESS_RECEIPT_MOCK, + topics: encoded.topics, + data: encoded.data, + }; +} + +describe('getTransferredAmountFromTxHash', () => { + const { + messenger: receiptMessenger, + findNetworkClientIdByChainIdMock: receiptFindNetworkMock, + getNetworkClientByIdMock: receiptGetNetworkMock, + } = getMessengerMock(); + + let mockGetTransactionReceipt: jest.Mock; + let mockSend: jest.Mock; + let mockGetTx: jest.Mock; + + beforeEach(() => { + jest.resetAllMocks(); + + mockGetTransactionReceipt = jest.fn(); + mockSend = jest.fn(); + mockGetTx = jest.fn(); + + receiptFindNetworkMock.mockReturnValue(NETWORK_CLIENT_ID_RECEIPT_MOCK); + receiptGetNetworkMock.mockReturnValue({ + provider: PROVIDER_RECEIPT_MOCK, + } as never); + + (Web3Provider as unknown as jest.Mock).mockImplementation(() => ({ + getTransactionReceipt: mockGetTransactionReceipt, + send: mockSend, + getTransaction: mockGetTx, + })); + }); + + describe('native token', () => { + it('returns amount from debug_traceTransaction for direct transfer', async () => { + mockSend.mockResolvedValue({ + to: WALLET_ADDRESS_RECEIPT_MOCK.toLowerCase(), + value: '0xde0b6b3a7640000', + calls: [], + }); + + const result = await getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: NATIVE_TOKEN_ADDRESS, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }); + + expect(result).toBe('1000000000000000000'); + expect(mockSend).toHaveBeenCalledWith('debug_traceTransaction', [ + TX_HASH_MOCK, + { tracer: 'callTracer' }, + ]); + }); + + it('sums native value from nested internal calls', async () => { + mockSend.mockResolvedValue({ + to: '0xcontract', + value: '0x0', + calls: [ + { + to: WALLET_ADDRESS_RECEIPT_MOCK.toLowerCase(), + value: '0xde0b6b3a7640000', + calls: [], + }, + { + to: '0xother', + value: '0x1', + calls: [ + { + to: WALLET_ADDRESS_RECEIPT_MOCK.toLowerCase(), + value: '0xde0b6b3a7640000', + }, + ], + }, + ], + }); + + const result = await getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: NATIVE_TOKEN_ADDRESS, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }); + + expect(result).toBe('2000000000000000000'); + }); + + it('falls back to tx.value when debug_traceTransaction is unsupported', async () => { + mockSend.mockRejectedValue(new Error('Method not found')); + mockGetTx.mockResolvedValue({ + to: WALLET_ADDRESS_RECEIPT_MOCK.toLowerCase(), + value: { toString: () => '1500000000000000000' }, + }); + + const result = await getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: NATIVE_TOKEN_ADDRESS, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }); + + expect(result).toBe('1500000000000000000'); + }); + + it('returns undefined when trace returns zero value and tx.to does not match wallet', async () => { + mockSend.mockResolvedValue({ + to: '0xcontract', + value: '0x0', + }); + mockGetTx.mockResolvedValue({ + to: '0xcontract', + value: { toString: () => '1000000000000000000' }, + }); + + const result = await getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: NATIVE_TOKEN_ADDRESS, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }); + + expect(result).toBeUndefined(); + }); + + it('returns undefined when trace is unsupported and transaction is not found', async () => { + mockSend.mockRejectedValue(new Error('Method not found')); + mockGetTx.mockResolvedValue(null); + + const result = await getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: NATIVE_TOKEN_ADDRESS, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }); + + expect(result).toBeUndefined(); + }); + + it('returns undefined when trace is unsupported and native tx.value is zero', async () => { + mockSend.mockRejectedValue(new Error('Method not found')); + mockGetTx.mockResolvedValue({ + to: WALLET_ADDRESS_RECEIPT_MOCK.toLowerCase(), + value: { toString: () => '0' }, + }); + + const result = await getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: NATIVE_TOKEN_ADDRESS, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }); + + expect(result).toBeUndefined(); + }); + + it('ignores trace value with 0x0', async () => { + mockSend.mockResolvedValue({ + to: WALLET_ADDRESS_RECEIPT_MOCK.toLowerCase(), + value: '0x0', + }); + mockGetTx.mockResolvedValue({ + to: WALLET_ADDRESS_RECEIPT_MOCK.toLowerCase(), + value: { toString: () => '500' }, + }); + + const result = await getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: NATIVE_TOKEN_ADDRESS, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }); + + expect(result).toBe('500'); + }); + }); + + describe('ERC-20 token', () => { + it('decodes transfer amount from receipt logs', async () => { + mockGetTransactionReceipt.mockResolvedValue({ + logs: [encodeTransferLog(WALLET_ADDRESS_RECEIPT_MOCK, '5000000')], + }); + + const result = await getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }); + + expect(result).toBe('5000000'); + }); + + it('sums multiple Transfer events to the same wallet', async () => { + mockGetTransactionReceipt.mockResolvedValue({ + logs: [ + encodeTransferLog(WALLET_ADDRESS_RECEIPT_MOCK, '3000000'), + encodeTransferLog(WALLET_ADDRESS_RECEIPT_MOCK, '2000000'), + ], + }); + + const result = await getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }); + + expect(result).toBe('5000000'); + }); + + it('ignores Transfer events to other addresses', async () => { + const otherAddress = '0x3333333333333333333333333333333333333333' as Hex; + mockGetTransactionReceipt.mockResolvedValue({ + logs: [ + encodeTransferLog(otherAddress, '9000000'), + encodeTransferLog(WALLET_ADDRESS_RECEIPT_MOCK, '1000000'), + ], + }); + + const result = await getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }); + + expect(result).toBe('1000000'); + }); + + it('ignores logs from other token contracts', async () => { + const otherToken = '0x4444444444444444444444444444444444444444' as Hex; + const transferLog = encodeTransferLog( + WALLET_ADDRESS_RECEIPT_MOCK, + '5000000', + ); + mockGetTransactionReceipt.mockResolvedValue({ + logs: [ + { ...transferLog, address: otherToken }, + encodeTransferLog(WALLET_ADDRESS_RECEIPT_MOCK, '1000000'), + ], + }); + + const result = await getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }); + + expect(result).toBe('1000000'); + }); + + it('ignores logs with non-Transfer event topics', async () => { + mockGetTransactionReceipt.mockResolvedValue({ + logs: [ + { + address: ERC20_ADDRESS_RECEIPT_MOCK, + topics: [ + '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925', + paddedAddress(WALLET_ADDRESS_RECEIPT_MOCK), + paddedAddress(WALLET_ADDRESS_RECEIPT_MOCK), + ], + data: '0x00000000000000000000000000000000000000000000000000000000006acfc0', + }, + encodeTransferLog(WALLET_ADDRESS_RECEIPT_MOCK, '2000000'), + ], + }); + + const result = await getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }); + + expect(result).toBe('2000000'); + }); + + it('returns undefined when receipt is not found', async () => { + mockGetTransactionReceipt.mockResolvedValue(null); + + const result = await getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }); + + expect(result).toBeUndefined(); + }); + + it('returns undefined when no matching Transfer logs exist', async () => { + mockGetTransactionReceipt.mockResolvedValue({ + logs: [], + }); + + const result = await getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }); + + expect(result).toBeUndefined(); + }); + + it('skips malformed log entries gracefully', async () => { + mockGetTransactionReceipt.mockResolvedValue({ + logs: [ + { + address: ERC20_ADDRESS_RECEIPT_MOCK, + topics: [TRANSFER_EVENT_TOPIC], + data: '0xBADDATA', + }, + encodeTransferLog(WALLET_ADDRESS_RECEIPT_MOCK, '4000000'), + ], + }); + + const result = await getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }); + + expect(result).toBe('4000000'); + }); + + it('returns undefined when all Transfer amounts are zero', async () => { + mockGetTransactionReceipt.mockResolvedValue({ + logs: [encodeTransferLog(WALLET_ADDRESS_RECEIPT_MOCK, '0')], + }); + + const result = await getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }); + + expect(result).toBeUndefined(); + }); + }); + + it('propagates provider errors for ERC-20', async () => { + mockGetTransactionReceipt.mockRejectedValue(new Error('RPC error')); + + await expect( + getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }), + ).rejects.toThrow('RPC error'); + }); + + it('propagates provider errors for native when both trace and getTransaction fail', async () => { + mockSend.mockRejectedValue(new Error('Trace failed')); + mockGetTx.mockRejectedValue(new Error('RPC error')); + + await expect( + getTransferredAmountFromTxHash({ + messenger: receiptMessenger, + txHash: TX_HASH_MOCK, + chainId: CHAIN_ID_RECEIPT_MOCK, + tokenAddress: NATIVE_TOKEN_ADDRESS, + walletAddress: WALLET_ADDRESS_RECEIPT_MOCK, + }), + ).rejects.toThrow('RPC error'); + }); +}); diff --git a/packages/transaction-pay-controller/src/utils/transaction.ts b/packages/transaction-pay-controller/src/utils/transaction.ts index c97d4004ec..97e772e666 100644 --- a/packages/transaction-pay-controller/src/utils/transaction.ts +++ b/packages/transaction-pay-controller/src/utils/transaction.ts @@ -1,3 +1,6 @@ +import { Interface } from '@ethersproject/abi'; +import { Web3Provider } from '@ethersproject/providers'; +import { abiERC20 } from '@metamask/metamask-eth-abis'; import { TransactionStatus, TransactionType, @@ -5,6 +8,7 @@ import { import type { TransactionMeta } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; +import { BigNumber } from 'bignumber.js'; import type { Patch } from 'immer'; import { cloneDeep } from 'lodash'; @@ -16,6 +20,7 @@ import type { } from '../types'; import { getAssetsUnifyStateFeature } from './feature-flags'; import { parseRequiredTokens } from './required-tokens'; +import { getNativeToken } from './token'; const log = createModuleLogger(projectLogger, 'transaction'); @@ -356,3 +361,206 @@ function onTransactionFinalized( log('Transaction finalized', { transaction }); removeTransactionData(transaction.id); } + +const erc20Interface = new Interface(abiERC20); + +const ERC20_TRANSFER_EVENT_TOPIC = erc20Interface.getEventTopic('Transfer'); + +/** + * Reads the transferred token amount from a completed on-chain transaction. + * + * For native tokens the amount is resolved via `debug_traceTransaction` + * (internal-call aware), falling back to the top-level `tx.value`. + * For ERC-20 tokens the amount is decoded from `Transfer` event logs + * in the transaction receipt. + * + * @param options - The options. + * @param options.messenger - Controller messenger for network access. + * @param options.txHash - Transaction hash of the completed on-chain transaction. + * @param options.chainId - Chain ID where the transaction was executed. + * @param options.tokenAddress - Address of the transferred token. + * @param options.walletAddress - Recipient wallet address to filter transfers to. + * @returns The raw (atomic) transferred amount as a decimal string, + * or `undefined` if the amount cannot be determined. + */ +export async function getTransferredAmountFromTxHash({ + messenger, + txHash, + chainId, + tokenAddress, + walletAddress, +}: { + messenger: TransactionPayControllerMessenger; + txHash: string; + chainId: Hex; + tokenAddress: Hex; + walletAddress: Hex; +}): Promise { + const provider = getEthersProvider(messenger, chainId); + + const isNative = + tokenAddress.toLowerCase() === getNativeToken(chainId).toLowerCase(); + + if (isNative) { + return await getNativeTransferAmount(provider, txHash, walletAddress); + } + + return await getErc20TransferAmount( + provider, + txHash, + tokenAddress, + walletAddress, + ); +} + +/** + * Resolves the native token amount received by a wallet from a transaction. + * + * 1. Attempts `debug_traceTransaction` with `callTracer` to walk internal + * calls and sum all native value transfers targeting `walletAddress`. + * 2. Falls back to the top-level `tx.value` when the wallet is the direct + * recipient and the trace RPC is unavailable or errors. + * + * @param provider - Ethers Web3Provider. + * @param txHash - Transaction hash. + * @param walletAddress - Recipient wallet address. + * @returns Raw amount as a decimal string, or `undefined`. + */ +async function getNativeTransferAmount( + provider: Web3Provider, + txHash: string, + walletAddress: Hex, +): Promise { + try { + const trace = await provider.send('debug_traceTransaction', [ + txHash, + { tracer: 'callTracer' }, + ]); + + const amount = sumNativeValueFromTrace(trace, walletAddress); + if (amount.gt(0)) { + return amount.toFixed(0); + } + } catch { + // debug_traceTransaction not supported — fall through to tx.value + } + + const tx = await provider.getTransaction(txHash); + if (!tx) { + return undefined; + } + + if (tx.to?.toLowerCase() !== walletAddress.toLowerCase()) { + return undefined; + } + + return positiveOrUndefined(tx.value.toString()); +} + +/** + * Resolves the ERC-20 token amount received by a wallet from a transaction + * by decoding `Transfer` event logs from the transaction receipt. + * + * @param provider - Ethers Web3Provider. + * @param txHash - Transaction hash. + * @param tokenAddress - ERC-20 token contract address. + * @param walletAddress - Recipient wallet address. + * @returns Raw amount as a decimal string, or `undefined`. + */ +async function getErc20TransferAmount( + provider: Web3Provider, + txHash: string, + tokenAddress: Hex, + walletAddress: Hex, +): Promise { + const receipt = await provider.getTransactionReceipt(txHash); + + if (!receipt) { + return undefined; + } + + let total = new BigNumber(0); + + for (const txLog of receipt.logs) { + if (txLog.address.toLowerCase() !== tokenAddress.toLowerCase()) { + continue; + } + + if (!txLog.topics[0] || txLog.topics[0] !== ERC20_TRANSFER_EVENT_TOPIC) { + continue; + } + + try { + const parsed = erc20Interface.parseLog(txLog); + const to = (parsed.args[1] as string).toLowerCase(); + + if (to !== walletAddress.toLowerCase()) { + continue; + } + + total = total.plus(parsed.args[2].toString()); + } catch { + continue; + } + } + + return positiveOrUndefined(total.toFixed(0)); +} + +type CallTrace = { + to?: string; + value?: string; + calls?: CallTrace[]; +}; + +/** + * Recursively walks a `callTracer` result and sums native value + * transferred to a specific address. + * + * @param trace - Call trace node. + * @param walletAddress - Target address to accumulate value for. + * @returns Accumulated native value as BigNumber. + */ +function sumNativeValueFromTrace( + trace: CallTrace, + walletAddress: Hex, +): BigNumber { + let total = new BigNumber(0); + + if ( + trace.to?.toLowerCase() === walletAddress.toLowerCase() && + trace.value && + trace.value !== '0x0' + ) { + total = total.plus(new BigNumber(trace.value)); + } + + if (trace.calls) { + for (const child of trace.calls) { + total = total.plus(sumNativeValueFromTrace(child, walletAddress)); + } + } + + return total; +} + +function getEthersProvider( + messenger: TransactionPayControllerMessenger, + chainId: Hex, +): Web3Provider { + const networkClientId = messenger.call( + 'NetworkController:findNetworkClientIdByChainId', + chainId, + ); + + const { provider } = messenger.call( + 'NetworkController:getNetworkClientById', + networkClientId, + ); + + return new Web3Provider(provider); +} + +function positiveOrUndefined(amount: string): string | undefined { + return new BigNumber(amount).gt(0) ? amount : undefined; +} diff --git a/packages/user-operation-controller/CHANGELOG.md b/packages/user-operation-controller/CHANGELOG.md index caac251078..22190972c7 100644 --- a/packages/user-operation-controller/CHANGELOG.md +++ b/packages/user-operation-controller/CHANGELOG.md @@ -7,9 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [41.2.2] + ### Changed -- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765)) +- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774)) +- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774)) ## [41.2.1] @@ -168,7 +171,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- **BREAKING:** Bump peer dependency `@metamask/transaction-controller` to `^59.0.0` ([#6171](https://github.com/MetaMask/core/pull/6171)), ([#6027](https://github.com/MetaMask/core/pull/6027)) +- **BREAKING:** Bump peer dependency `@metamask/transaction-controller` to `^59.0.0`, ([#6171](https://github.com/MetaMask/core/pull/6171), [#6027](https://github.com/MetaMask/core/pull/6027)) - Bump `@metamask/controller-utils` from `^11.10.0` to `^11.11.0` ([#6069](https://github.com/MetaMask/core/pull/6069)) - Bump `@metamask/utils` from `^11.2.0` to `^11.4.2` ([#6054](https://github.com/MetaMask/core/pull/6054)) @@ -329,8 +332,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- **BREAKING:** Bump `@metamask/keyring-controller` peer dependency from `^18.0.0` to `^19.0.0` ([#4195](https://github.com/MetaMask/core/pull/4956)) -- **BREAKING:** Bump `@metamask/transaction-controller` peer dependency from `^39.0.0` to `^40.0.0` ([#4195](https://github.com/MetaMask/core/pull/4956)) +- **BREAKING:** Bump `@metamask/keyring-controller` peer dependency from `^18.0.0` to `^19.0.0` ([#4195](https://github.com/MetaMask/core/pull/4195)) +- **BREAKING:** Bump `@metamask/transaction-controller` peer dependency from `^39.0.0` to `^40.0.0` ([#4195](https://github.com/MetaMask/core/pull/4195)) ## [18.0.0] @@ -362,7 +365,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **BREAKING:** `PendingUserOperationTracker` now uses a new polling interface that accepts the generic parameter `PollingInput` ([#4752](https://github.com/MetaMask/core/pull/4752)) - **BREAKING:** The inherited `AbstractPollingController` method `startPollingByNetworkClientId` has been renamed to `startPolling` ([#4752](https://github.com/MetaMask/core/pull/4752)) - **BREAKING:** The inherited `AbstractPollingController` method `onPollingComplete` now returns the entire input object of type `PollingInput`, instead of a network client id ([#4752](https://github.com/MetaMask/core/pull/4752)) -- Bump `@metamask/transaction-controller` from `^37.1.0` to `^37.3.0` ([#4754](https://github.com/MetaMask/core/pull/4754),[#4805](https://github.com/MetaMask/core/pull/4805)) +- Bump `@metamask/transaction-controller` from `^37.1.0` to `^37.3.0` ([#4754](https://github.com/MetaMask/core/pull/4754), [#4805](https://github.com/MetaMask/core/pull/4805)) - Bump `@metamask/approval-controller` from `^7.0.4` to `^7.1.0` ([#4734](https://github.com/MetaMask/core/pull/4734)) - Bump `@metamask/keyring-controller` from `^17.2.1` to `^17.2.2` ([#4734](https://github.com/MetaMask/core/pull/4734)) - Bump `@metamask/transaction-controller` from `^37.0.0` to `^37.1.0` ([#4734](https://github.com/MetaMask/core/pull/4734)) @@ -379,7 +382,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ["Are the Types Wrong?"](https://arethetypeswrong.github.io/) tool as ["masquerading as CJS"](https://github.com/arethetypeswrong/arethetypeswrong.github.io/blob/main/docs/problems/FalseCJS.md). All of the ATTW checks now pass. -- Remove chunk files ([#4648](https://github.com/MetaMask/core/pull/4648)). +- Remove chunk files. ([#4648](https://github.com/MetaMask/core/pull/4648)) - Previously, the build tool we used to generate JavaScript files extracted common code to "chunk" files. While this was intended to make this package more tree-shakeable, it also made debugging more difficult for our @@ -390,8 +393,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - **BREAKING:** Bump devDependency and peerDependency `@metamask/network-controller` from `^20.0.0` to `^21.0.0` ([#4618](https://github.com/MetaMask/core/pull/4618), [#4651](https://github.com/MetaMask/core/pull/4651)) -- **BREAKING:** Bump devDependency and peerDependency `@metamask/transaction-controller` from `^35.0.0` to `^36.0.0` ( [#4651](https://github.com/MetaMask/core/pull/4651)) -- **BREAKING:** Bump devDependency and peerDependency `@metamask/gas-fee-controller` from `^19.0.0` to `^20.0.0` ( [#4651](https://github.com/MetaMask/core/pull/4651)) +- **BREAKING:** Bump devDependency and peerDependency `@metamask/transaction-controller` from `^35.0.0` to `^36.0.0` ([#4651](https://github.com/MetaMask/core/pull/4651)) +- **BREAKING:** Bump devDependency and peerDependency `@metamask/gas-fee-controller` from `^19.0.0` to `^20.0.0` ([#4651](https://github.com/MetaMask/core/pull/4651)) - Bump `@metamask/base-controller` from `^6.0.2` to `^7.0.0` ([#4625](https://github.com/MetaMask/core/pull/4625), [#4643](https://github.com/MetaMask/core/pull/4643)) - Bump `@metamask/controller-utils` from `^11.0.2` to `^11.2.0` ([#4639](https://github.com/MetaMask/core/pull/4639), [#4651](https://github.com/MetaMask/core/pull/4651)) - Bump `@metamask/polling-controller` from `^9.0.1` to `^10.0.0` ([#4651](https://github.com/MetaMask/core/pull/4651)) @@ -593,7 +596,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Initial Release ([#3749](https://github.com/MetaMask/core/pull/3749)) -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/user-operation-controller@41.2.1...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/user-operation-controller@41.2.2...HEAD +[41.2.2]: https://github.com/MetaMask/core/compare/@metamask/user-operation-controller@41.2.1...@metamask/user-operation-controller@41.2.2 [41.2.1]: https://github.com/MetaMask/core/compare/@metamask/user-operation-controller@41.2.0...@metamask/user-operation-controller@41.2.1 [41.2.0]: https://github.com/MetaMask/core/compare/@metamask/user-operation-controller@41.1.1...@metamask/user-operation-controller@41.2.0 [41.1.1]: https://github.com/MetaMask/core/compare/@metamask/user-operation-controller@41.1.0...@metamask/user-operation-controller@41.1.1 diff --git a/packages/user-operation-controller/package.json b/packages/user-operation-controller/package.json index 96428743b7..2a94ed5d9f 100644 --- a/packages/user-operation-controller/package.json +++ b/packages/user-operation-controller/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/user-operation-controller", - "version": "41.2.1", + "version": "41.2.2", "description": "Creates user operations and manages their life cycle", "keywords": [ "Ethereum", @@ -56,12 +56,12 @@ "dependencies": { "@metamask/approval-controller": "^9.0.1", "@metamask/base-controller": "^9.1.0", - "@metamask/controller-utils": "^12.0.0", + "@metamask/controller-utils": "^12.1.0", "@metamask/eth-query": "^4.0.0", "@metamask/gas-fee-controller": "^26.2.1", "@metamask/keyring-controller": "^25.5.0", "@metamask/messenger": "^1.2.0", - "@metamask/network-controller": "^31.1.0", + "@metamask/network-controller": "^32.0.0", "@metamask/polling-controller": "^16.0.5", "@metamask/rpc-errors": "^7.0.2", "@metamask/superstruct": "^3.1.0", diff --git a/yarn.lock b/yarn.lock index 44e996f678..5cbd27294f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2535,7 +2535,7 @@ __metadata: resolution: "@metamask/account-tree-controller@workspace:packages/account-tree-controller" dependencies: "@metamask/account-api": "npm:^1.0.4" - "@metamask/accounts-controller": "npm:^38.1.0" + "@metamask/accounts-controller": "npm:^38.1.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" "@metamask/keyring-api": "npm:^23.1.0" @@ -2567,14 +2567,14 @@ __metadata: languageName: unknown linkType: soft -"@metamask/accounts-controller@npm:^38.1.0, @metamask/accounts-controller@workspace:packages/accounts-controller": +"@metamask/accounts-controller@npm:^38.1.1, @metamask/accounts-controller@workspace:packages/accounts-controller": version: 0.0.0-use.local resolution: "@metamask/accounts-controller@workspace:packages/accounts-controller" dependencies: "@ethereumjs/util": "npm:^9.1.0" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/eth-snap-keyring": "npm:^22.0.1" "@metamask/keyring-api": "npm:^23.1.0" "@metamask/keyring-controller": "npm:^25.5.0" @@ -2582,7 +2582,7 @@ __metadata: "@metamask/keyring-sdk": "npm:^2.1.1" "@metamask/keyring-utils": "npm:^3.2.1" "@metamask/messenger": "npm:^1.2.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/providers": "npm:^22.1.0" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.9.0" @@ -2624,7 +2624,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" @@ -2686,7 +2686,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" @@ -2768,7 +2768,7 @@ __metadata: languageName: unknown linkType: soft -"@metamask/assets-controller@npm:^7.1.0, @metamask/assets-controller@workspace:packages/assets-controller": +"@metamask/assets-controller@npm:^7.1.1, @metamask/assets-controller@workspace:packages/assets-controller": version: 0.0.0-use.local resolution: "@metamask/assets-controller@workspace:packages/assets-controller" dependencies: @@ -2776,19 +2776,19 @@ __metadata: "@ethersproject/abi": "npm:^5.7.0" "@ethersproject/providers": "npm:^5.7.0" "@metamask/account-tree-controller": "npm:^7.3.0" - "@metamask/accounts-controller": "npm:^38.1.0" - "@metamask/assets-controllers": "npm:^107.0.0" + "@metamask/accounts-controller": "npm:^38.1.1" + "@metamask/assets-controllers": "npm:^108.0.0" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" "@metamask/client-controller": "npm:^1.0.1" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/core-backend": "npm:^6.2.2" "@metamask/keyring-api": "npm:^23.1.0" "@metamask/keyring-controller": "npm:^25.5.0" "@metamask/keyring-internal-api": "npm:^11.0.1" "@metamask/keyring-snap-client": "npm:^9.0.2" "@metamask/messenger": "npm:^1.2.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/network-enablement-controller": "npm:^5.1.1" "@metamask/permission-controller": "npm:^13.1.1" "@metamask/phishing-controller": "npm:^17.1.2" @@ -2815,7 +2815,7 @@ __metadata: languageName: unknown linkType: soft -"@metamask/assets-controllers@npm:^107.0.0, @metamask/assets-controllers@workspace:packages/assets-controllers": +"@metamask/assets-controllers@npm:^108.0.0, @metamask/assets-controllers@workspace:packages/assets-controllers": version: 0.0.0-use.local resolution: "@metamask/assets-controllers@workspace:packages/assets-controllers" dependencies: @@ -2829,12 +2829,12 @@ __metadata: "@metamask/abi-utils": "npm:^2.0.3" "@metamask/account-api": "npm:^1.0.4" "@metamask/account-tree-controller": "npm:^7.3.0" - "@metamask/accounts-controller": "npm:^38.1.0" + "@metamask/accounts-controller": "npm:^38.1.1" "@metamask/approval-controller": "npm:^9.0.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" "@metamask/contract-metadata": "npm:^2.4.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/core-backend": "npm:^6.2.2" "@metamask/eth-query": "npm:^4.0.0" "@metamask/ethjs-provider-http": "npm:^0.3.0" @@ -2845,7 +2845,7 @@ __metadata: "@metamask/messenger": "npm:^1.2.0" "@metamask/metamask-eth-abis": "npm:^3.1.1" "@metamask/multichain-account-service": "npm:^9.0.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/network-enablement-controller": "npm:^5.1.1" "@metamask/permission-controller": "npm:^13.1.1" "@metamask/phishing-controller": "npm:^17.1.2" @@ -2932,7 +2932,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-data-service": "npm:^0.1.2" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.9.0" @@ -2997,7 +2997,7 @@ __metadata: resolution: "@metamask/base-data-service@workspace:packages/base-data-service" dependencies: "@metamask/auto-changelog": "npm:^6.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/utils": "npm:^11.9.0" "@tanstack/query-core": "npm:^4.43.0" @@ -3015,7 +3015,7 @@ __metadata: languageName: unknown linkType: soft -"@metamask/bridge-controller@npm:^72.0.3, @metamask/bridge-controller@workspace:packages/bridge-controller": +"@metamask/bridge-controller@npm:^72.0.4, @metamask/bridge-controller@workspace:packages/bridge-controller": version: 0.0.0-use.local resolution: "@metamask/bridge-controller@workspace:packages/bridge-controller" dependencies: @@ -3024,19 +3024,19 @@ __metadata: "@ethersproject/constants": "npm:^5.7.0" "@ethersproject/contracts": "npm:^5.7.0" "@ethersproject/providers": "npm:^5.7.0" - "@metamask/accounts-controller": "npm:^38.1.0" - "@metamask/assets-controller": "npm:^7.1.0" - "@metamask/assets-controllers": "npm:^107.0.0" + "@metamask/accounts-controller": "npm:^38.1.1" + "@metamask/assets-controller": "npm:^7.1.1" + "@metamask/assets-controllers": "npm:^108.0.0" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/eth-json-rpc-provider": "npm:^6.0.1" "@metamask/gas-fee-controller": "npm:^26.2.1" "@metamask/keyring-api": "npm:^23.1.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/metamask-eth-abis": "npm:^3.1.1" "@metamask/multichain-network-controller": "npm:^3.1.1" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/polling-controller": "npm:^16.0.5" "@metamask/profile-sync-controller": "npm:^28.0.2" "@metamask/remote-feature-flag-controller": "npm:^4.2.1" @@ -3062,19 +3062,19 @@ __metadata: languageName: unknown linkType: soft -"@metamask/bridge-status-controller@npm:^71.1.3, @metamask/bridge-status-controller@workspace:packages/bridge-status-controller": +"@metamask/bridge-status-controller@npm:^71.1.4, @metamask/bridge-status-controller@workspace:packages/bridge-status-controller": version: 0.0.0-use.local resolution: "@metamask/bridge-status-controller@workspace:packages/bridge-status-controller" dependencies: - "@metamask/accounts-controller": "npm:^38.1.0" + "@metamask/accounts-controller": "npm:^38.1.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/bridge-controller": "npm:^72.0.3" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/bridge-controller": "npm:^72.0.4" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/gas-fee-controller": "npm:^26.2.1" "@metamask/keyring-controller": "npm:^25.5.0" "@metamask/messenger": "npm:^1.2.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/polling-controller": "npm:^16.0.5" "@metamask/profile-sync-controller": "npm:^28.0.2" "@metamask/snaps-controllers": "npm:^19.0.0" @@ -3131,7 +3131,7 @@ __metadata: dependencies: "@metamask/api-specs": "npm:^0.14.0" "@metamask/auto-changelog": "npm:^6.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/keyring-internal-api": "npm:^11.0.1" "@metamask/permission-controller": "npm:^13.1.1" "@metamask/rpc-errors": "npm:^7.0.2" @@ -3154,7 +3154,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-data-service": "npm:^0.1.2" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.9.0" @@ -3177,7 +3177,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/keyring-controller": "npm:^25.5.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/profile-sync-controller": "npm:^28.0.2" @@ -3220,7 +3220,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.9.0" @@ -3265,7 +3265,7 @@ __metadata: "@lavamoat/allow-scripts": "npm:^3.0.4" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/keyring-controller": "npm:^25.5.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/polling-controller": "npm:^16.0.5" @@ -3335,7 +3335,7 @@ __metadata: languageName: node linkType: hard -"@metamask/controller-utils@npm:^12.0.0, @metamask/controller-utils@workspace:packages/controller-utils": +"@metamask/controller-utils@npm:^12.1.0, @metamask/controller-utils@workspace:packages/controller-utils": version: 0.0.0-use.local resolution: "@metamask/controller-utils@workspace:packages/controller-utils" dependencies: @@ -3372,9 +3372,9 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/core-backend@workspace:packages/core-backend" dependencies: - "@metamask/accounts-controller": "npm:^38.1.0" + "@metamask/accounts-controller": "npm:^38.1.1" "@metamask/auto-changelog": "npm:^6.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/keyring-controller": "npm:^25.5.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/profile-sync-controller": "npm:^28.0.2" @@ -3408,7 +3408,7 @@ __metadata: "@metamask/eth-block-tracker": "npm:^15.0.1" "@metamask/eth-json-rpc-provider": "npm:^6.0.1" "@metamask/json-rpc-engine": "npm:^10.5.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" @@ -3528,10 +3528,10 @@ __metadata: "@metamask/account-tree-controller": "npm:^7.3.0" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/keyring-api": "npm:^23.1.0" "@metamask/messenger": "npm:^1.2.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/stake-sdk": "npm:^3.2.1" "@metamask/transaction-controller": "npm:^65.3.0" "@ts-bridge/cli": "npm:^0.6.4" @@ -3577,7 +3577,7 @@ __metadata: resolution: "@metamask/eip-7702-internal-rpc-middleware@workspace:packages/eip-7702-internal-rpc-middleware" dependencies: "@metamask/auto-changelog": "npm:^6.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.9.0" @@ -3598,7 +3598,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/chain-agnostic-permission": "npm:^1.6.1" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/json-rpc-engine": "npm:^10.5.0" "@metamask/permission-controller": "npm:^13.1.1" "@metamask/rpc-errors": "npm:^7.0.2" @@ -3622,9 +3622,9 @@ __metadata: "@ethersproject/providers": "npm:^5.7.0" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" @@ -3778,7 +3778,7 @@ __metadata: "@metamask/eth-sig-util": "npm:^8.2.0" "@metamask/json-rpc-engine": "npm:^10.5.0" "@metamask/message-manager": "npm:^14.1.2" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.9.0" @@ -4093,11 +4093,11 @@ __metadata: "@babel/runtime": "npm:^7.23.9" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/eth-query": "npm:^4.0.0" "@metamask/ethjs-unit": "npm:^0.3.0" "@metamask/messenger": "npm:^1.2.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/polling-controller": "npm:^16.0.5" "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" @@ -4121,7 +4121,7 @@ __metadata: languageName: unknown linkType: soft -"@metamask/gator-permissions-controller@npm:^4.1.1, @metamask/gator-permissions-controller@workspace:packages/gator-permissions-controller": +"@metamask/gator-permissions-controller@npm:^4.1.2, @metamask/gator-permissions-controller@workspace:packages/gator-permissions-controller": version: 0.0.0-use.local resolution: "@metamask/gator-permissions-controller@workspace:packages/gator-permissions-controller" dependencies: @@ -4134,7 +4134,7 @@ __metadata: "@metamask/delegation-core": "npm:^2.0.0" "@metamask/delegation-deployments": "npm:^1.3.0" "@metamask/messenger": "npm:^1.2.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/snaps-controllers": "npm:^19.0.0" "@metamask/snaps-sdk": "npm:^11.0.0" "@metamask/snaps-utils": "npm:^12.1.2" @@ -4158,7 +4158,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" @@ -4378,7 +4378,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" @@ -4399,7 +4399,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/eth-sig-util": "npm:^8.2.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/utils": "npm:^11.9.0" @@ -4490,10 +4490,10 @@ __metadata: "@ethersproject/providers": "npm:^5.7.0" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-data-service": "npm:^0.1.2" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/metamask-eth-abis": "npm:^3.1.1" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/remote-feature-flag-controller": "npm:^4.2.1" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.9.0" @@ -4514,7 +4514,7 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/money-account-controller@workspace:packages/money-account-controller" dependencies: - "@metamask/accounts-controller": "npm:^38.1.0" + "@metamask/accounts-controller": "npm:^38.1.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" "@metamask/eth-money-keyring": "npm:^2.0.4" @@ -4549,7 +4549,7 @@ __metadata: "@metamask/delegation-deployments": "npm:^1.3.0" "@metamask/keyring-controller": "npm:^25.5.0" "@metamask/messenger": "npm:^1.2.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" @@ -4570,10 +4570,10 @@ __metadata: dependencies: "@ethereumjs/util": "npm:^9.1.0" "@metamask/account-api": "npm:^1.0.4" - "@metamask/accounts-controller": "npm:^38.1.0" + "@metamask/accounts-controller": "npm:^38.1.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/eth-hd-keyring": "npm:^14.1.1" "@metamask/eth-snap-keyring": "npm:^22.0.1" "@metamask/key-tree": "npm:^10.1.1" @@ -4615,15 +4615,15 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/multichain-api-middleware@workspace:packages/multichain-api-middleware" dependencies: - "@metamask/accounts-controller": "npm:^38.1.0" + "@metamask/accounts-controller": "npm:^38.1.1" "@metamask/api-specs": "npm:^0.14.0" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/chain-agnostic-permission": "npm:^1.6.1" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/eth-json-rpc-filters": "npm:^9.0.0" "@metamask/json-rpc-engine": "npm:^10.5.0" "@metamask/multichain-transactions-controller": "npm:^7.1.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/permission-controller": "npm:^13.1.1" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/safe-event-emitter": "npm:^3.0.0" @@ -4647,15 +4647,15 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/multichain-network-controller@workspace:packages/multichain-network-controller" dependencies: - "@metamask/accounts-controller": "npm:^38.1.0" + "@metamask/accounts-controller": "npm:^38.1.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/keyring-api": "npm:^23.1.0" "@metamask/keyring-controller": "npm:^25.5.0" "@metamask/keyring-internal-api": "npm:^11.0.1" "@metamask/messenger": "npm:^1.2.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.9.0" "@solana/addresses": "npm:^2.0.0" @@ -4680,7 +4680,7 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/multichain-transactions-controller@workspace:packages/multichain-transactions-controller" dependencies: - "@metamask/accounts-controller": "npm:^38.1.0" + "@metamask/accounts-controller": "npm:^38.1.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" "@metamask/keyring-api": "npm:^23.1.0" @@ -4714,7 +4714,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" @@ -4730,7 +4730,7 @@ __metadata: languageName: unknown linkType: soft -"@metamask/network-controller@npm:^31.1.0, @metamask/network-controller@workspace:packages/network-controller": +"@metamask/network-controller@npm:^32.0.0, @metamask/network-controller@workspace:packages/network-controller": version: 0.0.0-use.local resolution: "@metamask/network-controller@workspace:packages/network-controller" dependencies: @@ -4738,7 +4738,7 @@ __metadata: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" "@metamask/connectivity-controller": "npm:^0.2.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/eth-block-tracker": "npm:^15.0.1" "@metamask/eth-json-rpc-infura": "npm:^10.3.0" "@metamask/eth-json-rpc-middleware": "npm:^23.1.3" @@ -4785,11 +4785,11 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/keyring-api": "npm:^23.1.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/multichain-network-controller": "npm:^3.1.1" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/slip44": "npm:^4.3.0" "@metamask/transaction-controller": "npm:^65.3.0" "@metamask/utils": "npm:^11.9.0" @@ -4827,7 +4827,7 @@ __metadata: "@lavamoat/preinstall-always-fail": "npm:^2.1.0" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/keyring-controller": "npm:^25.5.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/profile-sync-controller": "npm:^28.0.2" @@ -4926,7 +4926,7 @@ __metadata: "@metamask/approval-controller": "npm:^9.0.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/json-rpc-engine": "npm:^10.5.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/rpc-errors": "npm:^7.0.2" @@ -4979,12 +4979,12 @@ __metadata: "@metamask/account-tree-controller": "npm:^7.3.0" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/geolocation-controller": "npm:^0.1.3" "@metamask/keyring-controller": "npm:^25.5.0" "@metamask/keyring-internal-api": "npm:^11.0.1" "@metamask/messenger": "npm:^1.2.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/profile-sync-controller": "npm:^28.0.2" "@metamask/remote-feature-flag-controller": "npm:^4.2.1" "@metamask/transaction-controller": "npm:^65.3.0" @@ -5016,7 +5016,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/transaction-controller": "npm:^65.3.0" "@noble/hashes": "npm:^1.8.0" @@ -5043,9 +5043,9 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" @@ -5095,10 +5095,10 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/profile-metrics-controller@workspace:packages/profile-metrics-controller" dependencies: - "@metamask/accounts-controller": "npm:^38.1.0" + "@metamask/accounts-controller": "npm:^38.1.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/keyring-controller": "npm:^25.5.0" "@metamask/keyring-internal-api": "npm:^11.0.1" "@metamask/messenger": "npm:^1.2.0" @@ -5189,7 +5189,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" @@ -5255,7 +5255,7 @@ __metadata: "@lavamoat/allow-scripts": "npm:^3.0.4" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" @@ -5296,9 +5296,9 @@ __metadata: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" "@metamask/base-data-service": "npm:^0.1.2" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.9.0" "@tanstack/query-core": "npm:^4.43.0" @@ -5367,7 +5367,7 @@ __metadata: "@metamask/base-controller": "npm:^9.1.0" "@metamask/json-rpc-engine": "npm:^10.5.0" "@metamask/messenger": "npm:^1.2.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/permission-controller": "npm:^13.1.1" "@metamask/swappable-obj-proxy": "npm:^2.3.0" "@metamask/utils": "npm:^11.9.0" @@ -5396,9 +5396,9 @@ __metadata: "@lavamoat/preinstall-always-fail": "npm:^2.1.0" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" - "@metamask/signature-controller": "npm:^39.2.1" + "@metamask/signature-controller": "npm:^39.2.2" "@metamask/transaction-controller": "npm:^65.3.0" "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" @@ -5416,21 +5416,21 @@ __metadata: languageName: unknown linkType: soft -"@metamask/signature-controller@npm:^39.2.1, @metamask/signature-controller@workspace:packages/signature-controller": +"@metamask/signature-controller@npm:^39.2.2, @metamask/signature-controller@workspace:packages/signature-controller": version: 0.0.0-use.local resolution: "@metamask/signature-controller@workspace:packages/signature-controller" dependencies: - "@metamask/accounts-controller": "npm:^38.1.0" + "@metamask/accounts-controller": "npm:^38.1.1" "@metamask/approval-controller": "npm:^9.0.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/eth-sig-util": "npm:^8.2.0" - "@metamask/gator-permissions-controller": "npm:^4.1.1" + "@metamask/gator-permissions-controller": "npm:^4.1.2" "@metamask/keyring-controller": "npm:^25.5.0" "@metamask/logging-controller": "npm:^8.0.2" "@metamask/messenger": "npm:^1.2.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" @@ -5605,7 +5605,7 @@ __metadata: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" "@metamask/base-data-service": "npm:^0.1.2" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/profile-sync-controller": "npm:^28.0.2" "@metamask/superstruct": "npm:^3.1.0" @@ -5653,7 +5653,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/polling-controller": "npm:^16.0.5" "@metamask/profile-sync-controller": "npm:^28.0.2" @@ -5716,12 +5716,12 @@ __metadata: "@ethersproject/contracts": "npm:^5.7.0" "@ethersproject/providers": "npm:^5.7.0" "@ethersproject/wallet": "npm:^5.7.0" - "@metamask/accounts-controller": "npm:^38.1.0" + "@metamask/accounts-controller": "npm:^38.1.1" "@metamask/approval-controller": "npm:^9.0.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" "@metamask/connectivity-controller": "npm:^0.2.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/core-backend": "npm:^6.2.2" "@metamask/eth-block-tracker": "npm:^15.0.0" "@metamask/eth-json-rpc-provider": "npm:^6.0.1" @@ -5729,7 +5729,7 @@ __metadata: "@metamask/gas-fee-controller": "npm:^26.2.1" "@metamask/messenger": "npm:^1.2.0" "@metamask/metamask-eth-abis": "npm:^3.1.1" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/nonce-tracker": "npm:^6.0.0" "@metamask/remote-feature-flag-controller": "npm:^4.2.1" "@metamask/rpc-errors": "npm:^7.0.2" @@ -5768,17 +5768,17 @@ __metadata: "@ethersproject/abi": "npm:^5.7.0" "@ethersproject/contracts": "npm:^5.7.0" "@ethersproject/providers": "npm:^5.7.0" - "@metamask/assets-controller": "npm:^7.1.0" - "@metamask/assets-controllers": "npm:^107.0.0" + "@metamask/assets-controller": "npm:^7.1.1" + "@metamask/assets-controllers": "npm:^108.0.0" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/bridge-controller": "npm:^72.0.3" - "@metamask/bridge-status-controller": "npm:^71.1.3" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/bridge-controller": "npm:^72.0.4" + "@metamask/bridge-status-controller": "npm:^71.1.4" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/gas-fee-controller": "npm:^26.2.1" "@metamask/messenger": "npm:^1.2.0" "@metamask/metamask-eth-abis": "npm:^3.1.1" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/ramps-controller": "npm:^13.3.1" "@metamask/remote-feature-flag-controller": "npm:^4.2.1" "@metamask/transaction-controller": "npm:^65.3.0" @@ -5806,13 +5806,13 @@ __metadata: "@metamask/approval-controller": "npm:^9.0.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" - "@metamask/controller-utils": "npm:^12.0.0" + "@metamask/controller-utils": "npm:^12.1.0" "@metamask/eth-block-tracker": "npm:^15.0.0" "@metamask/eth-query": "npm:^4.0.0" "@metamask/gas-fee-controller": "npm:^26.2.1" "@metamask/keyring-controller": "npm:^25.5.0" "@metamask/messenger": "npm:^1.2.0" - "@metamask/network-controller": "npm:^31.1.0" + "@metamask/network-controller": "npm:^32.0.0" "@metamask/polling-controller": "npm:^16.0.5" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/superstruct": "npm:^3.1.0"