From 874799e443395c5e79875a31080ea83e4040d686 Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Tue, 16 Jun 2026 10:48:41 +0200 Subject: [PATCH 01/14] chore(smart-transactions-controller): move into packages/ + integrate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase C PR #12 — final move from `merged-packages/` into `packages/` plus the wiring needed for `yarn install`, `yarn workspace ... test`, and `yarn constraints` to pass: - `git mv merged-packages/smart-transactions-controller packages/`, removed the now-empty `merged-packages/` directory - Added the package to root `tsconfig.json` and `tsconfig.build.json` references (alphabetical) - `yarn.config.cjs`: - Added `nock: ['^14.0.0-beta.7']` to `ALLOWED_INCONSISTENT_DEPENDENCIES` so the package's `nock@14-beta` (kept intentionally — downgrading to root's `^13.3.1` breaks 22 tests) doesn't fail the cross-package consistency check. - Added `@metamask/smart-transactions-controller` to the license-exception list (it carries a ConsenSys non-commercial license that we did not relicense to MIT) - `.github/CODEOWNERS` + `teams.json`: registered ownership to `@MetaMask/transactions` / `team-transactions` - `jest.config.js`: lowered coverage thresholds to reflect the monorepo Jest config's wider `collectCoverageFrom` glob (`./src/**/*.ts` recursive, vs the standalone repo's top-level-only pattern). Actual achieved coverage is the same; the threshold rescales because subdirectory files now count. - `yarn constraints --fix` ran clean (just stripped the trailing period from `description`). Verified: - `yarn install` ✓ - `yarn workspace @metamask/smart-transactions-controller test` ✓ 196/196 pass - `yarn workspace @metamask/smart-transactions-controller build` ✓ - `yarn constraints` ✓ - `yarn lint:teams` ✓ No core package currently depends on `@metamask/smart-transactions-controller`, so no downstream version-bump or CHANGELOG updates are needed. Per Phase C of the package-migration-process-guide. --- .github/CODEOWNERS | 5 + .../CHANGELOG.md | 0 .../smart-transactions-controller/LICENSE | 0 .../smart-transactions-controller/README.md | 0 .../jest.config.js | 8 +- .../package.json | 2 +- .../setupJest.js | 0 ...nsactionsController-method-action-types.ts | 0 .../src/SmartTransactionsController.test.ts | 0 .../src/SmartTransactionsController.ts | 0 .../src/constants.ts | 0 .../src/featureFlags/feature-flags.test.ts | 0 .../src/featureFlags/feature-flags.ts | 0 .../src/featureFlags/index.ts | 0 .../src/featureFlags/validators.test.ts | 0 .../src/featureFlags/validators.ts | 0 .../src/index.ts | 0 .../src/selectors.test.ts | 0 .../src/selectors.ts | 0 .../src/types.ts | 0 .../src/utils.test.ts | 0 .../src/utils.ts | 0 .../tests/helpers.ts | 0 .../tsconfig.build.json | 0 .../tsconfig.json | 0 .../typedoc.json | 0 teams.json | 3 +- tsconfig.build.json | 3 + tsconfig.json | 3 + yarn.config.cjs | 2 + yarn.lock | 111 ++++++++++++++++++ 31 files changed, 131 insertions(+), 6 deletions(-) rename {merged-packages => packages}/smart-transactions-controller/CHANGELOG.md (100%) rename {merged-packages => packages}/smart-transactions-controller/LICENSE (100%) rename {merged-packages => packages}/smart-transactions-controller/README.md (100%) rename {merged-packages => packages}/smart-transactions-controller/jest.config.js (86%) rename {merged-packages => packages}/smart-transactions-controller/package.json (98%) rename {merged-packages => packages}/smart-transactions-controller/setupJest.js (100%) rename {merged-packages => packages}/smart-transactions-controller/src/SmartTransactionsController-method-action-types.ts (100%) rename {merged-packages => packages}/smart-transactions-controller/src/SmartTransactionsController.test.ts (100%) rename {merged-packages => packages}/smart-transactions-controller/src/SmartTransactionsController.ts (100%) rename {merged-packages => packages}/smart-transactions-controller/src/constants.ts (100%) rename {merged-packages => packages}/smart-transactions-controller/src/featureFlags/feature-flags.test.ts (100%) rename {merged-packages => packages}/smart-transactions-controller/src/featureFlags/feature-flags.ts (100%) rename {merged-packages => packages}/smart-transactions-controller/src/featureFlags/index.ts (100%) rename {merged-packages => packages}/smart-transactions-controller/src/featureFlags/validators.test.ts (100%) rename {merged-packages => packages}/smart-transactions-controller/src/featureFlags/validators.ts (100%) rename {merged-packages => packages}/smart-transactions-controller/src/index.ts (100%) rename {merged-packages => packages}/smart-transactions-controller/src/selectors.test.ts (100%) rename {merged-packages => packages}/smart-transactions-controller/src/selectors.ts (100%) rename {merged-packages => packages}/smart-transactions-controller/src/types.ts (100%) rename {merged-packages => packages}/smart-transactions-controller/src/utils.test.ts (100%) rename {merged-packages => packages}/smart-transactions-controller/src/utils.ts (100%) rename {merged-packages => packages}/smart-transactions-controller/tests/helpers.ts (100%) rename {merged-packages => packages}/smart-transactions-controller/tsconfig.build.json (100%) rename {merged-packages => packages}/smart-transactions-controller/tsconfig.json (100%) rename {merged-packages => packages}/smart-transactions-controller/typedoc.json (100%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 7625784448..f5c519f5b9 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -36,6 +36,9 @@ /packages/transaction-pay-controller @MetaMask/confirmations /packages/user-operation-controller @MetaMask/confirmations +## Transactions Team +/packages/smart-transactions-controller @MetaMask/transactions + ## Delegation Team /packages/delegation-controller @MetaMask/delegation /packages/gator-permissions-controller @MetaMask/delegation @@ -213,6 +216,8 @@ /packages/selected-network-controller/CHANGELOG.md @MetaMask/wallet-integrations @MetaMask/core-platform /packages/signature-controller/package.json @MetaMask/confirmations @MetaMask/core-platform /packages/signature-controller/CHANGELOG.md @MetaMask/confirmations @MetaMask/core-platform +/packages/smart-transactions-controller/package.json @MetaMask/transactions @MetaMask/core-platform +/packages/smart-transactions-controller/CHANGELOG.md @MetaMask/transactions @MetaMask/core-platform /packages/transaction-controller/package.json @MetaMask/confirmations @MetaMask/core-platform /packages/transaction-controller/CHANGELOG.md @MetaMask/confirmations @MetaMask/core-platform /packages/transaction-pay-controller/package.json @MetaMask/confirmations @MetaMask/core-platform diff --git a/merged-packages/smart-transactions-controller/CHANGELOG.md b/packages/smart-transactions-controller/CHANGELOG.md similarity index 100% rename from merged-packages/smart-transactions-controller/CHANGELOG.md rename to packages/smart-transactions-controller/CHANGELOG.md diff --git a/merged-packages/smart-transactions-controller/LICENSE b/packages/smart-transactions-controller/LICENSE similarity index 100% rename from merged-packages/smart-transactions-controller/LICENSE rename to packages/smart-transactions-controller/LICENSE diff --git a/merged-packages/smart-transactions-controller/README.md b/packages/smart-transactions-controller/README.md similarity index 100% rename from merged-packages/smart-transactions-controller/README.md rename to packages/smart-transactions-controller/README.md diff --git a/merged-packages/smart-transactions-controller/jest.config.js b/packages/smart-transactions-controller/jest.config.js similarity index 86% rename from merged-packages/smart-transactions-controller/jest.config.js rename to packages/smart-transactions-controller/jest.config.js index 06c4cd8d64..587b381c80 100644 --- a/merged-packages/smart-transactions-controller/jest.config.js +++ b/packages/smart-transactions-controller/jest.config.js @@ -17,10 +17,10 @@ module.exports = merge(baseConfig, { // An object that configures minimum threshold enforcement for coverage results coverageThreshold: { global: { - branches: 74.65, - functions: 88.18, - lines: 92.33, - statements: 91.89, + branches: 79, + functions: 91, + lines: 87, + statements: 87, }, }, diff --git a/merged-packages/smart-transactions-controller/package.json b/packages/smart-transactions-controller/package.json similarity index 98% rename from merged-packages/smart-transactions-controller/package.json rename to packages/smart-transactions-controller/package.json index b8a2e3bb6f..4410fc6e65 100644 --- a/merged-packages/smart-transactions-controller/package.json +++ b/packages/smart-transactions-controller/package.json @@ -1,7 +1,7 @@ { "name": "@metamask/smart-transactions-controller", "version": "24.2.1", - "description": "Improves success rates for swaps by trialing transactions privately and finding minimum fees.", + "description": "Improves success rates for swaps by trialing transactions privately and finding minimum fees", "keywords": [ "Ethereum", "MetaMask" diff --git a/merged-packages/smart-transactions-controller/setupJest.js b/packages/smart-transactions-controller/setupJest.js similarity index 100% rename from merged-packages/smart-transactions-controller/setupJest.js rename to packages/smart-transactions-controller/setupJest.js diff --git a/merged-packages/smart-transactions-controller/src/SmartTransactionsController-method-action-types.ts b/packages/smart-transactions-controller/src/SmartTransactionsController-method-action-types.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/SmartTransactionsController-method-action-types.ts rename to packages/smart-transactions-controller/src/SmartTransactionsController-method-action-types.ts diff --git a/merged-packages/smart-transactions-controller/src/SmartTransactionsController.test.ts b/packages/smart-transactions-controller/src/SmartTransactionsController.test.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/SmartTransactionsController.test.ts rename to packages/smart-transactions-controller/src/SmartTransactionsController.test.ts diff --git a/merged-packages/smart-transactions-controller/src/SmartTransactionsController.ts b/packages/smart-transactions-controller/src/SmartTransactionsController.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/SmartTransactionsController.ts rename to packages/smart-transactions-controller/src/SmartTransactionsController.ts diff --git a/merged-packages/smart-transactions-controller/src/constants.ts b/packages/smart-transactions-controller/src/constants.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/constants.ts rename to packages/smart-transactions-controller/src/constants.ts diff --git a/merged-packages/smart-transactions-controller/src/featureFlags/feature-flags.test.ts b/packages/smart-transactions-controller/src/featureFlags/feature-flags.test.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/featureFlags/feature-flags.test.ts rename to packages/smart-transactions-controller/src/featureFlags/feature-flags.test.ts diff --git a/merged-packages/smart-transactions-controller/src/featureFlags/feature-flags.ts b/packages/smart-transactions-controller/src/featureFlags/feature-flags.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/featureFlags/feature-flags.ts rename to packages/smart-transactions-controller/src/featureFlags/feature-flags.ts diff --git a/merged-packages/smart-transactions-controller/src/featureFlags/index.ts b/packages/smart-transactions-controller/src/featureFlags/index.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/featureFlags/index.ts rename to packages/smart-transactions-controller/src/featureFlags/index.ts diff --git a/merged-packages/smart-transactions-controller/src/featureFlags/validators.test.ts b/packages/smart-transactions-controller/src/featureFlags/validators.test.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/featureFlags/validators.test.ts rename to packages/smart-transactions-controller/src/featureFlags/validators.test.ts diff --git a/merged-packages/smart-transactions-controller/src/featureFlags/validators.ts b/packages/smart-transactions-controller/src/featureFlags/validators.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/featureFlags/validators.ts rename to packages/smart-transactions-controller/src/featureFlags/validators.ts diff --git a/merged-packages/smart-transactions-controller/src/index.ts b/packages/smart-transactions-controller/src/index.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/index.ts rename to packages/smart-transactions-controller/src/index.ts diff --git a/merged-packages/smart-transactions-controller/src/selectors.test.ts b/packages/smart-transactions-controller/src/selectors.test.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/selectors.test.ts rename to packages/smart-transactions-controller/src/selectors.test.ts diff --git a/merged-packages/smart-transactions-controller/src/selectors.ts b/packages/smart-transactions-controller/src/selectors.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/selectors.ts rename to packages/smart-transactions-controller/src/selectors.ts diff --git a/merged-packages/smart-transactions-controller/src/types.ts b/packages/smart-transactions-controller/src/types.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/types.ts rename to packages/smart-transactions-controller/src/types.ts diff --git a/merged-packages/smart-transactions-controller/src/utils.test.ts b/packages/smart-transactions-controller/src/utils.test.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/utils.test.ts rename to packages/smart-transactions-controller/src/utils.test.ts diff --git a/merged-packages/smart-transactions-controller/src/utils.ts b/packages/smart-transactions-controller/src/utils.ts similarity index 100% rename from merged-packages/smart-transactions-controller/src/utils.ts rename to packages/smart-transactions-controller/src/utils.ts diff --git a/merged-packages/smart-transactions-controller/tests/helpers.ts b/packages/smart-transactions-controller/tests/helpers.ts similarity index 100% rename from merged-packages/smart-transactions-controller/tests/helpers.ts rename to packages/smart-transactions-controller/tests/helpers.ts diff --git a/merged-packages/smart-transactions-controller/tsconfig.build.json b/packages/smart-transactions-controller/tsconfig.build.json similarity index 100% rename from merged-packages/smart-transactions-controller/tsconfig.build.json rename to packages/smart-transactions-controller/tsconfig.build.json diff --git a/merged-packages/smart-transactions-controller/tsconfig.json b/packages/smart-transactions-controller/tsconfig.json similarity index 100% rename from merged-packages/smart-transactions-controller/tsconfig.json rename to packages/smart-transactions-controller/tsconfig.json diff --git a/merged-packages/smart-transactions-controller/typedoc.json b/packages/smart-transactions-controller/typedoc.json similarity index 100% rename from merged-packages/smart-transactions-controller/typedoc.json rename to packages/smart-transactions-controller/typedoc.json diff --git a/teams.json b/teams.json index 571fe2d410..f16045176a 100644 --- a/teams.json +++ b/teams.json @@ -83,5 +83,6 @@ "metamask/config-registry-controller": "team-networks", "metamask/money-account-controller": "team-accounts-framework", "metamask/money-account-upgrade-controller": "team-earn", - "metamask/snap-account-service": "team-accounts-framework" + "metamask/snap-account-service": "team-accounts-framework", + "metamask/smart-transactions-controller": "team-transactions" } diff --git a/tsconfig.build.json b/tsconfig.build.json index 00ea5a9aec..89c3707a45 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -235,6 +235,9 @@ { "path": "./packages/signature-controller/tsconfig.build.json" }, + { + "path": "./packages/smart-transactions-controller/tsconfig.build.json" + }, { "path": "./packages/snap-account-service/tsconfig.build.json" }, diff --git a/tsconfig.json b/tsconfig.json index 1bdf352a2f..c67aa45d06 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -227,6 +227,9 @@ { "path": "./packages/signature-controller" }, + { + "path": "./packages/smart-transactions-controller" + }, { "path": "./packages/snap-account-service" }, diff --git a/yarn.config.cjs b/yarn.config.cjs index c73d56a0dc..f692ef9d06 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -25,6 +25,7 @@ const { inspect } = require('util'); */ const ALLOWED_INCONSISTENT_DEPENDENCIES = { '@tanstack/query-core': ['^4.43.0'], + nock: ['^14.0.0-beta.7'], }; /** @@ -534,6 +535,7 @@ async function expectWorkspaceLicense(workspace) { '@metamask/permission-log-controller', '@metamask/eth-json-rpc-middleware', '@metamask/eth-json-rpc-provider', + '@metamask/smart-transactions-controller', ].includes(workspace.manifest.name) ) { expectWorkspaceField(workspace, 'license'); diff --git a/yarn.lock b/yarn.lock index a22201eb7e..67ff09d1a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8338,6 +8338,47 @@ __metadata: languageName: node linkType: hard +"@metamask/smart-transactions-controller@workspace:packages/smart-transactions-controller": + version: 0.0.0-use.local + resolution: "@metamask/smart-transactions-controller@workspace:packages/smart-transactions-controller" + dependencies: + "@babel/runtime": "npm:^7.23.9" + "@ethereumjs/tx": "npm:^5.4.0" + "@ethereumjs/util": "npm:^9.1.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.8.0" + "@ethersproject/transactions": "npm:^5.7.0" + "@metamask/auto-changelog": "npm:^6.1.0" + "@metamask/base-controller": "npm:^9.1.0" + "@metamask/controller-utils": "npm:^12.2.0" + "@metamask/eth-json-rpc-provider": "npm:^6.0.1" + "@metamask/eth-query": "npm:^4.0.0" + "@metamask/gas-fee-controller": "npm:^26.2.2" + "@metamask/json-rpc-engine": "npm:^10.5.0" + "@metamask/messenger": "npm:^1.2.0" + "@metamask/network-controller": "npm:^32.0.0" + "@metamask/polling-controller": "npm:^16.0.6" + "@metamask/profile-sync-controller": "npm:^28.2.0" + "@metamask/remote-feature-flag-controller": "npm:^4.2.2" + "@metamask/superstruct": "npm:^3.1.0" + "@metamask/transaction-controller": "npm:^68.0.0" + "@metamask/utils": "npm:^11.11.0" + "@ts-bridge/cli": "npm:^0.6.4" + bignumber.js: "npm:^9.1.2" + deepmerge: "npm:^4.2.2" + fast-json-patch: "npm:^3.1.1" + jest: "npm:^29.7.0" + lodash: "npm:^4.17.21" + nock: "npm:^14.0.0-beta.7" + reselect: "npm:^5.1.1" + ts-jest: "npm:^29.2.5" + tsx: "npm:^4.20.5" + typedoc: "npm:^0.25.13" + typedoc-plugin-missing-exports: "npm:^2.0.0" + typescript: "npm:~5.3.3" + languageName: unknown + linkType: soft + "@metamask/snap-account-service@npm:^0.3.1, @metamask/snap-account-service@workspace:packages/snap-account-service": version: 0.0.0-use.local resolution: "@metamask/snap-account-service@workspace:packages/snap-account-service" @@ -8831,6 +8872,20 @@ __metadata: languageName: unknown linkType: soft +"@mswjs/interceptors@npm:^0.41.0": + version: 0.41.9 + resolution: "@mswjs/interceptors@npm:0.41.9" + dependencies: + "@open-draft/deferred-promise": "npm:^2.2.0" + "@open-draft/logger": "npm:^0.3.0" + "@open-draft/until": "npm:^2.0.0" + is-node-process: "npm:^1.2.0" + outvariant: "npm:^1.4.3" + strict-event-emitter: "npm:^0.5.1" + checksum: 10/aed6a80913d345e37a0cd58f1318736d765d5295cefae35ea104f6bfc5b224f96eb71635593f470579c1251efb1d18ad426e884ba01f85cfe3ff135e3b82e7a2 + languageName: node + linkType: hard + "@myx-trade/sdk@npm:^0.1.265": version: 0.1.265 resolution: "@myx-trade/sdk@npm:0.1.265" @@ -9392,6 +9447,30 @@ __metadata: languageName: node linkType: hard +"@open-draft/deferred-promise@npm:^2.2.0": + version: 2.2.0 + resolution: "@open-draft/deferred-promise@npm:2.2.0" + checksum: 10/bc3bb1668a555bb87b33383cafcf207d9561e17d2ca0d9e61b7ce88e82b66e36a333d3676c1d39eb5848022c03c8145331fcdc828ba297f88cb1de9c5cef6c19 + languageName: node + linkType: hard + +"@open-draft/logger@npm:^0.3.0": + version: 0.3.0 + resolution: "@open-draft/logger@npm:0.3.0" + dependencies: + is-node-process: "npm:^1.2.0" + outvariant: "npm:^1.4.0" + checksum: 10/7a280f170bcd4e91d3eedbefe628efd10c3bd06dd2461d06a7fdbced89ef457a38785847f88cc630fb4fd7dfa176d6f77aed17e5a9b08000baff647433b5ff78 + languageName: node + linkType: hard + +"@open-draft/until@npm:^2.0.0": + version: 2.1.0 + resolution: "@open-draft/until@npm:2.1.0" + checksum: 10/622be42950afc8e89715d0fd6d56cbdcd13e36625e23b174bd3d9f06f80e25f9adf75d6698af93bca1e1bf465b9ce00ec05214a12189b671fb9da0f58215b6f4 + languageName: node + linkType: hard + "@open-rpc/meta-schema@npm:^1.14.6, @open-rpc/meta-schema@npm:^1.14.9": version: 1.14.9 resolution: "@open-rpc/meta-schema@npm:1.14.9" @@ -17244,6 +17323,13 @@ __metadata: languageName: node linkType: hard +"is-node-process@npm:^1.2.0": + version: 1.2.0 + resolution: "is-node-process@npm:1.2.0" + checksum: 10/930765cdc6d81ab8f1bbecbea4a8d35c7c6d88a3ff61f3630e0fc7f22d624d7661c1df05c58547d0eb6a639dfa9304682c8e342c4113a6ed51472b704cee2928 + languageName: node + linkType: hard + "is-npm@npm:^6.0.0": version: 6.1.0 resolution: "is-npm@npm:6.1.0" @@ -19909,6 +19995,17 @@ __metadata: languageName: node linkType: hard +"nock@npm:^14.0.0-beta.7": + version: 14.0.15 + resolution: "nock@npm:14.0.15" + dependencies: + "@mswjs/interceptors": "npm:^0.41.0" + json-stringify-safe: "npm:^5.0.1" + propagate: "npm:^2.0.0" + checksum: 10/e51737b43e51dc642e339f36c2125b18ef262492d4b8ba5ca0aaeff983fc29c42a02aeb5e19b80940f7dbde59a413ae7298ef1f6c11fe6d7dbe54d7f3a558d83 + languageName: node + linkType: hard + "node-addon-api@npm:^2.0.0": version: 2.0.2 resolution: "node-addon-api@npm:2.0.2" @@ -20268,6 +20365,13 @@ __metadata: languageName: node linkType: hard +"outvariant@npm:^1.4.0, outvariant@npm:^1.4.3": + version: 1.4.3 + resolution: "outvariant@npm:1.4.3" + checksum: 10/3a7582745850cb344d49641867a4c080858c54f4091afd91b9c0765ba6e471c2bc841348f0fff344845ddd0a4db42fd5d68c6f7ebaf32d4b676a3a9987b2488a + languageName: node + linkType: hard + "ox@npm:0.14.20": version: 0.14.20 resolution: "ox@npm:0.14.20" @@ -23599,6 +23703,13 @@ __metadata: languageName: node linkType: hard +"strict-event-emitter@npm:^0.5.1": + version: 0.5.1 + resolution: "strict-event-emitter@npm:0.5.1" + checksum: 10/25c84d88be85940d3547db665b871bfecea4ea0bedfeb22aae8db48126820cfb2b0bc2fba695392592a09b1aa36b686d6eede499e1ecd151593c03fe5a50d512 + languageName: node + linkType: hard + "string-length@npm:^4.0.1": version: 4.0.2 resolution: "string-length@npm:4.0.2" From 504270f1a8d0fdbebdafc516b329bac7fe756f8e Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Tue, 16 Jun 2026 11:01:49 +0200 Subject: [PATCH 02/14] chore: update README with smart-transactions-controller in package list + dep graph --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index f4a317c926..f6d6e6cc73 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,7 @@ yarn skills --reset # clear saved local selection - [`@metamask/selected-network-controller`](packages/selected-network-controller) - [`@metamask/shield-controller`](packages/shield-controller) - [`@metamask/signature-controller`](packages/signature-controller) +- [`@metamask/smart-transactions-controller`](packages/smart-transactions-controller) - [`@metamask/snap-account-service`](packages/snap-account-service) - [`@metamask/social-controllers`](packages/social-controllers) - [`@metamask/storage-service`](packages/storage-service) @@ -210,6 +211,7 @@ linkStyle default opacity:0.5 selected_network_controller(["@metamask/selected-network-controller"]); shield_controller(["@metamask/shield-controller"]); signature_controller(["@metamask/signature-controller"]); + smart_transactions_controller(["@metamask/smart-transactions-controller"]); snap_account_service(["@metamask/snap-account-service"]); social_controllers(["@metamask/social-controllers"]); storage_service(["@metamask/storage-service"]); @@ -537,6 +539,17 @@ linkStyle default opacity:0.5 signature_controller --> logging_controller; signature_controller --> messenger; signature_controller --> network_controller; + smart_transactions_controller --> base_controller; + smart_transactions_controller --> controller_utils; + smart_transactions_controller --> eth_json_rpc_provider; + smart_transactions_controller --> messenger; + smart_transactions_controller --> network_controller; + smart_transactions_controller --> polling_controller; + smart_transactions_controller --> profile_sync_controller; + smart_transactions_controller --> remote_feature_flag_controller; + smart_transactions_controller --> transaction_controller; + smart_transactions_controller --> gas_fee_controller; + smart_transactions_controller --> json_rpc_engine; snap_account_service --> account_tree_controller; snap_account_service --> keyring_controller; snap_account_service --> messenger; From ddea2d4ec9ef0db9cbde0a979a1a7f0255c7f183 Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Tue, 16 Jun 2026 11:09:49 +0200 Subject: [PATCH 03/14] chore(smart-transactions-controller): drop unused deps + align nock to monorepo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Removed 4 unused deps flagged by knip: - dependencies: @ethereumjs/tx, @ethereumjs/util, fast-json-patch - devDependencies: @metamask/gas-fee-controller - Aligned nock from ^14.0.0-beta.7 to ^13.3.1 to match the rest of the monorepo. In the monorepo's jest.config.packages.js setup the v14-beta mock incompatibilities we saw in the source-repo context no longer surface — all 196 tests pass on nock 13. - Removed the now-unneeded `nock` entry from `ALLOWED_INCONSISTENT_DEPENDENCIES` in yarn.config.cjs. - Restored the source-repo's original Jest coverage thresholds (branches 74.65, functions 88.18, lines 92.33, statements 91.89) since actual coverage on nock 13 (95.3% statements, 95.3% lines) is comfortably above them. --- .../jest.config.js | 8 +- .../package.json | 6 +- yarn.config.cjs | 1 - yarn.lock | 76 +------------------ 4 files changed, 6 insertions(+), 85 deletions(-) diff --git a/packages/smart-transactions-controller/jest.config.js b/packages/smart-transactions-controller/jest.config.js index 587b381c80..06c4cd8d64 100644 --- a/packages/smart-transactions-controller/jest.config.js +++ b/packages/smart-transactions-controller/jest.config.js @@ -17,10 +17,10 @@ module.exports = merge(baseConfig, { // An object that configures minimum threshold enforcement for coverage results coverageThreshold: { global: { - branches: 79, - functions: 91, - lines: 87, - statements: 87, + branches: 74.65, + functions: 88.18, + lines: 92.33, + statements: 91.89, }, }, diff --git a/packages/smart-transactions-controller/package.json b/packages/smart-transactions-controller/package.json index 4410fc6e65..0784c95357 100644 --- a/packages/smart-transactions-controller/package.json +++ b/packages/smart-transactions-controller/package.json @@ -50,8 +50,6 @@ }, "dependencies": { "@babel/runtime": "^7.23.9", - "@ethereumjs/tx": "^5.4.0", - "@ethereumjs/util": "^9.1.0", "@ethersproject/bytes": "^5.7.0", "@ethersproject/keccak256": "^5.8.0", "@ethersproject/transactions": "^5.7.0", @@ -68,18 +66,16 @@ "@metamask/transaction-controller": "^68.0.0", "@metamask/utils": "^11.11.0", "bignumber.js": "^9.1.2", - "fast-json-patch": "^3.1.1", "lodash": "^4.17.21", "reselect": "^5.1.1" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@metamask/gas-fee-controller": "^26.2.2", "@metamask/json-rpc-engine": "^10.5.0", "@ts-bridge/cli": "^0.6.4", "deepmerge": "^4.2.2", "jest": "^29.7.0", - "nock": "^14.0.0-beta.7", + "nock": "^13.3.1", "ts-jest": "^29.2.5", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/yarn.config.cjs b/yarn.config.cjs index f692ef9d06..378edbeb71 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -25,7 +25,6 @@ const { inspect } = require('util'); */ const ALLOWED_INCONSISTENT_DEPENDENCIES = { '@tanstack/query-core': ['^4.43.0'], - nock: ['^14.0.0-beta.7'], }; /** diff --git a/yarn.lock b/yarn.lock index 67ff09d1a0..d4617f39bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8343,8 +8343,6 @@ __metadata: resolution: "@metamask/smart-transactions-controller@workspace:packages/smart-transactions-controller" dependencies: "@babel/runtime": "npm:^7.23.9" - "@ethereumjs/tx": "npm:^5.4.0" - "@ethereumjs/util": "npm:^9.1.0" "@ethersproject/bytes": "npm:^5.7.0" "@ethersproject/keccak256": "npm:^5.8.0" "@ethersproject/transactions": "npm:^5.7.0" @@ -8353,7 +8351,6 @@ __metadata: "@metamask/controller-utils": "npm:^12.2.0" "@metamask/eth-json-rpc-provider": "npm:^6.0.1" "@metamask/eth-query": "npm:^4.0.0" - "@metamask/gas-fee-controller": "npm:^26.2.2" "@metamask/json-rpc-engine": "npm:^10.5.0" "@metamask/messenger": "npm:^1.2.0" "@metamask/network-controller": "npm:^32.0.0" @@ -8366,10 +8363,9 @@ __metadata: "@ts-bridge/cli": "npm:^0.6.4" bignumber.js: "npm:^9.1.2" deepmerge: "npm:^4.2.2" - fast-json-patch: "npm:^3.1.1" jest: "npm:^29.7.0" lodash: "npm:^4.17.21" - nock: "npm:^14.0.0-beta.7" + nock: "npm:^13.3.1" reselect: "npm:^5.1.1" ts-jest: "npm:^29.2.5" tsx: "npm:^4.20.5" @@ -8872,20 +8868,6 @@ __metadata: languageName: unknown linkType: soft -"@mswjs/interceptors@npm:^0.41.0": - version: 0.41.9 - resolution: "@mswjs/interceptors@npm:0.41.9" - dependencies: - "@open-draft/deferred-promise": "npm:^2.2.0" - "@open-draft/logger": "npm:^0.3.0" - "@open-draft/until": "npm:^2.0.0" - is-node-process: "npm:^1.2.0" - outvariant: "npm:^1.4.3" - strict-event-emitter: "npm:^0.5.1" - checksum: 10/aed6a80913d345e37a0cd58f1318736d765d5295cefae35ea104f6bfc5b224f96eb71635593f470579c1251efb1d18ad426e884ba01f85cfe3ff135e3b82e7a2 - languageName: node - linkType: hard - "@myx-trade/sdk@npm:^0.1.265": version: 0.1.265 resolution: "@myx-trade/sdk@npm:0.1.265" @@ -9447,30 +9429,6 @@ __metadata: languageName: node linkType: hard -"@open-draft/deferred-promise@npm:^2.2.0": - version: 2.2.0 - resolution: "@open-draft/deferred-promise@npm:2.2.0" - checksum: 10/bc3bb1668a555bb87b33383cafcf207d9561e17d2ca0d9e61b7ce88e82b66e36a333d3676c1d39eb5848022c03c8145331fcdc828ba297f88cb1de9c5cef6c19 - languageName: node - linkType: hard - -"@open-draft/logger@npm:^0.3.0": - version: 0.3.0 - resolution: "@open-draft/logger@npm:0.3.0" - dependencies: - is-node-process: "npm:^1.2.0" - outvariant: "npm:^1.4.0" - checksum: 10/7a280f170bcd4e91d3eedbefe628efd10c3bd06dd2461d06a7fdbced89ef457a38785847f88cc630fb4fd7dfa176d6f77aed17e5a9b08000baff647433b5ff78 - languageName: node - linkType: hard - -"@open-draft/until@npm:^2.0.0": - version: 2.1.0 - resolution: "@open-draft/until@npm:2.1.0" - checksum: 10/622be42950afc8e89715d0fd6d56cbdcd13e36625e23b174bd3d9f06f80e25f9adf75d6698af93bca1e1bf465b9ce00ec05214a12189b671fb9da0f58215b6f4 - languageName: node - linkType: hard - "@open-rpc/meta-schema@npm:^1.14.6, @open-rpc/meta-schema@npm:^1.14.9": version: 1.14.9 resolution: "@open-rpc/meta-schema@npm:1.14.9" @@ -17323,13 +17281,6 @@ __metadata: languageName: node linkType: hard -"is-node-process@npm:^1.2.0": - version: 1.2.0 - resolution: "is-node-process@npm:1.2.0" - checksum: 10/930765cdc6d81ab8f1bbecbea4a8d35c7c6d88a3ff61f3630e0fc7f22d624d7661c1df05c58547d0eb6a639dfa9304682c8e342c4113a6ed51472b704cee2928 - languageName: node - linkType: hard - "is-npm@npm:^6.0.0": version: 6.1.0 resolution: "is-npm@npm:6.1.0" @@ -19995,17 +19946,6 @@ __metadata: languageName: node linkType: hard -"nock@npm:^14.0.0-beta.7": - version: 14.0.15 - resolution: "nock@npm:14.0.15" - dependencies: - "@mswjs/interceptors": "npm:^0.41.0" - json-stringify-safe: "npm:^5.0.1" - propagate: "npm:^2.0.0" - checksum: 10/e51737b43e51dc642e339f36c2125b18ef262492d4b8ba5ca0aaeff983fc29c42a02aeb5e19b80940f7dbde59a413ae7298ef1f6c11fe6d7dbe54d7f3a558d83 - languageName: node - linkType: hard - "node-addon-api@npm:^2.0.0": version: 2.0.2 resolution: "node-addon-api@npm:2.0.2" @@ -20365,13 +20305,6 @@ __metadata: languageName: node linkType: hard -"outvariant@npm:^1.4.0, outvariant@npm:^1.4.3": - version: 1.4.3 - resolution: "outvariant@npm:1.4.3" - checksum: 10/3a7582745850cb344d49641867a4c080858c54f4091afd91b9c0765ba6e471c2bc841348f0fff344845ddd0a4db42fd5d68c6f7ebaf32d4b676a3a9987b2488a - languageName: node - linkType: hard - "ox@npm:0.14.20": version: 0.14.20 resolution: "ox@npm:0.14.20" @@ -23703,13 +23636,6 @@ __metadata: languageName: node linkType: hard -"strict-event-emitter@npm:^0.5.1": - version: 0.5.1 - resolution: "strict-event-emitter@npm:0.5.1" - checksum: 10/25c84d88be85940d3547db665b871bfecea4ea0bedfeb22aae8db48126820cfb2b0bc2fba695392592a09b1aa36b686d6eede499e1ecd151593c03fe5a50d512 - languageName: node - linkType: hard - "string-length@npm:^4.0.1": version: 4.0.2 resolution: "string-length@npm:4.0.2" From 7ea994afca1d95da7365b8dfac50e7d0e45c423f Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Tue, 16 Jun 2026 11:13:21 +0200 Subject: [PATCH 04/14] chore(smart-transactions-controller): drop setupJest.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Core's root `tests/setup.ts` already clears Node's native fetch/Headers/Request/Response and loads `isomorphic-fetch` — a superset of what the package's `setupJest.js` did. Dropping the local setup file and the `setupFiles` override in `jest.config.js` so the package just inherits the root setup. Tests still pass (196/196, ~95% coverage). --- packages/smart-transactions-controller/jest.config.js | 2 -- packages/smart-transactions-controller/setupJest.js | 2 -- 2 files changed, 4 deletions(-) delete mode 100644 packages/smart-transactions-controller/setupJest.js diff --git a/packages/smart-transactions-controller/jest.config.js b/packages/smart-transactions-controller/jest.config.js index 06c4cd8d64..0fa1759b79 100644 --- a/packages/smart-transactions-controller/jest.config.js +++ b/packages/smart-transactions-controller/jest.config.js @@ -24,7 +24,5 @@ module.exports = merge(baseConfig, { }, }, - setupFiles: ['./setupJest.js'], - testTimeout: 2500, }); diff --git a/packages/smart-transactions-controller/setupJest.js b/packages/smart-transactions-controller/setupJest.js deleted file mode 100644 index 19c0b2eae9..0000000000 --- a/packages/smart-transactions-controller/setupJest.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line import-x/no-unassigned-import -require('isomorphic-fetch'); From 0abdcfc0922344a56b740ade28d9a5eea29fe6e9 Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Tue, 16 Jun 2026 11:14:17 +0200 Subject: [PATCH 05/14] chore(smart-transactions-controller): drop testTimeout override Falls back to Jest's default (5000ms), which is more generous than the previous 2500ms. No test relies on the tighter limit; 196/196 still pass. --- packages/smart-transactions-controller/jest.config.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/smart-transactions-controller/jest.config.js b/packages/smart-transactions-controller/jest.config.js index 0fa1759b79..f4ec849294 100644 --- a/packages/smart-transactions-controller/jest.config.js +++ b/packages/smart-transactions-controller/jest.config.js @@ -23,6 +23,4 @@ module.exports = merge(baseConfig, { statements: 91.89, }, }, - - testTimeout: 2500, }); From 0c3df4a7ae3eadceec23eec766b009ca8bee49cd Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Tue, 16 Jun 2026 11:17:14 +0200 Subject: [PATCH 06/14] chore: drop gas_fee_controller edge from smart-transactions-controller in README dep graph --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index f6d6e6cc73..80ff31cbae 100644 --- a/README.md +++ b/README.md @@ -548,7 +548,6 @@ linkStyle default opacity:0.5 smart_transactions_controller --> profile_sync_controller; smart_transactions_controller --> remote_feature_flag_controller; smart_transactions_controller --> transaction_controller; - smart_transactions_controller --> gas_fee_controller; smart_transactions_controller --> json_rpc_engine; snap_account_service --> account_tree_controller; snap_account_service --> keyring_controller; From 1f51baf1124f932d319cb21fd368b857f57e8938 Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Tue, 16 Jun 2026 11:20:20 +0200 Subject: [PATCH 07/14] chore(smart-transactions-controller): apply oxfmt formatting fixes --- .../smart-transactions-controller/package.json | 18 +++++++++--------- .../src/SmartTransactionsController.test.ts | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/smart-transactions-controller/package.json b/packages/smart-transactions-controller/package.json index 0784c95357..4d23086f8d 100644 --- a/packages/smart-transactions-controller/package.json +++ b/packages/smart-transactions-controller/package.json @@ -15,7 +15,12 @@ "type": "git", "url": "https://github.com/MetaMask/core.git" }, + "files": [ + "dist/" + ], "sideEffects": false, + "main": "./dist/index.cjs", + "types": "./dist/index.d.cts", "exports": { ".": { "import": { @@ -29,11 +34,10 @@ }, "./package.json": "./package.json" }, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", - "files": [ - "dist/" - ], + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + }, "scripts": { "build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references", "build:all": "ts-bridge --project tsconfig.build.json --verbose --clean", @@ -82,10 +86,6 @@ "typedoc-plugin-missing-exports": "^2.0.0", "typescript": "~5.3.3" }, - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org/" - }, "engines": { "node": "^18.18 || >=20" } diff --git a/packages/smart-transactions-controller/src/SmartTransactionsController.test.ts b/packages/smart-transactions-controller/src/SmartTransactionsController.test.ts index 0ec5a462ee..8b2b2fdf5c 100644 --- a/packages/smart-transactions-controller/src/SmartTransactionsController.test.ts +++ b/packages/smart-transactions-controller/src/SmartTransactionsController.test.ts @@ -26,6 +26,7 @@ import type { Hex } from '@metamask/utils'; import nock from 'nock'; import packageJson from '../package.json'; +import { advanceTime, flushPromises, getFakeProvider } from '../tests/helpers'; import { API_BASE_URL, SENTINEL_API_BASE_URL_MAP, @@ -40,7 +41,6 @@ import type { SmartTransactionsControllerMessenger } from './SmartTransactionsCo import type { SmartTransaction, UnsignedTransaction } from './types'; import { SmartTransactionStatuses, ClientId } from './types'; import * as utils from './utils'; -import { advanceTime, flushPromises, getFakeProvider } from '../tests/helpers'; type AllActions = MessengerActions; From 8cdc45976bcf6d4240eb490f34e9e474eacea939 Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Tue, 16 Jun 2026 11:22:50 +0200 Subject: [PATCH 08/14] chore(smart-transactions-controller): fix CHANGELOG for auto-changelog v6 validation - Wrap the migration entry in a `### Changed` section (the migration entry was bare under `## [Unreleased]`; auto-changelog v6 requires every change to live under a category). - Add `[Unreleased]: https://github.com/MetaMask/core/` link reference (auto-changelog v6 requires every referenced version, including Unreleased, to have a link definition). --- packages/smart-transactions-controller/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/smart-transactions-controller/CHANGELOG.md b/packages/smart-transactions-controller/CHANGELOG.md index 21f7596c35..458ddc9281 100644 --- a/packages/smart-transactions-controller/CHANGELOG.md +++ b/packages/smart-transactions-controller/CHANGELOG.md @@ -7,4 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + - This package was migrated to the core monorepo from [`MetaMask/smart-transactions-controller`](https://github.com/MetaMask/smart-transactions-controller). For the changelog up to and including v24.2.1 (the last release from the original repo), see the [historical changelog](https://github.com/MetaMask/smart-transactions-controller/blob/v24.2.1/CHANGELOG.md). + +[Unreleased]: https://github.com/MetaMask/core/ From e96b7656fc8e650ca5858d2e088064b91255c8ef Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Tue, 16 Jun 2026 11:25:38 +0200 Subject: [PATCH 09/14] chore(smart-transactions-controller): document migration + dropped deps in CHANGELOG - Link the migration entry to this PR. - Add a `Removed` entry for the three runtime deps dropped as unused (`@ethereumjs/tx`, `@ethereumjs/util`, `fast-json-patch`) so the consumer-facing dependency-surface change is recorded. --- packages/smart-transactions-controller/CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/smart-transactions-controller/CHANGELOG.md b/packages/smart-transactions-controller/CHANGELOG.md index 458ddc9281..b35ba15625 100644 --- a/packages/smart-transactions-controller/CHANGELOG.md +++ b/packages/smart-transactions-controller/CHANGELOG.md @@ -9,6 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- This package was migrated to the core monorepo from [`MetaMask/smart-transactions-controller`](https://github.com/MetaMask/smart-transactions-controller). For the changelog up to and including v24.2.1 (the last release from the original repo), see the [historical changelog](https://github.com/MetaMask/smart-transactions-controller/blob/v24.2.1/CHANGELOG.md). +- This package was migrated to the core monorepo from [`MetaMask/smart-transactions-controller`](https://github.com/MetaMask/smart-transactions-controller). For the changelog up to and including v24.2.1 (the last release from the original repo), see the [historical changelog](https://github.com/MetaMask/smart-transactions-controller/blob/v24.2.1/CHANGELOG.md) ([#9139](https://github.com/MetaMask/core/pull/9139)). + +### Removed + +- Drop unused runtime dependencies: `@ethereumjs/tx`, `@ethereumjs/util`, `fast-json-patch` ([#9139](https://github.com/MetaMask/core/pull/9139)). [Unreleased]: https://github.com/MetaMask/core/ From ecbfbbda087396cc719d8565a07ebec3d2298e8b Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Tue, 16 Jun 2026 11:34:26 +0200 Subject: [PATCH 10/14] chore(smart-transactions-controller): wire up monorepo lint Source-repo's eslint.config.mjs had broad TODO overrides disabling strict TS/jsdoc rules; those went away when the file was deleted in PR #9132. With the package now linted by the root flat config, the suppressed rules surface again. - `eslint --fix` auto-resolved what it could (JSDoc tag-lines spacing in `utils.ts` and `tests/helpers.ts`; removed the now-redundant `@typescript-eslint/no-shadow` disable directive in `constants.ts`). - `eslint --suppress-all` recorded the remaining 112 known issues (mostly `explicit-function-return-type`, `no-explicit-any`, `prefer-nullish-coalescing`, deprecated `:stateChange` event references, and `no-floating-promises`) in `eslint-suppressions.json` so the package matches core's standard technical-debt convention. Each entry is per-file/per-rule with a count so the suppression decays as issues are fixed. Tests + build remain green; lint now passes. --- eslint-suppressions.json | 72 ++++++++++++++++++- .../src/constants.ts | 1 - .../src/utils.ts | 1 + .../tests/helpers.ts | 1 + 4 files changed, 73 insertions(+), 2 deletions(-) diff --git a/eslint-suppressions.json b/eslint-suppressions.json index 4b9a2704a4..402b49656f 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -2136,6 +2136,76 @@ "count": 2 } }, + "packages/smart-transactions-controller/src/SmartTransactionsController.test.ts": { + "@typescript-eslint/explicit-function-return-type": { + "count": 12 + }, + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "no-restricted-syntax": { + "count": 12 + } + }, + "packages/smart-transactions-controller/src/SmartTransactionsController.ts": { + "@typescript-eslint/explicit-function-return-type": { + "count": 10 + }, + "@typescript-eslint/no-floating-promises": { + "count": 4 + }, + "no-restricted-syntax": { + "count": 4 + } + }, + "packages/smart-transactions-controller/src/featureFlags/feature-flags.ts": { + "@typescript-eslint/naming-convention": { + "count": 1 + } + }, + "packages/smart-transactions-controller/src/selectors.ts": { + "@typescript-eslint/explicit-function-return-type": { + "count": 2 + } + }, + "packages/smart-transactions-controller/src/types.ts": { + "@typescript-eslint/naming-convention": { + "count": 25 + }, + "@typescript-eslint/no-explicit-any": { + "count": 7 + }, + "@typescript-eslint/prefer-enum-initializers": { + "count": 6 + } + }, + "packages/smart-transactions-controller/src/utils.test.ts": { + "@typescript-eslint/explicit-function-return-type": { + "count": 7 + } + }, + "packages/smart-transactions-controller/src/utils.ts": { + "@typescript-eslint/explicit-function-return-type": { + "count": 10 + }, + "@typescript-eslint/naming-convention": { + "count": 1 + }, + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/prefer-nullish-coalescing": { + "count": 1 + }, + "jsdoc/require-param-description": { + "count": 1 + } + }, + "packages/smart-transactions-controller/tests/helpers.ts": { + "@typescript-eslint/explicit-function-return-type": { + "count": 2 + } + }, "packages/snap-account-service/src/SnapAccountService.test.ts": { "no-restricted-syntax": { "count": 2 @@ -2325,4 +2395,4 @@ "count": 10 } } -} +} \ No newline at end of file diff --git a/packages/smart-transactions-controller/src/constants.ts b/packages/smart-transactions-controller/src/constants.ts index 8e0c23e73f..236bd0c23b 100644 --- a/packages/smart-transactions-controller/src/constants.ts +++ b/packages/smart-transactions-controller/src/constants.ts @@ -24,7 +24,6 @@ export enum MetaMetricsEventName { export enum MetaMetricsEventCategory { Transactions = 'Transactions', - // eslint-disable-next-line @typescript-eslint/no-shadow Navigation = 'Navigation', } diff --git a/packages/smart-transactions-controller/src/utils.ts b/packages/smart-transactions-controller/src/utils.ts index 2e2f61cb48..533c732b4d 100644 --- a/packages/smart-transactions-controller/src/utils.ts +++ b/packages/smart-transactions-controller/src/utils.ts @@ -131,6 +131,7 @@ export const calculateStatus = (stxStatus: SmartTransactionsStatus) => { /** * Returns processing time for an STX in seconds. + * * @param smartTransactionSubmittedtime * @returns Processing time in seconds. */ diff --git a/packages/smart-transactions-controller/tests/helpers.ts b/packages/smart-transactions-controller/tests/helpers.ts index ce8acfb966..31f81e95f0 100644 --- a/packages/smart-transactions-controller/tests/helpers.ts +++ b/packages/smart-transactions-controller/tests/helpers.ts @@ -17,6 +17,7 @@ export const flushPromises = async () => { * promises or other asynchronous operations that may get enqueued during the timer's duration. * By advancing time in incremental steps and flushing promises between each step, * this function ensures that both timers and promises are comprehensively processed. + * * @param options - The options object. * @param options.duration - The total amount of time (in milliseconds) to advance the timer by. * @param options.stepSize - The incremental step size (in milliseconds) by which the timer is advanced in each iteration. Default is 1/4 of the duration. From ed3ed55e9c007ad04eb6c39339eb85c7b2fc75a5 Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Tue, 16 Jun 2026 11:39:05 +0200 Subject: [PATCH 11/14] chore: oxfmt eslint-suppressions.json --- eslint-suppressions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eslint-suppressions.json b/eslint-suppressions.json index 402b49656f..6e14dc3249 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -2395,4 +2395,4 @@ "count": 10 } } -} \ No newline at end of file +} From 38591d5fcf30026df418e384bfc13775a9dc7ec2 Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Tue, 16 Jun 2026 12:00:13 +0200 Subject: [PATCH 12/14] chore(smart-transactions-controller): suppress remaining lint errors The earlier suppress-all pass missed the rules that only surface when the monorepo's `lint:eslint` flow (which runs `build:only-clean` first) clears package `dist/` directories before linting. With everything cleared, several `@metamask/transaction-controller` / `@metamask/profile-sync-controller` action types fall back to `{}`, which triggers `no-base-to-string` and `restrict-template-expressions` on a Bearer-token template literal, plus a handful of other rule hits across the package and a few other packages (mostly `@types/jest` related signatures). Captured them with `yarn eslint --suppress-all` after `yarn build:only-clean` so the suppressions match what CI sees, then applied `oxfmt`. --- eslint-suppressions.json | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/eslint-suppressions.json b/eslint-suppressions.json index 6e14dc3249..27046e1548 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -1,4 +1,46 @@ { + ".skills-cache/metamask-skills/bin/metamask-skills.mjs": { + "n/no-process-env": { + "count": 6 + }, + "n/no-process-exit": { + "count": 3 + }, + "n/no-sync": { + "count": 10 + }, + "no-shadow": { + "count": 1 + } + }, + ".skills-cache/metamask-skills/test/cli.test.mjs": { + "id-length": { + "count": 1 + }, + "n/no-process-env": { + "count": 1 + }, + "n/no-sync": { + "count": 10 + }, + "n/no-unsupported-features/node-builtins": { + "count": 2 + } + }, + ".skills-cache/metamask-skills/test/unit.test.mjs": { + "id-length": { + "count": 4 + }, + "import-x/extensions": { + "count": 1 + }, + "n/no-sync": { + "count": 5 + }, + "n/no-unsupported-features/node-builtins": { + "count": 2 + } + }, "packages/account-tree-controller/src/AccountTreeController.test.ts": { "@typescript-eslint/explicit-function-return-type": { "count": 4 @@ -2151,9 +2193,15 @@ "@typescript-eslint/explicit-function-return-type": { "count": 10 }, + "@typescript-eslint/no-base-to-string": { + "count": 1 + }, "@typescript-eslint/no-floating-promises": { "count": 4 }, + "@typescript-eslint/restrict-template-expressions": { + "count": 1 + }, "no-restricted-syntax": { "count": 4 } From 073044cbe1d80e602110445ba2267e2928d1c583 Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Tue, 16 Jun 2026 12:11:05 +0200 Subject: [PATCH 13/14] chore: ignore .skills-cache in eslint config `.skills-cache/` is a postinstall artifact (it's already in .gitignore), but it wasn't in eslint's ignores list, so it was being linted. My earlier `eslint --suppress-all` pass picked up errors from `.skills-cache/metamask-skills/...` files and put them into eslint-suppressions.json, which doesn't belong there. Adds `.skills-cache/**` to the root eslint ignores list and drops the 3 stale entries from eslint-suppressions.json. --- eslint-suppressions.json | 42 ---------------------------------------- eslint.config.mjs | 1 + 2 files changed, 1 insertion(+), 42 deletions(-) diff --git a/eslint-suppressions.json b/eslint-suppressions.json index 27046e1548..85127a3df6 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -1,46 +1,4 @@ { - ".skills-cache/metamask-skills/bin/metamask-skills.mjs": { - "n/no-process-env": { - "count": 6 - }, - "n/no-process-exit": { - "count": 3 - }, - "n/no-sync": { - "count": 10 - }, - "no-shadow": { - "count": 1 - } - }, - ".skills-cache/metamask-skills/test/cli.test.mjs": { - "id-length": { - "count": 1 - }, - "n/no-process-env": { - "count": 1 - }, - "n/no-sync": { - "count": 10 - }, - "n/no-unsupported-features/node-builtins": { - "count": 2 - } - }, - ".skills-cache/metamask-skills/test/unit.test.mjs": { - "id-length": { - "count": 4 - }, - "import-x/extensions": { - "count": 1 - }, - "n/no-sync": { - "count": 5 - }, - "n/no-unsupported-features/node-builtins": { - "count": 2 - } - }, "packages/account-tree-controller/src/AccountTreeController.test.ts": { "@typescript-eslint/explicit-function-return-type": { "count": 4 diff --git a/eslint.config.mjs b/eslint.config.mjs index 05b9a4f3d5..c417e7b8f6 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -77,6 +77,7 @@ const config = createConfig([ '**/coverage/**', '**/dist/**', '**/docs/**', + '.skills-cache/**', '.yarn/**', 'merged-packages/**', 'scripts/create-package/package-template/**', From 742bf0b2a36399e37050d922b55d941498d6fee7 Mon Sep 17 00:00:00 2001 From: Salah-Eddine Saakoun Date: Tue, 16 Jun 2026 12:12:32 +0200 Subject: [PATCH 14/14] chore(smart-transactions-controller): drop CHANGELOG entry for unused-dep removal The dropped deps (@ethereumjs/tx, @ethereumjs/util, fast-json-patch) weren't actually consumed by source code, so removing them has no observable effect on consumers. Per project convention, only consumer-facing changes belong in the CHANGELOG. --- packages/smart-transactions-controller/CHANGELOG.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/smart-transactions-controller/CHANGELOG.md b/packages/smart-transactions-controller/CHANGELOG.md index b35ba15625..f1ee39a621 100644 --- a/packages/smart-transactions-controller/CHANGELOG.md +++ b/packages/smart-transactions-controller/CHANGELOG.md @@ -11,8 +11,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - This package was migrated to the core monorepo from [`MetaMask/smart-transactions-controller`](https://github.com/MetaMask/smart-transactions-controller). For the changelog up to and including v24.2.1 (the last release from the original repo), see the [historical changelog](https://github.com/MetaMask/smart-transactions-controller/blob/v24.2.1/CHANGELOG.md) ([#9139](https://github.com/MetaMask/core/pull/9139)). -### Removed - -- Drop unused runtime dependencies: `@ethereumjs/tx`, `@ethereumjs/util`, `fast-json-patch` ([#9139](https://github.com/MetaMask/core/pull/9139)). - [Unreleased]: https://github.com/MetaMask/core/