From 7ac23a6505db312a079ef17a0b06678c85d05e10 Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Fri, 14 Feb 2025 23:05:43 +0000 Subject: [PATCH 01/19] Align versions --- packages/accounts-controller/package.json | 2 +- packages/accounts-controller/src/utils.ts | 4 ++-- packages/assets-controllers/package.json | 2 +- .../src/Standards/ERC20Standard.ts | 6 +++--- packages/controller-utils/package.json | 2 +- packages/keyring-controller/package.json | 6 +++--- .../keyring-controller/src/KeyringController.ts | 10 ++++++---- packages/transaction-controller/package.json | 2 +- yarn.config.cjs | 3 --- yarn.lock | 14 +++++++------- 10 files changed, 25 insertions(+), 26 deletions(-) diff --git a/packages/accounts-controller/package.json b/packages/accounts-controller/package.json index 0c6c3f7ac29..be10b1e72b8 100644 --- a/packages/accounts-controller/package.json +++ b/packages/accounts-controller/package.json @@ -47,7 +47,7 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@ethereumjs/util": "^8.1.0", + "@ethereumjs/util": "^9.1.0", "@metamask/base-controller": "^8.0.0", "@metamask/eth-snap-keyring": "^10.0.0", "@metamask/keyring-api": "^17.0.0", diff --git a/packages/accounts-controller/src/utils.ts b/packages/accounts-controller/src/utils.ts index 3562df9b566..0c4e89a0662 100644 --- a/packages/accounts-controller/src/utils.ts +++ b/packages/accounts-controller/src/utils.ts @@ -1,5 +1,5 @@ -import { toBuffer } from '@ethereumjs/util'; import { isCustodyKeyring, KeyringTypes } from '@metamask/keyring-controller'; +import { hexToBytes } from '@metamask/utils'; import { sha256 } from 'ethereum-cryptography/sha256'; import type { V4Options } from 'uuid'; import { v4 as uuid } from 'uuid'; @@ -58,7 +58,7 @@ export function getUUIDOptionsFromAddressOfNormalAccount( address: string, ): V4Options { const v4options = { - random: sha256(toBuffer(address)).slice(0, 16), + random: sha256(hexToBytes(address)).slice(0, 16), }; return v4options; diff --git a/packages/assets-controllers/package.json b/packages/assets-controllers/package.json index fb14e6e63b2..c2343eddc2c 100644 --- a/packages/assets-controllers/package.json +++ b/packages/assets-controllers/package.json @@ -47,7 +47,7 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@ethereumjs/util": "^8.1.0", + "@ethereumjs/util": "^9.1.0", "@ethersproject/abi": "^5.7.0", "@ethersproject/address": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", diff --git a/packages/assets-controllers/src/Standards/ERC20Standard.ts b/packages/assets-controllers/src/Standards/ERC20Standard.ts index 9eadcd78b06..0015f0d8bff 100644 --- a/packages/assets-controllers/src/Standards/ERC20Standard.ts +++ b/packages/assets-controllers/src/Standards/ERC20Standard.ts @@ -1,10 +1,10 @@ -import { toUtf8 } from '@ethereumjs/util'; +import { bytesToUtf8 } from '@ethereumjs/util'; import { Contract } from '@ethersproject/contracts'; import type { Web3Provider } from '@ethersproject/providers'; import { decodeSingle } from '@metamask/abi-utils'; import { ERC20 } from '@metamask/controller-utils'; import { abiERC20 } from '@metamask/metamask-eth-abis'; -import { assertIsStrictHexString } from '@metamask/utils'; +import { assertIsStrictHexString, hexToBytes } from '@metamask/utils'; import type BN from 'bn.js'; import { ethersBigNumberToBN } from '../assetsUtil'; @@ -98,7 +98,7 @@ export class ERC20Standard { // Parse as bytes - treat empty string as failure try { - const utf8 = toUtf8(result); + const utf8 = bytesToUtf8(hexToBytes(result)); if (utf8.length > 0) { return utf8; } diff --git a/packages/controller-utils/package.json b/packages/controller-utils/package.json index f40c65dd1b5..5e82205357f 100644 --- a/packages/controller-utils/package.json +++ b/packages/controller-utils/package.json @@ -47,7 +47,7 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@ethereumjs/util": "^8.1.0", + "@ethereumjs/util": "^9.1.0", "@metamask/eth-query": "^4.0.0", "@metamask/ethjs-unit": "^0.3.0", "@metamask/utils": "^11.1.0", diff --git a/packages/keyring-controller/package.json b/packages/keyring-controller/package.json index 406e12d3ad8..6e5a53f8ded 100644 --- a/packages/keyring-controller/package.json +++ b/packages/keyring-controller/package.json @@ -47,7 +47,7 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@ethereumjs/util": "^8.1.0", + "@ethereumjs/util": "^9.1.0", "@keystonehq/metamask-airgapped-keyring": "^0.14.1", "@metamask/base-controller": "^8.0.0", "@metamask/browser-passworder": "^4.3.0", @@ -63,8 +63,8 @@ "immer": "^9.0.6" }, "devDependencies": { - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/tx": "^4.2.0", + "@ethereumjs/common": "^4.4.0", + "@ethereumjs/tx": "^5.4.0", "@keystonehq/bc-ur-registry-eth": "^0.19.0", "@lavamoat/allow-scripts": "^3.0.4", "@lavamoat/preinstall-always-fail": "^2.1.0", diff --git a/packages/keyring-controller/src/KeyringController.ts b/packages/keyring-controller/src/KeyringController.ts index d28b07ce93c..fffc6177e27 100644 --- a/packages/keyring-controller/src/KeyringController.ts +++ b/packages/keyring-controller/src/KeyringController.ts @@ -1,5 +1,5 @@ -import type { TxData, TypedTransaction } from '@ethereumjs/tx'; -import { isValidPrivate, toBuffer, getBinarySize } from '@ethereumjs/util'; +import type { TypedTransaction, TypedTxData } from '@ethereumjs/tx'; +import { isValidPrivate, getBinarySize } from '@ethereumjs/util'; import type { MetaMaskKeyring as QRKeyring, IKeyringState as IQRKeyringState, @@ -33,6 +33,7 @@ import { assertIsStrictHexString, bytesToHex, hasProperty, + hexToBytes, isObject, isStrictHexString, isValidHexAddress, @@ -1008,7 +1009,7 @@ export class KeyringController extends BaseController< let bufferedPrivateKey; try { - bufferedPrivateKey = toBuffer(prefixed); + bufferedPrivateKey = hexToBytes(prefixed); } catch { throw new Error('Cannot import invalid private key.'); } @@ -1213,7 +1214,7 @@ export class KeyringController extends BaseController< transaction: TypedTransaction, from: string, opts?: Record, - ): Promise { + ): Promise { this.#assertIsUnlocked(); const address = ethNormalize(from) as Hex; const keyring = (await this.getKeyringForAccount( @@ -1223,6 +1224,7 @@ export class KeyringController extends BaseController< throw new Error(KeyringControllerError.UnsupportedSignTransaction); } + // @ts-expect-error Upgrade keyring package return await keyring.signTransaction(address, transaction, opts); } diff --git a/packages/transaction-controller/package.json b/packages/transaction-controller/package.json index bf16e5a4b8d..fe00b5625a3 100644 --- a/packages/transaction-controller/package.json +++ b/packages/transaction-controller/package.json @@ -49,7 +49,7 @@ "dependencies": { "@ethereumjs/common": "^4.4.0", "@ethereumjs/tx": "^5.4.0", - "@ethereumjs/util": "^8.1.0", + "@ethereumjs/util": "^9.1.0", "@ethersproject/abi": "^5.7.0", "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.0", diff --git a/yarn.config.cjs b/yarn.config.cjs index 9d6fe4526f7..aa8f334e172 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -24,9 +24,6 @@ const { inspect } = require('util'); */ const ALLOWED_INCONSISTENT_DEPENDENCIES = { // '@metamask/json-rpc-engine': ['^9.0.3'], - // Temporary to allow separate keyring API and keyring-controller upgrade. - '@ethereumjs/common': ['^3.2.0'], - '@ethereumjs/tx': ['^4.2.0'], }; /** diff --git a/yarn.lock b/yarn.lock index 5ad3020e25f..82a89db6294 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2344,7 +2344,7 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/accounts-controller@workspace:packages/accounts-controller" dependencies: - "@ethereumjs/util": "npm:^8.1.0" + "@ethereumjs/util": "npm:^9.1.0" "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/base-controller": "npm:^8.0.0" "@metamask/eth-snap-keyring": "npm:^10.0.0" @@ -2455,7 +2455,7 @@ __metadata: resolution: "@metamask/assets-controllers@workspace:packages/assets-controllers" dependencies: "@babel/runtime": "npm:^7.23.9" - "@ethereumjs/util": "npm:^8.1.0" + "@ethereumjs/util": "npm:^9.1.0" "@ethersproject/abi": "npm:^5.7.0" "@ethersproject/address": "npm:^5.7.0" "@ethersproject/bignumber": "npm:^5.7.0" @@ -2672,7 +2672,7 @@ __metadata: resolution: "@metamask/controller-utils@workspace:packages/controller-utils" dependencies: "@babel/runtime": "npm:^7.23.9" - "@ethereumjs/util": "npm:^8.1.0" + "@ethereumjs/util": "npm:^9.1.0" "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/eth-query": "npm:^4.0.0" "@metamask/ethjs-unit": "npm:^0.3.0" @@ -3338,9 +3338,9 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/keyring-controller@workspace:packages/keyring-controller" dependencies: - "@ethereumjs/common": "npm:^3.2.0" - "@ethereumjs/tx": "npm:^4.2.0" - "@ethereumjs/util": "npm:^8.1.0" + "@ethereumjs/common": "npm:^4.4.0" + "@ethereumjs/tx": "npm:^5.4.0" + "@ethereumjs/util": "npm:^9.1.0" "@keystonehq/bc-ur-registry-eth": "npm:^0.19.0" "@keystonehq/metamask-airgapped-keyring": "npm:^0.14.1" "@lavamoat/allow-scripts": "npm:^3.0.4" @@ -4227,7 +4227,7 @@ __metadata: "@babel/runtime": "npm:^7.23.9" "@ethereumjs/common": "npm:^4.4.0" "@ethereumjs/tx": "npm:^5.4.0" - "@ethereumjs/util": "npm:^8.1.0" + "@ethereumjs/util": "npm:^9.1.0" "@ethersproject/abi": "npm:^5.7.0" "@ethersproject/contracts": "npm:^5.7.0" "@ethersproject/providers": "npm:^5.7.0" From 48cae7b2d2f378d95a99450a4f9e9d3f93ab64cf Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Fri, 14 Feb 2025 23:23:39 +0000 Subject: [PATCH 02/19] Fix unit tests --- .../keyring-controller/src/KeyringController.test.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/keyring-controller/src/KeyringController.test.ts b/packages/keyring-controller/src/KeyringController.test.ts index b9fab0c14a0..e5b59c275cf 100644 --- a/packages/keyring-controller/src/KeyringController.test.ts +++ b/packages/keyring-controller/src/KeyringController.test.ts @@ -1,4 +1,5 @@ import { Chain, Common, Hardfork } from '@ethereumjs/common'; +import type { TypedTxData } from '@ethereumjs/tx'; import { TransactionFactory } from '@ethereumjs/tx'; import { CryptoHDKey, ETHSignature } from '@keystonehq/bc-ur-registry-eth'; import { MetaMaskKeyring as QRKeyring } from '@keystonehq/metamask-airgapped-keyring'; @@ -1867,10 +1868,9 @@ describe('KeyringController', () => { it('should sign transaction', async () => { await withController(async ({ controller, initialState }) => { const account = initialState.keyrings[0].accounts[0]; - const txParams = { + const txParams: TypedTxData = { chainId: 5, data: '0x1', - from: account, gasLimit: '0x5108', gasPrice: '0x5108', to: '0x51253087e6f8358b5f10c0a94315d69db3357859', @@ -1891,13 +1891,11 @@ describe('KeyringController', () => { }); it('should not sign transaction if from account is not provided', async () => { - await withController(async ({ controller, initialState }) => { + await withController(async ({ controller }) => { await expect(async () => { - const account = initialState.keyrings[0].accounts[0]; - const txParams = { + const txParams: TypedTxData = { chainId: 5, data: '0x1', - from: account, gasLimit: '0x5108', gasPrice: '0x5108', to: '0x51253087e6f8358b5f10c0a94315d69db3357859', @@ -3877,7 +3875,7 @@ describe('KeyringController', () => { } }); // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/no-misused-promises + messenger.subscribe('KeyringController:stateChange', listener); await controller.submitPassword(password); From 772101db40689ce12b420ea676f8a1c8f49e56e8 Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Fri, 14 Feb 2025 23:32:34 +0000 Subject: [PATCH 03/19] Fix linting --- packages/keyring-controller/tests/mocks/mockTransaction.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/keyring-controller/tests/mocks/mockTransaction.ts b/packages/keyring-controller/tests/mocks/mockTransaction.ts index 5548fa0a008..e03869bbd2f 100644 --- a/packages/keyring-controller/tests/mocks/mockTransaction.ts +++ b/packages/keyring-controller/tests/mocks/mockTransaction.ts @@ -1,4 +1,4 @@ -import { TransactionFactory, type TxData } from '@ethereumjs/tx'; +import { TransactionFactory, type TypedTxData } from '@ethereumjs/tx'; /** * Build a mock transaction, optionally overriding @@ -7,7 +7,7 @@ import { TransactionFactory, type TxData } from '@ethereumjs/tx'; * @param options - The transaction options to override. * @returns The mock transaction. */ -export const buildMockTransaction = (options: TxData = {}) => +export const buildMockTransaction = (options: TypedTxData = {}) => TransactionFactory.fromTxData({ to: '0xB1A13aBECeB71b2E758c7e0Da404DF0C72Ca3a12', value: '0x0', From 325d4c95abe1168f60413ce2ddd3c063b4cebede Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Fri, 14 Feb 2025 23:42:03 +0000 Subject: [PATCH 04/19] Update changelogs --- packages/accounts-controller/CHANGELOG.md | 4 ++++ packages/assets-controllers/CHANGELOG.md | 4 ++++ packages/controller-utils/CHANGELOG.md | 4 ++++ packages/keyring-controller/CHANGELOG.md | 4 ++++ packages/transaction-controller/CHANGELOG.md | 4 ++++ 5 files changed, 20 insertions(+) diff --git a/packages/accounts-controller/CHANGELOG.md b/packages/accounts-controller/CHANGELOG.md index a37b6fa4c12..4ba43d10479 100644 --- a/packages/accounts-controller/CHANGELOG.md +++ b/packages/accounts-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@ethereumjs/util` from `^8.1.0` to `^9.1.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) + ## [23.1.0] ### Added diff --git a/packages/assets-controllers/CHANGELOG.md b/packages/assets-controllers/CHANGELOG.md index 33abb6376c4..62cf2737355 100644 --- a/packages/assets-controllers/CHANGELOG.md +++ b/packages/assets-controllers/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@ethereumjs/util` from `^8.1.0` to `^9.1.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) + ## [49.0.0] ### Added diff --git a/packages/controller-utils/CHANGELOG.md b/packages/controller-utils/CHANGELOG.md index 0e9c9f5e7b5..73f5353e4d7 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 + +- Bump `@ethereumjs/util` from `^8.1.0` to `^9.1.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) + ## [11.5.0] ### Added diff --git a/packages/keyring-controller/CHANGELOG.md b/packages/keyring-controller/CHANGELOG.md index 1390ffdb22f..4627247104a 100644 --- a/packages/keyring-controller/CHANGELOG.md +++ b/packages/keyring-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@ethereumjs/util` from `^8.1.0` to `^9.1.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) + ## [19.1.0] ### Added diff --git a/packages/transaction-controller/CHANGELOG.md b/packages/transaction-controller/CHANGELOG.md index 01428f01bce..01af12d7e47 100644 --- a/packages/transaction-controller/CHANGELOG.md +++ b/packages/transaction-controller/CHANGELOG.md @@ -16,6 +16,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [45.1.0] +### Changed + +- Bump `@ethereumjs/util` from `^8.1.0` to `^9.1.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) + ### Added - Add support for EIP-7702 / type 4 transactions ([#5285](https://github.com/MetaMask/core/pull/5285)) From 3a9b37e7d49048f2c73caed9fc69003281f690a2 Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Sat, 15 Feb 2025 00:04:30 +0000 Subject: [PATCH 05/19] Fix unit test --- packages/assets-controllers/src/Standards/ERC20Standard.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/assets-controllers/src/Standards/ERC20Standard.test.ts b/packages/assets-controllers/src/Standards/ERC20Standard.test.ts index f149c5dc000..88ff8f998e8 100644 --- a/packages/assets-controllers/src/Standards/ERC20Standard.test.ts +++ b/packages/assets-controllers/src/Standards/ERC20Standard.test.ts @@ -115,7 +115,7 @@ describe('ERC20Standard', () => { const decimals = await erc20Standard.getTokenDecimals(MKR_ADDRESS); const symbol = await erc20Standard.getTokenSymbol(MKR_ADDRESS); expect(decimals).toBe('18'); - expect(symbol).toBe('MKR'); + expect(symbol).toStrictEqual(expect.stringContaining('MKR')); }); it('should fail on on empty responses', async () => { From c0e7168857a5d2d109f859621e0f5587b0045cb9 Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Sat, 15 Feb 2025 00:41:55 +0000 Subject: [PATCH 06/19] Fix changelog --- packages/transaction-controller/CHANGELOG.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/transaction-controller/CHANGELOG.md b/packages/transaction-controller/CHANGELOG.md index b2c2c018c3e..93cb47a1cb7 100644 --- a/packages/transaction-controller/CHANGELOG.md +++ b/packages/transaction-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@ethereumjs/util` from `^8.1.0` to `^9.1.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) + ## [46.0.0] ### Added @@ -22,10 +26,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [45.1.0] -### Changed - -- Bump `@ethereumjs/util` from `^8.1.0` to `^9.1.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) - ### Added - Add support for EIP-7702 / type 4 transactions ([#5285](https://github.com/MetaMask/core/pull/5285)) From 98233772175ca9e909005870f7d4b2d1cbff3a37 Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Wed, 26 Feb 2025 11:11:57 +0000 Subject: [PATCH 07/19] Use accounts preview builds --- package.json | 8 ++++++- yarn.lock | 64 +++++++++++++++++++++++++--------------------------- 2 files changed, 38 insertions(+), 34 deletions(-) diff --git a/package.json b/package.json index 96fdc47984f..f3065280d00 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,13 @@ "resolutions": { "elliptic@6.5.4": "^6.5.7", "fast-xml-parser@^4.3.4": "^4.4.1", - "ws@7.4.6": "^7.5.10" + "ws@7.4.6": "^7.5.10", + "@metamask/eth-hd-keyring": "npm:@metamask-previews/eth-hd-keyring@10.0.1-f2dd645", + "@metamask/eth-ledger-bridge-keyring": "npm:@metamask-previews/eth-ledger-bridge-keyring@8.0.5-f2dd645", + "@metamask/eth-simple-keyring": "npm:@metamask-previews/eth-simple-keyring@8.1.1-f2dd645", + "@metamask/eth-trezor-keyring": "npm:@metamask-previews/eth-trezor-keyring@6.1.1-f2dd645", + "@metamask/eth-snap-keyring": "npm:@metamask-previews/eth-snap-keyring@11.1.0-f2dd645", + "@metamask/keyring-utils": "npm:@metamask-previews/keyring-utils@2.3.1-f2dd645" }, "devDependencies": { "@babel/core": "^7.23.5", diff --git a/yarn.lock b/yarn.lock index 648ec74c4e2..f911affa746 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2935,17 +2935,17 @@ __metadata: languageName: node linkType: hard -"@metamask/eth-hd-keyring@npm:^10.0.0": - version: 10.0.0 - resolution: "@metamask/eth-hd-keyring@npm:10.0.0" +"@metamask/eth-hd-keyring@npm:@metamask-previews/eth-hd-keyring@10.0.1-f2dd645": + version: 10.0.1-f2dd645 + resolution: "@metamask-previews/eth-hd-keyring@npm:10.0.1-f2dd645" dependencies: - "@ethereumjs/util": "npm:^8.1.0" + "@ethereumjs/util": "npm:^9.1.0" "@metamask/eth-sig-util": "npm:^8.2.0" "@metamask/key-tree": "npm:^10.0.2" "@metamask/scure-bip39": "npm:^2.1.1" "@metamask/utils": "npm:^11.1.0" ethereum-cryptography: "npm:^2.1.2" - checksum: 10/d80611745171042f6ae7e0545e51563ebd705eb74e2bf131454766872d7ca57a54766af2ab398520a8fe0f58e8733a92c1df71664a2ea0e92c462661ea8a12f1 + checksum: 10/5e89ca37eda5365aeee351e56e86017f8b6d0f593d5c691166f53e92eb59bf5bd6e2b29ab8e9ff4aae723967e6014d8e3655f114a35b118d8d47e7102412c9a0 languageName: node linkType: hard @@ -3042,37 +3042,35 @@ __metadata: languageName: node linkType: hard -"@metamask/eth-simple-keyring@npm:^8.1.0": - version: 8.1.0 - resolution: "@metamask/eth-simple-keyring@npm:8.1.0" +"@metamask/eth-simple-keyring@npm:@metamask-previews/eth-simple-keyring@8.1.1-f2dd645": + version: 8.1.1-f2dd645 + resolution: "@metamask-previews/eth-simple-keyring@npm:8.1.1-f2dd645" dependencies: - "@ethereumjs/util": "npm:^8.1.0" + "@ethereumjs/util": "npm:^9.1.0" "@metamask/eth-sig-util": "npm:^8.2.0" "@metamask/utils": "npm:^11.1.0" ethereum-cryptography: "npm:^2.1.2" randombytes: "npm:^2.1.0" - checksum: 10/bbcbf7eb95e664be6362744ed6c6c977ecc14a8169b04cafa06a0afe3f5ffc872ca5f7ff327eb06d758c2b2cc1ab17bd4a9c533f58e12e4ee04163eb58100053 + checksum: 10/60864bf8d0af765a67d4676982873b249c9c6890f6c8049d0f13ccebe1d8cd7ca1bfdb7f2f27b9519c938c5fab913c379b40f0ca232caaec224f4c4e43eb47a3 languageName: node linkType: hard -"@metamask/eth-snap-keyring@npm:^11.1.0": - version: 11.1.0 - resolution: "@metamask/eth-snap-keyring@npm:11.1.0" +"@metamask/eth-snap-keyring@npm:@metamask-previews/eth-snap-keyring@11.1.0-f2dd645": + version: 11.1.0-f2dd645 + resolution: "@metamask-previews/eth-snap-keyring@npm:11.1.0-f2dd645" dependencies: - "@ethereumjs/tx": "npm:^4.2.0" + "@ethereumjs/tx": "npm:^5.4.0" "@metamask/base-controller": "npm:^7.1.1" "@metamask/eth-sig-util": "npm:^8.2.0" - "@metamask/keyring-api": "npm:^17.2.0" - "@metamask/keyring-internal-api": "npm:^4.0.3" - "@metamask/keyring-internal-snap-client": "npm:^4.0.1" - "@metamask/keyring-utils": "npm:^2.3.0" + "@metamask/keyring-api": "npm:17.2.1" + "@metamask/keyring-internal-api": "npm:4.0.3" + "@metamask/keyring-internal-snap-client": "npm:4.0.1" + "@metamask/keyring-utils": "npm:2.3.1" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.1.0" "@types/uuid": "npm:^9.0.8" uuid: "npm:^9.0.1" - peerDependencies: - "@metamask/keyring-api": ^17.2.0 - checksum: 10/b01abdcb2bd44c6fdf8fef3b897cdb78f99b5cf0a01d8c00d4fbad28b071c9073c9fdbfca974b452db6dddd44c6c0918b7bdb8705af0bc4393d1f9efa73ae33b + checksum: 10/897663494c23ed7db452ebd83d54c1dbedadcf83ada434ad3c39fff4b0276b6dc912cccd8027968c5ba560abf86e85e921512ac45d9f1fb537d243ddfb68a42c languageName: node linkType: hard @@ -3329,15 +3327,15 @@ __metadata: languageName: node linkType: hard -"@metamask/keyring-api@npm:^17.2.0": - version: 17.2.0 - resolution: "@metamask/keyring-api@npm:17.2.0" +"@metamask/keyring-api@npm:17.2.1, @metamask/keyring-api@npm:^17.2.0": + version: 17.2.1 + resolution: "@metamask/keyring-api@npm:17.2.1" dependencies: - "@metamask/keyring-utils": "npm:^2.3.0" + "@metamask/keyring-utils": "npm:^2.3.1" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.1.0" bech32: "npm:^2.0.0" - checksum: 10/b77d9a5a35abbb7215ad620b2cbf5188a743996a216bddbc0839363b68f726454a40ce4b4e67e1dfa7e53548039282430f47f548952a629ff807e11f053cc927 + checksum: 10/666b8506724c0f759e755ddc888fc0ecb44ef98bcf2f9d15ce009d00b93c126415c0af9f5037157a63f7fc7524358601650589819e487f7acb3e4748467b0a7b languageName: node linkType: hard @@ -3379,7 +3377,7 @@ __metadata: languageName: unknown linkType: soft -"@metamask/keyring-internal-api@npm:^4.0.3": +"@metamask/keyring-internal-api@npm:4.0.3, @metamask/keyring-internal-api@npm:^4.0.3": version: 4.0.3 resolution: "@metamask/keyring-internal-api@npm:4.0.3" dependencies: @@ -3391,7 +3389,7 @@ __metadata: languageName: node linkType: hard -"@metamask/keyring-internal-snap-client@npm:^4.0.1": +"@metamask/keyring-internal-snap-client@npm:4.0.1": version: 4.0.1 resolution: "@metamask/keyring-internal-snap-client@npm:4.0.1" dependencies: @@ -3419,15 +3417,15 @@ __metadata: languageName: node linkType: hard -"@metamask/keyring-utils@npm:^2.3.0, @metamask/keyring-utils@npm:^2.3.1": - version: 2.3.1 - resolution: "@metamask/keyring-utils@npm:2.3.1" +"@metamask/keyring-utils@npm:@metamask-previews/keyring-utils@2.3.1-f2dd645": + version: 2.3.1-f2dd645 + resolution: "@metamask-previews/keyring-utils@npm:2.3.1-f2dd645" dependencies: - "@ethereumjs/tx": "npm:^4.2.0" + "@ethereumjs/tx": "npm:^5.4.0" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.1.0" bitcoin-address-validation: "npm:^2.2.3" - checksum: 10/4a11b780621d82ab2d3fe39fbaed0ea87c01139c925c4c26cb25e2361bd855eae1c7c8cf01a84d2030de3bbef65590caecfe538f37490f75cad8a0a65b318c95 + checksum: 10/4f98eb522eb6361f7f08f6c9647e06249b002398c9461634c854e4996cfbcb153f551010c59fd751989d192e2fa505f7e3b7416110fdd1759d4123b65f2113fe languageName: node linkType: hard From 4dabc7dffbd9ddfe53a1ba4e6bd51b1402801c79 Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Thu, 27 Feb 2025 14:33:47 +0100 Subject: [PATCH 08/19] chore: bump keyring packages --- packages/keyring-controller/package.json | 7 +- .../src/KeyringController.test.ts | 24 ++-- .../src/KeyringController.ts | 121 +++++++----------- .../tests/mocks/mockErc4337Keyring.ts | 2 +- .../tests/mocks/mockKeyring.ts | 4 +- .../mocks/mockShallowGetAccountsKeyring.ts | 5 +- yarn.lock | 44 ++++--- 7 files changed, 96 insertions(+), 111 deletions(-) diff --git a/packages/keyring-controller/package.json b/packages/keyring-controller/package.json index ca2f4f2ddc8..2a70902ff5f 100644 --- a/packages/keyring-controller/package.json +++ b/packages/keyring-controller/package.json @@ -51,11 +51,11 @@ "@keystonehq/metamask-airgapped-keyring": "^0.14.1", "@metamask/base-controller": "^8.0.0", "@metamask/browser-passworder": "^4.3.0", - "@metamask/eth-hd-keyring": "^10.0.0", + "@metamask/eth-hd-keyring": "^11.0.0", "@metamask/eth-sig-util": "^8.2.0", - "@metamask/eth-simple-keyring": "^8.1.0", + "@metamask/eth-simple-keyring": "^9.0.0", "@metamask/keyring-api": "^17.2.0", - "@metamask/keyring-internal-api": "^4.0.3", + "@metamask/keyring-internal-api": "^5.0.0", "@metamask/utils": "^11.2.0", "async-mutex": "^0.5.0", "ethereumjs-wallet": "^1.0.1", @@ -69,6 +69,7 @@ "@lavamoat/allow-scripts": "^3.0.4", "@lavamoat/preinstall-always-fail": "^2.1.0", "@metamask/auto-changelog": "^3.4.4", + "@metamask/keyring-utils": "^2.3.1", "@metamask/scure-bip39": "^2.1.1", "@types/jest": "^27.4.1", "deepmerge": "^4.2.2", diff --git a/packages/keyring-controller/src/KeyringController.test.ts b/packages/keyring-controller/src/KeyringController.test.ts index f1eac625338..c911a420d1e 100644 --- a/packages/keyring-controller/src/KeyringController.test.ts +++ b/packages/keyring-controller/src/KeyringController.test.ts @@ -3,7 +3,7 @@ import { TransactionFactory } from '@ethereumjs/tx'; import { CryptoHDKey, ETHSignature } from '@keystonehq/bc-ur-registry-eth'; import { MetaMaskKeyring as QRKeyring } from '@keystonehq/metamask-airgapped-keyring'; import { Messenger } from '@metamask/base-controller'; -import HDKeyring from '@metamask/eth-hd-keyring'; +import { HdKeyring } from '@metamask/eth-hd-keyring'; import { normalize, recoverPersonalSignature, @@ -14,8 +14,8 @@ import { } from '@metamask/eth-sig-util'; import SimpleKeyring from '@metamask/eth-simple-keyring'; import type { EthKeyring } from '@metamask/keyring-internal-api'; +import type { KeyringClass } from '@metamask/keyring-utils'; import { wordlist } from '@metamask/scure-bip39/dist/wordlists/english'; -import type { KeyringClass } from '@metamask/utils'; import { bytesToHex, isValidHexAddress, @@ -122,7 +122,7 @@ describe('KeyringController', () => { it('allows overwriting the built-in HD keyring builder', async () => { // todo: keyring types are mismatched, this should be fixed in they keyrings themselves // @ts-expect-error keyring types are mismatched - const mockHdKeyringBuilder = buildKeyringBuilderWithSpy(HDKeyring); + const mockHdKeyringBuilder = buildKeyringBuilderWithSpy(HdKeyring); await withController( { keyringBuilders: [mockHdKeyringBuilder] }, async () => { @@ -341,7 +341,7 @@ describe('KeyringController', () => { // removed. const mockKeyring = controller.getKeyringsByType( MockShallowGetAccountsKeyring.type, - )[0] as EthKeyring; + )[0] as EthKeyring; const addedAccountAddress = await controller.addNewAccountForKeyring(mockKeyring); @@ -421,7 +421,7 @@ describe('KeyringController', () => { await controller.setLocked(); await expect( - controller.addNewAccountForKeyring(keyring as EthKeyring), + controller.addNewAccountForKeyring(keyring as EthKeyring), ).rejects.toThrow(KeyringControllerError.ControllerLocked); }); }); @@ -637,7 +637,7 @@ describe('KeyringController', () => { }); it('should throw error if the first account is not found on the keyring', async () => { - jest.spyOn(HDKeyring.prototype, 'getAccounts').mockReturnValue([]); + jest.spyOn(HdKeyring.prototype, 'getAccounts').mockReturnValue([]); await withController( { cacheEncryptionKey, skipVaultCreation: true }, async ({ controller }) => { @@ -2889,7 +2889,7 @@ describe('KeyringController', () => { it('should rollback if an error is thrown', async () => { await withController(async ({ controller, initialState }) => { const selector = { type: KeyringTypes.hd }; - const fn = async ({ keyring }: { keyring: EthKeyring }) => { + const fn = async ({ keyring }: { keyring: EthKeyring }) => { await keyring.addAccounts(1); throw new Error('Oops'); }; @@ -4270,7 +4270,7 @@ type WithControllerArgs = * @param account - The account to return. */ function stubKeyringClassWithAccount( - keyringClass: KeyringClass, + keyringClass: KeyringClass, account: string, ) { jest @@ -4343,14 +4343,14 @@ async function withController( * @param KeyringConstructor - The constructor to use for building the keyring. * @returns A keyring builder that uses `jest.fn()` to spy on invocations. */ -function buildKeyringBuilderWithSpy(KeyringConstructor: KeyringClass): { - (): EthKeyring; +function buildKeyringBuilderWithSpy(KeyringConstructor: KeyringClass): { + (): EthKeyring; type: string; } { - const keyringBuilderWithSpy: { (): EthKeyring; type?: string } = jest + const keyringBuilderWithSpy: { (): EthKeyring; type?: string } = jest .fn() .mockImplementation((...args) => new KeyringConstructor(...args)); keyringBuilderWithSpy.type = KeyringConstructor.type; // Not sure why TypeScript isn't smart enough to infer that `type` is set here. - return keyringBuilderWithSpy as { (): EthKeyring; type: string }; + return keyringBuilderWithSpy as { (): EthKeyring; type: string }; } diff --git a/packages/keyring-controller/src/KeyringController.ts b/packages/keyring-controller/src/KeyringController.ts index b69f1d2ebfe..88ba6db7099 100644 --- a/packages/keyring-controller/src/KeyringController.ts +++ b/packages/keyring-controller/src/KeyringController.ts @@ -7,7 +7,7 @@ import type { import type { RestrictedMessenger } from '@metamask/base-controller'; import { BaseController } from '@metamask/base-controller'; import * as encryptorUtils from '@metamask/browser-passworder'; -import HDKeyring from '@metamask/eth-hd-keyring'; +import { HdKeyring } from '@metamask/eth-hd-keyring'; import { normalize as ethNormalize } from '@metamask/eth-sig-util'; import SimpleKeyring from '@metamask/eth-simple-keyring'; import type { @@ -18,12 +18,8 @@ import type { EthUserOperationPatch, } from '@metamask/keyring-api'; import type { EthKeyring } from '@metamask/keyring-internal-api'; -import type { - Eip1024EncryptedData, - Hex, - Json, - KeyringClass, -} from '@metamask/utils'; +import type { KeyringClass } from '@metamask/keyring-utils'; +import type { Eip1024EncryptedData, Hex, Json } from '@metamask/utils'; import { add0x, assert, @@ -254,7 +250,7 @@ export type KeyringControllerMessenger = RestrictedMessenger< >; export type KeyringControllerOptions = { - keyringBuilders?: { (): EthKeyring; type: string }[]; + keyringBuilders?: { (): EthKeyring; type: string }[]; messenger: KeyringControllerMessenger; state?: { vault?: string; keyringsMetadata?: KeyringMetadata[] }; } & ( @@ -451,7 +447,7 @@ type MutuallyExclusiveCallback = ({ * @param KeyringConstructor - The Keyring class for the builder. * @returns A builder function for the given Keyring. */ -export function keyringBuilderFactory(KeyringConstructor: KeyringClass) { +export function keyringBuilderFactory(KeyringConstructor: KeyringClass) { const builder = () => new KeyringConstructor(); builder.type = KeyringConstructor.type; @@ -464,7 +460,7 @@ const defaultKeyringBuilders = [ // @ts-expect-error keyring types are mismatched keyringBuilderFactory(SimpleKeyring), // @ts-expect-error keyring types are mismatched - keyringBuilderFactory(HDKeyring), + keyringBuilderFactory(HdKeyring), ]; export const getDefaultKeyringState = (): KeyringControllerState => { @@ -483,8 +479,8 @@ export const getDefaultKeyringState = (): KeyringControllerState => { * @throws When the keyring does not have a mnemonic */ function assertHasUint8ArrayMnemonic( - keyring: EthKeyring, -): asserts keyring is EthKeyring & { mnemonic: Uint8Array } { + keyring: EthKeyring, +): asserts keyring is EthKeyring & { mnemonic: Uint8Array } { if ( !( hasProperty(keyring, 'mnemonic') && keyring.mnemonic instanceof Uint8Array @@ -559,7 +555,7 @@ function isSerializedKeyringsArray( * @returns A keyring display object, with type and accounts properties. */ async function displayForKeyring( - keyring: EthKeyring, + keyring: EthKeyring, ): Promise<{ type: string; accounts: string[] }> { const accounts = await keyring.getAccounts(); @@ -621,7 +617,7 @@ export class KeyringController extends BaseController< readonly #vaultOperationMutex = new Mutex(); - readonly #keyringBuilders: { (): EthKeyring; type: string }[]; + readonly #keyringBuilders: { (): EthKeyring; type: string }[]; readonly #unsupportedKeyrings: SerializedKeyring[]; @@ -629,7 +625,7 @@ export class KeyringController extends BaseController< readonly #cacheEncryptionKey: boolean; - #keyrings: EthKeyring[]; + #keyrings: EthKeyring[]; #keyringsMetadata: KeyringMetadata[]; @@ -705,7 +701,7 @@ export class KeyringController extends BaseController< return this.#persistOrRollback(async () => { const primaryKeyring = this.getKeyringsByType('HD Key Tree')[0] as - | EthKeyring + | EthKeyring | undefined; if (!primaryKeyring) { throw new Error('No HD keyring found'); @@ -741,7 +737,7 @@ export class KeyringController extends BaseController< * @returns Promise resolving to the added account address */ async addNewAccountForKeyring( - keyring: EthKeyring, + keyring: EthKeyring, accountCount?: number, ): Promise { // READ THIS CAREFULLY: @@ -898,9 +894,7 @@ export class KeyringController extends BaseController< async exportAccount(password: string, address: string): Promise { await this.verifyPassword(password); - const keyring = (await this.getKeyringForAccount( - address, - )) as EthKeyring; + const keyring = (await this.getKeyringForAccount(address)) as EthKeyring; if (!keyring.exportAccount) { throw new Error(KeyringControllerError.UnsupportedExportAccount); } @@ -935,9 +929,7 @@ export class KeyringController extends BaseController< ): Promise { this.#assertIsUnlocked(); const address = ethNormalize(account) as Hex; - const keyring = (await this.getKeyringForAccount( - account, - )) as EthKeyring; + const keyring = (await this.getKeyringForAccount(account)) as EthKeyring; if (!keyring.getEncryptionPublicKey) { throw new Error(KeyringControllerError.UnsupportedGetEncryptionPublicKey); } @@ -959,9 +951,7 @@ export class KeyringController extends BaseController< }): Promise { this.#assertIsUnlocked(); const address = ethNormalize(messageParams.from) as Hex; - const keyring = (await this.getKeyringForAccount( - address, - )) as EthKeyring; + const keyring = (await this.getKeyringForAccount(address)) as EthKeyring; if (!keyring.decryptMessage) { throw new Error(KeyringControllerError.UnsupportedDecryptMessage); } @@ -1093,7 +1083,7 @@ export class KeyringController extends BaseController< } const newKeyring = (await this.#newKeyring(KeyringTypes.simple, [ privateKey, - ])) as EthKeyring; + ])) as EthKeyring; const accounts = await newKeyring.getAccounts(); return accounts[0]; }); @@ -1110,9 +1100,7 @@ export class KeyringController extends BaseController< this.#assertIsUnlocked(); await this.#persistOrRollback(async () => { - const keyring = (await this.getKeyringForAccount( - address, - )) as EthKeyring; + const keyring = (await this.getKeyringForAccount(address)) as EthKeyring; const keyringIndex = this.state.keyrings.findIndex((kr) => kr.accounts.includes(address), @@ -1185,9 +1173,7 @@ export class KeyringController extends BaseController< } const address = ethNormalize(messageParams.from) as Hex; - const keyring = (await this.getKeyringForAccount( - address, - )) as EthKeyring; + const keyring = (await this.getKeyringForAccount(address)) as EthKeyring; if (!keyring.signMessage) { throw new Error(KeyringControllerError.UnsupportedSignMessage); } @@ -1207,7 +1193,7 @@ export class KeyringController extends BaseController< ): Promise { const from = ethNormalize(params.from) as Hex; - const keyring = (await this.getKeyringForAccount(from)) as EthKeyring; + const keyring = (await this.getKeyringForAccount(from)) as EthKeyring; if (!keyring.signEip7702Authorization) { throw new Error( @@ -1242,9 +1228,7 @@ export class KeyringController extends BaseController< async signPersonalMessage(messageParams: PersonalMessageParams) { this.#assertIsUnlocked(); const address = ethNormalize(messageParams.from) as Hex; - const keyring = (await this.getKeyringForAccount( - address, - )) as EthKeyring; + const keyring = (await this.getKeyringForAccount(address)) as EthKeyring; if (!keyring.signPersonalMessage) { throw new Error(KeyringControllerError.UnsupportedSignPersonalMessage); } @@ -1282,9 +1266,7 @@ export class KeyringController extends BaseController< // Cast to `Hex` here is safe here because `messageParams.from` is not nullish. // `normalize` returns `Hex` unless given a nullish value. const address = ethNormalize(messageParams.from) as Hex; - const keyring = (await this.getKeyringForAccount( - address, - )) as EthKeyring; + const keyring = (await this.getKeyringForAccount(address)) as EthKeyring; if (!keyring.signTypedData) { throw new Error(KeyringControllerError.UnsupportedSignTypedMessage); } @@ -1319,9 +1301,7 @@ export class KeyringController extends BaseController< ): Promise { this.#assertIsUnlocked(); const address = ethNormalize(from) as Hex; - const keyring = (await this.getKeyringForAccount( - address, - )) as EthKeyring; + const keyring = (await this.getKeyringForAccount(address)) as EthKeyring; if (!keyring.signTransaction) { throw new Error(KeyringControllerError.UnsupportedSignTransaction); } @@ -1344,9 +1324,7 @@ export class KeyringController extends BaseController< ): Promise { this.#assertIsUnlocked(); const address = ethNormalize(from) as Hex; - const keyring = (await this.getKeyringForAccount( - address, - )) as EthKeyring; + const keyring = (await this.getKeyringForAccount(address)) as EthKeyring; if (!keyring.prepareUserOperation) { throw new Error(KeyringControllerError.UnsupportedPrepareUserOperation); @@ -1375,9 +1353,7 @@ export class KeyringController extends BaseController< ): Promise { this.#assertIsUnlocked(); const address = ethNormalize(from) as Hex; - const keyring = (await this.getKeyringForAccount( - address, - )) as EthKeyring; + const keyring = (await this.getKeyringForAccount(address)) as EthKeyring; if (!keyring.patchUserOperation) { throw new Error(KeyringControllerError.UnsupportedPatchUserOperation); @@ -1401,9 +1377,7 @@ export class KeyringController extends BaseController< ): Promise { this.#assertIsUnlocked(); const address = ethNormalize(from) as Hex; - const keyring = (await this.getKeyringForAccount( - address, - )) as EthKeyring; + const keyring = (await this.getKeyringForAccount(address)) as EthKeyring; if (!keyring.signUserOperation) { throw new Error(KeyringControllerError.UnsupportedSignUserOperation); @@ -1506,7 +1480,7 @@ export class KeyringController extends BaseController< * @deprecated This method overload is deprecated. Use `withKeyring` without options instead. */ async withKeyring< - SelectedKeyring extends EthKeyring = EthKeyring, + SelectedKeyring extends EthKeyring = EthKeyring, CallbackResult = void, >( selector: KeyringSelector, @@ -1539,7 +1513,7 @@ export class KeyringController extends BaseController< * @template CallbackResult - The type of the value resolved by the callback function. */ async withKeyring< - SelectedKeyring extends EthKeyring = EthKeyring, + SelectedKeyring extends EthKeyring = EthKeyring, CallbackResult = void, >( selector: KeyringSelector, @@ -1553,7 +1527,7 @@ export class KeyringController extends BaseController< ): Promise; async withKeyring< - SelectedKeyring extends EthKeyring = EthKeyring, + SelectedKeyring extends EthKeyring = EthKeyring, CallbackResult = void, >( selector: KeyringSelector, @@ -1821,9 +1795,7 @@ export class KeyringController extends BaseController< async getAccountKeyringType(account: string): Promise { this.#assertIsUnlocked(); - const keyring = (await this.getKeyringForAccount( - account, - )) as EthKeyring; + const keyring = (await this.getKeyringForAccount(account)) as EthKeyring; return keyring.type; } @@ -1944,7 +1916,7 @@ export class KeyringController extends BaseController< * @param keyringId - The id of the keyring. * @returns The keyring. */ - #getKeyringById(keyringId: string): EthKeyring | undefined { + #getKeyringById(keyringId: string): EthKeyring | undefined { const index = this.state.keyringsMetadata.findIndex( (metadata) => metadata.id === keyringId, ); @@ -1957,9 +1929,9 @@ export class KeyringController extends BaseController< * @param keyringId - The id of the keyring. * @returns The keyring. */ - #getKeyringByIdOrDefault(keyringId?: string): EthKeyring | undefined { + #getKeyringByIdOrDefault(keyringId?: string): EthKeyring | undefined { if (!keyringId) { - return this.#keyrings[0] as EthKeyring; + return this.#keyrings[0] as EthKeyring; } return this.#getKeyringById(keyringId); @@ -1987,7 +1959,7 @@ export class KeyringController extends BaseController< */ #getKeyringBuilderForType( type: string, - ): { (): EthKeyring; type: string } | undefined { + ): { (): EthKeyring; type: string } | undefined { return this.#keyringBuilders.find( (keyringBuilder) => keyringBuilder.type === type, ); @@ -2197,7 +2169,7 @@ export class KeyringController extends BaseController< password: string | undefined, encryptionKey?: string, encryptionSalt?: string, - ): Promise[]> { + ): Promise { return this.#withVaultLock(async ({ releaseLock }) => { const encryptedVault = this.state.vault; if (!encryptedVault) { @@ -2393,7 +2365,7 @@ export class KeyringController extends BaseController< async #createKeyringWithFirstAccount(type: string, opts?: unknown) { this.#assertControllerMutexIsLocked(); - const keyring = (await this.#newKeyring(type, opts)) as EthKeyring; + const keyring = (await this.#newKeyring(type, opts)) as EthKeyring; const [firstAccount] = await keyring.getAccounts(); if (!firstAccount) { @@ -2415,7 +2387,7 @@ export class KeyringController extends BaseController< * @returns The new keyring. * @throws If the keyring includes duplicated accounts. */ - async #newKeyring(type: string, data?: unknown): Promise> { + async #newKeyring(type: string, data?: unknown): Promise { const keyring = await this.#createKeyring(type, data); if (this.#keyrings.length !== this.#keyringsMetadata.length) { @@ -2444,10 +2416,7 @@ export class KeyringController extends BaseController< * @returns The new keyring. * @throws If the keyring includes duplicated accounts. */ - async #createKeyring( - type: string, - data?: unknown, - ): Promise> { + async #createKeyring(type: string, data?: unknown): Promise { this.#assertControllerMutexIsLocked(); const keyringBuilder = this.#getKeyringBuilderForType(type); @@ -2459,8 +2428,10 @@ export class KeyringController extends BaseController< } const keyring = keyringBuilder(); - // @ts-expect-error Enforce data type after updating clients - await keyring.deserialize(data); + if (data) { + // @ts-expect-error Enforce data type after updating clients + await keyring.deserialize(data); + } if (keyring.init) { await keyring.init(); @@ -2512,7 +2483,7 @@ export class KeyringController extends BaseController< */ async #restoreKeyring( serialized: SerializedKeyring, - ): Promise | undefined> { + ): Promise { this.#assertControllerMutexIsLocked(); try { @@ -2541,7 +2512,7 @@ export class KeyringController extends BaseController< * * @param keyring - The keyring to destroy. */ - async #destroyKeyring(keyring: EthKeyring) { + async #destroyKeyring(keyring: EthKeyring) { await keyring.destroy?.(); } @@ -2553,7 +2524,7 @@ export class KeyringController extends BaseController< */ async #removeEmptyKeyrings(): Promise { this.#assertControllerMutexIsLocked(); - const validKeyrings: EthKeyring[] = []; + const validKeyrings: EthKeyring[] = []; const validKeyringMetadata: KeyringMetadata[] = []; // Since getAccounts returns a Promise @@ -2561,7 +2532,7 @@ export class KeyringController extends BaseController< // in order to decide which ones are now valid (accounts.length > 0) await Promise.all( - this.#keyrings.map(async (keyring: EthKeyring, index: number) => { + this.#keyrings.map(async (keyring: EthKeyring, index: number) => { const accounts = await keyring.getAccounts(); if (accounts.length > 0) { validKeyrings.push(keyring); diff --git a/packages/keyring-controller/tests/mocks/mockErc4337Keyring.ts b/packages/keyring-controller/tests/mocks/mockErc4337Keyring.ts index 6d3f0d3e688..37d4bc12b78 100644 --- a/packages/keyring-controller/tests/mocks/mockErc4337Keyring.ts +++ b/packages/keyring-controller/tests/mocks/mockErc4337Keyring.ts @@ -1,7 +1,7 @@ import type { EthKeyring } from '@metamask/keyring-internal-api'; import type { Hex, Json } from '@metamask/utils'; -export class MockErc4337Keyring implements EthKeyring { +export class MockErc4337Keyring implements EthKeyring { static type = 'ERC-4337 Keyring'; public type = MockErc4337Keyring.type; diff --git a/packages/keyring-controller/tests/mocks/mockKeyring.ts b/packages/keyring-controller/tests/mocks/mockKeyring.ts index 38770fbcbd3..7d8b9ab1265 100644 --- a/packages/keyring-controller/tests/mocks/mockKeyring.ts +++ b/packages/keyring-controller/tests/mocks/mockKeyring.ts @@ -1,7 +1,7 @@ import type { EthKeyring } from '@metamask/keyring-internal-api'; -import type { Json, Hex } from '@metamask/utils'; +import type { Hex } from '@metamask/utils'; -export class MockKeyring implements EthKeyring { +export class MockKeyring implements EthKeyring { static type = 'Mock Keyring'; public type = 'Mock Keyring'; diff --git a/packages/keyring-controller/tests/mocks/mockShallowGetAccountsKeyring.ts b/packages/keyring-controller/tests/mocks/mockShallowGetAccountsKeyring.ts index 61c6a8ef302..85f8ead0d54 100644 --- a/packages/keyring-controller/tests/mocks/mockShallowGetAccountsKeyring.ts +++ b/packages/keyring-controller/tests/mocks/mockShallowGetAccountsKeyring.ts @@ -1,4 +1,5 @@ -import type { Keyring, Json, Hex } from '@metamask/utils'; +import type { EthKeyring } from '@metamask/keyring-internal-api'; +import type { Json, Hex } from '@metamask/utils'; /** * A test keyring that returns a shallow copy of the accounts array @@ -9,7 +10,7 @@ import type { Keyring, Json, Hex } from '@metamask/utils'; * accounts array is not not used to determinate the added account after * an operation. */ -export default class MockShallowGetAccountsKeyring implements Keyring { +export default class MockShallowGetAccountsKeyring implements EthKeyring { static type = 'Mock Shallow getAccounts Keyring'; public type = MockShallowGetAccountsKeyring.type; diff --git a/yarn.lock b/yarn.lock index b23bb103dec..fe818e43bfd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2935,9 +2935,9 @@ __metadata: languageName: node linkType: hard -"@metamask/eth-hd-keyring@npm:^10.0.0": - version: 10.0.0 - resolution: "@metamask/eth-hd-keyring@npm:10.0.0" +"@metamask/eth-hd-keyring@npm:^11.0.0": + version: 11.0.0 + resolution: "@metamask/eth-hd-keyring@npm:11.0.0" dependencies: "@ethereumjs/util": "npm:^8.1.0" "@metamask/eth-sig-util": "npm:^8.2.0" @@ -2945,7 +2945,7 @@ __metadata: "@metamask/scure-bip39": "npm:^2.1.1" "@metamask/utils": "npm:^11.1.0" ethereum-cryptography: "npm:^2.1.2" - checksum: 10/d80611745171042f6ae7e0545e51563ebd705eb74e2bf131454766872d7ca57a54766af2ab398520a8fe0f58e8733a92c1df71664a2ea0e92c462661ea8a12f1 + checksum: 10/34e79c06740273518b653bfbef75371f2934ac1d73698f2a0f5f3e124300d5b43c86351f6989dc5aae5026ad2410171e75caabb7a14e9eacaea868f83be1b36d languageName: node linkType: hard @@ -3042,16 +3042,16 @@ __metadata: languageName: node linkType: hard -"@metamask/eth-simple-keyring@npm:^8.1.0": - version: 8.1.0 - resolution: "@metamask/eth-simple-keyring@npm:8.1.0" +"@metamask/eth-simple-keyring@npm:^9.0.0": + version: 9.0.0 + resolution: "@metamask/eth-simple-keyring@npm:9.0.0" dependencies: "@ethereumjs/util": "npm:^8.1.0" "@metamask/eth-sig-util": "npm:^8.2.0" "@metamask/utils": "npm:^11.1.0" ethereum-cryptography: "npm:^2.1.2" randombytes: "npm:^2.1.0" - checksum: 10/bbcbf7eb95e664be6362744ed6c6c977ecc14a8169b04cafa06a0afe3f5ffc872ca5f7ff327eb06d758c2b2cc1ab17bd4a9c533f58e12e4ee04163eb58100053 + checksum: 10/2f7062546288afcc986a7baf703fc518b1a26587d3675dddd97a0ea940b54020e8878b3aa94fc562bf96196e67aa5ff854b428de68eb8da65101868f4487d034 languageName: node linkType: hard @@ -3329,15 +3329,15 @@ __metadata: languageName: node linkType: hard -"@metamask/keyring-api@npm:^17.2.0": - version: 17.2.0 - resolution: "@metamask/keyring-api@npm:17.2.0" +"@metamask/keyring-api@npm:^17.2.0, @metamask/keyring-api@npm:^17.2.1": + version: 17.2.1 + resolution: "@metamask/keyring-api@npm:17.2.1" dependencies: - "@metamask/keyring-utils": "npm:^2.3.0" + "@metamask/keyring-utils": "npm:^2.3.1" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.1.0" bech32: "npm:^2.0.0" - checksum: 10/b77d9a5a35abbb7215ad620b2cbf5188a743996a216bddbc0839363b68f726454a40ce4b4e67e1dfa7e53548039282430f47f548952a629ff807e11f053cc927 + checksum: 10/666b8506724c0f759e755ddc888fc0ecb44ef98bcf2f9d15ce009d00b93c126415c0af9f5037157a63f7fc7524358601650589819e487f7acb3e4748467b0a7b languageName: node linkType: hard @@ -3355,11 +3355,12 @@ __metadata: "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/base-controller": "npm:^8.0.0" "@metamask/browser-passworder": "npm:^4.3.0" - "@metamask/eth-hd-keyring": "npm:^10.0.0" + "@metamask/eth-hd-keyring": "npm:^11.0.0" "@metamask/eth-sig-util": "npm:^8.2.0" - "@metamask/eth-simple-keyring": "npm:^8.1.0" + "@metamask/eth-simple-keyring": "npm:^9.0.0" "@metamask/keyring-api": "npm:^17.2.0" - "@metamask/keyring-internal-api": "npm:^4.0.3" + "@metamask/keyring-internal-api": "npm:^5.0.0" + "@metamask/keyring-utils": "npm:^2.3.1" "@metamask/scure-bip39": "npm:^2.1.1" "@metamask/utils": "npm:^11.2.0" "@types/jest": "npm:^27.4.1" @@ -3391,6 +3392,17 @@ __metadata: languageName: node linkType: hard +"@metamask/keyring-internal-api@npm:^5.0.0": + version: 5.0.0 + resolution: "@metamask/keyring-internal-api@npm:5.0.0" + dependencies: + "@metamask/keyring-api": "npm:^17.2.1" + "@metamask/keyring-utils": "npm:^2.3.1" + "@metamask/superstruct": "npm:^3.1.0" + checksum: 10/1c691c6343691ef19c1cea6a353cbb325dbad7b10462d17139365151dc23a7f0aa74eecb9e8787a4472cc5d73424c1e050d0efb5a3b68c59c766adede40b9ea2 + languageName: node + linkType: hard + "@metamask/keyring-internal-snap-client@npm:^4.0.1": version: 4.0.1 resolution: "@metamask/keyring-internal-snap-client@npm:4.0.1" From f322f643cf7646b698a55dfb7a3d7022cfd071ae Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Thu, 27 Feb 2025 14:42:04 +0100 Subject: [PATCH 09/19] bump other controllers --- eslint-warning-thresholds.json | 2 +- packages/accounts-controller/package.json | 2 +- packages/assets-controllers/package.json | 2 +- packages/multichain-transactions-controller/package.json | 2 +- packages/profile-sync-controller/package.json | 2 +- yarn.lock | 8 ++++---- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/eslint-warning-thresholds.json b/eslint-warning-thresholds.json index fdceea10944..dd6a70797ff 100644 --- a/eslint-warning-thresholds.json +++ b/eslint-warning-thresholds.json @@ -366,7 +366,7 @@ "jsdoc/tag-lines": 3 }, "packages/multichain/src/scope/supported.ts": { - "@typescript-eslint/no-unsafe-enum-comparison": 4, + "@typescript-eslint/no-unsafe-enum-comparison": 1, "jsdoc/tag-lines": 4 }, "packages/multichain/src/scope/validation.ts": { diff --git a/packages/accounts-controller/package.json b/packages/accounts-controller/package.json index f619cf68e09..cdacafc1883 100644 --- a/packages/accounts-controller/package.json +++ b/packages/accounts-controller/package.json @@ -51,7 +51,7 @@ "@metamask/base-controller": "^8.0.0", "@metamask/eth-snap-keyring": "^11.1.0", "@metamask/keyring-api": "^17.2.0", - "@metamask/keyring-internal-api": "^4.0.3", + "@metamask/keyring-internal-api": "^5.0.0", "@metamask/keyring-utils": "^2.3.1", "@metamask/network-controller": "^22.2.1", "@metamask/snaps-sdk": "^6.17.1", diff --git a/packages/assets-controllers/package.json b/packages/assets-controllers/package.json index 59d4de86ced..104dcbb5d3e 100644 --- a/packages/assets-controllers/package.json +++ b/packages/assets-controllers/package.json @@ -82,7 +82,7 @@ "@metamask/auto-changelog": "^3.4.4", "@metamask/ethjs-provider-http": "^0.3.0", "@metamask/keyring-controller": "^19.2.1", - "@metamask/keyring-internal-api": "^4.0.3", + "@metamask/keyring-internal-api": "^5.0.0", "@metamask/keyring-snap-client": "^4.0.1", "@metamask/network-controller": "^22.2.1", "@metamask/permission-controller": "^11.0.6", diff --git a/packages/multichain-transactions-controller/package.json b/packages/multichain-transactions-controller/package.json index c6dc6f736d4..e3bd2f49792 100644 --- a/packages/multichain-transactions-controller/package.json +++ b/packages/multichain-transactions-controller/package.json @@ -49,7 +49,7 @@ "dependencies": { "@metamask/base-controller": "^8.0.0", "@metamask/keyring-api": "^17.2.0", - "@metamask/keyring-internal-api": "^4.0.3", + "@metamask/keyring-internal-api": "^5.0.0", "@metamask/keyring-snap-client": "^4.0.1", "@metamask/polling-controller": "^12.0.3", "@metamask/snaps-controllers": "^9.19.0", diff --git a/packages/profile-sync-controller/package.json b/packages/profile-sync-controller/package.json index 34085a2ee5f..8f085a36525 100644 --- a/packages/profile-sync-controller/package.json +++ b/packages/profile-sync-controller/package.json @@ -117,7 +117,7 @@ "@lavamoat/preinstall-always-fail": "^2.1.0", "@metamask/accounts-controller": "^24.1.0", "@metamask/auto-changelog": "^3.4.4", - "@metamask/keyring-internal-api": "^4.0.3", + "@metamask/keyring-internal-api": "^5.0.0", "@metamask/providers": "^18.1.1", "@metamask/snaps-controllers": "^9.19.0", "@types/jest": "^27.4.1", diff --git a/yarn.lock b/yarn.lock index fe818e43bfd..9927e3a4a52 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2350,7 +2350,7 @@ __metadata: "@metamask/eth-snap-keyring": "npm:^11.1.0" "@metamask/keyring-api": "npm:^17.2.0" "@metamask/keyring-controller": "npm:^19.2.1" - "@metamask/keyring-internal-api": "npm:^4.0.3" + "@metamask/keyring-internal-api": "npm:^5.0.0" "@metamask/keyring-utils": "npm:^2.3.1" "@metamask/network-controller": "npm:^22.2.1" "@metamask/providers": "npm:^18.1.1" @@ -2473,7 +2473,7 @@ __metadata: "@metamask/ethjs-provider-http": "npm:^0.3.0" "@metamask/keyring-api": "npm:^17.2.0" "@metamask/keyring-controller": "npm:^19.2.1" - "@metamask/keyring-internal-api": "npm:^4.0.3" + "@metamask/keyring-internal-api": "npm:^5.0.0" "@metamask/keyring-snap-client": "npm:^4.0.1" "@metamask/metamask-eth-abis": "npm:^3.1.1" "@metamask/network-controller": "npm:^22.2.1" @@ -3526,7 +3526,7 @@ __metadata: "@metamask/base-controller": "npm:^8.0.0" "@metamask/keyring-api": "npm:^17.2.0" "@metamask/keyring-controller": "npm:^19.2.1" - "@metamask/keyring-internal-api": "npm:^4.0.3" + "@metamask/keyring-internal-api": "npm:^5.0.0" "@metamask/keyring-snap-client": "npm:^4.0.1" "@metamask/polling-controller": "npm:^12.0.3" "@metamask/snaps-controllers": "npm:^9.19.0" @@ -3856,7 +3856,7 @@ __metadata: "@metamask/base-controller": "npm:^8.0.0" "@metamask/keyring-api": "npm:^17.2.0" "@metamask/keyring-controller": "npm:^19.2.1" - "@metamask/keyring-internal-api": "npm:^4.0.3" + "@metamask/keyring-internal-api": "npm:^5.0.0" "@metamask/network-controller": "npm:^22.2.1" "@metamask/providers": "npm:^18.1.1" "@metamask/snaps-controllers": "npm:^9.19.0" From 0d8e65624ffea7a3d19de12b70eabf40655c6f1f Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Thu, 27 Feb 2025 14:49:23 +0100 Subject: [PATCH 10/19] fix profile-sync-controller tests --- .../src/controllers/user-storage/__fixtures__/mockMessenger.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/mockMessenger.ts b/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/mockMessenger.ts index b34d842abef..cd50358425a 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/mockMessenger.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/mockMessenger.ts @@ -209,7 +209,7 @@ export function mockUserStorageMessenger( const keyring = { getAccounts: mockKeyringGetAccounts, addAccounts: mockKeyringAddAccounts, - } as unknown as EthKeyring; + } as unknown as EthKeyring; const metadata = { id: 'mock-id', name: '' }; From b8f29301046ef5bdc87d3c02dc5eec1579c6bde2 Mon Sep 17 00:00:00 2001 From: Michele Esposito <34438276+mikesposito@users.noreply.github.com> Date: Thu, 27 Feb 2025 14:55:27 +0100 Subject: [PATCH 11/19] Update eslint-warning-thresholds.json --- eslint-warning-thresholds.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eslint-warning-thresholds.json b/eslint-warning-thresholds.json index dd6a70797ff..fdceea10944 100644 --- a/eslint-warning-thresholds.json +++ b/eslint-warning-thresholds.json @@ -366,7 +366,7 @@ "jsdoc/tag-lines": 3 }, "packages/multichain/src/scope/supported.ts": { - "@typescript-eslint/no-unsafe-enum-comparison": 1, + "@typescript-eslint/no-unsafe-enum-comparison": 4, "jsdoc/tag-lines": 4 }, "packages/multichain/src/scope/validation.ts": { From 4a9b4a933828ea5c6ab93115c0f42540e1360e70 Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Thu, 27 Feb 2025 20:37:37 +0000 Subject: [PATCH 12/19] Fix linting --- packages/accounts-controller/src/AccountsController.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/accounts-controller/src/AccountsController.ts b/packages/accounts-controller/src/AccountsController.ts index d9da42842ab..2e75268a57f 100644 --- a/packages/accounts-controller/src/AccountsController.ts +++ b/packages/accounts-controller/src/AccountsController.ts @@ -474,7 +474,7 @@ export class AccountsController extends BaseController< }; // Do not remove this comment - This error is flaky: Comment out or restore the `ts-expect-error` directive below as needed. // See: https://github.com/MetaMask/utils/issues/168 - // @ts-expect-error Known issue - `Json` causes recursive error in immer `Draft`/`WritableDraft` types + // // @ts-expect-error Known issue - `Json` causes recursive error in immer `Draft`/`WritableDraft` types currentState.internalAccounts.accounts[accountId] = internalAccount; if (metadata.name) { From bb7863d529e70dbae86c869d2ccea0e8ee505da0 Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Fri, 28 Feb 2025 13:30:22 +0000 Subject: [PATCH 13/19] Fix changelogs --- packages/accounts-controller/CHANGELOG.md | 5 ++++- packages/keyring-controller/CHANGELOG.md | 8 ++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/accounts-controller/CHANGELOG.md b/packages/accounts-controller/CHANGELOG.md index 1b0a8fba30e..d10f898b05e 100644 --- a/packages/accounts-controller/CHANGELOG.md +++ b/packages/accounts-controller/CHANGELOG.md @@ -7,11 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@ethereumjs/util` from `^8.1.0` to `^9.1.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) + ## [24.1.0] ### Changed -- Bump `@ethereumjs/util` from `^8.1.0` to `^9.1.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) - Use `account.scopes` in `listMultichainAccounts` ([#5388](https://github.com/MetaMask/core/pull/5388)) - The previous logic was fragile and was relying on the account's type mainly. diff --git a/packages/keyring-controller/CHANGELOG.md b/packages/keyring-controller/CHANGELOG.md index cfdd561872a..b8f475bc7a1 100644 --- a/packages/keyring-controller/CHANGELOG.md +++ b/packages/keyring-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@ethereumjs/util` from `^8.1.0` to `^9.1.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) + ## [19.2.1] ### Changed @@ -30,10 +34,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - The action can be used to consume the `withKeyring` method of the `KeyringController` class - Support keyring metadata in KeyringController ([#5112](https://github.com/MetaMask/core/pull/5112)) -### Changed - -- Bump `@ethereumjs/util` from `^8.1.0` to `^9.1.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) - ## [19.1.0] ### Added From 23a52a9459d4fea7430a15973381c30338d7dd69 Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Mon, 3 Mar 2025 10:33:03 +0100 Subject: [PATCH 14/19] update changelogs --- packages/accounts-controller/CHANGELOG.md | 4 ++++ packages/assets-controllers/CHANGELOG.md | 4 ++++ packages/keyring-controller/CHANGELOG.md | 10 ++++++++-- packages/profile-sync-controller/CHANGELOG.md | 4 ++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/accounts-controller/CHANGELOG.md b/packages/accounts-controller/CHANGELOG.md index 606022f552f..76639985f90 100644 --- a/packages/accounts-controller/CHANGELOG.md +++ b/packages/accounts-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/keyring-internal-api` from `^4.0.3` to `^5.0.0` ([#5405](https://github.com/MetaMask/core/pull/5405)) + ## [24.1.0] ### Changed diff --git a/packages/assets-controllers/CHANGELOG.md b/packages/assets-controllers/CHANGELOG.md index 765917e01d3..6855b49808b 100644 --- a/packages/assets-controllers/CHANGELOG.md +++ b/packages/assets-controllers/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/keyring-internal-api` from `^4.0.3` to `^5.0.0` ([#5405](https://github.com/MetaMask/core/pull/5405)) + ## [51.0.2] ### Fixed diff --git a/packages/keyring-controller/CHANGELOG.md b/packages/keyring-controller/CHANGELOG.md index 24a0e68aaec..f0e0c21a2e4 100644 --- a/packages/keyring-controller/CHANGELOG.md +++ b/packages/keyring-controller/CHANGELOG.md @@ -7,13 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [19.2.1] - ### Changed - **BREAKING:** `addNewKeyring` method now returns `Promise` instead of `Promise` ([#5372](https://github.com/MetaMask/core/pull/5372)) - Consumers can use the returned `KeyringMetadata.id` to access the created keyring instance via `withKeyring`. - **BREAKING:** `withKeyring` method now requires a callback argument of type `({ keyring: SelectedKeyring; metadata: KeyringMetadata }) => Promise` ([#5372](https://github.com/MetaMask/core/pull/5372)) +- Bump `@metamask/keyring-internal-api` from `^4.0.3` to `^5.0.0` ([#5405](https://github.com/MetaMask/core/pull/5405)) +- Bump `@metamask/eth-hd-keyring` from `^10.0.0` to `^11.0.0` ([#5405](https://github.com/MetaMask/core/pull/5405)) +- Bump `@metamask/eth-simple-keyring` from `^8.1.0` to `^9.0.0` ([#5405](https://github.com/MetaMask/core/pull/5405)) + +## [19.2.1] + +### Changed + - Bump `@metamask/keyring-api"` from `^17.0.0` to `^17.2.0` ([#5366](https://github.com/MetaMask/core/pull/5366)) - Bump `@metamask/keyring-internal-api` from `^4.0.1` to `^4.0.3` ([#5356](https://github.com/MetaMask/core/pull/5356)), ([#5366](https://github.com/MetaMask/core/pull/5366)) diff --git a/packages/profile-sync-controller/CHANGELOG.md b/packages/profile-sync-controller/CHANGELOG.md index 4c8995b1d47..e2674b2a4d7 100644 --- a/packages/profile-sync-controller/CHANGELOG.md +++ b/packages/profile-sync-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Bump `@metamask/keyring-internal-api` from `^4.0.3` to `^5.0.0` ([#5405](https://github.com/MetaMask/core/pull/5405)) + ## [8.1.1] ### Changed From a7cf0a6fa1371c096c25331281f9cf3049c90e3e Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Mon, 3 Mar 2025 09:46:56 +0000 Subject: [PATCH 15/19] Use real versions --- package.json | 8 +-- packages/accounts-controller/package.json | 4 +- packages/keyring-controller/package.json | 6 +- yarn.lock | 80 ++++++++++++----------- 4 files changed, 47 insertions(+), 51 deletions(-) diff --git a/package.json b/package.json index 776f2c4afee..4e3d85966d3 100644 --- a/package.json +++ b/package.json @@ -46,13 +46,7 @@ "resolutions": { "elliptic@6.5.4": "^6.5.7", "fast-xml-parser@^4.3.4": "^4.4.1", - "ws@7.4.6": "^7.5.10", - "@metamask/eth-hd-keyring": "npm:@metamask-previews/eth-hd-keyring@10.0.1-f2dd645", - "@metamask/eth-ledger-bridge-keyring": "npm:@metamask-previews/eth-ledger-bridge-keyring@8.0.5-f2dd645", - "@metamask/eth-simple-keyring": "npm:@metamask-previews/eth-simple-keyring@8.1.1-f2dd645", - "@metamask/eth-trezor-keyring": "npm:@metamask-previews/eth-trezor-keyring@6.1.1-f2dd645", - "@metamask/eth-snap-keyring": "npm:@metamask-previews/eth-snap-keyring@11.1.0-f2dd645", - "@metamask/keyring-utils": "npm:@metamask-previews/keyring-utils@2.3.1-f2dd645" + "ws@7.4.6": "^7.5.10" }, "devDependencies": { "@babel/core": "^7.23.5", diff --git a/packages/accounts-controller/package.json b/packages/accounts-controller/package.json index 1f983b472b3..a837da41988 100644 --- a/packages/accounts-controller/package.json +++ b/packages/accounts-controller/package.json @@ -49,10 +49,10 @@ "dependencies": { "@ethereumjs/util": "^9.1.0", "@metamask/base-controller": "^8.0.0", - "@metamask/eth-snap-keyring": "^11.1.0", + "@metamask/eth-snap-keyring": "^12.0.0", "@metamask/keyring-api": "^17.2.0", "@metamask/keyring-internal-api": "^5.0.0", - "@metamask/keyring-utils": "^2.3.1", + "@metamask/keyring-utils": "^3.0.0", "@metamask/network-controller": "^22.2.1", "@metamask/snaps-sdk": "^6.17.1", "@metamask/snaps-utils": "^8.10.0", diff --git a/packages/keyring-controller/package.json b/packages/keyring-controller/package.json index e7947dda122..1f07a0429ac 100644 --- a/packages/keyring-controller/package.json +++ b/packages/keyring-controller/package.json @@ -51,9 +51,9 @@ "@keystonehq/metamask-airgapped-keyring": "^0.14.1", "@metamask/base-controller": "^8.0.0", "@metamask/browser-passworder": "^4.3.0", - "@metamask/eth-hd-keyring": "^11.0.0", + "@metamask/eth-hd-keyring": "^12.0.0", "@metamask/eth-sig-util": "^8.2.0", - "@metamask/eth-simple-keyring": "^9.0.0", + "@metamask/eth-simple-keyring": "^10.0.0", "@metamask/keyring-api": "^17.2.0", "@metamask/keyring-internal-api": "^5.0.0", "@metamask/utils": "^11.2.0", @@ -69,7 +69,7 @@ "@lavamoat/allow-scripts": "^3.0.4", "@lavamoat/preinstall-always-fail": "^2.1.0", "@metamask/auto-changelog": "^3.4.4", - "@metamask/keyring-utils": "^2.3.1", + "@metamask/keyring-utils": "^3.0.0", "@metamask/scure-bip39": "^2.1.1", "@types/jest": "^27.4.1", "deepmerge": "^4.2.2", diff --git a/yarn.lock b/yarn.lock index aa60c08470b..1c3aff84d37 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2347,11 +2347,11 @@ __metadata: "@ethereumjs/util": "npm:^9.1.0" "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/base-controller": "npm:^8.0.0" - "@metamask/eth-snap-keyring": "npm:^11.1.0" + "@metamask/eth-snap-keyring": "npm:^12.0.0" "@metamask/keyring-api": "npm:^17.2.0" "@metamask/keyring-controller": "npm:^19.2.1" "@metamask/keyring-internal-api": "npm:^5.0.0" - "@metamask/keyring-utils": "npm:^2.3.1" + "@metamask/keyring-utils": "npm:^3.0.0" "@metamask/network-controller": "npm:^22.2.1" "@metamask/providers": "npm:^18.1.1" "@metamask/snaps-controllers": "npm:^9.19.0" @@ -2937,9 +2937,9 @@ __metadata: languageName: node linkType: hard -"@metamask/eth-hd-keyring@npm:@metamask-previews/eth-hd-keyring@10.0.1-f2dd645": - version: 10.0.1-f2dd645 - resolution: "@metamask-previews/eth-hd-keyring@npm:10.0.1-f2dd645" +"@metamask/eth-hd-keyring@npm:^12.0.0": + version: 12.0.0 + resolution: "@metamask/eth-hd-keyring@npm:12.0.0" dependencies: "@ethereumjs/util": "npm:^9.1.0" "@metamask/eth-sig-util": "npm:^8.2.0" @@ -2947,7 +2947,7 @@ __metadata: "@metamask/scure-bip39": "npm:^2.1.1" "@metamask/utils": "npm:^11.1.0" ethereum-cryptography: "npm:^2.1.2" - checksum: 10/5e89ca37eda5365aeee351e56e86017f8b6d0f593d5c691166f53e92eb59bf5bd6e2b29ab8e9ff4aae723967e6014d8e3655f114a35b118d8d47e7102412c9a0 + checksum: 10/9567238a11c0e3a331a477fbe6ad5ee42b10bb943efdff9696bf178127b9d5aac2ce02295221fa19d18981231251ee25053034b7780495e2c2fc7427c5c02516 languageName: node linkType: hard @@ -3044,35 +3044,37 @@ __metadata: languageName: node linkType: hard -"@metamask/eth-simple-keyring@npm:@metamask-previews/eth-simple-keyring@8.1.1-f2dd645": - version: 8.1.1-f2dd645 - resolution: "@metamask-previews/eth-simple-keyring@npm:8.1.1-f2dd645" +"@metamask/eth-simple-keyring@npm:^10.0.0": + version: 10.0.0 + resolution: "@metamask/eth-simple-keyring@npm:10.0.0" dependencies: "@ethereumjs/util": "npm:^9.1.0" "@metamask/eth-sig-util": "npm:^8.2.0" "@metamask/utils": "npm:^11.1.0" ethereum-cryptography: "npm:^2.1.2" randombytes: "npm:^2.1.0" - checksum: 10/60864bf8d0af765a67d4676982873b249c9c6890f6c8049d0f13ccebe1d8cd7ca1bfdb7f2f27b9519c938c5fab913c379b40f0ca232caaec224f4c4e43eb47a3 + checksum: 10/e749e16cbbd3b542cda3e727ee1efb16f597c8583a0ca0bbb457b500397c0b492ecdf07965a67cec3b4bfb25fc56caa01810b23b918939dd104eea759caa339a languageName: node linkType: hard -"@metamask/eth-snap-keyring@npm:@metamask-previews/eth-snap-keyring@11.1.0-f2dd645": - version: 11.1.0-f2dd645 - resolution: "@metamask-previews/eth-snap-keyring@npm:11.1.0-f2dd645" +"@metamask/eth-snap-keyring@npm:^12.0.0": + version: 12.0.0 + resolution: "@metamask/eth-snap-keyring@npm:12.0.0" dependencies: "@ethereumjs/tx": "npm:^5.4.0" "@metamask/base-controller": "npm:^7.1.1" "@metamask/eth-sig-util": "npm:^8.2.0" - "@metamask/keyring-api": "npm:17.2.1" - "@metamask/keyring-internal-api": "npm:4.0.3" - "@metamask/keyring-internal-snap-client": "npm:4.0.1" - "@metamask/keyring-utils": "npm:2.3.1" + "@metamask/keyring-api": "npm:^17.2.1" + "@metamask/keyring-internal-api": "npm:^5.0.0" + "@metamask/keyring-internal-snap-client": "npm:^4.0.1" + "@metamask/keyring-utils": "npm:^3.0.0" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.1.0" "@types/uuid": "npm:^9.0.8" uuid: "npm:^9.0.1" - checksum: 10/897663494c23ed7db452ebd83d54c1dbedadcf83ada434ad3c39fff4b0276b6dc912cccd8027968c5ba560abf86e85e921512ac45d9f1fb537d243ddfb68a42c + peerDependencies: + "@metamask/keyring-api": ^17.2.1 + checksum: 10/9c57c618f4401b7a983daea3578090d763fcacdaf30431aaa3301360cda6537443534b37c191a3640891a9eee105e33b41a966187e5fb172f5022e1b40412222 languageName: node linkType: hard @@ -3329,7 +3331,7 @@ __metadata: languageName: node linkType: hard -"@metamask/keyring-api@npm:17.2.1, @metamask/keyring-api@npm:^17.2.0, @metamask/keyring-api@npm:^17.2.1": +"@metamask/keyring-api@npm:^17.2.0, @metamask/keyring-api@npm:^17.2.1": version: 17.2.1 resolution: "@metamask/keyring-api@npm:17.2.1" dependencies: @@ -3355,12 +3357,12 @@ __metadata: "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/base-controller": "npm:^8.0.0" "@metamask/browser-passworder": "npm:^4.3.0" - "@metamask/eth-hd-keyring": "npm:^11.0.0" + "@metamask/eth-hd-keyring": "npm:^12.0.0" "@metamask/eth-sig-util": "npm:^8.2.0" - "@metamask/eth-simple-keyring": "npm:^9.0.0" + "@metamask/eth-simple-keyring": "npm:^10.0.0" "@metamask/keyring-api": "npm:^17.2.0" "@metamask/keyring-internal-api": "npm:^5.0.0" - "@metamask/keyring-utils": "npm:^2.3.1" + "@metamask/keyring-utils": "npm:^3.0.0" "@metamask/scure-bip39": "npm:^2.1.1" "@metamask/utils": "npm:^11.2.0" "@types/jest": "npm:^27.4.1" @@ -3380,18 +3382,6 @@ __metadata: languageName: unknown linkType: soft -"@metamask/keyring-internal-api@npm:4.0.3": - version: 4.0.3 - resolution: "@metamask/keyring-internal-api@npm:4.0.3" - dependencies: - "@metamask/keyring-api": "npm:^17.2.0" - "@metamask/keyring-utils": "npm:^2.3.0" - "@metamask/superstruct": "npm:^3.1.0" - "@metamask/utils": "npm:^11.1.0" - checksum: 10/11a18a1179cfa710257319d42619f44984cfc6dae7060d9bb35019ce6869511a5bc14eea51db34535d2f9b844b8153dce231bb97e036387487dc6f7adb48fe86 - languageName: node - linkType: hard - "@metamask/keyring-internal-api@npm:^5.0.0": version: 5.0.0 resolution: "@metamask/keyring-internal-api@npm:5.0.0" @@ -3403,7 +3393,7 @@ __metadata: languageName: node linkType: hard -"@metamask/keyring-internal-snap-client@npm:4.0.1": +"@metamask/keyring-internal-snap-client@npm:^4.0.1": version: 4.0.1 resolution: "@metamask/keyring-internal-snap-client@npm:4.0.1" dependencies: @@ -3431,15 +3421,27 @@ __metadata: languageName: node linkType: hard -"@metamask/keyring-utils@npm:@metamask-previews/keyring-utils@2.3.1-f2dd645": - version: 2.3.1-f2dd645 - resolution: "@metamask-previews/keyring-utils@npm:2.3.1-f2dd645" +"@metamask/keyring-utils@npm:^2.3.0, @metamask/keyring-utils@npm:^2.3.1": + version: 2.3.1 + resolution: "@metamask/keyring-utils@npm:2.3.1" + dependencies: + "@ethereumjs/tx": "npm:^4.2.0" + "@metamask/superstruct": "npm:^3.1.0" + "@metamask/utils": "npm:^11.1.0" + bitcoin-address-validation: "npm:^2.2.3" + checksum: 10/4a11b780621d82ab2d3fe39fbaed0ea87c01139c925c4c26cb25e2361bd855eae1c7c8cf01a84d2030de3bbef65590caecfe538f37490f75cad8a0a65b318c95 + languageName: node + linkType: hard + +"@metamask/keyring-utils@npm:^3.0.0": + version: 3.0.0 + resolution: "@metamask/keyring-utils@npm:3.0.0" dependencies: "@ethereumjs/tx": "npm:^5.4.0" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.1.0" bitcoin-address-validation: "npm:^2.2.3" - checksum: 10/4f98eb522eb6361f7f08f6c9647e06249b002398c9461634c854e4996cfbcb153f551010c59fd751989d192e2fa505f7e3b7416110fdd1759d4123b65f2113fe + checksum: 10/eff3c0b9a86d6a25c5dd443946ba3ff56cb94fcb915a4eb061089819805e1e78eba2ea5cfb12a47ec4606542870c417de422f755947389ab9f3a4f08e96742db languageName: node linkType: hard From d0de840d93fbb185384c21607a9427ca2317a5b7 Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Mon, 3 Mar 2025 14:27:10 +0000 Subject: [PATCH 16/19] Update keyring-internal-api version --- packages/accounts-controller/package.json | 2 +- packages/assets-controllers/package.json | 2 +- packages/keyring-controller/package.json | 2 +- .../package.json | 2 +- packages/profile-sync-controller/package.json | 2 +- yarn.lock | 21 ++++++++++++++----- 6 files changed, 21 insertions(+), 10 deletions(-) diff --git a/packages/accounts-controller/package.json b/packages/accounts-controller/package.json index a837da41988..bb7a7cfd199 100644 --- a/packages/accounts-controller/package.json +++ b/packages/accounts-controller/package.json @@ -51,7 +51,7 @@ "@metamask/base-controller": "^8.0.0", "@metamask/eth-snap-keyring": "^12.0.0", "@metamask/keyring-api": "^17.2.0", - "@metamask/keyring-internal-api": "^5.0.0", + "@metamask/keyring-internal-api": "^6.0.0", "@metamask/keyring-utils": "^3.0.0", "@metamask/network-controller": "^22.2.1", "@metamask/snaps-sdk": "^6.17.1", diff --git a/packages/assets-controllers/package.json b/packages/assets-controllers/package.json index d7b0fb7bdda..86f1f9bd8ee 100644 --- a/packages/assets-controllers/package.json +++ b/packages/assets-controllers/package.json @@ -82,7 +82,7 @@ "@metamask/auto-changelog": "^3.4.4", "@metamask/ethjs-provider-http": "^0.3.0", "@metamask/keyring-controller": "^19.2.1", - "@metamask/keyring-internal-api": "^5.0.0", + "@metamask/keyring-internal-api": "^6.0.0", "@metamask/keyring-snap-client": "^4.0.1", "@metamask/network-controller": "^22.2.1", "@metamask/permission-controller": "^11.0.6", diff --git a/packages/keyring-controller/package.json b/packages/keyring-controller/package.json index 1f07a0429ac..f50dcb57505 100644 --- a/packages/keyring-controller/package.json +++ b/packages/keyring-controller/package.json @@ -55,7 +55,7 @@ "@metamask/eth-sig-util": "^8.2.0", "@metamask/eth-simple-keyring": "^10.0.0", "@metamask/keyring-api": "^17.2.0", - "@metamask/keyring-internal-api": "^5.0.0", + "@metamask/keyring-internal-api": "^6.0.0", "@metamask/utils": "^11.2.0", "async-mutex": "^0.5.0", "ethereumjs-wallet": "^1.0.1", diff --git a/packages/multichain-transactions-controller/package.json b/packages/multichain-transactions-controller/package.json index e3bd2f49792..9a64efe5b56 100644 --- a/packages/multichain-transactions-controller/package.json +++ b/packages/multichain-transactions-controller/package.json @@ -49,7 +49,7 @@ "dependencies": { "@metamask/base-controller": "^8.0.0", "@metamask/keyring-api": "^17.2.0", - "@metamask/keyring-internal-api": "^5.0.0", + "@metamask/keyring-internal-api": "^6.0.0", "@metamask/keyring-snap-client": "^4.0.1", "@metamask/polling-controller": "^12.0.3", "@metamask/snaps-controllers": "^9.19.0", diff --git a/packages/profile-sync-controller/package.json b/packages/profile-sync-controller/package.json index 8f085a36525..24b758cbe36 100644 --- a/packages/profile-sync-controller/package.json +++ b/packages/profile-sync-controller/package.json @@ -117,7 +117,7 @@ "@lavamoat/preinstall-always-fail": "^2.1.0", "@metamask/accounts-controller": "^24.1.0", "@metamask/auto-changelog": "^3.4.4", - "@metamask/keyring-internal-api": "^5.0.0", + "@metamask/keyring-internal-api": "^6.0.0", "@metamask/providers": "^18.1.1", "@metamask/snaps-controllers": "^9.19.0", "@types/jest": "^27.4.1", diff --git a/yarn.lock b/yarn.lock index 1c3aff84d37..0832800c581 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2350,7 +2350,7 @@ __metadata: "@metamask/eth-snap-keyring": "npm:^12.0.0" "@metamask/keyring-api": "npm:^17.2.0" "@metamask/keyring-controller": "npm:^19.2.1" - "@metamask/keyring-internal-api": "npm:^5.0.0" + "@metamask/keyring-internal-api": "npm:^6.0.0" "@metamask/keyring-utils": "npm:^3.0.0" "@metamask/network-controller": "npm:^22.2.1" "@metamask/providers": "npm:^18.1.1" @@ -2473,7 +2473,7 @@ __metadata: "@metamask/ethjs-provider-http": "npm:^0.3.0" "@metamask/keyring-api": "npm:^17.2.0" "@metamask/keyring-controller": "npm:^19.2.1" - "@metamask/keyring-internal-api": "npm:^5.0.0" + "@metamask/keyring-internal-api": "npm:^6.0.0" "@metamask/keyring-snap-client": "npm:^4.0.1" "@metamask/metamask-eth-abis": "npm:^3.1.1" "@metamask/network-controller": "npm:^22.2.1" @@ -3361,7 +3361,7 @@ __metadata: "@metamask/eth-sig-util": "npm:^8.2.0" "@metamask/eth-simple-keyring": "npm:^10.0.0" "@metamask/keyring-api": "npm:^17.2.0" - "@metamask/keyring-internal-api": "npm:^5.0.0" + "@metamask/keyring-internal-api": "npm:^6.0.0" "@metamask/keyring-utils": "npm:^3.0.0" "@metamask/scure-bip39": "npm:^2.1.1" "@metamask/utils": "npm:^11.2.0" @@ -3393,6 +3393,17 @@ __metadata: languageName: node linkType: hard +"@metamask/keyring-internal-api@npm:^6.0.0": + version: 6.0.0 + resolution: "@metamask/keyring-internal-api@npm:6.0.0" + dependencies: + "@metamask/keyring-api": "npm:^17.2.1" + "@metamask/keyring-utils": "npm:^3.0.0" + "@metamask/superstruct": "npm:^3.1.0" + checksum: 10/069945b3423e7b6bd0b8735d65e17c968e494bc3f8c06e585d6e27f09ced0027541440c9e90ffbcd59b1daf91d7848c09be010a8ceb547ed3c4f6465e810b7a8 + languageName: node + linkType: hard + "@metamask/keyring-internal-snap-client@npm:^4.0.1": version: 4.0.1 resolution: "@metamask/keyring-internal-snap-client@npm:4.0.1" @@ -3528,7 +3539,7 @@ __metadata: "@metamask/base-controller": "npm:^8.0.0" "@metamask/keyring-api": "npm:^17.2.0" "@metamask/keyring-controller": "npm:^19.2.1" - "@metamask/keyring-internal-api": "npm:^5.0.0" + "@metamask/keyring-internal-api": "npm:^6.0.0" "@metamask/keyring-snap-client": "npm:^4.0.1" "@metamask/polling-controller": "npm:^12.0.3" "@metamask/snaps-controllers": "npm:^9.19.0" @@ -3858,7 +3869,7 @@ __metadata: "@metamask/base-controller": "npm:^8.0.0" "@metamask/keyring-api": "npm:^17.2.0" "@metamask/keyring-controller": "npm:^19.2.1" - "@metamask/keyring-internal-api": "npm:^5.0.0" + "@metamask/keyring-internal-api": "npm:^6.0.0" "@metamask/network-controller": "npm:^22.2.1" "@metamask/providers": "npm:^18.1.1" "@metamask/snaps-controllers": "npm:^9.19.0" From 4b0cb25df2f7212e9a26a5d9a38f9a1dee3f142e Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Mon, 3 Mar 2025 16:33:17 +0000 Subject: [PATCH 17/19] Update changelogs --- packages/accounts-controller/CHANGELOG.md | 3 +++ packages/assets-controllers/CHANGELOG.md | 1 + packages/keyring-controller/CHANGELOG.md | 3 +++ packages/multichain-transactions-controller/CHANGELOG.md | 1 + packages/profile-sync-controller/CHANGELOG.md | 1 + 5 files changed, 9 insertions(+) diff --git a/packages/accounts-controller/CHANGELOG.md b/packages/accounts-controller/CHANGELOG.md index ad0576e236e..a5210f448a4 100644 --- a/packages/accounts-controller/CHANGELOG.md +++ b/packages/accounts-controller/CHANGELOG.md @@ -9,6 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Bump `@metamask/keyring-utils` from `^2.3.1` to `^3.0.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) +- Bump `@metamask/keyring-internal-api` from `^5.0.0` to `^6.0.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) +- Bump `@metamask/eth-snap-keyring` from `^11.1.0` to `^12.0.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) - Bump `@ethereumjs/util` from `^8.1.0` to `^9.1.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) - Bump `@metamask/keyring-internal-api` from `^4.0.3` to `^5.0.0` ([#5405](https://github.com/MetaMask/core/pull/5405)) diff --git a/packages/assets-controllers/CHANGELOG.md b/packages/assets-controllers/CHANGELOG.md index 0909b6e3689..8ae830bc298 100644 --- a/packages/assets-controllers/CHANGELOG.md +++ b/packages/assets-controllers/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Bump `@metamask/keyring-internal-api` from `^5.0.0` to `^6.0.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) - Bump `@ethereumjs/util` from `^8.1.0` to `^9.1.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) - Bump `@metamask/keyring-internal-api` from `^4.0.3` to `^5.0.0` ([#5405](https://github.com/MetaMask/core/pull/5405)) diff --git a/packages/keyring-controller/CHANGELOG.md b/packages/keyring-controller/CHANGELOG.md index e2d900574af..176c65d31f4 100644 --- a/packages/keyring-controller/CHANGELOG.md +++ b/packages/keyring-controller/CHANGELOG.md @@ -9,6 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Bump `@metamask/keyring-internal-api` from `^5.0.0` to `^6.0.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) +- Bump `@metamask/eth-simple-keyring` from `^9.0.0` to `^10.0.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) +- Bump `@metamask/eth-hd-keyring` from `^11.0.0` to `^12.0.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) - Bump `@ethereumjs/util` from `^8.1.0` to `^9.1.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) - **BREAKING:** `addNewKeyring` method now returns `Promise` instead of `Promise` ([#5372](https://github.com/MetaMask/core/pull/5372)) - Consumers can use the returned `KeyringMetadata.id` to access the created keyring instance via `withKeyring`. diff --git a/packages/multichain-transactions-controller/CHANGELOG.md b/packages/multichain-transactions-controller/CHANGELOG.md index 102cb60d5d4..0b9c8f24b2d 100644 --- a/packages/multichain-transactions-controller/CHANGELOG.md +++ b/packages/multichain-transactions-controller/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Bump `@metamask/keyring-internal-api` from `^5.0.0` to `^6.0.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) - Sort transactions (newest first) ([#5339](https://github.com/MetaMask/core/pull/5339)) - Bump `@metamask/keyring-controller"` from `^19.1.0` to `^19.2.0` ([#5357](https://github.com/MetaMask/core/pull/5357)) - Bump `@metamask/keyring-api"` from `^17.0.0` to `^17.2.0` ([#5366](https://github.com/MetaMask/core/pull/5366)) diff --git a/packages/profile-sync-controller/CHANGELOG.md b/packages/profile-sync-controller/CHANGELOG.md index e2674b2a4d7..0663179b2e8 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 +- Bump `@metamask/keyring-internal-api` from `^5.0.0` to `^6.0.0` ([#5347](https://github.com/MetaMask/core/pull/5347)) - Bump `@metamask/keyring-internal-api` from `^4.0.3` to `^5.0.0` ([#5405](https://github.com/MetaMask/core/pull/5405)) ## [8.1.1] From d5d210a4b2b8c9b4f2bd84b6d3877aa556c4ecc0 Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Wed, 5 Mar 2025 10:53:02 +0000 Subject: [PATCH 18/19] Fix unit test --- .../assets-controllers/src/Standards/ERC20Standard.test.ts | 2 +- packages/assets-controllers/src/Standards/ERC20Standard.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/assets-controllers/src/Standards/ERC20Standard.test.ts b/packages/assets-controllers/src/Standards/ERC20Standard.test.ts index 88ff8f998e8..f149c5dc000 100644 --- a/packages/assets-controllers/src/Standards/ERC20Standard.test.ts +++ b/packages/assets-controllers/src/Standards/ERC20Standard.test.ts @@ -115,7 +115,7 @@ describe('ERC20Standard', () => { const decimals = await erc20Standard.getTokenDecimals(MKR_ADDRESS); const symbol = await erc20Standard.getTokenSymbol(MKR_ADDRESS); expect(decimals).toBe('18'); - expect(symbol).toStrictEqual(expect.stringContaining('MKR')); + expect(symbol).toBe('MKR'); }); it('should fail on on empty responses', async () => { diff --git a/packages/assets-controllers/src/Standards/ERC20Standard.ts b/packages/assets-controllers/src/Standards/ERC20Standard.ts index 0015f0d8bff..71d32392d09 100644 --- a/packages/assets-controllers/src/Standards/ERC20Standard.ts +++ b/packages/assets-controllers/src/Standards/ERC20Standard.ts @@ -98,7 +98,8 @@ export class ERC20Standard { // Parse as bytes - treat empty string as failure try { - const utf8 = bytesToUtf8(hexToBytes(result)); + const resultTrimmed = result?.replace(/(00)+$/u, ''); + const utf8 = bytesToUtf8(hexToBytes(resultTrimmed)); if (utf8.length > 0) { return utf8; } From 1480337b6fab03c9cdf806eb9a6ec7861b0d68b8 Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Wed, 5 Mar 2025 16:18:26 +0000 Subject: [PATCH 19/19] Fix getTokenSymbol --- .../assets-controllers/src/Standards/ERC20Standard.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/assets-controllers/src/Standards/ERC20Standard.ts b/packages/assets-controllers/src/Standards/ERC20Standard.ts index 71d32392d09..05df1933f12 100644 --- a/packages/assets-controllers/src/Standards/ERC20Standard.ts +++ b/packages/assets-controllers/src/Standards/ERC20Standard.ts @@ -98,7 +98,14 @@ export class ERC20Standard { // Parse as bytes - treat empty string as failure try { - const resultTrimmed = result?.replace(/(00)+$/u, ''); + // Not done in bytesToUtf8 in ethereumjs/util. + const regexPreceedingAndTrailingZeroes = /^(00)+|(00)+$/gu; + + const resultTrimmed = result?.replace( + regexPreceedingAndTrailingZeroes, + '', + ); + const utf8 = bytesToUtf8(hexToBytes(resultTrimmed)); if (utf8.length > 0) { return utf8;