diff --git a/package.json b/package.json index eee8624c30d..5ab1e27211c 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "@metamask/eth-json-rpc-provider": "^6.0.0", "@metamask/json-rpc-engine": "^10.2.0", "@metamask/network-controller": "^27.1.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "@ts-bridge/cli": "^0.6.4", "@types/jest": "^27.4.1", "@types/lodash": "^4.14.191", diff --git a/packages/account-tree-controller/CHANGELOG.md b/packages/account-tree-controller/CHANGELOG.md index 5f9fca67780..237af85e3c2 100644 --- a/packages/account-tree-controller/CHANGELOG.md +++ b/packages/account-tree-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Move peer dependencies for controller and service packages to direct dependencies ([#7209](https://github.com/MetaMask/core/pull/7209)) - The dependencies moved are: - `@metamask/accounts-controller` (^35.0.0) diff --git a/packages/account-tree-controller/package.json b/packages/account-tree-controller/package.json index f6efc8e43ed..cd773895416 100644 --- a/packages/account-tree-controller/package.json +++ b/packages/account-tree-controller/package.json @@ -58,7 +58,7 @@ "@metamask/snaps-sdk": "^9.0.0", "@metamask/snaps-utils": "^11.0.0", "@metamask/superstruct": "^3.1.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "fast-deep-equal": "^3.1.3", "lodash": "^4.17.21" }, diff --git a/packages/accounts-controller/CHANGELOG.md b/packages/accounts-controller/CHANGELOG.md index 34e58990c81..e92b6da61dd 100644 --- a/packages/accounts-controller/CHANGELOG.md +++ b/packages/accounts-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Move peer dependencies for controller and service packages to direct dependencies ([#7209](https://github.com/MetaMask/core/pull/7209), [#7258](https://github.com/MetaMask/core/pull/7258), [#7534](https://github.com/MetaMask/core/pull/7534)) - The dependencies moved are: - `@metamask/keyring-controller` (^25.0.0) diff --git a/packages/accounts-controller/package.json b/packages/accounts-controller/package.json index 92abb1bbe68..3a0a702ef42 100644 --- a/packages/accounts-controller/package.json +++ b/packages/accounts-controller/package.json @@ -61,7 +61,7 @@ "@metamask/snaps-sdk": "^9.0.0", "@metamask/snaps-utils": "^11.0.0", "@metamask/superstruct": "^3.1.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "deepmerge": "^4.2.2", "ethereum-cryptography": "^2.1.2", "immer": "^9.0.6", diff --git a/packages/address-book-controller/CHANGELOG.md b/packages/address-book-controller/CHANGELOG.md index f1ae5586e42..2bfd7c27201 100644 --- a/packages/address-book-controller/CHANGELOG.md +++ b/packages/address-book-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Bump `@metamask/controller-utils` from `^11.16.0` to `^11.17.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) ## [7.0.1] diff --git a/packages/address-book-controller/package.json b/packages/address-book-controller/package.json index d07bfe8b147..293a8d8db36 100644 --- a/packages/address-book-controller/package.json +++ b/packages/address-book-controller/package.json @@ -51,7 +51,7 @@ "@metamask/base-controller": "^9.0.0", "@metamask/controller-utils": "^11.17.0", "@metamask/messenger": "^0.3.0", - "@metamask/utils": "^11.8.1" + "@metamask/utils": "^11.9.0" }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", diff --git a/packages/analytics-controller/CHANGELOG.md b/packages/analytics-controller/CHANGELOG.md index 8cf25f32ff9..6e5a0aa0ee9 100644 --- a/packages/analytics-controller/CHANGELOG.md +++ b/packages/analytics-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) + ## [1.0.0] ### Added diff --git a/packages/analytics-controller/package.json b/packages/analytics-controller/package.json index 4379543fb74..304b8a15f43 100644 --- a/packages/analytics-controller/package.json +++ b/packages/analytics-controller/package.json @@ -50,7 +50,7 @@ "dependencies": { "@metamask/base-controller": "^9.0.0", "@metamask/messenger": "^0.3.0", - "@metamask/utils": "^11.8.1" + "@metamask/utils": "^11.9.0" }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", diff --git a/packages/approval-controller/CHANGELOG.md b/packages/approval-controller/CHANGELOG.md index d2538765eeb..44c6a2e5415 100644 --- a/packages/approval-controller/CHANGELOG.md +++ b/packages/approval-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) + ## [8.0.0] ### Changed diff --git a/packages/approval-controller/package.json b/packages/approval-controller/package.json index be163eda6c1..e9b7953621e 100644 --- a/packages/approval-controller/package.json +++ b/packages/approval-controller/package.json @@ -51,7 +51,7 @@ "@metamask/base-controller": "^9.0.0", "@metamask/messenger": "^0.3.0", "@metamask/rpc-errors": "^7.0.2", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "nanoid": "^3.3.8" }, "devDependencies": { diff --git a/packages/assets-controllers/CHANGELOG.md b/packages/assets-controllers/CHANGELOG.md index d39cb469667..362646dce32 100644 --- a/packages/assets-controllers/CHANGELOG.md +++ b/packages/assets-controllers/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - **BREAKING:** `AccountTrackerController` now requires `KeyringController:getState` action and `KeyringController:lock` event in addition to existing allowed actions and events ([#7492](https://github.com/MetaMask/core/pull/7492)) - Added `#isLocked` property to track keyring lock state, initialized from `KeyringController:getState` - Added `isActive` getter that returns `true` when keyring is unlocked and user is onboarded diff --git a/packages/assets-controllers/package.json b/packages/assets-controllers/package.json index a2622a92a57..dba5b5cf18b 100644 --- a/packages/assets-controllers/package.json +++ b/packages/assets-controllers/package.json @@ -79,7 +79,7 @@ "@metamask/snaps-sdk": "^9.0.0", "@metamask/snaps-utils": "^11.0.0", "@metamask/transaction-controller": "^62.7.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "@types/bn.js": "^5.1.5", "@types/uuid": "^8.3.0", "async-mutex": "^0.5.0", diff --git a/packages/base-controller/CHANGELOG.md b/packages/base-controller/CHANGELOG.md index b6da5896bda..58b12894418 100644 --- a/packages/base-controller/CHANGELOG.md +++ b/packages/base-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) + ## [9.0.0] ### Changed diff --git a/packages/base-controller/package.json b/packages/base-controller/package.json index ef9edd688d0..a304aefd3b3 100644 --- a/packages/base-controller/package.json +++ b/packages/base-controller/package.json @@ -48,7 +48,7 @@ }, "dependencies": { "@metamask/messenger": "^0.3.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "immer": "^9.0.6" }, "devDependencies": { diff --git a/packages/bridge-controller/CHANGELOG.md b/packages/bridge-controller/CHANGELOG.md index 59c30649d93..9263714e571 100644 --- a/packages/bridge-controller/CHANGELOG.md +++ b/packages/bridge-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Bump `@metamask/network-controller` from `^27.0.0` to `^27.1.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) - Bump `@metamask/controller-utils` from `^11.16.0` to `^11.17.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) diff --git a/packages/bridge-controller/package.json b/packages/bridge-controller/package.json index 0cf068c59fd..bade23fb69c 100644 --- a/packages/bridge-controller/package.json +++ b/packages/bridge-controller/package.json @@ -67,7 +67,7 @@ "@metamask/remote-feature-flag-controller": "^3.1.0", "@metamask/snaps-controllers": "^14.0.1", "@metamask/transaction-controller": "^62.7.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "bignumber.js": "^9.1.2", "reselect": "^5.1.1", "uuid": "^8.3.2" diff --git a/packages/bridge-status-controller/CHANGELOG.md b/packages/bridge-status-controller/CHANGELOG.md index 621dd693f03..942ebbbe17b 100644 --- a/packages/bridge-status-controller/CHANGELOG.md +++ b/packages/bridge-status-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Bump `@metamask/network-controller` from `^27.0.0` to `^27.1.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) - Bump `@metamask/controller-utils` from `^11.16.0` to `^11.17.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) diff --git a/packages/bridge-status-controller/package.json b/packages/bridge-status-controller/package.json index ee667e09d3f..ad818a171a2 100644 --- a/packages/bridge-status-controller/package.json +++ b/packages/bridge-status-controller/package.json @@ -58,7 +58,7 @@ "@metamask/snaps-controllers": "^14.0.1", "@metamask/superstruct": "^3.1.0", "@metamask/transaction-controller": "^62.7.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "bignumber.js": "^9.1.2", "uuid": "^8.3.2" }, diff --git a/packages/build-utils/CHANGELOG.md b/packages/build-utils/CHANGELOG.md index 9da1c2182e5..e7d9bee9390 100644 --- a/packages/build-utils/CHANGELOG.md +++ b/packages/build-utils/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) + ## [3.0.4] ### Changed diff --git a/packages/build-utils/package.json b/packages/build-utils/package.json index 9b75944af98..59e95b27453 100644 --- a/packages/build-utils/package.json +++ b/packages/build-utils/package.json @@ -48,7 +48,7 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "@types/eslint": "^8.44.7" }, "devDependencies": { diff --git a/packages/chain-agnostic-permission/CHANGELOG.md b/packages/chain-agnostic-permission/CHANGELOG.md index 05ee1b84a3a..554a72a772f 100644 --- a/packages/chain-agnostic-permission/CHANGELOG.md +++ b/packages/chain-agnostic-permission/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Bump `@metamask/network-controller` from `^27.0.0` to `^27.1.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) - Bump `@metamask/controller-utils` from `^11.16.0` to `^11.17.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) diff --git a/packages/chain-agnostic-permission/package.json b/packages/chain-agnostic-permission/package.json index 6643ad030a9..50f9c63abe2 100644 --- a/packages/chain-agnostic-permission/package.json +++ b/packages/chain-agnostic-permission/package.json @@ -53,7 +53,7 @@ "@metamask/network-controller": "^27.1.0", "@metamask/permission-controller": "^12.1.1", "@metamask/rpc-errors": "^7.0.2", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "lodash": "^4.17.21" }, "devDependencies": { diff --git a/packages/claims-controller/CHANGELOG.md b/packages/claims-controller/CHANGELOG.md index 5b495257379..3f2d90f9e07 100644 --- a/packages/claims-controller/CHANGELOG.md +++ b/packages/claims-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Bump `@metamask/controller-utils` from `^11.16.0` to `^11.17.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) ## [0.3.1] diff --git a/packages/claims-controller/package.json b/packages/claims-controller/package.json index b87ed45b96a..d1cd85a203d 100644 --- a/packages/claims-controller/package.json +++ b/packages/claims-controller/package.json @@ -51,7 +51,7 @@ "@metamask/base-controller": "^9.0.0", "@metamask/controller-utils": "^11.17.0", "@metamask/messenger": "^0.3.0", - "@metamask/utils": "^11.8.1" + "@metamask/utils": "^11.9.0" }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", diff --git a/packages/controller-utils/CHANGELOG.md b/packages/controller-utils/CHANGELOG.md index 68bccbe4d89..b555207d351 100644 --- a/packages/controller-utils/CHANGELOG.md +++ b/packages/controller-utils/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) + ## [11.17.0] ### Added diff --git a/packages/controller-utils/package.json b/packages/controller-utils/package.json index 8d02d43d8fa..16611d60917 100644 --- a/packages/controller-utils/package.json +++ b/packages/controller-utils/package.json @@ -50,7 +50,7 @@ "dependencies": { "@metamask/eth-query": "^4.0.0", "@metamask/ethjs-unit": "^0.3.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "@spruceid/siwe-parser": "2.1.0", "@types/bn.js": "^5.1.5", "bignumber.js": "^9.1.2", diff --git a/packages/core-backend/CHANGELOG.md b/packages/core-backend/CHANGELOG.md index 281a6dff5ac..29c61335146 100644 --- a/packages/core-backend/CHANGELOG.md +++ b/packages/core-backend/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Move peer dependencies for controller and service packages to direct dependencies ([#7209](https://github.com/MetaMask/core/pull/7209)) - The dependencies moved are: - `@metamask/accounts-controller` (^35.0.0) diff --git a/packages/core-backend/package.json b/packages/core-backend/package.json index f7d8cf472c0..14e0fb5a832 100644 --- a/packages/core-backend/package.json +++ b/packages/core-backend/package.json @@ -53,7 +53,7 @@ "@metamask/keyring-controller": "^25.0.0", "@metamask/messenger": "^0.3.0", "@metamask/profile-sync-controller": "^27.0.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "uuid": "^8.3.2" }, "devDependencies": { diff --git a/packages/delegation-controller/CHANGELOG.md b/packages/delegation-controller/CHANGELOG.md index 8a76879164a..6f1cde9cfd4 100644 --- a/packages/delegation-controller/CHANGELOG.md +++ b/packages/delegation-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Move peer dependencies for controller and service packages to direct dependencies ([#7209](https://github.com/MetaMask/core/pull/7209)) - The dependencies moved are: - `@metamask/accounts-controller` (^35.0.0) diff --git a/packages/delegation-controller/package.json b/packages/delegation-controller/package.json index f0d85b6dfd2..2e6d22847fa 100644 --- a/packages/delegation-controller/package.json +++ b/packages/delegation-controller/package.json @@ -52,7 +52,7 @@ "@metamask/base-controller": "^9.0.0", "@metamask/keyring-controller": "^25.0.0", "@metamask/messenger": "^0.3.0", - "@metamask/utils": "^11.8.1" + "@metamask/utils": "^11.9.0" }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", diff --git a/packages/eip-5792-middleware/CHANGELOG.md b/packages/eip-5792-middleware/CHANGELOG.md index 4bad39ed6af..5cee382d72d 100644 --- a/packages/eip-5792-middleware/CHANGELOG.md +++ b/packages/eip-5792-middleware/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) + ## [2.1.0] ### Added diff --git a/packages/eip-5792-middleware/package.json b/packages/eip-5792-middleware/package.json index 2991d04f4e4..92e3d504e7a 100644 --- a/packages/eip-5792-middleware/package.json +++ b/packages/eip-5792-middleware/package.json @@ -51,7 +51,7 @@ "@metamask/messenger": "^0.3.0", "@metamask/superstruct": "^3.1.0", "@metamask/transaction-controller": "^62.7.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "lodash": "^4.17.21", "uuid": "^8.3.2" }, diff --git a/packages/eip-7702-internal-rpc-middleware/CHANGELOG.md b/packages/eip-7702-internal-rpc-middleware/CHANGELOG.md index 23f633989b0..93e23804bec 100644 --- a/packages/eip-7702-internal-rpc-middleware/CHANGELOG.md +++ b/packages/eip-7702-internal-rpc-middleware/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Bump `@metamask/controller-utils` from `^11.15.0` to `^11.17.0` ([#7202](https://github.com/MetaMask/core/pull/7202), [#7534](https://github.com/MetaMask/core/pull/7534)) ## [0.1.0] diff --git a/packages/eip-7702-internal-rpc-middleware/package.json b/packages/eip-7702-internal-rpc-middleware/package.json index dffcef00ee9..8831ea4b8b8 100644 --- a/packages/eip-7702-internal-rpc-middleware/package.json +++ b/packages/eip-7702-internal-rpc-middleware/package.json @@ -51,7 +51,7 @@ "@metamask/controller-utils": "^11.17.0", "@metamask/rpc-errors": "^7.0.2", "@metamask/superstruct": "^3.1.0", - "@metamask/utils": "^11.8.1" + "@metamask/utils": "^11.9.0" }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", diff --git a/packages/eip1193-permission-middleware/CHANGELOG.md b/packages/eip1193-permission-middleware/CHANGELOG.md index faf86e567fe..6f998728b73 100644 --- a/packages/eip1193-permission-middleware/CHANGELOG.md +++ b/packages/eip1193-permission-middleware/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Bump `@metamask/controller-utils` from `^11.16.0` to `^11.17.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) ## [1.0.3] diff --git a/packages/eip1193-permission-middleware/package.json b/packages/eip1193-permission-middleware/package.json index b4449fe33cd..fa12e3c12b8 100644 --- a/packages/eip1193-permission-middleware/package.json +++ b/packages/eip1193-permission-middleware/package.json @@ -52,7 +52,7 @@ "@metamask/controller-utils": "^11.17.0", "@metamask/json-rpc-engine": "^10.2.0", "@metamask/permission-controller": "^12.1.1", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "lodash": "^4.17.21" }, "devDependencies": { diff --git a/packages/ens-controller/CHANGELOG.md b/packages/ens-controller/CHANGELOG.md index b558fc036d3..c4f865d5385 100644 --- a/packages/ens-controller/CHANGELOG.md +++ b/packages/ens-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Move peer dependencies for controller and service packages to direct dependencies ([#7209](https://github.com/MetaMask/core/pull/7209), [#7258](https://github.com/MetaMask/core/pull/7258), [#7534](https://github.com/MetaMask/core/pull/7534)) - The dependencies moved are: - `@metamask/network-controller` (^27.1.0) diff --git a/packages/ens-controller/package.json b/packages/ens-controller/package.json index 97d368892e3..e2f264f6f15 100644 --- a/packages/ens-controller/package.json +++ b/packages/ens-controller/package.json @@ -53,7 +53,7 @@ "@metamask/controller-utils": "^11.17.0", "@metamask/messenger": "^0.3.0", "@metamask/network-controller": "^27.1.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "punycode": "^2.1.1" }, "devDependencies": { diff --git a/packages/eth-block-tracker/CHANGELOG.md b/packages/eth-block-tracker/CHANGELOG.md index 71049be53ff..9e2c75650ba 100644 --- a/packages/eth-block-tracker/CHANGELOG.md +++ b/packages/eth-block-tracker/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) + ## [15.0.0] ### Added diff --git a/packages/eth-block-tracker/package.json b/packages/eth-block-tracker/package.json index f4690ed00eb..1cd349f8cf0 100644 --- a/packages/eth-block-tracker/package.json +++ b/packages/eth-block-tracker/package.json @@ -57,7 +57,7 @@ "dependencies": { "@metamask/eth-json-rpc-provider": "^6.0.0", "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "json-rpc-random-id": "^1.0.1" }, "devDependencies": { diff --git a/packages/eth-json-rpc-middleware/CHANGELOG.md b/packages/eth-json-rpc-middleware/CHANGELOG.md index 9403e497379..2f924eab481 100644 --- a/packages/eth-json-rpc-middleware/CHANGELOG.md +++ b/packages/eth-json-rpc-middleware/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) + ## [22.0.1] ### Fixed diff --git a/packages/eth-json-rpc-middleware/package.json b/packages/eth-json-rpc-middleware/package.json index 5623ae818f9..820d1c9d5b3 100644 --- a/packages/eth-json-rpc-middleware/package.json +++ b/packages/eth-json-rpc-middleware/package.json @@ -62,7 +62,7 @@ "@metamask/message-manager": "^14.1.0", "@metamask/rpc-errors": "^7.0.2", "@metamask/superstruct": "^3.1.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "klona": "^2.0.6", "pify": "^5.0.0", "safe-stable-stringify": "^2.4.3" diff --git a/packages/eth-json-rpc-provider/CHANGELOG.md b/packages/eth-json-rpc-provider/CHANGELOG.md index 992b9f33592..fe2cbc071f2 100644 --- a/packages/eth-json-rpc-provider/CHANGELOG.md +++ b/packages/eth-json-rpc-provider/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) + ## [6.0.0] ### Added diff --git a/packages/eth-json-rpc-provider/package.json b/packages/eth-json-rpc-provider/package.json index e807010e339..c5ed2ecd459 100644 --- a/packages/eth-json-rpc-provider/package.json +++ b/packages/eth-json-rpc-provider/package.json @@ -55,7 +55,7 @@ "dependencies": { "@metamask/json-rpc-engine": "^10.2.0", "@metamask/rpc-errors": "^7.0.2", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "nanoid": "^3.3.8" }, "devDependencies": { diff --git a/packages/gas-fee-controller/CHANGELOG.md b/packages/gas-fee-controller/CHANGELOG.md index e31dfd8d139..11433427640 100644 --- a/packages/gas-fee-controller/CHANGELOG.md +++ b/packages/gas-fee-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Move peer dependencies for controller and service packages to direct dependencies ([#7209](https://github.com/MetaMask/core/pull/7209), [#7258](https://github.com/MetaMask/core/pull/7258), [#7534](https://github.com/MetaMask/core/pull/7534)) - The dependencies moved are: - `@metamask/network-controller` (^27.1.0) diff --git a/packages/gas-fee-controller/package.json b/packages/gas-fee-controller/package.json index d47b06736ff..1f06c420698 100644 --- a/packages/gas-fee-controller/package.json +++ b/packages/gas-fee-controller/package.json @@ -54,7 +54,7 @@ "@metamask/ethjs-unit": "^0.3.0", "@metamask/network-controller": "^27.1.0", "@metamask/polling-controller": "^16.0.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "@types/bn.js": "^5.1.5", "@types/uuid": "^8.3.0", "bn.js": "^5.2.1", diff --git a/packages/gator-permissions-controller/CHANGELOG.md b/packages/gator-permissions-controller/CHANGELOG.md index dcee094dd3a..dab384e90d5 100644 --- a/packages/gator-permissions-controller/CHANGELOG.md +++ b/packages/gator-permissions-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Bump `@metamask/transaction-controller` from `^62.5.0` to `^62.7.0` ([#7430](https://github.com/MetaMask/core/pull/7430), [#7494](https://github.com/MetaMask/core/pull/7494)) ## [0.8.0] diff --git a/packages/gator-permissions-controller/package.json b/packages/gator-permissions-controller/package.json index 9f132bfd70a..350d00fab6e 100644 --- a/packages/gator-permissions-controller/package.json +++ b/packages/gator-permissions-controller/package.json @@ -57,7 +57,7 @@ "@metamask/snaps-sdk": "^9.0.0", "@metamask/snaps-utils": "^11.0.0", "@metamask/transaction-controller": "^62.7.0", - "@metamask/utils": "^11.8.1" + "@metamask/utils": "^11.9.0" }, "devDependencies": { "@lavamoat/allow-scripts": "^3.0.4", diff --git a/packages/json-rpc-engine/CHANGELOG.md b/packages/json-rpc-engine/CHANGELOG.md index dd3f6629370..6d8d42b961c 100644 --- a/packages/json-rpc-engine/CHANGELOG.md +++ b/packages/json-rpc-engine/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) + ## [10.2.0] ### Added diff --git a/packages/json-rpc-engine/package.json b/packages/json-rpc-engine/package.json index c44525b7662..07bbf29344c 100644 --- a/packages/json-rpc-engine/package.json +++ b/packages/json-rpc-engine/package.json @@ -70,7 +70,7 @@ "dependencies": { "@metamask/rpc-errors": "^7.0.2", "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "@types/deep-freeze-strict": "^1.1.0", "deep-freeze-strict": "^1.1.1", "klona": "^2.0.6" diff --git a/packages/json-rpc-middleware-stream/CHANGELOG.md b/packages/json-rpc-middleware-stream/CHANGELOG.md index 4400b93294d..29d39bc4648 100644 --- a/packages/json-rpc-middleware-stream/CHANGELOG.md +++ b/packages/json-rpc-middleware-stream/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Bump `@metamask/json-rpc-engine` from `^10.1.1` to `^10.2.0` ([#7202](https://github.com/MetaMask/core/pull/7202)) ## [8.0.8] diff --git a/packages/json-rpc-middleware-stream/package.json b/packages/json-rpc-middleware-stream/package.json index 0429299f641..dd5a641e30d 100644 --- a/packages/json-rpc-middleware-stream/package.json +++ b/packages/json-rpc-middleware-stream/package.json @@ -50,7 +50,7 @@ "dependencies": { "@metamask/json-rpc-engine": "^10.2.0", "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "readable-stream": "^3.6.2" }, "devDependencies": { diff --git a/packages/keyring-controller/CHANGELOG.md b/packages/keyring-controller/CHANGELOG.md index 4c695436dbf..d6c02c0fe6c 100644 --- a/packages/keyring-controller/CHANGELOG.md +++ b/packages/keyring-controller/CHANGELOG.md @@ -13,6 +13,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added an action to call `removeAccount` ([#7241](https://github.com/MetaMask/core/pull/7241)) - This action is meant to be consumed by the `MultichainAccountService` to encapsulate the act of removing a wallet when seed phrase backup fails in the clients. +### Changed + +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) + ## [25.0.0] ### Added diff --git a/packages/keyring-controller/package.json b/packages/keyring-controller/package.json index d5e9f9685d2..99c785f7c3d 100644 --- a/packages/keyring-controller/package.json +++ b/packages/keyring-controller/package.json @@ -57,7 +57,7 @@ "@metamask/keyring-api": "^21.0.0", "@metamask/keyring-internal-api": "^9.0.0", "@metamask/messenger": "^0.3.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "async-mutex": "^0.5.0", "ethereumjs-wallet": "^1.0.1", "immer": "^9.0.6", diff --git a/packages/message-manager/CHANGELOG.md b/packages/message-manager/CHANGELOG.md index 8cedb63bca4..77c9daad928 100644 --- a/packages/message-manager/CHANGELOG.md +++ b/packages/message-manager/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Bump `@metamask/controller-utils` from `^11.16.0` to `^11.17.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) ## [14.1.0] diff --git a/packages/message-manager/package.json b/packages/message-manager/package.json index 32885eb18d8..e2f2b0e675e 100644 --- a/packages/message-manager/package.json +++ b/packages/message-manager/package.json @@ -52,7 +52,7 @@ "@metamask/controller-utils": "^11.17.0", "@metamask/eth-sig-util": "^8.2.0", "@metamask/messenger": "^0.3.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "@types/uuid": "^8.3.0", "jsonschema": "^1.4.1", "uuid": "^8.3.2" diff --git a/packages/multichain-account-service/CHANGELOG.md b/packages/multichain-account-service/CHANGELOG.md index c75b0f8c8f2..e4aceed23d1 100644 --- a/packages/multichain-account-service/CHANGELOG.md +++ b/packages/multichain-account-service/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) + ## [4.1.0] ### Added diff --git a/packages/multichain-account-service/package.json b/packages/multichain-account-service/package.json index a1b61c979bd..82c89762b19 100644 --- a/packages/multichain-account-service/package.json +++ b/packages/multichain-account-service/package.json @@ -64,7 +64,7 @@ "@metamask/snaps-sdk": "^9.0.0", "@metamask/snaps-utils": "^11.0.0", "@metamask/superstruct": "^3.1.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "async-mutex": "^0.5.0" }, "devDependencies": { diff --git a/packages/multichain-api-middleware/CHANGELOG.md b/packages/multichain-api-middleware/CHANGELOG.md index 2ac3fb2a7bd..9018ad3d5cb 100644 --- a/packages/multichain-api-middleware/CHANGELOG.md +++ b/packages/multichain-api-middleware/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Bump `@metamask/network-controller` from `^27.0.0` to `^27.1.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) - Bump `@metamask/controller-utils` from `^11.16.0` to `^11.17.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) diff --git a/packages/multichain-api-middleware/package.json b/packages/multichain-api-middleware/package.json index 501a6d8b26f..8fc600edf9f 100644 --- a/packages/multichain-api-middleware/package.json +++ b/packages/multichain-api-middleware/package.json @@ -55,7 +55,7 @@ "@metamask/network-controller": "^27.1.0", "@metamask/permission-controller": "^12.1.1", "@metamask/rpc-errors": "^7.0.2", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "@open-rpc/meta-schema": "^1.14.6", "@open-rpc/schema-utils-js": "^2.0.5", "jsonschema": "^1.4.1" diff --git a/packages/multichain-network-controller/CHANGELOG.md b/packages/multichain-network-controller/CHANGELOG.md index f9658aa6b91..3314248d131 100644 --- a/packages/multichain-network-controller/CHANGELOG.md +++ b/packages/multichain-network-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Move peer dependencies for controller and service packages to direct dependencies ([#7209](https://github.com/MetaMask/core/pull/7209), [#7258](https://github.com/MetaMask/core/pull/7258), [#7534](https://github.com/MetaMask/core/pull/7534)) - The dependencies moved are: - `@metamask/accounts-controller` (^35.0.0) diff --git a/packages/multichain-network-controller/package.json b/packages/multichain-network-controller/package.json index 6cfd03efea8..0a090a9e9b6 100644 --- a/packages/multichain-network-controller/package.json +++ b/packages/multichain-network-controller/package.json @@ -56,7 +56,7 @@ "@metamask/messenger": "^0.3.0", "@metamask/network-controller": "^27.1.0", "@metamask/superstruct": "^3.1.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "@solana/addresses": "^2.0.0", "lodash": "^4.17.21" }, diff --git a/packages/multichain-transactions-controller/CHANGELOG.md b/packages/multichain-transactions-controller/CHANGELOG.md index 0b1531f4693..345f6640b25 100644 --- a/packages/multichain-transactions-controller/CHANGELOG.md +++ b/packages/multichain-transactions-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Move peer dependencies for controller and service packages to direct dependencies ([#7209](https://github.com/MetaMask/core/pull/7209)) - The dependencies moved are: - `@metamask/accounts-controller` (^35.0.0) diff --git a/packages/multichain-transactions-controller/package.json b/packages/multichain-transactions-controller/package.json index b3410286456..ebc78ce3388 100644 --- a/packages/multichain-transactions-controller/package.json +++ b/packages/multichain-transactions-controller/package.json @@ -58,7 +58,7 @@ "@metamask/snaps-controllers": "^14.0.1", "@metamask/snaps-sdk": "^9.0.0", "@metamask/snaps-utils": "^11.0.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "@types/uuid": "^8.3.0", "immer": "^9.0.6", "uuid": "^8.3.2" diff --git a/packages/name-controller/CHANGELOG.md b/packages/name-controller/CHANGELOG.md index d91e63a18d5..34002c1ebcb 100644 --- a/packages/name-controller/CHANGELOG.md +++ b/packages/name-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Bump `@metamask/controller-utils` from `^11.15.0` to `^11.17.0` ([#7202](https://github.com/MetaMask/core/pull/7202), [#7534](https://github.com/MetaMask/core/pull/7534)) ## [9.0.0] diff --git a/packages/name-controller/package.json b/packages/name-controller/package.json index bbca5c40073..25e755e85cb 100644 --- a/packages/name-controller/package.json +++ b/packages/name-controller/package.json @@ -52,7 +52,7 @@ "@metamask/base-controller": "^9.0.0", "@metamask/controller-utils": "^11.17.0", "@metamask/messenger": "^0.3.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "async-mutex": "^0.5.0" }, "devDependencies": { diff --git a/packages/network-controller/CHANGELOG.md b/packages/network-controller/CHANGELOG.md index 03cf460542f..e09321d3db9 100644 --- a/packages/network-controller/CHANGELOG.md +++ b/packages/network-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) + ## [27.1.0] ### Added diff --git a/packages/network-controller/package.json b/packages/network-controller/package.json index cf8500da4a9..d04d0074efd 100644 --- a/packages/network-controller/package.json +++ b/packages/network-controller/package.json @@ -60,7 +60,7 @@ "@metamask/messenger": "^0.3.0", "@metamask/rpc-errors": "^7.0.2", "@metamask/swappable-obj-proxy": "^2.3.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "async-mutex": "^0.5.0", "fast-deep-equal": "^3.1.3", "immer": "^9.0.6", diff --git a/packages/network-enablement-controller/CHANGELOG.md b/packages/network-enablement-controller/CHANGELOG.md index 12f341511f3..6842fd6e9f6 100644 --- a/packages/network-enablement-controller/CHANGELOG.md +++ b/packages/network-enablement-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Move peer dependencies for controller and service packages to direct dependencies ([#7209](https://github.com/MetaMask/core/pull/7209), [#7220](https://github.com/MetaMask/core/pull/7220), [#7236](https://github.com/MetaMask/core/pull/7236), [#7257](https://github.com/MetaMask/core/pull/7257), [#7258](https://github.com/MetaMask/core/pull/7258), [#7289](https://github.com/MetaMask/core/pull/7289), [#7534](https://github.com/MetaMask/core/pull/7534)) - The dependencies moved are: - `@metamask/multichain-network-controller` (^3.0.0) diff --git a/packages/network-enablement-controller/package.json b/packages/network-enablement-controller/package.json index 6956a81445d..c731bf3ae7f 100644 --- a/packages/network-enablement-controller/package.json +++ b/packages/network-enablement-controller/package.json @@ -55,7 +55,7 @@ "@metamask/multichain-network-controller": "^3.0.0", "@metamask/network-controller": "^27.1.0", "@metamask/transaction-controller": "^62.7.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "reselect": "^5.1.1" }, "devDependencies": { diff --git a/packages/notification-services-controller/CHANGELOG.md b/packages/notification-services-controller/CHANGELOG.md index 1ce3807927a..9e72fbe7cf4 100644 --- a/packages/notification-services-controller/CHANGELOG.md +++ b/packages/notification-services-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Move peer dependencies for controller and service packages to direct dependencies ([#7209](https://github.com/MetaMask/core/pull/7209)) - The dependencies moved are: - `@metamask/keyring-controller` (^25.0.0) diff --git a/packages/notification-services-controller/package.json b/packages/notification-services-controller/package.json index 32ddd697f53..929d71817b2 100644 --- a/packages/notification-services-controller/package.json +++ b/packages/notification-services-controller/package.json @@ -116,7 +116,7 @@ "@metamask/keyring-controller": "^25.0.0", "@metamask/messenger": "^0.3.0", "@metamask/profile-sync-controller": "^27.0.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "bignumber.js": "^9.1.2", "firebase": "^11.2.0", "loglevel": "^1.8.1", diff --git a/packages/permission-controller/CHANGELOG.md b/packages/permission-controller/CHANGELOG.md index ac943efbc42..79c30ee95e9 100644 --- a/packages/permission-controller/CHANGELOG.md +++ b/packages/permission-controller/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Move peer dependencies for controller and service packages to direct dependencies ([#7209](https://github.com/MetaMask/core/pull/7209)) - The dependencies moved are: - `@metamask/approval-controller` (^8.0.0) diff --git a/packages/permission-controller/package.json b/packages/permission-controller/package.json index 39e24cea9d6..51451db13d6 100644 --- a/packages/permission-controller/package.json +++ b/packages/permission-controller/package.json @@ -54,7 +54,7 @@ "@metamask/json-rpc-engine": "^10.2.0", "@metamask/messenger": "^0.3.0", "@metamask/rpc-errors": "^7.0.2", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "@types/deep-freeze-strict": "^1.1.0", "deep-freeze-strict": "^1.1.1", "immer": "^9.0.6", diff --git a/packages/permission-log-controller/CHANGELOG.md b/packages/permission-log-controller/CHANGELOG.md index f8051f27b02..5a2f5fc0120 100644 --- a/packages/permission-log-controller/CHANGELOG.md +++ b/packages/permission-log-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Bump `@metamask/json-rpc-engine` from `^10.1.1` to `^10.2.0` ([#7202](https://github.com/MetaMask/core/pull/7202)) ## [5.0.0] diff --git a/packages/permission-log-controller/package.json b/packages/permission-log-controller/package.json index 4ccf95cc78c..2a59805a9fe 100644 --- a/packages/permission-log-controller/package.json +++ b/packages/permission-log-controller/package.json @@ -51,7 +51,7 @@ "@metamask/base-controller": "^9.0.0", "@metamask/json-rpc-engine": "^10.2.0", "@metamask/messenger": "^0.3.0", - "@metamask/utils": "^11.8.1" + "@metamask/utils": "^11.9.0" }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", diff --git a/packages/polling-controller/CHANGELOG.md b/packages/polling-controller/CHANGELOG.md index fcae6107cb0..37bc677e9f6 100644 --- a/packages/polling-controller/CHANGELOG.md +++ b/packages/polling-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Move peer dependencies for controller and service packages to direct dependencies ([#7209](https://github.com/MetaMask/core/pull/7209), [#7258](https://github.com/MetaMask/core/pull/7258), [#7534](https://github.com/MetaMask/core/pull/7534)) - The dependencies moved are: - `@metamask/network-controller` (^27.1.0) diff --git a/packages/polling-controller/package.json b/packages/polling-controller/package.json index ee633d557cb..efc9b822b00 100644 --- a/packages/polling-controller/package.json +++ b/packages/polling-controller/package.json @@ -51,7 +51,7 @@ "@metamask/base-controller": "^9.0.0", "@metamask/controller-utils": "^11.17.0", "@metamask/network-controller": "^27.1.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "@types/uuid": "^8.3.0", "fast-json-stable-stringify": "^2.1.0", "uuid": "^8.3.2" diff --git a/packages/preferences-controller/CHANGELOG.md b/packages/preferences-controller/CHANGELOG.md index 034c8e17c25..2ff2b142aa0 100644 --- a/packages/preferences-controller/CHANGELOG.md +++ b/packages/preferences-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Move peer dependencies for controller and service packages to direct dependencies ([#7209](https://github.com/MetaMask/core/pull/7209)) - The dependencies moved are: - `@metamask/keyring-controller` (^25.0.0) diff --git a/packages/preferences-controller/package.json b/packages/preferences-controller/package.json index 817ec642060..43807442ea9 100644 --- a/packages/preferences-controller/package.json +++ b/packages/preferences-controller/package.json @@ -55,7 +55,7 @@ }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "@ts-bridge/cli": "^0.6.4", "@types/jest": "^27.4.1", "deepmerge": "^4.2.2", diff --git a/packages/profile-metrics-controller/CHANGELOG.md b/packages/profile-metrics-controller/CHANGELOG.md index d50df0b5a82..47c5c9a5ecf 100644 --- a/packages/profile-metrics-controller/CHANGELOG.md +++ b/packages/profile-metrics-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Bump `@metamask/controller-utils` from `^11.16.0` to `^11.17.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) ## [2.0.0] diff --git a/packages/profile-metrics-controller/package.json b/packages/profile-metrics-controller/package.json index 97d05e91b26..f36750438c5 100644 --- a/packages/profile-metrics-controller/package.json +++ b/packages/profile-metrics-controller/package.json @@ -55,7 +55,7 @@ "@metamask/messenger": "^0.3.0", "@metamask/polling-controller": "^16.0.0", "@metamask/profile-sync-controller": "^27.0.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "async-mutex": "^0.5.0" }, "devDependencies": { diff --git a/packages/profile-sync-controller/CHANGELOG.md b/packages/profile-sync-controller/CHANGELOG.md index 1cb4437d43c..a4b0dce0ccb 100644 --- a/packages/profile-sync-controller/CHANGELOG.md +++ b/packages/profile-sync-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Move peer dependencies for controller and service packages to direct dependencies ([#7209](https://github.com/MetaMask/core/pull/7209)) - The dependencies moved are: - `@metamask/address-book-controller` (^7.0.1) diff --git a/packages/profile-sync-controller/package.json b/packages/profile-sync-controller/package.json index 49dbf907c04..01fa1030546 100644 --- a/packages/profile-sync-controller/package.json +++ b/packages/profile-sync-controller/package.json @@ -108,7 +108,7 @@ "@metamask/snaps-controllers": "^14.0.1", "@metamask/snaps-sdk": "^9.0.0", "@metamask/snaps-utils": "^11.0.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "@noble/ciphers": "^1.3.0", "@noble/hashes": "^1.8.0", "immer": "^9.0.6", diff --git a/packages/rate-limit-controller/CHANGELOG.md b/packages/rate-limit-controller/CHANGELOG.md index 118a4e0487d..9538c7cb4f7 100644 --- a/packages/rate-limit-controller/CHANGELOG.md +++ b/packages/rate-limit-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) + ## [7.0.0] ### Changed diff --git a/packages/rate-limit-controller/package.json b/packages/rate-limit-controller/package.json index 89e1f03d557..15d7943d398 100644 --- a/packages/rate-limit-controller/package.json +++ b/packages/rate-limit-controller/package.json @@ -51,7 +51,7 @@ "@metamask/base-controller": "^9.0.0", "@metamask/messenger": "^0.3.0", "@metamask/rpc-errors": "^7.0.2", - "@metamask/utils": "^11.8.1" + "@metamask/utils": "^11.9.0" }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", diff --git a/packages/remote-feature-flag-controller/CHANGELOG.md b/packages/remote-feature-flag-controller/CHANGELOG.md index 1384117210e..1fc6c76ebba 100644 --- a/packages/remote-feature-flag-controller/CHANGELOG.md +++ b/packages/remote-feature-flag-controller/CHANGELOG.md @@ -9,6 +9,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Improve threshold-based feature flag processing to ensure independent user assignment across different flags ([#7511](https://github.com/MetaMask/core/pull/7511)): + - Persist threshold values in controller state to avoid recalculating on app restart + - Skip cryptographic operations for non-threshold arrays + - Batch cache updates and cleanup into single state change + - Automatically remove stale cache entries when flags are deleted +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) for native `crypto.subtle.digest` optimization ([#7511](https://github.com/MetaMask/core/pull/7511)) +- Remove `@noble/hashes` dependency since hashing utilities are now available in upgraded `@metamask/utils` ([#7511](https://github.com/MetaMask/core/pull/7511)) +- Changes to exported types ([#7511](https://github.com/MetaMask/core/pull/7511)): + - Add optional field `thresholdCache` to `RemoteFeatureFlagControllerState` - Bump `@metamask/controller-utils` from `^11.16.0` to `^11.17.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) ## [3.1.0] diff --git a/packages/remote-feature-flag-controller/package.json b/packages/remote-feature-flag-controller/package.json index 2e87b0637ec..724442af6ad 100644 --- a/packages/remote-feature-flag-controller/package.json +++ b/packages/remote-feature-flag-controller/package.json @@ -51,7 +51,7 @@ "@metamask/base-controller": "^9.0.0", "@metamask/controller-utils": "^11.17.0", "@metamask/messenger": "^0.3.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "uuid": "^8.3.2" }, "devDependencies": { diff --git a/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.test.ts b/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.test.ts index bdd12cebdfb..3de6ce24ed7 100644 --- a/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.test.ts +++ b/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.test.ts @@ -321,11 +321,13 @@ describe('RemoteFeatureFlagController', () => { }); await controller.updateRemoteFeatureFlags(); + // With MOCK_METRICS_ID + 'testFlagForThreshold' hashed: + // Threshold = 0.380673, which falls in groupB range (0.3 < t <= 0.5) expect( controller.state.remoteFeatureFlags.testFlagForThreshold, ).toStrictEqual({ - name: 'groupC', - value: 'valueC', + name: 'groupB', + value: 'valueB', }); }); @@ -343,6 +345,153 @@ describe('RemoteFeatureFlagController', () => { controller.state.remoteFeatureFlags; expect(nonThresholdFlags).toStrictEqual(MOCK_FLAGS); }); + + it('assigns users to different groups for different feature flags', async () => { + // Arrange + const mockFlags = { + featureA: [ + { + name: 'groupA1', + scope: { type: 'threshold', value: 0.5 }, + value: 'A1', + }, + { + name: 'groupA2', + scope: { type: 'threshold', value: 1.0 }, + value: 'A2', + }, + ], + featureB: [ + { + name: 'groupB1', + scope: { type: 'threshold', value: 0.5 }, + value: 'B1', + }, + { + name: 'groupB2', + scope: { type: 'threshold', value: 1.0 }, + value: 'B2', + }, + ], + }; + const clientConfigApiService = buildClientConfigApiService({ + remoteFeatureFlags: mockFlags, + }); + const controller = createController({ + clientConfigApiService, + getMetaMetricsId: () => MOCK_METRICS_ID, + }); + + // Act + await controller.updateRemoteFeatureFlags(); + + // Assert - User gets different groups because each flag uses unique seed + const { featureA, featureB } = controller.state.remoteFeatureFlags; + // featureA: hash(MOCK_METRICS_ID + 'featureA') → threshold 0.966682 → groupA2 + expect(featureA).toStrictEqual({ name: 'groupA2', value: 'A2' }); + // featureB: hash(MOCK_METRICS_ID + 'featureB') → threshold 0.398654 → groupB1 + expect(featureB).toStrictEqual({ name: 'groupB1', value: 'B1' }); + // Different groups proves independence! + }); + + it('preserves non-threshold arrays without processing', async () => { + // Arrange + const mockFlags = { + nonThresholdArray: [1, 2, 3], + stringArray: ['a', 'b', 'c'], + }; + const clientConfigApiService = buildClientConfigApiService({ + remoteFeatureFlags: mockFlags, + }); + const controller = createController({ + clientConfigApiService, + getMetaMetricsId: () => MOCK_METRICS_ID, + }); + + // Act + await controller.updateRemoteFeatureFlags(); + + // Assert - Arrays preserved as-is, not processed for thresholds + expect( + controller.state.remoteFeatureFlags.nonThresholdArray, + ).toStrictEqual([1, 2, 3]); + expect(controller.state.remoteFeatureFlags.stringArray).toStrictEqual([ + 'a', + 'b', + 'c', + ]); + }); + + it('skips invalid items in threshold array when selecting group', async () => { + // Arrange + const mockFlags: FeatureFlags = { + mixedArray: [ + { name: 'invalid', value: 'no scope' }, // Invalid - missing scope property + { + name: 'validGroup', + scope: { type: 'threshold', value: 1.0 }, + value: 'selectedValue', + }, + ], + }; + const clientConfigApiService = buildClientConfigApiService({ + remoteFeatureFlags: mockFlags, + }); + const controller = createController({ + clientConfigApiService, + getMetaMetricsId: () => MOCK_METRICS_ID, + }); + + // Act + await controller.updateRemoteFeatureFlags(); + + // Assert - Invalid item skipped, valid item selected + expect(controller.state.remoteFeatureFlags.mixedArray).toStrictEqual({ + name: 'validGroup', + value: 'selectedValue', + }); + }); + + it('assigns users to same group for same feature flag on multiple calls', async () => { + // Arrange + const mockFlags = { + testFlag: [ + { + name: 'control', + scope: { type: 'threshold', value: 0.5 }, + value: false, + }, + { + name: 'treatment', + scope: { type: 'threshold', value: 1.0 }, + value: true, + }, + ], + }; + const clientConfigApiService = buildClientConfigApiService({ + remoteFeatureFlags: mockFlags, + }); + + // Act - Create two separate controllers with same metaMetricsId + const controller1 = createController({ + clientConfigApiService, + getMetaMetricsId: () => MOCK_METRICS_ID, + }); + await controller1.updateRemoteFeatureFlags(); + const firstResult = controller1.state.remoteFeatureFlags.testFlag; + + const controller2 = createController({ + clientConfigApiService, + getMetaMetricsId: () => MOCK_METRICS_ID, + }); + await controller2.updateRemoteFeatureFlags(); + const secondResult = controller2.state.remoteFeatureFlags.testFlag; + + // Assert - Same user always gets same group (deterministic) + // testFlag: hash(MOCK_METRICS_ID + 'testFlag') → threshold 0.496587 → control + expect(firstResult).toStrictEqual(secondResult); + expect(firstResult).toStrictEqual({ name: 'control', value: false }); + }); }); describe('enable and disable', () => { @@ -632,17 +781,18 @@ describe('RemoteFeatureFlagController', () => { const { multiVersionABFlag, regularFlag } = controller.state.remoteFeatureFlags; // Should select 13.1.0 version and then apply A/B testing to that array - // With MOCK_METRICS_ID threshold, should select groupC (threshold 1.0) + // With MOCK_METRICS_ID + 'multiVersionABFlag' hashed: + // Threshold = 0.094878, which falls in groupA range (t <= 0.3) expect(multiVersionABFlag).toStrictEqual({ - name: 'groupC', - value: { feature: 'C', enabled: true }, + name: 'groupA', + value: { feature: 'A', enabled: true }, }); expect(regularFlag).toBe(true); }); }); describe('getDefaultRemoteFeatureFlagControllerState', () => { - it('should return default state', () => { + it('returns default state', () => { expect(getDefaultRemoteFeatureFlagControllerState()).toStrictEqual({ remoteFeatureFlags: {}, localOverrides: {}, @@ -780,6 +930,348 @@ describe('RemoteFeatureFlagController', () => { }); }); + describe('threshold cache cleanup', () => { + it('removes stale threshold cache entries when flags are removed from server', async () => { + // Arrange + const clientConfigApiService = buildClientConfigApiService({ + remoteFeatureFlags: { + flagA: [ + { + name: 'groupA', + scope: { type: 'threshold', value: 1.0 }, + value: true, + }, + ], + flagB: [ + { + name: 'groupB', + scope: { type: 'threshold', value: 1.0 }, + value: false, + }, + ], + }, + }); + const controller = createController({ + clientConfigApiService, + getMetaMetricsId: () => MOCK_METRICS_ID, + }); + + // Act - First update: both flags processed + await controller.updateRemoteFeatureFlags(); + const cacheAfterFirst = controller.state.thresholdCache; + expect(Object.keys(cacheAfterFirst ?? {})).toHaveLength(2); + + // Update server to remove flagA + jest + .spyOn(clientConfigApiService, 'fetchRemoteFeatureFlags') + .mockResolvedValue({ + remoteFeatureFlags: { + flagB: [ + { + name: 'groupB', + scope: { type: 'threshold', value: 1.0 }, + value: false, + }, + ], + }, + cacheTimestamp: Date.now(), + }); + + // Force cache expiration + jest.useFakeTimers(); + jest.advanceTimersByTime(2 * DEFAULT_CACHE_DURATION); + + // Second update: flagA removed from server + await controller.updateRemoteFeatureFlags(); + + // Assert - flagA cache entry removed + const cacheAfterSecond = controller.state.thresholdCache ?? {}; + expect(Object.keys(cacheAfterSecond)).toHaveLength(1); + expect(cacheAfterSecond[`${MOCK_METRICS_ID}:flagB`]).toBeDefined(); + expect(cacheAfterSecond[`${MOCK_METRICS_ID}:flagA`]).toBeUndefined(); + + jest.useRealTimers(); + }); + + it('preserves threshold cache entries for flags still in server response', async () => { + // Arrange + const mockFlags = { + persistentFlag: [ + { + name: 'group', + scope: { type: 'threshold', value: 1.0 }, + value: true, + }, + ], + }; + const clientConfigApiService = buildClientConfigApiService({ + remoteFeatureFlags: mockFlags, + }); + const controller = createController({ + clientConfigApiService, + getMetaMetricsId: () => MOCK_METRICS_ID, + }); + + // Act - Multiple updates with same flag + await controller.updateRemoteFeatureFlags(); + const initialThreshold = + controller.state.thresholdCache?.[`${MOCK_METRICS_ID}:persistentFlag`]; + + jest.useFakeTimers(); + jest.advanceTimersByTime(2 * DEFAULT_CACHE_DURATION); + await controller.updateRemoteFeatureFlags(); + + // Assert - Cache entry preserved and unchanged + const finalThreshold = + controller.state.thresholdCache?.[`${MOCK_METRICS_ID}:persistentFlag`]; + expect(finalThreshold).toBe(initialThreshold); + expect(Object.keys(controller.state.thresholdCache ?? {})).toHaveLength( + 1, + ); + + jest.useRealTimers(); + }); + + it('does not remove cache entries for different metaMetricsId', async () => { + // Arrange + const mockFlags = { + testFlag: [ + { + name: 'group', + scope: { type: 'threshold', value: 1.0 }, + value: true, + }, + ], + }; + const clientConfigApiService = buildClientConfigApiService({ + remoteFeatureFlags: mockFlags, + }); + + // Create controller with initial state containing cache for different user + const differentUserId = 'different-user-id'; + const controller = createController({ + clientConfigApiService, + getMetaMetricsId: () => MOCK_METRICS_ID, + state: { + thresholdCache: { + [`${differentUserId}:oldFlag`]: 0.123, // Different user's cache + }, + }, + }); + + // Act - Process flags for MOCK_METRICS_ID + await controller.updateRemoteFeatureFlags(); + + // Assert - Different user's cache entry preserved + const cache = controller.state.thresholdCache ?? {}; + expect(cache[`${differentUserId}:oldFlag`]).toBe(0.123); + expect(cache[`${MOCK_METRICS_ID}:testFlag`]).toBeDefined(); + expect(Object.keys(cache)).toHaveLength(2); + }); + + it('handles empty threshold cache gracefully', async () => { + // Arrange + const mockFlags = { + newFlag: [ + { + name: 'group', + scope: { type: 'threshold', value: 1.0 }, + value: true, + }, + ], + }; + const clientConfigApiService = buildClientConfigApiService({ + remoteFeatureFlags: mockFlags, + }); + const controller = createController({ + clientConfigApiService, + getMetaMetricsId: () => MOCK_METRICS_ID, + }); + + // Act - Process with empty cache + await controller.updateRemoteFeatureFlags(); + + // Assert - Cache populated, no errors + expect( + controller.state.thresholdCache?.[`${MOCK_METRICS_ID}:newFlag`], + ).toBeDefined(); + }); + + it('batches threshold additions and cleanup in single state update', async () => { + // Arrange - Start with one cached flag + const clientConfigApiService = buildClientConfigApiService({ + remoteFeatureFlags: { + oldFlag: [ + { + name: 'group', + scope: { type: 'threshold', value: 1.0 }, + value: true, + }, + ], + }, + }); + const controller = createController({ + clientConfigApiService, + getMetaMetricsId: () => MOCK_METRICS_ID, + }); + + await controller.updateRemoteFeatureFlags(); + expect(Object.keys(controller.state.thresholdCache ?? {})).toHaveLength( + 1, + ); + + // Act - Replace oldFlag with newFlag + jest + .spyOn(clientConfigApiService, 'fetchRemoteFeatureFlags') + .mockResolvedValue({ + remoteFeatureFlags: { + newFlag: [ + { + name: 'group', + scope: { type: 'threshold', value: 1.0 }, + value: false, + }, + ], + }, + cacheTimestamp: Date.now(), + }); + + jest.useFakeTimers(); + jest.advanceTimersByTime(2 * DEFAULT_CACHE_DURATION); + await controller.updateRemoteFeatureFlags(); + + // Assert - Old removed, new added in single update + const cache = controller.state.thresholdCache ?? {}; + expect(cache[`${MOCK_METRICS_ID}:oldFlag`]).toBeUndefined(); + expect(cache[`${MOCK_METRICS_ID}:newFlag`]).toBeDefined(); + expect(Object.keys(cache)).toHaveLength(1); + + jest.useRealTimers(); + }); + + it('preserves threshold arrays when metaMetricsId is empty', async () => { + // Arrange + const mockFlags = { + thresholdFlag: [ + { + name: 'groupA', + scope: { type: 'threshold', value: 0.5 }, + value: 'A', + }, + { + name: 'groupB', + scope: { type: 'threshold', value: 1.0 }, + value: 'B', + }, + ], + }; + const clientConfigApiService = buildClientConfigApiService({ + remoteFeatureFlags: mockFlags, + }); + const controller = createController({ + clientConfigApiService, + getMetaMetricsId: () => '', // Empty metaMetricsId + }); + + // Act + await controller.updateRemoteFeatureFlags(); + + // Assert - Array preserved as-is without processing + expect(controller.state.remoteFeatureFlags.thresholdFlag).toStrictEqual( + mockFlags.thresholdFlag, + ); + }); + + it('handles flag names containing colons correctly', async () => { + // Arrange + const mockFlags = { + 'feature:v2': [ + { + name: 'group', + scope: { type: 'threshold', value: 1.0 }, + value: true, + }, + ], + }; + const clientConfigApiService = buildClientConfigApiService({ + remoteFeatureFlags: mockFlags, + }); + const controller = createController({ + clientConfigApiService, + getMetaMetricsId: () => MOCK_METRICS_ID, + }); + + // Act + await controller.updateRemoteFeatureFlags(); + + // Assert - Cache key correctly handles colon in flag name + const cache = controller.state.thresholdCache ?? {}; + expect(cache[`${MOCK_METRICS_ID}:feature:v2`]).toBeDefined(); + expect(Object.keys(cache)).toHaveLength(1); + + // Update with flag still present - should not be cleaned up + jest.useFakeTimers(); + jest.advanceTimersByTime(2 * DEFAULT_CACHE_DURATION); + await controller.updateRemoteFeatureFlags(); + + const cacheAfterUpdate = controller.state.thresholdCache ?? {}; + expect(cacheAfterUpdate[`${MOCK_METRICS_ID}:feature:v2`]).toBeDefined(); + + jest.useRealTimers(); + }); + + it('removes all stale entries when all flags are removed from server', async () => { + // Arrange + const clientConfigApiService = buildClientConfigApiService({ + remoteFeatureFlags: { + flagA: [ + { + name: 'groupA', + scope: { type: 'threshold', value: 1.0 }, + value: true, + }, + ], + flagB: [ + { + name: 'groupB', + scope: { type: 'threshold', value: 1.0 }, + value: false, + }, + ], + }, + }); + const controller = createController({ + clientConfigApiService, + getMetaMetricsId: () => MOCK_METRICS_ID, + }); + + // Act - First update populates cache + await controller.updateRemoteFeatureFlags(); + expect(Object.keys(controller.state.thresholdCache ?? {})).toHaveLength( + 2, + ); + + // Server returns empty flags + jest + .spyOn(clientConfigApiService, 'fetchRemoteFeatureFlags') + .mockResolvedValue({ + remoteFeatureFlags: {}, + cacheTimestamp: Date.now(), + }); + + jest.useFakeTimers(); + jest.advanceTimersByTime(2 * DEFAULT_CACHE_DURATION); + await controller.updateRemoteFeatureFlags(); + + // Assert - All entries removed + expect(Object.keys(controller.state.thresholdCache ?? {})).toHaveLength( + 0, + ); + + jest.useRealTimers(); + }); + }); + describe('metadata', () => { it('includes expected state in debug snapshots', () => { const controller = createController(); diff --git a/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.ts b/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.ts index 8e7e4a8e1b9..c26fddf174c 100644 --- a/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.ts +++ b/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.ts @@ -14,7 +14,7 @@ import type { FeatureFlagScopeValue, } from './remote-feature-flag-controller-types'; import { - generateDeterministicRandomNumber, + calculateThresholdForFlag, isFeatureFlagWithScopeValue, } from './utils/user-segmentation-utils'; import { isVersionFeatureFlag, getVersionData } from './utils/version'; @@ -31,6 +31,7 @@ export type RemoteFeatureFlagControllerState = { localOverrides?: FeatureFlags; rawRemoteFeatureFlags?: FeatureFlags; cacheTimestamp: number; + thresholdCache?: Record; }; const remoteFeatureFlagControllerMetadata = { @@ -58,6 +59,12 @@ const remoteFeatureFlagControllerMetadata = { includeInDebugSnapshot: true, usedInUi: false, }, + thresholdCache: { + includeInStateLogs: false, + persist: true, + includeInDebugSnapshot: false, + usedInUi: false, + }, }; // === MESSENGER === @@ -247,14 +254,40 @@ export class RemoteFeatureFlagController extends BaseController< * @param remoteFeatureFlags - The new feature flags to cache. */ async #updateCache(remoteFeatureFlags: FeatureFlags): Promise { - const processedRemoteFeatureFlags = + const { processedFlags, thresholdCacheUpdates } = await this.#processRemoteFeatureFlags(remoteFeatureFlags); + + const metaMetricsId = this.#getMetaMetricsId(); + const currentFlagNames = Object.keys(remoteFeatureFlags); + + // Build updated threshold cache + const updatedThresholdCache = { ...(this.state.thresholdCache ?? {}) }; + + // Apply new thresholds + for (const [cacheKey, threshold] of Object.entries(thresholdCacheUpdates)) { + updatedThresholdCache[cacheKey] = threshold; + } + + // Clean up stale entries + for (const cacheKey of Object.keys(updatedThresholdCache)) { + const [cachedMetaMetricsId, ...cachedFlagNameParts] = cacheKey.split(':'); + const cachedFlagName = cachedFlagNameParts.join(':'); + if ( + cachedMetaMetricsId === metaMetricsId && + !currentFlagNames.includes(cachedFlagName) + ) { + delete updatedThresholdCache[cacheKey]; + } + } + + // Single state update with all changes batched together this.update(() => { return { ...this.state, - remoteFeatureFlags: processedRemoteFeatureFlags, + remoteFeatureFlags: processedFlags, rawRemoteFeatureFlags: remoteFeatureFlags, cacheTimestamp: Date.now(), + thresholdCache: updatedThresholdCache, }; }); } @@ -273,12 +306,13 @@ export class RemoteFeatureFlagController extends BaseController< return getVersionData(flagValue, this.#clientVersion); } - async #processRemoteFeatureFlags( - remoteFeatureFlags: FeatureFlags, - ): Promise { - const processedRemoteFeatureFlags: FeatureFlags = {}; + async #processRemoteFeatureFlags(remoteFeatureFlags: FeatureFlags): Promise<{ + processedFlags: FeatureFlags; + thresholdCacheUpdates: Record; + }> { + const processedFlags: FeatureFlags = {}; const metaMetricsId = this.#getMetaMetricsId(); - const thresholdValue = generateDeterministicRandomNumber(metaMetricsId); + const thresholdCacheUpdates: Record = {}; for (const [ remoteFeatureFlagName, @@ -291,14 +325,47 @@ export class RemoteFeatureFlagController extends BaseController< continue; } - if (Array.isArray(processedValue) && thresholdValue) { + if (Array.isArray(processedValue)) { + // Validate array has valid threshold items before doing expensive crypto operation + const hasValidThresholds = processedValue.some( + isFeatureFlagWithScopeValue, + ); + + if (!hasValidThresholds) { + // Not a threshold array - preserve as-is + processedFlags[remoteFeatureFlagName] = processedValue; + continue; + } + + // Skip threshold processing if metaMetricsId is not available + if (!metaMetricsId) { + // Preserve array as-is when user hasn't opted into MetaMetrics + processedFlags[remoteFeatureFlagName] = processedValue; + continue; + } + + // Check cache first, calculate only if needed + const cacheKey = `${metaMetricsId}:${remoteFeatureFlagName}` as const; + let thresholdValue = this.state.thresholdCache?.[cacheKey]; + + if (thresholdValue === undefined) { + thresholdValue = await calculateThresholdForFlag( + metaMetricsId, + remoteFeatureFlagName, + ); + + // Collect new threshold for batched state update + thresholdCacheUpdates[cacheKey] = thresholdValue; + } + + const threshold = thresholdValue; const selectedGroup = processedValue.find( (featureFlag): featureFlag is FeatureFlagScopeValue => { if (!isFeatureFlagWithScopeValue(featureFlag)) { return false; } - return thresholdValue <= featureFlag.scope.value; + return threshold <= featureFlag.scope.value; }, ); if (selectedGroup) { @@ -309,9 +376,10 @@ export class RemoteFeatureFlagController extends BaseController< } } - processedRemoteFeatureFlags[remoteFeatureFlagName] = processedValue; + processedFlags[remoteFeatureFlagName] = processedValue; } - return processedRemoteFeatureFlags; + + return { processedFlags, thresholdCacheUpdates }; } /** diff --git a/packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.test.ts b/packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.test.ts index 757a8b7fd2a..44e0b10b321 100644 --- a/packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.test.ts +++ b/packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.test.ts @@ -1,6 +1,7 @@ import { v4 as uuidV4 } from 'uuid'; import { + calculateThresholdForFlag, generateDeterministicRandomNumber, isFeatureFlagWithScopeValue, } from './user-segmentation-utils'; @@ -41,6 +42,111 @@ const MOCK_FEATURE_FLAGS = { }; describe('user-segmentation-utils', () => { + describe('calculateThresholdForFlag', () => { + it('generates deterministic threshold from same input', async () => { + // Arrange + const metaMetricsId = 'f9e8d7c6-b5a4-4210-9876-543210fedcba'; + const flagName = 'testFlag'; + + // Act + const threshold1 = await calculateThresholdForFlag( + metaMetricsId, + flagName, + ); + const threshold2 = await calculateThresholdForFlag( + metaMetricsId, + flagName, + ); + + // Assert + expect(threshold1).toBe(threshold2); + expect(threshold1).toBeGreaterThanOrEqual(0); + expect(threshold1).toBeLessThanOrEqual(1); + }); + + it('generates different thresholds for different inputs', async () => { + // Arrange + const metaMetricsId1 = 'f9e8d7c6-b5a4-4210-9876-543210fedcba'; + const metaMetricsId2 = '123e4567-e89b-12d3-a456-426614174000'; + const flagName = 'testFlag'; + + // Act + const threshold1 = await calculateThresholdForFlag( + metaMetricsId1, + flagName, + ); + const threshold2 = await calculateThresholdForFlag( + metaMetricsId2, + flagName, + ); + + // Assert + expect(threshold1).not.toBe(threshold2); + }); + + it('generates different thresholds for different flag names', async () => { + // Arrange + const metaMetricsId = 'f9e8d7c6-b5a4-4210-9876-543210fedcba'; + const flagName1 = 'featureA'; + const flagName2 = 'featureB'; + + // Act + const threshold1 = await calculateThresholdForFlag( + metaMetricsId, + flagName1, + ); + const threshold2 = await calculateThresholdForFlag( + metaMetricsId, + flagName2, + ); + + // Assert + expect(threshold1).not.toBe(threshold2); + expect(threshold1).toBeGreaterThanOrEqual(0); + expect(threshold1).toBeLessThanOrEqual(1); + expect(threshold2).toBeGreaterThanOrEqual(0); + expect(threshold2).toBeLessThanOrEqual(1); + }); + + it('returns a valid threshold value between 0 and 1', async () => { + // Arrange + const metaMetricsId = 'f9e8d7c6-b5a4-4210-9876-543210fedcba'; + const flagName = 'anyFlagName123'; + + // Act + const threshold = await calculateThresholdForFlag( + metaMetricsId, + flagName, + ); + + // Assert + expect(threshold).toBeGreaterThanOrEqual(0); + expect(threshold).toBeLessThanOrEqual(1); + }); + + it('throws error when metaMetricsId is empty', async () => { + // Arrange + const emptyMetaMetricsId = ''; + const flagName = 'testFlag'; + + // Act & Assert + await expect( + calculateThresholdForFlag(emptyMetaMetricsId, flagName), + ).rejects.toThrow('MetaMetrics ID cannot be empty'); + }); + + it('throws error when featureFlagName is empty', async () => { + // Arrange + const metaMetricsId = 'f9e8d7c6-b5a4-4210-9876-543210fedcba'; + const emptyFlagName = ''; + + // Act & Assert + await expect( + calculateThresholdForFlag(metaMetricsId, emptyFlagName), + ).rejects.toThrow('Feature flag name cannot be empty'); + }); + }); + describe('generateDeterministicRandomNumber', () => { describe('Mobile client new implementation (uuidv4)', () => { it('generates consistent results for same uuidv4', () => { diff --git a/packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.ts b/packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.ts index 07519d03ce3..f2f48773105 100644 --- a/packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.ts +++ b/packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.ts @@ -1,4 +1,5 @@ import type { Json } from '@metamask/utils'; +import { sha256, bytesToHex } from '@metamask/utils'; import { validate as uuidValidate, version as uuidVersion } from 'uuid'; import type { FeatureFlagScopeValue } from '../remote-feature-flag-controller-types'; @@ -19,6 +20,43 @@ const MIN_UUID_V4_BIGINT = uuidStringToBigInt(MIN_UUID_V4); const MAX_UUID_V4_BIGINT = uuidStringToBigInt(MAX_UUID_V4); const UUID_V4_VALUE_RANGE_BIGINT = MAX_UUID_V4_BIGINT - MIN_UUID_V4_BIGINT; +/** + * Calculates a deterministic threshold value between 0 and 1 for A/B testing. + * This function hashes the user's MetaMetrics ID combined with the feature flag name + * to ensure consistent group assignment across sessions while varying across different flags. + * + * @param metaMetricsId - The user's MetaMetrics ID (must be non-empty) + * @param featureFlagName - The feature flag name to create unique threshold per flag + * @returns A promise that resolves to a number between 0 and 1 + * @throws Error if metaMetricsId is empty + */ +export async function calculateThresholdForFlag( + metaMetricsId: string, + featureFlagName: string, +): Promise { + if (!metaMetricsId) { + throw new Error('MetaMetrics ID cannot be empty'); + } + + if (!featureFlagName) { + throw new Error('Feature flag name cannot be empty'); + } + + const seed = metaMetricsId + featureFlagName; + + // Hash the combined seed + const encoder = new TextEncoder(); + const hashBuffer = await sha256(encoder.encode(seed)); + + // Convert hash bytes directly to 0-1 range + const hash = bytesToHex(hashBuffer); + const hashBigInt = BigInt(hash); + const maxValue = BigInt(`0x${'f'.repeat(64)}`); + + // Use BigInt division first, then convert to number to maintain precision + return Number((hashBigInt * BigInt(1_000_000)) / maxValue) / 1_000_000; +} + /** * Generates a deterministic random number between 0 and 1 based on a metaMetricsId. * This is useful for A/B testing and feature flag rollouts where we want diff --git a/packages/sample-controllers/CHANGELOG.md b/packages/sample-controllers/CHANGELOG.md index 36cddd1a465..c6875bacc8b 100644 --- a/packages/sample-controllers/CHANGELOG.md +++ b/packages/sample-controllers/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Move peer dependencies for controller and service packages to direct dependencies ([#7209](https://github.com/MetaMask/core/pull/7209), [#7258](https://github.com/MetaMask/core/pull/7258), [#7534](https://github.com/MetaMask/core/pull/7534)) - The dependencies moved are: - `@metamask/network-controller` (^27.1.0) diff --git a/packages/sample-controllers/package.json b/packages/sample-controllers/package.json index cd7449b190a..573b0ae9ea9 100644 --- a/packages/sample-controllers/package.json +++ b/packages/sample-controllers/package.json @@ -51,7 +51,7 @@ "@metamask/base-controller": "^9.0.0", "@metamask/messenger": "^0.3.0", "@metamask/network-controller": "^27.1.0", - "@metamask/utils": "^11.8.1" + "@metamask/utils": "^11.9.0" }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", diff --git a/packages/seedless-onboarding-controller/CHANGELOG.md b/packages/seedless-onboarding-controller/CHANGELOG.md index 7b5a2124084..c533b364642 100644 --- a/packages/seedless-onboarding-controller/CHANGELOG.md +++ b/packages/seedless-onboarding-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) + ## [7.1.0] ### Added diff --git a/packages/seedless-onboarding-controller/package.json b/packages/seedless-onboarding-controller/package.json index c2086a1db29..7438b54071b 100644 --- a/packages/seedless-onboarding-controller/package.json +++ b/packages/seedless-onboarding-controller/package.json @@ -54,7 +54,7 @@ "@metamask/keyring-controller": "^25.0.0", "@metamask/messenger": "^0.3.0", "@metamask/toprf-secure-backup": "^0.11.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "@noble/ciphers": "^1.3.0", "@noble/curves": "^1.9.2", "@noble/hashes": "^1.8.0", diff --git a/packages/selected-network-controller/CHANGELOG.md b/packages/selected-network-controller/CHANGELOG.md index 29baf758410..92df8eb9e06 100644 --- a/packages/selected-network-controller/CHANGELOG.md +++ b/packages/selected-network-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Move peer dependencies for controller and service packages to direct dependencies ([#7209](https://github.com/MetaMask/core/pull/7209), [#7258](https://github.com/MetaMask/core/pull/7258), [#7534](https://github.com/MetaMask/core/pull/7534)) - The dependencies moved are: - `@metamask/network-controller` (^27.1.0) diff --git a/packages/selected-network-controller/package.json b/packages/selected-network-controller/package.json index 5557500c8b2..9643b8bbb52 100644 --- a/packages/selected-network-controller/package.json +++ b/packages/selected-network-controller/package.json @@ -54,7 +54,7 @@ "@metamask/network-controller": "^27.1.0", "@metamask/permission-controller": "^12.1.1", "@metamask/swappable-obj-proxy": "^2.3.0", - "@metamask/utils": "^11.8.1" + "@metamask/utils": "^11.9.0" }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", diff --git a/packages/shield-controller/CHANGELOG.md b/packages/shield-controller/CHANGELOG.md index c3fc65925cd..956ded72f23 100644 --- a/packages/shield-controller/CHANGELOG.md +++ b/packages/shield-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Bump `@metamask/transaction-controller` from `^62.5.0` to `^62.7.0` ([#7430](https://github.com/MetaMask/core/pull/7430), [#7494](https://github.com/MetaMask/core/pull/7494)) - Bump `@metamask/controller-utils` from `^11.16.0` to `^11.17.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) diff --git a/packages/shield-controller/package.json b/packages/shield-controller/package.json index cd316841f4f..8b6841b6c68 100644 --- a/packages/shield-controller/package.json +++ b/packages/shield-controller/package.json @@ -53,7 +53,7 @@ "@metamask/messenger": "^0.3.0", "@metamask/signature-controller": "^38.0.0", "@metamask/transaction-controller": "^62.7.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "cockatiel": "^3.1.2" }, "devDependencies": { diff --git a/packages/signature-controller/CHANGELOG.md b/packages/signature-controller/CHANGELOG.md index 6500b6e6495..fe010978ad4 100644 --- a/packages/signature-controller/CHANGELOG.md +++ b/packages/signature-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Bump `@metamask/network-controller` from `^27.0.0` to `^27.1.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) - Bump `@metamask/controller-utils` from `^11.16.0` to `^11.17.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) diff --git a/packages/signature-controller/package.json b/packages/signature-controller/package.json index 5c606aca2ff..df975281de2 100644 --- a/packages/signature-controller/package.json +++ b/packages/signature-controller/package.json @@ -58,7 +58,7 @@ "@metamask/logging-controller": "^7.0.1", "@metamask/messenger": "^0.3.0", "@metamask/network-controller": "^27.1.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "jsonschema": "^1.4.1", "lodash": "^4.17.21", "uuid": "^8.3.2" diff --git a/packages/storage-service/CHANGELOG.md b/packages/storage-service/CHANGELOG.md index 383c85e80be..6daf08f05bd 100644 --- a/packages/storage-service/CHANGELOG.md +++ b/packages/storage-service/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) + ## [0.0.1] ### Added diff --git a/packages/storage-service/package.json b/packages/storage-service/package.json index ac662de8ab1..d5bababc6de 100644 --- a/packages/storage-service/package.json +++ b/packages/storage-service/package.json @@ -49,7 +49,7 @@ }, "dependencies": { "@metamask/messenger": "^0.3.0", - "@metamask/utils": "^11.8.1" + "@metamask/utils": "^11.9.0" }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", diff --git a/packages/subscription-controller/CHANGELOG.md b/packages/subscription-controller/CHANGELOG.md index 70760e0f233..c5a772a44d8 100644 --- a/packages/subscription-controller/CHANGELOG.md +++ b/packages/subscription-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Bump `@metamask/transaction-controller` from `^62.4.0` to `^62.7.0` ([#7325](https://github.com/MetaMask/core/pull/7325), [#7430](https://github.com/MetaMask/core/pull/7430), [#7494](https://github.com/MetaMask/core/pull/7494)) - Bump `@metamask/controller-utils` from `^11.16.0` to `^11.17.0` ([#7534](https://github.com/MetaMask/core/pull/7534)) diff --git a/packages/subscription-controller/package.json b/packages/subscription-controller/package.json index ab2cc77a8de..9090b923b96 100644 --- a/packages/subscription-controller/package.json +++ b/packages/subscription-controller/package.json @@ -54,7 +54,7 @@ "@metamask/polling-controller": "^16.0.0", "@metamask/profile-sync-controller": "^27.0.0", "@metamask/transaction-controller": "^62.7.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "bignumber.js": "^9.1.2" }, "devDependencies": { diff --git a/packages/token-search-discovery-controller/CHANGELOG.md b/packages/token-search-discovery-controller/CHANGELOG.md index 661344abcc7..2f10ca10e6f 100644 --- a/packages/token-search-discovery-controller/CHANGELOG.md +++ b/packages/token-search-discovery-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) + ## [4.0.0] ### Changed diff --git a/packages/token-search-discovery-controller/package.json b/packages/token-search-discovery-controller/package.json index 3fffc07a135..4e58bbaef3d 100644 --- a/packages/token-search-discovery-controller/package.json +++ b/packages/token-search-discovery-controller/package.json @@ -50,7 +50,7 @@ "dependencies": { "@metamask/base-controller": "^9.0.0", "@metamask/messenger": "^0.3.0", - "@metamask/utils": "^11.8.1" + "@metamask/utils": "^11.9.0" }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", diff --git a/packages/transaction-controller/CHANGELOG.md b/packages/transaction-controller/CHANGELOG.md index 34e0fd85f32..1a4330fa313 100644 --- a/packages/transaction-controller/CHANGELOG.md +++ b/packages/transaction-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Update transaction timeout to check time since submission or when transaction was last seen on network ([#7464](https://github.com/MetaMask/core/pull/7464)) - Uses `blockTime` from `acceleratedPolling` feature flag. - Deprecate `history` and `sendFlowHistory` properties from `TransactionMeta` and `TransactionController` options ([#7326](https://github.com/MetaMask/core/pull/7326)) diff --git a/packages/transaction-controller/package.json b/packages/transaction-controller/package.json index d286a74d85e..abcef24098f 100644 --- a/packages/transaction-controller/package.json +++ b/packages/transaction-controller/package.json @@ -67,7 +67,7 @@ "@metamask/nonce-tracker": "^6.0.0", "@metamask/remote-feature-flag-controller": "^3.1.0", "@metamask/rpc-errors": "^7.0.2", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "async-mutex": "^0.5.0", "bignumber.js": "^9.1.2", "bn.js": "^5.2.1", diff --git a/packages/transaction-pay-controller/CHANGELOG.md b/packages/transaction-pay-controller/CHANGELOG.md index 81ccb094592..78fbd5c5550 100644 --- a/packages/transaction-pay-controller/CHANGELOG.md +++ b/packages/transaction-pay-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Poll relay status using static URL ([#7535](https://github.com/MetaMask/core/pull/7535)) - Bump `@metamask/assets-controllers` from `^93.1.0` to `^94.1.0` ([#7444](https://github.com/MetaMask/core/pull/7444), [#7488](https://github.com/MetaMask/core/pull/7488)) - Bump `@metamask/transaction-controller` from `^62.6.0` to `^62.7.0` ([#7494](https://github.com/MetaMask/core/pull/7494)) diff --git a/packages/transaction-pay-controller/package.json b/packages/transaction-pay-controller/package.json index c956680b7bb..b4f947242de 100644 --- a/packages/transaction-pay-controller/package.json +++ b/packages/transaction-pay-controller/package.json @@ -62,7 +62,7 @@ "@metamask/network-controller": "^27.1.0", "@metamask/remote-feature-flag-controller": "^3.1.0", "@metamask/transaction-controller": "^62.7.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "bignumber.js": "^9.1.2", "bn.js": "^5.2.1", "immer": "^9.0.6", diff --git a/packages/user-operation-controller/CHANGELOG.md b/packages/user-operation-controller/CHANGELOG.md index 35265def860..fe2c15169d8 100644 --- a/packages/user-operation-controller/CHANGELOG.md +++ b/packages/user-operation-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) - Move peer dependencies for controller and service packages to direct dependencies ([#7209](https://github.com/MetaMask/core/pull/7209), [#7220](https://github.com/MetaMask/core/pull/7220), [#7236](https://github.com/MetaMask/core/pull/7236), [#7257](https://github.com/MetaMask/core/pull/7257), [#7258](https://github.com/MetaMask/core/pull/7258), [#7289](https://github.com/MetaMask/core/pull/7289), [#7325](https://github.com/MetaMask/core/pull/7325), [#7430](https://github.com/MetaMask/core/pull/7430), [#7494](https://github.com/MetaMask/core/pull/7494), [#7534](https://github.com/MetaMask/core/pull/7534)) - The dependencies moved are: - `@metamask/approval-controller` (^8.0.0) diff --git a/packages/user-operation-controller/package.json b/packages/user-operation-controller/package.json index 8fd47827430..6cd85744577 100644 --- a/packages/user-operation-controller/package.json +++ b/packages/user-operation-controller/package.json @@ -61,7 +61,7 @@ "@metamask/rpc-errors": "^7.0.2", "@metamask/superstruct": "^3.1.0", "@metamask/transaction-controller": "^62.7.0", - "@metamask/utils": "^11.8.1", + "@metamask/utils": "^11.9.0", "bn.js": "^5.2.1", "immer": "^9.0.6", "lodash": "^4.17.21", diff --git a/yarn.lock b/yarn.lock index b6dc7425ae3..615374c8415 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2434,7 +2434,7 @@ __metadata: "@metamask/snaps-sdk": "npm:^9.0.0" "@metamask/snaps-utils": "npm:^11.0.0" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -2472,7 +2472,7 @@ __metadata: "@metamask/snaps-sdk": "npm:^9.0.0" "@metamask/snaps-utils": "npm:^11.0.0" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" "@types/readable-stream": "npm:^2.3.0" @@ -2512,7 +2512,7 @@ __metadata: "@metamask/base-controller": "npm:^9.0.0" "@metamask/controller-utils": "npm:^11.17.0" "@metamask/messenger": "npm:^0.3.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -2531,7 +2531,7 @@ __metadata: "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/base-controller": "npm:^9.0.0" "@metamask/messenger": "npm:^0.3.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -2607,7 +2607,7 @@ __metadata: "@metamask/base-controller": "npm:^9.0.0" "@metamask/messenger": "npm:^0.3.0" "@metamask/rpc-errors": "npm:^7.0.2" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -2663,7 +2663,7 @@ __metadata: "@metamask/snaps-sdk": "npm:^9.0.0" "@metamask/snaps-utils": "npm:^11.0.0" "@metamask/transaction-controller": "npm:^62.7.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/bn.js": "npm:^5.1.5" "@types/jest": "npm:^27.4.1" @@ -2778,7 +2778,7 @@ __metadata: "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/json-rpc-engine": "npm:^10.2.0" "@metamask/messenger": "npm:^0.3.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" "@types/sinon": "npm:^9.0.10" @@ -2819,7 +2819,7 @@ __metadata: "@metamask/snaps-controllers": "npm:^14.0.1" "@metamask/superstruct": "npm:^3.1.0" "@metamask/transaction-controller": "npm:^62.7.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" bignumber.js: "npm:^9.1.2" @@ -2852,7 +2852,7 @@ __metadata: "@metamask/snaps-controllers": "npm:^14.0.1" "@metamask/superstruct": "npm:^3.1.0" "@metamask/transaction-controller": "npm:^62.7.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" bignumber.js: "npm:^9.1.2" @@ -2883,7 +2883,7 @@ __metadata: resolution: "@metamask/build-utils@workspace:packages/build-utils" dependencies: "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/eslint": "npm:^8.44.7" "@types/jest": "npm:^27.4.1" @@ -2907,7 +2907,7 @@ __metadata: "@metamask/network-controller": "npm:^27.1.0" "@metamask/permission-controller": "npm:^12.1.1" "@metamask/rpc-errors": "npm:^7.0.2" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -2930,7 +2930,7 @@ __metadata: "@metamask/keyring-controller": "npm:^25.0.0" "@metamask/messenger": "npm:^0.3.0" "@metamask/profile-sync-controller": "npm:^27.0.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -2978,7 +2978,7 @@ __metadata: "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/eth-query": "npm:^4.0.0" "@metamask/ethjs-unit": "npm:^0.3.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@spruceid/siwe-parser": "npm:2.1.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/bn.js": "npm:^5.1.5" @@ -3014,7 +3014,7 @@ __metadata: "@metamask/keyring-controller": "npm:^25.0.0" "@metamask/messenger": "npm:^0.3.0" "@metamask/profile-sync-controller": "npm:^27.0.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -3046,7 +3046,7 @@ __metadata: "@metamask/eth-json-rpc-provider": "npm:^6.0.0" "@metamask/json-rpc-engine": "npm:^10.2.0" "@metamask/network-controller": "npm:^27.1.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" "@types/lodash": "npm:^4.14.191" @@ -3119,7 +3119,7 @@ __metadata: "@metamask/base-controller": "npm:^9.0.0" "@metamask/keyring-controller": "npm:^25.0.0" "@metamask/messenger": "npm:^0.3.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -3186,7 +3186,7 @@ __metadata: "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/superstruct": "npm:^3.1.0" "@metamask/transaction-controller": "npm:^62.7.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -3209,7 +3209,7 @@ __metadata: "@metamask/controller-utils": "npm:^11.17.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -3231,7 +3231,7 @@ __metadata: "@metamask/json-rpc-engine": "npm:^10.2.0" "@metamask/permission-controller": "npm:^12.1.1" "@metamask/rpc-errors": "npm:^7.0.2" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -3254,7 +3254,7 @@ __metadata: "@metamask/controller-utils": "npm:^11.17.0" "@metamask/messenger": "npm:^0.3.0" "@metamask/network-controller": "npm:^27.1.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -3357,7 +3357,7 @@ __metadata: "@metamask/eth-json-rpc-provider": "npm:^6.0.0" "@metamask/json-rpc-engine": "npm:^10.2.0" "@metamask/safe-event-emitter": "npm:^3.0.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" "@types/json-rpc-random-id": "npm:^1.0.1" @@ -3425,7 +3425,7 @@ __metadata: "@metamask/network-controller": "npm:^27.1.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/deep-freeze-strict": "npm:^1.1.0" "@types/jest": "npm:^27.4.1" @@ -3465,7 +3465,7 @@ __metadata: "@metamask/ethjs-query": "npm:^0.5.3" "@metamask/json-rpc-engine": "npm:^10.2.0" "@metamask/rpc-errors": "npm:^7.0.2" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -3723,7 +3723,7 @@ __metadata: "@metamask/ethjs-unit": "npm:^0.3.0" "@metamask/network-controller": "npm:^27.1.0" "@metamask/polling-controller": "npm:^16.0.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/bn.js": "npm:^5.1.5" "@types/jest": "npm:^27.4.1" @@ -3761,7 +3761,7 @@ __metadata: "@metamask/snaps-sdk": "npm:^9.0.0" "@metamask/snaps-utils": "npm:^11.0.0" "@metamask/transaction-controller": "npm:^62.7.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -3782,7 +3782,7 @@ __metadata: "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/safe-event-emitter": "npm:^3.0.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/deep-freeze-strict": "npm:^1.1.0" "@types/jest": "npm:^27.4.1" @@ -3804,7 +3804,7 @@ __metadata: "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/json-rpc-engine": "npm:^10.2.0" "@metamask/safe-event-emitter": "npm:^3.0.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" "@types/readable-stream": "npm:^2.3.0" @@ -3866,7 +3866,7 @@ __metadata: "@metamask/keyring-utils": "npm:^3.1.0" "@metamask/messenger": "npm:^0.3.0" "@metamask/scure-bip39": "npm:^2.1.1" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" async-mutex: "npm:^0.5.0" @@ -3983,7 +3983,7 @@ __metadata: "@metamask/controller-utils": "npm:^11.17.0" "@metamask/eth-sig-util": "npm:^8.2.0" "@metamask/messenger": "npm:^0.3.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" "@types/uuid": "npm:^8.3.0" @@ -4047,7 +4047,7 @@ __metadata: "@metamask/snaps-sdk": "npm:^9.0.0" "@metamask/snaps-utils": "npm:^11.0.0" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" "@types/uuid": "npm:^8.3.0" @@ -4082,7 +4082,7 @@ __metadata: "@metamask/permission-controller": "npm:^12.1.1" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/safe-event-emitter": "npm:^3.0.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@open-rpc/meta-schema": "npm:^1.14.6" "@open-rpc/schema-utils-js": "npm:^2.0.5" "@ts-bridge/cli": "npm:^0.6.4" @@ -4111,7 +4111,7 @@ __metadata: "@metamask/messenger": "npm:^0.3.0" "@metamask/network-controller": "npm:^27.1.0" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@solana/addresses": "npm:^2.0.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" @@ -4145,7 +4145,7 @@ __metadata: "@metamask/snaps-controllers": "npm:^14.0.1" "@metamask/snaps-sdk": "npm:^9.0.0" "@metamask/snaps-utils": "npm:^11.0.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" "@types/uuid": "npm:^8.3.0" @@ -4168,7 +4168,7 @@ __metadata: "@metamask/base-controller": "npm:^9.0.0" "@metamask/controller-utils": "npm:^11.17.0" "@metamask/messenger": "npm:^0.3.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" async-mutex: "npm:^0.5.0" @@ -4199,7 +4199,7 @@ __metadata: "@metamask/messenger": "npm:^0.3.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/swappable-obj-proxy": "npm:^2.3.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/deep-freeze-strict": "npm:^1.1.0" "@types/jest": "npm:^27.4.1" @@ -4241,7 +4241,7 @@ __metadata: "@metamask/multichain-network-controller": "npm:^3.0.0" "@metamask/network-controller": "npm:^27.1.0" "@metamask/transaction-controller": "npm:^62.7.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -4280,7 +4280,7 @@ __metadata: "@metamask/keyring-controller": "npm:^25.0.0" "@metamask/messenger": "npm:^0.3.0" "@metamask/profile-sync-controller": "npm:^27.0.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" "@types/readable-stream": "npm:^2.3.0" @@ -4352,7 +4352,7 @@ __metadata: "@metamask/json-rpc-engine": "npm:^10.2.0" "@metamask/messenger": "npm:^0.3.0" "@metamask/rpc-errors": "npm:^7.0.2" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/deep-freeze-strict": "npm:^1.1.0" "@types/jest": "npm:^27.4.1" @@ -4376,7 +4376,7 @@ __metadata: "@metamask/base-controller": "npm:^9.0.0" "@metamask/json-rpc-engine": "npm:^10.2.0" "@metamask/messenger": "npm:^0.3.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/deep-freeze-strict": "npm:^1.1.0" "@types/jest": "npm:^27.4.1" @@ -4441,7 +4441,7 @@ __metadata: "@metamask/base-controller": "npm:^9.0.0" "@metamask/controller-utils": "npm:^11.17.0" "@metamask/network-controller": "npm:^27.1.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" "@types/uuid": "npm:^8.3.0" @@ -4476,7 +4476,7 @@ __metadata: "@metamask/controller-utils": "npm:^11.17.0" "@metamask/keyring-controller": "npm:^25.0.0" "@metamask/messenger": "npm:^0.3.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -4502,7 +4502,7 @@ __metadata: "@metamask/messenger": "npm:^0.3.0" "@metamask/polling-controller": "npm:^16.0.0" "@metamask/profile-sync-controller": "npm:^27.0.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" async-mutex: "npm:^0.5.0" @@ -4534,7 +4534,7 @@ __metadata: "@metamask/snaps-controllers": "npm:^14.0.1" "@metamask/snaps-sdk": "npm:^9.0.0" "@metamask/snaps-utils": "npm:^11.0.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@noble/ciphers": "npm:^1.3.0" "@noble/hashes": "npm:^1.8.0" "@ts-bridge/cli": "npm:^0.6.4" @@ -4610,7 +4610,7 @@ __metadata: "@metamask/base-controller": "npm:^9.0.0" "@metamask/messenger": "npm:^0.3.0" "@metamask/rpc-errors": "npm:^7.0.2" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -4631,7 +4631,7 @@ __metadata: "@metamask/base-controller": "npm:^9.0.0" "@metamask/controller-utils": "npm:^11.17.0" "@metamask/messenger": "npm:^0.3.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -4671,7 +4671,7 @@ __metadata: "@metamask/controller-utils": "npm:^11.17.0" "@metamask/messenger": "npm:^0.3.0" "@metamask/network-controller": "npm:^27.1.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -4708,7 +4708,7 @@ __metadata: "@metamask/keyring-controller": "npm:^25.0.0" "@metamask/messenger": "npm:^0.3.0" "@metamask/toprf-secure-backup": "npm:^0.11.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@noble/ciphers": "npm:^1.3.0" "@noble/curves": "npm:^1.9.2" "@noble/hashes": "npm:^1.8.0" @@ -4739,7 +4739,7 @@ __metadata: "@metamask/network-controller": "npm:^27.1.0" "@metamask/permission-controller": "npm:^12.1.1" "@metamask/swappable-obj-proxy": "npm:^2.3.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -4768,7 +4768,7 @@ __metadata: "@metamask/messenger": "npm:^0.3.0" "@metamask/signature-controller": "npm:^38.0.0" "@metamask/transaction-controller": "npm:^62.7.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" cockatiel: "npm:^3.1.2" @@ -4798,7 +4798,7 @@ __metadata: "@metamask/logging-controller": "npm:^7.0.1" "@metamask/messenger": "npm:^0.3.0" "@metamask/network-controller": "npm:^27.1.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -4947,7 +4947,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/messenger": "npm:^0.3.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -4970,7 +4970,7 @@ __metadata: "@metamask/polling-controller": "npm:^16.0.0" "@metamask/profile-sync-controller": "npm:^27.0.0" "@metamask/transaction-controller": "npm:^62.7.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" bignumber.js: "npm:^9.1.2" @@ -5005,7 +5005,7 @@ __metadata: "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/base-controller": "npm:^9.0.0" "@metamask/messenger": "npm:^0.3.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -5064,7 +5064,7 @@ __metadata: "@metamask/nonce-tracker": "npm:^6.0.0" "@metamask/remote-feature-flag-controller": "npm:^3.1.0" "@metamask/rpc-errors": "npm:^7.0.2" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/bn.js": "npm:^5.1.5" "@types/jest": "npm:^27.4.1" @@ -5109,7 +5109,7 @@ __metadata: "@metamask/network-controller": "npm:^27.1.0" "@metamask/remote-feature-flag-controller": "npm:^3.1.0" "@metamask/transaction-controller": "npm:^62.7.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" bignumber.js: "npm:^9.1.2" @@ -5143,7 +5143,7 @@ __metadata: "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/superstruct": "npm:^3.1.0" "@metamask/transaction-controller": "npm:^62.7.0" - "@metamask/utils": "npm:^11.8.1" + "@metamask/utils": "npm:^11.9.0" "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^27.4.1" bn.js: "npm:^5.2.1" @@ -5161,9 +5161,9 @@ __metadata: languageName: unknown linkType: soft -"@metamask/utils@npm:^11.0.1, @metamask/utils@npm:^11.1.0, @metamask/utils@npm:^11.4.0, @metamask/utils@npm:^11.8.1": - version: 11.8.1 - resolution: "@metamask/utils@npm:11.8.1" +"@metamask/utils@npm:^11.0.1, @metamask/utils@npm:^11.1.0, @metamask/utils@npm:^11.4.0, @metamask/utils@npm:^11.8.1, @metamask/utils@npm:^11.9.0": + version: 11.9.0 + resolution: "@metamask/utils@npm:11.9.0" dependencies: "@ethereumjs/tx": "npm:^4.2.0" "@metamask/superstruct": "npm:^3.1.0" @@ -5176,7 +5176,7 @@ __metadata: pony-cause: "npm:^2.1.10" semver: "npm:^7.5.4" uuid: "npm:^9.0.1" - checksum: 10/efd3aab7f86b4a74d396cf1d5fc76e748ff78906802fdc15ec9ce2d1a9bd6b035e8e036ea93eb6b9ea33782c70adb9000772eb7a5e0164e8e9e2ebb077dca3ab + checksum: 10/f8f5e99ba6c6de0395ed4e0acc82ee9c0dca26991ea6a8f10b3896e72745790966a8eded8c42be905d9f01fa99c1fd29a7f68541e2ef9854fc14984a0b514ad3 languageName: node linkType: hard