Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion eslint-warning-thresholds.json
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@
"jest/no-conditional-in-test": 8
},
"packages/keyring-controller/src/KeyringController.ts": {
"@typescript-eslint/no-unsafe-enum-comparison": 5,
"@typescript-eslint/no-unsafe-enum-comparison": 4,
"@typescript-eslint/no-unused-vars": 1
},
"packages/keyring-controller/tests/mocks/mockKeyring.ts": {
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@metamask/core-monorepo",
"version": "374.0.0",
"version": "376.0.0",
"private": true,
"description": "Monorepo for packages shared between MetaMask clients",
"repository": {
Expand Down
2 changes: 1 addition & 1 deletion packages/accounts-controller/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
},
"devDependencies": {
"@metamask/auto-changelog": "^3.4.4",
"@metamask/keyring-controller": "^21.0.3",
"@metamask/keyring-controller": "^21.0.4",
"@metamask/network-controller": "^23.2.0",
"@metamask/providers": "^21.0.0",
"@metamask/snaps-controllers": "^11.2.1",
Expand Down
5 changes: 4 additions & 1 deletion packages/assets-controllers/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [59.0.0]

### Added

- Add `SEI` network support ([#5610](https://github.com/MetaMask/core/pull/5610))
Expand Down Expand Up @@ -1574,7 +1576,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

- Use Ethers for AssetsContractController ([#845](https://github.com/MetaMask/core/pull/845))

[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@58.0.0...HEAD
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@59.0.0...HEAD
[59.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@58.0.0...@metamask/assets-controllers@59.0.0
[58.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@57.0.0...@metamask/assets-controllers@58.0.0
[57.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@56.0.0...@metamask/assets-controllers@57.0.0
[56.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@55.0.1...@metamask/assets-controllers@56.0.0
Expand Down
4 changes: 2 additions & 2 deletions packages/assets-controllers/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@metamask/assets-controllers",
"version": "58.0.0",
"version": "59.0.0",
"description": "Controllers which manage interactions involving ERC-20, ERC-721, and ERC-1155 tokens (including NFTs)",
"keywords": [
"MetaMask",
Expand Down Expand Up @@ -81,7 +81,7 @@
"@metamask/approval-controller": "^7.1.3",
"@metamask/auto-changelog": "^3.4.4",
"@metamask/ethjs-provider-http": "^0.3.0",
"@metamask/keyring-controller": "^21.0.3",
"@metamask/keyring-controller": "^21.0.4",
"@metamask/keyring-internal-api": "^6.0.1",
"@metamask/keyring-snap-client": "^4.1.0",
"@metamask/network-controller": "^23.2.0",
Expand Down
9 changes: 8 additions & 1 deletion packages/bridge-controller/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [18.0.0]

### Changed

- **BREAKING:** Bump `@metamask/assets-controllers` peer dependency to `^59.0.0` ([#5712](https://github.com/MetaMask/core/pull/5712))

## [17.0.0]

### Added
Expand Down Expand Up @@ -170,7 +176,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

- Initial release ([#5317](https://github.com/MetaMask/core/pull/5317))

[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@17.0.0...HEAD
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@18.0.0...HEAD
[18.0.0]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@17.0.0...@metamask/bridge-controller@18.0.0
[17.0.0]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@16.0.0...@metamask/bridge-controller@17.0.0
[16.0.0]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@15.0.0...@metamask/bridge-controller@16.0.0
[15.0.0]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@14.0.0...@metamask/bridge-controller@15.0.0
Expand Down
6 changes: 3 additions & 3 deletions packages/bridge-controller/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@metamask/bridge-controller",
"version": "17.0.0",
"version": "18.0.0",
"description": "Manages bridge-related quote fetching functionality for MetaMask",
"keywords": [
"MetaMask",
Expand Down Expand Up @@ -65,7 +65,7 @@
},
"devDependencies": {
"@metamask/accounts-controller": "^27.0.0",
"@metamask/assets-controllers": "^58.0.0",
"@metamask/assets-controllers": "^59.0.0",
"@metamask/auto-changelog": "^3.4.4",
"@metamask/eth-json-rpc-provider": "^4.1.8",
"@metamask/network-controller": "^23.2.0",
Expand All @@ -85,7 +85,7 @@
},
"peerDependencies": {
"@metamask/accounts-controller": "^27.0.0",
"@metamask/assets-controllers": "^58.0.0",
"@metamask/assets-controllers": "^59.0.0",
"@metamask/network-controller": "^23.0.0",
"@metamask/snaps-controllers": "^11.0.0",
"@metamask/transaction-controller": "^54.0.0"
Expand Down
10 changes: 9 additions & 1 deletion packages/bridge-status-controller/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [15.0.0]

### Changed

- **BREAKING:** Bump `@metamask/assets-controllers` peer dependency to `^59.0.0` ([#5712](https://github.com/MetaMask/core/pull/5712))
- **BREAKING:** Bump `@metamask/bridge-controller` peer dependency to `^18.0.0` ([#5712](https://github.com/MetaMask/core/pull/5712))

## [14.0.0]

### Added
Expand Down Expand Up @@ -154,7 +161,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

- Initial release ([#5317](https://github.com/MetaMask/core/pull/5317))

[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@14.0.0...HEAD
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@15.0.0...HEAD
[15.0.0]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@14.0.0...@metamask/bridge-status-controller@15.0.0
[14.0.0]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@13.1.0...@metamask/bridge-status-controller@14.0.0
[13.1.0]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@13.0.0...@metamask/bridge-status-controller@13.1.0
[13.0.0]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@12.0.1...@metamask/bridge-status-controller@13.0.0
Expand Down
10 changes: 5 additions & 5 deletions packages/bridge-status-controller/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@metamask/bridge-status-controller",
"version": "14.0.0",
"version": "15.0.0",
"description": "Manages bridge-related status fetching functionality for MetaMask",
"keywords": [
"MetaMask",
Expand Down Expand Up @@ -59,9 +59,9 @@
},
"devDependencies": {
"@metamask/accounts-controller": "^27.0.0",
"@metamask/assets-controllers": "^58.0.0",
"@metamask/assets-controllers": "^59.0.0",
"@metamask/auto-changelog": "^3.4.4",
"@metamask/bridge-controller": "^17.0.0",
"@metamask/bridge-controller": "^18.0.0",
"@metamask/gas-fee-controller": "^23.0.0",
"@metamask/network-controller": "^23.2.0",
"@metamask/snaps-controllers": "^11.2.1",
Expand All @@ -79,8 +79,8 @@
},
"peerDependencies": {
"@metamask/accounts-controller": "^27.0.0",
"@metamask/assets-controllers": "^58.0.0",
"@metamask/bridge-controller": "^17.0.0",
"@metamask/assets-controllers": "^59.0.0",
"@metamask/bridge-controller": "^18.0.0",
"@metamask/gas-fee-controller": "^23.0.0",
"@metamask/network-controller": "^23.0.0",
"@metamask/snaps-controllers": "^11.0.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/delegation-controller/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
"devDependencies": {
"@metamask/accounts-controller": "^27.0.0",
"@metamask/auto-changelog": "^3.4.4",
"@metamask/keyring-controller": "^21.0.3",
"@metamask/keyring-controller": "^21.0.4",
"@ts-bridge/cli": "^0.6.1",
"@types/jest": "^27.4.1",
"deepmerge": "^4.2.2",
Expand Down
9 changes: 8 additions & 1 deletion packages/keyring-controller/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [21.0.4]

### Fixed

- Ensure no duplicate accounts are persisted ([#5710](https://github.com/MetaMask/core/pull/5710))

## [21.0.3]

### Changed
Expand Down Expand Up @@ -748,7 +754,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

All changes listed after this point were applied to this package following the monorepo conversion.

[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/keyring-controller@21.0.3...HEAD
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/keyring-controller@21.0.4...HEAD
[21.0.4]: https://github.com/MetaMask/core/compare/@metamask/keyring-controller@21.0.3...@metamask/keyring-controller@21.0.4
[21.0.3]: https://github.com/MetaMask/core/compare/@metamask/keyring-controller@21.0.2...@metamask/keyring-controller@21.0.3
[21.0.2]: https://github.com/MetaMask/core/compare/@metamask/keyring-controller@21.0.1...@metamask/keyring-controller@21.0.2
[21.0.1]: https://github.com/MetaMask/core/compare/@metamask/keyring-controller@21.0.0...@metamask/keyring-controller@21.0.1
Expand Down
6 changes: 3 additions & 3 deletions packages/keyring-controller/jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ module.exports = merge(baseConfig, {
// An object that configures minimum threshold enforcement for coverage results
coverageThreshold: {
global: {
branches: 93.85,
branches: 93.67,
functions: 100,
lines: 98.93,
statements: 98.94,
lines: 98.92,
statements: 98.93,
},
},

Expand Down
2 changes: 1 addition & 1 deletion packages/keyring-controller/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@metamask/keyring-controller",
"version": "21.0.3",
"version": "21.0.4",
"description": "Stores identities seen in the wallet and manages interactions such as signing",
"keywords": [
"MetaMask",
Expand Down
15 changes: 15 additions & 0 deletions packages/keyring-controller/src/KeyringController.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,21 @@ describe('KeyringController', () => {
);
});
});

it('should throw error if the account is duplicated', async () => {
jest
.spyOn(HdKeyring.prototype, 'addAccounts')
.mockResolvedValue(['0x123']);
jest.spyOn(HdKeyring.prototype, 'getAccounts').mockReturnValue(['0x123']);
await withController(async ({ controller }) => {
jest
.spyOn(HdKeyring.prototype, 'getAccounts')
.mockReturnValue(['0x123', '0x123']);
await expect(controller.addNewAccount()).rejects.toThrow(
KeyringControllerError.DuplicatedAccount,
);
});
});
});

describe('addNewAccountForKeyring', () => {
Expand Down
41 changes: 8 additions & 33 deletions packages/keyring-controller/src/KeyringController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2277,6 +2277,9 @@ export class KeyringController extends BaseController<
*/
#updateVault(): Promise<boolean> {
return this.#withVaultLock(async () => {
// Ensure no duplicate accounts are persisted.
await this.#assertNoDuplicateAccounts();

const { encryptionKey, encryptionSalt, vault } = this.state;
// READ THIS CAREFULLY:
// We do check if the vault is still considered up-to-date, if not, we would not re-use the
Expand Down Expand Up @@ -2471,8 +2474,6 @@ export class KeyringController extends BaseController<
await keyring.addAccounts(1);
}

await this.#checkForDuplicate(type, await keyring.getAccounts());

if (type === KeyringTypes.qr) {
// In case of a QR keyring type, we need to subscribe
// to its events after creating it
Expand Down Expand Up @@ -2571,41 +2572,15 @@ export class KeyringController extends BaseController<
}

/**
* Checks for duplicate keypairs, using the the first account in the given
* array. Rejects if a duplicate is found.
*
* Only supports 'Simple Key Pair'.
* Assert that there are no duplicate accounts in the keyrings.
*
* @param type - The key pair type to check for.
* @param newAccountArray - Array of new accounts.
* @returns The account, if no duplicate is found.
* @throws If there are duplicate accounts.
*/
async #checkForDuplicate(
type: string,
newAccountArray: string[],
): Promise<string[]> {
async #assertNoDuplicateAccounts(): Promise<void> {
const accounts = await this.#getAccountsFromKeyrings();

switch (type) {
case KeyringTypes.simple: {
const isIncluded = Boolean(
accounts.find(
(key) =>
newAccountArray[0] &&
(key === newAccountArray[0] ||
key === remove0x(newAccountArray[0])),
),
);

if (isIncluded) {
throw new Error(KeyringControllerError.DuplicatedAccount);
}
return newAccountArray;
}

default: {
return newAccountArray;
}
if (new Set(accounts).size !== accounts.length) {
throw new Error(KeyringControllerError.DuplicatedAccount);
}
}

Expand Down
2 changes: 1 addition & 1 deletion packages/multichain-network-controller/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
"devDependencies": {
"@metamask/accounts-controller": "^27.0.0",
"@metamask/auto-changelog": "^3.4.4",
"@metamask/keyring-controller": "^21.0.3",
"@metamask/keyring-controller": "^21.0.4",
"@metamask/network-controller": "^23.2.0",
"@types/jest": "^27.4.1",
"@types/uuid": "^8.3.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/multichain-transactions-controller/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
"devDependencies": {
"@metamask/accounts-controller": "^27.0.0",
"@metamask/auto-changelog": "^3.4.4",
"@metamask/keyring-controller": "^21.0.3",
"@metamask/keyring-controller": "^21.0.4",
"@metamask/snaps-controllers": "^11.2.1",
"@types/jest": "^27.4.1",
"deepmerge": "^4.2.2",
Expand Down
2 changes: 1 addition & 1 deletion packages/notification-services-controller/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@
"@lavamoat/allow-scripts": "^3.0.4",
"@lavamoat/preinstall-always-fail": "^2.1.0",
"@metamask/auto-changelog": "^3.4.4",
"@metamask/keyring-controller": "^21.0.3",
"@metamask/keyring-controller": "^21.0.4",
"@metamask/profile-sync-controller": "^12.0.0",
"@types/jest": "^27.4.1",
"@types/readable-stream": "^2.3.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/preferences-controller/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
},
"devDependencies": {
"@metamask/auto-changelog": "^3.4.4",
"@metamask/keyring-controller": "^21.0.3",
"@metamask/keyring-controller": "^21.0.4",
"@types/jest": "^27.4.1",
"deepmerge": "^4.2.2",
"jest": "^27.5.1",
Expand Down
2 changes: 1 addition & 1 deletion packages/profile-sync-controller/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@
"@lavamoat/preinstall-always-fail": "^2.1.0",
"@metamask/accounts-controller": "^27.0.0",
"@metamask/auto-changelog": "^3.4.4",
"@metamask/keyring-controller": "^21.0.3",
"@metamask/keyring-controller": "^21.0.4",
"@metamask/keyring-internal-api": "^6.0.1",
"@metamask/network-controller": "^23.2.0",
"@metamask/providers": "^21.0.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/signature-controller/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
"@metamask/accounts-controller": "^27.0.0",
"@metamask/approval-controller": "^7.1.3",
"@metamask/auto-changelog": "^3.4.4",
"@metamask/keyring-controller": "^21.0.3",
"@metamask/keyring-controller": "^21.0.4",
"@metamask/logging-controller": "^6.0.4",
"@metamask/network-controller": "^23.2.0",
"@types/jest": "^27.4.1",
Expand Down
4 changes: 4 additions & 0 deletions packages/transaction-controller/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Added

- Add optional `gasTransfer` property to `GasFeeToken` ([#5681](https://github.com/MetaMask/core/pull/5681))

## [54.2.0]

### Added
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,7 @@ const GAS_FEE_TOKEN_MOCK: GasFeeToken = {
balance: '0x2',
decimals: 18,
gas: '0x3',
gasTransfer: '0x4',
maxFeePerGas: '0x4',
maxPriorityFeePerGas: '0x5',
rateWei: '0x6',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,9 @@ export type SimulationResponseTokenFee = {

/** Conversation rate of 1 token to native WEI. */
rateWei: Hex;

/** Estimated gas limit required for fee transfer. */
transferEstimate: Hex;
};

/** Response from the simulation API for a single transaction. */
Expand Down
Loading
Loading