From d181619a91012b3704faa8f2427d6c25f4b63f98 Mon Sep 17 00:00:00 2001 From: Marina Boboc <120041701+benjisclowder@users.noreply.github.com> Date: Thu, 25 Apr 2024 16:24:43 +0300 Subject: [PATCH 001/307] 11.16.0 changelog --- CHANGELOG.md | 5 ++++- package.json | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f9de607be4f0..1b664e706dd1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [11.16.0] + ## [11.14.0] ### Added - Transaction Simulations @@ -4606,7 +4608,8 @@ Update styles and spacing on the critical error page ([#20350](https://github.c - Added the ability to restore accounts from seed words. -[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v11.14.0...HEAD +[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v11.16.0...HEAD +[11.16.0]: https://github.com/MetaMask/metamask-extension/compare/v11.14.0...v11.16.0 [11.14.0]: https://github.com/MetaMask/metamask-extension/compare/v11.13.3...v11.14.0 [11.13.3]: https://github.com/MetaMask/metamask-extension/compare/v11.13.2...v11.13.3 [11.13.2]: https://github.com/MetaMask/metamask-extension/compare/v11.13.1...v11.13.2 diff --git a/package.json b/package.json index 5d435086dbb2..b81c2370b964 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metamask-crx", - "version": "11.14.0", + "version": "11.16.0", "private": true, "repository": { "type": "git", From 27963779012da97d4eebc9d410d0176015c74a42 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Wed, 1 May 2024 22:35:30 -0230 Subject: [PATCH 002/307] chore(deps): Bump phishing-controller to ^9.0.2 (v11.16.0 cherry-pick)) (#24329) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** This is a cherry-pick of #24311 for v11.16.0 This version of phishing-controller includes the changes to Stalelist update interval to 30 days and the hotlist update interval to 5 mins. ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. Co-authored-by: Kanthesha Devaramane Co-authored-by: MetaMask Bot --- .../snap-keyring/utils/isBlockedUrl.test.ts | 3 +++ lavamoat/browserify/beta/policy.json | 18 ++++---------- lavamoat/browserify/desktop/policy.json | 18 ++++---------- lavamoat/browserify/flask/policy.json | 18 ++++---------- lavamoat/browserify/main/policy.json | 18 ++++---------- lavamoat/browserify/mmi/policy.json | 18 ++++---------- package.json | 2 +- yarn.lock | 24 +++++++++---------- 8 files changed, 36 insertions(+), 83 deletions(-) diff --git a/app/scripts/lib/snap-keyring/utils/isBlockedUrl.test.ts b/app/scripts/lib/snap-keyring/utils/isBlockedUrl.test.ts index 03d949a814d1..3a493b764b35 100644 --- a/app/scripts/lib/snap-keyring/utils/isBlockedUrl.test.ts +++ b/app/scripts/lib/snap-keyring/utils/isBlockedUrl.test.ts @@ -8,6 +8,9 @@ describe('isBlockedUrl', () => { name: 'PhishingController', }); const phishingController = new PhishingController({ + // @ts-expect-error The PhishingController uses a newer verison of the package + // `@metamask/base-controller`, which has a different messenger type. This error will be + // resolved shortly when the `@metamask/base-controller` package is updated. messenger: phishingControllerMessenger, state: { phishingLists: [ diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index 4d333a7cfe6d..ba07a91a3237 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -1757,28 +1757,18 @@ "fetch": true }, "packages": { - "@metamask/base-controller": true, - "@metamask/phishing-controller>@metamask/controller-utils": true, + "@metamask/controller-utils": true, + "@metamask/phishing-controller>@metamask/base-controller": true, "@metamask/phishing-warning>eth-phishing-detect": true, "punycode": true } }, - "@metamask/phishing-controller>@metamask/controller-utils": { + "@metamask/phishing-controller>@metamask/base-controller": { "globals": { - "URL": true, - "console.error": true, - "fetch": true, "setTimeout": true }, "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, - "@metamask/ethjs>@metamask/ethjs-unit": true, - "@metamask/utils": true, - "bn.js": true, - "browserify>buffer": true, - "eslint>fast-deep-equal": true, - "eth-ens-namehash": true + "immer": true } }, "@metamask/phishing-warning>eth-phishing-detect": { diff --git a/lavamoat/browserify/desktop/policy.json b/lavamoat/browserify/desktop/policy.json index 887d53245993..4ffc86aa7e48 100644 --- a/lavamoat/browserify/desktop/policy.json +++ b/lavamoat/browserify/desktop/policy.json @@ -1877,28 +1877,18 @@ "fetch": true }, "packages": { - "@metamask/base-controller": true, - "@metamask/phishing-controller>@metamask/controller-utils": true, + "@metamask/controller-utils": true, + "@metamask/phishing-controller>@metamask/base-controller": true, "@metamask/phishing-warning>eth-phishing-detect": true, "punycode": true } }, - "@metamask/phishing-controller>@metamask/controller-utils": { + "@metamask/phishing-controller>@metamask/base-controller": { "globals": { - "URL": true, - "console.error": true, - "fetch": true, "setTimeout": true }, "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, - "@metamask/ethjs>@metamask/ethjs-unit": true, - "@metamask/utils": true, - "bn.js": true, - "browserify>buffer": true, - "eslint>fast-deep-equal": true, - "eth-ens-namehash": true + "immer": true } }, "@metamask/phishing-warning>eth-phishing-detect": { diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index c80a3c1edd75..c8d4a7555692 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -1877,28 +1877,18 @@ "fetch": true }, "packages": { - "@metamask/base-controller": true, - "@metamask/phishing-controller>@metamask/controller-utils": true, + "@metamask/controller-utils": true, + "@metamask/phishing-controller>@metamask/base-controller": true, "@metamask/phishing-warning>eth-phishing-detect": true, "punycode": true } }, - "@metamask/phishing-controller>@metamask/controller-utils": { + "@metamask/phishing-controller>@metamask/base-controller": { "globals": { - "URL": true, - "console.error": true, - "fetch": true, "setTimeout": true }, "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, - "@metamask/ethjs>@metamask/ethjs-unit": true, - "@metamask/utils": true, - "bn.js": true, - "browserify>buffer": true, - "eslint>fast-deep-equal": true, - "eth-ens-namehash": true + "immer": true } }, "@metamask/phishing-warning>eth-phishing-detect": { diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index 689e41098d34..67e2f6529261 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -1792,28 +1792,18 @@ "fetch": true }, "packages": { - "@metamask/base-controller": true, - "@metamask/phishing-controller>@metamask/controller-utils": true, + "@metamask/controller-utils": true, + "@metamask/phishing-controller>@metamask/base-controller": true, "@metamask/phishing-warning>eth-phishing-detect": true, "punycode": true } }, - "@metamask/phishing-controller>@metamask/controller-utils": { + "@metamask/phishing-controller>@metamask/base-controller": { "globals": { - "URL": true, - "console.error": true, - "fetch": true, "setTimeout": true }, "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, - "@metamask/ethjs>@metamask/ethjs-unit": true, - "@metamask/utils": true, - "bn.js": true, - "browserify>buffer": true, - "eslint>fast-deep-equal": true, - "eth-ens-namehash": true + "immer": true } }, "@metamask/phishing-warning>eth-phishing-detect": { diff --git a/lavamoat/browserify/mmi/policy.json b/lavamoat/browserify/mmi/policy.json index 1272c1f25a8e..815bba6582ad 100644 --- a/lavamoat/browserify/mmi/policy.json +++ b/lavamoat/browserify/mmi/policy.json @@ -1931,28 +1931,18 @@ "fetch": true }, "packages": { - "@metamask/base-controller": true, - "@metamask/phishing-controller>@metamask/controller-utils": true, + "@metamask/controller-utils": true, + "@metamask/phishing-controller>@metamask/base-controller": true, "@metamask/phishing-warning>eth-phishing-detect": true, "punycode": true } }, - "@metamask/phishing-controller>@metamask/controller-utils": { + "@metamask/phishing-controller>@metamask/base-controller": { "globals": { - "URL": true, - "console.error": true, - "fetch": true, "setTimeout": true }, "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, - "@metamask/ethjs>@metamask/ethjs-unit": true, - "@metamask/utils": true, - "bn.js": true, - "browserify>buffer": true, - "eslint>fast-deep-equal": true, - "eth-ens-namehash": true + "immer": true } }, "@metamask/phishing-warning>eth-phishing-detect": { diff --git a/package.json b/package.json index b81c2370b964..53f0d8a00d5c 100644 --- a/package.json +++ b/package.json @@ -310,7 +310,7 @@ "@metamask/obs-store": "^8.1.0", "@metamask/permission-controller": "^9.0.1", "@metamask/permission-log-controller": "^1.0.0", - "@metamask/phishing-controller": "^8.0.2", + "@metamask/phishing-controller": "^9.0.2", "@metamask/post-message-stream": "^8.0.0", "@metamask/ppom-validator": "^0.29.0", "@metamask/providers": "^14.0.2", diff --git a/yarn.lock b/yarn.lock index 6ea951bcc6d9..067a407710d2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4216,13 +4216,13 @@ __metadata: languageName: node linkType: hard -"@metamask/base-controller@npm:^5.0.1": - version: 5.0.1 - resolution: "@metamask/base-controller@npm:5.0.1" +"@metamask/base-controller@npm:^5.0.1, @metamask/base-controller@npm:^5.0.2": + version: 5.0.2 + resolution: "@metamask/base-controller@npm:5.0.2" dependencies: "@metamask/utils": "npm:^8.3.0" immer: "npm:^9.0.6" - checksum: 62fe2c0047ea5ae88821ab6bf3e2d72f1b732a9157cd0632a4309721fe84b7e07c21ecdbf24eebfc742d00a53963e9b72bc1bc45540ce1075cf5407cec50d8a2 + checksum: f9c142766d8cdb69c0cc93aa5cfdaeae97a8c126a5f30f75d31bfdebbc57e82574dc5a3743eceb9e3106d182d066d1517fb73991bb2d06d861d25fd1dac87dcc languageName: node linkType: hard @@ -5224,7 +5224,7 @@ __metadata: languageName: node linkType: hard -"@metamask/phishing-controller@npm:^8.0.1, @metamask/phishing-controller@npm:^8.0.2": +"@metamask/phishing-controller@npm:^8.0.1": version: 8.0.2 resolution: "@metamask/phishing-controller@npm:8.0.2" dependencies: @@ -5237,16 +5237,16 @@ __metadata: languageName: node linkType: hard -"@metamask/phishing-controller@npm:^9.0.1": - version: 9.0.1 - resolution: "@metamask/phishing-controller@npm:9.0.1" +"@metamask/phishing-controller@npm:^9.0.1, @metamask/phishing-controller@npm:^9.0.2": + version: 9.0.2 + resolution: "@metamask/phishing-controller@npm:9.0.2" dependencies: - "@metamask/base-controller": "npm:^5.0.1" - "@metamask/controller-utils": "npm:^9.0.1" + "@metamask/base-controller": "npm:^5.0.2" + "@metamask/controller-utils": "npm:^9.1.0" "@types/punycode": "npm:^2.1.0" eth-phishing-detect: "npm:^1.2.0" punycode: "npm:^2.1.1" - checksum: 6fc1c75e58f187a12eb042cb6c7f41a5c038e0fcf71d1e18f6b428f971c74961551b208fcd79885d7002b5ef5158264592cf0bb859018bacf7048a5fb6db25f3 + checksum: 2a1fa922502a42e831567ac3965489e1b61b75fc5bcd1619b417ee3747b98ab3a1381a17b68b70a121154667858ca666c91bf1c1743892640b6f1f3d221e2bde languageName: node linkType: hard @@ -24911,7 +24911,7 @@ __metadata: "@metamask/obs-store": "npm:^8.1.0" "@metamask/permission-controller": "npm:^9.0.1" "@metamask/permission-log-controller": "npm:^1.0.0" - "@metamask/phishing-controller": "npm:^8.0.2" + "@metamask/phishing-controller": "npm:^9.0.2" "@metamask/phishing-warning": "npm:^3.0.3" "@metamask/post-message-stream": "npm:^8.0.0" "@metamask/ppom-validator": "npm:^0.29.0" From 2079594718d0e80ac4cdd573b55ef49fbbeb6b5b Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Thu, 2 May 2024 07:41:17 -0230 Subject: [PATCH 003/307] v11.14.5 --- CHANGELOG.md | 5 ++++- package.json | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4dd8ff84720f..ca90de041691 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [11.14.5] + ## [11.14.4] ### Fixed - Fix bug that could cause safe-transfer-from transactions to be converted to transfer-from transactions, by removing the edit button on the safe-transfer-from confirmation screens ([#24287](https://github.com/MetaMask/metamask-extension/pull/24287)) @@ -4625,7 +4627,8 @@ Update styles and spacing on the critical error page ([#20350](https://github.c - Added the ability to restore accounts from seed words. -[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v11.14.4...HEAD +[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v11.14.5...HEAD +[11.14.5]: https://github.com/MetaMask/metamask-extension/compare/v11.14.4...v11.14.5 [11.14.4]: https://github.com/MetaMask/metamask-extension/compare/v11.14.3...v11.14.4 [11.14.3]: https://github.com/MetaMask/metamask-extension/compare/v11.14.2...v11.14.3 [11.14.2]: https://github.com/MetaMask/metamask-extension/compare/v11.14.1...v11.14.2 diff --git a/package.json b/package.json index 684d7ca7098b..996ed7df03e3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metamask-crx", - "version": "11.14.4", + "version": "11.14.5", "private": true, "repository": { "type": "git", From 8c9ed8f693313c685c43d8808d58a3d4f168523d Mon Sep 17 00:00:00 2001 From: Derek Brans Date: Thu, 2 May 2024 10:45:01 -0400 Subject: [PATCH 004/307] cherry-pick fix NFT mint simulations to v11.14.5 (#24350) cherry-pick fix NFT mint simulations by updating transaction-controller (https://github.com/MetaMask/metamask-extension/pull/24306) to v11.14.5 NOTE: This commit is not a cherry-pick of an existing commit. To ensure peer dependencies were met, yarn add @metamask/transaction-controller@^28.1.1 was run against v11.14.5 and the results were committed. --------- Co-authored-by: MetaMask Bot --- builds.yml | 2 +- lavamoat/browserify/beta/policy.json | 89 ++++++++++++++++++++--- lavamoat/browserify/desktop/policy.json | 89 ++++++++++++++++++++--- lavamoat/browserify/flask/policy.json | 89 ++++++++++++++++++++--- lavamoat/browserify/main/policy.json | 89 ++++++++++++++++++++--- lavamoat/browserify/mmi/policy.json | 89 ++++++++++++++++++++--- package.json | 2 +- yarn.lock | 96 ++++++++++++++++--------- 8 files changed, 458 insertions(+), 87 deletions(-) diff --git a/builds.yml b/builds.yml index bf949e39bc78..0e49f72bec6d 100644 --- a/builds.yml +++ b/builds.yml @@ -103,7 +103,7 @@ buildTypes: env: - INFURA_MMI_PROJECT_ID - SEGMENT_MMI_WRITE_KEY - - SENTRY_MMI_DSN + - SENTRY_MMI_DSN: '' - INFURA_ENV_KEY_REF: INFURA_MMI_PROJECT_ID - SEGMENT_WRITE_KEY_REF: SEGMENT_MMI_WRITE_KEY - ALLOW_LOCAL_SNAPS: false diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index ea011ec9acb3..8bb54d085812 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -175,8 +175,8 @@ }, "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true, - "@noble/hashes": true + "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true, + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true } }, "@ethereumjs/tx>ethereum-cryptography>@noble/curves": { @@ -184,14 +184,32 @@ "TextEncoder": true }, "packages": { - "@noble/hashes": true + "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": true + } + }, + "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, + "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": { "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@metamask/utils>@scure/base": true, - "@noble/hashes": true + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": true, + "@metamask/utils>@scure/base": true + } + }, + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@ethersproject/abi": { @@ -1394,8 +1412,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -1403,6 +1421,16 @@ "eth-ens-namehash": true } }, + "@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/gas-fee-controller>@metamask/polling-controller": { "globals": { "clearTimeout": true, @@ -1660,8 +1688,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/network-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -1669,6 +1697,16 @@ "eth-ens-namehash": true } }, + "@metamask/network-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/network-controller>@metamask/eth-json-rpc-infura": { "globals": { "setTimeout": true @@ -2136,8 +2174,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/snaps-utils>@metamask/permission-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2145,6 +2183,16 @@ "eth-ens-namehash": true } }, + "@metamask/snaps-utils>@metamask/permission-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/snaps-utils>@metamask/permission-controller>@metamask/json-rpc-engine": { "packages": { "@metamask/providers>@metamask/rpc-errors": true, @@ -2239,6 +2287,7 @@ "@metamask/transaction-controller>nonce-tracker": true, "@metamask/utils": true, "bn.js": true, + "browserify>buffer": true, "eth-method-registry": true, "fast-json-patch": true, "lodash": true, @@ -2263,8 +2312,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2272,6 +2321,16 @@ "eth-ens-namehash": true } }, + "@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/transaction-controller>nonce-tracker": { "packages": { "@ethersproject/providers": true, @@ -2326,8 +2385,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/user-operation-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2335,6 +2394,16 @@ "eth-ens-namehash": true } }, + "@metamask/user-operation-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/utils": { "globals": { "TextDecoder": true, diff --git a/lavamoat/browserify/desktop/policy.json b/lavamoat/browserify/desktop/policy.json index 39f552db13b3..cd3603fed463 100644 --- a/lavamoat/browserify/desktop/policy.json +++ b/lavamoat/browserify/desktop/policy.json @@ -175,8 +175,8 @@ }, "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true, - "@noble/hashes": true + "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true, + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true } }, "@ethereumjs/tx>ethereum-cryptography>@noble/curves": { @@ -184,14 +184,32 @@ "TextEncoder": true }, "packages": { - "@noble/hashes": true + "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": true + } + }, + "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, + "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": { "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@metamask/utils>@scure/base": true, - "@noble/hashes": true + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": true, + "@metamask/utils>@scure/base": true + } + }, + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@ethersproject/abi": { @@ -1479,8 +1497,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -1488,6 +1506,16 @@ "eth-ens-namehash": true } }, + "@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/gas-fee-controller>@metamask/polling-controller": { "globals": { "clearTimeout": true, @@ -1745,8 +1773,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/network-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -1754,6 +1782,16 @@ "eth-ens-namehash": true } }, + "@metamask/network-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/network-controller>@metamask/eth-json-rpc-infura": { "globals": { "setTimeout": true @@ -2441,8 +2479,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/snaps-utils>@metamask/permission-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2450,6 +2488,16 @@ "eth-ens-namehash": true } }, + "@metamask/snaps-utils>@metamask/permission-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/snaps-utils>@metamask/permission-controller>@metamask/json-rpc-engine": { "packages": { "@metamask/providers>@metamask/rpc-errors": true, @@ -2552,6 +2600,7 @@ "@metamask/transaction-controller>nonce-tracker": true, "@metamask/utils": true, "bn.js": true, + "browserify>buffer": true, "eth-method-registry": true, "fast-json-patch": true, "lodash": true, @@ -2576,8 +2625,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2585,6 +2634,16 @@ "eth-ens-namehash": true } }, + "@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/transaction-controller>nonce-tracker": { "packages": { "@ethersproject/providers": true, @@ -2639,8 +2698,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/user-operation-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2648,6 +2707,16 @@ "eth-ens-namehash": true } }, + "@metamask/user-operation-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/utils": { "globals": { "TextDecoder": true, diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index 8af9fed295a8..81b2f4ccf653 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -175,8 +175,8 @@ }, "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true, - "@noble/hashes": true + "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true, + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true } }, "@ethereumjs/tx>ethereum-cryptography>@noble/curves": { @@ -184,14 +184,32 @@ "TextEncoder": true }, "packages": { - "@noble/hashes": true + "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": true + } + }, + "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, + "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": { "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@metamask/utils>@scure/base": true, - "@noble/hashes": true + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": true, + "@metamask/utils>@scure/base": true + } + }, + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@ethersproject/abi": { @@ -1479,8 +1497,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -1488,6 +1506,16 @@ "eth-ens-namehash": true } }, + "@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/gas-fee-controller>@metamask/polling-controller": { "globals": { "clearTimeout": true, @@ -1745,8 +1773,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/network-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -1754,6 +1782,16 @@ "eth-ens-namehash": true } }, + "@metamask/network-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/network-controller>@metamask/eth-json-rpc-infura": { "globals": { "setTimeout": true @@ -2493,8 +2531,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/snaps-utils>@metamask/permission-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2502,6 +2540,16 @@ "eth-ens-namehash": true } }, + "@metamask/snaps-utils>@metamask/permission-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/snaps-utils>@metamask/permission-controller>@metamask/json-rpc-engine": { "packages": { "@metamask/providers>@metamask/rpc-errors": true, @@ -2604,6 +2652,7 @@ "@metamask/transaction-controller>nonce-tracker": true, "@metamask/utils": true, "bn.js": true, + "browserify>buffer": true, "eth-method-registry": true, "fast-json-patch": true, "lodash": true, @@ -2628,8 +2677,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2637,6 +2686,16 @@ "eth-ens-namehash": true } }, + "@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/transaction-controller>nonce-tracker": { "packages": { "@ethersproject/providers": true, @@ -2691,8 +2750,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/user-operation-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2700,6 +2759,16 @@ "eth-ens-namehash": true } }, + "@metamask/user-operation-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/utils": { "globals": { "TextDecoder": true, diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index 83a5bc37d2d5..c9d166583bcb 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -175,8 +175,8 @@ }, "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true, - "@noble/hashes": true + "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true, + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true } }, "@ethereumjs/tx>ethereum-cryptography>@noble/curves": { @@ -184,14 +184,32 @@ "TextEncoder": true }, "packages": { - "@noble/hashes": true + "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": true + } + }, + "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, + "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": { "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@metamask/utils>@scure/base": true, - "@noble/hashes": true + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": true, + "@metamask/utils>@scure/base": true + } + }, + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@ethersproject/abi": { @@ -1394,8 +1412,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -1403,6 +1421,16 @@ "eth-ens-namehash": true } }, + "@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/gas-fee-controller>@metamask/polling-controller": { "globals": { "clearTimeout": true, @@ -1660,8 +1688,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/network-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -1669,6 +1697,16 @@ "eth-ens-namehash": true } }, + "@metamask/network-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/network-controller>@metamask/eth-json-rpc-infura": { "globals": { "setTimeout": true @@ -2408,8 +2446,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/snaps-utils>@metamask/permission-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2417,6 +2455,16 @@ "eth-ens-namehash": true } }, + "@metamask/snaps-utils>@metamask/permission-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/snaps-utils>@metamask/permission-controller>@metamask/json-rpc-engine": { "packages": { "@metamask/providers>@metamask/rpc-errors": true, @@ -2519,6 +2567,7 @@ "@metamask/transaction-controller>nonce-tracker": true, "@metamask/utils": true, "bn.js": true, + "browserify>buffer": true, "eth-method-registry": true, "fast-json-patch": true, "lodash": true, @@ -2543,8 +2592,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2552,6 +2601,16 @@ "eth-ens-namehash": true } }, + "@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/transaction-controller>nonce-tracker": { "packages": { "@ethersproject/providers": true, @@ -2606,8 +2665,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/user-operation-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2615,6 +2674,16 @@ "eth-ens-namehash": true } }, + "@metamask/user-operation-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/utils": { "globals": { "TextDecoder": true, diff --git a/lavamoat/browserify/mmi/policy.json b/lavamoat/browserify/mmi/policy.json index 9f77db1857d0..76a3331553e5 100644 --- a/lavamoat/browserify/mmi/policy.json +++ b/lavamoat/browserify/mmi/policy.json @@ -175,8 +175,8 @@ }, "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true, - "@noble/hashes": true + "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true, + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true } }, "@ethereumjs/tx>ethereum-cryptography>@noble/curves": { @@ -184,14 +184,32 @@ "TextEncoder": true }, "packages": { - "@noble/hashes": true + "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": true + } + }, + "@ethereumjs/tx>ethereum-cryptography>@noble/curves>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, + "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": { "packages": { "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, - "@metamask/utils>@scure/base": true, - "@noble/hashes": true + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": true, + "@metamask/utils>@scure/base": true + } + }, + "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@ethersproject/abi": { @@ -1533,8 +1551,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -1542,6 +1560,16 @@ "eth-ens-namehash": true } }, + "@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/gas-fee-controller>@metamask/polling-controller": { "globals": { "clearTimeout": true, @@ -1799,8 +1827,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/network-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -1808,6 +1836,16 @@ "eth-ens-namehash": true } }, + "@metamask/network-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/network-controller>@metamask/eth-json-rpc-infura": { "globals": { "setTimeout": true @@ -2547,8 +2585,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/snaps-utils>@metamask/permission-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2556,6 +2594,16 @@ "eth-ens-namehash": true } }, + "@metamask/snaps-utils>@metamask/permission-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/snaps-utils>@metamask/permission-controller>@metamask/json-rpc-engine": { "packages": { "@metamask/providers>@metamask/rpc-errors": true, @@ -2658,6 +2706,7 @@ "@metamask/transaction-controller>nonce-tracker": true, "@metamask/utils": true, "bn.js": true, + "browserify>buffer": true, "eth-method-registry": true, "fast-json-patch": true, "lodash": true, @@ -2682,8 +2731,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2691,6 +2740,16 @@ "eth-ens-namehash": true } }, + "@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/transaction-controller>nonce-tracker": { "packages": { "@ethersproject/providers": true, @@ -2745,8 +2804,8 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, + "@metamask/user-operation-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2754,6 +2813,16 @@ "eth-ens-namehash": true } }, + "@metamask/user-operation-controller>@metamask/controller-utils>@spruceid/siwe-parser": { + "globals": { + "console.error": true, + "console.log": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, + "@noble/hashes": true + } + }, "@metamask/utils": { "globals": { "TextDecoder": true, diff --git a/package.json b/package.json index 996ed7df03e3..8f758b0e6271 100644 --- a/package.json +++ b/package.json @@ -321,7 +321,7 @@ "@metamask/snaps-rpc-methods": "^7.0.1", "@metamask/snaps-sdk": "^3.1.1", "@metamask/snaps-utils": "^7.1.0", - "@metamask/transaction-controller": "^27.0.1", + "@metamask/transaction-controller": "^28.1.1", "@metamask/user-operation-controller": "^6.0.0", "@metamask/utils": "^8.2.1", "@ngraveio/bc-ur": "^1.1.12", diff --git a/yarn.lock b/yarn.lock index e1297788a9b3..066fba52b2e7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4116,13 +4116,13 @@ __metadata: languageName: node linkType: hard -"@metamask/base-controller@npm:^5.0.1": - version: 5.0.1 - resolution: "@metamask/base-controller@npm:5.0.1" +"@metamask/base-controller@npm:^5.0.1, @metamask/base-controller@npm:^5.0.2": + version: 5.0.2 + resolution: "@metamask/base-controller@npm:5.0.2" dependencies: "@metamask/utils": "npm:^8.3.0" immer: "npm:^9.0.6" - checksum: 62fe2c0047ea5ae88821ab6bf3e2d72f1b732a9157cd0632a4309721fe84b7e07c21ecdbf24eebfc742d00a53963e9b72bc1bc45540ce1075cf5407cec50d8a2 + checksum: f9c142766d8cdb69c0cc93aa5cfdaeae97a8c126a5f30f75d31bfdebbc57e82574dc5a3743eceb9e3106d182d066d1517fb73991bb2d06d861d25fd1dac87dcc languageName: node linkType: hard @@ -4182,20 +4182,20 @@ __metadata: languageName: node linkType: hard -"@metamask/controller-utils@npm:^9.0.1, @metamask/controller-utils@npm:^9.0.2": - version: 9.0.2 - resolution: "@metamask/controller-utils@npm:9.0.2" +"@metamask/controller-utils@npm:^9.0.1, @metamask/controller-utils@npm:^9.0.2, @metamask/controller-utils@npm:^9.1.0": + version: 9.1.0 + resolution: "@metamask/controller-utils@npm:9.1.0" dependencies: "@ethereumjs/util": "npm:^8.1.0" "@metamask/eth-query": "npm:^4.0.0" "@metamask/ethjs-unit": "npm:^0.3.0" "@metamask/utils": "npm:^8.3.0" - "@spruceid/siwe-parser": "npm:1.1.3" + "@spruceid/siwe-parser": "npm:2.1.0" "@types/bn.js": "npm:^5.1.5" bn.js: "npm:^5.2.1" eth-ens-namehash: "npm:^2.0.8" fast-deep-equal: "npm:^3.1.3" - checksum: edf8f23d349da01bb9e9906bc2825612eaa422f5c13d19b820ee84c3366d79900f9cd98e6e89b02b9ffd241510c1d7615b99b4263ce79a43d88ad4dffdb028f7 + checksum: cc17c0574eea34d80265d39c7410a3cb4ec5718d26f3e1f4252616ae31b431f817754b37c542d9707640508dc1a1dc2a705fc6d51ccc65f84a1ccaec1d7e6c8e languageName: node linkType: hard @@ -4695,16 +4695,16 @@ __metadata: languageName: node linkType: hard -"@metamask/gas-fee-controller@npm:^15.0.0": - version: 15.0.0 - resolution: "@metamask/gas-fee-controller@npm:15.0.0" +"@metamask/gas-fee-controller@npm:^15.1.0": + version: 15.1.1 + resolution: "@metamask/gas-fee-controller@npm:15.1.1" dependencies: - "@metamask/base-controller": "npm:^5.0.1" - "@metamask/controller-utils": "npm:^9.0.2" + "@metamask/base-controller": "npm:^5.0.2" + "@metamask/controller-utils": "npm:^9.1.0" "@metamask/eth-query": "npm:^4.0.0" "@metamask/ethjs-unit": "npm:^0.3.0" "@metamask/network-controller": "npm:^18.1.0" - "@metamask/polling-controller": "npm:^6.0.1" + "@metamask/polling-controller": "npm:^6.0.2" "@metamask/utils": "npm:^8.3.0" "@types/bn.js": "npm:^5.1.5" "@types/uuid": "npm:^8.3.0" @@ -4712,7 +4712,7 @@ __metadata: uuid: "npm:^8.3.2" peerDependencies: "@metamask/network-controller": ^18.0.0 - checksum: f4ca2ca113d543d3f1282df8e171d06a8cd2ce99ad7df54d1796416f9c93dd62d998af09c124fbd5138b4592602c958d30c9fe03a8ed06ccaecd8745cd6a3913 + checksum: 6e0ddf10d4dde13e4da8bb17e7503a68f64369e51958059168f3400941b540dd02df417e60451a5bdb2be9d9fb1d4a11ae9685f811b0a4f1744ff23ce1c7b1ff languageName: node linkType: hard @@ -5235,20 +5235,20 @@ __metadata: languageName: node linkType: hard -"@metamask/polling-controller@npm:^6.0.1": - version: 6.0.1 - resolution: "@metamask/polling-controller@npm:6.0.1" +"@metamask/polling-controller@npm:^6.0.1, @metamask/polling-controller@npm:^6.0.2": + version: 6.0.2 + resolution: "@metamask/polling-controller@npm:6.0.2" dependencies: - "@metamask/base-controller": "npm:^5.0.1" - "@metamask/controller-utils": "npm:^9.0.1" - "@metamask/network-controller": "npm:^18.0.1" + "@metamask/base-controller": "npm:^5.0.2" + "@metamask/controller-utils": "npm:^9.1.0" + "@metamask/network-controller": "npm:^18.1.0" "@metamask/utils": "npm:^8.3.0" "@types/uuid": "npm:^8.3.0" fast-json-stable-stringify: "npm:^2.1.0" uuid: "npm:^8.3.2" peerDependencies: "@metamask/network-controller": ^18.0.0 - checksum: 178f6b978043f824bf841ec03321406e0d095cdb7880cb9fd4f4cbe12e7bef2d13bfdfce31dc58ae9f89694824f994a3385b2d033e14575780bef47e2d12e8e9 + checksum: 86fecbb621621546d2c97a60da85831eba5b57bbd9a4d361865ebe2ff99edff9393e90ffd027d3506d2d8213bc3c4ea7614a4f5b506173d6b1954ff6b43ccd35 languageName: node linkType: hard @@ -5797,9 +5797,9 @@ __metadata: languageName: node linkType: hard -"@metamask/transaction-controller@npm:^27.0.1": - version: 27.0.1 - resolution: "@metamask/transaction-controller@npm:27.0.1" +"@metamask/transaction-controller@npm:^28.1.1": + version: 28.1.1 + resolution: "@metamask/transaction-controller@npm:28.1.1" dependencies: "@ethereumjs/common": "npm:^3.2.0" "@ethereumjs/tx": "npm:^4.2.0" @@ -5809,9 +5809,9 @@ __metadata: "@ethersproject/providers": "npm:^5.7.0" "@metamask/approval-controller": "npm:^6.0.1" "@metamask/base-controller": "npm:^5.0.1" - "@metamask/controller-utils": "npm:^9.0.2" + "@metamask/controller-utils": "npm:^9.1.0" "@metamask/eth-query": "npm:^4.0.0" - "@metamask/gas-fee-controller": "npm:^15.0.0" + "@metamask/gas-fee-controller": "npm:^15.1.0" "@metamask/metamask-eth-abis": "npm:^3.1.1" "@metamask/network-controller": "npm:^18.1.0" "@metamask/rpc-errors": "npm:^6.2.1" @@ -5828,7 +5828,7 @@ __metadata: "@metamask/approval-controller": ^6.0.0 "@metamask/gas-fee-controller": ^15.0.0 "@metamask/network-controller": ^18.0.0 - checksum: aeb682e943120de802f1125a55b4fbd50924cf21d939d264b29562ad302aa59c242eb2ace4a473f0383a3f88bb9b26b3460075797300bbb824ceed8057c170f8 + checksum: 01e6f0e1431e56cc0ef986cbfa99cf37e0a44aade14419c69d815be77847bb33b43049b90c6e6961bb5070ecfe1420c893db8a68c0fd6977d5ec28d9853d6554 languageName: node linkType: hard @@ -5977,13 +5977,20 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:1.3.3, @noble/hashes@npm:^1.0.0, @noble/hashes@npm:^1.2.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.3.2, @noble/hashes@npm:^1.3.3, @noble/hashes@npm:~1.3.2": +"@noble/hashes@npm:1.3.3, @noble/hashes@npm:~1.3.2": version: 1.3.3 resolution: "@noble/hashes@npm:1.3.3" checksum: 1025ddde4d24630e95c0818e63d2d54ee131b980fe113312d17ed7468bc18f54486ac86c907685759f8a7e13c2f9b9e83ec7b67d1cc20836f36b5e4a65bb102d languageName: node linkType: hard +"@noble/hashes@npm:^1.0.0, @noble/hashes@npm:^1.1.2, @noble/hashes@npm:^1.2.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.3.2, @noble/hashes@npm:^1.3.3": + version: 1.4.0 + resolution: "@noble/hashes@npm:1.4.0" + checksum: e156e65794c473794c52fa9d06baf1eb20903d0d96719530f523cc4450f6c721a957c544796e6efd0197b2296e7cd70efeb312f861465e17940a3e3c7e0febc6 + languageName: node + linkType: hard + "@noble/hashes@npm:~1.1.1": version: 1.1.3 resolution: "@noble/hashes@npm:1.1.3" @@ -7253,6 +7260,18 @@ __metadata: languageName: node linkType: hard +"@spruceid/siwe-parser@npm:2.1.0": + version: 2.1.0 + resolution: "@spruceid/siwe-parser@npm:2.1.0" + dependencies: + "@noble/hashes": "npm:^1.1.2" + apg-js: "npm:^4.1.1" + uri-js: "npm:^4.4.1" + valid-url: "npm:^1.0.9" + checksum: 12198f613f15000b5ec2e2f59c4c3c34918c88d48e0c2e2cfdb34ce926b89a13b6f18e7612777ffb8fa25ca2c226577e47c72592e76823b03770b67c54f78d38 + languageName: node + linkType: hard + "@storybook/addon-a11y@npm:^7.4.6": version: 7.4.6 resolution: "@storybook/addon-a11y@npm:7.4.6" @@ -24933,7 +24952,7 @@ __metadata: "@metamask/snaps-utils": "npm:^7.1.0" "@metamask/test-bundler": "npm:^1.0.0" "@metamask/test-dapp": "npm:^8.4.0" - "@metamask/transaction-controller": "npm:^27.0.1" + "@metamask/transaction-controller": "npm:^28.1.1" "@metamask/user-operation-controller": "npm:^6.0.0" "@metamask/utils": "npm:^8.2.1" "@ngraveio/bc-ur": "npm:^1.1.12" @@ -34458,12 +34477,12 @@ __metadata: languageName: node linkType: hard -"uri-js@npm:^4.2.2": - version: 4.2.2 - resolution: "uri-js@npm:4.2.2" +"uri-js@npm:^4.2.2, uri-js@npm:^4.4.1": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" dependencies: punycode: "npm:^2.1.0" - checksum: e9499d30bfa7559acc255ab196bf7be0db9e5e5550cc0dfd8aeaeabbe423c323b18e261b31b996a409465b29f6ad814f8683f0c4f476ee347a57103dba0fb7f7 + checksum: b271ca7e3d46b7160222e3afa3e531505161c9a4e097febae9664e4b59912f4cbe94861361a4175edac3a03fee99d91e44b6a58c17a634bc5a664b19fc76fbcb languageName: node linkType: hard @@ -34766,6 +34785,13 @@ __metadata: languageName: node linkType: hard +"valid-url@npm:^1.0.9": + version: 1.0.9 + resolution: "valid-url@npm:1.0.9" + checksum: 343dfaf85eb3691dc8eb93f7bc007be1ee6091e6c6d1a68bf633cb85e4bf2930e34ca9214fb2c3330de5b652510b257a8ee1ff0a0a37df0925e9dabf93ee512d + languageName: node + linkType: hard + "validate-npm-package-license@npm:^3.0.1": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" From 2d9f5f779421aed5cbf1a315de6acab1d0e46339 Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Thu, 2 May 2024 15:43:40 -0230 Subject: [PATCH 005/307] fix (cherry-pick): "Transaction Finalized" metrics event on transaction confirmation (#24338) (#24353) Cherry-picks 9a7f82a036 (#24338) to v11.14.5 --- app/scripts/lib/transaction/metrics.test.ts | 4 ++-- app/scripts/lib/transaction/metrics.ts | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/scripts/lib/transaction/metrics.test.ts b/app/scripts/lib/transaction/metrics.test.ts index a4eb13918d7d..acf82095ed24 100644 --- a/app/scripts/lib/transaction/metrics.test.ts +++ b/app/scripts/lib/transaction/metrics.test.ts @@ -571,7 +571,7 @@ describe('Transaction metrics', () => { mockTransactionMeta.submittedTime = 123; await handleTransactionConfirmed(mockTransactionMetricsRequest, { - transactionMeta: mockTransactionMeta, + ...mockTransactionMeta, actionId: mockActionId, } as any); @@ -627,7 +627,7 @@ describe('Transaction metrics', () => { mockTransactionMetaWithBlockaid.submittedTime = 123; await handleTransactionConfirmed(mockTransactionMetricsRequest, { - transactionMeta: mockTransactionMetaWithBlockaid, + ...mockTransactionMetaWithBlockaid, actionId: mockActionId, } as any); diff --git a/app/scripts/lib/transaction/metrics.ts b/app/scripts/lib/transaction/metrics.ts index 1335878393a9..108a60557855 100644 --- a/app/scripts/lib/transaction/metrics.ts +++ b/app/scripts/lib/transaction/metrics.ts @@ -92,6 +92,11 @@ export type TransactionEventPayload = { error?: string; }; +export type TransactionMetaEventPayload = TransactionMeta & { + actionId?: string; + error?: string; +}; + /** * This function is called when a transaction is added to the controller. * @@ -185,14 +190,14 @@ export const handleTransactionFailed = async ( */ export const handleTransactionConfirmed = async ( transactionMetricsRequest: TransactionMetricsRequest, - transactionEventPayload: TransactionEventPayload, + transactionEventPayload: TransactionMetaEventPayload, ) => { - if (!transactionEventPayload.transactionMeta) { + if (Object.keys(transactionEventPayload).length === 0) { return; } const extraParams = {} as Record; - const { transactionMeta } = transactionEventPayload; + const transactionMeta = { ...transactionEventPayload }; const { txReceipt } = transactionMeta; extraParams.gas_used = txReceipt?.gasUsed; @@ -209,7 +214,10 @@ export const handleTransactionConfirmed = async ( await createUpdateFinalizeTransactionEventFragment({ eventName: TransactionMetaMetricsEvent.finalized, extraParams, - transactionEventPayload, + transactionEventPayload: { + actionId: transactionMeta.actionId, + transactionMeta, + }, transactionMetricsRequest, }); }; From 949e73314fc0f1200e811c99023facd348e5ecb0 Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Thu, 2 May 2024 15:43:56 -0230 Subject: [PATCH 006/307] fix (cherry-pick): Fix #24322 - Disable edits for all dapp initiated transactions (#24334) (#24354) Cherry picks 4a1853cf7b (#24322) to v11.14.5 Co-authored-by: David Walsh --- .../dapp-interactions/dapp-tx-edit.spec.js | 6 ++-- ...confirm-page-container-header.component.js | 33 +++++++++++-------- ...rm-page-container-header.component.test.js | 3 ++ .../confirm-page-container.component.js | 1 + .../confirm-send-ether.test.js.snap | 18 +--------- 5 files changed, 27 insertions(+), 34 deletions(-) diff --git a/test/e2e/tests/dapp-interactions/dapp-tx-edit.spec.js b/test/e2e/tests/dapp-interactions/dapp-tx-edit.spec.js index 94e4b0084766..df98799a462d 100644 --- a/test/e2e/tests/dapp-interactions/dapp-tx-edit.spec.js +++ b/test/e2e/tests/dapp-interactions/dapp-tx-edit.spec.js @@ -56,7 +56,7 @@ describe('Editing confirmations of dapp initiated contract interactions', functi ); }); - it('should show an edit button on a simple ETH send initiated by a dapp', async function () { + it('should NOT show an edit button on a simple ETH send initiated by a dapp', async function () { await withFixtures( { dapp: true, @@ -88,8 +88,8 @@ describe('Editing confirmations of dapp initiated contract interactions', functi ); assert.equal( editTransactionButton, - true, - `Edit transaction button should be visible on a contract interaction created by a dapp`, + false, + `Edit transaction button should not be visible on a simple send transaction created by a dapp`, ); }, ); diff --git a/ui/pages/confirmations/components/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.js b/ui/pages/confirmations/components/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.js index 2bbda20bd117..8c3e0ad664de 100644 --- a/ui/pages/confirmations/components/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.js +++ b/ui/pages/confirmations/components/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.js @@ -3,6 +3,7 @@ import PropTypes from 'prop-types'; import { ENVIRONMENT_TYPE_POPUP, ENVIRONMENT_TYPE_NOTIFICATION, + ORIGIN_METAMASK, } from '../../../../../../shared/constants/app'; import { getEnvironmentType } from '../../../../../../app/scripts/lib/util'; import NetworkDisplay from '../../../../../components/app/network-display'; @@ -18,6 +19,7 @@ export default function ConfirmPageContainerHeader({ accountAddress, showAccountInHeader, children, + origin, }) { const t = useI18nContext(); const windowType = getEnvironmentType(); @@ -48,21 +50,23 @@ export default function ConfirmPageContainerHeader({ ) : ( -
- - onEdit()} + origin === ORIGIN_METAMASK && ( +
- {t('edit')} - -
+ + onEdit()} + > + {t('edit')} + +
+ ) )} {isFullScreen ? null : } @@ -77,4 +81,5 @@ ConfirmPageContainerHeader.propTypes = { showEdit: PropTypes.bool, onEdit: PropTypes.func, children: PropTypes.node, + origin: PropTypes.string, }; diff --git a/ui/pages/confirmations/components/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.test.js b/ui/pages/confirmations/components/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.test.js index e7043c283d19..6a48d8473a8e 100644 --- a/ui/pages/confirmations/components/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.test.js +++ b/ui/pages/confirmations/components/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.test.js @@ -2,6 +2,7 @@ import React from 'react'; import configureStore from 'redux-mock-store'; import { NetworkStatus } from '@metamask/network-controller'; import { NetworkType } from '@metamask/controller-utils'; +import { ORIGIN_METAMASK } from '../../../../../../shared/constants/app'; import { renderWithProvider } from '../../../../../../test/lib/render-helpers'; import { getEnvironmentType } from '../../../../../../app/scripts/lib/util'; import ConfirmPageContainerHeader from '.'; @@ -38,6 +39,7 @@ describe('Confirm Detail Row Component', () => { onEdit: jest.fn(), showAccountInHeader: false, accountAddress: '0xmockAccountAddress', + origin: ORIGIN_METAMASK, }; const { container } = renderWithProvider( @@ -56,6 +58,7 @@ describe('Confirm Detail Row Component', () => { onEdit: jest.fn(), showAccountInHeader: false, accountAddress: '0xmockAccountAddress', + origin: ORIGIN_METAMASK, }; const { container } = renderWithProvider( diff --git a/ui/pages/confirmations/components/confirm-page-container/confirm-page-container.component.js b/ui/pages/confirmations/components/confirm-page-container/confirm-page-container.component.js index 841a12d0e232..ee006040c196 100644 --- a/ui/pages/confirmations/components/confirm-page-container/confirm-page-container.component.js +++ b/ui/pages/confirmations/components/confirm-page-container/confirm-page-container.component.js @@ -219,6 +219,7 @@ const ConfirmPageContainer = (props) => { onEdit={() => onEdit()} showAccountInHeader={showAccountInHeader} accountAddress={fromAddress} + origin={origin} > {hideSenderToRecipient ? null : (
-
- - - Edit - -
-
+ />
Date: Thu, 2 May 2024 16:04:43 -0230 Subject: [PATCH 007/307] Update changelog for v11.14.5 --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca90de041691..1a654af5e960 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ## [11.14.5] +### Fixed +- Prevent users from making fund loss errors while editing transactions by removing the edit button when on any confirmation screen for a transaction proposed by a dapp ([#24322](https://github.com/MetaMask/metamask-extension/pull/24322)) +- Reduce failed simulations on NFT mint confirmations ([#24350]https://github.com/MetaMask/metamask-extension/pull/24350) ## [11.14.4] ### Fixed From ebc1e049712c3a47c554b1068abf8626d4e09e14 Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Fri, 3 May 2024 23:14:21 -0230 Subject: [PATCH 008/307] Revert "Revert "Merge pull request #24001 from MetaMask/Version-v11.15.0"" This reverts commit a262bb2da20a07f73c4e9102a0104548ef2a5f2f. --- .circleci/config.yml | 99 +- .eslintrc.js | 1 + .github/CODEOWNERS | 3 + .../scripts/check-pr-has-required-labels.ts | 2 +- .github/workflows/security-code-scanner.yml | 2 +- .github/workflows/sonar.yml | 14 +- .metamaskrc.dist | 1 + .storybook/main.js | 10 + .vscode/cspell.json | 84 + .vscode/launch.json | 2 +- .vscode/settings.json | 1 - ...-assets-controllers-patch-0f46262fea.patch | 40 + ...sk-controller-utils-patch-a87ddc3d4b.patch | 12 + ...ing-controller-npm-13.0.0-d94816a680.patch | 60 +- .yarnrc.yml | 13 +- CHANGELOG.md | 41 + README.md | 32 +- app/_locales/de/messages.json | 20 +- app/_locales/el/messages.json | 20 +- app/_locales/en/messages.json | 185 ++- app/_locales/es/messages.json | 20 +- app/_locales/es_419/messages.json | 2 +- app/_locales/fr/messages.json | 20 +- app/_locales/hi/messages.json | 20 +- app/_locales/id/messages.json | 20 +- app/_locales/ja/messages.json | 20 +- app/_locales/ko/messages.json | 20 +- app/_locales/pt/messages.json | 20 +- app/_locales/pt_BR/messages.json | 2 +- app/_locales/ru/messages.json | 20 +- app/_locales/tl/messages.json | 20 +- app/_locales/tr/messages.json | 20 +- app/_locales/vi/messages.json | 20 +- app/_locales/zh_CN/messages.json | 20 +- app/_locales/zh_TW/messages.json | 2 +- app/background.html | 4 +- app/home.html | 4 +- app/images/arbitrum.svg | 52 +- .../logo/metamask-smart-transactions.png | Bin 115666 -> 0 bytes .../ramps-card-activity-illustration.png | Bin 0 -> 140442 bytes app/images/ramps-card-nft-illustration.png | Bin 0 -> 308256 bytes app/images/ramps-card-token-illustration.png | Bin 0 -> 220132 bytes .../smart-transactions-opt-in-background.svg | 8 + app/loading.html | 4 +- app/manifest/v2/_base.json | 12 +- app/manifest/v3/_base.json | 12 +- app/notification.html | 9 +- app/popup.html | 4 +- app/scripts/app-init.js | 24 +- app/scripts/constants/contracts.ts | 5 + app/scripts/controllers/app-state.js | 43 + .../authentication/auth-snap-requests.ts | 32 + .../authentication-controller.test.ts | 291 ++++ .../authentication-controller.ts | 262 +++ .../authentication/mocks/mockServices.ts | 62 + .../authentication/services.test.ts | 100 ++ .../controllers/authentication/services.ts | 116 ++ .../controllers/decrypt-message.test.ts | 22 + app/scripts/controllers/decrypt-message.ts | 10 + .../controllers/encryption-public-key.test.ts | 30 + .../controllers/encryption-public-key.ts | 10 + app/scripts/controllers/mmi-controller.ts | 26 + app/scripts/controllers/onboarding.test.ts | 57 + app/scripts/controllers/preferences.js | 2 + .../lib/AbstractPetnamesBridge.test.ts | 2 + .../AccountIdentitiesPetnamesBridge.test.ts | 6 + .../lib/AddressBookPetnamesBridge.test.ts | 4 + app/scripts/lib/AddressBookPetnamesBridge.ts | 10 + app/scripts/lib/SnapsNameProvider.test.ts | 2 + app/scripts/lib/backup.test.js | 1 + app/scripts/lib/encryptor-factory.test.ts | 174 ++ app/scripts/lib/encryptor-factory.ts | 2 +- .../lib/keyring-snaps-permissions.test.ts | 6 + .../lattice-offscreen-keyring.ts | 2 + app/scripts/lib/ppom/indexed-db-backend.ts | 12 + app/scripts/lib/ppom/ppom-middleware.test.ts | 195 ++- app/scripts/lib/ppom/ppom-middleware.ts | 108 +- app/scripts/lib/ppom/ppom-util.ts | 2 + app/scripts/lib/setupSentry.js | 49 +- app/scripts/lib/snap-keyring/metrics.test.ts | 2 + app/scripts/lib/snap-keyring/snap-keyring.ts | 10 + .../snap-keyring/utils/isBlockedUrl.test.ts | 2 + .../lib/snap-keyring/utils/showResult.ts | 4 + app/scripts/lib/transaction/metrics.test.ts | 56 + app/scripts/lib/transaction/metrics.ts | 44 +- app/scripts/lib/transaction/mmi-hooks.test.ts | 20 + app/scripts/lib/transaction/mmi-hooks.ts | 2 + .../transaction/smart-transactions.test.ts | 348 ++++ .../lib/transaction/smart-transactions.ts | 328 ++++ app/scripts/lib/transaction/util.test.ts | 2 + app/scripts/lib/transaction/util.ts | 8 +- app/scripts/lib/util.ts | 2 + app/scripts/metamask-controller.js | 261 +-- app/scripts/migrations/081.ts | 2 +- app/scripts/migrations/095.ts | 10 + app/scripts/migrations/096.ts | 14 + app/scripts/migrations/097.ts | 2 + app/scripts/migrations/098.ts | 2 + app/scripts/migrations/099.test.ts | 2 + app/scripts/migrations/099.ts | 4 + app/scripts/migrations/100.ts | 2 + app/scripts/migrations/102.ts | 4 + app/scripts/migrations/104.ts | 4 + app/scripts/migrations/105.ts | 6 + app/scripts/migrations/108.ts | 2 + app/scripts/migrations/109.ts | 2 + app/scripts/migrations/110.ts | 2 + app/scripts/migrations/111.ts | 2 + app/scripts/migrations/112.ts | 2 + app/scripts/migrations/114.ts | 2 + app/scripts/snaps/preinstalled-snaps.ts | 8 + app/trezor-usb-permissions.html | 6 +- builds.yml | 23 +- development/build/scripts.js | 263 +-- .../build/set-environment-variables.js | 215 +++ development/build/static.js | 18 +- development/build/utils.js | 36 - .../charts/flamegraph/chart/index.html | 13 +- development/charts/table/index.html | 2 +- development/lib/build-type.d.ts | 2 + development/lib/run-command.js | 2 +- development/sourcemap-validator.js | 6 +- .../app/public/index.html | 4 +- jest.config.js | 2 + lavamoat/browserify/beta/policy.json | 473 +++--- lavamoat/browserify/desktop/policy.json | 536 +++--- lavamoat/browserify/flask/policy.json | 538 ++++--- lavamoat/browserify/main/policy.json | 538 ++++--- lavamoat/browserify/mmi/policy.json | 538 ++++--- lavamoat/build-system/policy.json | 7 +- offscreen/offscreen.html | 2 +- offscreen/scripts/callback-processor.ts | 4 + offscreen/scripts/ledger.ts | 2 + offscreen/scripts/trezor.ts | 2 + package.json | 44 +- shared/constants/app.ts | 5 + shared/constants/metametrics.ts | 1 + shared/constants/mmi-controller.ts | 20 + shared/constants/network.test.ts | 67 + shared/constants/network.ts | 20 - shared/constants/smartTransactions.js | 5 - shared/constants/smartTransactions.ts | 21 + shared/constants/swaps.ts | 32 +- shared/constants/urls.ts | 3 + shared/lib/fetch-with-cache.ts | 4 + shared/lib/token-util.ts | 10 + shared/modules/Numeric.ts | 16 +- shared/modules/feature-flags.ts | 41 + shared/modules/i18n.test.ts | 4 + shared/modules/i18n.ts | 6 + shared/modules/metametrics.test.ts | 151 ++ shared/modules/metametrics.ts | 36 + shared/modules/selectors/feature-flags.ts | 35 + shared/modules/selectors/index.test.ts | 244 +++ shared/modules/selectors/index.ts | 2 + .../modules/selectors/smart-transactions.ts | 130 ++ sonar-project.properties | 2 +- test/data/confirmations/typed_sign.ts | 23 + test/data/mock-state.json | 1 + test/e2e/fixture-builder.js | 2 + test/e2e/helpers.js | 41 +- test/e2e/json-rpc/switchEthereumChain.spec.js | 16 +- test/e2e/mmi/helpers/dapps-helpers.ts | 2 + test/e2e/mmi/pageObjects/mmi-main-page.ts | 12 + test/e2e/mmi/pageObjects/mmi-mainMenu-page.ts | 11 + test/e2e/mmi/pageObjects/mmi-signup-page.ts | 8 +- test/e2e/mmi/specs/extension.visual.spec.ts | 4 + test/e2e/mmi/specs/navigation.spec.ts | 10 +- test/e2e/mmi/specs/transactions.spec.ts | 43 +- test/e2e/mmi/specs/visual.spec.ts | 2 + test/e2e/mock-cdn/update-mock-cdn-files.js | 127 ++ .../index.html | 2 +- test/e2e/mv3-perf-stats/bundle-size.js | 16 +- test/e2e/restore/MetaMaskUserData.json | 1 + test/e2e/run-all.js | 6 +- test/e2e/run-e2e-test.js | 156 +- test/e2e/tests/custom-rpc-history.spec.js | 2 +- .../dapp-interactions.spec.js | 2 +- test/e2e/tests/metrics/swaps.spec.js | 18 +- .../tests/network/chain-interactions.spec.js | 2 +- .../network/switch-custom-network.spec.js | 12 +- test/e2e/tests/onboarding/onboarding.spec.js | 4 +- .../multiple-networks-dapps-txs.spec.js | 16 +- .../request-queuing/switch-network.spec.js | 12 +- ...rs-after-init-opt-in-background-state.json | 8 +- .../errors-after-init-opt-in-ui-state.json | 6 +- ...s-before-init-opt-in-background-state.json | 1 + .../errors-before-init-opt-in-ui-state.json | 1 + .../tokens/custom-token-add-approve.spec.js | 4 +- .../tokens/custom-token-send-transfer.spec.js | 6 +- .../tests/tokens/nft/auto-detect-nft.spec.js | 26 +- test/e2e/tests/tokens/nft/mocks.js | 7 +- test/e2e/tests/tokens/nft/remove-nft.spec.js | 52 +- test/e2e/tests/transaction/send-eth.spec.js | 4 +- test/e2e/vault-decryption-chrome.spec.js | 11 +- test/env.js | 2 + test/jest/index.js | 5 +- test/jest/mock-store.js | 22 +- test/jest/setup.js | 5 + types/global.d.ts | 6 + types/react-tippy.d.ts | 4 + .../app/add-network/add-network.test.js | 7 + ui/components/app/app-components.scss | 1 + ui/components/app/asset-list/asset-list.js | 143 +- ....test.js => asset-list.ramps-card.test.js} | 22 +- .../app/asset-list/asset-list.test.js | 57 +- ui/components/app/confirm/info/info.test.tsx | 2 + ui/components/app/confirm/info/info.tsx | 2 + .../app/confirm/info/row/address.test.tsx | 2 + .../app/confirm/info/row/currency.test.tsx | 2 + .../hooks/useTokenExchangeRate.test.tsx | 2 + .../incoming-transaction-toggle.tsx | 10 + .../safe-component-list.js | 2 + .../mmi-signature-mismatch-banner.tsx | 1 - .../transaction-already-confirmed.tsx | 6 + .../app/name/name-details/metrics.ts | 8 + .../app/name/name-details/name-details.tsx | 4 + ui/components/app/network-display/index.scss | 3 +- ui/components/app/nft-details/nft-details.js | 36 +- .../app/nft-details/nft-details.test.js | 27 +- ui/components/app/nfts-tab/nfts-tab.js | 260 +-- ui/components/app/nfts-tab/nfts-tab.test.js | 34 +- .../app/smart-transactions/index.scss | 13 + .../smart-transactions-opt-in-modal.tsx | 224 +++ .../keyring-snap-removal-warning.test.tsx | 2 + .../app/snaps/snap-ui-markdown/index.scss | 11 - .../snap-ui-markdown/snap-ui-markdown.js | 7 +- .../app/snaps/snap-ui-renderer/utils.ts | 2 + .../QuizContent/QuizContent.tsx | 2 + .../app/srp-quiz-modal/SRPQuiz/SRPQuiz.tsx | 2 + ui/components/app/srp-quiz-modal/types.ts | 2 + .../__snapshots__/token-cell.test.js.snap | 26 +- ...transaction-list-item-details.component.js | 31 +- .../smart-transaction-list-item.component.js | 21 +- .../transaction-list-item.component.js | 5 +- .../transaction-list-item.stories.js | 7 - .../transaction-list.component.js | 193 ++- .../component-library/box/box.test.tsx | 2 + .../component-library/box/box.types.ts | 2 + .../component-library/checkbox/checkbox.scss | 1 + .../checkbox/checkbox.types.ts | 4 + .../form-text-field/form-text-field.tsx | 2 + .../modal-content/modal-content.types.ts | 2 + .../modal-focus/modal-focus.tsx | 2 + .../select-button/select-button.types.ts | 6 + .../select-option/select-option.types.ts | 4 + .../select-wrapper/select-wrapper.tsx | 2 + .../select-wrapper/select-wrapper.types.ts | 28 + .../account-list-item.test.js.snap | 45 +- .../account-list-item/account-list-item.js | 102 +- .../multichain/account-list-item/index.scss | 23 +- .../__snapshots__/account-picker.test.js.snap | 11 + .../account-picker/account-picker.js | 66 +- .../multichain/address-copy-button/index.scss | 2 - .../__snapshots__/app-header.test.js.snap | 45 + .../multichain/app-header/app-header.js | 17 +- .../asset-list-conversion-button.js | 90 -- .../asset-list-conversion-button.stories.js | 28 - .../asset-list-conversion-button/index.js | 1 - .../asset-list-conversion-button/index.scss | 20 - .../asset-balance/asset-balance-text.test.tsx | 6 + .../asset-balance/asset-balance-text.tsx | 2 + .../asset-picker-amount.test.tsx | 2 + .../asset-picker-modal/asset-picker-modal.tsx | 6 + .../asset-picker/asset-picker.test.tsx | 4 + .../asset-picker/asset-picker.tsx | 2 + .../connect-account-modal.types.ts | 2 + .../connect-accounts-modal-list.tsx | 9 +- .../connect-accounts-modal.stories.tsx | 1 + .../connect-accounts-modal.test.tsx | 2 + .../connect-accounts-modal.tsx | 12 +- .../connected-accounts-menu.test.tsx | 2 + .../connected-accounts-menu.tsx | 13 +- .../connected-status/connected-status.tsx | 2 + ui/components/multichain/index.js | 2 +- .../multichain/multichain-components.scss | 2 +- .../network-list-menu/network-list-menu.js | 21 + .../network-list-menu.test.js | 46 +- .../__snapshots__/connections.test.tsx.snap | 296 ++-- .../pages/connections/connections.test.tsx | 38 +- .../pages/connections/connections.tsx | 278 +++- .../permissions-page/permissions-page.js | 3 +- .../send/__snapshots__/send.test.js.snap | 88 +- .../account-picker.test.tsx.snap | 43 + .../__snapshots__/your-accounts.test.tsx.snap | 270 +++- .../pages/send/components/content.tsx | 2 + .../multichain/pages/send/components/hex.tsx | 2 + .../pages/send/components/recipient.tsx | 2 + .../pages/send/components/your-accounts.tsx | 2 + .../permission-details-modal.tsx | 2 + ui/components/multichain/ramps-card/index.js | 1 + .../multichain/ramps-card/index.scss | 30 + .../multichain/ramps-card/ramps-card.js | 127 ++ .../ramps-card/ramps-card.stories.js | 37 + .../multichain/receive-token-link/index.ts | 1 + .../receive-token-link/receive-token-link.tsx | 67 + ui/components/multichain/toast/toast.test.tsx | 2 + ui/components/multichain/toast/toast.tsx | 4 +- .../token-list-item.test.js.snap | 22 +- .../token-list-item/token-list-item.js | 124 +- .../token-list-item/token-list-item.test.js | 55 + ui/components/ui/box/box.d.ts | 2 + .../currency-display.component.d.ts | 6 + ui/components/ui/disclosure/disclosure.scss | 5 +- .../ui/form-combo-field/form-combo-field.tsx | 12 + .../ui/loading-indicator/loading-indicator.js | 6 +- .../loading-indicator/loading-indicator.scss | 6 +- ui/components/ui/new-network-info/index.scss | 2 +- .../ui/new-network-info/new-network-info.js | 6 +- ui/ducks/app/app.ts | 8 + ui/ducks/metamask/metamask.js | 2 + ui/ducks/swaps/swaps.js | 28 +- ui/ducks/swaps/swaps.test.js | 65 - ui/helpers/constants/routes.ts | 3 + ui/helpers/constants/settings.js | 14 + ui/helpers/utils/settings-search.test.js | 6 +- ui/helpers/utils/tx-helper.ts | 14 + ui/hooks/experiences/useRamps.test.js | 112 +- ui/hooks/experiences/useRamps.ts | 16 +- ui/hooks/useDisplayName.test.ts | 2 + ui/hooks/useDisplayName.ts | 2 + ui/hooks/useFirstPartyContractName.test.ts | 2 + ui/hooks/useModalProps.test.ts | 2 + ui/hooks/useModalProps.ts | 4 + ui/hooks/useName.test.ts | 4 + ui/hooks/usePolling.ts | 4 + ui/hooks/useTheme.test.ts | 2 + ui/index.js | 38 + .../confirm/blockaid-alert/blockaid-alert.tsx | 5 +- .../footer/__snapshots__/footer.test.tsx.snap | 2 +- .../components/confirm/footer/footer.test.tsx | 4 + .../components/confirm/footer/footer.tsx | 6 +- .../components/confirm/footer/index.scss | 6 + .../components/confirm/header/header.scss | 1 + .../info/__snapshots__/info.test.tsx.snap | 289 ++-- .../components/confirm/info/info.tsx | 32 +- .../__snapshots__/personal-sign.test.tsx.snap | 74 +- .../info/personal-sign/personal-sign.test.tsx | 23 + .../info/personal-sign/personal-sign.tsx | 11 +- .../__snapshots__/typed-sign-v1.test.tsx.snap | 125 ++ .../typed-sign-v1/typed-sign-v1.stories.tsx | 32 + .../info/typed-sign-v1/typed-sign-v1.test.tsx | 35 + .../info/typed-sign-v1/typed-sign-v1.tsx | 54 + .../__snapshots__/typed-sign.test.tsx.snap | 1431 +++++++++-------- .../confirm/info/typed-sign/typed-sign.tsx | 8 +- .../nav/__snapshots__/nav.test.tsx.snap | 1 + .../components/confirm/nav/nav.test.tsx | 2 + .../components/confirm/nav/nav.tsx | 7 +- .../row/__snapshots__/dataTree.test.tsx.snap | 602 +++++++ .../components/confirm/row/dataTree.test.tsx | 83 + .../components/confirm/row/dataTree.tsx | 59 + .../typedSignDataV1.test.tsx.snap | 65 + .../typedSignDataV1.stories.tsx | 37 + .../typedSignDataV1.test.tsx | 23 + .../typed-sign-data-v1/typedSignDataV1.tsx | 29 + .../__snapshots__/typedSignData.test.tsx.snap | 805 +++++----- .../confirm/row/typed-sign-data/dataTree.tsx | 43 - .../typed-sign-data/typedSignData.test.tsx | 4 + .../row/typed-sign-data/typedSignData.tsx | 11 +- .../scroll-to-bottom.test.tsx | 19 +- .../scroll-to-bottom/scroll-to-bottom.tsx | 10 +- ui/pages/confirmations/components/index.scss | 3 +- ...ecurity-provider-banner-alert.test.js.snap | 138 +- .../blockaid-banner-alert.test.js.snap | 528 +++--- .../blockaid-banner-alert.js | 7 +- .../security-provider-banner-alert.js | 35 +- .../signature-request-original.component.js | 7 +- .../signature-request-siwe.js | 7 +- .../simulation-details/simulation-details.tsx | 1 + .../useSimulationMetrics.test.ts | 10 + .../useSimulationMetrics.ts | 2 + .../transaction-alerts/transaction-alerts.js | 64 +- .../confirm-approve-content.component.js | 7 +- .../confirm-send-ether.test.js.snap | 2 +- .../confirm-transaction-base.test.js.snap | 2 +- .../confirm-transaction-base.component.js | 32 +- .../confirm-transaction-base.container.js | 17 + .../confirm-transaction.component.js | 9 - .../__snapshots__/confirm.test.tsx.snap | 797 ++++----- ui/pages/confirmations/confirm/confirm.tsx | 20 +- .../confirmation/ResultTemplate.test.ts | 6 + .../confirmation/ResultTemplate.ts | 8 + .../remove-snap-account.test.js.snap | 43 + .../confirmation/templates/index.js | 10 +- .../smart-transaction-status-page.js | 28 + .../hooks/setCurrentConfirmation.test.tsx | 4 + .../hooks/useConfirmationNetworkInfo.test.ts | 55 +- .../hooks/useConfirmationNetworkInfo.ts | 11 +- .../hooks/useCurrentConfirmation.test.ts | 35 + .../hooks/useCurrentConfirmation.ts | 11 +- .../token-allowance/token-allowance.js | 7 +- ui/pages/confirmations/types/confirm.ts | 9 +- ui/pages/confirmations/utils/confirm.test.ts | 4 + ui/pages/home/home.component.js | 44 +- ui/pages/home/home.container.js | 3 + .../__snapshots__/remind-srp.test.tsx.snap | 252 +++ ui/pages/institutional/remind-srp/index.scss | 3 + .../remind-srp/remind-srp.test.tsx | 42 + .../institutional/remind-srp/remind-srp.tsx | 133 ++ .../create-password/create-password.js | 6 +- ui/pages/onboarding-flow/onboarding-flow.js | 8 + ui/pages/pages.scss | 2 + ui/pages/routes/routes.component.js | 94 +- ui/pages/routes/routes.container.js | 26 + .../advanced-tab.component.test.js.snap | 80 + .../advanced-tab/advanced-tab.component.js | 92 +- .../advanced-tab.component.test.js | 19 +- .../advanced-tab/advanced-tab.container.js | 6 + .../experimental-tab.component.js | 32 + .../experimental-tab.container.js | 7 + .../__snapshots__/security-tab.test.js.snap | 8 +- .../security-tab/security-tab.component.js | 10 +- ...mart-transactions-status-page.test.js.snap | 443 +++++ .../smart-transaction-status-page/index.scss | 34 + .../smart-transaction-status-page/index.ts | 1 + .../smart-transaction-status-page.tsx | 531 ++++++ .../smart-transactions-status-page.test.js | 145 ++ .../awaiting-signatures.js | 6 +- ui/pages/swaps/awaiting-swap/awaiting-swap.js | 6 +- ui/pages/swaps/build-quote/build-quote.js | 38 +- .../dropdown-search-list.js | 8 +- ui/pages/swaps/index.js | 6 +- .../loading-swaps-quotes.js | 6 +- .../prepare-swap-page/prepare-swap-page.js | 65 +- .../swaps/prepare-swap-page/review-quote.js | 6 +- .../smart-transactions-popover.stories.tsx | 39 - .../smart-transactions-popover.tsx | 116 -- .../slippage-buttons.test.js.snap | 47 - .../slippage-buttons/slippage-buttons.js | 78 +- .../slippage-buttons/slippage-buttons.test.js | 26 - .../smart-transaction-status.js | 6 +- ui/pages/swaps/swaps.util.ts | 34 + .../transaction-settings.test.js.snap | 34 - .../transaction-settings.js | 107 +- .../transaction-settings.test.js | 27 - ui/pages/swaps/view-quote/view-quote.js | 6 +- ui/selectors/permissions.js | 47 +- ui/selectors/selectors.js | 392 +++-- ui/selectors/selectors.test.js | 162 +- ui/selectors/transactions.js | 23 +- ui/store/actions.test.js | 34 + ui/store/actions.ts | 156 +- ui/store/background-connection.ts | 10 + ui/store/institutional/institution-actions.ts | 4 + .../institutional/institution-background.ts | 14 + ui/store/store.ts | 4 + yarn.lock | 732 +++++---- 447 files changed, 15983 insertions(+), 6500 deletions(-) create mode 100644 .vscode/cspell.json create mode 100644 .yarn/patches/@metamask-assets-controllers-patch-0f46262fea.patch create mode 100644 .yarn/patches/@metamask-controller-utils-patch-a87ddc3d4b.patch delete mode 100644 app/images/logo/metamask-smart-transactions.png create mode 100644 app/images/ramps-card-activity-illustration.png create mode 100644 app/images/ramps-card-nft-illustration.png create mode 100644 app/images/ramps-card-token-illustration.png create mode 100644 app/images/smart-transactions/smart-transactions-opt-in-background.svg create mode 100644 app/scripts/controllers/authentication/auth-snap-requests.ts create mode 100644 app/scripts/controllers/authentication/authentication-controller.test.ts create mode 100644 app/scripts/controllers/authentication/authentication-controller.ts create mode 100644 app/scripts/controllers/authentication/mocks/mockServices.ts create mode 100644 app/scripts/controllers/authentication/services.test.ts create mode 100644 app/scripts/controllers/authentication/services.ts create mode 100644 app/scripts/controllers/onboarding.test.ts create mode 100644 app/scripts/lib/encryptor-factory.test.ts create mode 100644 app/scripts/lib/transaction/smart-transactions.test.ts create mode 100644 app/scripts/lib/transaction/smart-transactions.ts create mode 100644 app/scripts/snaps/preinstalled-snaps.ts create mode 100644 development/build/set-environment-variables.js delete mode 100644 shared/constants/smartTransactions.js create mode 100644 shared/constants/smartTransactions.ts create mode 100644 shared/constants/urls.ts create mode 100644 shared/modules/feature-flags.ts create mode 100644 shared/modules/metametrics.test.ts create mode 100644 shared/modules/metametrics.ts create mode 100644 shared/modules/selectors/feature-flags.ts create mode 100644 shared/modules/selectors/index.test.ts create mode 100644 shared/modules/selectors/index.ts create mode 100644 shared/modules/selectors/smart-transactions.ts create mode 100644 test/e2e/mock-cdn/update-mock-cdn-files.js rename ui/components/app/asset-list/{asset-list.buy-receive.test.js => asset-list.ramps-card.test.js} (66%) create mode 100644 ui/components/app/smart-transactions/index.scss create mode 100644 ui/components/app/smart-transactions/smart-transactions-opt-in-modal.tsx delete mode 100644 ui/components/multichain/asset-list-conversion-button/asset-list-conversion-button.js delete mode 100644 ui/components/multichain/asset-list-conversion-button/asset-list-conversion-button.stories.js delete mode 100644 ui/components/multichain/asset-list-conversion-button/index.js delete mode 100644 ui/components/multichain/asset-list-conversion-button/index.scss create mode 100644 ui/components/multichain/ramps-card/index.js create mode 100644 ui/components/multichain/ramps-card/index.scss create mode 100644 ui/components/multichain/ramps-card/ramps-card.js create mode 100644 ui/components/multichain/ramps-card/ramps-card.stories.js create mode 100644 ui/components/multichain/receive-token-link/index.ts create mode 100644 ui/components/multichain/receive-token-link/receive-token-link.tsx create mode 100644 ui/pages/confirmations/components/confirm/footer/index.scss create mode 100644 ui/pages/confirmations/components/confirm/info/typed-sign-v1/__snapshots__/typed-sign-v1.test.tsx.snap create mode 100644 ui/pages/confirmations/components/confirm/info/typed-sign-v1/typed-sign-v1.stories.tsx create mode 100644 ui/pages/confirmations/components/confirm/info/typed-sign-v1/typed-sign-v1.test.tsx create mode 100644 ui/pages/confirmations/components/confirm/info/typed-sign-v1/typed-sign-v1.tsx create mode 100644 ui/pages/confirmations/components/confirm/row/__snapshots__/dataTree.test.tsx.snap create mode 100644 ui/pages/confirmations/components/confirm/row/dataTree.test.tsx create mode 100644 ui/pages/confirmations/components/confirm/row/dataTree.tsx create mode 100644 ui/pages/confirmations/components/confirm/row/typed-sign-data-v1/__snapshots__/typedSignDataV1.test.tsx.snap create mode 100644 ui/pages/confirmations/components/confirm/row/typed-sign-data-v1/typedSignDataV1.stories.tsx create mode 100644 ui/pages/confirmations/components/confirm/row/typed-sign-data-v1/typedSignDataV1.test.tsx create mode 100644 ui/pages/confirmations/components/confirm/row/typed-sign-data-v1/typedSignDataV1.tsx delete mode 100644 ui/pages/confirmations/components/confirm/row/typed-sign-data/dataTree.tsx create mode 100644 ui/pages/confirmations/confirmation/templates/smart-transaction-status-page.js create mode 100644 ui/pages/institutional/remind-srp/__snapshots__/remind-srp.test.tsx.snap create mode 100644 ui/pages/institutional/remind-srp/index.scss create mode 100644 ui/pages/institutional/remind-srp/remind-srp.test.tsx create mode 100644 ui/pages/institutional/remind-srp/remind-srp.tsx create mode 100644 ui/pages/smart-transactions/smart-transaction-status-page/__snapshots__/smart-transactions-status-page.test.js.snap create mode 100644 ui/pages/smart-transactions/smart-transaction-status-page/index.scss create mode 100644 ui/pages/smart-transactions/smart-transaction-status-page/index.ts create mode 100644 ui/pages/smart-transactions/smart-transaction-status-page/smart-transaction-status-page.tsx create mode 100644 ui/pages/smart-transactions/smart-transaction-status-page/smart-transactions-status-page.test.js delete mode 100644 ui/pages/swaps/prepare-swap-page/smart-transactions-popover.stories.tsx delete mode 100644 ui/pages/swaps/prepare-swap-page/smart-transactions-popover.tsx diff --git a/.circleci/config.yml b/.circleci/config.yml index 3097e060ff6f..81cc863d1bbe 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -67,6 +67,18 @@ aliases: git checkout -B "$CIRCLE_BRANCH" "$CIRCLE_SHA1" fi + # Check if MMI Optional tests should run + - &check-mmi-optional + name: Check if MMI Optional tests should run + command: | + RUN_MMI_OPTIONAL=$(cat ./RUN_MMI_OPTIONAL) + if [[ "${CIRCLE_BRANCH}" == "develop" || "${RUN_MMI_OPTIONAL}" == "true" ]]; then + echo "Running MMI Optional tests" + else + echo "Skipping MMI Optional tests" + circleci step halt + fi + workflows: test_and_release: jobs: @@ -77,6 +89,7 @@ workflows: - trigger-beta-build: requires: - prep-deps + - check-pr-tag - prep-deps - test-deps-audit: requires: @@ -132,6 +145,7 @@ workflows: - prep-build-test-mmi-playwright: requires: - prep-deps + - check-pr-tag - prep-build-storybook: requires: - prep-deps @@ -373,6 +387,68 @@ jobs: name: Create GitHub Pull Request for version command: .circleci/scripts/release-create-release-pr.sh + check-pr-tag: + docker: + - image: cimg/base:stable + steps: + - run: + name: Check for MMI Team Tag + command: | + #!/bin/bash + + # GitHub Personal Access Token for API Authentication + GITHUB_TOKEN="${GITHUB_TOKEN}" + BRANCH="${CIRCLE_BRANCH}" + + # Fetch the PRs associated with the current branch and check the response + PR_RESPONSE=$(curl -s -H "Authorization: token ${GITHUB_TOKEN}" \ + "https://api.github.com/repos/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/pulls?state=open&head=${CIRCLE_PROJECT_USERNAME}:${BRANCH}") + echo "https://api.github.com/repos/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/pulls?state=open&head=${CIRCLE_PROJECT_USERNAME}:${BRANCH}" + + # Check if the response contains valid JSON + if ! echo "$PR_RESPONSE" | jq empty; then + echo "Failed to parse JSON response." + echo "$PR_RESPONSE" + exit 1 + fi + + # Check if we received an array of PRs + if ! echo "$PR_RESPONSE" | jq -e '. | type == "array"'; then + echo "$PR_RESPONSE" + echo "Expected an array of PRs, got something else." + exit 1 + fi + + # Check if the array of PRs is empty + PR_COUNT=$(echo "$PR_RESPONSE" | jq '. | length') + + # If no PRs are found, exit gracefully + if [ "$PR_COUNT" -eq 0 ]; then + echo "No open PRs found. Exiting." + echo "false" > ./RUN_MMI_OPTIONAL + exit 0 + fi + + # Extract label names from the PR_RESPONSE + LABEL_NAMES=$(echo "$PR_RESPONSE" | jq -r '.[0].labels[].name') + + echo "Labels found: $LABEL_NAMES" + + # Check if "team-mmi" label is present + if echo "$LABEL_NAMES" | grep -qw "team-mmi"; then + echo "team-mmi tag found." + # assign the RUN_MMI_OPTIONAL variable to true + echo "true" > ./RUN_MMI_OPTIONAL + else + echo "team-mmi tag not found." + # assign the RUN_MMI_OPTIONAL variable to false + echo "false" > ./RUN_MMI_OPTIONAL + fi + - persist_to_workspace: + root: . + paths: + - RUN_MMI_OPTIONAL + prep-deps: executor: node-browsers-medium steps: @@ -640,6 +716,7 @@ jobs: - run: *shallow-git-clone - attach_workspace: at: . + - run: *check-mmi-optional - run: name: Build MMI extension for Playwright e2e command: | @@ -654,6 +731,7 @@ jobs: - persist_to_workspace: root: . paths: + - RUN_MMI_OPTIONAL - dist-test-mmi-playwright - builds-test-mmi-playwright - store_artifacts: @@ -875,7 +953,7 @@ jobs: command: | if .circleci/scripts/test-run-e2e.sh then - timeout 20m yarn test:e2e:chrome --retries 2 --debug + timeout 20m yarn test:e2e:chrome --retries 2 fi no_output_timeout: 5m - store_artifacts: @@ -902,7 +980,7 @@ jobs: command: | if .circleci/scripts/test-run-e2e.sh then - timeout 20m yarn test:e2e:chrome --retries 2 --debug + timeout 20m yarn test:e2e:chrome --retries 2 fi no_output_timeout: 5m environment: @@ -931,7 +1009,7 @@ jobs: command: | if .circleci/scripts/test-run-e2e.sh then - timeout 20m yarn test:e2e:chrome --retries 2 --debug || echo "Temporarily suppressing MV3 e2e test failures" + timeout 20m yarn test:e2e:chrome --retries 2 || echo "Temporarily suppressing MV3 e2e test failures" fi no_output_timeout: 5m - store_artifacts: @@ -1009,7 +1087,7 @@ jobs: command: | if .circleci/scripts/test-run-e2e.sh then - timeout 20m yarn test:e2e:chrome:rpc --retries 2 --debug --build-type=mmi + timeout 20m yarn test:e2e:chrome:rpc --retries 2 --build-type=mmi fi no_output_timeout: 5m - store_artifacts: @@ -1029,7 +1107,7 @@ jobs: command: | if .circleci/scripts/test-run-e2e.sh then - yarn test:e2e:single test/e2e/vault-decryption-chrome.spec.js --browser chrome --retries 2 --debug + yarn test:e2e:single test/e2e/vault-decryption-chrome.spec.js --browser chrome --retries 2 fi no_output_timeout: 5m @@ -1051,7 +1129,7 @@ jobs: command: | if .circleci/scripts/test-run-e2e.sh then - timeout 20m yarn test:e2e:firefox:flask --retries 2 --debug + timeout 20m yarn test:e2e:firefox:flask --retries 2 fi no_output_timeout: 5m - store_artifacts: @@ -1078,7 +1156,7 @@ jobs: command: | if .circleci/scripts/test-run-e2e.sh then - timeout 20m yarn test:e2e:chrome:flask --retries 2 --debug + timeout 20m yarn test:e2e:chrome:flask --retries 2 fi no_output_timeout: 5m - store_artifacts: @@ -1105,7 +1183,7 @@ jobs: command: | if .circleci/scripts/test-run-e2e.sh then - timeout 20m yarn test:e2e:chrome:mmi --retries 2 --debug --build-type=mmi + timeout 20m yarn test:e2e:chrome:mmi --retries 2 --build-type=mmi fi no_output_timeout: 5m - store_artifacts: @@ -1121,6 +1199,7 @@ jobs: - run: *shallow-git-clone - attach_workspace: at: . + - run: *check-mmi-optional - run: name: Move test build to dist command: mv ./dist-test-mmi-playwright ./dist @@ -1172,7 +1251,7 @@ jobs: command: | if .circleci/scripts/test-run-e2e.sh then - timeout 20m yarn test:e2e:firefox --retries 2 --debug + timeout 20m yarn test:e2e:firefox --retries 2 fi no_output_timeout: 5m - store_artifacts: @@ -1571,4 +1650,4 @@ jobs: steps: - run: name: All Tests Passed - command: echo 'weew - everything passed!' + command: echo 'whew - everything passed!' diff --git a/.eslintrc.js b/.eslintrc.js index d57cc7bf7aef..53235d12c55a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -135,6 +135,7 @@ module.exports = { path.resolve(__dirname, '.eslintrc.typescript-compat.js'), ], rules: { + '@typescript-eslint/no-explicit-any': 'error', // this rule is new, but we didn't use it before, so it's off now '@typescript-eslint/no-duplicate-enum-values': 'off', '@typescript-eslint/no-shadow': [ diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 00c3678ffb6b..f94c729355c4 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -51,3 +51,6 @@ privacy-snapshot.json @MetaMask/extension-privacy-reviewers # For now, restricting approvals inside the .devcontainer folder to devs # who were involved with the Codespaces project. .devcontainer/ @MetaMask/library-admins @HowardBraham @plasmacorral @brad-decker + +# Confirmations UX team to own code for confirmations on UI. +ui/pages/confirmations @MetaMask/confirmations-ux @MetaMask/confirmations-system-team diff --git a/.github/scripts/check-pr-has-required-labels.ts b/.github/scripts/check-pr-has-required-labels.ts index 15ef77022ceb..354dc2c2aa7d 100644 --- a/.github/scripts/check-pr-has-required-labels.ts +++ b/.github/scripts/check-pr-has-required-labels.ts @@ -73,7 +73,7 @@ async function main(): Promise { if (!hasTeamLabel) { errorMessage += 'No team labels found on the PR. '; } - errorMessage += `Please make sure the PR is appropriately labeled before merging it.\n\nSee labeling guidelines for more detail: https://github.com/MetaMask/metamask-extension/blob/develop/.github/LABELING_GUIDELINES.md`; + errorMessage += `Please make sure the PR is appropriately labeled before merging it.\n\nSee labeling guidelines for more detail: https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md`; core.setFailed(errorMessage); process.exit(1); } diff --git a/.github/workflows/security-code-scanner.yml b/.github/workflows/security-code-scanner.yml index 6b75b0d98bd0..7da1773d666c 100644 --- a/.github/workflows/security-code-scanner.yml +++ b/.github/workflows/security-code-scanner.yml @@ -32,5 +32,5 @@ jobs: node_modules rules_excluded: example - mixpanel_project_token: ${{secrets.SECURITY_CODE_SCANNER_MIXPANEL_TOKEN}} + project_metrics_token: ${{secrets.SECURITY_SCAN_METRICS_TOKEN}} slack_webhook: ${{ secrets.APPSEC_BOT_SLACK_WEBHOOK }} diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml index afe3fe367504..a6f28ee8aa4e 100644 --- a/.github/workflows/sonar.yml +++ b/.github/workflows/sonar.yml @@ -4,6 +4,16 @@ on: secrets: SONAR_TOKEN: required: true + pull_request: + branches: + - develop + types: + - opened + - reopened + - synchronize + - labeled + - unlabeled + jobs: sonarcloud: name: SonarCloud @@ -13,8 +23,8 @@ jobs: with: fetch-depth: 0 # Shallow clones should be disabled for better relevancy of analysis - name: SonarCloud Scan - # v1.9.1 - uses: SonarSource/sonarcloud-github-action@5875562561d22a34be0c657405578705a169af6c + # This is SonarSource/sonarcloud-github-action@v2.0.0 + uses: SonarSource/sonarcloud-github-action@4b4d7634dab97dcee0b75763a54a6dc92a9e6bc1 with: args: > -Dsonar.javascript.lcov.reportPaths=tests/coverage/lcov.info diff --git a/.metamaskrc.dist b/.metamaskrc.dist index d2663f882a52..0c8e6a5971be 100644 --- a/.metamaskrc.dist +++ b/.metamaskrc.dist @@ -21,3 +21,4 @@ BLOCKAID_PUBLIC_KEY= ; SELENIUM_HEADLESS= ; Set this to 1 to make chrome e2e tests disable DoH/DoT and use system DNS ; SELENIUM_USE_SYSTEM_DNS= +ENABLE_CONFIRMATION_REDESIGN= diff --git a/.storybook/main.js b/.storybook/main.js index 67b47fd72c04..2a48b3b88654 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -64,6 +64,7 @@ module.exports = { { loader: 'css-loader', options: { + esModule: false, import: false, url: false, }, @@ -83,6 +84,15 @@ module.exports = { config.plugins.push( new CopyWebpackPlugin({ patterns: [ + { + from: path.join( + 'ui', + 'css', + 'utilities', + 'fonts/', + ), + to: 'fonts', + }, { from: path.join( 'node_modules', diff --git a/.vscode/cspell.json b/.vscode/cspell.json new file mode 100644 index 000000000000..24e3747bfa9b --- /dev/null +++ b/.vscode/cspell.json @@ -0,0 +1,84 @@ +{ + "ignorePaths": ["app/images", "package.json"], + "ignoreWords": [ + "acitores", + "autofetch", + "azuretools", + "Brainstem", + "C01LUJL3T98", + "C05QXJA7NP8", + "cids", + "eamodio", + "initialisation", + "koalaman", + "mockttp", + "multibase", + "multicodec", + "namelookup", + "pluggable", + "protobufjs", + "regadas", + "remotedev", + "rvest", + "sesify", + "siginsights", + "testrpc", + "txinsights", + "webextension", + "xvfb" + ], + "useGitignore": true, + "version": "0.2", + "words": [ + "bignumber", + "blockaid", + "browserlistrc", + "cimg", + "codecov", + "codespace", + "codespaces", + "corepack", + "datetime", + "datetimes", + "dedupe", + "depcheck", + "devcontainer", + "devcontainers", + "endregion", + "ensdomains", + "flamegraph", + "FONTCONFIG", + "hardfork", + "hexstring", + "jazzicon", + "keccak", + "lavadome", + "lavamoat", + "lavapack", + "lockdown", + "metamaskbot", + "metamaskrc", + "metametrics", + "mocharc", + "MULTICHAIN", + "MULTIPROVIDER", + "npmcli", + "onboarded", + "pageload", + "petnames", + "pipefail", + "quickstart", + "recompiles", + "shellcheck", + "sourcemaps", + "sprintf", + "testcase", + "TESTFILES", + "testid", + "tsbuildinfo", + "tsconfigs", + "typecheck", + "yargs", + "yarnpkg" + ] +} diff --git a/.vscode/launch.json b/.vscode/launch.json index 49dda3b55d2d..e801fb65f8b7 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -38,7 +38,7 @@ "type": "pickString", "id": "browserToUse", "description": "Which browser do you want to test with?", - "options": ["chrome", "firefox"], + "options": ["chrome", "firefox", "all"], "default": "chrome" } ], diff --git a/.vscode/settings.json b/.vscode/settings.json index 5eca75a9f539..02c20a82219a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,4 @@ { - "cSpell.words": ["blockaid", "lavamoat"], "editor.defaultFormatter": "rvest.vs-code-prettier-eslint", "editor.tabSize": 2, "files.associations": { diff --git a/.yarn/patches/@metamask-assets-controllers-patch-0f46262fea.patch b/.yarn/patches/@metamask-assets-controllers-patch-0f46262fea.patch new file mode 100644 index 000000000000..2c0f9d1abbbc --- /dev/null +++ b/.yarn/patches/@metamask-assets-controllers-patch-0f46262fea.patch @@ -0,0 +1,40 @@ +diff --git a/dist/NftDetectionController.js b/dist/NftDetectionController.js +index 24373e328d3600d1168914a3dc0bbbd905b19ebe..3877bebee24d1ad5cd2183b50547e8cef1846558 100644 +--- a/dist/NftDetectionController.js ++++ b/dist/NftDetectionController.js +@@ -36,7 +36,7 @@ class NftDetectionController extends polling_controller_1.StaticIntervalPollingC + * @param config - Initial options used to configure this controller. + * @param state - Initial state to set on this controller. + */ +- constructor({ chainId: initialChainId, getNetworkClientById, onPreferencesStateChange, onNetworkStateChange, getOpenSeaApiKey, addNft, getNftApi, getNftState, }, config, state) { ++ constructor({ chainId: initialChainId, getNetworkClientById, onPreferencesStateChange, onNetworkStateChange, getOpenSeaApiKey, addNft, getNftApi, getNftState, disabled: initialDisabled, selectedAddress: initialSelectedAddress }, config, state) { + super(config, state); + /** + * Name of this controller used during composition +@@ -54,8 +54,8 @@ class NftDetectionController extends polling_controller_1.StaticIntervalPollingC + this.defaultConfig = { + interval: DEFAULT_INTERVAL, + chainId: initialChainId, +- selectedAddress: '', +- disabled: true, ++ selectedAddress: initialSelectedAddress, ++ disabled: initialDisabled, + }; + this.initialize(); + this.getNftState = getNftState; +diff --git a/dist/Standards/NftStandards/ERC721/ERC721Standard.js b/dist/Standards/NftStandards/ERC721/ERC721Standard.js +index d9286b0c0e607d2857f3ee7dad40d13a6c11d7d7..4e12e4b590b1f34a66602d63035f1905917f8c93 100644 +--- a/dist/Standards/NftStandards/ERC721/ERC721Standard.js ++++ b/dist/Standards/NftStandards/ERC721/ERC721Standard.js +@@ -66,7 +66,10 @@ class ERC721Standard { + const contract = new contracts_1.Contract(address, metamask_eth_abis_1.abiERC721, this.provider); + const supportsMetadata = yield this.contractSupportsMetadataInterface(address); + if (!supportsMetadata) { +- throw new Error('Contract does not support ERC721 metadata interface.'); ++ // Do not throw error here, supporting Metadata interface is optional even though majority of ERC721 nfts do support it. ++ // This change is made because of instances of NFTs that are ERC404( mixed ERC20 / ERC721 implementation). ++ // As of today, ERC404 is unofficial but some people use it, the contract does not support Metadata interface, but it has the tokenURI() fct. ++ console.error('Contract does not support ERC721 metadata interface.'); + } + return contract.tokenURI(tokenId); + }); diff --git a/.yarn/patches/@metamask-controller-utils-patch-a87ddc3d4b.patch b/.yarn/patches/@metamask-controller-utils-patch-a87ddc3d4b.patch new file mode 100644 index 000000000000..4d2e10d38361 --- /dev/null +++ b/.yarn/patches/@metamask-controller-utils-patch-a87ddc3d4b.patch @@ -0,0 +1,12 @@ +diff --git a/dist/types.js b/dist/types.js +index c59368ae1b156162acec2aacb6d593c5122e9b09..012bb5197bbeaa5738b8144a540d3db8aa8cb85c 100644 +--- a/dist/types.js ++++ b/dist/types.js +@@ -9,6 +9,7 @@ exports.InfuraNetworkType = { + goerli: 'goerli', + sepolia: 'sepolia', + 'linea-goerli': 'linea-goerli', ++ "linea-sepolia": "linea-sepolia", + 'linea-mainnet': 'linea-mainnet', + }; + /** diff --git a/.yarn/patches/@metamask-keyring-controller-npm-13.0.0-d94816a680.patch b/.yarn/patches/@metamask-keyring-controller-npm-13.0.0-d94816a680.patch index 254cf55f3f5f..df96971174a1 100644 --- a/.yarn/patches/@metamask-keyring-controller-npm-13.0.0-d94816a680.patch +++ b/.yarn/patches/@metamask-keyring-controller-npm-13.0.0-d94816a680.patch @@ -1,8 +1,27 @@ diff --git a/dist/KeyringController.js b/dist/KeyringController.js -index fc649ea6fc97b905d811b236de638172fb10b548..beab676ab85e5e372eda7846e98b7d34af6317f5 100644 +index fc649ea6fc97b905d811b236de638172fb10b548..bb288fda7e2ef970ceefe2ac22bcf653a6a55b8a 100644 --- a/dist/KeyringController.js +++ b/dist/KeyringController.js -@@ -1092,9 +1092,13 @@ _KeyringController_keyringBuilders = new WeakMap(), _KeyringController_keyrings +@@ -576,6 +576,18 @@ class KeyringController extends base_controller_1.BaseController { + return { type, data }; + }))); + serializedKeyrings.push(...__classPrivateFieldGet(this, _KeyringController_unsupportedKeyrings, "f")); ++ /** ++ * ============================== PATCH INFORMATION ============================== ++ * The HD keyring is the default keyring for all wallets if this keyring is missing ++ * for some reason we should avoid saving the keyrings ++ * ++ * The upstream fix is here: https://github.com/MetaMask/core/pull/4168 ++ * ++ * This patch can be found on the core branch `extension-keyring-controller-v13-patch` ++ */ ++ if (!serializedKeyrings.some((keyring) => keyring.type === KeyringTypes.hd)) { ++ throw new Error(constants_1.KeyringControllerError.NoHdKeyring); ++ } + let vault; + let newEncryptionKey; + if (__classPrivateFieldGet(this, _KeyringController_cacheEncryptionKey, "f")) { +@@ -1092,9 +1104,16 @@ _KeyringController_keyringBuilders = new WeakMap(), _KeyringController_keyrings }, _KeyringController_addQRKeyring = function _KeyringController_addQRKeyring() { return __awaiter(this, void 0, void 0, function* () { // QRKeyring is not yet compatible with Keyring type from @metamask/utils @@ -10,12 +29,41 @@ index fc649ea6fc97b905d811b236de638172fb10b548..beab676ab85e5e372eda7846e98b7d34 - accounts: [], - })); + /** -+ * Patch for @metamask/keyring-controller v13.0.0 -+ * Below code change will fix the issue 23804, The intial code added a empty accounts as argument when creating a new QR keyring. -+ * cause the new Keystone MetamaskKeyring default properties all are undefined during deserialise() process. -+ * Please refer to PR 23903 for detail. ++ * Patch for @metamask/keyring-controller v13.0.0 ++ * Below code change will fix the issue 23804, The intial code added a empty accounts as argument when creating a new QR keyring. ++ * cause the new Keystone MetamaskKeyring default properties all are undefined during deserialise() process. ++ * Please refer to PR 23903 for detail. ++ * ++ * This patch can be found on the core branch `extension-keyring-controller-v13-patch` + */ ++ // @ts-expect-error See patch note + const qrKeyring = (yield __classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_newKeyring).call(this, KeyringTypes.qr)); const accounts = yield qrKeyring.getAccounts(); yield __classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_checkForDuplicate).call(this, KeyringTypes.qr, accounts); __classPrivateFieldGet(this, _KeyringController_keyrings, "f").push(qrKeyring); +diff --git a/dist/constants.d.ts b/dist/constants.d.ts +index 0c02177576b840c8412bd5c047010439927cf4af..805c0d5f78578efdda95a6da6d66dce13c9003c6 100644 +--- a/dist/constants.d.ts ++++ b/dist/constants.d.ts +@@ -25,6 +25,7 @@ export declare enum KeyringControllerError { + MissingVaultData = "KeyringController - Cannot persist vault without vault information", + ExpiredCredentials = "KeyringController - Encryption key and salt provided are expired", + NoKeyringBuilder = "KeyringController - No keyringBuilder found for keyring", +- DataType = "KeyringController - Incorrect data type provided" ++ DataType = "KeyringController - Incorrect data type provided", ++ NoHdKeyring = "KeyringController - No HD Keyring found" + } + //# sourceMappingURL=constants.d.ts.map +\ No newline at end of file +diff --git a/dist/constants.js b/dist/constants.js +index 58b3a15b796396de78b9dc252baf23d5bd40ae0a..10768a8a6ad111c1f6552ba43ce8eca3c570c8eb 100644 +--- a/dist/constants.js ++++ b/dist/constants.js +@@ -30,5 +30,6 @@ var KeyringControllerError; + KeyringControllerError["ExpiredCredentials"] = "KeyringController - Encryption key and salt provided are expired"; + KeyringControllerError["NoKeyringBuilder"] = "KeyringController - No keyringBuilder found for keyring"; + KeyringControllerError["DataType"] = "KeyringController - Incorrect data type provided"; ++ KeyringControllerError["NoHdKeyring"] = "KeyringController - No HD Keyring found"; + })(KeyringControllerError = exports.KeyringControllerError || (exports.KeyringControllerError = {})); + //# sourceMappingURL=constants.js.map +\ No newline at end of file diff --git a/.yarnrc.yml b/.yarnrc.yml index 374745715f05..adc73de8f717 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -43,7 +43,6 @@ npmAuditIgnoreAdvisories: # not appear to be used. - 1092461 - # Temp fix for https://github.com/MetaMask/metamask-extension/pull/16920 for the sake of 11.7.1 hotfix # This will be removed in this ticket https://github.com/MetaMask/metamask-extension/issues/22299 - 'ts-custom-error (deprecation)' @@ -93,7 +92,7 @@ npmAuditIgnoreAdvisories: # MetaMask owned repositories brought in by other MetaMask dependencies that # can be resolved by updating the versions throughout the dependency tree - 'eth-sig-util (deprecation)' # via @metamask/eth-ledger-bridge-keyring - - '@metamask/controller-utils (deprecation)' # via @metamask/phishin-controller + - '@metamask/controller-utils (deprecation)' # via @metamask/phishing-controller - 'safe-event-emitter (deprecation)' # via eth-block-tracker and others # @metamask-institutional relies upon crypto which is deprecated @@ -126,18 +125,18 @@ npmAuditIgnoreAdvisories: - '@metamask/snaps-ui (deprecation)' npmRegistries: - "https://npm.pkg.github.com": + 'https://npm.pkg.github.com': npmAlwaysAuth: true - npmAuthToken: "${GITHUB_PACKAGE_READ_TOKEN-}" + npmAuthToken: '${GITHUB_PACKAGE_READ_TOKEN-}' npmScopes: metamask: - npmRegistryServer: "${METAMASK_NPM_REGISTRY:-https://registry.yarnpkg.com}" + npmRegistryServer: '${METAMASK_NPM_REGISTRY:-https://registry.yarnpkg.com}' plugins: - path: .yarn/plugins/@yarnpkg/plugin-allow-scripts.cjs - spec: "https://raw.githubusercontent.com/LavaMoat/LavaMoat/main/packages/yarn-plugin-allow-scripts/bundles/@yarnpkg/plugin-allow-scripts.js" + spec: 'https://raw.githubusercontent.com/LavaMoat/LavaMoat/main/packages/yarn-plugin-allow-scripts/bundles/@yarnpkg/plugin-allow-scripts.js' - path: .yarn/plugins/@yarnpkg/plugin-engines.cjs - spec: "https://raw.githubusercontent.com/devoto13/yarn-plugin-engines/main/bundles/%40yarnpkg/plugin-engines.js" + spec: 'https://raw.githubusercontent.com/devoto13/yarn-plugin-engines/main/bundles/%40yarnpkg/plugin-engines.js' yarnPath: .yarn/releases/yarn-4.0.2.cjs diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a654af5e960..e8a3b29e17dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,45 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [11.14.4] ### Fixed - Fix bug that could cause safe-transfer-from transactions to be converted to transfer-from transactions, by removing the edit button on the safe-transfer-from confirmation screens ([#24287](https://github.com/MetaMask/metamask-extension/pull/24287)) +## [11.15.0] +### Added +- Expanded Smart Transactions (STX) functionality to include non-Swaps transactions on Ethereum Mainnet for users opted into STX ([#23155](https://github.com/MetaMask/metamask-extension/pull/23155)) +- Added Base Mainnet and removed Gnosis and Celo networks from popular networks list ([#23880](https://github.com/MetaMask/metamask-extension/pull/23880)) +- Enhanced balance fetching efficiency by supporting bulk balance checks on Linea, Aurora, Base, and ZkSync ([#23436](https://github.com/MetaMask/metamask-extension/pull/23436)) +- Introduced a 'Learn more' link to the simulations toggle in privacy and onboarding settings ([#23890](https://github.com/MetaMask/metamask-extension/pull/23890)) +- Introduced a confirmation step for approving higher token spending limits ([#23560](https://github.com/MetaMask/metamask-extension/pull/23560)) +- Added a dismissible alert for users migrated from OpenSea to Blockaid on unsupported networks ([#23743](https://github.com/MetaMask/metamask-extension/pull/23743)) +- Implemented support for signature requests with a redesigned interface ([#23539](https://github.com/MetaMask/metamask-extension/pull/23539)) +- Introduced support for the new Linea Sepolia network and deprecated the Linea Goerli network ([#23459](https://github.com/MetaMask/metamask-extension/pull/23459)) + +### Changed +- Removed outdated announcements for 'Snaps Open Beta' and 'Buy & Sell' features ([#23940](https://github.com/MetaMask/metamask-extension/pull/23940)) +- Enhanced Smart Transactions swaps with detailed simulation views ([#23963](https://github.com/MetaMask/metamask-extension/pull/23963)) +- Updated the Arbitrum logo ([#23969](https://github.com/MetaMask/metamask-extension/pull/23969)) +- Enhanced the appearance of links in Snap dialogs ([#23840](https://github.com/MetaMask/metamask-extension/pull/23840)) +- Improved the layout of the security alert option in the settings page ([#23718](https://github.com/MetaMask/metamask-extension/pull/23718)) +- Enhanced the appearance of security alerts by fine-tuning their spacing ([#23900](https://github.com/MetaMask/metamask-extension/pull/23900)) +- Unified the color scheme for secondary titles in settings ([#23764](https://github.com/MetaMask/metamask-extension/pull/23764)) +- Adjusted asset icon display and sizing in simulation details ([#23760](https://github.com/MetaMask/metamask-extension/pull/23760)) +- Enhanced display for near-zero amounts and updated native token visuals for all chains ([#23711](https://github.com/MetaMask/metamask-extension/pull/23711)) +- Enhanced default token name visibility by always using the remote token list for petnames ([#23919](https://github.com/MetaMask/metamask-extension/pull/23919)) +- Improved transaction confirmation clarity by hiding totals for successful simulations ([#23899](https://github.com/MetaMask/metamask-extension/pull/23899)) +- Updated transaction controller to display balance changes for wrapped ERC-20 tokens and legacy ERC-721 tokens ([#23915](https://github.com/MetaMask/metamask-extension/pull/23915)) + +### Fixed +- Enhanced the send flow by fine-tuning input fields to keep trailing zeros and decimals ([#23808](https://github.com/MetaMask/metamask-extension/pull/23808)) +- Resolved token detection and import issues ([#23798](https://github.com/MetaMask/metamask-extension/pull/23798)) +- Implemented a deprecation warning for users switching to the Mumbai network ([#23846](https://github.com/MetaMask/metamask-extension/pull/23846)) +- Corrected the display of crypto balances in the presence of scam network warnings ([#23645](https://github.com/MetaMask/metamask-extension/pull/23645)) +- Enhanced UI for simulation details by wrapping and adding tooltips to long asset names and amounts ([#23768](https://github.com/MetaMask/metamask-extension/pull/23768)) +- Expanded the deprecation warning for OpenSea security alerts to include typed signature confirmations ([#23743](https://github.com/MetaMask/metamask-extension/pull/23743)) +- Fixed an issue in Firefox where security alerts weren't displaying due to permission settings ([#23958](https://github.com/MetaMask/metamask-extension/pull/23958)) +- Resolved an issue where the loading indicator overlapped with the UI in security alerts ([#23927](https://github.com/MetaMask/metamask-extension/pull/23927)) +- Resolved an issue with an infinite loading spinner on blockaid alerts ([#23480](https://github.com/MetaMask/metamask-extension/pull/23480)) +- Improved accessibility in the app's network selection by ensuring screen readers announce network names more clearly ([#23842](https://github.com/MetaMask/metamask-extension/pull/23842)) +- Resolved an issue preventing QR code-based hardware wallet connections ([#23903](https://github.com/MetaMask/metamask-extension/pull/23903)) +- Resolved an issue where the connected accounts modal would crash if a dApp with an installed Snap was accessed ([#23928](https://github.com/MetaMask/metamask-extension/pull/23928)) + ## [11.14.3] ### Fixed @@ -4633,6 +4672,8 @@ Update styles and spacing on the critical error page ([#20350](https://github.c [Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v11.14.5...HEAD [11.14.5]: https://github.com/MetaMask/metamask-extension/compare/v11.14.4...v11.14.5 [11.14.4]: https://github.com/MetaMask/metamask-extension/compare/v11.14.3...v11.14.4 +[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v11.15.0...HEAD +[11.15.0]: https://github.com/MetaMask/metamask-extension/compare/v11.14.3...v11.15.0 [11.14.3]: https://github.com/MetaMask/metamask-extension/compare/v11.14.2...v11.14.3 [11.14.2]: https://github.com/MetaMask/metamask-extension/compare/v11.14.1...v11.14.2 [11.14.1]: https://github.com/MetaMask/metamask-extension/compare/v11.14.0...v11.14.1 diff --git a/README.md b/README.md index d9a31a86a8b0..41f53ba99d53 100644 --- a/README.md +++ b/README.md @@ -117,20 +117,21 @@ Before running e2e tests, ensure you've run `yarn install` to download dependenc 1. Use `yarn download-builds:test` to quickly download and unzip test builds for Chrome and Firefox into the `./dist/` folder. This method is fast and convenient for standard testing. 2. Create a custom test build: for testing against different build types, use `yarn build:test`. This command allows you to generate test builds for various types, including: - - `yarn build:test` for main build - - `yarn build:test:flask` for flask build - - `yarn build:test:mmi` for mmi build - - `yarn build:test:mv3` for mv3 build -3. Start a test build with live changes: `yarn start:test` is particularly useful for development. It starts a test build that automatically recompiles application code upon changes.This option is ideal for iterative testing and development. -This command also allows you to generate test builds for various types, including: - - `yarn start:test` for main build - - `yarn start:test:flask` for flask build - - `yarn start:test:mv3` for mv3 build + - `yarn build:test` for main build + - `yarn build:test:flask` for flask build + - `yarn build:test:mmi` for mmi build + - `yarn build:test:mv3` for mv3 build +3. Start a test build with live changes: `yarn start:test` is particularly useful for development. It starts a test build that automatically recompiles application code upon changes. This option is ideal for iterative testing and development. This command also allows you to generate test builds for various types, including: + - `yarn start:test` for main build + - `yarn start:test:flask` for flask build + - `yarn start:test:mv3` for mv3 build Note: The `yarn start:test` command (which initiates the testDev build type) has LavaMoat disabled for both the build system and the application, offering a streamlined testing experience during development. On the other hand, `yarn build:test` enables LavaMoat for enhanced security in both the build system and application, mirroring production environments more closely. #### Running Tests + Once you have your test build ready, choose the browser for your e2e tests: + - For Firefox, run `yarn test:e2e:firefox`. - For Chrome, run `yarn test:e2e:chrome`. @@ -141,10 +142,11 @@ These scripts support additional options for debugging. Use `--help`to see all a Single e2e tests can be run with `yarn test:e2e:single test/e2e/tests/TEST_NAME.spec.js` along with the options below. ```console - --browser Set the browser used; either 'chrome' or 'firefox'. - [string] [choices: "chrome", "firefox"] + --browser Set the browser to be used; specify 'chrome', 'firefox', 'all' + or leave unset to run on 'all' by default. + [string] [default: 'all'] --debug Run tests in debug mode, logging each driver interaction - [boolean] [default: false] + [boolean] [default: true] --retries Set how many times the test should be retried upon failure. [number] [default: 0] --leave-running Leaves the browser running after a test fails, along with @@ -155,10 +157,10 @@ Single e2e tests can be run with `yarn test:e2e:single test/e2e/tests/TEST_NAME. ``` For example, to run the `account-details` tests using Chrome, with debug logging and with the browser set to remain open upon failure, you would use: -`yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome --debug --leave-running` - +`yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome --leave-running` #### Running e2e tests against specific feature flag + While developing new features, we often use feature flags. As we prepare to make these features generally available (GA), we remove the feature flags. Existing feature flags are listed in the `.metamaskrc.dist` file. To execute e2e tests with a particular feature flag enabled, it's necessary to first generate a test build with that feature flag activated. There are two ways to achieve this: - To enable a feature flag in your local configuration, you should first ensure you have a `.metamaskrc` file copied from `.metamaskrc.dist`. Then, within your local `.metamaskrc` file, you can set the desired feature flag to true. Following this, a test build with the feature flag enabled can be created by executing `yarn build:test`. @@ -166,7 +168,7 @@ While developing new features, we often use feature flags. As we prepare to make - Alternatively, for enabling a feature flag directly during the test build creation, you can pass the parameter as true via the command line. For instance, activating the MULTICHAIN feature flag can be done by running `MULTICHAIN=1 yarn build:test` or `MULTICHAIN=1 yarn start:test` . This method allows for quick adjustments to feature flags without altering the `.metamaskrc` file. Once you've created a test build with the desired feature flag enabled, proceed to run your tests as usual. Your tests will now run against the version of the extension with the specific feature flag activated. For example: -`yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome --debug --leave-running` +`yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome` This approach ensures that your e2e tests accurately reflect the user experience for the upcoming GA features. diff --git a/app/_locales/de/messages.json b/app/_locales/de/messages.json index d7283cacf04b..4a6835316343 100644 --- a/app/_locales/de/messages.json +++ b/app/_locales/de/messages.json @@ -3480,12 +3480,6 @@ "smartContracts": { "message": "Smart Contracts" }, - "smartSwapsAreHere": { - "message": "Die Smart Swaps sind da!" - }, - "smartSwapsDescription": { - "message": "MetaMask Swaps ist jetzt wesentlich intelligenter! Die Aktivierung von Smart Swaps wird es MetaMask erlauben, Ihre Swaps programmatisch zu optimieren, um zu helfen:" - }, "smartSwapsErrorNotEnoughFunds": { "message": "Nicht genügend Gelder für einen Smart Swap." }, @@ -3765,18 +3759,6 @@ "strong": { "message": "Stark" }, - "stxBenefit1": { - "message": "Transaktionskosten minimieren" - }, - "stxBenefit2": { - "message": "Transaktionsausfälle reduzieren" - }, - "stxBenefit3": { - "message": "Steckengebliebene Transaktionen eliminieren" - }, - "stxBenefit4": { - "message": "Front-Running verhindern" - }, "stxCancelled": { "message": "Swap wäre gescheitert" }, @@ -4707,7 +4689,7 @@ }, "viewOnCustomBlockExplorer": { "message": "Zeige $1 bei $2", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "$1 auf Etherscan anzeigen", diff --git a/app/_locales/el/messages.json b/app/_locales/el/messages.json index 676378aa3946..330fcbfbdebc 100644 --- a/app/_locales/el/messages.json +++ b/app/_locales/el/messages.json @@ -3480,12 +3480,6 @@ "smartContracts": { "message": "Έξυπνα συμβόλαια" }, - "smartSwapsAreHere": { - "message": "Οι Έξυπνες Ανταλλαγές είναι εδώ!" - }, - "smartSwapsDescription": { - "message": "Οι Ανταλλαγές στο MetaMask μόλις έγιναν πολύ πιο έξυπνες! Η ενεργοποίηση των Έξυπνων Ανταλλαγών θα επιτρέψει στο MetaMask να βελτιστοποιήσει προγραμματιστικά τις Ανταλλαγές σας, ώστε να σας βοηθήσει:" - }, "smartSwapsErrorNotEnoughFunds": { "message": "Δεν υπάρχουν αρκετά κεφάλαια για έξυπνες ανταλλαγές." }, @@ -3765,18 +3759,6 @@ "strong": { "message": "Ισχυρό" }, - "stxBenefit1": { - "message": "Ελαχιστοποίηση του κόστους συναλλαγών" - }, - "stxBenefit2": { - "message": "Μείωση των αποτυχημένων συναλλαγών" - }, - "stxBenefit3": { - "message": "Εξάλειψη των εμπλοκών στις συναλλαγές" - }, - "stxBenefit4": { - "message": "Αποτροπή των προπορευόμενων συναλλαγών (front-running)" - }, "stxCancelled": { "message": "Η ανταλλαγή θα είχε αποτύχει" }, @@ -4707,7 +4689,7 @@ }, "viewOnCustomBlockExplorer": { "message": "Προβολή $1 στο $2", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "Προβολή $1 στο Etherscan", diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index db38fa50d0fc..66fb46b027c9 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -666,9 +666,6 @@ "busy": { "message": "Busy" }, - "buy": { - "message": "Buy" - }, "buyAndSell": { "message": "Buy & Sell" }, @@ -683,6 +680,10 @@ "buyNow": { "message": "Buy Now" }, + "buyToken": { + "message": "Buy $1", + "description": "$1 is the token symbol" + }, "bytes": { "message": "Bytes" }, @@ -759,6 +760,9 @@ "close": { "message": "Close" }, + "closeExtension": { + "message": "Close extension" + }, "coingecko": { "message": "CoinGecko" }, @@ -894,6 +898,9 @@ "message": "$1 can see the account balance, address, activity, and suggest transactions to approve for connected accounts.", "description": "$1 is the origin name" }, + "connectedAccountsToast": { + "message": "Connected accounts updated" + }, "connectedSites": { "message": "Connected sites" }, @@ -911,9 +918,6 @@ "connectedWith": { "message": "Connected with" }, - "connectedaccountsTabKey": { - "message": "Connected accounts" - }, "connecting": { "message": "Connecting..." }, @@ -1419,6 +1423,14 @@ "disconnectThisAccount": { "message": "Disconnect this account" }, + "disconnectedAllAccountsToast": { + "message": "All accounts disconnected from $1", + "description": "$1 is name of the dapp`" + }, + "disconnectedSingleAccountToast": { + "message": "$1 disconnected from $2", + "description": "$1 is name of the name and $2 represents the dapp name`" + }, "discoverSnaps": { "message": "Discover Snaps", "description": "Text that links to the Snaps website. Displayed in a banner on Snaps list page in settings." @@ -1566,14 +1578,17 @@ "editSpeedUpEditGasFeeModalTitle": { "message": "Edit speed up gas fee" }, + "enable": { + "message": "Enable" + }, "enableAutoDetect": { "message": " Enable autodetect" }, "enableFromSettings": { "message": " Enable it from Settings." }, - "enableSmartSwaps": { - "message": "Enable Smart Swaps" + "enableSmartTransactions": { + "message": "Enable Smart Transactions" }, "enableSnap": { "message": "Enable" @@ -1745,9 +1760,6 @@ "failureMessage": { "message": "Something went wrong, and we were unable to complete the action" }, - "faqAndRiskDisclosures": { - "message": "FAQ and Risk Disclosures" - }, "fast": { "message": "Fast" }, @@ -1826,6 +1838,13 @@ "functionType": { "message": "Function type" }, + "fundYourWallet": { + "message": "Fund your wallet" + }, + "fundYourWalletDescription": { + "message": "Get started by adding some $1 to your wallet.", + "description": "$1 is the token symbol" + }, "gas": { "message": "Gas" }, @@ -1909,6 +1928,14 @@ "genericExplorerView": { "message": "View account on $1" }, + "getStartedWithNFTs": { + "message": "Get $1 to buy NFTs", + "description": "$1 is the token symbol" + }, + "getStartedWithNFTsDescription": { + "message": "Get started with NFTs by adding some $1 to your wallet.", + "description": "$1 is the token symbol" + }, "globalTitle": { "message": "Global menu" }, @@ -2227,6 +2254,9 @@ "interactingWith": { "message": "Interacting with" }, + "introducingSmartTransactions": { + "message": "Introducing Smart Transactions" + }, "invalidAddress": { "message": "Invalid address" }, @@ -2374,6 +2404,9 @@ "learnMoreUpperCase": { "message": "Learn more" }, + "learnMoreUpperCaseWithDot": { + "message": "Learn more." + }, "learnScamRisk": { "message": "scams and security risks." }, @@ -2516,9 +2549,6 @@ "message": "Make sure nobody is looking", "description": "Warning to users to be care while creating and saving their new Secret Recovery Phrase" }, - "manageInSettings": { - "message": "Manage in settings" - }, "max": { "message": "Max" }, @@ -2877,9 +2907,6 @@ "nftDisclaimer": { "message": "Disclaimer: MetaMask pulls the media file from the source url. This url sometimes gets changed by the marketplace on which the NFT was minted." }, - "nftLearnMore": { - "message": "Learn more about NFTs" - }, "nftOptions": { "message": "NFT Options" }, @@ -2945,6 +2972,9 @@ "noWebcamFoundTitle": { "message": "Webcam not found" }, + "nonCustodialAccounts": { + "message": "MetaMask Institutional allows you to use non-custodial accounts, if you plan to use these accounts backup the Secret Recovery Phrase." + }, "nonce": { "message": "Nonce" }, @@ -2969,6 +2999,9 @@ "notEnoughGas": { "message": "Not enough gas" }, + "notRightNow": { + "message": "Not right now" + }, "note": { "message": "Note" }, @@ -3062,6 +3095,14 @@ "notificationsEmptyText": { "message": "This is where you can find notifications from your installed snaps." }, + "notificationsFeatureToggle": { + "message": "Enable Wallet Notifications", + "description": "Experimental feature title" + }, + "notificationsFeatureToggleDescription": { + "message": "This enables wallet notifications like send/receive funds or nfts and feature announcements.", + "description": "Description of the experimental notifications feature" + }, "notificationsHeader": { "message": "Notifications" }, @@ -3755,6 +3796,9 @@ "receive": { "message": "Receive" }, + "receiveTokensCamelCase": { + "message": "Receive tokens" + }, "recipientAddressPlaceholder": { "message": "Enter public address (0x) or ENS name" }, @@ -3839,6 +3883,9 @@ "removeNFT": { "message": "Remove NFT" }, + "removeNftErrorMessage": { + "message": "We could not remove this NFT." + }, "removeNftMessage": { "message": "NFT was successfully removed!" }, @@ -4371,28 +4418,58 @@ "smartContracts": { "message": "Smart contracts" }, - "smartSwaps": { - "message": "Smart Swaps" - }, - "smartSwapsAreHere": { - "message": "Smart Swaps are here!" - }, - "smartSwapsDescription": { - "message": "MetaMask Swaps just got a whole lot smarter! Enabling Smart Swaps will allow MetaMask to programmatically optimize your Swap to help:" - }, - "smartSwapsDescription2": { - "message": "*Smart Swaps will submit your transaction privately. You can opt-out in advanced settings at any time. To learn more about Smart Swaps, read our $1.", - "description": "$1 is an external link to FAQ and Risk Disclosures" - }, "smartSwapsErrorNotEnoughFunds": { "message": "Not enough funds for a smart swap." }, "smartSwapsErrorUnavailable": { "message": "Smart Swaps are temporarily unavailable." }, - "smartSwapsTooltip": { - "message": "Simulate transactions before submitting to decrease transaction costs and reduce failures. To learn more, read our $1", - "description": "$1 is an external link to FAQ and Risk Disclosures" + "smartTransactionCancelled": { + "message": "Your transaction was canceled" + }, + "smartTransactionCancelledDescription": { + "message": "Your transaction couldn't be completed, so it was canceled to save you from paying unnecessary gas fees." + }, + "smartTransactionError": { + "message": "Your transaction failed" + }, + "smartTransactionErrorDescription": { + "message": "Sudden market changes can cause failures. If the problem continues, reach out to MetaMask customer support." + }, + "smartTransactionPending": { + "message": "Submitting your transaction" + }, + "smartTransactionSuccess": { + "message": "Your transaction is complete" + }, + "smartTransactionTakingTooLong": { + "message": "Sorry for the wait" + }, + "smartTransactionTakingTooLongDescription": { + "message": "If your transaction is not finalized within $1, it will be canceled and you will not be charged for gas.", + "description": "$1 is remaining time in seconds" + }, + "smartTransactions": { + "message": "Smart Transactions" + }, + "smartTransactionsBenefit1": { + "message": "82% fewer failed transactions" + }, + "smartTransactionsBenefit2": { + "message": "Transaction protection" + }, + "smartTransactionsBenefit3": { + "message": "Real-time updates" + }, + "smartTransactionsDescription": { + "message": "Unlock the safest, most reliable, and easiest transaction experience - a smarter way to navigate web3." + }, + "smartTransactionsDescription2": { + "message": "Millions of dollars are lost every month due to failed transactions & frontrunning. Smart Transactions fixes this." + }, + "smartTransactionsDescription3": { + "message": "Right now, Smart Transactions are only available on ETH Mainnet. You can turn them off at any time in settings. $1", + "description": "$1 is an external link to learn more about Smart Transactions" }, "snapAccountCreated": { "message": "Account created" @@ -4705,6 +4782,14 @@ "stake": { "message": "Stake" }, + "startYourJourney": { + "message": "Start your journey with $1", + "description": "$1 is the token symbol" + }, + "startYourJourneyDescription": { + "message": "Get started with web3 by adding some $1 to your wallet.", + "description": "$1 is the token symbol" + }, "stateLogError": { "message": "Error in retrieving state logs." }, @@ -4760,18 +4845,6 @@ "strong": { "message": "Strong" }, - "stxBenefit1": { - "message": "Minimize transaction costs" - }, - "stxBenefit2": { - "message": "Reduce transaction failures" - }, - "stxBenefit3": { - "message": "Eliminate stuck transactions" - }, - "stxBenefit4": { - "message": "Prevent front-running" - }, "stxCancelled": { "message": "Swap would have failed" }, @@ -4781,6 +4854,10 @@ "stxCancelledSubDescription": { "message": "Try your swap again. We’ll be here to protect you against similar risks next time." }, + "stxEstimatedCompletion": { + "message": "Estimated completion in < $1", + "description": "$1 is remeaning time in minutes and seconds, e.g. 0:10" + }, "stxFailure": { "message": "Swap failed" }, @@ -4788,6 +4865,9 @@ "message": "Sudden market changes can cause failures. If the problem persists, please reach out to $1.", "description": "This message is shown to a user if their swap fails. The $1 will be replaced by support.metamask.io" }, + "stxOptInDescription": { + "message": "Turn on Smart Transactions for more reliable and secure transactions, and adjustable fees on ETH Mainnet. $1" + }, "stxPendingPrivatelySubmittingSwap": { "message": "Privately submitting your Swap..." }, @@ -5276,6 +5356,13 @@ "switchToThisAccount": { "message": "Switch to this account" }, + "switchedNetworkToastDecline": { + "message": "Don't show again" + }, + "switchedNetworkToastMessage": { + "message": "$1 is now active on $2", + "description": "$1 represents the account name, $2 represents the network name" + }, "switchedTo": { "message": "You're now using" }, @@ -5738,6 +5825,9 @@ "view": { "message": "View" }, + "viewActivity": { + "message": "View activity" + }, "viewAllDetails": { "message": "View all details" }, @@ -5761,7 +5851,7 @@ }, "viewOnCustomBlockExplorer": { "message": "View $1 at $2", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "View $1 on Etherscan", @@ -5773,6 +5863,9 @@ "viewOnOpensea": { "message": "View on Opensea" }, + "viewTransaction": { + "message": "View transaction" + }, "viewinCustodianApp": { "message": "View in custodian app" }, diff --git a/app/_locales/es/messages.json b/app/_locales/es/messages.json index fbff1412a9e7..d880225a4ffd 100644 --- a/app/_locales/es/messages.json +++ b/app/_locales/es/messages.json @@ -3480,12 +3480,6 @@ "smartContracts": { "message": "Contratos inteligentes" }, - "smartSwapsAreHere": { - "message": "¡Los intercambios inteligentes ya están aquí!" - }, - "smartSwapsDescription": { - "message": "¡La función Intercambios de MetaMask ahora es mucho más inteligente! Habilitar Intercambios inteligentes permitirá que MetaMask optimice mediante programación su intercambio para ayudar a:" - }, "smartSwapsErrorNotEnoughFunds": { "message": "No hay suficientes fondos para un intercambio inteligente." }, @@ -3765,18 +3759,6 @@ "strong": { "message": "Fuerte" }, - "stxBenefit1": { - "message": "Minimizar los costos de transacción" - }, - "stxBenefit2": { - "message": "Reducir las fallas en las transacciones" - }, - "stxBenefit3": { - "message": "Eliminar las transacciones atascadas" - }, - "stxBenefit4": { - "message": "Prevenir la inversión ventajista" - }, "stxCancelled": { "message": "El intercambio habría fallado" }, @@ -4707,7 +4689,7 @@ }, "viewOnCustomBlockExplorer": { "message": "Ver $1 en $2", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "Ver $1 en Etherscan", diff --git a/app/_locales/es_419/messages.json b/app/_locales/es_419/messages.json index 370c94563e9d..7ed07f835b8b 100644 --- a/app/_locales/es_419/messages.json +++ b/app/_locales/es_419/messages.json @@ -2543,7 +2543,7 @@ }, "viewOnCustomBlockExplorer": { "message": "Ver $1 en $2", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "Ver $1 en Etherscan", diff --git a/app/_locales/fr/messages.json b/app/_locales/fr/messages.json index 6a29f4110dca..a05b9ce014b5 100644 --- a/app/_locales/fr/messages.json +++ b/app/_locales/fr/messages.json @@ -3483,12 +3483,6 @@ "smartContracts": { "message": "Contrats intelligents" }, - "smartSwapsAreHere": { - "message": "Les contrats de swap intelligents sont enfin arrivés !" - }, - "smartSwapsDescription": { - "message": "Les swaps sont devenus beaucoup plus intelligents sur MetaMask ! L’activation des contrats de swap intelligents permettra à MetaMask d’optimiser programmatiquement le processus contractuel pour vous aider à :" - }, "smartSwapsErrorNotEnoughFunds": { "message": "Fonds insuffisants pour souscrire un contrat de swap intelligent." }, @@ -3768,18 +3762,6 @@ "strong": { "message": "Robuste" }, - "stxBenefit1": { - "message": "Minimise les frais de transaction" - }, - "stxBenefit2": { - "message": "Réduit les échecs de transaction" - }, - "stxBenefit3": { - "message": "Élimine les blocages de transaction" - }, - "stxBenefit4": { - "message": "Empêcher le favoritisme" - }, "stxCancelled": { "message": "Le swap aurait échoué" }, @@ -4710,7 +4692,7 @@ }, "viewOnCustomBlockExplorer": { "message": "Afficher $1 à $2", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "Afficher $1 sur Etherscan", diff --git a/app/_locales/hi/messages.json b/app/_locales/hi/messages.json index 7d1c50d48515..e55d1f11604b 100644 --- a/app/_locales/hi/messages.json +++ b/app/_locales/hi/messages.json @@ -3480,12 +3480,6 @@ "smartContracts": { "message": "स्मार्ट कॉन्ट्रैक्ट्स" }, - "smartSwapsAreHere": { - "message": "स्मार्ट स्वैप यहां हैं!" - }, - "smartSwapsDescription": { - "message": "MetaMask के स्वैप अब और अधिक स्मार्ट हो गए हैं! इन हेतु सहायता के लिए स्मार्ट स्वैप को इनेबल करने से MetaMask आपके स्वैप को प्रोग्रामेटिक रूप से ऑप्टिमाइज कर पाएगा:" - }, "smartSwapsErrorNotEnoughFunds": { "message": "स्मार्ट स्वैप के लिए पर्याप्त फंड नहीं है।" }, @@ -3765,18 +3759,6 @@ "strong": { "message": "मजबूत" }, - "stxBenefit1": { - "message": "ट्रांसेक्शन लागतें मिनिमाइज़ करें" - }, - "stxBenefit2": { - "message": "ट्रांसेक्शन विफलताएं कम करें" - }, - "stxBenefit3": { - "message": "अटके हुए ट्रांसेक्शन को हटा दें" - }, - "stxBenefit4": { - "message": "फ़्रंट-रनिंग को रोकें" - }, "stxCancelled": { "message": "स्वैप विफल हो सकता था" }, @@ -4707,7 +4689,7 @@ }, "viewOnCustomBlockExplorer": { "message": "$1 को $2 पर देखें", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "Etherscan पर $1 देखें", diff --git a/app/_locales/id/messages.json b/app/_locales/id/messages.json index 52017a426059..e01944cd0a67 100644 --- a/app/_locales/id/messages.json +++ b/app/_locales/id/messages.json @@ -3480,12 +3480,6 @@ "smartContracts": { "message": "Kontrak cerdas" }, - "smartSwapsAreHere": { - "message": "Smart Swap telah hadir!" - }, - "smartSwapsDescription": { - "message": "MetaMask Swaps kini semakin pintar! Mengaktifkan Smart Swap akan mengizinkan MetaMask mengoptimalkan Swap secara terprogram untuk membantu:" - }, "smartSwapsErrorNotEnoughFunds": { "message": "Dana tidak cukup untuk pertukaran cerdas." }, @@ -3765,18 +3759,6 @@ "strong": { "message": "Kuat" }, - "stxBenefit1": { - "message": "Meminimalkan biaya transaksi" - }, - "stxBenefit2": { - "message": "Kurangi potensi kegagalan transaksi \t" - }, - "stxBenefit3": { - "message": "Hapus transaksi yang macet" - }, - "stxBenefit4": { - "message": "Cegah perilaku front running \t" - }, "stxCancelled": { "message": "Pertukaran akan gagal" }, @@ -4707,7 +4689,7 @@ }, "viewOnCustomBlockExplorer": { "message": "Lihat $1 di $2", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "Lihat $1 di Etherscan", diff --git a/app/_locales/ja/messages.json b/app/_locales/ja/messages.json index 2c096d1b1b52..671eae4c90d7 100644 --- a/app/_locales/ja/messages.json +++ b/app/_locales/ja/messages.json @@ -3480,12 +3480,6 @@ "smartContracts": { "message": "スマートコントラクト" }, - "smartSwapsAreHere": { - "message": "スマートスワップの登場です!" - }, - "smartSwapsDescription": { - "message": "MetaMask Swapsがはるかに賢くなりました!スマートスワップを有効にすると、MetaMaskがプログラムに従ってスワップを最適化できるようになるため、以下のようなメリットがあります。" - }, "smartSwapsErrorNotEnoughFunds": { "message": "スマートスワップに必要な資金が不足しています。" }, @@ -3765,18 +3759,6 @@ "strong": { "message": "強" }, - "stxBenefit1": { - "message": "トランザクションコストを最小化" - }, - "stxBenefit2": { - "message": "トランザクションの失敗数を低減" - }, - "stxBenefit3": { - "message": "トランザクションの停滞を解消" - }, - "stxBenefit4": { - "message": "フロントランニングを防止" - }, "stxCancelled": { "message": "スワップが失敗するところでした" }, @@ -4707,7 +4689,7 @@ }, "viewOnCustomBlockExplorer": { "message": "$1を$2で表示", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "$1をEtherscanで表示", diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index ad6702b20e57..02e18ddd1538 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -3480,12 +3480,6 @@ "smartContracts": { "message": "스마트 계약" }, - "smartSwapsAreHere": { - "message": "스마트 스왑이 시작되었습니다!" - }, - "smartSwapsDescription": { - "message": "MetaMask 스왑이 더욱 스마트해졌습니다! 스마트 스왑을 활성화하면 MetaMask가 프로그램을 통해 스왑을 최적화하여 다음과 같은 활동에 도움을 드립니다." - }, "smartSwapsErrorNotEnoughFunds": { "message": "스마트 스왑 자금 부족" }, @@ -3765,18 +3759,6 @@ "strong": { "message": "강함" }, - "stxBenefit1": { - "message": "트랜잭션 비용 최소화하기" - }, - "stxBenefit2": { - "message": "트랜잭션 실패 줄이기" - }, - "stxBenefit3": { - "message": "중단된 트랜잭션 제거하기" - }, - "stxBenefit4": { - "message": "프런트 러닝 방지" - }, "stxCancelled": { "message": "스왑이 실패했을 것입니다" }, @@ -4707,7 +4689,7 @@ }, "viewOnCustomBlockExplorer": { "message": "$2에서 $1 보기", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "Etherscan에서 $1 보기", diff --git a/app/_locales/pt/messages.json b/app/_locales/pt/messages.json index adfdccf4280b..cc46fcce77e9 100644 --- a/app/_locales/pt/messages.json +++ b/app/_locales/pt/messages.json @@ -3484,12 +3484,6 @@ "smartContracts": { "message": "Contratos inteligentes" }, - "smartSwapsAreHere": { - "message": "As trocas inteligentes chegaram!" - }, - "smartSwapsDescription": { - "message": "As trocas na MetaMask ficaram muito mais inteligentes! Ativar as trocas inteligentes permitirá que a MetaMask otimize programaticamente sua troca para ajudar:" - }, "smartSwapsErrorNotEnoughFunds": { "message": "Fundos insuficientes para uma troca inteligente." }, @@ -3769,18 +3763,6 @@ "strong": { "message": "Forte" }, - "stxBenefit1": { - "message": "Minimize os custos das transações" - }, - "stxBenefit2": { - "message": "Reduza as falhas nas transações" - }, - "stxBenefit3": { - "message": "Elimine transações travadas" - }, - "stxBenefit4": { - "message": "Previna o front-running (uso de informações privilegiadas para negociações)" - }, "stxCancelled": { "message": "A troca teria falhado" }, @@ -4711,7 +4693,7 @@ }, "viewOnCustomBlockExplorer": { "message": "Ver $1 em $2", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "Ver $1 no Etherscan", diff --git a/app/_locales/pt_BR/messages.json b/app/_locales/pt_BR/messages.json index c2fe68724a82..1cb18170dda1 100644 --- a/app/_locales/pt_BR/messages.json +++ b/app/_locales/pt_BR/messages.json @@ -2547,7 +2547,7 @@ }, "viewOnCustomBlockExplorer": { "message": "Ver $1 em $2", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "Ver $1 no Etherscan", diff --git a/app/_locales/ru/messages.json b/app/_locales/ru/messages.json index bd3b27f8beae..892a68f3ec20 100644 --- a/app/_locales/ru/messages.json +++ b/app/_locales/ru/messages.json @@ -3480,12 +3480,6 @@ "smartContracts": { "message": "Смарт-контракты" }, - "smartSwapsAreHere": { - "message": "Появились смарт-свопы!" - }, - "smartSwapsDescription": { - "message": "Свопы MetaMask стали намного умнее! Включение смарт-свопов позволит MetaMask программно оптимизировать ваш своп, чтобы помочь:" - }, "smartSwapsErrorNotEnoughFunds": { "message": "Недостаточно средств для смарт-свопа." }, @@ -3765,18 +3759,6 @@ "strong": { "message": "Сильный" }, - "stxBenefit1": { - "message": "Минимизируйте транзакционные издержки" - }, - "stxBenefit2": { - "message": "Уменьшите количество сбоев транзакций" - }, - "stxBenefit3": { - "message": "Устраните зависание транзакций" - }, - "stxBenefit4": { - "message": "Предотвратите опережение" - }, "stxCancelled": { "message": "Своп бы не удался" }, @@ -4707,7 +4689,7 @@ }, "viewOnCustomBlockExplorer": { "message": "Смотреть $1 в $2", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "Смотреть 1$ на Etherscan", diff --git a/app/_locales/tl/messages.json b/app/_locales/tl/messages.json index 115104b327dd..b56219510f25 100644 --- a/app/_locales/tl/messages.json +++ b/app/_locales/tl/messages.json @@ -3480,12 +3480,6 @@ "smartContracts": { "message": "Mga smart na kontrata" }, - "smartSwapsAreHere": { - "message": "Nandito na ang mga Smart Swap!" - }, - "smartSwapsDescription": { - "message": "Mas humusay pa ang mga MetaMask Swap! Ang pag-enable sa mga Smart Swap ay magbibigay-daan sa MetaMask na i-optimize ang iyong Swap gamit ang program para makatulong na:" - }, "smartSwapsErrorNotEnoughFunds": { "message": "Hindi sapat ang pondo para sa smart swap." }, @@ -3765,18 +3759,6 @@ "strong": { "message": "Mahirap" }, - "stxBenefit1": { - "message": "Bawasan ang mga gastos sa transaksyon" - }, - "stxBenefit2": { - "message": "Bawasan ang mga nabigong transaksyon" - }, - "stxBenefit3": { - "message": "Alisin ang mga hindi umuusad na transaksyon" - }, - "stxBenefit4": { - "message": "Pigilan ang front-running" - }, "stxCancelled": { "message": "Nabigo sana ang pag-swap kung" }, @@ -4707,7 +4689,7 @@ }, "viewOnCustomBlockExplorer": { "message": "Tingnan ang $1 sa $2", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "Tingnan ang $1 sa Etherscan", diff --git a/app/_locales/tr/messages.json b/app/_locales/tr/messages.json index 0b268dcd5a9e..13163c4a498f 100644 --- a/app/_locales/tr/messages.json +++ b/app/_locales/tr/messages.json @@ -3480,12 +3480,6 @@ "smartContracts": { "message": "Akıllı sözleşmeler" }, - "smartSwapsAreHere": { - "message": "Akıllı Swap'lar burada!" - }, - "smartSwapsDescription": { - "message": "MetaMask Swap işlemleri artık çok daha akıllı! Akıllı Swap'ları etkinleştirmek, MetaMask'in aşağıdakilere yardımcı olmak için Swap'ini programlı olarak optimize etmesine olanak tanır:" - }, "smartSwapsErrorNotEnoughFunds": { "message": "Akıllı swap için yeterli para yok." }, @@ -3765,18 +3759,6 @@ "strong": { "message": "Güçlü" }, - "stxBenefit1": { - "message": "İşlem maliyetlerini en aza indir" - }, - "stxBenefit2": { - "message": "İşlem hatalarını azalt" - }, - "stxBenefit3": { - "message": "Sıkışmış işlemleri ortadan kaldır" - }, - "stxBenefit4": { - "message": "Önden çalıştırmayı engelle" - }, "stxCancelled": { "message": "Swap işlemi başarısız olurdu" }, @@ -4707,7 +4689,7 @@ }, "viewOnCustomBlockExplorer": { "message": "$1 ögesini $2 üzerinde görüntüle", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "Etherscan'de $1 görüntüle", diff --git a/app/_locales/vi/messages.json b/app/_locales/vi/messages.json index 62a63f8e1ec7..fd6df9be7c59 100644 --- a/app/_locales/vi/messages.json +++ b/app/_locales/vi/messages.json @@ -3480,12 +3480,6 @@ "smartContracts": { "message": "Hợp đồng thông minh" }, - "smartSwapsAreHere": { - "message": "Hoán đổi thông minh đã ra mắt!" - }, - "smartSwapsDescription": { - "message": "Tính năng Hoán đổi của MetaMask nay đã thông minh hơn rất nhiều! Kích hoạt Hoán đổi thông minh sẽ cho phép MetaMask tối ưu quy trình Hoán đổi để giúp bạn:" - }, "smartSwapsErrorNotEnoughFunds": { "message": "Không có đủ tiền để thực hiện hoán đổi thông minh." }, @@ -3765,18 +3759,6 @@ "strong": { "message": "Mạnh" }, - "stxBenefit1": { - "message": "Giảm thiểu chi phí giao dịch" - }, - "stxBenefit2": { - "message": "Giảm tỷ lệ thất bại khi giao dịch" - }, - "stxBenefit3": { - "message": "Loại bỏ các giao dịch bị mắc kẹt" - }, - "stxBenefit4": { - "message": "Ngăn chặn giao dịch chạy trước" - }, "stxCancelled": { "message": "Hoán đổi sẽ thất bại" }, @@ -4707,7 +4689,7 @@ }, "viewOnCustomBlockExplorer": { "message": "Xem $1 tại $2", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "Xem $1 trên Etherscan", diff --git a/app/_locales/zh_CN/messages.json b/app/_locales/zh_CN/messages.json index 8e2a95ae4ecb..303dad1975f3 100644 --- a/app/_locales/zh_CN/messages.json +++ b/app/_locales/zh_CN/messages.json @@ -3480,12 +3480,6 @@ "smartContracts": { "message": "智能合约" }, - "smartSwapsAreHere": { - "message": "智能兑换已推出!" - }, - "smartSwapsDescription": { - "message": "MetaMask Swaps 变得更加智能!启用智能兑换使得 MetaMask 在编程方面让您的兑换体验更加优化,有助于:" - }, "smartSwapsErrorNotEnoughFunds": { "message": "没有足够的资金进行智能兑换。" }, @@ -3765,18 +3759,6 @@ "strong": { "message": "强" }, - "stxBenefit1": { - "message": "将交易成本减至最低" - }, - "stxBenefit2": { - "message": "减少交易失败" - }, - "stxBenefit3": { - "message": "消除卡住的交易" - }, - "stxBenefit4": { - "message": "防止抢先交易" - }, "stxCancelled": { "message": "交换就会失败" }, @@ -4707,7 +4689,7 @@ }, "viewOnCustomBlockExplorer": { "message": "在 $2 上查看 $1", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "在 Etherscan 上查看 $1", diff --git a/app/_locales/zh_TW/messages.json b/app/_locales/zh_TW/messages.json index ce0fc3d38a96..57c40475e47b 100644 --- a/app/_locales/zh_TW/messages.json +++ b/app/_locales/zh_TW/messages.json @@ -1483,7 +1483,7 @@ }, "viewOnCustomBlockExplorer": { "message": "在 $1 瀏覽", - "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Exporer URL" + "description": "$1 is the action type. e.g (Account, Transaction, Swap) and $2 is the Custom Block Explorer URL" }, "viewOnEtherscan": { "message": "在 Etherscan 上瀏覽", diff --git a/app/background.html b/app/background.html index 148842e8f868..c0068295d730 100644 --- a/app/background.html +++ b/app/background.html @@ -4,7 +4,7 @@ - - + + diff --git a/app/home.html b/app/home.html index 3210c30475c9..b94800b13d78 100644 --- a/app/home.html +++ b/app/home.html @@ -8,7 +8,7 @@ <% } else { %> MetaMask <% } %> - +
@@ -16,6 +16,6 @@
- + diff --git a/app/images/arbitrum.svg b/app/images/arbitrum.svg index 8863afe882c8..9c19a48f2d72 100644 --- a/app/images/arbitrum.svg +++ b/app/images/arbitrum.svg @@ -1,12 +1,40 @@ - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/images/logo/metamask-smart-transactions.png b/app/images/logo/metamask-smart-transactions.png deleted file mode 100644 index 6eed753120bfa29239090000238278637cf58882..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115666 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 diff --git a/app/images/ramps-card-activity-illustration.png b/app/images/ramps-card-activity-illustration.png new file mode 100644 index 0000000000000000000000000000000000000000..0a0d839e8fc841b61a19f9a578aabb3ae36de257 GIT binary patch literal 140442 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
)DYZnat#p)F7sF~{7Ffq+P!>f8&X+4+zNuWl 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

~EE6I4fMZh2HZB-R&HGCW3f{+nK;h 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

*|gHg9! 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%0Ad^V$%n( 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�khK<;m$*{QgS>=(F+kc=j?qS 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 z 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 z + + + + + + + diff --git a/app/loading.html b/app/loading.html index dd5902a09a39..600fa01960d1 100644 --- a/app/loading.html +++ b/app/loading.html @@ -1,9 +1,9 @@ - - + + MetaMask Loading diff --git a/app/manifest/v2/_base.json b/app/manifest/v2/_base.json index c130b94ae1fb..4197c535972e 100644 --- a/app/manifest/v2/_base.json +++ b/app/manifest/v2/_base.json @@ -31,12 +31,12 @@ { "matches": ["file://*/*", "http://*/*", "https://*/*"], "js": [ - "disable-console.js", - "lockdown-install.js", - "lockdown-run.js", - "lockdown-more.js", - "contentscript.js", - "inpage.js" + "scripts/disable-console.js", + "scripts/lockdown-install.js", + "scripts/lockdown-run.js", + "scripts/lockdown-more.js", + "scripts/contentscript.js", + "scripts/inpage.js" ], "run_at": "document_start", "all_frames": true diff --git a/app/manifest/v3/_base.json b/app/manifest/v3/_base.json index 42df2d437671..39e96825add8 100644 --- a/app/manifest/v3/_base.json +++ b/app/manifest/v3/_base.json @@ -14,7 +14,7 @@ }, "author": "https://metamask.io", "background": { - "service_worker": "app-init.js" + "service_worker": "scripts/app-init.js" }, "commands": { "_execute_browser_action": { @@ -30,11 +30,11 @@ { "matches": ["file://*/*", "http://*/*", "https://*/*"], "js": [ - "disable-console.js", - "lockdown-install.js", - "lockdown-run.js", - "lockdown-more.js", - "contentscript.js" + "scripts/disable-console.js", + "scripts/lockdown-install.js", + "scripts/lockdown-run.js", + "scripts/lockdown-more.js", + "scripts/contentscript.js" ], "run_at": "document_start", "all_frames": true diff --git a/app/notification.html b/app/notification.html index a0e0f6dcf5a7..70f02e9ab421 100644 --- a/app/notification.html +++ b/app/notification.html @@ -32,7 +32,7 @@ margin-top: 1rem; } - +

@@ -50,11 +50,6 @@ />
- + diff --git a/app/popup.html b/app/popup.html index c27442faa6af..296b0ceae711 100644 --- a/app/popup.html +++ b/app/popup.html @@ -4,7 +4,7 @@ MetaMask - +
@@ -12,6 +12,6 @@
- + diff --git a/app/scripts/app-init.js b/app/scripts/app-init.js index 579f2b96bdca..f5904e653cbe 100644 --- a/app/scripts/app-init.js +++ b/app/scripts/app-init.js @@ -57,27 +57,27 @@ function importAllScripts() { throw new Error('Missing APPLY_LAVAMOAT environment variable'); } - loadFile('./sentry-install.js'); + loadFile('./scripts/sentry-install.js'); // eslint-disable-next-line no-undef const isWorker = !self.document; if (!isWorker) { - loadFile('./snow.js'); + loadFile('./scripts/snow.js'); } - loadFile('./use-snow.js'); + loadFile('./scripts/use-snow.js'); // Always apply LavaMoat in e2e test builds, so that we can capture initialization stats if (testMode || applyLavaMoat) { - loadFile('./runtime-lavamoat.js'); - loadFile('./lockdown-more.js'); - loadFile('./policy-load.js'); + loadFile('./scripts/runtime-lavamoat.js'); + loadFile('./scripts/lockdown-more.js'); + loadFile('./scripts/policy-load.js'); } else { - loadFile('./init-globals.js'); - loadFile('./lockdown-install.js'); - loadFile('./lockdown-run.js'); - loadFile('./lockdown-more.js'); - loadFile('./runtime-cjs.js'); + loadFile('./scripts/init-globals.js'); + loadFile('./scripts/lockdown-install.js'); + loadFile('./scripts/lockdown-run.js'); + loadFile('./scripts/lockdown-more.js'); + loadFile('./scripts/runtime-cjs.js'); } // This environment variable is set to a string of comma-separated relative file paths. @@ -145,7 +145,7 @@ const registerInPageContentScript = async () => { { id: 'inpage', matches: ['file://*/*', 'http://*/*', 'https://*/*'], - js: ['inpage.js'], + js: ['scripts/inpage.js'], runAt: 'document_start', world: 'MAIN', }, diff --git a/app/scripts/constants/contracts.ts b/app/scripts/constants/contracts.ts index 27fa0606dfba..bc27be31d95c 100644 --- a/app/scripts/constants/contracts.ts +++ b/app/scripts/constants/contracts.ts @@ -12,4 +12,9 @@ export const SINGLE_CALL_BALANCES_ADDRESSES = { [CHAIN_IDS.FANTOM]: '0x07f697424ABe762bB808c109860c04eA488ff92B', [CHAIN_IDS.ARBITRUM]: '0x151E24A486D7258dd7C33Fb67E4bB01919B7B32c', [CHAIN_IDS.BLAST]: '0xfd5730e96f9dffae40d99b77015bd42816280998', + [CHAIN_IDS.LINEA_GOERLI]: '0x10dAd7Ca3921471f616db788D9300DC97Db01783', + [CHAIN_IDS.LINEA_MAINNET]: '0xF62e6a41561b3650a69Bb03199C735e3E3328c0D', + [CHAIN_IDS.AURORA]: '0x1286415D333855237f89Df27D388127181448538', + [CHAIN_IDS.BASE]: '0x6AA75276052D96696134252587894ef5FFA520af', + [CHAIN_IDS.ZKSYNC_ERA]: '0x458fEd3144680a5b8bcfaa0F9594aa19B4Ea2D34', }; diff --git a/app/scripts/controllers/app-state.js b/app/scripts/controllers/app-state.js index 44d1a367362e..92ebef3cebfa 100644 --- a/app/scripts/controllers/app-state.js +++ b/app/scripts/controllers/app-state.js @@ -67,6 +67,10 @@ export default class AppStateController extends EventEmitter { }, surveyLinkLastClickedOrClosed: null, signatureSecurityAlertResponses: {}, + // States used for displaying the changed network toast + switchedNetworkDetails: null, + switchedNetworkNeverShowMessage: false, + currentExtensionPopupId: 0, }); this.timer = null; @@ -401,6 +405,45 @@ export default class AppStateController extends EventEmitter { this.store.updateState({ showAccountBanner }); } + /** + * Sets a unique ID for the current extension popup + * + * @param currentExtensionPopupId + */ + setCurrentExtensionPopupId(currentExtensionPopupId) { + this.store.updateState({ currentExtensionPopupId }); + } + + /** + * Sets an object with networkName and appName + * or `null` if the message is meant to be cleared + * + * @param {{ origin: string, networkClientId: string } | null} switchedNetworkDetails - Details about the network that MetaMask just switched to. + */ + setSwitchedNetworkDetails(switchedNetworkDetails) { + this.store.updateState({ switchedNetworkDetails }); + } + + /** + * Clears the switched network details in state + */ + clearSwitchedNetworkDetails() { + this.store.updateState({ switchedNetworkDetails: null }); + } + + /** + * Remembers if the user prefers to never see the + * network switched message again + * + * @param {boolean} switchedNetworkNeverShowMessage + */ + setSwitchedNetworkNeverShowMessage(switchedNetworkNeverShowMessage) { + this.store.updateState({ + switchedNetworkDetails: null, + switchedNetworkNeverShowMessage, + }); + } + /** * Sets a property indicating the model of the user's Trezor hardware wallet * diff --git a/app/scripts/controllers/authentication/auth-snap-requests.ts b/app/scripts/controllers/authentication/auth-snap-requests.ts new file mode 100644 index 000000000000..81c8beaafd40 --- /dev/null +++ b/app/scripts/controllers/authentication/auth-snap-requests.ts @@ -0,0 +1,32 @@ +import type { SnapId } from '@metamask/snaps-sdk'; +import type { HandleSnapRequest } from '@metamask/snaps-controllers'; +import { HandlerType } from '@metamask/snaps-utils'; + +type SnapRPCRequest = Parameters[0]; + +const snapId = 'npm:@metamask/message-signing-snap' as SnapId; + +export function createSnapPublicKeyRequest(): SnapRPCRequest { + return { + snapId, + origin: '', + handler: HandlerType.OnRpcRequest, + request: { + method: 'getPublicKey', + }, + }; +} + +export function createSnapSignMessageRequest( + message: `metamask:${string}`, +): SnapRPCRequest { + return { + snapId, + origin: '', + handler: HandlerType.OnRpcRequest, + request: { + method: 'signMessage', + params: { message }, + }, + }; +} diff --git a/app/scripts/controllers/authentication/authentication-controller.test.ts b/app/scripts/controllers/authentication/authentication-controller.test.ts new file mode 100644 index 000000000000..52cac9329a04 --- /dev/null +++ b/app/scripts/controllers/authentication/authentication-controller.test.ts @@ -0,0 +1,291 @@ +import { ControllerMessenger } from '@metamask/base-controller'; +import type { HandleSnapRequest } from '@metamask/snaps-controllers'; +import AuthenticationController, { + AuthenticationControllerMessenger, + AuthenticationControllerState, +} from './authentication-controller'; +import { + MOCK_ACCESS_TOKEN, + MOCK_LOGIN_RESPONSE, + mockEndpointAccessToken, + mockEndpointGetNonce, + mockEndpointLogin, +} from './mocks/mockServices'; + +const mockSignedInState = (): AuthenticationControllerState => ({ + isSignedIn: true, + sessionData: { + accessToken: 'MOCK_ACCESS_TOKEN', + expiresIn: new Date().toString(), + profile: { + identifierId: MOCK_LOGIN_RESPONSE.profile.identifier_id, + profileId: MOCK_LOGIN_RESPONSE.profile.profile_id, + metametricsId: MOCK_LOGIN_RESPONSE.profile.metametrics_id, + }, + }, +}); + +describe('authentication/authentication-controller - constructor() tests', () => { + test('should initialize with default state', () => { + const controller = new AuthenticationController({ + messenger: createAuthenticationMessenger(), + }); + + expect(controller.state.isSignedIn).toBe(false); + expect(controller.state.sessionData).toBeUndefined(); + }); + + test('should initialize with override state', () => { + const controller = new AuthenticationController({ + messenger: createAuthenticationMessenger(), + state: mockSignedInState(), + }); + + expect(controller.state.isSignedIn).toBe(true); + expect(controller.state.sessionData).toBeDefined(); + }); +}); + +describe('authentication/authentication-controller - performSignIn() tests', () => { + test('Should create access token and update state', async () => { + const mockEndpoints = mockAuthenticationFlowEndpoints(); + const { messenger, mockSnapGetPublicKey, mockSnapSignMessage } = + createMockAuthenticationMessenger(); + + const controller = new AuthenticationController({ messenger }); + + const result = await controller.performSignIn(); + expect(mockSnapGetPublicKey).toBeCalled(); + expect(mockSnapSignMessage).toBeCalled(); + mockEndpoints.mockGetNonceEndpoint.done(); + mockEndpoints.mockLoginEndpoint.done(); + mockEndpoints.mockAccessTokenEndpoint.done(); + expect(result).toBe(MOCK_ACCESS_TOKEN); + + // Assert - state shows user is logged in + expect(controller.state.isSignedIn).toBe(true); + expect(controller.state.sessionData).toBeDefined(); + }); + + test('Should error when nonce endpoint fails', async () => { + await testAndAssertFailingEndpoints('nonce'); + }); + + test('Should error when login endpoint fails', async () => { + await testAndAssertFailingEndpoints('login'); + }); + + test('Should error when tokens endpoint fails', async () => { + await testAndAssertFailingEndpoints('token'); + }); + + async function testAndAssertFailingEndpoints( + endpointFail: 'nonce' | 'login' | 'token', + ) { + const mockEndpoints = mockAuthenticationFlowEndpoints({ + endpointFail, + }); + const { messenger } = createMockAuthenticationMessenger(); + const controller = new AuthenticationController({ messenger }); + + await expect(controller.performSignIn()).rejects.toThrow(); + expect(controller.state.isSignedIn).toBe(false); + + const endpointsCalled = [ + mockEndpoints.mockGetNonceEndpoint.isDone(), + mockEndpoints.mockLoginEndpoint.isDone(), + mockEndpoints.mockAccessTokenEndpoint.isDone(), + ]; + if (endpointFail === 'nonce') { + expect(endpointsCalled).toEqual([true, false, false]); + } + + if (endpointFail === 'login') { + expect(endpointsCalled).toEqual([true, true, false]); + } + + if (endpointFail === 'token') { + expect(endpointsCalled).toEqual([true, true, true]); + } + } +}); + +describe('authentication/authentication-controller - performSignOut() tests', () => { + test('Should remove signed in user and any access tokens', () => { + const { messenger } = createMockAuthenticationMessenger(); + const controller = new AuthenticationController({ + messenger, + state: mockSignedInState(), + }); + + controller.performSignOut(); + expect(controller.state.isSignedIn).toBe(false); + expect(controller.state.sessionData).toBeUndefined(); + }); + + test('Should throw error if attempting to sign out when user is not logged in', () => { + const { messenger } = createMockAuthenticationMessenger(); + const controller = new AuthenticationController({ + messenger, + state: { isSignedIn: false }, + }); + + expect(() => controller.performSignOut()).toThrow(); + }); +}); + +describe('authentication/authentication-controller - getBearerToken() tests', () => { + test('Should throw error if not logged in', async () => { + const { messenger } = createMockAuthenticationMessenger(); + const controller = new AuthenticationController({ + messenger, + state: { isSignedIn: false }, + }); + + await expect(controller.getBearerToken()).rejects.toThrow(); + }); + + test('Should return original access token in state', async () => { + const { messenger } = createMockAuthenticationMessenger(); + const originalState = mockSignedInState(); + const controller = new AuthenticationController({ + messenger, + state: originalState, + }); + + const result = await controller.getBearerToken(); + expect(result).toBeDefined(); + expect(result).toBe(originalState.sessionData?.accessToken); + }); + + test('Should return new access token if state is invalid', async () => { + const { messenger } = createMockAuthenticationMessenger(); + mockAuthenticationFlowEndpoints(); + const originalState = mockSignedInState(); + if (originalState.sessionData) { + originalState.sessionData.accessToken = 'ACCESS_TOKEN_1'; + + const d = new Date(); + d.setMinutes(d.getMinutes() - 31); // expires at 30 mins + originalState.sessionData.expiresIn = d.toString(); + } + + const controller = new AuthenticationController({ + messenger, + state: originalState, + }); + + const result = await controller.getBearerToken(); + expect(result).toBeDefined(); + expect(result).toBe(MOCK_ACCESS_TOKEN); + }); +}); + +describe('authentication/authentication-controller - getSessionProfile() tests', () => { + test('Should throw error if not logged in', async () => { + const { messenger } = createMockAuthenticationMessenger(); + const controller = new AuthenticationController({ + messenger, + state: { isSignedIn: false }, + }); + + await expect(controller.getSessionProfile()).rejects.toThrow(); + }); + + test('Should return original access token in state', async () => { + const { messenger } = createMockAuthenticationMessenger(); + const originalState = mockSignedInState(); + const controller = new AuthenticationController({ + messenger, + state: originalState, + }); + + const result = await controller.getSessionProfile(); + expect(result).toBeDefined(); + expect(result).toEqual(originalState.sessionData?.profile); + }); + + test('Should return new access token if state is invalid', async () => { + const { messenger } = createMockAuthenticationMessenger(); + mockAuthenticationFlowEndpoints(); + const originalState = mockSignedInState(); + if (originalState.sessionData) { + originalState.sessionData.profile.identifierId = 'ID_1'; + + const d = new Date(); + d.setMinutes(d.getMinutes() - 31); // expires at 30 mins + originalState.sessionData.expiresIn = d.toString(); + } + + const controller = new AuthenticationController({ + messenger, + state: originalState, + }); + + const result = await controller.getSessionProfile(); + expect(result).toBeDefined(); + expect(result.identifierId).toBe(MOCK_LOGIN_RESPONSE.profile.identifier_id); + expect(result.profileId).toBe(MOCK_LOGIN_RESPONSE.profile.profile_id); + expect(result.metametricsId).toBe( + MOCK_LOGIN_RESPONSE.profile.metametrics_id, + ); + }); +}); + +function createAuthenticationMessenger() { + const messenger = new ControllerMessenger(); + return messenger.getRestricted({ + name: 'AuthenticationController', + allowedActions: [`SnapController:handleRequest`], + }) as AuthenticationControllerMessenger; +} + +function createMockAuthenticationMessenger() { + const messenger = createAuthenticationMessenger(); + const mockCall = jest.spyOn(messenger, 'call'); + const mockSnapGetPublicKey = jest.fn().mockResolvedValue('MOCK_PUBLIC_KEY'); + const mockSnapSignMessage = jest + .fn() + .mockResolvedValue('MOCK_SIGNED_MESSAGE'); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + mockCall.mockImplementation(((actionType: any, params: any) => { + if ( + actionType === 'SnapController:handleRequest' && + params?.request.method === 'getPublicKey' + ) { + return mockSnapGetPublicKey(); + } + + if ( + actionType === 'SnapController:handleRequest' && + params?.request.method === 'signMessage' + ) { + return mockSnapSignMessage(); + } + + return ''; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + }) as any); + + return { messenger, mockSnapGetPublicKey, mockSnapSignMessage }; +} + +function mockAuthenticationFlowEndpoints(params?: { + endpointFail: 'nonce' | 'login' | 'token'; +}) { + const mockGetNonceEndpoint = mockEndpointGetNonce( + params?.endpointFail === 'nonce' ? { status: 500 } : undefined, + ); + const mockLoginEndpoint = mockEndpointLogin( + params?.endpointFail === 'login' ? { status: 500 } : undefined, + ); + const mockAccessTokenEndpoint = mockEndpointAccessToken( + params?.endpointFail === 'token' ? { status: 500 } : undefined, + ); + + return { + mockGetNonceEndpoint, + mockLoginEndpoint, + mockAccessTokenEndpoint, + }; +} diff --git a/app/scripts/controllers/authentication/authentication-controller.ts b/app/scripts/controllers/authentication/authentication-controller.ts new file mode 100644 index 000000000000..a8a3bb15c7bf --- /dev/null +++ b/app/scripts/controllers/authentication/authentication-controller.ts @@ -0,0 +1,262 @@ +import { + BaseController, + RestrictedControllerMessenger, + StateMetadata, +} from '@metamask/base-controller'; +import { HandleSnapRequest } from '@metamask/snaps-controllers'; +import { + createSnapPublicKeyRequest, + createSnapSignMessageRequest, +} from './auth-snap-requests'; +import { + createLoginRawMessage, + getAccessToken, + getNonce, + login, +} from './services'; + +const THIRTY_MIN_MS = 1000 * 60 * 30; + +const controllerName = 'AuthenticationController'; + +// State +type SessionProfile = { + identifierId: string; + profileId: string; + metametricsId: string; +}; + +type SessionData = { + /** profile - anonymous profile data for the given logged in user */ + profile: SessionProfile; + /** accessToken - used to make requests authorized endpoints */ + accessToken: string; + /** expiresIn - string date to determine if new access token is required */ + expiresIn: string; +}; + +export type AuthenticationControllerState = { + /** + * Global isSignedIn state. + * Can be used to determine if "Profile Syncing" is enabled. + */ + isSignedIn: boolean; + sessionData?: SessionData; +}; +const defaultState: AuthenticationControllerState = { isSignedIn: false }; +const metadata: StateMetadata = { + isSignedIn: { + persist: true, + anonymous: true, + }, + sessionData: { + persist: true, + anonymous: false, + }, +}; + +// Messenger Actions +type CreateActionsObj = { + [K in T]: { + type: `${typeof controllerName}:${K}`; + handler: AuthenticationController[K]; + }; +}; +type ActionsObj = CreateActionsObj< + 'performSignIn' | 'performSignOut' | 'getBearerToken' | 'getSessionProfile' +>; +export type Actions = ActionsObj[keyof ActionsObj]; +export type AuthenticationControllerPerformSignIn = ActionsObj['performSignIn']; +export type AuthenticationControllerPerformSignOut = + ActionsObj['performSignOut']; +export type AuthenticationControllerGetBearerToken = + ActionsObj['getBearerToken']; +export type AuthenticationControllerGetSessionProfile = + ActionsObj['getSessionProfile']; + +// Allowed Actions +type AllowedActions = HandleSnapRequest; + +// Messenger +export type AuthenticationControllerMessenger = RestrictedControllerMessenger< + typeof controllerName, + Actions | AllowedActions, + never, + AllowedActions['type'], + never +>; + +/** + * Controller that enables authentication for restricted endpoints. + * Used for Global Profile Syncing and Notifications + */ +export default class AuthenticationController extends BaseController< + typeof controllerName, + AuthenticationControllerState, + AuthenticationControllerMessenger +> { + constructor({ + messenger, + state, + }: { + messenger: AuthenticationControllerMessenger; + state?: AuthenticationControllerState; + }) { + super({ + messenger, + metadata, + name: controllerName, + state: { ...defaultState, ...state }, + }); + } + + public async performSignIn(): Promise { + const { accessToken } = await this.#performAuthenticationFlow(); + return accessToken; + } + + public performSignOut(): void { + this.#assertLoggedIn(); + + this.update((state) => { + state.isSignedIn = false; + state.sessionData = undefined; + }); + } + + public async getBearerToken(): Promise { + this.#assertLoggedIn(); + + if (this.#hasValidSession(this.state.sessionData)) { + return this.state.sessionData.accessToken; + } + + const { accessToken } = await this.#performAuthenticationFlow(); + return accessToken; + } + + /** + * Will return a session profile. + * Throws if a user is not logged in. + * + * @returns profile for the session. + */ + public async getSessionProfile(): Promise { + this.#assertLoggedIn(); + + if (this.#hasValidSession(this.state.sessionData)) { + return this.state.sessionData.profile; + } + + const { profile } = await this.#performAuthenticationFlow(); + return profile; + } + + #assertLoggedIn(): void { + if (!this.state.isSignedIn) { + throw new Error( + `${controllerName}: Unable to call method, user is not authenticated`, + ); + } + } + + async #performAuthenticationFlow(): Promise<{ + profile: SessionProfile; + accessToken: string; + }> { + try { + // 1. Nonce + const publicKey = await this.#snapGetPublicKey(); + const nonce = await getNonce(publicKey); + if (!nonce) { + throw new Error(`Unable to get nonce`); + } + + // 2. Login + const rawMessage = createLoginRawMessage(nonce, publicKey); + const signature = await this.#snapSignMessage(rawMessage); + const loginResponse = await login(rawMessage, signature); + if (!loginResponse?.token) { + throw new Error(`Unable to login`); + } + + const profile: SessionProfile = { + identifierId: loginResponse.profile.identifier_id, + profileId: loginResponse.profile.profile_id, + metametricsId: loginResponse.profile.metametrics_id, + }; + + // 3. Trade for Access Token + const accessToken = await getAccessToken(loginResponse.token); + if (!accessToken) { + throw new Error(`Unable to get Access Token`); + } + + // Update Internal State + this.update((state) => { + state.isSignedIn = true; + const expiresIn = new Date(); + expiresIn.setTime(expiresIn.getTime() + THIRTY_MIN_MS); + state.sessionData = { + profile, + accessToken, + expiresIn: expiresIn.toString(), + }; + }); + + return { + profile, + accessToken, + }; + } catch (e) { + const errorMessage = + e instanceof Error ? e.message : JSON.stringify(e ?? ''); + throw new Error( + `${controllerName}: Failed to authenticate - ${errorMessage}`, + ); + } + } + + #hasValidSession( + sessionData: SessionData | undefined, + ): sessionData is SessionData { + if (!sessionData) { + return false; + } + + const prevDate = Date.parse(sessionData.expiresIn); + if (isNaN(prevDate)) { + return false; + } + + const currentDate = new Date(); + const diffMs = Math.abs(currentDate.getTime() - prevDate); + + return THIRTY_MIN_MS > diffMs; + } + + /** + * Returns the auth snap public key. + * + * @returns The snap public key. + */ + #snapGetPublicKey(): Promise { + return this.messagingSystem.call( + 'SnapController:handleRequest', + createSnapPublicKeyRequest(), + ) as Promise; + } + + /** + * Signs a specific message using an underlying auth snap. + * + * @param message - A specific tagged message to sign. + * @returns A Signature created by the snap. + */ + #snapSignMessage(message: `metamask:${string}`): Promise { + return this.messagingSystem.call( + 'SnapController:handleRequest', + createSnapSignMessageRequest(message), + ) as Promise; + } +} diff --git a/app/scripts/controllers/authentication/mocks/mockServices.ts b/app/scripts/controllers/authentication/mocks/mockServices.ts new file mode 100644 index 000000000000..5db1690517dd --- /dev/null +++ b/app/scripts/controllers/authentication/mocks/mockServices.ts @@ -0,0 +1,62 @@ +import nock from 'nock'; +import { + AUTH_LOGIN_ENDPOINT, + AUTH_NONCE_ENDPOINT, + LoginResponse, + NonceResponse, + OAuthTokenResponse, + OIDC_TOKENS_ENDPOINT, +} from '../services'; + +type MockReply = { + status: nock.StatusCode; + body?: nock.Body; +}; + +export const MOCK_NONCE = '4cbfqzoQpcNxVImGv'; +const MOCK_NONCE_RESPONSE: NonceResponse = { + nonce: MOCK_NONCE, +}; +export function mockEndpointGetNonce(mockReply?: MockReply) { + const reply = mockReply ?? { status: 200, body: MOCK_NONCE_RESPONSE }; + const mockNonceEndpoint = nock(AUTH_NONCE_ENDPOINT) + .get('') + .query(true) + .reply(reply.status, reply.body); + + return mockNonceEndpoint; +} + +export const MOCK_JWT = + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'; +export const MOCK_LOGIN_RESPONSE: LoginResponse = { + token: MOCK_JWT, + expires_in: new Date().toString(), + profile: { + identifier_id: 'MOCK_IDENTIFIER', + profile_id: 'MOCK_PROFILE_ID', + metametrics_id: 'MOCK_METAMETRICS_ID', + }, +}; +export function mockEndpointLogin(mockReply?: MockReply) { + const reply = mockReply ?? { status: 200, body: MOCK_LOGIN_RESPONSE }; + const mockLoginEndpoint = nock(AUTH_LOGIN_ENDPOINT) + .post('') + .reply(reply.status, reply.body); + + return mockLoginEndpoint; +} + +export const MOCK_ACCESS_TOKEN = `MOCK_ACCESS_TOKEN-${MOCK_JWT}`; +const MOCK_OATH_TOKEN_RESPONSE: OAuthTokenResponse = { + access_token: MOCK_ACCESS_TOKEN, + expires_in: new Date().getTime(), +}; +export function mockEndpointAccessToken(mockReply?: MockReply) { + const reply = mockReply ?? { status: 200, body: MOCK_OATH_TOKEN_RESPONSE }; + const mockOidcTokensEndpoint = nock(OIDC_TOKENS_ENDPOINT) + .post('') + .reply(reply.status, reply.body); + + return mockOidcTokensEndpoint; +} diff --git a/app/scripts/controllers/authentication/services.test.ts b/app/scripts/controllers/authentication/services.test.ts new file mode 100644 index 000000000000..4806eb4159a1 --- /dev/null +++ b/app/scripts/controllers/authentication/services.test.ts @@ -0,0 +1,100 @@ +import { + MOCK_ACCESS_TOKEN, + MOCK_JWT, + MOCK_NONCE, + mockEndpointAccessToken, + mockEndpointGetNonce, + mockEndpointLogin, +} from './mocks/mockServices'; +import { + createLoginRawMessage, + getAccessToken, + getNonce, + login, +} from './services'; + +describe('authentication/services.ts - getNonce() tests', () => { + test('returns nonce on valid request', async () => { + const mockNonceEndpoint = mockEndpointGetNonce(); + const response = await getNonce('MOCK_PUBLIC_KEY'); + + mockNonceEndpoint.done(); + expect(response).toBe(MOCK_NONCE); + }); + + test('returns null if request is invalid', async () => { + async function testInvalidResponse( + status: number, + body: Record, + ) { + const mockNonceEndpoint = mockEndpointGetNonce({ status, body }); + const response = await getNonce('MOCK_PUBLIC_KEY'); + + mockNonceEndpoint.done(); + expect(response).toBe(null); + } + + await testInvalidResponse(500, { error: 'mock server error' }); + await testInvalidResponse(400, { error: 'mock bad request' }); + }); +}); + +describe('authentication/services.ts - login() tests', () => { + test('returns single-use jwt if successful login', async () => { + const mockLoginEndpoint = mockEndpointLogin(); + const response = await login('mock raw message', 'mock signature'); + + mockLoginEndpoint.done(); + expect(response?.token).toBe(MOCK_JWT); + expect(response?.profile).toBeDefined(); + }); + + test('returns null if request is invalid', async () => { + async function testInvalidResponse( + status: number, + body: Record, + ) { + const mockLoginEndpoint = mockEndpointLogin({ status, body }); + const response = await login('mock raw message', 'mock signature'); + + mockLoginEndpoint.done(); + expect(response).toBe(null); + } + + await testInvalidResponse(500, { error: 'mock server error' }); + await testInvalidResponse(400, { error: 'mock bad request' }); + }); +}); + +describe('authentication/services.ts - getAccessToken() tests', () => { + test('returns access token jwt if successful OIDC token request', async () => { + const mockLoginEndpoint = mockEndpointAccessToken(); + const response = await getAccessToken('mock single-use jwt'); + + mockLoginEndpoint.done(); + expect(response).toBe(MOCK_ACCESS_TOKEN); + }); + + test('returns null if request is invalid', async () => { + async function testInvalidResponse( + status: number, + body: Record, + ) { + const mockLoginEndpoint = mockEndpointAccessToken({ status, body }); + const response = await getAccessToken('mock single-use jwt'); + + mockLoginEndpoint.done(); + expect(response).toBe(null); + } + + await testInvalidResponse(500, { error: 'mock server error' }); + await testInvalidResponse(400, { error: 'mock bad request' }); + }); +}); + +describe('authentication/services.ts - createLoginRawMessage() tests', () => { + test('creates the raw message format for login request', () => { + const message = createLoginRawMessage('NONCE', 'PUBLIC_KEY'); + expect(message).toBe('metamask:NONCE:PUBLIC_KEY'); + }); +}); diff --git a/app/scripts/controllers/authentication/services.ts b/app/scripts/controllers/authentication/services.ts new file mode 100644 index 000000000000..345302e905cd --- /dev/null +++ b/app/scripts/controllers/authentication/services.ts @@ -0,0 +1,116 @@ +const AUTH_ENDPOINT = process.env.AUTH_API || ''; +export const AUTH_NONCE_ENDPOINT = `${AUTH_ENDPOINT}/api/v2/nonce`; +export const AUTH_LOGIN_ENDPOINT = `${AUTH_ENDPOINT}/api/v2/srp/login`; + +const OIDC_ENDPOINT = process.env.OIDC_API || ''; +export const OIDC_TOKENS_ENDPOINT = `${OIDC_ENDPOINT}/oauth2/token`; +const OIDC_CLIENT_ID = process.env.OIDC_CLIENT_ID || ''; +const OIDC_GRANT_TYPE = process.env.OIDC_GRANT_TYPE || ''; + +export type NonceResponse = { + nonce: string; +}; +export async function getNonce(publicKey: string): Promise { + const nonceUrl = new URL(AUTH_NONCE_ENDPOINT); + nonceUrl.searchParams.set('identifier', publicKey); + + try { + const nonceResponse = await fetch(nonceUrl.toString()); + if (!nonceResponse.ok) { + return null; + } + + const nonceJson: NonceResponse = await nonceResponse.json(); + return nonceJson?.nonce ?? null; + } catch (e) { + console.error('authentication-controller/services: unable to get nonce', e); + return null; + } +} + +export type LoginResponse = { + token: string; + expires_in: string; + /** + * Contains anonymous information about the logged in profile. + * + * @property identifier_id - a deterministic unique identifier on the method used to sign in + * @property profile_id - a unique id for a given profile + * @property metametrics_id - an anonymous server id + */ + profile: { + identifier_id: string; + profile_id: string; + metametrics_id: string; + }; +}; +export async function login( + rawMessage: string, + signature: string, +): Promise { + try { + const response = await fetch(AUTH_LOGIN_ENDPOINT, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + signature, + raw_message: rawMessage, + }), + }); + + if (!response.ok) { + return null; + } + + const loginResponse: LoginResponse = await response.json(); + return loginResponse ?? null; + } catch (e) { + console.error('authentication-controller/services: unable to login', e); + return null; + } +} + +export type OAuthTokenResponse = { + access_token: string; + expires_in: number; +}; +export async function getAccessToken(jwtToken: string): Promise { + const headers = new Headers({ + 'Content-Type': 'application/x-www-form-urlencoded', + }); + + const urlEncodedBody = new URLSearchParams(); + urlEncodedBody.append('grant_type', OIDC_GRANT_TYPE); + urlEncodedBody.append('client_id', OIDC_CLIENT_ID); + urlEncodedBody.append('assertion', jwtToken); + + try { + const response = await fetch(OIDC_TOKENS_ENDPOINT, { + method: 'POST', + headers, + body: urlEncodedBody.toString(), + }); + + if (!response.ok) { + return null; + } + + const accessTokenResponse: OAuthTokenResponse = await response.json(); + return accessTokenResponse?.access_token ?? null; + } catch (e) { + console.error( + 'authentication-controller/services: unable to get access token', + e, + ); + return null; + } +} + +export function createLoginRawMessage( + nonce: string, + publicKey: string, +): `metamask:${string}:${string}` { + return `metamask:${nonce}:${publicKey}` as const; +} diff --git a/app/scripts/controllers/decrypt-message.test.ts b/app/scripts/controllers/decrypt-message.test.ts index a1cb0a58f037..848fe3f9986d 100644 --- a/app/scripts/controllers/decrypt-message.test.ts +++ b/app/scripts/controllers/decrypt-message.test.ts @@ -38,6 +38,8 @@ const createMessengerMock = () => registerInitialEventPayload: jest.fn(), publish: jest.fn(), call: jest.fn(), + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any as jest.Mocked); const createDecryptMessageManagerMock = () => @@ -57,6 +59,8 @@ const createDecryptMessageManagerMock = () => hub: { on: jest.fn(), }, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any as jest.Mocked); describe('DecryptMessageController', () => { @@ -81,6 +85,8 @@ describe('DecryptMessageController', () => { const mockMessengerAction = ( action: string, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any callback: (actionName: string, ...args: any[]) => any, ) => { messengerMock.call.mockImplementation((actionName, ...rest) => { @@ -100,9 +106,17 @@ describe('DecryptMessageController', () => { ); decryptMessageController = new MockDecryptMessageController({ + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any getState: getStateMock as any, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any keyringController: keyringControllerMock as any, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any messenger: messengerMock as any, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any metricsEvent: metricsEventMock as any, } as DecryptMessageControllerOptions); }); @@ -116,6 +130,8 @@ describe('DecryptMessageController', () => { decryptMessageController.update(() => ({ unapprovedDecryptMsgs: { [messageIdMock]: messageMock, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any, unapprovedDecryptMsgCount: 1, })); @@ -131,6 +147,8 @@ describe('DecryptMessageController', () => { it('should add unapproved messages', async () => { await decryptMessageController.newRequestDecryptMessage( messageMock, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any undefined as any, ); @@ -220,6 +238,8 @@ describe('DecryptMessageController', () => { const messageToDecrypt = { ...messageMock, data: messageDataMock, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any; decryptMessageManagerMock.getMessage.mockReturnValue(messageToDecrypt); mockMessengerAction( @@ -271,6 +291,8 @@ describe('DecryptMessageController', () => { it('should be able to reject all unapproved messages', async () => { decryptMessageManagerMock.getUnapprovedMessages.mockReturnValue({ [messageIdMock]: messageMock, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any); await decryptMessageController.rejectUnapproved('reason to cancel'); diff --git a/app/scripts/controllers/decrypt-message.ts b/app/scripts/controllers/decrypt-message.ts index 5dbb4d8b43c6..51bf9c4b1250 100644 --- a/app/scripts/controllers/decrypt-message.ts +++ b/app/scripts/controllers/decrypt-message.ts @@ -117,8 +117,12 @@ export type DecryptMessageControllerMessenger = RestrictedControllerMessenger< >; export type DecryptMessageControllerOptions = { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any getState: () => any; messenger: DecryptMessageControllerMessenger; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any metricsEvent: (payload: any, options?: any) => void; }; @@ -132,8 +136,12 @@ export default class DecryptMessageController extends BaseController< > { hub: EventEmitter; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any private _getState: () => any; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any private _metricsEvent: (payload: any, options?: any) => void; private _decryptMessageManager: DecryptMessageManager; @@ -363,6 +371,8 @@ export default class DecryptMessageController extends BaseController< ) { messageManager.subscribe((state: MessageManagerState) => { const newMessages = this._migrateMessages( + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any state.unapprovedMessages as any, ); this.update((draftState) => { diff --git a/app/scripts/controllers/encryption-public-key.test.ts b/app/scripts/controllers/encryption-public-key.test.ts index c36418abffb1..274f0c67d7e9 100644 --- a/app/scripts/controllers/encryption-public-key.test.ts +++ b/app/scripts/controllers/encryption-public-key.test.ts @@ -34,6 +34,8 @@ const messageMock = { status: 'unapproved', type: 'testType', rawSig: undefined, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any as AbstractMessage; const coreMessageMock = { @@ -56,6 +58,8 @@ const createMessengerMock = () => registerActionHandler: jest.fn(), publish: jest.fn(), call: jest.fn(), + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any as jest.Mocked); const createEncryptionPublicKeyManagerMock = () => @@ -71,6 +75,8 @@ const createEncryptionPublicKeyManagerMock = () => hub: { on: jest.fn(), }, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any as jest.Mocked); describe('EncryptionPublicKeyController', () => { @@ -96,10 +102,20 @@ describe('EncryptionPublicKeyController', () => { ); encryptionPublicKeyController = new EncryptionPublicKeyController({ + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any messenger: messengerMock as any, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any getEncryptionPublicKey: getEncryptionPublicKeyMock as any, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any getAccountKeyringType: getAccountKeyringTypeMock as any, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any getState: getStateMock as any, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any metricsEvent: metricsEventMock as any, } as EncryptionPublicKeyControllerOptions); }); @@ -120,6 +136,8 @@ describe('EncryptionPublicKeyController', () => { encryptionPublicKeyController.update(() => ({ unapprovedEncryptionPublicKeyMsgs: { [messageIdMock]: messageMock, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any, unapprovedEncryptionPublicKeyMsgCount: 1, })); @@ -140,11 +158,15 @@ describe('EncryptionPublicKeyController', () => { [messageIdMock2]: messageMock, }; encryptionPublicKeyManagerMock.getUnapprovedMessages.mockReturnValueOnce( + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any messages as any, ); // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore encryptionPublicKeyController.update(() => ({ + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any unapprovedEncryptionPublicKeyMsgs: messages as any, })); }); @@ -353,6 +375,8 @@ describe('EncryptionPublicKeyController', () => { const mockListener = jest.fn(); encryptionPublicKeyController.hub.on('updateBadge', mockListener); + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any (encryptionPublicKeyManagerMock.hub.on as any).mock.calls[0][1](); expect(mockListener).toHaveBeenCalledTimes(1); @@ -361,6 +385,8 @@ describe('EncryptionPublicKeyController', () => { it('requires approval on unapproved message event from EncryptionPublicKeyManager', () => { messengerMock.call.mockResolvedValueOnce({}); + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any (encryptionPublicKeyManagerMock.hub.on as any).mock.calls[1][1]( messageParamsMock, ); @@ -379,12 +405,16 @@ describe('EncryptionPublicKeyController', () => { it('updates state on EncryptionPublicKeyManager state change', async () => { await encryptionPublicKeyManagerMock.subscribe.mock.calls[0][0]({ + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any unapprovedMessages: { [messageIdMock]: coreMessageMock as any }, unapprovedMessagesCount: 3, }); expect(encryptionPublicKeyController.state).toEqual({ unapprovedEncryptionPublicKeyMsgs: { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any [messageIdMock]: stateMessageMock as any, }, unapprovedEncryptionPublicKeyMsgCount: 3, diff --git a/app/scripts/controllers/encryption-public-key.ts b/app/scripts/controllers/encryption-public-key.ts index 4bb019a10b72..2864bab34600 100644 --- a/app/scripts/controllers/encryption-public-key.ts +++ b/app/scripts/controllers/encryption-public-key.ts @@ -87,7 +87,11 @@ export type EncryptionPublicKeyControllerOptions = { messenger: EncryptionPublicKeyControllerMessenger; getEncryptionPublicKey: (address: string) => Promise; getAccountKeyringType: (account: string) => Promise; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any getState: () => any; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any metricsEvent: (payload: any, options?: any) => void; }; @@ -105,10 +109,14 @@ export default class EncryptionPublicKeyController extends BaseController< private _getAccountKeyringType: (account: string) => Promise; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any private _getState: () => any; private _encryptionPublicKeyManager: EncryptionPublicKeyManager; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any private _metricsEvent: (payload: any, options?: any) => void; /** @@ -352,6 +360,8 @@ export default class EncryptionPublicKeyController extends BaseController< ) { messageManager.subscribe((state: MessageManagerState) => { const newMessages = this._migrateMessages( + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any state.unapprovedMessages as any, ); this.update((draftState) => { diff --git a/app/scripts/controllers/mmi-controller.ts b/app/scripts/controllers/mmi-controller.ts index b2d66f36afdf..4f8b77de2f52 100644 --- a/app/scripts/controllers/mmi-controller.ts +++ b/app/scripts/controllers/mmi-controller.ts @@ -48,6 +48,8 @@ type UpdateCustodianTransactionsParameters = { txList: string[]; custodyController: CustodyController; transactionUpdateController: TransactionUpdateController; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any txStateManager: any; getPendingNonce: (address: string) => Promise; setTxHash: (txId: string, txHash: string) => void; @@ -58,6 +60,8 @@ export default class MMIController extends EventEmitter { public mmiConfigurationController: MmiConfigurationController; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any public keyringController: any; public preferencesController: PreferencesController; @@ -68,8 +72,12 @@ export default class MMIController extends EventEmitter { private custodyController: CustodyController; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any private getState: () => any; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any private getPendingNonce: (address: string) => Promise; private accountTracker: AccountTracker; @@ -78,28 +86,42 @@ export default class MMIController extends EventEmitter { private networkController: NetworkController; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any private permissionController: any; private signatureController: SignatureController; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any private messenger: any; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any private platform: any; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any private extension: any; private updateTransactionHash: (txId: string, txHash: string) => void; public trackTransactionEvents: ( args: { transactionMeta: TransactionMeta }, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any event: any, ) => void; private txStateManager: { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any getTransactions: (query?: any, opts?: any, fullTx?: boolean) => any[]; setTxStatusSigned: (txId: string) => void; setTxStatusSubmitted: (txId: string) => void; setTxStatusFailed: (txId: string) => void; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any updateTransaction: (txMeta: any) => void; }; @@ -171,6 +193,8 @@ export default class MMIController extends EventEmitter { async trackTransactionEventFromCustodianEvent( txMeta: TransactionMeta, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any event: any, ) { // transactionMetricsRequest parameter is already bound in the constructor @@ -322,6 +346,8 @@ export default class MMIController extends EventEmitter { string, { name: string; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any custodianDetails: any; labels: Label[]; token: string; diff --git a/app/scripts/controllers/onboarding.test.ts b/app/scripts/controllers/onboarding.test.ts new file mode 100644 index 000000000000..61b9cf8de589 --- /dev/null +++ b/app/scripts/controllers/onboarding.test.ts @@ -0,0 +1,57 @@ +import { FirstTimeFlowType } from '../../../shared/constants/onboarding'; +import OnboardingController, { OnboardingControllerState } from './onboarding'; + +describe('OnboardingController', () => { + let onboardingController: OnboardingController; + + beforeEach(() => { + onboardingController = new OnboardingController({ + initState: { + seedPhraseBackedUp: null, + firstTimeFlowType: null, + completedOnboarding: false, + onboardingTabs: {}, + }, + }); + }); + + it('should set the seedPhraseBackedUp property', () => { + const newSeedPhraseBackUpState = true; + onboardingController.setSeedPhraseBackedUp(newSeedPhraseBackUpState); + const state: OnboardingControllerState = + onboardingController.store.getState(); + expect(state.seedPhraseBackedUp).toBe(newSeedPhraseBackUpState); + }); + + it('should set the firstTimeFlowType property', () => { + const type: FirstTimeFlowType = FirstTimeFlowType.create; + onboardingController.setFirstTimeFlowType(type); + const state: OnboardingControllerState = + onboardingController.store.getState(); + expect(state.firstTimeFlowType).toBe(type); + }); + + it('should register a site for onboarding', async () => { + const location = 'example.com'; + const tabId = '123'; + await onboardingController.registerOnboarding(location, tabId); + const state: OnboardingControllerState = + onboardingController.store.getState(); + expect(state.onboardingTabs?.[location]).toBe(tabId); + }); + + it('should skip update state if the location is already onboard', async () => { + const location = 'example.com'; + const tabId = '123'; + await onboardingController.registerOnboarding(location, tabId); + const state: OnboardingControllerState = + onboardingController.store.getState(); + const updateStateSpy = jest.spyOn( + onboardingController.store, + 'updateState', + ); + + expect(state.onboardingTabs?.[location]).toBe(tabId); + expect(updateStateSpy).not.toHaveBeenCalled(); + }); +}); diff --git a/app/scripts/controllers/preferences.js b/app/scripts/controllers/preferences.js index 7a50baaffb0d..01404fe9f743 100644 --- a/app/scripts/controllers/preferences.js +++ b/app/scripts/controllers/preferences.js @@ -91,9 +91,11 @@ export default class PreferencesController { showExtensionInFullSizeView: false, showFiatInTestnets: false, showTestNetworks: false, + smartTransactionsOptInStatus: null, // null means we will show the Smart Transactions opt-in modal to a user if they are eligible useNativeCurrencyAsPrimaryCurrency: true, hideZeroBalanceTokens: false, petnamesEnabled: true, + featureNotificationsEnabled: false, }, // ENS decentralized website resolution ipfsGateway: IPFS_DEFAULT_GATEWAY_URL, diff --git a/app/scripts/lib/AbstractPetnamesBridge.test.ts b/app/scripts/lib/AbstractPetnamesBridge.test.ts index 608454b38afe..3347c90f13f5 100644 --- a/app/scripts/lib/AbstractPetnamesBridge.test.ts +++ b/app/scripts/lib/AbstractPetnamesBridge.test.ts @@ -94,6 +94,8 @@ function createNameControllerMock(state: NameControllerState) { function createMessengerMock(): jest.Mocked { return { subscribe: jest.fn(), + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any; } diff --git a/app/scripts/lib/AccountIdentitiesPetnamesBridge.test.ts b/app/scripts/lib/AccountIdentitiesPetnamesBridge.test.ts index 6431381d7099..b7ac979f3a1c 100644 --- a/app/scripts/lib/AccountIdentitiesPetnamesBridge.test.ts +++ b/app/scripts/lib/AccountIdentitiesPetnamesBridge.test.ts @@ -105,16 +105,22 @@ function createNameControllerMock( return { state, setName: jest.fn(), + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any; } function simulateSubscribe( messenger: jest.Mocked, stateChange: AccountsControllerState, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any patch: any[], ) { const listener = messenger.subscribe.mock.calls[0][1] as ( stateChange: AccountsControllerState, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any patch: any[], ) => void; listener(stateChange, patch); diff --git a/app/scripts/lib/AddressBookPetnamesBridge.test.ts b/app/scripts/lib/AddressBookPetnamesBridge.test.ts index c98e6a5e309e..f95726fba7b2 100644 --- a/app/scripts/lib/AddressBookPetnamesBridge.test.ts +++ b/app/scripts/lib/AddressBookPetnamesBridge.test.ts @@ -37,12 +37,16 @@ function createNameControllerMock( return { state, setName: jest.fn(), + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any; } function createMessengerMock(): jest.Mocked { return { subscribe: jest.fn(), + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any; } diff --git a/app/scripts/lib/AddressBookPetnamesBridge.ts b/app/scripts/lib/AddressBookPetnamesBridge.ts index e6f7e9813fa1..141814a9ef62 100644 --- a/app/scripts/lib/AddressBookPetnamesBridge.ts +++ b/app/scripts/lib/AddressBookPetnamesBridge.ts @@ -35,9 +35,13 @@ export class AddressBookPetnamesBridge extends AbstractPetnamesBridge { const entries: PetnameEntry[] = []; const { state } = this.#addressBookController; for (const chainId of Object.keys(state.addressBook)) { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const chainEntries = state.addressBook[chainId as any]; for (const address of Object.keys(chainEntries)) { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const entry = state.addressBook[chainId as any][address]; const normalizedChainId = chainId.toLowerCase(); const { name, isEns } = entry; @@ -64,11 +68,17 @@ export class AddressBookPetnamesBridge extends AbstractPetnamesBridge { */ protected updateSourceEntry(type: ChangeType, entry: PetnameEntry): void { if (type === ChangeType.DELETED) { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any this.#addressBookController.delete(entry.variation as any, entry.value); } else { this.#addressBookController.set( entry.value, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any entry.name as any, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any entry.variation as any, ); } diff --git a/app/scripts/lib/SnapsNameProvider.test.ts b/app/scripts/lib/SnapsNameProvider.test.ts index 6d6f0dd6a120..25a5f22a3f80 100644 --- a/app/scripts/lib/SnapsNameProvider.test.ts +++ b/app/scripts/lib/SnapsNameProvider.test.ts @@ -94,6 +94,8 @@ function createMockMessenger({ return { call: callMock, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any; } diff --git a/app/scripts/lib/backup.test.js b/app/scripts/lib/backup.test.js index ceab30f28188..850e6a719467 100644 --- a/app/scripts/lib/backup.test.js +++ b/app/scripts/lib/backup.test.js @@ -161,6 +161,7 @@ const jsonData = JSON.stringify({ showExtensionInFullSizeView: false, showFiatInTestnets: false, showTestNetworks: true, + smartTransactionsOptInStatus: false, useNativeCurrencyAsPrimaryCurrency: true, }, ipfsGateway: 'dweb.link', diff --git a/app/scripts/lib/encryptor-factory.test.ts b/app/scripts/lib/encryptor-factory.test.ts new file mode 100644 index 000000000000..729162ff2ecb --- /dev/null +++ b/app/scripts/lib/encryptor-factory.test.ts @@ -0,0 +1,174 @@ +import * as browserPassworder from '@metamask/browser-passworder'; +import { encryptorFactory } from './encryptor-factory'; + +jest.mock('@metamask/browser-passworder'); + +const mockIterations = 100; +const mockPassword = 'password'; +const mockData = 'data'; + +describe('encryptorFactory', () => { + afterEach(async () => { + jest.resetAllMocks(); + }); + + const mockBrowserPassworder = browserPassworder as jest.Mocked< + typeof browserPassworder + >; + + it('should return an object with browser passworder methods', () => { + const encryptor = encryptorFactory(mockIterations); + + [ + 'encrypt', + 'encryptWithDetail', + 'encryptWithKey', + 'decrypt', + 'decryptWithDetail', + 'decryptWithKey', + 'keyFromPassword', + 'importKey', + 'isVaultUpdated', + ].forEach((method) => { + expect(encryptor).toHaveProperty(method); + }); + }); + + describe('encrypt', () => { + it('should call browser-passworder.encrypt with the given password, data, and iterations', async () => { + const encryptor = encryptorFactory(mockIterations); + + await encryptor.encrypt(mockPassword, mockData); + + expect(mockBrowserPassworder.encrypt).toHaveBeenCalledWith( + mockPassword, + mockData, + undefined, + undefined, + { + algorithm: 'PBKDF2', + params: { + iterations: mockIterations, + }, + }, + ); + }); + + it('should return the result of browser-passworder.encrypt', async () => { + const encryptor = encryptorFactory(mockIterations); + const mockResult = 'result'; + mockBrowserPassworder.encrypt.mockResolvedValue(mockResult); + + expect(await encryptor.encrypt(mockPassword, mockData)).toBe(mockResult); + }); + }); + + describe('encryptWithDetail', () => { + it('should call browser-passworder.encryptWithDetail with the given password, object, and iterations', async () => { + const encryptor = encryptorFactory(mockIterations); + + await encryptor.encryptWithDetail(mockPassword, { foo: 'bar' }, 'salt'); + + expect(mockBrowserPassworder.encryptWithDetail).toHaveBeenCalledWith( + mockPassword, + { foo: 'bar' }, + 'salt', + { + algorithm: 'PBKDF2', + params: { + iterations: mockIterations, + }, + }, + ); + }); + + it('should return the result of browser-passworder.encryptWithDetail', async () => { + const encryptor = encryptorFactory(mockIterations); + const mockResult = { + vault: 'vault', + exportedKeyString: 'salt', + }; + mockBrowserPassworder.encryptWithDetail.mockResolvedValue(mockResult); + + expect( + await encryptor.encryptWithDetail(mockPassword, { foo: 'bar' }, 'salt'), + ).toBe(mockResult); + }); + }); + + describe('decrypt', () => { + it('should call browser-passworder.decrypt with the given password, data, and iterations', async () => { + const encryptor = encryptorFactory(mockIterations); + + await encryptor.decrypt(mockPassword, mockData); + + expect(mockBrowserPassworder.decrypt).toHaveBeenCalledWith( + mockPassword, + mockData, + ); + }); + + it('should return the result of browser-passworder.decrypt', async () => { + const encryptor = encryptorFactory(mockIterations); + const mockResult = 'result'; + mockBrowserPassworder.decrypt.mockResolvedValue(mockResult); + + expect(await encryptor.decrypt(mockPassword, mockData)).toBe(mockResult); + }); + }); + + describe('decryptWithDetail', () => { + it('should call browser-passworder.decryptWithDetail with the given password and object', async () => { + const encryptor = encryptorFactory(mockIterations); + + await encryptor.decryptWithDetail(mockPassword, mockData); + + expect(mockBrowserPassworder.decryptWithDetail).toHaveBeenCalledWith( + mockPassword, + mockData, + ); + }); + + it('should return the result of browser-passworder.decryptWithDetail', async () => { + const encryptor = encryptorFactory(mockIterations); + const mockResult = { + exportedKeyString: 'key', + vault: 'data', + salt: 'salt', + }; + mockBrowserPassworder.decryptWithDetail.mockResolvedValue(mockResult); + + expect(await encryptor.decryptWithDetail(mockPassword, mockData)).toBe( + mockResult, + ); + }); + }); + + describe('isVaultUpdated', () => { + it('should call browser-passworder.isVaultUpdated with the given vault and iterations', () => { + const encryptor = encryptorFactory(mockIterations); + const mockVault = 'vault'; + + encryptor.isVaultUpdated(mockVault); + + expect(mockBrowserPassworder.isVaultUpdated).toHaveBeenCalledWith( + mockVault, + { + algorithm: 'PBKDF2', + params: { + iterations: mockIterations, + }, + }, + ); + }); + + it('should return the result of browser-passworder.isVaultUpdated', () => { + const encryptor = encryptorFactory(mockIterations); + const mockResult = false; + const mockVault = 'vault'; + mockBrowserPassworder.isVaultUpdated.mockReturnValue(mockResult); + + expect(encryptor.isVaultUpdated(mockVault)).toBe(mockResult); + }); + }); +}); diff --git a/app/scripts/lib/encryptor-factory.ts b/app/scripts/lib/encryptor-factory.ts index 68f8ee42307e..b4eac5e0e6eb 100644 --- a/app/scripts/lib/encryptor-factory.ts +++ b/app/scripts/lib/encryptor-factory.ts @@ -57,7 +57,7 @@ const encryptWithDetailFactory = * @param iterations - The number of iterations to use for the PBKDF2 algorithm. * @returns A function that checks if the vault was encrypted with the given number of iterations. */ -const isVaultUpdatedFactory = (iterations: number) => async (vault: string) => +const isVaultUpdatedFactory = (iterations: number) => (vault: string) => isVaultUpdated(vault, { algorithm: 'PBKDF2', params: { diff --git a/app/scripts/lib/keyring-snaps-permissions.test.ts b/app/scripts/lib/keyring-snaps-permissions.test.ts index afe4b40fefa6..3e457df2e258 100644 --- a/app/scripts/lib/keyring-snaps-permissions.test.ts +++ b/app/scripts/lib/keyring-snaps-permissions.test.ts @@ -15,6 +15,8 @@ describe('keyringSnapPermissionsBuilder', () => { registerActionHandler: jest.fn(), registerInitialEventPayload: jest.fn(), publish: jest.fn(), + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any, state: {}, }); @@ -85,6 +87,8 @@ describe('keyringSnapPermissionsBuilder', () => { ])('"%s" cannot call any methods', (origin) => { const permissions = keyringSnapPermissionsBuilder( mockController, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any origin as any, ); expect(permissions()).toStrictEqual([]); @@ -106,6 +110,8 @@ describe('isProtocolAllowed', () => { [1, false], [0, false], [-1, false], + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any ])('"%s" cannot call any methods', (origin: any, expected: boolean) => { expect(isProtocolAllowed(origin)).toBe(expected); }); diff --git a/app/scripts/lib/offscreen-bridge/lattice-offscreen-keyring.ts b/app/scripts/lib/offscreen-bridge/lattice-offscreen-keyring.ts index c690c1004382..27993e04d03c 100644 --- a/app/scripts/lib/offscreen-bridge/lattice-offscreen-keyring.ts +++ b/app/scripts/lib/offscreen-bridge/lattice-offscreen-keyring.ts @@ -61,6 +61,8 @@ class LatticeKeyringOffscreen extends LatticeKeyring { }); return creds; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err: any) { throw new Error(err); } diff --git a/app/scripts/lib/ppom/indexed-db-backend.ts b/app/scripts/lib/ppom/indexed-db-backend.ts index 41c5af2629d1..8fbf63c1aced 100644 --- a/app/scripts/lib/ppom/indexed-db-backend.ts +++ b/app/scripts/lib/ppom/indexed-db-backend.ts @@ -38,6 +38,8 @@ export class IndexedDBPPOMStorage implements StorageBackend { reject( new Error( `Failed to open database ${this.storeName}: ${ + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any (event.target as any)?.error }`, ), @@ -65,8 +67,12 @@ export class IndexedDBPPOMStorage implements StorageBackend { private async objectStoreAction( method: 'get' | 'delete' | 'put' | 'getAllKeys', + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any args?: any, mode: IDBTransactionMode = 'readonly', + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any ): Promise { return new Promise((resolve, reject) => { this.#getObjectStore(mode) @@ -81,6 +87,8 @@ export class IndexedDBPPOMStorage implements StorageBackend { reject( new Error( `Error in indexDB operation ${method}: ${ + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any (event.target as any)?.error }`, ), @@ -95,6 +103,8 @@ export class IndexedDBPPOMStorage implements StorageBackend { async read(key: StorageKey, checksum: string): Promise { const event = await this.objectStoreAction('get', [key.name, key.chainId]); + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const data = (event.target as any)?.result?.data; await validateChecksum(key, data, checksum); return data; @@ -119,6 +129,8 @@ export class IndexedDBPPOMStorage implements StorageBackend { async dir(): Promise { const event = await this.objectStoreAction('getAllKeys'); + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any return (event.target as any)?.result.map(([name, chainId]: string[]) => ({ name, chainId, diff --git a/app/scripts/lib/ppom/ppom-middleware.test.ts b/app/scripts/lib/ppom/ppom-middleware.test.ts index de3cff83f93a..370acc51e944 100644 --- a/app/scripts/lib/ppom/ppom-middleware.test.ts +++ b/app/scripts/lib/ppom/ppom-middleware.test.ts @@ -1,4 +1,11 @@ +import { + type Hex, + JsonRpcRequestStruct, + JsonRpcResponseStruct, +} from '@metamask/utils'; +import { waitFor } from '@testing-library/react'; import { CHAIN_IDS } from '../../../../shared/constants/network'; + import { BlockaidReason, BlockaidResultType, @@ -19,10 +26,24 @@ Object.defineProperty(globalThis, 'performance', { }); const createMiddleWare = ( + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any usePPOM?: any, - securityAlertsEnabled?: boolean, - chainId?: string, + options: { + securityAlertsEnabled?: boolean; + chainId?: Hex; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any + mockUpdateSecurityAlertResponseByTxId?: any; + } = { + mockUpdateSecurityAlertResponseByTxId: () => undefined, + }, ) => { + const { + securityAlertsEnabled, + chainId, + mockUpdateSecurityAlertResponseByTxId, + } = options; const usePPOMMock = jest.fn(); const ppomController = { usePPOM: usePPOM || usePPOMMock, @@ -43,11 +64,19 @@ const createMiddleWare = ( }; return createPPOMMiddleware( + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any ppomController as any, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any preferenceController as any, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any networkController as any, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any appStateController as any, - () => undefined, + mockUpdateSecurityAlertResponseByTxId, ); }; @@ -64,28 +93,87 @@ describe('PPOMMiddleware', () => { const usePPOMMock = jest.fn(); const middlewareFunction = createMiddleWare(usePPOMMock); await middlewareFunction( - { method: 'eth_sendTransaction' }, - undefined, + { ...JsonRpcRequestStruct, method: 'eth_sendTransaction' }, + { ...JsonRpcResponseStruct }, () => undefined, ); expect(usePPOMMock).toHaveBeenCalledTimes(1); }); - it('should add validation response on confirmation requests', async () => { + it('adds loading response to confirmation requests while validation is in progress', async () => { const usePPOM = async () => Promise.resolve('VALIDATION_RESULT'); const middlewareFunction = createMiddleWare(usePPOM); const req = { + ...JsonRpcRequestStruct, method: 'eth_sendTransaction', securityAlertResponse: undefined, }; - await middlewareFunction(req, undefined, () => undefined); - expect(req.securityAlertResponse).toBeDefined(); + await middlewareFunction( + req, + { ...JsonRpcResponseStruct }, + () => undefined, + ); + + expect(req.securityAlertResponse.reason).toBe(BlockaidResultType.Loading); + expect(req.securityAlertResponse.result_type).toBe( + BlockaidReason.inProgress, + ); + }); + + it('adds validation response to confirmation requests on supported networks', async () => { + const validateMock = jest.fn().mockImplementation(() => + Promise.resolve({ + result_type: BlockaidResultType.Malicious, + reason: BlockaidReason.permitFarming, + }), + ); + + const ppom = { + validateJsonRpc: validateMock, + }; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const usePPOM = async (callback: any) => { + callback(ppom); + }; + const mockUpdateSecurityAlertResponseByTxId = jest.fn(); + const middlewareFunction = createMiddleWare(usePPOM, { + chainId: '0xa', + mockUpdateSecurityAlertResponseByTxId, + }); + const req = { + ...JsonRpcRequestStruct, + method: 'eth_sendTransaction', + securityAlertResponse: undefined, + }; + await middlewareFunction( + req, + { ...JsonRpcResponseStruct }, + () => undefined, + ); + + await waitFor(() => { + const mockCallSecurityAlertResponse = + mockUpdateSecurityAlertResponseByTxId.mock.calls[0][1]; + + expect(mockCallSecurityAlertResponse.result_type).toBe( + BlockaidResultType.Malicious, + ); + expect(mockCallSecurityAlertResponse.reason).toBe( + BlockaidReason.permitFarming, + ); + expect(mockCallSecurityAlertResponse.securityAlertId).toBeDefined(); + expect(req.securityAlertResponse).toBeDefined(); + }); }); - it('should not do validation if user has not enabled preference', async () => { + it('does not do validation if the user has not enabled the preference', async () => { const usePPOM = async () => Promise.resolve('VALIDATION_RESULT'); - const middlewareFunction = createMiddleWare(usePPOM, false); + const middlewareFunction = createMiddleWare(usePPOM, { + securityAlertsEnabled: false, + }); const req = { + ...JsonRpcRequestStruct, method: 'eth_sendTransaction', securityAlertResponse: undefined, }; @@ -93,94 +181,124 @@ describe('PPOMMiddleware', () => { expect(req.securityAlertResponse).toBeUndefined(); }); - it('should not do validation if user is not on mainnet', async () => { + it('does not do validation if user is not on a supported network', async () => { const usePPOM = async () => Promise.resolve('VALIDATION_RESULT'); - const middlewareFunction = createMiddleWare(usePPOM, false, '0x2'); + const middlewareFunction = createMiddleWare(usePPOM, { + chainId: '0x2', + }); const req = { + ...JsonRpcRequestStruct, method: 'eth_sendTransaction', securityAlertResponse: undefined, }; - await middlewareFunction(req, undefined, () => undefined); + await middlewareFunction( + req, + { ...JsonRpcResponseStruct }, + () => undefined, + ); expect(req.securityAlertResponse).toBeUndefined(); }); - it('should set error type in response if usePPOM throw error', async () => { + it('sets error types in the response if usePPOM throws an error', async () => { const usePPOM = async () => { throw new Error('some error'); }; - const middlewareFunction = createMiddleWare({ usePPOM }); + const mockUpdateSecurityAlertResponseByTxId = jest.fn(); + const middlewareFunction = createMiddleWare(usePPOM, { + mockUpdateSecurityAlertResponseByTxId, + }); const req = { + ...JsonRpcRequestStruct, method: 'eth_sendTransaction', - securityAlertResponse: undefined, }; - await middlewareFunction(req, undefined, () => undefined); - expect((req.securityAlertResponse as any)?.result_type).toBe( - BlockaidResultType.Errored, - ); - expect((req.securityAlertResponse as any)?.reason).toBe( - BlockaidReason.errored, + await middlewareFunction( + req, + { ...JsonRpcResponseStruct }, + () => undefined, ); + + await waitFor(() => { + const mockCallSecurityAlertResponse = + mockUpdateSecurityAlertResponseByTxId.mock.calls[0][1]; + expect(mockCallSecurityAlertResponse.description).toBe( + 'Error: some error', + ); + expect(mockCallSecurityAlertResponse.result_type).toBe( + BlockaidResultType.Errored, + ); + expect(mockCallSecurityAlertResponse.result_type).toBe( + BlockaidReason.errored, + ); + expect(mockCallSecurityAlertResponse.securityAlertId).toBeDefined(); + }); }); - it('should call next method when ppomController.usePPOM completes', async () => { + it('calls next method when ppomController.usePPOM completes', async () => { const ppom = { validateJsonRpc: () => undefined, }; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const usePPOM = async (callback: any) => { callback(ppom); }; const middlewareFunction = createMiddleWare(usePPOM); const nextMock = jest.fn(); await middlewareFunction( - { method: 'eth_sendTransaction' }, - undefined, + { ...JsonRpcRequestStruct, method: 'eth_sendTransaction' }, + { ...JsonRpcResponseStruct }, nextMock, ); expect(nextMock).toHaveBeenCalledTimes(1); }); - it('should call next method when ppomController.usePPOM throws error', async () => { + it('calls next method when ppomController.usePPOM throws error', async () => { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const usePPOM = async (_callback: any) => { throw Error('Some error'); }; const middlewareFunction = createMiddleWare(usePPOM); const nextMock = jest.fn(); await middlewareFunction( - { method: 'eth_sendTransaction' }, - undefined, + { ...JsonRpcRequestStruct, method: 'eth_sendTransaction' }, + { ...JsonRpcResponseStruct }, nextMock, ); expect(nextMock).toHaveBeenCalledTimes(1); }); - - it('should call ppom.validateJsonRpc when invoked', async () => { + it('calls ppom.validateJsonRpc when invoked', async () => { const validateMock = jest.fn(); const ppom = { validateJsonRpc: validateMock, }; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const usePPOM = async (callback: any) => { callback(ppom); }; const middlewareFunction = createMiddleWare(usePPOM); await middlewareFunction( - { method: 'eth_sendTransaction' }, - undefined, + { ...JsonRpcRequestStruct, method: 'eth_sendTransaction' }, + { ...JsonRpcResponseStruct }, () => undefined, ); expect(validateMock).toHaveBeenCalledTimes(1); }); - it('should not call ppom.validateJsonRpc when request is not for confirmation method', async () => { + it('does not call ppom.validateJsonRpc when request is not for confirmation method', async () => { const validateMock = jest.fn(); const ppom = { validateJsonRpc: validateMock, }; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const usePPOM = async (callback: any) => { callback(ppom); }; const middlewareFunction = createMiddleWare(usePPOM); await middlewareFunction( - { method: 'eth_someRequest' }, + { ...JsonRpcRequestStruct, method: 'eth_someRequest' }, undefined, () => undefined, ); @@ -189,6 +307,7 @@ describe('PPOMMiddleware', () => { it('normalizes transaction requests before validation', async () => { const requestMock1 = { + ...JsonRpcRequestStruct, method: 'eth_sendTransaction', params: [{ data: '0x1' }], }; @@ -206,13 +325,19 @@ describe('PPOMMiddleware', () => { validateJsonRpc: validateMock, }; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const usePPOM = async (callback: any) => { callback(ppom); }; const middlewareFunction = createMiddleWare(usePPOM); - await middlewareFunction(requestMock1, undefined, () => undefined); + await middlewareFunction( + requestMock1, + { ...JsonRpcResponseStruct }, + () => undefined, + ); expect(normalizePPOMRequestMock).toHaveBeenCalledTimes(1); expect(normalizePPOMRequestMock).toHaveBeenCalledWith(requestMock1); diff --git a/app/scripts/lib/ppom/ppom-middleware.ts b/app/scripts/lib/ppom/ppom-middleware.ts index c30c38fa8622..8992b3a37c07 100644 --- a/app/scripts/lib/ppom/ppom-middleware.ts +++ b/app/scripts/lib/ppom/ppom-middleware.ts @@ -1,6 +1,13 @@ import { PPOM } from '@blockaid/ppom_release'; import { PPOMController } from '@metamask/ppom-validator'; import { NetworkController } from '@metamask/network-controller'; +import { + Hex, + Json, + JsonRpcParams, + JsonRpcRequest, + JsonRpcResponse, +} from '@metamask/utils'; import { v4 as uuid } from 'uuid'; import { @@ -13,7 +20,7 @@ import { PreferencesController } from '../../controllers/preferences'; import { SecurityAlertResponse } from '../transaction/util'; import { normalizePPOMRequest } from './ppom-util'; -const { sentry } = global as any; +const { sentry } = global; const CONFIRMATION_METHODS = Object.freeze([ 'eth_sendRawTransaction', @@ -21,7 +28,7 @@ const CONFIRMATION_METHODS = Object.freeze([ ...SIGNING_METHODS, ]); -export const SUPPORTED_CHAIN_IDS: string[] = [ +export const SUPPORTED_CHAIN_IDS: Hex[] = [ CHAIN_IDS.ARBITRUM, CHAIN_IDS.AVALANCHE, CHAIN_IDS.BASE, @@ -49,17 +56,30 @@ export const SUPPORTED_CHAIN_IDS: string[] = [ * @param updateSecurityAlertResponseByTxId * @returns PPOMMiddleware function. */ -export function createPPOMMiddleware( +export function createPPOMMiddleware< + Params extends JsonRpcParams, + Result extends Json, +>( ppomController: PPOMController, preferencesController: PreferencesController, networkController: NetworkController, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any appStateController: any, updateSecurityAlertResponseByTxId: ( - req: any, + req: JsonRpcRequest & { + securityAlertResponse: SecurityAlertResponse; + }, securityAlertResponse: SecurityAlertResponse, ) => void, ) { - return async (req: any, _res: any, next: () => void) => { + return async ( + req: JsonRpcRequest & { + securityAlertResponse: SecurityAlertResponse; + }, + _res: JsonRpcResponse, + next: () => void, + ) => { try { const securityAlertsEnabled = preferencesController.store.getState()?.securityAlertsEnabled; @@ -71,32 +91,59 @@ export function createPPOMMiddleware( ) { // eslint-disable-next-line require-atomic-updates const securityAlertId = uuid(); + let securityAlertResponse: SecurityAlertResponse = { + reason: BlockaidResultType.Loading, + result_type: BlockaidReason.inProgress, + securityAlertId, + }; ppomController .usePPOM(async (ppom: PPOM) => { try { const normalizedRequest = normalizePPOMRequest(req); - const securityAlertResponse = await ppom.validateJsonRpc( + securityAlertResponse = await ppom.validateJsonRpc( normalizedRequest, ); - securityAlertResponse.securityAlertId = securityAlertId; - return securityAlertResponse; - } catch (error: any) { + } catch (error: unknown) { sentry?.captureException(error); - const errorObject = error as unknown as Error; - console.error('Error validating JSON RPC using PPOM: ', error); - const securityAlertResponse = { + console.error( + 'Error validating JSON RPC using PPOM: ', + typeof error === 'object' || typeof error === 'string' + ? error + : JSON.stringify(error), + ); + + securityAlertResponse = { result_type: BlockaidResultType.Errored, reason: BlockaidReason.errored, - description: `${errorObject.name}: ${errorObject.message}`, + description: + error instanceof Error + ? `${error.name}: ${error.message}` + : JSON.stringify(error), }; - - return securityAlertResponse; } }) - .then((securityAlertResponse) => { + .catch((error: unknown) => { + sentry?.captureException(error); + console.error( + 'Error createPPOMMiddleware#usePPOM: ', + typeof error === 'object' || typeof error === 'string' + ? error + : JSON.stringify(error), + ); + + securityAlertResponse = { + result_type: BlockaidResultType.Errored, + reason: BlockaidReason.errored, + description: + error instanceof Error + ? `${error.name}: ${error.message}` + : JSON.stringify(error), + }; + }) + .finally(() => { updateSecurityAlertResponseByTxId(req, { ...securityAlertResponse, securityAlertId, @@ -104,32 +151,31 @@ export function createPPOMMiddleware( }); if (SIGNING_METHODS.includes(req.method)) { - req.securityAlertResponse = { - reason: BlockaidResultType.Loading, - result_type: BlockaidReason.inProgress, - securityAlertId, - }; appStateController.addSignatureSecurityAlertResponse({ reason: BlockaidResultType.Loading, result_type: BlockaidReason.inProgress, securityAlertId, }); - } else { - req.securityAlertResponse = { - reason: BlockaidResultType.Loading, - result_type: BlockaidReason.inProgress, - securityAlertId, - }; } + + req.securityAlertResponse = { ...securityAlertResponse }; } - } catch (error: any) { - const errorObject = error as unknown as Error; + } catch (error: unknown) { sentry?.captureException(error); - console.error('Error validating JSON RPC using PPOM: ', error); + console.error( + 'Error createPPOMMiddleware: ', + typeof error === 'object' || typeof error === 'string' + ? error + : JSON.stringify(error), + ); + req.securityAlertResponse = { result_type: BlockaidResultType.Errored, reason: BlockaidReason.errored, - description: `${errorObject.name}: ${errorObject.message}`, + description: + error instanceof Error + ? `${error.name}: ${error.message}` + : JSON.stringify(error), }; } finally { next(); diff --git a/app/scripts/lib/ppom/ppom-util.ts b/app/scripts/lib/ppom/ppom-util.ts index d0f9141996c0..95806d41bb4a 100644 --- a/app/scripts/lib/ppom/ppom-util.ts +++ b/app/scripts/lib/ppom/ppom-util.ts @@ -2,6 +2,8 @@ import { normalizeTransactionParams } from '@metamask/transaction-controller'; const METHOD_SEND_TRANSACTION = 'eth_sendTransaction'; +// TODO: Replace `any` with type +// eslint-disable-next-line @typescript-eslint/no-explicit-any export function normalizePPOMRequest(request: any) { if (request.method !== METHOD_SEND_TRANSACTION) { return request; diff --git a/app/scripts/lib/setupSentry.js b/app/scripts/lib/setupSentry.js index b03a15a45dd3..df283b15c0bb 100644 --- a/app/scripts/lib/setupSentry.js +++ b/app/scripts/lib/setupSentry.js @@ -86,6 +86,7 @@ export const SENTRY_BACKGROUND_STATE = { browserEnvironment: true, connectedStatusPopoverHasBeenShown: true, currentPopupId: false, + currentExtensionPopupId: false, defaultHomeActiveTabName: true, fullScreenGasPollTokens: true, hadAdvancedGasFeesSetPriorToMigration92_3: true, @@ -102,6 +103,8 @@ export const SENTRY_BACKGROUND_STATE = { showProductTour: true, showNetworkBanner: true, showAccountBanner: true, + switchedNetworkDetails: false, + switchedNetworkNeverShowMessage: false, showTestnetMessageInDropdown: true, surveyLinkLastClickedOrClosed: true, snapsInstallPrivacyWarningShown: true, @@ -219,6 +222,7 @@ export const SENTRY_BACKGROUND_STATE = { showExtensionInFullSizeView: true, showFiatInTestnets: true, showTestNetworks: true, + smartTransactionsOptInStatus: true, useNativeCurrencyAsPrimaryCurrency: true, petnamesEnabled: true, }, @@ -381,6 +385,8 @@ export const SENTRY_UI_STATE = { addSnapAccountEnabled: false, snapsAddSnapAccountModalDismissed: false, ///: END:ONLY_INCLUDE_IF + switchedNetworkDetails: false, + switchedNetworkNeverShowMessage: false, }, unconnectedAccount: true, }; @@ -475,10 +481,18 @@ export default function setupSentry({ release, getState }) { `Missing SENTRY_DSN environment variable in production environment`, ); } + + ///: BEGIN:ONLY_INCLUDE_IF(build-mmi) + sentryTarget = process.env.SENTRY_MMI_DSN; + ///: END:ONLY_INCLUDE_IF + + ///: BEGIN:ONLY_INCLUDE_IF(build-main,build-beta,build-flask) + sentryTarget = process.env.SENTRY_DSN; + ///: END:ONLY_INCLUDE_IF + console.log( `Setting up Sentry Remote Error Reporting for '${environment}': SENTRY_DSN`, ); - sentryTarget = process.env.SENTRY_DSN; } else { console.log( `Setting up Sentry Remote Error Reporting for '${environment}': SENTRY_DSN_DEV`, @@ -493,6 +507,10 @@ export default function setupSentry({ release, getState }) { * @returns `true` if MetaMetrics is enabled, `false` otherwise. */ async function getMetaMetricsEnabled() { + if (METAMASK_BUILD_TYPE === 'mmi') { + return true; + } + const appState = getState(); if (appState.state || appState.persistedState) { return getMetaMetricsEnabledFromAppState(appState); @@ -508,6 +526,22 @@ export default function setupSentry({ release, getState }) { } } + /** + * Returns whether Sentry should be enabled or not. If the build type is mmi + * it will always be enabled, if it's main it will first check for MetaMetrics + * value before returning true or false + * + * @returns `true` if Sentry should be enabled, depends on the build type and + * whether MetaMetrics is on or off for all build types except mmi + */ + async function getSentryEnabled() { + // For MMI we want Sentry always logging, doesn't depend on MetaMetrics being on or off + if (METAMASK_BUILD_TYPE === 'mmi') { + return true; + } + return getMetaMetricsEnabled(); + } + Sentry.init({ dsn: sentryTarget, debug: METAMASK_DEBUG, @@ -567,7 +601,7 @@ export default function setupSentry({ release, getState }) { const startSession = async () => { const hub = Sentry.getCurrentHub?.(); const options = hub.getClient?.().getOptions?.() ?? {}; - if (hub && (await getMetaMetricsEnabled()) === true) { + if (hub && (await getSentryEnabled()) === true) { options.autoSessionTracking = true; hub.startSession(); } @@ -581,7 +615,7 @@ export default function setupSentry({ release, getState }) { const endSession = async () => { const hub = Sentry.getCurrentHub?.(); const options = hub.getClient?.().getOptions?.() ?? {}; - if (hub && (await getMetaMetricsEnabled()) === false) { + if (hub && (await getSentryEnabled()) === false) { options.autoSessionTracking = false; hub.endSession(); } @@ -597,14 +631,11 @@ export default function setupSentry({ release, getState }) { const options = hub.getClient?.().getOptions?.() ?? { autoSessionTracking: false, }; - const isMetaMetricsEnabled = await getMetaMetricsEnabled(); - if ( - isMetaMetricsEnabled === true && - options.autoSessionTracking === false - ) { + const isSentryEnabled = await getSentryEnabled(); + if (isSentryEnabled === true && options.autoSessionTracking === false) { await startSession(); } else if ( - isMetaMetricsEnabled === false && + isSentryEnabled === false && options.autoSessionTracking === true ) { await endSession(); diff --git a/app/scripts/lib/snap-keyring/metrics.test.ts b/app/scripts/lib/snap-keyring/metrics.test.ts index e0ef57fc2b59..fe49b2be73e4 100644 --- a/app/scripts/lib/snap-keyring/metrics.test.ts +++ b/app/scripts/lib/snap-keyring/metrics.test.ts @@ -3,6 +3,8 @@ import { getSnapAndHardwareInfoForMetrics } from './metrics'; describe('getSnapAndHardwareInfoForMetrics', () => { let getAccountType: jest.Mock; let getDeviceModel: jest.Mock; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any let messenger: any; beforeEach(() => { diff --git a/app/scripts/lib/snap-keyring/snap-keyring.ts b/app/scripts/lib/snap-keyring/snap-keyring.ts index 17683dee0a52..62b61c8ed335 100644 --- a/app/scripts/lib/snap-keyring/snap-keyring.ts +++ b/app/scripts/lib/snap-keyring/snap-keyring.ts @@ -51,14 +51,22 @@ export const snapKeyringBuilder = ( getSnapController: () => SnapController, persistKeyringHelper: () => Promise, setSelectedAccountHelper: (address: string) => void, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any removeAccountHelper: (address: string) => Promise, trackEvent: ( + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any payload: Record, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any options?: Record, ) => void, getSnapName: (snapId: string) => string, ) => { const builder = (() => { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any return new SnapKeyring(getSnapController() as any, { addressExists: async (address) => { const addresses = await controllerMessenger.call( @@ -348,6 +356,8 @@ export const snapKeyringBuilder = ( } }, }); + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any }) as any; builder.type = SnapKeyring.type; return builder; diff --git a/app/scripts/lib/snap-keyring/utils/isBlockedUrl.test.ts b/app/scripts/lib/snap-keyring/utils/isBlockedUrl.test.ts index 839176dca5a1..03d949a814d1 100644 --- a/app/scripts/lib/snap-keyring/utils/isBlockedUrl.test.ts +++ b/app/scripts/lib/snap-keyring/utils/isBlockedUrl.test.ts @@ -36,6 +36,8 @@ describe('isBlockedUrl', () => { [1, true], [0, true], [-1, true], + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any ])('"%s" is blocked: %s', async (url: any, expected: boolean) => { const result = await isBlockedUrl( url, diff --git a/app/scripts/lib/snap-keyring/utils/showResult.ts b/app/scripts/lib/snap-keyring/utils/showResult.ts index c0b4c530ed09..086f9fe07174 100644 --- a/app/scripts/lib/snap-keyring/utils/showResult.ts +++ b/app/scripts/lib/snap-keyring/utils/showResult.ts @@ -42,6 +42,8 @@ export const showError = ( controllerMessenger: SnapKeyringBuilderMessenger, snapId: string, opts: ResultComponentOptions, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any properties: Record, ): Promise => { return controllerMessenger.call('ApprovalController:showError', { @@ -70,6 +72,8 @@ export const showSuccess = ( controllerMessenger: SnapKeyringBuilderMessenger, snapId: string, opts: ResultComponentOptions, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any properties: Record, ): Promise => { return controllerMessenger.call('ApprovalController:showSuccess', { diff --git a/app/scripts/lib/transaction/metrics.test.ts b/app/scripts/lib/transaction/metrics.test.ts index acf82095ed24..74d5aaa13ca0 100644 --- a/app/scripts/lib/transaction/metrics.test.ts +++ b/app/scripts/lib/transaction/metrics.test.ts @@ -68,8 +68,12 @@ const mockTransactionMetricsRequest = { getTokenStandardAndDetails: jest.fn(), getTransaction: jest.fn(), provider: provider as Provider, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any snapAndHardwareMessenger: jest.fn() as any, trackEvent: jest.fn(), + getIsSmartTransaction: jest.fn(), + getSmartTransactionByMinedTxHash: jest.fn(), } as TransactionMetricsRequest; describe('Transaction metrics', () => { @@ -77,9 +81,17 @@ describe('Transaction metrics', () => { mockChainId, mockNetworkId, mockTransactionMeta: TransactionMeta, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any mockTransactionMetaWithBlockaid: any, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any expectedProperties: any, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any expectedSensitiveProperties: any, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any mockActionId: any; beforeEach(() => { @@ -160,6 +172,8 @@ describe('Transaction metrics', () => { describe('handleTransactionAdded', () => { it('should return if transaction meta is not defined', async () => { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any await handleTransactionAdded(mockTransactionMetricsRequest, {} as any); expect( mockTransactionMetricsRequest.createEventFragment, @@ -168,6 +182,8 @@ describe('Transaction metrics', () => { it('should create event fragment', async () => { await handleTransactionAdded(mockTransactionMetricsRequest, { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any transactionMeta: mockTransactionMeta as any, actionId: mockActionId, }); @@ -195,6 +211,8 @@ describe('Transaction metrics', () => { }; await handleTransactionAdded(mockTransactionMetricsRequest, { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any transactionMeta: mockTransactionMeta as any, actionId: mockActionId, }); @@ -221,6 +239,8 @@ describe('Transaction metrics', () => { it('should create event fragment with blockaid', async () => { await handleTransactionAdded(mockTransactionMetricsRequest, { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any transactionMeta: mockTransactionMetaWithBlockaid as any, actionId: mockActionId, }); @@ -251,6 +271,8 @@ describe('Transaction metrics', () => { describe('handleTransactionApproved', () => { it('should return if transaction meta is not defined', async () => { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any await handleTransactionApproved(mockTransactionMetricsRequest, {} as any); expect( mockTransactionMetricsRequest.createEventFragment, @@ -265,6 +287,8 @@ describe('Transaction metrics', () => { it('should create, update, finalize event fragment', async () => { await handleTransactionApproved(mockTransactionMetricsRequest, { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any transactionMeta: mockTransactionMeta as any, actionId: mockActionId, }); @@ -306,6 +330,8 @@ describe('Transaction metrics', () => { it('should create, update, finalize event fragment with blockaid', async () => { await handleTransactionApproved(mockTransactionMetricsRequest, { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any transactionMeta: mockTransactionMetaWithBlockaid as any, actionId: mockActionId, }); @@ -362,6 +388,8 @@ describe('Transaction metrics', () => { describe('handleTransactionFailed', () => { it('should return if transaction meta is not defined', async () => { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any await handleTransactionFailed(mockTransactionMetricsRequest, {} as any); expect( mockTransactionMetricsRequest.createEventFragment, @@ -386,6 +414,8 @@ describe('Transaction metrics', () => { transactionMeta: mockTransactionMeta, actionId: mockActionId, error: mockErrorMessage, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any); const expectedUniqueId = 'transaction-submitted-1'; @@ -440,6 +470,8 @@ describe('Transaction metrics', () => { transactionMeta: mockTransactionMetaWithBlockaid, actionId: mockActionId, error: mockErrorMessage, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any); const expectedUniqueId = 'transaction-submitted-1'; @@ -503,6 +535,8 @@ describe('Transaction metrics', () => { transactionMeta: mockTransactionMeta, actionId: mockActionId, error: mockErrorMessage, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any); const expectedUniqueId = 'transaction-submitted-1'; @@ -550,6 +584,8 @@ describe('Transaction metrics', () => { it('should return if transaction meta is not defined', async () => { await handleTransactionConfirmed( mockTransactionMetricsRequest, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any {} as any, ); expect( @@ -573,6 +609,8 @@ describe('Transaction metrics', () => { await handleTransactionConfirmed(mockTransactionMetricsRequest, { ...mockTransactionMeta, actionId: mockActionId, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any); const expectedUniqueId = 'transaction-submitted-1'; @@ -629,6 +667,8 @@ describe('Transaction metrics', () => { await handleTransactionConfirmed(mockTransactionMetricsRequest, { ...mockTransactionMetaWithBlockaid, actionId: mockActionId, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any); const expectedUniqueId = 'transaction-submitted-1'; @@ -692,6 +732,8 @@ describe('Transaction metrics', () => { describe('handleTransactionDropped', () => { it('should return if transaction meta is not defined', async () => { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any await handleTransactionDropped(mockTransactionMetricsRequest, {} as any); expect( mockTransactionMetricsRequest.createEventFragment, @@ -708,6 +750,8 @@ describe('Transaction metrics', () => { await handleTransactionDropped(mockTransactionMetricsRequest, { transactionMeta: mockTransactionMeta, actionId: mockActionId, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any); const expectedUniqueId = 'transaction-submitted-1'; @@ -756,6 +800,8 @@ describe('Transaction metrics', () => { await handleTransactionDropped(mockTransactionMetricsRequest, { transactionMeta: mockTransactionMetaWithBlockaid, actionId: mockActionId, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any); const expectedUniqueId = 'transaction-submitted-1'; @@ -817,6 +863,8 @@ describe('Transaction metrics', () => { describe('handleTransactionRejected', () => { it('should return if transaction meta is not defined', async () => { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any await handleTransactionRejected(mockTransactionMetricsRequest, {} as any); expect( mockTransactionMetricsRequest.createEventFragment, @@ -833,6 +881,8 @@ describe('Transaction metrics', () => { await handleTransactionRejected(mockTransactionMetricsRequest, { transactionMeta: mockTransactionMeta, actionId: mockActionId, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any); const expectedUniqueId = 'transaction-added-1'; @@ -876,6 +926,8 @@ describe('Transaction metrics', () => { await handleTransactionRejected(mockTransactionMetricsRequest, { transactionMeta: mockTransactionMetaWithBlockaid, actionId: mockActionId, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any); const expectedUniqueId = 'transaction-added-1'; @@ -934,6 +986,8 @@ describe('Transaction metrics', () => { it('should return if transaction meta is not defined', async () => { await handleTransactionSubmitted( mockTransactionMetricsRequest, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any {} as any, ); expect( @@ -943,6 +997,8 @@ describe('Transaction metrics', () => { it('should only create event fragment', async () => { await handleTransactionSubmitted(mockTransactionMetricsRequest, { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any transactionMeta: mockTransactionMeta as any, actionId: mockActionId, }); diff --git a/app/scripts/lib/transaction/metrics.ts b/app/scripts/lib/transaction/metrics.ts index 108a60557855..667643bd8408 100644 --- a/app/scripts/lib/transaction/metrics.ts +++ b/app/scripts/lib/transaction/metrics.ts @@ -7,6 +7,7 @@ import { TransactionMeta, TransactionType, } from '@metamask/transaction-controller'; +import { SmartTransaction } from '@metamask/smart-transactions-controller/dist/types'; import { ORIGIN_METAMASK } from '../../../../shared/constants/app'; import { determineTransactionAssetType, @@ -38,6 +39,7 @@ import { ///: BEGIN:ONLY_INCLUDE_IF(blockaid) import { getBlockaidMetricsProps } from '../../../../ui/helpers/utils/metrics'; ///: END:ONLY_INCLUDE_IF +import { getSmartTransactionMetricsProperties } from '../../../../shared/modules/metametrics'; import { getSnapAndHardwareInfoForMetrics, type SnapAndHardwareMessenger, @@ -69,6 +71,8 @@ export type TransactionMetricsRequest = { // According to the type GasFeeState returned from getEIP1559GasFeeEstimates // doesn't include some properties used in buildEventFragmentProperties, // hence returning any here to avoid type errors. + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any getEIP1559GasFeeEstimates(options?: FetchGasFeeEstimateOptions): Promise; getParticipateInMetrics: () => boolean; getSelectedAddress: () => string; @@ -81,7 +85,13 @@ export type TransactionMetricsRequest = { getTransaction: (transactionId: string) => TransactionMeta; provider: Provider; snapAndHardwareMessenger: SnapAndHardwareMessenger; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any trackEvent: (payload: any) => void; + getIsSmartTransaction: () => boolean; + getSmartTransactionByMinedTxHash: ( + txhash: string | undefined, + ) => SmartTransaction; }; export const METRICS_STATUS_FAILED = 'failed on-chain'; @@ -166,6 +176,8 @@ export const handleTransactionFailed = async ( return; } + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const extraParams = {} as Record; if (transactionEventPayload.error) { // This is a failed transaction @@ -196,6 +208,8 @@ export const handleTransactionConfirmed = async ( return; } + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const extraParams = {} as Record; const transactionMeta = { ...transactionEventPayload }; const { txReceipt } = transactionMeta; @@ -492,6 +506,8 @@ function createTransactionEventFragment({ eventName: TransactionMetaMetricsEvent; transactionEventPayload: TransactionEventPayload; transactionMetricsRequest: TransactionMetricsRequest; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any payload: any; }) { if ( @@ -605,6 +621,8 @@ function updateTransactionEventFragment({ eventName: TransactionMetaMetricsEvent; transactionEventPayload: TransactionEventPayload; transactionMetricsRequest: TransactionMetricsRequest; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any payload: any; }) { const uniqueId = getUniqueId(eventName, transactionMeta.id); @@ -674,6 +692,8 @@ async function createUpdateFinalizeTransactionEventFragment({ eventName: TransactionMetaMetricsEvent; transactionEventPayload: TransactionEventPayload; transactionMetricsRequest: TransactionMetricsRequest; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any extraParams?: Record; }) { const { properties, sensitiveProperties } = @@ -711,6 +731,8 @@ async function createUpdateFinalizeTransactionEventFragment({ } function hasFragment( + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any getEventFragmentById: (arg0: string) => any, eventName: TransactionMetaMetricsEvent, transactionMeta: TransactionMeta, @@ -739,6 +761,8 @@ async function buildEventFragmentProperties({ transactionMetricsRequest, extraParams = {}, }: { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any extraParams?: Record; transactionEventPayload: TransactionEventPayload; transactionMetricsRequest: TransactionMetricsRequest; @@ -778,6 +802,8 @@ async function buildEventFragmentProperties({ transactionMetricsRequest.getTokenStandardAndDetails, ); + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const gasParams = {} as Record; if (isEIP1559Transaction(transactionMeta)) { @@ -857,7 +883,6 @@ async function buildEventFragmentProperties({ TransactionType.tokenMethodSetApprovalForAll, TransactionType.tokenMethodTransfer, TransactionType.tokenMethodTransferFrom, - TransactionType.smart, TransactionType.swap, TransactionType.swapApproval, ].includes(type); @@ -943,6 +968,8 @@ async function buildEventFragmentProperties({ } ///: BEGIN:ONLY_INCLUDE_IF(blockaid) + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const blockaidProperties: any = getBlockaidMetricsProps(transactionMeta); if (blockaidProperties?.ui_customizations?.length > 0) { @@ -954,6 +981,12 @@ async function buildEventFragmentProperties({ uiCustomizations.push(MetaMetricsEventUiCustomization.GasEstimationFailed); } + const smartTransactionMetricsProperties = + getSmartTransactionMetricsProperties( + transactionMetricsRequest, + transactionMeta, + ); + /** The transaction status property is not considered sensitive and is now included in the non-anonymous event */ let properties = { chain_id: chainId, @@ -980,6 +1013,9 @@ async function buildEventFragmentProperties({ ///: END:ONLY_INCLUDE_IF // ui_customizations must come after ...blockaidProperties ui_customizations: uiCustomizations.length > 0 ? uiCustomizations : null, + ...smartTransactionMetricsProperties, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as Record; const snapAndHardwareInfo = await getSnapAndHardwareInfoForMetrics( @@ -1006,6 +1042,8 @@ async function buildEventFragmentProperties({ transaction_replaced: transactionReplaced, ...extraParams, ...gasParamsInGwei, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as Record; if (transactionContractMethod === contractMethodNames.APPROVE) { @@ -1021,7 +1059,11 @@ async function buildEventFragmentProperties({ return { properties, sensitiveProperties }; } +// TODO: Replace `any` with type +// eslint-disable-next-line @typescript-eslint/no-explicit-any function getGasValuesInGWEI(gasParams: Record) { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const gasValuesInGwei = {} as Record; for (const param in gasParams) { if (isHexString(gasParams[param])) { diff --git a/app/scripts/lib/transaction/mmi-hooks.test.ts b/app/scripts/lib/transaction/mmi-hooks.test.ts index 210c3093ada8..fee5dff83de5 100644 --- a/app/scripts/lib/transaction/mmi-hooks.test.ts +++ b/app/scripts/lib/transaction/mmi-hooks.test.ts @@ -13,6 +13,8 @@ describe('MMI hooks', () => { const custodyIdMocked = '123'; describe('afterTransactionSign', () => { it('returns false if txMeta has no custodyStatus', () => { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const txMeta = { to: toMocked } as any; const signedEthTx = {}; const result = afterTransactionSign(txMeta, signedEthTx, jest.fn()); @@ -24,6 +26,8 @@ describe('MMI hooks', () => { custodyStatus: TransactionStatus.approved, custodyId: custodyIdMocked, txParams: { from: fromMocked }, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any; const signedEthTx = { custodian_transactionId: custodyIdMocked, @@ -47,12 +51,16 @@ describe('MMI hooks', () => { describe('beforeTransactionPublish', () => { it('returns true if txMeta has custodyStatus', () => { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const txMeta = { custodyStatus: TransactionStatus.approved } as any; const result = beforeTransactionPublish(txMeta); expect(result).toBe(false); }); it('returns false if txMeta has no custodyStatus', () => { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const txMeta = { to: toMocked } as any; const result = beforeTransactionPublish(txMeta); expect(result).toBe(true); @@ -61,12 +69,16 @@ describe('MMI hooks', () => { describe('getAdditionalSignArguments', () => { it('returns an array with txMeta when custodyStatus is truthy', () => { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const txMeta = { custodyStatus: TransactionStatus.approved } as any; const result = getAdditionalSignArguments(txMeta); expect(result).toEqual([txMeta]); }); it('returns an empty array when custodyStatus is falsy', () => { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const txMeta = { to: toMocked } as any; const result = getAdditionalSignArguments(txMeta); expect(result).toEqual([]); @@ -75,12 +87,16 @@ describe('MMI hooks', () => { describe('beforeTransactionApproveOnInit', () => { it('returns true if txMeta has custodyStatus', () => { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const txMeta = { custodyStatus: TransactionStatus.approved } as any; const result = beforeTransactionApproveOnInit(txMeta); expect(result).toBe(false); }); it('returns false if txMeta has no custodyStatus', () => { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const txMeta = { to: toMocked } as any; const result = beforeTransactionApproveOnInit(txMeta); expect(result).toBe(true); @@ -92,12 +108,16 @@ describe('MMI hooks', () => { const txMeta = { custodyStatus: TransactionStatus.approved, custodyId: 1, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any; const result = beforeCheckPendingTransaction(txMeta); expect(result).toBe(false); }); it('returns false if txMeta has no custodyStatus', () => { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const txMeta = { to: toMocked } as any; const result = beforeCheckPendingTransaction(txMeta); expect(result).toBe(true); diff --git a/app/scripts/lib/transaction/mmi-hooks.ts b/app/scripts/lib/transaction/mmi-hooks.ts index 92ea0cf792b9..d4dc3cc4dcda 100644 --- a/app/scripts/lib/transaction/mmi-hooks.ts +++ b/app/scripts/lib/transaction/mmi-hooks.ts @@ -9,6 +9,8 @@ import { TransactionMeta } from '@metamask/transaction-controller'; */ export function afterTransactionSign( txMeta: TransactionMeta, + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any signedEthTx: any, addTransactionToWatchList: ( custodianTransactionId: string | undefined, diff --git a/app/scripts/lib/transaction/smart-transactions.test.ts b/app/scripts/lib/transaction/smart-transactions.test.ts new file mode 100644 index 000000000000..35f533f7c882 --- /dev/null +++ b/app/scripts/lib/transaction/smart-transactions.test.ts @@ -0,0 +1,348 @@ +import EventEmitter from 'events'; +import { + TransactionType, + TransactionStatus, + TransactionController, +} from '@metamask/transaction-controller'; +import SmartTransactionsController from '@metamask/smart-transactions-controller'; +import { CHAIN_IDS } from '../../../../shared/constants/network'; +import { submitSmartTransactionHook } from './smart-transactions'; +import type { + SubmitSmartTransactionRequest, + SmartTransactionsControllerMessenger, +} from './smart-transactions'; + +const addressFrom = '0xabce7847fd3661a9b7c86aaf1daea08d9da5750e'; +const txHash = + '0x0302b75dfb9fd9eb34056af031efcaee2a8cbd799ea054a85966165cd82a7356'; +const uuid = 'uuid'; +const txId = '1'; + +let addRequestCallback: () => void; + +type SubmitSmartTransactionRequestMocked = SubmitSmartTransactionRequest & { + smartTransactionsController: jest.Mocked; + transactionController: jest.Mocked; +}; + +const createSignedTransaction = () => { + return '0xf86c098504a817c800825208943535353535353535353535353535353535353535880de0b6b3a76400008025a02b79f322a625d623a2bb2911e0c6b3e7eaf741a7c7c5d2e8c67ef3ff4acf146ca01ae168fea63dc3391b75b586c8a7c0cb55cdf3b8e2e4d8e097957a3a56c6f2c5'; +}; + +const createTransactionControllerMock = () => { + return { + approveTransactionsWithSameNonce: jest.fn((transactions = []) => { + return transactions.length === 0 ? [] : [createSignedTransaction()]; + }), + state: { transactions: [] }, + } as unknown as jest.Mocked; +}; + +const createSmartTransactionsControllerMessengerMock = () => { + return { + call: jest.fn((type) => { + if (type === 'ApprovalController:addRequest') { + return { + then: (callback: () => void) => { + addRequestCallback = callback; + }, + }; + } + return Promise.resolve({ id: 'approvalId' }); + }), + } as unknown as jest.Mocked; +}; + +const createSmartTransactionsControllerMock = () => { + return { + getFees: jest.fn(async () => { + return { + tradeTxFees: { + cancelFees: [], + feeEstimate: 42000000000000, + fees: [ + { maxFeePerGas: 12843636951, maxPriorityFeePerGas: 2853145236 }, + ], + gasLimit: 21000, + gasUsed: 21000, + }, + }; + }), + submitSignedTransactions: jest.fn(async () => { + return { + uuid, + txHash, + }; + }), + eventEmitter: new EventEmitter(), + } as unknown as jest.Mocked; +}; + +describe('submitSmartTransactionHook', () => { + const createRequest = () => { + return { + transactionMeta: { + hash: txHash, + status: TransactionStatus.signed, + id: '1', + txParams: { + from: addressFrom, + to: '0x1678a085c290ebd122dc42cba69373b5953b831d', + gasPrice: '0x77359400', + gas: '0x7b0d', + nonce: '0x4b', + }, + type: TransactionType.simpleSend, + chainId: CHAIN_IDS.MAINNET, + time: 1624408066355, + defaultGasEstimates: { + gas: '0x7b0d', + gasPrice: '0x77359400', + }, + error: { + name: 'Error', + message: 'Details of the error', + }, + securityProviderResponse: { + flagAsDangerous: 0, + }, + }, + smartTransactionsController: createSmartTransactionsControllerMock(), + transactionController: createTransactionControllerMock(), + isSmartTransaction: true, + controllerMessenger: createSmartTransactionsControllerMessengerMock(), + featureFlags: { + extensionActive: true, + mobileActive: false, + smartTransactions: { + expectedDeadline: 45, + maxDeadline: 150, + returnTxHashAsap: false, + }, + }, + }; + }; + + beforeEach(() => { + addRequestCallback = () => undefined; + }); + + it('does not submit a transaction that is not a smart transaction', async () => { + const request: SubmitSmartTransactionRequestMocked = createRequest(); + request.isSmartTransaction = false; + const result = await submitSmartTransactionHook(request); + expect(result).toEqual({ transactionHash: undefined }); + }); + + it('returns a txHash asap if the feature flag requires it', async () => { + const request: SubmitSmartTransactionRequestMocked = createRequest(); + request.featureFlags.smartTransactions.returnTxHashAsap = true; + const result = await submitSmartTransactionHook(request); + expect(result).toEqual({ transactionHash: txHash }); + }); + + it('throws an error if there is no uuid', async () => { + const request: SubmitSmartTransactionRequestMocked = createRequest(); + request.smartTransactionsController.submitSignedTransactions = jest.fn( + // eslint-disable-next-line @typescript-eslint/no-unused-vars + async ({ signedTransactions, signedCanceledTransactions }) => { + return { uuid: undefined }; + }, + ); + await expect(submitSmartTransactionHook(request)).rejects.toThrow( + 'No smart transaction UUID', + ); + }); + + it('throws an error if there is no transaction hash', async () => { + const request: SubmitSmartTransactionRequestMocked = createRequest(); + setImmediate(() => { + request.smartTransactionsController.eventEmitter.emit( + `uuid:smartTransaction`, + { + status: 'cancelled', + statusMetadata: { + minedHash: '', + }, + }, + ); + }); + await expect(submitSmartTransactionHook(request)).rejects.toThrow( + 'Transaction does not have a transaction hash, there was a problem', + ); + }); + + it('submits a smart transaction', async () => { + const request: SubmitSmartTransactionRequestMocked = createRequest(); + setImmediate(() => { + request.smartTransactionsController.eventEmitter.emit( + `uuid:smartTransaction`, + { + status: 'pending', + statusMetadata: { + minedHash: '', + }, + }, + ); + request.smartTransactionsController.eventEmitter.emit( + `uuid:smartTransaction`, + { + status: 'success', + statusMetadata: { + minedHash: txHash, + }, + }, + ); + }); + const result = await submitSmartTransactionHook(request); + expect(result).toEqual({ transactionHash: txHash }); + const { txParams, chainId } = request.transactionMeta; + expect( + request.transactionController.approveTransactionsWithSameNonce, + ).toHaveBeenCalledWith( + [ + { + ...txParams, + maxFeePerGas: '0x2fd8a58d7', + maxPriorityFeePerGas: '0xaa0f8a94', + chainId, + }, + ], + { hasNonce: true }, + ); + expect( + request.smartTransactionsController.submitSignedTransactions, + ).toHaveBeenCalledWith({ + signedTransactions: [createSignedTransaction()], + signedCanceledTransactions: [], + txParams, + transactionMeta: request.transactionMeta, + }); + addRequestCallback(); + expect(request.controllerMessenger.call).toHaveBeenCalledTimes(4); + expect(request.controllerMessenger.call).toHaveBeenCalledWith( + 'ApprovalController:startFlow', + ); + expect(request.controllerMessenger.call).toHaveBeenCalledWith( + 'ApprovalController:addRequest', + { + id: 'approvalId', + origin: 'http://localhost', + type: 'smartTransaction:showSmartTransactionStatusPage', + requestState: { + smartTransaction: { + status: 'pending', + uuid, + creationTime: expect.any(Number), + }, + isDapp: true, + txId, + }, + }, + true, + ); + expect(request.controllerMessenger.call).toHaveBeenCalledWith( + 'ApprovalController:updateRequestState', + { + id: 'approvalId', + requestState: { + smartTransaction: { + status: 'success', + statusMetadata: { + minedHash: + '0x0302b75dfb9fd9eb34056af031efcaee2a8cbd799ea054a85966165cd82a7356', + }, + }, + isDapp: true, + txId, + }, + }, + ); + + expect(request.controllerMessenger.call).toHaveBeenCalledWith( + 'ApprovalController:endFlow', + { + id: 'approvalId', + }, + ); + }); + + it('submits a smart transaction and does not update approval request if approval was already approved or rejected', async () => { + const request: SubmitSmartTransactionRequestMocked = createRequest(); + setImmediate(() => { + request.smartTransactionsController.eventEmitter.emit( + `uuid:smartTransaction`, + { + status: 'pending', + uuid, + statusMetadata: { + minedHash: '', + }, + }, + ); + addRequestCallback(); + request.smartTransactionsController.eventEmitter.emit( + `uuid:smartTransaction`, + { + status: 'success', + uuid, + statusMetadata: { + minedHash: txHash, + }, + }, + ); + }); + const result = await submitSmartTransactionHook(request); + expect(result).toEqual({ transactionHash: txHash }); + const { txParams, chainId } = request.transactionMeta; + expect( + request.transactionController.approveTransactionsWithSameNonce, + ).toHaveBeenCalledWith( + [ + { + ...txParams, + maxFeePerGas: '0x2fd8a58d7', + maxPriorityFeePerGas: '0xaa0f8a94', + chainId, + }, + ], + { hasNonce: true }, + ); + expect( + request.smartTransactionsController.submitSignedTransactions, + ).toHaveBeenCalledWith({ + signedTransactions: [createSignedTransaction()], + signedCanceledTransactions: [], + txParams, + transactionMeta: request.transactionMeta, + }); + expect(request.controllerMessenger.call).toHaveBeenCalledTimes(3); + expect(request.controllerMessenger.call).toHaveBeenCalledWith( + 'ApprovalController:startFlow', + ); + expect(request.controllerMessenger.call).toHaveBeenCalledWith( + 'ApprovalController:addRequest', + { + id: 'approvalId', + origin: 'http://localhost', + type: 'smartTransaction:showSmartTransactionStatusPage', + requestState: { + smartTransaction: { + status: 'pending', + uuid, + creationTime: expect.any(Number), + }, + isDapp: true, + txId, + }, + }, + true, + ); + expect(request.controllerMessenger.call).toHaveBeenCalledWith( + 'ApprovalController:endFlow', + { + id: 'approvalId', + }, + ); + }); +}); diff --git a/app/scripts/lib/transaction/smart-transactions.ts b/app/scripts/lib/transaction/smart-transactions.ts new file mode 100644 index 000000000000..df9fc82e33f5 --- /dev/null +++ b/app/scripts/lib/transaction/smart-transactions.ts @@ -0,0 +1,328 @@ +import SmartTransactionsController from '@metamask/smart-transactions-controller'; +import { + Fee, + Fees, + SmartTransactionStatuses, + SmartTransaction, +} from '@metamask/smart-transactions-controller/dist/types'; +import type { Hex } from '@metamask/utils'; +import { + TransactionController, + TransactionMeta, + TransactionParams, +} from '@metamask/transaction-controller'; +import log from 'loglevel'; +import { + RestrictedControllerMessenger, + EventConstraint, +} from '@metamask/base-controller'; +import { + AddApprovalRequest, + UpdateRequestState, + StartFlow, + EndFlow, +} from '@metamask/approval-controller'; + +import { decimalToHex } from '../../../../shared/modules/conversion.utils'; +import { CANCEL_GAS_LIMIT_DEC } from '../../../../shared/constants/smartTransactions'; +import { + SMART_TRANSACTION_CONFIRMATION_TYPES, + ORIGIN_METAMASK, +} from '../../../../shared/constants/app'; + +const namespace = 'SmartTransactions'; + +type AllowedActions = + | AddApprovalRequest + | UpdateRequestState + | StartFlow + | EndFlow; + +export type SmartTransactionsControllerMessenger = + RestrictedControllerMessenger< + typeof namespace, + AllowedActions, + EventConstraint, + AllowedActions['type'], + never + >; + +export type FeatureFlags = { + extensionActive: boolean; + mobileActive: boolean; + smartTransactions: { + expectedDeadline?: number; + maxDeadline?: number; + returnTxHashAsap?: boolean; + }; +}; + +export type SubmitSmartTransactionRequest = { + transactionMeta: TransactionMeta; + smartTransactionsController: SmartTransactionsController; + transactionController: TransactionController; + isSmartTransaction: boolean; + controllerMessenger: SmartTransactionsControllerMessenger; + featureFlags: FeatureFlags; +}; + +class SmartTransactionHook { + #approvalFlowEnded: boolean; + + #approvalFlowId: string; + + #chainId: Hex; + + #controllerMessenger: SmartTransactionsControllerMessenger; + + #featureFlags: { + extensionActive: boolean; + mobileActive: boolean; + smartTransactions: { + expectedDeadline?: number; + maxDeadline?: number; + returnTxHashAsap?: boolean; + }; + }; + + #isDapp: boolean; + + #isSmartTransaction: boolean; + + #smartTransactionsController: SmartTransactionsController; + + #transactionController: TransactionController; + + #transactionMeta: TransactionMeta; + + #txParams: TransactionParams; + + constructor(request: SubmitSmartTransactionRequest) { + const { + transactionMeta, + smartTransactionsController, + transactionController, + isSmartTransaction, + controllerMessenger, + featureFlags, + } = request; + this.#approvalFlowId = ''; + this.#approvalFlowEnded = false; + this.#transactionMeta = transactionMeta; + this.#smartTransactionsController = smartTransactionsController; + this.#transactionController = transactionController; + this.#isSmartTransaction = isSmartTransaction; + this.#controllerMessenger = controllerMessenger; + this.#featureFlags = featureFlags; + this.#isDapp = transactionMeta.origin !== ORIGIN_METAMASK; + this.#chainId = transactionMeta.chainId; + this.#txParams = transactionMeta.txParams; + } + + async submit() { + // Will cause TransactionController to publish to the RPC provider as normal. + const useRegularTransactionSubmit = { transactionHash: undefined }; + if (!this.#isSmartTransaction) { + return useRegularTransactionSubmit; + } + const { id: approvalFlowId } = await this.#controllerMessenger.call( + 'ApprovalController:startFlow', + ); + this.#approvalFlowId = approvalFlowId; + try { + const getFeesResponse = await this.#smartTransactionsController.getFees( + { ...this.#txParams, chainId: this.#chainId }, + undefined, + ); + const submitTransactionResponse = await this.#signAndSubmitTransactions({ + getFeesResponse, + }); + const uuid = submitTransactionResponse?.uuid; + if (!uuid) { + throw new Error('No smart transaction UUID'); + } + const returnTxHashAsap = + this.#featureFlags?.smartTransactions?.returnTxHashAsap; + this.#addApprovalRequest({ + uuid, + }); + this.#addListenerToUpdateStatusPage({ + uuid, + }); + let transactionHash: string | undefined | null; + if (returnTxHashAsap && submitTransactionResponse?.txHash) { + transactionHash = submitTransactionResponse.txHash; + } else { + transactionHash = await this.#waitForTransactionHash({ + uuid, + }); + } + if (transactionHash === null) { + throw new Error( + 'Transaction does not have a transaction hash, there was a problem', + ); + } + return { transactionHash }; + } catch (error) { + log.error('Error in smart transaction publish hook', error); + this.#onApproveOrReject(); + throw error; + } + } + + #onApproveOrReject() { + if (this.#approvalFlowEnded) { + return; + } + this.#approvalFlowEnded = true; + this.#controllerMessenger.call('ApprovalController:endFlow', { + id: this.#approvalFlowId, + }); + } + + #addApprovalRequest({ uuid }: { uuid: string }) { + const onApproveOrRejectWrapper = () => { + this.#onApproveOrReject(); + }; + this.#controllerMessenger + .call( + 'ApprovalController:addRequest', + { + id: this.#approvalFlowId, + origin, + type: SMART_TRANSACTION_CONFIRMATION_TYPES.showSmartTransactionStatusPage, + requestState: { + smartTransaction: { + status: SmartTransactionStatuses.PENDING, + creationTime: Date.now(), + uuid, + }, + isDapp: this.#isDapp, + txId: this.#transactionMeta.id, + }, + }, + true, + ) + .then(onApproveOrRejectWrapper, onApproveOrRejectWrapper); + } + + async #updateApprovalRequest({ + smartTransaction, + }: { + smartTransaction: SmartTransaction; + }) { + return await this.#controllerMessenger.call( + 'ApprovalController:updateRequestState', + { + id: this.#approvalFlowId, + requestState: { + smartTransaction, + isDapp: this.#isDapp, + txId: this.#transactionMeta.id, + }, + }, + ); + } + + async #addListenerToUpdateStatusPage({ uuid }: { uuid: string }) { + this.#smartTransactionsController.eventEmitter.on( + `${uuid}:smartTransaction`, + async (smartTransaction: SmartTransaction) => { + const { status } = smartTransaction; + if (!status || status === SmartTransactionStatuses.PENDING) { + return; + } + if (!this.#approvalFlowEnded) { + await this.#updateApprovalRequest({ + smartTransaction, + }); + } + }, + ); + } + + #waitForTransactionHash({ uuid }: { uuid: string }): Promise { + return new Promise((resolve) => { + this.#smartTransactionsController.eventEmitter.on( + `${uuid}:smartTransaction`, + async (smartTransaction: SmartTransaction) => { + const { status, statusMetadata } = smartTransaction; + if (!status || status === SmartTransactionStatuses.PENDING) { + return; + } + log.debug('Smart Transaction: ', smartTransaction); + if (statusMetadata?.minedHash) { + log.debug( + 'Smart Transaction - Received tx hash: ', + statusMetadata?.minedHash, + ); + resolve(statusMetadata.minedHash); + } else { + resolve(null); + } + }, + ); + }); + } + + async #signAndSubmitTransactions({ + getFeesResponse, + }: { + getFeesResponse: Fees; + }) { + const signedTransactions = await this.#createSignedTransactions( + getFeesResponse.tradeTxFees?.fees ?? [], + false, + ); + const signedCanceledTransactions = await this.#createSignedTransactions( + getFeesResponse.tradeTxFees?.cancelFees || [], + true, + ); + return await this.#smartTransactionsController.submitSignedTransactions({ + signedTransactions, + signedCanceledTransactions, + txParams: this.#txParams, + transactionMeta: this.#transactionMeta, + }); + } + + #applyFeeToTransaction(fee: Fee, isCancel: boolean): TransactionParams { + const unsignedTransaction = { + ...this.#txParams, + maxFeePerGas: `0x${decimalToHex(fee.maxFeePerGas)}`, + maxPriorityFeePerGas: `0x${decimalToHex(fee.maxPriorityFeePerGas)}`, + gas: isCancel + ? `0x${decimalToHex(CANCEL_GAS_LIMIT_DEC)}` // It has to be 21000 for cancel transactions, otherwise the API would reject it. + : this.#txParams.gas, + }; + if (isCancel) { + unsignedTransaction.to = unsignedTransaction.from; + unsignedTransaction.data = '0x'; + } + return unsignedTransaction; + } + + async #createSignedTransactions( + fees: Fee[], + isCancel: boolean, + ): Promise { + const unsignedTransactions = fees.map((fee) => { + return this.#applyFeeToTransaction(fee, isCancel); + }); + const transactionsWithChainId = unsignedTransactions.map((tx) => ({ + ...tx, + chainId: tx.chainId || this.#chainId, + })); + return (await this.#transactionController.approveTransactionsWithSameNonce( + transactionsWithChainId, + { hasNonce: true }, + )) as string[]; + } +} + +export const submitSmartTransactionHook = ( + request: SubmitSmartTransactionRequest, +) => { + const smartTransactionHook = new SmartTransactionHook(request); + return smartTransactionHook.submit(); +}; diff --git a/app/scripts/lib/transaction/util.test.ts b/app/scripts/lib/transaction/util.test.ts index b69fec9ae959..9b31caff37e0 100644 --- a/app/scripts/lib/transaction/util.test.ts +++ b/app/scripts/lib/transaction/util.test.ts @@ -515,6 +515,8 @@ describe('Transaction Utils', () => { request.securityAlertsEnabled = true; request.chainId = '0x1'; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any request.ppomController.usePPOM = (callback: any) => callback(ppomMock); await addTransaction(request); diff --git a/app/scripts/lib/transaction/util.ts b/app/scripts/lib/transaction/util.ts index f625dcbfb709..1781dd19a416 100644 --- a/app/scripts/lib/transaction/util.ts +++ b/app/scripts/lib/transaction/util.ts @@ -12,6 +12,7 @@ import { AddUserOperationOptions, UserOperationController, } from '@metamask/user-operation-controller'; +import type { Hex } from '@metamask/utils'; ///: BEGIN:ONLY_INCLUDE_IF(blockaid) import { PPOMController } from '@metamask/ppom-validator'; import { captureException } from '@sentry/browser'; @@ -34,6 +35,7 @@ export type SecurityAlertResponse = { result_type: string; providerRequestsCount?: Record; securityAlertId?: string; + description?: string; }; export type AddTransactionOptions = NonNullable< @@ -59,7 +61,7 @@ export type AddTransactionOptions = NonNullable< >; type BaseAddTransactionRequest = { - chainId: string; + chainId: Hex; networkClientId: string; ppomController: PPOMController; securityAlertsEnabled: boolean; @@ -78,6 +80,8 @@ export type AddTransactionRequest = FinalAddTransactionRequest & { }; export type AddDappTransactionRequest = BaseAddTransactionRequest & { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any dappRequest: Record; }; @@ -270,6 +274,8 @@ async function addUserOperationWithController( } = request; const { maxFeePerGas, maxPriorityFeePerGas } = transactionParams; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const { origin, requireApproval, type } = transactionOptions as any; const normalisedTransaction: TransactionParams = { diff --git a/app/scripts/lib/util.ts b/app/scripts/lib/util.ts index 77c2e8543b64..c523f6c03bbd 100644 --- a/app/scripts/lib/util.ts +++ b/app/scripts/lib/util.ts @@ -181,6 +181,8 @@ export const isValidDate = (d: Date | number) => { */ type DeferredPromise = { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any promise: Promise; resolve?: () => void; reject?: () => void; diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 2153c5c61558..25ba90d3eae2 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -171,6 +171,7 @@ import { TEST_NETWORK_TICKER_MAP, NetworkStatus, } from '../../shared/constants/network'; +import { ALLOWED_SMART_TRANSACTIONS_CHAIN_IDS } from '../../shared/constants/smartTransactions'; import { HardwareDeviceNames, LedgerTransportTypes, @@ -211,6 +212,12 @@ import { STATIC_MAINNET_TOKEN_LIST } from '../../shared/constants/tokens'; import { getTokenValueParam } from '../../shared/lib/metamask-controller-utils'; import { isManifestV3 } from '../../shared/modules/mv3.utils'; import { convertNetworkId } from '../../shared/modules/network.utils'; +import { + getIsSmartTransaction, + getFeatureFlagsByChainId, + getSmartTransactionsOptInStatus, + getCurrentChainSupportsSmartTransactions, +} from '../../shared/modules/selectors'; import { ///: BEGIN:ONLY_INCLUDE_IF(build-mmi) handleMMITransactionUpdate, @@ -234,6 +241,7 @@ import { getAdditionalSignArguments as getAdditionalSignArgumentsMMI, } from './lib/transaction/mmi-hooks'; ///: END:ONLY_INCLUDE_IF +import { submitSmartTransactionHook } from './lib/transaction/smart-transactions'; ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) import { keyringSnapPermissionsBuilder } from './lib/keyring-snaps-permissions'; ///: END:ONLY_INCLUDE_IF @@ -304,6 +312,10 @@ import { snapKeyringBuilder, getAccountsBySnapId } from './lib/snap-keyring'; import { encryptorFactory } from './lib/encryptor-factory'; import { addDappTransaction, addTransaction } from './lib/transaction/util'; import { LatticeKeyringOffscreen } from './lib/offscreen-bridge/lattice-offscreen-keyring'; +///: BEGIN:ONLY_INCLUDE_IF(snaps) +import PREINSTALLED_SNAPS from './snaps/preinstalled-snaps'; +///: END:ONLY_INCLUDE_IF +import AuthenticationController from './controllers/authentication/authentication-controller'; export const METAMASK_CONTROLLER_EVENTS = { // Fired after state changes that impact the extension badge (unapproved msg count) @@ -486,28 +498,13 @@ export default class MetamaskController extends EventEmitter { this.networkController.getProviderAndBlockTracker().provider; this.blockTracker = this.networkController.getProviderAndBlockTracker().blockTracker; - - // TODO: Delete when ready to remove `networkVersion` from provider object - this.deprecatedNetworkId = null; - networkControllerMessenger.subscribe( - 'NetworkController:networkDidChange', - () => this.updateDeprecatedNetworkId(), - ); + this.deprecatedNetworkVersions = {}; const tokenListMessenger = this.controllerMessenger.getRestricted({ name: 'TokenListController', allowedEvents: ['NetworkController:stateChange'], }); - this.tokenListController = new TokenListController({ - chainId: this.networkController.state.providerConfig.chainId, - preventPollingOnNetworkRestart: initState.TokenListController - ? initState.TokenListController.preventPollingOnNetworkRestart - : true, - messenger: tokenListMessenger, - state: initState.TokenListController, - }); - const preferencesMessenger = this.controllerMessenger.getRestricted({ name: 'PreferencesController', allowedActions: [], @@ -527,6 +524,15 @@ export default class MetamaskController extends EventEmitter { ), }); + this.tokenListController = new TokenListController({ + chainId: this.networkController.state.providerConfig.chainId, + preventPollingOnNetworkRestart: !this.#isTokenListPollingRequired( + this.preferencesController.store.getState(), + ), + messenger: tokenListMessenger, + state: initState.TokenListController, + }); + this.assetsContractController = new AssetsContractController( { chainId: this.networkController.state.providerConfig.chainId, @@ -684,6 +690,14 @@ export default class MetamaskController extends EventEmitter { addNft: this.nftController.addNft.bind(this.nftController), getNftApi: this.nftController.getNftApi.bind(this.nftController), getNftState: () => this.nftController.state, + // added this to track previous value of useNftDetection, should be true on very first initializing of controller[] + disabled: + this.preferencesController.store.getState().useNftDetection === + undefined + ? true + : !this.preferencesController.store.getState().useNftDetection, + selectedAddress: + this.preferencesController.store.getState().selectedAddress, }); this.metaMetricsController = new MetaMetricsController({ @@ -979,6 +993,7 @@ export default class MetamaskController extends EventEmitter { additionalKeyrings.push( mmiKeyringBuilderFactory(CUSTODIAN_TYPES[custodianType].keyringClass, { mmiConfigurationController: this.mmiConfigurationController, + captureException, }), ); } @@ -1097,6 +1112,7 @@ export default class MetamaskController extends EventEmitter { this.controllerMessenger.subscribe('KeyringController:lock', () => this._onLock(), ); + this.controllerMessenger.subscribe( 'KeyringController:stateChange', (state) => { @@ -1284,6 +1300,7 @@ export default class MetamaskController extends EventEmitter { allowLocalSnaps, requireAllowlist, }, + preinstalledSnaps: PREINSTALLED_SNAPS, }); this.notificationController = new NotificationController({ @@ -1390,6 +1407,15 @@ export default class MetamaskController extends EventEmitter { ///: END:ONLY_INCLUDE_IF + // Notification Controllers + this.authenticationController = new AuthenticationController({ + state: initState.AuthenticationController, + messenger: this.controllerMessenger.getRestricted({ + name: 'AuthenticationController', + allowedActions: [`${this.snapController.name}:handleRequest`], + }), + }); + // account tracker watches balances, nonces, and any code at their address this.accountTracker = new AccountTracker({ provider: this.provider, @@ -1594,6 +1620,15 @@ export default class MetamaskController extends EventEmitter { () => listener(), ); }, + pendingTransactions: { + isResubmitEnabled: () => { + const state = this._getMetaMaskState(); + return !( + getSmartTransactionsOptInStatus(state) && + getCurrentChainSupportsSmartTransactions(state) + ); + }, + }, provider: this.provider, hooks: { ///: BEGIN:ONLY_INCLUDE_IF(build-mmi) @@ -1611,6 +1646,7 @@ export default class MetamaskController extends EventEmitter { beforePublish: beforeTransactionPublishMMI.bind(this), getAdditionalSignArguments: getAdditionalSignArgumentsMMI.bind(this), ///: END:ONLY_INCLUDE_IF + publish: this._publishSmartTransactionHook.bind(this), }, sign: (...args) => this.keyringController.signTransaction(...args), state: initState.TransactionController, @@ -1799,18 +1835,19 @@ export default class MetamaskController extends EventEmitter { networkControllerMessenger, 'NetworkController:stateChange', ), - getNonceLock: this.txController.nonceTracker.getNonceLock.bind( - this.txController.nonceTracker, - ), + getNonceLock: this.txController.getNonceLock.bind(this.txController), confirmExternalTransaction: this.txController.confirmExternalTransaction.bind(this.txController), + getTransactions: this.txController.getTransactions.bind( + this.txController, + ), provider: this.provider, trackMetaMetricsEvent: this.metaMetricsController.trackEvent.bind( this.metaMetricsController, ), }, { - supportedChainIds: [CHAIN_IDS.MAINNET, CHAIN_IDS.GOERLI], + supportedChainIds: ALLOWED_SMART_TRANSACTIONS_CHAIN_IDS, }, initState.SmartTransactionsController, ); @@ -2201,7 +2238,6 @@ export default class MetamaskController extends EventEmitter { } postOnboardingInitialization() { - this.updateDeprecatedNetworkId(); this.networkController.lookupNetwork(); } @@ -2213,7 +2249,12 @@ export default class MetamaskController extends EventEmitter { const preferencesControllerState = this.preferencesController.store.getState(); - const { useCurrencyRateCheck } = preferencesControllerState; + const { useCurrencyRateCheck, useNftDetection } = + preferencesControllerState; + + if (useNftDetection) { + this.nftDetectionController.start(); + } if (useCurrencyRateCheck) { this.currencyRateController.startPollingByNetworkClientId( @@ -2230,6 +2271,7 @@ export default class MetamaskController extends EventEmitter { this.accountTracker.stop(); this.txController.stopIncomingTransactionPolling(); this.tokenDetectionController.disable(); + this.nftDetectionController.stop(); const preferencesControllerState = this.preferencesController.store.getState(); @@ -2678,20 +2720,21 @@ export default class MetamaskController extends EventEmitter { // subset of state for metamask inpage provider const publicConfigStore = new ObservableStore(); - const selectPublicState = (chainId, { isUnlocked }) => { + const selectPublicState = async ({ isUnlocked }) => { + const { chainId, networkVersion } = await this.getProviderNetworkState(); + return { isUnlocked, chainId, - networkVersion: this.deprecatedNetworkId ?? 'loading', + networkVersion: networkVersion ?? 'loading', }; }; - const updatePublicConfigStore = (memState) => { + const updatePublicConfigStore = async (memState) => { const networkStatus = memState.networksMetadata[memState.selectedNetworkClientId]?.status; - const { chainId } = this.networkController.state.providerConfig; if (networkStatus === NetworkStatus.Available) { - publicConfigStore.putState(selectPublicState(chainId, memState)); + publicConfigStore.putState(await selectPublicState(memState)); } }; @@ -2709,12 +2752,14 @@ export default class MetamaskController extends EventEmitter { * @returns {Promise<{ isUnlocked: boolean, networkVersion: string, chainId: string, accounts: string[] }>} An object with relevant state properties. */ async getProviderState(origin) { + const providerNetworkState = await this.getProviderNetworkState( + this.preferencesController.getUseRequestQueue() ? origin : undefined, + ); + return { isUnlocked: this.isUnlocked(), accounts: await this.getPermittedAccounts(origin), - ...this.getProviderNetworkState( - this.preferencesController.getUseRequestQueue() ? origin : undefined, - ), + ...providerNetworkState, }; } @@ -2724,71 +2769,41 @@ export default class MetamaskController extends EventEmitter { * @param {string} origin - The origin identifier for which network state is requested (default: 'metamask'). * @returns {object} An object containing important network state properties, including chainId and networkVersion. */ - getProviderNetworkState(origin = METAMASK_DOMAIN) { - let chainId; - if ( - this.preferencesController.getUseRequestQueue() && - origin !== METAMASK_DOMAIN - ) { - const networkClientId = this.controllerMessenger.call( - 'SelectedNetworkController:getNetworkClientIdForDomain', - origin, - ); - - const networkClient = this.controllerMessenger.call( - 'NetworkController:getNetworkClientById', - networkClientId, - ); - chainId = networkClient.configuration.chainId; - } else { - chainId = this.networkController.state.providerConfig.chainId; - } + async getProviderNetworkState(origin = METAMASK_DOMAIN) { + const networkClientId = this.controllerMessenger.call( + 'SelectedNetworkController:getNetworkClientIdForDomain', + origin, + ); - return { - chainId, - networkVersion: this.deprecatedNetworkId ?? 'loading', - }; - } + const networkClient = this.controllerMessenger.call( + 'NetworkController:getNetworkClientById', + networkClientId, + ); - /** - * TODO: Delete when ready to remove `networkVersion` from provider object - * Updates the `deprecatedNetworkId` value - */ - async updateDeprecatedNetworkId() { - try { - this.deprecatedNetworkId = await this.deprecatedGetNetworkId(); - } catch (error) { - console.error(error); - this.deprecatedNetworkId = null; - } - this._notifyChainChange(); - } + const { chainId } = networkClient.configuration; - /** - * TODO: Delete when ready to remove `networkVersion` from provider object - * Gets current networkId as returned by `net_version` - * - * @returns {string} The networkId for the current network or null on failure - * @throws Will throw if there is a problem getting the network version - */ - async deprecatedGetNetworkId() { - const ethQuery = this.controllerMessenger.call( - 'NetworkController:getEthQuery', - ); + const { completedOnboarding } = this.onboardingController.store.getState(); - if (!ethQuery) { - throw new Error('Provider has not been initialized'); + let networkVersion = this.deprecatedNetworkVersions[networkClientId]; + if (!networkVersion && completedOnboarding) { + const ethQuery = new EthQuery(networkClient.provider); + networkVersion = await new Promise((resolve) => { + ethQuery.sendAsync({ method: 'net_version' }, (error, result) => { + if (error) { + console.error(error); + resolve(null); + } else { + resolve(convertNetworkId(result)); + } + }); + }); + this.deprecatedNetworkVersions[networkClientId] = networkVersion; } - return new Promise((resolve, reject) => { - ethQuery.sendAsync({ method: 'net_version' }, (error, result) => { - if (error) { - reject(error); - } else { - resolve(convertNetworkId(result)); - } - }); - }); + return { + chainId, + networkVersion: networkVersion ?? 'loading', + }; } //============================================================================= @@ -3005,6 +3020,12 @@ export default class MetamaskController extends EventEmitter { setActiveNetwork: (networkConfigurationId) => { return this.networkController.setActiveNetwork(networkConfigurationId); }, + setNetworkClientIdForDomain: (origin, networkClientId) => { + return this.selectedNetworkController.setNetworkClientIdForDomain( + origin, + networkClientId, + ); + }, rollbackToPreviousProvider: networkController.rollbackToPreviousProvider.bind(networkController), removeNetworkConfiguration: @@ -3120,6 +3141,8 @@ export default class MetamaskController extends EventEmitter { // AppStateController setLastActiveTime: appStateController.setLastActiveTime.bind(appStateController), + setCurrentExtensionPopupId: + appStateController.setCurrentExtensionPopupId.bind(appStateController), setDefaultHomeActiveTabName: appStateController.setDefaultHomeActiveTabName.bind(appStateController), setConnectedStatusPopoverHasBeenShown: @@ -3168,6 +3191,14 @@ export default class MetamaskController extends EventEmitter { appStateController.updateNftDropDownState.bind(appStateController), setFirstTimeUsedNetwork: appStateController.setFirstTimeUsedNetwork.bind(appStateController), + setSwitchedNetworkDetails: + appStateController.setSwitchedNetworkDetails.bind(appStateController), + clearSwitchedNetworkDetails: + appStateController.clearSwitchedNetworkDetails.bind(appStateController), + setSwitchedNetworkNeverShowMessage: + appStateController.setSwitchedNetworkNeverShowMessage.bind( + appStateController, + ), // EnsController tryReverseResolveAddress: @@ -3437,10 +3468,6 @@ export default class MetamaskController extends EventEmitter { swapsController.setSwapsQuotesPollingLimitEnabled.bind(swapsController), // Smart Transactions - setSmartTransactionsOptInStatus: - smartTransactionsController.setOptInState.bind( - smartTransactionsController, - ), fetchSmartTransactionFees: smartTransactionsController.getFees.bind( smartTransactionsController, ), @@ -5299,8 +5326,12 @@ export default class MetamaskController extends EventEmitter { Object.keys(this.connections).forEach((origin) => { Object.values(this.connections[origin]).forEach(async (conn) => { - if (conn.engine) { - conn.engine.emit('notification', await getPayload(origin)); + try { + if (conn.engine) { + conn.engine.emit('notification', await getPayload(origin)); + } + } catch (err) { + console.error(err); } }); }); @@ -5564,6 +5595,14 @@ export default class MetamaskController extends EventEmitter { getTokenStandardAndDetails: this.getTokenStandardAndDetails.bind(this), getTransaction: (id) => this.txController.state.transactions.find((tx) => tx.id === id), + getIsSmartTransaction: () => { + return getIsSmartTransaction(this._getMetaMaskState()); + }, + getSmartTransactionByMinedTxHash: (txHash) => { + return this.smartTransactionsController.getSmartTransactionByMinedTxHash( + txHash, + ); + }, }; return { ...controllerActions, @@ -5837,16 +5876,16 @@ export default class MetamaskController extends EventEmitter { this.permissionLogController.updateAccountsHistory(origin, newAccounts); } - _notifyChainChange() { + async _notifyChainChange() { if (this.preferencesController.getUseRequestQueue()) { - this.notifyAllConnections((origin) => ({ + this.notifyAllConnections(async (origin) => ({ method: NOTIFICATION_NAMES.chainChanged, - params: this.getProviderNetworkState(origin), + params: await this.getProviderNetworkState(origin), })); } else { this.notifyAllConnections({ method: NOTIFICATION_NAMES.chainChanged, - params: this.getProviderNetworkState(), + params: await this.getProviderNetworkState(), }); } } @@ -6010,6 +6049,30 @@ export default class MetamaskController extends EventEmitter { ); } + _publishSmartTransactionHook(transactionMeta) { + const state = this._getMetaMaskState(); + const isSmartTransaction = getIsSmartTransaction(state); + if (!isSmartTransaction) { + // Will cause TransactionController to publish to the RPC provider as normal. + return { transactionHash: undefined }; + } + const featureFlags = getFeatureFlagsByChainId(state); + return submitSmartTransactionHook({ + transactionMeta, + transactionController: this.txController, + smartTransactionsController: this.smartTransactionsController, + controllerMessenger: this.controllerMessenger, + isSmartTransaction, + featureFlags, + }); + } + + _getMetaMaskState() { + return { + metamask: this.getState(), + }; + } + async #onPreferencesControllerStateChange(currentState, previousState) { const { currentLocale } = currentState; const { chainId } = this.networkController.state.providerConfig; diff --git a/app/scripts/migrations/081.ts b/app/scripts/migrations/081.ts index 0162a43b6e49..aa7e48a8c9fa 100644 --- a/app/scripts/migrations/081.ts +++ b/app/scripts/migrations/081.ts @@ -91,7 +91,7 @@ function transformState(state: Record) { // Adding the snap name to the wallet_snap permission's caveat value const snapId = permissionName.slice(snapPrefix.length); const caveat = ( - (updatedPermissions.wallet_snap as Record) + (updatedPermissions.wallet_snap as Record) .caveats as unknown[] )[0]; diff --git a/app/scripts/migrations/095.ts b/app/scripts/migrations/095.ts index 39128284e03f..6361bba388fc 100644 --- a/app/scripts/migrations/095.ts +++ b/app/scripts/migrations/095.ts @@ -35,7 +35,11 @@ function migrateData(state: Record): void { removeIncomingTransactionsControllerState(state); } +// TODO: Replace `any` with type +// eslint-disable-next-line @typescript-eslint/no-explicit-any function moveIncomingTransactions(state: Record) { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const incomingTransactions: Record = state.IncomingTransactionsController?.incomingTransactions || {}; @@ -46,6 +50,8 @@ function moveIncomingTransactions(state: Record) { const transactions = state.TransactionController?.transactions || {}; const updatedTransactions = Object.values(incomingTransactions).reduce( + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any (result: Record, tx: any) => { result[tx.id] = tx; return result; @@ -59,7 +65,11 @@ function moveIncomingTransactions(state: Record) { }; } +// TODO: Replace `any` with type +// eslint-disable-next-line @typescript-eslint/no-explicit-any function generateLastFetchedBlockNumbers(state: Record) { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const incomingTransactions: Record = state.IncomingTransactionsController?.incomingTransactions || {}; diff --git a/app/scripts/migrations/096.ts b/app/scripts/migrations/096.ts index 749956a726b2..b04b7613e008 100644 --- a/app/scripts/migrations/096.ts +++ b/app/scripts/migrations/096.ts @@ -4,6 +4,8 @@ import { CHAIN_IDS } from '../../../shared/constants/network'; type VersionedData = { meta: { version: number }; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any data: Record; }; @@ -34,6 +36,8 @@ export async function migrate( } type NetworkConfiguration = { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any chainId: Record; }; @@ -48,10 +52,18 @@ function transformState(state: Record) { return state; } const { PreferencesController, NetworkController } = state; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const { featureFlags }: Record = PreferencesController; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const { showIncomingTransactions }: any = featureFlags; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const { networkConfigurations }: Record = NetworkController; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const addedNetwork: Record[] = Object.values(networkConfigurations).map( (network) => network.chainId, @@ -63,6 +75,8 @@ function transformState(state: Record) { CHAIN_IDS.SEPOLIA, CHAIN_IDS.LINEA_GOERLI, ]; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const allSavedNetworks: Record = [ ...mainNetworks, ...addedNetwork, diff --git a/app/scripts/migrations/097.ts b/app/scripts/migrations/097.ts index 9e99cf61b40a..56a11679449d 100644 --- a/app/scripts/migrations/097.ts +++ b/app/scripts/migrations/097.ts @@ -21,6 +21,8 @@ export async function migrate( return versionedData; } +// TODO: Replace `any` with type +// eslint-disable-next-line @typescript-eslint/no-explicit-any function transformState(state: Record) { const transactionControllerState = state?.TransactionController || {}; const transactions = transactionControllerState?.transactions || {}; diff --git a/app/scripts/migrations/098.ts b/app/scripts/migrations/098.ts index 3085827b4c6a..2fe77148e052 100644 --- a/app/scripts/migrations/098.ts +++ b/app/scripts/migrations/098.ts @@ -25,6 +25,8 @@ export async function migrate( return versionedData; } +// TODO: Replace `any` with type +// eslint-disable-next-line @typescript-eslint/no-explicit-any function transformState(state: Record) { const transactionControllerState = state?.TransactionController || {}; const transactions = transactionControllerState?.transactions || {}; diff --git a/app/scripts/migrations/099.test.ts b/app/scripts/migrations/099.test.ts index 1feba98e6fa3..3b98f4f72a26 100644 --- a/app/scripts/migrations/099.test.ts +++ b/app/scripts/migrations/099.test.ts @@ -72,6 +72,8 @@ describe('migration #99', () => { const newStorage = await migrate(oldStorage); + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any const migratedTransactions = (newStorage.data.TransactionController as any) .transactions; diff --git a/app/scripts/migrations/099.ts b/app/scripts/migrations/099.ts index 9464d19a64df..38018c97919d 100644 --- a/app/scripts/migrations/099.ts +++ b/app/scripts/migrations/099.ts @@ -24,6 +24,8 @@ export async function migrate( return versionedData; } +// TODO: Replace `any` with type +// eslint-disable-next-line @typescript-eslint/no-explicit-any function transformState(state: Record) { const transactionControllerState = state?.TransactionController || {}; const transactions = transactionControllerState?.transactions || {}; @@ -33,6 +35,8 @@ function transformState(state: Record) { } const newTxs = Object.keys(transactions).reduce( + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any (txs: { [key: string]: any }, oldTransactionId) => { // Clone the transaction const transaction = cloneDeep(transactions[oldTransactionId]); diff --git a/app/scripts/migrations/100.ts b/app/scripts/migrations/100.ts index c9b4a99afceb..89dbe0d5670d 100644 --- a/app/scripts/migrations/100.ts +++ b/app/scripts/migrations/100.ts @@ -25,6 +25,8 @@ export async function migrate( return versionedData; } +// TODO: Replace `any` with type +// eslint-disable-next-line @typescript-eslint/no-explicit-any function transformState(state: Record) { const addressBook = state?.AddressBookController?.addressBook ?? {}; const names = state?.NameController?.names?.ethereumAddress ?? {}; diff --git a/app/scripts/migrations/102.ts b/app/scripts/migrations/102.ts index 820e67605251..a1fde4f27f7f 100644 --- a/app/scripts/migrations/102.ts +++ b/app/scripts/migrations/102.ts @@ -23,6 +23,8 @@ export async function migrate( return versionedData; } +// TODO: Replace `any` with type +// eslint-disable-next-line @typescript-eslint/no-explicit-any function transformState(state: Record) { const transactionControllerState = state?.TransactionController || {}; const transactions = transactionControllerState?.transactions || {}; @@ -32,6 +34,8 @@ function transformState(state: Record) { } const newTxs = Object.keys(transactions).reduce( + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any (txs: { [key: string]: any }, txId) => { // Clone the transaction const transaction = cloneDeep(transactions[txId]); diff --git a/app/scripts/migrations/104.ts b/app/scripts/migrations/104.ts index 340d167ccd5f..38ab3c0f57c8 100644 --- a/app/scripts/migrations/104.ts +++ b/app/scripts/migrations/104.ts @@ -22,6 +22,8 @@ export async function migrate( return versionedData; } +// TODO: Replace `any` with type +// eslint-disable-next-line @typescript-eslint/no-explicit-any function transformState(state: Record) { const transactionControllerState = state?.TransactionController; @@ -32,6 +34,8 @@ function transformState(state: Record) { const transactionsObject = transactionControllerState?.transactions || {}; const transactionsArray = Object.values(transactionsObject).sort( + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any (a: any, b: any) => (a.time > b.time ? -1 : 1), // Descending ); diff --git a/app/scripts/migrations/105.ts b/app/scripts/migrations/105.ts index 10be55e69e0a..482bc5a73d15 100644 --- a/app/scripts/migrations/105.ts +++ b/app/scripts/migrations/105.ts @@ -48,6 +48,8 @@ function migrateData(state: Record): void { createSelectedAccountForAccountsController(state); } +// TODO: Replace `any` with type +// eslint-disable-next-line @typescript-eslint/no-explicit-any function createDefaultAccountsController(state: Record) { state.AccountsController = { internalAccounts: { @@ -58,6 +60,8 @@ function createDefaultAccountsController(state: Record) { } function createInternalAccountsForAccountsController( + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any state: Record, ) { const identities: { @@ -98,6 +102,8 @@ function createInternalAccountsForAccountsController( } function createSelectedAccountForAccountsController( + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any state: Record, ) { const selectedAddress = state.PreferencesController?.selectedAddress; diff --git a/app/scripts/migrations/108.ts b/app/scripts/migrations/108.ts index 1ea75957b73a..4b12de5f9004 100644 --- a/app/scripts/migrations/108.ts +++ b/app/scripts/migrations/108.ts @@ -27,6 +27,8 @@ export async function migrate( return versionedData; } +// TODO: Replace `any` with type +// eslint-disable-next-line @typescript-eslint/no-explicit-any function transformState(state: Record) { const addressBook = state?.AddressBookController?.addressBook ?? {}; const names = state?.NameController?.names?.ethereumAddress ?? {}; diff --git a/app/scripts/migrations/109.ts b/app/scripts/migrations/109.ts index 5c40b07d4b09..13e268b8e061 100644 --- a/app/scripts/migrations/109.ts +++ b/app/scripts/migrations/109.ts @@ -27,6 +27,8 @@ export async function migrate( return versionedData; } +// TODO: Replace `any` with type +// eslint-disable-next-line @typescript-eslint/no-explicit-any function transformState(state: Record) { const identities: PreferencesControllerState['identities'] = state?.PreferencesController?.identities ?? {}; diff --git a/app/scripts/migrations/110.ts b/app/scripts/migrations/110.ts index bc941ac87695..7a677ed8b9cd 100644 --- a/app/scripts/migrations/110.ts +++ b/app/scripts/migrations/110.ts @@ -35,6 +35,8 @@ export async function migrate( return versionedData; } +// TODO: Replace `any` with type +// eslint-disable-next-line @typescript-eslint/no-explicit-any function transformState(state: Record) { const NetworkController = state?.NetworkController || {}; const provider = NetworkController?.providerConfig || {}; diff --git a/app/scripts/migrations/111.ts b/app/scripts/migrations/111.ts index a45c24fa168f..1a06e655cabb 100644 --- a/app/scripts/migrations/111.ts +++ b/app/scripts/migrations/111.ts @@ -28,6 +28,8 @@ export async function migrate( return versionedData; } +// TODO: Replace `any` with type +// eslint-disable-next-line @typescript-eslint/no-explicit-any function transformState(state: Record) { if (!hasProperty(state, 'SelectedNetworkController')) { return state; diff --git a/app/scripts/migrations/112.ts b/app/scripts/migrations/112.ts index 6313462be199..519be68c9ca3 100644 --- a/app/scripts/migrations/112.ts +++ b/app/scripts/migrations/112.ts @@ -26,6 +26,8 @@ export async function migrate( return versionedData; } +// TODO: Replace `any` with type +// eslint-disable-next-line @typescript-eslint/no-explicit-any function transformState(state: Record) { if (!hasProperty(state, 'SelectedNetworkController')) { return state; diff --git a/app/scripts/migrations/114.ts b/app/scripts/migrations/114.ts index 2288dc84d612..bed9c70a8850 100644 --- a/app/scripts/migrations/114.ts +++ b/app/scripts/migrations/114.ts @@ -26,6 +26,8 @@ export async function migrate( return versionedData; } +// TODO: Replace `any` with type +// eslint-disable-next-line @typescript-eslint/no-explicit-any function transformState(state: Record) { if (!hasProperty(state, 'PreferencesController')) { return state; diff --git a/app/scripts/snaps/preinstalled-snaps.ts b/app/scripts/snaps/preinstalled-snaps.ts new file mode 100644 index 000000000000..0a014c350c21 --- /dev/null +++ b/app/scripts/snaps/preinstalled-snaps.ts @@ -0,0 +1,8 @@ +import type { PreinstalledSnap } from '@metamask/snaps-controllers'; +import MessageSigningSnap from '@metamask/message-signing-snap/dist/preinstalled-snap.json'; + +const PREINSTALLED_SNAPS: readonly PreinstalledSnap[] = Object.freeze([ + MessageSigningSnap as PreinstalledSnap, +]); + +export default PREINSTALLED_SNAPS; diff --git a/app/trezor-usb-permissions.html b/app/trezor-usb-permissions.html index b3c6ce72b11c..fa116f591fc2 100644 --- a/app/trezor-usb-permissions.html +++ b/app/trezor-usb-permissions.html @@ -1,9 +1,9 @@ - - + + TrezorConnect | Trezor @@ -31,5 +31,5 @@ - + diff --git a/builds.yml b/builds.yml index 0e49f72bec6d..3afedf1af148 100644 --- a/builds.yml +++ b/builds.yml @@ -27,7 +27,7 @@ buildTypes: - SEGMENT_WRITE_KEY_REF: SEGMENT_PROD_WRITE_KEY - ALLOW_LOCAL_SNAPS: false - REQUIRE_SNAPS_ALLOWLIST: true - - IFRAME_EXECUTION_ENVIRONMENT_URL: https://execution.metamask.io/iframe/5.0.3/index.html + - IFRAME_EXECUTION_ENVIRONMENT_URL: https://execution.metamask.io/iframe/5.0.4/index.html - ACCOUNT_SNAPS_DIRECTORY_URL: https://snaps.metamask.io/account-management # Main build uses the default browser manifest manifestOverrides: false @@ -64,7 +64,7 @@ buildTypes: - SEGMENT_FLASK_WRITE_KEY - ALLOW_LOCAL_SNAPS: true - REQUIRE_SNAPS_ALLOWLIST: false - - IFRAME_EXECUTION_ENVIRONMENT_URL: https://execution.metamask.io/iframe/5.0.3/index.html + - IFRAME_EXECUTION_ENVIRONMENT_URL: https://execution.metamask.io/iframe/5.0.4/index.html - SUPPORT_LINK: https://metamask-flask.zendesk.com/hc - SUPPORT_REQUEST_LINK: https://metamask-flask.zendesk.com/hc/en-us/requests/new - INFURA_ENV_KEY_REF: INFURA_FLASK_PROJECT_ID @@ -85,7 +85,7 @@ buildTypes: - SEGMENT_FLASK_WRITE_KEY - ALLOW_LOCAL_SNAPS: true - REQUIRE_SNAPS_ALLOWLIST: false - - IFRAME_EXECUTION_ENVIRONMENT_URL: https://execution.metamask.io/iframe/5.0.3/index.html + - IFRAME_EXECUTION_ENVIRONMENT_URL: https://execution.metamask.io/iframe/5.0.4/index.html - SUPPORT_LINK: https://metamask-flask.zendesk.com/hc - SUPPORT_REQUEST_LINK: https://metamask-flask.zendesk.com/hc/en-us/requests/new - INFURA_ENV_KEY_REF: INFURA_FLASK_PROJECT_ID @@ -108,7 +108,7 @@ buildTypes: - SEGMENT_WRITE_KEY_REF: SEGMENT_MMI_WRITE_KEY - ALLOW_LOCAL_SNAPS: false - REQUIRE_SNAPS_ALLOWLIST: true - - IFRAME_EXECUTION_ENVIRONMENT_URL: https://execution.metamask.io/iframe/5.0.3/index.html + - IFRAME_EXECUTION_ENVIRONMENT_URL: https://execution.metamask.io/iframe/5.0.4/index.html - MMI_CONFIGURATION_SERVICE_URL: https://configuration.metamask-institutional.io/v2/configuration/default - SUPPORT_LINK: https://mmi-support.metamask.io/hc/en-us - SUPPORT_REQUEST_LINK: https://mmi-support.metamask.io/hc/en-us/requests/new @@ -144,7 +144,6 @@ features: env: - BLOCKAID_FILE_CDN: static.cx.metamask.io/api/v1/confirmations/ppom - BLOCKAID_PUBLIC_KEY: 066ad3e8af5583385e312c156d238055215d5f25247c1e91055afa756cb98a88 - conf-redesign: ### # Build Type code extensions. Things like different support links, warning pages, banners ### @@ -198,6 +197,14 @@ env: # This variable is read by Trezor's source and breaks build if not included - ASSET_PREFIX: null + ### + # Notifications Feature + ### + - AUTH_API: https://authentication.api.cx.metamask.io + - OIDC_API: https://oidc.api.cx.metamask.io + - OIDC_CLIENT_ID: 1132f10a-b4e5-4390-a5f2-d9c6022db564 + - OIDC_GRANT_TYPE: urn:ietf:params:oauth:grant-type:jwt-bearer + ### # API keys to 3rd party services ### @@ -264,6 +271,12 @@ env: # Determines if feature flagged Multichain Transactions should be used - TRANSACTION_MULTICHAIN: '' + # Used to enable confirmation redesigned pages + - ENABLE_CONFIRMATION_REDESIGN: '' + + # Enables the notifications feature within the build: + - NOTIFICATIONS: '' + ### # Meta variables ### diff --git a/development/build/scripts.js b/development/build/scripts.js index 9e0ebd53715c..1baa6e9d7f27 100644 --- a/development/build/scripts.js +++ b/development/build/scripts.js @@ -4,7 +4,6 @@ const { callbackify } = require('util'); const path = require('path'); const { writeFileSync, readFileSync, unlinkSync } = require('fs'); const EventEmitter = require('events'); -const assert = require('assert'); const gulp = require('gulp'); const watch = require('gulp-watch'); const Vinyl = require('vinyl'); @@ -30,9 +29,9 @@ const terser = require('terser'); const bifyModuleGroups = require('bify-module-groups'); -const phishingWarningManifest = require('@metamask/phishing-warning/package.json'); const { streamFlatMap } = require('../stream-flat-map'); -const { BUILD_TARGETS, ENVIRONMENT } = require('./constants'); +const { setEnvironmentVariables } = require('./set-environment-variables'); +const { BUILD_TARGETS } = require('./constants'); const { getConfig } = require('./config'); const { isDevBuild, @@ -41,8 +40,6 @@ const { logError, wrapAgainstScuttling, getBuildName, - getBuildAppId, - getBuildIcon, makeSelfInjecting, } = require('./utils'); @@ -58,7 +55,7 @@ const { // map dist files to bag of needed native APIs against LM scuttling const scuttlingConfigBase = { - 'sentry-install.js': { + 'scripts/sentry-install.js': { // globals sentry need to function window: '', navigator: '', @@ -96,128 +93,12 @@ const mv3ScuttlingConfig = { ...scuttlingConfigBase }; const standardScuttlingConfig = { ...scuttlingConfigBase, - 'sentry-install.js': { - ...scuttlingConfigBase['sentry-install.js'], + 'scripts/sentry-install.js': { + ...scuttlingConfigBase['scripts/sentry-install.js'], document: '', }, }; -/** - * Get the appropriate Infura project ID. - * - * @param {object} options - The Infura project ID options. - * @param {string} options.buildType - The current build type. - * @param {ENVIRONMENT[keyof ENVIRONMENT]} options.environment - The build environment. - * @param {boolean} options.testing - Whether this is a test build or not. - * @param options.variables - * @returns {string} The Infura project ID. - */ -function getInfuraProjectId({ buildType, variables, environment, testing }) { - const EMPTY_PROJECT_ID = '00000000000000000000000000000000'; - if (testing) { - return EMPTY_PROJECT_ID; - } else if (environment !== ENVIRONMENT.PRODUCTION) { - // Skip validation because this is unset on PRs from forks. - // For forks, return empty project ID if we don't have one. - if ( - !variables.isDefined('INFURA_PROJECT_ID') && - environment === ENVIRONMENT.PULL_REQUEST - ) { - return EMPTY_PROJECT_ID; - } - return variables.get('INFURA_PROJECT_ID'); - } - /** @type {string|undefined} */ - const infuraKeyReference = variables.get('INFURA_ENV_KEY_REF'); - assert( - typeof infuraKeyReference === 'string' && infuraKeyReference.length > 0, - `Build type "${buildType}" has improperly set INFURA_ENV_KEY_REF in builds.yml. Current value: "${infuraKeyReference}"`, - ); - /** @type {string|undefined} */ - const infuraProjectId = variables.get(infuraKeyReference); - assert( - typeof infuraProjectId === 'string' && infuraProjectId.length > 0, - `Infura Project ID environmental variable "${infuraKeyReference}" is set improperly.`, - ); - return infuraProjectId; -} - -/** - * Get the appropriate Segment write key. - * - * @param {object} options - The Segment write key options. - * @param {string} options.buildType - The current build type. - * @param {keyof ENVIRONMENT} options.environment - The current build environment. - * @param {import('../lib/variables').Variables} options.variables - Object containing all variables that modify the build pipeline - * @returns {string} The Segment write key. - */ -function getSegmentWriteKey({ buildType, variables, environment }) { - if (environment !== ENVIRONMENT.PRODUCTION) { - // Skip validation because this is unset on PRs from forks, and isn't necessary for development builds. - return variables.get('SEGMENT_WRITE_KEY'); - } - - const segmentKeyReference = variables.get('SEGMENT_WRITE_KEY_REF'); - assert( - typeof segmentKeyReference === 'string' && segmentKeyReference.length > 0, - `Build type "${buildType}" has improperly set SEGMENT_WRITE_KEY_REF in builds.yml. Current value: "${segmentKeyReference}"`, - ); - - const segmentWriteKey = variables.get(segmentKeyReference); - assert( - typeof segmentWriteKey === 'string' && segmentWriteKey.length > 0, - `Segment Write Key environmental variable "${segmentKeyReference}" is set improperly.`, - ); - return segmentWriteKey; -} - -/** - * Get the URL for the phishing warning page, if it has been set. - * - * @param {object} options - The phishing warning page options. - * @param {boolean} options.testing - Whether this is a test build or not. - * @param {import('../lib/variables').Variables} options.variables - Object containing all variables that modify the build pipeline - * @returns {string} The URL for the phishing warning page, or `undefined` if no URL is set. - */ -function getPhishingWarningPageUrl({ variables, testing }) { - let phishingWarningPageUrl = variables.get('PHISHING_WARNING_PAGE_URL'); - - assert( - phishingWarningPageUrl === null || - typeof phishingWarningPageUrl === 'string', - ); - if (phishingWarningPageUrl === null) { - phishingWarningPageUrl = testing - ? 'http://localhost:9999/' - : `https://metamask.github.io/phishing-warning/v${phishingWarningManifest.version}/`; - } - - // We add a hash/fragment to the URL dynamically, so we need to ensure it - // has a valid pathname to append a hash to. - const normalizedUrl = phishingWarningPageUrl.endsWith('/') - ? phishingWarningPageUrl - : `${phishingWarningPageUrl}/`; - - let phishingWarningPageUrlObject; - try { - // eslint-disable-next-line no-new - phishingWarningPageUrlObject = new URL(normalizedUrl); - } catch (error) { - throw new Error( - `Invalid phishing warning page URL: '${normalizedUrl}'`, - error, - ); - } - if (phishingWarningPageUrlObject.hash) { - // The URL fragment must be set dynamically - throw new Error( - `URL fragment not allowed in phishing warning page URL: '${normalizedUrl}'`, - ); - } - - return normalizedUrl; -} - const noopWriteStream = through.obj((_file, _fileEncoding, callback) => callback(), ); @@ -400,7 +281,7 @@ function createScriptTasks({ browserPlatforms, buildTarget, buildType, - destFilepath: `${label}.js`, + destFilepath: `scripts/${label}.js`, entryFilepath: `./app/scripts/${label}.js`, ignoredFiles, label, @@ -424,7 +305,7 @@ function createScriptTasks({ browserPlatforms, buildTarget, buildType, - destFilepath: `${label}.js`, + destFilepath: `scripts/${label}.js`, entryFilepath: `./app/scripts/${label}.js`, ignoredFiles, label, @@ -452,7 +333,7 @@ function createScriptTasks({ buildTarget, buildType, browserPlatforms, - destFilepath: `${inpage}.js`, + destFilepath: `scripts/${inpage}.js`, entryFilepath: `./app/scripts/${inpage}.js`, label: inpage, ignoredFiles, @@ -467,25 +348,29 @@ function createScriptTasks({ if (process.env.ENABLE_MV3) { return; } - // stringify inpage.js into itself, and then make it inject itself into the page + // stringify scripts/inpage.js into itself, and then make it inject itself into the page browserPlatforms.forEach((browser) => { makeSelfInjecting( - path.join(__dirname, `../../dist/${browser}/${inpage}.js`), + path.join(__dirname, `../../dist/${browser}/scripts/${inpage}.js`), ); }); - // delete the inpage.js source map, as it no longer represents inpage.js - // and so `yarn source-map-explorer` can't handle it. It's also not - // useful anyway, as inpage.js is injected as a `script.textContent`, - // and not tracked in Sentry or browsers devtools anyway. + // delete the scripts/inpage.js source map, as it no longer represents + // scripts/inpage.js and so `yarn source-map-explorer` can't handle it. + // It's also not useful anyway, as scripts/inpage.js is injected as a + // `script.textContent`, and not tracked in Sentry or browsers devtools + // anyway. unlinkSync( - path.join(__dirname, `../../dist/sourcemaps/${inpage}.js.map`), + path.join( + __dirname, + `../../dist/sourcemaps/scripts/${inpage}.js.map`, + ), ); }, createNormalBundle({ buildTarget, buildType, browserPlatforms, - destFilepath: `${contentscript}.js`, + destFilepath: `scripts/${contentscript}.js`, entryFilepath: `./app/scripts/${contentscript}.js`, label: contentscript, ignoredFiles, @@ -559,7 +444,7 @@ async function createManifestV3AppInitializationBundle({ browserPlatforms: mv3BrowserPlatforms, buildTarget, buildType, - destFilepath: 'app-init.js', + destFilepath: 'scripts/app-init.js', entryFilepath: './app/scripts/app-init.js', extraEnvironmentVariables, ignoredFiles, @@ -635,12 +520,16 @@ function createFactoredBuild({ const environment = getEnvironment({ buildTarget }); const config = await getConfig(buildType, environment); const { variables, activeBuild } = config; - await setEnvironmentVariables({ - buildTarget, + setEnvironmentVariables({ + isDevBuild: reloadOnChange, + isTestBuild: isTestBuild(buildTarget), + buildName: getBuildName({ + environment, + buildType, + }), buildType, environment, variables, - activeBuild, version, }); const features = { @@ -718,7 +607,7 @@ function createFactoredBuild({ // add lavamoat policy loader file to packer output moduleGroupPackerStream.push( new Vinyl({ - path: 'policy-load.js', + path: 'scripts/policy-load.js', contents: lavapack.makePolicyLoaderStream(lavamoatOpts), }), ); @@ -900,12 +789,16 @@ function createNormalBundle({ const environment = getEnvironment({ buildTarget }); const config = await getConfig(buildType, environment); const { activeBuild, variables } = config; - await setEnvironmentVariables({ - buildTarget, + setEnvironmentVariables({ + buildName: getBuildName({ + environment, + buildType, + }), + isDevBuild: devMode, + isTestBuild: isTestBuild(buildTarget), buildType, variables, environment, - activeBuild, version, }); Object.entries(extraEnvironmentVariables ?? {}).forEach(([key, value]) => @@ -1198,70 +1091,6 @@ async function createBundle(buildConfiguration, { reloadOnChange }) { } } -/** - * Sets environment variables to inject in the current build. - * - * @param {object} options - Build options. - * @param {BUILD_TARGETS} options.buildTarget - The current build target. - * @param {string} options.buildType - The current build type (e.g. "main", - * "flask", etc.). - * @param {string} options.version - The current version of the extension. - * @param options.activeBuild - * @param options.variables - * @param options.environment - */ -async function setEnvironmentVariables({ - buildTarget, - buildType, - activeBuild, - environment, - variables, - version, -}) { - const devMode = isDevBuild(buildTarget); - const testing = isTestBuild(buildTarget); - - variables.set({ - DEBUG: devMode || testing ? variables.getMaybe('DEBUG') : undefined, - EIP_4337_ENTRYPOINT: - variables.getMaybe('EIP_4337_ENTRYPOINT') || - (testing ? '0x18b06605539dc02ecD3f7AB314e38eB7c1dA5c9b' : undefined), - IN_TEST: testing, - INFURA_PROJECT_ID: getInfuraProjectId({ - buildType, - activeBuild, - variables, - environment, - testing, - }), - METAMASK_DEBUG: devMode || variables.getMaybe('METAMASK_DEBUG') === true, - METAMASK_BUILD_NAME: getBuildName({ - environment, - buildType, - }), - METAMASK_BUILD_APP_ID: getBuildAppId({ - buildType, - }), - METAMASK_BUILD_ICON: getBuildIcon({ - buildType, - }), - METAMASK_ENVIRONMENT: environment, - METAMASK_VERSION: version, - METAMASK_BUILD_TYPE: buildType, - NODE_ENV: devMode ? ENVIRONMENT.DEVELOPMENT : ENVIRONMENT.PRODUCTION, - PHISHING_WARNING_PAGE_URL: getPhishingWarningPageUrl({ - variables, - testing, - }), - SEGMENT_WRITE_KEY: getSegmentWriteKey({ - buildType, - activeBuild, - variables, - environment, - }), - }); -} - function renderJavaScriptLoader({ groupSet, commonSet, @@ -1280,18 +1109,22 @@ function renderJavaScriptLoader({ ); const securityScripts = applyLavaMoat - ? ['./runtime-lavamoat.js', './lockdown-more.js', './policy-load.js'] + ? [ + './scripts/runtime-lavamoat.js', + './scripts/lockdown-more.js', + './scripts/policy-load.js', + ] : [ - './lockdown-install.js', - './lockdown-run.js', - './lockdown-more.js', - './runtime-cjs.js', + './scripts/lockdown-install.js', + './scripts/lockdown-run.js', + './scripts/lockdown-more.js', + './scripts/runtime-cjs.js', ]; const requiredScripts = [ - './snow.js', - './use-snow.js', - './sentry-install.js', + './scripts/snow.js', + './scripts/use-snow.js', + './scripts/sentry-install.js', ...securityScripts, ...jsBundles, ]; diff --git a/development/build/set-environment-variables.js b/development/build/set-environment-variables.js new file mode 100644 index 000000000000..83f0016f5f3e --- /dev/null +++ b/development/build/set-environment-variables.js @@ -0,0 +1,215 @@ +const { readFileSync } = require('node:fs'); +const assert = require('node:assert'); +const { ENVIRONMENT } = require('./constants'); + +/** + * Sets environment variables to inject in the current build. + * + * @param {object} options - Build options. + * @param {string} options.buildName - The name of the build. + * @param {boolean} options.isDevBuild - Whether the build is a development build. + * @param {boolean} options.isTestBuild - Whether the build is a test build. + * @param {string} options.buildType - The current build type (e.g. "main", + * "flask", etc.). + * @param {string} options.version - The current version of the extension. + * @param {import('../lib/variables').Variables} options.variables + * @param {ENVIRONMENT[keyof ENVIRONMENT]} options.environment - The build environment. + */ +module.exports.setEnvironmentVariables = function setEnvironmentVariables({ + buildName, + isDevBuild, + isTestBuild, + buildType, + environment, + variables, + version, +}) { + variables.set({ + DEBUG: isDevBuild || isTestBuild ? variables.getMaybe('DEBUG') : undefined, + EIP_4337_ENTRYPOINT: + variables.getMaybe('EIP_4337_ENTRYPOINT') || + (isTestBuild ? '0x18b06605539dc02ecD3f7AB314e38eB7c1dA5c9b' : undefined), + IN_TEST: isTestBuild, + INFURA_PROJECT_ID: getInfuraProjectId({ + buildType, + variables, + environment, + testing: isTestBuild, + }), + METAMASK_DEBUG: isDevBuild || variables.getMaybe('METAMASK_DEBUG') === true, + METAMASK_BUILD_NAME: buildName, + METAMASK_BUILD_APP_ID: getBuildAppId({ + buildType, + }), + METAMASK_BUILD_ICON: getBuildIcon({ + buildType, + }), + METAMASK_ENVIRONMENT: environment, + METAMASK_VERSION: version, + METAMASK_BUILD_TYPE: buildType, + NODE_ENV: isDevBuild ? ENVIRONMENT.DEVELOPMENT : ENVIRONMENT.PRODUCTION, + PHISHING_WARNING_PAGE_URL: getPhishingWarningPageUrl({ + variables, + testing: isTestBuild, + }), + SEGMENT_WRITE_KEY: getSegmentWriteKey({ + buildType, + variables, + environment, + }), + }); +}; + +const BUILD_TYPES_TO_SVG_LOGO_PATH = { + main: './app/images/logo/metamask-fox.svg', + beta: './app/build-types/beta/images/logo/metamask-fox.svg', + flask: './app/build-types/flask/images/logo/metamask-fox.svg', + mmi: './app/build-types/mmi/images/logo/mmi-logo.svg', + desktop: './app/build-types/desktop/images/logo/metamask-fox.svg', +}; + +/** + * Get the image data uri for the svg icon for the current build. + * + * @param {object} options - The build options. + * @param {string} options.buildType - The build type of the current build. + * @returns {string} The image data uri for the icon. + */ +function getBuildIcon({ buildType }) { + const svgLogoPath = + BUILD_TYPES_TO_SVG_LOGO_PATH[buildType] || + BUILD_TYPES_TO_SVG_LOGO_PATH.main; + // encode as base64 as its more space-efficient for most SVGs than a data uri + return `data:image/svg+xml;base64,${readFileSync(svgLogoPath, 'base64')}`; +} + +/** + * Get the app ID for the current build. Should be valid reverse FQDN. + * + * @param {object} options - The build options. + * @param {string} options.buildType - The build type of the current build. + * @returns {string} The build app ID. + */ +function getBuildAppId({ buildType }) { + const baseDomain = 'io.metamask'; + return buildType === 'main' ? baseDomain : `${baseDomain}.${buildType}`; +} + +/** + * Get the appropriate Infura project ID. + * + * @param {object} options - The Infura project ID options. + * @param {string} options.buildType - The current build type. + * @param {ENVIRONMENT[keyof ENVIRONMENT]} options.environment - The build environment. + * @param {boolean} options.testing - Whether this is a test build or not. + * @param options.variables + * @returns {string} The Infura project ID. + */ +function getInfuraProjectId({ buildType, variables, environment, testing }) { + const EMPTY_PROJECT_ID = '00000000000000000000000000000000'; + if (testing) { + return EMPTY_PROJECT_ID; + } else if (environment !== ENVIRONMENT.PRODUCTION) { + // Skip validation because this is unset on PRs from forks. + // For forks, return empty project ID if we don't have one. + if ( + !variables.isDefined('INFURA_PROJECT_ID') && + environment === ENVIRONMENT.PULL_REQUEST + ) { + return EMPTY_PROJECT_ID; + } + return variables.get('INFURA_PROJECT_ID'); + } + /** @type {string|undefined} */ + const infuraKeyReference = variables.get('INFURA_ENV_KEY_REF'); + assert( + typeof infuraKeyReference === 'string' && infuraKeyReference.length > 0, + `Build type "${buildType}" has improperly set INFURA_ENV_KEY_REF in builds.yml. Current value: "${infuraKeyReference}"`, + ); + /** @type {string|undefined} */ + const infuraProjectId = variables.get(infuraKeyReference); + assert( + typeof infuraProjectId === 'string' && infuraProjectId.length > 0, + `Infura Project ID environmental variable "${infuraKeyReference}" is set improperly.`, + ); + return infuraProjectId; +} + +/** + * Get the appropriate Segment write key. + * + * @param {object} options - The Segment write key options. + * @param {string} options.buildType - The current build type. + * @param {keyof ENVIRONMENT} options.environment - The current build environment. + * @param {import('../lib/variables').Variables} options.variables - Object containing all variables that modify the build pipeline + * @returns {string} The Segment write key. + */ +function getSegmentWriteKey({ buildType, variables, environment }) { + if (environment !== ENVIRONMENT.PRODUCTION) { + // Skip validation because this is unset on PRs from forks, and isn't necessary for development builds. + return variables.get('SEGMENT_WRITE_KEY'); + } + + const segmentKeyReference = variables.get('SEGMENT_WRITE_KEY_REF'); + assert( + typeof segmentKeyReference === 'string' && segmentKeyReference.length > 0, + `Build type "${buildType}" has improperly set SEGMENT_WRITE_KEY_REF in builds.yml. Current value: "${segmentKeyReference}"`, + ); + + const segmentWriteKey = variables.get(segmentKeyReference); + assert( + typeof segmentWriteKey === 'string' && segmentWriteKey.length > 0, + `Segment Write Key environmental variable "${segmentKeyReference}" is set improperly.`, + ); + return segmentWriteKey; +} + +/** + * Get the URL for the phishing warning page, if it has been set. + * + * @param {object} options - The phishing warning page options. + * @param {boolean} options.testing - Whether this is a test build or not. + * @param {import('../lib/variables').Variables} options.variables - Object containing all variables that modify the build pipeline + * @returns {string} The URL for the phishing warning page, or `undefined` if no URL is set. + */ +function getPhishingWarningPageUrl({ variables, testing }) { + let phishingWarningPageUrl = variables.get('PHISHING_WARNING_PAGE_URL'); + + assert( + phishingWarningPageUrl === null || + typeof phishingWarningPageUrl === 'string', + ); + if (phishingWarningPageUrl === null) { + phishingWarningPageUrl = testing + ? 'http://localhost:9999/' + : `https://metamask.github.io/phishing-warning/v${ + // eslint-disable-next-line node/global-require + require('@metamask/phishing-warning/package.json').version + }/`; + } + + // We add a hash/fragment to the URL dynamically, so we need to ensure it + // has a valid pathname to append a hash to. + const normalizedUrl = phishingWarningPageUrl.endsWith('/') + ? phishingWarningPageUrl + : `${phishingWarningPageUrl}/`; + + let phishingWarningPageUrlObject; + try { + // eslint-disable-next-line no-new + phishingWarningPageUrlObject = new URL(normalizedUrl); + } catch (error) { + throw new Error( + `Invalid phishing warning page URL: '${normalizedUrl}'`, + error, + ); + } + if (phishingWarningPageUrlObject.hash) { + // The URL fragment must be set dynamically + throw new Error( + `URL fragment not allowed in phishing warning page URL: '${normalizedUrl}'`, + ); + } + + return normalizedUrl; +} diff --git a/development/build/static.js b/development/build/static.js index c8eb7d6d5ef2..54bef8f980ad 100644 --- a/development/build/static.js +++ b/development/build/static.js @@ -155,46 +155,46 @@ function getCopyTargets( src: shouldIncludeSnow ? `./node_modules/@lavamoat/snow/snow.prod.js` : EMPTY_JS_FILE, - dest: `snow.js`, + dest: `scripts/snow.js`, }, { src: shouldIncludeSnow ? `./app/scripts/use-snow.js` : EMPTY_JS_FILE, - dest: `use-snow.js`, + dest: `scripts/use-snow.js`, }, { src: shouldIncludeLockdown ? getPathInsideNodeModules('ses', 'dist/lockdown.umd.min.js') : EMPTY_JS_FILE, - dest: `lockdown-install.js`, + dest: `scripts/lockdown-install.js`, }, { src: './app/scripts/init-globals.js', - dest: 'init-globals.js', + dest: 'scripts/init-globals.js', }, { src: './app/scripts/load-app.js', - dest: 'load-app.js', + dest: 'scripts/load-app.js', }, { src: shouldIncludeLockdown ? `./app/scripts/lockdown-run.js` : EMPTY_JS_FILE, - dest: `lockdown-run.js`, + dest: `scripts/lockdown-run.js`, }, { src: shouldIncludeLockdown ? `./app/scripts/lockdown-more.js` : EMPTY_JS_FILE, - dest: `lockdown-more.js`, + dest: `scripts/lockdown-more.js`, }, { src: getPathInsideNodeModules('@lavamoat/lavapack', 'src/runtime-cjs.js'), - dest: `runtime-cjs.js`, + dest: `scripts/runtime-cjs.js`, pattern: '', }, { src: getPathInsideNodeModules('@lavamoat/lavapack', 'src/runtime.js'), - dest: `runtime-lavamoat.js`, + dest: `scripts/runtime-lavamoat.js`, pattern: '', }, { diff --git a/development/build/utils.js b/development/build/utils.js index 07349c88db28..746290fb8e2b 100644 --- a/development/build/utils.js +++ b/development/build/utils.js @@ -5,14 +5,6 @@ const { capitalize } = require('lodash'); const { loadBuildTypesConfig } = require('../lib/build-type'); const { BUILD_TARGETS, ENVIRONMENT } = require('./constants'); -const BUILD_TYPES_TO_SVG_LOGO_PATH = { - main: './app/images/logo/metamask-fox.svg', - beta: './app/build-types/beta/images/logo/metamask-fox.svg', - flask: './app/build-types/flask/images/logo/metamask-fox.svg', - mmi: './app/build-types/mmi/images/logo/mmi-logo.svg', - desktop: './app/build-types/desktop/images/logo/metamask-fox.svg', -}; - /** * Returns whether the current build is a development build or not. * @@ -261,32 +253,6 @@ function getBuildName({ return name; } -/** - * Get the app ID for the current build. Should be valid reverse FQDN. - * - * @param {object} options - The build options. - * @param {string} options.buildType - The build type of the current build. - * @returns {string} The build app ID. - */ -function getBuildAppId({ buildType }) { - const baseDomain = 'io.metamask'; - return buildType === 'main' ? baseDomain : `${baseDomain}.${buildType}`; -} - -/** - * Get the image data uri for the svg icon for the current build. - * - * @param {object} options - The build options. - * @param {string} options.buildType - The build type of the current build. - * @returns {string} The image data uri for the icon. - */ -function getBuildIcon({ buildType }) { - const svgLogoPath = - BUILD_TYPES_TO_SVG_LOGO_PATH[buildType] || - BUILD_TYPES_TO_SVG_LOGO_PATH.main; - const svg = readFileSync(svgLogoPath, 'utf8'); - return `data:image/svg+xml,${encodeURIComponent(svg)}`; -} /** * Takes the given JavaScript file at `filePath` and replaces its contents with * a script that injects the original file contents into the document in which @@ -306,8 +272,6 @@ function makeSelfInjecting(filePath) { module.exports = { getBrowserVersionMap, getBuildName, - getBuildAppId, - getBuildIcon, getEnvironment, isDevBuild, isTestBuild, diff --git a/development/charts/flamegraph/chart/index.html b/development/charts/flamegraph/chart/index.html index 7afe9f9d0dcb..ce53076ad9e4 100644 --- a/development/charts/flamegraph/chart/index.html +++ b/development/charts/flamegraph/chart/index.html @@ -9,7 +9,7 @@ rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" /> - +