From bb41a72ce484e3500c9ac0c88274cb582093bb71 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 12:43:48 +0200 Subject: [PATCH 001/115] Replace `ts-bridge` with `tsc` for building packages Switch from `@ts-bridge/cli` to standard `tsc` with TypeScript project references for building all packages. --- .yarnrc.yml | 1 - docs/processes/building.md | 2 - package.json | 3 +- packages/account-tree-controller/package.json | 5 +- packages/accounts-controller/package.json | 5 +- packages/address-book-controller/package.json | 5 +- packages/ai-controllers/package.json | 5 +- packages/analytics-controller/package.json | 5 +- .../package.json | 5 +- packages/announcement-controller/package.json | 5 +- packages/app-metadata-controller/package.json | 5 +- packages/approval-controller/package.json | 5 +- packages/assets-controller/package.json | 5 +- packages/assets-controllers/package.json | 5 +- .../authenticated-user-storage/package.json | 5 +- packages/base-controller/package.json | 5 +- packages/base-data-service/package.json | 5 +- packages/bitcoin-regtest-up/package.json | 5 +- packages/bridge-controller/package.json | 5 +- .../bridge-status-controller/package.json | 5 +- packages/build-utils/package.json | 5 +- .../chain-agnostic-permission/package.json | 5 +- packages/chomp-api-service/package.json | 5 +- packages/claims-controller/package.json | 5 +- packages/client-controller/package.json | 5 +- packages/client-utils/package.json | 5 +- packages/compliance-controller/package.json | 5 +- packages/composable-controller/package.json | 5 +- .../config-registry-controller/package.json | 5 +- packages/connectivity-controller/package.json | 5 +- packages/controller-utils/package.json | 5 +- packages/core-backend/package.json | 5 +- packages/delegation-controller/package.json | 5 +- packages/earn-controller/package.json | 5 +- packages/eip-5792-middleware/package.json | 5 +- .../package.json | 5 +- .../package.json | 5 +- packages/ens-controller/package.json | 5 +- packages/eth-block-tracker/package.json | 5 +- packages/eth-json-rpc-middleware/package.json | 5 +- packages/eth-json-rpc-provider/package.json | 5 +- packages/foundryup/package.json | 5 +- packages/gas-fee-controller/package.json | 5 +- .../gator-permissions-controller/package.json | 5 +- packages/geolocation-controller/package.json | 5 +- packages/java-tron-up/package.json | 5 +- packages/json-rpc-engine/package.json | 5 +- .../json-rpc-middleware-stream/package.json | 5 +- packages/keyring-controller/package.json | 5 +- packages/local-node-utils/package.json | 5 +- packages/logging-controller/package.json | 5 +- packages/message-manager/package.json | 5 +- packages/messenger-cli/package.json | 5 +- packages/messenger/package.json | 5 +- .../package.json | 5 +- .../package.json | 5 +- .../money-account-controller/package.json | 5 +- .../package.json | 5 +- .../multichain-account-service/package.json | 5 +- .../multichain-api-middleware/package.json | 5 +- .../package.json | 5 +- .../package.json | 5 +- packages/name-controller/package.json | 5 +- .../package.json | 5 +- packages/network-controller/package.json | 5 +- .../package.json | 5 +- .../package.json | 5 +- packages/passkey-controller/package.json | 5 +- packages/permission-controller/package.json | 5 +- .../permission-log-controller/package.json | 5 +- packages/perps-controller/package.json | 5 +- packages/phishing-controller/package.json | 5 +- packages/platform-api-docs/package.json | 5 +- packages/polling-controller/package.json | 5 +- packages/preferences-controller/package.json | 5 +- .../profile-metrics-controller/package.json | 5 +- packages/profile-sync-controller/package.json | 5 +- packages/ramps-controller/package.json | 5 +- packages/rate-limit-controller/package.json | 5 +- packages/react-data-query/package.json | 5 +- .../package.json | 5 +- packages/sample-controllers/package.json | 5 +- .../package.json | 5 +- .../selected-network-controller/package.json | 5 +- packages/sentinel-api-service/package.json | 5 +- packages/shield-controller/package.json | 5 +- packages/signature-controller/package.json | 5 +- .../package.json | 5 +- packages/snap-account-service/package.json | 5 +- packages/social-controllers/package.json | 5 +- .../solana-test-validator-up/package.json | 5 +- packages/stellar-quickstart-up/package.json | 5 +- packages/storage-service/package.json | 5 +- packages/subscription-controller/package.json | 5 +- packages/transaction-controller/package.json | 5 +- .../transaction-pay-controller/package.json | 5 +- .../user-operation-controller/package.json | 5 +- packages/wallet-cli/package.json | 5 +- packages/wallet/package.json | 5 +- .../package-template/package.json | 5 +- tsconfig.packages.build.json | 1 - yarn.config.cjs | 6 +- yarn.lock | 123 +----------------- 103 files changed, 199 insertions(+), 422 deletions(-) diff --git a/.yarnrc.yml b/.yarnrc.yml index 03ae3081348..4c0e4f39a5a 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -27,7 +27,6 @@ npmPreapprovedPackages: - "@metamask/*" - "@metamask-previews/*" - "@lavamoat/*" - - "@ts-bridge/*" plugins: - path: .yarn/plugins/@yarnpkg/plugin-allow-scripts.cjs diff --git a/docs/processes/building.md b/docs/processes/building.md index a4f1629331d..6618b6fe18f 100644 --- a/docs/processes/building.md +++ b/docs/processes/building.md @@ -1,7 +1,5 @@ # Building packages -[`ts-bridge`](https://github.com/ts-bridge/ts-bridge) is used to build packages in both CommonJS- and ESM-compatible formats. - Built files show up in the `dist/` directory in each package. These are the files which will ultimately be published to NPM. - Run `yarn build` to build all packages in the monorepo. diff --git a/package.json b/package.json index c10e77ec718..4c7aea38cc4 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ ], "files": [], "scripts": { - "build": "yarn ts-bridge --project tsconfig.build.json --verbose", + "build": "yarn tsc --build tsconfig.build.json --verbose", "build:clean": "yarn build:only-clean && yarn build", "build:docs": "yarn workspaces foreach --all --no-private --parallel --interlaced --verbose run build:docs", "build:only-clean": "rimraf -g 'packages/*/dist'", @@ -68,7 +68,6 @@ "@metamask/network-controller": "^34.0.0", "@metamask/skills": "^0.1.0", "@metamask/utils": "^11.11.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "@types/lodash": "^4.14.191", "@types/node": "^16.18.54", diff --git a/packages/account-tree-controller/package.json b/packages/account-tree-controller/package.json index 1bbaadd0af9..ee7247d53ba 100644 --- a/packages/account-tree-controller/package.json +++ b/packages/account-tree-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/account-tree-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/account-tree-controller", @@ -74,7 +74,6 @@ "@metamask/account-api": "^1.0.4", "@metamask/auto-changelog": "^6.1.0", "@metamask/providers": "^22.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/accounts-controller/package.json b/packages/accounts-controller/package.json index 07642c438f2..b9f2c670524 100644 --- a/packages/accounts-controller/package.json +++ b/packages/accounts-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/accounts-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/accounts-controller", @@ -77,7 +77,6 @@ "@metamask/auto-changelog": "^6.1.0", "@metamask/controller-utils": "^12.3.0", "@metamask/providers": "^22.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "@types/readable-stream": "^2.3.0", "jest": "^29.7.0", diff --git a/packages/address-book-controller/package.json b/packages/address-book-controller/package.json index 1e60d53476f..57e58ff08ad 100644 --- a/packages/address-book-controller/package.json +++ b/packages/address-book-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/address-book-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/address-book-controller", @@ -62,7 +62,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/ai-controllers/package.json b/packages/ai-controllers/package.json index cb55d5708fa..ef2fa0b9b35 100644 --- a/packages/ai-controllers/package.json +++ b/packages/ai-controllers/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/ai-controllers", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/ai-controllers", @@ -62,7 +62,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/analytics-controller/package.json b/packages/analytics-controller/package.json index 0c8a5790f23..f73901c0926 100644 --- a/packages/analytics-controller/package.json +++ b/packages/analytics-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/analytics-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/analytics-controller", @@ -63,7 +63,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "@types/uuid": "^8.3.0", "deepmerge": "^4.2.2", diff --git a/packages/analytics-data-regulation-controller/package.json b/packages/analytics-data-regulation-controller/package.json index c76d5751f40..2953b85a5d5 100644 --- a/packages/analytics-data-regulation-controller/package.json +++ b/packages/analytics-data-regulation-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/analytics-data-regulation-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/analytics-data-regulation-controller", @@ -62,7 +62,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/announcement-controller/package.json b/packages/announcement-controller/package.json index 624f180e164..8bd69d09302 100644 --- a/packages/announcement-controller/package.json +++ b/packages/announcement-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/announcement-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/announcement-controller", @@ -60,7 +60,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/app-metadata-controller/package.json b/packages/app-metadata-controller/package.json index 95e6f122334..7f5d24f151c 100644 --- a/packages/app-metadata-controller/package.json +++ b/packages/app-metadata-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/app-metadata-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/app-metadata-controller", @@ -58,7 +58,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/approval-controller/package.json b/packages/approval-controller/package.json index ad90795c789..764009b16ce 100644 --- a/packages/approval-controller/package.json +++ b/packages/approval-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/approval-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/approval-controller", @@ -63,7 +63,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/assets-controller/package.json b/packages/assets-controller/package.json index 5bedcd3d328..7395776b120 100644 --- a/packages/assets-controller/package.json +++ b/packages/assets-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/assets-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/assets-controller", @@ -88,7 +88,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "@types/lodash": "^4.14.191", "deepmerge": "^4.2.2", diff --git a/packages/assets-controllers/package.json b/packages/assets-controllers/package.json index d8f1f9478af..11b710ce30f 100644 --- a/packages/assets-controllers/package.json +++ b/packages/assets-controllers/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/assets-controllers", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/assets-controllers", @@ -110,7 +110,6 @@ "@metamask/keyring-internal-api": "^11.0.1", "@metamask/keyring-snap-client": "^9.2.0", "@metamask/providers": "^22.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "@types/lodash": "^4.14.191", "@types/node": "^16.18.54", diff --git a/packages/authenticated-user-storage/package.json b/packages/authenticated-user-storage/package.json index 14073a68c11..13f2cda2a30 100644 --- a/packages/authenticated-user-storage/package.json +++ b/packages/authenticated-user-storage/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/authenticated-user-storage", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/authenticated-user-storage", @@ -63,7 +63,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/base-controller/package.json b/packages/base-controller/package.json index 232fb6da728..784e3763e1b 100644 --- a/packages/base-controller/package.json +++ b/packages/base-controller/package.json @@ -38,8 +38,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/base-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/base-controller", @@ -58,7 +58,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/base-data-service/package.json b/packages/base-data-service/package.json index 408c32fd90c..2c98d49302d 100644 --- a/packages/base-data-service/package.json +++ b/packages/base-data-service/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/base-data-service", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/base-data-service", @@ -66,7 +66,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "@types/lodash": "^4.14.191", "deepmerge": "^4.2.2", diff --git a/packages/bitcoin-regtest-up/package.json b/packages/bitcoin-regtest-up/package.json index 2f9827693a5..0119bacd238 100644 --- a/packages/bitcoin-regtest-up/package.json +++ b/packages/bitcoin-regtest-up/package.json @@ -40,8 +40,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/bitcoin-regtest-up", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/bitcoin-regtest-up", @@ -60,7 +60,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/bridge-controller/package.json b/packages/bridge-controller/package.json index 329871eb235..73632c206cb 100644 --- a/packages/bridge-controller/package.json +++ b/packages/bridge-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/bridge-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/bridge-controller", @@ -84,7 +84,6 @@ "@metamask/auto-changelog": "^6.1.0", "@metamask/eth-json-rpc-provider": "^6.0.1", "@metamask/superstruct": "^3.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/bridge-status-controller/package.json b/packages/bridge-status-controller/package.json index a8188afd042..2d9303f82ee 100644 --- a/packages/bridge-status-controller/package.json +++ b/packages/bridge-status-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/bridge-status-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/bridge-status-controller", @@ -73,7 +73,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/build-utils/package.json b/packages/build-utils/package.json index 66c69139339..07983162711 100644 --- a/packages/build-utils/package.json +++ b/packages/build-utils/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/build-utils", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/build-utils", @@ -58,7 +58,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/chain-agnostic-permission/package.json b/packages/chain-agnostic-permission/package.json index 5e34d38a07a..8c5f4081b24 100644 --- a/packages/chain-agnostic-permission/package.json +++ b/packages/chain-agnostic-permission/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/chain-agnostic-permission", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/chain-agnostic-permission", @@ -63,7 +63,6 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/keyring-internal-api": "^11.0.1", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/chomp-api-service/package.json b/packages/chomp-api-service/package.json index 8b2de092168..0fddbb3b7ab 100644 --- a/packages/chomp-api-service/package.json +++ b/packages/chomp-api-service/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/chomp-api-service", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/chomp-api-service", @@ -62,7 +62,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/claims-controller/package.json b/packages/claims-controller/package.json index aa74f3a0eb8..1bc62081ecf 100644 --- a/packages/claims-controller/package.json +++ b/packages/claims-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/claims-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/claims-controller", @@ -64,7 +64,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/client-controller/package.json b/packages/client-controller/package.json index 04a30f94d35..1291dd31351 100644 --- a/packages/client-controller/package.json +++ b/packages/client-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/client-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/client-controller", @@ -60,7 +60,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/client-utils/package.json b/packages/client-utils/package.json index 6da53027071..4cb897aab4c 100644 --- a/packages/client-utils/package.json +++ b/packages/client-utils/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/client-utils", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/client-utils", @@ -65,7 +65,6 @@ "devDependencies": { "@ethersproject/abi": "^5.7.0", "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/compliance-controller/package.json b/packages/compliance-controller/package.json index 00b600c426e..6ebabb5e548 100644 --- a/packages/compliance-controller/package.json +++ b/packages/compliance-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/compliance-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/compliance-controller", @@ -64,7 +64,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/composable-controller/package.json b/packages/composable-controller/package.json index 1d934351e4b..1516232f332 100644 --- a/packages/composable-controller/package.json +++ b/packages/composable-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/composable-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/composable-controller", @@ -59,7 +59,6 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/json-rpc-engine": "^10.5.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "immer": "^9.0.6", diff --git a/packages/config-registry-controller/package.json b/packages/config-registry-controller/package.json index d1f41b7c66d..41591f5dba5 100644 --- a/packages/config-registry-controller/package.json +++ b/packages/config-registry-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/config-registry-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/config-registry-controller", @@ -70,7 +70,6 @@ "devDependencies": { "@lavamoat/allow-scripts": "^3.0.4", "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/connectivity-controller/package.json b/packages/connectivity-controller/package.json index 572ed638b63..8f77f6d2fa2 100644 --- a/packages/connectivity-controller/package.json +++ b/packages/connectivity-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/connectivity-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/connectivity-controller", @@ -61,7 +61,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/controller-utils/package.json b/packages/controller-utils/package.json index e76dfc53bd6..55f9d86aa80 100644 --- a/packages/controller-utils/package.json +++ b/packages/controller-utils/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/controller-utils", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/controller-utils", @@ -69,7 +69,6 @@ "devDependencies": { "@babel/runtime": "^7.23.9", "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "@types/lodash": "^4.14.191", "deepmerge": "^4.2.2", diff --git a/packages/core-backend/package.json b/packages/core-backend/package.json index 55cb72ab7e2..79085a647c3 100644 --- a/packages/core-backend/package.json +++ b/packages/core-backend/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/core-backend", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/core-backend", @@ -68,7 +68,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/delegation-controller/package.json b/packages/delegation-controller/package.json index 83a7c3eb014..2dfa3ac2f5b 100644 --- a/packages/delegation-controller/package.json +++ b/packages/delegation-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/delegation-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/delegation-controller", @@ -62,7 +62,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/earn-controller/package.json b/packages/earn-controller/package.json index d15c7b66aa3..4ee63721a6d 100644 --- a/packages/earn-controller/package.json +++ b/packages/earn-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/earn-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/earn-controller", @@ -69,7 +69,6 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/transaction-controller": "^69.0.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/eip-5792-middleware/package.json b/packages/eip-5792-middleware/package.json index 81a3f4c1ec9..b7b93bc7aa4 100644 --- a/packages/eip-5792-middleware/package.json +++ b/packages/eip-5792-middleware/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/eip-5792-middleware", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/eip-5792-middleware", @@ -65,7 +65,6 @@ "@metamask/auto-changelog": "^6.1.0", "@metamask/keyring-controller": "^27.1.0", "@metamask/rpc-errors": "^7.0.2", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/eip-7702-internal-rpc-middleware/package.json b/packages/eip-7702-internal-rpc-middleware/package.json index ba2539da905..79b6148ce76 100644 --- a/packages/eip-7702-internal-rpc-middleware/package.json +++ b/packages/eip-7702-internal-rpc-middleware/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/eip-7702-internal-rpc-middleware", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/eip-7702-internal-rpc-middleware", @@ -60,7 +60,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/eip1193-permission-middleware/package.json b/packages/eip1193-permission-middleware/package.json index 0789020042b..b5b9f936bb7 100644 --- a/packages/eip1193-permission-middleware/package.json +++ b/packages/eip1193-permission-middleware/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/eip1193-permission-middleware", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/eip1193-permission-middleware", @@ -63,7 +63,6 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/rpc-errors": "^7.0.2", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/ens-controller/package.json b/packages/ens-controller/package.json index 299e3d364af..af64d7cc0bc 100644 --- a/packages/ens-controller/package.json +++ b/packages/ens-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/ens-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/ens-controller", @@ -65,7 +65,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/eth-block-tracker/package.json b/packages/eth-block-tracker/package.json index 63291723a68..e9a05162371 100644 --- a/packages/eth-block-tracker/package.json +++ b/packages/eth-block-tracker/package.json @@ -41,8 +41,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/eth-block-tracker", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/eth-block-tracker", @@ -63,7 +63,6 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/json-rpc-engine": "^10.5.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "@types/json-rpc-random-id": "^1.0.1", "deepmerge": "^4.2.2", diff --git a/packages/eth-json-rpc-middleware/package.json b/packages/eth-json-rpc-middleware/package.json index 63e4913087e..c3975ca62ab 100644 --- a/packages/eth-json-rpc-middleware/package.json +++ b/packages/eth-json-rpc-middleware/package.json @@ -40,8 +40,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/eth-json-rpc-middleware --tag-prefix-before-package-rename eth-json-rpc-middleware@ --version-before-package-rename 6.1.0", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/eth-json-rpc-middleware --tag-prefix-before-package-rename eth-json-rpc-middleware@ --version-before-package-rename 6.1.0", @@ -67,7 +67,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/deep-freeze-strict": "^1.1.0", "@types/jest": "^29.5.14", "deep-freeze-strict": "^1.1.1", diff --git a/packages/eth-json-rpc-provider/package.json b/packages/eth-json-rpc-provider/package.json index a5d9bf73028..8937583fcb6 100644 --- a/packages/eth-json-rpc-provider/package.json +++ b/packages/eth-json-rpc-provider/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/eth-json-rpc-provider", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/eth-json-rpc-provider", @@ -63,7 +63,6 @@ "@metamask/auto-changelog": "^6.1.0", "@metamask/eth-query": "^4.0.0", "@metamask/ethjs-query": "^0.5.3", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "ethers": "^6.12.0", diff --git a/packages/foundryup/package.json b/packages/foundryup/package.json index a1e280c244d..586ce24c23a 100644 --- a/packages/foundryup/package.json +++ b/packages/foundryup/package.json @@ -33,8 +33,8 @@ }, "scripts": { "anvil": "node_modules/.bin/anvil", - "build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references", - "build:all": "ts-bridge --project tsconfig.build.json --verbose --clean", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/foundryup", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/foundryup", @@ -55,7 +55,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "@types/unzipper": "^0.10.10", "@types/yargs": "^17.0.32", diff --git a/packages/gas-fee-controller/package.json b/packages/gas-fee-controller/package.json index 0ed2f242854..4289a17ea36 100644 --- a/packages/gas-fee-controller/package.json +++ b/packages/gas-fee-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/gas-fee-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/gas-fee-controller", @@ -71,7 +71,6 @@ "devDependencies": { "@babel/runtime": "^7.23.9", "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "@types/jest-when": "^2.7.3", "deepmerge": "^4.2.2", diff --git a/packages/gator-permissions-controller/package.json b/packages/gator-permissions-controller/package.json index 2f683a13d07..a884e22727a 100644 --- a/packages/gator-permissions-controller/package.json +++ b/packages/gator-permissions-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/gator-permissions-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/gator-permissions-controller", @@ -72,7 +72,6 @@ "@lavamoat/allow-scripts": "^3.0.4", "@lavamoat/preinstall-always-fail": "^2.1.0", "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/geolocation-controller/package.json b/packages/geolocation-controller/package.json index 80fbb426a28..2497627e4a5 100644 --- a/packages/geolocation-controller/package.json +++ b/packages/geolocation-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/geolocation-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/geolocation-controller", @@ -61,7 +61,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/java-tron-up/package.json b/packages/java-tron-up/package.json index 75aa4d3d436..ab5ec59e4f0 100644 --- a/packages/java-tron-up/package.json +++ b/packages/java-tron-up/package.json @@ -40,8 +40,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/java-tron-up", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/java-tron-up", @@ -60,7 +60,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/json-rpc-engine/package.json b/packages/json-rpc-engine/package.json index 5afee23ac6e..aad35bcc0bb 100644 --- a/packages/json-rpc-engine/package.json +++ b/packages/json-rpc-engine/package.json @@ -53,8 +53,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/json-rpc-engine --tag-prefix-before-package-rename json-rpc-engine@ --version-before-package-rename 6.1.0", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/json-rpc-engine --tag-prefix-before-package-rename json-rpc-engine@ --version-before-package-rename 6.1.0", @@ -79,7 +79,6 @@ "@lavamoat/allow-scripts": "^3.0.4", "@lavamoat/preinstall-always-fail": "^2.1.0", "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/json-rpc-middleware-stream/package.json b/packages/json-rpc-middleware-stream/package.json index b7eb1cf3950..d2b530c030c 100644 --- a/packages/json-rpc-middleware-stream/package.json +++ b/packages/json-rpc-middleware-stream/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/json-rpc-middleware-stream --tag-prefix-before-package-rename json-rpc-middleware-stream@ --version-before-package-rename 5.0.1", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/json-rpc-middleware-stream --tag-prefix-before-package-rename json-rpc-middleware-stream@ --version-before-package-rename 5.0.1", @@ -60,7 +60,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "@types/readable-stream": "^2.3.0", "deepmerge": "^4.2.2", diff --git a/packages/keyring-controller/package.json b/packages/keyring-controller/package.json index 6397b7f2ddf..83fce7757fe 100644 --- a/packages/keyring-controller/package.json +++ b/packages/keyring-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/keyring-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/keyring-controller", @@ -80,7 +80,6 @@ "@metamask/auto-changelog": "^6.1.0", "@metamask/keyring-utils": "^3.3.1", "@metamask/scure-bip39": "^2.1.1", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/local-node-utils/package.json b/packages/local-node-utils/package.json index 058f66dc708..42e6d1d300d 100644 --- a/packages/local-node-utils/package.json +++ b/packages/local-node-utils/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/local-node-utils", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/local-node-utils", @@ -59,7 +59,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/logging-controller/package.json b/packages/logging-controller/package.json index aa6510dac9c..eda0d1cd045 100644 --- a/packages/logging-controller/package.json +++ b/packages/logging-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/logging-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/logging-controller", @@ -62,7 +62,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/message-manager/package.json b/packages/message-manager/package.json index 2c1c6f1c0a2..cb5491c9a42 100644 --- a/packages/message-manager/package.json +++ b/packages/message-manager/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/message-manager", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/message-manager", @@ -64,7 +64,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/messenger-cli/package.json b/packages/messenger-cli/package.json index 1bb3a659376..d84398a3178 100644 --- a/packages/messenger-cli/package.json +++ b/packages/messenger-cli/package.json @@ -27,8 +27,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "changelog:update": "../../scripts/update-changelog.sh @metamask/messenger-cli", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/messenger-cli", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -45,7 +45,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "@types/yargs": "^17.0.32", "deepmerge": "^4.2.2", diff --git a/packages/messenger/package.json b/packages/messenger/package.json index 7aa3291ebaf..1b83b6c2eff 100644 --- a/packages/messenger/package.json +++ b/packages/messenger/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/messenger", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/messenger", @@ -57,7 +57,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "immer": "^9.0.6", diff --git a/packages/money-account-api-data-service/package.json b/packages/money-account-api-data-service/package.json index d4d9703dd03..9938cd9bd7a 100644 --- a/packages/money-account-api-data-service/package.json +++ b/packages/money-account-api-data-service/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/money-account-api-data-service", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/money-account-api-data-service", @@ -64,7 +64,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/money-account-balance-service/package.json b/packages/money-account-balance-service/package.json index edd0ebc6184..a272c2d1aa4 100644 --- a/packages/money-account-balance-service/package.json +++ b/packages/money-account-balance-service/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/money-account-balance-service", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/money-account-balance-service", @@ -68,7 +68,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/money-account-controller/package.json b/packages/money-account-controller/package.json index b2615c4481d..8c79ed31e58 100644 --- a/packages/money-account-controller/package.json +++ b/packages/money-account-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/money-account-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/money-account-controller", @@ -67,7 +67,6 @@ "@metamask/auto-changelog": "^6.1.0", "@metamask/keyring-utils": "^3.3.1", "@metamask/utils": "^11.11.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/money-account-upgrade-controller/package.json b/packages/money-account-upgrade-controller/package.json index 7d6dd2b981f..203afbc7b39 100644 --- a/packages/money-account-upgrade-controller/package.json +++ b/packages/money-account-upgrade-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/money-account-upgrade-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/money-account-upgrade-controller", @@ -68,7 +68,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/multichain-account-service/package.json b/packages/multichain-account-service/package.json index 237e8cb721d..7e85fe5b864 100644 --- a/packages/multichain-account-service/package.json +++ b/packages/multichain-account-service/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/multichain-account-service", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/multichain-account-service", @@ -81,7 +81,6 @@ "@metamask/controller-utils": "^12.3.0", "@metamask/eth-hd-keyring": "^14.1.1", "@metamask/providers": "^22.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "@types/uuid": "^8.3.0", "deepmerge": "^4.2.2", diff --git a/packages/multichain-api-middleware/package.json b/packages/multichain-api-middleware/package.json index 61bcaf97d6f..f9ea8e25b9c 100644 --- a/packages/multichain-api-middleware/package.json +++ b/packages/multichain-api-middleware/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/multichain-api-middleware", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/multichain-api-middleware", @@ -72,7 +72,6 @@ "@metamask/eth-json-rpc-filters": "^9.0.0", "@metamask/multichain-transactions-controller": "^7.1.1", "@metamask/safe-event-emitter": "^3.0.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/multichain-network-controller/package.json b/packages/multichain-network-controller/package.json index c170fdc706e..b3732dfd434 100644 --- a/packages/multichain-network-controller/package.json +++ b/packages/multichain-network-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/multichain-network-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/multichain-network-controller", @@ -70,7 +70,6 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/keyring-controller": "^27.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "@types/lodash": "^4.14.191", "@types/uuid": "^8.3.0", diff --git a/packages/multichain-transactions-controller/package.json b/packages/multichain-transactions-controller/package.json index 18eec58c531..7502b02fca2 100644 --- a/packages/multichain-transactions-controller/package.json +++ b/packages/multichain-transactions-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/multichain-transactions-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/multichain-transactions-controller", @@ -73,7 +73,6 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/keyring-controller": "^27.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/name-controller/package.json b/packages/name-controller/package.json index 741eb1c7ffe..49d9af898e6 100644 --- a/packages/name-controller/package.json +++ b/packages/name-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/name-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/name-controller", @@ -64,7 +64,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/network-connection-banner-controller/package.json b/packages/network-connection-banner-controller/package.json index 01590bede2d..727e6a7ced1 100644 --- a/packages/network-connection-banner-controller/package.json +++ b/packages/network-connection-banner-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/network-connection-banner-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/network-connection-banner-controller", @@ -67,7 +67,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/network-controller/package.json b/packages/network-controller/package.json index adc52a427f5..10ed37649d9 100644 --- a/packages/network-controller/package.json +++ b/packages/network-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/network-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/network-controller", @@ -79,7 +79,6 @@ "devDependencies": { "@json-rpc-specification/meta-schema": "^1.0.6", "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/deep-freeze-strict": "^1.1.0", "@types/jest": "^29.5.14", "@types/jest-when": "^2.7.3", diff --git a/packages/network-enablement-controller/package.json b/packages/network-enablement-controller/package.json index 77d0869cd33..993b838a8b0 100644 --- a/packages/network-enablement-controller/package.json +++ b/packages/network-enablement-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/network-enablement-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/network-enablement-controller", @@ -68,7 +68,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/notification-services-controller/package.json b/packages/notification-services-controller/package.json index 8447fc1d8b6..1e6bacf9dcc 100644 --- a/packages/notification-services-controller/package.json +++ b/packages/notification-services-controller/package.json @@ -91,8 +91,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/notification-services-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/notification-services-controller", @@ -126,7 +126,6 @@ "@lavamoat/allow-scripts": "^3.0.4", "@lavamoat/preinstall-always-fail": "^2.1.0", "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "@types/lodash": "^4.14.191", "@types/readable-stream": "^2.3.0", diff --git a/packages/passkey-controller/package.json b/packages/passkey-controller/package.json index 1c6fcd24d1f..2052cfe7b4d 100644 --- a/packages/passkey-controller/package.json +++ b/packages/passkey-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/passkey-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/passkey-controller", @@ -66,7 +66,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/permission-controller/package.json b/packages/permission-controller/package.json index 6beb9a9d7b0..944f3271b13 100644 --- a/packages/permission-controller/package.json +++ b/packages/permission-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/permission-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/permission-controller", @@ -69,7 +69,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/permission-log-controller/package.json b/packages/permission-log-controller/package.json index 4855571b3c6..df66069aef4 100644 --- a/packages/permission-log-controller/package.json +++ b/packages/permission-log-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/permission-log-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/permission-log-controller", @@ -62,7 +62,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/deep-freeze-strict": "^1.1.0", "@types/jest": "^29.5.14", "deep-freeze-strict": "^1.1.1", diff --git a/packages/perps-controller/package.json b/packages/perps-controller/package.json index 21fc9a52fea..242956235a5 100644 --- a/packages/perps-controller/package.json +++ b/packages/perps-controller/package.json @@ -82,8 +82,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/perps-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/perps-controller", @@ -120,7 +120,6 @@ "@metamask/profile-sync-controller": "^28.3.0", "@metamask/remote-feature-flag-controller": "^4.2.2", "@metamask/transaction-controller": "^69.0.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "@types/uuid": "^8.3.0", "deepmerge": "^4.2.2", diff --git a/packages/phishing-controller/package.json b/packages/phishing-controller/package.json index 01bcb2c4ad2..96d05da2929 100644 --- a/packages/phishing-controller/package.json +++ b/packages/phishing-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/phishing-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/phishing-controller", @@ -68,7 +68,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/platform-api-docs/package.json b/packages/platform-api-docs/package.json index 8900a19da50..55fb059906d 100644 --- a/packages/platform-api-docs/package.json +++ b/packages/platform-api-docs/package.json @@ -26,8 +26,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "changelog:update": "../../scripts/update-changelog.sh @metamask/platform-api-docs", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/platform-api-docs", "cli": "tsx src/cli.ts", @@ -59,7 +59,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "@types/node": "^16.18.54", "@types/npm-which": "^3", diff --git a/packages/polling-controller/package.json b/packages/polling-controller/package.json index dd60ef12e2e..e8875b12aad 100644 --- a/packages/polling-controller/package.json +++ b/packages/polling-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/polling-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/polling-controller", @@ -63,7 +63,6 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/messenger": "^2.0.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/preferences-controller/package.json b/packages/preferences-controller/package.json index cff68a246d7..50dc729f5ae 100644 --- a/packages/preferences-controller/package.json +++ b/packages/preferences-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/preferences-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/preferences-controller", @@ -61,7 +61,6 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/utils": "^11.11.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/profile-metrics-controller/package.json b/packages/profile-metrics-controller/package.json index c9e3d8430d7..44f066816b7 100644 --- a/packages/profile-metrics-controller/package.json +++ b/packages/profile-metrics-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/profile-metrics-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/profile-metrics-controller", @@ -74,7 +74,6 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/keyring-internal-api": "^11.0.1", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/profile-sync-controller/package.json b/packages/profile-sync-controller/package.json index 66b1c25f0a0..628fcfddcab 100644 --- a/packages/profile-sync-controller/package.json +++ b/packages/profile-sync-controller/package.json @@ -92,8 +92,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/profile-sync-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/profile-sync-controller", @@ -129,7 +129,6 @@ "@metamask/keyring-api": "^23.5.0", "@metamask/keyring-internal-api": "^11.0.1", "@metamask/providers": "^22.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "ethers": "^6.12.0", diff --git a/packages/ramps-controller/package.json b/packages/ramps-controller/package.json index 1b4d8b1b888..b8a700023a9 100644 --- a/packages/ramps-controller/package.json +++ b/packages/ramps-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/ramps-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/ramps-controller", @@ -64,7 +64,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/rate-limit-controller/package.json b/packages/rate-limit-controller/package.json index 2651ce4a417..0bb9a351786 100644 --- a/packages/rate-limit-controller/package.json +++ b/packages/rate-limit-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/rate-limit-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/rate-limit-controller", @@ -60,7 +60,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/react-data-query/package.json b/packages/react-data-query/package.json index 78ca08d9edb..9bc1b0602ea 100644 --- a/packages/react-data-query/package.json +++ b/packages/react-data-query/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/react-data-query", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/react-data-query", @@ -61,7 +61,6 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/messenger": "^2.0.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/remote-feature-flag-controller/package.json b/packages/remote-feature-flag-controller/package.json index e24e82558a2..02b844b70d4 100644 --- a/packages/remote-feature-flag-controller/package.json +++ b/packages/remote-feature-flag-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/remote-feature-flag-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/remote-feature-flag-controller", @@ -64,7 +64,6 @@ "devDependencies": { "@lavamoat/allow-scripts": "^3.0.4", "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/sample-controllers/package.json b/packages/sample-controllers/package.json index c5782001fc1..e50a3a2bc69 100644 --- a/packages/sample-controllers/package.json +++ b/packages/sample-controllers/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/sample-controllers", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/sample-controllers", @@ -66,7 +66,6 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/controller-utils": "^12.3.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/seedless-onboarding-controller/package.json b/packages/seedless-onboarding-controller/package.json index d27208fd90e..947475bb698 100644 --- a/packages/seedless-onboarding-controller/package.json +++ b/packages/seedless-onboarding-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/seedless-onboarding-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/seedless-onboarding-controller", @@ -71,7 +71,6 @@ "@lavamoat/allow-scripts": "^3.0.4", "@lavamoat/preinstall-always-fail": "^2.1.0", "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/elliptic": "^6", "@types/jest": "^29.5.14", "@types/json-stable-stringify-without-jsonify": "^1.0.2", diff --git a/packages/selected-network-controller/package.json b/packages/selected-network-controller/package.json index 7b5782fc842..163d42db67f 100644 --- a/packages/selected-network-controller/package.json +++ b/packages/selected-network-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/selected-network-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/selected-network-controller", @@ -65,7 +65,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "immer": "^9.0.6", diff --git a/packages/sentinel-api-service/package.json b/packages/sentinel-api-service/package.json index 973e2638674..411ef53f3ea 100644 --- a/packages/sentinel-api-service/package.json +++ b/packages/sentinel-api-service/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/sentinel-api-service", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/sentinel-api-service", @@ -64,7 +64,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/shield-controller/package.json b/packages/shield-controller/package.json index 2d16f664424..bb8aede9be0 100644 --- a/packages/shield-controller/package.json +++ b/packages/shield-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/shield-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/shield-controller", @@ -68,7 +68,6 @@ "@lavamoat/allow-scripts": "^3.0.4", "@lavamoat/preinstall-always-fail": "^2.1.0", "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/signature-controller/package.json b/packages/signature-controller/package.json index d6264e7049d..220211989fc 100644 --- a/packages/signature-controller/package.json +++ b/packages/signature-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/signature-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/signature-controller", @@ -72,7 +72,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/smart-transactions-controller/package.json b/packages/smart-transactions-controller/package.json index eeba4d2f25d..3e4a85b7b95 100644 --- a/packages/smart-transactions-controller/package.json +++ b/packages/smart-transactions-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/smart-transactions-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/smart-transactions-controller", @@ -78,7 +78,6 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/json-rpc-engine": "^10.5.0", - "@ts-bridge/cli": "^0.6.4", "deepmerge": "^4.2.2", "jest": "^29.7.0", "nock": "^13.3.1", diff --git a/packages/snap-account-service/package.json b/packages/snap-account-service/package.json index f97a22d8eba..bfb856f57d4 100644 --- a/packages/snap-account-service/package.json +++ b/packages/snap-account-service/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/snap-account-service", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/snap-account-service", @@ -70,7 +70,6 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/keyring-utils": "^3.3.1", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/social-controllers/package.json b/packages/social-controllers/package.json index 2888083f77b..595ff43bdc8 100644 --- a/packages/social-controllers/package.json +++ b/packages/social-controllers/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/social-controllers", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/social-controllers", @@ -64,7 +64,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/solana-test-validator-up/package.json b/packages/solana-test-validator-up/package.json index 3ec66fb7c49..8056b749bb3 100644 --- a/packages/solana-test-validator-up/package.json +++ b/packages/solana-test-validator-up/package.json @@ -40,8 +40,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/solana-test-validator-up", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/solana-test-validator-up", @@ -60,7 +60,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/stellar-quickstart-up/package.json b/packages/stellar-quickstart-up/package.json index 9265f105aa6..95148d5d1f8 100644 --- a/packages/stellar-quickstart-up/package.json +++ b/packages/stellar-quickstart-up/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/stellar-quickstart-up", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/stellar-quickstart-up", @@ -56,7 +56,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/storage-service/package.json b/packages/storage-service/package.json index fe64d8e28dd..fea52f591c1 100644 --- a/packages/storage-service/package.json +++ b/packages/storage-service/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/storage-service", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/storage-service", @@ -60,7 +60,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/subscription-controller/package.json b/packages/subscription-controller/package.json index cef211064d2..2d343ba89e8 100644 --- a/packages/subscription-controller/package.json +++ b/packages/subscription-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/subscription-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/subscription-controller", @@ -66,7 +66,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/transaction-controller/package.json b/packages/transaction-controller/package.json index ca3422fecfb..4fefe3b02fd 100644 --- a/packages/transaction-controller/package.json +++ b/packages/transaction-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/transaction-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/transaction-controller", @@ -90,7 +90,6 @@ "@metamask/eth-block-tracker": "^15.0.0", "@metamask/eth-json-rpc-provider": "^6.0.1", "@metamask/ethjs-provider-http": "^0.3.0", - "@ts-bridge/cli": "^0.6.4", "@types/bn.js": "^5.1.5", "@types/jest": "^29.5.14", "@types/node": "^16.18.54", diff --git a/packages/transaction-pay-controller/package.json b/packages/transaction-pay-controller/package.json index 08ffbff1276..852c84fb0d6 100644 --- a/packages/transaction-pay-controller/package.json +++ b/packages/transaction-pay-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/transaction-pay-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/transaction-pay-controller", @@ -79,7 +79,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/user-operation-controller/package.json b/packages/user-operation-controller/package.json index d2c071491aa..ffdc2ce986c 100644 --- a/packages/user-operation-controller/package.json +++ b/packages/user-operation-controller/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/user-operation-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/user-operation-controller", @@ -77,7 +77,6 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/eth-block-tracker": "^15.0.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/packages/wallet-cli/package.json b/packages/wallet-cli/package.json index f782c7f6c3a..2789786d96f 100644 --- a/packages/wallet-cli/package.json +++ b/packages/wallet-cli/package.json @@ -31,8 +31,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "changelog:update": "../../scripts/update-changelog.sh @metamask/wallet-cli", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/wallet-cli", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -62,7 +62,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/better-sqlite3": "^7.6.13", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", diff --git a/packages/wallet/package.json b/packages/wallet/package.json index 6cb5d82c89c..21d44501160 100644 --- a/packages/wallet/package.json +++ b/packages/wallet/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/wallet", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/wallet", @@ -73,7 +73,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/scripts/create-package/package-template/package.json b/scripts/create-package/package-template/package.json index 6093ba3b9e8..1ba6a6746ba 100644 --- a/scripts/create-package/package-template/package.json +++ b/scripts/create-package/package-template/package.json @@ -39,8 +39,8 @@ "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", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh PACKAGE_NAME", "changelog:validate": "../../scripts/validate-changelog.sh PACKAGE_NAME", @@ -54,7 +54,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/tsconfig.packages.build.json b/tsconfig.packages.build.json index e971538b76e..8bdb779bcef 100644 --- a/tsconfig.packages.build.json +++ b/tsconfig.packages.build.json @@ -6,7 +6,6 @@ "compilerOptions": { "declaration": true, "declarationMap": true, - "emitDeclarationOnly": true, "inlineSources": true, "sourceMap": true, "skipLibCheck": true diff --git a/yarn.config.cjs b/yarn.config.cjs index 453d202265f..7715deb1ce4 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -138,21 +138,21 @@ module.exports = defineConfig({ } // All non-root packages must have a "build" script. All packages that - // do not exclusively deploy documentation sites must use `ts-bridge`. + // do not exclusively deploy documentation sites must use `tsc`. if (DOCSITE_PACKAGES.includes(workspace.ident)) { expectWorkspaceField(workspace, 'scripts.build'); } else { expectWorkspaceField( workspace, 'scripts.build', - 'ts-bridge --project tsconfig.build.json --verbose --clean --no-references', + 'tsc --project tsconfig.build.json', ); // All non-root packages must have the same "build:all" script. expectWorkspaceField( workspace, 'scripts.build:all', - 'ts-bridge --project tsconfig.build.json --verbose --clean', + 'tsc --build tsconfig.build.json --verbose', ); } diff --git a/yarn.lock b/yarn.lock index d8fca6b2606..8894e8e694f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5438,7 +5438,6 @@ __metadata: "@metamask/snaps-utils": "npm:^12.1.2" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" fast-deep-equal: "npm:^3.1.3" @@ -5475,7 +5474,6 @@ __metadata: "@metamask/providers": "npm:^22.1.0" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/readable-stream": "npm:^2.3.0" deepmerge: "npm:^4.2.2" @@ -5516,7 +5514,6 @@ __metadata: "@metamask/controller-utils": "npm:^12.3.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -5537,7 +5534,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -5557,7 +5553,6 @@ __metadata: "@metamask/base-controller": "npm:^9.1.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/uuid": "npm:^8.3.0" deepmerge: "npm:^4.2.2" @@ -5581,7 +5576,6 @@ __metadata: "@metamask/controller-utils": "npm:^12.3.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -5601,7 +5595,6 @@ __metadata: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" "@metamask/messenger": "npm:^2.0.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -5627,7 +5620,6 @@ __metadata: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" "@metamask/messenger": "npm:^2.0.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -5648,7 +5640,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -5692,7 +5683,6 @@ __metadata: "@metamask/snaps-utils": "npm:^12.1.2" "@metamask/transaction-controller": "npm:^69.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/lodash": "npm:^4.14.191" async-mutex: "npm:^0.5.0" @@ -5755,7 +5745,6 @@ __metadata: "@metamask/transaction-controller": "npm:^69.0.0" "@metamask/utils": "npm:^11.11.0" "@tanstack/query-core": "npm:^5.62.16" - "@ts-bridge/cli": "npm:^0.6.4" "@types/bn.js": "npm:^5.1.5" "@types/jest": "npm:^29.5.14" "@types/lodash": "npm:^4.14.191" @@ -5830,7 +5819,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -5873,7 +5861,6 @@ __metadata: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" immer: "npm:^9.0.6" @@ -5895,7 +5882,6 @@ __metadata: "@metamask/storage-service": "npm:^1.0.2" "@metamask/utils": "npm:^11.11.0" "@tanstack/query-core": "npm:^4.43.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/lodash": "npm:^4.14.191" cockatiel: "npm:^3.1.2" @@ -5918,7 +5904,6 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/local-node-utils": "npm:^1.0.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -5961,7 +5946,6 @@ __metadata: "@metamask/superstruct": "npm:^3.1.0" "@metamask/transaction-controller": "npm:^69.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" bignumber.js: "npm:^9.1.2" deepmerge: "npm:^4.2.2" @@ -5998,7 +5982,6 @@ __metadata: "@metamask/superstruct": "npm:^3.1.0" "@metamask/transaction-controller": "npm:^69.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" bignumber.js: "npm:^9.1.2" deepmerge: "npm:^4.2.2" @@ -6030,7 +6013,6 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/eslint": "npm:^8.44.7" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" @@ -6054,7 +6036,6 @@ __metadata: "@metamask/permission-controller": "npm:^13.1.1" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -6078,7 +6059,6 @@ __metadata: "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.11.0" "@tanstack/query-core": "npm:^4.43.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -6102,7 +6082,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/profile-sync-controller": "npm:^28.3.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -6121,7 +6100,6 @@ __metadata: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" "@metamask/messenger": "npm:^2.0.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -6146,7 +6124,6 @@ __metadata: "@metamask/keyring-api": "npm:^23.5.0" "@metamask/transaction-controller": "npm:^69.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -6168,7 +6145,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -6190,7 +6166,6 @@ __metadata: "@metamask/base-controller": "npm:^9.1.0" "@metamask/json-rpc-engine": "npm:^10.5.0" "@metamask/messenger": "npm:^2.0.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" immer: "npm:^9.0.6" @@ -6218,7 +6193,6 @@ __metadata: "@metamask/remote-feature-flag-controller": "npm:^4.2.2" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -6239,7 +6213,6 @@ __metadata: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" "@metamask/messenger": "npm:^2.0.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -6291,7 +6264,6 @@ __metadata: "@metamask/ethjs-unit": "npm:^0.3.0" "@metamask/utils": "npm:^11.11.0" "@spruceid/siwe-parser": "npm:2.1.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/bn.js": "npm:^5.1.5" "@types/jest": "npm:^29.5.14" "@types/lodash": "npm:^4.14.191" @@ -6328,7 +6300,6 @@ __metadata: "@metamask/remote-feature-flag-controller": "npm:^4.2.2" "@metamask/utils": "npm:^11.11.0" "@tanstack/query-core": "npm:^5.62.16" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" async-mutex: "npm:^0.5.0" deepmerge: "npm:^4.2.2" @@ -6360,7 +6331,6 @@ __metadata: "@metamask/network-controller": "npm:^34.0.0" "@metamask/skills": "npm:^0.1.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/lodash": "npm:^4.14.191" "@types/node": "npm:^16.18.54" @@ -6439,7 +6409,6 @@ __metadata: "@metamask/keyring-controller": "npm:^27.1.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -6484,7 +6453,6 @@ __metadata: "@metamask/network-controller": "npm:^34.0.0" "@metamask/stake-sdk": "npm:^3.2.1" "@metamask/transaction-controller": "npm:^69.0.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -6509,7 +6477,6 @@ __metadata: "@metamask/superstruct": "npm:^3.1.0" "@metamask/transaction-controller": "npm:^69.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -6533,7 +6500,6 @@ __metadata: "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -6556,7 +6522,6 @@ __metadata: "@metamask/permission-controller": "npm:^13.1.1" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -6580,7 +6545,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/network-controller": "npm:^34.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -6665,7 +6629,6 @@ __metadata: "@metamask/json-rpc-engine": "npm:^10.5.0" "@metamask/safe-event-emitter": "npm:^3.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/json-rpc-random-id": "npm:^1.0.1" deepmerge: "npm:^4.2.2" @@ -6736,7 +6699,6 @@ __metadata: "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/deep-freeze-strict": "npm:^1.1.0" "@types/jest": "npm:^29.5.14" deep-freeze-strict: "npm:^1.1.1" @@ -6774,7 +6736,6 @@ __metadata: "@metamask/json-rpc-engine": "npm:^10.5.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" ethers: "npm:^6.12.0" @@ -7015,7 +6976,6 @@ __metadata: resolution: "@metamask/foundryup@workspace:packages/foundryup" dependencies: "@metamask/auto-changelog": "npm:^6.1.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/unzipper": "npm:^0.10.10" "@types/yargs": "npm:^17.0.32" @@ -7053,7 +7013,6 @@ __metadata: "@metamask/network-controller": "npm:^34.0.0" "@metamask/polling-controller": "npm:^16.0.8" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/bn.js": "npm:^5.1.5" "@types/jest": "npm:^29.5.14" "@types/jest-when": "npm:^2.7.3" @@ -7093,7 +7052,6 @@ __metadata: "@metamask/snaps-utils": "npm:^12.1.2" "@metamask/transaction-controller": "npm:^69.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -7113,7 +7071,6 @@ __metadata: "@metamask/base-controller": "npm:^9.1.0" "@metamask/controller-utils": "npm:^12.3.0" "@metamask/messenger": "npm:^2.0.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -7131,7 +7088,6 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/local-node-utils": "npm:^1.0.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -7156,7 +7112,6 @@ __metadata: "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/safe-event-emitter": "npm:^3.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/deep-freeze-strict": "npm:^1.1.0" "@types/jest": "npm:^29.5.14" deep-freeze-strict: "npm:^1.1.1" @@ -7178,7 +7133,6 @@ __metadata: "@metamask/json-rpc-engine": "npm:^10.5.0" "@metamask/safe-event-emitter": "npm:^3.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/readable-stream": "npm:^2.3.0" deepmerge: "npm:^4.2.2" @@ -7241,7 +7195,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/scure-bip39": "npm:^2.1.1" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" async-mutex: "npm:^0.5.0" deepmerge: "npm:^4.2.2" @@ -7350,7 +7303,6 @@ __metadata: resolution: "@metamask/local-node-utils@workspace:packages/local-node-utils" dependencies: "@metamask/auto-changelog": "npm:^6.1.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -7372,7 +7324,6 @@ __metadata: "@metamask/base-controller": "npm:^9.1.0" "@metamask/controller-utils": "npm:^12.3.0" "@metamask/messenger": "npm:^2.0.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -7395,7 +7346,6 @@ __metadata: "@metamask/eth-sig-util": "npm:^8.2.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/uuid": "npm:^8.3.0" deepmerge: "npm:^4.2.2" @@ -7416,7 +7366,6 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/yargs": "npm:^17.0.32" deepmerge: "npm:^4.2.2" @@ -7462,7 +7411,6 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" immer: "npm:^9.0.6" @@ -7495,7 +7443,6 @@ __metadata: "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.11.0" "@tanstack/query-core": "npm:^4.43.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -7523,7 +7470,6 @@ __metadata: "@metamask/remote-feature-flag-controller": "npm:^4.2.2" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -7549,7 +7495,6 @@ __metadata: "@metamask/keyring-utils": "npm:^3.3.1" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" async-mutex: "npm:^0.5.0" deepmerge: "npm:^4.2.2" @@ -7577,7 +7522,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/network-controller": "npm:^34.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -7615,7 +7559,6 @@ __metadata: "@metamask/snaps-utils": "npm:^12.1.2" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/uuid": "npm:^8.3.0" async-mutex: "npm:^0.5.0" @@ -7656,7 +7599,6 @@ __metadata: "@metamask/utils": "npm:^11.11.0" "@open-rpc/meta-schema": "npm:^1.14.6" "@open-rpc/schema-utils-js": "npm:^2.0.5" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -7685,7 +7627,6 @@ __metadata: "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.11.0" "@solana/addresses": "npm:^2.0.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/lodash": "npm:^4.14.191" "@types/uuid": "npm:^8.3.0" @@ -7719,7 +7660,6 @@ __metadata: "@metamask/snaps-sdk": "npm:^11.0.0" "@metamask/snaps-utils": "npm:^12.1.2" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/uuid": "npm:^8.3.0" deepmerge: "npm:^4.2.2" @@ -7743,7 +7683,6 @@ __metadata: "@metamask/controller-utils": "npm:^12.3.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" async-mutex: "npm:^0.5.0" deepmerge: "npm:^4.2.2" @@ -7769,7 +7708,6 @@ __metadata: "@metamask/network-controller": "npm:^34.0.0" "@metamask/network-enablement-controller": "npm:^5.6.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -7802,7 +7740,6 @@ __metadata: "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/swappable-obj-proxy": "npm:^2.3.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/deep-freeze-strict": "npm:^1.1.0" "@types/jest": "npm:^29.5.14" "@types/jest-when": "npm:^2.7.3" @@ -7845,7 +7782,6 @@ __metadata: "@metamask/slip44": "npm:^4.3.0" "@metamask/transaction-controller": "npm:^69.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -7885,7 +7821,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/profile-sync-controller": "npm:^28.3.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/lodash": "npm:^4.14.191" "@types/readable-stream": "npm:^2.3.0" @@ -7941,7 +7876,6 @@ __metadata: "@noble/ciphers": "npm:^1.3.0" "@noble/curves": "npm:^1.9.2" "@noble/hashes": "npm:^1.8.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -7984,7 +7918,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/deep-freeze-strict": "npm:^1.1.0" "@types/jest": "npm:^29.5.14" deep-freeze-strict: "npm:^1.1.1" @@ -8009,7 +7942,6 @@ __metadata: "@metamask/json-rpc-engine": "npm:^10.5.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/deep-freeze-strict": "npm:^1.1.0" "@types/jest": "npm:^29.5.14" deep-freeze-strict: "npm:^1.1.1" @@ -8046,7 +7978,6 @@ __metadata: "@metamask/utils": "npm:^11.11.0" "@myx-trade/sdk": "npm:^0.1.265" "@nktkas/hyperliquid": "npm:^0.33.1" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/uuid": "npm:^8.3.0" bignumber.js: "npm:^9.1.2" @@ -8076,7 +8007,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/transaction-controller": "npm:^69.0.0" "@noble/hashes": "npm:^1.8.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/punycode": "npm:^2.1.0" deepmerge: "npm:^4.2.2" @@ -8106,7 +8036,6 @@ __metadata: "@mdx-js/react": "npm:^3.1.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/node": "npm:^16.18.54" "@types/npm-which": "npm:^3" @@ -8139,7 +8068,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/network-controller": "npm:^34.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" "@types/uuid": "npm:^8.3.0" deepmerge: "npm:^4.2.2" @@ -8172,7 +8100,6 @@ __metadata: "@metamask/base-controller": "npm:^9.1.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -8203,7 +8130,6 @@ __metadata: "@metamask/superstruct": "npm:^3.1.0" "@metamask/transaction-controller": "npm:^69.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" async-mutex: "npm:^0.5.0" deepmerge: "npm:^4.2.2" @@ -8238,7 +8164,6 @@ __metadata: "@metamask/utils": "npm:^11.11.0" "@noble/ciphers": "npm:^1.3.0" "@noble/hashes": "npm:^1.8.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" ethers: "npm:^6.12.0" @@ -8291,7 +8216,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/profile-sync-controller": "npm:^28.3.0" "@metamask/remote-feature-flag-controller": "npm:^4.2.2" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -8313,7 +8237,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -8335,7 +8258,6 @@ __metadata: "@metamask/utils": "npm:^11.11.0" "@tanstack/query-core": "npm:^4.43.0" "@tanstack/react-query": "npm:^4.43.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -8366,7 +8288,6 @@ __metadata: "@metamask/controller-utils": "npm:^12.3.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -8410,7 +8331,6 @@ __metadata: "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.11.0" "@tanstack/query-core": "npm:^4.43.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -8450,7 +8370,6 @@ __metadata: "@noble/ciphers": "npm:^1.3.0" "@noble/curves": "npm:^1.9.2" "@noble/hashes": "npm:^1.8.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/elliptic": "npm:^6" "@types/jest": "npm:^29.5.14" "@types/json-stable-stringify-without-jsonify": "npm:^1.0.2" @@ -8478,7 +8397,6 @@ __metadata: "@metamask/permission-controller": "npm:^13.1.1" "@metamask/swappable-obj-proxy": "npm:^2.3.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" immer: "npm:^9.0.6" @@ -8505,7 +8423,6 @@ __metadata: "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^11.11.0" "@tanstack/query-core": "npm:^4.43.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -8532,7 +8449,6 @@ __metadata: "@metamask/signature-controller": "npm:^39.2.7" "@metamask/transaction-controller": "npm:^69.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" cockatiel: "npm:^3.1.2" deepmerge: "npm:^4.2.2" @@ -8563,7 +8479,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/network-controller": "npm:^34.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -8616,7 +8531,6 @@ __metadata: "@metamask/superstruct": "npm:^3.1.0" "@metamask/transaction-controller": "npm:^69.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" jest: "npm:^29.7.0" @@ -8647,7 +8561,6 @@ __metadata: "@metamask/snaps-controllers": "npm:^19.0.0" "@metamask/snaps-sdk": "npm:^11.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -8788,7 +8701,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/profile-sync-controller": "npm:^28.3.0" "@metamask/superstruct": "npm:^3.1.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -8806,7 +8718,6 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/local-node-utils": "npm:^1.0.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -8832,7 +8743,6 @@ __metadata: resolution: "@metamask/stellar-quickstart-up@workspace:packages/stellar-quickstart-up" dependencies: "@metamask/auto-changelog": "npm:^6.1.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -8851,7 +8761,6 @@ __metadata: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -8875,7 +8784,6 @@ __metadata: "@metamask/profile-sync-controller": "npm:^28.3.0" "@metamask/transaction-controller": "npm:^69.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" bignumber.js: "npm:^9.1.2" deepmerge: "npm:^4.2.2" @@ -8950,7 +8858,6 @@ __metadata: "@metamask/remote-feature-flag-controller": "npm:^4.2.2" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/bn.js": "npm:^5.1.5" "@types/jest": "npm:^29.5.14" "@types/node": "npm:^16.18.54" @@ -8998,7 +8905,6 @@ __metadata: "@metamask/remote-feature-flag-controller": "npm:^4.2.2" "@metamask/transaction-controller": "npm:^69.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" bignumber.js: "npm:^9.1.2" bn.js: "npm:^5.2.1" @@ -9033,7 +8939,6 @@ __metadata: "@metamask/superstruct": "npm:^3.1.0" "@metamask/transaction-controller": "npm:^69.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" bn.js: "npm:^5.2.1" deepmerge: "npm:^4.2.2" @@ -9103,7 +9008,6 @@ __metadata: "@metamask/utils": "npm:^11.11.0" "@metamask/wallet": "npm:^7.0.1" "@oclif/core": "npm:^4.10.5" - "@ts-bridge/cli": "npm:^0.6.4" "@types/better-sqlite3": "npm:^7.6.13" "@types/jest": "npm:^29.5.14" better-sqlite3: "npm:^12.9.0" @@ -9165,7 +9069,6 @@ __metadata: "@metamask/storage-service": "npm:^1.0.2" "@metamask/transaction-controller": "npm:^69.0.0" "@metamask/utils": "npm:^11.11.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" @@ -11014,30 +10917,6 @@ __metadata: languageName: node linkType: hard -"@ts-bridge/cli@npm:^0.6.4": - version: 0.6.4 - resolution: "@ts-bridge/cli@npm:0.6.4" - dependencies: - "@ts-bridge/resolver": "npm:^0.2.0" - chalk: "npm:^5.3.0" - cjs-module-lexer: "npm:^1.3.1" - yargs: "npm:^17.7.2" - peerDependencies: - typescript: ">=4.8.0" - bin: - ts-bridge: ./dist/index.js - tsbridge: ./dist/index.js - checksum: 10/257ee0cacec71c1b3cc018825088e06b4bd554ba5fe95bdb98c4c82edd6cd4bcff1054d351e6c7cdfdd3bd2145a055b5d14fa453a6ece761645e42b48b88e9a0 - languageName: node - linkType: hard - -"@ts-bridge/resolver@npm:^0.2.0": - version: 0.2.0 - resolution: "@ts-bridge/resolver@npm:0.2.0" - checksum: 10/d4cfd1f47e9648a5f9c893b1b076adabde3a57cbe81ef823bcbbcc77a122fb6f06d99f40ff48198f8dc766bfc4b3b351d4e87cfcf2db64f7e6db924eb82a5db1 - languageName: node - linkType: hard - "@ts-morph/common@npm:~0.29.0": version: 0.29.0 resolution: "@ts-morph/common@npm:0.29.0" @@ -13497,7 +13376,7 @@ __metadata: languageName: node linkType: hard -"cjs-module-lexer@npm:^1.0.0, cjs-module-lexer@npm:^1.3.1": +"cjs-module-lexer@npm:^1.0.0": version: 1.4.0 resolution: "cjs-module-lexer@npm:1.4.0" checksum: 10/b041096749792526120d8b8756929f8ef5dd4596502a0e1013f857e3027acd6091915fea77037921d70ee1a99988a100d994d3d3c2e323b04dd4c5ffd516cf13 From 8771c2ee141fc76041f847b6037a6ca1046bfec9 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 13:35:31 +0200 Subject: [PATCH 002/115] Update package exports to ESM-only Remove CJS entry points (`main`, `types`, `require`) from all package manifests and simplify `exports` to a single `import` condition. This drops the dual CJS/ESM output in favour of ESM-only distribution. --- package.json | 2 + packages/account-tree-controller/package.json | 12 +- .../src/AccountTreeController.ts | 52 +++----- .../src/backup-and-sync/analytics/segment.ts | 2 +- .../src/backup-and-sync/service/index.ts | 33 +++-- .../src/backup-and-sync/syncing/group.ts | 24 ++-- .../src/backup-and-sync/syncing/legacy.ts | 14 +-- .../src/backup-and-sync/syncing/metadata.ts | 6 +- .../src/backup-and-sync/syncing/wallet.ts | 19 +-- .../src/backup-and-sync/types.ts | 12 +- packages/account-tree-controller/src/types.ts | 10 +- packages/accounts-controller/package.json | 12 +- packages/accounts-controller/src/utils.ts | 4 +- packages/address-book-controller/package.json | 12 +- packages/ai-controllers/package.json | 12 +- packages/analytics-controller/package.json | 12 +- .../package.json | 12 +- packages/announcement-controller/package.json | 12 +- packages/app-metadata-controller/package.json | 12 +- packages/approval-controller/package.json | 12 +- packages/assets-controller/package.json | 12 +- .../assets-controller/src/AssetsController.ts | 68 +++++----- .../src/data-sources/AccountsApiDataSource.ts | 12 +- .../src/data-sources/PriceDataSource.ts | 14 +-- .../src/data-sources/RpcDataSource.ts | 22 ++-- .../data-sources/StakedBalanceDataSource.ts | 14 +-- .../src/data-sources/TokenDataSource.ts | 12 +- .../clients/MulticallClient.ts | 6 +- .../clients/TokensApiClient.ts | 2 +- .../evm-rpc-services/clients/index.ts | 6 +- .../data-sources/evm-rpc-services/index.ts | 8 +- .../services/BalanceFetcher.ts | 8 +- .../services/StakedBalanceFetcher.ts | 4 +- .../services/TokenDetector.ts | 10 +- .../evm-rpc-services/utils/parsing.ts | 2 +- packages/assets-controller/src/index.ts | 50 ++++---- .../CustomAssetGraduationMiddleware.ts | 8 +- .../src/middlewares/DetectionMiddleware.ts | 8 +- packages/assets-controllers/package.json | 12 +- .../MultichainAssetsRatesController.ts | 12 +- .../MultichainBalancesController.ts | 6 +- .../src/RatesController/RatesController.ts | 4 +- .../src/RatesController/types.ts | 4 +- .../TokenSearchDiscoveryDataController.ts | 12 +- packages/assets-controllers/src/assetsUtil.ts | 10 +- packages/assets-controllers/src/balances.ts | 26 ++-- packages/assets-controllers/src/index.ts | 109 ++++++++-------- .../src/selectors/token-selectors.ts | 27 ++-- .../authenticated-user-storage/package.json | 12 +- packages/base-controller/package.json | 12 +- packages/base-data-service/package.json | 12 +- packages/bitcoin-regtest-up/package.json | 12 +- packages/bridge-controller/package.json | 12 +- .../bridge-status-controller/package.json | 12 +- .../src/bridge-status-controller.ts | 46 +++---- packages/build-utils/package.json | 12 +- .../chain-agnostic-permission/package.json | 12 +- packages/chomp-api-service/package.json | 12 +- packages/claims-controller/package.json | 12 +- packages/client-controller/package.json | 12 +- packages/client-utils/package.json | 12 +- packages/compliance-controller/package.json | 12 +- packages/composable-controller/package.json | 12 +- .../config-registry-controller/package.json | 12 +- packages/connectivity-controller/package.json | 12 +- packages/controller-utils/package.json | 12 +- packages/core-backend/package.json | 12 +- .../src/ApiPlatformClientService.ts | 6 +- .../core-backend/src/api/ApiPlatformClient.ts | 14 +-- packages/core-backend/src/api/index.ts | 26 ++-- packages/core-backend/src/index.ts | 22 ++-- packages/delegation-controller/package.json | 12 +- packages/earn-controller/package.json | 12 +- packages/eip-5792-middleware/package.json | 12 +- .../package.json | 12 +- .../package.json | 12 +- packages/ens-controller/package.json | 12 +- packages/eth-block-tracker/package.json | 12 +- packages/eth-json-rpc-middleware/package.json | 12 +- packages/eth-json-rpc-provider/package.json | 12 +- packages/gas-fee-controller/package.json | 12 +- .../gator-permissions-controller/package.json | 12 +- .../src/GatorPermissionsController.ts | 22 ++-- .../src/decodePermission/index.ts | 6 +- .../gator-permissions-controller/src/index.ts | 16 +-- packages/geolocation-controller/package.json | 12 +- packages/java-tron-up/package.json | 12 +- packages/json-rpc-engine/package.json | 22 +--- .../json-rpc-middleware-stream/package.json | 12 +- packages/keyring-controller/package.json | 12 +- packages/local-node-utils/package.json | 12 +- packages/logging-controller/package.json | 12 +- packages/message-manager/package.json | 12 +- packages/messenger/package.json | 12 +- .../package.json | 12 +- .../package.json | 12 +- .../src/index.ts | 2 +- .../src/money-account-balance-service.ts | 22 ++-- .../src/requestNormalization.ts | 4 +- .../money-account-controller/package.json | 12 +- .../package.json | 12 +- .../multichain-account-service/package.json | 12 +- .../src/MultichainAccountGroup.ts | 12 +- .../src/MultichainAccountService.ts | 32 ++--- .../src/MultichainAccountWallet.ts | 27 ++-- .../multichain-account-service/src/index.ts | 12 +- .../src/providers/BtcAccountProvider.ts | 8 +- .../src/providers/EvmAccountProvider.ts | 12 +- .../src/providers/SnapAccountProvider.ts | 16 +-- .../src/providers/SolAccountProvider.ts | 8 +- .../src/providers/TrxAccountProvider.ts | 8 +- .../src/providers/XlmAccountProvider.ts | 8 +- .../src/tests/providers.ts | 7 +- .../multichain-api-middleware/package.json | 12 +- .../multichain-api-middleware/src/index.ts | 12 +- ...multichainMethodCallValidatorMiddleware.ts | 4 +- .../package.json | 12 +- .../package.json | 12 +- packages/name-controller/package.json | 12 +- .../package.json | 12 +- packages/network-controller/package.json | 12 +- .../package.json | 12 +- .../src/NetworkEnablementController.ts | 9 +- .../src/index.ts | 10 +- .../package.json | 62 ++-------- .../__fixtures__/mockMessenger.ts | 2 +- packages/passkey-controller/package.json | 12 +- packages/permission-controller/package.json | 12 +- .../permission-log-controller/package.json | 12 +- packages/perps-controller/package.json | 52 ++------ .../perps-controller/src/PerpsController.ts | 71 ++++++----- .../aggregation/SubscriptionMultiplexer.ts | 6 +- .../src/constants/hyperLiquidConfig.ts | 6 +- packages/perps-controller/src/index.ts | 116 +++++++++--------- .../src/providers/AggregatedPerpsProvider.ts | 8 +- .../src/providers/HyperLiquidProvider.ts | 66 +++++----- .../src/providers/MYXProvider.ts | 26 ++-- .../src/routing/ProviderRouter.ts | 2 +- packages/perps-controller/src/selectors.ts | 6 +- .../src/services/AccountService.ts | 22 ++-- .../src/services/DataLakeService.ts | 16 +-- .../src/services/DepositService.ts | 12 +- .../src/services/EligibilityService.ts | 6 +- .../FeatureFlagConfigurationService.ts | 14 +-- .../src/services/HyperLiquidClientService.ts | 30 +++-- .../HyperLiquidSubscriptionService.ts | 34 ++--- .../src/services/HyperLiquidWalletService.ts | 10 +- .../src/services/MYXClientService.ts | 10 +- .../src/services/MYXWalletService.ts | 10 +- .../src/services/MarketDataService.ts | 22 ++-- .../src/services/RewardsIntegrationService.ts | 14 +-- .../src/services/ServiceContext.ts | 4 +- .../src/services/TerminalMarketService.ts | 11 +- .../src/services/TradingService.ts | 22 ++-- .../src/utils/accountUtils.ts | 6 +- .../src/utils/hyperLiquidAdapter.ts | 10 +- .../utils/hyperLiquidOrderBookProcessor.ts | 2 +- .../src/utils/hyperLiquidValidation.ts | 8 +- .../src/utils/marketDataTransform.ts | 10 +- .../src/utils/marketSearch.ts | 2 +- .../perps-controller/src/utils/marketUtils.ts | 7 +- .../perps-controller/src/utils/myxAdapter.ts | 8 +- .../src/utils/orderCalculations.ts | 12 +- .../src/utils/perpsDiskPersistence.ts | 9 +- .../src/utils/rewardsUtils.ts | 4 +- .../perps-controller/src/utils/sortMarkets.ts | 6 +- packages/phishing-controller/package.json | 12 +- packages/polling-controller/package.json | 12 +- packages/preferences-controller/package.json | 12 +- .../profile-metrics-controller/package.json | 12 +- packages/profile-sync-controller/package.json | 62 ++-------- .../__fixtures__/mockMessenger.ts | 6 +- packages/profile-sync-controller/src/index.ts | 6 +- packages/ramps-controller/package.json | 12 +- packages/rate-limit-controller/package.json | 12 +- packages/react-data-query/package.json | 12 +- .../package.json | 12 +- packages/sample-controllers/package.json | 12 +- .../package.json | 12 +- .../selected-network-controller/package.json | 12 +- packages/sentinel-api-service/package.json | 12 +- packages/shield-controller/package.json | 12 +- packages/signature-controller/package.json | 12 +- .../package.json | 12 +- .../src/types.ts | 2 +- packages/snap-account-service/package.json | 12 +- .../src/SnapAccountService.ts | 6 +- packages/social-controllers/package.json | 12 +- .../solana-test-validator-up/package.json | 12 +- packages/stellar-quickstart-up/package.json | 12 +- packages/storage-service/package.json | 12 +- packages/subscription-controller/package.json | 12 +- packages/transaction-controller/package.json | 12 +- .../src/TransactionController.ts | 100 ++++++++------- .../src/hooks/ExtraTransactionsPublishHook.ts | 6 +- .../src/utils/balance.ts | 6 +- .../transaction-controller/src/utils/batch.ts | 50 ++++---- .../src/utils/gas-fee-tokens.ts | 26 ++-- .../transaction-pay-controller/package.json | 12 +- .../src/actions/update-fiat-payment.ts | 8 +- .../src/actions/update-payment-token.ts | 10 +- .../src/helpers/QuoteRefresher.ts | 14 +-- .../src/strategy/relay/relay-quotes.ts | 36 +++--- .../src/tests/messenger-mock.ts | 6 +- .../src/utils/gas.ts | 15 ++- .../src/utils/quote-gas.ts | 8 +- .../src/utils/source-amounts.ts | 20 +-- .../user-operation-controller/package.json | 12 +- packages/wallet/package.json | 12 +- .../wallet/src/initialization/defaults.ts | 4 +- yarn.config.cjs | 65 ++++++---- 211 files changed, 1254 insertions(+), 2037 deletions(-) diff --git a/package.json b/package.json index 4c7aea38cc4..8309c71a86a 100644 --- a/package.json +++ b/package.json @@ -105,6 +105,8 @@ "yargs": "^17.7.2" }, "resolutions": { + "@metamask/safe-event-emitter@npm:^3.0.0": "patch:@metamask/safe-event-emitter@npm%3A3.1.1#~/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch", + "@metamask/safe-event-emitter@npm:^3.1.1": "patch:@metamask/safe-event-emitter@npm%3A3.1.1#~/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch", "@nktkas/hyperliquid@npm:^0.33.1": "patch:@nktkas/hyperliquid@npm%3A0.33.1#~/.yarn/patches/@nktkas-hyperliquid-npm-0.33.1-6a541fdd1d.patch", "elliptic@6.5.4": "^6.5.7", "fast-xml-parser@^4.3.4": "^4.4.1", diff --git a/packages/account-tree-controller/package.json b/packages/account-tree-controller/package.json index ee7247d53ba..27b717021e2 100644 --- a/packages/account-tree-controller/package.json +++ b/packages/account-tree-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/account-tree-controller/src/AccountTreeController.ts b/packages/account-tree-controller/src/AccountTreeController.ts index e37b2dc1524..ffeeab79723 100644 --- a/packages/account-tree-controller/src/AccountTreeController.ts +++ b/packages/account-tree-controller/src/AccountTreeController.ts @@ -15,33 +15,33 @@ import { isEvmAccountType } from '@metamask/keyring-api'; import type { InternalAccount } from '@metamask/keyring-internal-api'; import { assert } from '@metamask/utils'; -import type { BackupAndSyncEmitAnalyticsEventParams } from './backup-and-sync/analytics'; +import type { BackupAndSyncEmitAnalyticsEventParams } from './backup-and-sync/analytics/index.js'; import { formatAnalyticsEvent, traceFallback, -} from './backup-and-sync/analytics'; -import { BackupAndSyncService } from './backup-and-sync/service'; -import type { BackupAndSyncContext } from './backup-and-sync/types'; -import { createSyncMutationTracker } from './backup-and-sync/utils'; -import type { AccountGroupObject, AccountTypeOrderKey } from './group'; +} from './backup-and-sync/analytics/index.js'; +import { BackupAndSyncService } from './backup-and-sync/service/index.js'; +import type { BackupAndSyncContext } from './backup-and-sync/types.js'; +import { createSyncMutationTracker } from './backup-and-sync/utils/index.js'; +import type { AccountGroupObject, AccountTypeOrderKey } from './group.js'; import { ACCOUNT_TYPE_TO_SORT_ORDER, isAccountGroupNameUnique, isAccountGroupNameUniqueFromWallet, MAX_SORT_ORDER, -} from './group'; -import { projectLogger as log } from './logger'; -import type { Rule } from './rule'; -import { EntropyRule } from './rules/entropy'; -import { KeyringRule } from './rules/keyring'; -import { SnapRule } from './rules/snap'; +} from './group.js'; +import { projectLogger as log } from './logger.js'; +import type { Rule } from './rule.js'; +import { EntropyRule } from './rules/entropy.js'; +import { KeyringRule } from './rules/keyring.js'; +import { SnapRule } from './rules/snap.js'; import type { AccountTreeControllerConfig, AccountTreeControllerInternalBackupAndSyncConfig, AccountTreeControllerMessenger, AccountTreeControllerState, -} from './types'; -import type { AccountWalletObject, AccountWalletObjectOf } from './wallet'; +} from './types.js'; +import type { AccountWalletObject, AccountWalletObjectOf } from './wallet.js'; export const controllerName = 'AccountTreeController'; @@ -606,9 +606,7 @@ export class AccountTreeController extends BaseController< // Parse the highest account index being used (similar to accounts-controller) let highestNameIndex = 0; - for (const { id: otherGroupId } of Object.values( - wallet.groups, - ) as AccountGroupObject[]) { + for (const { id: otherGroupId } of Object.values(wallet.groups)) { // Skip the current group being processed if (otherGroupId === group.id) { continue; @@ -1317,9 +1315,7 @@ export class AccountTreeController extends BaseController< const now = Date.now(); /* istanbul ignore next */ - if (!state.accountGroupsMetadata[groupId]) { - state.accountGroupsMetadata[groupId] = {}; - } + state.accountGroupsMetadata[groupId] ??= {}; state.accountGroupsMetadata[groupId].lastSelected = now; const walletId = this.#groupIdToWalletId.get(groupId); @@ -1457,9 +1453,7 @@ export class AccountTreeController extends BaseController< id, ); - if (!candidate) { - candidate = id; - } + candidate ??= id; if (account && isEvmAccountType(account.type)) { // EVM accounts have a higher priority, so if we find any, we just // use that account! @@ -1594,9 +1588,7 @@ export class AccountTreeController extends BaseController< this.update((state) => { /* istanbul ignore next */ - if (!state.accountGroupsMetadata[groupId]) { - state.accountGroupsMetadata[groupId] = {}; - } + state.accountGroupsMetadata[groupId] ??= {}; // Update persistent metadata state.accountGroupsMetadata[groupId].name = { @@ -1664,9 +1656,7 @@ export class AccountTreeController extends BaseController< this.update((state) => { /* istanbul ignore next */ - if (!state.accountGroupsMetadata[groupId]) { - state.accountGroupsMetadata[groupId] = {}; - } + state.accountGroupsMetadata[groupId] ??= {}; // Update persistent metadata state.accountGroupsMetadata[groupId].pinned = { @@ -1710,9 +1700,7 @@ export class AccountTreeController extends BaseController< this.update((state) => { /* istanbul ignore next */ - if (!state.accountGroupsMetadata[groupId]) { - state.accountGroupsMetadata[groupId] = {}; - } + state.accountGroupsMetadata[groupId] ??= {}; // Update persistent metadata state.accountGroupsMetadata[groupId].hidden = { diff --git a/packages/account-tree-controller/src/backup-and-sync/analytics/segment.ts b/packages/account-tree-controller/src/backup-and-sync/analytics/segment.ts index 4f1e7502fcd..38ce50e9bd1 100644 --- a/packages/account-tree-controller/src/backup-and-sync/analytics/segment.ts +++ b/packages/account-tree-controller/src/backup-and-sync/analytics/segment.ts @@ -1,4 +1,4 @@ -import type { ProfileId } from '../authentication'; +import type { ProfileId } from '../authentication/index.js'; export const BackupAndSyncAnalyticsEvent = { WalletRenamed: 'wallet_renamed', diff --git a/packages/account-tree-controller/src/backup-and-sync/service/index.ts b/packages/account-tree-controller/src/backup-and-sync/service/index.ts index 749a113c38e..324b0ec9ffe 100644 --- a/packages/account-tree-controller/src/backup-and-sync/service/index.ts +++ b/packages/account-tree-controller/src/backup-and-sync/service/index.ts @@ -2,39 +2,39 @@ import type { AccountGroupId, AccountWalletId } from '@metamask/account-api'; import { AccountWalletType } from '@metamask/account-api'; import type { UserStorageController } from '@metamask/profile-sync-controller'; -import { backupAndSyncLogger } from '../../logger'; -import type { AccountTreeControllerState } from '../../types'; -import type { AccountWalletEntropyObject } from '../../wallet'; -import { TraceName } from '../analytics'; -import type { ProfileId } from '../authentication'; -import { getProfileId } from '../authentication'; +import { backupAndSyncLogger } from '../../logger.js'; +import type { AccountTreeControllerState } from '../../types.js'; +import type { AccountWalletEntropyObject } from '../../wallet.js'; +import { TraceName } from '../analytics/index.js'; +import type { ProfileId } from '../authentication/index.js'; +import { getProfileId } from '../authentication/index.js'; import { createLocalGroupsFromUserStorage, performLegacyAccountSyncing, syncGroupsMetadata, syncGroupMetadata, syncWalletMetadata, -} from '../syncing'; +} from '../syncing/index.js'; import type { BackupAndSyncContext, UserStorageSyncedWallet, UserStorageSyncedWalletGroup, -} from '../types'; +} from '../types.js'; import { getAllGroupsFromUserStorage, getGroupFromUserStorage, getWalletFromUserStorage, pushGroupToUserStorageBatch, -} from '../user-storage'; +} from '../user-storage/index.js'; import { createStateSnapshot, restoreStateFromSnapshot, getLocalEntropyWallets, getLocalGroupsForEntropyWallet, toErrorMessage, -} from '../utils'; -import type { StateSnapshot } from '../utils'; -import { AtomicSyncQueue } from './atomic-sync-queue'; +} from '../utils/index.js'; +import type { StateSnapshot } from '../utils/index.js'; +import { AtomicSyncQueue } from './atomic-sync-queue.js'; /** * Service responsible for managing all backup and sync operations. @@ -172,7 +172,6 @@ export class BackupAndSyncService { return; } - // eslint-disable-next-line no-void void this.#atomicSyncQueue.enqueue(() => this.#performSingleWalletSyncInner(walletId), ); @@ -198,7 +197,6 @@ export class BackupAndSyncService { return; } - // eslint-disable-next-line no-void void this.#atomicSyncQueue.enqueue(() => this.#performSingleGroupSyncInner(groupId), ); @@ -258,7 +256,7 @@ export class BackupAndSyncService { this.#firstOngoingFullSyncPromise = this.#atomicSyncQueue.clearAndEnqueue( () => this.#performFullSyncInner(), ); - // eslint-disable-next-line no-void + void this.#setupOngoingPromiseCleanup(this.#firstOngoingFullSyncPromise); } @@ -332,10 +330,7 @@ export class BackupAndSyncService { ]); // 2.1 Decide if we need to perform legacy account syncing - if ( - !walletFromUserStorage || - !walletFromUserStorage.isLegacyAccountSyncingDisabled - ) { + if (!walletFromUserStorage?.isLegacyAccountSyncingDisabled) { // 2.2 Perform legacy account syncing // This will migrate legacy account data to the new structure. // This operation will only be performed once. diff --git a/packages/account-tree-controller/src/backup-and-sync/syncing/group.ts b/packages/account-tree-controller/src/backup-and-sync/syncing/group.ts index 273625027dc..b65214c7386 100644 --- a/packages/account-tree-controller/src/backup-and-sync/syncing/group.ts +++ b/packages/account-tree-controller/src/backup-and-sync/syncing/group.ts @@ -1,23 +1,23 @@ import { toMultichainAccountWalletId } from '@metamask/account-api'; -import type { AccountGroupMultichainAccountObject } from '../../group'; -import { backupAndSyncLogger } from '../../logger'; -import type { AccountWalletEntropyObject } from '../../wallet'; -import type { BackupAndSyncAnalyticsAction } from '../analytics'; -import { BackupAndSyncAnalyticsEvent } from '../analytics'; -import type { ProfileId } from '../authentication'; -import { UserStorageSyncedWalletGroupSchema } from '../types'; +import type { AccountGroupMultichainAccountObject } from '../../group.js'; +import { backupAndSyncLogger } from '../../logger.js'; +import type { AccountWalletEntropyObject } from '../../wallet.js'; +import type { BackupAndSyncAnalyticsAction } from '../analytics/index.js'; +import { BackupAndSyncAnalyticsEvent } from '../analytics/index.js'; +import type { ProfileId } from '../authentication/index.js'; +import { UserStorageSyncedWalletGroupSchema } from '../types.js'; import type { BackupAndSyncContext, UserStorageSyncedWalletGroup, -} from '../types'; +} from '../types.js'; import { pushGroupToUserStorage, pushGroupToUserStorageBatch, -} from '../user-storage/network-operations'; -import { getLocalGroupsForEntropyWallet } from '../utils'; -import { toErrorMessage } from '../utils/errors'; -import { compareAndSyncMetadata } from './metadata'; +} from '../user-storage/network-operations.js'; +import { toErrorMessage } from '../utils/errors.js'; +import { getLocalGroupsForEntropyWallet } from '../utils/index.js'; +import { compareAndSyncMetadata } from './metadata.js'; /** * Creates multiple multichain account groups in batch (from 0 to maxGroupIndex). diff --git a/packages/account-tree-controller/src/backup-and-sync/syncing/legacy.ts b/packages/account-tree-controller/src/backup-and-sync/syncing/legacy.ts index b0749889d1e..b00def028bf 100644 --- a/packages/account-tree-controller/src/backup-and-sync/syncing/legacy.ts +++ b/packages/account-tree-controller/src/backup-and-sync/syncing/legacy.ts @@ -1,13 +1,13 @@ import { toMultichainAccountWalletId } from '@metamask/account-api'; import { getUUIDFromAddressOfNormalAccount } from '@metamask/accounts-controller'; -import { backupAndSyncLogger } from '../../logger'; -import { BackupAndSyncAnalyticsEvent } from '../analytics'; -import type { ProfileId } from '../authentication'; -import type { BackupAndSyncContext } from '../types'; -import { getAllLegacyUserStorageAccounts } from '../user-storage'; -import { getLocalGroupsForEntropyWallet } from '../utils'; -import { createMultichainAccountGroupsBatch } from './group'; +import { backupAndSyncLogger } from '../../logger.js'; +import { BackupAndSyncAnalyticsEvent } from '../analytics/index.js'; +import type { ProfileId } from '../authentication/index.js'; +import type { BackupAndSyncContext } from '../types.js'; +import { getAllLegacyUserStorageAccounts } from '../user-storage/index.js'; +import { getLocalGroupsForEntropyWallet } from '../utils/index.js'; +import { createMultichainAccountGroupsBatch } from './group.js'; /** * Performs a stripped down version of legacy account syncing, replacing the current diff --git a/packages/account-tree-controller/src/backup-and-sync/syncing/metadata.ts b/packages/account-tree-controller/src/backup-and-sync/syncing/metadata.ts index c3d5787666d..ec70941d652 100644 --- a/packages/account-tree-controller/src/backup-and-sync/syncing/metadata.ts +++ b/packages/account-tree-controller/src/backup-and-sync/syncing/metadata.ts @@ -1,8 +1,8 @@ import deepEqual from 'fast-deep-equal'; -import type { BackupAndSyncAnalyticsAction } from '../analytics'; -import type { ProfileId } from '../authentication'; -import type { BackupAndSyncContext } from '../types'; +import type { BackupAndSyncAnalyticsAction } from '../analytics/index.js'; +import type { ProfileId } from '../authentication/index.js'; +import type { BackupAndSyncContext } from '../types.js'; /** * Compares metadata between local and user storage, applying the most recent version. diff --git a/packages/account-tree-controller/src/backup-and-sync/syncing/wallet.ts b/packages/account-tree-controller/src/backup-and-sync/syncing/wallet.ts index 8d180bcc45a..348f7eca5bd 100644 --- a/packages/account-tree-controller/src/backup-and-sync/syncing/wallet.ts +++ b/packages/account-tree-controller/src/backup-and-sync/syncing/wallet.ts @@ -1,11 +1,14 @@ -import { backupAndSyncLogger } from '../../logger'; -import type { AccountWalletEntropyObject } from '../../wallet'; -import { BackupAndSyncAnalyticsEvent } from '../analytics'; -import type { ProfileId } from '../authentication'; -import { UserStorageSyncedWalletSchema } from '../types'; -import type { BackupAndSyncContext, UserStorageSyncedWallet } from '../types'; -import { pushWalletToUserStorage } from '../user-storage/network-operations'; -import { compareAndSyncMetadata } from './metadata'; +import { backupAndSyncLogger } from '../../logger.js'; +import type { AccountWalletEntropyObject } from '../../wallet.js'; +import { BackupAndSyncAnalyticsEvent } from '../analytics/index.js'; +import type { ProfileId } from '../authentication/index.js'; +import { UserStorageSyncedWalletSchema } from '../types.js'; +import type { + BackupAndSyncContext, + UserStorageSyncedWallet, +} from '../types.js'; +import { pushWalletToUserStorage } from '../user-storage/network-operations.js'; +import { compareAndSyncMetadata } from './metadata.js'; /** * Syncs wallet metadata fields and determines if the wallet needs to be pushed to user storage. diff --git a/packages/account-tree-controller/src/backup-and-sync/types.ts b/packages/account-tree-controller/src/backup-and-sync/types.ts index 7f6449c0632..a2d37797b4e 100644 --- a/packages/account-tree-controller/src/backup-and-sync/types.ts +++ b/packages/account-tree-controller/src/backup-and-sync/types.ts @@ -15,15 +15,15 @@ import { } from '@metamask/superstruct'; import type { Infer, Struct } from '@metamask/superstruct'; -import type { AccountTreeController } from '../AccountTreeController'; +import type { AccountTreeController } from '../AccountTreeController.js'; import type { AccountGroupMultichainAccountObject, AccountTreeGroupPersistedMetadata, -} from '../group'; -import type { RuleResult } from '../rule'; -import type { AccountTreeControllerMessenger } from '../types'; -import type { AccountTreeWalletPersistedMetadata } from '../wallet'; -import type { BackupAndSyncEmitAnalyticsEventParams } from './analytics'; +} from '../group.js'; +import type { RuleResult } from '../rule.js'; +import type { AccountTreeControllerMessenger } from '../types.js'; +import type { AccountTreeWalletPersistedMetadata } from '../wallet.js'; +import type { BackupAndSyncEmitAnalyticsEventParams } from './analytics/index.js'; /** * Schema for an updatable field with value and timestamp. diff --git a/packages/account-tree-controller/src/types.ts b/packages/account-tree-controller/src/types.ts index e7a66571399..4fff1d42f6d 100644 --- a/packages/account-tree-controller/src/types.ts +++ b/packages/account-tree-controller/src/types.ts @@ -27,20 +27,20 @@ import type { } from '@metamask/profile-sync-controller'; import type { SnapControllerGetSnapAction } from '@metamask/snaps-controllers'; -import type { controllerName } from './AccountTreeController'; -import type { AccountTreeControllerMethodActions } from './AccountTreeController-method-action-types'; +import type { AccountTreeControllerMethodActions } from './AccountTreeController-method-action-types.js'; +import type { controllerName } from './AccountTreeController.js'; import type { BackupAndSyncAnalyticsEventPayload, BackupAndSyncEmitAnalyticsEventParams, -} from './backup-and-sync/analytics'; +} from './backup-and-sync/analytics/index.js'; import type { AccountGroupObject, AccountTreeGroupPersistedMetadata, -} from './group'; +} from './group.js'; import type { AccountWalletObject, AccountTreeWalletPersistedMetadata, -} from './wallet'; +} from './wallet.js'; // Backward compatibility aliases using indexed access types /** diff --git a/packages/accounts-controller/package.json b/packages/accounts-controller/package.json index b9f2c670524..01346dabf60 100644 --- a/packages/accounts-controller/package.json +++ b/packages/accounts-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/accounts-controller/src/utils.ts b/packages/accounts-controller/src/utils.ts index d10ec9538c0..ce5341147b9 100644 --- a/packages/accounts-controller/src/utils.ts +++ b/packages/accounts-controller/src/utils.ts @@ -6,11 +6,13 @@ import type { Infer } from '@metamask/superstruct'; import { is, number, string, type } from '@metamask/superstruct'; import { hexToBytes } from '@metamask/utils'; import { sha256 } from 'ethereum-cryptography/sha256'; -import type { V4Options } from 'uuid'; import { v4 as uuid } from 'uuid'; import type { AccountId } from './AccountsController'; +// `uuid` declares this type but it's not importable in ESM. +type V4Options = Exclude[0], undefined>; + /** * Returns the name of the keyring type. * diff --git a/packages/address-book-controller/package.json b/packages/address-book-controller/package.json index 57e58ff08ad..6d192278d8f 100644 --- a/packages/address-book-controller/package.json +++ b/packages/address-book-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/ai-controllers/package.json b/packages/ai-controllers/package.json index ef2fa0b9b35..486dd19b857 100644 --- a/packages/ai-controllers/package.json +++ b/packages/ai-controllers/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/analytics-controller/package.json b/packages/analytics-controller/package.json index f73901c0926..0a8702632a6 100644 --- a/packages/analytics-controller/package.json +++ b/packages/analytics-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/analytics-data-regulation-controller/package.json b/packages/analytics-data-regulation-controller/package.json index 2953b85a5d5..95ec153477a 100644 --- a/packages/analytics-data-regulation-controller/package.json +++ b/packages/analytics-data-regulation-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/announcement-controller/package.json b/packages/announcement-controller/package.json index 8bd69d09302..52d8d8274f8 100644 --- a/packages/announcement-controller/package.json +++ b/packages/announcement-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/app-metadata-controller/package.json b/packages/app-metadata-controller/package.json index 7f5d24f151c..ec9c254e4e8 100644 --- a/packages/app-metadata-controller/package.json +++ b/packages/app-metadata-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/approval-controller/package.json b/packages/approval-controller/package.json index 764009b16ce..b52a3433331 100644 --- a/packages/approval-controller/package.json +++ b/packages/approval-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/assets-controller/package.json b/packages/assets-controller/package.json index 7395776b120..f3e4a09578e 100644 --- a/packages/assets-controller/package.json +++ b/packages/assets-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/assets-controller/src/AssetsController.ts b/packages/assets-controller/src/AssetsController.ts index 0ed051dcce9..36b83373e08 100644 --- a/packages/assets-controller/src/AssetsController.ts +++ b/packages/assets-controller/src/AssetsController.ts @@ -68,47 +68,47 @@ import { } from '@metamask/utils'; import { Mutex } from 'async-mutex'; import BigNumberJS from 'bignumber.js'; -import { isEqual } from 'lodash'; +import { isEqual } from 'lodash-es'; -import type { AssetsControllerMethodActions } from './AssetsController-method-action-types'; +import type { AssetsControllerMethodActions } from './AssetsController-method-action-types.js'; import type { AbstractDataSource, DataSourceState, SubscriptionRequest, -} from './data-sources/AbstractDataSource'; -import type { AccountsApiDataSourceConfig } from './data-sources/AccountsApiDataSource'; -import { AccountsApiDataSource } from './data-sources/AccountsApiDataSource'; -import { BackendWebsocketDataSource } from './data-sources/BackendWebsocketDataSource'; -import { shouldSkipNativeForCaipChainId } from './data-sources/evm-rpc-services/utils/assets'; -import type { PriceDataSourceConfig } from './data-sources/PriceDataSource'; -import { PriceDataSource } from './data-sources/PriceDataSource'; -import type { RpcDataSourceConfig } from './data-sources/RpcDataSource'; -import { RpcDataSource } from './data-sources/RpcDataSource'; -import type { AccountsControllerAccountBalancesUpdatedEvent } from './data-sources/SnapDataSource'; -import { SnapDataSource } from './data-sources/SnapDataSource'; -import type { StakedBalanceDataSourceConfig } from './data-sources/StakedBalanceDataSource'; -import { StakedBalanceDataSource } from './data-sources/StakedBalanceDataSource'; +} from './data-sources/AbstractDataSource.js'; +import type { AccountsApiDataSourceConfig } from './data-sources/AccountsApiDataSource.js'; +import { AccountsApiDataSource } from './data-sources/AccountsApiDataSource.js'; +import { BackendWebsocketDataSource } from './data-sources/BackendWebsocketDataSource.js'; +import { shouldSkipNativeForCaipChainId } from './data-sources/evm-rpc-services/utils/assets.js'; +import type { PriceDataSourceConfig } from './data-sources/PriceDataSource.js'; +import { PriceDataSource } from './data-sources/PriceDataSource.js'; +import type { RpcDataSourceConfig } from './data-sources/RpcDataSource.js'; +import { RpcDataSource } from './data-sources/RpcDataSource.js'; +import type { AccountsControllerAccountBalancesUpdatedEvent } from './data-sources/SnapDataSource.js'; +import { SnapDataSource } from './data-sources/SnapDataSource.js'; +import type { StakedBalanceDataSourceConfig } from './data-sources/StakedBalanceDataSource.js'; +import { StakedBalanceDataSource } from './data-sources/StakedBalanceDataSource.js'; import { CaipAssetNamespace, TokenDataSource, -} from './data-sources/TokenDataSource'; +} from './data-sources/TokenDataSource.js'; import { CHAINS_WITH_DEFAULT_TRACKED_ASSETS, DEFAULT_TRACKED_ASSETS_BY_CHAIN, buildDefaultAssetsInfo, getDefaultAssetMetadata, -} from './defaults'; -import { AssetsDataSourceError } from './errors'; -import { projectLogger, createModuleLogger } from './logger'; -import { CustomAssetGraduationMiddleware } from './middlewares/CustomAssetGraduationMiddleware'; -import { DetectionMiddleware } from './middlewares/DetectionMiddleware'; +} from './defaults.js'; +import { AssetsDataSourceError } from './errors.js'; +import { projectLogger, createModuleLogger } from './logger.js'; +import { CustomAssetGraduationMiddleware } from './middlewares/CustomAssetGraduationMiddleware.js'; +import { DetectionMiddleware } from './middlewares/DetectionMiddleware.js'; import { createParallelBalanceMiddleware, createParallelMiddleware, -} from './middlewares/ParallelMiddleware'; -import { RpcFallbackMiddleware } from './middlewares/RpcFallbackMiddleware'; -import type { Assets3346MigrationState } from './migrations/healAssetsInfoMetadata'; -import { tempHealAssetsInfoMetadata } from './migrations/healAssetsInfoMetadata'; +} from './middlewares/ParallelMiddleware.js'; +import { RpcFallbackMiddleware } from './middlewares/RpcFallbackMiddleware.js'; +import type { Assets3346MigrationState } from './migrations/healAssetsInfoMetadata.js'; +import { tempHealAssetsInfoMetadata } from './migrations/healAssetsInfoMetadata.js'; import type { AccountId, AssetPreferences, @@ -132,7 +132,7 @@ import type { Middleware, SubscriptionResponse, Asset, -} from './types'; +} from './types.js'; import { normalizeAmountString, normalizeAssetId, @@ -140,14 +140,14 @@ import { formatStateForTransactionPay, buildNativeAssetsFromConstant, buildNativeAssetsFromApi, -} from './utils'; +} from './utils/index.js'; import type { BridgeExchangeRatesFormat, TransactionPayLegacyFormat, -} from './utils'; -import { ZERO_ADDRESS } from './utils/constants'; -import { pickRpcCustomAssetsSupplement } from './utils/customAssetsRpcSupplement'; -import { processAccountActivityBalanceUpdates } from './utils/processAccountActivityBalanceUpdates'; +} from './utils/index.js'; +import { ZERO_ADDRESS } from './utils/constants.js'; +import { pickRpcCustomAssetsSupplement } from './utils/customAssetsRpcSupplement.js'; +import { processAccountActivityBalanceUpdates } from './utils/processAccountActivityBalanceUpdates.js'; const NATIVE_ASSETS_QUERY_KEY = ['nativeAssets']; @@ -2051,9 +2051,7 @@ export class AssetsController extends BaseController< log('Hiding asset', { assetId: normalizedAssetId }); this.update((state) => { - if (!state.assetPreferences[normalizedAssetId]) { - state.assetPreferences[normalizedAssetId] = {}; - } + state.assetPreferences[normalizedAssetId] ??= {}; state.assetPreferences[normalizedAssetId].hidden = true; }); } @@ -2845,7 +2843,7 @@ export class AssetsController extends BaseController< // Compute fiat value using BigNumber for precision // Note: balance.amount is already in human-readable format (e.g., "1" for 1 ETH) // so we do NOT divide by 10^decimals here - const balanceAmount = new BigNumberJS(balance.amount || '0'); + const balanceAmount = new BigNumberJS(balance.amount ?? '0'); const fiatValue = balanceAmount.multipliedBy(price.price || 0).toNumber(); return { diff --git a/packages/assets-controller/src/data-sources/AccountsApiDataSource.ts b/packages/assets-controller/src/data-sources/AccountsApiDataSource.ts index 6ac6167b0e4..622d102e912 100644 --- a/packages/assets-controller/src/data-sources/AccountsApiDataSource.ts +++ b/packages/assets-controller/src/data-sources/AccountsApiDataSource.ts @@ -10,8 +10,8 @@ import { toCaipChainId, } from '@metamask/utils'; -import type { AssetsControllerMessenger } from '../AssetsController'; -import { projectLogger, createModuleLogger } from '../logger'; +import type { AssetsControllerMessenger } from '../AssetsController.js'; +import { projectLogger, createModuleLogger } from '../logger.js'; import type { ChainId, Caip19AssetId, @@ -20,13 +20,13 @@ import type { DataResponse, Middleware, AssetsControllerStateInternal, -} from '../types'; -import { fetchWithTimeout, normalizeAssetId } from '../utils'; +} from '../types.js'; +import { fetchWithTimeout, normalizeAssetId } from '../utils/index.js'; import type { DataSourceState, SubscriptionRequest, -} from './AbstractDataSource'; -import { AbstractDataSource } from './AbstractDataSource'; +} from './AbstractDataSource.js'; +import { AbstractDataSource } from './AbstractDataSource.js'; // ============================================================================ // CONSTANTS diff --git a/packages/assets-controller/src/data-sources/PriceDataSource.ts b/packages/assets-controller/src/data-sources/PriceDataSource.ts index 4b0a45c3bd0..80a6aa0a7eb 100644 --- a/packages/assets-controller/src/data-sources/PriceDataSource.ts +++ b/packages/assets-controller/src/data-sources/PriceDataSource.ts @@ -5,8 +5,8 @@ import type { import { ApiPlatformClient } from '@metamask/core-backend'; import { parseCaipAssetType } from '@metamask/utils'; -import { projectLogger, createModuleLogger } from '../logger'; -import { forDataTypes } from '../types'; +import { projectLogger, createModuleLogger } from '../logger.js'; +import { forDataTypes } from '../types.js'; import type { Caip19AssetId, DataRequest, @@ -14,11 +14,11 @@ import type { FungibleAssetPrice, Middleware, AssetsControllerStateInternal, -} from '../types'; -import { fetchWithTimeout, normalizeAssetId } from '../utils'; -import { DedupingBatchFetcher } from '../utils/dedupingBatchFetcher'; -import type { SubscriptionRequest } from './AbstractDataSource'; -import { reduceInBatchesSerially } from './evm-rpc-services'; +} from '../types.js'; +import { fetchWithTimeout, normalizeAssetId } from '../utils/index.js'; +import { DedupingBatchFetcher } from '../utils/dedupingBatchFetcher.js'; +import type { SubscriptionRequest } from './AbstractDataSource.js'; +import { reduceInBatchesSerially } from './evm-rpc-services/index.js'; // ============================================================================ // CONSTANTS diff --git a/packages/assets-controller/src/data-sources/RpcDataSource.ts b/packages/assets-controller/src/data-sources/RpcDataSource.ts index d28af6e3fda..f5b2c8b3724 100644 --- a/packages/assets-controller/src/data-sources/RpcDataSource.ts +++ b/packages/assets-controller/src/data-sources/RpcDataSource.ts @@ -24,8 +24,8 @@ import BigNumberJS from 'bignumber.js'; import type { AssetsControllerGetStateAction, AssetsControllerMessenger, -} from '../AssetsController'; -import { projectLogger, createModuleLogger } from '../logger'; +} from '../AssetsController.js'; +import { projectLogger, createModuleLogger } from '../logger.js'; import type { ChainId, Caip19AssetId, @@ -34,33 +34,33 @@ import type { DataRequest, DataResponse, Middleware, -} from '../types'; -import { normalizeAssetId } from '../utils'; -import { ZERO_ADDRESS } from '../utils/constants'; -import { AbstractDataSource } from './AbstractDataSource'; +} from '../types.js'; +import { normalizeAssetId } from '../utils/index.js'; +import { ZERO_ADDRESS } from '../utils/constants.js'; +import { AbstractDataSource } from './AbstractDataSource.js'; import type { DataSourceState, SubscriptionRequest, -} from './AbstractDataSource'; +} from './AbstractDataSource.js'; import { BalanceFetcher, MulticallClient, TokenDetector, TokensApiClient, -} from './evm-rpc-services'; +} from './evm-rpc-services/index.js'; import type { BalancePollingInput, DetectionPollingInput, TokenListQueryClient, -} from './evm-rpc-services'; +} from './evm-rpc-services/index.js'; import type { Address, AssetFetchEntry, Provider as RpcProvider, BalanceFetchResult, TokenDetectionResult, -} from './evm-rpc-services/types'; -import { shouldSkipNativeForCaipChainId } from './evm-rpc-services/utils/assets'; +} from './evm-rpc-services/types/index.js'; +import { shouldSkipNativeForCaipChainId } from './evm-rpc-services/utils/assets.js'; const CONTROLLER_NAME = 'RpcDataSource'; const DEFAULT_BALANCE_INTERVAL = 30_000; // 30 seconds diff --git a/packages/assets-controller/src/data-sources/StakedBalanceDataSource.ts b/packages/assets-controller/src/data-sources/StakedBalanceDataSource.ts index df747c54955..a3eccda40f0 100644 --- a/packages/assets-controller/src/data-sources/StakedBalanceDataSource.ts +++ b/packages/assets-controller/src/data-sources/StakedBalanceDataSource.ts @@ -10,8 +10,8 @@ import { } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import type { AssetsControllerMessenger } from '../AssetsController'; -import { projectLogger, createModuleLogger } from '../logger'; +import type { AssetsControllerMessenger } from '../AssetsController.js'; +import { projectLogger, createModuleLogger } from '../logger.js'; import type { AccountId, ChainId, @@ -21,21 +21,21 @@ import type { DataRequest, DataResponse, Middleware, -} from '../types'; +} from '../types.js'; import type { DataSourceState, SubscriptionRequest, -} from './AbstractDataSource'; -import { AbstractDataSource } from './AbstractDataSource'; +} from './AbstractDataSource.js'; +import { AbstractDataSource } from './AbstractDataSource.js'; import type { StakedBalancePollingInput, StakedBalanceFetchResult, -} from './evm-rpc-services'; +} from './evm-rpc-services/index.js'; import { StakedBalanceFetcher, getStakingContractAddress, getSupportedStakingChainIds, -} from './evm-rpc-services'; +} from './evm-rpc-services/index.js'; const CONTROLLER_NAME = 'StakedBalanceDataSource'; const DEFAULT_POLL_INTERVAL = 180_000; // 3 minutes diff --git a/packages/assets-controller/src/data-sources/TokenDataSource.ts b/packages/assets-controller/src/data-sources/TokenDataSource.ts index 836e26bc3ef..e8e530975c8 100644 --- a/packages/assets-controller/src/data-sources/TokenDataSource.ts +++ b/packages/assets-controller/src/data-sources/TokenDataSource.ts @@ -8,20 +8,20 @@ import { TokenScanResultType } from '@metamask/phishing-controller'; import { KnownCaipNamespace, parseCaipAssetType } from '@metamask/utils'; import type { CaipAssetType } from '@metamask/utils'; -import type { AssetsControllerMessenger } from '../AssetsController'; -import { projectLogger, createModuleLogger } from '../logger'; -import { forDataTypes } from '../types'; +import type { AssetsControllerMessenger } from '../AssetsController.js'; +import { projectLogger, createModuleLogger } from '../logger.js'; +import { forDataTypes } from '../types.js'; import type { Caip19AssetId, AssetMetadata, Middleware, FungibleAssetMetadata, -} from '../types'; -import { fetchWithTimeout } from '../utils'; +} from '../types.js'; +import { fetchWithTimeout } from '../utils/index.js'; import { isStakingContractAssetId, reduceInBatchesSerially, -} from './evm-rpc-services'; +} from './evm-rpc-services/index.js'; // ============================================================================ // CONSTANTS diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/clients/MulticallClient.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/clients/MulticallClient.ts index 3f9079d9ac2..b68f0c1c5f2 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/clients/MulticallClient.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/clients/MulticallClient.ts @@ -5,7 +5,7 @@ import { } from '@metamask/controller-utils'; import type { Hex } from '@metamask/utils'; -import { ZERO_ADDRESS } from '../../../utils/constants'; +import { ZERO_ADDRESS } from '../../../utils/constants.js'; import type { Address, BalanceOfRequest, @@ -13,8 +13,8 @@ import type { ChainId, GetProviderFunction, Provider, -} from '../types'; -import { reduceInBatchesSerially } from '../utils'; +} from '../types/index.js'; +import { reduceInBatchesSerially } from '../utils/index.js'; // ============================================================================= // ABI DEFINITIONS diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/clients/TokensApiClient.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/clients/TokensApiClient.ts index 57522b30759..98862c2e157 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/clients/TokensApiClient.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/clients/TokensApiClient.ts @@ -3,7 +3,7 @@ import { convertHexToDecimal, } from '@metamask/controller-utils'; -import type { ChainId, TokenListEntry } from '../types'; +import type { ChainId, TokenListEntry } from '../types/index.js'; /** * Same host + path that `TokenListController` (assets-controllers) uses diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/clients/index.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/clients/index.ts index 59afaabeb0b..213339051d6 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/clients/index.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/clients/index.ts @@ -3,13 +3,13 @@ export { encodeAggregate3, MulticallClient, type MulticallClientConfig, -} from './MulticallClient'; +} from './MulticallClient.js'; export { TokensApiClient, type TokensApiClientConfig, type TokenListQueryClient, -} from './TokensApiClient'; +} from './TokensApiClient.js'; // Re-export provider types from types module -export type { GetProviderFunction, Provider } from '../types'; +export type { GetProviderFunction, Provider } from '../types/index.js'; diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/index.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/index.ts index f193260d185..c769dffb735 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/index.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/index.ts @@ -10,14 +10,14 @@ export type { TokenListState, BalanceFetchResult, TokenDetectionResult, -} from './types'; +} from './types/index.js'; export { MulticallClient, type MulticallClientConfig, TokensApiClient, type TokensApiClientConfig, type TokenListQueryClient, -} from './clients'; +} from './clients/index.js'; export { BalanceFetcher, TokenDetector, @@ -32,5 +32,5 @@ export { type OnBalanceUpdateCallback, type OnDetectionUpdateCallback, type OnStakedBalanceUpdateCallback, -} from './services'; -export { divideIntoBatches, reduceInBatchesSerially } from './utils'; +} from './services/index.js'; +export { divideIntoBatches, reduceInBatchesSerially } from './utils/index.js'; diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/services/BalanceFetcher.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/services/BalanceFetcher.ts index 43c9b16736c..44d8af36fa1 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/services/BalanceFetcher.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/services/BalanceFetcher.ts @@ -1,8 +1,8 @@ import { StaticIntervalPollingControllerOnly } from '@metamask/polling-controller'; import { parseCaipAssetType } from '@metamask/utils'; -import { ZERO_ADDRESS } from '../../../utils/constants'; -import type { MulticallClient } from '../clients'; +import { ZERO_ADDRESS } from '../../../utils/constants.js'; +import type { MulticallClient } from '../clients/index.js'; import type { AccountId, Address, @@ -14,8 +14,8 @@ import type { BalanceOfResponse, CaipAssetType, ChainId, -} from '../types'; -import { reduceInBatchesSerially } from '../utils'; +} from '../types/index.js'; +import { reduceInBatchesSerially } from '../utils/index.js'; const DEFAULT_BALANCE_INTERVAL = 30_000; // 30 seconds diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/services/StakedBalanceFetcher.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/services/StakedBalanceFetcher.ts index 035c160b18f..4ccce33fb8c 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/services/StakedBalanceFetcher.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/services/StakedBalanceFetcher.ts @@ -2,13 +2,13 @@ import { Interface } from '@ethersproject/abi'; import { Web3Provider } from '@ethersproject/providers'; import { StaticIntervalPollingControllerOnly } from '@metamask/polling-controller'; -import type { Address, AccountId, ChainId } from '../types'; +import type { Address, AccountId, ChainId } from '../types/index.js'; import { getStakingContractAddress, getSupportedStakingChainIds, isStakingContractAssetId, weiToHumanReadable, -} from '../utils'; +} from '../utils/index.js'; export { getStakingContractAddress, diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/services/TokenDetector.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/services/TokenDetector.ts index e63a907f37e..13cf367424d 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/services/TokenDetector.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/services/TokenDetector.ts @@ -1,9 +1,9 @@ import { StaticIntervalPollingControllerOnly } from '@metamask/polling-controller'; import type { CaipAssetType } from '@metamask/utils'; -import { projectLogger, createModuleLogger } from '../../../logger'; -import type { MulticallClient } from '../clients'; -import type { TokensApiClient } from '../clients/TokensApiClient'; +import { projectLogger, createModuleLogger } from '../../../logger.js'; +import type { MulticallClient } from '../clients/index.js'; +import type { TokensApiClient } from '../clients/TokensApiClient.js'; import type { AccountId, Address, @@ -15,8 +15,8 @@ import type { TokenDetectionOptions, TokenDetectionResult, TokenListEntry, -} from '../types'; -import { reduceInBatchesSerially } from '../utils'; +} from '../types/index.js'; +import { reduceInBatchesSerially } from '../utils/index.js'; const log = createModuleLogger(projectLogger, 'TokenDetector'); diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/utils/parsing.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/utils/parsing.ts index 7a2a5c32c65..dfc9b1922fa 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/utils/parsing.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/utils/parsing.ts @@ -7,7 +7,7 @@ import { import type { CaipChainId, Hex } from '@metamask/utils'; import BigNumberJS from 'bignumber.js'; -import type { ChainId } from '../types'; +import type { ChainId } from '../types/index.js'; /** * Convert wei to human-readable amount with decimals, trim trailing zeros. diff --git a/packages/assets-controller/src/index.ts b/packages/assets-controller/src/index.ts index 4f69c989517..f34bd8139bf 100644 --- a/packages/assets-controller/src/index.ts +++ b/packages/assets-controller/src/index.ts @@ -2,8 +2,8 @@ export { AssetsController, getDefaultAssetsControllerState, -} from './AssetsController'; -export { AssetsDataSourceError } from './errors'; +} from './AssetsController.js'; +export { AssetsDataSourceError } from './errors.js'; export { DEFAULT_TRACKED_ASSETS_BY_CHAIN, CHAINS_WITH_DEFAULT_TRACKED_ASSETS, @@ -11,8 +11,8 @@ export { buildDefaultAssetsInfo, getDefaultTrackedAssetsForChain, getDefaultAssetMetadata, -} from './defaults'; -export type { PendingTokenMetadata } from './AssetsController'; +} from './defaults.js'; +export type { PendingTokenMetadata } from './AssetsController.js'; // State and messenger types export type { @@ -26,7 +26,7 @@ export type { AssetsControllerPriceChangedEvent, AssetsControllerAssetsDetectedEvent, AssetsControllerEvents, -} from './AssetsController'; +} from './AssetsController.js'; export type { AssetsControllerGetAssetsAction, AssetsControllerGetAssetsBalanceAction, @@ -41,7 +41,7 @@ export type { AssetsControllerGetExchangeRatesForBridgeAction, AssetsControllerGetStateForTransactionPayAction, AssetsControllerSetSelectedCurrencyAction, -} from './AssetsController-method-action-types'; +} from './AssetsController-method-action-types.js'; // Core types export type { @@ -95,42 +95,42 @@ export type { PriceChangeEvent, MetadataChangeEvent, AssetsDetectedEvent, -} from './types'; +} from './types.js'; // Data sources - base class and types -export { AbstractDataSource } from './data-sources'; +export { AbstractDataSource } from './data-sources/index.js'; -export type { DataSourceState, SubscriptionRequest } from './data-sources'; +export type { DataSourceState, SubscriptionRequest } from './data-sources/index.js'; // Data sources - AccountsApi -export { AccountsApiDataSource } from './data-sources'; +export { AccountsApiDataSource } from './data-sources/index.js'; export type { AccountsApiDataSourceConfig, AccountsApiDataSourceOptions, AccountsApiDataSourceState, -} from './data-sources'; +} from './data-sources/index.js'; // Data sources - BackendWebsocket export { BackendWebsocketDataSource, createBackendWebsocketDataSource, -} from './data-sources'; +} from './data-sources/index.js'; export type { BackendWebsocketDataSourceOptions, BackendWebsocketDataSourceState, -} from './data-sources'; +} from './data-sources/index.js'; // Data sources - RPC -export { RpcDataSource, createRpcDataSource } from './data-sources'; +export { RpcDataSource, createRpcDataSource } from './data-sources/index.js'; export type { RpcDataSourceConfig, RpcDataSourceOptions, RpcDataSourceState, ChainStatus, -} from './data-sources'; +} from './data-sources/index.js'; // Data sources - Unified Snap Data Source (dynamically discovers keyring snaps) export { @@ -142,45 +142,45 @@ export { // Utility functions getChainIdsCaveat, extractChainFromAssetId, -} from './data-sources'; +} from './data-sources/index.js'; export type { SnapDataSourceState, SnapDataSourceOptions, -} from './data-sources'; +} from './data-sources/index.js'; // Enrichment data sources -export { TokenDataSource, PriceDataSource } from './data-sources'; +export { TokenDataSource, PriceDataSource } from './data-sources/index.js'; export type { TokenDataSourceOptions, PriceDataSourceConfig, PriceDataSourceOptions, -} from './data-sources'; +} from './data-sources/index.js'; // Middlewares export { CustomAssetGraduationMiddleware, DetectionMiddleware, RpcFallbackMiddleware, -} from './middlewares'; +} from './middlewares/index.js'; export type { CustomAssetGraduationMiddlewareOptions, RpcFallbackMiddlewareOptions, -} from './middlewares'; +} from './middlewares/index.js'; // Utilities export { normalizeAssetId, formatExchangeRatesForBridge, formatStateForTransactionPay, -} from './utils'; +} from './utils/index.js'; export type { AccountForLegacyFormat, BridgeExchangeRatesFormat, LegacyToken, TransactionPayLegacyFormat, -} from './utils'; +} from './utils/index.js'; // Selectors export { @@ -189,7 +189,7 @@ export { getAggregatedBalanceForAccount, getGroupIdForAccount, getInternalAccountsForGroup, -} from './selectors/balance'; +} from './selectors/balance.js'; export type { AccountGroupBalance, @@ -201,4 +201,4 @@ export type { BalanceChangeResult, EnabledNetworkMap, WalletBalance, -} from './selectors/balance'; +} from './selectors/balance.js'; diff --git a/packages/assets-controller/src/middlewares/CustomAssetGraduationMiddleware.ts b/packages/assets-controller/src/middlewares/CustomAssetGraduationMiddleware.ts index 3fec59bcce5..9319a2f6d87 100644 --- a/packages/assets-controller/src/middlewares/CustomAssetGraduationMiddleware.ts +++ b/packages/assets-controller/src/middlewares/CustomAssetGraduationMiddleware.ts @@ -1,14 +1,14 @@ import { KnownCaipNamespace } from '@metamask/utils'; -import { projectLogger, createModuleLogger } from '../logger'; -import { forDataTypes } from '../types'; +import { projectLogger, createModuleLogger } from '../logger.js'; +import { forDataTypes } from '../types.js'; import type { AccountId, AssetBalance, Caip19AssetId, Middleware, -} from '../types'; -import { normalizeAssetId } from '../utils'; +} from '../types.js'; +import { normalizeAssetId } from '../utils/index.js'; const CONTROLLER_NAME = 'CustomAssetGraduationMiddleware'; diff --git a/packages/assets-controller/src/middlewares/DetectionMiddleware.ts b/packages/assets-controller/src/middlewares/DetectionMiddleware.ts index 2fe4b1dcf8f..5467d508783 100644 --- a/packages/assets-controller/src/middlewares/DetectionMiddleware.ts +++ b/packages/assets-controller/src/middlewares/DetectionMiddleware.ts @@ -1,7 +1,7 @@ -import { projectLogger, createModuleLogger } from '../logger'; -import { forDataTypes } from '../types'; -import type { AccountId, Caip19AssetId, Middleware } from '../types'; -import { normalizeAssetId } from '../utils'; +import { projectLogger, createModuleLogger } from '../logger.js'; +import { forDataTypes } from '../types.js'; +import type { AccountId, Caip19AssetId, Middleware } from '../types.js'; +import { normalizeAssetId } from '../utils/index.js'; // ============================================================================ // CONSTANTS diff --git a/packages/assets-controllers/package.json b/packages/assets-controllers/package.json index 11b710ce30f..714368733b1 100644 --- a/packages/assets-controllers/package.json +++ b/packages/assets-controllers/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/assets-controllers/src/MultichainAssetsRatesController/MultichainAssetsRatesController.ts b/packages/assets-controllers/src/MultichainAssetsRatesController/MultichainAssetsRatesController.ts index 5e75427b48d..0f97d5802fc 100644 --- a/packages/assets-controllers/src/MultichainAssetsRatesController/MultichainAssetsRatesController.ts +++ b/packages/assets-controllers/src/MultichainAssetsRatesController/MultichainAssetsRatesController.ts @@ -38,13 +38,13 @@ import type { CurrencyRateState, CurrencyRateStateChange, CurrencyRateControllerGetStateAction, -} from '../CurrencyRateController'; +} from '../CurrencyRateController.js'; import type { MultichainAssetsControllerGetStateAction, MultichainAssetsControllerAccountAssetListUpdatedEvent, -} from '../MultichainAssetsController'; -import { MAP_CAIP_CURRENCIES } from './constant'; -import type { MultichainAssetsRatesControllerMethodActions } from './MultichainAssetsRatesController-method-action-types'; +} from '../MultichainAssetsController/index.js'; +import { MAP_CAIP_CURRENCIES } from './constant.js'; +import type { MultichainAssetsRatesControllerMethodActions } from './MultichainAssetsRatesController-method-action-types.js'; /** * The name of the MultichainAssetsRatesController. @@ -263,7 +263,7 @@ export class MultichainAssetsRatesController extends StaticIntervalPollingContro this.messenger.subscribe( 'CurrencyRateController:stateChange', - // eslint-disable-next-line @typescript-eslint/no-misused-promises + async (currentCurrency: string) => { if (this.#isDeprecated()) { this.#enforceDisabledState(); @@ -278,7 +278,7 @@ export class MultichainAssetsRatesController extends StaticIntervalPollingContro this.messenger.subscribe( 'MultichainAssetsController:accountAssetListUpdated', - // eslint-disable-next-line @typescript-eslint/no-misused-promises + async ({ assets }) => { if (this.#isDeprecated()) { this.#enforceDisabledState(); diff --git a/packages/assets-controllers/src/MultichainBalancesController/MultichainBalancesController.ts b/packages/assets-controllers/src/MultichainBalancesController/MultichainBalancesController.ts index 6887d98c235..9dc35ea94e1 100644 --- a/packages/assets-controllers/src/MultichainBalancesController/MultichainBalancesController.ts +++ b/packages/assets-controllers/src/MultichainBalancesController/MultichainBalancesController.ts @@ -29,7 +29,7 @@ import type { Draft } from 'immer'; import type { MultichainAssetsControllerGetStateAction, MultichainAssetsControllerAccountAssetListUpdatedEvent, -} from '../MultichainAssetsController'; +} from '../MultichainAssetsController/index.js'; const controllerName = 'MultichainBalancesController'; @@ -183,7 +183,7 @@ export class MultichainBalancesController extends BaseController< // Fetch initial balances for all non-EVM accounts for (const account of this.#listAccounts()) { // Fetching the balance is asynchronous and we cannot use `await` here. - // eslint-disable-next-line no-void + void this.updateBalance(account.id); } } @@ -200,7 +200,7 @@ export class MultichainBalancesController extends BaseController< this.messenger.subscribe( 'MultichainAssetsController:accountAssetListUpdated', - // eslint-disable-next-line @typescript-eslint/no-misused-promises + async ({ assets }) => { const updatedAccountAssets = Object.entries(assets).map( ([accountId, { added, removed }]) => ({ diff --git a/packages/assets-controllers/src/RatesController/RatesController.ts b/packages/assets-controllers/src/RatesController/RatesController.ts index 20da17925b8..3523a4455e0 100644 --- a/packages/assets-controllers/src/RatesController/RatesController.ts +++ b/packages/assets-controllers/src/RatesController/RatesController.ts @@ -3,13 +3,13 @@ import type { StateMetadata } from '@metamask/base-controller'; import { Mutex } from 'async-mutex'; import type { Draft } from 'immer'; -import { fetchMultiExchangeRate as defaultFetchExchangeRate } from '../crypto-compare-service'; +import { fetchMultiExchangeRate as defaultFetchExchangeRate } from '../crypto-compare-service/index.js'; import type { ConversionRates, RatesControllerState, RatesControllerOptions, RatesControllerMessenger, -} from './types'; +} from './types.js'; export const name = 'RatesController'; diff --git a/packages/assets-controllers/src/RatesController/types.ts b/packages/assets-controllers/src/RatesController/types.ts index 49c5515391b..41ca8a91324 100644 --- a/packages/assets-controllers/src/RatesController/types.ts +++ b/packages/assets-controllers/src/RatesController/types.ts @@ -4,11 +4,11 @@ import type { } from '@metamask/base-controller'; import type { Messenger } from '@metamask/messenger'; -import type { fetchMultiExchangeRate as defaultFetchExchangeRate } from '../crypto-compare-service'; +import type { fetchMultiExchangeRate as defaultFetchExchangeRate } from '../crypto-compare-service/index.js'; import type { name as ratesControllerName, Cryptocurrency, -} from './RatesController'; +} from './RatesController.js'; /** * Represents the conversion rates from one currency to others, including the conversion date. diff --git a/packages/assets-controllers/src/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.ts b/packages/assets-controllers/src/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.ts index 5f3617c57eb..dd32662527b 100644 --- a/packages/assets-controllers/src/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.ts +++ b/packages/assets-controllers/src/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.ts @@ -7,15 +7,15 @@ import type { import type { Messenger } from '@metamask/messenger'; import type { Hex } from '@metamask/utils'; -import { formatIconUrlWithProxy } from '../assetsUtil'; -import type { CurrencyRateControllerGetStateAction } from '../CurrencyRateController'; -import type { AbstractTokenPricesService } from '../token-prices-service'; +import { formatIconUrlWithProxy } from '../assetsUtil.js'; +import type { CurrencyRateControllerGetStateAction } from '../CurrencyRateController.js'; +import type { AbstractTokenPricesService } from '../token-prices-service/index.js'; import { fetchTokenMetadata, TOKEN_METADATA_NO_SUPPORT_ERROR, -} from '../token-service'; -import type { TokenListToken } from '../TokenListController'; -import type { TokenDisplayData } from './types'; +} from '../token-service.js'; +import type { TokenListToken } from '../TokenListController.js'; +import type { TokenDisplayData } from './types.js'; // === GENERAL === diff --git a/packages/assets-controllers/src/assetsUtil.ts b/packages/assets-controllers/src/assetsUtil.ts index f481151e870..a64809b1de6 100644 --- a/packages/assets-controllers/src/assetsUtil.ts +++ b/packages/assets-controllers/src/assetsUtil.ts @@ -13,14 +13,14 @@ import { import BN from 'bn.js'; import { CID } from 'multiformats/cid'; -import type { Nft, NftMetadata } from './NftController'; -import { getNativeTokenAddress } from './token-prices-service'; -import type { AbstractTokenPricesService } from './token-prices-service'; -import type { EvmAssetWithMarketData } from './token-prices-service/abstract-token-prices-service'; +import type { Nft, NftMetadata } from './NftController.js'; +import { getNativeTokenAddress } from './token-prices-service/index.js'; +import type { AbstractTokenPricesService } from './token-prices-service/index.js'; +import type { EvmAssetWithMarketData } from './token-prices-service/abstract-token-prices-service.js'; import type { ContractExchangeRates, ContractMarketData, -} from './TokenRatesController'; +} from './TokenRatesController.js'; /** * The maximum number of token addresses that should be sent to the Price API in diff --git a/packages/assets-controllers/src/balances.ts b/packages/assets-controllers/src/balances.ts index 41a9ae5a1b9..317772b2717 100644 --- a/packages/assets-controllers/src/balances.ts +++ b/packages/assets-controllers/src/balances.ts @@ -13,15 +13,15 @@ import { isStrictHexString, } from '@metamask/utils'; -import { STAKING_CONTRACT_ADDRESS_BY_CHAINID } from './AssetsContractController'; -import type { CurrencyRateState } from './CurrencyRateController'; -import type { MultichainAssetsControllerState } from './MultichainAssetsController'; -import type { MultichainAssetsRatesControllerState } from './MultichainAssetsRatesController'; -import type { MultichainBalancesControllerState } from './MultichainBalancesController'; -import { getNativeTokenAddress } from './token-prices-service/codefi-v2'; -import type { TokenBalancesControllerState } from './TokenBalancesController'; -import type { TokenRatesControllerState } from './TokenRatesController'; -import type { TokensControllerState } from './TokensController'; +import { STAKING_CONTRACT_ADDRESS_BY_CHAINID } from './AssetsContractController.js'; +import type { CurrencyRateState } from './CurrencyRateController.js'; +import type { MultichainAssetsControllerState } from './MultichainAssetsController/index.js'; +import type { MultichainAssetsRatesControllerState } from './MultichainAssetsRatesController/index.js'; +import type { MultichainBalancesControllerState } from './MultichainBalancesController/index.js'; +import { getNativeTokenAddress } from './token-prices-service/codefi-v2.js'; +import type { TokenBalancesControllerState } from './TokenBalancesController.js'; +import type { TokenRatesControllerState } from './TokenRatesController.js'; +import type { TokensControllerState } from './TokensController.js'; export type AccountGroupBalance = { walletId: string; @@ -260,7 +260,7 @@ function getNonEvmAssetBalances( ) { const accountBalances = multichainBalancesState.balances[account.id] ?? {}; const ignoredAssets = - multichainAssetsState.allIgnoredAssets[account.id] || []; + multichainAssetsState.allIgnoredAssets[account.id] ?? []; return Object.entries(accountBalances) .filter( @@ -423,7 +423,7 @@ export function calculateBalanceForAllWallets( const getFlatAccountBalances = () => Object.entries(accountTreeState.accountTree.wallets ?? {}) .flatMap(([walletId, wallet]) => - Object.keys(wallet?.groups || {}).flatMap((groupId) => { + Object.keys(wallet?.groups ?? {}).flatMap((groupId) => { const accounts = getInternalAccountsForGroup( accountTreeState, accountsState, @@ -490,7 +490,7 @@ export function calculateBalanceForAllWallets( return; } wallets[walletId] ??= defaultWalletBalance(walletId); - Object.keys(wallet.groups || {}).forEach((groupId) => { + Object.keys(wallet.groups ?? {}).forEach((groupId) => { wallets[walletId].groups[groupId] ??= defaultGroupBalance( walletId, groupId, @@ -582,7 +582,7 @@ export function calculateBalanceChangeForAllWallets( const getFlatAccountChanges = () => Object.entries(accountTreeState.accountTree.wallets ?? {}) .flatMap(([walletId, wallet]) => - Object.keys(wallet?.groups || {}).flatMap((groupId) => { + Object.keys(wallet?.groups ?? {}).flatMap((groupId) => { const accounts = getInternalAccountsForGroup( accountTreeState, accountsState, diff --git a/packages/assets-controllers/src/index.ts b/packages/assets-controllers/src/index.ts index a005d08481b..a5ba590c414 100644 --- a/packages/assets-controllers/src/index.ts +++ b/packages/assets-controllers/src/index.ts @@ -6,20 +6,20 @@ export type { AccountTrackerControllerGetStateAction, AccountTrackerControllerStateChangeEvent, AccountTrackerControllerEvents, -} from './AccountTrackerController'; -export { AccountTrackerController } from './AccountTrackerController'; +} from './AccountTrackerController.js'; +export { AccountTrackerController } from './AccountTrackerController.js'; export type { AccountTrackerControllerUpdateNativeBalancesAction, AccountTrackerControllerUpdateStakedBalancesAction, AccountTrackerControllerRefreshAction, AccountTrackerControllerSyncBalanceWithAddressesAction, -} from './AccountTrackerController-method-action-types'; +} from './AccountTrackerController-method-action-types.js'; export type { AssetsContractControllerActions, AssetsContractControllerEvents, AssetsContractControllerMessenger, BalanceMap, -} from './AssetsContractController'; +} from './AssetsContractController.js'; export type { AssetsContractControllerGetERC20StandardAction, AssetsContractControllerGetERC721StandardAction, @@ -38,16 +38,16 @@ export type { AssetsContractControllerGetTokenStandardAndDetailsAction, AssetsContractControllerGetBalancesInSingleCallAction, AssetsContractControllerGetStakedBalanceForChainAction, -} from './AssetsContractController-method-action-types'; +} from './AssetsContractController-method-action-types.js'; export { SINGLE_CALL_BALANCES_ADDRESS_BY_CHAINID, AssetsContractController, -} from './AssetsContractController'; -export * from './CurrencyRateController'; +} from './AssetsContractController.js'; +export * from './CurrencyRateController.js'; export type { CurrencyRateControllerSetCurrentCurrencyAction, CurrencyRateControllerUpdateExchangeRateAction, -} from './CurrencyRateController-method-action-types'; +} from './CurrencyRateController-method-action-types.js'; export type { NftControllerState, NftControllerMessenger, @@ -58,8 +58,11 @@ export type { Nft, NftContract, NftMetadata, -} from './NftController'; -export { getDefaultNftControllerState, NftController } from './NftController'; +} from './NftController.js'; +export { + getDefaultNftControllerState, + NftController, +} from './NftController.js'; export type { NftDetectionControllerMessenger, ApiNft, @@ -82,8 +85,8 @@ export type { FloorAsk, Price, Metadata, -} from './NftDetectionController'; -export { NftDetectionController } from './NftDetectionController'; +} from './NftDetectionController.js'; +export { NftDetectionController } from './NftDetectionController.js'; export type { TokenBalancesControllerActions, TokenBalancesControllerGetStateAction, @@ -92,21 +95,21 @@ export type { TokenBalancesControllerOptions, TokenBalancesControllerStateChangeEvent, TokenBalancesControllerState, -} from './TokenBalancesController'; -export { TokenBalancesController } from './TokenBalancesController'; +} from './TokenBalancesController.js'; +export { TokenBalancesController } from './TokenBalancesController.js'; export type { TokenBalancesControllerUpdateChainPollingConfigsAction, TokenBalancesControllerGetChainPollingConfigAction, TokenBalancesControllerUpdateBalancesAction, TokenBalancesControllerResetStateAction, -} from './TokenBalancesController-method-action-types'; +} from './TokenBalancesController-method-action-types.js'; export type { TokenDetectionControllerMessenger, TokenDetectionControllerActions, TokenDetectionControllerGetStateAction, TokenDetectionControllerEvents, TokenDetectionControllerStateChangeEvent, -} from './TokenDetectionController'; +} from './TokenDetectionController.js'; export type { TokenDetectionControllerEnableAction, TokenDetectionControllerDisableAction, @@ -115,8 +118,8 @@ export type { TokenDetectionControllerDetectTokensAction, TokenDetectionControllerAddDetectedTokensViaWsAction, TokenDetectionControllerAddDetectedTokensViaPollingAction, -} from './TokenDetectionController-method-action-types'; -export { TokenDetectionController } from './TokenDetectionController'; +} from './TokenDetectionController-method-action-types.js'; +export { TokenDetectionController } from './TokenDetectionController.js'; export type { TokenListState, TokenListToken, @@ -126,9 +129,9 @@ export type { GetTokenListState, TokenListControllerActions, TokenListControllerMessenger, -} from './TokenListController'; -export { TokenListController } from './TokenListController'; -export { TokenListService, buildTokenListMap } from './TokenListService'; +} from './TokenListController.js'; +export { TokenListController } from './TokenListController.js'; +export { TokenListService, buildTokenListMap } from './TokenListService.js'; export type { ContractExchangeRates, ContractMarketData, @@ -140,11 +143,11 @@ export type { TokenRatesControllerState, TokenRatesControllerStateChangeEvent, MarketDataDetails, -} from './TokenRatesController'; +} from './TokenRatesController.js'; export { getDefaultTokenRatesControllerState, TokenRatesController, -} from './TokenRatesController'; +} from './TokenRatesController.js'; export type { TokensControllerState, TokensControllerActions, @@ -152,7 +155,7 @@ export type { TokensControllerEvents, TokensControllerStateChangeEvent, TokensControllerMessenger, -} from './TokensController'; +} from './TokensController.js'; export type { TokensControllerAddTokenAction, TokensControllerAddTokensAction, @@ -162,29 +165,29 @@ export type { TokensControllerWatchAssetAction, TokensControllerClearIgnoredTokensAction, TokensControllerResetStateAction, -} from './TokensController-method-action-types'; -export { TokensController } from './TokensController'; +} from './TokensController-method-action-types.js'; +export { TokensController } from './TokensController.js'; export { isTokenDetectionSupportedForNetwork, formatIconUrlWithProxy, getFormattedIpfsUrl, fetchTokenContractExchangeRates, getKeyByValue, -} from './assetsUtil'; +} from './assetsUtil.js'; export { CodefiTokenPricesServiceV2, SUPPORTED_CHAIN_IDS, getNativeTokenAddress, SPOT_PRICES_SUPPORT_INFO, getAssetId, -} from './token-prices-service'; +} from './token-prices-service/index.js'; export { fetchRwas, searchTokens, getTrendingTokens, fetchTokenAssets, -} from './token-service'; -export { RatesController, Cryptocurrency } from './RatesController'; +} from './token-service.js'; +export { RatesController, Cryptocurrency } from './RatesController/index.js'; export type { RatesControllerState, RatesControllerEvents, @@ -194,8 +197,8 @@ export type { RatesControllerStateChangeEvent, RatesControllerPollingStartedEvent, RatesControllerPollingStoppedEvent, -} from './RatesController'; -export { MultichainBalancesController } from './MultichainBalancesController'; +} from './RatesController/index.js'; +export { MultichainBalancesController } from './MultichainBalancesController/index.js'; export type { MultichainBalancesControllerState, MultichainBalancesControllerGetStateAction, @@ -203,12 +206,12 @@ export type { MultichainBalancesControllerActions, MultichainBalancesControllerEvents, MultichainBalancesControllerMessenger, -} from './MultichainBalancesController'; +} from './MultichainBalancesController/index.js'; export { MultichainAssetsController, getDefaultMultichainAssetsControllerState, -} from './MultichainAssetsController'; +} from './MultichainAssetsController/index.js'; export type { MultichainAssetsControllerState, @@ -218,18 +221,18 @@ export type { MultichainAssetsControllerEvents, MultichainAssetsControllerAccountAssetListUpdatedEvent, MultichainAssetsControllerMessenger, -} from './MultichainAssetsController'; +} from './MultichainAssetsController/index.js'; export type { MultichainAssetsControllerGetAssetMetadataAction, MultichainAssetsControllerIgnoreAssetsAction, MultichainAssetsControllerAddAssetsAction, -} from './MultichainAssetsController/MultichainAssetsController-method-action-types'; +} from './MultichainAssetsController/MultichainAssetsController-method-action-types.js'; export { MultichainAssetsRatesController, getDefaultMultichainAssetsRatesControllerState, -} from './MultichainAssetsRatesController'; -export { MAP_CAIP_CURRENCIES } from './MultichainAssetsRatesController'; +} from './MultichainAssetsRatesController/index.js'; +export { MAP_CAIP_CURRENCIES } from './MultichainAssetsRatesController/index.js'; export type { MultichainAssetsRatesControllerState, @@ -238,14 +241,14 @@ export type { MultichainAssetsRatesControllerGetStateAction, MultichainAssetsRatesControllerStateChange, MultichainAssetsRatesControllerMessenger, -} from './MultichainAssetsRatesController'; +} from './MultichainAssetsRatesController/index.js'; export type { MultichainAssetsRatesControllerUpdateAssetsRatesAction, MultichainAssetsRatesControllerFetchHistoricalPricesForAssetAction, -} from './MultichainAssetsRatesController/MultichainAssetsRatesController-method-action-types'; +} from './MultichainAssetsRatesController/MultichainAssetsRatesController-method-action-types.js'; -export { TokenSearchDiscoveryDataController } from './TokenSearchDiscoveryDataController'; +export { TokenSearchDiscoveryDataController } from './TokenSearchDiscoveryDataController/index.js'; export type { TokenDisplayData, TokenSearchDiscoveryDataControllerState, @@ -254,8 +257,8 @@ export type { TokenSearchDiscoveryDataControllerStateChangeEvent, TokenSearchDiscoveryDataControllerActions, TokenSearchDiscoveryDataControllerMessenger, -} from './TokenSearchDiscoveryDataController'; -export { DeFiPositionsController } from './DeFiPositionsController/DeFiPositionsController'; +} from './TokenSearchDiscoveryDataController/index.js'; +export { DeFiPositionsController } from './DeFiPositionsController/DeFiPositionsController.js'; export type { DeFiPositionsControllerState, DeFiPositionsControllerActions, @@ -263,34 +266,34 @@ export type { DeFiPositionsControllerGetStateAction, DeFiPositionsControllerStateChangeEvent, DeFiPositionsControllerMessenger, -} from './DeFiPositionsController/DeFiPositionsController'; -export type { GroupedDeFiPositions } from './DeFiPositionsController/group-defi-positions'; +} from './DeFiPositionsController/DeFiPositionsController.js'; +export type { GroupedDeFiPositions } from './DeFiPositionsController/group-defi-positions.js'; export type { AccountGroupBalance, WalletBalance, AllWalletsBalance, -} from './balances'; -export { calculateBalanceForAllWallets } from './balances'; +} from './balances.js'; +export { calculateBalanceForAllWallets } from './balances.js'; export type { BalanceChangePeriod, BalanceChangeResult, NetworkConfigurationNativeCurrency, -} from './balances'; +} from './balances.js'; export { calculateBalanceChangeForAllWallets, calculateBalanceChangeForAccountGroup, -} from './balances'; +} from './balances.js'; export type { AssetsByAccountGroup, AccountGroupAssets, Asset, AssetListState, -} from './selectors/token-selectors'; +} from './selectors/token-selectors.js'; export { selectAssetsBySelectedAccountGroup, selectAllAssets, -} from './selectors/token-selectors'; -export { createFormatters } from './utils/formatters'; +} from './selectors/token-selectors.js'; +export { createFormatters } from './utils/formatters.js'; export type { SortTrendingBy, TrendingAsset, @@ -312,4 +315,4 @@ export type { RwasResponse, RwaSortBy, FetchRwasParams, -} from './token-service'; +} from './token-service.js'; diff --git a/packages/assets-controllers/src/selectors/token-selectors.ts b/packages/assets-controllers/src/selectors/token-selectors.ts index 4b6e7dc2b7d..e1231a36a6f 100644 --- a/packages/assets-controllers/src/selectors/token-selectors.ts +++ b/packages/assets-controllers/src/selectors/token-selectors.ts @@ -10,19 +10,22 @@ import type { Hex } from '@metamask/utils'; import { createSelector, weakMapMemoize } from 'reselect'; import { TokenRwaData } from 'src/token-service'; -import { shouldIncludeNativeToken } from '../constants'; -import type { CurrencyRateState } from '../CurrencyRateController'; -import type { MultichainAssetsControllerState } from '../MultichainAssetsController'; -import type { MultichainAssetsRatesControllerState } from '../MultichainAssetsRatesController'; -import type { MultichainBalancesControllerState } from '../MultichainBalancesController'; -import { getNativeTokenAddress } from '../token-prices-service/codefi-v2'; -import type { TokenBalancesControllerState } from '../TokenBalancesController'; -import type { Token, TokenRatesControllerState } from '../TokenRatesController'; -import type { TokensControllerState } from '../TokensController'; +import { shouldIncludeNativeToken } from '../constants.js'; +import type { CurrencyRateState } from '../CurrencyRateController.js'; +import type { MultichainAssetsControllerState } from '../MultichainAssetsController/index.js'; +import type { MultichainAssetsRatesControllerState } from '../MultichainAssetsRatesController/index.js'; +import type { MultichainBalancesControllerState } from '../MultichainBalancesController/index.js'; +import { getNativeTokenAddress } from '../token-prices-service/codefi-v2.js'; +import type { TokenBalancesControllerState } from '../TokenBalancesController.js'; +import type { + Token, + TokenRatesControllerState, +} from '../TokenRatesController.js'; +import type { TokensControllerState } from '../TokensController.js'; import { parseBalanceWithDecimals, stringifyBalanceWithDecimals, -} from './stringify-balance'; +} from './stringify-balance.js'; // Asset Tron Filters export const TRON_RESOURCE = { @@ -200,10 +203,10 @@ const selectAllEvmAccountNativeBalances = createAssetListSelector( const groupChainAssets = groupAssets[accountGroupId][chainId]; // If a native balance is missing, we still want to show it as 0 - const rawBalance = accountBalance.balance || '0x0'; + const rawBalance = accountBalance.balance ?? '0x0'; const nativeCurrency = - networkConfigurationsByChainId[chainId]?.nativeCurrency || 'NATIVE'; + networkConfigurationsByChainId[chainId]?.nativeCurrency ?? 'NATIVE'; const nativeToken = { address: getNativeTokenAddress(chainId), diff --git a/packages/authenticated-user-storage/package.json b/packages/authenticated-user-storage/package.json index 13f2cda2a30..88f3e823079 100644 --- a/packages/authenticated-user-storage/package.json +++ b/packages/authenticated-user-storage/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/base-controller/package.json b/packages/base-controller/package.json index 784e3763e1b..23c65e8d312 100644 --- a/packages/base-controller/package.json +++ b/packages/base-controller/package.json @@ -18,18 +18,10 @@ "files": [ "dist/" ], - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/base-data-service/package.json b/packages/base-data-service/package.json index 2c98d49302d..572e138ff48 100644 --- a/packages/base-data-service/package.json +++ b/packages/base-data-service/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/bitcoin-regtest-up/package.json b/packages/bitcoin-regtest-up/package.json index 0119bacd238..1505f1737a4 100644 --- a/packages/bitcoin-regtest-up/package.json +++ b/packages/bitcoin-regtest-up/package.json @@ -20,18 +20,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/bridge-controller/package.json b/packages/bridge-controller/package.json index 73632c206cb..c364304a82f 100644 --- a/packages/bridge-controller/package.json +++ b/packages/bridge-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/bridge-status-controller/package.json b/packages/bridge-status-controller/package.json index 2d9303f82ee..ae8890ac6f4 100644 --- a/packages/bridge-status-controller/package.json +++ b/packages/bridge-status-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/bridge-status-controller/src/bridge-status-controller.ts b/packages/bridge-status-controller/src/bridge-status-controller.ts index 27ae844c795..8be53c71a2e 100644 --- a/packages/bridge-status-controller/src/bridge-status-controller.ts +++ b/packages/bridge-status-controller/src/bridge-status-controller.ts @@ -39,49 +39,49 @@ import { DEFAULT_BRIDGE_STATUS_CONTROLLER_STATE, MAX_ATTEMPTS, REFRESH_INTERVAL_MS, -} from './constants'; +} from './constants.js'; import { QUOTE_STATUS_BACKFILL_WINDOW_MS, QUOTE_STATUS_UPDATE_ENTRY_TTL, QUOTE_STATUS_UPDATE_RETRY_INTERVAL_MS, -} from './quote-status-manager/constants'; +} from './quote-status-manager/constants.js'; import { QuoteStatusGetError, QuoteStatusUpdateError, -} from './quote-status-manager/errors'; -import { QuoteStatusManager } from './quote-status-manager/quotes-status-manager'; -import executeSubmitStrategy from './strategy'; -import { SubmitStep } from './strategy/types'; -import type { SubmitStrategyParams } from './strategy/types'; +} from './quote-status-manager/errors.js'; +import { QuoteStatusManager } from './quote-status-manager/quotes-status-manager.js'; +import executeSubmitStrategy from './strategy/index.js'; +import { SubmitStep } from './strategy/types.js'; +import type { SubmitStrategyParams } from './strategy/types.js'; import type { BridgeStatusControllerState, StartPollingForBridgeTxStatusArgsSerialized, FetchFunction, BridgeHistoryItem, -} from './types'; -import type { BridgeStatusControllerMessenger } from './types'; -import { BridgeClientId } from './types'; -import { getAccountByAddress } from './utils/accounts'; -import { getJwt } from './utils/authentication'; -import { - getBatchSellTrades, - stopPollingForQuotes, - trackMetricsEvent, -} from './utils/bridge'; +} from './types.js'; +import type { BridgeStatusControllerMessenger } from './types.js'; +import { BridgeClientId } from './types.js'; +import { getAccountByAddress } from './utils/accounts.js'; +import { getJwt } from './utils/authentication.js'; import { fetchBridgeTxStatus, fetchBridgeQuoteStatus, getStatusRequestWithSrcTxHash, shouldSkipFetchDueToFetchFailures, shouldWaitForFinalBridgeStatus, -} from './utils/bridge-status'; +} from './utils/bridge-status.js'; +import { + getBatchSellTrades, + stopPollingForQuotes, + trackMetricsEvent, +} from './utils/bridge.js'; import { getInitialHistoryItem, getMatchingHistoryEntryForTxMeta, rekeyHistoryItemInState, shouldPollHistoryItem, getMatchingHistoryEntryForApprovalTxMeta, -} from './utils/history'; +} from './utils/history.js'; import { getFinalizedTxProperties, getPriceImpactFromQuote, @@ -91,9 +91,9 @@ import { getEVMTxPropertiesFromTransactionMeta, getTxStatusesFromHistory, getPreConfirmationPropertiesFromQuote, -} from './utils/metrics'; -import { getSelectedChainId } from './utils/network'; -import { getTraceParams } from './utils/trace'; +} from './utils/metrics.js'; +import { getSelectedChainId } from './utils/network.js'; +import { getTraceParams } from './utils/trace.js'; import { getTransactionMetaById, getTransactions, @@ -101,7 +101,7 @@ import { isCrossChainTx, updateTransactionsInBatch, hasNestedSwapTransactions, -} from './utils/transaction'; +} from './utils/transaction.js'; const metadata: StateMetadata = { // We want to persist the bridge status state so that we can show the proper data for the Activity list diff --git a/packages/build-utils/package.json b/packages/build-utils/package.json index 07983162711..e8bdf3fec1e 100644 --- a/packages/build-utils/package.json +++ b/packages/build-utils/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/chain-agnostic-permission/package.json b/packages/chain-agnostic-permission/package.json index 8c5f4081b24..16ef12b2baa 100644 --- a/packages/chain-agnostic-permission/package.json +++ b/packages/chain-agnostic-permission/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/chomp-api-service/package.json b/packages/chomp-api-service/package.json index 0fddbb3b7ab..fc064ad9f17 100644 --- a/packages/chomp-api-service/package.json +++ b/packages/chomp-api-service/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/claims-controller/package.json b/packages/claims-controller/package.json index 1bc62081ecf..272ceec7f20 100644 --- a/packages/claims-controller/package.json +++ b/packages/claims-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/client-controller/package.json b/packages/client-controller/package.json index 1291dd31351..28fd027619a 100644 --- a/packages/client-controller/package.json +++ b/packages/client-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/client-utils/package.json b/packages/client-utils/package.json index 4cb897aab4c..3d3901120bc 100644 --- a/packages/client-utils/package.json +++ b/packages/client-utils/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/compliance-controller/package.json b/packages/compliance-controller/package.json index 6ebabb5e548..f74f2a132d5 100644 --- a/packages/compliance-controller/package.json +++ b/packages/compliance-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/composable-controller/package.json b/packages/composable-controller/package.json index 1516232f332..13f97e33231 100644 --- a/packages/composable-controller/package.json +++ b/packages/composable-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/config-registry-controller/package.json b/packages/config-registry-controller/package.json index 41591f5dba5..f4433b8c78a 100644 --- a/packages/config-registry-controller/package.json +++ b/packages/config-registry-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/connectivity-controller/package.json b/packages/connectivity-controller/package.json index 8f77f6d2fa2..fe8861b90ed 100644 --- a/packages/connectivity-controller/package.json +++ b/packages/connectivity-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/controller-utils/package.json b/packages/controller-utils/package.json index 55f9d86aa80..0e02854780f 100644 --- a/packages/controller-utils/package.json +++ b/packages/controller-utils/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/core-backend/package.json b/packages/core-backend/package.json index 79085a647c3..ec6d05ac1bd 100644 --- a/packages/core-backend/package.json +++ b/packages/core-backend/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/core-backend/src/ApiPlatformClientService.ts b/packages/core-backend/src/ApiPlatformClientService.ts index 5aeca2fddc2..b90f6afec16 100644 --- a/packages/core-backend/src/ApiPlatformClientService.ts +++ b/packages/core-backend/src/ApiPlatformClientService.ts @@ -1,8 +1,8 @@ import type { Messenger } from '@metamask/messenger'; -import { ApiPlatformClient } from './api'; -import type { ApiPlatformClientOptions } from './api'; -import type { ApiPlatformClientServiceMethodActions } from './ApiPlatformClientService-method-action-types'; +import { ApiPlatformClient } from './api/index.js'; +import type { ApiPlatformClientOptions } from './api/index.js'; +import type { ApiPlatformClientServiceMethodActions } from './ApiPlatformClientService-method-action-types.js'; // === GENERAL === diff --git a/packages/core-backend/src/api/ApiPlatformClient.ts b/packages/core-backend/src/api/ApiPlatformClient.ts index 4a47f933599..89187351fbb 100644 --- a/packages/core-backend/src/api/ApiPlatformClient.ts +++ b/packages/core-backend/src/api/ApiPlatformClient.ts @@ -38,18 +38,18 @@ import { QueryClient } from '@tanstack/query-core'; import type { QueryKey } from '@tanstack/query-core'; // Import API clients from subfolders -import { AccountsApiClient } from './accounts'; -import { authQueryKeys } from './base-client'; -import { PricesApiClient } from './prices'; +import { AccountsApiClient } from './accounts/index.js'; +import { authQueryKeys } from './base-client.js'; +import { PricesApiClient } from './prices/index.js'; import { STALE_TIMES, GC_TIMES, shouldRetry, calculateRetryDelay, -} from './shared-types'; -import type { ApiPlatformClientOptions } from './shared-types'; -import { TokenApiClient } from './token'; -import { TokensApiClient } from './tokens'; +} from './shared-types.js'; +import type { ApiPlatformClientOptions } from './shared-types.js'; +import { TokenApiClient } from './token/index.js'; +import { TokensApiClient } from './tokens/index.js'; // ============================================================================ // UNIFIED API CLIENT diff --git a/packages/core-backend/src/api/index.ts b/packages/core-backend/src/api/index.ts index 02c01b9838e..26fe09b8d38 100644 --- a/packages/core-backend/src/api/index.ts +++ b/packages/core-backend/src/api/index.ts @@ -10,7 +10,7 @@ export type { MarketDataDetails, ApiPlatformClientOptions, FetchOptions, -} from './shared-types'; +} from './shared-types.js'; export { API_URLS, STALE_TIMES, @@ -20,10 +20,10 @@ export { getQueryOptionsOverrides, shouldRetry, HttpError, -} from './shared-types'; +} from './shared-types.js'; // Accounts API -export { AccountsApiClient } from './accounts'; +export { AccountsApiClient } from './accounts/index.js'; export type { V5BalanceItem, V5BalancesResponse, @@ -48,10 +48,10 @@ export type { V2NftsResponse, TokenDiscoveryItem, V2TokensResponse, -} from './accounts'; +} from './accounts/index.js'; // Prices API -export { PricesApiClient } from './prices'; +export { PricesApiClient } from './prices/index.js'; export type { V3SpotPricesResponse, CoinGeckoSpotPrice, @@ -60,10 +60,10 @@ export type { PriceSupportedNetworksResponse, V1HistoricalPricesResponse, V3HistoricalPricesResponse, -} from './prices'; +} from './prices/index.js'; // Token API -export { TokenApiClient } from './token'; +export { TokenApiClient } from './token/index.js'; export type { TokenMetadata, V1TokenDescriptionResponse, @@ -74,22 +74,22 @@ export type { TopGainersSortOption, TrendingSortOption, V1SuggestedOccurrenceFloorsResponse, -} from './token'; +} from './token/index.js'; // Tokens API -export { TokensApiClient } from './tokens'; +export { TokensApiClient } from './tokens/index.js'; export type { V1TokenSupportedNetworksResponse, V2TokenSupportedNetworksResponse, V3AssetResponse, -} from './tokens'; +} from './tokens/index.js'; // Base client -export { BaseApiClient } from './base-client'; -export type { InternalFetchOptions } from './base-client'; +export { BaseApiClient } from './base-client.js'; +export type { InternalFetchOptions } from './base-client.js'; // API Platform Client (unified client) export { ApiPlatformClient, createApiPlatformClient, -} from './ApiPlatformClient'; +} from './ApiPlatformClient.js'; diff --git a/packages/core-backend/src/index.ts b/packages/core-backend/src/index.ts index f88d719373e..d5e9e80f841 100644 --- a/packages/core-backend/src/index.ts +++ b/packages/core-backend/src/index.ts @@ -9,7 +9,7 @@ export { getCloseReason, WebSocketState, WebSocketEventType, -} from './ws/BackendWebSocketService'; +} from './ws/BackendWebSocketService.js'; export type { BackendWebSocketServiceOptions, @@ -24,7 +24,7 @@ export type { BackendWebSocketServiceConnectionStateChangedEvent, BackendWebSocketServiceEvents, BackendWebSocketServiceMessenger, -} from './ws/BackendWebSocketService'; +} from './ws/BackendWebSocketService.js'; // ============================================================================ // ACCOUNT ACTIVITY SERVICE @@ -34,7 +34,7 @@ export { AccountActivityService, ACCOUNT_ACTIVITY_SERVICE_ALLOWED_ACTIONS, ACCOUNT_ACTIVITY_SERVICE_ALLOWED_EVENTS, -} from './ws/AccountActivityService'; +} from './ws/AccountActivityService.js'; export type { SystemNotificationData, @@ -49,7 +49,7 @@ export type { AccountActivityServiceEvents, AllowedEvents as AccountActivityServiceAllowedEvents, AccountActivityServiceMessenger, -} from './ws/AccountActivityService'; +} from './ws/AccountActivityService.js'; // ============================================================================ // SHARED TYPES @@ -62,7 +62,7 @@ export type { Transfer, BalanceUpdate, AccountActivityMessage, -} from './types'; +} from './types.js'; // ============================================================================ // API PLATFORM CLIENT SERVICE @@ -71,14 +71,14 @@ export type { export { ApiPlatformClientService, apiPlatformClientServiceName, -} from './ApiPlatformClientService'; +} from './ApiPlatformClientService.js'; export type { ApiPlatformClientServiceOptions, ApiPlatformClientServiceActions, ApiPlatformClientServiceEvents, ApiPlatformClientServiceMessenger, -} from './ApiPlatformClientService'; +} from './ApiPlatformClientService.js'; // ============================================================================ // OHLCV SERVICE @@ -88,7 +88,7 @@ export { OHLCVService, OHLCV_SERVICE_ALLOWED_ACTIONS, OHLCV_SERVICE_ALLOWED_EVENTS, -} from './ws/ohlcv'; +} from './ws/ohlcv/index.js'; export type { OHLCVBar, @@ -103,7 +103,7 @@ export type { OHLCVServiceEvents, OHLCVServiceAllowedEvents, OHLCVServiceMessenger, -} from './ws/ohlcv'; +} from './ws/ohlcv/index.js'; // ============================================================================ // API PLATFORM CLIENT @@ -127,7 +127,7 @@ export { shouldRetry, // Errors HttpError, -} from './api'; +} from './api/index.js'; // ============================================================================ // API PLATFORM CLIENT TYPES @@ -187,4 +187,4 @@ export type { V1TokenSupportedNetworksResponse, V2TokenSupportedNetworksResponse, V3AssetResponse, -} from './api'; +} from './api/index.js'; diff --git a/packages/delegation-controller/package.json b/packages/delegation-controller/package.json index 2dfa3ac2f5b..073038e3f09 100644 --- a/packages/delegation-controller/package.json +++ b/packages/delegation-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/earn-controller/package.json b/packages/earn-controller/package.json index 4ee63721a6d..c63c408172c 100644 --- a/packages/earn-controller/package.json +++ b/packages/earn-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/eip-5792-middleware/package.json b/packages/eip-5792-middleware/package.json index b7b93bc7aa4..a0e6759a33f 100644 --- a/packages/eip-5792-middleware/package.json +++ b/packages/eip-5792-middleware/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/eip-7702-internal-rpc-middleware/package.json b/packages/eip-7702-internal-rpc-middleware/package.json index 79b6148ce76..23839ff8a1d 100644 --- a/packages/eip-7702-internal-rpc-middleware/package.json +++ b/packages/eip-7702-internal-rpc-middleware/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/eip1193-permission-middleware/package.json b/packages/eip1193-permission-middleware/package.json index b5b9f936bb7..37afdb3eb77 100644 --- a/packages/eip1193-permission-middleware/package.json +++ b/packages/eip1193-permission-middleware/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/ens-controller/package.json b/packages/ens-controller/package.json index af64d7cc0bc..ab1acbf77f1 100644 --- a/packages/ens-controller/package.json +++ b/packages/ens-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/eth-block-tracker/package.json b/packages/eth-block-tracker/package.json index e9a05162371..1da5e464ca6 100644 --- a/packages/eth-block-tracker/package.json +++ b/packages/eth-block-tracker/package.json @@ -20,19 +20,11 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", "module": "./dist/index.mjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/eth-json-rpc-middleware/package.json b/packages/eth-json-rpc-middleware/package.json index c3975ca62ab..0d5388b0a48 100644 --- a/packages/eth-json-rpc-middleware/package.json +++ b/packages/eth-json-rpc-middleware/package.json @@ -19,19 +19,11 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", "module": "./dist/index.mjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/eth-json-rpc-provider/package.json b/packages/eth-json-rpc-provider/package.json index 8937583fcb6..7a24b236208 100644 --- a/packages/eth-json-rpc-provider/package.json +++ b/packages/eth-json-rpc-provider/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/gas-fee-controller/package.json b/packages/gas-fee-controller/package.json index 4289a17ea36..a336115766e 100644 --- a/packages/gas-fee-controller/package.json +++ b/packages/gas-fee-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/gator-permissions-controller/package.json b/packages/gator-permissions-controller/package.json index a884e22727a..0f58b065577 100644 --- a/packages/gator-permissions-controller/package.json +++ b/packages/gator-permissions-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/gator-permissions-controller/src/GatorPermissionsController.ts b/packages/gator-permissions-controller/src/GatorPermissionsController.ts index 652513bdf97..afa900c768d 100644 --- a/packages/gator-permissions-controller/src/GatorPermissionsController.ts +++ b/packages/gator-permissions-controller/src/GatorPermissionsController.ts @@ -27,25 +27,25 @@ import type { } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { DELEGATION_FRAMEWORK_VERSION } from './constants'; -import type { DecodedPermission } from './decodePermission'; +import { DELEGATION_FRAMEWORK_VERSION } from './constants.js'; +import type { DecodedPermission } from './decodePermission/index.js'; import { createPermissionDecodersForContracts, findDecodersWithMatchingCaveatAddresses, reconstructDecodedPermission, selectUniqueDecoderAndDecodedPermission, -} from './decodePermission'; +} from './decodePermission/index.js'; import { GatorPermissionsFetchError, GatorPermissionsProviderError, OriginNotAllowedError, PermissionDecodingError, -} from './errors'; -import type { GatorPermissionsControllerMethodActions } from './GatorPermissionsController-method-action-types'; -import { controllerLog } from './logger'; -import { updateGrantedPermissionsStatus } from './permissionOnChainStatus'; -import type { PermissionStatusEip1193Provider } from './permissionOnChainStatus'; -import { GatorPermissionsSnapRpcMethod } from './types'; +} from './errors.js'; +import type { GatorPermissionsControllerMethodActions } from './GatorPermissionsController-method-action-types.js'; +import { controllerLog } from './logger.js'; +import { updateGrantedPermissionsStatus } from './permissionOnChainStatus.js'; +import type { PermissionStatusEip1193Provider } from './permissionOnChainStatus.js'; +import { GatorPermissionsSnapRpcMethod } from './types.js'; import type { StoredGatorPermission, PermissionInfoWithMetadata, @@ -54,8 +54,8 @@ import type { DelegationDetails, RevocationParams, PendingRevocationParams, -} from './types'; -import { executeSnapRpc } from './utils'; +} from './types.js'; +import { executeSnapRpc } from './utils.js'; // === GENERAL === diff --git a/packages/gator-permissions-controller/src/decodePermission/index.ts b/packages/gator-permissions-controller/src/decodePermission/index.ts index 696f123f69d..5f0bbab3a18 100644 --- a/packages/gator-permissions-controller/src/decodePermission/index.ts +++ b/packages/gator-permissions-controller/src/decodePermission/index.ts @@ -2,11 +2,11 @@ export { findDecodersWithMatchingCaveatAddresses, reconstructDecodedPermission, selectUniqueDecoderAndDecodedPermission, -} from './decodePermission'; -export { createPermissionDecodersForContracts } from './decoders'; +} from './decodePermission.js'; +export { createPermissionDecodersForContracts } from './decoders/index.js'; export type { DecodedPermission, PermissionDecoder, ValidateAndDecodeResult, -} from './types'; +} from './types.js'; diff --git a/packages/gator-permissions-controller/src/index.ts b/packages/gator-permissions-controller/src/index.ts index b424cad0005..726fa792f7d 100644 --- a/packages/gator-permissions-controller/src/index.ts +++ b/packages/gator-permissions-controller/src/index.ts @@ -1,10 +1,10 @@ -export { default as GatorPermissionsController } from './GatorPermissionsController'; +export { default as GatorPermissionsController } from './GatorPermissionsController.js'; export { DELEGATION_FRAMEWORK_VERSION, EXECUTION_PERMISSION_EXPIRY_RULE_TYPE, EXECUTION_PERMISSION_PAYEE_RULE_TYPE, EXECUTION_PERMISSION_REDEEMER_RULE_TYPE, -} from './constants'; +} from './constants.js'; export type { GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction, GatorPermissionsControllerAddPendingRevocationAction, @@ -13,7 +13,7 @@ export type { GatorPermissionsControllerIsPendingRevocationAction, GatorPermissionsControllerSubmitDirectRevocationAction, GatorPermissionsControllerSubmitRevocationAction, -} from './GatorPermissionsController-method-action-types'; +} from './GatorPermissionsController-method-action-types.js'; export type { GatorPermissionsControllerState, GatorPermissionsControllerConfig, @@ -22,8 +22,8 @@ export type { GatorPermissionsControllerActions, GatorPermissionsControllerEvents, GatorPermissionsControllerStateChangeEvent, -} from './GatorPermissionsController'; -export type { DecodedPermission } from './decodePermission'; +} from './GatorPermissionsController.js'; +export type { DecodedPermission } from './decodePermission/index.js'; export type { GatorPermissionsControllerErrorCode, GatorPermissionsSnapRpcMethod, @@ -37,10 +37,10 @@ export type { RevocationParams, RevocationMetadata, SupportedPermissionType, -} from './types'; +} from './types.js'; -export type { PayeeRule } from './payeeRule'; -export type { RedeemerRule } from './redeemerRule'; +export type { PayeeRule } from './payeeRule.js'; +export type { RedeemerRule } from './redeemerRule.js'; export type { NativeTokenStreamPermission, NativeTokenPeriodicPermission, diff --git a/packages/geolocation-controller/package.json b/packages/geolocation-controller/package.json index 2497627e4a5..6fb42dab029 100644 --- a/packages/geolocation-controller/package.json +++ b/packages/geolocation-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/java-tron-up/package.json b/packages/java-tron-up/package.json index ab5ec59e4f0..9581fbc0816 100644 --- a/packages/java-tron-up/package.json +++ b/packages/java-tron-up/package.json @@ -20,18 +20,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/json-rpc-engine/package.json b/packages/json-rpc-engine/package.json index aad35bcc0bb..3367c468f51 100644 --- a/packages/json-rpc-engine/package.json +++ b/packages/json-rpc-engine/package.json @@ -23,28 +23,14 @@ "v2.js" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./v2": { - "import": { - "types": "./dist/v2/index.d.mts", - "default": "./dist/v2/index.mjs" - }, - "require": { - "types": "./dist/v2/index.d.cts", - "default": "./dist/v2/index.cjs" - } + "types": "./dist/v2/index.d.ts", + "default": "./dist/v2/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/json-rpc-middleware-stream/package.json b/packages/json-rpc-middleware-stream/package.json index d2b530c030c..15eea171804 100644 --- a/packages/json-rpc-middleware-stream/package.json +++ b/packages/json-rpc-middleware-stream/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/keyring-controller/package.json b/packages/keyring-controller/package.json index 83fce7757fe..e98b35a4427 100644 --- a/packages/keyring-controller/package.json +++ b/packages/keyring-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/local-node-utils/package.json b/packages/local-node-utils/package.json index 42e6d1d300d..d0ced65255a 100644 --- a/packages/local-node-utils/package.json +++ b/packages/local-node-utils/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/logging-controller/package.json b/packages/logging-controller/package.json index eda0d1cd045..32de8500854 100644 --- a/packages/logging-controller/package.json +++ b/packages/logging-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/message-manager/package.json b/packages/message-manager/package.json index cb5491c9a42..ea39eb36932 100644 --- a/packages/message-manager/package.json +++ b/packages/message-manager/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/messenger/package.json b/packages/messenger/package.json index 1b83b6c2eff..ff303ae4123 100644 --- a/packages/messenger/package.json +++ b/packages/messenger/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/money-account-api-data-service/package.json b/packages/money-account-api-data-service/package.json index 9938cd9bd7a..2dc95d82b7a 100644 --- a/packages/money-account-api-data-service/package.json +++ b/packages/money-account-api-data-service/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/money-account-balance-service/package.json b/packages/money-account-balance-service/package.json index a272c2d1aa4..d5065ddfa92 100644 --- a/packages/money-account-balance-service/package.json +++ b/packages/money-account-balance-service/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/money-account-balance-service/src/index.ts b/packages/money-account-balance-service/src/index.ts index 1b25bbd7738..afce7bded99 100644 --- a/packages/money-account-balance-service/src/index.ts +++ b/packages/money-account-balance-service/src/index.ts @@ -20,7 +20,7 @@ export type { MoneyAccountBalanceResponse, MusdEquivalentValueResponse, NormalizedVaultApyResponse, -} from './response.types'; +} from './response.types.js'; export { VaultConfigNotAvailableError, VaultConfigValidationError, diff --git a/packages/money-account-balance-service/src/money-account-balance-service.ts b/packages/money-account-balance-service/src/money-account-balance-service.ts index 955ce61e5cc..ee5f284a823 100644 --- a/packages/money-account-balance-service/src/money-account-balance-service.ts +++ b/packages/money-account-balance-service/src/money-account-balance-service.ts @@ -36,23 +36,23 @@ import { VAULT_CONFIG_FEATURE_FLAG_KEY, VEDA_API_NETWORK_NAMES, VEDA_PERFORMANCE_API_BASE_URL, -} from './constants'; +} from './constants.js'; import { VaultConfigNotAvailableError, VaultConfigValidationError, VedaResponseValidationError, -} from './errors'; -import { projectLogger, createModuleLogger } from './logger'; -import type { MoneyAccountBalanceServiceMethodActions } from './money-account-balance-service-method-action-types'; -import { normalizeVaultApyResponse } from './requestNormalization'; +} from './errors.js'; +import { projectLogger, createModuleLogger } from './logger.js'; +import type { MoneyAccountBalanceServiceMethodActions } from './money-account-balance-service-method-action-types.js'; +import { normalizeVaultApyResponse } from './requestNormalization.js'; import type { ExchangeRateResponse, MoneyAccountBalanceResponse, MusdEquivalentValueResponse, NormalizedVaultApyResponse, -} from './response.types'; -import { VaultApyRawResponseStruct, VaultConfigStruct } from './structs'; -import type { VaultConfig } from './types'; +} from './response.types.js'; +import { VaultApyRawResponseStruct, VaultConfigStruct } from './structs.js'; +import type { VaultConfig } from './types.js'; // === GENERAL === @@ -422,7 +422,7 @@ export class MoneyAccountBalanceService extends BaseDataService< 'Vault config cleared — flag key absent; cache invalidated', previousConfig, ); - // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.invalidateQueries(); } else { configLogger( @@ -443,7 +443,7 @@ export class MoneyAccountBalanceService extends BaseDataService< 'Vault config validation failed — previous config cleared; cache invalidated', { previousConfig, error }, ); - // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.invalidateQueries(); } else { configLogger( @@ -464,7 +464,7 @@ export class MoneyAccountBalanceService extends BaseDataService< previous: previousConfig, next: newConfig, }); - // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.invalidateQueries(); } else { configLogger('Vault config loaded', newConfig); diff --git a/packages/money-account-balance-service/src/requestNormalization.ts b/packages/money-account-balance-service/src/requestNormalization.ts index 2a8238dfcad..47508a47ccc 100644 --- a/packages/money-account-balance-service/src/requestNormalization.ts +++ b/packages/money-account-balance-service/src/requestNormalization.ts @@ -1,7 +1,7 @@ import { Infer } from '@metamask/superstruct'; -import type { NormalizedVaultApyResponse } from './response.types'; -import { VaultApyRawResponseStruct } from './structs'; +import type { NormalizedVaultApyResponse } from './response.types.js'; +import { VaultApyRawResponseStruct } from './structs.js'; /** * Normalizes the raw response from the Veda performance API into the expected diff --git a/packages/money-account-controller/package.json b/packages/money-account-controller/package.json index 8c79ed31e58..34d390e4452 100644 --- a/packages/money-account-controller/package.json +++ b/packages/money-account-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/money-account-upgrade-controller/package.json b/packages/money-account-upgrade-controller/package.json index 203afbc7b39..0035de2179c 100644 --- a/packages/money-account-upgrade-controller/package.json +++ b/packages/money-account-upgrade-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/multichain-account-service/package.json b/packages/multichain-account-service/package.json index 7e85fe5b864..52cd947f028 100644 --- a/packages/multichain-account-service/package.json +++ b/packages/multichain-account-service/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/multichain-account-service/src/MultichainAccountGroup.ts b/packages/multichain-account-service/src/MultichainAccountGroup.ts index 992dd1e0159..6d11bce3bb5 100644 --- a/packages/multichain-account-service/src/MultichainAccountGroup.ts +++ b/packages/multichain-account-service/src/MultichainAccountGroup.ts @@ -8,12 +8,12 @@ import type { Bip44Account } from '@metamask/account-api'; import type { AccountSelector } from '@metamask/account-api'; import type { KeyringAccount } from '@metamask/keyring-api'; -import type { Logger } from './logger'; -import { projectLogger as log, createModuleLogger } from './logger'; -import type { ServiceState, StateKeys } from './MultichainAccountService'; -import type { MultichainAccountWallet } from './MultichainAccountWallet'; -import type { Bip44AccountProvider } from './providers'; -import type { MultichainAccountServiceMessenger } from './types'; +import type { Logger } from './logger.js'; +import { projectLogger as log, createModuleLogger } from './logger.js'; +import type { ServiceState, StateKeys } from './MultichainAccountService.js'; +import type { MultichainAccountWallet } from './MultichainAccountWallet.js'; +import type { Bip44AccountProvider } from './providers/index.js'; +import type { MultichainAccountServiceMessenger } from './types.js'; export type GroupState = ServiceState[StateKeys['entropySource']][StateKeys['groupIndex']]; diff --git a/packages/multichain-account-service/src/MultichainAccountService.ts b/packages/multichain-account-service/src/MultichainAccountService.ts index c3eb45eb33a..ccf02c63e79 100644 --- a/packages/multichain-account-service/src/MultichainAccountService.ts +++ b/packages/multichain-account-service/src/MultichainAccountService.ts @@ -13,12 +13,17 @@ import { KeyringTypes } from '@metamask/keyring-controller'; import type { InternalAccount } from '@metamask/keyring-internal-api'; import { areUint8ArraysEqual, assert } from '@metamask/utils'; -import { traceFallback } from './analytics'; -import { isPerfEnabled, withLocalPerfTrace } from './analytics/perf'; -import { reportError } from './errors'; -import { projectLogger as log } from './logger'; -import type { MultichainAccountGroup } from './MultichainAccountGroup'; -import { MultichainAccountWallet } from './MultichainAccountWallet'; +import { traceFallback } from './analytics/index.js'; +import { isPerfEnabled, withLocalPerfTrace } from './analytics/perf.js'; +import { reportError } from './errors.js'; +import { projectLogger as log } from './logger.js'; +import type { MultichainAccountGroup } from './MultichainAccountGroup.js'; +import { MultichainAccountWallet } from './MultichainAccountWallet.js'; +import { + AccountProviderWrapper, + isAccountProviderWrapper, +} from './providers/AccountProviderWrapper.js'; +import { EvmAccountProvider } from './providers/EvmAccountProvider.js'; import { EvmAccountProviderConfig, Bip44AccountProvider, @@ -29,22 +34,17 @@ import { TRX_ACCOUNT_PROVIDER_NAME, BtcAccountProvider, TrxAccountProvider, -} from './providers'; -import { - AccountProviderWrapper, - isAccountProviderWrapper, -} from './providers/AccountProviderWrapper'; -import { EvmAccountProvider } from './providers/EvmAccountProvider'; -import { SolAccountProvider } from './providers/SolAccountProvider'; +} from './providers/index.js'; +import { SolAccountProvider } from './providers/SolAccountProvider.js'; import { SOL_ACCOUNT_PROVIDER_NAME, SolAccountProviderConfig, -} from './providers/SolAccountProvider'; +} from './providers/SolAccountProvider.js'; import type { MultichainAccountServiceConfig, MultichainAccountServiceMessenger, -} from './types'; -import { toErrorMessage } from './utils'; +} from './types.js'; +import { toErrorMessage } from './utils.js'; /** * Per-account failure detail attached to the aggregated Sentry report diff --git a/packages/multichain-account-service/src/MultichainAccountWallet.ts b/packages/multichain-account-service/src/MultichainAccountWallet.ts index 0018b987b31..54873592bce 100644 --- a/packages/multichain-account-service/src/MultichainAccountWallet.ts +++ b/packages/multichain-account-service/src/MultichainAccountWallet.ts @@ -18,27 +18,31 @@ import type { EntropySourceId, KeyringAccount } from '@metamask/keyring-api'; import { assert } from '@metamask/utils'; import { Mutex } from 'async-mutex'; -import { toProviderDataTraces, traceFallback, TraceName } from './analytics'; -import { reportError } from './errors'; -import type { Logger } from './logger'; +import { + toProviderDataTraces, + traceFallback, + TraceName, +} from './analytics/index.js'; +import { reportError } from './errors.js'; +import type { Logger } from './logger.js'; import { createModuleLogger, ERROR_PREFIX, projectLogger as log, WARNING_PREFIX, -} from './logger'; -import type { GroupState } from './MultichainAccountGroup'; -import { MultichainAccountGroup } from './MultichainAccountGroup'; -import type { ServiceState, StateKeys } from './MultichainAccountService'; -import type { Bip44AccountProvider } from './providers'; -import { EvmAccountProvider } from './providers/EvmAccountProvider'; -import type { MultichainAccountServiceMessenger } from './types'; +} from './logger.js'; +import type { GroupState } from './MultichainAccountGroup.js'; +import { MultichainAccountGroup } from './MultichainAccountGroup.js'; +import type { ServiceState, StateKeys } from './MultichainAccountService.js'; +import { EvmAccountProvider } from './providers/EvmAccountProvider.js'; +import type { Bip44AccountProvider } from './providers/index.js'; +import type { MultichainAccountServiceMessenger } from './types.js'; import { assertGroupIndexIsValid, assertGroupIndexRangeIsValid, GroupIndexRange, toErrorMessage, -} from './utils'; +} from './utils.js'; /** * The context for a provider discovery. @@ -758,7 +762,6 @@ export class MultichainAccountWallet< this.#log('Aligned accounts! (post)'); }; - // eslint-disable-next-line no-void void alignOtherAccounts().catch((error) => { const errorMessage = `Unable to align non-EVM accounts from group index ${from} to ${to}`; this.#log( diff --git a/packages/multichain-account-service/src/index.ts b/packages/multichain-account-service/src/index.ts index 512c5c0801e..d63916b7882 100644 --- a/packages/multichain-account-service/src/index.ts +++ b/packages/multichain-account-service/src/index.ts @@ -5,7 +5,7 @@ export type { MultichainAccountServiceMultichainAccountGroupCreatedEvent, MultichainAccountServiceMultichainAccountGroupUpdatedEvent, MultichainAccountServiceWalletStatusChangeEvent, -} from './types'; +} from './types.js'; export type { MultichainAccountServiceResyncAccountsAction, MultichainAccountServiceGetMultichainAccountWalletAction, @@ -21,7 +21,7 @@ export type { MultichainAccountServiceAlignWalletsAction, MultichainAccountServiceAlignWalletAction, MultichainAccountServiceInitAction, -} from './MultichainAccountService-method-action-types'; +} from './MultichainAccountService-method-action-types.js'; export { AccountProviderWrapper, BaseBip44AccountProvider, @@ -37,7 +37,7 @@ export { TrxAccountProvider, XLM_ACCOUNT_PROVIDER_NAME, XlmAccountProvider, -} from './providers'; -export { MultichainAccountWallet } from './MultichainAccountWallet'; -export { MultichainAccountGroup } from './MultichainAccountGroup'; -export { MultichainAccountService } from './MultichainAccountService'; +} from './providers/index.js'; +export { MultichainAccountWallet } from './MultichainAccountWallet.js'; +export { MultichainAccountGroup } from './MultichainAccountGroup.js'; +export { MultichainAccountService } from './MultichainAccountService.js'; diff --git a/packages/multichain-account-service/src/providers/BtcAccountProvider.ts b/packages/multichain-account-service/src/providers/BtcAccountProvider.ts index 1095d54935b..d6d73599a04 100644 --- a/packages/multichain-account-service/src/providers/BtcAccountProvider.ts +++ b/packages/multichain-account-service/src/providers/BtcAccountProvider.ts @@ -5,10 +5,10 @@ import type { InternalAccount } from '@metamask/keyring-internal-api'; import type { SnapId } from '@metamask/snaps-sdk'; import type { CaipChainId } from '@metamask/utils'; -import { traceFallback } from '../analytics'; -import type { MultichainAccountServiceMessenger } from '../types'; -import { SnapAccountProvider } from './SnapAccountProvider'; -import type { SnapAccountProviderConfig } from './SnapAccountProvider'; +import { traceFallback } from '../analytics/index.js'; +import type { MultichainAccountServiceMessenger } from '../types.js'; +import { SnapAccountProvider } from './SnapAccountProvider.js'; +import type { SnapAccountProviderConfig } from './SnapAccountProvider.js'; export type BtcAccountProviderConfig = SnapAccountProviderConfig; diff --git a/packages/multichain-account-service/src/providers/EvmAccountProvider.ts b/packages/multichain-account-service/src/providers/EvmAccountProvider.ts index b6a588af07a..23070e225ec 100644 --- a/packages/multichain-account-service/src/providers/EvmAccountProvider.ts +++ b/packages/multichain-account-service/src/providers/EvmAccountProvider.ts @@ -21,16 +21,16 @@ import type { Provider } from '@metamask/network-controller'; import { add0x, assert, bytesToHex, isStrictHexString } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { traceFallback } from '../analytics'; -import { TraceName } from '../analytics/traces'; -import { projectLogger as log, WARNING_PREFIX } from '../logger'; -import type { MultichainAccountServiceMessenger } from '../types'; +import { traceFallback } from '../analytics/index.js'; +import { TraceName } from '../analytics/traces.js'; +import { projectLogger as log, WARNING_PREFIX } from '../logger.js'; +import type { MultichainAccountServiceMessenger } from '../types.js'; import { assertAreBip44Accounts, assertIsBip44Account, BaseBip44AccountProvider, -} from './BaseBip44AccountProvider'; -import { withRetry, withTimeout } from './utils'; +} from './BaseBip44AccountProvider.js'; +import { withRetry, withTimeout } from './utils.js'; const ETH_MAINNET_CHAIN_ID = '0x1'; diff --git a/packages/multichain-account-service/src/providers/SnapAccountProvider.ts b/packages/multichain-account-service/src/providers/SnapAccountProvider.ts index d6feec01cc9..53d68dc160f 100644 --- a/packages/multichain-account-service/src/providers/SnapAccountProvider.ts +++ b/packages/multichain-account-service/src/providers/SnapAccountProvider.ts @@ -30,14 +30,14 @@ import { toCreateAccountsV2DataTraces, traceFallback, TraceName, -} from '../analytics'; -import { reportError } from '../errors'; -import { projectLogger as log, WARNING_PREFIX } from '../logger'; -import type { MultichainAccountServiceMessenger } from '../types'; -import { BaseBip44AccountProvider } from './BaseBip44AccountProvider'; -import { createSnapKeyringClient } from './SnapKeyringClient'; -import type { Sender, SnapKeyringClient } from './SnapKeyringClient'; -import { withRetry, withTimeout } from './utils'; +} from '../analytics/index.js'; +import { reportError } from '../errors.js'; +import { projectLogger as log, WARNING_PREFIX } from '../logger.js'; +import type { MultichainAccountServiceMessenger } from '../types.js'; +import { BaseBip44AccountProvider } from './BaseBip44AccountProvider.js'; +import { createSnapKeyringClient } from './SnapKeyringClient.js'; +import type { Sender, SnapKeyringClient } from './SnapKeyringClient.js'; +import { withRetry, withTimeout } from './utils.js'; /** * A proxy to the Snap's keyring operations that routes every call through the diff --git a/packages/multichain-account-service/src/providers/SolAccountProvider.ts b/packages/multichain-account-service/src/providers/SolAccountProvider.ts index 208b25d03a7..bb9a8327b4d 100644 --- a/packages/multichain-account-service/src/providers/SolAccountProvider.ts +++ b/packages/multichain-account-service/src/providers/SolAccountProvider.ts @@ -12,10 +12,10 @@ import type { InternalAccount } from '@metamask/keyring-internal-api'; import type { SnapId } from '@metamask/snaps-sdk'; import type { CaipChainId } from '@metamask/utils'; -import { traceFallback } from '../analytics'; -import type { MultichainAccountServiceMessenger } from '../types'; -import { SnapAccountProvider } from './SnapAccountProvider'; -import type { SnapAccountProviderConfig } from './SnapAccountProvider'; +import { traceFallback } from '../analytics/index.js'; +import type { MultichainAccountServiceMessenger } from '../types.js'; +import { SnapAccountProvider } from './SnapAccountProvider.js'; +import type { SnapAccountProviderConfig } from './SnapAccountProvider.js'; export type SolAccountProviderConfig = SnapAccountProviderConfig; diff --git a/packages/multichain-account-service/src/providers/TrxAccountProvider.ts b/packages/multichain-account-service/src/providers/TrxAccountProvider.ts index d232ac1582c..9b119f22d6f 100644 --- a/packages/multichain-account-service/src/providers/TrxAccountProvider.ts +++ b/packages/multichain-account-service/src/providers/TrxAccountProvider.ts @@ -6,10 +6,10 @@ import type { InternalAccount } from '@metamask/keyring-internal-api'; import type { SnapId } from '@metamask/snaps-sdk'; import type { CaipChainId } from '@metamask/utils'; -import { traceFallback } from '../analytics'; -import type { MultichainAccountServiceMessenger } from '../types'; -import { SnapAccountProvider } from './SnapAccountProvider'; -import type { SnapAccountProviderConfig } from './SnapAccountProvider'; +import { traceFallback } from '../analytics/index.js'; +import type { MultichainAccountServiceMessenger } from '../types.js'; +import { SnapAccountProvider } from './SnapAccountProvider.js'; +import type { SnapAccountProviderConfig } from './SnapAccountProvider.js'; export type TrxAccountProviderConfig = SnapAccountProviderConfig; diff --git a/packages/multichain-account-service/src/providers/XlmAccountProvider.ts b/packages/multichain-account-service/src/providers/XlmAccountProvider.ts index 677db57fb52..ea39099deba 100644 --- a/packages/multichain-account-service/src/providers/XlmAccountProvider.ts +++ b/packages/multichain-account-service/src/providers/XlmAccountProvider.ts @@ -6,10 +6,10 @@ import type { InternalAccount } from '@metamask/keyring-internal-api'; import type { SnapId } from '@metamask/snaps-sdk'; import type { CaipChainId } from '@metamask/utils'; -import { traceFallback } from '../analytics'; -import type { MultichainAccountServiceMessenger } from '../types'; -import { SnapAccountProvider } from './SnapAccountProvider'; -import type { SnapAccountProviderConfig } from './SnapAccountProvider'; +import { traceFallback } from '../analytics/index.js'; +import type { MultichainAccountServiceMessenger } from '../types.js'; +import { SnapAccountProvider } from './SnapAccountProvider.js'; +import type { SnapAccountProviderConfig } from './SnapAccountProvider.js'; export type XlmAccountProviderConfig = SnapAccountProviderConfig; diff --git a/packages/multichain-account-service/src/tests/providers.ts b/packages/multichain-account-service/src/tests/providers.ts index 56ce85a79ee..676651cff67 100644 --- a/packages/multichain-account-service/src/tests/providers.ts +++ b/packages/multichain-account-service/src/tests/providers.ts @@ -9,8 +9,11 @@ import { import type { KeyringAccount } from '@metamask/keyring-api'; import type { KeyringCapabilities } from '@metamask/keyring-api/v2'; -import { AccountProviderWrapper, EvmAccountProvider } from '../providers'; -import { GroupIndexRange } from '../utils'; +import { + AccountProviderWrapper, + EvmAccountProvider, +} from '../providers/index.js'; +import { GroupIndexRange } from '../utils.js'; export type MockAccountProvider = { mockAccounts: KeyringAccount[]; diff --git a/packages/multichain-api-middleware/package.json b/packages/multichain-api-middleware/package.json index f9ea8e25b9c..b109da2aea3 100644 --- a/packages/multichain-api-middleware/package.json +++ b/packages/multichain-api-middleware/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/multichain-api-middleware/src/index.ts b/packages/multichain-api-middleware/src/index.ts index d126c158795..b0b00baab6b 100644 --- a/packages/multichain-api-middleware/src/index.ts +++ b/packages/multichain-api-middleware/src/index.ts @@ -1,7 +1,7 @@ -export { methodHandlers } from './handlers'; -export type { MethodHandlerHooks } from './handlers'; +export { methodHandlers } from './handlers/index.js'; +export type { MethodHandlerHooks } from './handlers/index.js'; -export { multichainMethodCallValidatorMiddleware } from './middlewares/multichainMethodCallValidatorMiddleware'; -export { MultichainMiddlewareManager } from './middlewares/MultichainMiddlewareManager'; -export { MultichainSubscriptionManager } from './middlewares/MultichainSubscriptionManager'; -export { MultichainApiNotifications } from './handlers/types'; +export { multichainMethodCallValidatorMiddleware } from './middlewares/multichainMethodCallValidatorMiddleware.js'; +export { MultichainMiddlewareManager } from './middlewares/MultichainMiddlewareManager.js'; +export { MultichainSubscriptionManager } from './middlewares/MultichainSubscriptionManager.js'; +export { MultichainApiNotifications } from './handlers/types.js'; diff --git a/packages/multichain-api-middleware/src/middlewares/multichainMethodCallValidatorMiddleware.ts b/packages/multichain-api-middleware/src/middlewares/multichainMethodCallValidatorMiddleware.ts index 77977930849..b87819364c6 100644 --- a/packages/multichain-api-middleware/src/middlewares/multichainMethodCallValidatorMiddleware.ts +++ b/packages/multichain-api-middleware/src/middlewares/multichainMethodCallValidatorMiddleware.ts @@ -9,8 +9,8 @@ import type { OpenrpcDocument, ReferenceObject, } from '@open-rpc/meta-schema'; -import dereferenceDocument from '@open-rpc/schema-utils-js/build/dereference-document'; -import { makeCustomResolver } from '@open-rpc/schema-utils-js/build/parse-open-rpc-document'; +import { dereferenceDocument } from '@open-rpc/schema-utils-js'; +import { makeCustomResolver } from '@open-rpc/schema-utils-js/build/parse-open-rpc-document.js'; import type { Schema, ValidationError } from 'jsonschema'; import { Validator } from 'jsonschema'; diff --git a/packages/multichain-network-controller/package.json b/packages/multichain-network-controller/package.json index b3732dfd434..230aa63f428 100644 --- a/packages/multichain-network-controller/package.json +++ b/packages/multichain-network-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/multichain-transactions-controller/package.json b/packages/multichain-transactions-controller/package.json index 7502b02fca2..d28785632fa 100644 --- a/packages/multichain-transactions-controller/package.json +++ b/packages/multichain-transactions-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/name-controller/package.json b/packages/name-controller/package.json index 49d9af898e6..0785d556e3a 100644 --- a/packages/name-controller/package.json +++ b/packages/name-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/network-connection-banner-controller/package.json b/packages/network-connection-banner-controller/package.json index 727e6a7ced1..d098a20fcba 100644 --- a/packages/network-connection-banner-controller/package.json +++ b/packages/network-connection-banner-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/network-controller/package.json b/packages/network-controller/package.json index 10ed37649d9..9a826634ee1 100644 --- a/packages/network-controller/package.json +++ b/packages/network-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/network-enablement-controller/package.json b/packages/network-enablement-controller/package.json index 993b838a8b0..216df4d3b4e 100644 --- a/packages/network-enablement-controller/package.json +++ b/packages/network-enablement-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/network-enablement-controller/src/NetworkEnablementController.ts b/packages/network-enablement-controller/src/NetworkEnablementController.ts index 844955887c5..124fe15dceb 100644 --- a/packages/network-enablement-controller/src/NetworkEnablementController.ts +++ b/packages/network-enablement-controller/src/NetworkEnablementController.ts @@ -18,14 +18,14 @@ import type { TransactionControllerTransactionSubmittedEvent } from '@metamask/t import type { CaipChainId, CaipNamespace, Hex } from '@metamask/utils'; import { KnownCaipNamespace } from '@metamask/utils'; -import { POPULAR_NETWORKS } from './constants'; -import type { NetworkEnablementControllerMethodActions } from './NetworkEnablementController-method-action-types'; -import { Slip44Service } from './services'; +import { POPULAR_NETWORKS } from './constants.js'; +import type { NetworkEnablementControllerMethodActions } from './NetworkEnablementController-method-action-types.js'; +import { Slip44Service } from './services/index.js'; import { deriveKeys, isOnlyNetworkEnabledInNamespace, isPopularNetwork, -} from './utils'; +} from './utils.js'; const controllerName = 'NetworkEnablementController'; @@ -251,7 +251,6 @@ export class NetworkEnablementController extends BaseController< messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS); messenger.subscribe('NetworkController:networkAdded', ({ chainId }) => { - // eslint-disable-next-line no-void void this.#onAddNetwork(chainId); }); diff --git a/packages/network-enablement-controller/src/index.ts b/packages/network-enablement-controller/src/index.ts index adf30c5d02b..b06310b4ad7 100644 --- a/packages/network-enablement-controller/src/index.ts +++ b/packages/network-enablement-controller/src/index.ts @@ -1,4 +1,4 @@ -export { NetworkEnablementController } from './NetworkEnablementController'; +export { NetworkEnablementController } from './NetworkEnablementController.js'; export type { NetworkEnablementControllerState, @@ -10,7 +10,7 @@ export type { NativeAssetIdentifier, NativeAssetIdentifiersMap, NetworkConfig, -} from './NetworkEnablementController'; +} from './NetworkEnablementController.js'; export type { NetworkEnablementControllerEnableNetworkAction, @@ -23,7 +23,7 @@ export type { NetworkEnablementControllerListPopularEvmNetworksAction, NetworkEnablementControllerListPopularMultichainNetworksAction, NetworkEnablementControllerListPopularNetworksAction, -} from './NetworkEnablementController-method-action-types'; +} from './NetworkEnablementController-method-action-types.js'; export { selectEnabledNetworkMap, @@ -33,6 +33,6 @@ export { selectEnabledNetworksCount, selectEnabledEvmNetworks, selectEnabledSolanaNetworks, -} from './selectors'; +} from './selectors.js'; -export { Slip44Service, getEvmSlip44, getSlip44BySymbol } from './services'; +export { Slip44Service, getEvmSlip44, getSlip44BySymbol } from './services/index.js'; diff --git a/packages/notification-services-controller/package.json b/packages/notification-services-controller/package.json index 1e6bacf9dcc..10aa9cb0771 100644 --- a/packages/notification-services-controller/package.json +++ b/packages/notification-services-controller/package.json @@ -21,68 +21,30 @@ "push-services/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./notification-services": { - "import": { - "types": "./dist/NotificationServicesController/index.d.mts", - "default": "./dist/NotificationServicesController/index.mjs" - }, - "require": { - "types": "./dist/NotificationServicesController/index.d.cts", - "default": "./dist/NotificationServicesController/index.cjs" - } + "types": "./dist/NotificationServicesController/index.d.ts", + "default": "./dist/NotificationServicesController/index.js" }, "./notification-services/mocks": { - "import": { - "types": "./dist/NotificationServicesController/mocks/index.d.mts", - "default": "./dist/NotificationServicesController/mocks/index.mjs" - }, - "require": { - "types": "./dist/NotificationServicesController/mocks/index.d.cts", - "default": "./dist/NotificationServicesController/mocks/index.cjs" - } + "types": "./dist/NotificationServicesController/mocks/index.d.ts", + "default": "./dist/NotificationServicesController/mocks/index.js" }, "./push-services": { - "import": { - "types": "./dist/NotificationServicesPushController/index.d.mts", - "default": "./dist/NotificationServicesPushController/index.mjs" - }, - "require": { - "types": "./dist/NotificationServicesPushController/index.d.cts", - "default": "./dist/NotificationServicesPushController/index.cjs" - } + "types": "./dist/NotificationServicesPushController/index.d.ts", + "default": "./dist/NotificationServicesPushController/index.js" }, "./push-services/web": { - "import": { - "types": "./dist/NotificationServicesPushController/web/index.d.mts", - "default": "./dist/NotificationServicesPushController/web/index.mjs" - }, - "require": { - "types": "./dist/NotificationServicesPushController/web/index.d.cts", - "default": "./dist/NotificationServicesPushController/web/index.cjs" - } + "types": "./dist/NotificationServicesPushController/web/index.d.ts", + "default": "./dist/NotificationServicesPushController/web/index.js" }, "./push-services/mocks": { - "import": { - "types": "./dist/NotificationServicesPushController/mocks/index.d.mts", - "default": "./dist/NotificationServicesPushController/mocks/index.mjs" - }, - "require": { - "types": "./dist/NotificationServicesPushController/mocks/index.d.cts", - "default": "./dist/NotificationServicesPushController/mocks/index.cjs" - } + "types": "./dist/NotificationServicesPushController/mocks/index.d.ts", + "default": "./dist/NotificationServicesPushController/mocks/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/__fixtures__/mockMessenger.ts b/packages/notification-services-controller/src/NotificationServicesPushController/__fixtures__/mockMessenger.ts index 283eff5eee6..f18beacad11 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/__fixtures__/mockMessenger.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/__fixtures__/mockMessenger.ts @@ -5,7 +5,7 @@ import type { MockAnyNamespace, } from '@metamask/messenger'; -import type { NotificationServicesPushControllerMessenger } from '..'; +import type { NotificationServicesPushControllerMessenger } from './../index.js'; const controllerName = 'NotificationServicesPushController'; diff --git a/packages/passkey-controller/package.json b/packages/passkey-controller/package.json index 2052cfe7b4d..494ad1300d0 100644 --- a/packages/passkey-controller/package.json +++ b/packages/passkey-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/permission-controller/package.json b/packages/permission-controller/package.json index 944f3271b13..59f114f3704 100644 --- a/packages/permission-controller/package.json +++ b/packages/permission-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/permission-log-controller/package.json b/packages/permission-log-controller/package.json index df66069aef4..894e9b467b5 100644 --- a/packages/permission-log-controller/package.json +++ b/packages/permission-log-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/perps-controller/package.json b/packages/perps-controller/package.json index 242956235a5..c14a18bb1b3 100644 --- a/packages/perps-controller/package.json +++ b/packages/perps-controller/package.json @@ -22,58 +22,26 @@ "!dist/services/MYXWalletService*" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./constants": { - "import": { - "types": "./dist/constants/index.d.mts", - "default": "./dist/constants/index.mjs" - }, - "require": { - "types": "./dist/constants/index.d.cts", - "default": "./dist/constants/index.cjs" - } + "types": "./dist/constants/index.d.ts", + "default": "./dist/constants/index.js" }, "./constants/*": { - "import": { - "types": "./dist/constants/*.d.mts", - "default": "./dist/constants/*.mjs" - }, - "require": { - "types": "./dist/constants/*.d.cts", - "default": "./dist/constants/*.cjs" - } + "types": "./dist/constants/*.d.ts", + "default": "./dist/constants/*.js" }, "./types": { - "import": { - "types": "./dist/types/index.d.mts", - "default": "./dist/types/index.mjs" - }, - "require": { - "types": "./dist/types/index.d.cts", - "default": "./dist/types/index.cjs" - } + "types": "./dist/types/index.d.ts", + "default": "./dist/types/index.js" }, "./utils/*": { - "import": { - "types": "./dist/utils/*.d.mts", - "default": "./dist/utils/*.mjs" - }, - "require": { - "types": "./dist/utils/*.d.cts", - "default": "./dist/utils/*.cjs" - } + "types": "./dist/utils/*.d.ts", + "default": "./dist/utils/*.js" }, "./package.json": "./package.json" }, diff --git a/packages/perps-controller/src/PerpsController.ts b/packages/perps-controller/src/PerpsController.ts index a7689aed4d0..babe886113b 100644 --- a/packages/perps-controller/src/PerpsController.ts +++ b/packages/perps-controller/src/PerpsController.ts @@ -14,14 +14,14 @@ import type { Messenger } from '@metamask/messenger'; import type { Json } from '@metamask/utils'; import { v4 as uuidv4 } from 'uuid'; -import { CandlePeriod } from './constants/chartConfig'; +import { CandlePeriod } from './constants/chartConfig.js'; import { PERPS_EVENT_PROPERTY, PERPS_EVENT_VALUE, -} from './constants/eventNames'; -import { USDC_SYMBOL } from './constants/hyperLiquidConfig'; -import { PerpsMeasurementName } from './constants/performanceMetrics'; -import type { SortOptionId } from './constants/perpsConfig'; +} from './constants/eventNames.js'; +import { USDC_SYMBOL } from './constants/hyperLiquidConfig.js'; +import { PerpsMeasurementName } from './constants/performanceMetrics.js'; +import type { SortOptionId } from './constants/perpsConfig.js'; import { PERPS_CONSTANTS, MARKET_SORTING_CONFIG, @@ -29,21 +29,21 @@ import { PERPS_DISK_CACHE_USER_DATA, buildProviderCacheKey, MAX_SLIPPAGE_BOUNDS, -} from './constants/perpsConfig'; -import type { PerpsControllerMethodActions } from './PerpsController-method-action-types'; -import { PERPS_ERROR_CODES } from './perpsErrorCodes'; -import { AggregatedPerpsProvider } from './providers/AggregatedPerpsProvider'; -import { HyperLiquidProvider } from './providers/HyperLiquidProvider'; -import { AccountService } from './services/AccountService'; -import { DataLakeService } from './services/DataLakeService'; -import { DepositService } from './services/DepositService'; -import { EligibilityService } from './services/EligibilityService'; -import { FeatureFlagConfigurationService } from './services/FeatureFlagConfigurationService'; -import { MarketDataService } from './services/MarketDataService'; -import { RewardsIntegrationService } from './services/RewardsIntegrationService'; -import type { ServiceContext } from './services/ServiceContext'; -import { TerminalMarketService } from './services/TerminalMarketService'; -import { TradingService } from './services/TradingService'; +} from './constants/perpsConfig.js'; +import type { PerpsControllerMethodActions } from './PerpsController-method-action-types.js'; +import { PERPS_ERROR_CODES } from './perpsErrorCodes.js'; +import { AggregatedPerpsProvider } from './providers/AggregatedPerpsProvider.js'; +import { HyperLiquidProvider } from './providers/HyperLiquidProvider.js'; +import { AccountService } from './services/AccountService.js'; +import { DataLakeService } from './services/DataLakeService.js'; +import { DepositService } from './services/DepositService.js'; +import { EligibilityService } from './services/EligibilityService.js'; +import { FeatureFlagConfigurationService } from './services/FeatureFlagConfigurationService.js'; +import { MarketDataService } from './services/MarketDataService.js'; +import { RewardsIntegrationService } from './services/RewardsIntegrationService.js'; +import type { ServiceContext } from './services/ServiceContext.js'; +import { TerminalMarketService } from './services/TerminalMarketService.js'; +import { TradingService } from './services/TradingService.js'; // PerpsStreamChannelKey removed: using string for channel keys (PerpsStreamManager.pauseChannel takes string) import { WebSocketConnectionState, @@ -53,7 +53,7 @@ import { isVersionGatedFeatureFlag, MARKET_CATEGORIES, // Platform dependencies interface for core migration (bundles all platform-specific deps) -} from './types'; +} from './types/index.js'; import type { AccountState, AssetRoute, @@ -120,28 +120,31 @@ import type { PerpsAddTransactionOptions, MarketTypeFilter, MYXCredentials, -} from './types'; -import type { SortDirection } from './types'; +} from './types/index.js'; +import type { SortDirection } from './types/index.js'; import type { PerpsControllerAllowedActions, PerpsControllerAllowedEvents, -} from './types/messenger'; -import type { CandleData } from './types/perps-types'; +} from './types/messenger.js'; +import type { CandleData } from './types/perps-types.js'; import { LastTransactionResult, TransactionStatus, -} from './types/transactionTypes'; -import { getSelectedEvmAccountFromMessenger } from './utils/accountUtils'; -import { ensureError } from './utils/errorUtils'; -import { parseAssetName } from './utils/hyperLiquidAdapter'; -import { compileMarketPattern, shouldIncludeMarket } from './utils/marketUtils'; -import type { CompiledMarketPattern } from './utils/marketUtils'; +} from './types/transactionTypes.js'; +import { getSelectedEvmAccountFromMessenger } from './utils/accountUtils.js'; +import { ensureError } from './utils/errorUtils.js'; +import { parseAssetName } from './utils/hyperLiquidAdapter.js'; +import { + compileMarketPattern, + shouldIncludeMarket, +} from './utils/marketUtils.js'; +import type { CompiledMarketPattern } from './utils/marketUtils.js'; import { hydrateFromDiskSync, persistMarketEntriesToDisk, persistUserEntriesToDisk, -} from './utils/perpsDiskPersistence'; -import { wait } from './utils/wait'; +} from './utils/perpsDiskPersistence.js'; +import { wait } from './utils/wait.js'; /** Derived type for logger options from PerpsLogger interface */ type PerpsLoggerOptions = Parameters[1]; @@ -222,7 +225,7 @@ export type SelectedPaymentTokenSnapshot = { }; // Re-export error codes from separate file to avoid circular dependencies -export { PERPS_ERROR_CODES, type PerpsErrorCode } from './perpsErrorCodes'; +export { PERPS_ERROR_CODES, type PerpsErrorCode } from './perpsErrorCodes.js'; /** * Initialization state enum for state machine tracking diff --git a/packages/perps-controller/src/aggregation/SubscriptionMultiplexer.ts b/packages/perps-controller/src/aggregation/SubscriptionMultiplexer.ts index 3822072ca79..75785579ef8 100644 --- a/packages/perps-controller/src/aggregation/SubscriptionMultiplexer.ts +++ b/packages/perps-controller/src/aggregation/SubscriptionMultiplexer.ts @@ -8,7 +8,7 @@ * - Cache latest updates per provider per symbol for aggregation */ -import { PERPS_CONSTANTS } from '../constants/perpsConfig'; +import { PERPS_CONSTANTS } from '../constants/perpsConfig.js'; import type { PerpsProviderType, PerpsProvider, @@ -23,8 +23,8 @@ import type { SubscribeOrderFillsParams, SubscribeOrdersParams, SubscribeAccountParams, -} from '../types'; -import { ensureError } from '../utils/errorUtils'; +} from '../types/index.js'; +import { ensureError } from '../utils/errorUtils.js'; /** * Options for constructing SubscriptionMultiplexer diff --git a/packages/perps-controller/src/constants/hyperLiquidConfig.ts b/packages/perps-controller/src/constants/hyperLiquidConfig.ts index 667598b3548..233832c46c7 100644 --- a/packages/perps-controller/src/constants/hyperLiquidConfig.ts +++ b/packages/perps-controller/src/constants/hyperLiquidConfig.ts @@ -1,7 +1,7 @@ import type { CaipAssetId, CaipChainId, Hex } from '@metamask/utils'; -import { MarketCategory } from '../types'; -import type { MarketType } from '../types'; +import { MarketCategory } from '../types/index.js'; +import type { MarketType } from '../types/index.js'; import type { HyperLiquidNetwork, HyperLiquidEndpoints, @@ -11,7 +11,7 @@ import type { HyperLiquidTransportConfig, TradingDefaultsConfig, FeeRatesConfig, -} from '../types/perps-types'; +} from '../types/perps-types.js'; // Network constants export const ARBITRUM_MAINNET_CHAIN_ID_HEX = '0xa4b1' as const; diff --git a/packages/perps-controller/src/index.ts b/packages/perps-controller/src/index.ts index 6e3e15352a5..e193e428ab9 100644 --- a/packages/perps-controller/src/index.ts +++ b/packages/perps-controller/src/index.ts @@ -32,7 +32,7 @@ export { PerpsController, getDefaultPerpsControllerState, InitializationState, -} from './PerpsController'; +} from './PerpsController.js'; export type { PerpsControllerState, PerpsControllerOptions, @@ -40,7 +40,7 @@ export type { PerpsControllerGetStateAction, PerpsControllerActions, PerpsControllerEvents, -} from './PerpsController'; +} from './PerpsController.js'; export type { PerpsControllerCalculateFeesAction, PerpsControllerCalculateLiquidationPriceAction, @@ -132,10 +132,10 @@ export type { PerpsControllerValidateOrderAction, PerpsControllerValidateWithdrawalAction, PerpsControllerWithdrawAction, -} from './PerpsController-method-action-types'; +} from './PerpsController-method-action-types.js'; // Provider interfaces and implementations -export { HyperLiquidProvider } from './providers/HyperLiquidProvider'; +export { HyperLiquidProvider } from './providers/HyperLiquidProvider.js'; // Type definitions (explicit named exports) export { @@ -143,7 +143,7 @@ export { PerpsAnalyticsEvent, MARKET_CATEGORIES, MarketCategory, -} from './types'; +} from './types/index.js'; export type { RawLedgerUpdate, UserHistoryItem, @@ -259,12 +259,12 @@ export type { PaymentToken, PerpsSelectedPaymentToken, VersionGatedFeatureFlag, -} from './types'; +} from './types/index.js'; export { PerpsTraceNames, PerpsTraceOperations, isVersionGatedFeatureFlag, -} from './types'; +} from './types/index.js'; // Types from sub-modules (re-exported via types/index.ts) export type { @@ -279,14 +279,14 @@ export type { ReconnectOptions, ExtendedAssetMeta, ExtendedPerpDex, -} from './types'; +} from './types/index.js'; export type { BaseTransactionResult, LastTransactionResult, TransactionStatus, TransactionRecord, -} from './types'; -export { isTransactionRecord, isLastTransactionResult } from './types'; +} from './types/index.js'; +export { isTransactionRecord, isLastTransactionResult } from './types/index.js'; export type { AssetPosition, SpotBalance, @@ -303,7 +303,7 @@ export type { MetaAndAssetCtxsResponse, PredictedFundingsResponse, SpotMetaResponse, -} from './types'; +} from './types/index.js'; export type { HyperLiquidEndpoints, AssetNetworkConfig, @@ -317,8 +317,8 @@ export type { TradingDefaultsConfig, FeeRatesConfig, HyperLiquidNetwork, -} from './types'; -export type { PerpsToken } from './types'; +} from './types/index.js'; +export type { PerpsToken } from './types/index.js'; // Constants (explicit named exports) export { @@ -332,10 +332,10 @@ export { getCandlePeriodsForDuration, getDefaultCandlePeriodForDuration, calculateCandleCount, -} from './constants'; -export { PERPS_EVENT_PROPERTY, PERPS_EVENT_VALUE } from './constants'; -export { DETAILED_ORDER_TYPES, isTPSLOrder } from './constants'; -export { PERPS_TRANSACTIONS_HISTORY_CONSTANTS } from './constants'; +} from './constants/index.js'; +export { PERPS_EVENT_PROPERTY, PERPS_EVENT_VALUE } from './constants/index.js'; +export { DETAILED_ORDER_TYPES, isTPSLOrder } from './constants/index.js'; +export { PERPS_TRANSACTIONS_HISTORY_CONSTANTS } from './constants/index.js'; export { ARBITRUM_MAINNET_CHAIN_ID_HEX, ARBITRUM_MAINNET_CHAIN_ID, @@ -389,9 +389,9 @@ export { INITIAL_AMOUNT_UI_PROGRESS, WITHDRAWAL_PROGRESS_STAGES, PROGRESS_BAR_COMPLETION_DELAY_MS, -} from './constants'; -export type { SupportedAsset } from './constants'; -export { PerpsMeasurementName } from './constants'; +} from './constants/index.js'; +export type { SupportedAsset } from './constants/index.js'; +export { PerpsMeasurementName } from './constants/index.js'; export { MYX_MAINNET_CHAIN_ID, MYX_TESTNET_CHAIN_ID, @@ -420,7 +420,7 @@ export { MYX_DEFAULT_SLIPPAGE_BPS, MYX_MINIMUM_ORDER_SIZE_USD, MYX_EXECUTION_FEE_TOKEN, -} from './constants'; +} from './constants/index.js'; export { PERPS_CONSTANTS, WITHDRAWAL_CONSTANTS, @@ -437,8 +437,8 @@ export { MARKET_SORTING_CONFIG, PROVIDER_CONFIG, FUNDING_RATE_CONFIG, -} from './constants'; -export type { SortOptionId } from './constants'; +} from './constants/index.js'; +export type { SortOptionId } from './constants/index.js'; // Utilities (explicit named exports) export { @@ -447,16 +447,16 @@ export { getSelectedEvmAccount, calculateWeightedReturnOnEquity, aggregateAccountStates, -} from './utils'; -export type { ReturnOnEquityInput } from './utils'; -export { ensureError, isAbortError } from './utils'; +} from './utils/index.js'; +export type { ReturnOnEquityInput } from './utils/index.js'; +export { ensureError, isAbortError } from './utils/index.js'; export type { OrderBookCacheEntry, ProcessL2BookDataParams, ProcessBboDataParams, -} from './utils'; -export { processL2BookData, processBboData } from './utils'; -export type { ValidationDebugLogger } from './utils'; +} from './utils/index.js'; +export { processL2BookData, processBboData } from './utils/index.js'; +export type { ValidationDebugLogger } from './utils/index.js'; export { createErrorResult, validateWithdrawalParams, @@ -468,26 +468,26 @@ export { getMaxOrderValue, validateOrderParams, validateCoinExists, -} from './utils'; +} from './utils/index.js'; export { generatePerpsId, generateDepositId, generateWithdrawalId, generateOrderId, generateTransactionId, -} from './utils'; +} from './utils/index.js'; export { calculateOpenInterestUSD, isMarketTradable, transformMarketData, formatChange, -} from './utils'; -export type { HyperLiquidMarketData } from './utils'; +} from './utils/index.js'; +export type { HyperLiquidMarketData } from './utils/index.js'; export { getPerpsConnectionAttemptContext, withPerpsConnectionAttemptContext, -} from './utils/perpsConnectionAttemptContext'; -export type { PerpsConnectionAttemptContext } from './utils/perpsConnectionAttemptContext'; +} from './utils/perpsConnectionAttemptContext.js'; +export type { PerpsConnectionAttemptContext } from './utils/perpsConnectionAttemptContext.js'; export { MAX_MARKET_PATTERN_LENGTH, escapeRegex, @@ -506,9 +506,9 @@ export { isHip3Market, rankMarketsByQuery, getMarketMatchRank, -} from './utils'; -export { MarketMatchRank } from './utils'; -export type { MarketPatternMatcher, CompiledMarketPattern } from './utils'; +} from './utils/index.js'; +export { MarketMatchRank } from './utils/index.js'; +export type { MarketPatternMatcher, CompiledMarketPattern } from './utils/index.js'; export type { OrderCalculationsDebugLogger, CalculateFinalPositionSizeParams, @@ -517,7 +517,7 @@ export type { CalculateOrderPriceAndSizeResult, BuildOrdersArrayParams, BuildOrdersArrayResult, -} from './utils'; +} from './utils/index.js'; export { calculatePositionSize, calculateMarginRequired, @@ -525,28 +525,28 @@ export { calculateFinalPositionSize, calculateOrderPriceAndSize, buildOrdersArray, -} from './utils'; +} from './utils/index.js'; export { formatAccountToCaipAccountId, isCaipAccountId, handleRewardsError, -} from './utils'; +} from './utils/index.js'; export { countSignificantFigures, hasExceededSignificantFigures, roundToSignificantFigures, -} from './utils'; -export type { SortMarketsParams } from './utils'; -export { parseVolume, sortMarkets } from './utils'; -export type { StandaloneInfoClientOptions } from './utils'; +} from './utils/index.js'; +export type { SortMarketsParams } from './utils/index.js'; +export { parseVolume, sortMarkets } from './utils/index.js'; +export type { StandaloneInfoClientOptions } from './utils/index.js'; export { createStandaloneInfoClient, queryStandaloneClearinghouseStates, queryStandaloneOpenOrders, -} from './utils'; -export { stripQuotes, parseCommaSeparatedString } from './utils'; -export { generateERC20TransferData } from './utils'; -export { wait } from './utils'; +} from './utils/index.js'; +export { stripQuotes, parseCommaSeparatedString } from './utils/index.js'; +export { generateERC20TransferData } from './utils/index.js'; +export { wait } from './utils/index.js'; export { adaptOrderToSDK, adaptPositionFromSDK, @@ -559,9 +559,9 @@ export { calculateHip3AssetId, parseAssetName, adaptHyperLiquidLedgerUpdateToUserHistoryItem, -} from './utils'; -export { getEnvironment } from './utils'; -export type { FiatRangeConfig } from './utils'; +} from './utils/index.js'; +export { getEnvironment } from './utils/index.js'; +export type { FiatRangeConfig } from './utils/index.js'; export { PRICE_THRESHOLD, formatWithSignificantDigits, @@ -572,11 +572,11 @@ export { formatPnl, formatPercentage, formatFundingRate, -} from './utils'; +} from './utils/index.js'; // Error codes (explicit named exports) -export { PERPS_ERROR_CODES } from './perpsErrorCodes'; -export type { PerpsErrorCode } from './perpsErrorCodes'; +export { PERPS_ERROR_CODES } from './perpsErrorCodes.js'; +export type { PerpsErrorCode } from './perpsErrorCodes.js'; // Selectors (explicit named exports) export { @@ -589,11 +589,11 @@ export { selectPendingTradeConfiguration, selectMarketFilterPreferences, selectOrderBookGrouping, -} from './selectors'; +} from './selectors.js'; // Services (only externally consumed items) -export { TradingReadinessCache } from './services/TradingReadinessCache'; -export type { ServiceContext } from './services/ServiceContext'; +export { TradingReadinessCache } from './services/TradingReadinessCache.js'; +export type { ServiceContext } from './services/ServiceContext.js'; // Removed with Live Market Prices component: // - usePerpsPrices diff --git a/packages/perps-controller/src/providers/AggregatedPerpsProvider.ts b/packages/perps-controller/src/providers/AggregatedPerpsProvider.ts index 1235af2f6da..3add88a3cec 100644 --- a/packages/perps-controller/src/providers/AggregatedPerpsProvider.ts +++ b/packages/perps-controller/src/providers/AggregatedPerpsProvider.ts @@ -16,9 +16,9 @@ import type { CaipAccountId } from '@metamask/utils'; -import { SubscriptionMultiplexer } from '../aggregation/SubscriptionMultiplexer'; -import { ProviderRouter } from '../routing/ProviderRouter'; -import { WebSocketConnectionState } from '../types'; +import { SubscriptionMultiplexer } from '../aggregation/SubscriptionMultiplexer.js'; +import { ProviderRouter } from '../routing/ProviderRouter.js'; +import { WebSocketConnectionState } from '../types/index.js'; import type { AccountState, AggregatedProviderConfig, @@ -80,7 +80,7 @@ import type { WithdrawResult, RawLedgerUpdate, PerpsReadOptions, -} from '../types'; +} from '../types/index.js'; /** * AggregatedPerpsProvider implements PerpsProvider by coordinating diff --git a/packages/perps-controller/src/providers/HyperLiquidProvider.ts b/packages/perps-controller/src/providers/HyperLiquidProvider.ts index aecd3627e03..f91c908247c 100644 --- a/packages/perps-controller/src/providers/HyperLiquidProvider.ts +++ b/packages/perps-controller/src/providers/HyperLiquidProvider.ts @@ -6,11 +6,11 @@ import type { } from '@nktkas/hyperliquid'; import { v4 as uuidv4 } from 'uuid'; -import type { CandlePeriod } from '../constants/chartConfig'; +import type { CandlePeriod } from '../constants/chartConfig.js'; import { PERPS_EVENT_PROPERTY, PERPS_EVENT_VALUE, -} from '../constants/eventNames'; +} from '../constants/eventNames.js'; import { BASIS_POINTS_DIVISOR, BUILDER_FEE_CONFIG, @@ -28,28 +28,28 @@ import { TRADING_DEFAULTS, USDC_DECIMALS, USDH_CONFIG, -} from '../constants/hyperLiquidConfig'; +} from '../constants/hyperLiquidConfig.js'; import { ORDER_SLIPPAGE_CONFIG, PERFORMANCE_CONFIG, PERPS_CONSTANTS, TP_SL_CONFIG, WITHDRAWAL_CONSTANTS, -} from '../constants/perpsConfig'; -import { PERPS_TRANSACTIONS_HISTORY_CONSTANTS } from '../constants/transactionsHistoryConfig'; -import { PERPS_ERROR_CODES } from '../perpsErrorCodes'; -import { DexDiscoveryCacheManager } from '../services/DexDiscoveryCacheManager'; +} from '../constants/perpsConfig.js'; +import { PERPS_TRANSACTIONS_HISTORY_CONSTANTS } from '../constants/transactionsHistoryConfig.js'; +import { PERPS_ERROR_CODES } from '../perpsErrorCodes.js'; +import { DexDiscoveryCacheManager } from '../services/DexDiscoveryCacheManager.js'; import { HyperLiquidClientService, WebSocketConnectionState, -} from '../services/HyperLiquidClientService'; -import { HyperLiquidSubscriptionService } from '../services/HyperLiquidSubscriptionService'; -import { HyperLiquidWalletService } from '../services/HyperLiquidWalletService'; +} from '../services/HyperLiquidClientService.js'; +import { HyperLiquidSubscriptionService } from '../services/HyperLiquidSubscriptionService.js'; +import { HyperLiquidWalletService } from '../services/HyperLiquidWalletService.js'; import { TradingReadinessCache, PerpsSigningCache, -} from '../services/TradingReadinessCache'; -import { PerpsAnalyticsEvent } from '../types'; +} from '../services/TradingReadinessCache.js'; +import { PerpsAnalyticsEvent } from '../types/index.js'; import type { AccountState, AssetRoute, @@ -111,30 +111,33 @@ import type { WithdrawResult, RawLedgerUpdate, PerpsReadOptions, -} from '../types'; +} from '../types/index.js'; import type { SDKOrderParams, MetaResponse, PerpsAssetCtx, SpotMetaResponse, -} from '../types/hyperliquid-types'; +} from '../types/hyperliquid-types.js'; import { HL_ABSTRACTION_WIRE, HL_UNIFIED_ACCOUNT_MODE, hyperLiquidModeFoldsSpot, -} from '../types/hyperliquid-types'; -import type { PerpsControllerMessengerBase } from '../types/messenger'; -import type { ExtendedAssetMeta, ExtendedPerpDex } from '../types/perps-types'; +} from '../types/hyperliquid-types.js'; +import type { PerpsControllerMessengerBase } from '../types/messenger.js'; +import type { + ExtendedAssetMeta, + ExtendedPerpDex, +} from '../types/perps-types.js'; import { addSpotBalanceToAccountState, aggregateAccountStates, -} from '../utils/accountUtils'; +} from '../utils/accountUtils.js'; import { ensureError, isHyperLiquidUserNotFoundError, isKeyringLockedError, -} from '../utils/errorUtils'; -import { shouldDeferUnifiedAccountSetup } from '../utils/hyperLiquidAbstraction'; +} from '../utils/errorUtils.js'; +import { shouldDeferUnifiedAccountSetup } from '../utils/hyperLiquidAbstraction.js'; import { adaptAccountStateFromSDK, adaptHyperLiquidLedgerUpdateToUserHistoryItem, @@ -145,7 +148,7 @@ import { formatHyperLiquidPrice, formatHyperLiquidSize, parseAssetName, -} from '../utils/hyperLiquidAdapter'; +} from '../utils/hyperLiquidAdapter.js'; import { createErrorResult, getMaxOrderValue, @@ -156,23 +159,23 @@ import { validateDepositParams, validateOrderParams, validateWithdrawalParams, -} from '../utils/hyperLiquidValidation'; -import { transformMarketData } from '../utils/marketDataTransform'; +} from '../utils/hyperLiquidValidation.js'; +import { transformMarketData } from '../utils/marketDataTransform.js'; import { compileMarketPattern, shouldIncludeMarket, -} from '../utils/marketUtils'; -import type { CompiledMarketPattern } from '../utils/marketUtils'; +} from '../utils/marketUtils.js'; +import type { CompiledMarketPattern } from '../utils/marketUtils.js'; import { buildOrdersArray, calculateFinalPositionSize, calculateOrderPriceAndSize, -} from '../utils/orderCalculations'; +} from '../utils/orderCalculations.js'; import { createStandaloneInfoClient, queryStandaloneClearinghouseStates, queryStandaloneOpenOrders, -} from '../utils/standaloneInfoClient'; +} from '../utils/standaloneInfoClient.js'; // getStreamManagerInstance removed: use this.#deps.streamManager instead /** @@ -3946,7 +3949,7 @@ export class HyperLiquidProvider implements PerpsProvider { this.#deps.debugLogger.log('Editing order:', params); // Validate size is positive (validateOrderParams no longer validates size) - const size = parseFloat(params.newOrder.size || '0'); + const size = parseFloat(params.newOrder.size ?? '0'); if (size <= 0) { return { success: false, @@ -4581,6 +4584,7 @@ export class HyperLiquidProvider implements PerpsProvider { order.isPositionTpsl === Boolean(TP_SL_CONFIG.UsePositionBoundTpsl) && order.detailedOrderType && + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing (order.detailedOrderType.includes('Take Profit') || order.detailedOrderType.includes('Stop')), ); @@ -6907,7 +6911,7 @@ export class HyperLiquidProvider implements PerpsProvider { ); } else { // Fallback: Calculate from size × price - const size = parseFloat(params.size || '0'); + const size = parseFloat(params.size ?? '0'); let priceForValidation = params.currentPrice; // For limit orders without currentPrice, use limit price as fallback @@ -7419,8 +7423,8 @@ export class HyperLiquidProvider implements PerpsProvider { this.#deps.debugLogger.log( 'HyperLiquidProvider: CALLING SEND_ASSET API', { - sourceDex: params.sourceDex || '(main)', - destinationDex: params.destinationDex || '(main)', + sourceDex: params.sourceDex ?? '(main)', + destinationDex: params.destinationDex ?? '(main)', amount: params.amount, }, ); diff --git a/packages/perps-controller/src/providers/MYXProvider.ts b/packages/perps-controller/src/providers/MYXProvider.ts index 47845cac67a..85f91e01610 100644 --- a/packages/perps-controller/src/providers/MYXProvider.ts +++ b/packages/perps-controller/src/providers/MYXProvider.ts @@ -14,17 +14,17 @@ import type { CaipAccountId } from '@metamask/utils'; import type { KlineResolution } from '@myx-trade/sdk'; -import { calculateCandleCount } from '../constants/chartConfig'; +import { calculateCandleCount } from '../constants/chartConfig.js'; import { MYX_MAX_LEVERAGE, MYX_FEE_RATE, MYX_PROTOCOL_FEE_RATE, -} from '../constants/myxConfig'; -import { PERPS_CONSTANTS } from '../constants/perpsConfig'; -import type { PerpsControllerMessenger } from '../PerpsController'; -import { MYXClientService } from '../services/MYXClientService'; -import { MYXWalletService } from '../services/MYXWalletService'; -import { WebSocketConnectionState } from '../types'; +} from '../constants/myxConfig.js'; +import { PERPS_CONSTANTS } from '../constants/perpsConfig.js'; +import type { PerpsControllerMessenger } from '../PerpsController.js'; +import { MYXClientService } from '../services/MYXClientService.js'; +import { MYXWalletService } from '../services/MYXWalletService.js'; +import { WebSocketConnectionState } from '../types/index.js'; import type { AccountState, AssetRoute, @@ -83,16 +83,16 @@ import type { WithdrawResult, RawLedgerUpdate, PerpsReadOptions, -} from '../types'; -import { MYXOrderStatusEnum } from '../types/myx-types'; +} from '../types/index.js'; +import { MYXOrderStatusEnum } from '../types/myx-types.js'; import type { MYXAuthConfig, MYXKlineDataResponse, MYXPoolSymbol, MYXTicker, -} from '../types/myx-types'; -import type { CandleData } from '../types/perps-types'; -import { ensureError } from '../utils/errorUtils'; +} from '../types/myx-types.js'; +import type { CandleData } from '../types/perps-types.js'; +import { ensureError } from '../utils/errorUtils.js'; import { adaptMarketFromMYX, adaptMarketDataFromMYX, @@ -108,7 +108,7 @@ import { filterMYXExclusiveMarkets, buildPoolSymbolMap, toMYXKlineResolution, -} from '../utils/myxAdapter'; +} from '../utils/myxAdapter.js'; // ============================================================================ // Constants diff --git a/packages/perps-controller/src/routing/ProviderRouter.ts b/packages/perps-controller/src/routing/ProviderRouter.ts index 2693d078071..96e3d2e9c58 100644 --- a/packages/perps-controller/src/routing/ProviderRouter.ts +++ b/packages/perps-controller/src/routing/ProviderRouter.ts @@ -9,7 +9,7 @@ * are deferred to Phase 3. */ -import type { PerpsProviderType, RoutingStrategy } from '../types'; +import type { PerpsProviderType, RoutingStrategy } from '../types/index.js'; /** * Parameters for selecting a provider for an operation diff --git a/packages/perps-controller/src/selectors.ts b/packages/perps-controller/src/selectors.ts index 9f3813c531e..62742e9e45d 100644 --- a/packages/perps-controller/src/selectors.ts +++ b/packages/perps-controller/src/selectors.ts @@ -4,9 +4,9 @@ import { MARKET_SORTING_CONFIG, PERPS_CONSTANTS, SortOptionId, -} from './constants/perpsConfig'; -import type { PerpsControllerState } from './PerpsController'; -import type { PerpsSelectedPaymentToken, SortDirection } from './types'; +} from './constants/perpsConfig.js'; +import type { PerpsControllerState } from './PerpsController.js'; +import type { PerpsSelectedPaymentToken, SortDirection } from './types/index.js'; /** * Select whether the user is a first-time perps user diff --git a/packages/perps-controller/src/services/AccountService.ts b/packages/perps-controller/src/services/AccountService.ts index 105beaab8f8..906a7780de9 100644 --- a/packages/perps-controller/src/services/AccountService.ts +++ b/packages/perps-controller/src/services/AccountService.ts @@ -3,29 +3,29 @@ import { v4 as uuidv4 } from 'uuid'; import { PERPS_EVENT_PROPERTY, PERPS_EVENT_VALUE, -} from '../constants/eventNames'; -import { USDC_SYMBOL } from '../constants/hyperLiquidConfig'; +} from '../constants/eventNames.js'; +import { USDC_SYMBOL } from '../constants/hyperLiquidConfig.js'; import { PERPS_CONSTANTS, WITHDRAWAL_CONSTANTS, -} from '../constants/perpsConfig'; -import { PERPS_ERROR_CODES } from '../perpsErrorCodes'; +} from '../constants/perpsConfig.js'; +import { PERPS_ERROR_CODES } from '../perpsErrorCodes.js'; import { PerpsAnalyticsEvent, PerpsTraceNames, PerpsTraceOperations, -} from '../types'; +} from '../types/index.js'; import type { PerpsProvider, WithdrawParams, WithdrawResult, PerpsPlatformDependencies, -} from '../types'; -import type { PerpsControllerMessengerBase } from '../types/messenger'; -import type { TransactionStatus } from '../types/transactionTypes'; -import { getSelectedEvmAccountFromMessenger } from '../utils/accountUtils'; -import { ensureError } from '../utils/errorUtils'; -import type { ServiceContext } from './ServiceContext'; +} from '../types/index.js'; +import type { PerpsControllerMessengerBase } from '../types/messenger.js'; +import type { TransactionStatus } from '../types/transactionTypes.js'; +import { getSelectedEvmAccountFromMessenger } from '../utils/accountUtils.js'; +import { ensureError } from '../utils/errorUtils.js'; +import type { ServiceContext } from './ServiceContext.js'; /** * AccountService diff --git a/packages/perps-controller/src/services/DataLakeService.ts b/packages/perps-controller/src/services/DataLakeService.ts index 67ad5115c5a..d0e00e9ef79 100644 --- a/packages/perps-controller/src/services/DataLakeService.ts +++ b/packages/perps-controller/src/services/DataLakeService.ts @@ -1,16 +1,16 @@ import { v4 as uuidv4 } from 'uuid'; -import { PerpsMeasurementName } from '../constants/performanceMetrics'; +import { PerpsMeasurementName } from '../constants/performanceMetrics.js'; import { DATA_LAKE_API_CONFIG, PERPS_CONSTANTS, -} from '../constants/perpsConfig'; -import { PerpsTraceNames, PerpsTraceOperations } from '../types'; -import type { PerpsPlatformDependencies } from '../types'; -import type { PerpsControllerMessengerBase } from '../types/messenger'; -import { getSelectedEvmAccountFromMessenger } from '../utils/accountUtils'; -import { ensureError } from '../utils/errorUtils'; -import type { ServiceContext } from './ServiceContext'; +} from '../constants/perpsConfig.js'; +import { PerpsTraceNames, PerpsTraceOperations } from '../types/index.js'; +import type { PerpsPlatformDependencies } from '../types/index.js'; +import type { PerpsControllerMessengerBase } from '../types/messenger.js'; +import { getSelectedEvmAccountFromMessenger } from '../utils/accountUtils.js'; +import { ensureError } from '../utils/errorUtils.js'; +import type { ServiceContext } from './ServiceContext.js'; /** * DataLakeService diff --git a/packages/perps-controller/src/services/DepositService.ts b/packages/perps-controller/src/services/DepositService.ts index d1feadcf475..76afdea10f0 100644 --- a/packages/perps-controller/src/services/DepositService.ts +++ b/packages/perps-controller/src/services/DepositService.ts @@ -2,16 +2,16 @@ import { toHex } from '@metamask/controller-utils'; import { parseCaipAssetId } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { DEPOSIT_CONFIG } from '../constants/hyperLiquidConfig'; +import { DEPOSIT_CONFIG } from '../constants/hyperLiquidConfig.js'; import type { PerpsProvider, PerpsPlatformDependencies, PerpsTransactionParams, -} from '../types'; -import type { PerpsControllerMessengerBase } from '../types/messenger'; -import { getSelectedEvmAccountFromMessenger } from '../utils/accountUtils'; -import { generateDepositId } from '../utils/idUtils'; -import { generateERC20TransferData } from '../utils/transferData'; +} from '../types/index.js'; +import type { PerpsControllerMessengerBase } from '../types/messenger.js'; +import { getSelectedEvmAccountFromMessenger } from '../utils/accountUtils.js'; +import { generateDepositId } from '../utils/idUtils.js'; +import { generateERC20TransferData } from '../utils/transferData.js'; // Temporary to avoid estimation failures due to insufficient balance const DEPOSIT_GAS_LIMIT = toHex(DEPOSIT_CONFIG.EstimatedGasLimit); diff --git a/packages/perps-controller/src/services/EligibilityService.ts b/packages/perps-controller/src/services/EligibilityService.ts index 2e6770ba25b..1b3dabdd979 100644 --- a/packages/perps-controller/src/services/EligibilityService.ts +++ b/packages/perps-controller/src/services/EligibilityService.ts @@ -1,9 +1,9 @@ -import { PERPS_CONSTANTS } from '../constants/perpsConfig'; +import { PERPS_CONSTANTS } from '../constants/perpsConfig.js'; import type { PerpsPlatformDependencies, CheckEligibilityParams, -} from '../types'; -import { ensureError } from '../utils/errorUtils'; +} from '../types/index.js'; +import { ensureError } from '../utils/errorUtils.js'; /** * EligibilityService diff --git a/packages/perps-controller/src/services/FeatureFlagConfigurationService.ts b/packages/perps-controller/src/services/FeatureFlagConfigurationService.ts index 6b1cbb6fa3d..38adebae9ec 100644 --- a/packages/perps-controller/src/services/FeatureFlagConfigurationService.ts +++ b/packages/perps-controller/src/services/FeatureFlagConfigurationService.ts @@ -1,18 +1,18 @@ import { hasProperty } from '@metamask/utils'; -import { PERPS_CONSTANTS } from '../constants/perpsConfig'; -import { isVersionGatedFeatureFlag } from '../types'; +import { PERPS_CONSTANTS } from '../constants/perpsConfig.js'; +import { isVersionGatedFeatureFlag } from '../types/index.js'; import type { PerpsPlatformDependencies, PerpsRemoteFeatureFlagState, -} from '../types'; -import { ensureError } from '../utils/errorUtils'; -import { validateMarketPattern } from '../utils/marketUtils'; +} from '../types/index.js'; +import { ensureError } from '../utils/errorUtils.js'; +import { validateMarketPattern } from '../utils/marketUtils.js'; import { parseCommaSeparatedString, stripQuotes, -} from '../utils/stringParseUtils'; -import type { ServiceContext } from './ServiceContext'; +} from '../utils/stringParseUtils.js'; +import type { ServiceContext } from './ServiceContext.js'; /** * FeatureFlagConfigurationService diff --git a/packages/perps-controller/src/services/HyperLiquidClientService.ts b/packages/perps-controller/src/services/HyperLiquidClientService.ts index e668e938eb4..a50ad44dc99 100644 --- a/packages/perps-controller/src/services/HyperLiquidClientService.ts +++ b/packages/perps-controller/src/services/HyperLiquidClientService.ts @@ -8,20 +8,26 @@ import { } from '@nktkas/hyperliquid'; import type { HistoricalOrdersResponse } from '@nktkas/hyperliquid'; -import { CandlePeriod, calculateCandleCount } from '../constants/chartConfig'; -import { HYPERLIQUID_TRANSPORT_CONFIG } from '../constants/hyperLiquidConfig'; -import { PERFORMANCE_CONFIG, PERPS_CONSTANTS } from '../constants/perpsConfig'; -import { PERPS_ERROR_CODES } from '../perpsErrorCodes'; -import { WebSocketConnectionState } from '../types'; +import { + CandlePeriod, + calculateCandleCount, +} from '../constants/chartConfig.js'; +import { HYPERLIQUID_TRANSPORT_CONFIG } from '../constants/hyperLiquidConfig.js'; +import { + PERFORMANCE_CONFIG, + PERPS_CONSTANTS, +} from '../constants/perpsConfig.js'; +import { PERPS_ERROR_CODES } from '../perpsErrorCodes.js'; +import { WebSocketConnectionState } from '../types/index.js'; import type { SubscribeCandlesParams, PerpsPlatformDependencies, -} from '../types'; -import type { HyperLiquidNetwork } from '../types/config'; -import type { CandleData } from '../types/perps-types'; -import { coalescePerpsRestRequest } from '../utils/coalescePerpsRestRequest'; -import { ensureError, isAbortError } from '../utils/errorUtils'; -import { getPerpsConnectionAttemptContext } from '../utils/perpsConnectionAttemptContext'; +} from '../types/index.js'; +import type { HyperLiquidNetwork } from '../types/config.js'; +import type { CandleData } from '../types/perps-types.js'; +import { coalescePerpsRestRequest } from '../utils/coalescePerpsRestRequest.js'; +import { ensureError, isAbortError } from '../utils/errorUtils.js'; +import { getPerpsConnectionAttemptContext } from '../utils/perpsConnectionAttemptContext.js'; /** * Maximum number of reconnection attempts before giving up. @@ -57,7 +63,7 @@ export type HyperLiquidWalletParams = { // WebSocketConnectionState is now imported from controllers/types // Re-export for backward compatibility with existing consumers -export { WebSocketConnectionState } from '../types'; +export { WebSocketConnectionState } from '../types/index.js'; /** * Service for managing HyperLiquid SDK clients diff --git a/packages/perps-controller/src/services/HyperLiquidSubscriptionService.ts b/packages/perps-controller/src/services/HyperLiquidSubscriptionService.ts index 533ce74f1e8..f1895a31b3a 100644 --- a/packages/perps-controller/src/services/HyperLiquidSubscriptionService.ts +++ b/packages/perps-controller/src/services/HyperLiquidSubscriptionService.ts @@ -16,13 +16,13 @@ import type { SpotStateWsEvent, } from '@nktkas/hyperliquid'; -import { HYPERLIQUID_CONFIG } from '../constants/hyperLiquidConfig'; +import { HYPERLIQUID_CONFIG } from '../constants/hyperLiquidConfig.js'; import { TP_SL_CONFIG, PERPS_CONSTANTS, ABSTRACTION_MODE_REFRESH_THROTTLE_MS, -} from '../constants/perpsConfig'; -import { WebSocketConnectionState } from '../types'; +} from '../constants/perpsConfig.js'; +import { WebSocketConnectionState } from '../types/index.js'; import type { PriceUpdate, Position, @@ -40,32 +40,32 @@ import type { OrderBookLevel, PerpsPlatformDependencies, PerpsLogger, -} from '../types'; +} from '../types/index.js'; import type { SpotClearinghouseStateResponse, HyperLiquidAbstractionMode, UserAbstractionResponse, -} from '../types/hyperliquid-types'; -import { hyperLiquidModeFoldsSpot } from '../types/hyperliquid-types'; +} from '../types/hyperliquid-types.js'; +import { hyperLiquidModeFoldsSpot } from '../types/hyperliquid-types.js'; import { addSpotBalanceToAccountState, calculateWeightedReturnOnEquity, -} from '../utils/accountUtils'; -import type { AddSpotBalanceOptions } from '../utils/accountUtils'; -import { ensureError } from '../utils/errorUtils'; +} from '../utils/accountUtils.js'; +import type { AddSpotBalanceOptions } from '../utils/accountUtils.js'; +import { ensureError } from '../utils/errorUtils.js'; import { adaptPositionFromSDK, adaptOrderFromSDK, adaptAccountStateFromSDK, parseAssetName, -} from '../utils/hyperLiquidAdapter'; -import { processBboData } from '../utils/hyperLiquidOrderBookProcessor'; +} from '../utils/hyperLiquidAdapter.js'; +import { processBboData } from '../utils/hyperLiquidOrderBookProcessor.js'; import { calculateOpenInterestUSD, isMarketTradable, -} from '../utils/marketDataTransform'; -import type { HyperLiquidClientService } from './HyperLiquidClientService'; -import type { HyperLiquidWalletService } from './HyperLiquidWalletService'; +} from '../utils/marketDataTransform.js'; +import type { HyperLiquidClientService } from './HyperLiquidClientService.js'; +import type { HyperLiquidWalletService } from './HyperLiquidWalletService.js'; /** * Service for managing HyperLiquid WebSocket subscriptions @@ -781,7 +781,7 @@ export class HyperLiquidSubscriptionService { pos.takeProfitPrice ?? '' }:${pos.stopLossPrice ?? ''}:${pos.takeProfitCount}:${pos.stopLossCount}:${ pos.unrealizedPnl - }:${pos.returnOnEquity}:${pos.liquidationPrice ?? ''}:${pos.marginUsed || ''}`, + }:${pos.returnOnEquity}:${pos.liquidationPrice ?? ''}:${pos.marginUsed ?? ''}`, ) .join('|'); } @@ -872,7 +872,7 @@ export class HyperLiquidSubscriptionService { // Fallback: determine based on trigger price vs entry price // This handles orders with ambiguous type 'Trigger' const triggerPrice = parseFloat(tpslPrice); - const entryPrice = parseFloat(matchingPosition.entryPrice || '0'); + const entryPrice = parseFloat(matchingPosition.entryPrice ?? '0'); const isLong = parseFloat(matchingPosition.size) > 0; if (isLong) { @@ -961,7 +961,7 @@ export class HyperLiquidSubscriptionService { // Fallback: determine based on trigger price vs entry price // This handles orders with ambiguous type 'Trigger' const triggerPrice = parseFloat(order.triggerPx); - const entryPrice = parseFloat(position.entryPrice || '0'); + const entryPrice = parseFloat(position.entryPrice ?? '0'); const isLong = parseFloat(position.size) > 0; if (isLong) { diff --git a/packages/perps-controller/src/services/HyperLiquidWalletService.ts b/packages/perps-controller/src/services/HyperLiquidWalletService.ts index ee6688609db..ab0a7dad883 100644 --- a/packages/perps-controller/src/services/HyperLiquidWalletService.ts +++ b/packages/perps-controller/src/services/HyperLiquidWalletService.ts @@ -5,17 +5,17 @@ import { } from '@metamask/utils'; import type { CaipAccountId, Hex } from '@metamask/utils'; -import { getChainId } from '../constants/hyperLiquidConfig'; -import { PERPS_ERROR_CODES } from '../perpsErrorCodes'; +import { getChainId } from '../constants/hyperLiquidConfig.js'; +import { PERPS_ERROR_CODES } from '../perpsErrorCodes.js'; import type { PerpsPlatformDependencies, PerpsTypedMessageParams, -} from '../types'; -import type { PerpsControllerMessengerBase } from '../types/messenger'; +} from '../types/index.js'; +import type { PerpsControllerMessengerBase } from '../types/messenger.js'; import { getSelectedEvmAccountDetailsFromMessenger, getSelectedEvmAccountFromMessenger, -} from '../utils/accountUtils'; +} from '../utils/accountUtils.js'; // Mirrors KeyringTypes from @metamask/keyring-controller. Inlined to keep this // service portable between mobile and the core monorepo. diff --git a/packages/perps-controller/src/services/MYXClientService.ts b/packages/perps-controller/src/services/MYXClientService.ts index e8bbbc47328..80cd8076cc2 100644 --- a/packages/perps-controller/src/services/MYXClientService.ts +++ b/packages/perps-controller/src/services/MYXClientService.ts @@ -19,9 +19,9 @@ import { MYX_PRICE_POLLING_INTERVAL_MS, getMYXChainId, getMYXHttpEndpoint, -} from '../constants/myxConfig'; -import { PERPS_CONSTANTS, ZERO_ADDRESS } from '../constants/perpsConfig'; -import type { PerpsPlatformDependencies } from '../types'; +} from '../constants/myxConfig.js'; +import { PERPS_CONSTANTS, ZERO_ADDRESS } from '../constants/perpsConfig.js'; +import type { PerpsPlatformDependencies } from '../types/index.js'; import type { MYXAuthConfig, MYXPoolSymbol, @@ -31,8 +31,8 @@ import type { MYXPositionHistoryItem, MYXTradeFlowItem, MYXGetHistoryOrdersParams, -} from '../types/myx-types'; -import { ensureError } from '../utils/errorUtils'; +} from '../types/myx-types.js'; +import { ensureError } from '../utils/errorUtils.js'; // ============================================================================ // Types diff --git a/packages/perps-controller/src/services/MYXWalletService.ts b/packages/perps-controller/src/services/MYXWalletService.ts index a2720fab7f7..6e85e5d502a 100644 --- a/packages/perps-controller/src/services/MYXWalletService.ts +++ b/packages/perps-controller/src/services/MYXWalletService.ts @@ -22,11 +22,11 @@ import { getMYXChainId, MYX_TESTNET_CHAIN_ID, MYX_MAINNET_CHAIN_ID, -} from '../constants/myxConfig'; -import type { PerpsControllerMessenger } from '../PerpsController'; -import { PERPS_ERROR_CODES } from '../perpsErrorCodes'; -import type { PerpsPlatformDependencies } from '../types'; -import { getSelectedEvmAccountFromMessenger } from '../utils/accountUtils'; +} from '../constants/myxConfig.js'; +import type { PerpsControllerMessenger } from '../PerpsController.js'; +import { PERPS_ERROR_CODES } from '../perpsErrorCodes.js'; +import type { PerpsPlatformDependencies } from '../types/index.js'; +import { getSelectedEvmAccountFromMessenger } from '../utils/accountUtils.js'; export class MYXWalletService { #isTestnet: boolean; diff --git a/packages/perps-controller/src/services/MarketDataService.ts b/packages/perps-controller/src/services/MarketDataService.ts index eeda1c8d2ba..83721cfcfec 100644 --- a/packages/perps-controller/src/services/MarketDataService.ts +++ b/packages/perps-controller/src/services/MarketDataService.ts @@ -1,10 +1,10 @@ import { v4 as uuidv4 } from 'uuid'; -import type { CandlePeriod } from '../constants/chartConfig'; -import { PerpsMeasurementName } from '../constants/performanceMetrics'; -import { PERPS_CONSTANTS } from '../constants/perpsConfig'; -import { PERPS_ERROR_CODES } from '../perpsErrorCodes'; -import { PerpsTraceNames, PerpsTraceOperations } from '../types'; +import type { CandlePeriod } from '../constants/chartConfig.js'; +import { PerpsMeasurementName } from '../constants/performanceMetrics.js'; +import { PERPS_CONSTANTS } from '../constants/perpsConfig.js'; +import { PERPS_ERROR_CODES } from '../perpsErrorCodes.js'; +import { PerpsTraceNames, PerpsTraceOperations } from '../types/index.js'; import type { PerpsProvider, Position, @@ -33,12 +33,12 @@ import type { PerpsPlatformDependencies, PerpsMarketData, TerminalAssetMetadata, -} from '../types'; -import type { CandleData } from '../types/perps-types'; -import { coalescePerpsRestRequest } from '../utils/coalescePerpsRestRequest'; -import { ensureError, isAbortError } from '../utils/errorUtils'; -import { applyMarketFilters } from '../utils/marketUtils'; -import type { ServiceContext } from './ServiceContext'; +} from '../types/index.js'; +import type { CandleData } from '../types/perps-types.js'; +import { coalescePerpsRestRequest } from '../utils/coalescePerpsRestRequest.js'; +import { ensureError, isAbortError } from '../utils/errorUtils.js'; +import { applyMarketFilters } from '../utils/marketUtils.js'; +import type { ServiceContext } from './ServiceContext.js'; /** * MarketDataService diff --git a/packages/perps-controller/src/services/RewardsIntegrationService.ts b/packages/perps-controller/src/services/RewardsIntegrationService.ts index 6717d5da976..cdaca4f9d4d 100644 --- a/packages/perps-controller/src/services/RewardsIntegrationService.ts +++ b/packages/perps-controller/src/services/RewardsIntegrationService.ts @@ -1,13 +1,13 @@ import { BASIS_POINTS_DIVISOR, BUILDER_FEE_CONFIG, -} from '../constants/hyperLiquidConfig'; -import { PERPS_CONSTANTS } from '../constants/perpsConfig'; -import type { PerpsPlatformDependencies } from '../types'; -import type { PerpsControllerMessengerBase } from '../types/messenger'; -import { getSelectedEvmAccountFromMessenger } from '../utils/accountUtils'; -import { ensureError } from '../utils/errorUtils'; -import { formatAccountToCaipAccountId } from '../utils/rewardsUtils'; +} from '../constants/hyperLiquidConfig.js'; +import { PERPS_CONSTANTS } from '../constants/perpsConfig.js'; +import type { PerpsPlatformDependencies } from '../types/index.js'; +import type { PerpsControllerMessengerBase } from '../types/messenger.js'; +import { getSelectedEvmAccountFromMessenger } from '../utils/accountUtils.js'; +import { ensureError } from '../utils/errorUtils.js'; +import { formatAccountToCaipAccountId } from '../utils/rewardsUtils.js'; /** * RewardsIntegrationService diff --git a/packages/perps-controller/src/services/ServiceContext.ts b/packages/perps-controller/src/services/ServiceContext.ts index a14cd024b93..29d09e63cf5 100644 --- a/packages/perps-controller/src/services/ServiceContext.ts +++ b/packages/perps-controller/src/services/ServiceContext.ts @@ -1,5 +1,5 @@ -import type { PerpsControllerState } from '../PerpsController'; -import type { Order, Position } from '../types'; +import type { PerpsControllerState } from '../PerpsController.js'; +import type { Order, Position } from '../types/index.js'; /** * ServiceContext diff --git a/packages/perps-controller/src/services/TerminalMarketService.ts b/packages/perps-controller/src/services/TerminalMarketService.ts index adbe5598b28..1330b8f5e85 100644 --- a/packages/perps-controller/src/services/TerminalMarketService.ts +++ b/packages/perps-controller/src/services/TerminalMarketService.ts @@ -11,14 +11,17 @@ import { union, } from '@metamask/superstruct'; -import { PERPS_CONSTANTS, TERMINAL_API_CONFIG } from '../constants/perpsConfig'; +import { + PERPS_CONSTANTS, + TERMINAL_API_CONFIG, +} from '../constants/perpsConfig.js'; import type { MarketInfo, PerpsPlatformDependencies, TerminalAssetMetadata, -} from '../types'; -import { MarketCategory } from '../types'; -import { ensureError } from '../utils/errorUtils'; +} from '../types/index.js'; +import { MarketCategory } from '../types/index.js'; +import { ensureError } from '../utils/errorUtils.js'; const VALID_MARKET_TYPES = new Set(Object.values(MarketCategory)); diff --git a/packages/perps-controller/src/services/TradingService.ts b/packages/perps-controller/src/services/TradingService.ts index a5427bad03a..2e7d1caba2a 100644 --- a/packages/perps-controller/src/services/TradingService.ts +++ b/packages/perps-controller/src/services/TradingService.ts @@ -4,15 +4,15 @@ import { v4 as uuidv4 } from 'uuid'; import { PERPS_EVENT_PROPERTY, PERPS_EVENT_VALUE, -} from '../constants/eventNames'; -import { isTPSLOrder } from '../constants/orderTypes'; -import { PerpsMeasurementName } from '../constants/performanceMetrics'; -import { PERPS_CONSTANTS } from '../constants/perpsConfig'; +} from '../constants/eventNames.js'; +import { isTPSLOrder } from '../constants/orderTypes.js'; +import { PerpsMeasurementName } from '../constants/performanceMetrics.js'; +import { PERPS_CONSTANTS } from '../constants/perpsConfig.js'; import { PerpsAnalyticsEvent, PerpsTraceNames, PerpsTraceOperations, -} from '../types'; +} from '../types/index.js'; import type { PerpsProvider, OrderParams, @@ -30,10 +30,10 @@ import type { UpdatePositionTPSLParams, PerpsAnalyticsProperties, PerpsPlatformDependencies, -} from '../types'; -import { ensureError } from '../utils/errorUtils'; -import type { RewardsIntegrationService } from './RewardsIntegrationService'; -import type { ServiceContext } from './ServiceContext'; +} from '../types/index.js'; +import { ensureError } from '../utils/errorUtils.js'; +import type { RewardsIntegrationService } from './RewardsIntegrationService.js'; +import type { ServiceContext } from './ServiceContext.js'; /** * Controller-level dependencies for TradingService. @@ -2362,7 +2362,7 @@ export class TradingService { ? PERPS_EVENT_VALUE.DIRECTION.LONG : PERPS_EVENT_VALUE.DIRECTION.SHORT, [PERPS_EVENT_PROPERTY.ORDER_TYPE]: 'market', - [PERPS_EVENT_PROPERTY.LEVERAGE]: position.leverage?.value || 1, + [PERPS_EVENT_PROPERTY.LEVERAGE]: position.leverage?.value ?? 1, [PERPS_EVENT_PROPERTY.ORDER_SIZE]: positionSize, [PERPS_EVENT_PROPERTY.ACTION]: flipAction, ...this.#buildAttributionProperties(trackingData), @@ -2395,7 +2395,7 @@ export class TradingService { ? PERPS_EVENT_VALUE.DIRECTION.LONG : PERPS_EVENT_VALUE.DIRECTION.SHORT, [PERPS_EVENT_PROPERTY.ORDER_TYPE]: 'market', - [PERPS_EVENT_PROPERTY.LEVERAGE]: position.leverage?.value || 1, + [PERPS_EVENT_PROPERTY.LEVERAGE]: position.leverage?.value ?? 1, [PERPS_EVENT_PROPERTY.ORDER_SIZE]: positionSize, [PERPS_EVENT_PROPERTY.COMPLETION_DURATION]: completionDuration, [PERPS_EVENT_PROPERTY.ACTION]: flipAction, diff --git a/packages/perps-controller/src/utils/accountUtils.ts b/packages/perps-controller/src/utils/accountUtils.ts index 2d50fffd2dc..24839278a4a 100644 --- a/packages/perps-controller/src/utils/accountUtils.ts +++ b/packages/perps-controller/src/utils/accountUtils.ts @@ -4,9 +4,9 @@ */ import type { InternalAccount } from '@metamask/keyring-internal-api'; -import { PERPS_CONSTANTS } from '../constants/perpsConfig'; -import type { AccountState, PerpsInternalAccount } from '../types'; -import type { SpotClearinghouseStateResponse } from '../types/hyperliquid-types'; +import { PERPS_CONSTANTS } from '../constants/perpsConfig.js'; +import type { AccountState, PerpsInternalAccount } from '../types/index.js'; +import type { SpotClearinghouseStateResponse } from '../types/hyperliquid-types.js'; const EVM_ACCOUNT_TYPES = new Set(['eip155:eoa', 'eip155:erc4337']); diff --git a/packages/perps-controller/src/utils/hyperLiquidAdapter.ts b/packages/perps-controller/src/utils/hyperLiquidAdapter.ts index ac4aafed9eb..50d71309120 100644 --- a/packages/perps-controller/src/utils/hyperLiquidAdapter.ts +++ b/packages/perps-controller/src/utils/hyperLiquidAdapter.ts @@ -1,7 +1,7 @@ import { hasProperty, Hex, isHexString } from '@metamask/utils'; -import { HIP3_ASSET_ID_CONFIG } from '../constants/hyperLiquidConfig'; -import { DECIMAL_PRECISION_CONFIG } from '../constants/perpsConfig'; +import { HIP3_ASSET_ID_CONFIG } from '../constants/hyperLiquidConfig.js'; +import { DECIMAL_PRECISION_CONFIG } from '../constants/perpsConfig.js'; import type { AccountState, MarketInfo, @@ -10,18 +10,18 @@ import type { Position, RawLedgerUpdate, UserHistoryItem, -} from '../types'; +} from '../types/index.js'; import type { AssetPosition, FrontendOrder, ClearinghouseStateResponse, MetaResponse, SDKOrderParams, -} from '../types/hyperliquid-types'; +} from '../types/hyperliquid-types.js'; import { countSignificantFigures, roundToSignificantFigures, -} from './significantFigures'; +} from './significantFigures.js'; type FrontendOrderWithParentTpsl = FrontendOrder & { takeProfitPrice?: unknown; diff --git a/packages/perps-controller/src/utils/hyperLiquidOrderBookProcessor.ts b/packages/perps-controller/src/utils/hyperLiquidOrderBookProcessor.ts index c1fb1e1065f..f8dec472894 100644 --- a/packages/perps-controller/src/utils/hyperLiquidOrderBookProcessor.ts +++ b/packages/perps-controller/src/utils/hyperLiquidOrderBookProcessor.ts @@ -1,6 +1,6 @@ import type { BboWsEvent, L2BookResponse } from '@nktkas/hyperliquid'; -import type { PriceUpdate } from '../types'; +import type { PriceUpdate } from '../types/index.js'; /** * HyperLiquid Order Book Processor diff --git a/packages/perps-controller/src/utils/hyperLiquidValidation.ts b/packages/perps-controller/src/utils/hyperLiquidValidation.ts index cdd593c5b44..f3d6a10bbb9 100644 --- a/packages/perps-controller/src/utils/hyperLiquidValidation.ts +++ b/packages/perps-controller/src/utils/hyperLiquidValidation.ts @@ -5,10 +5,10 @@ import { HYPERLIQUID_ASSET_CONFIGS, getSupportedAssets, TRADING_DEFAULTS, -} from '../constants/hyperLiquidConfig'; -import { HYPERLIQUID_ORDER_LIMITS } from '../constants/perpsConfig'; -import { PERPS_ERROR_CODES } from '../perpsErrorCodes'; -import type { GetSupportedPathsParams, PerpsDebugLogger } from '../types'; +} from '../constants/hyperLiquidConfig.js'; +import { HYPERLIQUID_ORDER_LIMITS } from '../constants/perpsConfig.js'; +import { PERPS_ERROR_CODES } from '../perpsErrorCodes.js'; +import type { GetSupportedPathsParams, PerpsDebugLogger } from '../types/index.js'; /** * Optional debug logger for validation functions. diff --git a/packages/perps-controller/src/utils/marketDataTransform.ts b/packages/perps-controller/src/utils/marketDataTransform.ts index 8ac968d4d52..2d41fc0b870 100644 --- a/packages/perps-controller/src/utils/marketDataTransform.ts +++ b/packages/perps-controller/src/utils/marketDataTransform.ts @@ -9,20 +9,20 @@ import { hasProperty } from '@metamask/utils'; import { HYPERLIQUID_CONFIG, getHyperLiquidAssetName, -} from '../constants/hyperLiquidConfig'; -import { PERPS_CONSTANTS } from '../constants/perpsConfig'; +} from '../constants/hyperLiquidConfig.js'; +import { PERPS_CONSTANTS } from '../constants/perpsConfig.js'; import type { PerpsMarketData, MarketType, MarketDataFormatters, -} from '../types'; +} from '../types/index.js'; import type { AllMidsResponse, PerpsUniverse, PerpsAssetCtx, PredictedFunding, -} from '../types/hyperliquid-types'; -import { parseAssetName } from './hyperLiquidAdapter'; +} from '../types/hyperliquid-types.js'; +import { parseAssetName } from './hyperLiquidAdapter.js'; /** * Calculate open interest in USD diff --git a/packages/perps-controller/src/utils/marketSearch.ts b/packages/perps-controller/src/utils/marketSearch.ts index 95956f37289..6f57c9a4a0f 100644 --- a/packages/perps-controller/src/utils/marketSearch.ts +++ b/packages/perps-controller/src/utils/marketSearch.ts @@ -14,7 +14,7 @@ * * Portable: no platform-specific imports. */ -import type { PerpsMarketData } from '../types'; +import type { PerpsMarketData } from '../types/index.js'; /** * Relevance tier for a market/query match. Lower values sort first. diff --git a/packages/perps-controller/src/utils/marketUtils.ts b/packages/perps-controller/src/utils/marketUtils.ts index 1e9d51b1d10..2ed5c49bfe2 100644 --- a/packages/perps-controller/src/utils/marketUtils.ts +++ b/packages/perps-controller/src/utils/marketUtils.ts @@ -2,9 +2,9 @@ import type { GetMarketDataWithPricesParams, MarketTypeFilter, PerpsMarketData, -} from '../types'; -import type { CandleData, CandleStick } from '../types/perps-types'; -import { sortMarkets } from './sortMarkets'; +} from '../types/index.js'; +import type { CandleData, CandleStick } from '../types/perps-types.js'; +import { sortMarkets } from './sortMarkets.js'; // ============================================================================ // Market category classification (pure functions) @@ -350,6 +350,7 @@ export const filterMarketsByQuery = ( return markets.filter( (market) => + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing market.symbol?.toLowerCase().includes(lowerQuery) || market.name?.toLowerCase().includes(lowerQuery), ); diff --git a/packages/perps-controller/src/utils/myxAdapter.ts b/packages/perps-controller/src/utils/myxAdapter.ts index 80659026ec4..9c6a50965e2 100644 --- a/packages/perps-controller/src/utils/myxAdapter.ts +++ b/packages/perps-controller/src/utils/myxAdapter.ts @@ -20,7 +20,7 @@ import { fromMYXCollateral, MYX_MAX_LEVERAGE, MYX_MINIMUM_ORDER_SIZE_USD, -} from '../constants/myxConfig'; +} from '../constants/myxConfig.js'; import type { AccountState, CandleStick, @@ -32,7 +32,7 @@ import type { Position, MarketDataFormatters, UserHistoryItem, -} from '../types'; +} from '../types/index.js'; import { MYX_HL_OVERLAPPING_MARKETS, MYXDirection, @@ -42,7 +42,7 @@ import { MYXOrderTypeEnum, MYXExecTypeEnum, MYXTradeFlowTypeEnum, -} from '../types/myx-types'; +} from '../types/myx-types.js'; import type { MYXPoolSymbol, MYXTicker, @@ -51,7 +51,7 @@ import type { MYXTradeFlowItem, MYXKlineData, MYXKlineWsData, -} from '../types/myx-types'; +} from '../types/myx-types.js'; /** * Format a price change value with sign prefix. diff --git a/packages/perps-controller/src/utils/orderCalculations.ts b/packages/perps-controller/src/utils/orderCalculations.ts index b33d00c7ac5..64d242a4c22 100644 --- a/packages/perps-controller/src/utils/orderCalculations.ts +++ b/packages/perps-controller/src/utils/orderCalculations.ts @@ -1,17 +1,17 @@ import type { Hex } from '@metamask/utils'; -import { BASIS_POINTS_DIVISOR } from '../constants/hyperLiquidConfig'; +import { BASIS_POINTS_DIVISOR } from '../constants/hyperLiquidConfig.js'; import { MAX_ORDER_MARGIN_BUFFER, ORDER_SLIPPAGE_CONFIG, -} from '../constants/perpsConfig'; -import { PERPS_ERROR_CODES } from '../perpsErrorCodes'; -import type { PerpsDebugLogger } from '../types'; -import type { SDKOrderParams } from '../types/hyperliquid-types'; +} from '../constants/perpsConfig.js'; +import { PERPS_ERROR_CODES } from '../perpsErrorCodes.js'; +import type { PerpsDebugLogger } from '../types/index.js'; +import type { SDKOrderParams } from '../types/hyperliquid-types.js'; import { formatHyperLiquidPrice, formatHyperLiquidSize, -} from './hyperLiquidAdapter'; +} from './hyperLiquidAdapter.js'; /** * Optional debug logger for order calculation functions. diff --git a/packages/perps-controller/src/utils/perpsDiskPersistence.ts b/packages/perps-controller/src/utils/perpsDiskPersistence.ts index 6744e59629e..560de2c2657 100644 --- a/packages/perps-controller/src/utils/perpsDiskPersistence.ts +++ b/packages/perps-controller/src/utils/perpsDiskPersistence.ts @@ -4,8 +4,13 @@ import { PERPS_DISK_CACHE_MARKETS, PERPS_DISK_CACHE_USER_DATA, PROVIDER_CONFIG, -} from '../constants/perpsConfig'; -import type { AccountState, Order, PerpsMarketData, Position } from '../types'; +} from '../constants/perpsConfig.js'; +import type { + AccountState, + Order, + PerpsMarketData, + Position, +} from '../types/index.js'; /** * Multiplier applied to staleGuardMs (preloadGuardMs, currently 30s) to compute diff --git a/packages/perps-controller/src/utils/rewardsUtils.ts b/packages/perps-controller/src/utils/rewardsUtils.ts index afb4f2c37aa..ebe80e86853 100644 --- a/packages/perps-controller/src/utils/rewardsUtils.ts +++ b/packages/perps-controller/src/utils/rewardsUtils.ts @@ -12,8 +12,8 @@ import { parseCaipChainId, } from '@metamask/utils'; -import type { PerpsLogger } from '../types'; -import { ensureError } from './errorUtils'; +import type { PerpsLogger } from '../types/index.js'; +import { ensureError } from './errorUtils.js'; /** * Converts a numeric or hex chain ID to a CAIP-2 chain ID string. diff --git a/packages/perps-controller/src/utils/sortMarkets.ts b/packages/perps-controller/src/utils/sortMarkets.ts index cb643c4a0de..852ab4421ff 100644 --- a/packages/perps-controller/src/utils/sortMarkets.ts +++ b/packages/perps-controller/src/utils/sortMarkets.ts @@ -1,8 +1,8 @@ import { MARKET_SORTING_CONFIG, PERPS_CONSTANTS, -} from '../constants/perpsConfig'; -import type { PerpsMarketData, SortDirection, SortField } from '../types'; +} from '../constants/perpsConfig.js'; +import type { PerpsMarketData, SortDirection, SortField } from '../types/index.js'; export type SortMarketsParams = { markets: PerpsMarketData[]; @@ -87,9 +87,11 @@ export const sortMarkets = ({ case MARKET_SORTING_CONFIG.SortFields.PriceChange: { const changeA = parseFloat( + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing a.change24hPercent?.replace(/[%+]/gu, '') || '0', ); const changeB = parseFloat( + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing b.change24hPercent?.replace(/[%+]/gu, '') || '0', ); compareValue = changeA - changeB; diff --git a/packages/phishing-controller/package.json b/packages/phishing-controller/package.json index 96d05da2929..909006ffcaf 100644 --- a/packages/phishing-controller/package.json +++ b/packages/phishing-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/polling-controller/package.json b/packages/polling-controller/package.json index e8875b12aad..59ab5087956 100644 --- a/packages/polling-controller/package.json +++ b/packages/polling-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/preferences-controller/package.json b/packages/preferences-controller/package.json index 50dc729f5ae..558306914eb 100644 --- a/packages/preferences-controller/package.json +++ b/packages/preferences-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/profile-metrics-controller/package.json b/packages/profile-metrics-controller/package.json index 44f066816b7..68f682b8094 100644 --- a/packages/profile-metrics-controller/package.json +++ b/packages/profile-metrics-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/profile-sync-controller/package.json b/packages/profile-sync-controller/package.json index 628fcfddcab..af830d74eda 100644 --- a/packages/profile-sync-controller/package.json +++ b/packages/profile-sync-controller/package.json @@ -22,68 +22,30 @@ "sdk/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./sdk": { - "import": { - "types": "./dist/sdk/index.d.mts", - "default": "./dist/sdk/index.mjs" - }, - "require": { - "types": "./dist/sdk/index.d.cts", - "default": "./dist/sdk/index.cjs" - } + "types": "./dist/sdk/index.d.ts", + "default": "./dist/sdk/index.js" }, "./auth": { - "import": { - "types": "./dist/controllers/authentication/index.d.mts", - "default": "./dist/controllers/authentication/index.mjs" - }, - "require": { - "types": "./dist/controllers/authentication/index.d.cts", - "default": "./dist/controllers/authentication/index.cjs" - } + "types": "./dist/controllers/authentication/index.d.ts", + "default": "./dist/controllers/authentication/index.js" }, "./auth/mocks": { - "import": { - "types": "./dist/controllers/authentication/mocks/index.d.mts", - "default": "./dist/controllers/authentication/mocks/index.mjs" - }, - "require": { - "types": "./dist/controllers/authentication/mocks/index.d.cts", - "default": "./dist/controllers/authentication/mocks/index.cjs" - } + "types": "./dist/controllers/authentication/mocks/index.d.ts", + "default": "./dist/controllers/authentication/mocks/index.js" }, "./user-storage": { - "import": { - "types": "./dist/controllers/user-storage/index.d.mts", - "default": "./dist/controllers/user-storage/index.mjs" - }, - "require": { - "types": "./dist/controllers/user-storage/index.d.cts", - "default": "./dist/controllers/user-storage/index.cjs" - } + "types": "./dist/controllers/user-storage/index.d.ts", + "default": "./dist/controllers/user-storage/index.js" }, "./user-storage/mocks": { - "import": { - "types": "./dist/controllers/user-storage/mocks/index.d.mts", - "default": "./dist/controllers/user-storage/mocks/index.mjs" - }, - "require": { - "types": "./dist/controllers/user-storage/mocks/index.d.cts", - "default": "./dist/controllers/user-storage/mocks/index.cjs" - } + "types": "./dist/controllers/user-storage/mocks/index.d.ts", + "default": "./dist/controllers/user-storage/mocks/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/mockMessenger.ts b/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/mockMessenger.ts index 74be400a3c4..6e535d71054 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/mockMessenger.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/mockMessenger.ts @@ -7,13 +7,13 @@ import type { NotNamespacedBy, } from '@metamask/messenger'; +import { MOCK_LOGIN_RESPONSE } from '../../authentication/mocks/index.js'; +import { MOCK_STORAGE_KEY_SIGNATURE } from '../mocks/index.js'; import type { AllowedActions, AllowedEvents, UserStorageControllerMessenger, -} from '..'; -import { MOCK_LOGIN_RESPONSE } from '../../authentication/mocks'; -import { MOCK_STORAGE_KEY_SIGNATURE } from '../mocks'; +} from './../index.js'; const controllerName = 'UserStorageController'; diff --git a/packages/profile-sync-controller/src/index.ts b/packages/profile-sync-controller/src/index.ts index 0140b052cbe..3f653e7d54b 100644 --- a/packages/profile-sync-controller/src/index.ts +++ b/packages/profile-sync-controller/src/index.ts @@ -1,3 +1,3 @@ -export * as SDK from './sdk'; -export * as AuthenticationController from './controllers/authentication'; -export * as UserStorageController from './controllers/user-storage'; +export * as SDK from './sdk/index.js'; +export * as AuthenticationController from './controllers/authentication/index.js'; +export * as UserStorageController from './controllers/user-storage/index.js'; diff --git a/packages/ramps-controller/package.json b/packages/ramps-controller/package.json index b8a700023a9..863a7cd8a99 100644 --- a/packages/ramps-controller/package.json +++ b/packages/ramps-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/rate-limit-controller/package.json b/packages/rate-limit-controller/package.json index 0bb9a351786..79c2394238a 100644 --- a/packages/rate-limit-controller/package.json +++ b/packages/rate-limit-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/react-data-query/package.json b/packages/react-data-query/package.json index 9bc1b0602ea..460c6965d66 100644 --- a/packages/react-data-query/package.json +++ b/packages/react-data-query/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/remote-feature-flag-controller/package.json b/packages/remote-feature-flag-controller/package.json index 02b844b70d4..b08e4fb74a8 100644 --- a/packages/remote-feature-flag-controller/package.json +++ b/packages/remote-feature-flag-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/sample-controllers/package.json b/packages/sample-controllers/package.json index e50a3a2bc69..c077f896f07 100644 --- a/packages/sample-controllers/package.json +++ b/packages/sample-controllers/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/seedless-onboarding-controller/package.json b/packages/seedless-onboarding-controller/package.json index 947475bb698..a2ce6d9814f 100644 --- a/packages/seedless-onboarding-controller/package.json +++ b/packages/seedless-onboarding-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/selected-network-controller/package.json b/packages/selected-network-controller/package.json index 163d42db67f..3031a479f1f 100644 --- a/packages/selected-network-controller/package.json +++ b/packages/selected-network-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/sentinel-api-service/package.json b/packages/sentinel-api-service/package.json index 411ef53f3ea..222ae4f8f1e 100644 --- a/packages/sentinel-api-service/package.json +++ b/packages/sentinel-api-service/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/shield-controller/package.json b/packages/shield-controller/package.json index bb8aede9be0..bdeaeb911be 100644 --- a/packages/shield-controller/package.json +++ b/packages/shield-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/signature-controller/package.json b/packages/signature-controller/package.json index 220211989fc..c0dd914ffc9 100644 --- a/packages/signature-controller/package.json +++ b/packages/signature-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/smart-transactions-controller/package.json b/packages/smart-transactions-controller/package.json index 3e4a85b7b95..b124160a456 100644 --- a/packages/smart-transactions-controller/package.json +++ b/packages/smart-transactions-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/smart-transactions-controller/src/types.ts b/packages/smart-transactions-controller/src/types.ts index 9e1a3a8d108..ab825bf033b 100644 --- a/packages/smart-transactions-controller/src/types.ts +++ b/packages/smart-transactions-controller/src/types.ts @@ -2,7 +2,7 @@ import type { NetworkClientId } from '@metamask/network-controller'; import type { TransactionType } from '@metamask/transaction-controller'; import type { CaipChainId, Hex } from '@metamask/utils'; -import type { SmartTransactionsNetworkConfig } from './featureFlags'; +import type { SmartTransactionsNetworkConfig } from './featureFlags/index.js'; export type SentinelMeta = { txType?: TransactionType; diff --git a/packages/snap-account-service/package.json b/packages/snap-account-service/package.json index bfb856f57d4..04e1820e7f3 100644 --- a/packages/snap-account-service/package.json +++ b/packages/snap-account-service/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/snap-account-service/src/SnapAccountService.ts b/packages/snap-account-service/src/SnapAccountService.ts index f73975225b1..e8e4f5634d6 100644 --- a/packages/snap-account-service/src/SnapAccountService.ts +++ b/packages/snap-account-service/src/SnapAccountService.ts @@ -41,6 +41,7 @@ import { KeyringTypes, } from '@metamask/keyring-controller'; import { KeyringInternalSnapClient } from '@metamask/keyring-internal-snap-client/v2'; +import type { KeyringInternalSnapClientMessenger } from '@metamask/keyring-internal-snap-client'; import { SnapManageAccountsMethod } from '@metamask/keyring-snap-sdk'; import type { AccountId, @@ -289,7 +290,10 @@ export class SnapAccountService { messenger: messenger.buildChild({ namespace: 'KeyringInternalSnapClient', actions: ['SnapController:handleRequest'], - }), + // `keyring-internal-snap-client` depends on `@metamask/messenger@^1.1.1` + // while this package uses v2. Both versions are structurally identical + // but TypeScript's `#private` field check rejects cross-version assignment. + }) as unknown as KeyringInternalSnapClientMessenger, }); this.#messenger.registerMethodActionHandlers( diff --git a/packages/social-controllers/package.json b/packages/social-controllers/package.json index 595ff43bdc8..9b695a3cd8a 100644 --- a/packages/social-controllers/package.json +++ b/packages/social-controllers/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/solana-test-validator-up/package.json b/packages/solana-test-validator-up/package.json index 8056b749bb3..039ace91961 100644 --- a/packages/solana-test-validator-up/package.json +++ b/packages/solana-test-validator-up/package.json @@ -20,18 +20,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/stellar-quickstart-up/package.json b/packages/stellar-quickstart-up/package.json index 95148d5d1f8..1e553f71656 100644 --- a/packages/stellar-quickstart-up/package.json +++ b/packages/stellar-quickstart-up/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/storage-service/package.json b/packages/storage-service/package.json index fea52f591c1..21ff8232105 100644 --- a/packages/storage-service/package.json +++ b/packages/storage-service/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/subscription-controller/package.json b/packages/subscription-controller/package.json index 2d343ba89e8..0410f4c0f7e 100644 --- a/packages/subscription-controller/package.json +++ b/packages/subscription-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/transaction-controller/package.json b/packages/transaction-controller/package.json index 4fefe3b02fd..daa32aff434 100644 --- a/packages/transaction-controller/package.json +++ b/packages/transaction-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/transaction-controller/src/TransactionController.ts b/packages/transaction-controller/src/TransactionController.ts index b0ff4cd3533..447ecc3d069 100644 --- a/packages/transaction-controller/src/TransactionController.ts +++ b/packages/transaction-controller/src/TransactionController.ts @@ -68,33 +68,33 @@ import { add0x } from '@metamask/utils'; // This package purposefully relies on Node's EventEmitter module. // eslint-disable-next-line import-x/no-nodejs-modules import { EventEmitter } from 'events'; -import { cloneDeep, mapValues, merge, noop, pickBy, sortBy } from 'lodash'; +import { cloneDeep, mapValues, merge, noop, pickBy, sortBy } from 'lodash-es'; import { v1 as random } from 'uuid'; -import { DefaultGasFeeFlow } from './gas-flows/DefaultGasFeeFlow'; -import { LineaGasFeeFlow } from './gas-flows/LineaGasFeeFlow'; -import { MantleLayer1GasFeeFlow } from './gas-flows/MantleLayer1GasFeeFlow'; -import { OptimismLayer1GasFeeFlow } from './gas-flows/OptimismLayer1GasFeeFlow'; -import { RandomisedEstimationsGasFeeFlow } from './gas-flows/RandomisedEstimationsGasFeeFlow'; -import { ScrollLayer1GasFeeFlow } from './gas-flows/ScrollLayer1GasFeeFlow'; -import { TestGasFeeFlow } from './gas-flows/TestGasFeeFlow'; +import { DefaultGasFeeFlow } from './gas-flows/DefaultGasFeeFlow.js'; +import { LineaGasFeeFlow } from './gas-flows/LineaGasFeeFlow.js'; +import { MantleLayer1GasFeeFlow } from './gas-flows/MantleLayer1GasFeeFlow.js'; +import { OptimismLayer1GasFeeFlow } from './gas-flows/OptimismLayer1GasFeeFlow.js'; +import { RandomisedEstimationsGasFeeFlow } from './gas-flows/RandomisedEstimationsGasFeeFlow.js'; +import { ScrollLayer1GasFeeFlow } from './gas-flows/ScrollLayer1GasFeeFlow.js'; +import { TestGasFeeFlow } from './gas-flows/TestGasFeeFlow.js'; import { GasFeePoller, updateTransactionGasProperties, updateTransactionGasEstimates, -} from './helpers/GasFeePoller'; -import { MethodDataHelper } from './helpers/MethodDataHelper'; -import { MultichainTrackingHelper } from './helpers/MultichainTrackingHelper'; -import { PendingTransactionTracker } from './helpers/PendingTransactionTracker'; -import type { ResimulateResponse } from './helpers/ResimulateHelper'; +} from './helpers/GasFeePoller.js'; +import { MethodDataHelper } from './helpers/MethodDataHelper.js'; +import { MultichainTrackingHelper } from './helpers/MultichainTrackingHelper.js'; +import { PendingTransactionTracker } from './helpers/PendingTransactionTracker.js'; +import type { ResimulateResponse } from './helpers/ResimulateHelper.js'; import { ResimulateHelper, hasSimulationDataChanged, shouldResimulate, -} from './helpers/ResimulateHelper'; -import { ExtraTransactionsPublishHook } from './hooks/ExtraTransactionsPublishHook'; -import { projectLogger as log } from './logger'; -import type { TransactionControllerMethodActions } from './TransactionController-method-action-types'; +} from './helpers/ResimulateHelper.js'; +import { ExtraTransactionsPublishHook } from './hooks/ExtraTransactionsPublishHook.js'; +import { projectLogger as log } from './logger.js'; +import type { TransactionControllerMethodActions } from './TransactionController-method-action-types.js'; import type { DappSuggestedGasFees, Layer1GasFeeFlow, @@ -129,7 +129,7 @@ import type { AddTransactionOptions, PublishHookResult, GetGasFeeTokensRequest, -} from './types'; +} from './types.js'; import { GasFeeEstimateLevel, TransactionContainerType, @@ -137,49 +137,53 @@ import { TransactionType, TransactionStatus, SimulationErrorCode, -} from './types'; -import { getBalanceChanges } from './utils/balance-changes'; -import { addTransactionBatch, isAtomicBatchSupported } from './utils/batch'; +} from './types.js'; +import { getBalanceChanges } from './utils/balance-changes.js'; +import { addTransactionBatch, isAtomicBatchSupported } from './utils/batch.js'; import { generateEIP7702BatchTransaction, getDelegationAddress, signAuthorizationList, -} from './utils/eip7702'; -import { validateConfirmedExternalTransaction } from './utils/external-transactions'; +} from './utils/eip7702.js'; +import { validateConfirmedExternalTransaction } from './utils/external-transactions.js'; import { getSubmitHistoryLimit, getTransactionHistoryLimit, -} from './utils/feature-flags'; -import { updateFirstTimeInteraction } from './utils/first-time-interaction'; -import type { EstimateGasBatchResult } from './utils/gas'; +} from './utils/feature-flags.js'; +import { updateFirstTimeInteraction } from './utils/first-time-interaction.js'; +import { + checkGasFeeTokenBeforePublish, + getGasFeeTokens, +} from './utils/gas-fee-tokens.js'; +import { updateGasFees } from './utils/gas-fees.js'; +import { getGasFeeFlow } from './utils/gas-flow.js'; +import type { EstimateGasBatchResult } from './utils/gas.js'; import { addGasBuffer, estimateGas, estimateGasBatch, updateGas, -} from './utils/gas'; -import { - checkGasFeeTokenBeforePublish, - getGasFeeTokens, -} from './utils/gas-fee-tokens'; -import { updateGasFees } from './utils/gas-fees'; -import { getGasFeeFlow } from './utils/gas-flow'; +} from './utils/gas.js'; import { getTransactionLayer1GasFee, updateTransactionLayer1GasFee, -} from './utils/layer1-gas-fee-flow'; +} from './utils/layer1-gas-fee-flow.js'; import { getAndFormatTransactionsForNonceTracker, getNextNonce, -} from './utils/nonce'; -import { prepareTransaction, serializeTransaction } from './utils/prepare'; -import { getChainId, getNetworkClientId, rpcRequest } from './utils/provider'; -import { getTransactionParamsWithIncreasedGasFee } from './utils/retry'; +} from './utils/nonce.js'; +import { prepareTransaction, serializeTransaction } from './utils/prepare.js'; +import { + getChainId, + getNetworkClientId, + rpcRequest, +} from './utils/provider.js'; +import { getTransactionParamsWithIncreasedGasFee } from './utils/retry.js'; import { updatePostTransactionBalance, updateSwapsTransaction, -} from './utils/swaps'; -import { determineTransactionType } from './utils/transaction-type'; +} from './utils/swaps.js'; +import { determineTransactionType } from './utils/transaction-type.js'; import { normalizeTransactionParams, isEIP1559Transaction, @@ -189,12 +193,12 @@ import { normalizeTxError, normalizeGasFeeValues, setEnvelopeType, -} from './utils/utils'; +} from './utils/utils.js'; import { ErrorCode, validateTransactionOrigin, validateTxParams, -} from './utils/validation'; +} from './utils/validation.js'; /** * Metadata for the TransactionController state, describing how to "anonymize" @@ -1223,7 +1227,7 @@ export class TransactionController extends BaseController< } else { const newTransactionMeta = cloneDeep(addedTransactionMeta); - this.#updateGasProperties(newTransactionMeta) + void this.#updateGasProperties(newTransactionMeta) .then(() => { this.#updateTransactionInternal( { @@ -1259,7 +1263,7 @@ export class TransactionController extends BaseController< this.#addMetadata(addedTransactionMeta); - delegationAddressPromise + void delegationAddressPromise .then((delegationAddress) => { this.#updateTransactionInternal( { @@ -2352,12 +2356,14 @@ export class TransactionController extends BaseController< if (key in transaction.txParams) { // TODO: Replace `any` with type // eslint-disable-next-line @typescript-eslint/no-explicit-any - if (predicate((transaction.txParams as any)[key]) === false) { + if (predicate(transaction.txParams[key as any]) === false) { return false; } // TODO: Replace `any` with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - } else if (predicate((transaction as any)[key]) === false) { + + } else if ( + predicate(transaction[key as keyof TransactionMeta]) === false + ) { return false; } } diff --git a/packages/transaction-controller/src/hooks/ExtraTransactionsPublishHook.ts b/packages/transaction-controller/src/hooks/ExtraTransactionsPublishHook.ts index 3c1e240634c..98730a9ba79 100644 --- a/packages/transaction-controller/src/hooks/ExtraTransactionsPublishHook.ts +++ b/packages/transaction-controller/src/hooks/ExtraTransactionsPublishHook.ts @@ -1,15 +1,15 @@ import { createDeferredPromise, createModuleLogger } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import type { TransactionController } from '..'; -import { projectLogger } from '../logger'; +import { projectLogger } from '../logger.js'; import type { BatchTransactionParams, PublishHook, PublishHookResult, TransactionBatchSingleRequest, TransactionMeta, -} from '../types'; +} from '../types.js'; +import type { TransactionController } from './../index.js'; const log = createModuleLogger( projectLogger, diff --git a/packages/transaction-controller/src/utils/balance.ts b/packages/transaction-controller/src/utils/balance.ts index 1f44f37ba7a..40a28eacb2e 100644 --- a/packages/transaction-controller/src/utils/balance.ts +++ b/packages/transaction-controller/src/utils/balance.ts @@ -2,9 +2,9 @@ import type { NetworkClientId } from '@metamask/network-controller'; import type { Hex } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import type { TransactionMeta } from '..'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import { rpcRequest } from './provider'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { TransactionMeta } from './../index.js'; +import { rpcRequest } from './provider.js'; /** * Get the native balance for an address. diff --git a/packages/transaction-controller/src/utils/batch.ts b/packages/transaction-controller/src/utils/batch.ts index 26592ff0572..904a6036100 100644 --- a/packages/transaction-controller/src/utils/batch.ts +++ b/packages/transaction-controller/src/utils/batch.ts @@ -18,23 +18,13 @@ import { bytesToHex, createModuleLogger } from '@metamask/utils'; import type { WritableDraft } from 'immer/dist/internal.js'; import { parse, v4 } from 'uuid'; -import { GasFeeEstimateLevel, TransactionStatus } from '..'; -import type { - BatchTransactionParams, - GetSimulationConfig, - PublishBatchHookRequest, - TransactionController, - TransactionControllerMessenger, - TransactionControllerState, - TransactionMeta, -} from '..'; -import { DefaultGasFeeFlow } from '../gas-flows/DefaultGasFeeFlow'; -import { updateTransactionGasEstimates } from '../helpers/GasFeePoller'; -import type { PendingTransactionTracker } from '../helpers/PendingTransactionTracker'; -import { CollectPublishHook } from '../hooks/CollectPublishHook'; -import { SequentialPublishBatchHook } from '../hooks/SequentialPublishBatchHook'; -import { projectLogger } from '../logger'; -import { TransactionEnvelopeType, TransactionType } from '../types'; +import { DefaultGasFeeFlow } from '../gas-flows/DefaultGasFeeFlow.js'; +import { updateTransactionGasEstimates } from '../helpers/GasFeePoller.js'; +import type { PendingTransactionTracker } from '../helpers/PendingTransactionTracker.js'; +import { CollectPublishHook } from '../hooks/CollectPublishHook.js'; +import { SequentialPublishBatchHook } from '../hooks/SequentialPublishBatchHook.js'; +import { projectLogger } from '../logger.js'; +import { TransactionEnvelopeType, TransactionType } from '../types.js'; import type { NestedTransactionMetadata, SecurityAlertResponse, @@ -47,24 +37,34 @@ import type { IsAtomicBatchSupportedResult, IsAtomicBatchSupportedResultEntry, TransactionBatchMeta, -} from '../types'; -import type { TransactionBatchResult, TransactionParams } from '../types'; +} from '../types.js'; +import type { TransactionBatchResult, TransactionParams } from '../types.js'; +import { GasFeeEstimateLevel, TransactionStatus } from './../index.js'; +import type { + BatchTransactionParams, + GetSimulationConfig, + PublishBatchHookRequest, + TransactionController, + TransactionControllerMessenger, + TransactionControllerState, + TransactionMeta, +} from './../index.js'; import { ERROR_MESSGE_PUBLIC_KEY, doesAccountSupportEIP7702, doesChainSupportEIP7702, generateEIP7702BatchTransaction, isAccountUpgradedToEIP7702, -} from './eip7702'; +} from './eip7702.js'; import { getBatchSizeLimit, getEIP7702SupportedChains, getEIP7702UpgradeContractAddress, -} from './feature-flags'; -import { simulateGasBatch } from './gas'; -import { getChainId } from './provider'; -import { determineTransactionType } from './transaction-type'; -import { validateBatchRequest } from './validation'; +} from './feature-flags.js'; +import { simulateGasBatch } from './gas.js'; +import { getChainId } from './provider.js'; +import { determineTransactionType } from './transaction-type.js'; +import { validateBatchRequest } from './validation.js'; type UpdateStateCallback = ( callback: ( diff --git a/packages/transaction-controller/src/utils/gas-fee-tokens.ts b/packages/transaction-controller/src/utils/gas-fee-tokens.ts index ce4205aa188..5f8e96a0eff 100644 --- a/packages/transaction-controller/src/utils/gas-fee-tokens.ts +++ b/packages/transaction-controller/src/utils/gas-fee-tokens.ts @@ -3,23 +3,23 @@ import { rpcErrors } from '@metamask/rpc-errors'; import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; +import { simulateTransactions } from '../api/simulation-api.js'; +import type { SimulationRequestTransaction } from '../api/simulation-api.js'; +import type { + SimulationResponse, + SimulationResponseTransaction, +} from '../api/simulation-api.js'; +import { projectLogger } from '../logger.js'; +import type { GetSimulationConfig } from '../types.js'; import type { GasFeeToken, TransactionControllerMessenger, TransactionMeta, -} from '..'; -import { simulateTransactions } from '../api/simulation-api'; -import type { SimulationRequestTransaction } from '../api/simulation-api'; -import type { - SimulationResponse, - SimulationResponseTransaction, -} from '../api/simulation-api'; -import { projectLogger } from '../logger'; -import type { GetSimulationConfig } from '../types'; -import { isNativeBalanceSufficientForGas } from './balance'; -import { ERROR_MESSAGE_NO_UPGRADE_CONTRACT } from './batch'; -import { ERROR_MESSGE_PUBLIC_KEY, doesChainSupportEIP7702 } from './eip7702'; -import { getEIP7702UpgradeContractAddress } from './feature-flags'; +} from './../index.js'; +import { isNativeBalanceSufficientForGas } from './balance.js'; +import { ERROR_MESSAGE_NO_UPGRADE_CONTRACT } from './batch.js'; +import { ERROR_MESSGE_PUBLIC_KEY, doesChainSupportEIP7702 } from './eip7702.js'; +import { getEIP7702UpgradeContractAddress } from './feature-flags.js'; const log = createModuleLogger(projectLogger, 'gas-fee-tokens'); diff --git a/packages/transaction-pay-controller/package.json b/packages/transaction-pay-controller/package.json index 852c84fb0d6..be727089232 100644 --- a/packages/transaction-pay-controller/package.json +++ b/packages/transaction-pay-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/transaction-pay-controller/src/actions/update-fiat-payment.ts b/packages/transaction-pay-controller/src/actions/update-fiat-payment.ts index 124ba9c5520..622a66cb2ce 100644 --- a/packages/transaction-pay-controller/src/actions/update-fiat-payment.ts +++ b/packages/transaction-pay-controller/src/actions/update-fiat-payment.ts @@ -1,12 +1,12 @@ import { createModuleLogger } from '@metamask/utils'; -import type { TransactionPayControllerMessenger } from '..'; -import { projectLogger } from '../logger'; +import { projectLogger } from '../logger.js'; import type { UpdateFiatPaymentRequest, UpdateTransactionDataCallback, -} from '../types'; -import { getTransaction } from '../utils/transaction'; +} from '../types.js'; +import { getTransaction } from '../utils/transaction.js'; +import type { TransactionPayControllerMessenger } from './../index.js'; const log = createModuleLogger(projectLogger, 'update-fiat-payment'); diff --git a/packages/transaction-pay-controller/src/actions/update-payment-token.ts b/packages/transaction-pay-controller/src/actions/update-payment-token.ts index 986738ef4fa..5446f564ffd 100644 --- a/packages/transaction-pay-controller/src/actions/update-payment-token.ts +++ b/packages/transaction-pay-controller/src/actions/update-payment-token.ts @@ -1,20 +1,20 @@ import { createModuleLogger } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import type { TransactionPayControllerMessenger } from '..'; -import { projectLogger } from '../logger'; +import { projectLogger } from '../logger.js'; import type { TransactionPaymentToken, UpdatePaymentTokenRequest, UpdateTransactionDataCallback, -} from '../types'; +} from '../types.js'; import { computeTokenAmounts, getTokenBalance, getTokenFiatRate, getTokenInfo, -} from '../utils/token'; -import { getTransaction } from '../utils/transaction'; +} from '../utils/token.js'; +import { getTransaction } from '../utils/transaction.js'; +import type { TransactionPayControllerMessenger } from './../index.js'; const log = createModuleLogger(projectLogger, 'update-payment-token'); diff --git a/packages/transaction-pay-controller/src/helpers/QuoteRefresher.ts b/packages/transaction-pay-controller/src/helpers/QuoteRefresher.ts index eb0a1f9cdb0..2007eec20e7 100644 --- a/packages/transaction-pay-controller/src/helpers/QuoteRefresher.ts +++ b/packages/transaction-pay-controller/src/helpers/QuoteRefresher.ts @@ -1,15 +1,15 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; import { createModuleLogger } from '@metamask/utils'; -import { noop } from 'lodash'; +import { noop } from 'lodash-es'; +import { TransactionPayStrategy } from '../constants.js'; +import { projectLogger } from '../logger.js'; +import type { UpdateTransactionDataCallback } from '../types.js'; +import { refreshQuotes } from '../utils/quotes.js'; import type { TransactionPayControllerMessenger, TransactionPayControllerState, -} from '..'; -import { TransactionPayStrategy } from '../constants'; -import { projectLogger } from '../logger'; -import type { UpdateTransactionDataCallback } from '../types'; -import { refreshQuotes } from '../utils/quotes'; +} from './../index.js'; const CHECK_INTERVAL = 1000; // 1 Second @@ -101,7 +101,7 @@ export class QuoteRefresher { } this.#timeoutId = setTimeout(() => { - this.#onInterval().catch(noop); + void this.#onInterval().catch(noop); }, CHECK_INTERVAL); } diff --git a/packages/transaction-pay-controller/src/strategy/relay/relay-quotes.ts b/packages/transaction-pay-controller/src/strategy/relay/relay-quotes.ts index 470b0fd2d76..134aafb17ee 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/relay-quotes.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/relay-quotes.ts @@ -10,7 +10,7 @@ import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { TransactionPayStrategy } from '../..'; +import { TransactionPayStrategy } from '../../index.js'; import { ARBITRUM_USDC_ADDRESS, CHAIN_ID_ARBITRUM, @@ -22,8 +22,8 @@ import { PERPS_DEPOSIT_TYPES, USDC_DECIMALS, PaymentOverride, -} from '../../constants'; -import { projectLogger } from '../../logger'; +} from '../../constants.js'; +import { projectLogger } from '../../logger.js'; import type { Amount, FiatRates, @@ -31,8 +31,8 @@ import type { QuoteRequest, TransactionPayControllerMessenger, TransactionPayQuote, -} from '../../types'; -import { getFiatValueFromUsd } from '../../utils/amounts'; +} from '../../types.js'; +import { getFiatValueFromUsd } from '../../utils/amounts.js'; import { getFeatureFlags, getRelayOriginGasOverhead, @@ -40,33 +40,33 @@ import { getStablecoins, isEIP7702Chain, isRelayExecuteEnabled, -} from '../../utils/feature-flags'; -import { calculateGasCost } from '../../utils/gas'; +} from '../../utils/feature-flags.js'; import { getGasStationCostInSourceTokenRaw, getGasStationEligibility, -} from '../../utils/gas-station'; -import { estimateQuoteGasLimits } from '../../utils/quote-gas'; -import type { QuoteGasTransaction } from '../../utils/quote-gas'; +} from '../../utils/gas-station.js'; +import { calculateGasCost } from '../../utils/gas.js'; +import { estimateQuoteGasLimits } from '../../utils/quote-gas.js'; +import type { QuoteGasTransaction } from '../../utils/quote-gas.js'; import { getNativeToken, getTokenBalance, getTokenFiatRate, normalizeTokenAddress, TokenAddressTarget, -} from '../../utils/token'; -import { isPredictWithdrawTransaction } from '../../utils/transaction'; -import { TOKEN_TRANSFER_FOUR_BYTE } from './constants'; -import { applyHyperliquidActivationFee } from './hyperliquid-activation'; -import { applyPolymarketDepositWalletOverrides } from './polymarket/withdraw'; -import { fetchRelayQuote } from './relay-api'; -import { getRelayMaxGasStationQuote } from './relay-max-gas-station'; +} from '../../utils/token.js'; +import { isPredictWithdrawTransaction } from '../../utils/transaction.js'; +import { TOKEN_TRANSFER_FOUR_BYTE } from './constants.js'; +import { applyHyperliquidActivationFee } from './hyperliquid-activation.js'; +import { applyPolymarketDepositWalletOverrides } from './polymarket/withdraw.js'; +import { fetchRelayQuote } from './relay-api.js'; +import { getRelayMaxGasStationQuote } from './relay-max-gas-station.js'; import type { RelayQuote, RelayQuoteMetamask, RelayQuoteRequest, RelayTransactionStep, -} from './types'; +} from './types.js'; const log = createModuleLogger(projectLogger, 'relay-strategy'); diff --git a/packages/transaction-pay-controller/src/tests/messenger-mock.ts b/packages/transaction-pay-controller/src/tests/messenger-mock.ts index 4e3b1897c45..b5aaea6303e 100644 --- a/packages/transaction-pay-controller/src/tests/messenger-mock.ts +++ b/packages/transaction-pay-controller/src/tests/messenger-mock.ts @@ -23,7 +23,6 @@ import type { } from '@metamask/transaction-controller'; import type { TransactionControllerUpdateTransactionAction } from '@metamask/transaction-controller'; -import type { TransactionPayControllerMessenger } from '..'; import type { TransactionPayControllerGetDelegationTransactionAction, TransactionPayControllerGetFiatOptionsAction, @@ -31,8 +30,9 @@ import type { TransactionPayControllerGetStrategyAction, TransactionPayControllerPolymarketGetDepositWalletAddressAction, TransactionPayControllerPolymarketSubmitDepositWalletBatchAction, -} from '../TransactionPayController-method-action-types'; -import type { TransactionPayControllerGetStateAction } from '../types'; +} from '../TransactionPayController-method-action-types.js'; +import type { TransactionPayControllerGetStateAction } from '../types.js'; +import type { TransactionPayControllerMessenger } from './../index.js'; type AllActions = MessengerActions; type AllEvents = MessengerEvents; diff --git a/packages/transaction-pay-controller/src/utils/gas.ts b/packages/transaction-pay-controller/src/utils/gas.ts index 5d777d0395f..57a2592407e 100644 --- a/packages/transaction-pay-controller/src/utils/gas.ts +++ b/packages/transaction-pay-controller/src/utils/gas.ts @@ -1,5 +1,4 @@ import { toHex } from '@metamask/controller-utils'; -import type { GasFeeEstimates } from '@metamask/gas-fee-controller'; import type { GasFeeToken, TransactionMeta, @@ -7,12 +6,12 @@ import type { import type { Hex } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import type { TransactionPayControllerMessenger } from '..'; -import { createModuleLogger, projectLogger } from '../logger'; -import type { Amount } from '../types'; -import { getFallbackGas, getGasBuffer } from './feature-flags'; -import { getNetworkClientId } from './provider'; -import { getNativeToken, getTokenBalance, getTokenFiatRate } from './token'; +import { createModuleLogger, projectLogger } from '../logger.js'; +import type { Amount } from '../types.js'; +import type { TransactionPayControllerMessenger } from './../index.js'; +import { getFallbackGas, getGasBuffer } from './feature-flags.js'; +import { getNetworkClientId } from './provider.js'; +import { getNativeToken, getTokenBalance, getTokenFiatRate } from './token.js'; const log = createModuleLogger(projectLogger, 'gas'); @@ -290,7 +289,7 @@ export function getGasFee( const chainState = gasFeeControllerState?.gasFeeEstimatesByChainId?.[chainId]; const { estimatedBaseFee: estimatedBaseFeeGwei, medium } = - (chainState?.gasFeeEstimates as GasFeeEstimates | undefined) ?? {}; + chainState?.gasFeeEstimates ?? {}; const maxFeePerGasGwei = medium?.suggestedMaxFeePerGas; const maxPriorityFeePerGasGwei = medium?.suggestedMaxPriorityFeePerGas; diff --git a/packages/transaction-pay-controller/src/utils/quote-gas.ts b/packages/transaction-pay-controller/src/utils/quote-gas.ts index 25c2823c1d3..63c32404ee4 100644 --- a/packages/transaction-pay-controller/src/utils/quote-gas.ts +++ b/packages/transaction-pay-controller/src/utils/quote-gas.ts @@ -4,10 +4,10 @@ import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import type { TransactionPayControllerMessenger } from '..'; -import { projectLogger } from '../logger'; -import { getGasBuffer } from './feature-flags'; -import { estimateGasLimit } from './gas'; +import { projectLogger } from '../logger.js'; +import type { TransactionPayControllerMessenger } from './../index.js'; +import { getGasBuffer } from './feature-flags.js'; +import { estimateGasLimit } from './gas.js'; const log = createModuleLogger(projectLogger, 'quote-gas'); diff --git a/packages/transaction-pay-controller/src/utils/source-amounts.ts b/packages/transaction-pay-controller/src/utils/source-amounts.ts index f2bcd31a501..e5e7f720e0d 100644 --- a/packages/transaction-pay-controller/src/utils/source-amounts.ts +++ b/packages/transaction-pay-controller/src/utils/source-amounts.ts @@ -5,24 +5,24 @@ import type { import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import type { - TransactionPayControllerMessenger, - TransactionPaymentToken, -} from '..'; -import { TransactionPayStrategy } from '..'; import { ARBITRUM_USDC_ADDRESS, CHAIN_ID_ARBITRUM, PERPS_DEPOSIT_TYPES, -} from '../constants'; -import { projectLogger } from '../logger'; +} from '../constants.js'; +import { projectLogger } from '../logger.js'; import type { TransactionPaySourceAmount, TransactionData, TransactionPayRequiredToken, -} from '../types'; -import { getTokenFiatRate, isSameToken } from './token'; -import { getTransaction } from './transaction'; +} from '../types.js'; +import type { + TransactionPayControllerMessenger, + TransactionPaymentToken, +} from './../index.js'; +import { TransactionPayStrategy } from './../index.js'; +import { getTokenFiatRate, isSameToken } from './token.js'; +import { getTransaction } from './transaction.js'; const log = createModuleLogger(projectLogger, 'source-amounts'); diff --git a/packages/user-operation-controller/package.json b/packages/user-operation-controller/package.json index ffdc2ce986c..89d68e8052e 100644 --- a/packages/user-operation-controller/package.json +++ b/packages/user-operation-controller/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/wallet/package.json b/packages/wallet/package.json index 21d44501160..1b4d495c8ab 100644 --- a/packages/wallet/package.json +++ b/packages/wallet/package.json @@ -19,18 +19,10 @@ "dist/" ], "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { ".": { - "import": { - "types": "./dist/index.d.mts", - "default": "./dist/index.mjs" - }, - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, diff --git a/packages/wallet/src/initialization/defaults.ts b/packages/wallet/src/initialization/defaults.ts index d73ce76536c..f913d85f6c4 100644 --- a/packages/wallet/src/initialization/defaults.ts +++ b/packages/wallet/src/initialization/defaults.ts @@ -6,8 +6,8 @@ import type { MessengerEvents, } from '@metamask/messenger'; -import * as defaultConfigurations from './instances'; -import type { InitializationConfiguration, InstanceState } from './types'; +import * as defaultConfigurations from './instances/index.js'; +import type { InitializationConfiguration, InstanceState } from './types.js'; export { defaultConfigurations }; diff --git a/yarn.config.cjs b/yarn.config.cjs index 7715deb1ce4..c855daba15e 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -572,35 +572,16 @@ async function expectWorkspaceLicense(workspace) { function expectCorrectWorkspaceExports(workspace) { // All non-root packages must provide the location of the ESM-compatible // JavaScript entrypoint and its matching type declaration file. - expectWorkspaceField( - workspace, - 'exports["."].import.types', - './dist/index.d.mts', - ); - expectWorkspaceField( - workspace, - 'exports["."].import.default', - './dist/index.mjs', - ); + expectWorkspaceField(workspace, 'exports["."].types', './dist/index.d.ts'); + expectWorkspaceField(workspace, 'exports["."].default', './dist/index.js'); - // All non-root package must provide the location of the CommonJS-compatible - // entrypoint and its matching type declaration file. - expectWorkspaceField( - workspace, - 'exports["."].require.types', - './dist/index.d.cts', - ); - expectWorkspaceField( - workspace, - 'exports["."].require.default', - './dist/index.cjs', - ); - expectWorkspaceField(workspace, 'main', './dist/index.cjs'); - expectWorkspaceField(workspace, 'types', './dist/index.d.cts'); + // Packages should not provide separate CommonJS/ESM exports. + expectWorkspaceField(workspace, 'exports["."].require', null); + expectWorkspaceField(workspace, 'exports["."].import', null); - // Types should not be set in the export object directly, but rather in the - // `import` and `require` subfields. - expectWorkspaceField(workspace, 'exports["."].types', null); + // Packages should not provide a "main" or "types" field. + expectWorkspaceField(workspace, 'main', null); + expectWorkspaceField(workspace, 'types', null); // All non-root packages must export a `package.json` file. expectWorkspaceField( @@ -608,6 +589,36 @@ function expectCorrectWorkspaceExports(workspace) { 'exports["./package.json"]', './package.json', ); + + const nonRootExports = Object.keys(workspace.manifest.exports).filter( + (key) => key !== '.' && key !== './package.json', + ); + + for (const key of nonRootExports) { + const prefix = `exports["${key}"]`; + expectWorkspaceField(workspace, `${prefix}.types`); + expectWorkspaceField(workspace, `${prefix}.default`); + + const typesValue = get(workspace.manifest, `${prefix}.types`); + if ( + typesValue && + (typeof typesValue !== 'string' || !typesValue.endsWith('.d.ts')) + ) { + workspace.error( + `Expected package's "${prefix}.types" field to end with ".d.ts", but it was "${typesValue}".`, + ); + } + + const importValue = get(workspace.manifest, `${prefix}.default`); + if ( + importValue && + (typeof importValue !== 'string' || !importValue.endsWith('.js')) + ) { + workspace.error( + `Expected package's "${prefix}.default" field to end with ".js", but it was "${importValue}".`, + ); + } + } } /** From 8d6ce27c222a9865b6d73fb3e30940b146010cdd Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 13:43:03 +0200 Subject: [PATCH 003/115] Add `"type": "module"` to all packages Mark all packages (and the root) as native ESM by adding `"type": "module"` to their manifests. Also adds a Yarn constraint to enforce this field going forward. --- package.json | 1 + packages/account-tree-controller/package.json | 1 + packages/accounts-controller/package.json | 1 + packages/address-book-controller/package.json | 1 + packages/ai-controllers/package.json | 1 + packages/analytics-controller/package.json | 1 + packages/analytics-data-regulation-controller/package.json | 1 + packages/announcement-controller/package.json | 1 + packages/app-metadata-controller/package.json | 1 + packages/approval-controller/package.json | 1 + packages/assets-controller/package.json | 1 + packages/assets-controllers/package.json | 1 + packages/authenticated-user-storage/package.json | 1 + packages/base-controller/package.json | 1 + packages/base-data-service/package.json | 1 + packages/bitcoin-regtest-up/package.json | 1 + packages/bridge-controller/package.json | 1 + packages/bridge-status-controller/package.json | 1 + packages/build-utils/package.json | 1 + packages/chain-agnostic-permission/package.json | 1 + packages/chomp-api-service/package.json | 1 + packages/claims-controller/package.json | 1 + packages/client-controller/package.json | 1 + packages/client-utils/package.json | 1 + packages/compliance-controller/package.json | 1 + packages/composable-controller/package.json | 1 + packages/config-registry-controller/package.json | 1 + packages/connectivity-controller/package.json | 1 + packages/controller-utils/package.json | 1 + packages/core-backend/package.json | 1 + packages/delegation-controller/package.json | 1 + packages/earn-controller/package.json | 1 + packages/eip-5792-middleware/package.json | 1 + packages/eip-7702-internal-rpc-middleware/package.json | 1 + packages/eip1193-permission-middleware/package.json | 1 + packages/ens-controller/package.json | 1 + packages/eth-block-tracker/package.json | 1 + packages/eth-json-rpc-middleware/package.json | 1 + packages/eth-json-rpc-provider/package.json | 1 + packages/foundryup/package.json | 1 + packages/gas-fee-controller/package.json | 1 + packages/gator-permissions-controller/package.json | 1 + packages/geolocation-controller/package.json | 1 + packages/java-tron-up/package.json | 1 + packages/json-rpc-engine/package.json | 1 + packages/json-rpc-middleware-stream/package.json | 1 + packages/keyring-controller/package.json | 1 + packages/local-node-utils/package.json | 1 + packages/logging-controller/package.json | 1 + packages/message-manager/package.json | 1 + packages/messenger-cli/package.json | 1 + packages/messenger/package.json | 1 + packages/money-account-api-data-service/package.json | 1 + packages/money-account-balance-service/package.json | 1 + packages/money-account-controller/package.json | 1 + packages/money-account-upgrade-controller/package.json | 1 + packages/multichain-account-service/package.json | 1 + packages/multichain-api-middleware/package.json | 1 + packages/multichain-network-controller/package.json | 1 + packages/multichain-transactions-controller/package.json | 1 + packages/name-controller/package.json | 1 + packages/network-connection-banner-controller/package.json | 1 + packages/network-controller/package.json | 1 + packages/network-enablement-controller/package.json | 1 + packages/notification-services-controller/package.json | 1 + packages/passkey-controller/package.json | 1 + packages/permission-controller/package.json | 1 + packages/permission-log-controller/package.json | 1 + packages/perps-controller/package.json | 1 + packages/phishing-controller/package.json | 1 + packages/platform-api-docs/package.json | 1 + packages/polling-controller/package.json | 1 + packages/preferences-controller/package.json | 1 + packages/profile-metrics-controller/package.json | 1 + packages/profile-sync-controller/package.json | 1 + packages/ramps-controller/package.json | 1 + packages/rate-limit-controller/package.json | 1 + packages/react-data-query/package.json | 1 + packages/remote-feature-flag-controller/package.json | 1 + packages/sample-controllers/package.json | 1 + packages/seedless-onboarding-controller/package.json | 1 + packages/selected-network-controller/package.json | 1 + packages/sentinel-api-service/package.json | 1 + packages/shield-controller/package.json | 1 + packages/signature-controller/package.json | 1 + packages/smart-transactions-controller/package.json | 1 + packages/snap-account-service/package.json | 1 + packages/social-controllers/package.json | 1 + packages/solana-test-validator-up/package.json | 1 + packages/stellar-quickstart-up/package.json | 1 + packages/storage-service/package.json | 1 + packages/subscription-controller/package.json | 1 + packages/transaction-controller/package.json | 1 + packages/transaction-pay-controller/package.json | 1 + packages/user-operation-controller/package.json | 1 + packages/wallet-cli/package.json | 1 + packages/wallet-framework-docs/package.json | 1 + packages/wallet/package.json | 1 + yarn.config.cjs | 3 +++ 99 files changed, 101 insertions(+) diff --git a/package.json b/package.json index 8309c71a86a..129d18d9785 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "packages/*" ], "files": [], + "type": "module", "scripts": { "build": "yarn tsc --build tsconfig.build.json --verbose", "build:clean": "yarn build:only-clean && yarn build", diff --git a/packages/account-tree-controller/package.json b/packages/account-tree-controller/package.json index 27b717021e2..59a7143be08 100644 --- a/packages/account-tree-controller/package.json +++ b/packages/account-tree-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/accounts-controller/package.json b/packages/accounts-controller/package.json index 01346dabf60..13a52ed884d 100644 --- a/packages/accounts-controller/package.json +++ b/packages/accounts-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/address-book-controller/package.json b/packages/address-book-controller/package.json index 6d192278d8f..175ce73d96c 100644 --- a/packages/address-book-controller/package.json +++ b/packages/address-book-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/ai-controllers/package.json b/packages/ai-controllers/package.json index 486dd19b857..bdfcb292f8f 100644 --- a/packages/ai-controllers/package.json +++ b/packages/ai-controllers/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/analytics-controller/package.json b/packages/analytics-controller/package.json index 0a8702632a6..d6d7b3e27ef 100644 --- a/packages/analytics-controller/package.json +++ b/packages/analytics-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/analytics-data-regulation-controller/package.json b/packages/analytics-data-regulation-controller/package.json index 95ec153477a..b223ffe24c7 100644 --- a/packages/analytics-data-regulation-controller/package.json +++ b/packages/analytics-data-regulation-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/announcement-controller/package.json b/packages/announcement-controller/package.json index 52d8d8274f8..59b9e5bb37e 100644 --- a/packages/announcement-controller/package.json +++ b/packages/announcement-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/app-metadata-controller/package.json b/packages/app-metadata-controller/package.json index ec9c254e4e8..babd559b132 100644 --- a/packages/app-metadata-controller/package.json +++ b/packages/app-metadata-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/approval-controller/package.json b/packages/approval-controller/package.json index b52a3433331..ec29aac8ff6 100644 --- a/packages/approval-controller/package.json +++ b/packages/approval-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/assets-controller/package.json b/packages/assets-controller/package.json index f3e4a09578e..bcd2f3d4431 100644 --- a/packages/assets-controller/package.json +++ b/packages/assets-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/assets-controllers/package.json b/packages/assets-controllers/package.json index 714368733b1..fe1a974f47f 100644 --- a/packages/assets-controllers/package.json +++ b/packages/assets-controllers/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/authenticated-user-storage/package.json b/packages/authenticated-user-storage/package.json index 88f3e823079..cd996d1c5de 100644 --- a/packages/authenticated-user-storage/package.json +++ b/packages/authenticated-user-storage/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/base-controller/package.json b/packages/base-controller/package.json index 23c65e8d312..cf27f05433c 100644 --- a/packages/base-controller/package.json +++ b/packages/base-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "exports": { ".": { "types": "./dist/index.d.ts", diff --git a/packages/base-data-service/package.json b/packages/base-data-service/package.json index 572e138ff48..5270f048603 100644 --- a/packages/base-data-service/package.json +++ b/packages/base-data-service/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/bitcoin-regtest-up/package.json b/packages/bitcoin-regtest-up/package.json index 1505f1737a4..0a0fbd4c82d 100644 --- a/packages/bitcoin-regtest-up/package.json +++ b/packages/bitcoin-regtest-up/package.json @@ -19,6 +19,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/bridge-controller/package.json b/packages/bridge-controller/package.json index c364304a82f..9e4a24f3c3f 100644 --- a/packages/bridge-controller/package.json +++ b/packages/bridge-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/bridge-status-controller/package.json b/packages/bridge-status-controller/package.json index ae8890ac6f4..4930e5bfc72 100644 --- a/packages/bridge-status-controller/package.json +++ b/packages/bridge-status-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/build-utils/package.json b/packages/build-utils/package.json index e8bdf3fec1e..5e78b3a0e56 100644 --- a/packages/build-utils/package.json +++ b/packages/build-utils/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/chain-agnostic-permission/package.json b/packages/chain-agnostic-permission/package.json index 16ef12b2baa..bcb1dd881be 100644 --- a/packages/chain-agnostic-permission/package.json +++ b/packages/chain-agnostic-permission/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/chomp-api-service/package.json b/packages/chomp-api-service/package.json index fc064ad9f17..f14efce6ef7 100644 --- a/packages/chomp-api-service/package.json +++ b/packages/chomp-api-service/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/claims-controller/package.json b/packages/claims-controller/package.json index 272ceec7f20..6c97d20b883 100644 --- a/packages/claims-controller/package.json +++ b/packages/claims-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/client-controller/package.json b/packages/client-controller/package.json index 28fd027619a..1df2b51ead8 100644 --- a/packages/client-controller/package.json +++ b/packages/client-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/client-utils/package.json b/packages/client-utils/package.json index 3d3901120bc..624b8d9323c 100644 --- a/packages/client-utils/package.json +++ b/packages/client-utils/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/compliance-controller/package.json b/packages/compliance-controller/package.json index f74f2a132d5..9ba9d759596 100644 --- a/packages/compliance-controller/package.json +++ b/packages/compliance-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/composable-controller/package.json b/packages/composable-controller/package.json index 13f97e33231..6f4033ac206 100644 --- a/packages/composable-controller/package.json +++ b/packages/composable-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/config-registry-controller/package.json b/packages/config-registry-controller/package.json index f4433b8c78a..b70b0862e58 100644 --- a/packages/config-registry-controller/package.json +++ b/packages/config-registry-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/connectivity-controller/package.json b/packages/connectivity-controller/package.json index fe8861b90ed..6e3451a1da4 100644 --- a/packages/connectivity-controller/package.json +++ b/packages/connectivity-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/controller-utils/package.json b/packages/controller-utils/package.json index 0e02854780f..59fa751189c 100644 --- a/packages/controller-utils/package.json +++ b/packages/controller-utils/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/core-backend/package.json b/packages/core-backend/package.json index ec6d05ac1bd..b2c8492cb44 100644 --- a/packages/core-backend/package.json +++ b/packages/core-backend/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/delegation-controller/package.json b/packages/delegation-controller/package.json index 073038e3f09..ec05e5ff1d5 100644 --- a/packages/delegation-controller/package.json +++ b/packages/delegation-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/earn-controller/package.json b/packages/earn-controller/package.json index c63c408172c..88e9091114f 100644 --- a/packages/earn-controller/package.json +++ b/packages/earn-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/eip-5792-middleware/package.json b/packages/eip-5792-middleware/package.json index a0e6759a33f..4f3cc11a3e1 100644 --- a/packages/eip-5792-middleware/package.json +++ b/packages/eip-5792-middleware/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/eip-7702-internal-rpc-middleware/package.json b/packages/eip-7702-internal-rpc-middleware/package.json index 23839ff8a1d..cc5c28f9a06 100644 --- a/packages/eip-7702-internal-rpc-middleware/package.json +++ b/packages/eip-7702-internal-rpc-middleware/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/eip1193-permission-middleware/package.json b/packages/eip1193-permission-middleware/package.json index 37afdb3eb77..61a47e5f1d3 100644 --- a/packages/eip1193-permission-middleware/package.json +++ b/packages/eip1193-permission-middleware/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/ens-controller/package.json b/packages/ens-controller/package.json index ab1acbf77f1..96c594ba55f 100644 --- a/packages/ens-controller/package.json +++ b/packages/ens-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/eth-block-tracker/package.json b/packages/eth-block-tracker/package.json index 1da5e464ca6..1f3ba1c7cf9 100644 --- a/packages/eth-block-tracker/package.json +++ b/packages/eth-block-tracker/package.json @@ -19,6 +19,7 @@ "dist", "dist/" ], + "type": "module", "sideEffects": false, "module": "./dist/index.mjs", "exports": { diff --git a/packages/eth-json-rpc-middleware/package.json b/packages/eth-json-rpc-middleware/package.json index 0d5388b0a48..85f6c27b48f 100644 --- a/packages/eth-json-rpc-middleware/package.json +++ b/packages/eth-json-rpc-middleware/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "module": "./dist/index.mjs", "exports": { diff --git a/packages/eth-json-rpc-provider/package.json b/packages/eth-json-rpc-provider/package.json index 7a24b236208..345d139432d 100644 --- a/packages/eth-json-rpc-provider/package.json +++ b/packages/eth-json-rpc-provider/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/foundryup/package.json b/packages/foundryup/package.json index 586ce24c23a..476471fd0ba 100644 --- a/packages/foundryup/package.json +++ b/packages/foundryup/package.json @@ -21,6 +21,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "main": "./dist/index.cjs", "types": "./dist/index.d.cts", diff --git a/packages/gas-fee-controller/package.json b/packages/gas-fee-controller/package.json index a336115766e..fe33293525b 100644 --- a/packages/gas-fee-controller/package.json +++ b/packages/gas-fee-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/gator-permissions-controller/package.json b/packages/gator-permissions-controller/package.json index 0f58b065577..b146b30500e 100644 --- a/packages/gator-permissions-controller/package.json +++ b/packages/gator-permissions-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/geolocation-controller/package.json b/packages/geolocation-controller/package.json index 6fb42dab029..6fae40a2377 100644 --- a/packages/geolocation-controller/package.json +++ b/packages/geolocation-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/java-tron-up/package.json b/packages/java-tron-up/package.json index 9581fbc0816..98cee8fd2e6 100644 --- a/packages/java-tron-up/package.json +++ b/packages/java-tron-up/package.json @@ -19,6 +19,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/json-rpc-engine/package.json b/packages/json-rpc-engine/package.json index 3367c468f51..4c7b9376782 100644 --- a/packages/json-rpc-engine/package.json +++ b/packages/json-rpc-engine/package.json @@ -22,6 +22,7 @@ "dist/", "v2.js" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/json-rpc-middleware-stream/package.json b/packages/json-rpc-middleware-stream/package.json index 15eea171804..797bc9b43c3 100644 --- a/packages/json-rpc-middleware-stream/package.json +++ b/packages/json-rpc-middleware-stream/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/keyring-controller/package.json b/packages/keyring-controller/package.json index e98b35a4427..d53b226e7ab 100644 --- a/packages/keyring-controller/package.json +++ b/packages/keyring-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/local-node-utils/package.json b/packages/local-node-utils/package.json index d0ced65255a..01d109b8798 100644 --- a/packages/local-node-utils/package.json +++ b/packages/local-node-utils/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/logging-controller/package.json b/packages/logging-controller/package.json index 32de8500854..1b338d6d3fc 100644 --- a/packages/logging-controller/package.json +++ b/packages/logging-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/message-manager/package.json b/packages/message-manager/package.json index ea39eb36932..6a9f4e0d081 100644 --- a/packages/message-manager/package.json +++ b/packages/message-manager/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/messenger-cli/package.json b/packages/messenger-cli/package.json index d84398a3178..061f636a511 100644 --- a/packages/messenger-cli/package.json +++ b/packages/messenger-cli/package.json @@ -21,6 +21,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "publishConfig": { "access": "public", diff --git a/packages/messenger/package.json b/packages/messenger/package.json index ff303ae4123..f931e650f57 100644 --- a/packages/messenger/package.json +++ b/packages/messenger/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/money-account-api-data-service/package.json b/packages/money-account-api-data-service/package.json index 2dc95d82b7a..100b2e4e5a7 100644 --- a/packages/money-account-api-data-service/package.json +++ b/packages/money-account-api-data-service/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/money-account-balance-service/package.json b/packages/money-account-balance-service/package.json index d5065ddfa92..a5440979978 100644 --- a/packages/money-account-balance-service/package.json +++ b/packages/money-account-balance-service/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/money-account-controller/package.json b/packages/money-account-controller/package.json index 34d390e4452..d19a3585d50 100644 --- a/packages/money-account-controller/package.json +++ b/packages/money-account-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/money-account-upgrade-controller/package.json b/packages/money-account-upgrade-controller/package.json index 0035de2179c..b944798c34c 100644 --- a/packages/money-account-upgrade-controller/package.json +++ b/packages/money-account-upgrade-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/multichain-account-service/package.json b/packages/multichain-account-service/package.json index 52cd947f028..3b3c88c209f 100644 --- a/packages/multichain-account-service/package.json +++ b/packages/multichain-account-service/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/multichain-api-middleware/package.json b/packages/multichain-api-middleware/package.json index b109da2aea3..6f78717cbc4 100644 --- a/packages/multichain-api-middleware/package.json +++ b/packages/multichain-api-middleware/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/multichain-network-controller/package.json b/packages/multichain-network-controller/package.json index 230aa63f428..28f17800cc4 100644 --- a/packages/multichain-network-controller/package.json +++ b/packages/multichain-network-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/multichain-transactions-controller/package.json b/packages/multichain-transactions-controller/package.json index d28785632fa..5fabb08ed92 100644 --- a/packages/multichain-transactions-controller/package.json +++ b/packages/multichain-transactions-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/name-controller/package.json b/packages/name-controller/package.json index 0785d556e3a..fd4f2735e1c 100644 --- a/packages/name-controller/package.json +++ b/packages/name-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/network-connection-banner-controller/package.json b/packages/network-connection-banner-controller/package.json index d098a20fcba..93649fcbcd7 100644 --- a/packages/network-connection-banner-controller/package.json +++ b/packages/network-connection-banner-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/network-controller/package.json b/packages/network-controller/package.json index 9a826634ee1..5d23977caca 100644 --- a/packages/network-controller/package.json +++ b/packages/network-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/network-enablement-controller/package.json b/packages/network-enablement-controller/package.json index 216df4d3b4e..8270ba7305e 100644 --- a/packages/network-enablement-controller/package.json +++ b/packages/network-enablement-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/notification-services-controller/package.json b/packages/notification-services-controller/package.json index 10aa9cb0771..8966265e29b 100644 --- a/packages/notification-services-controller/package.json +++ b/packages/notification-services-controller/package.json @@ -20,6 +20,7 @@ "notification-services/", "push-services/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/passkey-controller/package.json b/packages/passkey-controller/package.json index 494ad1300d0..2f3934da087 100644 --- a/packages/passkey-controller/package.json +++ b/packages/passkey-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/permission-controller/package.json b/packages/permission-controller/package.json index 59f114f3704..4c6edc5dbca 100644 --- a/packages/permission-controller/package.json +++ b/packages/permission-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/permission-log-controller/package.json b/packages/permission-log-controller/package.json index 894e9b467b5..c1670d0a502 100644 --- a/packages/permission-log-controller/package.json +++ b/packages/permission-log-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/perps-controller/package.json b/packages/perps-controller/package.json index c14a18bb1b3..79b46f7ce55 100644 --- a/packages/perps-controller/package.json +++ b/packages/perps-controller/package.json @@ -21,6 +21,7 @@ "!dist/services/MYXClientService*", "!dist/services/MYXWalletService*" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/phishing-controller/package.json b/packages/phishing-controller/package.json index 909006ffcaf..2b7341a0a0f 100644 --- a/packages/phishing-controller/package.json +++ b/packages/phishing-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/platform-api-docs/package.json b/packages/platform-api-docs/package.json index 55fb059906d..b33d47cd4fb 100644 --- a/packages/platform-api-docs/package.json +++ b/packages/platform-api-docs/package.json @@ -20,6 +20,7 @@ "dist/", "site/" ], + "type": "module", "sideEffects": false, "publishConfig": { "access": "public", diff --git a/packages/polling-controller/package.json b/packages/polling-controller/package.json index 59ab5087956..6f27e735a51 100644 --- a/packages/polling-controller/package.json +++ b/packages/polling-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/preferences-controller/package.json b/packages/preferences-controller/package.json index 558306914eb..45009a59de4 100644 --- a/packages/preferences-controller/package.json +++ b/packages/preferences-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/profile-metrics-controller/package.json b/packages/profile-metrics-controller/package.json index 68f682b8094..e0c0f7037df 100644 --- a/packages/profile-metrics-controller/package.json +++ b/packages/profile-metrics-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/profile-sync-controller/package.json b/packages/profile-sync-controller/package.json index af830d74eda..f5faa1b611b 100644 --- a/packages/profile-sync-controller/package.json +++ b/packages/profile-sync-controller/package.json @@ -21,6 +21,7 @@ "user-storage/", "sdk/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/ramps-controller/package.json b/packages/ramps-controller/package.json index 863a7cd8a99..1bc1688e467 100644 --- a/packages/ramps-controller/package.json +++ b/packages/ramps-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/rate-limit-controller/package.json b/packages/rate-limit-controller/package.json index 79c2394238a..5ea660c5304 100644 --- a/packages/rate-limit-controller/package.json +++ b/packages/rate-limit-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/react-data-query/package.json b/packages/react-data-query/package.json index 460c6965d66..9dbdcf9379b 100644 --- a/packages/react-data-query/package.json +++ b/packages/react-data-query/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/remote-feature-flag-controller/package.json b/packages/remote-feature-flag-controller/package.json index b08e4fb74a8..6e77a8c4fde 100644 --- a/packages/remote-feature-flag-controller/package.json +++ b/packages/remote-feature-flag-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/sample-controllers/package.json b/packages/sample-controllers/package.json index c077f896f07..9a5328ca8ba 100644 --- a/packages/sample-controllers/package.json +++ b/packages/sample-controllers/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/seedless-onboarding-controller/package.json b/packages/seedless-onboarding-controller/package.json index a2ce6d9814f..157e09a9c22 100644 --- a/packages/seedless-onboarding-controller/package.json +++ b/packages/seedless-onboarding-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/selected-network-controller/package.json b/packages/selected-network-controller/package.json index 3031a479f1f..4d1151a18c9 100644 --- a/packages/selected-network-controller/package.json +++ b/packages/selected-network-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/sentinel-api-service/package.json b/packages/sentinel-api-service/package.json index 222ae4f8f1e..3795265736c 100644 --- a/packages/sentinel-api-service/package.json +++ b/packages/sentinel-api-service/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/shield-controller/package.json b/packages/shield-controller/package.json index bdeaeb911be..e0764663b96 100644 --- a/packages/shield-controller/package.json +++ b/packages/shield-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/signature-controller/package.json b/packages/signature-controller/package.json index c0dd914ffc9..4a9a6ed9f00 100644 --- a/packages/signature-controller/package.json +++ b/packages/signature-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/smart-transactions-controller/package.json b/packages/smart-transactions-controller/package.json index b124160a456..c8f8212e0bc 100644 --- a/packages/smart-transactions-controller/package.json +++ b/packages/smart-transactions-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/snap-account-service/package.json b/packages/snap-account-service/package.json index 04e1820e7f3..7d650210efe 100644 --- a/packages/snap-account-service/package.json +++ b/packages/snap-account-service/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/social-controllers/package.json b/packages/social-controllers/package.json index 9b695a3cd8a..5fa09fb3d58 100644 --- a/packages/social-controllers/package.json +++ b/packages/social-controllers/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/solana-test-validator-up/package.json b/packages/solana-test-validator-up/package.json index 039ace91961..ced052ae4cc 100644 --- a/packages/solana-test-validator-up/package.json +++ b/packages/solana-test-validator-up/package.json @@ -19,6 +19,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/stellar-quickstart-up/package.json b/packages/stellar-quickstart-up/package.json index 1e553f71656..1675d3cc582 100644 --- a/packages/stellar-quickstart-up/package.json +++ b/packages/stellar-quickstart-up/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/storage-service/package.json b/packages/storage-service/package.json index 21ff8232105..22ce69ef1c2 100644 --- a/packages/storage-service/package.json +++ b/packages/storage-service/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/subscription-controller/package.json b/packages/subscription-controller/package.json index 0410f4c0f7e..723302ff70e 100644 --- a/packages/subscription-controller/package.json +++ b/packages/subscription-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/transaction-controller/package.json b/packages/transaction-controller/package.json index daa32aff434..57d5a741b5b 100644 --- a/packages/transaction-controller/package.json +++ b/packages/transaction-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/transaction-pay-controller/package.json b/packages/transaction-pay-controller/package.json index be727089232..c3afbebc141 100644 --- a/packages/transaction-pay-controller/package.json +++ b/packages/transaction-pay-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/user-operation-controller/package.json b/packages/user-operation-controller/package.json index 89d68e8052e..13b5808c26e 100644 --- a/packages/user-operation-controller/package.json +++ b/packages/user-operation-controller/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/packages/wallet-cli/package.json b/packages/wallet-cli/package.json index 2789786d96f..6928a98dba3 100644 --- a/packages/wallet-cli/package.json +++ b/packages/wallet-cli/package.json @@ -22,6 +22,7 @@ "bin/", "dist/" ], + "type": "module", "sideEffects": false, "exports": { "./package.json": "./package.json" diff --git a/packages/wallet-framework-docs/package.json b/packages/wallet-framework-docs/package.json index 6e0908d4296..7444d92a287 100644 --- a/packages/wallet-framework-docs/package.json +++ b/packages/wallet-framework-docs/package.json @@ -19,6 +19,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "scripts": { "build": "docusaurus build site", diff --git a/packages/wallet/package.json b/packages/wallet/package.json index 1b4d495c8ab..28472596d63 100644 --- a/packages/wallet/package.json +++ b/packages/wallet/package.json @@ -18,6 +18,7 @@ "files": [ "dist/" ], + "type": "module", "sideEffects": false, "exports": { ".": { diff --git a/yarn.config.cjs b/yarn.config.cjs index c855daba15e..f218217befb 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -83,6 +83,9 @@ module.exports = defineConfig({ // All packages must have a name. expectWorkspaceField(workspace, 'name'); + // All workspaces must specify "type: module". + expectWorkspaceField(workspace, 'type', 'module'); + if (isChildWorkspace) { // All non-root packages must have a name that matches its directory // (e.g., a package in a workspace directory called `foo` must be called From 797f510f40b8e85d5d470315a00ced82b6677583 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 14:19:12 +0200 Subject: [PATCH 004/115] Add ESLint rules to enforce .js extensions in ESM imports Use `n/file-extension-in-import` to require `.js` extensions on relative imports (since `import-x/extensions` can't enforce this for TypeScript files). --- eslint.config.mjs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/eslint.config.mjs b/eslint.config.mjs index 9aa11e168a2..d8a4ab79746 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -2,6 +2,7 @@ import base, { createConfig } from '@metamask/eslint-config'; import jest from '@metamask/eslint-config-jest'; import nodejs from '@metamask/eslint-config-nodejs'; import typescript from '@metamask/eslint-config-typescript'; +import node from 'eslint-plugin-n'; const NODE_LTS_VERSION = 22; @@ -373,6 +374,32 @@ const config = createConfig([ 'n/no-process-env': 'off', }, }, + + // ESM-specific configuration. We should port this to + // `@metamask/eslint-config` at some point. + { + plugins: { n: node }, + rules: { + // `import-x/extensions` doesn't support using ".js" for TypeScript + // files(?), so we load the `n` plugin and use + // `n/file-extension-in-import` instead. + 'n/file-extension-in-import': ['error', 'always'], + 'import-x/extensions': [ + 'error', + { + js: 'ignorePackages', + ts: 'never', + tsx: 'never', + }, + ], + 'import-x/no-useless-path-segments': [ + 'error', + { + noUselessIndex: false, + }, + ], + }, + }, ]); export default config; From 9e5910df3bc76781f7a5a1ccc22dd2b06efe7279 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 14:35:26 +0200 Subject: [PATCH 005/115] Replace `__dirname` with `import.meta.dirname` in all packages `__dirname` is not available in ESM. Replace all usages with `import.meta.dirname`, which is equivalent and available since Node.js 21.2. --- packages/account-tree-controller/jest.config.js | 2 +- packages/accounts-controller/jest.config.js | 2 +- packages/address-book-controller/jest.config.js | 2 +- packages/ai-controllers/jest.config.js | 2 +- packages/analytics-controller/jest.config.js | 2 +- .../jest.config.js | 2 +- packages/announcement-controller/jest.config.js | 2 +- packages/app-metadata-controller/jest.config.js | 2 +- packages/approval-controller/jest.config.js | 2 +- packages/assets-controller/jest.config.js | 2 +- packages/assets-controllers/jest.config.js | 2 +- packages/authenticated-user-storage/jest.config.js | 2 +- packages/base-controller/jest.config.js | 2 +- packages/base-data-service/jest.config.js | 2 +- packages/bitcoin-regtest-up/jest.config.js | 2 +- packages/bridge-controller/jest.config.js | 2 +- packages/bridge-status-controller/jest.config.js | 2 +- packages/build-utils/jest.config.js | 2 +- packages/chain-agnostic-permission/jest.config.js | 2 +- packages/chomp-api-service/jest.config.js | 2 +- packages/claims-controller/jest.config.js | 2 +- packages/client-controller/jest.config.js | 2 +- packages/client-utils/jest.config.js | 2 +- packages/compliance-controller/jest.config.js | 2 +- packages/composable-controller/jest.config.js | 2 +- packages/config-registry-controller/jest.config.js | 2 +- packages/connectivity-controller/jest.config.js | 2 +- packages/controller-utils/jest.config.js | 2 +- packages/core-backend/jest.config.js | 2 +- packages/delegation-controller/jest.config.js | 2 +- packages/earn-controller/jest.config.js | 2 +- packages/eip-5792-middleware/jest.config.js | 2 +- .../eip-7702-internal-rpc-middleware/jest.config.js | 2 +- .../eip1193-permission-middleware/jest.config.js | 2 +- packages/ens-controller/jest.config.js | 2 +- packages/eth-block-tracker/jest.config.js | 2 +- packages/eth-json-rpc-middleware/jest.config.js | 2 +- packages/eth-json-rpc-provider/jest.config.js | 2 +- packages/foundryup/jest.config.js | 2 +- packages/gas-fee-controller/jest.config.js | 2 +- packages/gator-permissions-controller/jest.config.js | 2 +- packages/geolocation-controller/jest.config.js | 2 +- packages/java-tron-up/jest.config.js | 2 +- packages/json-rpc-engine/jest.config.js | 2 +- packages/json-rpc-middleware-stream/jest.config.js | 2 +- packages/keyring-controller/jest.config.js | 2 +- packages/local-node-utils/jest.config.js | 2 +- packages/logging-controller/jest.config.js | 2 +- packages/message-manager/jest.config.js | 2 +- packages/messenger-cli/jest.config.js | 2 +- packages/messenger/jest.config.js | 2 +- .../money-account-api-data-service/jest.config.js | 2 +- .../money-account-balance-service/jest.config.js | 2 +- packages/money-account-controller/jest.config.js | 2 +- .../money-account-upgrade-controller/jest.config.js | 2 +- packages/multichain-account-service/jest.config.js | 2 +- packages/multichain-api-middleware/jest.config.js | 2 +- .../multichain-network-controller/jest.config.js | 2 +- .../jest.config.js | 2 +- packages/name-controller/jest.config.js | 2 +- .../jest.config.js | 2 +- packages/network-controller/jest.config.js | 2 +- .../network-enablement-controller/jest.config.js | 2 +- .../notification-services-controller/jest.config.js | 2 +- packages/passkey-controller/jest.config.js | 2 +- packages/permission-controller/jest.config.js | 2 +- packages/permission-log-controller/jest.config.js | 2 +- packages/perps-controller/jest.config.js | 2 +- packages/phishing-controller/jest.config.js | 2 +- packages/platform-api-docs/jest.config.js | 2 +- packages/polling-controller/jest.config.js | 2 +- packages/preferences-controller/jest.config.js | 2 +- packages/profile-metrics-controller/jest.config.js | 2 +- packages/profile-sync-controller/jest.config.js | 2 +- packages/ramps-controller/dev-watch.js | 6 +++--- packages/ramps-controller/jest.config.js | 2 +- packages/ramps-controller/link-ramp-controller.js | 12 +++++++++--- packages/rate-limit-controller/jest.config.js | 2 +- packages/react-data-query/jest.config.js | 2 +- .../remote-feature-flag-controller/jest.config.js | 2 +- packages/sample-controllers/jest.config.js | 2 +- .../seedless-onboarding-controller/jest.config.js | 2 +- packages/selected-network-controller/jest.config.js | 2 +- packages/sentinel-api-service/jest.config.js | 2 +- packages/shield-controller/jest.config.js | 2 +- packages/signature-controller/jest.config.js | 2 +- .../smart-transactions-controller/jest.config.js | 2 +- packages/snap-account-service/jest.config.js | 2 +- packages/social-controllers/jest.config.js | 2 +- packages/solana-test-validator-up/jest.config.js | 2 +- packages/stellar-quickstart-up/jest.config.js | 2 +- packages/storage-service/jest.config.js | 2 +- packages/subscription-controller/jest.config.js | 2 +- packages/transaction-controller/jest.config.js | 2 +- packages/transaction-pay-controller/jest.config.js | 2 +- packages/user-operation-controller/jest.config.js | 2 +- packages/wallet-cli/jest.config.js | 2 +- packages/wallet-framework-docs/jest.config.js | 2 +- packages/wallet/jest.config.js | 2 +- .../create-package/package-template/jest.config.js | 2 +- scripts/create-package/utils.ts | 4 ++-- scripts/lint-teams-json.ts | 2 +- scripts/update-readme-content.ts | 2 +- 103 files changed, 114 insertions(+), 108 deletions(-) diff --git a/packages/account-tree-controller/jest.config.js b/packages/account-tree-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/account-tree-controller/jest.config.js +++ b/packages/account-tree-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/accounts-controller/jest.config.js b/packages/accounts-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/accounts-controller/jest.config.js +++ b/packages/accounts-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/address-book-controller/jest.config.js b/packages/address-book-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/address-book-controller/jest.config.js +++ b/packages/address-book-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/ai-controllers/jest.config.js b/packages/ai-controllers/jest.config.js index 55df7971f9f..3e6cab4dd05 100644 --- a/packages/ai-controllers/jest.config.js +++ b/packages/ai-controllers/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/analytics-controller/jest.config.js b/packages/analytics-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/analytics-controller/jest.config.js +++ b/packages/analytics-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/analytics-data-regulation-controller/jest.config.js b/packages/analytics-data-regulation-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/analytics-data-regulation-controller/jest.config.js +++ b/packages/analytics-data-regulation-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/announcement-controller/jest.config.js b/packages/announcement-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/announcement-controller/jest.config.js +++ b/packages/announcement-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/app-metadata-controller/jest.config.js b/packages/app-metadata-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/app-metadata-controller/jest.config.js +++ b/packages/app-metadata-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/approval-controller/jest.config.js b/packages/approval-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/approval-controller/jest.config.js +++ b/packages/approval-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/assets-controller/jest.config.js b/packages/assets-controller/jest.config.js index 2f47d1dcaa3..cd5d81e25c7 100644 --- a/packages/assets-controller/jest.config.js +++ b/packages/assets-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/assets-controllers/jest.config.js b/packages/assets-controllers/jest.config.js index add4e35680f..da6e860251d 100644 --- a/packages/assets-controllers/jest.config.js +++ b/packages/assets-controllers/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/authenticated-user-storage/jest.config.js b/packages/authenticated-user-storage/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/authenticated-user-storage/jest.config.js +++ b/packages/authenticated-user-storage/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/base-controller/jest.config.js b/packages/base-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/base-controller/jest.config.js +++ b/packages/base-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/base-data-service/jest.config.js b/packages/base-data-service/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/base-data-service/jest.config.js +++ b/packages/base-data-service/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/bitcoin-regtest-up/jest.config.js b/packages/bitcoin-regtest-up/jest.config.js index fc9274eb1ef..bd575b25e28 100644 --- a/packages/bitcoin-regtest-up/jest.config.js +++ b/packages/bitcoin-regtest-up/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/bridge-controller/jest.config.js b/packages/bridge-controller/jest.config.js index 632d1db1f00..e182a513001 100644 --- a/packages/bridge-controller/jest.config.js +++ b/packages/bridge-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/bridge-status-controller/jest.config.js b/packages/bridge-status-controller/jest.config.js index 86e3fc3cfeb..67266cdaa0e 100644 --- a/packages/bridge-status-controller/jest.config.js +++ b/packages/bridge-status-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/build-utils/jest.config.js b/packages/build-utils/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/build-utils/jest.config.js +++ b/packages/build-utils/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/chain-agnostic-permission/jest.config.js b/packages/chain-agnostic-permission/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/chain-agnostic-permission/jest.config.js +++ b/packages/chain-agnostic-permission/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/chomp-api-service/jest.config.js b/packages/chomp-api-service/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/chomp-api-service/jest.config.js +++ b/packages/chomp-api-service/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/claims-controller/jest.config.js b/packages/claims-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/claims-controller/jest.config.js +++ b/packages/claims-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/client-controller/jest.config.js b/packages/client-controller/jest.config.js index 9efbc1e7d1f..9d1196b8160 100644 --- a/packages/client-controller/jest.config.js +++ b/packages/client-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { displayName, diff --git a/packages/client-utils/jest.config.js b/packages/client-utils/jest.config.js index cf3a75978f1..7873ea482cb 100644 --- a/packages/client-utils/jest.config.js +++ b/packages/client-utils/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/compliance-controller/jest.config.js b/packages/compliance-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/compliance-controller/jest.config.js +++ b/packages/compliance-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/composable-controller/jest.config.js b/packages/composable-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/composable-controller/jest.config.js +++ b/packages/composable-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/config-registry-controller/jest.config.js b/packages/config-registry-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/config-registry-controller/jest.config.js +++ b/packages/config-registry-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/connectivity-controller/jest.config.js b/packages/connectivity-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/connectivity-controller/jest.config.js +++ b/packages/connectivity-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/controller-utils/jest.config.js b/packages/controller-utils/jest.config.js index 8e0bb5320db..eac83868094 100644 --- a/packages/controller-utils/jest.config.js +++ b/packages/controller-utils/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/core-backend/jest.config.js b/packages/core-backend/jest.config.js index 9af4c974897..8118bc7d056 100644 --- a/packages/core-backend/jest.config.js +++ b/packages/core-backend/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/delegation-controller/jest.config.js b/packages/delegation-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/delegation-controller/jest.config.js +++ b/packages/delegation-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/earn-controller/jest.config.js b/packages/earn-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/earn-controller/jest.config.js +++ b/packages/earn-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/eip-5792-middleware/jest.config.js b/packages/eip-5792-middleware/jest.config.js index 70d67779fbe..36655c9b266 100644 --- a/packages/eip-5792-middleware/jest.config.js +++ b/packages/eip-5792-middleware/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/eip-7702-internal-rpc-middleware/jest.config.js b/packages/eip-7702-internal-rpc-middleware/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/eip-7702-internal-rpc-middleware/jest.config.js +++ b/packages/eip-7702-internal-rpc-middleware/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/eip1193-permission-middleware/jest.config.js b/packages/eip1193-permission-middleware/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/eip1193-permission-middleware/jest.config.js +++ b/packages/eip1193-permission-middleware/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/ens-controller/jest.config.js b/packages/ens-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/ens-controller/jest.config.js +++ b/packages/ens-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/eth-block-tracker/jest.config.js b/packages/eth-block-tracker/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/eth-block-tracker/jest.config.js +++ b/packages/eth-block-tracker/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/eth-json-rpc-middleware/jest.config.js b/packages/eth-json-rpc-middleware/jest.config.js index 4c500d749cb..38bdce227ce 100644 --- a/packages/eth-json-rpc-middleware/jest.config.js +++ b/packages/eth-json-rpc-middleware/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/eth-json-rpc-provider/jest.config.js b/packages/eth-json-rpc-provider/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/eth-json-rpc-provider/jest.config.js +++ b/packages/eth-json-rpc-provider/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/foundryup/jest.config.js b/packages/foundryup/jest.config.js index df8d173e85f..5ee81045da0 100644 --- a/packages/foundryup/jest.config.js +++ b/packages/foundryup/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/gas-fee-controller/jest.config.js b/packages/gas-fee-controller/jest.config.js index 14cf684c6a7..9dcb32d6325 100644 --- a/packages/gas-fee-controller/jest.config.js +++ b/packages/gas-fee-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/gator-permissions-controller/jest.config.js b/packages/gator-permissions-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/gator-permissions-controller/jest.config.js +++ b/packages/gator-permissions-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/geolocation-controller/jest.config.js b/packages/geolocation-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/geolocation-controller/jest.config.js +++ b/packages/geolocation-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/java-tron-up/jest.config.js b/packages/java-tron-up/jest.config.js index e29b7194b97..dd101347e37 100644 --- a/packages/java-tron-up/jest.config.js +++ b/packages/java-tron-up/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/json-rpc-engine/jest.config.js b/packages/json-rpc-engine/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/json-rpc-engine/jest.config.js +++ b/packages/json-rpc-engine/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/json-rpc-middleware-stream/jest.config.js b/packages/json-rpc-middleware-stream/jest.config.js index 3544112ae56..a2ee7b406b2 100644 --- a/packages/json-rpc-middleware-stream/jest.config.js +++ b/packages/json-rpc-middleware-stream/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/keyring-controller/jest.config.js b/packages/keyring-controller/jest.config.js index b1b83b31073..ef4e25a8b54 100644 --- a/packages/keyring-controller/jest.config.js +++ b/packages/keyring-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/local-node-utils/jest.config.js b/packages/local-node-utils/jest.config.js index 29b89ed0923..b47e4121538 100644 --- a/packages/local-node-utils/jest.config.js +++ b/packages/local-node-utils/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/logging-controller/jest.config.js b/packages/logging-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/logging-controller/jest.config.js +++ b/packages/logging-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/message-manager/jest.config.js b/packages/message-manager/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/message-manager/jest.config.js +++ b/packages/message-manager/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/messenger-cli/jest.config.js b/packages/messenger-cli/jest.config.js index 2056ce9cc2d..f4926fb9873 100644 --- a/packages/messenger-cli/jest.config.js +++ b/packages/messenger-cli/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/messenger/jest.config.js b/packages/messenger/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/messenger/jest.config.js +++ b/packages/messenger/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/money-account-api-data-service/jest.config.js b/packages/money-account-api-data-service/jest.config.js index c17efa251af..3c59dbe56c1 100644 --- a/packages/money-account-api-data-service/jest.config.js +++ b/packages/money-account-api-data-service/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { displayName, diff --git a/packages/money-account-balance-service/jest.config.js b/packages/money-account-balance-service/jest.config.js index c17efa251af..3c59dbe56c1 100644 --- a/packages/money-account-balance-service/jest.config.js +++ b/packages/money-account-balance-service/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { displayName, diff --git a/packages/money-account-controller/jest.config.js b/packages/money-account-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/money-account-controller/jest.config.js +++ b/packages/money-account-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/money-account-upgrade-controller/jest.config.js b/packages/money-account-upgrade-controller/jest.config.js index 1c5314007e1..69d5d9b4273 100644 --- a/packages/money-account-upgrade-controller/jest.config.js +++ b/packages/money-account-upgrade-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { displayName, diff --git a/packages/multichain-account-service/jest.config.js b/packages/multichain-account-service/jest.config.js index 760546caa63..10ee5bfeb27 100644 --- a/packages/multichain-account-service/jest.config.js +++ b/packages/multichain-account-service/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/multichain-api-middleware/jest.config.js b/packages/multichain-api-middleware/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/multichain-api-middleware/jest.config.js +++ b/packages/multichain-api-middleware/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/multichain-network-controller/jest.config.js b/packages/multichain-network-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/multichain-network-controller/jest.config.js +++ b/packages/multichain-network-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/multichain-transactions-controller/jest.config.js b/packages/multichain-transactions-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/multichain-transactions-controller/jest.config.js +++ b/packages/multichain-transactions-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/name-controller/jest.config.js b/packages/name-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/name-controller/jest.config.js +++ b/packages/name-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/network-connection-banner-controller/jest.config.js b/packages/network-connection-banner-controller/jest.config.js index f6a03b68807..9e9e5413583 100644 --- a/packages/network-connection-banner-controller/jest.config.js +++ b/packages/network-connection-banner-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/network-controller/jest.config.js b/packages/network-controller/jest.config.js index 621e01529f5..c2af8240db6 100644 --- a/packages/network-controller/jest.config.js +++ b/packages/network-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/network-enablement-controller/jest.config.js b/packages/network-enablement-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/network-enablement-controller/jest.config.js +++ b/packages/network-enablement-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/notification-services-controller/jest.config.js b/packages/notification-services-controller/jest.config.js index 91dccc79ab3..264c6cfa402 100644 --- a/packages/notification-services-controller/jest.config.js +++ b/packages/notification-services-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/passkey-controller/jest.config.js b/packages/passkey-controller/jest.config.js index cc62e89c35e..47325836f4c 100644 --- a/packages/passkey-controller/jest.config.js +++ b/packages/passkey-controller/jest.config.js @@ -3,7 +3,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { displayName, diff --git a/packages/permission-controller/jest.config.js b/packages/permission-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/permission-controller/jest.config.js +++ b/packages/permission-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/permission-log-controller/jest.config.js b/packages/permission-log-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/permission-log-controller/jest.config.js +++ b/packages/permission-log-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/perps-controller/jest.config.js b/packages/perps-controller/jest.config.js index 1f804fe6868..35334a32ebb 100644 --- a/packages/perps-controller/jest.config.js +++ b/packages/perps-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = { ...merge(baseConfig, { diff --git a/packages/phishing-controller/jest.config.js b/packages/phishing-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/phishing-controller/jest.config.js +++ b/packages/phishing-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/platform-api-docs/jest.config.js b/packages/platform-api-docs/jest.config.js index d29f3f6c0db..a3deb766c92 100644 --- a/packages/platform-api-docs/jest.config.js +++ b/packages/platform-api-docs/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/polling-controller/jest.config.js b/packages/polling-controller/jest.config.js index 17db4cd31b6..3458eb4c32a 100644 --- a/packages/polling-controller/jest.config.js +++ b/packages/polling-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/preferences-controller/jest.config.js b/packages/preferences-controller/jest.config.js index bbde231ebcf..a3ac4399eed 100644 --- a/packages/preferences-controller/jest.config.js +++ b/packages/preferences-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/profile-metrics-controller/jest.config.js b/packages/profile-metrics-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/profile-metrics-controller/jest.config.js +++ b/packages/profile-metrics-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/profile-sync-controller/jest.config.js b/packages/profile-sync-controller/jest.config.js index 91dccc79ab3..264c6cfa402 100644 --- a/packages/profile-sync-controller/jest.config.js +++ b/packages/profile-sync-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/ramps-controller/dev-watch.js b/packages/ramps-controller/dev-watch.js index 3d44c720b57..4959ba0f8b9 100644 --- a/packages/ramps-controller/dev-watch.js +++ b/packages/ramps-controller/dev-watch.js @@ -8,8 +8,8 @@ const path = require('path'); * Watches src/ directory and runs link script on changes */ -const srcDir = path.join(__dirname, 'src'); -const linkScript = path.join(__dirname, 'link-ramp-controller.js'); +const srcDir = path.join(import.meta.dirname, 'src'); +const linkScript = path.join(import.meta.dirname, 'link-ramp-controller.js'); console.log('👀 Watching ramps-controller src/ directory...'); console.log('📁 Press Ctrl+C to stop watching\n'); @@ -24,7 +24,7 @@ function runLinkScript() { console.log('🔄 Changes detected, rebuilding and linking...'); const child = spawn('node', [linkScript], { stdio: 'inherit', - cwd: __dirname, + cwd: import.meta.dirname, }); child.on('close', (code) => { diff --git a/packages/ramps-controller/jest.config.js b/packages/ramps-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/ramps-controller/jest.config.js +++ b/packages/ramps-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/ramps-controller/link-ramp-controller.js b/packages/ramps-controller/link-ramp-controller.js index 0646d418043..a9b14cb4465 100644 --- a/packages/ramps-controller/link-ramp-controller.js +++ b/packages/ramps-controller/link-ramp-controller.js @@ -18,9 +18,9 @@ function pathExistsSync(filePath) { * This builds and copies the ramps-controller files to the mobile app's node_modules */ -const rampsControllerPath = __dirname; +const rampsControllerPath = import.meta.dirname; const mobileNodeModulesPath = path.join( - __dirname, + import.meta.dirname, '..', '..', '..', @@ -56,7 +56,13 @@ try { } // Check if mobile app exists -const mobilePath = path.join(__dirname, '..', '..', '..', 'metamask-mobile'); +const mobilePath = path.join( + import.meta.dirname, + '..', + '..', + '..', + 'metamask-mobile', +); if (!pathExistsSync(mobilePath)) { console.error('❌ MetaMask mobile app not found at expected location.'); process.exit(1); diff --git a/packages/rate-limit-controller/jest.config.js b/packages/rate-limit-controller/jest.config.js index 9c2baf15aed..391e6d479cf 100644 --- a/packages/rate-limit-controller/jest.config.js +++ b/packages/rate-limit-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/react-data-query/jest.config.js b/packages/react-data-query/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/react-data-query/jest.config.js +++ b/packages/react-data-query/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/remote-feature-flag-controller/jest.config.js b/packages/remote-feature-flag-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/remote-feature-flag-controller/jest.config.js +++ b/packages/remote-feature-flag-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/sample-controllers/jest.config.js b/packages/sample-controllers/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/sample-controllers/jest.config.js +++ b/packages/sample-controllers/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/seedless-onboarding-controller/jest.config.js b/packages/seedless-onboarding-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/seedless-onboarding-controller/jest.config.js +++ b/packages/seedless-onboarding-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/selected-network-controller/jest.config.js b/packages/selected-network-controller/jest.config.js index 5806b6db61b..d8481af7e94 100644 --- a/packages/selected-network-controller/jest.config.js +++ b/packages/selected-network-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/sentinel-api-service/jest.config.js b/packages/sentinel-api-service/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/sentinel-api-service/jest.config.js +++ b/packages/sentinel-api-service/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/shield-controller/jest.config.js b/packages/shield-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/shield-controller/jest.config.js +++ b/packages/shield-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/signature-controller/jest.config.js b/packages/signature-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/signature-controller/jest.config.js +++ b/packages/signature-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/smart-transactions-controller/jest.config.js b/packages/smart-transactions-controller/jest.config.js index f4ec849294c..fc533b958fe 100644 --- a/packages/smart-transactions-controller/jest.config.js +++ b/packages/smart-transactions-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/snap-account-service/jest.config.js b/packages/snap-account-service/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/snap-account-service/jest.config.js +++ b/packages/snap-account-service/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/social-controllers/jest.config.js b/packages/social-controllers/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/social-controllers/jest.config.js +++ b/packages/social-controllers/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/solana-test-validator-up/jest.config.js b/packages/solana-test-validator-up/jest.config.js index 8a2791c96d9..759bb8bb5a9 100644 --- a/packages/solana-test-validator-up/jest.config.js +++ b/packages/solana-test-validator-up/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/stellar-quickstart-up/jest.config.js b/packages/stellar-quickstart-up/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/stellar-quickstart-up/jest.config.js +++ b/packages/stellar-quickstart-up/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/storage-service/jest.config.js b/packages/storage-service/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/storage-service/jest.config.js +++ b/packages/storage-service/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/subscription-controller/jest.config.js b/packages/subscription-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/subscription-controller/jest.config.js +++ b/packages/subscription-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/transaction-controller/jest.config.js b/packages/transaction-controller/jest.config.js index 5fc74a1ac09..75c5fbf3b28 100644 --- a/packages/transaction-controller/jest.config.js +++ b/packages/transaction-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/transaction-pay-controller/jest.config.js b/packages/transaction-pay-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/transaction-pay-controller/jest.config.js +++ b/packages/transaction-pay-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/user-operation-controller/jest.config.js b/packages/user-operation-controller/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/user-operation-controller/jest.config.js +++ b/packages/user-operation-controller/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/wallet-cli/jest.config.js b/packages/wallet-cli/jest.config.js index 568fedaec47..205cf848e37 100644 --- a/packages/wallet-cli/jest.config.js +++ b/packages/wallet-cli/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/wallet-framework-docs/jest.config.js b/packages/wallet-framework-docs/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/wallet-framework-docs/jest.config.js +++ b/packages/wallet-framework-docs/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/packages/wallet/jest.config.js b/packages/wallet/jest.config.js index ca084133399..52fe484da39 100644 --- a/packages/wallet/jest.config.js +++ b/packages/wallet/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/scripts/create-package/package-template/jest.config.js b/scripts/create-package/package-template/jest.config.js index ca084133399..52fe484da39 100644 --- a/scripts/create-package/package-template/jest.config.js +++ b/scripts/create-package/package-template/jest.config.js @@ -8,7 +8,7 @@ const path = require('path'); const baseConfig = require('../../jest.config.packages'); -const displayName = path.basename(__dirname); +const displayName = path.basename(import.meta.dirname); module.exports = merge(baseConfig, { // The display name when running multiple projects diff --git a/scripts/create-package/utils.ts b/scripts/create-package/utils.ts index eea75955a54..e98e770fc5a 100644 --- a/scripts/create-package/utils.ts +++ b/scripts/create-package/utils.ts @@ -9,8 +9,8 @@ import { MonorepoFiles, Placeholders } from './constants'; import type { FileMap } from './fs-utils'; import { readAllFiles, writeFiles } from './fs-utils'; -const PACKAGE_TEMPLATE_DIR = path.join(__dirname, 'package-template'); -const REPO_ROOT = path.join(__dirname, '..', '..'); +const PACKAGE_TEMPLATE_DIR = path.join(import.meta.dirname, 'package-template'); +const REPO_ROOT = path.join(import.meta.dirname, '..', '..'); const REPO_TS_CONFIG = path.join(REPO_ROOT, MonorepoFiles.TsConfig); const REPO_TS_CONFIG_BUILD = path.join(REPO_ROOT, MonorepoFiles.TsConfigBuild); const REPO_PACKAGE_JSON = path.join(REPO_ROOT, MonorepoFiles.PackageJson); diff --git a/scripts/lint-teams-json.ts b/scripts/lint-teams-json.ts index 3a066ca5f2f..0611c3d7d92 100644 --- a/scripts/lint-teams-json.ts +++ b/scripts/lint-teams-json.ts @@ -29,7 +29,7 @@ async function main(): Promise { }); const teams = await readJsonFile>( - path.resolve(__dirname, '../teams.json'), + path.resolve(import.meta.dirname, '../teams.json'), ); const assignedPackageNames = Object.keys(teams); diff --git a/scripts/update-readme-content.ts b/scripts/update-readme-content.ts index 69f9945ab9d..13f1e109737 100755 --- a/scripts/update-readme-content.ts +++ b/scripts/update-readme-content.ts @@ -15,7 +15,7 @@ const DEPENDENCY_GRAPH_START_MARKER = ''; const DEPENDENCY_GRAPH_END_MARKER = ''; const PACKAGE_LIST_START_MARKER = ''; const PACKAGE_LIST_END_MARKER = ''; -const README_PATH = path.resolve(__dirname, '../README.md'); +const README_PATH = path.resolve(import.meta.dirname, '../README.md'); main().catch((error) => { console.error(error); From 05dd3f84b6a5f307456922f2a19af65e79c1c65f Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 15:08:45 +0200 Subject: [PATCH 006/115] Convert Jest configuration to ESM Switch the shared and all per-package Jest configs from CJS (`require`/`module.exports`) to ESM (`import`/`export default`). --- eslint.config.mjs | 2 +- jest.config.packages.js | 24 +++++++++++++++---- .../account-tree-controller/jest.config.js | 8 +++---- packages/accounts-controller/jest.config.js | 8 +++---- .../address-book-controller/jest.config.js | 8 +++---- packages/ai-controllers/jest.config.js | 8 +++---- packages/analytics-controller/jest.config.js | 8 +++---- .../jest.config.js | 8 +++---- .../announcement-controller/jest.config.js | 8 +++---- .../app-metadata-controller/jest.config.js | 8 +++---- packages/approval-controller/jest.config.js | 8 +++---- packages/assets-controller/jest.config.js | 8 +++---- packages/assets-controllers/jest.config.js | 8 +++---- .../authenticated-user-storage/jest.config.js | 8 +++---- packages/base-controller/jest.config.js | 8 +++---- packages/base-data-service/jest.config.js | 8 +++---- packages/bitcoin-regtest-up/jest.config.js | 8 +++---- packages/bridge-controller/jest.config.js | 8 +++---- .../bridge-status-controller/jest.config.js | 8 +++---- packages/build-utils/jest.config.js | 8 +++---- .../chain-agnostic-permission/jest.config.js | 8 +++---- packages/chomp-api-service/jest.config.js | 8 +++---- packages/claims-controller/jest.config.js | 8 +++---- packages/client-controller/jest.config.js | 8 +++---- packages/client-utils/jest.config.js | 8 +++---- packages/compliance-controller/jest.config.js | 8 +++---- packages/composable-controller/jest.config.js | 8 +++---- .../config-registry-controller/jest.config.js | 8 +++---- .../connectivity-controller/jest.config.js | 8 +++---- packages/controller-utils/jest.config.js | 8 +++---- packages/core-backend/jest.config.js | 8 +++---- packages/delegation-controller/jest.config.js | 8 +++---- packages/earn-controller/jest.config.js | 8 +++---- packages/eip-5792-middleware/jest.config.js | 8 +++---- .../jest.config.js | 8 +++---- .../jest.config.js | 8 +++---- packages/ens-controller/jest.config.js | 8 +++---- packages/eth-block-tracker/jest.config.js | 8 +++---- .../eth-json-rpc-middleware/jest.config.js | 8 +++---- packages/eth-json-rpc-provider/jest.config.js | 8 +++---- packages/foundryup/jest.config.js | 8 +++---- packages/gas-fee-controller/jest.config.js | 8 +++---- .../jest.config.js | 8 +++---- .../geolocation-controller/jest.config.js | 8 +++---- packages/java-tron-up/jest.config.js | 8 +++---- packages/json-rpc-engine/jest.config.js | 8 +++---- .../json-rpc-middleware-stream/jest.config.js | 8 +++---- packages/keyring-controller/jest.config.js | 8 +++---- packages/local-node-utils/jest.config.js | 8 +++---- packages/logging-controller/jest.config.js | 8 +++---- packages/message-manager/jest.config.js | 8 +++---- packages/messenger-cli/jest.config.js | 8 +++---- packages/messenger/jest.config.js | 8 +++---- .../jest.config.js | 8 +++---- .../jest.config.js | 8 +++---- .../money-account-controller/jest.config.js | 8 +++---- .../jest.config.js | 8 +++---- .../multichain-account-service/jest.config.js | 8 +++---- .../multichain-api-middleware/jest.config.js | 8 +++---- .../jest.config.js | 8 +++---- .../jest.config.js | 8 +++---- packages/name-controller/jest.config.js | 8 +++---- .../jest.config.js | 8 +++---- packages/network-controller/jest.config.js | 8 +++---- .../jest.config.js | 8 +++---- .../jest.config.js | 8 +++---- packages/passkey-controller/jest.config.js | 8 +++---- packages/permission-controller/jest.config.js | 8 +++---- .../permission-log-controller/jest.config.js | 8 +++---- packages/perps-controller/jest.config.js | 6 ++--- packages/phishing-controller/jest.config.js | 8 +++---- packages/platform-api-docs/jest.config.js | 8 +++---- packages/polling-controller/jest.config.js | 8 +++---- .../preferences-controller/jest.config.js | 8 +++---- .../profile-metrics-controller/jest.config.js | 8 +++---- .../profile-sync-controller/jest.config.js | 8 +++---- packages/ramps-controller/jest.config.js | 8 +++---- packages/rate-limit-controller/jest.config.js | 8 +++---- packages/react-data-query/jest.config.js | 8 +++---- .../jest.config.js | 8 +++---- packages/sample-controllers/jest.config.js | 8 +++---- .../jest.config.js | 8 +++---- .../jest.config.js | 8 +++---- packages/sentinel-api-service/jest.config.js | 8 +++---- packages/shield-controller/jest.config.js | 8 +++---- packages/signature-controller/jest.config.js | 8 +++---- .../jest.config.js | 8 +++---- packages/snap-account-service/jest.config.js | 8 +++---- packages/social-controllers/jest.config.js | 8 +++---- .../solana-test-validator-up/jest.config.js | 8 +++---- packages/stellar-quickstart-up/jest.config.js | 8 +++---- packages/storage-service/jest.config.js | 8 +++---- .../subscription-controller/jest.config.js | 8 +++---- .../transaction-controller/jest.config.js | 8 +++---- .../transaction-pay-controller/jest.config.js | 8 +++---- .../user-operation-controller/jest.config.js | 8 +++---- packages/wallet-cli/jest.config.js | 8 +++---- packages/wallet-framework-docs/jest.config.js | 8 +++---- packages/wallet/jest.config.js | 8 +++---- .../package-template/jest.config.js | 8 +++---- tests/setupAfterEnv/nock.ts | 11 +++++---- 101 files changed, 418 insertions(+), 401 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index d8a4ab79746..767171c9acb 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -126,7 +126,7 @@ const config = createConfig([ { files: ['**/*.{js,cjs}'], languageOptions: { - sourceType: 'script', + sourceType: 'module', ecmaVersion: 2020, }, }, diff --git a/jest.config.packages.js b/jest.config.packages.js index 07d249241ce..fbc9032aa56 100644 --- a/jest.config.packages.js +++ b/jest.config.packages.js @@ -3,7 +3,16 @@ * https://jestjs.io/docs/configuration */ -module.exports = { +import { fileURLToPath } from 'node:url'; +import { createDefaultEsmPreset } from 'ts-jest'; + +const presetConfig = createDefaultEsmPreset({ + tsconfig: '/tsconfig.json', +}); + +const config = { + ...presetConfig, + // All imported modules in your tests should be mocked automatically // automock: false, @@ -80,17 +89,20 @@ module.exports = { // Here we ensure that Jest resolves `@metamask/*` imports to the uncompiled source code for packages that live in this repo. // NOTE: This must be synchronized with the `paths` option in `tsconfig.base.json`. moduleNameMapper: { + '^(\\..+)\\.js$': '$1', '^@metamask/json-rpc-engine/v2$': [ '/../json-rpc-engine/src/v2/index.ts', ], - '^@metamask/utils/node$': require.resolve('@metamask/utils/node'), + '^@metamask/utils/node$': fileURLToPath( + import.meta.resolve('@metamask/utils/node'), + ), '^@metamask/(.+)$': [ '/../$1/src', // Some @metamask/* packages we are referencing aren't in this monorepo, // so in that case use their published versions '/../../node_modules/@metamask/$1', ], - '^uuid$': require.resolve('uuid'), + '^uuid$': fileURLToPath(import.meta.resolve('uuid')), }, // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader @@ -103,11 +115,11 @@ module.exports = { // notifyMode: "failure-change", // A preset that is used as a base for Jest's configuration - preset: 'ts-jest', + // preset: 'ts-jest', // The path to the Prettier executable used to format snapshots // Jest doesn't support Prettier 3 yet, so we use Prettier 2 - prettierPath: require.resolve('prettier-2'), + prettierPath: fileURLToPath(import.meta.resolve('prettier-2')), // Run tests from one or more projects // projects: undefined @@ -208,3 +220,5 @@ module.exports = { // Whether to use watchman for file crawling // watchman: true, }; + +export default config; diff --git a/packages/account-tree-controller/jest.config.js b/packages/account-tree-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/account-tree-controller/jest.config.js +++ b/packages/account-tree-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/accounts-controller/jest.config.js b/packages/accounts-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/accounts-controller/jest.config.js +++ b/packages/accounts-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/address-book-controller/jest.config.js b/packages/address-book-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/address-book-controller/jest.config.js +++ b/packages/address-book-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/ai-controllers/jest.config.js b/packages/ai-controllers/jest.config.js index 3e6cab4dd05..39fb20f6bb1 100644 --- a/packages/ai-controllers/jest.config.js +++ b/packages/ai-controllers/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/analytics-controller/jest.config.js b/packages/analytics-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/analytics-controller/jest.config.js +++ b/packages/analytics-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/analytics-data-regulation-controller/jest.config.js b/packages/analytics-data-regulation-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/analytics-data-regulation-controller/jest.config.js +++ b/packages/analytics-data-regulation-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/announcement-controller/jest.config.js b/packages/announcement-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/announcement-controller/jest.config.js +++ b/packages/announcement-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/app-metadata-controller/jest.config.js b/packages/app-metadata-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/app-metadata-controller/jest.config.js +++ b/packages/app-metadata-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/approval-controller/jest.config.js b/packages/approval-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/approval-controller/jest.config.js +++ b/packages/approval-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/assets-controller/jest.config.js b/packages/assets-controller/jest.config.js index cd5d81e25c7..cac4c4e687a 100644 --- a/packages/assets-controller/jest.config.js +++ b/packages/assets-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/assets-controllers/jest.config.js b/packages/assets-controllers/jest.config.js index da6e860251d..c3d205b2c53 100644 --- a/packages/assets-controllers/jest.config.js +++ b/packages/assets-controllers/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/authenticated-user-storage/jest.config.js b/packages/authenticated-user-storage/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/authenticated-user-storage/jest.config.js +++ b/packages/authenticated-user-storage/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/base-controller/jest.config.js b/packages/base-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/base-controller/jest.config.js +++ b/packages/base-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/base-data-service/jest.config.js b/packages/base-data-service/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/base-data-service/jest.config.js +++ b/packages/base-data-service/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/bitcoin-regtest-up/jest.config.js b/packages/bitcoin-regtest-up/jest.config.js index bd575b25e28..8f151c5e8b6 100644 --- a/packages/bitcoin-regtest-up/jest.config.js +++ b/packages/bitcoin-regtest-up/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/bridge-controller/jest.config.js b/packages/bridge-controller/jest.config.js index e182a513001..881aa3b0c2e 100644 --- a/packages/bridge-controller/jest.config.js +++ b/packages/bridge-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/bridge-status-controller/jest.config.js b/packages/bridge-status-controller/jest.config.js index 67266cdaa0e..3de417c7bfb 100644 --- a/packages/bridge-status-controller/jest.config.js +++ b/packages/bridge-status-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/build-utils/jest.config.js b/packages/build-utils/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/build-utils/jest.config.js +++ b/packages/build-utils/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/chain-agnostic-permission/jest.config.js b/packages/chain-agnostic-permission/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/chain-agnostic-permission/jest.config.js +++ b/packages/chain-agnostic-permission/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/chomp-api-service/jest.config.js b/packages/chomp-api-service/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/chomp-api-service/jest.config.js +++ b/packages/chomp-api-service/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/claims-controller/jest.config.js b/packages/claims-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/claims-controller/jest.config.js +++ b/packages/claims-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/client-controller/jest.config.js b/packages/client-controller/jest.config.js index 9d1196b8160..3fcf3b128cb 100644 --- a/packages/client-controller/jest.config.js +++ b/packages/client-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { displayName, coveragePathIgnorePatterns: [], coverageThreshold: { diff --git a/packages/client-utils/jest.config.js b/packages/client-utils/jest.config.js index 7873ea482cb..613be281c62 100644 --- a/packages/client-utils/jest.config.js +++ b/packages/client-utils/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/compliance-controller/jest.config.js b/packages/compliance-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/compliance-controller/jest.config.js +++ b/packages/compliance-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/composable-controller/jest.config.js b/packages/composable-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/composable-controller/jest.config.js +++ b/packages/composable-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/config-registry-controller/jest.config.js b/packages/config-registry-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/config-registry-controller/jest.config.js +++ b/packages/config-registry-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/connectivity-controller/jest.config.js b/packages/connectivity-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/connectivity-controller/jest.config.js +++ b/packages/connectivity-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/controller-utils/jest.config.js b/packages/controller-utils/jest.config.js index eac83868094..d28f5ee76a2 100644 --- a/packages/controller-utils/jest.config.js +++ b/packages/controller-utils/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/core-backend/jest.config.js b/packages/core-backend/jest.config.js index 8118bc7d056..0fd79da270d 100644 --- a/packages/core-backend/jest.config.js +++ b/packages/core-backend/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/delegation-controller/jest.config.js b/packages/delegation-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/delegation-controller/jest.config.js +++ b/packages/delegation-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/earn-controller/jest.config.js b/packages/earn-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/earn-controller/jest.config.js +++ b/packages/earn-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/eip-5792-middleware/jest.config.js b/packages/eip-5792-middleware/jest.config.js index 36655c9b266..8a6b1e06416 100644 --- a/packages/eip-5792-middleware/jest.config.js +++ b/packages/eip-5792-middleware/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/eip-7702-internal-rpc-middleware/jest.config.js b/packages/eip-7702-internal-rpc-middleware/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/eip-7702-internal-rpc-middleware/jest.config.js +++ b/packages/eip-7702-internal-rpc-middleware/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/eip1193-permission-middleware/jest.config.js b/packages/eip1193-permission-middleware/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/eip1193-permission-middleware/jest.config.js +++ b/packages/eip1193-permission-middleware/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/ens-controller/jest.config.js b/packages/ens-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/ens-controller/jest.config.js +++ b/packages/ens-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/eth-block-tracker/jest.config.js b/packages/eth-block-tracker/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/eth-block-tracker/jest.config.js +++ b/packages/eth-block-tracker/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/eth-json-rpc-middleware/jest.config.js b/packages/eth-json-rpc-middleware/jest.config.js index 38bdce227ce..41da4681c37 100644 --- a/packages/eth-json-rpc-middleware/jest.config.js +++ b/packages/eth-json-rpc-middleware/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/eth-json-rpc-provider/jest.config.js b/packages/eth-json-rpc-provider/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/eth-json-rpc-provider/jest.config.js +++ b/packages/eth-json-rpc-provider/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/foundryup/jest.config.js b/packages/foundryup/jest.config.js index 5ee81045da0..a8a60cec9ac 100644 --- a/packages/foundryup/jest.config.js +++ b/packages/foundryup/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/gas-fee-controller/jest.config.js b/packages/gas-fee-controller/jest.config.js index 9dcb32d6325..3cd993c4462 100644 --- a/packages/gas-fee-controller/jest.config.js +++ b/packages/gas-fee-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/gator-permissions-controller/jest.config.js b/packages/gator-permissions-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/gator-permissions-controller/jest.config.js +++ b/packages/gator-permissions-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/geolocation-controller/jest.config.js b/packages/geolocation-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/geolocation-controller/jest.config.js +++ b/packages/geolocation-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/java-tron-up/jest.config.js b/packages/java-tron-up/jest.config.js index dd101347e37..930b58aee5c 100644 --- a/packages/java-tron-up/jest.config.js +++ b/packages/java-tron-up/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/json-rpc-engine/jest.config.js b/packages/json-rpc-engine/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/json-rpc-engine/jest.config.js +++ b/packages/json-rpc-engine/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/json-rpc-middleware-stream/jest.config.js b/packages/json-rpc-middleware-stream/jest.config.js index a2ee7b406b2..a51cabfa761 100644 --- a/packages/json-rpc-middleware-stream/jest.config.js +++ b/packages/json-rpc-middleware-stream/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/keyring-controller/jest.config.js b/packages/keyring-controller/jest.config.js index ef4e25a8b54..12c2923914a 100644 --- a/packages/keyring-controller/jest.config.js +++ b/packages/keyring-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/local-node-utils/jest.config.js b/packages/local-node-utils/jest.config.js index b47e4121538..b1e9e60fd79 100644 --- a/packages/local-node-utils/jest.config.js +++ b/packages/local-node-utils/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/logging-controller/jest.config.js b/packages/logging-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/logging-controller/jest.config.js +++ b/packages/logging-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/message-manager/jest.config.js b/packages/message-manager/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/message-manager/jest.config.js +++ b/packages/message-manager/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/messenger-cli/jest.config.js b/packages/messenger-cli/jest.config.js index f4926fb9873..9731a6dd540 100644 --- a/packages/messenger-cli/jest.config.js +++ b/packages/messenger-cli/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/messenger/jest.config.js b/packages/messenger/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/messenger/jest.config.js +++ b/packages/messenger/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/money-account-api-data-service/jest.config.js b/packages/money-account-api-data-service/jest.config.js index 3c59dbe56c1..e062d82dd98 100644 --- a/packages/money-account-api-data-service/jest.config.js +++ b/packages/money-account-api-data-service/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { displayName, coverageThreshold: { diff --git a/packages/money-account-balance-service/jest.config.js b/packages/money-account-balance-service/jest.config.js index 3c59dbe56c1..e062d82dd98 100644 --- a/packages/money-account-balance-service/jest.config.js +++ b/packages/money-account-balance-service/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { displayName, coverageThreshold: { diff --git a/packages/money-account-controller/jest.config.js b/packages/money-account-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/money-account-controller/jest.config.js +++ b/packages/money-account-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/money-account-upgrade-controller/jest.config.js b/packages/money-account-upgrade-controller/jest.config.js index 69d5d9b4273..a111ce68439 100644 --- a/packages/money-account-upgrade-controller/jest.config.js +++ b/packages/money-account-upgrade-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { displayName, coverageThreshold: { global: { diff --git a/packages/multichain-account-service/jest.config.js b/packages/multichain-account-service/jest.config.js index 10ee5bfeb27..b218e56edef 100644 --- a/packages/multichain-account-service/jest.config.js +++ b/packages/multichain-account-service/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/multichain-api-middleware/jest.config.js b/packages/multichain-api-middleware/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/multichain-api-middleware/jest.config.js +++ b/packages/multichain-api-middleware/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/multichain-network-controller/jest.config.js b/packages/multichain-network-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/multichain-network-controller/jest.config.js +++ b/packages/multichain-network-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/multichain-transactions-controller/jest.config.js b/packages/multichain-transactions-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/multichain-transactions-controller/jest.config.js +++ b/packages/multichain-transactions-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/name-controller/jest.config.js b/packages/name-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/name-controller/jest.config.js +++ b/packages/name-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/network-connection-banner-controller/jest.config.js b/packages/network-connection-banner-controller/jest.config.js index 9e9e5413583..8ee4e1bde6e 100644 --- a/packages/network-connection-banner-controller/jest.config.js +++ b/packages/network-connection-banner-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/network-controller/jest.config.js b/packages/network-controller/jest.config.js index c2af8240db6..d88606f7828 100644 --- a/packages/network-controller/jest.config.js +++ b/packages/network-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/network-enablement-controller/jest.config.js b/packages/network-enablement-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/network-enablement-controller/jest.config.js +++ b/packages/network-enablement-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/notification-services-controller/jest.config.js b/packages/notification-services-controller/jest.config.js index 264c6cfa402..7036fa5bb41 100644 --- a/packages/notification-services-controller/jest.config.js +++ b/packages/notification-services-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/passkey-controller/jest.config.js b/packages/passkey-controller/jest.config.js index 47325836f4c..ee598d66a3e 100644 --- a/packages/passkey-controller/jest.config.js +++ b/packages/passkey-controller/jest.config.js @@ -1,11 +1,11 @@ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { displayName, coverageThreshold: { global: { branches: 100, functions: 100, lines: 100, statements: 100 }, diff --git a/packages/permission-controller/jest.config.js b/packages/permission-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/permission-controller/jest.config.js +++ b/packages/permission-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/permission-log-controller/jest.config.js b/packages/permission-log-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/permission-log-controller/jest.config.js +++ b/packages/permission-log-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/perps-controller/jest.config.js b/packages/perps-controller/jest.config.js index 35334a32ebb..6a9872c0c5a 100644 --- a/packages/perps-controller/jest.config.js +++ b/packages/perps-controller/jest.config.js @@ -3,10 +3,10 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); diff --git a/packages/phishing-controller/jest.config.js b/packages/phishing-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/phishing-controller/jest.config.js +++ b/packages/phishing-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/platform-api-docs/jest.config.js b/packages/platform-api-docs/jest.config.js index a3deb766c92..b452a5f4011 100644 --- a/packages/platform-api-docs/jest.config.js +++ b/packages/platform-api-docs/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/polling-controller/jest.config.js b/packages/polling-controller/jest.config.js index 3458eb4c32a..29c9ecb62b9 100644 --- a/packages/polling-controller/jest.config.js +++ b/packages/polling-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/preferences-controller/jest.config.js b/packages/preferences-controller/jest.config.js index a3ac4399eed..cd3b6cf9b18 100644 --- a/packages/preferences-controller/jest.config.js +++ b/packages/preferences-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/profile-metrics-controller/jest.config.js b/packages/profile-metrics-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/profile-metrics-controller/jest.config.js +++ b/packages/profile-metrics-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/profile-sync-controller/jest.config.js b/packages/profile-sync-controller/jest.config.js index 264c6cfa402..7036fa5bb41 100644 --- a/packages/profile-sync-controller/jest.config.js +++ b/packages/profile-sync-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/ramps-controller/jest.config.js b/packages/ramps-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/ramps-controller/jest.config.js +++ b/packages/ramps-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/rate-limit-controller/jest.config.js b/packages/rate-limit-controller/jest.config.js index 391e6d479cf..bbb74586034 100644 --- a/packages/rate-limit-controller/jest.config.js +++ b/packages/rate-limit-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/react-data-query/jest.config.js b/packages/react-data-query/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/react-data-query/jest.config.js +++ b/packages/react-data-query/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/remote-feature-flag-controller/jest.config.js b/packages/remote-feature-flag-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/remote-feature-flag-controller/jest.config.js +++ b/packages/remote-feature-flag-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/sample-controllers/jest.config.js b/packages/sample-controllers/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/sample-controllers/jest.config.js +++ b/packages/sample-controllers/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/seedless-onboarding-controller/jest.config.js b/packages/seedless-onboarding-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/seedless-onboarding-controller/jest.config.js +++ b/packages/seedless-onboarding-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/selected-network-controller/jest.config.js b/packages/selected-network-controller/jest.config.js index d8481af7e94..52a3957ee23 100644 --- a/packages/selected-network-controller/jest.config.js +++ b/packages/selected-network-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/sentinel-api-service/jest.config.js b/packages/sentinel-api-service/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/sentinel-api-service/jest.config.js +++ b/packages/sentinel-api-service/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/shield-controller/jest.config.js b/packages/shield-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/shield-controller/jest.config.js +++ b/packages/shield-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/signature-controller/jest.config.js b/packages/signature-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/signature-controller/jest.config.js +++ b/packages/signature-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/smart-transactions-controller/jest.config.js b/packages/smart-transactions-controller/jest.config.js index fc533b958fe..8697d417dcc 100644 --- a/packages/smart-transactions-controller/jest.config.js +++ b/packages/smart-transactions-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/snap-account-service/jest.config.js b/packages/snap-account-service/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/snap-account-service/jest.config.js +++ b/packages/snap-account-service/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/social-controllers/jest.config.js b/packages/social-controllers/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/social-controllers/jest.config.js +++ b/packages/social-controllers/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/solana-test-validator-up/jest.config.js b/packages/solana-test-validator-up/jest.config.js index 759bb8bb5a9..35ceea000ec 100644 --- a/packages/solana-test-validator-up/jest.config.js +++ b/packages/solana-test-validator-up/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/stellar-quickstart-up/jest.config.js b/packages/stellar-quickstart-up/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/stellar-quickstart-up/jest.config.js +++ b/packages/stellar-quickstart-up/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/storage-service/jest.config.js b/packages/storage-service/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/storage-service/jest.config.js +++ b/packages/storage-service/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/subscription-controller/jest.config.js b/packages/subscription-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/subscription-controller/jest.config.js +++ b/packages/subscription-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/transaction-controller/jest.config.js b/packages/transaction-controller/jest.config.js index 75c5fbf3b28..13de5744d35 100644 --- a/packages/transaction-controller/jest.config.js +++ b/packages/transaction-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/transaction-pay-controller/jest.config.js b/packages/transaction-pay-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/transaction-pay-controller/jest.config.js +++ b/packages/transaction-pay-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/user-operation-controller/jest.config.js b/packages/user-operation-controller/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/user-operation-controller/jest.config.js +++ b/packages/user-operation-controller/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/wallet-cli/jest.config.js b/packages/wallet-cli/jest.config.js index 205cf848e37..5ff4231948c 100644 --- a/packages/wallet-cli/jest.config.js +++ b/packages/wallet-cli/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/wallet-framework-docs/jest.config.js b/packages/wallet-framework-docs/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/wallet-framework-docs/jest.config.js +++ b/packages/wallet-framework-docs/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/packages/wallet/jest.config.js b/packages/wallet/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/packages/wallet/jest.config.js +++ b/packages/wallet/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/scripts/create-package/package-template/jest.config.js b/scripts/create-package/package-template/jest.config.js index 52fe484da39..6c85ca6e1fb 100644 --- a/scripts/create-package/package-template/jest.config.js +++ b/scripts/create-package/package-template/jest.config.js @@ -3,14 +3,14 @@ * https://jestjs.io/docs/configuration */ -const merge = require('deepmerge'); -const path = require('path'); +import merge from 'deepmerge'; +import path from 'path'; -const baseConfig = require('../../jest.config.packages'); +import baseConfig from '../../jest.config.packages.js'; const displayName = path.basename(import.meta.dirname); -module.exports = merge(baseConfig, { +export default merge(baseConfig, { // The display name when running multiple projects displayName, diff --git a/tests/setupAfterEnv/nock.ts b/tests/setupAfterEnv/nock.ts index 1e6d0377367..c70258b29c4 100644 --- a/tests/setupAfterEnv/nock.ts +++ b/tests/setupAfterEnv/nock.ts @@ -1,10 +1,13 @@ -import { disableNetConnect, cleanAll, enableNetConnect } from 'nock'; +// Types for `nock` are wrong. +/* eslint-disable import-x/no-named-as-default-member */ + +import nock from 'nock'; beforeEach(() => { - disableNetConnect(); + nock.disableNetConnect(); }); afterEach(() => { - cleanAll(); - enableNetConnect(); + nock.cleanAll(); + nock.enableNetConnect(); }); From 13aa2340259ffdcc142aad3ca562a31c1974d930 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 15:13:22 +0200 Subject: [PATCH 007/115] Add `ts-jest` to root devDependencies --- package.json | 1 + yarn.lock | 1 + 2 files changed, 2 insertions(+) diff --git a/package.json b/package.json index 129d18d9785..c5bfd24c5c2 100644 --- a/package.json +++ b/package.json @@ -99,6 +99,7 @@ "rimraf": "^5.0.5", "semver": "^7.6.3", "simple-git-hooks": "^2.8.0", + "ts-jest": "^29.2.5", "tsx": "^4.20.5", "typescript": "~5.3.3", "typescript-eslint": "^8.48.0", diff --git a/yarn.lock b/yarn.lock index 8894e8e694f..6fa4a8d1539 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6361,6 +6361,7 @@ __metadata: rimraf: "npm:^5.0.5" semver: "npm:^7.6.3" simple-git-hooks: "npm:^2.8.0" + ts-jest: "npm:^29.2.5" tsx: "npm:^4.20.5" typescript: "npm:~5.3.3" typescript-eslint: "npm:^8.48.0" From 2bc0c3738247f11c80394eaf991e6195dca64635 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 16:50:07 +0200 Subject: [PATCH 008/115] Work around TypeScript ESM named-import issue in messenger-cli Older versions of TypeScript break when using named imports in ESM. Import the default export and destructure instead as a temporary workaround. Also passes `--formatter oxfmt` to the `messenger-action-types` scripts in packages missing it. --- packages/authenticated-user-storage/package.json | 4 ++-- packages/messenger-cli/src/parse-source.ts | 10 ++++++++-- packages/money-account-upgrade-controller/package.json | 4 ++-- packages/snap-account-service/package.json | 4 ++-- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/authenticated-user-storage/package.json b/packages/authenticated-user-storage/package.json index cd996d1c5de..bba5147f91b 100644 --- a/packages/authenticated-user-storage/package.json +++ b/packages/authenticated-user-storage/package.json @@ -39,8 +39,8 @@ "changelog:validate": "../../scripts/validate-changelog.sh @metamask/authenticated-user-storage", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", "lint:tsconfigs:fix": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts --fix", - "messenger-action-types:check": "tsx ../../packages/messenger-cli/src/cli.ts --check", - "messenger-action-types:generate": "tsx ../../packages/messenger-cli/src/cli.ts --generate", + "messenger-action-types:check": "tsx ../../packages/messenger-cli/src/cli.ts --formatter oxfmt --check", + "messenger-action-types:generate": "tsx ../../packages/messenger-cli/src/cli.ts --formatter oxfmt --generate", "since-latest-release": "../../scripts/since-latest-release.sh", "test": "NODE_OPTIONS=--experimental-vm-modules jest --reporters=jest-silent-reporter", "test:clean": "NODE_OPTIONS=--experimental-vm-modules jest --clearCache", diff --git a/packages/messenger-cli/src/parse-source.ts b/packages/messenger-cli/src/parse-source.ts index 133ad6ce361..afda5b13c4a 100644 --- a/packages/messenger-cli/src/parse-source.ts +++ b/packages/messenger-cli/src/parse-source.ts @@ -10,7 +10,12 @@ import type { SourceFile, Type, } from 'typescript'; -import { +import typescript from 'typescript'; + +// Older versions of TypeScript break when importing directly in ESM. This is a +// temporary workaround +/* eslint-disable import-x/no-named-as-default-member */ +const { ScriptTarget, createProgram, createSourceFile, @@ -28,7 +33,8 @@ import { parseJsonConfigFileContent, readConfigFile, sys, -} from 'typescript'; +} = typescript; +/* eslint-enable import-x/no-named-as-default-member */ export type MethodInfo = { name: string; diff --git a/packages/money-account-upgrade-controller/package.json b/packages/money-account-upgrade-controller/package.json index b944798c34c..52707d461d0 100644 --- a/packages/money-account-upgrade-controller/package.json +++ b/packages/money-account-upgrade-controller/package.json @@ -39,8 +39,8 @@ "changelog:validate": "../../scripts/validate-changelog.sh @metamask/money-account-upgrade-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", "lint:tsconfigs:fix": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts --fix", - "messenger-action-types:check": "tsx ../../packages/messenger-cli/src/cli.ts --check", - "messenger-action-types:generate": "tsx ../../packages/messenger-cli/src/cli.ts --generate", + "messenger-action-types:check": "tsx ../../packages/messenger-cli/src/cli.ts --formatter oxfmt --check", + "messenger-action-types:generate": "tsx ../../packages/messenger-cli/src/cli.ts --formatter oxfmt --generate", "since-latest-release": "../../scripts/since-latest-release.sh", "test": "NODE_OPTIONS=--experimental-vm-modules jest --reporters=jest-silent-reporter", "test:clean": "NODE_OPTIONS=--experimental-vm-modules jest --clearCache", diff --git a/packages/snap-account-service/package.json b/packages/snap-account-service/package.json index 7d650210efe..52d5cdaadf9 100644 --- a/packages/snap-account-service/package.json +++ b/packages/snap-account-service/package.json @@ -39,8 +39,8 @@ "changelog:validate": "../../scripts/validate-changelog.sh @metamask/snap-account-service", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", "lint:tsconfigs:fix": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts --fix", - "messenger-action-types:check": "tsx ../../packages/messenger-cli/src/cli.ts --check", - "messenger-action-types:generate": "tsx ../../packages/messenger-cli/src/cli.ts --generate", + "messenger-action-types:check": "tsx ../../packages/messenger-cli/src/cli.ts --formatter oxfmt --check", + "messenger-action-types:generate": "tsx ../../packages/messenger-cli/src/cli.ts --formatter oxfmt --generate", "since-latest-release": "../../scripts/since-latest-release.sh", "test": "NODE_OPTIONS=--experimental-vm-modules jest --reporters=jest-silent-reporter", "test:clean": "NODE_OPTIONS=--experimental-vm-modules jest --clearCache", From a774a3226eff663c0e33dcfbff046ca37506c901 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 19:13:59 +0200 Subject: [PATCH 009/115] Fix remaining `__dirname` Replace leftover `__dirname` with `import.meta.dirname`. --- packages/messenger-cli/src/cli.test.ts | 2 +- packages/platform-api-docs/src/cli.test.ts | 2 +- packages/platform-api-docs/src/cli.ts | 6 +++--- packages/wallet-cli/tests/lifecycle.e2e.test.ts | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/messenger-cli/src/cli.test.ts b/packages/messenger-cli/src/cli.test.ts index dc5216dbfa4..4b189086d1d 100644 --- a/packages/messenger-cli/src/cli.test.ts +++ b/packages/messenger-cli/src/cli.test.ts @@ -3,7 +3,7 @@ import execa from 'execa'; import * as fs from 'node:fs'; import * as path from 'node:path'; -const ROOT_DIR = path.resolve(__dirname, '..', '..', '..'); +const ROOT_DIR = path.resolve(import.meta.dirname, '..', '..', '..'); const TSX_PATH = path.join(ROOT_DIR, 'node_modules', '.bin', 'tsx'); const CLI_PATH = path.join( ROOT_DIR, diff --git a/packages/platform-api-docs/src/cli.test.ts b/packages/platform-api-docs/src/cli.test.ts index bc084e33afe..4d45bd4d5d1 100644 --- a/packages/platform-api-docs/src/cli.test.ts +++ b/packages/platform-api-docs/src/cli.test.ts @@ -3,7 +3,7 @@ import execa from 'execa'; import * as fs from 'node:fs'; import * as path from 'node:path'; -const ROOT_DIR = path.resolve(__dirname, '..', '..', '..'); +const ROOT_DIR = path.resolve(import.meta.dirname, '..', '..', '..'); const TSX_PATH = path.join(ROOT_DIR, 'node_modules', '.bin', 'tsx'); const CLI_PATH = path.join( ROOT_DIR, diff --git a/packages/platform-api-docs/src/cli.ts b/packages/platform-api-docs/src/cli.ts index fdc4f9bb37d..cbf609b8e52 100644 --- a/packages/platform-api-docs/src/cli.ts +++ b/packages/platform-api-docs/src/cli.ts @@ -6,7 +6,7 @@ import * as path from 'node:path'; import npmWhich from 'npm-which'; import yargs from 'yargs'; -import { generate, resolveRepoUrl } from './generate'; +import { generate, resolveRepoUrl } from './generate.js'; /** * Locate the Docusaurus binary in this package's `node_modules/.bin`. Using @@ -16,7 +16,7 @@ import { generate, resolveRepoUrl } from './generate'; * @returns Absolute path to the `docusaurus` executable. */ function resolveDocusaurus(): string { - return npmWhich(__dirname).sync('docusaurus'); + return npmWhich(import.meta.dirname).sync('docusaurus'); } /** @@ -51,7 +51,7 @@ async function runDocusaurus( * @param outDir - The output directory to set up. */ async function setupSite(outDir: string): Promise { - const packageDir = path.resolve(__dirname, '..'); + const packageDir = path.resolve(import.meta.dirname, '..'); const siteDir = path.join(packageDir, 'site'); const packageNodeModules = path.join(packageDir, 'node_modules'); const skip = new Set(['node_modules', 'docs', 'tsconfig.json']); diff --git a/packages/wallet-cli/tests/lifecycle.e2e.test.ts b/packages/wallet-cli/tests/lifecycle.e2e.test.ts index 14fea688fed..940a43565c4 100644 --- a/packages/wallet-cli/tests/lifecycle.e2e.test.ts +++ b/packages/wallet-cli/tests/lifecycle.e2e.test.ts @@ -3,8 +3,8 @@ import { mkdtemp, readFile, rm, stat } from 'node:fs/promises'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; -import { getDaemonPaths } from '../src/daemon/paths'; -import { isProcessAlive, readPidFile } from '../src/daemon/utils'; +import { getDaemonPaths } from '../src/daemon/paths.js'; +import { isProcessAlive, readPidFile } from '../src/daemon/utils.js'; // Subprocess-level lifecycle test for the `mm daemon` command suite. Unlike the // in-process suites (`socket-integration.test.ts` exercises the transport in @@ -30,7 +30,7 @@ const TEST_INFURA_PROJECT_ID = '00000000000000000000000000000000'; const ADDRESS_REGEX = /^0x[0-9a-fA-F]{40}$/u; -const BIN_PATH = join(__dirname, '..', 'bin', 'run.mjs'); +const BIN_PATH = join(import.meta.dirname, '..', 'bin', 'run.mjs'); // Each step (spawn the CLI, construct a real Wallet, run PBKDF2 key derivation // for the first-run SRP import) is slow; give the whole lifecycle room. From 0bdef056526df9f80b2816b83d0490dd1be662f6 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 19:55:14 +0200 Subject: [PATCH 010/115] Remove erroneous `uuid` entry from Jest `moduleNameMapper` The mapping sent all `uuid` imports to the ESM wrapper (`wrapper.mjs`), which broke CJS `require('uuid')` calls made by external packages loaded via Jest's CJS runtime. With `customExportConditions: ['node']` already set, Jest resolves the correct `require`/`import` export for uuid automatically without a manual mapping. --- jest.config.packages.js | 1 - 1 file changed, 1 deletion(-) diff --git a/jest.config.packages.js b/jest.config.packages.js index fbc9032aa56..44cfedf92c0 100644 --- a/jest.config.packages.js +++ b/jest.config.packages.js @@ -102,7 +102,6 @@ const config = { // so in that case use their published versions '/../../node_modules/@metamask/$1', ], - '^uuid$': fileURLToPath(import.meta.resolve('uuid')), }, // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader From db9f64f146c7a8d54a5a0fbb594389c10d16ad2a Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 19:59:16 +0200 Subject: [PATCH 011/115] Fix ESLint errors for `build-utils` Add `.js` extensions to relative imports. --- packages/build-utils/src/index.ts | 6 +++--- .../build-utils/src/transforms/remove-fenced-code.test.ts | 6 +++--- packages/build-utils/src/transforms/utils.test.ts | 4 +++- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/build-utils/src/index.ts b/packages/build-utils/src/index.ts index 0e5dc2315ed..294d4375e69 100644 --- a/packages/build-utils/src/index.ts +++ b/packages/build-utils/src/index.ts @@ -1,3 +1,3 @@ -export type { FeatureLabels } from './transforms/remove-fenced-code'; -export { removeFencedCode } from './transforms/remove-fenced-code'; -export { lintTransformedFile } from './transforms/utils'; +export type { FeatureLabels } from './transforms/remove-fenced-code.js'; +export { removeFencedCode } from './transforms/remove-fenced-code.js'; +export { lintTransformedFile } from './transforms/utils.js'; diff --git a/packages/build-utils/src/transforms/remove-fenced-code.test.ts b/packages/build-utils/src/transforms/remove-fenced-code.test.ts index 749c7b2f3a2..b370df74a1b 100644 --- a/packages/build-utils/src/transforms/remove-fenced-code.test.ts +++ b/packages/build-utils/src/transforms/remove-fenced-code.test.ts @@ -1,10 +1,10 @@ -import { removeFencedCode } from '..'; -import type { FeatureLabels } from '..'; +import { removeFencedCode } from '../index.js'; +import type { FeatureLabels } from '../index.js'; import { DirectiveCommand, multiSplice, validateCommand, -} from './remove-fenced-code'; +} from './remove-fenced-code.js'; const FEATURE_A = 'feature-a'; const FEATURE_B = 'feature-b'; diff --git a/packages/build-utils/src/transforms/utils.test.ts b/packages/build-utils/src/transforms/utils.test.ts index 8921017c8cc..dbd778de855 100644 --- a/packages/build-utils/src/transforms/utils.test.ts +++ b/packages/build-utils/src/transforms/utils.test.ts @@ -1,4 +1,6 @@ -import { lintTransformedFile } from '..'; +import { jest } from '@jest/globals'; + +import { lintTransformedFile } from '../index.js'; describe('transform utils', () => { describe('lintTransformedFile', () => { From 657bf946d2135fd0dc4c754a5dca6c18150b30bd Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 19:59:22 +0200 Subject: [PATCH 012/115] Fix ESLint errors for `controller-utils` Add `.js` extensions to relative imports. Replace `lodash` with `lodash-es` for ESM-compatible named exports. --- packages/controller-utils/package.json | 4 +- packages/controller-utils/src/abi.test.ts | 2 +- packages/controller-utils/src/constants.ts | 2 +- .../src/create-service-policy.test.ts | 3 +- packages/controller-utils/src/index.test.ts | 100 +++++++++--------- packages/controller-utils/src/index.ts | 16 +-- packages/controller-utils/src/siwe.test.ts | 2 +- packages/controller-utils/src/siwe.ts | 2 +- packages/controller-utils/src/types.test.ts | 2 +- packages/controller-utils/src/util.test.ts | 6 +- packages/controller-utils/src/util.ts | 4 +- yarn.lock | 20 +++- 12 files changed, 90 insertions(+), 73 deletions(-) diff --git a/packages/controller-utils/package.json b/packages/controller-utils/package.json index 59fa751189c..1effb31edb8 100644 --- a/packages/controller-utils/package.json +++ b/packages/controller-utils/package.json @@ -57,13 +57,13 @@ "cockatiel": "^3.1.2", "eth-ens-namehash": "^2.0.8", "fast-deep-equal": "^3.1.3", - "lodash": "^4.17.21" + "lodash-es": "^4.17.21" }, "devDependencies": { "@babel/runtime": "^7.23.9", "@metamask/auto-changelog": "^6.1.0", "@types/jest": "^29.5.14", - "@types/lodash": "^4.14.191", + "@types/lodash-es": "^4.17.12", "deepmerge": "^4.2.2", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", diff --git a/packages/controller-utils/src/abi.test.ts b/packages/controller-utils/src/abi.test.ts index f06b8f316dd..deaea972621 100644 --- a/packages/controller-utils/src/abi.test.ts +++ b/packages/controller-utils/src/abi.test.ts @@ -1,6 +1,6 @@ import { Interface } from '@ethersproject/abi'; -import { encodeFunctionData } from './abi'; +import { encodeFunctionData } from './abi.js'; const ERC20_ABI = [ { diff --git a/packages/controller-utils/src/constants.ts b/packages/controller-utils/src/constants.ts index 99f23aa72d8..85967701bf4 100644 --- a/packages/controller-utils/src/constants.ts +++ b/packages/controller-utils/src/constants.ts @@ -4,7 +4,7 @@ import { ChainId, BuiltInNetworkName, BlockExplorerUrl, -} from './types'; +} from './types.js'; export const RPC = 'rpc'; export const FALL_BACK_VS_CURRENCY = 'ETH'; diff --git a/packages/controller-utils/src/create-service-policy.test.ts b/packages/controller-utils/src/create-service-policy.test.ts index 784e61795e5..3867b6e49ba 100644 --- a/packages/controller-utils/src/create-service-policy.test.ts +++ b/packages/controller-utils/src/create-service-policy.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { CircuitState, ConstantBackoff, handleWhen } from 'cockatiel'; import { @@ -7,7 +8,7 @@ import { DEFAULT_MAX_CONSECUTIVE_FAILURES, DEFAULT_MAX_RETRIES, ServicePolicy, -} from './create-service-policy'; +} from './create-service-policy.js'; describe('createServicePolicy', () => { beforeEach(() => { diff --git a/packages/controller-utils/src/index.test.ts b/packages/controller-utils/src/index.test.ts index 91092cdd388..a50a33b6d5f 100644 --- a/packages/controller-utils/src/index.test.ts +++ b/packages/controller-utils/src/index.test.ts @@ -1,77 +1,92 @@ -import * as allExports from '.'; +import * as allExports from './index.js'; describe('@metamask/controller-utils', () => { it('has expected JavaScript exports', () => { expect(Object.keys(allExports)).toMatchInlineSnapshot(` [ - "encodeFunctionData", + "ASSET_TYPES", + "ApprovalType", + "BNToHex", + "BUILT_IN_CUSTOM_NETWORKS_RPC", + "BUILT_IN_NETWORKS", + "BlockExplorerUrl", "BrokenCircuitError", + "BuiltInNetworkName", + "CHAIN_IDS_WITH_NO_NATIVE_TOKEN", + "CHAIN_ID_TO_ETHERS_NETWORK_NAME_MAP", + "ChainId", "CircuitState", "CockatielEventEmitter", "ConstantBackoff", + "CustomNetworkType", + "DAY", + "DAYS", "DEFAULT_CIRCUIT_BREAK_DURATION", "DEFAULT_DEGRADED_THRESHOLD", + "DEFAULT_INFURA_NETWORKS", "DEFAULT_MAX_CONSECUTIVE_FAILURES", "DEFAULT_MAX_RETRIES", - "ExponentialBackoff", - "createServicePolicy", - "handleAll", - "handleWhen", - "RPC", - "FALL_BACK_VS_CURRENCY", - "IPFS_DEFAULT_GATEWAY_URL", - "GANACHE_CHAIN_ID", - "MAX_SAFE_CHAIN_ID", - "ERC721", "ERC1155", - "ERC20", - "ERC721_INTERFACE_ID", - "ERC721_METADATA_INTERFACE_ID", - "ERC721_ENUMERABLE_INTERFACE_ID", "ERC1155_INTERFACE_ID", "ERC1155_METADATA_URI_INTERFACE_ID", "ERC1155_TOKEN_RECEIVER_INTERFACE_ID", + "ERC20", + "ERC721", + "ERC721_ENUMERABLE_INTERFACE_ID", + "ERC721_INTERFACE_ID", + "ERC721_METADATA_INTERFACE_ID", + "ExponentialBackoff", + "FALL_BACK_VS_CURRENCY", + "GANACHE_CHAIN_ID", "GWEI", - "ASSET_TYPES", - "TESTNET_TICKER_SYMBOLS", - "BUILT_IN_CUSTOM_NETWORKS_RPC", - "BUILT_IN_NETWORKS", - "OPENSEA_PROXY_URL", + "HOUR", + "HOURS", + "HttpError", + "IPFS_DEFAULT_GATEWAY_URL", + "InfuraNetworkType", + "MAX_SAFE_CHAIN_ID", + "MINUTE", + "MINUTES", + "NETWORKS_BYPASSING_VALIDATION", "NFT_API_BASE_URL", - "NFT_API_VERSION", "NFT_API_TIMEOUT", + "NFT_API_VERSION", + "NetworkNickname", + "NetworkType", + "NetworksTicker", + "OPENSEA_PROXY_URL", "ORIGIN_METAMASK", - "ApprovalType", - "CHAIN_ID_TO_ETHERS_NETWORK_NAME_MAP", + "RPC", "SECOND", "SECONDS", - "MINUTE", - "MINUTES", - "HOUR", - "HOURS", - "DAY", - "DAYS", - "NETWORKS_BYPASSING_VALIDATION", - "CHAIN_IDS_WITH_NO_NATIVE_TOKEN", - "BNToHex", + "TESTNET_TICKER_SYMBOLS", "convertHexToDecimal", + "createServicePolicy", + "detectSIWE", + "encodeFunctionData", "fetchWithErrorHandling", "fractionBN", "fromHex", "getBuyURL", "gweiDecToWEIBN", + "handleAll", "handleFetch", + "handleWhen", "hexToBN", "hexToText", - "HttpError", + "isEqualCaseInsensitive", + "isInfuraNetworkType", + "isNetworkType", "isNonEmptyArray", "isPlainObject", "isSafeChainId", "isSafeDynamicKey", "isSmartContractCode", - "isValidJson", "isValidHexAddress", + "isValidJson", + "isValidSIWEOrigin", "normalizeEnsName", + "parseDomainParts", "query", "safelyExecute", "safelyExecuteWithTimeout", @@ -80,21 +95,6 @@ describe('@metamask/controller-utils', () => { "toChecksumHexAddress", "toHex", "weiHexToGweiDec", - "isEqualCaseInsensitive", - "InfuraNetworkType", - "DEFAULT_INFURA_NETWORKS", - "CustomNetworkType", - "NetworkType", - "isNetworkType", - "isInfuraNetworkType", - "BuiltInNetworkName", - "ChainId", - "NetworksTicker", - "BlockExplorerUrl", - "NetworkNickname", - "parseDomainParts", - "isValidSIWEOrigin", - "detectSIWE", ] `); }); diff --git a/packages/controller-utils/src/index.ts b/packages/controller-utils/src/index.ts index 9a5a22a608b..bd0061e5415 100644 --- a/packages/controller-utils/src/index.ts +++ b/packages/controller-utils/src/index.ts @@ -1,4 +1,4 @@ -export { encodeFunctionData } from './abi'; +export { encodeFunctionData } from './abi.js'; export { BrokenCircuitError, CircuitState, @@ -12,13 +12,13 @@ export { createServicePolicy, handleAll, handleWhen, -} from './create-service-policy'; +} from './create-service-policy.js'; export type { CockatielEvent, CreateServicePolicyOptions, CockatielFailureReason, ServicePolicy, -} from './create-service-policy'; +} from './create-service-policy.js'; export { RPC, FALL_BACK_VS_CURRENCY, @@ -56,8 +56,8 @@ export { DAYS, NETWORKS_BYPASSING_VALIDATION, CHAIN_IDS_WITH_NO_NATIVE_TOKEN, -} from './constants'; -export type { NonEmptyArray } from './util'; +} from './constants.js'; +export type { NonEmptyArray } from './util.js'; export { BNToHex, convertHexToDecimal, @@ -87,6 +87,6 @@ export { toHex, weiHexToGweiDec, isEqualCaseInsensitive, -} from './util'; -export * from './types'; -export * from './siwe'; +} from './util.js'; +export * from './types.js'; +export * from './siwe.js'; diff --git a/packages/controller-utils/src/siwe.test.ts b/packages/controller-utils/src/siwe.test.ts index c792ac3499f..466fdd3844a 100644 --- a/packages/controller-utils/src/siwe.test.ts +++ b/packages/controller-utils/src/siwe.test.ts @@ -1,6 +1,6 @@ import { ParsedMessage } from '@spruceid/siwe-parser'; -import { detectSIWE, isValidSIWEOrigin } from './siwe'; +import { detectSIWE, isValidSIWEOrigin } from './siwe.js'; const siweMessage = 'example.com wants you to sign in with your Ethereum account:\n0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\n\n\nURI: https://example.com/login\nVersion: 1\nChain ID: 1\nNonce: 32891756\nIssued At: 2021-09-30T16:25:24Z'; diff --git a/packages/controller-utils/src/siwe.ts b/packages/controller-utils/src/siwe.ts index f82574a38de..aee9b1bee62 100644 --- a/packages/controller-utils/src/siwe.ts +++ b/packages/controller-utils/src/siwe.ts @@ -1,7 +1,7 @@ import { remove0x } from '@metamask/utils'; import { ParsedMessage } from '@spruceid/siwe-parser'; -import { projectLogger, createModuleLogger } from './logger'; +import { projectLogger, createModuleLogger } from './logger.js'; const log = createModuleLogger(projectLogger, 'detect-siwe'); diff --git a/packages/controller-utils/src/types.test.ts b/packages/controller-utils/src/types.test.ts index f42e7e2fb19..d024e1dbdf0 100644 --- a/packages/controller-utils/src/types.test.ts +++ b/packages/controller-utils/src/types.test.ts @@ -1,4 +1,4 @@ -import { isNetworkType, NetworkType } from './types'; +import { isNetworkType, NetworkType } from './types.js'; describe('types', () => { it('isNetworkType', () => { diff --git a/packages/controller-utils/src/util.test.ts b/packages/controller-utils/src/util.test.ts index ae8c002b39d..e3346ea473f 100644 --- a/packages/controller-utils/src/util.test.ts +++ b/packages/controller-utils/src/util.test.ts @@ -4,9 +4,9 @@ import { BigNumber } from 'bignumber.js'; import BN from 'bn.js'; import nock from 'nock'; -import { FakeProvider } from '../../../tests/fake-provider'; -import { MAX_SAFE_CHAIN_ID } from './constants'; -import * as util from './util'; +import { FakeProvider } from '../../../tests/fake-provider.js'; +import { MAX_SAFE_CHAIN_ID } from './constants.js'; +import * as util from './util.js'; type EverythingButNull = | string diff --git a/packages/controller-utils/src/util.ts b/packages/controller-utils/src/util.ts index d8ce910c3d0..e2e4e5cac3d 100644 --- a/packages/controller-utils/src/util.ts +++ b/packages/controller-utils/src/util.ts @@ -13,9 +13,9 @@ import type { BigNumber } from 'bignumber.js'; import BN from 'bn.js'; import ensNamehash from 'eth-ens-namehash'; import deepEqual from 'fast-deep-equal'; -import { memoize } from 'lodash'; +import { memoize } from 'lodash-es'; -import { MAX_SAFE_CHAIN_ID } from './constants'; +import { MAX_SAFE_CHAIN_ID } from './constants.js'; export type { BigNumber }; diff --git a/yarn.lock b/yarn.lock index 6fa4a8d1539..02edd5d1835 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6266,7 +6266,7 @@ __metadata: "@spruceid/siwe-parser": "npm:2.1.0" "@types/bn.js": "npm:^5.1.5" "@types/jest": "npm:^29.5.14" - "@types/lodash": "npm:^4.14.191" + "@types/lodash-es": "npm:^4.17.12" bignumber.js: "npm:^9.1.2" bn.js: "npm:^5.2.1" cockatiel: "npm:^3.1.2" @@ -6275,7 +6275,7 @@ __metadata: fast-deep-equal: "npm:^3.1.3" jest: "npm:^29.7.0" jest-environment-jsdom: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" nock: "npm:^13.3.1" ts-jest: "npm:^29.2.5" tsx: "npm:^4.20.5" @@ -11278,6 +11278,22 @@ __metadata: languageName: node linkType: hard +"@types/lodash-es@npm:^4.17.12": + version: 4.17.12 + resolution: "@types/lodash-es@npm:4.17.12" + dependencies: + "@types/lodash": "npm:*" + checksum: 10/56b9a433348b11c31051c6fa9028540a033a08fb80b400c589d740446c19444d73b217cf1471d4036448ef686a83e8cf2a35d1fadcb3f2105f26701f94aebb07 + languageName: node + linkType: hard + +"@types/lodash@npm:*": + version: 4.17.24 + resolution: "@types/lodash@npm:4.17.24" + checksum: 10/0f2082565f60f9787eefc046edc38458054512be5a8b3584ef0bad5fd9e85d0ab55ec5a1fbfae1ed6ba015cf1f9e837d5fb4da1f99fc60b8f74b2a46146fb00f + languageName: node + linkType: hard + "@types/lodash@npm:^4.14.191, @types/lodash@npm:^4.17.20": version: 4.17.20 resolution: "@types/lodash@npm:4.17.20" From 8d2e69c6ff61ac7c31c37ac2a740c5e165fa377a Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 19:59:29 +0200 Subject: [PATCH 013/115] Fix ESLint errors for `messenger` Add `.js` extensions to relative imports. --- packages/messenger/src/Messenger.test.ts | 7 ++++--- packages/messenger/src/index.test.ts | 2 +- packages/messenger/src/index.ts | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/messenger/src/Messenger.test.ts b/packages/messenger/src/Messenger.test.ts index e197495cd2e..c0a109ca396 100644 --- a/packages/messenger/src/Messenger.test.ts +++ b/packages/messenger/src/Messenger.test.ts @@ -1,8 +1,9 @@ +import { jest } from '@jest/globals'; import type { Patch } from 'immer'; -import { Messenger, MOCK_ANY_NAMESPACE } from './Messenger'; -import type { ActionConstraint } from './Messenger'; -import type { MockAnyNamespace } from './Messenger'; +import { Messenger, MOCK_ANY_NAMESPACE } from './Messenger.js'; +import type { ActionConstraint } from './Messenger.js'; +import type { MockAnyNamespace } from './Messenger.js'; describe('Messenger', () => { describe('registerActionHandler and call', () => { diff --git a/packages/messenger/src/index.test.ts b/packages/messenger/src/index.test.ts index 159ada030d1..266a5bec561 100644 --- a/packages/messenger/src/index.test.ts +++ b/packages/messenger/src/index.test.ts @@ -1,4 +1,4 @@ -import * as allExports from '.'; +import * as allExports from './index.js'; describe('@metamask/messenger', () => { it('has expected JavaScript exports', () => { diff --git a/packages/messenger/src/index.ts b/packages/messenger/src/index.ts index 6fb7aaefeda..345e6615af6 100644 --- a/packages/messenger/src/index.ts +++ b/packages/messenger/src/index.ts @@ -14,5 +14,5 @@ export type { NamespacedBy, NotNamespacedBy, NamespacedName, -} from './Messenger'; -export { MOCK_ANY_NAMESPACE, Messenger } from './Messenger'; +} from './Messenger.js'; +export { MOCK_ANY_NAMESPACE, Messenger } from './Messenger.js'; From 766f78cf86668c87cce075319ad18155cd3fce3d Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 19:59:35 +0200 Subject: [PATCH 014/115] Fix ESLint errors for `base-controller` Add `.js` extensions to relative imports. --- packages/base-controller/src/BaseController.test.ts | 5 +++-- packages/base-controller/src/index.ts | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/base-controller/src/BaseController.test.ts b/packages/base-controller/src/BaseController.test.ts index b268b451763..6277bc59ea3 100644 --- a/packages/base-controller/src/BaseController.test.ts +++ b/packages/base-controller/src/BaseController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable jest/no-export */ import type { MockAnyNamespace } from '@metamask/messenger'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; @@ -11,8 +12,8 @@ import type { ControllerStateChangeEvent, ControllerStateChangedEvent, StatePropertyMetadata, -} from './BaseController'; -import { BaseController, deriveStateFromMetadata } from './BaseController'; +} from './BaseController.js'; +import { BaseController, deriveStateFromMetadata } from './BaseController.js'; export const countControllerName = 'CountController'; diff --git a/packages/base-controller/src/index.ts b/packages/base-controller/src/index.ts index 796998c8b79..0a615b60e1e 100644 --- a/packages/base-controller/src/index.ts +++ b/packages/base-controller/src/index.ts @@ -11,5 +11,5 @@ export type { ControllerGetStateAction, ControllerStateChangeEvent, ControllerStateChangedEvent, -} from './BaseController'; -export { BaseController, deriveStateFromMetadata } from './BaseController'; +} from './BaseController.js'; +export { BaseController, deriveStateFromMetadata } from './BaseController.js'; From 9b8ef1155a2f9c807a4e6f21c1e758aeab92fa1a Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 19:59:35 +0200 Subject: [PATCH 015/115] Fix ESLint errors for `json-rpc-engine` Add `.js` extensions to relative imports. Suppress pre-existing `no-misused-promises` errors where async middleware callbacks are passed to void-typed parameters. --- packages/json-rpc-engine/package.json | 3 +- .../json-rpc-engine/src/JsonRpcEngine.test.ts | 5 ++- packages/json-rpc-engine/src/JsonRpcEngine.ts | 2 +- .../json-rpc-engine/src/asMiddleware.test.ts | 38 +++++++++---------- .../src/asV2Middleware.test.ts | 13 ++++--- .../json-rpc-engine/src/asV2Middleware.ts | 12 +++--- .../src/createAsyncMiddleware.test.ts | 3 +- .../src/createAsyncMiddleware.ts | 2 +- .../src/createMethodMiddleware.test.ts | 5 ++- .../src/createMethodMiddleware.ts | 4 +- .../src/createOriginMiddleware.test.ts | 6 +-- .../src/createOriginMiddleware.ts | 2 +- .../src/createScaffoldMiddleware.test.ts | 4 +- .../src/createScaffoldMiddleware.ts | 2 +- .../src/idRemapMiddleware.test.ts | 2 +- .../json-rpc-engine/src/idRemapMiddleware.ts | 4 +- packages/json-rpc-engine/src/index.test.ts | 6 +-- packages/json-rpc-engine/src/index.ts | 24 ++++++------ .../src/mergeMiddleware.test.ts | 22 +++++------ .../json-rpc-engine/src/mergeMiddleware.ts | 4 +- .../src/v2/JsonRpcEngineV2.test.ts | 19 ++++++---- .../json-rpc-engine/src/v2/JsonRpcEngineV2.ts | 14 +++---- .../src/v2/JsonRpcServer.test.ts | 13 ++++--- .../json-rpc-engine/src/v2/JsonRpcServer.ts | 8 ++-- .../src/v2/MiddlewareContext.test.ts | 2 +- .../src/v2/MiddlewareContext.ts | 4 +- .../src/v2/asLegacyMiddleware.test.ts | 11 +++--- .../src/v2/asLegacyMiddleware.ts | 10 ++--- .../src/v2/compatibility-utils.test.ts | 7 ++-- .../src/v2/compatibility-utils.ts | 6 +-- .../src/v2/createMethodMiddleware.test.ts | 8 ++-- .../src/v2/createMethodMiddleware.ts | 6 +-- .../src/v2/createOriginMiddleware.test.ts | 6 +-- .../src/v2/createOriginMiddleware.ts | 6 +-- .../src/v2/createScaffoldMiddleware.test.ts | 8 ++-- .../src/v2/createScaffoldMiddleware.ts | 7 +++- packages/json-rpc-engine/src/v2/index.test.ts | 2 +- packages/json-rpc-engine/src/v2/index.ts | 26 ++++++------- packages/json-rpc-engine/src/v2/utils.test.ts | 2 +- packages/json-rpc-engine/v2.js | 3 -- 40 files changed, 169 insertions(+), 162 deletions(-) delete mode 100644 packages/json-rpc-engine/v2.js diff --git a/packages/json-rpc-engine/package.json b/packages/json-rpc-engine/package.json index 4c7b9376782..83f35798ff1 100644 --- a/packages/json-rpc-engine/package.json +++ b/packages/json-rpc-engine/package.json @@ -19,8 +19,7 @@ "test": "test" }, "files": [ - "dist/", - "v2.js" + "dist/" ], "type": "module", "sideEffects": false, diff --git a/packages/json-rpc-engine/src/JsonRpcEngine.test.ts b/packages/json-rpc-engine/src/JsonRpcEngine.test.ts index eef05d2e4ee..2e8b1aa9633 100644 --- a/packages/json-rpc-engine/src/JsonRpcEngine.test.ts +++ b/packages/json-rpc-engine/src/JsonRpcEngine.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { rpcErrors } from '@metamask/rpc-errors'; import type { JsonRpcParams, Json } from '@metamask/utils'; import { @@ -7,8 +8,8 @@ import { isJsonRpcSuccess, } from '@metamask/utils'; -import type { JsonRpcMiddleware } from '.'; -import { JsonRpcEngine } from '.'; +import type { JsonRpcMiddleware } from './index.js'; +import { JsonRpcEngine } from './index.js'; const jsonrpc = '2.0' as const; diff --git a/packages/json-rpc-engine/src/JsonRpcEngine.ts b/packages/json-rpc-engine/src/JsonRpcEngine.ts index 7d728b1b1a4..12bee48d0d1 100644 --- a/packages/json-rpc-engine/src/JsonRpcEngine.ts +++ b/packages/json-rpc-engine/src/JsonRpcEngine.ts @@ -15,7 +15,7 @@ import { isJsonRpcRequest, } from '@metamask/utils'; -import { stringify } from './v2/utils'; +import { stringify } from './v2/utils.js'; export type JsonRpcEngineCallbackError = Error | SerializedJsonRpcError | null; diff --git a/packages/json-rpc-engine/src/asMiddleware.test.ts b/packages/json-rpc-engine/src/asMiddleware.test.ts index f914677d63f..00d652fe258 100644 --- a/packages/json-rpc-engine/src/asMiddleware.test.ts +++ b/packages/json-rpc-engine/src/asMiddleware.test.ts @@ -1,7 +1,7 @@ import type { JsonRpcRequest } from '@metamask/utils'; import { assertIsJsonRpcSuccess, isJsonRpcSuccess } from '@metamask/utils'; -import { JsonRpcEngine } from '.'; +import { JsonRpcEngine } from './index.js'; const jsonrpc = '2.0' as const; @@ -42,8 +42,8 @@ describe('asMiddleware', () => { subengine.push(function (request, response, _next, end) { originalRequest = request; // TODO: Replace `any` with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (response as any).xyz = true; + + response.xyz = true; response.result = true; end(); }); @@ -59,8 +59,8 @@ describe('asMiddleware', () => { expect(originalRequest.id).toStrictEqual(response.id); expect(originalRequest.jsonrpc).toStrictEqual(response.jsonrpc); // TODO: Replace `any` with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - expect((response as any).xyz).toBe(true); + + expect(response.xyz).toBe(true); resolve(); }); }); @@ -74,11 +74,11 @@ describe('asMiddleware', () => { subengine.push(function (request, response, _next, end) { originalRequest = request; // TODO: Replace `any` with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (request as any).xyz = true; + + request.xyz = true; // TODO: Replace `any` with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (response as any).xyz = true; + + response.xyz = true; response.result = true; end(); }); @@ -131,8 +131,8 @@ describe('asMiddleware', () => { subengine.push((_request, response, next, _end) => { next((callback) => { // TODO: Replace `any` with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (response as any).copy = response.result; + + response.copy = response.result; callback(); }); }); @@ -166,8 +166,8 @@ describe('asMiddleware', () => { subengine.push((_request, response, next, _end) => { next((callback) => { // TODO: Replace `any` with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (response as any).copy = response.result; + + response.copy = response.result; callback(); }); }); @@ -211,8 +211,8 @@ describe('asMiddleware', () => { engine.handle(payload, function (error, response) { expect(error).toBeDefined(); // TODO: Replace `any` with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - expect((error as any).message).toBe('foo'); + + expect(error.message).toBe('foo'); expect(isJsonRpcSuccess(response)).toBe(false); resolve(); }); @@ -240,8 +240,8 @@ describe('asMiddleware', () => { engine.handle(payload, function (error, response) { expect(error).toBeDefined(); // TODO: Replace `any` with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - expect((error as any).message).toBe('foo'); + + expect(error.message).toBe('foo'); expect(isJsonRpcSuccess(response)).toBe(false); resolve(); }); @@ -270,8 +270,8 @@ describe('asMiddleware', () => { engine.handle(payload, function (error, response) { expect(error).toBeDefined(); // TODO: Replace `any` with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - expect((error as any).message).toBe('foo'); + + expect(error.message).toBe('foo'); expect(isJsonRpcSuccess(response)).toBe(false); resolve(); }); diff --git a/packages/json-rpc-engine/src/asV2Middleware.test.ts b/packages/json-rpc-engine/src/asV2Middleware.test.ts index 927f9901ee2..18385ff1abb 100644 --- a/packages/json-rpc-engine/src/asV2Middleware.test.ts +++ b/packages/json-rpc-engine/src/asV2Middleware.test.ts @@ -1,16 +1,17 @@ +import { jest } from '@jest/globals'; import { rpcErrors } from '@metamask/rpc-errors'; import type { Json, JsonRpcRequest } from '@metamask/utils'; -import { JsonRpcEngine } from '.'; import { getExtraneousKeys, makeNullMiddleware, makeRequest, -} from '../tests/utils'; -import { asV2Middleware } from './asV2Middleware'; -import { JsonRpcEngineV2 } from './v2/JsonRpcEngineV2'; -import type { JsonRpcMiddleware as V2Middleware } from './v2/JsonRpcEngineV2'; -import type { MiddlewareContext } from './v2/MiddlewareContext'; +} from '../tests/utils.js'; +import { asV2Middleware } from './asV2Middleware.js'; +import { JsonRpcEngine } from './index.js'; +import { JsonRpcEngineV2 } from './v2/JsonRpcEngineV2.js'; +import type { JsonRpcMiddleware as V2Middleware } from './v2/JsonRpcEngineV2.js'; +import type { MiddlewareContext } from './v2/MiddlewareContext.js'; describe('asV2Middleware', () => { it('converts a legacy engine to a v2 middleware', () => { diff --git a/packages/json-rpc-engine/src/asV2Middleware.ts b/packages/json-rpc-engine/src/asV2Middleware.ts index d6c8512e0d7..f877f9212b5 100644 --- a/packages/json-rpc-engine/src/asV2Middleware.ts +++ b/packages/json-rpc-engine/src/asV2Middleware.ts @@ -12,24 +12,24 @@ import type { JsonRpcEngine, JsonRpcEngineEndCallback, JsonRpcEngineNextCallback, -} from './JsonRpcEngine'; -import type { JsonRpcMiddleware as LegacyMiddleware } from './JsonRpcEngine'; -import { mergeMiddleware } from './mergeMiddleware'; -import type { ContextConstraint, MiddlewareContext } from './v2'; +} from './JsonRpcEngine.js'; +import type { JsonRpcMiddleware as LegacyMiddleware } from './JsonRpcEngine.js'; +import { mergeMiddleware } from './mergeMiddleware.js'; import { deepClone, fromLegacyRequest, propagateToContext, propagateToRequest, deserializeError, -} from './v2/compatibility-utils'; +} from './v2/compatibility-utils.js'; +import type { ContextConstraint, MiddlewareContext } from './v2/index.js'; import type { // Used in docs. // eslint-disable-next-line @typescript-eslint/no-unused-vars JsonRpcEngineV2, JsonRpcMiddleware, ResultConstraint, -} from './v2/JsonRpcEngineV2'; +} from './v2/JsonRpcEngineV2.js'; /** * Convert a legacy {@link JsonRpcEngine} into a {@link JsonRpcEngineV2} middleware. diff --git a/packages/json-rpc-engine/src/createAsyncMiddleware.test.ts b/packages/json-rpc-engine/src/createAsyncMiddleware.test.ts index 491fe238795..f051534d763 100644 --- a/packages/json-rpc-engine/src/createAsyncMiddleware.test.ts +++ b/packages/json-rpc-engine/src/createAsyncMiddleware.test.ts @@ -1,6 +1,6 @@ import { assertIsJsonRpcSuccess } from '@metamask/utils'; -import { JsonRpcEngine, createAsyncMiddleware } from '.'; +import { JsonRpcEngine, createAsyncMiddleware } from './index.js'; const jsonrpc = '2.0' as const; @@ -115,7 +115,6 @@ describe('createAsyncMiddleware', () => { engine.push( createAsyncMiddleware(async (_request, _response, next) => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises next(); }), ); diff --git a/packages/json-rpc-engine/src/createAsyncMiddleware.ts b/packages/json-rpc-engine/src/createAsyncMiddleware.ts index 2a254c48597..f09a98ef8a7 100644 --- a/packages/json-rpc-engine/src/createAsyncMiddleware.ts +++ b/packages/json-rpc-engine/src/createAsyncMiddleware.ts @@ -8,7 +8,7 @@ import type { import type { JsonRpcEngineReturnHandler, JsonRpcMiddleware, -} from './JsonRpcEngine'; +} from './JsonRpcEngine.js'; export type AsyncJsonRpcEngineNextCallback = () => Promise; diff --git a/packages/json-rpc-engine/src/createMethodMiddleware.test.ts b/packages/json-rpc-engine/src/createMethodMiddleware.test.ts index 9e5f60563a1..915f5e2e022 100644 --- a/packages/json-rpc-engine/src/createMethodMiddleware.test.ts +++ b/packages/json-rpc-engine/src/createMethodMiddleware.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import { assertIsJsonRpcFailure, @@ -11,8 +12,8 @@ import { MethodHandler, MethodHandlerImplementation, createMethodMiddleware, -} from './createMethodMiddleware'; -import { JsonRpcEngine, JsonRpcMiddleware } from './JsonRpcEngine'; +} from './createMethodMiddleware.js'; +import { JsonRpcEngine, JsonRpcMiddleware } from './JsonRpcEngine.js'; type AllHooks = { hook1: () => number; diff --git a/packages/json-rpc-engine/src/createMethodMiddleware.ts b/packages/json-rpc-engine/src/createMethodMiddleware.ts index 5425fcec67d..8dfac30fce4 100644 --- a/packages/json-rpc-engine/src/createMethodMiddleware.ts +++ b/packages/json-rpc-engine/src/createMethodMiddleware.ts @@ -12,13 +12,13 @@ import type { JsonRpcEngineEndCallback, JsonRpcEngineNextCallback, JsonRpcMiddleware, -} from './JsonRpcEngine'; +} from './JsonRpcEngine.js'; import { assertExpectedHooks, createHandlerMessenger, selectHooks, UnionToIntersection, -} from './v2/utils'; +} from './v2/utils.js'; type HandlerActions = Handler extends { implementation: (...args: infer Args) => unknown; diff --git a/packages/json-rpc-engine/src/createOriginMiddleware.test.ts b/packages/json-rpc-engine/src/createOriginMiddleware.test.ts index 5c441e977d4..568b2363861 100644 --- a/packages/json-rpc-engine/src/createOriginMiddleware.test.ts +++ b/packages/json-rpc-engine/src/createOriginMiddleware.test.ts @@ -1,8 +1,8 @@ import { JsonRpcRequest } from '@metamask/utils'; -import { makeRequest } from '../tests/utils'; -import { createOriginMiddleware } from './createOriginMiddleware'; -import { JsonRpcEngine } from './JsonRpcEngine'; +import { makeRequest } from '../tests/utils.js'; +import { createOriginMiddleware } from './createOriginMiddleware.js'; +import { JsonRpcEngine } from './JsonRpcEngine.js'; describe('createOriginMiddleware', () => { it('adds the origin property to the request', async () => { diff --git a/packages/json-rpc-engine/src/createOriginMiddleware.ts b/packages/json-rpc-engine/src/createOriginMiddleware.ts index e2100aa4fa0..c615f7996e3 100644 --- a/packages/json-rpc-engine/src/createOriginMiddleware.ts +++ b/packages/json-rpc-engine/src/createOriginMiddleware.ts @@ -1,6 +1,6 @@ import { Json, JsonRpcRequest } from '@metamask/utils'; -import { JsonRpcMiddleware } from './JsonRpcEngine'; +import { JsonRpcMiddleware } from './JsonRpcEngine.js'; /** * Create a middleware function that adds `origin` to the request object. diff --git a/packages/json-rpc-engine/src/createScaffoldMiddleware.test.ts b/packages/json-rpc-engine/src/createScaffoldMiddleware.test.ts index 0900ec870de..2f87ffe93c6 100644 --- a/packages/json-rpc-engine/src/createScaffoldMiddleware.test.ts +++ b/packages/json-rpc-engine/src/createScaffoldMiddleware.test.ts @@ -5,8 +5,8 @@ import { assertIsJsonRpcFailure, } from '@metamask/utils'; -import type { JsonRpcMiddleware } from '.'; -import { JsonRpcEngine, createScaffoldMiddleware } from '.'; +import type { JsonRpcMiddleware } from './index.js'; +import { JsonRpcEngine, createScaffoldMiddleware } from './index.js'; describe('createScaffoldMiddleware', () => { it('basic middleware test', async () => { diff --git a/packages/json-rpc-engine/src/createScaffoldMiddleware.ts b/packages/json-rpc-engine/src/createScaffoldMiddleware.ts index eac2a66667a..612b08ca082 100644 --- a/packages/json-rpc-engine/src/createScaffoldMiddleware.ts +++ b/packages/json-rpc-engine/src/createScaffoldMiddleware.ts @@ -1,6 +1,6 @@ import type { Json, JsonRpcParams, JsonRpcSuccess } from '@metamask/utils'; -import type { JsonRpcMiddleware } from './JsonRpcEngine'; +import type { JsonRpcMiddleware } from './JsonRpcEngine.js'; type ScaffoldMiddlewareHandler< Params extends JsonRpcParams, diff --git a/packages/json-rpc-engine/src/idRemapMiddleware.test.ts b/packages/json-rpc-engine/src/idRemapMiddleware.test.ts index 5e1e6341d80..adeec028573 100644 --- a/packages/json-rpc-engine/src/idRemapMiddleware.test.ts +++ b/packages/json-rpc-engine/src/idRemapMiddleware.test.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -import { JsonRpcEngine, createIdRemapMiddleware } from '.'; +import { JsonRpcEngine, createIdRemapMiddleware } from './index.js'; describe('idRemapMiddleware', () => { it('basic middleware test', async () => { diff --git a/packages/json-rpc-engine/src/idRemapMiddleware.ts b/packages/json-rpc-engine/src/idRemapMiddleware.ts index 6ec22b81d92..f966f623ced 100644 --- a/packages/json-rpc-engine/src/idRemapMiddleware.ts +++ b/packages/json-rpc-engine/src/idRemapMiddleware.ts @@ -1,7 +1,7 @@ import type { Json, JsonRpcParams } from '@metamask/utils'; -import { getUniqueId } from './getUniqueId'; -import type { JsonRpcMiddleware } from './JsonRpcEngine'; +import { getUniqueId } from './getUniqueId.js'; +import type { JsonRpcMiddleware } from './JsonRpcEngine.js'; /** * Returns a middleware function that overwrites the `id` property of each diff --git a/packages/json-rpc-engine/src/index.test.ts b/packages/json-rpc-engine/src/index.test.ts index 071d71fa360..a6709eecfce 100644 --- a/packages/json-rpc-engine/src/index.test.ts +++ b/packages/json-rpc-engine/src/index.test.ts @@ -1,17 +1,17 @@ -import * as allExports from '.'; +import * as allExports from './index.js'; describe('@metamask/json-rpc-engine', () => { it('has expected JavaScript exports', () => { expect(Object.keys(allExports)).toMatchInlineSnapshot(` [ + "JsonRpcEngine", "asV2Middleware", "createAsyncMiddleware", + "createIdRemapMiddleware", "createMethodMiddleware", "createOriginMiddleware", "createScaffoldMiddleware", "getUniqueId", - "createIdRemapMiddleware", - "JsonRpcEngine", "mergeMiddleware", ] `); diff --git a/packages/json-rpc-engine/src/index.ts b/packages/json-rpc-engine/src/index.ts index 1960fe5e3f5..e5d6faccbda 100644 --- a/packages/json-rpc-engine/src/index.ts +++ b/packages/json-rpc-engine/src/index.ts @@ -1,19 +1,19 @@ -export { asV2Middleware } from './asV2Middleware'; +export { asV2Middleware } from './asV2Middleware.js'; export type { AsyncJsonRpcEngineNextCallback, AsyncJsonrpcMiddleware, -} from './createAsyncMiddleware'; -export { createAsyncMiddleware } from './createAsyncMiddleware'; +} from './createAsyncMiddleware.js'; +export { createAsyncMiddleware } from './createAsyncMiddleware.js'; export type { CreateMethodMiddlewareOptions, MethodHandler, MethodHandlerImplementation, -} from './createMethodMiddleware'; -export { createMethodMiddleware } from './createMethodMiddleware'; -export { createOriginMiddleware } from './createOriginMiddleware'; -export { createScaffoldMiddleware } from './createScaffoldMiddleware'; -export { getUniqueId } from './getUniqueId'; -export { createIdRemapMiddleware } from './idRemapMiddleware'; +} from './createMethodMiddleware.js'; +export { createMethodMiddleware } from './createMethodMiddleware.js'; +export { createOriginMiddleware } from './createOriginMiddleware.js'; +export { createScaffoldMiddleware } from './createScaffoldMiddleware.js'; +export { getUniqueId } from './getUniqueId.js'; +export { createIdRemapMiddleware } from './idRemapMiddleware.js'; export type { JsonRpcEngineCallbackError, JsonRpcEngineReturnHandler, @@ -21,6 +21,6 @@ export type { JsonRpcEngineEndCallback, JsonRpcMiddleware, JsonRpcNotificationHandler, -} from './JsonRpcEngine'; -export { JsonRpcEngine } from './JsonRpcEngine'; -export { mergeMiddleware } from './mergeMiddleware'; +} from './JsonRpcEngine.js'; +export { JsonRpcEngine } from './JsonRpcEngine.js'; +export { mergeMiddleware } from './mergeMiddleware.js'; diff --git a/packages/json-rpc-engine/src/mergeMiddleware.test.ts b/packages/json-rpc-engine/src/mergeMiddleware.test.ts index 8a6df71a7c3..74a8686ba97 100644 --- a/packages/json-rpc-engine/src/mergeMiddleware.test.ts +++ b/packages/json-rpc-engine/src/mergeMiddleware.test.ts @@ -1,7 +1,7 @@ import type { JsonRpcRequest } from '@metamask/utils'; import { assertIsJsonRpcSuccess, hasProperty } from '@metamask/utils'; -import { JsonRpcEngine, mergeMiddleware } from '.'; +import { JsonRpcEngine, mergeMiddleware } from './index.js'; const jsonrpc = '2.0' as const; @@ -42,8 +42,8 @@ describe('mergeMiddleware', () => { (_request, response, next, _end): void => { next((callback) => { // TODO: Replace `any` with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (response as any).copy = response.result; + + response.copy = response.result; callback(); }); }, @@ -79,8 +79,8 @@ describe('mergeMiddleware', () => { function (request, response, _next, end): void { originalRequest = request; // TODO: Replace `any` with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (response as any).xyz = true; + + response.xyz = true; response.result = true; end(); }, @@ -96,8 +96,8 @@ describe('mergeMiddleware', () => { expect(originalRequest.id).toStrictEqual(res.id); expect(originalRequest.jsonrpc).toStrictEqual(res.jsonrpc); // TODO: Replace `any` with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - expect((res as any).xyz).toBe(true); + + expect(res.xyz).toBe(true); resolve(); }); }); @@ -112,8 +112,8 @@ describe('mergeMiddleware', () => { function (request, response, _next, end): void { originalRequest = request; // TODO: Replace `any` with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (request as any).xyz = true; + + request.xyz = true; response.result = true; end(); }, @@ -166,8 +166,8 @@ describe('mergeMiddleware', () => { (_request, response, next, _end): void => { next((callback) => { // TODO: Replace `any` with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (response as any).copy = response.result; + + response.copy = response.result; callback(); }); }, diff --git a/packages/json-rpc-engine/src/mergeMiddleware.ts b/packages/json-rpc-engine/src/mergeMiddleware.ts index b1396ea761e..7928dfb1b10 100644 --- a/packages/json-rpc-engine/src/mergeMiddleware.ts +++ b/packages/json-rpc-engine/src/mergeMiddleware.ts @@ -1,7 +1,7 @@ import type { Json, JsonRpcParams } from '@metamask/utils'; -import type { JsonRpcMiddleware } from './JsonRpcEngine'; -import { JsonRpcEngine } from './JsonRpcEngine'; +import type { JsonRpcMiddleware } from './JsonRpcEngine.js'; +import { JsonRpcEngine } from './JsonRpcEngine.js'; /** * Takes a stack of middleware and joins them into a single middleware function. diff --git a/packages/json-rpc-engine/src/v2/JsonRpcEngineV2.test.ts b/packages/json-rpc-engine/src/v2/JsonRpcEngineV2.test.ts index c83775df2f2..e2769a984c4 100644 --- a/packages/json-rpc-engine/src/v2/JsonRpcEngineV2.test.ts +++ b/packages/json-rpc-engine/src/v2/JsonRpcEngineV2.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable n/callback-return */ // next() is not a Node.js callback. import type { Json, JsonRpcId } from '@metamask/utils'; import { createDeferredPromise } from '@metamask/utils'; @@ -8,13 +9,17 @@ import { makeNullMiddleware, makeRequest, makeRequestMiddleware, -} from '../../tests/utils'; -import type { JsonRpcMiddleware, ResultConstraint } from './JsonRpcEngineV2'; -import { JsonRpcEngineV2 } from './JsonRpcEngineV2'; -import type { EmptyContext } from './MiddlewareContext'; -import { MiddlewareContext } from './MiddlewareContext'; -import { isRequest, JsonRpcEngineError, stringify } from './utils'; -import type { JsonRpcCall, JsonRpcNotification, JsonRpcRequest } from './utils'; +} from '../../tests/utils.js'; +import type { JsonRpcMiddleware, ResultConstraint } from './JsonRpcEngineV2.js'; +import { JsonRpcEngineV2 } from './JsonRpcEngineV2.js'; +import type { EmptyContext } from './MiddlewareContext.js'; +import { MiddlewareContext } from './MiddlewareContext.js'; +import { isRequest, JsonRpcEngineError, stringify } from './utils.js'; +import type { + JsonRpcCall, + JsonRpcNotification, + JsonRpcRequest, +} from './utils.js'; const jsonrpc = '2.0' as const; diff --git a/packages/json-rpc-engine/src/v2/JsonRpcEngineV2.ts b/packages/json-rpc-engine/src/v2/JsonRpcEngineV2.ts index 5808fc5942d..b0c54f3eb67 100644 --- a/packages/json-rpc-engine/src/v2/JsonRpcEngineV2.ts +++ b/packages/json-rpc-engine/src/v2/JsonRpcEngineV2.ts @@ -7,20 +7,20 @@ import type { } from '@metamask/utils'; import deepFreeze from 'deep-freeze-strict'; -import { deepClone } from './compatibility-utils'; +import { deepClone } from './compatibility-utils.js'; import type { ContextConstraint, InferKeyValues, MergeContexts, -} from './MiddlewareContext'; -import { MiddlewareContext } from './MiddlewareContext'; +} from './MiddlewareContext.js'; +import { MiddlewareContext } from './MiddlewareContext.js'; import { isNotification, isRequest, JsonRpcEngineError, stringify, -} from './utils'; -import type { JsonRpcCall } from './utils'; +} from './utils.js'; +import type { JsonRpcCall } from './utils.js'; // Helper to forbid `id` on notifications type WithoutId = Request & { id?: never }; @@ -226,9 +226,7 @@ export class JsonRpcEngineV2< return new JsonRpcEngineV2({ middleware: mw, - }) as MergedContext extends never - ? InvalidEngine<'Some middleware have incompatible context types'> - : JsonRpcEngineV2; + }) as never; } /** diff --git a/packages/json-rpc-engine/src/v2/JsonRpcServer.test.ts b/packages/json-rpc-engine/src/v2/JsonRpcServer.test.ts index 7f61826afb4..5c8fa3c3d7c 100644 --- a/packages/json-rpc-engine/src/v2/JsonRpcServer.test.ts +++ b/packages/json-rpc-engine/src/v2/JsonRpcServer.test.ts @@ -1,12 +1,13 @@ +import { jest } from '@jest/globals'; import { rpcErrors } from '@metamask/rpc-errors'; import { Json } from '@metamask/utils'; -import type { JsonRpcMiddleware } from './JsonRpcEngineV2'; -import { JsonRpcEngineV2 } from './JsonRpcEngineV2'; -import { JsonRpcServer } from './JsonRpcServer'; -import type { MiddlewareContext } from './MiddlewareContext'; -import type { JsonRpcNotification, JsonRpcRequest } from './utils'; -import { isRequest, JsonRpcEngineError, stringify } from './utils'; +import type { JsonRpcMiddleware } from './JsonRpcEngineV2.js'; +import { JsonRpcEngineV2 } from './JsonRpcEngineV2.js'; +import { JsonRpcServer } from './JsonRpcServer.js'; +import type { MiddlewareContext } from './MiddlewareContext.js'; +import type { JsonRpcNotification, JsonRpcRequest } from './utils.js'; +import { isRequest, JsonRpcEngineError, stringify } from './utils.js'; const jsonrpc = '2.0' as const; diff --git a/packages/json-rpc-engine/src/v2/JsonRpcServer.ts b/packages/json-rpc-engine/src/v2/JsonRpcServer.ts index 4edfc205955..b27d7086c6b 100644 --- a/packages/json-rpc-engine/src/v2/JsonRpcServer.ts +++ b/packages/json-rpc-engine/src/v2/JsonRpcServer.ts @@ -8,16 +8,16 @@ import type { } from '@metamask/utils'; import { hasProperty, isObject } from '@metamask/utils'; -import { getUniqueId } from '../getUniqueId'; +import { getUniqueId } from '../getUniqueId.js'; import type { HandleOptions, JsonRpcMiddleware, MergedContextOf, MiddlewareConstraint, RequestOf, -} from './JsonRpcEngineV2'; -import { JsonRpcEngineV2 } from './JsonRpcEngineV2'; -import type { JsonRpcCall } from './utils'; +} from './JsonRpcEngineV2.js'; +import { JsonRpcEngineV2 } from './JsonRpcEngineV2.js'; +import type { JsonRpcCall } from './utils.js'; type OnError = (error: unknown) => void; diff --git a/packages/json-rpc-engine/src/v2/MiddlewareContext.test.ts b/packages/json-rpc-engine/src/v2/MiddlewareContext.test.ts index b88f8421c3d..c8dfa0ea631 100644 --- a/packages/json-rpc-engine/src/v2/MiddlewareContext.test.ts +++ b/packages/json-rpc-engine/src/v2/MiddlewareContext.test.ts @@ -1,4 +1,4 @@ -import { MiddlewareContext } from './MiddlewareContext'; +import { MiddlewareContext } from './MiddlewareContext.js'; describe('MiddlewareContext', () => { it('can be constructed with entries', () => { diff --git a/packages/json-rpc-engine/src/v2/MiddlewareContext.ts b/packages/json-rpc-engine/src/v2/MiddlewareContext.ts index 4727e5d5de1..4286d4eee85 100644 --- a/packages/json-rpc-engine/src/v2/MiddlewareContext.ts +++ b/packages/json-rpc-engine/src/v2/MiddlewareContext.ts @@ -1,5 +1,5 @@ -import { isInstance } from './utils'; -import type { UnionToIntersection } from './utils'; +import { isInstance } from './utils.js'; +import type { UnionToIntersection } from './utils.js'; const MiddlewareContextSymbol = Symbol.for('json-rpc-engine#MiddlewareContext'); diff --git a/packages/json-rpc-engine/src/v2/asLegacyMiddleware.test.ts b/packages/json-rpc-engine/src/v2/asLegacyMiddleware.test.ts index 1e74ca7fcb5..73f40489d81 100644 --- a/packages/json-rpc-engine/src/v2/asLegacyMiddleware.test.ts +++ b/packages/json-rpc-engine/src/v2/asLegacyMiddleware.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { Json, JsonRpcFailure, @@ -9,11 +10,11 @@ import { getExtraneousKeys, makeRequest, makeRequestMiddleware, -} from '../../tests/utils'; -import { JsonRpcEngine } from '../JsonRpcEngine'; -import { asLegacyMiddleware } from './asLegacyMiddleware'; -import type { JsonRpcMiddleware, ResultConstraint } from './JsonRpcEngineV2'; -import { JsonRpcEngineV2 } from './JsonRpcEngineV2'; +} from '../../tests/utils.js'; +import { JsonRpcEngine } from '../JsonRpcEngine.js'; +import { asLegacyMiddleware } from './asLegacyMiddleware.js'; +import type { JsonRpcMiddleware, ResultConstraint } from './JsonRpcEngineV2.js'; +import { JsonRpcEngineV2 } from './JsonRpcEngineV2.js'; describe('asLegacyMiddleware', () => { it('converts a v2 engine to a legacy middleware', () => { diff --git a/packages/json-rpc-engine/src/v2/asLegacyMiddleware.ts b/packages/json-rpc-engine/src/v2/asLegacyMiddleware.ts index 51ed5404dbb..72c38d75688 100644 --- a/packages/json-rpc-engine/src/v2/asLegacyMiddleware.ts +++ b/packages/json-rpc-engine/src/v2/asLegacyMiddleware.ts @@ -1,15 +1,15 @@ import type { JsonRpcParams, JsonRpcRequest } from '@metamask/utils'; -import { createAsyncMiddleware } from '..'; -import type { JsonRpcMiddleware as LegacyMiddleware } from '..'; +import { createAsyncMiddleware } from '../index.js'; +import type { JsonRpcMiddleware as LegacyMiddleware } from '../index.js'; import { deepClone, fromLegacyRequest, makeContext, propagateToRequest, -} from './compatibility-utils'; -import type { JsonRpcMiddleware, ResultConstraint } from './JsonRpcEngineV2'; -import { JsonRpcEngineV2 } from './JsonRpcEngineV2'; +} from './compatibility-utils.js'; +import type { JsonRpcMiddleware, ResultConstraint } from './JsonRpcEngineV2.js'; +import { JsonRpcEngineV2 } from './JsonRpcEngineV2.js'; /** * Convert a {@link JsonRpcEngineV2} into a legacy middleware. diff --git a/packages/json-rpc-engine/src/v2/compatibility-utils.test.ts b/packages/json-rpc-engine/src/v2/compatibility-utils.test.ts index 4930367260b..94a0e3964ad 100644 --- a/packages/json-rpc-engine/src/v2/compatibility-utils.test.ts +++ b/packages/json-rpc-engine/src/v2/compatibility-utils.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { JsonRpcError } from '@metamask/rpc-errors'; import type { Json } from '@metamask/utils'; @@ -8,9 +9,9 @@ import { propagateToContext, propagateToRequest, deserializeError, -} from './compatibility-utils'; -import { MiddlewareContext } from './MiddlewareContext'; -import { stringify } from './utils'; +} from './compatibility-utils.js'; +import { MiddlewareContext } from './MiddlewareContext.js'; +import { stringify } from './utils.js'; const jsonrpc = '2.0' as const; diff --git a/packages/json-rpc-engine/src/v2/compatibility-utils.ts b/packages/json-rpc-engine/src/v2/compatibility-utils.ts index 93899cc92d1..421c195454e 100644 --- a/packages/json-rpc-engine/src/v2/compatibility-utils.ts +++ b/packages/json-rpc-engine/src/v2/compatibility-utils.ts @@ -5,9 +5,9 @@ import { hasProperty, isObject, isValidJson } from '@metamask/utils'; // ATTN: We must NOT use 'klona/full' here because it freezes properties on the clone. import { klona } from 'klona'; -import { MiddlewareContext } from './MiddlewareContext'; -import { stringify } from './utils'; -import type { JsonRpcRequest } from './utils'; +import { MiddlewareContext } from './MiddlewareContext.js'; +import { stringify } from './utils.js'; +import type { JsonRpcRequest } from './utils.js'; // Legacy engine compatibility utils diff --git a/packages/json-rpc-engine/src/v2/createMethodMiddleware.test.ts b/packages/json-rpc-engine/src/v2/createMethodMiddleware.test.ts index 7b11bc47d88..c9535b1be64 100644 --- a/packages/json-rpc-engine/src/v2/createMethodMiddleware.test.ts +++ b/packages/json-rpc-engine/src/v2/createMethodMiddleware.test.ts @@ -1,12 +1,12 @@ import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; -import { makeRequest } from '../../tests/utils'; +import { makeRequest } from '../../tests/utils.js'; import { createMethodMiddleware, MethodHandler, -} from './createMethodMiddleware'; -import { JsonRpcEngineV2 } from './JsonRpcEngineV2'; -import { JsonRpcRequest } from './utils'; +} from './createMethodMiddleware.js'; +import { JsonRpcEngineV2 } from './JsonRpcEngineV2.js'; +import { JsonRpcRequest } from './utils.js'; type TestAction = { type: 'Example:TestAction'; diff --git a/packages/json-rpc-engine/src/v2/createMethodMiddleware.ts b/packages/json-rpc-engine/src/v2/createMethodMiddleware.ts index d1310b9c1bd..3a6213a6e12 100644 --- a/packages/json-rpc-engine/src/v2/createMethodMiddleware.ts +++ b/packages/json-rpc-engine/src/v2/createMethodMiddleware.ts @@ -1,7 +1,7 @@ import { ActionConstraint, Messenger } from '@metamask/messenger'; -import { JsonRpcMiddleware, Next } from './JsonRpcEngineV2'; -import { ContextConstraint } from './MiddlewareContext'; +import { JsonRpcMiddleware, Next } from './JsonRpcEngineV2.js'; +import { ContextConstraint } from './MiddlewareContext.js'; import { assertExpectedHooks, createHandlerMessenger, @@ -10,7 +10,7 @@ import { JsonRpcParams, JsonRpcRequest, UnionToIntersection, -} from './utils'; +} from './utils.js'; type HandlerActions = Handler extends { implementation: (options: infer Options) => unknown; diff --git a/packages/json-rpc-engine/src/v2/createOriginMiddleware.test.ts b/packages/json-rpc-engine/src/v2/createOriginMiddleware.test.ts index 1b7fb15ba8d..18f9b97aee4 100644 --- a/packages/json-rpc-engine/src/v2/createOriginMiddleware.test.ts +++ b/packages/json-rpc-engine/src/v2/createOriginMiddleware.test.ts @@ -1,6 +1,6 @@ -import { makeRequest } from '../../tests/utils'; -import { createOriginMiddleware } from './createOriginMiddleware'; -import { JsonRpcEngineV2 } from './JsonRpcEngineV2'; +import { makeRequest } from '../../tests/utils.js'; +import { createOriginMiddleware } from './createOriginMiddleware.js'; +import { JsonRpcEngineV2 } from './JsonRpcEngineV2.js'; describe('createOriginMiddleware', () => { it('sets the origin on the context object', async () => { diff --git a/packages/json-rpc-engine/src/v2/createOriginMiddleware.ts b/packages/json-rpc-engine/src/v2/createOriginMiddleware.ts index 16234c6dc3f..4a2ff9856ba 100644 --- a/packages/json-rpc-engine/src/v2/createOriginMiddleware.ts +++ b/packages/json-rpc-engine/src/v2/createOriginMiddleware.ts @@ -1,6 +1,6 @@ -import { JsonRpcMiddleware } from './JsonRpcEngineV2'; -import { MiddlewareContext } from './MiddlewareContext'; -import { Json, JsonRpcRequest } from './utils'; +import { JsonRpcMiddleware } from './JsonRpcEngineV2.js'; +import { MiddlewareContext } from './MiddlewareContext.js'; +import { Json, JsonRpcRequest } from './utils.js'; /** * Create a middleware function that adds `origin` to the middleware context. diff --git a/packages/json-rpc-engine/src/v2/createScaffoldMiddleware.test.ts b/packages/json-rpc-engine/src/v2/createScaffoldMiddleware.test.ts index c71eb7a6e44..bacc464f132 100644 --- a/packages/json-rpc-engine/src/v2/createScaffoldMiddleware.test.ts +++ b/packages/json-rpc-engine/src/v2/createScaffoldMiddleware.test.ts @@ -1,9 +1,9 @@ import { rpcErrors } from '@metamask/rpc-errors'; -import { makeRequest } from '../../tests/utils'; -import type { MiddlewareScaffold } from './createScaffoldMiddleware'; -import { createScaffoldMiddleware } from './createScaffoldMiddleware'; -import { JsonRpcEngineV2 } from './JsonRpcEngineV2'; +import { makeRequest } from '../../tests/utils.js'; +import type { MiddlewareScaffold } from './createScaffoldMiddleware.js'; +import { createScaffoldMiddleware } from './createScaffoldMiddleware.js'; +import { JsonRpcEngineV2 } from './JsonRpcEngineV2.js'; describe('createScaffoldMiddleware', () => { it('basic middleware test', async () => { diff --git a/packages/json-rpc-engine/src/v2/createScaffoldMiddleware.ts b/packages/json-rpc-engine/src/v2/createScaffoldMiddleware.ts index 6eaf1bdc450..7d145ffe4bf 100644 --- a/packages/json-rpc-engine/src/v2/createScaffoldMiddleware.ts +++ b/packages/json-rpc-engine/src/v2/createScaffoldMiddleware.ts @@ -1,7 +1,10 @@ import type { Json, JsonRpcParams, JsonRpcRequest } from '@metamask/utils'; -import type { JsonRpcMiddleware } from './JsonRpcEngineV2'; -import type { ContextConstraint, MiddlewareContext } from './MiddlewareContext'; +import type { JsonRpcMiddleware } from './JsonRpcEngineV2.js'; +import type { + ContextConstraint, + MiddlewareContext, +} from './MiddlewareContext.js'; // Only permit primitive values as hard-coded scaffold middleware results. type JsonPrimitive = string | number | boolean | null; diff --git a/packages/json-rpc-engine/src/v2/index.test.ts b/packages/json-rpc-engine/src/v2/index.test.ts index 43a989a1f8d..595b71213e1 100644 --- a/packages/json-rpc-engine/src/v2/index.test.ts +++ b/packages/json-rpc-engine/src/v2/index.test.ts @@ -1,4 +1,4 @@ -import * as allExports from '.'; +import * as allExports from './index.js'; describe('@metamask/json-rpc-engine/v2', () => { it('has expected JavaScript exports', () => { diff --git a/packages/json-rpc-engine/src/v2/index.ts b/packages/json-rpc-engine/src/v2/index.ts index be91113a343..8ae58ba4415 100644 --- a/packages/json-rpc-engine/src/v2/index.ts +++ b/packages/json-rpc-engine/src/v2/index.ts @@ -1,10 +1,10 @@ -export { asLegacyMiddleware } from './asLegacyMiddleware'; -export { getUniqueId } from '../getUniqueId'; -export { createMethodMiddleware } from './createMethodMiddleware'; -export type { MethodHandler } from './createMethodMiddleware'; -export { createOriginMiddleware } from './createOriginMiddleware'; -export { createScaffoldMiddleware } from './createScaffoldMiddleware'; -export { JsonRpcEngineV2 } from './JsonRpcEngineV2'; +export { asLegacyMiddleware } from './asLegacyMiddleware.js'; +export { getUniqueId } from '../getUniqueId.js'; +export { createMethodMiddleware } from './createMethodMiddleware.js'; +export type { MethodHandler } from './createMethodMiddleware.js'; +export { createOriginMiddleware } from './createOriginMiddleware.js'; +export { createScaffoldMiddleware } from './createScaffoldMiddleware.js'; +export { JsonRpcEngineV2 } from './JsonRpcEngineV2.js'; export type { JsonRpcMiddleware, HandleOptions, @@ -14,17 +14,17 @@ export type { Next, RequestOf, ResultConstraint, -} from './JsonRpcEngineV2'; -export { JsonRpcServer } from './JsonRpcServer'; -export { MiddlewareContext } from './MiddlewareContext'; -export type { EmptyContext, ContextConstraint } from './MiddlewareContext'; +} from './JsonRpcEngineV2.js'; +export { JsonRpcServer } from './JsonRpcServer.js'; +export { MiddlewareContext } from './MiddlewareContext.js'; +export type { EmptyContext, ContextConstraint } from './MiddlewareContext.js'; export { isNotification, isRequest, JsonRpcEngineError, selectHooks, assertExpectedHooks, -} from './utils'; +} from './utils.js'; export type { Json, JsonRpcCall, @@ -32,4 +32,4 @@ export type { JsonRpcParams, JsonRpcRequest, UnionToIntersection, -} from './utils'; +} from './utils.js'; diff --git a/packages/json-rpc-engine/src/v2/utils.test.ts b/packages/json-rpc-engine/src/v2/utils.test.ts index 5a6c1bf8327..d86987d82a3 100644 --- a/packages/json-rpc-engine/src/v2/utils.test.ts +++ b/packages/json-rpc-engine/src/v2/utils.test.ts @@ -4,7 +4,7 @@ import { stringify, JsonRpcEngineError, isInstance, -} from './utils'; +} from './utils.js'; const jsonrpc = '2.0' as const; diff --git a/packages/json-rpc-engine/v2.js b/packages/json-rpc-engine/v2.js deleted file mode 100644 index faf7abd236a..00000000000 --- a/packages/json-rpc-engine/v2.js +++ /dev/null @@ -1,3 +0,0 @@ -// Re-exported for compatibility with Browserify. -// eslint-disable-next-line -module.exports = require('./dist/v2/index.cjs'); From f1bb9d18c97dcdc9db758d5f630ba52807d3f5c7 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 19:59:35 +0200 Subject: [PATCH 016/115] Fix ESLint errors for `storage-service` Add `.js` extensions to relative imports. --- .../storage-service/src/InMemoryStorageAdapter.test.ts | 4 +++- packages/storage-service/src/InMemoryStorageAdapter.ts | 4 ++-- .../src/StorageService-method-action-types.ts | 2 +- packages/storage-service/src/StorageService.test.ts | 5 +++-- packages/storage-service/src/StorageService.ts | 6 +++--- packages/storage-service/src/index.ts | 10 +++++----- packages/storage-service/src/types.ts | 2 +- 7 files changed, 18 insertions(+), 15 deletions(-) diff --git a/packages/storage-service/src/InMemoryStorageAdapter.test.ts b/packages/storage-service/src/InMemoryStorageAdapter.test.ts index a1f6ba47493..6718b49c0fb 100644 --- a/packages/storage-service/src/InMemoryStorageAdapter.test.ts +++ b/packages/storage-service/src/InMemoryStorageAdapter.test.ts @@ -1,4 +1,6 @@ -import { InMemoryStorageAdapter } from './InMemoryStorageAdapter'; +import { jest } from '@jest/globals'; + +import { InMemoryStorageAdapter } from './InMemoryStorageAdapter.js'; describe('InMemoryStorageAdapter', () => { describe('constructor', () => { diff --git a/packages/storage-service/src/InMemoryStorageAdapter.ts b/packages/storage-service/src/InMemoryStorageAdapter.ts index 0489744ef8e..3d49f73b54f 100644 --- a/packages/storage-service/src/InMemoryStorageAdapter.ts +++ b/packages/storage-service/src/InMemoryStorageAdapter.ts @@ -4,8 +4,8 @@ import type { InitialStorageData, StorageAdapter, StorageGetResult, -} from './types'; -import { STORAGE_KEY_PREFIX } from './types'; +} from './types.js'; +import { STORAGE_KEY_PREFIX } from './types.js'; /** * In-memory storage adapter (default fallback). diff --git a/packages/storage-service/src/StorageService-method-action-types.ts b/packages/storage-service/src/StorageService-method-action-types.ts index 5bf572f579d..a6a916ebff6 100644 --- a/packages/storage-service/src/StorageService-method-action-types.ts +++ b/packages/storage-service/src/StorageService-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { StorageService } from './StorageService'; +import type { StorageService } from './StorageService.js'; /** * Store large JSON data in storage. diff --git a/packages/storage-service/src/StorageService.test.ts b/packages/storage-service/src/StorageService.test.ts index 2efa05b147b..4a820612f87 100644 --- a/packages/storage-service/src/StorageService.test.ts +++ b/packages/storage-service/src/StorageService.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MockAnyNamespace, @@ -5,8 +6,8 @@ import type { MessengerEvents, } from '@metamask/messenger'; -import { StorageService } from './StorageService'; -import type { StorageServiceMessenger, StorageAdapter } from './types'; +import { StorageService } from './StorageService.js'; +import type { StorageServiceMessenger, StorageAdapter } from './types.js'; describe('StorageService', () => { let consoleWarnSpy: jest.SpyInstance; diff --git a/packages/storage-service/src/StorageService.ts b/packages/storage-service/src/StorageService.ts index dfb5381e624..b48241088e2 100644 --- a/packages/storage-service/src/StorageService.ts +++ b/packages/storage-service/src/StorageService.ts @@ -1,13 +1,13 @@ import type { Json } from '@metamask/utils'; -import { InMemoryStorageAdapter } from './InMemoryStorageAdapter'; +import { InMemoryStorageAdapter } from './InMemoryStorageAdapter.js'; import type { StorageAdapter, StorageGetResult, StorageServiceMessenger, StorageServiceOptions, -} from './types'; -import { SERVICE_NAME } from './types'; +} from './types.js'; +import { SERVICE_NAME } from './types.js'; // === MESSENGER === diff --git a/packages/storage-service/src/index.ts b/packages/storage-service/src/index.ts index 9c80ea56f05..4643680c29d 100644 --- a/packages/storage-service/src/index.ts +++ b/packages/storage-service/src/index.ts @@ -1,8 +1,8 @@ // Export service class -export { StorageService } from './StorageService'; +export { StorageService } from './StorageService.js'; // Export adapters -export { InMemoryStorageAdapter } from './InMemoryStorageAdapter'; +export { InMemoryStorageAdapter } from './InMemoryStorageAdapter.js'; // Export types from types.ts export type { @@ -14,7 +14,7 @@ export type { StorageServiceEvents, StorageServiceMessenger, StorageServiceItemSetEvent, -} from './types'; +} from './types.js'; // Export individual action types from generated file export type { @@ -23,7 +23,7 @@ export type { StorageServiceRemoveItemAction, StorageServiceGetAllKeysAction, StorageServiceClearAction, -} from './StorageService-method-action-types'; +} from './StorageService-method-action-types.js'; // Export service name and storage key prefix constants -export { SERVICE_NAME, STORAGE_KEY_PREFIX } from './types'; +export { SERVICE_NAME, STORAGE_KEY_PREFIX } from './types.js'; diff --git a/packages/storage-service/src/types.ts b/packages/storage-service/src/types.ts index 7b1e0fe09b2..cc1f4eab80b 100644 --- a/packages/storage-service/src/types.ts +++ b/packages/storage-service/src/types.ts @@ -1,7 +1,7 @@ import type { Messenger } from '@metamask/messenger'; import type { Json } from '@metamask/utils'; -import type { StorageServiceMethodActions } from './StorageService-method-action-types'; +import type { StorageServiceMethodActions } from './StorageService-method-action-types.js'; /** * Initial data structure for populating InMemoryStorageAdapter. From a2d483656a279cb80301f731c7fb9740ae0f6d96 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:19:46 +0200 Subject: [PATCH 017/115] Add Jest custom resolver and fix ESM global import hoisting Replacing the `moduleNameMapper` directory fallback for external `@metamask/*` packages with a custom resolver (`jest.resolver.cjs`). Previously the fallback `/../../node_modules/@metamask/$1` returned a directory path. Jest resolved that using the package's `main` field (CJS), ignoring the `exports.import` (ESM) entry. This caused `class X extends SafeEventEmitter` to fail with "Class extends value [object Object] is not a constructor or null" because the CJS wrapper uses `exports.default = Class` rather than `module.exports = Class`. The custom resolver redirects monorepo `@metamask/*` imports to their TypeScript source (`src/index.ts`) and falls back to Jest's default resolver for external packages, which correctly honours the `exports` field and picks the ESM entry. Also fix `tests/setup.ts`: the static `import 'isomorphic-fetch'` is hoisted in ESM mode and ran before the `delete globalThis.fetch` lines, leaving `fetch` undefined. Replaced with a dynamic import so execution order is preserved. --- eslint.config.mjs | 7 ++++++ jest.config.packages.js | 13 ++++------- jest.resolver.cjs | 52 +++++++++++++++++++++++++++++++++++++++++ tests/setup.ts | 7 +++--- 4 files changed, 66 insertions(+), 13 deletions(-) create mode 100644 jest.resolver.cjs diff --git a/eslint.config.mjs b/eslint.config.mjs index 767171c9acb..8ec18b8a9a0 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -180,6 +180,13 @@ const config = createConfig([ 'jest/no-alias-methods': 'error', 'jest/no-commented-out-tests': 'error', 'jest/no-disabled-tests': 'error', + + // Some package types are wrong (e.g., nock). + 'import-x/no-named-as-default-member': 'off', + + // `import { jest } from '@jest/globals'` is required in ESM test files + // and intentionally shadows the Jest-injected global. + '@typescript-eslint/no-shadow': ['error', { allow: ['jest'] }], }, settings: { node: { diff --git a/jest.config.packages.js b/jest.config.packages.js index 44cfedf92c0..0c117ba67c0 100644 --- a/jest.config.packages.js +++ b/jest.config.packages.js @@ -86,8 +86,9 @@ const config = { // ], // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module - // Here we ensure that Jest resolves `@metamask/*` imports to the uncompiled source code for packages that live in this repo. - // NOTE: This must be synchronized with the `paths` option in `tsconfig.base.json`. + // NOTE: Monorepo `@metamask/*` packages are resolved to TypeScript source by `jest.resolver.cjs`. + // External `@metamask/*` packages are resolved by Jest's default resolver, which honours `exports` fields. + // NOTE: The `'^(\\..+)\\.js$'` entry must be synchronized with the `paths` option in `tsconfig.base.json`. moduleNameMapper: { '^(\\..+)\\.js$': '$1', '^@metamask/json-rpc-engine/v2$': [ @@ -96,12 +97,6 @@ const config = { '^@metamask/utils/node$': fileURLToPath( import.meta.resolve('@metamask/utils/node'), ), - '^@metamask/(.+)$': [ - '/../$1/src', - // Some @metamask/* packages we are referencing aren't in this monorepo, - // so in that case use their published versions - '/../../node_modules/@metamask/$1', - ], }, // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader @@ -134,7 +129,7 @@ const config = { // resetModules: false, // A path to a custom resolver - // resolver: undefined, + resolver: '../../jest.resolver.cjs', // "restoreMocks" restores all mocks created using jest.spyOn to their // original implementations, between each test. It does not affect mocked diff --git a/jest.resolver.cjs b/jest.resolver.cjs new file mode 100644 index 00000000000..3737c3f3f6e --- /dev/null +++ b/jest.resolver.cjs @@ -0,0 +1,52 @@ +/* eslint-disable import-x/unambiguous, n/no-sync */ +'use strict'; + +const { join, resolve } = require('path'); +const { existsSync, statSync } = require('fs'); + +const REPO_ROOT = resolve(__dirname); +const PACKAGES_DIR = join(REPO_ROOT, 'packages'); + +/** + * Custom Jest resolver that redirects `@metamask/*` imports to monorepo source + * when the package exists locally, and falls back to default resolution (which + * honours the package `exports` field) for external packages. + * + * Without this, the `moduleNameMapper` fallback returns a directory path for + * external `@metamask/*` packages. Jest then uses `main` (CJS) rather than + * `exports.import` (ESM), causing class-inheritance failures at runtime. + * + * @param {string} moduleName - The module name to resolve. + * @param {object} options - Jest resolver options including `defaultResolver`. + * @returns {string} The resolved module path. + */ +module.exports = function resolver(moduleName, options) { + const { basedir, defaultResolver } = options; + + // Skip the monorepo redirect when the import originates from an external + // package in node_modules. Those packages use CJS require() and cannot load + // ESM TypeScript source files — they must resolve against published dist. + const isFromNodeModules = + basedir !== undefined && basedir.includes('/node_modules/'); + + const match = + !isFromNodeModules && /^@metamask\/([^/]+)(\/.*)?$/u.exec(moduleName); + + if (match) { + const [, pkgName, subPath = ''] = match; + const srcDir = join(PACKAGES_DIR, pkgName, 'src'); + + if (existsSync(srcDir)) { + let target = subPath ? join(srcDir, subPath) : join(srcDir, 'index.ts'); + // If the resolved target is a directory, look for its index file. + if (existsSync(target) && statSync(target).isDirectory()) { + target = join(target, 'index.ts'); + } + + return defaultResolver(target, options); + } + } + + // External package — use default resolver, which honours `exports` fields. + return defaultResolver(moduleName, options); +}; diff --git a/tests/setup.ts b/tests/setup.ts index b9508687d77..b7953a291e6 100644 --- a/tests/setup.ts +++ b/tests/setup.ts @@ -8,7 +8,6 @@ delete globalThis.Headers; delete globalThis.Request; // @ts-expect-error - Clear Response to ensure isomorphic-fetch sets up node-fetch version delete globalThis.Response; -// We need to import this *after* we delete `fetch` etc. above. -// Additionally, this import is used for side effects only. -// eslint-disable-next-line import-x/first, import-x/no-unassigned-import -import 'isomorphic-fetch'; +// Dynamic import so this runs *after* the deletes above (static imports are hoisted in ESM). +// eslint-disable-next-line import-x/no-unassigned-import +await import('isomorphic-fetch'); From 5b2d5db3a0dc5c068de1bbee56d7f659301158cb Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:23:46 +0200 Subject: [PATCH 018/115] Fix ESLint errors for `address-book-controller` Add `.js` extensions to relative imports. --- .../src/AddressBookController-method-action-types.ts | 2 +- .../src/AddressBookController.test.ts | 5 +++-- .../address-book-controller/src/AddressBookController.ts | 2 +- packages/address-book-controller/src/index.ts | 6 +++--- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/address-book-controller/src/AddressBookController-method-action-types.ts b/packages/address-book-controller/src/AddressBookController-method-action-types.ts index 5dcfc6b1b22..0c62c5e1f44 100644 --- a/packages/address-book-controller/src/AddressBookController-method-action-types.ts +++ b/packages/address-book-controller/src/AddressBookController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { AddressBookController } from './AddressBookController'; +import type { AddressBookController } from './AddressBookController.js'; /** * Returns all address book entries as an array. diff --git a/packages/address-book-controller/src/AddressBookController.test.ts b/packages/address-book-controller/src/AddressBookController.test.ts index f3064c83750..af619c011d5 100644 --- a/packages/address-book-controller/src/AddressBookController.test.ts +++ b/packages/address-book-controller/src/AddressBookController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { toHex } from '@metamask/controller-utils'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; @@ -11,12 +12,12 @@ import type { Hex } from '@metamask/utils'; import type { AddressBookControllerContactDeletedEvent, AddressBookControllerMessenger, -} from './AddressBookController'; +} from './AddressBookController.js'; import { AddressBookController, AddressType, controllerName, -} from './AddressBookController'; +} from './AddressBookController.js'; type AllActions = MessengerActions; diff --git a/packages/address-book-controller/src/AddressBookController.ts b/packages/address-book-controller/src/AddressBookController.ts index 62ad4e66824..08e51b829a6 100644 --- a/packages/address-book-controller/src/AddressBookController.ts +++ b/packages/address-book-controller/src/AddressBookController.ts @@ -13,7 +13,7 @@ import { import type { Messenger } from '@metamask/messenger'; import type { Hex } from '@metamask/utils'; -import type { AddressBookControllerMethodActions } from './AddressBookController-method-action-types'; +import type { AddressBookControllerMethodActions } from './AddressBookController-method-action-types.js'; /** * ContactEntry representation diff --git a/packages/address-book-controller/src/index.ts b/packages/address-book-controller/src/index.ts index 3cf41024037..de2ef0e79ae 100644 --- a/packages/address-book-controller/src/index.ts +++ b/packages/address-book-controller/src/index.ts @@ -10,15 +10,15 @@ export type { AddressBookControllerEvents, AddressBookControllerMessenger, ContactEntry, -} from './AddressBookController'; +} from './AddressBookController.js'; export { getDefaultAddressBookControllerState, AddressBookController, -} from './AddressBookController'; +} from './AddressBookController.js'; export type { AddressBookControllerListAction, AddressBookControllerSetAction, AddressBookControllerDeleteAction, AddressBookControllerClearAction, -} from './AddressBookController-method-action-types'; +} from './AddressBookController-method-action-types.js'; From 6d925381f035c6be25e0d4c62fc12e9aebe578b3 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:32:16 +0200 Subject: [PATCH 019/115] Fix ESLint errors for `ai-controllers` Add `.js` extensions to relative imports. --- .../src/AiDigestController-method-action-types.ts | 2 +- .../ai-controllers/src/AiDigestController.test.ts | 5 +++-- packages/ai-controllers/src/AiDigestController.ts | 6 +++--- .../ai-controllers/src/AiDigestService.test.ts | 6 ++++-- packages/ai-controllers/src/AiDigestService.ts | 4 ++-- packages/ai-controllers/src/index.ts | 14 +++++++------- .../src/authenticated-user-storage.test.ts | 1 + 7 files changed, 21 insertions(+), 17 deletions(-) diff --git a/packages/ai-controllers/src/AiDigestController-method-action-types.ts b/packages/ai-controllers/src/AiDigestController-method-action-types.ts index 3cf0d1e8464..f70cc3f654e 100644 --- a/packages/ai-controllers/src/AiDigestController-method-action-types.ts +++ b/packages/ai-controllers/src/AiDigestController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { AiDigestController } from './AiDigestController'; +import type { AiDigestController } from './AiDigestController.js'; /** * Fetches market insights for a given asset identifier. diff --git a/packages/ai-controllers/src/AiDigestController.test.ts b/packages/ai-controllers/src/AiDigestController.test.ts index 998e50b23b2..d9a941cf90a 100644 --- a/packages/ai-controllers/src/AiDigestController.test.ts +++ b/packages/ai-controllers/src/AiDigestController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Messenger } from '@metamask/messenger'; import { @@ -6,14 +7,14 @@ import { AiDigestControllerErrorMessage, CACHE_DURATION_MS, MAX_CACHE_ENTRIES, -} from '.'; +} from './index.js'; import type { AiDigestControllerMessenger, DigestService, MarketInsightsReport, MarketOverview, MarketOverviewFrontPage, -} from '.'; +} from './index.js'; const mockReport: MarketInsightsReport = { version: '1.0', diff --git a/packages/ai-controllers/src/AiDigestController.ts b/packages/ai-controllers/src/AiDigestController.ts index 3ad3eb86c3d..50223e4f094 100644 --- a/packages/ai-controllers/src/AiDigestController.ts +++ b/packages/ai-controllers/src/AiDigestController.ts @@ -11,7 +11,7 @@ import { controllerName, CACHE_DURATION_MS, MAX_CACHE_ENTRIES, -} from './ai-digest-constants'; +} from './ai-digest-constants.js'; import type { AiDigestControllerState, DigestService, @@ -20,8 +20,8 @@ import type { MarketOverview, MarketOverviewEntry, MarketOverviewFrontPage, -} from './ai-digest-types'; -import type { AiDigestControllerMethodActions } from './AiDigestController-method-action-types'; +} from './ai-digest-types.js'; +import type { AiDigestControllerMethodActions } from './AiDigestController-method-action-types.js'; export type AiDigestControllerGetStateAction = ControllerGetStateAction< typeof controllerName, diff --git a/packages/ai-controllers/src/AiDigestService.test.ts b/packages/ai-controllers/src/AiDigestService.test.ts index e5a83e0b866..ae6b2b5eece 100644 --- a/packages/ai-controllers/src/AiDigestService.test.ts +++ b/packages/ai-controllers/src/AiDigestService.test.ts @@ -1,5 +1,7 @@ -import { AiDigestService } from '.'; -import { AiDigestControllerErrorMessage } from './ai-digest-constants'; +import { jest } from '@jest/globals'; + +import { AiDigestControllerErrorMessage } from './ai-digest-constants.js'; +import { AiDigestService } from './index.js'; describe('AiDigestService', () => { const mockFetch = jest.fn(); diff --git a/packages/ai-controllers/src/AiDigestService.ts b/packages/ai-controllers/src/AiDigestService.ts index cacc04da390..cc46185f68a 100644 --- a/packages/ai-controllers/src/AiDigestService.ts +++ b/packages/ai-controllers/src/AiDigestService.ts @@ -7,14 +7,14 @@ import { type as structType, } from '@metamask/superstruct'; -import { AiDigestControllerErrorMessage } from './ai-digest-constants'; +import { AiDigestControllerErrorMessage } from './ai-digest-constants.js'; import type { DigestService, MarketInsightsReport, MarketOverview, MarketOverviewFrontPage, MarketOverviewTrend, -} from './ai-digest-types'; +} from './ai-digest-types.js'; export type AiDigestServiceConfig = { baseUrl: string; diff --git a/packages/ai-controllers/src/index.ts b/packages/ai-controllers/src/index.ts index 176b69db306..c59aa890131 100644 --- a/packages/ai-controllers/src/index.ts +++ b/packages/ai-controllers/src/index.ts @@ -5,19 +5,19 @@ export type { AiDigestControllerMessenger, AiDigestControllerOptions, AiDigestControllerStateChangeEvent, -} from './AiDigestController'; +} from './AiDigestController.js'; export { AiDigestController, getDefaultAiDigestControllerState, -} from './AiDigestController'; +} from './AiDigestController.js'; export type { AiDigestControllerFetchMarketInsightsAction, AiDigestControllerFetchMarketOverviewAction, AiDigestControllerFetchFrontPageItemAction, -} from './AiDigestController-method-action-types'; +} from './AiDigestController-method-action-types.js'; -export type { AiDigestServiceConfig } from './AiDigestService'; -export { AiDigestService } from './AiDigestService'; +export type { AiDigestServiceConfig } from './AiDigestService.js'; +export { AiDigestService } from './AiDigestService.js'; export type { AiDigestControllerState, @@ -38,11 +38,11 @@ export type { RelatedAsset, Source, Tweet, -} from './ai-digest-types'; +} from './ai-digest-types.js'; export { controllerName as aiDigestControllerName, CACHE_DURATION_MS, MAX_CACHE_ENTRIES, AiDigestControllerErrorMessage, -} from './ai-digest-constants'; +} from './ai-digest-constants.js'; diff --git a/packages/authenticated-user-storage/src/authenticated-user-storage.test.ts b/packages/authenticated-user-storage/src/authenticated-user-storage.test.ts index 6b8ed45cda6..851b5e698af 100644 --- a/packages/authenticated-user-storage/src/authenticated-user-storage.test.ts +++ b/packages/authenticated-user-storage/src/authenticated-user-storage.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MockAnyNamespace, From 77101c39c740604d511fe56cb8cfba84eb588063 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:32:22 +0200 Subject: [PATCH 020/115] Fix ESLint errors for `analytics-controller` Add `.js` extensions to relative imports. --- packages/analytics-controller/package.json | 2 +- .../AnalyticsController-method-action-types.ts | 2 +- .../src/AnalyticsController.test.ts | 7 ++++--- .../src/AnalyticsController.ts | 12 ++++++------ .../analyticsControllerStateValidator.test.ts | 4 ++-- .../src/analyticsControllerStateValidator.ts | 2 +- packages/analytics-controller/src/index.ts | 18 +++++++++--------- .../analytics-controller/src/selectors.test.ts | 4 ++-- packages/analytics-controller/src/selectors.ts | 2 +- 9 files changed, 27 insertions(+), 26 deletions(-) diff --git a/packages/analytics-controller/package.json b/packages/analytics-controller/package.json index d6d7b3e27ef..d87545f3557 100644 --- a/packages/analytics-controller/package.json +++ b/packages/analytics-controller/package.json @@ -51,7 +51,7 @@ "@metamask/base-controller": "^9.1.0", "@metamask/messenger": "^2.0.0", "@metamask/utils": "^11.11.0", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "uuid": "^8.3.2" }, "devDependencies": { diff --git a/packages/analytics-controller/src/AnalyticsController-method-action-types.ts b/packages/analytics-controller/src/AnalyticsController-method-action-types.ts index db027725a3f..d3756af5180 100644 --- a/packages/analytics-controller/src/AnalyticsController-method-action-types.ts +++ b/packages/analytics-controller/src/AnalyticsController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { AnalyticsController } from './AnalyticsController'; +import type { AnalyticsController } from './AnalyticsController.js'; /** * Track an analytics event. diff --git a/packages/analytics-controller/src/AnalyticsController.test.ts b/packages/analytics-controller/src/AnalyticsController.test.ts index 68a7aee0cce..9b10a2251b7 100644 --- a/packages/analytics-controller/src/AnalyticsController.test.ts +++ b/packages/analytics-controller/src/AnalyticsController.test.ts @@ -1,14 +1,16 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MockAnyNamespace } from '@metamask/messenger'; import type { Json } from '@metamask/utils'; +import { isValidUUIDv4 } from './analyticsControllerStateValidator.js'; import { AnalyticsController, AnalyticsPlatformAdapterSetupError, getDefaultAnalyticsControllerState, analyticsControllerSelectors, -} from '.'; +} from './index.js'; import type { AnalyticsControllerMessenger, AnalyticsControllerActions, @@ -18,8 +20,7 @@ import type { AnalyticsTrackingEvent, AnalyticsControllerState, AnalyticsContext, -} from '.'; -import { isValidUUIDv4 } from './analyticsControllerStateValidator'; +} from './index.js'; type SetupControllerOptions = { state: AnalyticsControllerState; diff --git a/packages/analytics-controller/src/AnalyticsController.ts b/packages/analytics-controller/src/AnalyticsController.ts index 1c8e8170216..54d199ac1db 100644 --- a/packages/analytics-controller/src/AnalyticsController.ts +++ b/packages/analytics-controller/src/AnalyticsController.ts @@ -6,12 +6,12 @@ import type { import { BaseController } from '@metamask/base-controller'; import type { Messenger } from '@metamask/messenger'; import type { Json } from '@metamask/utils'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; import { v4 as uuid } from 'uuid'; -import type { AnalyticsControllerMethodActions } from './AnalyticsController-method-action-types'; -import { validateAnalyticsControllerState } from './analyticsControllerStateValidator'; -import { projectLogger as log } from './AnalyticsLogger'; +import type { AnalyticsControllerMethodActions } from './AnalyticsController-method-action-types.js'; +import { validateAnalyticsControllerState } from './analyticsControllerStateValidator.js'; +import { projectLogger as log } from './AnalyticsLogger.js'; import type { AnalyticsPlatformAdapter, AnalyticsDeliveryOptions, @@ -19,8 +19,8 @@ import type { AnalyticsEventProperties, AnalyticsUserTraits, AnalyticsTrackingEvent, -} from './AnalyticsPlatformAdapter.types'; -import { analyticsControllerSelectors } from './selectors'; +} from './AnalyticsPlatformAdapter.types.js'; +import { analyticsControllerSelectors } from './selectors.js'; // === GENERAL === diff --git a/packages/analytics-controller/src/analyticsControllerStateValidator.test.ts b/packages/analytics-controller/src/analyticsControllerStateValidator.test.ts index 2e1dea9c964..e7782413e70 100644 --- a/packages/analytics-controller/src/analyticsControllerStateValidator.test.ts +++ b/packages/analytics-controller/src/analyticsControllerStateValidator.test.ts @@ -1,5 +1,5 @@ -import type { AnalyticsControllerState } from './AnalyticsController'; -import { validateAnalyticsControllerState } from './analyticsControllerStateValidator'; +import type { AnalyticsControllerState } from './AnalyticsController.js'; +import { validateAnalyticsControllerState } from './analyticsControllerStateValidator.js'; describe('analyticsControllerStateValidator', () => { describe('validateAnalyticsControllerState', () => { diff --git a/packages/analytics-controller/src/analyticsControllerStateValidator.ts b/packages/analytics-controller/src/analyticsControllerStateValidator.ts index f40773994d2..2053d8c58b0 100644 --- a/packages/analytics-controller/src/analyticsControllerStateValidator.ts +++ b/packages/analytics-controller/src/analyticsControllerStateValidator.ts @@ -1,4 +1,4 @@ -import type { AnalyticsControllerState } from './AnalyticsController'; +import type { AnalyticsControllerState } from './AnalyticsController.js'; /** * UUIDv4 format regex pattern. diff --git a/packages/analytics-controller/src/index.ts b/packages/analytics-controller/src/index.ts index 6a7a61d17a3..14fcc0ae020 100644 --- a/packages/analytics-controller/src/index.ts +++ b/packages/analytics-controller/src/index.ts @@ -2,11 +2,11 @@ export { AnalyticsController, getDefaultAnalyticsControllerState, -} from './AnalyticsController'; -export type { AnalyticsControllerOptions } from './AnalyticsController'; +} from './AnalyticsController.js'; +export type { AnalyticsControllerOptions } from './AnalyticsController.js'; // Export errors -export { AnalyticsPlatformAdapterSetupError } from './AnalyticsPlatformAdapterSetupError'; +export { AnalyticsPlatformAdapterSetupError } from './AnalyticsPlatformAdapterSetupError.js'; // Export types export type { @@ -17,7 +17,7 @@ export type { AnalyticsUserTraits, AnalyticsPlatformAdapter, AnalyticsTrackingEvent, -} from './AnalyticsPlatformAdapter.types'; +} from './AnalyticsPlatformAdapter.types.js'; // Export state types export type { @@ -28,13 +28,13 @@ export type { AnalyticsQueuedTrackEvent, AnalyticsQueuedIdentifyEvent, AnalyticsQueuedViewEvent, -} from './AnalyticsController'; +} from './AnalyticsController.js'; // Export selectors -export { analyticsControllerSelectors } from './selectors'; +export { analyticsControllerSelectors } from './selectors.js'; // Export messenger types -export type { AnalyticsControllerMessenger } from './AnalyticsController'; +export type { AnalyticsControllerMessenger } from './AnalyticsController.js'; // Export action and event types export type { @@ -42,7 +42,7 @@ export type { AnalyticsControllerEvents, AnalyticsControllerGetStateAction, AnalyticsControllerStateChangeEvent, -} from './AnalyticsController'; +} from './AnalyticsController.js'; export type { AnalyticsControllerTrackEventAction, AnalyticsControllerIdentifyAction, @@ -51,4 +51,4 @@ export type { AnalyticsControllerOptOutAction, AnalyticsControllerResetConsentDecisionAction, AnalyticsControllerMethodActions, -} from './AnalyticsController-method-action-types'; +} from './AnalyticsController-method-action-types.js'; diff --git a/packages/analytics-controller/src/selectors.test.ts b/packages/analytics-controller/src/selectors.test.ts index 0a65cbbc206..3833250aa29 100644 --- a/packages/analytics-controller/src/selectors.test.ts +++ b/packages/analytics-controller/src/selectors.test.ts @@ -1,5 +1,5 @@ -import type { AnalyticsControllerState } from './AnalyticsController'; -import { analyticsControllerSelectors } from './selectors'; +import type { AnalyticsControllerState } from './AnalyticsController.js'; +import { analyticsControllerSelectors } from './selectors.js'; describe('analyticsControllerSelectors', () => { const defaultAnalyticsId = '550e8400-e29b-41d4-a716-446655440000'; diff --git a/packages/analytics-controller/src/selectors.ts b/packages/analytics-controller/src/selectors.ts index 9386e915462..b5509571989 100644 --- a/packages/analytics-controller/src/selectors.ts +++ b/packages/analytics-controller/src/selectors.ts @@ -1,4 +1,4 @@ -import type { AnalyticsControllerState } from './AnalyticsController'; +import type { AnalyticsControllerState } from './AnalyticsController.js'; /** * Selects the analytics ID from the controller state. From 319f261a31ddbb0f85cf6aabdc2d1eb5b6556240 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:32:33 +0200 Subject: [PATCH 021/115] Fix ESLint errors for `analytics-data-regulation-controller` Add `.js` extensions to relative imports. --- ...egulationController-method-action-types.ts | 2 +- .../AnalyticsDataRegulationController.test.ts | 12 ++++++---- .../src/AnalyticsDataRegulationController.ts | 16 +++++++++---- ...taRegulationService-method-action-types.ts | 2 +- .../AnalyticsDataRegulationService.test.ts | 20 +++++++++------- .../src/AnalyticsDataRegulationService.ts | 9 +++++--- .../src/index.ts | 23 +++++++++++-------- .../src/selectors.test.ts | 4 ++-- .../src/selectors.ts | 2 +- 9 files changed, 55 insertions(+), 35 deletions(-) diff --git a/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationController-method-action-types.ts b/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationController-method-action-types.ts index 7706a11039d..344d0164e75 100644 --- a/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationController-method-action-types.ts +++ b/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { AnalyticsDataRegulationController } from './AnalyticsDataRegulationController'; +import type { AnalyticsDataRegulationController } from './AnalyticsDataRegulationController.js'; /** * Creates a new delete regulation for the user. diff --git a/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationController.test.ts b/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationController.test.ts index 88b44c3e599..e51142f92fb 100644 --- a/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationController.test.ts +++ b/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationController.test.ts @@ -1,18 +1,22 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MockAnyNamespace } from '@metamask/messenger'; +import type { AnalyticsDataRegulationServiceActions } from './AnalyticsDataRegulationService.js'; import { AnalyticsDataRegulationController, getDefaultAnalyticsDataRegulationControllerState, -} from '.'; +} from './index.js'; import type { AnalyticsDataRegulationControllerMessenger, AnalyticsDataRegulationControllerActions, AnalyticsDataRegulationControllerEvents, AnalyticsDataRegulationControllerState, -} from '.'; -import type { AnalyticsDataRegulationServiceActions } from './AnalyticsDataRegulationService'; -import { DATA_DELETE_RESPONSE_STATUSES, DATA_DELETE_STATUSES } from './types'; +} from './index.js'; +import { + DATA_DELETE_RESPONSE_STATUSES, + DATA_DELETE_STATUSES, +} from './types.js'; type SetupControllerOptions = { state?: Partial; diff --git a/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationController.ts b/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationController.ts index 9a52143c36f..0620a9d1dbc 100644 --- a/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationController.ts +++ b/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationController.ts @@ -6,11 +6,17 @@ import type { import { BaseController } from '@metamask/base-controller'; import type { Messenger } from '@metamask/messenger'; -import type { AnalyticsDataRegulationControllerMethodActions } from './AnalyticsDataRegulationController-method-action-types'; -import type { AnalyticsDataRegulationServiceActions } from './AnalyticsDataRegulationService'; -import { projectLogger as log } from './logger'; -import { DATA_DELETE_RESPONSE_STATUSES, DATA_DELETE_STATUSES } from './types'; -import type { DeleteRegulationResponse, DeleteRegulationStatus } from './types'; +import type { AnalyticsDataRegulationControllerMethodActions } from './AnalyticsDataRegulationController-method-action-types.js'; +import type { AnalyticsDataRegulationServiceActions } from './AnalyticsDataRegulationService.js'; +import { projectLogger as log } from './logger.js'; +import { + DATA_DELETE_RESPONSE_STATUSES, + DATA_DELETE_STATUSES, +} from './types.js'; +import type { + DeleteRegulationResponse, + DeleteRegulationStatus, +} from './types.js'; // === GENERAL === diff --git a/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationService-method-action-types.ts b/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationService-method-action-types.ts index 413629a9c79..7d650976473 100644 --- a/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationService-method-action-types.ts +++ b/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationService-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { AnalyticsDataRegulationService } from './AnalyticsDataRegulationService'; +import type { AnalyticsDataRegulationService } from './AnalyticsDataRegulationService.js'; /** * Creates a DELETE_ONLY regulation for the given analyticsId. diff --git a/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationService.test.ts b/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationService.test.ts index b528f086391..a5fdcbd9e36 100644 --- a/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationService.test.ts +++ b/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationService.test.ts @@ -1,14 +1,18 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MockAnyNamespace, MessengerActions, MessengerEvents, } from '@metamask/messenger'; -import nock, { cleanAll, disableNetConnect, enableNetConnect } from 'nock'; +import nock from 'nock'; -import type { AnalyticsDataRegulationServiceMessenger } from './AnalyticsDataRegulationService'; -import { AnalyticsDataRegulationService } from './AnalyticsDataRegulationService'; -import { DATA_DELETE_RESPONSE_STATUSES, DATA_DELETE_STATUSES } from './types'; +import type { AnalyticsDataRegulationServiceMessenger } from './AnalyticsDataRegulationService.js'; +import { AnalyticsDataRegulationService } from './AnalyticsDataRegulationService.js'; +import { + DATA_DELETE_RESPONSE_STATUSES, + DATA_DELETE_STATUSES, +} from './types.js'; describe('AnalyticsDataRegulationService', () => { const segmentSourceId = 'test-source-id'; @@ -16,14 +20,14 @@ describe('AnalyticsDataRegulationService', () => { beforeEach(() => { jest.useFakeTimers({ doNotFake: ['nextTick', 'queueMicrotask'] }); - cleanAll(); - disableNetConnect(); + nock.cleanAll(); + nock.disableNetConnect(); }); afterEach(() => { jest.useRealTimers(); - cleanAll(); - enableNetConnect(); + nock.cleanAll(); + nock.enableNetConnect(); }); describe('AnalyticsDataRegulationService:createDataDeletionTask', () => { diff --git a/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationService.ts b/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationService.ts index 1a916888c16..8e7ae1ed8a6 100644 --- a/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationService.ts +++ b/packages/analytics-data-regulation-controller/src/AnalyticsDataRegulationService.ts @@ -6,9 +6,12 @@ import { createServicePolicy, HttpError } from '@metamask/controller-utils'; import type { Messenger } from '@metamask/messenger'; import type { IDisposable } from 'cockatiel'; -import type { AnalyticsDataRegulationServiceMethodActions } from './AnalyticsDataRegulationService-method-action-types'; -import { DATA_DELETE_RESPONSE_STATUSES, DATA_DELETE_STATUSES } from './types'; -import type { DataDeleteStatus } from './types'; +import type { AnalyticsDataRegulationServiceMethodActions } from './AnalyticsDataRegulationService-method-action-types.js'; +import { + DATA_DELETE_RESPONSE_STATUSES, + DATA_DELETE_STATUSES, +} from './types.js'; +import type { DataDeleteStatus } from './types.js'; /** * Segment API regulation type for DELETE_ONLY operations. diff --git a/packages/analytics-data-regulation-controller/src/index.ts b/packages/analytics-data-regulation-controller/src/index.ts index 31ea1eb281b..b0b59ec77f9 100644 --- a/packages/analytics-data-regulation-controller/src/index.ts +++ b/packages/analytics-data-regulation-controller/src/index.ts @@ -1,30 +1,33 @@ export { AnalyticsDataRegulationController, getDefaultAnalyticsDataRegulationControllerState, -} from './AnalyticsDataRegulationController'; -export type { AnalyticsDataRegulationControllerOptions } from './AnalyticsDataRegulationController'; +} from './AnalyticsDataRegulationController.js'; +export type { AnalyticsDataRegulationControllerOptions } from './AnalyticsDataRegulationController.js'; -export { AnalyticsDataRegulationService } from './AnalyticsDataRegulationService'; +export { AnalyticsDataRegulationService } from './AnalyticsDataRegulationService.js'; export type { AnalyticsDataRegulationServiceActions, AnalyticsDataRegulationServiceEvents, AnalyticsDataRegulationServiceMessenger, AnalyticsDataRegulationServiceOptions, -} from './AnalyticsDataRegulationService'; +} from './AnalyticsDataRegulationService.js'; export { DATA_DELETE_STATUSES, DATA_DELETE_RESPONSE_STATUSES, type DataDeleteStatus, type DataDeleteResponseStatus, -} from './types'; -export type { DeleteRegulationResponse, DeleteRegulationStatus } from './types'; +} from './types.js'; +export type { + DeleteRegulationResponse, + DeleteRegulationStatus, +} from './types.js'; -export type { AnalyticsDataRegulationControllerState } from './AnalyticsDataRegulationController'; +export type { AnalyticsDataRegulationControllerState } from './AnalyticsDataRegulationController.js'; -export { analyticsDataRegulationControllerSelectors } from './selectors'; +export { analyticsDataRegulationControllerSelectors } from './selectors.js'; -export type { AnalyticsDataRegulationControllerMessenger } from './AnalyticsDataRegulationController'; +export type { AnalyticsDataRegulationControllerMessenger } from './AnalyticsDataRegulationController.js'; export type { AnalyticsDataRegulationControllerActions, @@ -33,4 +36,4 @@ export type { AnalyticsDataRegulationControllerStateChangeEvent, DataDeletionTaskCreatedEvent, DataRecordingFlagUpdatedEvent, -} from './AnalyticsDataRegulationController'; +} from './AnalyticsDataRegulationController.js'; diff --git a/packages/analytics-data-regulation-controller/src/selectors.test.ts b/packages/analytics-data-regulation-controller/src/selectors.test.ts index 644130b8513..fbe7fa313d1 100644 --- a/packages/analytics-data-regulation-controller/src/selectors.test.ts +++ b/packages/analytics-data-regulation-controller/src/selectors.test.ts @@ -1,8 +1,8 @@ +import type { AnalyticsDataRegulationControllerState } from './AnalyticsDataRegulationController.js'; import { analyticsDataRegulationControllerSelectors, getDefaultAnalyticsDataRegulationControllerState, -} from '.'; -import type { AnalyticsDataRegulationControllerState } from './AnalyticsDataRegulationController'; +} from './index.js'; describe('analyticsDataRegulationControllerSelectors', () => { describe('selectHasCollectedDataSinceDeletionRequest', () => { diff --git a/packages/analytics-data-regulation-controller/src/selectors.ts b/packages/analytics-data-regulation-controller/src/selectors.ts index 1b98c59dd2d..583e2374b5a 100644 --- a/packages/analytics-data-regulation-controller/src/selectors.ts +++ b/packages/analytics-data-regulation-controller/src/selectors.ts @@ -1,4 +1,4 @@ -import type { AnalyticsDataRegulationControllerState } from './AnalyticsDataRegulationController'; +import type { AnalyticsDataRegulationControllerState } from './AnalyticsDataRegulationController.js'; /** * Selects the data recorded flag from the controller state. From b9b501fbb5347c39f1ba9e020c5e7b676a7eb883 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:32:33 +0200 Subject: [PATCH 022/115] Fix ESLint errors for `announcement-controller` Add `.js` extensions to relative imports. --- .../src/AnnouncementController-method-action-types.ts | 2 +- .../src/AnnouncementController.test.ts | 4 ++-- .../announcement-controller/src/AnnouncementController.ts | 2 +- packages/announcement-controller/src/index.ts | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/announcement-controller/src/AnnouncementController-method-action-types.ts b/packages/announcement-controller/src/AnnouncementController-method-action-types.ts index 41b20203922..06e7774f15e 100644 --- a/packages/announcement-controller/src/AnnouncementController-method-action-types.ts +++ b/packages/announcement-controller/src/AnnouncementController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { AnnouncementController } from './AnnouncementController'; +import type { AnnouncementController } from './AnnouncementController.js'; /** * Resets the isShown status for all announcements diff --git a/packages/announcement-controller/src/AnnouncementController.test.ts b/packages/announcement-controller/src/AnnouncementController.test.ts index 61411131799..0bcc2587e82 100644 --- a/packages/announcement-controller/src/AnnouncementController.test.ts +++ b/packages/announcement-controller/src/AnnouncementController.test.ts @@ -9,8 +9,8 @@ import type { AnnouncementControllerEvents, AnnouncementControllerMessenger, AnnouncementMap, -} from './AnnouncementController'; -import { AnnouncementController } from './AnnouncementController'; +} from './AnnouncementController.js'; +import { AnnouncementController } from './AnnouncementController.js'; const name = 'AnnouncementController'; diff --git a/packages/announcement-controller/src/AnnouncementController.ts b/packages/announcement-controller/src/AnnouncementController.ts index ed194a9025c..99d7ec7564a 100644 --- a/packages/announcement-controller/src/AnnouncementController.ts +++ b/packages/announcement-controller/src/AnnouncementController.ts @@ -6,7 +6,7 @@ import type { import { BaseController } from '@metamask/base-controller'; import type { Messenger } from '@metamask/messenger'; -import type { AnnouncementControllerMethodActions } from './AnnouncementController-method-action-types'; +import type { AnnouncementControllerMethodActions } from './AnnouncementController-method-action-types.js'; type ViewedAnnouncement = { [id: number]: boolean; diff --git a/packages/announcement-controller/src/index.ts b/packages/announcement-controller/src/index.ts index aa6e47ce381..84583167654 100644 --- a/packages/announcement-controller/src/index.ts +++ b/packages/announcement-controller/src/index.ts @@ -1,7 +1,7 @@ export type { AnnouncementControllerResetViewedAction, AnnouncementControllerUpdateViewedAction, -} from './AnnouncementController-method-action-types'; +} from './AnnouncementController-method-action-types.js'; export type { AnnouncementMap, StateAnnouncementMap, @@ -11,5 +11,5 @@ export type { AnnouncementControllerGetStateAction, AnnouncementControllerStateChangeEvent, AnnouncementControllerMessenger, -} from './AnnouncementController'; -export { AnnouncementController } from './AnnouncementController'; +} from './AnnouncementController.js'; +export { AnnouncementController } from './AnnouncementController.js'; From 59cfbd1d6b8d5548862996e0c6a7f6f55f20daeb Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:32:33 +0200 Subject: [PATCH 023/115] Fix ESLint errors for `app-metadata-controller` Add `.js` extensions to relative imports. --- .../app-metadata-controller/src/AppMetadataController.test.ts | 4 ++-- packages/app-metadata-controller/src/index.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/app-metadata-controller/src/AppMetadataController.test.ts b/packages/app-metadata-controller/src/AppMetadataController.test.ts index b05944df221..5a16e18627d 100644 --- a/packages/app-metadata-controller/src/AppMetadataController.test.ts +++ b/packages/app-metadata-controller/src/AppMetadataController.test.ts @@ -5,12 +5,12 @@ import type { MockAnyNamespace } from '@metamask/messenger'; import { AppMetadataController, getDefaultAppMetadataControllerState, -} from './AppMetadataController'; +} from './AppMetadataController.js'; import type { AppMetadataControllerOptions, AppMetadataControllerActions, AppMetadataControllerEvents, -} from './AppMetadataController'; +} from './AppMetadataController.js'; describe('AppMetadataController', () => { describe('constructor', () => { diff --git a/packages/app-metadata-controller/src/index.ts b/packages/app-metadata-controller/src/index.ts index 67ce2803824..c116376df36 100644 --- a/packages/app-metadata-controller/src/index.ts +++ b/packages/app-metadata-controller/src/index.ts @@ -5,8 +5,8 @@ export type { AppMetadataControllerMessenger, AppMetadataControllerState, AppMetadataControllerStateChangeEvent, -} from './AppMetadataController'; +} from './AppMetadataController.js'; export { getDefaultAppMetadataControllerState, AppMetadataController, -} from './AppMetadataController'; +} from './AppMetadataController.js'; From 118a2762e320c5bcaa1fe6250ad861489f72a5fc Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:32:33 +0200 Subject: [PATCH 024/115] Fix ESLint errors for `approval-controller` Add `.js` extensions to relative imports and restore floating-promise suppressions. --- .../ApprovalController-method-action-types.ts | 2 +- .../src/ApprovalController.test.ts | 46 ++++++------------- .../src/ApprovalController.ts | 4 +- packages/approval-controller/src/index.ts | 6 +-- 4 files changed, 20 insertions(+), 38 deletions(-) diff --git a/packages/approval-controller/src/ApprovalController-method-action-types.ts b/packages/approval-controller/src/ApprovalController-method-action-types.ts index eff304674ba..b95a2587231 100644 --- a/packages/approval-controller/src/ApprovalController-method-action-types.ts +++ b/packages/approval-controller/src/ApprovalController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { ApprovalController } from './ApprovalController'; +import type { ApprovalController } from './ApprovalController.js'; /** * Adds an approval request per the given arguments, optionally showing diff --git a/packages/approval-controller/src/ApprovalController.test.ts b/packages/approval-controller/src/ApprovalController.test.ts index 1853f6e7172..afb87f469da 100644 --- a/packages/approval-controller/src/ApprovalController.test.ts +++ b/packages/approval-controller/src/ApprovalController.test.ts @@ -1,5 +1,5 @@ +import { jest } from '@jest/globals'; /* eslint-disable jest/expect-expect */ - import { deriveStateFromMetadata } from '@metamask/base-controller'; import { MOCK_ANY_NAMESPACE, Messenger } from '@metamask/messenger'; import type { @@ -10,7 +10,7 @@ import type { import { errorCodes, JsonRpcError } from '@metamask/rpc-errors'; import { nanoid } from 'nanoid'; -import { flushPromises } from '../../../tests/helpers'; +import { flushPromises } from '../../../tests/helpers.js'; import type { AddApprovalOptions, ApprovalControllerActions, @@ -19,19 +19,19 @@ import type { ErrorOptions, StartFlowOptions, SuccessOptions, -} from './ApprovalController'; +} from './ApprovalController.js'; import { APPROVAL_TYPE_RESULT_ERROR, APPROVAL_TYPE_RESULT_SUCCESS, ApprovalController, ORIGIN_METAMASK, -} from './ApprovalController'; +} from './ApprovalController.js'; import { ApprovalRequestNoResultSupportError, EndInvalidFlowError, MissingApprovalFlowError, NoApprovalFlowsError, -} from './errors'; +} from './errors.js'; jest.mock('nanoid'); @@ -761,7 +761,7 @@ describe('approval controller', () => { }); it('returns true for existing entry by origin', () => { - // TODO: Either fix this lint violation or explain why it's necessary to ignore. + // We only want to check the stored entity exists in the state hence disabling floating promises here. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.add({ id: 'foo', origin: 'bar.baz', type: TYPE }); @@ -769,7 +769,6 @@ describe('approval controller', () => { }); it('returns true for existing entry by origin and type', () => { - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.add({ id: 'foo', origin: 'bar.baz', type: 'myType' }); @@ -779,7 +778,6 @@ describe('approval controller', () => { }); it('returns true for existing type', () => { - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.add({ id: 'foo', origin: 'bar.baz', type: 'myType' }); @@ -787,7 +785,6 @@ describe('approval controller', () => { }); it('returns false for non-existing entry by id', () => { - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.add({ id: 'foo', origin: 'bar.baz', type: TYPE }); @@ -795,7 +792,6 @@ describe('approval controller', () => { }); it('returns false for non-existing entry by origin', () => { - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.add({ id: 'foo', origin: 'bar.baz', type: TYPE }); @@ -805,7 +801,6 @@ describe('approval controller', () => { }); it('returns false for non-existing entry by existing origin and non-existing type', () => { - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.add({ id: 'foo', origin: 'bar.baz', type: TYPE }); @@ -815,7 +810,6 @@ describe('approval controller', () => { }); it('returns false for non-existing entry by non-existing origin and existing type', () => { - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.add({ id: 'foo', origin: 'bar.baz', type: 'myType' }); @@ -825,7 +819,6 @@ describe('approval controller', () => { }); it('returns false for non-existing entry by type', () => { - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.add({ id: 'foo', origin: 'bar.baz', type: 'myType1' }); @@ -840,7 +833,6 @@ describe('approval controller', () => { origin: 'bar.baz', type: 'myType', }); - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.acceptRequest('foo', 'success'); @@ -860,14 +852,12 @@ describe('approval controller', () => { type: 'myType2', }); - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.acceptRequest('foo2', 'success2'); let result = await approvalPromise2; expect(result).toBe('success2'); - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.acceptRequest('foo1', 'success1'); @@ -939,7 +929,6 @@ describe('approval controller', () => { expectsResult: true, }); - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.acceptRequest(ID_MOCK, VALUE_MOCK); @@ -950,7 +939,6 @@ describe('approval controller', () => { }); it('throws if accept wants to wait but request does not expect result', async () => { - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.add({ id: ID_MOCK, @@ -966,11 +954,9 @@ describe('approval controller', () => { }); it('deletes entry', () => { - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.add({ id: 'foo', origin: 'bar.baz', type: 'type' }); - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.acceptRequest('foo'); @@ -983,14 +969,11 @@ describe('approval controller', () => { }); it('deletes one entry out of many without side-effects', () => { - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.add({ id: 'foo', origin: 'bar.baz', type: 'type1' }); - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.add({ id: 'fizz', origin: 'bar.baz', type: 'type2' }); - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.acceptRequest('fizz'); @@ -1200,7 +1183,6 @@ describe('approval controller', () => { type: 'myType4', }); - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.acceptRequest('foo2', 'success2'); @@ -1218,7 +1200,6 @@ describe('approval controller', () => { ); expect(approvalController.hasRequest({ origin: 'bar.baz' })).toBe(true); - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.acceptRequest('foo1', 'success1'); @@ -1319,8 +1300,6 @@ describe('approval controller', () => { showApprovalRequest, }); - // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/no-floating-promises rootMessenger.call( 'ApprovalController:addRequest', { id: 'foo', origin: 'bar.baz', type: TYPE }, @@ -1338,8 +1317,6 @@ describe('approval controller', () => { showApprovalRequest, }); - // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/no-floating-promises rootMessenger.call( 'ApprovalController:addRequest', { id: 'foo', origin: 'bar.baz', type: TYPE }, @@ -1357,7 +1334,6 @@ describe('approval controller', () => { showApprovalRequest, }); - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.add({ id: 'foo', @@ -1537,7 +1513,6 @@ describe('approval controller', () => { approvalController.state[PENDING_APPROVALS_STORE_KEY], )[0].id; - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.acceptRequest(resultRequestId); await promise; @@ -1587,7 +1562,6 @@ describe('approval controller', () => { approvalController.state[PENDING_APPROVALS_STORE_KEY], )[0].id; - // TODO: Either fix this lint violation or explain why it's necessary to ignore. // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.acceptRequest(resultRequestId); await promise; @@ -1602,6 +1576,7 @@ describe('approval controller', () => { describe('success', () => { it('adds request with result success approval type', async () => { // TODO: Either fix this lint violation or explain why it's necessary to ignore. + // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.showSuccess(SUCCESS_OPTIONS_MOCK); expectRequestAdded(APPROVAL_TYPE_RESULT_SUCCESS, SUCCESS_OPTIONS_MOCK); @@ -1609,6 +1584,7 @@ describe('approval controller', () => { it('adds request with no options', async () => { // TODO: Either fix this lint violation or explain why it's necessary to ignore. + // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.showSuccess(); @@ -1622,6 +1598,7 @@ describe('approval controller', () => { it('only includes relevant options in request data', async () => { // TODO: Either fix this lint violation or explain why it's necessary to ignore. + // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.showSuccess({ ...SUCCESS_OPTIONS_MOCK, @@ -1637,6 +1614,7 @@ describe('approval controller', () => { it('shows approval request', async () => { // TODO: Either fix this lint violation or explain why it's necessary to ignore. + // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.showSuccess(SUCCESS_OPTIONS_MOCK); expect(showApprovalRequest).toHaveBeenCalledTimes(1); @@ -1672,6 +1650,7 @@ describe('approval controller', () => { describe('error', () => { it('adds request with result error approval type', async () => { // TODO: Either fix this lint violation or explain why it's necessary to ignore. + // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.showError(ERROR_OPTIONS_MOCK); expectRequestAdded(APPROVAL_TYPE_RESULT_ERROR, ERROR_OPTIONS_MOCK); @@ -1679,6 +1658,7 @@ describe('approval controller', () => { it('adds request with no options', async () => { // TODO: Either fix this lint violation or explain why it's necessary to ignore. + // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.showError(); @@ -1692,6 +1672,7 @@ describe('approval controller', () => { it('only includes relevant options in request data', async () => { // TODO: Either fix this lint violation or explain why it's necessary to ignore. + // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.showError({ ...ERROR_OPTIONS_MOCK, @@ -1707,6 +1688,7 @@ describe('approval controller', () => { it('shows approval request', async () => { // TODO: Either fix this lint violation or explain why it's necessary to ignore. + // eslint-disable-next-line @typescript-eslint/no-floating-promises approvalController.showError(ERROR_OPTIONS_MOCK); expect(showApprovalRequest).toHaveBeenCalledTimes(1); diff --git a/packages/approval-controller/src/ApprovalController.ts b/packages/approval-controller/src/ApprovalController.ts index 0457c0aec89..73cf15154be 100644 --- a/packages/approval-controller/src/ApprovalController.ts +++ b/packages/approval-controller/src/ApprovalController.ts @@ -10,14 +10,14 @@ import { rpcErrors } from '@metamask/rpc-errors'; import type { Json, OptionalField } from '@metamask/utils'; import { nanoid } from 'nanoid'; -import type { ApprovalControllerMethodActions } from './ApprovalController-method-action-types'; +import type { ApprovalControllerMethodActions } from './ApprovalController-method-action-types.js'; import { ApprovalRequestNotFoundError, ApprovalRequestNoResultSupportError, EndInvalidFlowError, NoApprovalFlowsError, MissingApprovalFlowError, -} from './errors'; +} from './errors.js'; // Constants diff --git a/packages/approval-controller/src/index.ts b/packages/approval-controller/src/index.ts index 5a8f6173ff2..740667561c8 100644 --- a/packages/approval-controller/src/index.ts +++ b/packages/approval-controller/src/index.ts @@ -1,4 +1,4 @@ -export * from './ApprovalController'; +export * from './ApprovalController.js'; export type { ApprovalControllerAddRequestAction, ApprovalControllerAddAndShowApprovalRequestAction, @@ -16,5 +16,5 @@ export type { ApprovalControllerSetFlowLoadingTextAction, ApprovalControllerShowSuccessAction, ApprovalControllerShowErrorAction, -} from './ApprovalController-method-action-types'; -export * from './errors'; +} from './ApprovalController-method-action-types.js'; +export * from './errors.js'; From fa7277840eff764893554ff1cb803e9ed027f132 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:32:33 +0200 Subject: [PATCH 025/115] Fix ESLint errors for `client-controller` Add `.js` extensions to relative imports. --- .../src/ClientController-method-action-types.ts | 2 +- packages/client-controller/src/ClientController.test.ts | 6 +++--- packages/client-controller/src/ClientController.ts | 2 +- packages/client-controller/src/index.ts | 8 ++++---- packages/client-controller/src/selectors.ts | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/client-controller/src/ClientController-method-action-types.ts b/packages/client-controller/src/ClientController-method-action-types.ts index 966fc52fcdd..16932305f2d 100644 --- a/packages/client-controller/src/ClientController-method-action-types.ts +++ b/packages/client-controller/src/ClientController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { ClientController } from './ClientController'; +import type { ClientController } from './ClientController.js'; /** * Updates state with whether the MetaMask UI is open. diff --git a/packages/client-controller/src/ClientController.test.ts b/packages/client-controller/src/ClientController.test.ts index c7c7b7cf412..ffc378261c8 100644 --- a/packages/client-controller/src/ClientController.test.ts +++ b/packages/client-controller/src/ClientController.test.ts @@ -4,13 +4,13 @@ import type { ClientControllerActions, ClientControllerEvents, ClientControllerMessenger, -} from './ClientController'; +} from './ClientController.js'; import { ClientController, controllerName, getDefaultClientControllerState, -} from './ClientController'; -import { clientControllerSelectors } from './selectors'; +} from './ClientController.js'; +import { clientControllerSelectors } from './selectors.js'; describe('ClientController', () => { type RootMessenger = Messenger< diff --git a/packages/client-controller/src/ClientController.ts b/packages/client-controller/src/ClientController.ts index 78553c1a990..507a4fd18f0 100644 --- a/packages/client-controller/src/ClientController.ts +++ b/packages/client-controller/src/ClientController.ts @@ -6,7 +6,7 @@ import type { import { BaseController } from '@metamask/base-controller'; import type { Messenger } from '@metamask/messenger'; -import type { ClientControllerMethodActions } from './ClientController-method-action-types'; +import type { ClientControllerMethodActions } from './ClientController-method-action-types.js'; // === GENERAL === diff --git a/packages/client-controller/src/index.ts b/packages/client-controller/src/index.ts index 8695331b716..86aa4d5f54c 100644 --- a/packages/client-controller/src/index.ts +++ b/packages/client-controller/src/index.ts @@ -1,8 +1,8 @@ export { ClientController, getDefaultClientControllerState, -} from './ClientController'; -export { clientControllerSelectors } from './selectors'; +} from './ClientController.js'; +export { clientControllerSelectors } from './selectors.js'; export type { ClientControllerState, @@ -12,5 +12,5 @@ export type { ClientControllerStateChangeEvent, ClientControllerEvents, ClientControllerMessenger, -} from './ClientController'; -export type { ClientControllerSetUiOpenAction } from './ClientController-method-action-types'; +} from './ClientController.js'; +export type { ClientControllerSetUiOpenAction } from './ClientController-method-action-types.js'; diff --git a/packages/client-controller/src/selectors.ts b/packages/client-controller/src/selectors.ts index a8cefc6c5a3..132152a782c 100644 --- a/packages/client-controller/src/selectors.ts +++ b/packages/client-controller/src/selectors.ts @@ -1,4 +1,4 @@ -import type { ClientControllerState } from './ClientController'; +import type { ClientControllerState } from './ClientController.js'; /** * Selects whether the UI is currently open. From f9b820d65e4a4f6d3cd3ce3eda244664a6794375 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:32:33 +0200 Subject: [PATCH 026/115] Fix ESLint errors for `compliance-controller` Add `.js` extensions to relative imports. --- ...omplianceController-method-action-types.ts | 2 +- .../src/ComplianceController.test.ts | 10 +++++++--- .../src/ComplianceController.ts | 8 ++++---- .../ComplianceService-method-action-types.ts | 2 +- .../src/ComplianceService.test.ts | 5 +++-- .../src/ComplianceService.ts | 2 +- packages/compliance-controller/src/index.ts | 19 +++++++++++-------- .../compliance-controller/src/selectors.ts | 4 ++-- packages/compliance-controller/src/utils.ts | 2 +- 9 files changed, 31 insertions(+), 23 deletions(-) diff --git a/packages/compliance-controller/src/ComplianceController-method-action-types.ts b/packages/compliance-controller/src/ComplianceController-method-action-types.ts index 602222842ff..78e9fd43062 100644 --- a/packages/compliance-controller/src/ComplianceController-method-action-types.ts +++ b/packages/compliance-controller/src/ComplianceController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { ComplianceController } from './ComplianceController'; +import type { ComplianceController } from './ComplianceController.js'; /** * Checks compliance status for a single wallet address via the API and diff --git a/packages/compliance-controller/src/ComplianceController.test.ts b/packages/compliance-controller/src/ComplianceController.test.ts index 96e7d9d9509..35378071832 100644 --- a/packages/compliance-controller/src/ComplianceController.test.ts +++ b/packages/compliance-controller/src/ComplianceController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { toChecksumHexAddress } from '@metamask/controller-utils'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; @@ -7,9 +8,12 @@ import type { MessengerEvents, } from '@metamask/messenger'; -import { ComplianceController } from './ComplianceController'; -import type { ComplianceControllerMessenger } from './ComplianceController'; -import { selectAreAnyWalletsBlocked, selectIsWalletBlocked } from './selectors'; +import { ComplianceController } from './ComplianceController.js'; +import type { ComplianceControllerMessenger } from './ComplianceController.js'; +import { + selectAreAnyWalletsBlocked, + selectIsWalletBlocked, +} from './selectors.js'; const LOWERCASE_EVM_ADDRESS = '0x4e1ff7229bddaf0a73df183a88d9c3a04cc975e0'; const CHECKSUM_EVM_ADDRESS = toChecksumHexAddress(LOWERCASE_EVM_ADDRESS); diff --git a/packages/compliance-controller/src/ComplianceController.ts b/packages/compliance-controller/src/ComplianceController.ts index 4611b29f361..720441dde30 100644 --- a/packages/compliance-controller/src/ComplianceController.ts +++ b/packages/compliance-controller/src/ComplianceController.ts @@ -6,13 +6,13 @@ import type { import { BaseController } from '@metamask/base-controller'; import type { Messenger } from '@metamask/messenger'; -import type { ComplianceControllerMethodActions } from './ComplianceController-method-action-types'; +import type { ComplianceControllerMethodActions } from './ComplianceController-method-action-types.js'; import type { ComplianceServiceCheckWalletComplianceAction, ComplianceServiceCheckWalletsComplianceAction, -} from './ComplianceService-method-action-types'; -import type { WalletComplianceStatus } from './types'; -import { getWalletComplianceStatus } from './utils'; +} from './ComplianceService-method-action-types.js'; +import type { WalletComplianceStatus } from './types.js'; +import { getWalletComplianceStatus } from './utils.js'; // === GENERAL === diff --git a/packages/compliance-controller/src/ComplianceService-method-action-types.ts b/packages/compliance-controller/src/ComplianceService-method-action-types.ts index 602eee5b8fd..72948599d51 100644 --- a/packages/compliance-controller/src/ComplianceService-method-action-types.ts +++ b/packages/compliance-controller/src/ComplianceService-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { ComplianceService } from './ComplianceService'; +import type { ComplianceService } from './ComplianceService.js'; /** * Checks compliance status for a single wallet address. diff --git a/packages/compliance-controller/src/ComplianceService.test.ts b/packages/compliance-controller/src/ComplianceService.test.ts index 269d24d9587..8848610312e 100644 --- a/packages/compliance-controller/src/ComplianceService.test.ts +++ b/packages/compliance-controller/src/ComplianceService.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { HttpError } from '@metamask/controller-utils'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -7,8 +8,8 @@ import type { } from '@metamask/messenger'; import nock from 'nock'; -import type { ComplianceServiceMessenger } from './ComplianceService'; -import { ComplianceService } from './ComplianceService'; +import type { ComplianceServiceMessenger } from './ComplianceService.js'; +import { ComplianceService } from './ComplianceService.js'; const MOCK_API_URL = 'https://compliance.dev-api.cx.metamask.io'; const MOCK_PRODUCTION_API_URL = 'https://compliance.api.cx.metamask.io'; diff --git a/packages/compliance-controller/src/ComplianceService.ts b/packages/compliance-controller/src/ComplianceService.ts index 91fd92dece2..473da277132 100644 --- a/packages/compliance-controller/src/ComplianceService.ts +++ b/packages/compliance-controller/src/ComplianceService.ts @@ -8,7 +8,7 @@ import type { Infer } from '@metamask/superstruct'; import { array, boolean, object, string } from '@metamask/superstruct'; import type { IDisposable } from 'cockatiel'; -import type { ComplianceServiceMethodActions } from './ComplianceService-method-action-types'; +import type { ComplianceServiceMethodActions } from './ComplianceService-method-action-types.js'; // === GENERAL === diff --git a/packages/compliance-controller/src/index.ts b/packages/compliance-controller/src/index.ts index fa6d2463e91..c28a9c5e41e 100644 --- a/packages/compliance-controller/src/index.ts +++ b/packages/compliance-controller/src/index.ts @@ -4,12 +4,12 @@ export type { ComplianceServiceEvents, ComplianceServiceMessenger, ComplianceServiceOptions, -} from './ComplianceService'; +} from './ComplianceService.js'; export type { ComplianceServiceCheckWalletComplianceAction, ComplianceServiceCheckWalletsComplianceAction, -} from './ComplianceService-method-action-types'; -export { ComplianceService } from './ComplianceService'; +} from './ComplianceService-method-action-types.js'; +export { ComplianceService } from './ComplianceService.js'; export type { ComplianceControllerActions, ComplianceControllerEvents, @@ -17,15 +17,18 @@ export type { ComplianceControllerMessenger, ComplianceControllerState, ComplianceControllerStateChangeEvent, -} from './ComplianceController'; +} from './ComplianceController.js'; export type { ComplianceControllerCheckWalletComplianceAction, ComplianceControllerCheckWalletsComplianceAction, ComplianceControllerClearComplianceStateAction, -} from './ComplianceController-method-action-types'; +} from './ComplianceController-method-action-types.js'; export { ComplianceController, getDefaultComplianceControllerState, -} from './ComplianceController'; -export { selectAreAnyWalletsBlocked, selectIsWalletBlocked } from './selectors'; -export type { WalletComplianceStatus } from './types'; +} from './ComplianceController.js'; +export { + selectAreAnyWalletsBlocked, + selectIsWalletBlocked, +} from './selectors.js'; +export type { WalletComplianceStatus } from './types.js'; diff --git a/packages/compliance-controller/src/selectors.ts b/packages/compliance-controller/src/selectors.ts index 1e8f6a4bd7a..5d5660535ed 100644 --- a/packages/compliance-controller/src/selectors.ts +++ b/packages/compliance-controller/src/selectors.ts @@ -1,7 +1,7 @@ import { createSelector } from 'reselect'; -import type { ComplianceControllerState } from './ComplianceController'; -import { getWalletComplianceStatus } from './utils'; +import type { ComplianceControllerState } from './ComplianceController.js'; +import { getWalletComplianceStatus } from './utils.js'; const selectWalletComplianceStatusMap = ( state: ComplianceControllerState, diff --git a/packages/compliance-controller/src/utils.ts b/packages/compliance-controller/src/utils.ts index cdafbcc289e..cfc996186c0 100644 --- a/packages/compliance-controller/src/utils.ts +++ b/packages/compliance-controller/src/utils.ts @@ -3,7 +3,7 @@ import { isValidHexAddress, } from '@metamask/controller-utils'; -import type { WalletComplianceStatus } from './types'; +import type { WalletComplianceStatus } from './types.js'; export const getWalletComplianceStatus = ( statusMap: Record, From d18f4201673da00ce07c4dde653e67d85e79dced Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:32:33 +0200 Subject: [PATCH 027/115] Fix ESLint errors for `connectivity-controller` Add `.js` extensions to relative imports. --- .../ConnectivityController-method-action-types.ts | 2 +- .../src/ConnectivityController.test.ts | 9 +++++---- .../src/ConnectivityController.ts | 6 +++--- packages/connectivity-controller/src/index.ts | 12 ++++++------ .../connectivity-controller/src/selectors.test.ts | 6 +++--- packages/connectivity-controller/src/selectors.ts | 6 +++--- 6 files changed, 21 insertions(+), 20 deletions(-) diff --git a/packages/connectivity-controller/src/ConnectivityController-method-action-types.ts b/packages/connectivity-controller/src/ConnectivityController-method-action-types.ts index 456618d255d..ddc961f0a57 100644 --- a/packages/connectivity-controller/src/ConnectivityController-method-action-types.ts +++ b/packages/connectivity-controller/src/ConnectivityController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { ConnectivityController } from './ConnectivityController'; +import type { ConnectivityController } from './ConnectivityController.js'; /** * Initializes the controller by fetching the initial connectivity status. diff --git a/packages/connectivity-controller/src/ConnectivityController.test.ts b/packages/connectivity-controller/src/ConnectivityController.test.ts index b90c90d72ef..56ab109a270 100644 --- a/packages/connectivity-controller/src/ConnectivityController.test.ts +++ b/packages/connectivity-controller/src/ConnectivityController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -6,10 +7,10 @@ import type { MessengerEvents, } from '@metamask/messenger'; -import type { ConnectivityControllerMessenger } from './ConnectivityController'; -import { ConnectivityController } from './ConnectivityController'; -import { CONNECTIVITY_STATUSES } from './types'; -import type { ConnectivityAdapter, ConnectivityStatus } from './types'; +import type { ConnectivityControllerMessenger } from './ConnectivityController.js'; +import { ConnectivityController } from './ConnectivityController.js'; +import { CONNECTIVITY_STATUSES } from './types.js'; +import type { ConnectivityAdapter, ConnectivityStatus } from './types.js'; describe('ConnectivityController', () => { describe('constructor', () => { diff --git a/packages/connectivity-controller/src/ConnectivityController.ts b/packages/connectivity-controller/src/ConnectivityController.ts index b83312285f8..dd55086ed43 100644 --- a/packages/connectivity-controller/src/ConnectivityController.ts +++ b/packages/connectivity-controller/src/ConnectivityController.ts @@ -6,9 +6,9 @@ import type { import { BaseController } from '@metamask/base-controller'; import type { Messenger } from '@metamask/messenger'; -import { ConnectivityControllerMethodActions } from './ConnectivityController-method-action-types'; -import { CONNECTIVITY_STATUSES } from './types'; -import type { ConnectivityAdapter, ConnectivityStatus } from './types'; +import { ConnectivityControllerMethodActions } from './ConnectivityController-method-action-types.js'; +import { CONNECTIVITY_STATUSES } from './types.js'; +import type { ConnectivityAdapter, ConnectivityStatus } from './types.js'; /** * The name of the {@link ConnectivityController}, used to namespace the diff --git a/packages/connectivity-controller/src/index.ts b/packages/connectivity-controller/src/index.ts index 4cd875d8f89..3d6fdbd428c 100644 --- a/packages/connectivity-controller/src/index.ts +++ b/packages/connectivity-controller/src/index.ts @@ -5,12 +5,12 @@ export type { ConnectivityControllerStateChangeEvent, ConnectivityControllerEvents, ConnectivityControllerMessenger, -} from './ConnectivityController'; -export type { ConnectivityControllerSetConnectivityStatusAction } from './ConnectivityController-method-action-types'; -export type { ConnectivityAdapter, ConnectivityStatus } from './types'; -export { CONNECTIVITY_STATUSES } from './types'; +} from './ConnectivityController.js'; +export type { ConnectivityControllerSetConnectivityStatusAction } from './ConnectivityController-method-action-types.js'; +export type { ConnectivityAdapter, ConnectivityStatus } from './types.js'; +export { CONNECTIVITY_STATUSES } from './types.js'; export { ConnectivityController, getDefaultConnectivityControllerState, -} from './ConnectivityController'; -export { connectivityControllerSelectors } from './selectors'; +} from './ConnectivityController.js'; +export { connectivityControllerSelectors } from './selectors.js'; diff --git a/packages/connectivity-controller/src/selectors.test.ts b/packages/connectivity-controller/src/selectors.test.ts index 99eec99a459..80a363ded62 100644 --- a/packages/connectivity-controller/src/selectors.test.ts +++ b/packages/connectivity-controller/src/selectors.test.ts @@ -1,6 +1,6 @@ -import type { ConnectivityControllerState } from './ConnectivityController'; -import { connectivityControllerSelectors } from './selectors'; -import { CONNECTIVITY_STATUSES } from './types'; +import type { ConnectivityControllerState } from './ConnectivityController.js'; +import { connectivityControllerSelectors } from './selectors.js'; +import { CONNECTIVITY_STATUSES } from './types.js'; describe('connectivityControllerSelectors', () => { describe('selectConnectivityStatus', () => { diff --git a/packages/connectivity-controller/src/selectors.ts b/packages/connectivity-controller/src/selectors.ts index cea73cc5974..d8b442e6b76 100644 --- a/packages/connectivity-controller/src/selectors.ts +++ b/packages/connectivity-controller/src/selectors.ts @@ -1,8 +1,8 @@ import { createSelector } from 'reselect'; -import type { ConnectivityControllerState } from './ConnectivityController'; -import { CONNECTIVITY_STATUSES } from './types'; -import type { ConnectivityStatus } from './types'; +import type { ConnectivityControllerState } from './ConnectivityController.js'; +import { CONNECTIVITY_STATUSES } from './types.js'; +import type { ConnectivityStatus } from './types.js'; /** * Selects the connectivity status from the controller state. From 76f5c0d52a3215939465905bfe03f068667fa397 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:32:33 +0200 Subject: [PATCH 028/115] Fix ESLint errors for `geolocation-controller` Add `.js` extensions to relative imports. --- .../GeolocationController-method-action-types.ts | 2 +- .../src/GeolocationController.test.ts | 7 ++++--- .../src/GeolocationController.ts | 8 ++++---- ...eolocation-api-service-method-action-types.ts | 2 +- .../geolocation-api-service.test.ts | 7 ++++--- .../geolocation-api-service.ts | 4 ++-- packages/geolocation-controller/src/index.ts | 16 ++++++++-------- 7 files changed, 24 insertions(+), 22 deletions(-) diff --git a/packages/geolocation-controller/src/GeolocationController-method-action-types.ts b/packages/geolocation-controller/src/GeolocationController-method-action-types.ts index 400d6477e18..d330e47b25a 100644 --- a/packages/geolocation-controller/src/GeolocationController-method-action-types.ts +++ b/packages/geolocation-controller/src/GeolocationController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { GeolocationController } from './GeolocationController'; +import type { GeolocationController } from './GeolocationController.js'; /** * Returns the geolocation code. Delegates to the diff --git a/packages/geolocation-controller/src/GeolocationController.test.ts b/packages/geolocation-controller/src/GeolocationController.test.ts index 37c8a560347..3fa484afd20 100644 --- a/packages/geolocation-controller/src/GeolocationController.test.ts +++ b/packages/geolocation-controller/src/GeolocationController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -6,12 +7,12 @@ import type { MessengerEvents, } from '@metamask/messenger'; -import { UNKNOWN_LOCATION } from './geolocation-api-service/geolocation-api-service'; -import type { GeolocationControllerMessenger } from './GeolocationController'; +import { UNKNOWN_LOCATION } from './geolocation-api-service/geolocation-api-service.js'; +import type { GeolocationControllerMessenger } from './GeolocationController.js'; import { GeolocationController, getDefaultGeolocationControllerState, -} from './GeolocationController'; +} from './GeolocationController.js'; describe('GeolocationController', () => { describe('constructor', () => { diff --git a/packages/geolocation-controller/src/GeolocationController.ts b/packages/geolocation-controller/src/GeolocationController.ts index 4965a7afda8..cd1ba1a53c3 100644 --- a/packages/geolocation-controller/src/GeolocationController.ts +++ b/packages/geolocation-controller/src/GeolocationController.ts @@ -6,10 +6,10 @@ import type { import { BaseController } from '@metamask/base-controller'; import type { Messenger } from '@metamask/messenger'; -import { UNKNOWN_LOCATION } from './geolocation-api-service/geolocation-api-service'; -import type { GeolocationApiServiceFetchGeolocationAction } from './geolocation-api-service/geolocation-api-service-method-action-types'; -import type { GeolocationControllerMethodActions } from './GeolocationController-method-action-types'; -import type { GeolocationRequestStatus } from './types'; +import type { GeolocationApiServiceFetchGeolocationAction } from './geolocation-api-service/geolocation-api-service-method-action-types.js'; +import { UNKNOWN_LOCATION } from './geolocation-api-service/geolocation-api-service.js'; +import type { GeolocationControllerMethodActions } from './GeolocationController-method-action-types.js'; +import type { GeolocationRequestStatus } from './types.js'; /** * The name of the {@link GeolocationController}, used to namespace the diff --git a/packages/geolocation-controller/src/geolocation-api-service/geolocation-api-service-method-action-types.ts b/packages/geolocation-controller/src/geolocation-api-service/geolocation-api-service-method-action-types.ts index 9757ab999b2..68efa407e78 100644 --- a/packages/geolocation-controller/src/geolocation-api-service/geolocation-api-service-method-action-types.ts +++ b/packages/geolocation-controller/src/geolocation-api-service/geolocation-api-service-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { GeolocationApiService } from './geolocation-api-service'; +import type { GeolocationApiService } from './geolocation-api-service.js'; /** * Returns the geolocation code. Serves from cache when the TTL has not diff --git a/packages/geolocation-controller/src/geolocation-api-service/geolocation-api-service.test.ts b/packages/geolocation-controller/src/geolocation-api-service/geolocation-api-service.test.ts index 0aac0d8c06a..ab4555e4c31 100644 --- a/packages/geolocation-controller/src/geolocation-api-service/geolocation-api-service.test.ts +++ b/packages/geolocation-controller/src/geolocation-api-service/geolocation-api-service.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { HttpError } from '@metamask/controller-utils'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -6,12 +7,12 @@ import type { MessengerEvents, } from '@metamask/messenger'; -import { Env } from '../types'; -import type { GeolocationApiServiceMessenger } from './geolocation-api-service'; +import { Env } from '../types.js'; +import type { GeolocationApiServiceMessenger } from './geolocation-api-service.js'; import { GeolocationApiService, UNKNOWN_LOCATION, -} from './geolocation-api-service'; +} from './geolocation-api-service.js'; describe('GeolocationApiService', () => { beforeEach(() => { diff --git a/packages/geolocation-controller/src/geolocation-api-service/geolocation-api-service.ts b/packages/geolocation-controller/src/geolocation-api-service/geolocation-api-service.ts index 23c1798d4c2..c74a215d2b5 100644 --- a/packages/geolocation-controller/src/geolocation-api-service/geolocation-api-service.ts +++ b/packages/geolocation-controller/src/geolocation-api-service/geolocation-api-service.ts @@ -6,8 +6,8 @@ import { createServicePolicy, HttpError } from '@metamask/controller-utils'; import type { Messenger } from '@metamask/messenger'; import type { IDisposable } from 'cockatiel'; -import { Env } from '../types'; -import type { GeolocationApiServiceMethodActions } from './geolocation-api-service-method-action-types'; +import { Env } from '../types.js'; +import type { GeolocationApiServiceMethodActions } from './geolocation-api-service-method-action-types.js'; const DEFAULT_TTL_MS = 5 * 60 * 1000; diff --git a/packages/geolocation-controller/src/index.ts b/packages/geolocation-controller/src/index.ts index 05d773eaa65..d92ae556e3a 100644 --- a/packages/geolocation-controller/src/index.ts +++ b/packages/geolocation-controller/src/index.ts @@ -6,25 +6,25 @@ export type { GeolocationControllerEvents, GeolocationControllerMessenger, GeolocationControllerOptions, -} from './GeolocationController'; +} from './GeolocationController.js'; export type { GeolocationControllerGetGeolocationAction, GeolocationControllerRefreshGeolocationAction, -} from './GeolocationController-method-action-types'; -export type { GeolocationRequestStatus } from './types'; -export { Env } from './types'; +} from './GeolocationController-method-action-types.js'; +export type { GeolocationRequestStatus } from './types.js'; +export { Env } from './types.js'; export { GeolocationController, getDefaultGeolocationControllerState, -} from './GeolocationController'; +} from './GeolocationController.js'; export { GeolocationApiService, UNKNOWN_LOCATION, -} from './geolocation-api-service/geolocation-api-service'; +} from './geolocation-api-service/geolocation-api-service.js'; export type { GeolocationApiServiceMessenger, GeolocationApiServiceActions, GeolocationApiServiceEvents, FetchGeolocationOptions, -} from './geolocation-api-service/geolocation-api-service'; -export type { GeolocationApiServiceFetchGeolocationAction } from './geolocation-api-service/geolocation-api-service-method-action-types'; +} from './geolocation-api-service/geolocation-api-service.js'; +export type { GeolocationApiServiceFetchGeolocationAction } from './geolocation-api-service/geolocation-api-service-method-action-types.js'; From 6ac00217ab2d2d64558fb047d5fbd2b0ad5d5dd0 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:36:18 +0200 Subject: [PATCH 029/115] Fix ESLint errors for `keyring-controller` Add `.js` extensions to relative imports. --- packages/keyring-controller/package.json | 7 +++--- .../KeyringController-method-action-types.ts | 2 +- .../src/KeyringController.test.ts | 24 +++++++++---------- .../src/KeyringController.ts | 14 +++++------ .../keyring-controller/src/errors.test.ts | 4 ++-- packages/keyring-controller/src/errors.ts | 2 +- packages/keyring-controller/src/index.ts | 10 ++++---- .../tests/mocks/mockEncryptor.ts | 4 ++-- .../tests/mocks/mockErc4337Keyring.ts | 1 + 9 files changed, 34 insertions(+), 34 deletions(-) diff --git a/packages/keyring-controller/package.json b/packages/keyring-controller/package.json index d53b226e7ab..cd3503c5156 100644 --- a/packages/keyring-controller/package.json +++ b/packages/keyring-controller/package.json @@ -49,6 +49,7 @@ }, "dependencies": { "@ethereumjs/util": "^9.1.0", + "@ethereumjs/wallet": "^10.0.0", "@metamask/base-controller": "^9.1.0", "@metamask/browser-passworder": "^6.0.0", "@metamask/controller-utils": "^12.3.0", @@ -60,9 +61,8 @@ "@metamask/messenger": "^2.0.0", "@metamask/utils": "^11.11.0", "async-mutex": "^0.5.0", - "ethereumjs-wallet": "^1.0.1", "immer": "^9.0.6", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "ulid": "^2.3.0" }, "devDependencies": { @@ -80,8 +80,7 @@ "tsx": "^4.20.5", "typedoc": "^0.25.13", "typedoc-plugin-missing-exports": "^2.0.0", - "typescript": "~5.3.3", - "uuid": "^8.3.2" + "typescript": "~5.3.3" }, "engines": { "node": "^22.14.0 || ^24" diff --git a/packages/keyring-controller/src/KeyringController-method-action-types.ts b/packages/keyring-controller/src/KeyringController-method-action-types.ts index b469bc643db..8b8bf1d764f 100644 --- a/packages/keyring-controller/src/KeyringController-method-action-types.ts +++ b/packages/keyring-controller/src/KeyringController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { KeyringController } from './KeyringController'; +import type { KeyringController } from './KeyringController.js'; /** * Adds a new account to the default (first) HD seed phrase keyring. diff --git a/packages/keyring-controller/src/KeyringController.test.ts b/packages/keyring-controller/src/KeyringController.test.ts index 1052dd7b082..e19e0f66e27 100644 --- a/packages/keyring-controller/src/KeyringController.test.ts +++ b/packages/keyring-controller/src/KeyringController.test.ts @@ -1,6 +1,7 @@ import { Chain, Common, Hardfork } from '@ethereumjs/common'; import type { TypedTxData } from '@ethereumjs/tx'; import { TransactionFactory } from '@ethereumjs/tx'; +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { HdKeyring } from '@metamask/eth-hd-keyring'; import { @@ -30,17 +31,17 @@ import MockEncryptor, { DECRYPTION_ERROR, MOCK_ENCRYPTION_KEY, SALT, -} from '../tests/mocks/mockEncryptor'; -import { MockErc4337Keyring } from '../tests/mocks/mockErc4337Keyring'; +} from '../tests/mocks/mockEncryptor.js'; +import { MockErc4337Keyring } from '../tests/mocks/mockErc4337Keyring.js'; import { HardwareWalletError, MockHardwareKeyring, -} from '../tests/mocks/mockHardwareKeyring'; -import { MockKeyring } from '../tests/mocks/mockKeyring'; -import MockShallowKeyring from '../tests/mocks/mockShallowKeyring'; -import { buildMockTransaction } from '../tests/mocks/mockTransaction'; -import { KeyringControllerErrorMessage } from './constants'; -import { KeyringControllerError } from './errors'; +} from '../tests/mocks/mockHardwareKeyring.js'; +import { MockKeyring } from '../tests/mocks/mockKeyring.js'; +import MockShallowKeyring from '../tests/mocks/mockShallowKeyring.js'; +import { buildMockTransaction } from '../tests/mocks/mockTransaction.js'; +import { KeyringControllerErrorMessage } from './constants.js'; +import { KeyringControllerError } from './errors.js'; import type { KeyringControllerEvents, KeyringControllerMessenger, @@ -51,14 +52,14 @@ import type { SerializedKeyring, KeyringSelector, KeyringSelectorV2, -} from './KeyringController'; +} from './KeyringController.js'; import { AccountImportStrategy, KeyringController, KeyringTypes, isCustodyKeyring, keyringBuilderFactory, -} from './KeyringController'; +} from './KeyringController.js'; type AllKeyringControllerActions = MessengerActions; @@ -1326,8 +1327,7 @@ describe('KeyringController', () => { const normalizedInitialAccounts = controller.state.keyrings[0].accounts.map(normalize); const keyring = (await controller.getKeyringForAccount( - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - normalizedInitialAccounts[0]!, + normalizedInitialAccounts[0], )) as EthKeyring; expect(keyring.type).toBe('HD Key Tree'); expect(await keyring.getAccounts()).toStrictEqual( diff --git a/packages/keyring-controller/src/KeyringController.ts b/packages/keyring-controller/src/KeyringController.ts index a16ce8802bf..3bc14c5ad92 100644 --- a/packages/keyring-controller/src/KeyringController.ts +++ b/packages/keyring-controller/src/KeyringController.ts @@ -1,5 +1,6 @@ import type { TypedTransaction, TypedTxData } from '@ethereumjs/tx'; import { isValidPrivate, getBinarySize } from '@ethereumjs/util'; +import { Wallet, thirdparty as importers } from '@ethereumjs/wallet'; import { BaseController } from '@metamask/base-controller'; import type * as encryptorUtils from '@metamask/browser-passworder'; import { HdKeyring } from '@metamask/eth-hd-keyring'; @@ -37,21 +38,20 @@ import { } from '@metamask/utils'; import { Mutex } from 'async-mutex'; import type { MutexInterface } from 'async-mutex'; -import Wallet, { thirdparty as importers } from 'ethereumjs-wallet'; import type { Patch } from 'immer'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; // When generating a ULID within the same millisecond, monotonicFactory provides some guarantees regarding sort order. import { ulid } from 'ulid'; -import { KeyringControllerErrorMessage } from './constants'; -import { KeyringControllerError } from './errors'; -import type { KeyringControllerMethodActions } from './KeyringController-method-action-types'; +import { KeyringControllerErrorMessage } from './constants.js'; +import { KeyringControllerError } from './errors.js'; +import type { KeyringControllerMethodActions } from './KeyringController-method-action-types.js'; import type { Eip7702AuthorizationParams, Credentials, PersonalMessageParams, TypedMessageParams, -} from './types'; +} from './types.js'; const name = 'KeyringController'; @@ -1374,7 +1374,7 @@ export class KeyringController< let wallet; const [input, password] = args; try { - wallet = importers.fromEtherWallet(input, password); + wallet = await importers.fromEtherWallet(input, password); } catch { wallet = wallet ?? (await Wallet.fromV3(input, password, true)); } diff --git a/packages/keyring-controller/src/errors.test.ts b/packages/keyring-controller/src/errors.test.ts index bfa8f41cdfb..21426f3d5dc 100644 --- a/packages/keyring-controller/src/errors.test.ts +++ b/packages/keyring-controller/src/errors.test.ts @@ -1,9 +1,9 @@ -import { KeyringControllerErrorMessage } from './constants'; +import { KeyringControllerErrorMessage } from './constants.js'; import { isKeyringControllerError, isKeyringNotFoundError, KeyringControllerError, -} from './errors'; +} from './errors.js'; describe('isKeyringControllerError', () => { it('returns true for a KeyringControllerError', () => { diff --git a/packages/keyring-controller/src/errors.ts b/packages/keyring-controller/src/errors.ts index 3d81c18618f..e080719aa15 100644 --- a/packages/keyring-controller/src/errors.ts +++ b/packages/keyring-controller/src/errors.ts @@ -1,4 +1,4 @@ -import { KeyringControllerErrorMessage } from './constants'; +import { KeyringControllerErrorMessage } from './constants.js'; /** * Options for creating a KeyringControllerError. diff --git a/packages/keyring-controller/src/index.ts b/packages/keyring-controller/src/index.ts index 4c90ec97036..f1394113e80 100644 --- a/packages/keyring-controller/src/index.ts +++ b/packages/keyring-controller/src/index.ts @@ -1,4 +1,4 @@ -export * from './KeyringController'; +export * from './KeyringController.js'; export type { KeyringControllerAddNewAccountAction, KeyringControllerCreateNewVaultAndRestoreAction, @@ -35,7 +35,7 @@ export type { KeyringControllerExportEncryptionKeyAction, KeyringControllerSubmitPasswordAction, KeyringControllerGetAccountKeyringTypeAction, -} from './KeyringController-method-action-types'; -export type * from './types'; -export * from './errors'; -export { KeyringControllerErrorMessage } from './constants'; +} from './KeyringController-method-action-types.js'; +export type * from './types.js'; +export * from './errors.js'; +export { KeyringControllerErrorMessage } from './constants.js'; diff --git a/packages/keyring-controller/tests/mocks/mockEncryptor.ts b/packages/keyring-controller/tests/mocks/mockEncryptor.ts index 4b075f2b056..92e3acd7382 100644 --- a/packages/keyring-controller/tests/mocks/mockEncryptor.ts +++ b/packages/keyring-controller/tests/mocks/mockEncryptor.ts @@ -6,9 +6,9 @@ import type { EncryptionResult, } from '@metamask/browser-passworder'; import type { Json } from '@metamask/utils'; -import { isEqual } from 'lodash'; +import { isEqual } from 'lodash-es'; -import type { Encryptor } from '../../src/KeyringController'; +import type { Encryptor } from '../../src/KeyringController.js'; export const PASSWORD = 'password123'; export const SALT = 'salt'; diff --git a/packages/keyring-controller/tests/mocks/mockErc4337Keyring.ts b/packages/keyring-controller/tests/mocks/mockErc4337Keyring.ts index c56d7f7cae2..4ab2f3c5788 100644 --- a/packages/keyring-controller/tests/mocks/mockErc4337Keyring.ts +++ b/packages/keyring-controller/tests/mocks/mockErc4337Keyring.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { EthKeyring } from '@metamask/keyring-internal-api'; import type { Hex, Json } from '@metamask/utils'; From e4d865d19d5eef6538ce9ff05ecb724cf36cf79f Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:36:18 +0200 Subject: [PATCH 030/115] Fix ESLint errors for `logging-controller` Add `.js` extensions to relative imports. --- .../src/LoggingController-method-action-types.ts | 2 +- .../logging-controller/src/LoggingController.test.ts | 9 +++++---- packages/logging-controller/src/LoggingController.ts | 4 ++-- packages/logging-controller/src/index.ts | 6 +++--- packages/logging-controller/src/logTypes/EthSignLog.ts | 2 +- packages/logging-controller/src/logTypes/GenericLog.ts | 2 +- packages/logging-controller/src/logTypes/index.ts | 10 +++++----- 7 files changed, 18 insertions(+), 17 deletions(-) diff --git a/packages/logging-controller/src/LoggingController-method-action-types.ts b/packages/logging-controller/src/LoggingController-method-action-types.ts index 74d41e3e6e7..3e2fd71b6aa 100644 --- a/packages/logging-controller/src/LoggingController-method-action-types.ts +++ b/packages/logging-controller/src/LoggingController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { LoggingController } from './LoggingController'; +import type { LoggingController } from './LoggingController.js'; /** * Add log to the state. diff --git a/packages/logging-controller/src/LoggingController.test.ts b/packages/logging-controller/src/LoggingController.test.ts index 43fd99d7a7c..663ec3fedff 100644 --- a/packages/logging-controller/src/LoggingController.test.ts +++ b/packages/logging-controller/src/LoggingController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -7,10 +8,10 @@ import type { } from '@metamask/messenger'; import * as uuid from 'uuid'; -import type { LoggingControllerMessenger } from './LoggingController'; -import { LoggingController } from './LoggingController'; -import { LogType } from './logTypes'; -import { SigningMethod, SigningStage } from './logTypes/EthSignLog'; +import type { LoggingControllerMessenger } from './LoggingController.js'; +import { LoggingController } from './LoggingController.js'; +import { SigningMethod, SigningStage } from './logTypes/EthSignLog.js'; +import { LogType } from './logTypes/index.js'; jest.mock('uuid', () => { return { diff --git a/packages/logging-controller/src/LoggingController.ts b/packages/logging-controller/src/LoggingController.ts index 55c4a7bbb3b..f950cba141a 100644 --- a/packages/logging-controller/src/LoggingController.ts +++ b/packages/logging-controller/src/LoggingController.ts @@ -7,8 +7,8 @@ import { BaseController } from '@metamask/base-controller'; import type { Messenger } from '@metamask/messenger'; import { v1 as random } from 'uuid'; -import type { LoggingControllerMethodActions } from './LoggingController-method-action-types'; -import type { Log } from './logTypes'; +import type { LoggingControllerMethodActions } from './LoggingController-method-action-types.js'; +import type { Log } from './logTypes/index.js'; /** * LogEntry is the entry that will be added to the logging controller state. diff --git a/packages/logging-controller/src/index.ts b/packages/logging-controller/src/index.ts index aaf85b45b3b..662d5365fd7 100644 --- a/packages/logging-controller/src/index.ts +++ b/packages/logging-controller/src/index.ts @@ -1,6 +1,6 @@ -export * from './LoggingController'; +export * from './LoggingController.js'; export type { LoggingControllerAddAction, LoggingControllerClearAction, -} from './LoggingController-method-action-types'; -export * from './logTypes'; +} from './LoggingController-method-action-types.js'; +export * from './logTypes/index.js'; diff --git a/packages/logging-controller/src/logTypes/EthSignLog.ts b/packages/logging-controller/src/logTypes/EthSignLog.ts index 4c90e49ce46..7c58744c12c 100644 --- a/packages/logging-controller/src/logTypes/EthSignLog.ts +++ b/packages/logging-controller/src/logTypes/EthSignLog.ts @@ -1,4 +1,4 @@ -import type { LogType } from './LogType'; +import type { LogType } from './LogType.js'; /** * An enum of the signing method types that we are interested in logging. diff --git a/packages/logging-controller/src/logTypes/GenericLog.ts b/packages/logging-controller/src/logTypes/GenericLog.ts index 9a6e7870cad..2f398143658 100644 --- a/packages/logging-controller/src/logTypes/GenericLog.ts +++ b/packages/logging-controller/src/logTypes/GenericLog.ts @@ -1,4 +1,4 @@ -import type { LogType } from './LogType'; +import type { LogType } from './LogType.js'; /* * The logging controller can handle any kind of log statement that may benefit diff --git a/packages/logging-controller/src/logTypes/index.ts b/packages/logging-controller/src/logTypes/index.ts index e34adbc63a8..c8dc8436593 100644 --- a/packages/logging-controller/src/logTypes/index.ts +++ b/packages/logging-controller/src/logTypes/index.ts @@ -1,5 +1,5 @@ -import type { EthSignLog } from './EthSignLog'; -import type { GenericLog } from './GenericLog'; +import type { EthSignLog } from './EthSignLog.js'; +import type { GenericLog } from './GenericLog.js'; /** * Union of all possible log data structures. @@ -9,6 +9,6 @@ export type Log = EthSignLog | GenericLog; /** * Export all other types from these files for usage by clients */ -export * from './EthSignLog'; -export type * from './GenericLog'; -export * from './LogType'; +export * from './EthSignLog.js'; +export type * from './GenericLog.js'; +export * from './LogType.js'; From 1859f3ef0852e9e74716ec68763293a72fe31da3 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:36:18 +0200 Subject: [PATCH 031/115] Fix ESLint errors for `message-manager` Add `.js` extensions to relative imports. --- .../message-manager/src/AbstractMessageManager.test.ts | 5 +++-- .../message-manager/src/DecryptMessageManager.test.ts | 6 ++++-- packages/message-manager/src/DecryptMessageManager.ts | 6 +++--- .../src/EncryptionPublicKeyManager.test.ts | 6 ++++-- .../message-manager/src/EncryptionPublicKeyManager.ts | 6 +++--- packages/message-manager/src/index.ts | 8 ++++---- packages/message-manager/src/types.ts | 2 +- packages/message-manager/src/utils.test.ts | 2 +- packages/message-manager/src/utils.ts | 4 ++-- 9 files changed, 25 insertions(+), 20 deletions(-) diff --git a/packages/message-manager/src/AbstractMessageManager.test.ts b/packages/message-manager/src/AbstractMessageManager.test.ts index bd12258372f..a4f0f684d0b 100644 --- a/packages/message-manager/src/AbstractMessageManager.test.ts +++ b/packages/message-manager/src/AbstractMessageManager.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import type { ControllerGetStateAction, @@ -6,14 +7,14 @@ import type { import { ApprovalType } from '@metamask/controller-utils'; import type { Messenger } from '@metamask/messenger'; -import { AbstractMessageManager } from './AbstractMessageManager'; +import { AbstractMessageManager } from './AbstractMessageManager.js'; import type { AbstractMessage, AbstractMessageParams, MessageManagerState, MessageRequest, SecurityProviderRequest, -} from './AbstractMessageManager'; +} from './AbstractMessageManager.js'; type ConcreteMessage = AbstractMessage & { messageParams: ConcreteMessageParams; diff --git a/packages/message-manager/src/DecryptMessageManager.test.ts b/packages/message-manager/src/DecryptMessageManager.test.ts index 1e59533ae5f..c125cb57bca 100644 --- a/packages/message-manager/src/DecryptMessageManager.test.ts +++ b/packages/message-manager/src/DecryptMessageManager.test.ts @@ -1,5 +1,7 @@ -import { DecryptMessageManager } from './DecryptMessageManager'; -import type { DecryptMessageManagerMessenger } from './DecryptMessageManager'; +import { jest } from '@jest/globals'; + +import { DecryptMessageManager } from './DecryptMessageManager.js'; +import type { DecryptMessageManagerMessenger } from './DecryptMessageManager.js'; const mockMessenger = { registerActionHandler: jest.fn(), diff --git a/packages/message-manager/src/DecryptMessageManager.ts b/packages/message-manager/src/DecryptMessageManager.ts index 11c48f3941d..0292ba1726c 100644 --- a/packages/message-manager/src/DecryptMessageManager.ts +++ b/packages/message-manager/src/DecryptMessageManager.ts @@ -13,9 +13,9 @@ import type { MessageManagerState, MessageRequest, SecurityProviderRequest, -} from './AbstractMessageManager'; -import { AbstractMessageManager } from './AbstractMessageManager'; -import { normalizeMessageData, validateDecryptedMessageData } from './utils'; +} from './AbstractMessageManager.js'; +import { AbstractMessageManager } from './AbstractMessageManager.js'; +import { normalizeMessageData, validateDecryptedMessageData } from './utils.js'; const managerName = 'DecryptMessageManager'; diff --git a/packages/message-manager/src/EncryptionPublicKeyManager.test.ts b/packages/message-manager/src/EncryptionPublicKeyManager.test.ts index 81735a5fdaa..53a3d13a885 100644 --- a/packages/message-manager/src/EncryptionPublicKeyManager.test.ts +++ b/packages/message-manager/src/EncryptionPublicKeyManager.test.ts @@ -1,5 +1,7 @@ -import { EncryptionPublicKeyManager } from './EncryptionPublicKeyManager'; -import type { EncryptionPublicKeyManagerMessenger } from './EncryptionPublicKeyManager'; +import { jest } from '@jest/globals'; + +import { EncryptionPublicKeyManager } from './EncryptionPublicKeyManager.js'; +import type { EncryptionPublicKeyManagerMessenger } from './EncryptionPublicKeyManager.js'; const mockMessenger = { registerActionHandler: jest.fn(), diff --git a/packages/message-manager/src/EncryptionPublicKeyManager.ts b/packages/message-manager/src/EncryptionPublicKeyManager.ts index 371747725f2..c3464096dfb 100644 --- a/packages/message-manager/src/EncryptionPublicKeyManager.ts +++ b/packages/message-manager/src/EncryptionPublicKeyManager.ts @@ -12,9 +12,9 @@ import type { MessageManagerState, MessageRequest, SecurityProviderRequest, -} from './AbstractMessageManager'; -import { AbstractMessageManager } from './AbstractMessageManager'; -import { validateEncryptionPublicKeyMessageData } from './utils'; +} from './AbstractMessageManager.js'; +import { AbstractMessageManager } from './AbstractMessageManager.js'; +import { validateEncryptionPublicKeyMessageData } from './utils.js'; const managerName = 'EncryptionPublicKeyManager'; diff --git a/packages/message-manager/src/index.ts b/packages/message-manager/src/index.ts index bdcd9e46a88..0ab01d5a3a0 100644 --- a/packages/message-manager/src/index.ts +++ b/packages/message-manager/src/index.ts @@ -1,4 +1,4 @@ -export * from './AbstractMessageManager'; -export * from './EncryptionPublicKeyManager'; -export * from './DecryptMessageManager'; -export type * from './types'; +export * from './AbstractMessageManager.js'; +export * from './EncryptionPublicKeyManager.js'; +export * from './DecryptMessageManager.js'; +export type * from './types.js'; diff --git a/packages/message-manager/src/types.ts b/packages/message-manager/src/types.ts index dc580bd61d5..81726bbcf7f 100644 --- a/packages/message-manager/src/types.ts +++ b/packages/message-manager/src/types.ts @@ -1,6 +1,6 @@ import type { SIWEMessage } from '@metamask/controller-utils'; -import type { AbstractMessageParams } from './AbstractMessageManager'; +import type { AbstractMessageParams } from './AbstractMessageManager.js'; // Below types are have been moved into KeyringController, but are still exported here for backwards compatibility. diff --git a/packages/message-manager/src/utils.test.ts b/packages/message-manager/src/utils.test.ts index 01ac1327e08..936dab2c751 100644 --- a/packages/message-manager/src/utils.test.ts +++ b/packages/message-manager/src/utils.test.ts @@ -1,4 +1,4 @@ -import * as util from './utils'; +import * as util from './utils.js'; describe('utils', () => { it('normalizeMessageData', () => { diff --git a/packages/message-manager/src/utils.ts b/packages/message-manager/src/utils.ts index caa3aed7459..3fafade1e81 100644 --- a/packages/message-manager/src/utils.ts +++ b/packages/message-manager/src/utils.ts @@ -1,8 +1,8 @@ import { isValidHexAddress } from '@metamask/controller-utils'; import { add0x, bytesToHex, remove0x } from '@metamask/utils'; -import type { DecryptMessageParams } from './DecryptMessageManager'; -import type { EncryptionPublicKeyParams } from './EncryptionPublicKeyManager'; +import type { DecryptMessageParams } from './DecryptMessageManager.js'; +import type { EncryptionPublicKeyParams } from './EncryptionPublicKeyManager.js'; const hexRe = /^[0-9A-Fa-f]+$/gu; /** From b4d06ae91ee662eddaa6d1af78aa7ef886e46efa Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:36:18 +0200 Subject: [PATCH 032/115] Fix ESLint errors for `name-controller` Add `.js` extensions to relative imports and fix two `prefer-nullish-coalescing` violations. --- .../src/NameController-method-action-types.ts | 2 +- .../name-controller/src/NameController.test.ts | 9 +++++---- packages/name-controller/src/NameController.ts | 10 +++++----- packages/name-controller/src/index.ts | 14 +++++++------- packages/name-controller/src/providers/ens.test.ts | 6 ++++-- packages/name-controller/src/providers/ens.ts | 6 +++--- .../src/providers/etherscan.test.ts | 10 ++++++---- .../name-controller/src/providers/etherscan.ts | 10 +++++----- .../name-controller/src/providers/lens.test.ts | 8 +++++--- packages/name-controller/src/providers/lens.ts | 8 ++++---- .../name-controller/src/providers/token.test.ts | 8 +++++--- packages/name-controller/src/providers/token.ts | 8 ++++---- packages/name-controller/src/utils.test.ts | 4 +++- 13 files changed, 57 insertions(+), 46 deletions(-) diff --git a/packages/name-controller/src/NameController-method-action-types.ts b/packages/name-controller/src/NameController-method-action-types.ts index d7a91815569..13f91e9c04d 100644 --- a/packages/name-controller/src/NameController-method-action-types.ts +++ b/packages/name-controller/src/NameController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { NameController } from './NameController'; +import type { NameController } from './NameController.js'; /** * Set the user specified name for a value. diff --git a/packages/name-controller/src/NameController.test.ts b/packages/name-controller/src/NameController.test.ts index 403688fd249..832d118eed8 100644 --- a/packages/name-controller/src/NameController.test.ts +++ b/packages/name-controller/src/NameController.test.ts @@ -1,18 +1,19 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import type { SetNameRequest, UpdateProposedNamesRequest, NameControllerState, -} from './NameController'; +} from './NameController.js'; import { FALLBACK_VARIATION, NameController, NameOrigin, PROPOSED_NAME_EXPIRE_DURATION, -} from './NameController'; -import type { NameProvider } from './types'; -import { NameType } from './types'; +} from './NameController.js'; +import type { NameProvider } from './types.js'; +import { NameType } from './types.js'; const NAME_MOCK = 'TestName'; const PROPOSED_NAME_MOCK = 'TestProposedName'; diff --git a/packages/name-controller/src/NameController.ts b/packages/name-controller/src/NameController.ts index 1d9cb25c087..b6612cd8a42 100644 --- a/packages/name-controller/src/NameController.ts +++ b/packages/name-controller/src/NameController.ts @@ -6,14 +6,14 @@ import { BaseController } from '@metamask/base-controller'; import { isSafeDynamicKey } from '@metamask/controller-utils'; import type { Messenger } from '@metamask/messenger'; -import type { NameControllerMethodActions } from './NameController-method-action-types'; +import type { NameControllerMethodActions } from './NameController-method-action-types.js'; import type { NameProvider, NameProviderRequest, NameProviderResult, NameProviderSourceResult, -} from './types'; -import { NameType } from './types'; +} from './types.js'; +import { NameType } from './types.js'; export const FALLBACK_VARIATION = '*'; export const PROPOSED_NAME_EXPIRE_DURATION = 60 * 60 * 24; // 24 hours @@ -469,10 +469,10 @@ export class NameController extends BaseController< } this.update((state) => { - const typeEntries = state.names[type] || {}; + const typeEntries = state.names[type] ?? {}; state.names[type] = typeEntries; - const variationEntries = typeEntries[normalizedValue] || {}; + const variationEntries = typeEntries[normalizedValue] ?? {}; typeEntries[normalizedValue] = variationEntries; const entry = variationEntries[normalizedVariation] ?? { diff --git a/packages/name-controller/src/index.ts b/packages/name-controller/src/index.ts index 7a9bdceff5e..918c77eeb28 100644 --- a/packages/name-controller/src/index.ts +++ b/packages/name-controller/src/index.ts @@ -1,10 +1,10 @@ -export * from './NameController'; +export * from './NameController.js'; export type { NameControllerSetNameAction, NameControllerUpdateProposedNamesAction, -} from './NameController-method-action-types'; -export * from './types'; -export * from './providers/ens'; -export * from './providers/etherscan'; -export * from './providers/token'; -export * from './providers/lens'; +} from './NameController-method-action-types.js'; +export * from './types.js'; +export * from './providers/ens.js'; +export * from './providers/etherscan.js'; +export * from './providers/token.js'; +export * from './providers/lens.js'; diff --git a/packages/name-controller/src/providers/ens.test.ts b/packages/name-controller/src/providers/ens.test.ts index 126fb0cdcd7..4a96cf274a9 100644 --- a/packages/name-controller/src/providers/ens.test.ts +++ b/packages/name-controller/src/providers/ens.test.ts @@ -1,5 +1,7 @@ -import { NameType } from '../types'; -import { ENSNameProvider } from './ens'; +import { jest } from '@jest/globals'; + +import { NameType } from '../types.js'; +import { ENSNameProvider } from './ens.js'; jest.mock('../util'); diff --git a/packages/name-controller/src/providers/ens.ts b/packages/name-controller/src/providers/ens.ts index 84f7df329df..7f96fc7bb33 100644 --- a/packages/name-controller/src/providers/ens.ts +++ b/packages/name-controller/src/providers/ens.ts @@ -1,11 +1,11 @@ -import { projectLogger, createModuleLogger } from '../logger'; +import { projectLogger, createModuleLogger } from '../logger.js'; import type { NameProvider, NameProviderMetadata, NameProviderRequest, NameProviderResult, -} from '../types'; -import { NameType } from '../types'; +} from '../types.js'; +import { NameType } from '../types.js'; export type ReverseLookupCallback = ( address: string, diff --git a/packages/name-controller/src/providers/etherscan.test.ts b/packages/name-controller/src/providers/etherscan.test.ts index 78ae2d42e41..caeacaacb5c 100644 --- a/packages/name-controller/src/providers/etherscan.test.ts +++ b/packages/name-controller/src/providers/etherscan.test.ts @@ -1,7 +1,9 @@ -import { CHAIN_IDS } from '../constants'; -import { NameType } from '../types'; -import { handleFetch } from '../util'; -import { EtherscanNameProvider } from './etherscan'; +import { jest } from '@jest/globals'; + +import { CHAIN_IDS } from '../constants.js'; +import { NameType } from '../types.js'; +import { handleFetch } from '../util.js'; +import { EtherscanNameProvider } from './etherscan.js'; jest.mock('../util'); diff --git a/packages/name-controller/src/providers/etherscan.ts b/packages/name-controller/src/providers/etherscan.ts index 9d26e5db03b..bb0a81134e2 100644 --- a/packages/name-controller/src/providers/etherscan.ts +++ b/packages/name-controller/src/providers/etherscan.ts @@ -1,15 +1,15 @@ import { Mutex } from 'async-mutex'; -import { ETHERSCAN_SUPPORTED_NETWORKS } from '../constants'; -import { createModuleLogger, projectLogger } from '../logger'; +import { ETHERSCAN_SUPPORTED_NETWORKS } from '../constants.js'; +import { createModuleLogger, projectLogger } from '../logger.js'; import type { NameProvider, NameProviderMetadata, NameProviderRequest, NameProviderResult, -} from '../types'; -import { NameType } from '../types'; -import { handleFetch, assertIsError } from '../util'; +} from '../types.js'; +import { NameType } from '../types.js'; +import { handleFetch, assertIsError } from '../util.js'; const ID = 'etherscan'; const LABEL = 'Etherscan (Verified Contract Name)'; diff --git a/packages/name-controller/src/providers/lens.test.ts b/packages/name-controller/src/providers/lens.test.ts index dc22770dbf3..68efeaddda2 100644 --- a/packages/name-controller/src/providers/lens.test.ts +++ b/packages/name-controller/src/providers/lens.test.ts @@ -1,6 +1,8 @@ -import { NameType } from '../types'; -import { graphQL } from '../util'; -import { LensNameProvider } from './lens'; +import { jest } from '@jest/globals'; + +import { NameType } from '../types.js'; +import { graphQL } from '../util.js'; +import { LensNameProvider } from './lens.js'; jest.mock('../util'); diff --git a/packages/name-controller/src/providers/lens.ts b/packages/name-controller/src/providers/lens.ts index b3560c1e7f5..483d1c23705 100644 --- a/packages/name-controller/src/providers/lens.ts +++ b/packages/name-controller/src/providers/lens.ts @@ -1,12 +1,12 @@ -import { createModuleLogger, projectLogger } from '../logger'; +import { createModuleLogger, projectLogger } from '../logger.js'; import type { NameProvider, NameProviderMetadata, NameProviderRequest, NameProviderResult, -} from '../types'; -import { NameType } from '../types'; -import { graphQL } from '../util'; +} from '../types.js'; +import { NameType } from '../types.js'; +import { graphQL } from '../util.js'; const ID = 'lens'; const LABEL = 'Lens Protocol'; diff --git a/packages/name-controller/src/providers/token.test.ts b/packages/name-controller/src/providers/token.test.ts index 4215e2dfe51..d5074a2cdc2 100644 --- a/packages/name-controller/src/providers/token.test.ts +++ b/packages/name-controller/src/providers/token.test.ts @@ -1,6 +1,8 @@ -import { NameType } from '../types'; -import { handleFetch } from '../util'; -import { TokenNameProvider } from './token'; +import { jest } from '@jest/globals'; + +import { NameType } from '../types.js'; +import { handleFetch } from '../util.js'; +import { TokenNameProvider } from './token.js'; jest.mock('../util'); diff --git a/packages/name-controller/src/providers/token.ts b/packages/name-controller/src/providers/token.ts index b082439caba..9ca9760acc4 100644 --- a/packages/name-controller/src/providers/token.ts +++ b/packages/name-controller/src/providers/token.ts @@ -1,12 +1,12 @@ -import { createModuleLogger, projectLogger } from '../logger'; +import { createModuleLogger, projectLogger } from '../logger.js'; import type { NameProvider, NameProviderMetadata, NameProviderRequest, NameProviderResult, -} from '../types'; -import { NameType } from '../types'; -import { handleFetch } from '../util'; +} from '../types.js'; +import { NameType } from '../types.js'; +import { handleFetch } from '../util.js'; const ID = 'token'; const LABEL = 'Blockchain (Token Name)'; diff --git a/packages/name-controller/src/utils.test.ts b/packages/name-controller/src/utils.test.ts index 44b498c6c7b..6ad33a1046f 100644 --- a/packages/name-controller/src/utils.test.ts +++ b/packages/name-controller/src/utils.test.ts @@ -1,4 +1,6 @@ -import { assertIsError, graphQL } from './util'; +import { jest } from '@jest/globals'; + +import { assertIsError, graphQL } from './util.js'; describe('Utils', () => { describe('graphQL', () => { From 5b9fb707a866746c4e26d653d098dce01586cb81 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:36:18 +0200 Subject: [PATCH 033/115] Fix ESLint errors for `passkey-controller` Add `.js` extensions to relative imports. --- .../PasskeyController-method-action-types.ts | 2 +- .../src/PasskeyController.test.ts | 20 +++++++------ .../src/PasskeyController.ts | 28 +++++++++---------- .../src/ceremony-manager.test.ts | 4 ++- .../src/ceremony-manager.ts | 2 +- .../passkey-controller/src/errors.test.ts | 4 +-- packages/passkey-controller/src/errors.ts | 2 +- packages/passkey-controller/src/index.ts | 14 +++++----- .../src/key-derivation.test.ts | 12 ++++---- .../passkey-controller/src/key-derivation.ts | 12 ++++---- packages/passkey-controller/src/logger.ts | 2 +- .../src/utils/crypto.test.ts | 4 +-- .../passkey-controller/src/utils/crypto.ts | 2 +- .../src/utils/encoding.test.ts | 2 +- .../decode-attestation-object.test.ts | 4 +-- .../src/webauthn/decode-attestation-object.ts | 2 +- .../webauthn/decode-client-data-json.test.ts | 2 +- .../src/webauthn/decode-client-data-json.ts | 4 +-- .../src/webauthn/match-expected-rp-id.test.ts | 2 +- .../src/webauthn/match-expected-rp-id.ts | 2 +- .../webauthn/parse-authenticator-data.test.ts | 4 +-- .../src/webauthn/parse-authenticator-data.ts | 5 +++- .../passkey-controller/src/webauthn/types.ts | 2 +- .../verify-authentication-response.test.ts | 8 +++--- .../verify-authentication-response.ts | 16 +++++------ .../verify-registration-response.test.ts | 14 +++++----- .../webauthn/verify-registration-response.ts | 18 ++++++------ .../src/webauthn/verify-signature.test.ts | 6 ++-- .../src/webauthn/verify-signature.ts | 4 +-- 29 files changed, 106 insertions(+), 97 deletions(-) diff --git a/packages/passkey-controller/src/PasskeyController-method-action-types.ts b/packages/passkey-controller/src/PasskeyController-method-action-types.ts index fbf2b329ea6..be36cd986db 100644 --- a/packages/passkey-controller/src/PasskeyController-method-action-types.ts +++ b/packages/passkey-controller/src/PasskeyController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { PasskeyController } from './PasskeyController'; +import type { PasskeyController } from './PasskeyController.js'; /** * Whether a passkey is enrolled and vault key material is stored. diff --git a/packages/passkey-controller/src/PasskeyController.test.ts b/packages/passkey-controller/src/PasskeyController.test.ts index 75d6698b5a3..61bdf38eb4d 100644 --- a/packages/passkey-controller/src/PasskeyController.test.ts +++ b/packages/passkey-controller/src/PasskeyController.test.ts @@ -1,26 +1,30 @@ +import { jest } from '@jest/globals'; import { Messenger } from '@metamask/messenger'; -import { CEREMONY_MAX_AGE_MS, WEBAUTHN_TIMEOUT_MS } from './ceremony-manager'; +import { + CEREMONY_MAX_AGE_MS, + WEBAUTHN_TIMEOUT_MS, +} from './ceremony-manager.js'; import { PasskeyControllerErrorCode, PasskeyControllerErrorMessage, -} from './constants'; -import { PasskeyControllerError } from './errors'; +} from './constants.js'; +import { PasskeyControllerError } from './errors.js'; import { getDefaultPasskeyControllerState, passkeyControllerSelectors, PasskeyController, -} from './PasskeyController'; +} from './PasskeyController.js'; import type { PasskeyControllerMessenger, PasskeyControllerState, -} from './PasskeyController'; -import type { PasskeyRecord, PrfClientExtensionResults } from './types'; -import * as passkeyCrypto from './utils/crypto'; +} from './PasskeyController.js'; +import type { PasskeyRecord, PrfClientExtensionResults } from './types.js'; +import * as passkeyCrypto from './utils/crypto.js'; import type { PasskeyRegistrationResponse, PasskeyAuthenticationResponse, -} from './webauthn/types'; +} from './webauthn/types.js'; type ExtOutputsWithPrf = Record & PrfClientExtensionResults; diff --git a/packages/passkey-controller/src/PasskeyController.ts b/packages/passkey-controller/src/PasskeyController.ts index 6104d56a5e5..0ac0733f3d5 100644 --- a/packages/passkey-controller/src/PasskeyController.ts +++ b/packages/passkey-controller/src/PasskeyController.ts @@ -7,39 +7,39 @@ import { BaseController } from '@metamask/base-controller'; import type { Messenger } from '@metamask/messenger'; import { areUint8ArraysEqual, stringToBytes } from '@metamask/utils'; -import { WEBAUTHN_TIMEOUT_MS, CeremonyManager } from './ceremony-manager'; +import { WEBAUTHN_TIMEOUT_MS, CeremonyManager } from './ceremony-manager.js'; import { controllerName, PasskeyControllerErrorCode, PasskeyControllerErrorMessage, -} from './constants'; -import { PasskeyControllerError } from './errors'; -import { deriveKeyFromAuthenticationResponse } from './key-derivation'; -import { createModuleLogger, projectLogger } from './logger'; -import { PasskeyControllerMethodActions } from './PasskeyController-method-action-types'; +} from './constants.js'; +import { PasskeyControllerError } from './errors.js'; +import { deriveKeyFromAuthenticationResponse } from './key-derivation.js'; +import { createModuleLogger, projectLogger } from './logger.js'; +import { PasskeyControllerMethodActions } from './PasskeyController-method-action-types.js'; import type { AuthenticatorTransportFuture, PasskeyCredentialInfo, PasskeyKeyDerivation, PasskeyRecord, PrfClientExtensionResults, -} from './types'; +} from './types.js'; import { decryptWithKey, encryptWithKey, randomBytesToBase64URL, -} from './utils/crypto'; -import { base64URLToBytes, bytesToBase64URL } from './utils/encoding'; -import { COSEALG } from './webauthn/constants'; -import { decodeClientDataJSON } from './webauthn/decode-client-data-json'; +} from './utils/crypto.js'; +import { base64URLToBytes, bytesToBase64URL } from './utils/encoding.js'; +import { COSEALG } from './webauthn/constants.js'; +import { decodeClientDataJSON } from './webauthn/decode-client-data-json.js'; import type { PasskeyAuthenticationOptions, PasskeyAuthenticationResponse, PasskeyRegistrationOptions, PasskeyRegistrationResponse, -} from './webauthn/types'; -import { verifyAuthenticationResponse } from './webauthn/verify-authentication-response'; -import { verifyRegistrationResponse } from './webauthn/verify-registration-response'; +} from './webauthn/types.js'; +import { verifyAuthenticationResponse } from './webauthn/verify-authentication-response.js'; +import { verifyRegistrationResponse } from './webauthn/verify-registration-response.js'; export type PasskeyControllerState = { passkeyRecord: PasskeyRecord | null; diff --git a/packages/passkey-controller/src/ceremony-manager.test.ts b/packages/passkey-controller/src/ceremony-manager.test.ts index 8043eb5f7a5..13866b510be 100644 --- a/packages/passkey-controller/src/ceremony-manager.test.ts +++ b/packages/passkey-controller/src/ceremony-manager.test.ts @@ -1,8 +1,10 @@ +import { jest } from '@jest/globals'; + import { CEREMONY_MAX_AGE_MS, CeremonyManager, MAX_CONCURRENT_PASSKEY_CEREMONIES, -} from './ceremony-manager'; +} from './ceremony-manager.js'; describe('CeremonyManager', () => { const baseReg = { userHandle: 'u' }; diff --git a/packages/passkey-controller/src/ceremony-manager.ts b/packages/passkey-controller/src/ceremony-manager.ts index 2e9aa5f368c..71bce5f686f 100644 --- a/packages/passkey-controller/src/ceremony-manager.ts +++ b/packages/passkey-controller/src/ceremony-manager.ts @@ -1,7 +1,7 @@ import type { PasskeyAuthenticationCeremony, PasskeyRegistrationCeremony, -} from './types'; +} from './types.js'; /** WebAuthn `timeout` for credential creation and assertion (ms). */ export const WEBAUTHN_TIMEOUT_MS = 60_000; diff --git a/packages/passkey-controller/src/errors.test.ts b/packages/passkey-controller/src/errors.test.ts index ccd249f4d01..ccc06f504ab 100644 --- a/packages/passkey-controller/src/errors.test.ts +++ b/packages/passkey-controller/src/errors.test.ts @@ -1,8 +1,8 @@ import { PasskeyControllerErrorCode, PasskeyControllerErrorMessage, -} from './constants'; -import { PasskeyControllerError } from './errors'; +} from './constants.js'; +import { PasskeyControllerError } from './errors.js'; describe('PasskeyControllerError', () => { it('sets code and cause from options', () => { diff --git a/packages/passkey-controller/src/errors.ts b/packages/passkey-controller/src/errors.ts index e0bbf6ebbe4..f6c08c25abb 100644 --- a/packages/passkey-controller/src/errors.ts +++ b/packages/passkey-controller/src/errors.ts @@ -1,4 +1,4 @@ -import type { PasskeyControllerErrorCode as PasskeyControllerErrorCodeType } from './constants'; +import type { PasskeyControllerErrorCode as PasskeyControllerErrorCodeType } from './constants.js'; /** * Options for creating a {@link PasskeyControllerError}. diff --git a/packages/passkey-controller/src/index.ts b/packages/passkey-controller/src/index.ts index d128b64b320..59d0e80dd7d 100644 --- a/packages/passkey-controller/src/index.ts +++ b/packages/passkey-controller/src/index.ts @@ -1,13 +1,13 @@ export { PasskeyControllerErrorCode, PasskeyControllerErrorMessage, -} from './constants'; -export { PasskeyControllerError } from './errors'; +} from './constants.js'; +export { PasskeyControllerError } from './errors.js'; export { PasskeyController, getDefaultPasskeyControllerState, passkeyControllerSelectors, -} from './PasskeyController'; +} from './PasskeyController.js'; export type { PasskeyControllerState, PasskeyControllerMessenger, @@ -15,7 +15,7 @@ export type { PasskeyControllerActions, PasskeyControllerStateChangedEvent, PasskeyControllerEvents, -} from './PasskeyController'; +} from './PasskeyController.js'; export type { PasskeyCredentialInfo, PasskeyDerivationMethod, @@ -23,13 +23,13 @@ export type { PasskeyRecord, PrfEvalExtension, PrfClientExtensionResults, -} from './types'; +} from './types.js'; export type { PasskeyRegistrationOptions, PasskeyRegistrationResponse, PasskeyAuthenticationOptions, PasskeyAuthenticationResponse, -} from './webauthn/types'; +} from './webauthn/types.js'; export type { PasskeyControllerIsPasskeyEnrolledAction, PasskeyControllerGenerateRegistrationOptionsAction, @@ -42,4 +42,4 @@ export type { PasskeyControllerRemovePasskeyAction, PasskeyControllerClearStateAction, PasskeyControllerDestroyAction, -} from './PasskeyController-method-action-types'; +} from './PasskeyController-method-action-types.js'; diff --git a/packages/passkey-controller/src/key-derivation.test.ts b/packages/passkey-controller/src/key-derivation.test.ts index 50cc9129191..d8b89b205df 100644 --- a/packages/passkey-controller/src/key-derivation.test.ts +++ b/packages/passkey-controller/src/key-derivation.test.ts @@ -1,9 +1,9 @@ -import { PasskeyControllerErrorMessage } from './constants'; -import { deriveKeyFromAuthenticationResponse } from './key-derivation'; -import { PasskeyRecord } from './types'; -import { deriveEncryptionKey } from './utils/crypto'; -import { base64URLToBytes } from './utils/encoding'; -import type { PasskeyAuthenticationResponse } from './webauthn/types'; +import { PasskeyControllerErrorMessage } from './constants.js'; +import { deriveKeyFromAuthenticationResponse } from './key-derivation.js'; +import { PasskeyRecord } from './types.js'; +import { deriveEncryptionKey } from './utils/crypto.js'; +import { base64URLToBytes } from './utils/encoding.js'; +import type { PasskeyAuthenticationResponse } from './webauthn/types.js'; function b64url(str: string): string { return btoa(str) diff --git a/packages/passkey-controller/src/key-derivation.ts b/packages/passkey-controller/src/key-derivation.ts index 5224f70f4ec..b9381d7ec56 100644 --- a/packages/passkey-controller/src/key-derivation.ts +++ b/packages/passkey-controller/src/key-derivation.ts @@ -1,12 +1,12 @@ import { PasskeyControllerErrorCode, PasskeyControllerErrorMessage, -} from './constants'; -import { PasskeyControllerError } from './errors'; -import type { PasskeyRecord, PrfClientExtensionResults } from './types'; -import { deriveEncryptionKey } from './utils/crypto'; -import { base64URLToBytes } from './utils/encoding'; -import type { PasskeyAuthenticationResponse } from './webauthn/types'; +} from './constants.js'; +import { PasskeyControllerError } from './errors.js'; +import type { PasskeyRecord, PrfClientExtensionResults } from './types.js'; +import { deriveEncryptionKey } from './utils/crypto.js'; +import { base64URLToBytes } from './utils/encoding.js'; +import type { PasskeyAuthenticationResponse } from './webauthn/types.js'; /** * Derives an AES-256 wrapping key from a WebAuthn authentication ceremony diff --git a/packages/passkey-controller/src/logger.ts b/packages/passkey-controller/src/logger.ts index 81fa93678f7..daf14c8fe3d 100644 --- a/packages/passkey-controller/src/logger.ts +++ b/packages/passkey-controller/src/logger.ts @@ -2,7 +2,7 @@ import { createProjectLogger, createModuleLogger } from '@metamask/utils'; -import { controllerName } from './constants'; +import { controllerName } from './constants.js'; export const projectLogger = createProjectLogger(controllerName); diff --git a/packages/passkey-controller/src/utils/crypto.test.ts b/packages/passkey-controller/src/utils/crypto.test.ts index 1b5908a6fcd..fe40d1165a3 100644 --- a/packages/passkey-controller/src/utils/crypto.test.ts +++ b/packages/passkey-controller/src/utils/crypto.test.ts @@ -3,8 +3,8 @@ import { deriveEncryptionKey, encryptWithKey, randomBytesToBase64URL, -} from './crypto'; -import { base64URLToBytes } from './encoding'; +} from './crypto.js'; +import { base64URLToBytes } from './encoding.js'; describe('crypto', () => { describe('randomBytesToBase64URL', () => { diff --git a/packages/passkey-controller/src/utils/crypto.ts b/packages/passkey-controller/src/utils/crypto.ts index 17280b0512e..69dab28e277 100644 --- a/packages/passkey-controller/src/utils/crypto.ts +++ b/packages/passkey-controller/src/utils/crypto.ts @@ -4,7 +4,7 @@ import { randomBytes } from '@noble/ciphers/webcrypto'; import { hkdf } from '@noble/hashes/hkdf'; import { sha256 } from '@noble/hashes/sha2'; -import { bytesToBase64URL } from './encoding'; +import { bytesToBase64URL } from './encoding.js'; const PASSKEY_HKDF_INFO = 'metamask:passkey:encryption-key:v1'; diff --git a/packages/passkey-controller/src/utils/encoding.test.ts b/packages/passkey-controller/src/utils/encoding.test.ts index beed5b7a572..cf670000943 100644 --- a/packages/passkey-controller/src/utils/encoding.test.ts +++ b/packages/passkey-controller/src/utils/encoding.test.ts @@ -1,4 +1,4 @@ -import { bytesToBase64URL, base64URLToBytes } from './encoding'; +import { bytesToBase64URL, base64URLToBytes } from './encoding.js'; describe('encoding', () => { describe('bytesToBase64URL', () => { diff --git a/packages/passkey-controller/src/webauthn/decode-attestation-object.test.ts b/packages/passkey-controller/src/webauthn/decode-attestation-object.test.ts index f4532c505a4..fdabcb05c84 100644 --- a/packages/passkey-controller/src/webauthn/decode-attestation-object.test.ts +++ b/packages/passkey-controller/src/webauthn/decode-attestation-object.test.ts @@ -1,5 +1,5 @@ -import { base64URLToBytes } from '../utils/encoding'; -import { decodeAttestationObject } from './decode-attestation-object'; +import { base64URLToBytes } from '../utils/encoding.js'; +import { decodeAttestationObject } from './decode-attestation-object.js'; describe('decodeAttestationObject', () => { it('decodes base64url-encoded indirect attestationObject', () => { diff --git a/packages/passkey-controller/src/webauthn/decode-attestation-object.ts b/packages/passkey-controller/src/webauthn/decode-attestation-object.ts index 21c3a4da218..d7c06418217 100644 --- a/packages/passkey-controller/src/webauthn/decode-attestation-object.ts +++ b/packages/passkey-controller/src/webauthn/decode-attestation-object.ts @@ -1,6 +1,6 @@ import { decodePartialCBOR } from '@levischuck/tiny-cbor'; -import type { AttestationObject } from './types'; +import type { AttestationObject } from './types.js'; /** * CBOR-decode an attestationObject buffer into a Map with `fmt`, `attStmt`, diff --git a/packages/passkey-controller/src/webauthn/decode-client-data-json.test.ts b/packages/passkey-controller/src/webauthn/decode-client-data-json.test.ts index 7c6e72404f4..81837f6a7b4 100644 --- a/packages/passkey-controller/src/webauthn/decode-client-data-json.test.ts +++ b/packages/passkey-controller/src/webauthn/decode-client-data-json.test.ts @@ -1,4 +1,4 @@ -import { decodeClientDataJSON } from './decode-client-data-json'; +import { decodeClientDataJSON } from './decode-client-data-json.js'; describe('decodeClientDataJSON', () => { it('converts base64url-encoded attestation clientDataJSON to JSON', () => { diff --git a/packages/passkey-controller/src/webauthn/decode-client-data-json.ts b/packages/passkey-controller/src/webauthn/decode-client-data-json.ts index e3881b30331..204246a2efb 100644 --- a/packages/passkey-controller/src/webauthn/decode-client-data-json.ts +++ b/packages/passkey-controller/src/webauthn/decode-client-data-json.ts @@ -1,5 +1,5 @@ -import { base64URLToBytes } from '../utils/encoding'; -import type { ClientDataJSON } from './types'; +import { base64URLToBytes } from '../utils/encoding.js'; +import type { ClientDataJSON } from './types.js'; /** * Decode an authenticator's base64url-encoded clientDataJSON to JSON. diff --git a/packages/passkey-controller/src/webauthn/match-expected-rp-id.test.ts b/packages/passkey-controller/src/webauthn/match-expected-rp-id.test.ts index c746504d2c6..95e8232a22a 100644 --- a/packages/passkey-controller/src/webauthn/match-expected-rp-id.test.ts +++ b/packages/passkey-controller/src/webauthn/match-expected-rp-id.test.ts @@ -1,6 +1,6 @@ import { sha256 } from '@noble/hashes/sha2'; -import { matchExpectedRPID } from './match-expected-rp-id'; +import { matchExpectedRPID } from './match-expected-rp-id.js'; describe('matchExpectedRPID', () => { it('throws when no RP ID matches', () => { diff --git a/packages/passkey-controller/src/webauthn/match-expected-rp-id.ts b/packages/passkey-controller/src/webauthn/match-expected-rp-id.ts index 8faba44d6d5..e7930abc6f8 100644 --- a/packages/passkey-controller/src/webauthn/match-expected-rp-id.ts +++ b/packages/passkey-controller/src/webauthn/match-expected-rp-id.ts @@ -1,7 +1,7 @@ import { areUint8ArraysEqual } from '@metamask/utils'; import { sha256 } from '@noble/hashes/sha2'; -import { bytesToHex } from '../utils/encoding'; +import { bytesToHex } from '../utils/encoding.js'; /** * Verify that an authenticator data rpIdHash matches one of the expected diff --git a/packages/passkey-controller/src/webauthn/parse-authenticator-data.test.ts b/packages/passkey-controller/src/webauthn/parse-authenticator-data.test.ts index 825215db4e7..2d1083beed9 100644 --- a/packages/passkey-controller/src/webauthn/parse-authenticator-data.test.ts +++ b/packages/passkey-controller/src/webauthn/parse-authenticator-data.test.ts @@ -2,8 +2,8 @@ import { encodeCBOR } from '@levischuck/tiny-cbor'; import { base64ToBytes, bytesToBase64 } from '@metamask/utils'; import { sha256 } from '@noble/hashes/sha2'; -import { bytesToBase64URL } from '../utils/encoding'; -import { parseAuthenticatorData } from './parse-authenticator-data'; +import { bytesToBase64URL } from '../utils/encoding.js'; +import { parseAuthenticatorData } from './parse-authenticator-data.js'; /** * Conformance vectors from SimpleWebAuthn `parseAuthenticatorData.test.ts` diff --git a/packages/passkey-controller/src/webauthn/parse-authenticator-data.ts b/packages/passkey-controller/src/webauthn/parse-authenticator-data.ts index a60840690c1..d88c71b83e7 100644 --- a/packages/passkey-controller/src/webauthn/parse-authenticator-data.ts +++ b/packages/passkey-controller/src/webauthn/parse-authenticator-data.ts @@ -1,6 +1,9 @@ import { decodePartialCBOR } from '@levischuck/tiny-cbor'; -import type { ParsedAuthenticatorData, AuthenticatorDataFlags } from './types'; +import type { + ParsedAuthenticatorData, + AuthenticatorDataFlags, +} from './types.js'; /* eslint-disable no-bitwise */ diff --git a/packages/passkey-controller/src/webauthn/types.ts b/packages/passkey-controller/src/webauthn/types.ts index ae91e045168..5a294fe2805 100644 --- a/packages/passkey-controller/src/webauthn/types.ts +++ b/packages/passkey-controller/src/webauthn/types.ts @@ -1,7 +1,7 @@ import type { AuthenticatorTransportFuture, Base64URLString as Base64URL, -} from '../types'; +} from '../types.js'; export type PublicKeyCredentialDescriptorJSON = { id: Base64URL; diff --git a/packages/passkey-controller/src/webauthn/verify-authentication-response.test.ts b/packages/passkey-controller/src/webauthn/verify-authentication-response.test.ts index b7fa7bd73b7..fefd25f2f62 100644 --- a/packages/passkey-controller/src/webauthn/verify-authentication-response.test.ts +++ b/packages/passkey-controller/src/webauthn/verify-authentication-response.test.ts @@ -1,7 +1,7 @@ -import { bytesToBase64URL, base64URLToBytes } from '../utils/encoding'; -import { decodeClientDataJSON } from './decode-client-data-json'; -import type { PasskeyAuthenticationResponse } from './types'; -import { verifyAuthenticationResponse } from './verify-authentication-response'; +import { bytesToBase64URL, base64URLToBytes } from '../utils/encoding.js'; +import { decodeClientDataJSON } from './decode-client-data-json.js'; +import type { PasskeyAuthenticationResponse } from './types.js'; +import { verifyAuthenticationResponse } from './verify-authentication-response.js'; const EXPECTED_ORIGIN = 'https://dev.dontneeda.pw'; const EXPECTED_RP_ID = 'dev.dontneeda.pw'; diff --git a/packages/passkey-controller/src/webauthn/verify-authentication-response.ts b/packages/passkey-controller/src/webauthn/verify-authentication-response.ts index a0c99d0a735..67db9d9c368 100644 --- a/packages/passkey-controller/src/webauthn/verify-authentication-response.ts +++ b/packages/passkey-controller/src/webauthn/verify-authentication-response.ts @@ -2,14 +2,14 @@ import { decodePartialCBOR } from '@levischuck/tiny-cbor'; import { concatBytes } from '@metamask/utils'; import { sha256 } from '@noble/hashes/sha2'; -import type { AuthenticatorTransportFuture } from '../types'; -import { base64URLToBytes } from '../utils/encoding'; -import { decodeClientDataJSON } from './decode-client-data-json'; -import { matchExpectedRPID } from './match-expected-rp-id'; -import { parseAuthenticatorData } from './parse-authenticator-data'; -import type { ParsedAuthenticatorData } from './types'; -import type { PasskeyAuthenticationResponse } from './types'; -import { verifySignature } from './verify-signature'; +import type { AuthenticatorTransportFuture } from '../types.js'; +import { base64URLToBytes } from '../utils/encoding.js'; +import { decodeClientDataJSON } from './decode-client-data-json.js'; +import { matchExpectedRPID } from './match-expected-rp-id.js'; +import { parseAuthenticatorData } from './parse-authenticator-data.js'; +import type { ParsedAuthenticatorData } from './types.js'; +import type { PasskeyAuthenticationResponse } from './types.js'; +import { verifySignature } from './verify-signature.js'; export type VerifiedAuthenticationResponse = | { verified: false; authenticationInfo?: never } diff --git a/packages/passkey-controller/src/webauthn/verify-registration-response.test.ts b/packages/passkey-controller/src/webauthn/verify-registration-response.test.ts index 8b8e8024aec..9b86c188d00 100644 --- a/packages/passkey-controller/src/webauthn/verify-registration-response.test.ts +++ b/packages/passkey-controller/src/webauthn/verify-registration-response.test.ts @@ -2,13 +2,13 @@ import { encodeCBOR } from '@levischuck/tiny-cbor'; import { p256 } from '@noble/curves/p256'; import { sha256 } from '@noble/hashes/sha2'; -import { base64URLToBytes } from '../utils/encoding'; -import { bytesToBase64URL } from '../utils/encoding'; -import { COSEALG, COSECRV, COSEKEYS, COSEKTY } from './constants'; -import { decodeClientDataJSON } from './decode-client-data-json'; -import * as parseAuthenticatorDataModule from './parse-authenticator-data'; -import type { PasskeyRegistrationResponse } from './types'; -import { verifyRegistrationResponse } from './verify-registration-response'; +import { base64URLToBytes } from '../utils/encoding.js'; +import { bytesToBase64URL } from '../utils/encoding.js'; +import { COSEALG, COSECRV, COSEKEYS, COSEKTY } from './constants.js'; +import { decodeClientDataJSON } from './decode-client-data-json.js'; +import * as parseAuthenticatorDataModule from './parse-authenticator-data.js'; +import type { PasskeyRegistrationResponse } from './types.js'; +import { verifyRegistrationResponse } from './verify-registration-response.js'; const EXPECTED_ORIGIN = 'https://dev.dontneeda.pw'; const EXPECTED_RP_ID = 'dev.dontneeda.pw'; diff --git a/packages/passkey-controller/src/webauthn/verify-registration-response.ts b/packages/passkey-controller/src/webauthn/verify-registration-response.ts index a225a9e0827..904fe7341e6 100644 --- a/packages/passkey-controller/src/webauthn/verify-registration-response.ts +++ b/packages/passkey-controller/src/webauthn/verify-registration-response.ts @@ -2,19 +2,19 @@ import { decodePartialCBOR } from '@levischuck/tiny-cbor'; import { concatBytes } from '@metamask/utils'; import { sha256 } from '@noble/hashes/sha2'; -import type { AuthenticatorTransportFuture } from '../types'; +import type { AuthenticatorTransportFuture } from '../types.js'; import { base64URLToBytes, bytesToBase64URL, bytesToHex, -} from '../utils/encoding'; -import { COSEALG, COSEKEYS } from './constants'; -import { decodeAttestationObject } from './decode-attestation-object'; -import { decodeClientDataJSON } from './decode-client-data-json'; -import { matchExpectedRPID } from './match-expected-rp-id'; -import { parseAuthenticatorData } from './parse-authenticator-data'; -import type { PasskeyRegistrationResponse } from './types'; -import { verifySignature } from './verify-signature'; +} from '../utils/encoding.js'; +import { COSEALG, COSEKEYS } from './constants.js'; +import { decodeAttestationObject } from './decode-attestation-object.js'; +import { decodeClientDataJSON } from './decode-client-data-json.js'; +import { matchExpectedRPID } from './match-expected-rp-id.js'; +import { parseAuthenticatorData } from './parse-authenticator-data.js'; +import type { PasskeyRegistrationResponse } from './types.js'; +import { verifySignature } from './verify-signature.js'; export type VerifiedRegistrationResponse = | { verified: false; registrationInfo?: never } diff --git a/packages/passkey-controller/src/webauthn/verify-signature.test.ts b/packages/passkey-controller/src/webauthn/verify-signature.test.ts index 3632ec93cdc..67b68caa274 100644 --- a/packages/passkey-controller/src/webauthn/verify-signature.test.ts +++ b/packages/passkey-controller/src/webauthn/verify-signature.test.ts @@ -3,9 +3,9 @@ import { p384, p521 } from '@noble/curves/nist'; import { sha384, sha512 } from '@noble/hashes/sha2'; import { webcrypto } from 'node:crypto'; -import { base64URLToBytes } from '../utils/encoding'; -import { COSEALG, COSECRV, COSEKEYS, COSEKTY } from './constants'; -import { verifySignature } from './verify-signature'; +import { base64URLToBytes } from '../utils/encoding.js'; +import { COSEALG, COSECRV, COSEKEYS, COSEKTY } from './constants.js'; +import { verifySignature } from './verify-signature.js'; function decodeJwkBase64Url(value: string): Uint8Array { return Uint8Array.from( diff --git a/packages/passkey-controller/src/webauthn/verify-signature.ts b/packages/passkey-controller/src/webauthn/verify-signature.ts index b7e1b6f50b8..558d51724f5 100644 --- a/packages/passkey-controller/src/webauthn/verify-signature.ts +++ b/packages/passkey-controller/src/webauthn/verify-signature.ts @@ -3,8 +3,8 @@ import { ed25519 } from '@noble/curves/ed25519'; import { p256, p384, p521 } from '@noble/curves/nist'; import { sha256, sha384, sha512 } from '@noble/hashes/sha2'; -import { bytesToBase64URL } from '../utils/encoding'; -import { COSEALG, COSECRV, COSEKEYS, COSEKTY } from './constants'; +import { bytesToBase64URL } from '../utils/encoding.js'; +import { COSEALG, COSECRV, COSEKEYS, COSEKTY } from './constants.js'; type COSEPublicKey = Map; From 944b1e3355d186f6361727066c1d19199f9da523 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:36:18 +0200 Subject: [PATCH 034/115] Fix ESLint errors for `preferences-controller` Add `.js` extensions to relative imports. --- .../src/PreferencesController-method-action-types.ts | 2 +- .../src/PreferencesController.test.ts | 10 +++++----- .../src/PreferencesController.ts | 4 ++-- packages/preferences-controller/src/index.ts | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/preferences-controller/src/PreferencesController-method-action-types.ts b/packages/preferences-controller/src/PreferencesController-method-action-types.ts index 098c80d6bdd..0ca5ed1369a 100644 --- a/packages/preferences-controller/src/PreferencesController-method-action-types.ts +++ b/packages/preferences-controller/src/PreferencesController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { PreferencesController } from './PreferencesController'; +import type { PreferencesController } from './PreferencesController.js'; /** * Enable or disable a specific feature flag. diff --git a/packages/preferences-controller/src/PreferencesController.test.ts b/packages/preferences-controller/src/PreferencesController.test.ts index 9b6cc650df7..4894261d7b6 100644 --- a/packages/preferences-controller/src/PreferencesController.test.ts +++ b/packages/preferences-controller/src/PreferencesController.test.ts @@ -6,12 +6,12 @@ import type { MockAnyNamespace, } from '@metamask/messenger'; -import { ETHERSCAN_SUPPORTED_CHAIN_IDS } from './constants'; +import { ETHERSCAN_SUPPORTED_CHAIN_IDS } from './constants.js'; import type { EtherscanSupportedHexChainId, PreferencesControllerMessenger, -} from './PreferencesController'; -import { PreferencesController } from './PreferencesController'; +} from './PreferencesController.js'; +import { PreferencesController } from './PreferencesController.js'; describe('PreferencesController', () => { it('should set default state', () => { @@ -31,12 +31,12 @@ describe('PreferencesController', () => { showMultiRpcModal: false, showIncomingTransactions: Object.values( ETHERSCAN_SUPPORTED_CHAIN_IDS, - ).reduce( + ).reduce<{ [chainId in EtherscanSupportedHexChainId]: boolean }>( (acc, curr) => { acc[curr] = true; return acc; }, - {} as { [chainId in EtherscanSupportedHexChainId]: boolean }, + {}, ), smartTransactionsOptInStatus: true, useSafeChainsListValidation: true, diff --git a/packages/preferences-controller/src/PreferencesController.ts b/packages/preferences-controller/src/PreferencesController.ts index 057da914783..665daf83b61 100644 --- a/packages/preferences-controller/src/PreferencesController.ts +++ b/packages/preferences-controller/src/PreferencesController.ts @@ -5,8 +5,8 @@ import type { } from '@metamask/base-controller'; import type { Messenger } from '@metamask/messenger'; -import { ETHERSCAN_SUPPORTED_CHAIN_IDS } from './constants'; -import type { PreferencesControllerMethodActions } from './PreferencesController-method-action-types'; +import { ETHERSCAN_SUPPORTED_CHAIN_IDS } from './constants.js'; +import type { PreferencesControllerMethodActions } from './PreferencesController-method-action-types.js'; /** * A type union of the name for each chain that is supported by Etherscan or diff --git a/packages/preferences-controller/src/index.ts b/packages/preferences-controller/src/index.ts index 41cfbb6e4ed..7a3db21766f 100644 --- a/packages/preferences-controller/src/index.ts +++ b/packages/preferences-controller/src/index.ts @@ -1,3 +1,3 @@ -export * from './PreferencesController'; -export type * from './PreferencesController-method-action-types'; -export { ETHERSCAN_SUPPORTED_CHAIN_IDS } from './constants'; +export * from './PreferencesController.js'; +export type * from './PreferencesController-method-action-types.js'; +export { ETHERSCAN_SUPPORTED_CHAIN_IDS } from './constants.js'; From 14baab0d7520b966cbbb9db439a78b9084677899 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:36:18 +0200 Subject: [PATCH 035/115] Fix ESLint errors for `rate-limit-controller` Add `.js` extensions to relative imports. --- .../rate-limit-controller/src/RateLimitController.test.ts | 5 +++-- packages/rate-limit-controller/src/index.ts | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/rate-limit-controller/src/RateLimitController.test.ts b/packages/rate-limit-controller/src/RateLimitController.test.ts index 128259690e0..6019659e34c 100644 --- a/packages/rate-limit-controller/src/RateLimitController.test.ts +++ b/packages/rate-limit-controller/src/RateLimitController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -6,8 +7,8 @@ import type { MockAnyNamespace, } from '@metamask/messenger'; -import type { RateLimitMessenger } from './RateLimitController'; -import { RateLimitController } from './RateLimitController'; +import type { RateLimitMessenger } from './RateLimitController.js'; +import { RateLimitController } from './RateLimitController.js'; const controllerName = 'RateLimitController'; diff --git a/packages/rate-limit-controller/src/index.ts b/packages/rate-limit-controller/src/index.ts index 97cbe8505e0..afaf7871aad 100644 --- a/packages/rate-limit-controller/src/index.ts +++ b/packages/rate-limit-controller/src/index.ts @@ -9,5 +9,5 @@ export type { RateLimitControllerStateChangeEvent, RateLimitMessenger, RateLimitState, -} from './RateLimitController'; -export { RateLimitController } from './RateLimitController'; +} from './RateLimitController.js'; +export { RateLimitController } from './RateLimitController.js'; From d3f5e53654a7771fdc33e647cee7667dfb1d965f Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:36:18 +0200 Subject: [PATCH 036/115] Fix ESLint errors for `remote-feature-flag-controller` Add `.js` extensions to relative imports. --- .../abstract-client-config-api-service.ts | 2 +- .../client-config-api-service.test.ts | 10 ++++++---- .../client-config-api-service.ts | 6 +++--- .../remote-feature-flag-controller/src/index.ts | 14 +++++++------- ...-feature-flag-controller-method-action-types.ts | 2 +- .../src/remote-feature-flag-controller.test.ts | 13 +++++++------ .../src/remote-feature-flag-controller.ts | 10 +++++----- .../src/utils/user-segmentation-utils.test.ts | 2 +- .../src/utils/user-segmentation-utils.ts | 2 +- .../src/utils/version.test.ts | 2 +- .../src/utils/version.ts | 2 +- 11 files changed, 34 insertions(+), 31 deletions(-) diff --git a/packages/remote-feature-flag-controller/src/client-config-api-service/abstract-client-config-api-service.ts b/packages/remote-feature-flag-controller/src/client-config-api-service/abstract-client-config-api-service.ts index 7a07ed2db9b..e5f685b846e 100644 --- a/packages/remote-feature-flag-controller/src/client-config-api-service/abstract-client-config-api-service.ts +++ b/packages/remote-feature-flag-controller/src/client-config-api-service/abstract-client-config-api-service.ts @@ -1,6 +1,6 @@ import type { ServicePolicy } from '@metamask/controller-utils'; -import type { ServiceResponse } from '../remote-feature-flag-controller-types'; +import type { ServiceResponse } from '../remote-feature-flag-controller-types.js'; /** * A service object responsible for fetching feature flags. diff --git a/packages/remote-feature-flag-controller/src/client-config-api-service/client-config-api-service.test.ts b/packages/remote-feature-flag-controller/src/client-config-api-service/client-config-api-service.test.ts index a3a4830e934..f3a25b34adc 100644 --- a/packages/remote-feature-flag-controller/src/client-config-api-service/client-config-api-service.test.ts +++ b/packages/remote-feature-flag-controller/src/client-config-api-service/client-config-api-service.test.ts @@ -1,14 +1,16 @@ -import { BASE_URL } from '../constants'; +import { jest } from '@jest/globals'; + +import { BASE_URL } from '../constants.js'; import type { ApiDataResponse, FeatureFlags, -} from '../remote-feature-flag-controller-types'; +} from '../remote-feature-flag-controller-types.js'; import { ClientType, DistributionType, EnvironmentType, -} from '../remote-feature-flag-controller-types'; -import { ClientConfigApiService } from './client-config-api-service'; +} from '../remote-feature-flag-controller-types.js'; +import { ClientConfigApiService } from './client-config-api-service.js'; import Mock = jest.Mock; diff --git a/packages/remote-feature-flag-controller/src/client-config-api-service/client-config-api-service.ts b/packages/remote-feature-flag-controller/src/client-config-api-service/client-config-api-service.ts index 787dedd2608..dcc33df79b5 100644 --- a/packages/remote-feature-flag-controller/src/client-config-api-service/client-config-api-service.ts +++ b/packages/remote-feature-flag-controller/src/client-config-api-service/client-config-api-service.ts @@ -7,7 +7,7 @@ import { import type { ServicePolicy } from '@metamask/controller-utils'; import type { IDisposable } from 'cockatiel'; -import { BASE_URL } from '../constants'; +import { BASE_URL } from '../constants.js'; import type { FeatureFlags, ClientType, @@ -15,8 +15,8 @@ import type { EnvironmentType, ServiceResponse, ApiDataResponse, -} from '../remote-feature-flag-controller-types'; -import type { AbstractClientConfigApiService } from './abstract-client-config-api-service'; +} from '../remote-feature-flag-controller-types.js'; +import type { AbstractClientConfigApiService } from './abstract-client-config-api-service.js'; /** * This service is responsible for fetching feature flags from the ClientConfig API. diff --git a/packages/remote-feature-flag-controller/src/index.ts b/packages/remote-feature-flag-controller/src/index.ts index 00c1c1c2d12..54efe45eed2 100644 --- a/packages/remote-feature-flag-controller/src/index.ts +++ b/packages/remote-feature-flag-controller/src/index.ts @@ -1,4 +1,4 @@ -export { RemoteFeatureFlagController } from './remote-feature-flag-controller'; +export { RemoteFeatureFlagController } from './remote-feature-flag-controller.js'; export type { RemoteFeatureFlagControllerState, RemoteFeatureFlagControllerMessenger, @@ -6,7 +6,7 @@ export type { RemoteFeatureFlagControllerGetStateAction, RemoteFeatureFlagControllerEvents, RemoteFeatureFlagControllerStateChangeEvent, -} from './remote-feature-flag-controller'; +} from './remote-feature-flag-controller.js'; export type { RemoteFeatureFlagControllerClearAllFlagOverridesAction, RemoteFeatureFlagControllerDisableAction, @@ -15,14 +15,14 @@ export type { RemoteFeatureFlagControllerRemoveFlagOverrideAction, RemoteFeatureFlagControllerSetFlagOverrideAction, RemoteFeatureFlagControllerUpdateRemoteFeatureFlagsAction, -} from './remote-feature-flag-controller-method-action-types'; +} from './remote-feature-flag-controller-method-action-types.js'; export { ClientType, DistributionType, EnvironmentType, ThresholdVersion, -} from './remote-feature-flag-controller-types'; +} from './remote-feature-flag-controller-types.js'; -export type { FeatureFlags } from './remote-feature-flag-controller-types'; -export { ClientConfigApiService } from './client-config-api-service/client-config-api-service'; -export { generateDeterministicRandomNumber } from './utils/user-segmentation-utils'; +export type { FeatureFlags } from './remote-feature-flag-controller-types.js'; +export { ClientConfigApiService } from './client-config-api-service/client-config-api-service.js'; +export { generateDeterministicRandomNumber } from './utils/user-segmentation-utils.js'; diff --git a/packages/remote-feature-flag-controller/src/remote-feature-flag-controller-method-action-types.ts b/packages/remote-feature-flag-controller/src/remote-feature-flag-controller-method-action-types.ts index eb30efbf45d..ac47f7e41c1 100644 --- a/packages/remote-feature-flag-controller/src/remote-feature-flag-controller-method-action-types.ts +++ b/packages/remote-feature-flag-controller/src/remote-feature-flag-controller-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { RemoteFeatureFlagController } from './remote-feature-flag-controller'; +import type { RemoteFeatureFlagController } from './remote-feature-flag-controller.js'; /** * Retrieves the remote feature flags, fetching from the API if necessary. diff --git a/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.test.ts b/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.test.ts index 50f4f689028..7f78dd5b4e9 100644 --- a/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.test.ts +++ b/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -6,20 +7,20 @@ import type { MockAnyNamespace, } from '@metamask/messenger'; -import { flushPromises } from '../../../tests/helpers'; -import type { AbstractClientConfigApiService } from './client-config-api-service/abstract-client-config-api-service'; +import { flushPromises } from '../../../tests/helpers.js'; +import type { AbstractClientConfigApiService } from './client-config-api-service/abstract-client-config-api-service.js'; +import { ThresholdVersion } from './remote-feature-flag-controller-types.js'; +import type { FeatureFlags } from './remote-feature-flag-controller-types.js'; import { RemoteFeatureFlagController, controllerName, DEFAULT_CACHE_DURATION, getDefaultRemoteFeatureFlagControllerState, -} from './remote-feature-flag-controller'; +} from './remote-feature-flag-controller.js'; import type { RemoteFeatureFlagControllerMessenger, RemoteFeatureFlagControllerState, -} from './remote-feature-flag-controller'; -import { ThresholdVersion } from './remote-feature-flag-controller-types'; -import type { FeatureFlags } from './remote-feature-flag-controller-types'; +} from './remote-feature-flag-controller.js'; const MOCK_FLAGS: FeatureFlags = { feature1: true, diff --git a/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.ts b/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.ts index f04531a32bd..6bd6df6d66b 100644 --- a/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.ts +++ b/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.ts @@ -7,18 +7,18 @@ import type { Messenger } from '@metamask/messenger'; import { isValidSemVerVersion } from '@metamask/utils'; import type { Json, SemVerVersion } from '@metamask/utils'; -import type { AbstractClientConfigApiService } from './client-config-api-service/abstract-client-config-api-service'; -import type { RemoteFeatureFlagControllerMethodActions } from './remote-feature-flag-controller-method-action-types'; +import type { AbstractClientConfigApiService } from './client-config-api-service/abstract-client-config-api-service.js'; +import type { RemoteFeatureFlagControllerMethodActions } from './remote-feature-flag-controller-method-action-types.js'; import type { FeatureFlags, ServiceResponse, FeatureFlagScopeValue, -} from './remote-feature-flag-controller-types'; +} from './remote-feature-flag-controller-types.js'; import { calculateThresholdForFlag, isFeatureFlagWithScopeValue, -} from './utils/user-segmentation-utils'; -import { isVersionFeatureFlag, getVersionData } from './utils/version'; +} from './utils/user-segmentation-utils.js'; +import { isVersionFeatureFlag, getVersionData } from './utils/version.js'; // === GENERAL === diff --git a/packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.test.ts b/packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.test.ts index 44e0b10b321..aa11941462f 100644 --- a/packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.test.ts +++ b/packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.test.ts @@ -4,7 +4,7 @@ import { calculateThresholdForFlag, generateDeterministicRandomNumber, isFeatureFlagWithScopeValue, -} from './user-segmentation-utils'; +} from './user-segmentation-utils.js'; const MOCK_METRICS_IDS = { MOBILE_VALID: '123e4567-e89b-4456-a456-426614174000', diff --git a/packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.ts b/packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.ts index f2f48773105..e41a721e4b0 100644 --- a/packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.ts +++ b/packages/remote-feature-flag-controller/src/utils/user-segmentation-utils.ts @@ -2,7 +2,7 @@ import type { Json } from '@metamask/utils'; import { sha256, bytesToHex } from '@metamask/utils'; import { validate as uuidValidate, version as uuidVersion } from 'uuid'; -import type { FeatureFlagScopeValue } from '../remote-feature-flag-controller-types'; +import type { FeatureFlagScopeValue } from '../remote-feature-flag-controller-types.js'; /** * Converts a UUID string to a BigInt by removing dashes and converting to hexadecimal. diff --git a/packages/remote-feature-flag-controller/src/utils/version.test.ts b/packages/remote-feature-flag-controller/src/utils/version.test.ts index e7133d34e08..682b0aa5fcd 100644 --- a/packages/remote-feature-flag-controller/src/utils/version.test.ts +++ b/packages/remote-feature-flag-controller/src/utils/version.test.ts @@ -1,6 +1,6 @@ import type { SemVerVersion } from '@metamask/utils'; -import { isVersionFeatureFlag, getVersionData } from './version'; +import { isVersionFeatureFlag, getVersionData } from './version.js'; describe('isVersionFeatureFlag', () => { it('returns true for valid multi-version feature flag', () => { diff --git a/packages/remote-feature-flag-controller/src/utils/version.ts b/packages/remote-feature-flag-controller/src/utils/version.ts index 94a5c0dad74..11d565fb343 100644 --- a/packages/remote-feature-flag-controller/src/utils/version.ts +++ b/packages/remote-feature-flag-controller/src/utils/version.ts @@ -1,7 +1,7 @@ import { gtVersion, isValidSemVerVersion } from '@metamask/utils'; import type { Json, SemVerVersion } from '@metamask/utils'; -import type { MultiVersionFeatureFlagValue } from '../remote-feature-flag-controller-types'; +import type { MultiVersionFeatureFlagValue } from '../remote-feature-flag-controller-types.js'; /** * Constants for MultiVersionFeatureFlagValue property names From c01f310b7e1a2595f62387431f66686ce0340704 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:40:29 +0200 Subject: [PATCH 037/115] Fix ESLint errors for `composable-controller` Add `.js` extensions to relative imports. --- packages/composable-controller/package.json | 1 + .../composable-controller/src/ComposableController.test.ts | 5 +++-- packages/composable-controller/src/index.ts | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/composable-controller/package.json b/packages/composable-controller/package.json index 6f4033ac206..abf92be9a32 100644 --- a/packages/composable-controller/package.json +++ b/packages/composable-controller/package.json @@ -50,6 +50,7 @@ "@metamask/messenger": "^2.0.0" }, "devDependencies": { + "@jest/globals": "^30.4.1", "@metamask/auto-changelog": "^6.1.0", "@metamask/json-rpc-engine": "^10.5.0", "@types/jest": "^29.5.14", diff --git a/packages/composable-controller/src/ComposableController.test.ts b/packages/composable-controller/src/ComposableController.test.ts index fccf473b871..0aef9eca4e5 100644 --- a/packages/composable-controller/src/ComposableController.test.ts +++ b/packages/composable-controller/src/ComposableController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { BaseController, deriveStateFromMetadata, @@ -20,11 +21,11 @@ import type { ChildControllerStateChangeEvents, ComposableControllerActions, ComposableControllerEvents, -} from './ComposableController'; +} from './ComposableController.js'; import { ComposableController, INVALID_CONTROLLER_ERROR, -} from './ComposableController'; +} from './ComposableController.js'; // Mock BaseController classes diff --git a/packages/composable-controller/src/index.ts b/packages/composable-controller/src/index.ts index 8a0b5f5da2f..6d2000e7113 100644 --- a/packages/composable-controller/src/index.ts +++ b/packages/composable-controller/src/index.ts @@ -3,5 +3,5 @@ export type { ComposableControllerStateChangeEvent, ComposableControllerEvents, ComposableControllerMessenger, -} from './ComposableController'; -export { ComposableController } from './ComposableController'; +} from './ComposableController.js'; +export { ComposableController } from './ComposableController.js'; From e613b0c59334d6f7e2fd16d3bc5499cc81d10d00 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:40:29 +0200 Subject: [PATCH 038/115] Fix ESLint errors for `eth-json-rpc-provider` Add `.js` extensions to relative imports. --- packages/eth-json-rpc-provider/package.json | 1 + packages/eth-json-rpc-provider/src/index.test.ts | 2 +- packages/eth-json-rpc-provider/src/index.ts | 4 ++-- packages/eth-json-rpc-provider/src/internal-provider.test.ts | 5 ++++- .../src/provider-from-middleware.test.ts | 2 +- .../eth-json-rpc-provider/src/provider-from-middleware.ts | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/eth-json-rpc-provider/package.json b/packages/eth-json-rpc-provider/package.json index 345d139432d..d022a7ed149 100644 --- a/packages/eth-json-rpc-provider/package.json +++ b/packages/eth-json-rpc-provider/package.json @@ -53,6 +53,7 @@ }, "devDependencies": { "@ethersproject/providers": "^5.7.0", + "@jest/globals": "^30.4.1", "@metamask/auto-changelog": "^6.1.0", "@metamask/eth-query": "^4.0.0", "@metamask/ethjs-query": "^0.5.3", diff --git a/packages/eth-json-rpc-provider/src/index.test.ts b/packages/eth-json-rpc-provider/src/index.test.ts index 63ae8ab36ee..33492dffeea 100644 --- a/packages/eth-json-rpc-provider/src/index.test.ts +++ b/packages/eth-json-rpc-provider/src/index.test.ts @@ -1,4 +1,4 @@ -import * as allExports from '.'; +import * as allExports from './index.js'; describe('Package exports', () => { it('has expected exports', () => { diff --git a/packages/eth-json-rpc-provider/src/index.ts b/packages/eth-json-rpc-provider/src/index.ts index a4bab7a5db3..b972bff0db6 100644 --- a/packages/eth-json-rpc-provider/src/index.ts +++ b/packages/eth-json-rpc-provider/src/index.ts @@ -1,6 +1,6 @@ -import { InternalProvider } from './internal-provider'; +import { InternalProvider } from './internal-provider.js'; -export * from './provider-from-middleware'; +export * from './provider-from-middleware.js'; /** * @deprecated Use {@link InternalProvider} instead. diff --git a/packages/eth-json-rpc-provider/src/internal-provider.test.ts b/packages/eth-json-rpc-provider/src/internal-provider.test.ts index 24ee40abe33..938191fadf2 100644 --- a/packages/eth-json-rpc-provider/src/internal-provider.test.ts +++ b/packages/eth-json-rpc-provider/src/internal-provider.test.ts @@ -1,4 +1,7 @@ import { Web3Provider } from '@ethersproject/providers'; +import { jest } from '@jest/globals'; +import { jest } from '@jest/globals'; +import { jest } from '@jest/globals'; import EthQuery from '@metamask/eth-query'; import EthJsQuery from '@metamask/ethjs-query'; import { asV2Middleware, JsonRpcEngine } from '@metamask/json-rpc-engine'; @@ -15,7 +18,7 @@ import { promisify } from 'util'; import { InternalProvider, convertEip1193RequestToJsonRpcRequest, -} from './internal-provider'; +} from './internal-provider.js'; jest.mock('uuid'); diff --git a/packages/eth-json-rpc-provider/src/provider-from-middleware.test.ts b/packages/eth-json-rpc-provider/src/provider-from-middleware.test.ts index 6c20713e0bf..ca9955525e6 100644 --- a/packages/eth-json-rpc-provider/src/provider-from-middleware.test.ts +++ b/packages/eth-json-rpc-provider/src/provider-from-middleware.test.ts @@ -6,7 +6,7 @@ import type { Json, JsonRpcParams, JsonRpcRequest } from '@metamask/utils'; import { providerFromMiddleware, providerFromMiddlewareV2, -} from './provider-from-middleware'; +} from './provider-from-middleware.js'; describe('providerFromMiddleware', () => { it('handle a successful request', async () => { diff --git a/packages/eth-json-rpc-provider/src/provider-from-middleware.ts b/packages/eth-json-rpc-provider/src/provider-from-middleware.ts index f3ce178e58f..07a0f5fbbf5 100644 --- a/packages/eth-json-rpc-provider/src/provider-from-middleware.ts +++ b/packages/eth-json-rpc-provider/src/provider-from-middleware.ts @@ -8,7 +8,7 @@ import type { } from '@metamask/json-rpc-engine/v2'; import type { Json, JsonRpcParams, JsonRpcRequest } from '@metamask/utils'; -import { InternalProvider } from './internal-provider'; +import { InternalProvider } from './internal-provider.js'; /** * Construct an Ethereum provider from the given middleware. From 735b3a98558b4a452834a6c23e6d09b750b0af1c Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:40:29 +0200 Subject: [PATCH 039/115] Fix ESLint errors for `json-rpc-middleware-stream` Add `.js` extensions to relative imports. Fix `setTimeout(context.end)` flagged as implied-eval by wrapping in an arrow function. --- .../src/createStreamMiddleware.ts | 2 +- packages/json-rpc-middleware-stream/src/index.test.ts | 8 ++++---- packages/json-rpc-middleware-stream/src/index.ts | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/json-rpc-middleware-stream/src/createStreamMiddleware.ts b/packages/json-rpc-middleware-stream/src/createStreamMiddleware.ts index c9d0c55dcac..0038ce56bd3 100644 --- a/packages/json-rpc-middleware-stream/src/createStreamMiddleware.ts +++ b/packages/json-rpc-middleware-stream/src/createStreamMiddleware.ts @@ -125,7 +125,7 @@ export default function createStreamMiddleware(options: Options = {}): { Object.assign(context.res, res); // run callback on empty stack, // prevent internal stream-handler from catching errors - setTimeout(context.end); + setTimeout(() => context.end()); } /** diff --git a/packages/json-rpc-middleware-stream/src/index.test.ts b/packages/json-rpc-middleware-stream/src/index.test.ts index ca172a0085a..ff9e9364871 100644 --- a/packages/json-rpc-middleware-stream/src/index.test.ts +++ b/packages/json-rpc-middleware-stream/src/index.test.ts @@ -3,7 +3,7 @@ import PortStream from 'extension-port-stream'; import type { Duplex } from 'stream'; import type { Runtime } from 'webextension-polyfill-ts'; -import { createStreamMiddleware, createEngineStream } from '.'; +import { createStreamMiddleware, createEngineStream } from './index.js'; const artificialDelay = async (time = 0): Promise => new Promise((resolve) => setTimeout(resolve, time)); @@ -181,7 +181,7 @@ describe('retry logic in middleware connected to a port', () => { // Initially sent once const responsePromise1 = engineA?.handle(req1); // intentionally not awaited - // eslint-disable-next-line @typescript-eslint/no-floating-promises + engineA?.handle(req2); await artificialDelay(); @@ -217,7 +217,7 @@ describe('retry logic in middleware connected to a port', () => { // Initially sent once, message count at 1 // intentionally not awaited - // eslint-disable-next-line @typescript-eslint/no-floating-promises + engineA?.handle(req); await artificialDelay(); expect(messages).toHaveLength(1); @@ -268,7 +268,7 @@ describe('retry logic in middleware connected to a port', () => { // Initially sent once, message count at 1 // intentionally not awaited - // eslint-disable-next-line @typescript-eslint/no-floating-promises + engineA?.handle(req); await artificialDelay(); expect(messages).toHaveLength(1); diff --git a/packages/json-rpc-middleware-stream/src/index.ts b/packages/json-rpc-middleware-stream/src/index.ts index e53b25d9024..2a824d162d5 100644 --- a/packages/json-rpc-middleware-stream/src/index.ts +++ b/packages/json-rpc-middleware-stream/src/index.ts @@ -1,4 +1,4 @@ -import createEngineStream from './createEngineStream'; -import createStreamMiddleware from './createStreamMiddleware'; +import createEngineStream from './createEngineStream.js'; +import createStreamMiddleware from './createStreamMiddleware.js'; export { createEngineStream, createStreamMiddleware }; From ff66651552d39955fefb004632bd65fadb46de31 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:40:29 +0200 Subject: [PATCH 040/115] Fix ESLint errors for `permission-log-controller` Add `.js` extensions to relative imports. --- .../src/PermissionLogController-method-action-types.ts | 2 +- .../src/PermissionLogController.ts | 4 ++-- packages/permission-log-controller/src/index.ts | 6 +++--- .../tests/PermissionLogController.test.ts | 9 +++++---- packages/permission-log-controller/tests/helpers.ts | 2 +- packages/permission-log-controller/tests/index.test.ts | 2 +- 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/packages/permission-log-controller/src/PermissionLogController-method-action-types.ts b/packages/permission-log-controller/src/PermissionLogController-method-action-types.ts index b68e61affa2..362445e3e70 100644 --- a/packages/permission-log-controller/src/PermissionLogController-method-action-types.ts +++ b/packages/permission-log-controller/src/PermissionLogController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { PermissionLogController } from './PermissionLogController'; +import type { PermissionLogController } from './PermissionLogController.js'; /** * Updates the exposed account history for the given origin. diff --git a/packages/permission-log-controller/src/PermissionLogController.ts b/packages/permission-log-controller/src/PermissionLogController.ts index 24a71602715..f62831e3bcd 100644 --- a/packages/permission-log-controller/src/PermissionLogController.ts +++ b/packages/permission-log-controller/src/PermissionLogController.ts @@ -19,8 +19,8 @@ import { LOG_METHOD_TYPES, WALLET_PREFIX, CAVEAT_TYPES, -} from './enums'; -import type { PermissionLogControllerMethodActions } from './PermissionLogController-method-action-types'; +} from './enums.js'; +import type { PermissionLogControllerMethodActions } from './PermissionLogController-method-action-types.js'; export type JsonRpcRequestWithOrigin< Params extends JsonRpcParams = JsonRpcParams, diff --git a/packages/permission-log-controller/src/index.ts b/packages/permission-log-controller/src/index.ts index edf1e9e47c5..ea689446ece 100644 --- a/packages/permission-log-controller/src/index.ts +++ b/packages/permission-log-controller/src/index.ts @@ -1,8 +1,8 @@ -export { PermissionLogController } from './PermissionLogController'; +export { PermissionLogController } from './PermissionLogController.js'; export type { PermissionLogControllerUpdateAccountsHistoryAction, PermissionLogControllerCreateMiddlewareAction, -} from './PermissionLogController-method-action-types'; +} from './PermissionLogController-method-action-types.js'; export type { JsonRpcRequestWithOrigin, Caveat, @@ -18,4 +18,4 @@ export type { PermissionLogControllerMessenger, PermissionLogControllerState, PermissionLogControllerOptions, -} from './PermissionLogController'; +} from './PermissionLogController.js'; diff --git a/packages/permission-log-controller/tests/PermissionLogController.test.ts b/packages/permission-log-controller/tests/PermissionLogController.test.ts index 96e87463dd6..2e2a4860f72 100644 --- a/packages/permission-log-controller/tests/PermissionLogController.test.ts +++ b/packages/permission-log-controller/tests/PermissionLogController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import type { JsonRpcEngineReturnHandler, @@ -13,14 +14,14 @@ import { PendingJsonRpcResponseStruct } from '@metamask/utils'; import type { PendingJsonRpcResponse, JsonRpcRequest } from '@metamask/utils'; import { nanoid } from 'nanoid'; -import { LOG_LIMIT, LOG_METHOD_TYPES } from '../src/enums'; -import { PermissionLogController } from '../src/PermissionLogController'; +import { LOG_LIMIT, LOG_METHOD_TYPES } from '../src/enums.js'; +import { PermissionLogController } from '../src/PermissionLogController.js'; import type { Permission, PermissionLogControllerState, PermissionLogControllerMessenger, -} from '../src/PermissionLogController'; -import { constants, getters, noop } from './helpers'; +} from '../src/PermissionLogController.js'; +import { constants, getters, noop } from './helpers.js'; const { PERMS, RPC_REQUESTS } = getters; const { ACCOUNTS, EXPECTED_HISTORIES, SUBJECTS, PERM_NAMES, REQUEST_IDS } = diff --git a/packages/permission-log-controller/tests/helpers.ts b/packages/permission-log-controller/tests/helpers.ts index 28a1b2e293e..b39f310124a 100644 --- a/packages/permission-log-controller/tests/helpers.ts +++ b/packages/permission-log-controller/tests/helpers.ts @@ -7,7 +7,7 @@ import { JsonRpcRequestStruct } from '@metamask/utils'; import type { Json } from '@metamask/utils'; import deepFreeze from 'deep-freeze-strict'; -import { CAVEAT_TYPES } from '../src/enums'; +import { CAVEAT_TYPES } from '../src/enums.js'; /** * This file contains mocks for the PermissionLogController tests. diff --git a/packages/permission-log-controller/tests/index.test.ts b/packages/permission-log-controller/tests/index.test.ts index c33564c9c2b..36132f46c74 100644 --- a/packages/permission-log-controller/tests/index.test.ts +++ b/packages/permission-log-controller/tests/index.test.ts @@ -1,4 +1,4 @@ -import * as allExports from '../src'; +import * as allExports from '../src/index.js'; describe('Package exports', () => { it('has expected exports', () => { From 90e19ed7b5d5c7ece53020fca46a3f6f3d67fbec Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:40:29 +0200 Subject: [PATCH 041/115] Fix ESLint errors for `base-data-service` Add `.js` extensions to relative imports. --- packages/base-data-service/package.json | 3 ++- .../base-data-service/src/BaseDataService.test.ts | 15 ++++++++++----- packages/base-data-service/src/BaseDataService.ts | 4 ++-- .../src/createServicePolicy.test.ts | 3 ++- packages/base-data-service/src/index.ts | 8 ++++---- .../ExampleDataService-method-action-types.ts | 2 +- .../base-data-service/tests/ExampleDataService.ts | 4 ++-- 7 files changed, 23 insertions(+), 16 deletions(-) diff --git a/packages/base-data-service/package.json b/packages/base-data-service/package.json index 5270f048603..efe72aec36f 100644 --- a/packages/base-data-service/package.json +++ b/packages/base-data-service/package.json @@ -55,9 +55,10 @@ "@tanstack/query-core": "^4.43.0", "cockatiel": "^3.1.2", "fast-deep-equal": "^3.1.3", - "lodash": "^4.17.21" + "lodash-es": "^4.17.21" }, "devDependencies": { + "@jest/globals": "^30.4.1", "@metamask/auto-changelog": "^6.1.0", "@types/jest": "^29.5.14", "@types/lodash": "^4.14.191", diff --git a/packages/base-data-service/src/BaseDataService.test.ts b/packages/base-data-service/src/BaseDataService.test.ts index af231b5b3a5..70076546ed1 100644 --- a/packages/base-data-service/src/BaseDataService.test.ts +++ b/packages/base-data-service/src/BaseDataService.test.ts @@ -1,9 +1,13 @@ +import { jest } from '@jest/globals'; import { MOCK_ANY_NAMESPACE, Messenger } from '@metamask/messenger'; import { hashQueryKey } from '@tanstack/query-core'; import { BrokenCircuitError } from 'cockatiel'; -import { cleanAll } from 'nock'; +import nock from 'nock'; -import { ExampleDataService, serviceName } from '../tests/ExampleDataService'; +import { + ExampleDataService, + serviceName, +} from '../tests/ExampleDataService.js'; import { mockAssets, mockTransactionsPage1, @@ -11,8 +15,8 @@ import { mockTransactionsPage3, TRANSACTIONS_PAGE_2_CURSOR, TRANSACTIONS_PAGE_3_CURSOR, -} from '../tests/mocks'; -import { STORAGE_SERVICE_KEY } from './BaseDataService'; +} from '../tests/mocks.js'; +import { STORAGE_SERVICE_KEY } from './BaseDataService.js'; const TEST_ADDRESS = '0x4bbeEB066eD09B7AEd07bF39EEe0460DFa261520'; @@ -232,7 +236,8 @@ describe('BaseDataService', () => { }); beforeEach(() => { - cleanAll(); + // eslint-disable-next-line import-x/no-named-as-default-member + nock.cleanAll(); }); it('retries failed queries using the service policy', async () => { diff --git a/packages/base-data-service/src/BaseDataService.ts b/packages/base-data-service/src/BaseDataService.ts index 3b459612253..96b02a38632 100644 --- a/packages/base-data-service/src/BaseDataService.ts +++ b/packages/base-data-service/src/BaseDataService.ts @@ -26,13 +26,13 @@ import { hydrate, } from '@tanstack/query-core'; import deepEqual from 'fast-deep-equal'; -import { debounce, DebouncedFunc } from 'lodash'; +import { debounce, DebouncedFunc } from 'lodash-es'; import { createServicePolicy, CreateServicePolicyOptions, ServicePolicy, -} from './createServicePolicy'; +} from './createServicePolicy.js'; // Data service queries use the following format: ['ServiceActionName', ...params] export type QueryKey = [string, ...Json[]]; diff --git a/packages/base-data-service/src/createServicePolicy.test.ts b/packages/base-data-service/src/createServicePolicy.test.ts index 9b34660b334..c7dd0c46357 100644 --- a/packages/base-data-service/src/createServicePolicy.test.ts +++ b/packages/base-data-service/src/createServicePolicy.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { CircuitState, ConstantBackoff, handleWhen } from 'cockatiel'; import { @@ -7,7 +8,7 @@ import { DEFAULT_MAX_CONSECUTIVE_FAILURES, DEFAULT_MAX_RETRIES, ServicePolicy, -} from './createServicePolicy'; +} from './createServicePolicy.js'; describe('createServicePolicy', () => { beforeEach(() => { diff --git a/packages/base-data-service/src/index.ts b/packages/base-data-service/src/index.ts index d0e9673dc01..9313f9d103a 100644 --- a/packages/base-data-service/src/index.ts +++ b/packages/base-data-service/src/index.ts @@ -21,8 +21,8 @@ export type { DataServiceGranularCacheUpdatedEvent, QueryKey, PersistenceConfiguration, -} from './BaseDataService'; -export { BaseDataService } from './BaseDataService'; +} from './BaseDataService.js'; +export { BaseDataService } from './BaseDataService.js'; export { DEFAULT_CIRCUIT_BREAK_DURATION, @@ -30,8 +30,8 @@ export { DEFAULT_MAX_CONSECUTIVE_FAILURES, DEFAULT_MAX_RETRIES, createServicePolicy, -} from './createServicePolicy'; +} from './createServicePolicy.js'; export type { CreateServicePolicyOptions, ServicePolicy, -} from './createServicePolicy'; +} from './createServicePolicy.js'; diff --git a/packages/base-data-service/tests/ExampleDataService-method-action-types.ts b/packages/base-data-service/tests/ExampleDataService-method-action-types.ts index 037dc899e74..b15943c584d 100644 --- a/packages/base-data-service/tests/ExampleDataService-method-action-types.ts +++ b/packages/base-data-service/tests/ExampleDataService-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { ExampleDataService } from './ExampleDataService'; +import type { ExampleDataService } from './ExampleDataService.js'; export type ExampleDataServiceGetAssetsAction = { type: `ExampleDataService:getAssets`; diff --git a/packages/base-data-service/tests/ExampleDataService.ts b/packages/base-data-service/tests/ExampleDataService.ts index f6eb3ff93bc..d84e9edf5d1 100644 --- a/packages/base-data-service/tests/ExampleDataService.ts +++ b/packages/base-data-service/tests/ExampleDataService.ts @@ -8,8 +8,8 @@ import { DataServiceCacheUpdatedEvent, DataServiceGranularCacheUpdatedEvent, PersistenceConfiguration, -} from '../src/BaseDataService'; -import { ExampleDataServiceMethodActions } from './ExampleDataService-method-action-types'; +} from '../src/BaseDataService.js'; +import { ExampleDataServiceMethodActions } from './ExampleDataService-method-action-types.js'; export const serviceName = 'ExampleDataService'; From f5c270a9c04264e67c335acee2079814eff3cf51 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:40:30 +0200 Subject: [PATCH 042/115] Fix ESLint errors for `permission-controller` Add `.js` extensions to relative imports and fix one `prefer-nullish-coalescing` violation. --- packages/permission-controller/package.json | 1 + .../permission-controller/src/Caveat.test.ts | 6 ++--- packages/permission-controller/src/Caveat.ts | 8 +++---- .../src/Permission.test.ts | 8 +++---- .../permission-controller/src/Permission.ts | 6 ++--- ...ermissionController-method-action-types.ts | 2 +- .../src/PermissionController.test.ts | 14 ++++++------ .../src/PermissionController.ts | 20 ++++++++--------- ...tMetadataController-method-action-types.ts | 2 +- .../src/SubjectMetadataController.test.ts | 5 +++-- .../src/SubjectMetadataController.ts | 6 ++--- .../createRestrictedMethodMessenger.test.ts | 2 +- .../permission-controller/src/errors.test.ts | 2 +- packages/permission-controller/src/errors.ts | 6 ++--- packages/permission-controller/src/index.ts | 22 +++++++++---------- .../src/permission-middleware.ts | 4 ++-- packages/permission-controller/src/utils.ts | 4 ++-- 17 files changed, 59 insertions(+), 59 deletions(-) diff --git a/packages/permission-controller/package.json b/packages/permission-controller/package.json index 4c6edc5dbca..6205c975d12 100644 --- a/packages/permission-controller/package.json +++ b/packages/permission-controller/package.json @@ -61,6 +61,7 @@ "nanoid": "^3.3.8" }, "devDependencies": { + "@jest/globals": "^30.4.1", "@metamask/auto-changelog": "^6.1.0", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", diff --git a/packages/permission-controller/src/Caveat.test.ts b/packages/permission-controller/src/Caveat.test.ts index 7d4e0c5e443..0fb81e1dc99 100644 --- a/packages/permission-controller/src/Caveat.test.ts +++ b/packages/permission-controller/src/Caveat.test.ts @@ -1,6 +1,6 @@ -import type { Caveat, PermissionConstraint } from '.'; -import { decorateWithCaveats, PermissionType } from '.'; -import * as errors from './errors'; +import * as errors from './errors.js'; +import type { Caveat, PermissionConstraint } from './index.js'; +import { decorateWithCaveats, PermissionType } from './index.js'; describe('decorateWithCaveats', () => { it('decorates a method with caveat', async () => { diff --git a/packages/permission-controller/src/Caveat.ts b/packages/permission-controller/src/Caveat.ts index 40ec5894a90..f79ded41b35 100644 --- a/packages/permission-controller/src/Caveat.ts +++ b/packages/permission-controller/src/Caveat.ts @@ -4,16 +4,16 @@ import { hasProperty } from '@metamask/utils'; import { CaveatSpecificationMismatchError, UnrecognizedCaveatTypeError, -} from './errors'; +} from './errors.js'; import type { AsyncRestrictedMethod, RestrictedMethod, PermissionConstraint, RestrictedMethodParameters, -} from './Permission'; -import { PermissionType } from './Permission'; +} from './Permission.js'; +import { PermissionType } from './Permission.js'; // eslint-disable-next-line @typescript-eslint/no-unused-vars -import type { PermissionController } from './PermissionController'; +import type { PermissionController } from './PermissionController.js'; export type CaveatConstraint = { /** diff --git a/packages/permission-controller/src/Permission.test.ts b/packages/permission-controller/src/Permission.test.ts index a7fdf7a631c..a18415681cb 100644 --- a/packages/permission-controller/src/Permission.test.ts +++ b/packages/permission-controller/src/Permission.test.ts @@ -1,14 +1,14 @@ import { Messenger } from '@metamask/messenger'; +import { createRestrictedMethodMessenger } from './createRestrictedMethodMessenger.js'; import type { CaveatConstraint, PermissionConstraint, PermissionSpecificationBuilder, RestrictedMethodSpecificationConstraint, -} from '.'; -import { constructPermission, PermissionType } from '.'; -import { createRestrictedMethodMessenger } from './createRestrictedMethodMessenger'; -import { findCaveat } from './Permission'; +} from './index.js'; +import { constructPermission, PermissionType } from './index.js'; +import { findCaveat } from './Permission.js'; describe('constructPermission', () => { it('constructs a permission', () => { diff --git a/packages/permission-controller/src/Permission.ts b/packages/permission-controller/src/Permission.ts index 02bb2a507ca..fcf4a171b87 100644 --- a/packages/permission-controller/src/Permission.ts +++ b/packages/permission-controller/src/Permission.ts @@ -4,14 +4,14 @@ import type { Json } from '@metamask/utils'; import { nanoid } from 'nanoid'; // eslint-disable-next-line @typescript-eslint/no-unused-vars -import type { CaveatConstraint, Caveat } from './Caveat'; +import type { CaveatConstraint, Caveat } from './Caveat.js'; import type { // eslint-disable-next-line @typescript-eslint/no-unused-vars PermissionController, PermissionsRequest, SideEffectMessenger, -} from './PermissionController'; -import type { SubjectType } from './SubjectMetadataController'; +} from './PermissionController.js'; +import type { SubjectType } from './SubjectMetadataController.js'; /** * The origin of a subject. diff --git a/packages/permission-controller/src/PermissionController-method-action-types.ts b/packages/permission-controller/src/PermissionController-method-action-types.ts index 75305e05abb..db60cd68d80 100644 --- a/packages/permission-controller/src/PermissionController-method-action-types.ts +++ b/packages/permission-controller/src/PermissionController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { PermissionController } from './PermissionController'; +import type { PermissionController } from './PermissionController.js'; /** * Checks whether the given method was declared as unrestricted at diff --git a/packages/permission-controller/src/PermissionController.test.ts b/packages/permission-controller/src/PermissionController.test.ts index b90e4f3e7ac..ef08bfa15c4 100644 --- a/packages/permission-controller/src/PermissionController.test.ts +++ b/packages/permission-controller/src/PermissionController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { isPlainObject } from '@metamask/controller-utils'; import { JsonRpcEngine } from '@metamask/json-rpc-engine'; @@ -16,6 +17,7 @@ import { } from '@metamask/utils'; import assert from 'assert'; +import * as errors from './errors.js'; import { AsyncRestrictedMethod, Caveat, @@ -33,7 +35,7 @@ import { RestrictedMethodOptions, RestrictedMethodParameters, ValidPermission, -} from '.'; +} from './index.js'; import { CaveatMutatorOperation, constructPermission, @@ -42,10 +44,9 @@ import { MethodNames, PermissionController, PermissionType, -} from '.'; -import * as errors from './errors'; -import type { EndowmentGetterParams } from './Permission'; -import { SubjectType } from './SubjectMetadataController'; +} from './index.js'; +import type { EndowmentGetterParams } from './Permission.js'; +import { SubjectType } from './SubjectMetadataController.js'; // Caveat types and specifications @@ -5907,8 +5908,7 @@ describe('PermissionController', () => { expect( Object.keys( - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - messenger.call('PermissionController:getPermissions', 'foo')!, + messenger.call('PermissionController:getPermissions', 'foo'), ), ).toStrictEqual(['wallet_getSecretArray']); diff --git a/packages/permission-controller/src/PermissionController.ts b/packages/permission-controller/src/PermissionController.ts index 70fe65b6368..82b7a8eb72f 100644 --- a/packages/permission-controller/src/PermissionController.ts +++ b/packages/permission-controller/src/PermissionController.ts @@ -38,11 +38,11 @@ import type { ExtractCaveat, ExtractCaveats, ExtractCaveatValue, -} from './Caveat'; +} from './Caveat.js'; import { decorateWithCaveats, isRestrictedMethodCaveatSpecification, -} from './Caveat'; +} from './Caveat.js'; import { CaveatAlreadyExistsError, CaveatDoesNotExistError, @@ -70,7 +70,7 @@ import { UnrecognizedCaveatTypeError, UnrecognizedSubjectError, userRejectedRequest, -} from './errors'; +} from './errors.js'; import type { EndowmentSpecificationConstraint, ExtractAllowedCaveatTypes, @@ -86,16 +86,16 @@ import type { SideEffectHandler, ValidPermission, ValidPermissionSpecification, -} from './Permission'; +} from './Permission.js'; import { constructPermission, findCaveat, hasSpecificationType, PermissionType, -} from './Permission'; -import type { PermissionControllerMethodActions } from './PermissionController-method-action-types'; -import type { SubjectMetadataControllerGetSubjectMetadataAction } from './SubjectMetadataController-method-action-types'; -import { collectUniqueAndPairedCaveats, MethodNames } from './utils'; +} from './Permission.js'; +import type { PermissionControllerMethodActions } from './PermissionController-method-action-types.js'; +import type { SubjectMetadataControllerGetSubjectMetadataAction } from './SubjectMetadataController-method-action-types.js'; +import { collectUniqueAndPairedCaveats, MethodNames } from './utils.js'; /** * Flags for controlling the validation behavior of certain internal methods. @@ -1895,9 +1895,7 @@ export class PermissionController< >, ): void { this.update((draftState) => { - if (!draftState.subjects[origin]) { - draftState.subjects[origin] = { origin, permissions: {} }; - } + draftState.subjects[origin] ??= { origin, permissions: {} }; draftState.subjects[origin].permissions = castDraft(permissions); }); diff --git a/packages/permission-controller/src/SubjectMetadataController-method-action-types.ts b/packages/permission-controller/src/SubjectMetadataController-method-action-types.ts index 7857132236d..1c0ceca3998 100644 --- a/packages/permission-controller/src/SubjectMetadataController-method-action-types.ts +++ b/packages/permission-controller/src/SubjectMetadataController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { SubjectMetadataController } from './SubjectMetadataController'; +import type { SubjectMetadataController } from './SubjectMetadataController.js'; /** * Clears the state of this controller. Also resets the cache of subjects diff --git a/packages/permission-controller/src/SubjectMetadataController.test.ts b/packages/permission-controller/src/SubjectMetadataController.test.ts index b58532db3f5..1e1e8b6eb3e 100644 --- a/packages/permission-controller/src/SubjectMetadataController.test.ts +++ b/packages/permission-controller/src/SubjectMetadataController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -10,11 +11,11 @@ import type { Json } from '@metamask/utils'; import type { SubjectMetadata, SubjectMetadataControllerMessenger, -} from './SubjectMetadataController'; +} from './SubjectMetadataController.js'; import { SubjectMetadataController, SubjectType, -} from './SubjectMetadataController'; +} from './SubjectMetadataController.js'; const controllerName = 'SubjectMetadataController'; diff --git a/packages/permission-controller/src/SubjectMetadataController.ts b/packages/permission-controller/src/SubjectMetadataController.ts index 19a3e516601..dc781c6d9c2 100644 --- a/packages/permission-controller/src/SubjectMetadataController.ts +++ b/packages/permission-controller/src/SubjectMetadataController.ts @@ -6,12 +6,12 @@ import { BaseController } from '@metamask/base-controller'; import type { Messenger } from '@metamask/messenger'; import type { Json } from '@metamask/utils'; +import type { PermissionControllerHasPermissionsAction } from './PermissionController-method-action-types.js'; import type { GenericPermissionController, PermissionSubjectMetadata, -} from './PermissionController'; -import type { PermissionControllerHasPermissionsAction } from './PermissionController-method-action-types'; -import type { SubjectMetadataControllerMethodActions } from './SubjectMetadataController-method-action-types'; +} from './PermissionController.js'; +import type { SubjectMetadataControllerMethodActions } from './SubjectMetadataController-method-action-types.js'; const controllerName = 'SubjectMetadataController'; diff --git a/packages/permission-controller/src/createRestrictedMethodMessenger.test.ts b/packages/permission-controller/src/createRestrictedMethodMessenger.test.ts index 0cf75cee098..62aeba55f14 100644 --- a/packages/permission-controller/src/createRestrictedMethodMessenger.test.ts +++ b/packages/permission-controller/src/createRestrictedMethodMessenger.test.ts @@ -1,6 +1,6 @@ import { Messenger } from '@metamask/messenger'; -import { createRestrictedMethodMessenger } from './createRestrictedMethodMessenger'; +import { createRestrictedMethodMessenger } from './createRestrictedMethodMessenger.js'; type FooAction = { type: 'Foo:ping'; diff --git a/packages/permission-controller/src/errors.test.ts b/packages/permission-controller/src/errors.test.ts index a10d1416b96..80263036e3b 100644 --- a/packages/permission-controller/src/errors.test.ts +++ b/packages/permission-controller/src/errors.test.ts @@ -1,7 +1,7 @@ import { CaveatMergeTypeMismatchError, EndowmentPermissionDoesNotExistError, -} from './errors'; +} from './errors.js'; describe('error', () => { describe('CaveatMergeTypeMismatchError', () => { diff --git a/packages/permission-controller/src/errors.ts b/packages/permission-controller/src/errors.ts index 9c0d9ed65cc..37bc6b7853f 100644 --- a/packages/permission-controller/src/errors.ts +++ b/packages/permission-controller/src/errors.ts @@ -10,9 +10,9 @@ import { JsonRpcError, } from '@metamask/rpc-errors'; -import type { CaveatConstraint } from './Caveat'; -import type { PermissionType } from './Permission'; -import type { PermissionDiffMap } from './PermissionController'; +import type { CaveatConstraint } from './Caveat.js'; +import type { PermissionType } from './Permission.js'; +import type { PermissionDiffMap } from './PermissionController.js'; type UnauthorizedArg = { data?: Record; diff --git a/packages/permission-controller/src/index.ts b/packages/permission-controller/src/index.ts index 962b7921ad2..9781a532965 100644 --- a/packages/permission-controller/src/index.ts +++ b/packages/permission-controller/src/index.ts @@ -1,8 +1,8 @@ -export * from './Caveat'; -export { createRestrictedMethodMessenger } from './createRestrictedMethodMessenger'; -export * from './errors'; -export * from './Permission'; -export * from './PermissionController'; +export * from './Caveat.js'; +export { createRestrictedMethodMessenger } from './createRestrictedMethodMessenger.js'; +export * from './errors.js'; +export * from './Permission.js'; +export * from './PermissionController.js'; export type { PermissionControllerClearStateAction, PermissionControllerExecuteRestrictedMethodAction, @@ -26,18 +26,18 @@ export type { PermissionControllerUpdatePermissionsByCaveatAction, PermissionControllerAcceptPermissionsRequestAction, PermissionControllerRejectPermissionsRequestAction, -} from './PermissionController-method-action-types'; +} from './PermissionController-method-action-types.js'; export { createPermissionMiddleware, createPermissionMiddlewareV2, type PermissionMiddlewareActions, -} from './permission-middleware'; -export type { ExtractSpecifications } from './utils'; -export { MethodNames } from './utils'; -export * from './SubjectMetadataController'; +} from './permission-middleware.js'; +export type { ExtractSpecifications } from './utils.js'; +export { MethodNames } from './utils.js'; +export * from './SubjectMetadataController.js'; export type { SubjectMetadataControllerClearStateAction, SubjectMetadataControllerAddSubjectMetadataAction, SubjectMetadataControllerGetSubjectMetadataAction, SubjectMetadataControllerTrimMetadataStateAction, -} from './SubjectMetadataController-method-action-types'; +} from './SubjectMetadataController-method-action-types.js'; diff --git a/packages/permission-controller/src/permission-middleware.ts b/packages/permission-controller/src/permission-middleware.ts index 6fbb954465a..9915f96ec6e 100644 --- a/packages/permission-controller/src/permission-middleware.ts +++ b/packages/permission-controller/src/permission-middleware.ts @@ -7,11 +7,11 @@ import type { JsonRpcMiddleware as JsonRpcMiddlewareV2 } from '@metamask/json-rp import type { Messenger } from '@metamask/messenger'; import type { Json } from '@metamask/utils'; -import type { RestrictedMethodParameters } from './Permission'; +import type { RestrictedMethodParameters } from './Permission.js'; import type { PermissionControllerExecuteRestrictedMethodAction, PermissionControllerHasUnrestrictedMethodAction, -} from './PermissionController-method-action-types'; +} from './PermissionController-method-action-types.js'; /** * The set of messenger actions required by the permission middleware. diff --git a/packages/permission-controller/src/utils.ts b/packages/permission-controller/src/utils.ts index d576924ad6d..7d229f97446 100644 --- a/packages/permission-controller/src/utils.ts +++ b/packages/permission-controller/src/utils.ts @@ -2,12 +2,12 @@ import type { CaveatConstraint, CaveatSpecificationConstraint, CaveatSpecificationMap, -} from './Caveat'; +} from './Caveat.js'; import type { PermissionConstraint, PermissionSpecificationConstraint, PermissionSpecificationMap, -} from './Permission'; +} from './Permission.js'; export enum MethodNames { RequestPermissions = 'wallet_requestPermissions', From a24356d9899b589b9b88f65ebb40a6143abfb5fd Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:10 +0200 Subject: [PATCH 043/115] ESLint fix and `jest` global import for eth-block-tracker Adds .js extensions to relative imports and `import { jest }` to test files. --- .../eth-block-tracker/src/PollingBlockTracker.test.ts | 9 +++++---- packages/eth-block-tracker/src/PollingBlockTracker.ts | 4 ++-- packages/eth-block-tracker/src/index.ts | 4 ++-- .../eth-block-tracker/tests/recordCallsToSetTimeout.ts | 3 ++- packages/eth-block-tracker/tests/withBlockTracker.ts | 4 ++-- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/eth-block-tracker/src/PollingBlockTracker.test.ts b/packages/eth-block-tracker/src/PollingBlockTracker.test.ts index 95ae2204f76..4177b762595 100644 --- a/packages/eth-block-tracker/src/PollingBlockTracker.test.ts +++ b/packages/eth-block-tracker/src/PollingBlockTracker.test.ts @@ -1,9 +1,10 @@ +import { jest } from '@jest/globals'; import { createDeferredPromise } from '@metamask/utils'; -import { PollingBlockTracker } from '.'; -import EMPTY_FUNCTION from '../tests/emptyFunction'; -import recordCallsToSetTimeout from '../tests/recordCallsToSetTimeout'; -import { withPollingBlockTracker } from '../tests/withBlockTracker'; +import EMPTY_FUNCTION from '../tests/emptyFunction.js'; +import recordCallsToSetTimeout from '../tests/recordCallsToSetTimeout.js'; +import { withPollingBlockTracker } from '../tests/withBlockTracker.js'; +import { PollingBlockTracker } from './index.js'; type Sync = { oldBlock: string; diff --git a/packages/eth-block-tracker/src/PollingBlockTracker.ts b/packages/eth-block-tracker/src/PollingBlockTracker.ts index 4d8bbe5737c..ab3e858bf9b 100644 --- a/packages/eth-block-tracker/src/PollingBlockTracker.ts +++ b/packages/eth-block-tracker/src/PollingBlockTracker.ts @@ -8,8 +8,8 @@ import { createDeferredPromise, getErrorMessage } from '@metamask/utils'; import type { DeferredPromise, JsonRpcRequest } from '@metamask/utils'; import getCreateRandomId from 'json-rpc-random-id'; -import type { BlockTracker } from './BlockTracker'; -import { projectLogger, createModuleLogger } from './logging-utils'; +import type { BlockTracker } from './BlockTracker.js'; +import { projectLogger, createModuleLogger } from './logging-utils.js'; const log = createModuleLogger(projectLogger, 'polling-block-tracker'); const createRandomId = getCreateRandomId(); diff --git a/packages/eth-block-tracker/src/index.ts b/packages/eth-block-tracker/src/index.ts index 20f0aa19b07..32370f265de 100644 --- a/packages/eth-block-tracker/src/index.ts +++ b/packages/eth-block-tracker/src/index.ts @@ -1,2 +1,2 @@ -export * from './PollingBlockTracker'; -export type * from './BlockTracker'; +export * from './PollingBlockTracker.js'; +export type * from './BlockTracker.js'; diff --git a/packages/eth-block-tracker/tests/recordCallsToSetTimeout.ts b/packages/eth-block-tracker/tests/recordCallsToSetTimeout.ts index 42116a3e78f..aaafca0d7f3 100644 --- a/packages/eth-block-tracker/tests/recordCallsToSetTimeout.ts +++ b/packages/eth-block-tracker/tests/recordCallsToSetTimeout.ts @@ -1,6 +1,7 @@ +import { jest } from '@jest/globals'; import EventEmitter from 'events'; -import EMPTY_FUNCTION from './emptyFunction'; +import EMPTY_FUNCTION from './emptyFunction.js'; type SetTimeoutCallback = () => unknown; diff --git a/packages/eth-block-tracker/tests/withBlockTracker.ts b/packages/eth-block-tracker/tests/withBlockTracker.ts index b5d6fe46759..4f78fbfdd60 100644 --- a/packages/eth-block-tracker/tests/withBlockTracker.ts +++ b/packages/eth-block-tracker/tests/withBlockTracker.ts @@ -3,8 +3,8 @@ import { JsonRpcEngine } from '@metamask/json-rpc-engine'; import type { Json } from '@metamask/utils'; import util from 'util'; -import type { PollingBlockTrackerOptions } from '../src'; -import { PollingBlockTracker } from '../src'; +import type { PollingBlockTrackerOptions } from '../src/index.js'; +import { PollingBlockTracker } from '../src/index.js'; type WithPollingBlockTrackerOptions = { provider?: FakeProviderOptions; From c0dd2a9d086eff3e3ebef3313192bf2b20808d74 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:14 +0200 Subject: [PATCH 044/115] ESLint fix and `jest` global import for eip1193-permission-middleware --- packages/eip1193-permission-middleware/package.json | 2 +- .../eip1193-permission-middleware/src/index.test.ts | 8 ++++---- packages/eip1193-permission-middleware/src/index.ts | 6 +++--- .../src/wallet-getPermissions.test.ts | 5 +++-- .../src/wallet-getPermissions.ts | 8 +++++--- .../src/wallet-requestPermissions.test.ts | 5 +++-- .../src/wallet-requestPermissions.ts | 10 ++++++---- .../src/wallet-revokePermissions.test.ts | 5 +++-- .../src/wallet-revokePermissions.ts | 2 +- 9 files changed, 29 insertions(+), 22 deletions(-) diff --git a/packages/eip1193-permission-middleware/package.json b/packages/eip1193-permission-middleware/package.json index 61a47e5f1d3..61068c021c9 100644 --- a/packages/eip1193-permission-middleware/package.json +++ b/packages/eip1193-permission-middleware/package.json @@ -51,7 +51,7 @@ "@metamask/json-rpc-engine": "^10.5.0", "@metamask/permission-controller": "^13.1.1", "@metamask/utils": "^11.11.0", - "lodash": "^4.17.21" + "lodash-es": "^4.17.21" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", diff --git a/packages/eip1193-permission-middleware/src/index.test.ts b/packages/eip1193-permission-middleware/src/index.test.ts index feed1294273..1963bae7b71 100644 --- a/packages/eip1193-permission-middleware/src/index.test.ts +++ b/packages/eip1193-permission-middleware/src/index.test.ts @@ -1,9 +1,9 @@ import { createMethodMiddleware } from '@metamask/json-rpc-engine'; -import * as allExports from '.'; -import type { GetPermissionsHooks } from './wallet-getPermissions'; -import type { RequestPermissionsHooks } from './wallet-requestPermissions'; -import type { RevokePermissionsHooks } from './wallet-revokePermissions'; +import * as allExports from './index.js'; +import type { GetPermissionsHooks } from './wallet-getPermissions.js'; +import type { RequestPermissionsHooks } from './wallet-requestPermissions.js'; +import type { RevokePermissionsHooks } from './wallet-revokePermissions.js'; type Hooks = GetPermissionsHooks & RequestPermissionsHooks & diff --git a/packages/eip1193-permission-middleware/src/index.ts b/packages/eip1193-permission-middleware/src/index.ts index ef0b2336e84..c84419f78fc 100644 --- a/packages/eip1193-permission-middleware/src/index.ts +++ b/packages/eip1193-permission-middleware/src/index.ts @@ -1,8 +1,8 @@ import { MethodNames } from '@metamask/permission-controller'; -import { getPermissionsHandler } from './wallet-getPermissions'; -import { requestPermissionsHandler } from './wallet-requestPermissions'; -import { revokePermissionsHandler } from './wallet-revokePermissions'; +import { getPermissionsHandler } from './wallet-getPermissions.js'; +import { requestPermissionsHandler } from './wallet-requestPermissions.js'; +import { revokePermissionsHandler } from './wallet-revokePermissions.js'; type MethodHandlers = { [MethodNames.GetPermissions]: typeof getPermissionsHandler; diff --git a/packages/eip1193-permission-middleware/src/wallet-getPermissions.test.ts b/packages/eip1193-permission-middleware/src/wallet-getPermissions.test.ts index a13091bb69e..0221987fda6 100644 --- a/packages/eip1193-permission-middleware/src/wallet-getPermissions.test.ts +++ b/packages/eip1193-permission-middleware/src/wallet-getPermissions.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import * as chainAgnosticPermissionModule from '@metamask/chain-agnostic-permission'; import type { Json, @@ -5,8 +6,8 @@ import type { PendingJsonRpcResponse, } from '@metamask/utils'; -import { CaveatTypes, EndowmentTypes, RestrictedMethods } from './types'; -import { getPermissionsHandler } from './wallet-getPermissions'; +import { CaveatTypes, EndowmentTypes, RestrictedMethods } from './types.js'; +import { getPermissionsHandler } from './wallet-getPermissions.js'; jest.mock('@metamask/chain-agnostic-permission', () => ({ ...jest.requireActual('@metamask/chain-agnostic-permission'), diff --git a/packages/eip1193-permission-middleware/src/wallet-getPermissions.ts b/packages/eip1193-permission-middleware/src/wallet-getPermissions.ts index 52914bc1ff4..f5534c34de4 100644 --- a/packages/eip1193-permission-middleware/src/wallet-getPermissions.ts +++ b/packages/eip1193-permission-middleware/src/wallet-getPermissions.ts @@ -16,7 +16,7 @@ import type { PendingJsonRpcResponse, } from '@metamask/utils'; -import { CaveatTypes, EndowmentTypes, RestrictedMethods } from './types'; +import { CaveatTypes, EndowmentTypes, RestrictedMethods } from './types.js'; export type GetPermissionsHooks = { getPermissionsForOrigin: () => ReturnType< @@ -65,7 +65,7 @@ async function getPermissionsImplementation( const caip25Endowment = permissions[Caip25EndowmentPermissionName]; const caip25CaveatValue = caip25Endowment?.caveats?.find( ({ type }) => type === Caip25CaveatType, - )?.value as Caip25CaveatValue | undefined; + )?.value; delete permissions[Caip25EndowmentPermissionName]; if (caip25CaveatValue) { @@ -86,7 +86,9 @@ async function getPermissionsImplementation( }; } - const ethChainIds = getPermittedEthChainIds(caip25CaveatValue); + const ethChainIds = getPermittedEthChainIds( + caip25CaveatValue as Caip25CaveatValue, + ); if (ethChainIds.length > 0) { permissions[EndowmentTypes.PermittedChains] = { diff --git a/packages/eip1193-permission-middleware/src/wallet-requestPermissions.test.ts b/packages/eip1193-permission-middleware/src/wallet-requestPermissions.test.ts index c14728e930d..f74b6402f18 100644 --- a/packages/eip1193-permission-middleware/src/wallet-requestPermissions.test.ts +++ b/packages/eip1193-permission-middleware/src/wallet-requestPermissions.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Caip25CaveatType, Caip25EndowmentPermissionName, @@ -6,8 +7,8 @@ import { invalidParams } from '@metamask/permission-controller'; import type { RequestedPermissions } from '@metamask/permission-controller'; import type { JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils'; -import { CaveatTypes, EndowmentTypes, RestrictedMethods } from './types'; -import { requestPermissionsHandler } from './wallet-requestPermissions'; +import { CaveatTypes, EndowmentTypes, RestrictedMethods } from './types.js'; +import { requestPermissionsHandler } from './wallet-requestPermissions.js'; const getBaseRequest = (overrides = {}) => ({ jsonrpc: '2.0' as const, diff --git a/packages/eip1193-permission-middleware/src/wallet-requestPermissions.ts b/packages/eip1193-permission-middleware/src/wallet-requestPermissions.ts index ec723df7ba3..a79fef29601 100644 --- a/packages/eip1193-permission-middleware/src/wallet-requestPermissions.ts +++ b/packages/eip1193-permission-middleware/src/wallet-requestPermissions.ts @@ -22,9 +22,9 @@ import type { JsonRpcRequest, PendingJsonRpcResponse, } from '@metamask/utils'; -import { pick } from 'lodash'; +import { pick } from 'lodash-es'; -import { CaveatTypes, EndowmentTypes, RestrictedMethods } from './types'; +import { CaveatTypes, EndowmentTypes, RestrictedMethods } from './types.js'; export type RequestPermissionsHooks = { getAccounts: () => string[]; @@ -128,7 +128,7 @@ async function requestPermissionsImplementation( const caip25CaveatValue = caip25Endowment.caveats?.find( ({ type }) => type === Caip25CaveatType, - )?.value as Caip25CaveatValue | undefined; + )?.value; if (!caip25CaveatValue) { throw new Error( `could not find ${Caip25CaveatType} in granted ${Caip25EndowmentPermissionName} permission.`, @@ -151,7 +151,9 @@ async function requestPermissionsImplementation( ], }; - const ethChainIds = getPermittedEthChainIds(caip25CaveatValue); + const ethChainIds = getPermittedEthChainIds( + caip25CaveatValue as Caip25CaveatValue, + ); if (ethChainIds.length > 0) { grantedPermissions[EndowmentTypes.PermittedChains] = { diff --git a/packages/eip1193-permission-middleware/src/wallet-revokePermissions.test.ts b/packages/eip1193-permission-middleware/src/wallet-revokePermissions.test.ts index 34bb499c4c3..1301211f8ec 100644 --- a/packages/eip1193-permission-middleware/src/wallet-revokePermissions.test.ts +++ b/packages/eip1193-permission-middleware/src/wallet-revokePermissions.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Caip25EndowmentPermissionName } from '@metamask/chain-agnostic-permission'; import { invalidParams } from '@metamask/permission-controller'; import type { @@ -6,8 +7,8 @@ import type { PendingJsonRpcResponse, } from '@metamask/utils'; -import { EndowmentTypes, RestrictedMethods } from './types'; -import { revokePermissionsHandler } from './wallet-revokePermissions'; +import { EndowmentTypes, RestrictedMethods } from './types.js'; +import { revokePermissionsHandler } from './wallet-revokePermissions.js'; const baseRequest = { jsonrpc: '2.0' as const, diff --git a/packages/eip1193-permission-middleware/src/wallet-revokePermissions.ts b/packages/eip1193-permission-middleware/src/wallet-revokePermissions.ts index 8f051393a16..96039209937 100644 --- a/packages/eip1193-permission-middleware/src/wallet-revokePermissions.ts +++ b/packages/eip1193-permission-middleware/src/wallet-revokePermissions.ts @@ -13,7 +13,7 @@ import type { PendingJsonRpcResponse, } from '@metamask/utils'; -import { EndowmentTypes, RestrictedMethods } from './types'; +import { EndowmentTypes, RestrictedMethods } from './types.js'; export type RevokePermissionsHooks = { revokePermissionsForOrigin: ( From 512ef3efd9932f9ddd6b114fdeb71737c0c4d2b5 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:15 +0200 Subject: [PATCH 045/115] ESLint fix and `jest` global import for snap-account-service --- packages/snap-account-service/package.json | 2 +- .../SnapAccountService-method-action-types.ts | 2 +- .../src/SnapAccountService.test.ts | 7 ++++--- .../src/SnapAccountService.ts | 18 +++++++----------- .../src/SnapPlatformWatcher.test.ts | 6 +++--- .../src/SnapPlatformWatcher.ts | 6 +++--- .../src/SnapTracker.test.ts | 5 +++-- .../snap-account-service/src/SnapTracker.ts | 4 ++-- packages/snap-account-service/src/index.ts | 10 +++++----- 9 files changed, 29 insertions(+), 31 deletions(-) diff --git a/packages/snap-account-service/package.json b/packages/snap-account-service/package.json index 52d5cdaadf9..f3761003bad 100644 --- a/packages/snap-account-service/package.json +++ b/packages/snap-account-service/package.json @@ -58,7 +58,7 @@ "@metamask/snaps-controllers": "^19.0.0", "@metamask/snaps-sdk": "^11.0.0", "@metamask/utils": "^11.11.0", - "lodash": "^4.17.21" + "lodash-es": "^4.17.21" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", diff --git a/packages/snap-account-service/src/SnapAccountService-method-action-types.ts b/packages/snap-account-service/src/SnapAccountService-method-action-types.ts index 3cfece68bb1..2ebf8c7b3ca 100644 --- a/packages/snap-account-service/src/SnapAccountService-method-action-types.ts +++ b/packages/snap-account-service/src/SnapAccountService-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { SnapAccountService } from './SnapAccountService'; +import type { SnapAccountService } from './SnapAccountService.js'; /** * Returns the IDs of all currently tracked account-management Snaps — diff --git a/packages/snap-account-service/src/SnapAccountService.test.ts b/packages/snap-account-service/src/SnapAccountService.test.ts index 4960416aa17..65ef452cdc4 100644 --- a/packages/snap-account-service/src/SnapAccountService.test.ts +++ b/packages/snap-account-service/src/SnapAccountService.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { AccountGroupId } from '@metamask/account-api'; import { SNAP_KEYRING_TYPE } from '@metamask/eth-snap-keyring'; import type { SnapMessage } from '@metamask/eth-snap-keyring'; @@ -42,9 +43,9 @@ import type { TruncatedSnap } from '@metamask/snaps-utils'; import type { SnapAccountServiceMessenger, SnapAccountServiceOptions, -} from './SnapAccountService'; -import { SnapAccountService } from './SnapAccountService'; -import type { AccountGroupObject } from './types'; +} from './SnapAccountService.js'; +import { SnapAccountService } from './SnapAccountService.js'; +import type { AccountGroupObject } from './types.js'; jest.mock('@metamask/keyring-internal-snap-client/v2'); diff --git a/packages/snap-account-service/src/SnapAccountService.ts b/packages/snap-account-service/src/SnapAccountService.ts index e8e4f5634d6..daded6aec87 100644 --- a/packages/snap-account-service/src/SnapAccountService.ts +++ b/packages/snap-account-service/src/SnapAccountService.ts @@ -40,8 +40,8 @@ import { isKeyringNotFoundError, KeyringTypes, } from '@metamask/keyring-controller'; -import { KeyringInternalSnapClient } from '@metamask/keyring-internal-snap-client/v2'; import type { KeyringInternalSnapClientMessenger } from '@metamask/keyring-internal-snap-client'; +import { KeyringInternalSnapClient } from '@metamask/keyring-internal-snap-client/v2'; import { SnapManageAccountsMethod } from '@metamask/keyring-snap-sdk'; import type { AccountId, @@ -66,7 +66,7 @@ import { SnapId } from '@metamask/snaps-sdk'; import type { Json } from '@metamask/utils'; import { assertStruct } from '@metamask/utils'; -import { projectLogger as log } from './logger'; +import { projectLogger as log } from './logger.js'; import type { SnapAccountServiceEnsureReadyAction, SnapAccountServiceEnsureMigratedAction, @@ -78,10 +78,10 @@ import type { SnapAccountServiceHandleKeyringSnapMessageAction, SnapAccountServiceResolveAccountAddressAction, SnapAccountServiceSetSelectedAccountsAction, -} from './SnapAccountService-method-action-types'; -import { SnapPlatformWatcher } from './SnapPlatformWatcher'; -import type { SnapPlatformWatcherConfig } from './SnapPlatformWatcher'; -import { SnapTracker } from './SnapTracker'; +} from './SnapAccountService-method-action-types.js'; +import { SnapPlatformWatcher } from './SnapPlatformWatcher.js'; +import type { SnapPlatformWatcherConfig } from './SnapPlatformWatcher.js'; +import { SnapTracker } from './SnapTracker.js'; import type { AccountTreeControllerGetAccountGroupObjectAction, AccountTreeControllerGetSelectedAccountGroupAction, @@ -90,7 +90,7 @@ import type { AccountTreeControllerAccountGroupUpdatedEvent, AccountTreeControllerAccountGroupRemovedEvent, AccountGroupObject, -} from './types'; +} from './types.js'; /** * The name of the {@link SnapAccountService}, used to namespace the service's @@ -333,7 +333,6 @@ export class SnapAccountService { * @param groupId - The ID of the newly selected account group. */ #handleSelectedAccountGroupChange(groupId: AccountGroupId | ''): void { - // eslint-disable-next-line no-void void this.#forwardSelectedAccounts( groupId, this.#getAccountGroup(groupId)?.accounts, @@ -346,7 +345,6 @@ export class SnapAccountService { * keyring. */ #handleUnlock(): void { - // eslint-disable-next-line no-void void this.ensureMigrated() .then(async () => { // If the migration is successful, we re-forward the current groups to each new keyrings! @@ -369,7 +367,6 @@ export class SnapAccountService { */ #handleAccountGroupCreatedOrUpdated(group: AccountGroupObject): void { if (group.id === this.#getSelectedAccountGroupId()) { - // eslint-disable-next-line no-void void this.#forwardSelectedAccounts(group.id, group.accounts); } } @@ -382,7 +379,6 @@ export class SnapAccountService { */ #handleAccountGroupRemoved(groupId: AccountGroupId): void { if (groupId === this.#getSelectedAccountGroupId()) { - // eslint-disable-next-line no-void void this.#forwardSelectedAccounts( groupId, [], // Clearing accounts since the group is removed diff --git a/packages/snap-account-service/src/SnapPlatformWatcher.test.ts b/packages/snap-account-service/src/SnapPlatformWatcher.test.ts index dfce52b79b9..c385d993026 100644 --- a/packages/snap-account-service/src/SnapPlatformWatcher.test.ts +++ b/packages/snap-account-service/src/SnapPlatformWatcher.test.ts @@ -1,4 +1,4 @@ -/* eslint-disable no-void */ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MockAnyNamespace, @@ -8,8 +8,8 @@ import type { import type { SnapControllerState } from '@metamask/snaps-controllers'; import { createDeferredPromise } from '@metamask/utils'; -import type { SnapAccountServiceMessenger } from './SnapAccountService'; -import { SnapPlatformWatcher } from './SnapPlatformWatcher'; +import type { SnapAccountServiceMessenger } from './SnapAccountService.js'; +import { SnapPlatformWatcher } from './SnapPlatformWatcher.js'; type RootMessenger = Messenger< MockAnyNamespace, diff --git a/packages/snap-account-service/src/SnapPlatformWatcher.ts b/packages/snap-account-service/src/SnapPlatformWatcher.ts index 91beb4144d1..b4ba6869e5f 100644 --- a/packages/snap-account-service/src/SnapPlatformWatcher.ts +++ b/packages/snap-account-service/src/SnapPlatformWatcher.ts @@ -1,8 +1,8 @@ import { createDeferredPromise, DeferredPromise } from '@metamask/utils'; -import { once } from 'lodash'; +import { once } from 'lodash-es'; -import { projectLogger as log } from './logger'; -import type { SnapAccountServiceMessenger } from './SnapAccountService'; +import { projectLogger as log } from './logger.js'; +import type { SnapAccountServiceMessenger } from './SnapAccountService.js'; export type SnapPlatformWatcherConfig = { /** diff --git a/packages/snap-account-service/src/SnapTracker.test.ts b/packages/snap-account-service/src/SnapTracker.test.ts index 5d5be4c3109..9ed0a62284e 100644 --- a/packages/snap-account-service/src/SnapTracker.test.ts +++ b/packages/snap-account-service/src/SnapTracker.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MockAnyNamespace, @@ -7,8 +8,8 @@ import type { import type { SnapId } from '@metamask/snaps-sdk'; import type { TruncatedSnap } from '@metamask/snaps-utils'; -import type { SnapAccountServiceMessenger } from './SnapAccountService'; -import { SnapTracker } from './SnapTracker'; +import type { SnapAccountServiceMessenger } from './SnapAccountService.js'; +import { SnapTracker } from './SnapTracker.js'; type RootMessenger = Messenger< MockAnyNamespace, diff --git a/packages/snap-account-service/src/SnapTracker.ts b/packages/snap-account-service/src/SnapTracker.ts index b824892c4ba..67436f67692 100644 --- a/packages/snap-account-service/src/SnapTracker.ts +++ b/packages/snap-account-service/src/SnapTracker.ts @@ -1,8 +1,8 @@ import { SnapId } from '@metamask/snaps-sdk'; import type { TruncatedSnap } from '@metamask/snaps-utils'; -import { projectLogger as log } from './logger'; -import type { SnapAccountServiceMessenger } from './SnapAccountService'; +import { projectLogger as log } from './logger.js'; +import type { SnapAccountServiceMessenger } from './SnapAccountService.js'; /** * Checks if a given Snap is an account management Snap. diff --git a/packages/snap-account-service/src/index.ts b/packages/snap-account-service/src/index.ts index a1f09bc833c..1d08878273a 100644 --- a/packages/snap-account-service/src/index.ts +++ b/packages/snap-account-service/src/index.ts @@ -1,4 +1,4 @@ -export { SnapAccountService } from './SnapAccountService'; +export { SnapAccountService } from './SnapAccountService.js'; export type { SnapAccountServiceActions, SnapAccountServiceConfig, @@ -8,7 +8,7 @@ export type { SnapAccountServiceAccountAssetListUpdatedEvent, SnapAccountServiceMessenger, SnapAccountServiceOptions, -} from './SnapAccountService'; +} from './SnapAccountService.js'; export type { SnapAccountServiceEnsureMigratedAction, SnapAccountServiceEnsureReadyAction, @@ -20,6 +20,6 @@ export type { SnapAccountServiceHandleKeyringSnapMessageAction, SnapAccountServiceResolveAccountAddressAction, SnapAccountServiceSetSelectedAccountsAction, -} from './SnapAccountService-method-action-types'; -export { SnapPlatformWatcher } from './SnapPlatformWatcher'; -export type { SnapPlatformWatcherConfig } from './SnapPlatformWatcher'; +} from './SnapAccountService-method-action-types.js'; +export { SnapPlatformWatcher } from './SnapPlatformWatcher.js'; +export type { SnapPlatformWatcherConfig } from './SnapPlatformWatcher.js'; From e0563bca413ae2c9dba143a2e9f7ed769b566e70 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:18 +0200 Subject: [PATCH 046/115] ESLint fix and `jest` global import for chain-agnostic-permission --- .../chain-agnostic-permission/package.json | 2 +- .../src/caip25Permission.test.ts | 13 ++++---- .../src/caip25Permission.ts | 20 ++++++------- .../src/index.test.ts | 2 +- .../chain-agnostic-permission/src/index.ts | 30 +++++++++---------- .../caip-permission-operator-accounts.test.ts | 6 ++-- .../caip-permission-operator-accounts.ts | 13 ++++---- ...ermission-operator-permittedChains.test.ts | 6 ++-- ...aip-permission-operator-permittedChains.ts | 13 ++++---- ...permission-operator-session-scopes.test.ts | 5 ++-- ...caip-permission-operator-session-scopes.ts | 12 ++++---- .../src/scope/assert.test.ts | 9 +++--- .../src/scope/assert.ts | 6 ++-- .../src/scope/authorization.test.ts | 12 ++++---- .../src/scope/authorization.ts | 10 +++---- .../src/scope/constants.test.ts | 2 +- .../src/scope/constants.ts | 4 +-- .../src/scope/errors.test.ts | 2 +- .../src/scope/filter.test.ts | 8 +++-- .../src/scope/filter.ts | 6 ++-- .../src/scope/supported.test.ts | 6 ++-- .../src/scope/supported.ts | 6 ++-- .../src/scope/transform.test.ts | 4 +-- .../src/scope/transform.ts | 6 ++-- .../src/scope/types.test.ts | 2 +- .../src/scope/validation.test.ts | 4 +-- .../src/scope/validation.ts | 4 +-- 27 files changed, 114 insertions(+), 99 deletions(-) diff --git a/packages/chain-agnostic-permission/package.json b/packages/chain-agnostic-permission/package.json index bcb1dd881be..217b95a376d 100644 --- a/packages/chain-agnostic-permission/package.json +++ b/packages/chain-agnostic-permission/package.json @@ -51,7 +51,7 @@ "@metamask/permission-controller": "^13.1.1", "@metamask/rpc-errors": "^7.0.2", "@metamask/utils": "^11.11.0", - "lodash": "^4.17.21" + "lodash-es": "^4.17.21" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", diff --git a/packages/chain-agnostic-permission/src/caip25Permission.test.ts b/packages/chain-agnostic-permission/src/caip25Permission.test.ts index 514488adc95..1316c7c3c90 100644 --- a/packages/chain-agnostic-permission/src/caip25Permission.test.ts +++ b/packages/chain-agnostic-permission/src/caip25Permission.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { CaveatMutatorOperation, PermissionType, @@ -8,9 +9,9 @@ import type { PermissionSpecificationConstraint, CaveatSpecificationConstraint, } from '@metamask/permission-controller'; -import { pick } from 'lodash'; +import { pick } from 'lodash-es'; -import type { Caip25CaveatValue } from './caip25Permission'; +import type { Caip25CaveatValue } from './caip25Permission.js'; import { Caip25CaveatType, caip25EndowmentBuilder, @@ -23,10 +24,10 @@ import { getCaip25CaveatFromPermission, getCaip25PermissionFromLegacyPermissions, requestPermittedChainsPermissionIncremental, -} from './caip25Permission'; -import { CaveatTypes, PermissionKeys } from './constants'; -import { KnownSessionProperties } from './scope/constants'; -import * as ScopeSupported from './scope/supported'; +} from './caip25Permission.js'; +import { CaveatTypes, PermissionKeys } from './constants.js'; +import { KnownSessionProperties } from './scope/constants.js'; +import * as ScopeSupported from './scope/supported.js'; jest.mock('./scope/supported', () => ({ ...jest.requireActual('./scope/supported'), diff --git a/packages/chain-agnostic-permission/src/caip25Permission.ts b/packages/chain-agnostic-permission/src/caip25Permission.ts index 2671fdd226e..3758969b4f7 100644 --- a/packages/chain-agnostic-permission/src/caip25Permission.ts +++ b/packages/chain-agnostic-permission/src/caip25Permission.ts @@ -23,31 +23,31 @@ import type { Hex, NonEmptyArray, } from '@metamask/utils'; -import { cloneDeep, isEqual, pick } from 'lodash'; +import { cloneDeep, isEqual, pick } from 'lodash-es'; -import { CaveatTypes, PermissionKeys } from './constants'; +import { CaveatTypes, PermissionKeys } from './constants.js'; import { setEthAccounts, setNonSCACaipAccountIdsInCaip25CaveatValue, -} from './operators/caip-permission-operator-accounts'; +} from './operators/caip-permission-operator-accounts.js'; import { setChainIdsInCaip25CaveatValue, setPermittedEthChainIds, -} from './operators/caip-permission-operator-permittedChains'; -import { assertIsInternalScopesObject } from './scope/assert'; -import { KnownSessionProperties } from './scope/constants'; +} from './operators/caip-permission-operator-permittedChains.js'; +import { assertIsInternalScopesObject } from './scope/assert.js'; +import { KnownSessionProperties } from './scope/constants.js'; import { isSupportedAccount, isSupportedScopeString, isSupportedSessionProperty, -} from './scope/supported'; -import { mergeInternalScopes } from './scope/transform'; -import { parseScopeString } from './scope/types'; +} from './scope/supported.js'; +import { mergeInternalScopes } from './scope/transform.js'; +import { parseScopeString } from './scope/types.js'; import type { ExternalScopeString, InternalScopeObject, InternalScopesObject, -} from './scope/types'; +} from './scope/types.js'; /** * The CAIP-25 permission caveat value. diff --git a/packages/chain-agnostic-permission/src/index.test.ts b/packages/chain-agnostic-permission/src/index.test.ts index 33c73ae3767..ed3f1140af1 100644 --- a/packages/chain-agnostic-permission/src/index.test.ts +++ b/packages/chain-agnostic-permission/src/index.test.ts @@ -1,4 +1,4 @@ -import * as allExports from '.'; +import * as allExports from './index.js'; describe('@metamask/chain-agnostic-permission', () => { it('has expected JavaScript exports', () => { diff --git a/packages/chain-agnostic-permission/src/index.ts b/packages/chain-agnostic-permission/src/index.ts index 734114f6c4b..bf4f3744db8 100644 --- a/packages/chain-agnostic-permission/src/index.ts +++ b/packages/chain-agnostic-permission/src/index.ts @@ -6,7 +6,7 @@ export { getCaipAccountIdsFromCaip25CaveatValue, isInternalAccountInPermittedAccountIds, isCaipAccountIdInPermittedAccountIds, -} from './operators/caip-permission-operator-accounts'; +} from './operators/caip-permission-operator-accounts.js'; export { getPermittedEthChainIds, addPermittedEthChainId, @@ -17,20 +17,20 @@ export { getAllScopesFromPermission, getAllScopesFromCaip25CaveatValue, getAllScopesFromScopesObjects, -} from './operators/caip-permission-operator-permittedChains'; +} from './operators/caip-permission-operator-permittedChains.js'; export { getInternalScopesObject, getSessionScopes, getSessionProperties, getPermittedAccountsForScopes, -} from './operators/caip-permission-operator-session-scopes'; -export type { Caip25Authorization } from './scope/authorization'; +} from './operators/caip-permission-operator-session-scopes.js'; +export type { Caip25Authorization } from './scope/authorization.js'; export { validateAndNormalizeScopes, bucketScopes, isNamespaceInScopesObject, -} from './scope/authorization'; -export { assertIsInternalScopeString } from './scope/assert'; +} from './scope/authorization.js'; +export { assertIsInternalScopeString } from './scope/assert.js'; export { KnownWalletRpcMethods, KnownRpcMethods, @@ -38,8 +38,8 @@ export { KnownNotifications, KnownWalletScopeString, isKnownSessionPropertyValue, -} from './scope/constants'; -export { getSupportedScopeObjects } from './scope/filter'; +} from './scope/constants.js'; +export { getSupportedScopeObjects } from './scope/filter.js'; export type { ExternalScopeString, ExternalScopeObject, @@ -51,8 +51,8 @@ export type { NormalizedScopesObject, ScopedProperties, NonWalletKnownCaipNamespace, -} from './scope/types'; -export { parseScopeString } from './scope/types'; +} from './scope/types.js'; +export { parseScopeString } from './scope/types.js'; export { getUniqueArrayItems, normalizeScope, @@ -60,9 +60,9 @@ export { mergeNormalizedScopes, mergeInternalScopes, normalizeAndMergeScopes, -} from './scope/transform'; +} from './scope/transform.js'; -export type { Caip25CaveatValue } from './caip25Permission'; +export type { Caip25CaveatValue } from './caip25Permission.js'; export { caip25CaveatBuilder, Caip25CaveatType, @@ -74,6 +74,6 @@ export { getCaip25CaveatFromPermission, getCaip25PermissionFromLegacyPermissions, requestPermittedChainsPermissionIncremental, -} from './caip25Permission'; -export { KnownSessionProperties } from './scope/constants'; -export { Caip25Errors } from './scope/errors'; +} from './caip25Permission.js'; +export { KnownSessionProperties } from './scope/constants.js'; +export { Caip25Errors } from './scope/errors.js'; diff --git a/packages/chain-agnostic-permission/src/operators/caip-permission-operator-accounts.test.ts b/packages/chain-agnostic-permission/src/operators/caip-permission-operator-accounts.test.ts index 52aca179221..216dc401e55 100644 --- a/packages/chain-agnostic-permission/src/operators/caip-permission-operator-accounts.test.ts +++ b/packages/chain-agnostic-permission/src/operators/caip-permission-operator-accounts.test.ts @@ -1,7 +1,7 @@ import type { CaipAccountId } from '@metamask/utils'; -import type { Caip25CaveatValue } from '../caip25Permission'; -import type { InternalScopesObject } from '../scope/types'; +import type { Caip25CaveatValue } from '../caip25Permission.js'; +import type { InternalScopesObject } from '../scope/types.js'; import { getEthAccounts, setEthAccounts, @@ -10,7 +10,7 @@ import { getCaipAccountIdsFromCaip25CaveatValue, isCaipAccountIdInPermittedAccountIds, isInternalAccountInPermittedAccountIds, -} from './caip-permission-operator-accounts'; +} from './caip-permission-operator-accounts.js'; describe('CAIP-25 eth_accounts adapters', () => { describe('getEthAccounts', () => { diff --git a/packages/chain-agnostic-permission/src/operators/caip-permission-operator-accounts.ts b/packages/chain-agnostic-permission/src/operators/caip-permission-operator-accounts.ts index 71278aca353..281daa5e874 100644 --- a/packages/chain-agnostic-permission/src/operators/caip-permission-operator-accounts.ts +++ b/packages/chain-agnostic-permission/src/operators/caip-permission-operator-accounts.ts @@ -13,11 +13,14 @@ import type { Hex, } from '@metamask/utils'; -import type { Caip25CaveatValue } from '../caip25Permission'; -import { KnownWalletScopeString } from '../scope/constants'; -import { getUniqueArrayItems } from '../scope/transform'; -import type { InternalScopeString, InternalScopesObject } from '../scope/types'; -import { parseScopeString } from '../scope/types'; +import type { Caip25CaveatValue } from '../caip25Permission.js'; +import { KnownWalletScopeString } from '../scope/constants.js'; +import { getUniqueArrayItems } from '../scope/transform.js'; +import type { + InternalScopeString, + InternalScopesObject, +} from '../scope/types.js'; +import { parseScopeString } from '../scope/types.js'; /* * diff --git a/packages/chain-agnostic-permission/src/operators/caip-permission-operator-permittedChains.test.ts b/packages/chain-agnostic-permission/src/operators/caip-permission-operator-permittedChains.test.ts index f85384c9569..a14c5802ee8 100644 --- a/packages/chain-agnostic-permission/src/operators/caip-permission-operator-permittedChains.test.ts +++ b/packages/chain-agnostic-permission/src/operators/caip-permission-operator-permittedChains.test.ts @@ -1,5 +1,5 @@ -import type { Caip25CaveatValue } from '../caip25Permission'; -import { Caip25CaveatType } from '../caip25Permission'; +import type { Caip25CaveatValue } from '../caip25Permission.js'; +import { Caip25CaveatType } from '../caip25Permission.js'; import { addPermittedEthChainId, getPermittedEthChainIds, @@ -10,7 +10,7 @@ import { getAllScopesFromCaip25CaveatValue, getAllNamespacesFromCaip25CaveatValue, getAllScopesFromPermission, -} from './caip-permission-operator-permittedChains'; +} from './caip-permission-operator-permittedChains.js'; describe('CAIP-25 permittedChains adapters', () => { describe('getPermittedEthChainIds', () => { diff --git a/packages/chain-agnostic-permission/src/operators/caip-permission-operator-permittedChains.ts b/packages/chain-agnostic-permission/src/operators/caip-permission-operator-permittedChains.ts index c8feac45825..b44f53debc5 100644 --- a/packages/chain-agnostic-permission/src/operators/caip-permission-operator-permittedChains.ts +++ b/packages/chain-agnostic-permission/src/operators/caip-permission-operator-permittedChains.ts @@ -2,11 +2,14 @@ import { toHex } from '@metamask/controller-utils'; import type { Hex, CaipChainId, CaipNamespace } from '@metamask/utils'; import { hexToBigInt, KnownCaipNamespace } from '@metamask/utils'; -import { Caip25CaveatType } from '../caip25Permission'; -import type { Caip25CaveatValue } from '../caip25Permission'; -import { getUniqueArrayItems } from '../scope/transform'; -import type { InternalScopesObject, InternalScopeString } from '../scope/types'; -import { isWalletScope, parseScopeString } from '../scope/types'; +import { Caip25CaveatType } from '../caip25Permission.js'; +import type { Caip25CaveatValue } from '../caip25Permission.js'; +import { getUniqueArrayItems } from '../scope/transform.js'; +import type { + InternalScopesObject, + InternalScopeString, +} from '../scope/types.js'; +import { isWalletScope, parseScopeString } from '../scope/types.js'; /* * diff --git a/packages/chain-agnostic-permission/src/operators/caip-permission-operator-session-scopes.test.ts b/packages/chain-agnostic-permission/src/operators/caip-permission-operator-session-scopes.test.ts index 3e17e0cf627..97e06fa43bf 100644 --- a/packages/chain-agnostic-permission/src/operators/caip-permission-operator-session-scopes.test.ts +++ b/packages/chain-agnostic-permission/src/operators/caip-permission-operator-session-scopes.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { CaipAccountId } from '@metamask/utils'; import { @@ -5,13 +6,13 @@ import { KnownRpcMethods, KnownWalletNamespaceRpcMethods, KnownWalletRpcMethods, -} from '../scope/constants'; +} from '../scope/constants.js'; import { getInternalScopesObject, getPermittedAccountsForScopes, getSessionProperties, getSessionScopes, -} from './caip-permission-operator-session-scopes'; +} from './caip-permission-operator-session-scopes.js'; describe('CAIP-25 session scopes adapters', () => { describe('getInternalScopesObject', () => { diff --git a/packages/chain-agnostic-permission/src/operators/caip-permission-operator-session-scopes.ts b/packages/chain-agnostic-permission/src/operators/caip-permission-operator-session-scopes.ts index 1c4ccbbf1a7..c2ca2b7d8da 100644 --- a/packages/chain-agnostic-permission/src/operators/caip-permission-operator-session-scopes.ts +++ b/packages/chain-agnostic-permission/src/operators/caip-permission-operator-session-scopes.ts @@ -1,20 +1,20 @@ import { isCaipChainId, KnownCaipNamespace } from '@metamask/utils'; import type { CaipAccountId, CaipChainId, Hex, Json } from '@metamask/utils'; -import type { Caip25CaveatValue } from '../caip25Permission'; +import type { Caip25CaveatValue } from '../caip25Permission.js'; import { KnownNotifications, KnownRpcMethods, KnownWalletNamespaceRpcMethods, KnownWalletRpcMethods, -} from '../scope/constants'; -import { mergeNormalizedScopes } from '../scope/transform'; +} from '../scope/constants.js'; +import { mergeNormalizedScopes } from '../scope/transform.js'; import type { InternalScopesObject, NormalizedScopesObject, -} from '../scope/types'; -import { parseScopeString } from '../scope/types'; -import { getEthAccounts } from './caip-permission-operator-accounts'; +} from '../scope/types.js'; +import { parseScopeString } from '../scope/types.js'; +import { getEthAccounts } from './caip-permission-operator-accounts.js'; /** * Converts an NormalizedScopesObject to a InternalScopesObject. diff --git a/packages/chain-agnostic-permission/src/scope/assert.test.ts b/packages/chain-agnostic-permission/src/scope/assert.test.ts index 92487edd291..fb8d327fabd 100644 --- a/packages/chain-agnostic-permission/src/scope/assert.test.ts +++ b/packages/chain-agnostic-permission/src/scope/assert.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import * as Utils from '@metamask/utils'; import { @@ -6,10 +7,10 @@ import { assertIsExternalScopesObject, assertIsInternalScopesObject, assertIsInternalScopeString, -} from './assert'; -import { Caip25Errors } from './errors'; -import * as Supported from './supported'; -import type { NormalizedScopeObject } from './types'; +} from './assert.js'; +import { Caip25Errors } from './errors.js'; +import * as Supported from './supported.js'; +import type { NormalizedScopeObject } from './types.js'; jest.mock('./supported', () => ({ isSupportedScopeString: jest.fn(), diff --git a/packages/chain-agnostic-permission/src/scope/assert.ts b/packages/chain-agnostic-permission/src/scope/assert.ts index 01eda87eb93..b5afee94bb5 100644 --- a/packages/chain-agnostic-permission/src/scope/assert.ts +++ b/packages/chain-agnostic-permission/src/scope/assert.ts @@ -8,12 +8,12 @@ import { } from '@metamask/utils'; import type { CaipChainId, Hex } from '@metamask/utils'; -import { Caip25Errors } from './errors'; +import { Caip25Errors } from './errors.js'; import { isSupportedMethod, isSupportedNotification, isSupportedScopeString, -} from './supported'; +} from './supported.js'; import type { ExternalScopeObject, ExternalScopesObject, @@ -23,7 +23,7 @@ import type { InternalScopeString, NormalizedScopeObject, NormalizedScopesObject, -} from './types'; +} from './types.js'; /** * Asserts that a scope string and its associated scope object are supported. diff --git a/packages/chain-agnostic-permission/src/scope/authorization.test.ts b/packages/chain-agnostic-permission/src/scope/authorization.test.ts index 53d3dc44111..a530f271d08 100644 --- a/packages/chain-agnostic-permission/src/scope/authorization.test.ts +++ b/packages/chain-agnostic-permission/src/scope/authorization.test.ts @@ -1,12 +1,14 @@ +import { jest } from '@jest/globals'; + import { bucketScopes, isNamespaceInScopesObject, validateAndNormalizeScopes, -} from './authorization'; -import * as Filter from './filter'; -import * as Transform from './transform'; -import type { ExternalScopeObject } from './types'; -import * as Validation from './validation'; +} from './authorization.js'; +import * as Filter from './filter.js'; +import * as Transform from './transform.js'; +import type { ExternalScopeObject } from './types.js'; +import * as Validation from './validation.js'; jest.mock('./filter', () => ({ bucketScopesBySupport: jest.fn(), diff --git a/packages/chain-agnostic-permission/src/scope/authorization.ts b/packages/chain-agnostic-permission/src/scope/authorization.ts index 2df9ae6c8f3..8f29ff57de0 100644 --- a/packages/chain-agnostic-permission/src/scope/authorization.ts +++ b/packages/chain-agnostic-permission/src/scope/authorization.ts @@ -1,14 +1,14 @@ import type { CaipChainId, CaipNamespace, Hex, Json } from '@metamask/utils'; -import { bucketScopesBySupport } from './filter'; -import { normalizeAndMergeScopes } from './transform'; +import { bucketScopesBySupport } from './filter.js'; +import { normalizeAndMergeScopes } from './transform.js'; import type { ExternalScopesObject, ExternalScopeString, NormalizedScopesObject, -} from './types'; -import { parseScopeString } from './types'; -import { getValidScopes } from './validation'; +} from './types.js'; +import { parseScopeString } from './types.js'; +import { getValidScopes } from './validation.js'; /** * Represents the parameters of a [CAIP-25](https://chainagnostic.org/CAIPs/caip-25) request. */ diff --git a/packages/chain-agnostic-permission/src/scope/constants.test.ts b/packages/chain-agnostic-permission/src/scope/constants.test.ts index ea0f622591a..cd0d09c407f 100644 --- a/packages/chain-agnostic-permission/src/scope/constants.test.ts +++ b/packages/chain-agnostic-permission/src/scope/constants.test.ts @@ -2,7 +2,7 @@ import { KnownRpcMethods, KnownSessionProperties, isKnownSessionPropertyValue, -} from './constants'; +} from './constants.js'; describe('KnownRpcMethods', () => { it('should match the snapshot', () => { diff --git a/packages/chain-agnostic-permission/src/scope/constants.ts b/packages/chain-agnostic-permission/src/scope/constants.ts index 1737948162b..7aa554b9e35 100644 --- a/packages/chain-agnostic-permission/src/scope/constants.ts +++ b/packages/chain-agnostic-permission/src/scope/constants.ts @@ -1,6 +1,6 @@ -import MetaMaskOpenRPCDocument from '@metamask/api-specs'; +import { MetaMaskOpenRPCDocument } from '@metamask/api-specs'; -import type { NonWalletKnownCaipNamespace } from './types'; +import type { NonWalletKnownCaipNamespace } from './types.js'; /** * ScopeStrings for offchain methods that are not specific to a chainId but are specific to a CAIP namespace. diff --git a/packages/chain-agnostic-permission/src/scope/errors.test.ts b/packages/chain-agnostic-permission/src/scope/errors.test.ts index f176cd36d8a..afe56f5747d 100644 --- a/packages/chain-agnostic-permission/src/scope/errors.test.ts +++ b/packages/chain-agnostic-permission/src/scope/errors.test.ts @@ -1,4 +1,4 @@ -import { Caip25Errors } from './errors'; +import { Caip25Errors } from './errors.js'; describe('Caip25Errors', () => { it('requestedChainsNotSupportedError', () => { diff --git a/packages/chain-agnostic-permission/src/scope/filter.test.ts b/packages/chain-agnostic-permission/src/scope/filter.test.ts index 336af7d3a98..d3b0bbc20fe 100644 --- a/packages/chain-agnostic-permission/src/scope/filter.test.ts +++ b/packages/chain-agnostic-permission/src/scope/filter.test.ts @@ -1,6 +1,8 @@ -import * as Assert from './assert'; -import { bucketScopesBySupport, getSupportedScopeObjects } from './filter'; -import * as Supported from './supported'; +import { jest } from '@jest/globals'; + +import * as Assert from './assert.js'; +import { bucketScopesBySupport, getSupportedScopeObjects } from './filter.js'; +import * as Supported from './supported.js'; jest.mock('./assert', () => ({ ...jest.requireActual('./assert'), diff --git a/packages/chain-agnostic-permission/src/scope/filter.ts b/packages/chain-agnostic-permission/src/scope/filter.ts index a71dd18365e..41c14e20f58 100644 --- a/packages/chain-agnostic-permission/src/scope/filter.ts +++ b/packages/chain-agnostic-permission/src/scope/filter.ts @@ -1,12 +1,12 @@ import type { CaipChainId, Hex } from '@metamask/utils'; -import { assertIsInternalScopeString, assertScopeSupported } from './assert'; -import { isSupportedMethod, isSupportedNotification } from './supported'; +import { assertIsInternalScopeString, assertScopeSupported } from './assert.js'; +import { isSupportedMethod, isSupportedNotification } from './supported.js'; import type { InternalScopeString, NormalizedScopeObject, NormalizedScopesObject, -} from './types'; +} from './types.js'; /** * Groups a NormalizedScopesObject into two separate diff --git a/packages/chain-agnostic-permission/src/scope/supported.test.ts b/packages/chain-agnostic-permission/src/scope/supported.test.ts index d55ec08b17d..67ee3e36ad6 100644 --- a/packages/chain-agnostic-permission/src/scope/supported.test.ts +++ b/packages/chain-agnostic-permission/src/scope/supported.test.ts @@ -1,17 +1,19 @@ +import { jest } from '@jest/globals'; + import { KnownNotifications, KnownRpcMethods, KnownSessionProperties, KnownWalletNamespaceRpcMethods, KnownWalletRpcMethods, -} from './constants'; +} from './constants.js'; import { isSupportedAccount, isSupportedMethod, isSupportedNotification, isSupportedScopeString, isSupportedSessionProperty, -} from './supported'; +} from './supported.js'; describe('Scope Support', () => { describe('isSupportedNotification', () => { diff --git a/packages/chain-agnostic-permission/src/scope/supported.ts b/packages/chain-agnostic-permission/src/scope/supported.ts index c0afa8a2d01..0b86cc9fdca 100644 --- a/packages/chain-agnostic-permission/src/scope/supported.ts +++ b/packages/chain-agnostic-permission/src/scope/supported.ts @@ -13,9 +13,9 @@ import { KnownSessionProperties, KnownWalletNamespaceRpcMethods, KnownWalletRpcMethods, -} from './constants'; -import type { ExternalScopeString } from './types'; -import { parseScopeString } from './types'; +} from './constants.js'; +import type { ExternalScopeString } from './types.js'; +import { parseScopeString } from './types.js'; /** * Determines if a scope string is supported. diff --git a/packages/chain-agnostic-permission/src/scope/transform.test.ts b/packages/chain-agnostic-permission/src/scope/transform.test.ts index 7d8e33715a5..1041f84d99b 100644 --- a/packages/chain-agnostic-permission/src/scope/transform.test.ts +++ b/packages/chain-agnostic-permission/src/scope/transform.test.ts @@ -4,12 +4,12 @@ import { mergeInternalScopes, mergeScopeObject, normalizeAndMergeScopes, -} from './transform'; +} from './transform.js'; import type { ExternalScopeObject, NormalizedScopeObject, InternalScopesObject, -} from './types'; +} from './types.js'; const externalScopeObject: ExternalScopeObject = { methods: [], diff --git a/packages/chain-agnostic-permission/src/scope/transform.ts b/packages/chain-agnostic-permission/src/scope/transform.ts index a44d510474d..c5d84c64dd3 100644 --- a/packages/chain-agnostic-permission/src/scope/transform.ts +++ b/packages/chain-agnostic-permission/src/scope/transform.ts @@ -1,5 +1,5 @@ import type { CaipReference } from '@metamask/utils'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; import type { ExternalScopeObject, @@ -7,8 +7,8 @@ import type { InternalScopesObject, NormalizedScopeObject, NormalizedScopesObject, -} from './types'; -import { parseScopeString } from './types'; +} from './types.js'; +import { parseScopeString } from './types.js'; /** * Returns a list of unique items diff --git a/packages/chain-agnostic-permission/src/scope/types.test.ts b/packages/chain-agnostic-permission/src/scope/types.test.ts index 1b6149b3f2e..a7a16a15a7a 100644 --- a/packages/chain-agnostic-permission/src/scope/types.test.ts +++ b/packages/chain-agnostic-permission/src/scope/types.test.ts @@ -1,4 +1,4 @@ -import { parseScopeString } from './types'; +import { parseScopeString } from './types.js'; describe('Scope', () => { describe('parseScopeString', () => { diff --git a/packages/chain-agnostic-permission/src/scope/validation.test.ts b/packages/chain-agnostic-permission/src/scope/validation.test.ts index 6871b01069b..c79ee002772 100644 --- a/packages/chain-agnostic-permission/src/scope/validation.test.ts +++ b/packages/chain-agnostic-permission/src/scope/validation.test.ts @@ -1,5 +1,5 @@ -import type { ExternalScopeObject } from './types'; -import { isValidScope, getValidScopes } from './validation'; +import type { ExternalScopeObject } from './types.js'; +import { isValidScope, getValidScopes } from './validation.js'; const validScopeString = 'eip155:1'; const validScopeObject: ExternalScopeObject = { diff --git a/packages/chain-agnostic-permission/src/scope/validation.ts b/packages/chain-agnostic-permission/src/scope/validation.ts index 53c0b231d59..2f8629c2c45 100644 --- a/packages/chain-agnostic-permission/src/scope/validation.ts +++ b/packages/chain-agnostic-permission/src/scope/validation.ts @@ -4,8 +4,8 @@ import type { ExternalScopeString, ExternalScopeObject, ExternalScopesObject, -} from './types'; -import { parseScopeString } from './types'; +} from './types.js'; +import { parseScopeString } from './types.js'; /** * Validates a scope object according to the [CAIP-217](https://chainagnostic.org/CAIPs/caip-217) spec. From 96aae3634b38c724c9d3a2770b2494ee6bbeaf22 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:19 +0200 Subject: [PATCH 047/115] ESLint fix and `jest` global import for multichain-network-controller --- .../multichain-network-controller/package.json | 2 +- ...tichainNetworkController-method-action-types.ts | 2 +- .../MultichainNetworkController.test.ts | 13 +++++++------ .../MultichainNetworkController.ts | 14 +++++++------- .../AbstractMultichainNetworkService.ts | 2 +- .../MultichainNetworkService.test.ts | 9 +++++---- .../MultichainNetworkService.ts | 6 +++--- .../src/api/accounts-api.test.ts | 4 ++-- .../multichain-network-controller/src/constants.ts | 2 +- .../multichain-network-controller/src/index.ts | 14 +++++++------- .../multichain-network-controller/src/types.ts | 4 ++-- .../src/utils.test.ts | 2 +- .../multichain-network-controller/src/utils.ts | 6 +++--- 13 files changed, 41 insertions(+), 39 deletions(-) diff --git a/packages/multichain-network-controller/package.json b/packages/multichain-network-controller/package.json index 28f17800cc4..7aabc53840b 100644 --- a/packages/multichain-network-controller/package.json +++ b/packages/multichain-network-controller/package.json @@ -58,7 +58,7 @@ "@metamask/superstruct": "^3.1.0", "@metamask/utils": "^11.11.0", "@solana/addresses": "^2.0.0", - "lodash": "^4.17.21" + "lodash-es": "^4.17.21" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", diff --git a/packages/multichain-network-controller/src/MultichainNetworkController/MultichainNetworkController-method-action-types.ts b/packages/multichain-network-controller/src/MultichainNetworkController/MultichainNetworkController-method-action-types.ts index 98bbc935663..8096059f4e8 100644 --- a/packages/multichain-network-controller/src/MultichainNetworkController/MultichainNetworkController-method-action-types.ts +++ b/packages/multichain-network-controller/src/MultichainNetworkController/MultichainNetworkController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { MultichainNetworkController } from './MultichainNetworkController'; +import type { MultichainNetworkController } from './MultichainNetworkController.js'; /** * Sets the active network. diff --git a/packages/multichain-network-controller/src/MultichainNetworkController/MultichainNetworkController.test.ts b/packages/multichain-network-controller/src/MultichainNetworkController/MultichainNetworkController.test.ts index fefd952ca6b..cf0cd03f86c 100644 --- a/packages/multichain-network-controller/src/MultichainNetworkController/MultichainNetworkController.test.ts +++ b/packages/multichain-network-controller/src/MultichainNetworkController/MultichainNetworkController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { InfuraNetworkType } from '@metamask/controller-utils'; import { @@ -31,12 +32,12 @@ import type { import { KnownCaipNamespace } from '@metamask/utils'; import type { CaipAccountId } from '@metamask/utils'; -import { createMockInternalAccount } from '../../tests/utils'; -import type { ActiveNetworksResponse } from '../api/accounts-api'; -import { getDefaultMultichainNetworkControllerState } from '../constants'; -import type { AbstractMultichainNetworkService } from '../MultichainNetworkService/AbstractMultichainNetworkService'; -import type { MultichainNetworkControllerMessenger } from '../types'; -import { MultichainNetworkController } from './MultichainNetworkController'; +import { createMockInternalAccount } from '../../tests/utils.js'; +import type { ActiveNetworksResponse } from '../api/accounts-api.js'; +import { getDefaultMultichainNetworkControllerState } from '../constants.js'; +import type { AbstractMultichainNetworkService } from '../MultichainNetworkService/AbstractMultichainNetworkService.js'; +import type { MultichainNetworkControllerMessenger } from '../types.js'; +import { MultichainNetworkController } from './MultichainNetworkController.js'; // We exclude the generic account type, since it's used for testing purposes. type TestKeyringAccountType = Exclude< diff --git a/packages/multichain-network-controller/src/MultichainNetworkController/MultichainNetworkController.ts b/packages/multichain-network-controller/src/MultichainNetworkController/MultichainNetworkController.ts index d70612ddba1..f3c1aa8620c 100644 --- a/packages/multichain-network-controller/src/MultichainNetworkController/MultichainNetworkController.ts +++ b/packages/multichain-network-controller/src/MultichainNetworkController/MultichainNetworkController.ts @@ -8,26 +8,26 @@ import type { CaipChainId } from '@metamask/utils'; import { toAllowedCaipAccountIds, toActiveNetworksByAddress, -} from '../api/accounts-api'; -import type { ActiveNetworksByAddress } from '../api/accounts-api'; +} from '../api/accounts-api.js'; +import type { ActiveNetworksByAddress } from '../api/accounts-api.js'; import { AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS, MULTICHAIN_NETWORK_CONTROLLER_METADATA, getDefaultMultichainNetworkControllerState, -} from '../constants'; -import type { AbstractMultichainNetworkService } from '../MultichainNetworkService/AbstractMultichainNetworkService'; -import { MULTICHAIN_NETWORK_CONTROLLER_NAME } from '../types'; +} from '../constants.js'; +import type { AbstractMultichainNetworkService } from '../MultichainNetworkService/AbstractMultichainNetworkService.js'; +import { MULTICHAIN_NETWORK_CONTROLLER_NAME } from '../types.js'; import type { MultichainNetworkControllerState, MultichainNetworkControllerMessenger, SupportedCaipChainId, -} from '../types'; +} from '../types.js'; import { checkIfSupportedCaipChainId, getChainIdForNonEvm, convertEvmCaipToHexChainId, isEvmCaipChainId, -} from '../utils'; +} from '../utils.js'; const MESSENGER_EXPOSED_METHODS = [ 'setActiveNetwork', diff --git a/packages/multichain-network-controller/src/MultichainNetworkService/AbstractMultichainNetworkService.ts b/packages/multichain-network-controller/src/MultichainNetworkService/AbstractMultichainNetworkService.ts index 951b8c28d9f..fd1ead65f1d 100644 --- a/packages/multichain-network-controller/src/MultichainNetworkService/AbstractMultichainNetworkService.ts +++ b/packages/multichain-network-controller/src/MultichainNetworkService/AbstractMultichainNetworkService.ts @@ -1,6 +1,6 @@ import type { PublicInterface } from '@metamask/utils'; -import type { MultichainNetworkService } from './MultichainNetworkService'; +import type { MultichainNetworkService } from './MultichainNetworkService.js'; /** * A service object which is responsible for fetching network activity data. diff --git a/packages/multichain-network-controller/src/MultichainNetworkService/MultichainNetworkService.test.ts b/packages/multichain-network-controller/src/MultichainNetworkService/MultichainNetworkService.test.ts index 44798ce53ea..29aaad2dc29 100644 --- a/packages/multichain-network-controller/src/MultichainNetworkService/MultichainNetworkService.test.ts +++ b/packages/multichain-network-controller/src/MultichainNetworkService/MultichainNetworkService.test.ts @@ -1,14 +1,15 @@ +import { jest } from '@jest/globals'; import { KnownCaipNamespace } from '@metamask/utils'; import type { CaipAccountId } from '@metamask/utils'; -import { chunk } from 'lodash'; +import { chunk } from 'lodash-es'; import { MULTICHAIN_ACCOUNTS_CLIENT_HEADER, MULTICHAIN_ACCOUNTS_CLIENT_ID, MULTICHAIN_ACCOUNTS_BASE_URL, -} from '../api/accounts-api'; -import type { ActiveNetworksResponse } from '../api/accounts-api'; -import { MultichainNetworkService } from './MultichainNetworkService'; +} from '../api/accounts-api.js'; +import type { ActiveNetworksResponse } from '../api/accounts-api.js'; +import { MultichainNetworkService } from './MultichainNetworkService.js'; describe('MultichainNetworkService', () => { beforeEach(() => { diff --git a/packages/multichain-network-controller/src/MultichainNetworkService/MultichainNetworkService.ts b/packages/multichain-network-controller/src/MultichainNetworkService/MultichainNetworkService.ts index 0feccc9c404..801b0cef9df 100644 --- a/packages/multichain-network-controller/src/MultichainNetworkService/MultichainNetworkService.ts +++ b/packages/multichain-network-controller/src/MultichainNetworkService/MultichainNetworkService.ts @@ -1,14 +1,14 @@ import { assert } from '@metamask/superstruct'; import type { CaipAccountId } from '@metamask/utils'; -import { chunk } from 'lodash'; +import { chunk } from 'lodash-es'; import { ActiveNetworksResponseStruct, buildActiveNetworksUrl, MULTICHAIN_ACCOUNTS_CLIENT_HEADER, MULTICHAIN_ACCOUNTS_CLIENT_ID, -} from '../api/accounts-api'; -import type { ActiveNetworksResponse } from '../api/accounts-api'; +} from '../api/accounts-api.js'; +import type { ActiveNetworksResponse } from '../api/accounts-api.js'; /** * Service responsible for fetching network activity data from the API. diff --git a/packages/multichain-network-controller/src/api/accounts-api.test.ts b/packages/multichain-network-controller/src/api/accounts-api.test.ts index 7dd66745a40..c9bab8bbc58 100644 --- a/packages/multichain-network-controller/src/api/accounts-api.test.ts +++ b/packages/multichain-network-controller/src/api/accounts-api.test.ts @@ -21,8 +21,8 @@ import { toActiveNetworksByAddress, buildActiveNetworksUrl, MULTICHAIN_ACCOUNTS_BASE_URL, -} from './accounts-api'; -import type { ActiveNetworksResponse } from './accounts-api'; +} from './accounts-api.js'; +import type { ActiveNetworksResponse } from './accounts-api.js'; const MOCK_ADDRESSES = { evm: '0x1234567890123456789012345678901234567890', diff --git a/packages/multichain-network-controller/src/constants.ts b/packages/multichain-network-controller/src/constants.ts index 8fe82058815..860978370d4 100644 --- a/packages/multichain-network-controller/src/constants.ts +++ b/packages/multichain-network-controller/src/constants.ts @@ -8,7 +8,7 @@ import type { MultichainNetworkControllerState, MultichainNetworkMetadata, SupportedCaipChainId, -} from './types'; +} from './types.js'; export const BTC_NATIVE_ASSET = `${BtcScope.Mainnet}/slip44:0`; export const BTC_TESTNET_NATIVE_ASSET = `${BtcScope.Testnet}/slip44:0`; diff --git a/packages/multichain-network-controller/src/index.ts b/packages/multichain-network-controller/src/index.ts index 7301513e968..82bc27a28a6 100644 --- a/packages/multichain-network-controller/src/index.ts +++ b/packages/multichain-network-controller/src/index.ts @@ -1,12 +1,12 @@ -export { MultichainNetworkController } from './MultichainNetworkController/MultichainNetworkController'; -export { MultichainNetworkService } from './MultichainNetworkService/MultichainNetworkService'; +export { MultichainNetworkController } from './MultichainNetworkController/MultichainNetworkController.js'; +export { MultichainNetworkService } from './MultichainNetworkService/MultichainNetworkService.js'; export { getDefaultMultichainNetworkControllerState, NON_EVM_TESTNET_IDS, MULTICHAIN_NETWORK_TICKER, MULTICHAIN_NETWORK_DECIMAL_PLACES, AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS, -} from './constants'; +} from './constants.js'; export type { MultichainNetworkMetadata, SupportedCaipChainId, @@ -21,15 +21,15 @@ export type { MultichainNetworkControllerActions, MultichainNetworkControllerEvents, MultichainNetworkControllerMessenger, -} from './types'; +} from './types.js'; export type { MultichainNetworkControllerSetActiveNetworkAction, MultichainNetworkControllerGetNetworksWithTransactionActivityByAccountsAction, -} from './MultichainNetworkController/MultichainNetworkController-method-action-types'; +} from './MultichainNetworkController/MultichainNetworkController-method-action-types.js'; export { checkIfSupportedCaipChainId, toMultichainNetworkConfiguration, toMultichainNetworkConfigurationsByChainId, toEvmCaipChainId, -} from './utils'; -export type { ActiveNetworksByAddress } from './api/accounts-api'; +} from './utils.js'; +export type { ActiveNetworksByAddress } from './api/accounts-api.js'; diff --git a/packages/multichain-network-controller/src/types.ts b/packages/multichain-network-controller/src/types.ts index 4b4b42b6d4c..827eab28348 100644 --- a/packages/multichain-network-controller/src/types.ts +++ b/packages/multichain-network-controller/src/types.ts @@ -23,8 +23,8 @@ import type { NetworkClientId, } from '@metamask/network-controller'; -import type { ActiveNetworksByAddress } from './api/accounts-api'; -import type { MultichainNetworkControllerMethodActions } from './MultichainNetworkController/MultichainNetworkController-method-action-types'; +import type { ActiveNetworksByAddress } from './api/accounts-api.js'; +import type { MultichainNetworkControllerMethodActions } from './MultichainNetworkController/MultichainNetworkController-method-action-types.js'; export const MULTICHAIN_NETWORK_CONTROLLER_NAME = 'MultichainNetworkController'; diff --git a/packages/multichain-network-controller/src/utils.test.ts b/packages/multichain-network-controller/src/utils.test.ts index 83ceaacb05e..01b001dfc46 100644 --- a/packages/multichain-network-controller/src/utils.test.ts +++ b/packages/multichain-network-controller/src/utils.test.ts @@ -12,7 +12,7 @@ import { toMultichainNetworkConfiguration, toMultichainNetworkConfigurationsByChainId, isKnownCaipNamespace, -} from './utils'; +} from './utils.js'; describe('utils', () => { describe('getChainIdForNonEvm', () => { diff --git a/packages/multichain-network-controller/src/utils.ts b/packages/multichain-network-controller/src/utils.ts index 2cd868fac4f..cb36bff10c4 100644 --- a/packages/multichain-network-controller/src/utils.ts +++ b/packages/multichain-network-controller/src/utils.ts @@ -8,11 +8,11 @@ import { } from '@metamask/utils'; import type { Hex, CaipChainId } from '@metamask/utils'; -import { AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS } from './constants'; +import { AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS } from './constants.js'; import type { SupportedCaipChainId, MultichainNetworkConfiguration, -} from './types'; +} from './types.js'; /** * Checks if the chain ID is EVM. @@ -105,7 +105,7 @@ export const toMultichainNetworkConfiguration = ( return { chainId: toEvmCaipChainId(chainId), isEvm: true, - name: name || rpcEndpoints[defaultRpcEndpointIndex].url, + name: name ?? rpcEndpoints[defaultRpcEndpointIndex].url, nativeCurrency, blockExplorerUrls, defaultBlockExplorerUrlIndex, From 0c276a55677d4f0911f589ad6c6474437279db30 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:24 +0200 Subject: [PATCH 048/115] ESLint fix and `jest` global import for network-controller --- packages/network-controller/package.json | 2 +- .../NetworkController-method-action-types.ts | 2 +- .../src/NetworkController.ts | 29 +++++----- ...create-auto-managed-network-client.test.ts | 15 ++--- .../src/create-auto-managed-network-client.ts | 12 ++-- .../classify-retry-reason.test.ts | 2 +- .../block-hash-in-response.test.ts | 4 +- .../ethereum-spec/block-param.test.ts | 4 +- .../ethereum-spec/no-block-param.test.ts | 4 +- .../not-handled-by-middleware.test.ts | 4 +- .../ethereum-spec/other-methods.test.ts | 4 +- .../ex-ethereum-spec/no-block-param.test.ts | 4 +- .../not-handled-by-middleware.test.ts | 4 +- .../ex-ethereum-spec/other-methods.test.ts | 6 +- .../rpc-endpoint-events.test.ts | 9 +-- .../rpc-endpoint-failover.test.ts | 4 +- .../src/create-network-client.ts | 20 ++++--- packages/network-controller/src/index.ts | 31 ++++++----- .../src/rpc-service/abstract-rpc-service.ts | 2 +- .../src/rpc-service/rpc-service-chain.test.ts | 5 +- .../src/rpc-service/rpc-service-chain.ts | 8 +-- .../rpc-service/rpc-service-requestable.ts | 2 +- .../src/rpc-service/rpc-service.test.ts | 3 +- .../src/rpc-service/rpc-service.ts | 4 +- .../network-controller/src/selectors.test.ts | 2 +- .../tests/NetworkController.provider.test.ts | 5 +- .../tests/NetworkController.test.ts | 55 ++++++++++--------- packages/network-controller/tests/helpers.ts | 27 ++++----- .../network-client/block-hash-in-response.ts | 11 ++-- .../tests/network-client/block-param.ts | 11 ++-- .../tests/network-client/helpers.ts | 21 +++---- .../tests/network-client/no-block-param.ts | 11 ++-- .../not-handled-by-middleware.ts | 6 +- .../tests/network-client/rpc-failover.ts | 9 +-- 34 files changed, 181 insertions(+), 161 deletions(-) diff --git a/packages/network-controller/package.json b/packages/network-controller/package.json index 5d23977caca..c14e1e2b6cb 100644 --- a/packages/network-controller/package.json +++ b/packages/network-controller/package.json @@ -83,7 +83,7 @@ "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "jest-when": "^3.4.2", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "nock": "^13.3.1", "node-fetch": "^2.7.0", "ts-jest": "^29.2.5", diff --git a/packages/network-controller/src/NetworkController-method-action-types.ts b/packages/network-controller/src/NetworkController-method-action-types.ts index 019b6b225cd..793f944e68f 100644 --- a/packages/network-controller/src/NetworkController-method-action-types.ts +++ b/packages/network-controller/src/NetworkController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { NetworkController } from './NetworkController'; +import type { NetworkController } from './NetworkController.js'; /** * Returns the EthQuery instance for the currently selected network. diff --git a/packages/network-controller/src/NetworkController.ts b/packages/network-controller/src/NetworkController.ts index 5ad7b5443c1..83585c1b171 100644 --- a/packages/network-controller/src/NetworkController.ts +++ b/packages/network-controller/src/NetworkController.ts @@ -36,7 +36,7 @@ import { hasProperty, isPlainObject, isStrictHexString } from '@metamask/utils'; import deepEqual from 'fast-deep-equal'; import type { Draft } from 'immer'; import { produce } from 'immer'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; import type { Logger } from 'loglevel'; import { createSelector } from 'reselect'; import * as URI from 'uri-js'; @@ -46,26 +46,29 @@ import { DEPRECATED_NETWORKS, INFURA_BLOCKED_KEY, NetworkStatus, -} from './constants'; +} from './constants.js'; import type { AutoManagedNetworkClient, ProxyWithAccessibleTarget, -} from './create-auto-managed-network-client'; -import { createAutoManagedNetworkClient } from './create-auto-managed-network-client'; -import type { DegradedEventType, RetryReason } from './create-network-client'; -import { projectLogger, createModuleLogger } from './logger'; -import type { NetworkControllerMethodActions } from './NetworkController-method-action-types'; -import type { RpcServiceOptionsWithDefaults } from './rpc-service/rpc-service'; -import { getRpcFailoverMode } from './selectors'; -import type { RpcFailoverMode } from './selectors'; -import { NetworkClientType } from './types'; +} from './create-auto-managed-network-client.js'; +import { createAutoManagedNetworkClient } from './create-auto-managed-network-client.js'; +import type { + DegradedEventType, + RetryReason, +} from './create-network-client.js'; +import { projectLogger, createModuleLogger } from './logger.js'; +import type { NetworkControllerMethodActions } from './NetworkController-method-action-types.js'; +import type { RpcServiceOptionsWithDefaults } from './rpc-service/rpc-service.js'; +import { getRpcFailoverMode } from './selectors.js'; +import type { RpcFailoverMode } from './selectors.js'; +import { NetworkClientType } from './types.js'; import type { BlockTracker, Provider, CustomNetworkClientConfiguration, InfuraNetworkClientConfiguration, NetworkClientConfiguration, -} from './types'; +} from './types.js'; const debugLog = createModuleLogger(projectLogger, 'NetworkController'); @@ -2471,7 +2474,7 @@ export class NetworkController extends BaseController< * In-progress requests will not be aborted. */ // We're intentionally changing the signature of an extended method. - // eslint-disable-next-line @typescript-eslint/no-misused-promises + async destroy(): Promise { await this.#blockTrackerProxy?.destroy(); } diff --git a/packages/network-controller/src/create-auto-managed-network-client.test.ts b/packages/network-controller/src/create-auto-managed-network-client.test.ts index d7e3c16def1..1f806af3948 100644 --- a/packages/network-controller/src/create-auto-managed-network-client.test.ts +++ b/packages/network-controller/src/create-auto-managed-network-client.test.ts @@ -1,16 +1,17 @@ +import { jest } from '@jest/globals'; import { BUILT_IN_NETWORKS, NetworkType } from '@metamask/controller-utils'; import { PollingBlockTrackerOptions } from '@metamask/eth-block-tracker'; -import { mockNetwork } from '../../../tests/mock-network'; -import { buildNetworkControllerMessenger } from '../tests/helpers'; -import { createAutoManagedNetworkClient } from './create-auto-managed-network-client'; -import * as createNetworkClientModule from './create-network-client'; -import { RpcServiceOptions } from './rpc-service/rpc-service'; +import { mockNetwork } from '../../../tests/mock-network.js'; +import { buildNetworkControllerMessenger } from '../tests/helpers.js'; +import { createAutoManagedNetworkClient } from './create-auto-managed-network-client.js'; +import * as createNetworkClientModule from './create-network-client.js'; +import { RpcServiceOptions } from './rpc-service/rpc-service.js'; import type { CustomNetworkClientConfiguration, InfuraNetworkClientConfiguration, -} from './types'; -import { NetworkClientType } from './types'; +} from './types.js'; +import { NetworkClientType } from './types.js'; describe('createAutoManagedNetworkClient', () => { const networkClientConfigurations: [ diff --git a/packages/network-controller/src/create-auto-managed-network-client.ts b/packages/network-controller/src/create-auto-managed-network-client.ts index fe826186cf4..458fee625d3 100644 --- a/packages/network-controller/src/create-auto-managed-network-client.ts +++ b/packages/network-controller/src/create-auto-managed-network-client.ts @@ -2,19 +2,19 @@ import type { PollingBlockTrackerOptions } from '@metamask/eth-block-tracker'; import { Json } from '@metamask/utils'; import type { Logger } from 'loglevel'; -import type { NetworkClient } from './create-network-client'; -import { createNetworkClient } from './create-network-client'; +import type { NetworkClient } from './create-network-client.js'; +import { createNetworkClient } from './create-network-client.js'; import type { NetworkClientId, NetworkControllerMessenger, -} from './NetworkController'; -import type { RpcServiceOptionsWithDefaults } from './rpc-service/rpc-service'; -import type { RpcFailoverMode } from './selectors'; +} from './NetworkController.js'; +import type { RpcServiceOptionsWithDefaults } from './rpc-service/rpc-service.js'; +import type { RpcFailoverMode } from './selectors.js'; import type { BlockTracker, NetworkClientConfiguration, Provider, -} from './types'; +} from './types.js'; /** * The name of the method on both the provider and block tracker proxy which can diff --git a/packages/network-controller/src/create-network-client-tests/classify-retry-reason.test.ts b/packages/network-controller/src/create-network-client-tests/classify-retry-reason.test.ts index 1a4e25f32d9..2521aeaba96 100644 --- a/packages/network-controller/src/create-network-client-tests/classify-retry-reason.test.ts +++ b/packages/network-controller/src/create-network-client-tests/classify-retry-reason.test.ts @@ -1,7 +1,7 @@ import { HttpError } from '@metamask/controller-utils'; import { FetchError } from 'node-fetch'; -import { classifyRetryReason } from '../create-network-client'; +import { classifyRetryReason } from '../create-network-client.js'; describe('classifyRetryReason', () => { it('returns "connection_failed" for FetchError connection failures', () => { diff --git a/packages/network-controller/src/create-network-client-tests/ethereum-spec/block-hash-in-response.test.ts b/packages/network-controller/src/create-network-client-tests/ethereum-spec/block-hash-in-response.test.ts index caab1b529b8..72d0783427c 100644 --- a/packages/network-controller/src/create-network-client-tests/ethereum-spec/block-hash-in-response.test.ts +++ b/packages/network-controller/src/create-network-client-tests/ethereum-spec/block-hash-in-response.test.ts @@ -1,5 +1,5 @@ -import { testsForRpcMethodsThatCheckForBlockHashInResponse } from '../../../tests/network-client/block-hash-in-response'; -import { NetworkClientType } from '../../types'; +import { testsForRpcMethodsThatCheckForBlockHashInResponse } from '../../../tests/network-client/block-hash-in-response.js'; +import { NetworkClientType } from '../../types.js'; describe('createNetworkClient - methods included in the Ethereum JSON-RPC spec - methods with block hashes in their result', () => { for (const networkClientType of Object.values(NetworkClientType)) { diff --git a/packages/network-controller/src/create-network-client-tests/ethereum-spec/block-param.test.ts b/packages/network-controller/src/create-network-client-tests/ethereum-spec/block-param.test.ts index 503397aec8a..a92213abe1c 100644 --- a/packages/network-controller/src/create-network-client-tests/ethereum-spec/block-param.test.ts +++ b/packages/network-controller/src/create-network-client-tests/ethereum-spec/block-param.test.ts @@ -1,5 +1,5 @@ -import { testsForRpcMethodSupportingBlockParam } from '../../../tests/network-client/block-param'; -import { NetworkClientType } from '../../types'; +import { testsForRpcMethodSupportingBlockParam } from '../../../tests/network-client/block-param.js'; +import { NetworkClientType } from '../../types.js'; describe('createNetworkClient - methods included in the Ethereum JSON-RPC spec - methods that have a param to specify the block', () => { for (const networkClientType of Object.values(NetworkClientType)) { diff --git a/packages/network-controller/src/create-network-client-tests/ethereum-spec/no-block-param.test.ts b/packages/network-controller/src/create-network-client-tests/ethereum-spec/no-block-param.test.ts index 0ef4fb4b55a..ef78a00fa2f 100644 --- a/packages/network-controller/src/create-network-client-tests/ethereum-spec/no-block-param.test.ts +++ b/packages/network-controller/src/create-network-client-tests/ethereum-spec/no-block-param.test.ts @@ -1,5 +1,5 @@ -import { testsForRpcMethodAssumingNoBlockParam } from '../../../tests/network-client/no-block-param'; -import { NetworkClientType } from '../../types'; +import { testsForRpcMethodAssumingNoBlockParam } from '../../../tests/network-client/no-block-param.js'; +import { NetworkClientType } from '../../types.js'; describe('createNetworkClient - methods included in the Ethereum JSON-RPC spec - methods that assume there is no block param', () => { for (const networkClientType of Object.values(NetworkClientType)) { diff --git a/packages/network-controller/src/create-network-client-tests/ethereum-spec/not-handled-by-middleware.test.ts b/packages/network-controller/src/create-network-client-tests/ethereum-spec/not-handled-by-middleware.test.ts index f3b799f3f18..3b1597fe3ca 100644 --- a/packages/network-controller/src/create-network-client-tests/ethereum-spec/not-handled-by-middleware.test.ts +++ b/packages/network-controller/src/create-network-client-tests/ethereum-spec/not-handled-by-middleware.test.ts @@ -1,5 +1,5 @@ -import { testsForRpcMethodNotHandledByMiddleware } from '../../../tests/network-client/not-handled-by-middleware'; -import { NetworkClientType } from '../../types'; +import { testsForRpcMethodNotHandledByMiddleware } from '../../../tests/network-client/not-handled-by-middleware.js'; +import { NetworkClientType } from '../../types.js'; describe('createNetworkClient - methods included in the Ethereum JSON-RPC spec - methods not handled by middleware', () => { for (const networkClientType of Object.values(NetworkClientType)) { diff --git a/packages/network-controller/src/create-network-client-tests/ethereum-spec/other-methods.test.ts b/packages/network-controller/src/create-network-client-tests/ethereum-spec/other-methods.test.ts index fa412274e67..aee90938e77 100644 --- a/packages/network-controller/src/create-network-client-tests/ethereum-spec/other-methods.test.ts +++ b/packages/network-controller/src/create-network-client-tests/ethereum-spec/other-methods.test.ts @@ -1,8 +1,8 @@ import { withMockedCommunications, withNetworkClient, -} from '../../../tests/network-client/helpers'; -import { NetworkClientType } from '../../types'; +} from '../../../tests/network-client/helpers.js'; +import { NetworkClientType } from '../../types.js'; describe('createNetworkClient - methods included in the Ethereum JSON-RPC spec - other methods', () => { for (const networkClientType of Object.values(NetworkClientType)) { diff --git a/packages/network-controller/src/create-network-client-tests/ex-ethereum-spec/no-block-param.test.ts b/packages/network-controller/src/create-network-client-tests/ex-ethereum-spec/no-block-param.test.ts index 0819318602e..c575356ad7c 100644 --- a/packages/network-controller/src/create-network-client-tests/ex-ethereum-spec/no-block-param.test.ts +++ b/packages/network-controller/src/create-network-client-tests/ex-ethereum-spec/no-block-param.test.ts @@ -1,5 +1,5 @@ -import { testsForRpcMethodAssumingNoBlockParam } from '../../../tests/network-client/no-block-param'; -import { NetworkClientType } from '../../types'; +import { testsForRpcMethodAssumingNoBlockParam } from '../../../tests/network-client/no-block-param.js'; +import { NetworkClientType } from '../../types.js'; describe('createNetworkClient - methods not included in the Ethereum JSON-RPC spec - methods that assume there is no block param', () => { for (const networkClientType of Object.values(NetworkClientType)) { diff --git a/packages/network-controller/src/create-network-client-tests/ex-ethereum-spec/not-handled-by-middleware.test.ts b/packages/network-controller/src/create-network-client-tests/ex-ethereum-spec/not-handled-by-middleware.test.ts index 42fee0efd37..3d5a2513369 100644 --- a/packages/network-controller/src/create-network-client-tests/ex-ethereum-spec/not-handled-by-middleware.test.ts +++ b/packages/network-controller/src/create-network-client-tests/ex-ethereum-spec/not-handled-by-middleware.test.ts @@ -1,5 +1,5 @@ -import { testsForRpcMethodNotHandledByMiddleware } from '../../../tests/network-client/not-handled-by-middleware'; -import { NetworkClientType } from '../../types'; +import { testsForRpcMethodNotHandledByMiddleware } from '../../../tests/network-client/not-handled-by-middleware.js'; +import { NetworkClientType } from '../../types.js'; describe('createNetworkClient - methods not included in the Ethereum JSON-RPC spec - methods not handled by middleware', () => { for (const networkClientType of Object.values(NetworkClientType)) { diff --git a/packages/network-controller/src/create-network-client-tests/ex-ethereum-spec/other-methods.test.ts b/packages/network-controller/src/create-network-client-tests/ex-ethereum-spec/other-methods.test.ts index 50c7363ffb4..7091a2f6203 100644 --- a/packages/network-controller/src/create-network-client-tests/ex-ethereum-spec/other-methods.test.ts +++ b/packages/network-controller/src/create-network-client-tests/ex-ethereum-spec/other-methods.test.ts @@ -1,9 +1,9 @@ -import { TESTNET } from '../../../tests/helpers'; +import { TESTNET } from '../../../tests/helpers.js'; import { withMockedCommunications, withNetworkClient, -} from '../../../tests/network-client/helpers'; -import { NetworkClientType } from '../../types'; +} from '../../../tests/network-client/helpers.js'; +import { NetworkClientType } from '../../types.js'; describe('createNetworkClient - methods not included in the Ethereum JSON-RPC spec - other methods', () => { for (const networkClientType of Object.values(NetworkClientType)) { diff --git a/packages/network-controller/src/create-network-client-tests/rpc-endpoint-events.test.ts b/packages/network-controller/src/create-network-client-tests/rpc-endpoint-events.test.ts index 3c50a39f399..d6130c5ffe2 100644 --- a/packages/network-controller/src/create-network-client-tests/rpc-endpoint-events.test.ts +++ b/packages/network-controller/src/create-network-client-tests/rpc-endpoint-events.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { CONNECTIVITY_STATUSES } from '@metamask/connectivity-controller'; import { ConstantBackoff, @@ -6,13 +7,13 @@ import { } from '@metamask/controller-utils'; import { errorCodes } from '@metamask/rpc-errors'; -import { buildRootMessenger } from '../../tests/helpers'; +import { buildRootMessenger } from '../../tests/helpers.js'; import { withMockedCommunications, withNetworkClient, -} from '../../tests/network-client/helpers'; -import { DEFAULT_MAX_CONSECUTIVE_FAILURES } from '../rpc-service/rpc-service'; -import { NetworkClientType } from '../types'; +} from '../../tests/network-client/helpers.js'; +import { DEFAULT_MAX_CONSECUTIVE_FAILURES } from '../rpc-service/rpc-service.js'; +import { NetworkClientType } from '../types.js'; describe('createNetworkClient - RPC endpoint events', () => { for (const networkClientType of Object.values(NetworkClientType)) { diff --git a/packages/network-controller/src/create-network-client-tests/rpc-endpoint-failover.test.ts b/packages/network-controller/src/create-network-client-tests/rpc-endpoint-failover.test.ts index 865f78f93af..fa6f9d5e0c0 100644 --- a/packages/network-controller/src/create-network-client-tests/rpc-endpoint-failover.test.ts +++ b/packages/network-controller/src/create-network-client-tests/rpc-endpoint-failover.test.ts @@ -1,8 +1,8 @@ -import { buildRootMessenger } from '../../tests/helpers'; +import { buildRootMessenger } from '../../tests/helpers.js'; import { withMockedCommunications, withNetworkClient, -} from '../../tests/network-client/helpers'; +} from '../../tests/network-client/helpers.js'; describe('createNetworkClient - RPC endpoint failover (forced)', () => { describe('when rpcFailoverMode is forced and providerType is infura', () => { diff --git a/packages/network-controller/src/create-network-client.ts b/packages/network-controller/src/create-network-client.ts index f79ef7b2cad..e5c85b128eb 100644 --- a/packages/network-controller/src/create-network-client.ts +++ b/packages/network-controller/src/create-network-client.ts @@ -38,23 +38,23 @@ import type { Logger } from 'loglevel'; import type { NetworkClientId, NetworkControllerMessenger, -} from './NetworkController'; -import type { RpcServiceOptionsWithDefaults } from './rpc-service/rpc-service'; +} from './NetworkController.js'; +import { RpcServiceChain } from './rpc-service/rpc-service-chain.js'; +import type { RpcServiceOptionsWithDefaults } from './rpc-service/rpc-service.js'; import { isConnectionError, isConnectionResetError, isJsonParseError, isHttpServerError, isTimeoutError, -} from './rpc-service/rpc-service'; -import { RpcServiceChain } from './rpc-service/rpc-service-chain'; -import type { RpcFailoverMode } from './selectors'; +} from './rpc-service/rpc-service.js'; +import type { RpcFailoverMode } from './selectors.js'; import type { BlockTracker, NetworkClientConfiguration, Provider, -} from './types'; -import { NetworkClientType } from './types'; +} from './types.js'; +import { NetworkClientType } from './types.js'; const SECOND = 1000; @@ -177,7 +177,9 @@ export function createNetworkClient({ if (configuration.type === NetworkClientType.Infura) { rpcApiMiddleware = asV2Middleware( createInfuraMiddleware({ - rpcService: rpcServiceChain, + // `RpcServiceChain.request` has a specialized first overload that + // TypeScript uses for assignability checks; the cast bypasses this. + rpcService: rpcServiceChain as never, options: { source: 'metamask', }, @@ -218,7 +220,7 @@ export function createNetworkClient({ const destroy = (): void => { // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/no-floating-promises + blockTracker.destroy(); }; diff --git a/packages/network-controller/src/index.ts b/packages/network-controller/src/index.ts index f1f3a4ecc13..e850deda53c 100644 --- a/packages/network-controller/src/index.ts +++ b/packages/network-controller/src/index.ts @@ -1,4 +1,4 @@ -export type { AutoManagedNetworkClient } from './create-auto-managed-network-client'; +export type { AutoManagedNetworkClient } from './create-auto-managed-network-client.js'; export type { Block, NetworkMetadata, @@ -32,28 +32,31 @@ export type { NetworkControllerRpcEndpointDegradedEvent, NetworkControllerRpcEndpointChainAvailableEvent, NetworkControllerRpcEndpointRetriedEvent, -} from './NetworkController'; +} from './NetworkController.js'; export { getDefaultNetworkControllerState, selectAvailableNetworkClientIds, knownKeysOf, NetworkController, RpcEndpointType, -} from './NetworkController'; -export * from './constants'; -export type { BlockTracker, Provider } from './types'; +} from './NetworkController.js'; +export * from './constants.js'; +export type { BlockTracker, Provider } from './types.js'; export type { NetworkClientConfiguration, InfuraNetworkClientConfiguration, CustomNetworkClientConfiguration, -} from './types'; -export { NetworkClientType } from './types'; -export type { NetworkClient } from './create-network-client'; -export type { AbstractRpcService } from './rpc-service/abstract-rpc-service'; -export type { RpcServiceRequestable } from './rpc-service/rpc-service-requestable'; -export type { DegradedEventType, RetryReason } from './create-network-client'; -export { classifyRetryReason } from './create-network-client'; -export { isConnectionError } from './rpc-service/rpc-service'; +} from './types.js'; +export { NetworkClientType } from './types.js'; +export type { NetworkClient } from './create-network-client.js'; +export type { AbstractRpcService } from './rpc-service/abstract-rpc-service.js'; +export type { RpcServiceRequestable } from './rpc-service/rpc-service-requestable.js'; +export type { + DegradedEventType, + RetryReason, +} from './create-network-client.js'; +export { classifyRetryReason } from './create-network-client.js'; +export { isConnectionError } from './rpc-service/rpc-service.js'; export type { NetworkControllerGetEthQueryAction, NetworkControllerGetNetworkClientByIdAction, @@ -76,4 +79,4 @@ export type { NetworkControllerResetConnectionAction, NetworkControllerRollbackToPreviousProviderAction, NetworkControllerLoadBackupAction, -} from './NetworkController-method-action-types'; +} from './NetworkController-method-action-types.js'; diff --git a/packages/network-controller/src/rpc-service/abstract-rpc-service.ts b/packages/network-controller/src/rpc-service/abstract-rpc-service.ts index 7769f88c055..9a23d93bd0f 100644 --- a/packages/network-controller/src/rpc-service/abstract-rpc-service.ts +++ b/packages/network-controller/src/rpc-service/abstract-rpc-service.ts @@ -1,4 +1,4 @@ -import type { RpcServiceRequestable } from './rpc-service-requestable'; +import type { RpcServiceRequestable } from './rpc-service-requestable.js'; /** * The interface for a service class responsible for making a request to an RPC diff --git a/packages/network-controller/src/rpc-service/rpc-service-chain.test.ts b/packages/network-controller/src/rpc-service/rpc-service-chain.test.ts index 5a8ffa37e87..68d6981298a 100644 --- a/packages/network-controller/src/rpc-service/rpc-service-chain.test.ts +++ b/packages/network-controller/src/rpc-service/rpc-service-chain.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { DEFAULT_CIRCUIT_BREAK_DURATION, DEFAULT_DEGRADED_THRESHOLD, @@ -6,11 +7,11 @@ import { import { errorCodes } from '@metamask/rpc-errors'; import nock from 'nock'; +import { RpcServiceChain } from './rpc-service-chain.js'; import { DEFAULT_MAX_CONSECUTIVE_FAILURES, DEFAULT_MAX_RETRIES, -} from './rpc-service'; -import { RpcServiceChain } from './rpc-service-chain'; +} from './rpc-service.js'; /** * The number of fetch requests made for a single request to an RPC service, using default max diff --git a/packages/network-controller/src/rpc-service/rpc-service-chain.ts b/packages/network-controller/src/rpc-service/rpc-service-chain.ts index af5a69e2c9b..89f6ba5cd2c 100644 --- a/packages/network-controller/src/rpc-service/rpc-service-chain.ts +++ b/packages/network-controller/src/rpc-service/rpc-service-chain.ts @@ -10,15 +10,15 @@ import type { } from '@metamask/utils'; import { IDisposable } from 'cockatiel'; -import { projectLogger, createModuleLogger } from '../logger'; -import { RpcService } from './rpc-service'; -import type { RpcServiceOptions } from './rpc-service'; +import { projectLogger, createModuleLogger } from '../logger.js'; +import { RpcService } from './rpc-service.js'; +import type { RpcServiceOptions } from './rpc-service.js'; import type { CockatielEventToEventListenerWithData, ExcludeCockatielEventData, ExtractCockatielEventData, FetchOptions, -} from './shared'; +} from './shared.js'; const log = createModuleLogger(projectLogger, 'RpcServiceChain'); diff --git a/packages/network-controller/src/rpc-service/rpc-service-requestable.ts b/packages/network-controller/src/rpc-service/rpc-service-requestable.ts index 6283a704736..7d8e2764d6c 100644 --- a/packages/network-controller/src/rpc-service/rpc-service-requestable.ts +++ b/packages/network-controller/src/rpc-service/rpc-service-requestable.ts @@ -12,7 +12,7 @@ import type { ExtendCockatielEventData, ExtractCockatielEventData, FetchOptions, -} from './shared'; +} from './shared.js'; /** * The interface for a service class responsible for making a request to a diff --git a/packages/network-controller/src/rpc-service/rpc-service.test.ts b/packages/network-controller/src/rpc-service/rpc-service.test.ts index 309296cab77..15e880344b9 100644 --- a/packages/network-controller/src/rpc-service/rpc-service.test.ts +++ b/packages/network-controller/src/rpc-service/rpc-service.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { DEFAULT_CIRCUIT_BREAK_DURATION, DEFAULT_DEGRADED_THRESHOLD, @@ -13,7 +14,7 @@ import { CUSTOM_RPC_ERRORS, DEFAULT_MAX_RETRIES, RpcService, -} from './rpc-service'; +} from './rpc-service.js'; describe('RpcService', () => { beforeEach(() => { diff --git a/packages/network-controller/src/rpc-service/rpc-service.ts b/packages/network-controller/src/rpc-service/rpc-service.ts index 6e6cba3509e..1eef498ba30 100644 --- a/packages/network-controller/src/rpc-service/rpc-service.ts +++ b/packages/network-controller/src/rpc-service/rpc-service.ts @@ -20,14 +20,14 @@ import { CircuitState } from 'cockatiel'; import deepmerge from 'deepmerge'; import type { Logger } from 'loglevel'; -import { projectLogger, createModuleLogger } from '../logger'; +import { projectLogger, createModuleLogger } from '../logger.js'; import type { CockatielEventToEventListenerWithData, ExcludeCockatielEventData, ExtendCockatielEventData, ExtractCockatielEventData, FetchOptions, -} from './shared'; +} from './shared.js'; /** * Options for the RpcService constructor with some properties omitted and made optional as they have defaults. diff --git a/packages/network-controller/src/selectors.test.ts b/packages/network-controller/src/selectors.test.ts index 9e934fdc9e4..0fed844f57e 100644 --- a/packages/network-controller/src/selectors.test.ts +++ b/packages/network-controller/src/selectors.test.ts @@ -1,4 +1,4 @@ -import { getRpcFailoverMode } from './selectors'; +import { getRpcFailoverMode } from './selectors.js'; /** * Builds a remote feature flag controller state with the given failover mode. diff --git a/packages/network-controller/tests/NetworkController.provider.test.ts b/packages/network-controller/tests/NetworkController.provider.test.ts index 00e360b2e25..1285db3121e 100644 --- a/packages/network-controller/tests/NetworkController.provider.test.ts +++ b/packages/network-controller/tests/NetworkController.provider.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { DEFAULT_DEGRADED_THRESHOLD, InfuraNetworkType, @@ -5,14 +6,14 @@ import { import { Duration, inMilliseconds } from '@metamask/utils'; import nock from 'nock'; -import { NetworkStatus } from '../src/constants'; +import { NetworkStatus } from '../src/constants.js'; import { buildCustomNetworkConfiguration, buildCustomRpcEndpoint, buildInfuraNetworkConfiguration, buildInfuraRpcEndpoint, withController, -} from './helpers'; +} from './helpers.js'; describe('NetworkController provider tests', () => { beforeEach(() => { diff --git a/packages/network-controller/tests/NetworkController.test.ts b/packages/network-controller/tests/NetworkController.test.ts index 35fa8fe8b09..d08ffe6ced1 100644 --- a/packages/network-controller/tests/NetworkController.test.ts +++ b/packages/network-controller/tests/NetworkController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { ChainId, @@ -18,14 +19,14 @@ import { when, resetAllWhenMocks, WhenMock } from 'jest-when'; import { inspect, isDeepStrictEqual, promisify } from 'util'; import { v4 as uuidV4 } from 'uuid'; -import { FakeBlockTracker } from '../../../tests/fake-block-tracker'; -import type { FakeProviderStub } from '../../../tests/fake-provider'; -import { FakeProvider } from '../../../tests/fake-provider'; -import { NetworkStatus } from '../src/constants'; -import * as createAutoManagedNetworkClientModule from '../src/create-auto-managed-network-client'; -import type { AutoManagedNetworkClient } from '../src/create-auto-managed-network-client'; -import type { NetworkClient } from '../src/create-network-client'; -import { createNetworkClient } from '../src/create-network-client'; +import { FakeBlockTracker } from '../../../tests/fake-block-tracker.js'; +import type { FakeProviderStub } from '../../../tests/fake-provider.js'; +import { FakeProvider } from '../../../tests/fake-provider.js'; +import { NetworkStatus } from '../src/constants.js'; +import * as createAutoManagedNetworkClientModule from '../src/create-auto-managed-network-client.js'; +import type { AutoManagedNetworkClient } from '../src/create-auto-managed-network-client.js'; +import type { NetworkClient } from '../src/create-network-client.js'; +import { createNetworkClient } from '../src/create-network-client.js'; import type { AutoManagedBuiltInNetworkClientRegistry, AutoManagedCustomNetworkClientRegistry, @@ -35,7 +36,7 @@ import type { NetworkControllerEvents, NetworkControllerStateChangeEvent, NetworkState, -} from '../src/NetworkController'; +} from '../src/NetworkController.js'; import { getAvailableNetworkClientIds, getDefaultNetworkControllerState, @@ -44,10 +45,10 @@ import { RpcEndpointType, selectAvailableNetworkClientIds, selectNetworkConfigurations, -} from '../src/NetworkController'; -import type { RpcServiceOptions } from '../src/rpc-service/rpc-service'; -import type { NetworkClientConfiguration, Provider } from '../src/types'; -import { NetworkClientType } from '../src/types'; +} from '../src/NetworkController.js'; +import type { RpcServiceOptions } from '../src/rpc-service/rpc-service.js'; +import type { NetworkClientConfiguration, Provider } from '../src/types.js'; +import { NetworkClientType } from '../src/types.js'; import { buildAddNetworkCustomRpcEndpointFields, buildAddNetworkFields, @@ -64,8 +65,8 @@ import { INFURA_NETWORKS, TESTNET, withController, -} from './helpers'; -import type { RootMessenger } from './helpers'; +} from './helpers.js'; +import type { RootMessenger } from './helpers.js'; jest.mock('../src/create-network-client'); @@ -2030,7 +2031,7 @@ describe('NetworkController', () => { response: SUCCESSFUL_ETH_GET_BLOCK_BY_NUMBER_RESPONSE, beforeCompleting: (): void => { // We are purposefully not awaiting this promise. - // eslint-disable-next-line @typescript-eslint/no-floating-promises + controller.setActiveNetwork('AAAA-AAAA-AAAA-AAAA'); }, }, @@ -2122,7 +2123,7 @@ describe('NetworkController', () => { }, beforeCompleting: (): void => { // We are purposefully not awaiting this promise. - // eslint-disable-next-line @typescript-eslint/no-floating-promises + controller.setActiveNetwork('AAAA-AAAA-AAAA-AAAA'); }, }, @@ -2215,7 +2216,7 @@ describe('NetworkController', () => { error: BLOCKED_INFURA_JSON_RPC_ERROR, beforeCompleting: (): void => { // We are purposefully not awaiting this promise. - // eslint-disable-next-line @typescript-eslint/no-floating-promises + controller.setActiveNetwork('AAAA-AAAA-AAAA-AAAA'); }, }, @@ -2525,7 +2526,7 @@ describe('NetworkController', () => { response: SUCCESSFUL_ETH_GET_BLOCK_BY_NUMBER_RESPONSE, beforeCompleting: (): void => { // We are purposefully not awaiting this promise. - // eslint-disable-next-line @typescript-eslint/no-floating-promises + controller.setProviderType(TESTNET.networkType); }, }, @@ -2620,7 +2621,7 @@ describe('NetworkController', () => { }, beforeCompleting: (): void => { // We are purposefully not awaiting this promise. - // eslint-disable-next-line @typescript-eslint/no-floating-promises + controller.setProviderType(TESTNET.networkType); }, }, @@ -2718,7 +2719,7 @@ describe('NetworkController', () => { response: SUCCESSFUL_ETH_GET_BLOCK_BY_NUMBER_RESPONSE, beforeCompleting: (): void => { // We are purposefully not awaiting this promise. - // eslint-disable-next-line @typescript-eslint/no-floating-promises + controller.setProviderType(TESTNET.networkType); }, }, @@ -13505,7 +13506,7 @@ describe('NetworkController', () => { operation: () => { // Intentionally not awaited because we're capturing an event // emitted partway through the operation - // eslint-disable-next-line @typescript-eslint/no-floating-promises + controller.rollbackToPreviousProvider(); }, }); @@ -13548,7 +13549,7 @@ describe('NetworkController', () => { // Intentionally not awaited because we're capturing an event // emitted partway through the operation // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/no-floating-promises + controller.rollbackToPreviousProvider(); }, }); @@ -13681,7 +13682,7 @@ describe('NetworkController', () => { operation: () => { // Intentionally not awaited because we want to check state // while this operation is in-progress - // eslint-disable-next-line @typescript-eslint/no-floating-promises + controller.rollbackToPreviousProvider(); }, beforeResolving: () => { @@ -14094,7 +14095,7 @@ describe('NetworkController', () => { operation: () => { // Intentionally not awaited because we're capturing an event // emitted partway through the operation - // eslint-disable-next-line @typescript-eslint/no-floating-promises + controller.rollbackToPreviousProvider(); }, }); @@ -14139,7 +14140,7 @@ describe('NetworkController', () => { operation: () => { // Intentionally not awaited because we're capturing an event // emitted partway through the operation - // eslint-disable-next-line @typescript-eslint/no-floating-promises + controller.rollbackToPreviousProvider(); }, }); @@ -14275,7 +14276,7 @@ describe('NetworkController', () => { operation: () => { // Intentionally not awaited because we want to check state // while this operation is in-progress - // eslint-disable-next-line @typescript-eslint/no-floating-promises + controller.rollbackToPreviousProvider(); }, beforeResolving: () => { diff --git a/packages/network-controller/tests/helpers.ts b/packages/network-controller/tests/helpers.ts index a46c7cdf78b..f2f80f657fc 100644 --- a/packages/network-controller/tests/helpers.ts +++ b/packages/network-controller/tests/helpers.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { CONNECTIVITY_STATUSES } from '@metamask/connectivity-controller'; import type { ConnectivityStatus } from '@metamask/connectivity-controller'; import { @@ -17,11 +18,12 @@ import type { import type { Hex } from '@metamask/utils'; import { v4 as uuidV4 } from 'uuid'; -import { FakeBlockTracker } from '../../../tests/fake-block-tracker'; -import { FakeProvider } from '../../../tests/fake-provider'; -import type { FakeProviderStub } from '../../../tests/fake-provider'; -import { buildTestObject } from '../../../tests/helpers'; -import { NetworkController } from '../src'; +import { FakeBlockTracker } from '../../../tests/fake-block-tracker.js'; +import { FakeProvider } from '../../../tests/fake-provider.js'; +import type { FakeProviderStub } from '../../../tests/fake-provider.js'; +import { buildTestObject } from '../../../tests/helpers.js'; +import type { AutoManagedNetworkClient } from '../src/create-auto-managed-network-client.js'; +import { NetworkController } from '../src/index.js'; import type { BuiltInNetworkClientId, CustomNetworkClientId, @@ -29,8 +31,7 @@ import type { NetworkClientConfiguration, NetworkClientId, NetworkConfiguration, -} from '../src'; -import type { AutoManagedNetworkClient } from '../src/create-auto-managed-network-client'; +} from '../src/index.js'; import type { AddNetworkCustomRpcEndpointFields, AddNetworkFields, @@ -39,15 +40,15 @@ import type { NetworkControllerMessenger, NetworkControllerOptions, UpdateNetworkCustomRpcEndpointFields, -} from '../src/NetworkController'; -import { RpcEndpointType } from '../src/NetworkController'; -import { RpcServiceOptions } from '../src/rpc-service/rpc-service'; -import type { RpcFailoverMode } from '../src/selectors'; +} from '../src/NetworkController.js'; +import { RpcEndpointType } from '../src/NetworkController.js'; +import { RpcServiceOptions } from '../src/rpc-service/rpc-service.js'; +import type { RpcFailoverMode } from '../src/selectors.js'; import type { CustomNetworkClientConfiguration, InfuraNetworkClientConfiguration, -} from '../src/types'; -import { NetworkClientType } from '../src/types'; +} from '../src/types.js'; +import { NetworkClientType } from '../src/types.js'; export type AllNetworkControllerActions = MessengerActions; diff --git a/packages/network-controller/tests/network-client/block-hash-in-response.ts b/packages/network-controller/tests/network-client/block-hash-in-response.ts index 160d93da280..6976b4c63c4 100644 --- a/packages/network-controller/tests/network-client/block-hash-in-response.ts +++ b/packages/network-controller/tests/network-client/block-hash-in-response.ts @@ -1,14 +1,15 @@ +import { jest } from '@jest/globals'; import { errorCodes, rpcErrors } from '@metamask/rpc-errors'; -import { CUSTOM_RPC_ERRORS } from '../../src/rpc-service/rpc-service'; -import { NetworkClientType } from '../../src/types'; -import type { ProviderType } from './helpers'; +import { CUSTOM_RPC_ERRORS } from '../../src/rpc-service/rpc-service.js'; +import { NetworkClientType } from '../../src/types.js'; +import type { ProviderType } from './helpers.js'; import { waitForPromiseToBeFulfilledAfterRunningAllTimers, withMockedCommunications, withNetworkClient, -} from './helpers'; -import { testsForRpcFailoverBehavior } from './rpc-failover'; +} from './helpers.js'; +import { testsForRpcFailoverBehavior } from './rpc-failover.js'; type TestsForRpcMethodThatCheckForBlockHashInResponseOptions = { providerType: ProviderType; diff --git a/packages/network-controller/tests/network-client/block-param.ts b/packages/network-controller/tests/network-client/block-param.ts index 2b8a6cf980e..c7469efef55 100644 --- a/packages/network-controller/tests/network-client/block-param.ts +++ b/packages/network-controller/tests/network-client/block-param.ts @@ -1,17 +1,18 @@ +import { jest } from '@jest/globals'; import { errorCodes, rpcErrors } from '@metamask/rpc-errors'; import type { Hex } from '@metamask/utils'; -import { CUSTOM_RPC_ERRORS } from '../../src/rpc-service/rpc-service'; -import { NetworkClientType } from '../../src/types'; -import type { MockRequest, ProviderType } from './helpers'; +import { CUSTOM_RPC_ERRORS } from '../../src/rpc-service/rpc-service.js'; +import { NetworkClientType } from '../../src/types.js'; +import type { MockRequest, ProviderType } from './helpers.js'; import { buildMockParams, buildRequestWithReplacedBlockParam, waitForPromiseToBeFulfilledAfterRunningAllTimers, withMockedCommunications, withNetworkClient, -} from './helpers'; -import { testsForRpcFailoverBehavior } from './rpc-failover'; +} from './helpers.js'; +import { testsForRpcFailoverBehavior } from './rpc-failover.js'; type TestsForRpcMethodSupportingBlockParam = { providerType: ProviderType; diff --git a/packages/network-controller/tests/network-client/helpers.ts b/packages/network-controller/tests/network-client/helpers.ts index 83bff9e1477..592a915e0c1 100644 --- a/packages/network-controller/tests/network-client/helpers.ts +++ b/packages/network-controller/tests/network-client/helpers.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { JSONRPCResponse } from '@json-rpc-specification/meta-schema'; import type { InfuraNetworkType } from '@metamask/controller-utils'; import { BUILT_IN_NETWORKS } from '@metamask/controller-utils'; @@ -7,23 +8,23 @@ import type { } from '@metamask/eth-block-tracker'; import EthQuery from '@metamask/eth-query'; import type { Hex, Json, JsonRpcRequest } from '@metamask/utils'; -import nock, { isDone as nockIsDone } from 'nock'; +import nock from 'nock'; import type { Scope as NockScope } from 'nock'; -import { createNetworkClient } from '../../src/create-network-client'; +import { createNetworkClient } from '../../src/create-network-client.js'; import type { NetworkClientId, NetworkControllerOptions, -} from '../../src/NetworkController'; -import type { RpcServiceOptions } from '../../src/rpc-service/rpc-service'; -import type { RpcFailoverMode } from '../../src/selectors'; -import type { NetworkClientConfiguration, Provider } from '../../src/types'; -import { NetworkClientType } from '../../src/types'; -import type { RootMessenger } from '../helpers'; +} from '../../src/NetworkController.js'; +import type { RpcServiceOptions } from '../../src/rpc-service/rpc-service.js'; +import type { RpcFailoverMode } from '../../src/selectors.js'; +import type { NetworkClientConfiguration, Provider } from '../../src/types.js'; +import { NetworkClientType } from '../../src/types.js'; +import type { RootMessenger } from '../helpers.js'; import { buildNetworkControllerMessenger, buildRootMessenger, -} from '../helpers'; +} from '../helpers.js'; /** * A dummy value for the `infuraProjectId` option that `createInfuraClient` @@ -399,7 +400,7 @@ export async function withMockedCommunications( try { return await fn(comms); } finally { - nockIsDone(); + nock.isDone(); } } diff --git a/packages/network-controller/tests/network-client/no-block-param.ts b/packages/network-controller/tests/network-client/no-block-param.ts index d5e47951d71..dfebeb37948 100644 --- a/packages/network-controller/tests/network-client/no-block-param.ts +++ b/packages/network-controller/tests/network-client/no-block-param.ts @@ -1,14 +1,15 @@ +import { jest } from '@jest/globals'; import { errorCodes, rpcErrors } from '@metamask/rpc-errors'; -import { CUSTOM_RPC_ERRORS } from '../../src/rpc-service/rpc-service'; -import { NetworkClientType } from '../../src/types'; -import type { ProviderType } from './helpers'; +import { CUSTOM_RPC_ERRORS } from '../../src/rpc-service/rpc-service.js'; +import { NetworkClientType } from '../../src/types.js'; +import type { ProviderType } from './helpers.js'; import { waitForPromiseToBeFulfilledAfterRunningAllTimers, withMockedCommunications, withNetworkClient, -} from './helpers'; -import { testsForRpcFailoverBehavior } from './rpc-failover'; +} from './helpers.js'; +import { testsForRpcFailoverBehavior } from './rpc-failover.js'; type TestsForRpcMethodAssumingNoBlockParamOptions = { providerType: ProviderType; diff --git a/packages/network-controller/tests/network-client/not-handled-by-middleware.ts b/packages/network-controller/tests/network-client/not-handled-by-middleware.ts index 2dee8f3e85b..e7af4e0f45e 100644 --- a/packages/network-controller/tests/network-client/not-handled-by-middleware.ts +++ b/packages/network-controller/tests/network-client/not-handled-by-middleware.ts @@ -1,7 +1,7 @@ -import { fill } from 'lodash'; +import { fill } from 'lodash-es'; -import type { ProviderType } from './helpers'; -import { withMockedCommunications, withNetworkClient } from './helpers'; +import type { ProviderType } from './helpers.js'; +import { withMockedCommunications, withNetworkClient } from './helpers.js'; type TestsForRpcMethodNotHandledByMiddlewareOptions = { providerType: ProviderType; diff --git a/packages/network-controller/tests/network-client/rpc-failover.ts b/packages/network-controller/tests/network-client/rpc-failover.ts index ad4b9dd83ba..a0aecbd8b71 100644 --- a/packages/network-controller/tests/network-client/rpc-failover.ts +++ b/packages/network-controller/tests/network-client/rpc-failover.ts @@ -1,10 +1,11 @@ +import { jest } from '@jest/globals'; import { ConstantBackoff } from '@metamask/controller-utils'; import type { Hex } from '@metamask/utils'; -import { ignoreRejection } from '../../../../tests/helpers'; -import { buildRootMessenger } from '../helpers'; -import type { MockRequest, MockResponse, ProviderType } from './helpers'; -import { withMockedCommunications, withNetworkClient } from './helpers'; +import { ignoreRejection } from '../../../../tests/helpers.js'; +import { buildRootMessenger } from '../helpers.js'; +import type { MockRequest, MockResponse, ProviderType } from './helpers.js'; +import { withMockedCommunications, withNetworkClient } from './helpers.js'; /** * Tests for RPC failover behavior. From d7ea99927cccecf8ac9c974feafcbe82d3998df5 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:24 +0200 Subject: [PATCH 049/115] ESLint fix and `jest` global import for accounts-controller --- packages/accounts-controller/package.json | 2 +- .../AccountsController-method-action-types.ts | 2 +- .../src/AccountsController.test.ts | 9 ++++---- .../src/AccountsController.ts | 22 ++++++++----------- packages/accounts-controller/src/index.ts | 8 +++---- packages/accounts-controller/src/typing.ts | 2 +- .../accounts-controller/src/utils.test.ts | 5 +++-- packages/accounts-controller/src/utils.ts | 2 +- 8 files changed, 25 insertions(+), 27 deletions(-) diff --git a/packages/accounts-controller/package.json b/packages/accounts-controller/package.json index 13a52ed884d..f0295300dbc 100644 --- a/packages/accounts-controller/package.json +++ b/packages/accounts-controller/package.json @@ -63,7 +63,7 @@ "deepmerge": "^4.2.2", "ethereum-cryptography": "^2.1.2", "immer": "^9.0.6", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "uuid": "^8.3.2" }, "devDependencies": { diff --git a/packages/accounts-controller/src/AccountsController-method-action-types.ts b/packages/accounts-controller/src/AccountsController-method-action-types.ts index 34494943a28..12a69da6c60 100644 --- a/packages/accounts-controller/src/AccountsController-method-action-types.ts +++ b/packages/accounts-controller/src/AccountsController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { AccountsController } from './AccountsController'; +import type { AccountsController } from './AccountsController.js'; /** * Returns the internal account object for the given account ID, if it exists. diff --git a/packages/accounts-controller/src/AccountsController.test.ts b/packages/accounts-controller/src/AccountsController.test.ts index 1df8dfbf468..757dfa28971 100644 --- a/packages/accounts-controller/src/AccountsController.test.ts +++ b/packages/accounts-controller/src/AccountsController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { InfuraNetworkType, @@ -40,16 +41,16 @@ import { createMockInternalAccount, createMockInternalAccountOptions, ETH_EOA_METHODS, -} from '../tests/mocks'; +} from '../tests/mocks.js'; import type { AccountsControllerMessenger, AccountsControllerState, -} from './AccountsController'; -import { AccountsController, EMPTY_ACCOUNT } from './AccountsController'; +} from './AccountsController.js'; +import { AccountsController, EMPTY_ACCOUNT } from './AccountsController.js'; import { getUUIDOptionsFromAddressOfNormalAccount, keyringTypeToName, -} from './utils'; +} from './utils.js'; type AllAccountsControllerActions = MessengerActions; diff --git a/packages/accounts-controller/src/AccountsController.ts b/packages/accounts-controller/src/AccountsController.ts index abfd0c7113f..16f1544bde4 100644 --- a/packages/accounts-controller/src/AccountsController.ts +++ b/packages/accounts-controller/src/AccountsController.ts @@ -34,18 +34,18 @@ import type { NetworkClientId } from '@metamask/network-controller'; import { isCaipChainId } from '@metamask/utils'; import type { CaipChainId } from '@metamask/utils'; import type { WritableDraft } from 'immer/dist/internal.js'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; -import { AccountsControllerMethodActions } from './AccountsController-method-action-types'; -import { projectLogger as log } from './logger'; +import { AccountsControllerMethodActions } from './AccountsController-method-action-types.js'; +import { projectLogger as log } from './logger.js'; import type { MultichainNetworkControllerNetworkDidChangeEvent, SnapAccountServiceAccountAssetListUpdatedEvent, SnapAccountServiceAccountBalancesUpdatedEvent, SnapAccountServiceAccountTransactionsUpdatedEvent, -} from './types'; -import type { AccountsControllerStrictState } from './typing'; -import type { HdSnapKeyringAccount } from './utils'; +} from './types.js'; +import type { AccountsControllerStrictState } from './typing.js'; +import type { HdSnapKeyringAccount } from './utils.js'; import { constructAccountIdByAddress, getEvmDerivationPathForIndex, @@ -57,7 +57,7 @@ import { isSnapKeyringType, isSnapKeyringV2Type, keyringTypeToName, -} from './utils'; +} from './utils.js'; const controllerName = 'AccountsController'; @@ -1035,9 +1035,7 @@ export class AccountsController extends BaseController< ); if (account) { - const accounts = Object.values( - internalAccounts.accounts, - ) as InternalAccount[]; + const accounts = Object.values(internalAccounts.accounts); // If it's the first account, we need to select it. const lastSelected = @@ -1112,9 +1110,7 @@ export class AccountsController extends BaseController< // If the account no longer exists (or none is selected), we need to re-select another one. const { internalAccounts } = state; if (!internalAccounts.accounts[previouslySelectedAccount]) { - const accounts = Object.values( - internalAccounts.accounts, - ) as InternalAccount[]; + const accounts = Object.values(internalAccounts.accounts); // Get the lastly selected account (according to the current accounts). const lastSelectedAccount = this.#getLastSelectedAccount(accounts); diff --git a/packages/accounts-controller/src/index.ts b/packages/accounts-controller/src/index.ts index bfaf0be8e56..a19927804e4 100644 --- a/packages/accounts-controller/src/index.ts +++ b/packages/accounts-controller/src/index.ts @@ -18,7 +18,7 @@ export type { AllowedEvents, AccountsControllerEvents, AccountsControllerMessenger, -} from './AccountsController'; +} from './AccountsController.js'; export type { AccountsControllerGetAccountAction, AccountsControllerGetAccountsAction, @@ -33,11 +33,11 @@ export type { AccountsControllerUpdateAccountMetadataAction, AccountsControllerUpdateAccountsAction, AccountsControllerLoadBackupAction, -} from './AccountsController-method-action-types'; -export { EMPTY_ACCOUNT, AccountsController } from './AccountsController'; +} from './AccountsController-method-action-types.js'; +export { EMPTY_ACCOUNT, AccountsController } from './AccountsController.js'; export { keyringTypeToName, getUUIDOptionsFromAddressOfNormalAccount, getUUIDFromAddressOfNormalAccount, isNormalKeyringType, -} from './utils'; +} from './utils.js'; diff --git a/packages/accounts-controller/src/typing.ts b/packages/accounts-controller/src/typing.ts index 81d038ac998..bca520d9037 100644 --- a/packages/accounts-controller/src/typing.ts +++ b/packages/accounts-controller/src/typing.ts @@ -1,7 +1,7 @@ import type { KeyringAccountEntropyOptions } from '@metamask/keyring-api'; import type { InternalAccount } from '@metamask/keyring-internal-api'; -import type { AccountsControllerState } from './AccountsController'; +import type { AccountsControllerState } from './AccountsController.js'; /** * Type constraint to ensure a type is compatible with {@link AccountsControllerState}. diff --git a/packages/accounts-controller/src/utils.test.ts b/packages/accounts-controller/src/utils.test.ts index 66d22cd4621..6b6b20de1a3 100644 --- a/packages/accounts-controller/src/utils.test.ts +++ b/packages/accounts-controller/src/utils.test.ts @@ -1,9 +1,10 @@ import { toChecksumAddress } from '@ethereumjs/util'; +import { jest } from '@jest/globals'; import { KeyringType } from '@metamask/keyring-api/v2'; import type { KeyringObject } from '@metamask/keyring-controller'; import { KeyringTypes } from '@metamask/keyring-controller'; -import { createMockInternalAccount } from '../tests/mocks'; +import { createMockInternalAccount } from '../tests/mocks.js'; import { constructAccountIdByAddress, getEvmGroupIndexFromAddressIndex, @@ -12,7 +13,7 @@ import { isSimpleKeyringType, isSnapKeyringV2Type, keyringTypeToName, -} from './utils'; +} from './utils.js'; describe('utils', () => { describe('keyringTypeToName', () => { diff --git a/packages/accounts-controller/src/utils.ts b/packages/accounts-controller/src/utils.ts index ce5341147b9..e4f33c9455f 100644 --- a/packages/accounts-controller/src/utils.ts +++ b/packages/accounts-controller/src/utils.ts @@ -8,7 +8,7 @@ import { hexToBytes } from '@metamask/utils'; import { sha256 } from 'ethereum-cryptography/sha256'; import { v4 as uuid } from 'uuid'; -import type { AccountId } from './AccountsController'; +import type { AccountId } from './AccountsController.js'; // `uuid` declares this type but it's not importable in ESM. type V4Options = Exclude[0], undefined>; From bd20f540acc984f4e3829eaf875823e01b02ff33 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:29 +0200 Subject: [PATCH 050/115] ESLint fix and `jest` global import for notification-services-controller --- .../package.json | 2 +- ...nServicesController-method-action-types.ts | 2 +- .../NotificationServicesController.test.ts | 35 +++++++++++-------- .../NotificationServicesController.ts | 28 +++++++-------- .../__fixtures__/mockServices.ts | 2 +- .../constants/index.ts | 2 +- .../NotificationServicesController/index.ts | 24 ++++++------- .../mocks/index.ts | 8 ++--- .../mocks/mock-feature-announcements.ts | 6 ++-- .../mocks/mock-raw-notifications.ts | 4 +-- .../mocks/mock-snap-notification.ts | 4 +-- .../mocks/mockResponses.ts | 10 +++--- .../processors/index.ts | 6 ++-- .../process-api-notifications.test.ts | 4 +-- .../processors/process-api-notifications.ts | 6 ++-- .../process-feature-announcement.test.ts | 8 ++--- .../process-feature-announcement.ts | 6 ++-- .../processors/process-notifications.test.ts | 10 +++--- .../processors/process-notifications.ts | 16 ++++----- .../process-snap-notifications.test.ts | 8 ++--- .../processors/process-snap-notifications.ts | 4 +-- .../services/api-notifications.test.ts | 6 ++-- .../services/api-notifications.ts | 8 ++--- .../services/feature-announcements.test.ts | 12 ++++--- .../services/feature-announcements.ts | 14 ++++---- .../notification-config-cache.test.ts | 4 ++- .../services/perp-notifications.test.ts | 8 +++-- .../services/perp-notifications.ts | 2 +- .../feature-announcement.ts | 4 +-- .../types/feature-announcement/index.ts | 6 ++-- .../type-feature-announcement.ts | 2 +- .../types/index.ts | 10 +++--- .../types/notification-api/index.ts | 4 +-- .../notification-api/notification-api.ts | 6 ++-- .../types/notification/index.ts | 2 +- .../types/notification/notification.ts | 8 ++--- .../types/perps/index.ts | 2 +- .../types/perps/perp-types.ts | 2 +- .../types/snaps/index.ts | 2 +- .../types/snaps/snaps.ts | 2 +- .../utils/isVersionInBounds.test.ts | 2 +- ...vicesPushController-method-action-types.ts | 2 +- ...NotificationServicesPushController.test.ts | 11 +++--- .../NotificationServicesPushController.ts | 14 ++++---- .../__fixtures__/mockServices.ts | 2 +- .../index.ts | 16 ++++----- .../mocks/index.ts | 2 +- .../mocks/mockResponse.ts | 2 +- .../services/services.test.ts | 9 ++--- .../services/services.ts | 8 ++--- .../types/index.ts | 4 +-- .../types/push-service-interface.ts | 2 +- .../utils/get-notification-data.test.ts | 2 +- .../utils/get-notification-message.test.ts | 8 ++--- .../utils/get-notification-message.ts | 18 ++++------ .../utils/index.ts | 4 +-- .../web/index.ts | 2 +- .../web/push-utils.test.ts | 11 +++--- .../web/push-utils.ts | 10 +++--- .../src/index.ts | 6 ++-- .../src/shared/index.ts | 6 ++-- .../shared/is-onchain-notification.test.ts | 4 +-- .../src/shared/is-onchain-notification.ts | 4 +-- .../shared/notification-api-type-guards.ts | 2 +- .../src/shared/to-raw-notification.ts | 7 ++-- 65 files changed, 233 insertions(+), 224 deletions(-) diff --git a/packages/notification-services-controller/package.json b/packages/notification-services-controller/package.json index 8966265e29b..151eb533a1b 100644 --- a/packages/notification-services-controller/package.json +++ b/packages/notification-services-controller/package.json @@ -80,7 +80,7 @@ "@metamask/utils": "^11.11.0", "bignumber.js": "^9.1.2", "firebase": "^11.2.0", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "loglevel": "^1.8.1", "semver": "^7.6.3", "uuid": "^8.3.2" diff --git a/packages/notification-services-controller/src/NotificationServicesController/NotificationServicesController-method-action-types.ts b/packages/notification-services-controller/src/NotificationServicesController/NotificationServicesController-method-action-types.ts index 92eeee08c5e..c4f85cec6cb 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/NotificationServicesController-method-action-types.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/NotificationServicesController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { NotificationServicesController } from './NotificationServicesController'; +import type { NotificationServicesController } from './NotificationServicesController.js'; export type NotificationServicesControllerInitAction = { type: `NotificationServicesController:init`; diff --git a/packages/notification-services-controller/src/NotificationServicesController/NotificationServicesController.test.ts b/packages/notification-services-controller/src/NotificationServicesController/NotificationServicesController.test.ts index 8409d8c6ada..74c073391b4 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/NotificationServicesController.test.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/NotificationServicesController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { AuthenticatedUserStorageServiceGetNotificationPreferencesAction, AuthenticatedUserStorageServicePutNotificationPreferencesAction, @@ -26,23 +27,27 @@ import type { NotificationServicesPushControllerDeletePushNotificationLinksAction, NotificationServicesPushControllerEnablePushNotificationsAction, NotificationServicesPushControllerSubscribeToPushNotificationsAction, -} from '../NotificationServicesPushController'; -import { ADDRESS_1, ADDRESS_2, ADDRESS_3 } from './__fixtures__/mockAddresses'; +} from '../NotificationServicesPushController/index.js'; +import { + ADDRESS_1, + ADDRESS_2, + ADDRESS_3, +} from './__fixtures__/mockAddresses.js'; import { mockGetOnChainNotificationsConfig, mockGetAPINotifications, mockFetchFeatureAnnouncementNotifications, mockMarkNotificationsAsRead, mockCreatePerpNotification, -} from './__fixtures__/mockServices'; -import { waitFor } from './__fixtures__/test-utils'; -import { TRIGGER_TYPES } from './constants'; -import { createMockSnapNotification } from './mocks'; +} from './__fixtures__/mockServices.js'; +import { waitFor } from './__fixtures__/test-utils.js'; +import { TRIGGER_TYPES } from './constants/index.js'; +import { createMockSnapNotification } from './mocks/index.js'; import { createMockFeatureAnnouncementAPIResult, createMockFeatureAnnouncementRaw, -} from './mocks/mock-feature-announcements'; -import { createMockNotificationEthSent } from './mocks/mock-raw-notifications'; +} from './mocks/mock-feature-announcements.js'; +import { createMockNotificationEthSent } from './mocks/mock-raw-notifications.js'; import { DEFAULT_AGENTIC_CLI_PREFERENCES, DEFAULT_PERPS_PREFERENCES, @@ -51,16 +56,16 @@ import { NotificationServicesController, ACCOUNTS_UPDATE_DEBOUNCE_TIME_MS, defaultState, -} from './NotificationServicesController'; +} from './NotificationServicesController.js'; import type { NotificationServicesControllerMessenger, NotificationServicesControllerState, -} from './NotificationServicesController'; -import { processFeatureAnnouncement } from './processors'; -import { processNotification } from './processors/process-notifications'; -import { processSnapNotification } from './processors/process-snap-notifications'; -import { notificationsConfigCache } from './services/notification-config-cache'; -import type { INotification, OrderInput } from './types'; +} from './NotificationServicesController.js'; +import { processFeatureAnnouncement } from './processors/index.js'; +import { processNotification } from './processors/process-notifications.js'; +import { processSnapNotification } from './processors/process-snap-notifications.js'; +import { notificationsConfigCache } from './services/notification-config-cache.js'; +import type { INotification, OrderInput } from './types/index.js'; // Mock type used for testing purposes // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/notification-services-controller/src/NotificationServicesController/NotificationServicesController.ts b/packages/notification-services-controller/src/NotificationServicesController/NotificationServicesController.ts index f973d76d06b..a504bd362e3 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/NotificationServicesController.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/NotificationServicesController.ts @@ -31,34 +31,34 @@ import type { Messenger } from '@metamask/messenger'; import type { AuthenticationController } from '@metamask/profile-sync-controller'; import type { Hex } from '@metamask/utils'; import { assert } from '@metamask/utils'; -import { debounce } from 'lodash'; +import { debounce } from 'lodash-es'; import log from 'loglevel'; -import type { NormalisedAPINotification } from '.'; import type { NotificationServicesPushControllerStateChangeEvent, NotificationServicesPushControllerOnNewNotificationEvent, -} from '../NotificationServicesPushController'; -import type { NotificationServicesPushControllerMethodActions } from '../NotificationServicesPushController/NotificationServicesPushController-method-action-types'; -import { TRIGGER_TYPES } from './constants/notification-schema'; -import type { NotificationServicesControllerMethodActions } from './NotificationServicesController-method-action-types'; +} from '../NotificationServicesPushController/index.js'; +import type { NotificationServicesPushControllerMethodActions } from '../NotificationServicesPushController/NotificationServicesPushController-method-action-types.js'; +import { TRIGGER_TYPES } from './constants/notification-schema.js'; +import type { NotificationServicesControllerMethodActions } from './NotificationServicesController-method-action-types.js'; import { processAndFilterNotifications, safeProcessNotification, -} from './processors/process-notifications'; -import type { ENV } from './services/api-notifications'; +} from './processors/process-notifications.js'; +import type { ENV } from './services/api-notifications.js'; import { getAPINotifications, getNotificationsApiConfigCached, markNotificationsAsRead, -} from './services/api-notifications'; -import { getFeatureAnnouncementNotifications } from './services/feature-announcements'; -import { createPerpOrderNotification } from './services/perp-notifications'; +} from './services/api-notifications.js'; +import { getFeatureAnnouncementNotifications } from './services/feature-announcements.js'; +import { createPerpOrderNotification } from './services/perp-notifications.js'; +import type { NormalisedAPINotification } from './types/notification-api/index.js'; import type { INotification, MarkAsReadNotificationsParam, -} from './types/notification/notification'; -import type { OrderInput } from './types/perps'; +} from './types/notification/notification.js'; +import type { OrderInput } from './types/perps/index.js'; // Unique name for the controller const controllerName = 'NotificationServicesController'; @@ -692,7 +692,7 @@ export class NotificationServicesController extends BaseController< this.messenger.subscribe( 'KeyringController:stateChange', // Using void return for async callback - result is intentionally ignored - // eslint-disable-next-line @typescript-eslint/no-misused-promises + debouncedUpdateAccountNotifications, (state: KeyringControllerState): number => { return ( diff --git a/packages/notification-services-controller/src/NotificationServicesController/__fixtures__/mockServices.ts b/packages/notification-services-controller/src/NotificationServicesController/__fixtures__/mockServices.ts index 449383d1921..bdab54c3f6d 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/__fixtures__/mockServices.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/__fixtures__/mockServices.ts @@ -6,7 +6,7 @@ import { getMockListNotificationsResponse, getMockMarkNotificationsAsReadResponse, getMockCreatePerpOrderNotification, -} from '../mocks/mockResponses'; +} from '../mocks/mockResponses.js'; type MockReply = { status: nock.StatusCode; diff --git a/packages/notification-services-controller/src/NotificationServicesController/constants/index.ts b/packages/notification-services-controller/src/NotificationServicesController/constants/index.ts index f4c592754f1..4d8d6f37b13 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/constants/index.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/constants/index.ts @@ -1 +1 @@ -export * from './notification-schema'; +export * from './notification-schema.js'; diff --git a/packages/notification-services-controller/src/NotificationServicesController/index.ts b/packages/notification-services-controller/src/NotificationServicesController/index.ts index 745d6f723eb..62f6ae6f06c 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/index.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/index.ts @@ -1,17 +1,17 @@ -import { NotificationServicesController } from './NotificationServicesController'; +import { NotificationServicesController } from './NotificationServicesController.js'; export { NotificationServicesController as Controller }; export default NotificationServicesController; -export * from './NotificationServicesController'; -export type * as Types from './types'; -export type * from './types'; -export * as Processors from './processors'; -export * from './processors'; -export * as Constants from './constants'; -export * from './constants'; -export * as Mocks from './mocks'; -export * from '../shared'; -export { isVersionInBounds } from './utils/isVersionInBounds'; +export * from './NotificationServicesController.js'; +export type * as Types from './types/index.js'; +export type * from './types/index.js'; +export type * as Processors from './processors/index.js'; +export * from './processors/index.js'; +export * as Constants from './constants/index.js'; +export * from './constants/index.js'; +export * as Mocks from './mocks/index.js'; +export * from '../shared/index.js'; +export { isVersionInBounds } from './utils/isVersionInBounds.js'; export type { NotificationServicesControllerInitAction, @@ -31,4 +31,4 @@ export type { NotificationServicesControllerMarkMetamaskNotificationsAsReadAction, NotificationServicesControllerUpdateMetamaskNotificationsListAction, NotificationServicesControllerSendPerpPlaceOrderNotificationAction, -} from './NotificationServicesController-method-action-types'; +} from './NotificationServicesController-method-action-types.js'; diff --git a/packages/notification-services-controller/src/NotificationServicesController/mocks/index.ts b/packages/notification-services-controller/src/NotificationServicesController/mocks/index.ts index fbd22ca1f50..7d3df3199ff 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/mocks/index.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/mocks/index.ts @@ -1,4 +1,4 @@ -export * from './mock-feature-announcements'; -export * from './mock-raw-notifications'; -export * from './mockResponses'; -export * from './mock-snap-notification'; +export * from './mock-feature-announcements.js'; +export * from './mock-raw-notifications.js'; +export * from './mockResponses.js'; +export * from './mock-snap-notification.js'; diff --git a/packages/notification-services-controller/src/NotificationServicesController/mocks/mock-feature-announcements.ts b/packages/notification-services-controller/src/NotificationServicesController/mocks/mock-feature-announcements.ts index 63c6258964b..21e56537a2e 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/mocks/mock-feature-announcements.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/mocks/mock-feature-announcements.ts @@ -1,6 +1,6 @@ -import { TRIGGER_TYPES } from '../constants/notification-schema'; -import type { ContentfulResult } from '../services/feature-announcements'; -import type { FeatureAnnouncementRawNotification } from '../types/feature-announcement/feature-announcement'; +import { TRIGGER_TYPES } from '../constants/notification-schema.js'; +import type { ContentfulResult } from '../services/feature-announcements.js'; +import type { FeatureAnnouncementRawNotification } from '../types/feature-announcement/feature-announcement.js'; /** * Mocking Utility - create a mock normalized feature announcement diff --git a/packages/notification-services-controller/src/NotificationServicesController/mocks/mock-raw-notifications.ts b/packages/notification-services-controller/src/NotificationServicesController/mocks/mock-raw-notifications.ts index 01f2bb33968..5e493fe25c7 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/mocks/mock-raw-notifications.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/mocks/mock-raw-notifications.ts @@ -1,5 +1,5 @@ -import { TRIGGER_TYPES } from '../constants/notification-schema'; -import type { NormalisedAPINotification } from '../types/notification-api/notification-api'; +import { TRIGGER_TYPES } from '../constants/notification-schema.js'; +import type { NormalisedAPINotification } from '../types/notification-api/notification-api.js'; /** * Mocking Utility - create a mock Eth sent notification diff --git a/packages/notification-services-controller/src/NotificationServicesController/mocks/mock-snap-notification.ts b/packages/notification-services-controller/src/NotificationServicesController/mocks/mock-snap-notification.ts index d6d694179f2..39c688857fe 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/mocks/mock-snap-notification.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/mocks/mock-snap-notification.ts @@ -1,5 +1,5 @@ -import { TRIGGER_TYPES } from '../constants'; -import type { RawSnapNotification } from '../types/snaps'; +import { TRIGGER_TYPES } from '../constants/index.js'; +import type { RawSnapNotification } from '../types/snaps/index.js'; /** * Mocking Utility - create a mock raw snap notification diff --git a/packages/notification-services-controller/src/NotificationServicesController/mocks/mockResponses.ts b/packages/notification-services-controller/src/NotificationServicesController/mocks/mockResponses.ts index f6bd4773013..279067a5f0b 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/mocks/mockResponses.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/mocks/mockResponses.ts @@ -2,11 +2,11 @@ import { NOTIFICATION_API_LIST_ENDPOINT, NOTIFICATION_API_MARK_ALL_AS_READ_ENDPOINT, TRIGGER_API_NOTIFICATIONS_QUERY_ENDPOINT, -} from '../services/api-notifications'; -import { FEATURE_ANNOUNCEMENT_API } from '../services/feature-announcements'; -import { PERPS_API_CREATE_ORDERS } from '../services/perp-notifications'; -import { createMockFeatureAnnouncementAPIResult } from './mock-feature-announcements'; -import { createMockRawOnChainNotifications } from './mock-raw-notifications'; +} from '../services/api-notifications.js'; +import { FEATURE_ANNOUNCEMENT_API } from '../services/feature-announcements.js'; +import { PERPS_API_CREATE_ORDERS } from '../services/perp-notifications.js'; +import { createMockFeatureAnnouncementAPIResult } from './mock-feature-announcements.js'; +import { createMockRawOnChainNotifications } from './mock-raw-notifications.js'; type MockResponse = { url: string; diff --git a/packages/notification-services-controller/src/NotificationServicesController/processors/index.ts b/packages/notification-services-controller/src/NotificationServicesController/processors/index.ts index fdd06a7c4b9..2848622e294 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/processors/index.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/processors/index.ts @@ -1,3 +1,3 @@ -export * from './process-feature-announcement'; -export * from './process-notifications'; -export * from './process-api-notifications'; +export * from './process-feature-announcement.js'; +export * from './process-notifications.js'; +export * from './process-api-notifications.js'; diff --git a/packages/notification-services-controller/src/NotificationServicesController/processors/process-api-notifications.test.ts b/packages/notification-services-controller/src/NotificationServicesController/processors/process-api-notifications.test.ts index 44eb12139ae..7cc7d06633a 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/processors/process-api-notifications.test.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/processors/process-api-notifications.test.ts @@ -15,8 +15,8 @@ import { createMockNotificationLidoWithdrawalCompleted, createMockNotificationLidoReadyToBeWithdrawn, createMockPlatformNotification, -} from '../mocks/mock-raw-notifications'; -import { processAPINotifications } from './process-api-notifications'; +} from '../mocks/mock-raw-notifications.js'; +import { processAPINotifications } from './process-api-notifications.js'; const rawNotifications = [ createMockNotificationEthSent(), diff --git a/packages/notification-services-controller/src/NotificationServicesController/processors/process-api-notifications.ts b/packages/notification-services-controller/src/NotificationServicesController/processors/process-api-notifications.ts index dac4f2ed38a..fa2283f1d51 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/processors/process-api-notifications.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/processors/process-api-notifications.ts @@ -1,6 +1,6 @@ -import type { NormalisedAPINotification } from '../types/notification-api/notification-api'; -import type { INotification } from '../types/notification/notification'; -import { shouldAutoExpire } from '../utils/should-auto-expire'; +import type { NormalisedAPINotification } from '../types/notification-api/notification-api.js'; +import type { INotification } from '../types/notification/notification.js'; +import { shouldAutoExpire } from '../utils/should-auto-expire.js'; /** * Processes API notifications to a normalized INotification shape diff --git a/packages/notification-services-controller/src/NotificationServicesController/processors/process-feature-announcement.test.ts b/packages/notification-services-controller/src/NotificationServicesController/processors/process-feature-announcement.test.ts index a9777c7f734..8ed9c84ccf3 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/processors/process-feature-announcement.test.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/processors/process-feature-announcement.test.ts @@ -1,10 +1,10 @@ -import type { INotification } from '..'; -import { TRIGGER_TYPES } from '../constants/notification-schema'; -import { createMockFeatureAnnouncementRaw } from '../mocks/mock-feature-announcements'; +import { TRIGGER_TYPES } from '../constants/notification-schema.js'; +import type { INotification } from '../index.js'; +import { createMockFeatureAnnouncementRaw } from '../mocks/mock-feature-announcements.js'; import { isFeatureAnnouncementRead, processFeatureAnnouncement, -} from './process-feature-announcement'; +} from './process-feature-announcement.js'; describe('process-feature-announcement - isFeatureAnnouncementRead()', () => { const MOCK_NOTIFICATION_ID = 'MOCK_NOTIFICATION_ID'; diff --git a/packages/notification-services-controller/src/NotificationServicesController/processors/process-feature-announcement.ts b/packages/notification-services-controller/src/NotificationServicesController/processors/process-feature-announcement.ts index 7033e0451f6..68fb7892733 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/processors/process-feature-announcement.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/processors/process-feature-announcement.ts @@ -1,6 +1,6 @@ -import type { FeatureAnnouncementRawNotification } from '../types/feature-announcement/feature-announcement'; -import type { INotification } from '../types/notification/notification'; -import { shouldAutoExpire } from '../utils/should-auto-expire'; +import type { FeatureAnnouncementRawNotification } from '../types/feature-announcement/feature-announcement.js'; +import type { INotification } from '../types/notification/notification.js'; +import { shouldAutoExpire } from '../utils/should-auto-expire.js'; /** * Checks if a feature announcement should be read. diff --git a/packages/notification-services-controller/src/NotificationServicesController/processors/process-notifications.test.ts b/packages/notification-services-controller/src/NotificationServicesController/processors/process-notifications.test.ts index 190e0f9f715..62b29605e3b 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/processors/process-notifications.test.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/processors/process-notifications.test.ts @@ -1,14 +1,14 @@ -import type { TRIGGER_TYPES } from '../constants/notification-schema'; -import { createMockFeatureAnnouncementRaw } from '../mocks/mock-feature-announcements'; +import type { TRIGGER_TYPES } from '../constants/notification-schema.js'; +import { createMockFeatureAnnouncementRaw } from '../mocks/mock-feature-announcements.js'; import { createMockNotificationEthSent, createMockPlatformNotification, -} from '../mocks/mock-raw-notifications'; -import { createMockSnapNotification } from '../mocks/mock-snap-notification'; +} from '../mocks/mock-raw-notifications.js'; +import { createMockSnapNotification } from '../mocks/mock-snap-notification.js'; import { processNotification, safeProcessNotification, -} from './process-notifications'; +} from './process-notifications.js'; describe('process-notifications - processNotification()', () => { // More thorough tests are found in the specific process diff --git a/packages/notification-services-controller/src/NotificationServicesController/processors/process-notifications.ts b/packages/notification-services-controller/src/NotificationServicesController/processors/process-notifications.ts index 6e2bcd66a5f..744cdbab0e5 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/processors/process-notifications.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/processors/process-notifications.ts @@ -1,20 +1,20 @@ import { TRIGGER_TYPES, NOTIFICATION_API_TRIGGER_TYPES_SET, -} from '../constants/notification-schema'; -import type { FeatureAnnouncementRawNotification } from '../types/feature-announcement/feature-announcement'; -import type { NormalisedAPINotification } from '../types/notification-api/notification-api'; +} from '../constants/notification-schema.js'; +import type { FeatureAnnouncementRawNotification } from '../types/feature-announcement/feature-announcement.js'; +import type { NormalisedAPINotification } from '../types/notification-api/notification-api.js'; import type { INotification, RawNotificationUnion, -} from '../types/notification/notification'; -import type { RawSnapNotification } from '../types/snaps'; -import { processAPINotifications } from './process-api-notifications'; +} from '../types/notification/notification.js'; +import type { RawSnapNotification } from '../types/snaps/index.js'; +import { processAPINotifications } from './process-api-notifications.js'; import { isFeatureAnnouncementRead, processFeatureAnnouncement, -} from './process-feature-announcement'; -import { processSnapNotification } from './process-snap-notifications'; +} from './process-feature-announcement.js'; +import { processSnapNotification } from './process-snap-notifications.js'; const isOnChainNotification = ( notification: RawNotificationUnion, diff --git a/packages/notification-services-controller/src/NotificationServicesController/processors/process-snap-notifications.test.ts b/packages/notification-services-controller/src/NotificationServicesController/processors/process-snap-notifications.test.ts index 2c486691098..bbfa0b08143 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/processors/process-snap-notifications.test.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/processors/process-snap-notifications.test.ts @@ -1,7 +1,7 @@ -import type { INotification } from '..'; -import { TRIGGER_TYPES } from '../constants'; -import { createMockSnapNotification } from '../mocks'; -import { processSnapNotification } from './process-snap-notifications'; +import { TRIGGER_TYPES } from '../constants/index.js'; +import type { INotification } from '../index.js'; +import { createMockSnapNotification } from '../mocks/index.js'; +import { processSnapNotification } from './process-snap-notifications.js'; describe('process-snap-notifications - processSnapNotification()', () => { it('processes a Raw Snap Notification to a shared Notification Type', () => { diff --git a/packages/notification-services-controller/src/NotificationServicesController/processors/process-snap-notifications.ts b/packages/notification-services-controller/src/NotificationServicesController/processors/process-snap-notifications.ts index 17227edaa67..8088499524a 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/processors/process-snap-notifications.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/processors/process-snap-notifications.ts @@ -1,7 +1,7 @@ import { v4 as uuid } from 'uuid'; -import type { INotification } from '../types'; -import type { RawSnapNotification } from '../types/snaps'; +import type { INotification } from '../types/notification/index.js'; +import type { RawSnapNotification } from '../types/snaps/index.js'; /** * Processes a snap notification into a normalized shape. diff --git a/packages/notification-services-controller/src/NotificationServicesController/services/api-notifications.test.ts b/packages/notification-services-controller/src/NotificationServicesController/services/api-notifications.test.ts index 0fb4c9d5660..c2253737853 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/services/api-notifications.test.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/services/api-notifications.test.ts @@ -2,12 +2,12 @@ import { mockGetOnChainNotificationsConfig, mockGetAPINotifications, mockMarkNotificationsAsRead, -} from '../__fixtures__/mockServices'; +} from '../__fixtures__/mockServices.js'; import { createMockNotificationERC20Sent, createMockPlatformNotification, -} from '../mocks'; -import * as OnChainNotifications from './api-notifications'; +} from '../mocks/index.js'; +import * as OnChainNotifications from './api-notifications.js'; const MOCK_BEARER_TOKEN = 'MOCK_BEARER_TOKEN'; const MOCK_ADDRESSES = ['0x123', '0x456', '0x789']; diff --git a/packages/notification-services-controller/src/NotificationServicesController/services/api-notifications.ts b/packages/notification-services-controller/src/NotificationServicesController/services/api-notifications.ts index f4cedf54353..3fcbc95a0d5 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/services/api-notifications.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/services/api-notifications.ts @@ -1,13 +1,13 @@ import log from 'loglevel'; -import { toRawAPINotification } from '../../shared/to-raw-notification'; +import { toRawAPINotification } from '../../shared/to-raw-notification.js'; import type { NormalisedAPINotification, Schema, UnprocessedRawNotification, -} from '../types/notification-api'; -import { makeApiCall } from '../utils/utils'; -import { notificationsConfigCache } from './notification-config-cache'; +} from '../types/notification-api/index.js'; +import { makeApiCall } from '../utils/utils.js'; +import { notificationsConfigCache } from './notification-config-cache.js'; export type ENV = 'prd' | 'uat' | 'dev'; diff --git a/packages/notification-services-controller/src/NotificationServicesController/services/feature-announcements.test.ts b/packages/notification-services-controller/src/NotificationServicesController/services/feature-announcements.test.ts index 27c9dc4c3ea..fa7dec4f676 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/services/feature-announcements.test.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/services/feature-announcements.test.ts @@ -1,12 +1,14 @@ -import type { INotification } from '..'; -import { mockFetchFeatureAnnouncementNotifications } from '../__fixtures__/mockServices'; -import { TRIGGER_TYPES } from '../constants/notification-schema'; -import { createMockFeatureAnnouncementAPIResult } from '../mocks/mock-feature-announcements'; +import { jest } from '@jest/globals'; + +import { mockFetchFeatureAnnouncementNotifications } from '../__fixtures__/mockServices.js'; +import { TRIGGER_TYPES } from '../constants/notification-schema.js'; +import type { INotification } from '../index.js'; +import { createMockFeatureAnnouncementAPIResult } from '../mocks/mock-feature-announcements.js'; import { ContentfulResult, getFeatureAnnouncementNotifications, getFeatureAnnouncementUrl, -} from './feature-announcements'; +} from './feature-announcements.js'; // Mocked type for testing, allows overwriting TS to test erroneous values // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/notification-services-controller/src/NotificationServicesController/services/feature-announcements.ts b/packages/notification-services-controller/src/NotificationServicesController/services/feature-announcements.ts index bd84e3ebe41..caddc8e8001 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/services/feature-announcements.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/services/feature-announcements.ts @@ -1,21 +1,21 @@ import { documentToHtmlString } from '@contentful/rich-text-html-renderer'; import type { Entry, Asset, EntryCollection } from 'contentful'; -import { TRIGGER_TYPES } from '../constants/notification-schema'; -import { processFeatureAnnouncement } from '../processors/process-feature-announcement'; -import type { FeatureAnnouncementRawNotification } from '../types/feature-announcement/feature-announcement'; +import { TRIGGER_TYPES } from '../constants/notification-schema.js'; +import { processFeatureAnnouncement } from '../processors/process-feature-announcement.js'; +import type { FeatureAnnouncementRawNotification } from '../types/feature-announcement/feature-announcement.js'; import type { ImageFields, TypeFeatureAnnouncement, -} from '../types/feature-announcement/type-feature-announcement'; +} from '../types/feature-announcement/type-feature-announcement.js'; import type { TypeExternalLinkFields, TypePortfolioLinkFields, TypeExtensionLinkFields, TypeMobileLinkFields, -} from '../types/feature-announcement/type-links'; -import type { INotification } from '../types/notification/notification'; -import { isVersionInBounds } from '../utils/isVersionInBounds'; +} from '../types/feature-announcement/type-links.js'; +import type { INotification } from '../types/notification/notification.js'; +import { isVersionInBounds } from '../utils/isVersionInBounds.js'; // Feature announcements older than this (by sys.updatedAt) are excluded from the feed. const FEATURE_ANNOUNCEMENT_MAX_AGE_MONTHS = 3; diff --git a/packages/notification-services-controller/src/NotificationServicesController/services/notification-config-cache.test.ts b/packages/notification-services-controller/src/NotificationServicesController/services/notification-config-cache.test.ts index 0cc3f590ba2..a1f977eb7f2 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/services/notification-config-cache.test.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/services/notification-config-cache.test.ts @@ -1,7 +1,9 @@ +import { jest } from '@jest/globals'; + import { OnChainNotificationsCache, NotificationConfigCacheTTL, -} from './notification-config-cache'; +} from './notification-config-cache.js'; describe('OnChainNotificationsCache', () => { // Create a fresh instance for each test to avoid interference diff --git a/packages/notification-services-controller/src/NotificationServicesController/services/perp-notifications.test.ts b/packages/notification-services-controller/src/NotificationServicesController/services/perp-notifications.test.ts index 15202f43704..81357efc155 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/services/perp-notifications.test.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/services/perp-notifications.test.ts @@ -1,6 +1,8 @@ -import { mockCreatePerpNotification } from '../__fixtures__/mockServices'; -import type { OrderInput } from '../types/perps'; -import { createPerpOrderNotification } from './perp-notifications'; +import { jest } from '@jest/globals'; + +import { mockCreatePerpNotification } from '../__fixtures__/mockServices.js'; +import type { OrderInput } from '../types/perps/index.js'; +import { createPerpOrderNotification } from './perp-notifications.js'; const mockOrderInput = (): OrderInput => ({ user_id: '0x111', // User Address diff --git a/packages/notification-services-controller/src/NotificationServicesController/services/perp-notifications.ts b/packages/notification-services-controller/src/NotificationServicesController/services/perp-notifications.ts index 8ada9b65fcf..a35808b0721 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/services/perp-notifications.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/services/perp-notifications.ts @@ -3,7 +3,7 @@ import { successfulFetch, } from '@metamask/controller-utils'; -import type { OrderInput } from '../types'; +import type { OrderInput } from '../types/perps/index.js'; export const PERPS_API = 'https://perps.api.cx.metamask.io'; export const PERPS_API_CREATE_ORDERS = `${PERPS_API}/api/v1/orders`; diff --git a/packages/notification-services-controller/src/NotificationServicesController/types/feature-announcement/feature-announcement.ts b/packages/notification-services-controller/src/NotificationServicesController/types/feature-announcement/feature-announcement.ts index a1d6acb019a..fb125814f69 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/types/feature-announcement/feature-announcement.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/types/feature-announcement/feature-announcement.ts @@ -1,5 +1,5 @@ -import type { TRIGGER_TYPES } from '../../constants/notification-schema'; -import type { TypeFeatureAnnouncement } from './type-feature-announcement'; +import type { TRIGGER_TYPES } from '../../constants/notification-schema.js'; +import type { TypeFeatureAnnouncement } from './type-feature-announcement.js'; export type FeatureAnnouncementRawNotificationData = Omit< TypeFeatureAnnouncement['fields'], diff --git a/packages/notification-services-controller/src/NotificationServicesController/types/feature-announcement/index.ts b/packages/notification-services-controller/src/NotificationServicesController/types/feature-announcement/index.ts index a726f8d07fc..4f0811d8fcf 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/types/feature-announcement/index.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/types/feature-announcement/index.ts @@ -1,3 +1,3 @@ -export type * from './feature-announcement'; -export type * from './type-links'; -export type * from './type-feature-announcement'; +export type * from './feature-announcement.js'; +export type * from './type-links.js'; +export type * from './type-feature-announcement.js'; diff --git a/packages/notification-services-controller/src/NotificationServicesController/types/feature-announcement/type-feature-announcement.ts b/packages/notification-services-controller/src/NotificationServicesController/types/feature-announcement/type-feature-announcement.ts index a354987061c..7a5a518f608 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/types/feature-announcement/type-feature-announcement.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/types/feature-announcement/type-feature-announcement.ts @@ -5,7 +5,7 @@ import type { TypeExtensionLinkFields, TypePortfolioLinkFields, TypeMobileLinkFields, -} from './type-links'; +} from './type-links.js'; export type ImageFields = { fields: { diff --git a/packages/notification-services-controller/src/NotificationServicesController/types/index.ts b/packages/notification-services-controller/src/NotificationServicesController/types/index.ts index d2e18d1c996..2b4f609d62b 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/types/index.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/types/index.ts @@ -1,5 +1,5 @@ -export type * from './feature-announcement'; -export type * from './notification-api'; -export type * from './notification'; -export type * from './snaps/snaps'; -export type * from './perps'; +export type * from './feature-announcement/index.js'; +export type * from './notification-api/index.js'; +export type * from './notification/index.js'; +export type * from './snaps/snaps.js'; +export type * from './perps/index.js'; diff --git a/packages/notification-services-controller/src/NotificationServicesController/types/notification-api/index.ts b/packages/notification-services-controller/src/NotificationServicesController/types/notification-api/index.ts index 1eea6328c95..8aa21282dd7 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/types/notification-api/index.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/types/notification-api/index.ts @@ -1,2 +1,2 @@ -export type * from './notification-api'; -export type * as Schema from './schema'; +export type * from './notification-api.js'; +export type * as Schema from './schema.js'; diff --git a/packages/notification-services-controller/src/NotificationServicesController/types/notification-api/notification-api.ts b/packages/notification-services-controller/src/NotificationServicesController/types/notification-api/notification-api.ts index 238bc3d5740..08fd046f4f3 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/types/notification-api/notification-api.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/types/notification-api/notification-api.ts @@ -1,8 +1,8 @@ -import { TRIGGER_TYPES } from '../../constants/notification-schema'; -import type { Compute } from '../type-utils'; +import { TRIGGER_TYPES } from '../../constants/notification-schema.js'; +import type { Compute } from '../type-utils.js'; // Types derived from external Notification API schema - naming follows API conventions /* eslint-disable @typescript-eslint/naming-convention */ -import type { components } from './schema'; +import type { components } from './schema.js'; export type Data_MetamaskSwapCompleted = components['schemas']['Data_MetamaskSwapCompleted']; diff --git a/packages/notification-services-controller/src/NotificationServicesController/types/notification/index.ts b/packages/notification-services-controller/src/NotificationServicesController/types/notification/index.ts index 43cd6dff02b..99762f3a1c6 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/types/notification/index.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/types/notification/index.ts @@ -1 +1 @@ -export type * from './notification'; +export type * from './notification.js'; diff --git a/packages/notification-services-controller/src/NotificationServicesController/types/notification/notification.ts b/packages/notification-services-controller/src/NotificationServicesController/types/notification/notification.ts index aa7102aa278..bb77dea4655 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/types/notification/notification.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/types/notification/notification.ts @@ -1,7 +1,7 @@ -import type { FeatureAnnouncementRawNotification } from '../feature-announcement/feature-announcement'; -import type { NormalisedAPINotification } from '../notification-api/notification-api'; -import type { RawSnapNotification } from '../snaps'; -import type { Compute } from '../type-utils'; +import type { FeatureAnnouncementRawNotification } from '../feature-announcement/feature-announcement.js'; +import type { NormalisedAPINotification } from '../notification-api/notification-api.js'; +import type { RawSnapNotification } from '../snaps/index.js'; +import type { Compute } from '../type-utils.js'; export type BaseNotification = { id: string; diff --git a/packages/notification-services-controller/src/NotificationServicesController/types/perps/index.ts b/packages/notification-services-controller/src/NotificationServicesController/types/perps/index.ts index f99d0e8bf5e..38f4e234987 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/types/perps/index.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/types/perps/index.ts @@ -1 +1 @@ -export type * from './perp-types'; +export type * from './perp-types.js'; diff --git a/packages/notification-services-controller/src/NotificationServicesController/types/perps/perp-types.ts b/packages/notification-services-controller/src/NotificationServicesController/types/perps/perp-types.ts index 66d0cbe1164..2396105a341 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/types/perps/perp-types.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/types/perps/perp-types.ts @@ -1,3 +1,3 @@ -import type { components } from './schema'; +import type { components } from './schema.js'; export type OrderInput = components['schemas']['OrderInput']; diff --git a/packages/notification-services-controller/src/NotificationServicesController/types/snaps/index.ts b/packages/notification-services-controller/src/NotificationServicesController/types/snaps/index.ts index 1e307f3779a..e5d6174dff5 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/types/snaps/index.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/types/snaps/index.ts @@ -1 +1 @@ -export type * from './snaps'; +export type * from './snaps.js'; diff --git a/packages/notification-services-controller/src/NotificationServicesController/types/snaps/snaps.ts b/packages/notification-services-controller/src/NotificationServicesController/types/snaps/snaps.ts index 3438a83f5cf..7681dbddf5d 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/types/snaps/snaps.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/types/snaps/snaps.ts @@ -1,4 +1,4 @@ -import type { TRIGGER_TYPES } from '../../constants'; +import type { TRIGGER_TYPES } from '../../constants/index.js'; export type ExpandedView = { title: string; diff --git a/packages/notification-services-controller/src/NotificationServicesController/utils/isVersionInBounds.test.ts b/packages/notification-services-controller/src/NotificationServicesController/utils/isVersionInBounds.test.ts index 8ce34444bf7..8bda023ecc1 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/utils/isVersionInBounds.test.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/utils/isVersionInBounds.test.ts @@ -1,4 +1,4 @@ -import { isVersionInBounds } from './isVersionInBounds'; +import { isVersionInBounds } from './isVersionInBounds.js'; describe('isVersionInBounds', () => { const version = '7.57.0'; diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/NotificationServicesPushController-method-action-types.ts b/packages/notification-services-controller/src/NotificationServicesPushController/NotificationServicesPushController-method-action-types.ts index 9e02cc6b730..156391eca31 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/NotificationServicesPushController-method-action-types.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/NotificationServicesPushController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { NotificationServicesPushController } from './NotificationServicesPushController'; +import type { NotificationServicesPushController } from './NotificationServicesPushController.js'; export type NotificationServicesPushControllerSubscribeToPushNotificationsAction = { diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/NotificationServicesPushController.test.ts b/packages/notification-services-controller/src/NotificationServicesPushController/NotificationServicesPushController.test.ts index bbe4a748273..3fa84347093 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/NotificationServicesPushController.test.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/NotificationServicesPushController.test.ts @@ -1,15 +1,16 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import type { AuthenticationController } from '@metamask/profile-sync-controller'; import log from 'loglevel'; -import { buildPushPlatformNotificationsControllerMessenger } from './__fixtures__/mockMessenger'; -import { NotificationServicesPushController } from './NotificationServicesPushController'; +import { buildPushPlatformNotificationsControllerMessenger } from './__fixtures__/mockMessenger.js'; +import { NotificationServicesPushController } from './NotificationServicesPushController.js'; import type { ControllerConfig, NotificationServicesPushControllerMessenger, -} from './NotificationServicesPushController'; -import * as services from './services/services'; -import type { PushNotificationEnv } from './types'; +} from './NotificationServicesPushController.js'; +import * as services from './services/services.js'; +import type { PushNotificationEnv } from './types/index.js'; const MOCK_JWT = 'mockJwt'; const MOCK_FCM_TOKEN = 'mockFcmToken'; diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/NotificationServicesPushController.ts b/packages/notification-services-controller/src/NotificationServicesPushController/NotificationServicesPushController.ts index 44842609fa2..ca73c554d01 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/NotificationServicesPushController.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/NotificationServicesPushController.ts @@ -8,18 +8,18 @@ import type { Messenger } from '@metamask/messenger'; import type { AuthenticationController } from '@metamask/profile-sync-controller'; import log from 'loglevel'; -import type { Types } from '../NotificationServicesController'; -import type { NotificationServicesPushControllerMethodActions } from './NotificationServicesPushController-method-action-types'; -import type { ENV } from './services/endpoints'; -import type { RegToken } from './services/services'; +import type { Types } from '../NotificationServicesController/index.js'; +import type { NotificationServicesPushControllerMethodActions } from './NotificationServicesPushController-method-action-types.js'; +import type { ENV } from './services/endpoints.js'; +import type { RegToken } from './services/services.js'; import { activatePushNotifications, deleteLinksAPI, deactivatePushNotifications, updateLinksAPI, -} from './services/services'; -import type { PushNotificationEnv } from './types'; -import type { PushService } from './types/push-service-interface'; +} from './services/services.js'; +import type { PushNotificationEnv } from './types/index.js'; +import type { PushService } from './types/push-service-interface.js'; const controllerName = 'NotificationServicesPushController'; diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/__fixtures__/mockServices.ts b/packages/notification-services-controller/src/NotificationServicesPushController/__fixtures__/mockServices.ts index 36037340276..2e448161946 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/__fixtures__/mockServices.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/__fixtures__/mockServices.ts @@ -3,7 +3,7 @@ import nock from 'nock'; import { getMockDeletePushNotificationLinksResponse, getMockUpdatePushNotificationLinksResponse, -} from '../mocks/mockResponse'; +} from '../mocks/mockResponse.js'; type MockReply = { status: nock.StatusCode; diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/index.ts b/packages/notification-services-controller/src/NotificationServicesPushController/index.ts index 63f13a47367..582398c2c59 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/index.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/index.ts @@ -1,13 +1,13 @@ -import { NotificationServicesPushController } from './NotificationServicesPushController'; +import { NotificationServicesPushController } from './NotificationServicesPushController.js'; export { NotificationServicesPushController as Controller }; export default NotificationServicesPushController; -export * from './NotificationServicesPushController'; -export type * as Types from './types'; -export type * from './types'; -export * as Utils from './utils'; -export * from './utils'; -export * as Mocks from './mocks'; +export * from './NotificationServicesPushController.js'; +export type * as Types from './types/index.js'; +export type * from './types/index.js'; +export type * as Utils from './utils/index.js'; +export type * from './utils/index.js'; +export type * as Mocks from './mocks/index.js'; export type { NotificationServicesPushControllerSubscribeToPushNotificationsAction, @@ -17,4 +17,4 @@ export type { NotificationServicesPushControllerUpdateTriggerPushNotificationsAction, NotificationServicesPushControllerDeletePushNotificationLinksAction, NotificationServicesPushControllerMethodActions, -} from './NotificationServicesPushController-method-action-types'; +} from './NotificationServicesPushController-method-action-types.js'; diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/mocks/index.ts b/packages/notification-services-controller/src/NotificationServicesPushController/mocks/index.ts index a5eb2c4a3ee..090815e2482 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/mocks/index.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/mocks/index.ts @@ -1 +1 @@ -export * from './mockResponse'; +export * from './mockResponse.js'; diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/mocks/mockResponse.ts b/packages/notification-services-controller/src/NotificationServicesPushController/mocks/mockResponse.ts index f180c48522a..6f8f2011dbd 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/mocks/mockResponse.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/mocks/mockResponse.ts @@ -1,4 +1,4 @@ -import { REGISTRATION_TOKENS_ENDPOINT } from '../services/endpoints'; +import { REGISTRATION_TOKENS_ENDPOINT } from '../services/endpoints.js'; type MockResponse = { url: string | RegExp; diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/services/services.test.ts b/packages/notification-services-controller/src/NotificationServicesPushController/services/services.test.ts index f45494d3121..ac950331a31 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/services/services.test.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/services/services.test.ts @@ -1,17 +1,18 @@ +import { jest } from '@jest/globals'; import log from 'loglevel'; import { mockEndpointDeletePushNotificationLinks, mockEndpointUpdatePushNotificationLinks, -} from '../__fixtures__/mockServices'; -import type { PushNotificationEnv } from '../types/firebase'; +} from '../__fixtures__/mockServices.js'; +import type { PushNotificationEnv } from '../types/firebase.js'; import { activatePushNotifications, deactivatePushNotifications, deleteLinksAPI, updateLinksAPI, -} from './services'; -import type { RegToken } from './services'; +} from './services.js'; +import type { RegToken } from './services.js'; // Testing util to clean up verbose logs when testing errors const mockErrorLog = (): jest.SpyInstance => diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/services/services.ts b/packages/notification-services-controller/src/NotificationServicesPushController/services/services.ts index 95067488ead..a6eea864e63 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/services/services.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/services/services.ts @@ -1,10 +1,10 @@ -import type { PushNotificationEnv } from '../types'; +import type { PushNotificationEnv } from '../types/index.js'; import type { CreateRegToken, DeleteRegToken, -} from '../types/push-service-interface'; -import type { ENV } from './endpoints'; -import * as endpoints from './endpoints'; +} from '../types/push-service-interface.js'; +import type { ENV } from './endpoints.js'; +import * as endpoints from './endpoints.js'; export type RegToken = { token: string; diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/types/index.ts b/packages/notification-services-controller/src/NotificationServicesPushController/types/index.ts index 693b8999cbc..d47ad66d98c 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/types/index.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/types/index.ts @@ -1,2 +1,2 @@ -export type * from './firebase'; -export type * from './push-service-interface'; +export type * from './firebase.js'; +export type * from './push-service-interface.js'; diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/types/push-service-interface.ts b/packages/notification-services-controller/src/NotificationServicesPushController/types/push-service-interface.ts index 1dc37620c80..cc1d669ccd8 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/types/push-service-interface.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/types/push-service-interface.ts @@ -1,4 +1,4 @@ -import type { PushNotificationEnv } from '.'; +import type { PushNotificationEnv } from './index.js'; type Unsubscribe = () => void; diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/utils/get-notification-data.test.ts b/packages/notification-services-controller/src/NotificationServicesPushController/utils/get-notification-data.test.ts index 4017150927e..c6659584bfc 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/utils/get-notification-data.test.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/utils/get-notification-data.test.ts @@ -2,7 +2,7 @@ import { formatAmount, getAmount, getLeadingZeroCount, -} from './get-notification-data'; +} from './get-notification-data.js'; describe('getNotificationData - formatAmount() tests', () => { it('should format large numbers', () => { diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/utils/get-notification-message.test.ts b/packages/notification-services-controller/src/NotificationServicesPushController/utils/get-notification-message.test.ts index 15c79478381..fcefa9ca37d 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/utils/get-notification-message.test.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/utils/get-notification-message.test.ts @@ -1,4 +1,4 @@ -import { Processors } from '../../NotificationServicesController'; +import { Processors } from '../../NotificationServicesController/index.js'; import { createMockNotificationERC1155Received, createMockNotificationERC1155Sent, @@ -15,9 +15,9 @@ import { createMockNotificationMetaMaskSwapsCompleted, createMockNotificationRocketPoolStakeCompleted, createMockNotificationRocketPoolUnStakeCompleted, -} from '../../NotificationServicesController/mocks'; -import type { TranslationKeys } from './get-notification-message'; -import { createOnChainPushNotificationMessage } from './get-notification-message'; +} from '../../NotificationServicesController/mocks/index.js'; +import type { TranslationKeys } from './get-notification-message.js'; +import { createOnChainPushNotificationMessage } from './get-notification-message.js'; const mockTranslations: TranslationKeys = { pushPlatformNotificationsFundsSentTitle: () => 'Funds sent', diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/utils/get-notification-message.ts b/packages/notification-services-controller/src/NotificationServicesPushController/utils/get-notification-message.ts index 69a0a4641ba..664a0599e87 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/utils/get-notification-message.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/utils/get-notification-message.ts @@ -1,6 +1,6 @@ -import type { Types } from '../../NotificationServicesController'; -import type { Constants } from '../../NotificationServicesController'; -import { getAmount, formatAmount } from './get-notification-data'; +import type { Types } from '../../NotificationServicesController/index.js'; +import type { Constants } from '../../NotificationServicesController/index.js'; +import { getAmount, formatAmount } from './get-notification-data.js'; export type TranslationKeys = { pushPlatformNotificationsFundsSentTitle: () => string; @@ -287,20 +287,16 @@ export function createOnChainPushNotificationMessage( let description: string | null = null; try { description = - // eslint-disable-next-line @typescript-eslint/no-explicit-any - notificationMessage?.getDescription?.(notification as any) ?? - // eslint-disable-next-line @typescript-eslint/no-explicit-any - notificationMessage.defaultDescription?.(notification as any) ?? + notificationMessage?.getDescription?.(notification as never) ?? + notificationMessage.defaultDescription?.(notification as never) ?? null; } catch { description = - // eslint-disable-next-line @typescript-eslint/no-explicit-any - notificationMessage.defaultDescription?.(notification as any) ?? null; + notificationMessage.defaultDescription?.(notification as never) ?? null; } return { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - title: notificationMessage?.title?.(notification as any) ?? '', // Ensure title is always a string + title: notificationMessage?.title?.(notification as never) ?? '', // Ensure title is always a string description: description ?? '', // Fallback to empty string if null }; } diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/utils/index.ts b/packages/notification-services-controller/src/NotificationServicesPushController/utils/index.ts index be95219f07e..9ad21d1e303 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/utils/index.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/utils/index.ts @@ -1,2 +1,2 @@ -export * from './get-notification-data'; -export * from './get-notification-message'; +export * from './get-notification-data.js'; +export * from './get-notification-message.js'; diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/web/index.ts b/packages/notification-services-controller/src/NotificationServicesPushController/web/index.ts index 5da7ef3239a..041670781d9 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/web/index.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/web/index.ts @@ -2,4 +2,4 @@ export { createRegToken, deleteRegToken, createSubscribeToPushNotifications, -} from './push-utils'; +} from './push-utils.js'; diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/web/push-utils.test.ts b/packages/notification-services-controller/src/NotificationServicesPushController/web/push-utils.test.ts index 6a09cbccc09..5c07d5ac776 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/web/push-utils.test.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/web/push-utils.test.ts @@ -1,16 +1,17 @@ +import { jest } from '@jest/globals'; import * as FirebaseAppModule from 'firebase/app'; import * as FirebaseMessagingModule from 'firebase/messaging'; import * as FirebaseMessagingSWModule from 'firebase/messaging/sw'; -import { processNotification } from '../../NotificationServicesController'; -import { createMockNotificationEthSent } from '../../NotificationServicesController/mocks/mock-raw-notifications'; -import { buildPushPlatformNotificationsControllerMessenger } from '../__fixtures__/mockMessenger'; +import { processNotification } from '../../NotificationServicesController/index.js'; +import { createMockNotificationEthSent } from '../../NotificationServicesController/mocks/mock-raw-notifications.js'; +import { buildPushPlatformNotificationsControllerMessenger } from '../__fixtures__/mockMessenger.js'; import { createRegToken, deleteRegToken, createSubscribeToPushNotifications, -} from './push-utils'; -import * as PushWebModule from './push-utils'; +} from './push-utils.js'; +import * as PushWebModule from './push-utils.js'; jest.mock('firebase/app'); jest.mock('firebase/messaging'); diff --git a/packages/notification-services-controller/src/NotificationServicesPushController/web/push-utils.ts b/packages/notification-services-controller/src/NotificationServicesPushController/web/push-utils.ts index f3c0257df68..4ad515c1eaa 100644 --- a/packages/notification-services-controller/src/NotificationServicesPushController/web/push-utils.ts +++ b/packages/notification-services-controller/src/NotificationServicesPushController/web/push-utils.ts @@ -12,14 +12,14 @@ import { import type { Messaging, MessagePayload } from 'firebase/messaging/sw'; import log from 'loglevel'; -import type { Types } from '../../NotificationServicesController'; +import type { Types } from '../../NotificationServicesController/index.js'; import { isOnChainRawNotification, safeProcessNotification, -} from '../../NotificationServicesController'; -import { toRawAPINotification } from '../../shared/to-raw-notification'; -import type { NotificationServicesPushControllerMessenger } from '../NotificationServicesPushController'; -import type { PushNotificationEnv } from '../types/firebase'; +} from '../../NotificationServicesController/index.js'; +import { toRawAPINotification } from '../../shared/to-raw-notification.js'; +import type { NotificationServicesPushControllerMessenger } from '../NotificationServicesPushController.js'; +import type { PushNotificationEnv } from '../types/firebase.js'; declare const self: ServiceWorkerGlobalScope; diff --git a/packages/notification-services-controller/src/index.ts b/packages/notification-services-controller/src/index.ts index bf95c249af8..8786acee486 100644 --- a/packages/notification-services-controller/src/index.ts +++ b/packages/notification-services-controller/src/index.ts @@ -1,8 +1,8 @@ -export * as NotificationServicesController from './NotificationServicesController'; -export * as NotificationServicesPushController from './NotificationServicesPushController'; +export * as NotificationServicesController from './NotificationServicesController/index.js'; +export * as NotificationServicesPushController from './NotificationServicesPushController/index.js'; export { DEFAULT_AGENTIC_CLI_PREFERENCES, DEFAULT_PERPS_PREFERENCES, DEFAULT_PRICE_ALERT_PREFERENCES, DEFAULT_SOCIAL_AI_PREFERENCES, -} from './NotificationServicesController'; +} from './NotificationServicesController/index.js'; diff --git a/packages/notification-services-controller/src/shared/index.ts b/packages/notification-services-controller/src/shared/index.ts index 342d8287ed9..76c4ceac70a 100644 --- a/packages/notification-services-controller/src/shared/index.ts +++ b/packages/notification-services-controller/src/shared/index.ts @@ -1,3 +1,3 @@ -export * from './is-onchain-notification'; -export * from './notification-api-type-guards'; -export * from './to-raw-notification'; +export * from './is-onchain-notification.js'; +export * from './notification-api-type-guards.js'; +export * from './to-raw-notification.js'; diff --git a/packages/notification-services-controller/src/shared/is-onchain-notification.test.ts b/packages/notification-services-controller/src/shared/is-onchain-notification.test.ts index c44e15a6b13..3787bb46493 100644 --- a/packages/notification-services-controller/src/shared/is-onchain-notification.test.ts +++ b/packages/notification-services-controller/src/shared/is-onchain-notification.test.ts @@ -1,9 +1,9 @@ -import { isOnChainRawNotification } from '.'; import { createMockFeatureAnnouncementRaw, createMockPlatformNotification, createMockNotificationEthSent, -} from '../NotificationServicesController/mocks'; +} from '../NotificationServicesController/mocks/index.js'; +import { isOnChainRawNotification } from './index.js'; describe('is-onchain-notification - isOnChainRawNotification()', () => { it('returns true if OnChainRawNotification', () => { diff --git a/packages/notification-services-controller/src/shared/is-onchain-notification.ts b/packages/notification-services-controller/src/shared/is-onchain-notification.ts index a2518828850..31239e0bb91 100644 --- a/packages/notification-services-controller/src/shared/is-onchain-notification.ts +++ b/packages/notification-services-controller/src/shared/is-onchain-notification.ts @@ -1,8 +1,8 @@ import type { UnprocessedRawNotification, OnChainNotification, -} from '../NotificationServicesController/types/notification-api'; -import { isOnChainNotification } from './notification-api-type-guards'; +} from '../NotificationServicesController/types/notification-api/index.js'; +import { isOnChainNotification } from './notification-api-type-guards.js'; /** * Checks if the given value is an on-chain notification using the v4 `notification_type` discriminator. diff --git a/packages/notification-services-controller/src/shared/notification-api-type-guards.ts b/packages/notification-services-controller/src/shared/notification-api-type-guards.ts index f587ef8443b..29a43f6854d 100644 --- a/packages/notification-services-controller/src/shared/notification-api-type-guards.ts +++ b/packages/notification-services-controller/src/shared/notification-api-type-guards.ts @@ -2,7 +2,7 @@ import type { UnprocessedRawNotification, OnChainNotification, PlatformNotification, -} from '../NotificationServicesController/types/notification-api'; +} from '../NotificationServicesController/types/notification-api/index.js'; /** * Narrows a v4 API notification to an on-chain notification. diff --git a/packages/notification-services-controller/src/shared/to-raw-notification.ts b/packages/notification-services-controller/src/shared/to-raw-notification.ts index d19418911da..ef9d159e3f2 100644 --- a/packages/notification-services-controller/src/shared/to-raw-notification.ts +++ b/packages/notification-services-controller/src/shared/to-raw-notification.ts @@ -1,12 +1,11 @@ +import { TRIGGER_TYPES } from '../NotificationServicesController/constants/notification-schema.js'; import type { UnprocessedRawNotification, NormalisedAPINotification, OnChainRawNotification, PlatformRawNotification, -} from 'src/NotificationServicesController/types/notification-api'; - -import { TRIGGER_TYPES } from '../NotificationServicesController/constants/notification-schema'; -import { isOnChainNotification } from './notification-api-type-guards'; +} from '../NotificationServicesController/types/notification-api/index.js'; +import { isOnChainNotification } from './notification-api-type-guards.js'; /** * A true "raw notification" does not have some fields that exist on this type. E.g. the `type` field. From 06c6c0947254beede979acfec4f69f3397f873a7 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:29 +0200 Subject: [PATCH 051/115] ESLint fix and `jest` global import for eip-5792-middleware --- packages/eip-5792-middleware/package.json | 2 +- .../src/hooks/getCallsStatus.test.ts | 7 ++-- .../src/hooks/getCallsStatus.ts | 14 +++---- .../src/hooks/getCapabilities.test.ts | 5 ++- .../src/hooks/getCapabilities.ts | 25 ++++++------ .../src/hooks/processSendCalls.test.ts | 7 ++-- .../src/hooks/processSendCalls.ts | 8 ++-- .../eip-5792-middleware/src/index.test.ts | 2 +- packages/eip-5792-middleware/src/index.ts | 18 ++++----- .../src/methods/wallet_getCallsStatus.test.ts | 5 ++- .../src/methods/wallet_getCallsStatus.ts | 6 +-- .../methods/wallet_getCapabilities.test.ts | 5 ++- .../src/methods/wallet_getCapabilities.ts | 6 +-- .../src/methods/wallet_sendCalls.test.ts | 5 ++- .../src/methods/wallet_sendCalls.ts | 6 +-- .../eip-5792-middleware/src/utils.test.ts | 39 +++++-------------- packages/eip-5792-middleware/src/utils.ts | 4 +- 17 files changed, 72 insertions(+), 92 deletions(-) diff --git a/packages/eip-5792-middleware/package.json b/packages/eip-5792-middleware/package.json index 4f3cc11a3e1..a52dcdcfb93 100644 --- a/packages/eip-5792-middleware/package.json +++ b/packages/eip-5792-middleware/package.json @@ -51,7 +51,7 @@ "@metamask/superstruct": "^3.1.0", "@metamask/transaction-controller": "^69.0.0", "@metamask/utils": "^11.11.0", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "uuid": "^8.3.2" }, "devDependencies": { diff --git a/packages/eip-5792-middleware/src/hooks/getCallsStatus.test.ts b/packages/eip-5792-middleware/src/hooks/getCallsStatus.test.ts index bad969e7917..38bcfb5f31b 100644 --- a/packages/eip-5792-middleware/src/hooks/getCallsStatus.test.ts +++ b/packages/eip-5792-middleware/src/hooks/getCallsStatus.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MessengerActions, MockAnyNamespace } from '@metamask/messenger'; import { TransactionStatus } from '@metamask/transaction-controller'; @@ -6,9 +7,9 @@ import type { TransactionControllerState, } from '@metamask/transaction-controller'; -import { GetCallsStatusCode } from '../constants'; -import type { EIP5792Messenger } from '../types'; -import { getCallsStatus } from './getCallsStatus'; +import { GetCallsStatusCode } from '../constants.js'; +import type { EIP5792Messenger } from '../types.js'; +import { getCallsStatus } from './getCallsStatus.js'; const CHAIN_ID_MOCK = '0x123'; const BATCH_ID_MOCK = '0xf3472db2a4134607a17213b7e9ca26e3'; diff --git a/packages/eip-5792-middleware/src/hooks/getCallsStatus.ts b/packages/eip-5792-middleware/src/hooks/getCallsStatus.ts index f3af9bb27eb..84ea45efad6 100644 --- a/packages/eip-5792-middleware/src/hooks/getCallsStatus.ts +++ b/packages/eip-5792-middleware/src/hooks/getCallsStatus.ts @@ -1,14 +1,10 @@ import { JsonRpcError } from '@metamask/rpc-errors'; -import type { - Log, - TransactionMeta, - TransactionReceipt, -} from '@metamask/transaction-controller'; +import type { Log, TransactionMeta } from '@metamask/transaction-controller'; import { TransactionStatus } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { EIP5792ErrorCode, GetCallsStatusCode, VERSION } from '../constants'; -import type { EIP5792Messenger, GetCallsStatusResult } from '../types'; +import { EIP5792ErrorCode, GetCallsStatusCode, VERSION } from '../constants.js'; +import type { EIP5792Messenger, GetCallsStatusResult } from '../types.js'; /** * Retrieves the status of a transaction batch by its ID. @@ -36,7 +32,7 @@ export function getCallsStatus( const transaction = transactions[0]; const { chainId, txReceipt: rawTxReceipt } = transaction; const status = getStatusCode(transaction); - const txReceipt = rawTxReceipt as Required | undefined; + const txReceipt = rawTxReceipt; const logs = (txReceipt?.logs ?? []) as Required[]; const receipts: GetCallsStatusResult['receipts'] = txReceipt && [ @@ -50,7 +46,7 @@ export function getCallsStatus( topics: log.topics as unknown as Hex[], })), status: txReceipt.status as '0x0' | '0x1', - transactionHash: txReceipt.transactionHash, + transactionHash: txReceipt.transactionHash as Hex, }, ]; diff --git a/packages/eip-5792-middleware/src/hooks/getCapabilities.test.ts b/packages/eip-5792-middleware/src/hooks/getCapabilities.test.ts index e85be86bbc6..115bcb16d0b 100644 --- a/packages/eip-5792-middleware/src/hooks/getCapabilities.test.ts +++ b/packages/eip-5792-middleware/src/hooks/getCapabilities.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { AccountsControllerGetStateAction, AccountsControllerState, @@ -12,8 +13,8 @@ import type { import type { TransactionController } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import type { EIP5792Messenger } from '../types'; -import { getCapabilities } from './getCapabilities'; +import type { EIP5792Messenger } from '../types.js'; +import { getCapabilities } from './getCapabilities.js'; const CHAIN_ID_MOCK = '0x123'; const FROM_MOCK = '0xabc123'; diff --git a/packages/eip-5792-middleware/src/hooks/getCapabilities.ts b/packages/eip-5792-middleware/src/hooks/getCapabilities.ts index 7fb74ac62ae..875e5ed7af1 100644 --- a/packages/eip-5792-middleware/src/hooks/getCapabilities.ts +++ b/packages/eip-5792-middleware/src/hooks/getCapabilities.ts @@ -1,13 +1,12 @@ import type { IsAtomicBatchSupportedResult, - IsAtomicBatchSupportedResultEntry, TransactionController, } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { KEYRING_TYPES_SUPPORTING_7702 } from '../constants'; -import type { EIP5792Messenger, GetCapabilitiesResult } from '../types'; -import { getAccountKeyringType } from '../utils'; +import { KEYRING_TYPES_SUPPORTING_7702 } from '../constants.js'; +import type { EIP5792Messenger, GetCapabilitiesResult } from '../types.js'; +import { getAccountKeyringType } from '../utils.js'; /** * Type definition for required controller hooks and utilities of {@link getCapabilities} @@ -79,11 +78,10 @@ export async function getCapabilities( ); return chainIdsNormalized.reduce((acc, chainId) => { - const chainBatchSupport = (batchSupport.find( - ({ chainId: batchChainId }) => batchChainId === chainId, - ) ?? {}) as IsAtomicBatchSupportedResultEntry & { - isRelaySupported: boolean; - }; + const chainBatchSupport = + batchSupport.find( + ({ chainId: batchChainId }) => batchChainId === chainId, + ) ?? ({} as (typeof batchSupport)[0]); const { delegationAddress, isSupported, upgradeContractAddress } = chainBatchSupport; @@ -169,11 +167,10 @@ async function getAlternateGasFeesCapability( })); return chainIds.reduce((acc, chainId) => { - const chainBatchSupport = (updatedBatchSupport.find( - ({ chainId: batchChainId }) => batchChainId === chainId, - ) ?? {}) as IsAtomicBatchSupportedResultEntry & { - relaySupportedForChain: boolean; - }; + const chainBatchSupport = + updatedBatchSupport.find( + ({ chainId: batchChainId }) => batchChainId === chainId, + ) ?? ({} as (typeof updatedBatchSupport)[0]); const { isSupported = false, relaySupportedForChain } = chainBatchSupport; diff --git a/packages/eip-5792-middleware/src/hooks/processSendCalls.test.ts b/packages/eip-5792-middleware/src/hooks/processSendCalls.test.ts index 6402b1fdade..f6f82972655 100644 --- a/packages/eip-5792-middleware/src/hooks/processSendCalls.test.ts +++ b/packages/eip-5792-middleware/src/hooks/processSendCalls.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { AccountsControllerGetSelectedAccountAction, AccountsControllerGetStateAction, @@ -16,13 +17,13 @@ import { providerErrors } from '@metamask/rpc-errors'; import type { TransactionController } from '@metamask/transaction-controller'; import type { Hex, JsonRpcRequest } from '@metamask/utils'; -import { SupportedCapabilities } from '../constants'; +import { SupportedCapabilities } from '../constants.js'; import type { SendCallsPayload, SendCallsParams, EIP5792Messenger, -} from '../types'; -import { processSendCalls } from './processSendCalls'; +} from '../types.js'; +import { processSendCalls } from './processSendCalls.js'; const CHAIN_ID_MOCK = '0x123'; const CHAIN_ID_2_MOCK = '0xabc'; diff --git a/packages/eip-5792-middleware/src/hooks/processSendCalls.ts b/packages/eip-5792-middleware/src/hooks/processSendCalls.ts index 9f97779612a..416ffcd5ba0 100644 --- a/packages/eip-5792-middleware/src/hooks/processSendCalls.ts +++ b/packages/eip-5792-middleware/src/hooks/processSendCalls.ts @@ -11,7 +11,7 @@ import type { import { TransactionEnvelopeType } from '@metamask/transaction-controller'; import type { Hex, JsonRpcRequest } from '@metamask/utils'; import { add0x, bytesToHex } from '@metamask/utils'; -import { groupBy } from 'lodash'; +import { groupBy } from 'lodash-es'; import { parse, v4 as uuid } from 'uuid'; import { @@ -21,14 +21,14 @@ import { MessageType, SupportedCapabilities, VERSION, -} from '../constants'; +} from '../constants.js'; import type { EIP5792Messenger, SendCallsPayload, SendCallsRequiredAssetsParam, SendCallsResult, -} from '../types'; -import { getAccountKeyringType } from '../utils'; +} from '../types.js'; +import { getAccountKeyringType } from '../utils.js'; /** * Type definition for required controller hooks and utilities of {@link processSendCalls} diff --git a/packages/eip-5792-middleware/src/index.test.ts b/packages/eip-5792-middleware/src/index.test.ts index 6b99a379ce6..b6e50d854ff 100644 --- a/packages/eip-5792-middleware/src/index.test.ts +++ b/packages/eip-5792-middleware/src/index.test.ts @@ -1,4 +1,4 @@ -import * as allExports from '.'; +import * as allExports from './index.js'; describe('@metamask/eip-5792-middleware', () => { it('has expected JavaScript exports', () => { diff --git a/packages/eip-5792-middleware/src/index.ts b/packages/eip-5792-middleware/src/index.ts index d8e09244a9c..bf283cbd37f 100644 --- a/packages/eip-5792-middleware/src/index.ts +++ b/packages/eip-5792-middleware/src/index.ts @@ -1,17 +1,17 @@ export type { ProcessSendCallsRequest, ProcessSendCallsHooks, -} from './hooks/processSendCalls'; -export { processSendCalls } from './hooks/processSendCalls'; -export { getCallsStatus } from './hooks/getCallsStatus'; +} from './hooks/processSendCalls.js'; +export { processSendCalls } from './hooks/processSendCalls.js'; +export { getCallsStatus } from './hooks/getCallsStatus.js'; export { getCapabilities, type GetCapabilitiesHooks, -} from './hooks/getCapabilities'; -export { walletSendCalls } from './methods/wallet_sendCalls'; -export { walletGetCallsStatus } from './methods/wallet_getCallsStatus'; -export { walletGetCapabilities } from './methods/wallet_getCapabilities'; -export type { EIP5792Messenger } from './types'; +} from './hooks/getCapabilities.js'; +export { walletSendCalls } from './methods/wallet_sendCalls.js'; +export { walletGetCallsStatus } from './methods/wallet_getCallsStatus.js'; +export { walletGetCapabilities } from './methods/wallet_getCapabilities.js'; +export type { EIP5792Messenger } from './types.js'; export type { GetCallsStatusHook, @@ -24,4 +24,4 @@ export type { SendCallsPayload as SendCalls, SendCallsParams, SendCallsResult, -} from './types'; +} from './types.js'; diff --git a/packages/eip-5792-middleware/src/methods/wallet_getCallsStatus.test.ts b/packages/eip-5792-middleware/src/methods/wallet_getCallsStatus.test.ts index 2dd2dd69fec..64327a64eb8 100644 --- a/packages/eip-5792-middleware/src/methods/wallet_getCallsStatus.test.ts +++ b/packages/eip-5792-middleware/src/methods/wallet_getCallsStatus.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { Hex, JsonRpcRequest, @@ -9,8 +10,8 @@ import type { GetCallsStatusHook, GetCallsStatusParams, GetCallsStatusResult, -} from '../types'; -import { walletGetCallsStatus } from './wallet_getCallsStatus'; +} from '../types.js'; +import { walletGetCallsStatus } from './wallet_getCallsStatus.js'; const ID_MOCK = '0x12345678'; diff --git a/packages/eip-5792-middleware/src/methods/wallet_getCallsStatus.ts b/packages/eip-5792-middleware/src/methods/wallet_getCallsStatus.ts index 3023ec9b44b..e3a3bf60a2a 100644 --- a/packages/eip-5792-middleware/src/methods/wallet_getCallsStatus.ts +++ b/packages/eip-5792-middleware/src/methods/wallet_getCallsStatus.ts @@ -1,9 +1,9 @@ import { rpcErrors } from '@metamask/rpc-errors'; import type { JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils'; -import { GetCallsStatusStruct } from '../types'; -import type { GetCallsStatusHook } from '../types'; -import { validateParams } from '../utils'; +import { GetCallsStatusStruct } from '../types.js'; +import type { GetCallsStatusHook } from '../types.js'; +import { validateParams } from '../utils.js'; /** * The RPC method handler middleware for `wallet_getCallStatus` diff --git a/packages/eip-5792-middleware/src/methods/wallet_getCapabilities.test.ts b/packages/eip-5792-middleware/src/methods/wallet_getCapabilities.test.ts index a53a058d073..cf592c03110 100644 --- a/packages/eip-5792-middleware/src/methods/wallet_getCapabilities.test.ts +++ b/packages/eip-5792-middleware/src/methods/wallet_getCapabilities.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils'; import { klona } from 'klona'; @@ -5,8 +6,8 @@ import type { GetCapabilitiesHook, GetCapabilitiesParams, GetCapabilitiesResult, -} from '../types'; -import { walletGetCapabilities } from './wallet_getCapabilities'; +} from '../types.js'; +import { walletGetCapabilities } from './wallet_getCapabilities.js'; type GetPermittedAccountsForOrigin = () => Promise; diff --git a/packages/eip-5792-middleware/src/methods/wallet_getCapabilities.ts b/packages/eip-5792-middleware/src/methods/wallet_getCapabilities.ts index de68a51e325..989da9965ff 100644 --- a/packages/eip-5792-middleware/src/methods/wallet_getCapabilities.ts +++ b/packages/eip-5792-middleware/src/methods/wallet_getCapabilities.ts @@ -1,9 +1,9 @@ import { rpcErrors } from '@metamask/rpc-errors'; import type { JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils'; -import { GetCapabilitiesStruct } from '../types'; -import type { GetCapabilitiesHook } from '../types'; -import { validateAndNormalizeKeyholder, validateParams } from '../utils'; +import { GetCapabilitiesStruct } from '../types.js'; +import type { GetCapabilitiesHook } from '../types.js'; +import { validateAndNormalizeKeyholder, validateParams } from '../utils.js'; /** * The RPC method handler middleware for `wallet_getCapabilities` diff --git a/packages/eip-5792-middleware/src/methods/wallet_sendCalls.test.ts b/packages/eip-5792-middleware/src/methods/wallet_sendCalls.test.ts index fd77076be8b..3aa2445b1c8 100644 --- a/packages/eip-5792-middleware/src/methods/wallet_sendCalls.test.ts +++ b/packages/eip-5792-middleware/src/methods/wallet_sendCalls.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils'; import { klona } from 'klona'; @@ -5,8 +6,8 @@ import type { ProcessSendCallsHook, SendCallsPayload, SendCallsParams, -} from '../types'; -import { walletSendCalls } from './wallet_sendCalls'; +} from '../types.js'; +import { walletSendCalls } from './wallet_sendCalls.js'; type GetPermittedAccountsForOrigin = () => Promise; diff --git a/packages/eip-5792-middleware/src/methods/wallet_sendCalls.ts b/packages/eip-5792-middleware/src/methods/wallet_sendCalls.ts index 9c3d391c485..e61401afe9d 100644 --- a/packages/eip-5792-middleware/src/methods/wallet_sendCalls.ts +++ b/packages/eip-5792-middleware/src/methods/wallet_sendCalls.ts @@ -1,9 +1,9 @@ import { rpcErrors } from '@metamask/rpc-errors'; import type { JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils'; -import { SendCallsStruct } from '../types'; -import type { ProcessSendCallsHook, SendCallsPayload } from '../types'; -import { validateAndNormalizeKeyholder, validateParams } from '../utils'; +import { SendCallsStruct } from '../types.js'; +import type { ProcessSendCallsHook, SendCallsPayload } from '../types.js'; +import { validateAndNormalizeKeyholder, validateParams } from '../utils.js'; /** * The RPC method handler middleware for `wallet_sendCalls` diff --git a/packages/eip-5792-middleware/src/utils.test.ts b/packages/eip-5792-middleware/src/utils.test.ts index f9fadc5fa59..b6e4113a041 100644 --- a/packages/eip-5792-middleware/src/utils.test.ts +++ b/packages/eip-5792-middleware/src/utils.test.ts @@ -1,21 +1,16 @@ +import { jest } from '@jest/globals'; import { KeyringTypes } from '@metamask/keyring-controller'; import { JsonRpcError, providerErrors } from '@metamask/rpc-errors'; -import type { StructError } from '@metamask/superstruct'; -import { any, validate } from '@metamask/superstruct'; +import { any, object, string } from '@metamask/superstruct'; import type { Hex } from '@metamask/utils'; -import { EIP5792ErrorCode } from './constants'; -import type { EIP5792Messenger } from './types'; +import { EIP5792ErrorCode } from './constants.js'; +import type { EIP5792Messenger } from './types.js'; import { getAccountKeyringType, validateAndNormalizeKeyholder, validateParams, -} from './utils'; - -jest.mock('@metamask/superstruct', () => ({ - ...jest.requireActual('@metamask/superstruct'), - validate: jest.fn(), -})); +} from './utils.js'; describe('getAccountKeyringType', () => { const mockMessenger = { @@ -361,33 +356,19 @@ describe('validateAndNormalizeKeyholder', () => { }); describe('validateParams', () => { - const validateMock = jest.mocked(validate); - const STRUCT_ERROR_MOCK = { - failures: () => [ - { - path: ['test1', 'test2'], - message: 'test message', - }, - { - path: ['test3'], - message: 'test message 2', - }, - ], - } as StructError; - it('does now throw if superstruct returns no error', () => { - validateMock.mockReturnValue([undefined, undefined]); expect(() => validateParams({}, any())).not.toThrow(); }); it('throws if superstruct returns error', () => { - validateMock.mockReturnValue([STRUCT_ERROR_MOCK, undefined]); + const struct = object({ test1: object({ test2: string() }), test3: string() }); - expect(() => validateParams({}, any())).toThrowErrorMatchingInlineSnapshot(` + expect(() => validateParams({ test1: { test2: 42 }, test3: 42 }, struct)) + .toThrowErrorMatchingInlineSnapshot(` "Invalid params - test1 > test2 - test message - test3 - test message 2" + test1 > test2 - Expected a string, but received: 42 + test3 - Expected a string, but received: 42" `); }); }); diff --git a/packages/eip-5792-middleware/src/utils.ts b/packages/eip-5792-middleware/src/utils.ts index c888ceafde9..f473eddebbe 100644 --- a/packages/eip-5792-middleware/src/utils.ts +++ b/packages/eip-5792-middleware/src/utils.ts @@ -4,8 +4,8 @@ import type { Struct, StructError } from '@metamask/superstruct'; import { validate } from '@metamask/superstruct'; import type { Hex } from '@metamask/utils'; -import { EIP5792ErrorCode } from './constants'; -import type { EIP5792Messenger } from './types'; +import { EIP5792ErrorCode } from './constants.js'; +import type { EIP5792Messenger } from './types.js'; /** * Retrieves the keyring type for a given account address. From 8914b8a1f3abc38b650e5a1c80f062f3d1a3dd5e Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:33 +0200 Subject: [PATCH 052/115] ESLint fix and `jest` global import for shield-controller --- packages/shield-controller/package.json | 2 +- .../ShieldController-method-action-types.ts | 2 +- .../src/ShieldController.test.ts | 18 +++++++++++------- .../shield-controller/src/ShieldController.ts | 10 +++++----- packages/shield-controller/src/backend.test.ts | 7 ++++--- packages/shield-controller/src/backend.ts | 6 +++--- packages/shield-controller/src/index.ts | 10 +++++----- packages/shield-controller/src/logger.ts | 2 +- .../src/polling-with-policy.test.ts | 9 +++++++-- .../shield-controller/tests/mocks/backend.ts | 1 + .../shield-controller/tests/mocks/messenger.ts | 4 ++-- packages/shield-controller/tests/utils.ts | 6 +++--- 12 files changed, 44 insertions(+), 33 deletions(-) diff --git a/packages/shield-controller/package.json b/packages/shield-controller/package.json index e0764663b96..8b0b9c8a340 100644 --- a/packages/shield-controller/package.json +++ b/packages/shield-controller/package.json @@ -64,7 +64,7 @@ "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "ts-jest": "^29.2.5", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/shield-controller/src/ShieldController-method-action-types.ts b/packages/shield-controller/src/ShieldController-method-action-types.ts index ca16c1baa92..423740dc44c 100644 --- a/packages/shield-controller/src/ShieldController-method-action-types.ts +++ b/packages/shield-controller/src/ShieldController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { ShieldController } from './ShieldController'; +import type { ShieldController } from './ShieldController.js'; /** * Start the ShieldController and subscribe to the transaction and signature controller state changes. diff --git a/packages/shield-controller/src/ShieldController.test.ts b/packages/shield-controller/src/ShieldController.test.ts index 4ae35f46b97..0797b4ff50e 100644 --- a/packages/shield-controller/src/ShieldController.test.ts +++ b/packages/shield-controller/src/ShieldController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { SignatureRequestStatus } from '@metamask/signature-controller'; import type { SignatureRequest } from '@metamask/signature-controller'; @@ -6,21 +7,24 @@ import { TransactionStatus } from '@metamask/transaction-controller'; import type { TransactionMeta } from '@metamask/transaction-controller'; import type { TransactionControllerState } from '@metamask/transaction-controller'; -import { TX_META_SIMULATION_DATA_MOCKS } from '../tests/data'; -import { createMockBackend, MOCK_COVERAGE_ID } from '../tests/mocks/backend'; -import { createMockMessenger, RootMessenger } from '../tests/mocks/messenger'; +import { TX_META_SIMULATION_DATA_MOCKS } from '../tests/data.js'; +import { createMockBackend, MOCK_COVERAGE_ID } from '../tests/mocks/backend.js'; +import { + createMockMessenger, + RootMessenger, +} from '../tests/mocks/messenger.js'; import { generateMockSignatureRequest, generateMockTxMeta, setupCoverageResultReceived, -} from '../tests/utils'; +} from '../tests/utils.js'; import { getDefaultShieldControllerState, ShieldController, ShieldControllerMessenger, -} from './ShieldController'; -import type { ShieldControllerState } from './ShieldController'; -import type { NormalizeSignatureRequestFn, ShieldBackend } from './types'; +} from './ShieldController.js'; +import type { ShieldControllerState } from './ShieldController.js'; +import type { NormalizeSignatureRequestFn, ShieldBackend } from './types.js'; /** * Sets up a ShieldController for testing. diff --git a/packages/shield-controller/src/ShieldController.ts b/packages/shield-controller/src/ShieldController.ts index e7109d6e941..14e7d967d60 100644 --- a/packages/shield-controller/src/ShieldController.ts +++ b/packages/shield-controller/src/ShieldController.ts @@ -14,16 +14,16 @@ import type { TransactionControllerStateChangeEvent, TransactionMeta, } from '@metamask/transaction-controller'; -import { cloneDeep, isEqual } from 'lodash'; +import { cloneDeep, isEqual } from 'lodash-es'; -import { controllerName } from './constants'; -import { projectLogger, createModuleLogger } from './logger'; -import type { ShieldControllerMethodActions } from './ShieldController-method-action-types'; +import { controllerName } from './constants.js'; +import { projectLogger, createModuleLogger } from './logger.js'; +import type { ShieldControllerMethodActions } from './ShieldController-method-action-types.js'; import type { CoverageResult, NormalizeSignatureRequestFn, ShieldBackend, -} from './types'; +} from './types.js'; const log = createModuleLogger(projectLogger, 'ShieldController'); diff --git a/packages/shield-controller/src/backend.test.ts b/packages/shield-controller/src/backend.test.ts index ab22c5d90b8..3061e3652eb 100644 --- a/packages/shield-controller/src/backend.test.ts +++ b/packages/shield-controller/src/backend.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { EthMethod, SignatureRequestType, @@ -7,13 +8,13 @@ import { generateMockSignatureRequest, generateMockTxMeta, getRandomCoverageResult, -} from '../tests/utils'; +} from '../tests/utils.js'; import { makeInitCoverageCheckBody, parseSignatureRequestMethod, ShieldRemoteBackend, -} from './backend'; -import { SignTypedDataVersion } from './constants'; +} from './backend.js'; +import { SignTypedDataVersion } from './constants.js'; const mockCaptureException = jest.fn(); diff --git a/packages/shield-controller/src/backend.ts b/packages/shield-controller/src/backend.ts index d6fd4788a5f..7cb091e9965 100644 --- a/packages/shield-controller/src/backend.ts +++ b/packages/shield-controller/src/backend.ts @@ -12,8 +12,8 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; import type { AuthorizationList } from '@metamask/transaction-controller'; import type { Json } from '@metamask/utils'; -import { SignTypedDataVersion } from './constants'; -import { PollingWithCockatielPolicy } from './polling-with-policy'; +import { SignTypedDataVersion } from './constants.js'; +import { PollingWithCockatielPolicy } from './polling-with-policy.js'; import type { CheckCoverageRequest, CheckSignatureCoverageRequest, @@ -22,7 +22,7 @@ import type { LogSignatureRequest, LogTransactionRequest, ShieldBackend, -} from './types'; +} from './types.js'; export type InitCoverageCheckRequest = { txParams: [ diff --git a/packages/shield-controller/src/index.ts b/packages/shield-controller/src/index.ts index 7747be50a42..8c7e2fcf292 100644 --- a/packages/shield-controller/src/index.ts +++ b/packages/shield-controller/src/index.ts @@ -3,7 +3,7 @@ export type { LogSignatureRequest, LogTransactionRequest, NormalizeSignatureRequestFn, -} from './types'; +} from './types.js'; export type { ShieldControllerActions, ShieldControllerEvents, @@ -12,16 +12,16 @@ export type { ShieldControllerGetStateAction, ShieldControllerCoverageResultReceivedEvent, ShieldControllerStateChangeEvent, -} from './ShieldController'; +} from './ShieldController.js'; export type { ShieldControllerStartAction, ShieldControllerStopAction, ShieldControllerClearStateAction, ShieldControllerCheckCoverageAction, ShieldControllerCheckSignatureCoverageAction, -} from './ShieldController-method-action-types'; +} from './ShieldController-method-action-types.js'; export { ShieldController, getDefaultShieldControllerState, -} from './ShieldController'; -export { ShieldRemoteBackend, parseSignatureRequestMethod } from './backend'; +} from './ShieldController.js'; +export { ShieldRemoteBackend, parseSignatureRequestMethod } from './backend.js'; diff --git a/packages/shield-controller/src/logger.ts b/packages/shield-controller/src/logger.ts index ca017b5ba54..abd139116dc 100644 --- a/packages/shield-controller/src/logger.ts +++ b/packages/shield-controller/src/logger.ts @@ -1,6 +1,6 @@ import { createProjectLogger, createModuleLogger } from '@metamask/utils'; -import { controllerName } from './constants'; +import { controllerName } from './constants.js'; export const projectLogger = createProjectLogger(controllerName); diff --git a/packages/shield-controller/src/polling-with-policy.test.ts b/packages/shield-controller/src/polling-with-policy.test.ts index c62958a2d8f..344f5f368b2 100644 --- a/packages/shield-controller/src/polling-with-policy.test.ts +++ b/packages/shield-controller/src/polling-with-policy.test.ts @@ -1,7 +1,8 @@ +import { jest } from '@jest/globals'; import { HttpError } from '@metamask/controller-utils'; -import { delay } from '../tests/utils'; -import { PollingWithCockatielPolicy } from './polling-with-policy'; +import { delay } from '../tests/utils.js'; +import { PollingWithCockatielPolicy } from './polling-with-policy.js'; describe('PollingWithCockatielPolicy', () => { it('should return the success result', async () => { @@ -22,6 +23,7 @@ describe('PollingWithCockatielPolicy', () => { return new Promise((resolve, reject) => { setTimeout(() => { if (invocationCount < 3) { + // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors reject(new HttpError(412, 'Results are not available yet')); } resolve('test'); @@ -39,6 +41,7 @@ describe('PollingWithCockatielPolicy', () => { .fn() .mockImplementation(async (_abortSignal: AbortSignal) => { return new Promise((_resolve, reject) => { + // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors reject(new HttpError(500, 'Internal server error')); }); }); @@ -58,6 +61,7 @@ describe('PollingWithCockatielPolicy', () => { .mockImplementation(async (_abortSignal: AbortSignal) => { return new Promise((_resolve, reject) => { setTimeout(() => { + // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors reject(new HttpError(412, 'Results are not available yet')); }, 100); }); @@ -82,6 +86,7 @@ describe('PollingWithCockatielPolicy', () => { reject(new Error('test error')); } + // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors reject(new HttpError(412, 'Results are not available yet')); }, 100); }); diff --git a/packages/shield-controller/tests/mocks/backend.ts b/packages/shield-controller/tests/mocks/backend.ts index ee8493540d4..5f857917b67 100644 --- a/packages/shield-controller/tests/mocks/backend.ts +++ b/packages/shield-controller/tests/mocks/backend.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { ShieldBackend } from 'src/types'; export const MOCK_COVERAGE_ID = '1'; diff --git a/packages/shield-controller/tests/mocks/messenger.ts b/packages/shield-controller/tests/mocks/messenger.ts index c977739c464..c13d45b0d9c 100644 --- a/packages/shield-controller/tests/mocks/messenger.ts +++ b/packages/shield-controller/tests/mocks/messenger.ts @@ -5,8 +5,8 @@ import type { MockAnyNamespace, } from '@metamask/messenger'; -import type { ShieldControllerMessenger } from '../../src'; -import { controllerName } from '../../src/constants'; +import { controllerName } from '../../src/constants.js'; +import type { ShieldControllerMessenger } from '../../src/index.js'; type AllShieldControllerActions = MessengerActions; diff --git a/packages/shield-controller/tests/utils.ts b/packages/shield-controller/tests/utils.ts index be83af87f96..94039c947cb 100644 --- a/packages/shield-controller/tests/utils.ts +++ b/packages/shield-controller/tests/utils.ts @@ -11,9 +11,9 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; import type { SignTypedDataVersion } from 'src/constants'; import { v1 as random } from 'uuid'; -import { coverageStatuses } from '../src/types'; -import type { CoverageResult, CoverageStatus } from '../src/types'; -import type { createMockMessenger } from './mocks/messenger'; +import { coverageStatuses } from '../src/types.js'; +import type { CoverageResult, CoverageStatus } from '../src/types.js'; +import type { createMockMessenger } from './mocks/messenger.js'; /** * Generate a mock transaction meta. From 70aa4922ab9180e6f0005b788811d8cbc79c95d1 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:33 +0200 Subject: [PATCH 053/115] ESLint fix and `jest` global import for smart-transactions-controller --- .../package.json | 2 +- ...nsactionsController-method-action-types.ts | 2 +- .../src/SmartTransactionsController.test.ts | 40 +++++++++---------- .../src/SmartTransactionsController.ts | 16 ++++---- .../src/featureFlags/feature-flags.test.ts | 6 ++- .../src/featureFlags/feature-flags.ts | 6 +-- .../src/featureFlags/index.ts | 4 +- .../src/featureFlags/validators.test.ts | 2 +- .../src/index.ts | 14 +++---- .../src/selectors.test.ts | 8 ++-- .../src/selectors.ts | 4 +- .../src/utils.test.ts | 7 ++-- .../src/utils.ts | 8 ++-- .../tests/helpers.ts | 1 + 14 files changed, 62 insertions(+), 58 deletions(-) diff --git a/packages/smart-transactions-controller/package.json b/packages/smart-transactions-controller/package.json index c8f8212e0bc..b14207ed84c 100644 --- a/packages/smart-transactions-controller/package.json +++ b/packages/smart-transactions-controller/package.json @@ -65,7 +65,7 @@ "@metamask/transaction-controller": "^69.0.0", "@metamask/utils": "^11.11.0", "bignumber.js": "^9.1.2", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "reselect": "^5.1.1" }, "devDependencies": { diff --git a/packages/smart-transactions-controller/src/SmartTransactionsController-method-action-types.ts b/packages/smart-transactions-controller/src/SmartTransactionsController-method-action-types.ts index b8cae3c5db5..0abc024e10a 100644 --- a/packages/smart-transactions-controller/src/SmartTransactionsController-method-action-types.ts +++ b/packages/smart-transactions-controller/src/SmartTransactionsController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { SmartTransactionsController } from './SmartTransactionsController'; +import type { SmartTransactionsController } from './SmartTransactionsController.js'; export type SmartTransactionsControllerCheckPollAction = { type: `SmartTransactionsController:checkPoll`; diff --git a/packages/smart-transactions-controller/src/SmartTransactionsController.test.ts b/packages/smart-transactions-controller/src/SmartTransactionsController.test.ts index 6d921c3c256..2b56cb8b1c9 100644 --- a/packages/smart-transactions-controller/src/SmartTransactionsController.test.ts +++ b/packages/smart-transactions-controller/src/SmartTransactionsController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { NetworkType, @@ -26,21 +27,25 @@ import type { Hex } from '@metamask/utils'; import nock from 'nock'; import packageJson from '../package.json'; -import { advanceTime, flushPromises, getFakeProvider } from '../tests/helpers'; +import { + advanceTime, + flushPromises, + getFakeProvider, +} from '../tests/helpers.js'; import { API_BASE_URL, SENTINEL_API_BASE_URL_MAP, SmartTransactionsTraceName, -} from './constants'; +} from './constants.js'; import { DEFAULT_INTERVAL, SmartTransactionsController, getDefaultSmartTransactionsControllerState, -} from './SmartTransactionsController'; -import type { SmartTransactionsControllerMessenger } from './SmartTransactionsController'; -import type { SmartTransaction, UnsignedTransaction } from './types'; -import { SmartTransactionStatuses, ClientId } from './types'; -import * as utils from './utils'; +} from './SmartTransactionsController.js'; +import type { SmartTransactionsControllerMessenger } from './SmartTransactionsController.js'; +import type { SmartTransaction, UnsignedTransaction } from './types.js'; +import { SmartTransactionStatuses, ClientId } from './types.js'; +import * as utils from './utils.js'; type AllActions = MessengerActions; @@ -430,8 +435,7 @@ describe('SmartTransactionsController', () => { }), ); - // eslint-disable-next-line @typescript-eslint/no-floating-promises - controller.stop(); + void controller.stop(); }); it('does not report error when feature flags are valid after state change', async () => { @@ -530,8 +534,7 @@ describe('SmartTransactionsController', () => { // Should not be called after state change with valid flags expect(captureExceptionSpy).not.toHaveBeenCalled(); - // eslint-disable-next-line @typescript-eslint/no-floating-promises - controller.stop(); + void controller.stop(); }); it('reports error when smartTransactionsNetworks flag is missing after state change', async () => { @@ -632,8 +635,7 @@ describe('SmartTransactionsController', () => { }), ); - // eslint-disable-next-line @typescript-eslint/no-floating-promises - controller.stop(); + void controller.stop(); }); it('reports error to ErrorReportingService when feature flags become invalid after state change', async () => { @@ -743,8 +745,7 @@ describe('SmartTransactionsController', () => { }), ); - // eslint-disable-next-line @typescript-eslint/no-floating-promises - controller.stop(); + void controller.stop(); }); it('reports multiple errors to ErrorReportingService when multiple chains are invalid after state change', async () => { @@ -849,8 +850,7 @@ describe('SmartTransactionsController', () => { // Should be called twice - once for each invalid chain expect(captureExceptionSpy).toHaveBeenCalledTimes(2); - // eslint-disable-next-line @typescript-eslint/no-floating-promises - controller.stop(); + void controller.stop(); }); }); @@ -949,8 +949,7 @@ describe('SmartTransactionsController', () => { controller.timeoutHandle = setTimeout(() => ({})); - // eslint-disable-next-line @typescript-eslint/no-floating-promises - controller.poll(1000); + void controller.poll(1000); expect(updateSmartTransactionsSpy).toHaveBeenCalled(); }); @@ -3377,8 +3376,7 @@ async function withController( triggerNetworkStateChange, }); } finally { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - controller.stop(); + void controller.stop(); controller.stopAllPolling(); } } diff --git a/packages/smart-transactions-controller/src/SmartTransactionsController.ts b/packages/smart-transactions-controller/src/SmartTransactionsController.ts index 5a7756fa067..2c9589dbff0 100644 --- a/packages/smart-transactions-controller/src/SmartTransactionsController.ts +++ b/packages/smart-transactions-controller/src/SmartTransactionsController.ts @@ -34,7 +34,7 @@ import type { } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import cloneDeep from 'lodash/cloneDeep'; +import { cloneDeep } from 'lodash-es'; import { API_BASE_URL, @@ -43,13 +43,13 @@ import { MetaMetricsEventName, SENTINEL_API_BASE_URL_MAP, SmartTransactionsTraceName, -} from './constants'; +} from './constants.js'; import { getSmartTransactionsFeatureFlags, getSmartTransactionsFeatureFlagsForChain, -} from './featureFlags/feature-flags'; -import { validateSmartTransactionsFeatureFlags } from './featureFlags/validators'; -import type { SmartTransactionsControllerMethodActions } from './SmartTransactionsController-method-action-types'; +} from './featureFlags/feature-flags.js'; +import { validateSmartTransactionsFeatureFlags } from './featureFlags/validators.js'; +import type { SmartTransactionsControllerMethodActions } from './SmartTransactionsController-method-action-types.js'; import type { Fees, IndividualTxFees, @@ -62,8 +62,8 @@ import type { MetaMetricsProps, FeatureFlags, ClientId, -} from './types'; -import { APIType, SmartTransactionStatuses } from './types'; +} from './types.js'; +import { APIType, SmartTransactionStatuses } from './types.js'; import { calculateStatus, getAPIRequestURL, @@ -76,7 +76,7 @@ import { getSmartTransactionMetricsSensitiveProperties, shouldMarkRegularTransactionsAsFailed, markRegularTransactionsAsFailed, -} from './utils'; +} from './utils.js'; const SECOND = 1000; export const DEFAULT_INTERVAL = SECOND * 5; diff --git a/packages/smart-transactions-controller/src/featureFlags/feature-flags.test.ts b/packages/smart-transactions-controller/src/featureFlags/feature-flags.test.ts index bc89a602c28..d4ebde25fca 100644 --- a/packages/smart-transactions-controller/src/featureFlags/feature-flags.test.ts +++ b/packages/smart-transactions-controller/src/featureFlags/feature-flags.test.ts @@ -1,10 +1,12 @@ -import { DEFAULT_DISABLED_SMART_TRANSACTIONS_FEATURE_FLAGS } from '../constants'; +import { jest } from '@jest/globals'; + +import { DEFAULT_DISABLED_SMART_TRANSACTIONS_FEATURE_FLAGS } from '../constants.js'; import { processSmartTransactionsFeatureFlags, getSmartTransactionsFeatureFlags, getSmartTransactionsFeatureFlagsForChain, normalizeChainId, -} from './feature-flags'; +} from './feature-flags.js'; describe('feature-flags', () => { describe('processSmartTransactionsFeatureFlags', () => { diff --git a/packages/smart-transactions-controller/src/featureFlags/feature-flags.ts b/packages/smart-transactions-controller/src/featureFlags/feature-flags.ts index 43ac56f87cc..d70a8941c48 100644 --- a/packages/smart-transactions-controller/src/featureFlags/feature-flags.ts +++ b/packages/smart-transactions-controller/src/featureFlags/feature-flags.ts @@ -7,12 +7,12 @@ import { parseCaipChainId, } from '@metamask/utils'; -import { DEFAULT_DISABLED_SMART_TRANSACTIONS_FEATURE_FLAGS } from '../constants'; +import { DEFAULT_DISABLED_SMART_TRANSACTIONS_FEATURE_FLAGS } from '../constants.js'; import type { SmartTransactionsFeatureFlagsConfig, SmartTransactionsNetworkConfig, -} from '../types'; -import { validateSmartTransactionsFeatureFlags } from './validators'; +} from '../types.js'; +import { validateSmartTransactionsFeatureFlags } from './validators.js'; /** * Normalizes a chain ID to hex format for EVM chains. diff --git a/packages/smart-transactions-controller/src/featureFlags/index.ts b/packages/smart-transactions-controller/src/featureFlags/index.ts index 8d2fad6e105..464d44ab850 100644 --- a/packages/smart-transactions-controller/src/featureFlags/index.ts +++ b/packages/smart-transactions-controller/src/featureFlags/index.ts @@ -7,11 +7,11 @@ export { type SmartTransactionsNetworkConfigFromSchema as SmartTransactionsNetworkConfig, type SmartTransactionsFeatureFlagsConfigFromSchema, type FeatureFlagsProcessResult, -} from './validators'; +} from './validators.js'; export { getSmartTransactionsFeatureFlags, processSmartTransactionsFeatureFlags, getSmartTransactionsFeatureFlagsForChain, normalizeChainId, -} from './feature-flags'; +} from './feature-flags.js'; diff --git a/packages/smart-transactions-controller/src/featureFlags/validators.test.ts b/packages/smart-transactions-controller/src/featureFlags/validators.test.ts index 7672475a99f..d7e9ddfc407 100644 --- a/packages/smart-transactions-controller/src/featureFlags/validators.test.ts +++ b/packages/smart-transactions-controller/src/featureFlags/validators.test.ts @@ -1,7 +1,7 @@ import { validateSmartTransactionsFeatureFlags, validateSmartTransactionsNetworkConfig, -} from './validators'; +} from './validators.js'; describe('validators', () => { describe('validateSmartTransactionsNetworkConfig', () => { diff --git a/packages/smart-transactions-controller/src/index.ts b/packages/smart-transactions-controller/src/index.ts index eba2b414d0b..dcb6cf6a26b 100644 --- a/packages/smart-transactions-controller/src/index.ts +++ b/packages/smart-transactions-controller/src/index.ts @@ -1,4 +1,4 @@ -export { SmartTransactionsController } from './SmartTransactionsController'; +export { SmartTransactionsController } from './SmartTransactionsController.js'; export type { SmartTransactionsControllerMessenger, SmartTransactionsControllerState, @@ -8,7 +8,7 @@ export type { SmartTransactionsControllerSmartTransactionEvent, SmartTransactionsControllerSmartTransactionConfirmationDoneEvent, SmartTransactionsControllerEvents, -} from './SmartTransactionsController'; +} from './SmartTransactionsController.js'; export type { SmartTransactionsControllerCheckPollAction, SmartTransactionsControllerInitializeSmartTransactionsForChainIdAction, @@ -29,7 +29,7 @@ export type { SmartTransactionsControllerGetTransactionsAction, SmartTransactionsControllerGetSmartTransactionByMinedTxHashAction, SmartTransactionsControllerWipeSmartTransactionsAction, -} from './SmartTransactionsController-method-action-types'; +} from './SmartTransactionsController-method-action-types.js'; export { type Fee, type Fees, @@ -47,16 +47,16 @@ export { ClientId, Feature, Kind, -} from './types'; -export { MetaMetricsEventName, MetaMetricsEventCategory } from './constants'; +} from './types.js'; +export { MetaMetricsEventName, MetaMetricsEventCategory } from './constants.js'; export { getSmartTransactionMetricsProperties, getSmartTransactionMetricsSensitiveProperties, -} from './utils'; +} from './utils.js'; // Feature flag selectors export { selectSmartTransactionsFeatureFlags, selectSmartTransactionsFeatureFlagsForChain, type SmartTransactionsFeatureFlagsState, -} from './selectors'; +} from './selectors.js'; diff --git a/packages/smart-transactions-controller/src/selectors.test.ts b/packages/smart-transactions-controller/src/selectors.test.ts index 4d3e73eb200..8c6ac707f68 100644 --- a/packages/smart-transactions-controller/src/selectors.test.ts +++ b/packages/smart-transactions-controller/src/selectors.test.ts @@ -1,9 +1,11 @@ -import { DEFAULT_DISABLED_SMART_TRANSACTIONS_FEATURE_FLAGS } from './constants'; +import { jest } from '@jest/globals'; + +import { DEFAULT_DISABLED_SMART_TRANSACTIONS_FEATURE_FLAGS } from './constants.js'; import { selectSmartTransactionsFeatureFlags, selectSmartTransactionsFeatureFlagsForChain, -} from './selectors'; -import type { SmartTransactionsFeatureFlagsState } from './selectors'; +} from './selectors.js'; +import type { SmartTransactionsFeatureFlagsState } from './selectors.js'; describe('selectors', () => { beforeEach(() => { diff --git a/packages/smart-transactions-controller/src/selectors.ts b/packages/smart-transactions-controller/src/selectors.ts index e3b3a2ce55b..fd359265c44 100644 --- a/packages/smart-transactions-controller/src/selectors.ts +++ b/packages/smart-transactions-controller/src/selectors.ts @@ -4,11 +4,11 @@ import { createSelector as createSelector_ } from 'reselect'; import { processSmartTransactionsFeatureFlags, getSmartTransactionsFeatureFlagsForChain, -} from './featureFlags/feature-flags'; +} from './featureFlags/feature-flags.js'; import type { SmartTransactionsFeatureFlagsConfig, SmartTransactionsNetworkConfig, -} from './types'; +} from './types.js'; /** * The state shape expected by the smart transactions feature flag selectors. diff --git a/packages/smart-transactions-controller/src/utils.test.ts b/packages/smart-transactions-controller/src/utils.test.ts index db4b4766106..e3566218d42 100644 --- a/packages/smart-transactions-controller/src/utils.test.ts +++ b/packages/smart-transactions-controller/src/utils.test.ts @@ -1,11 +1,12 @@ import { arrayify, hexlify } from '@ethersproject/bytes'; import { keccak256 } from '@ethersproject/keccak256'; +import { jest } from '@jest/globals'; import { ChainId, NetworkType } from '@metamask/controller-utils'; import { TransactionStatus } from '@metamask/transaction-controller'; import type { TransactionMeta } from '@metamask/transaction-controller'; import packageJson from '../package.json'; -import { API_BASE_URL, SENTINEL_API_BASE_URL_MAP } from './constants'; +import { API_BASE_URL, SENTINEL_API_BASE_URL_MAP } from './constants.js'; import { SmartTransactionMinedTx, APIType, @@ -13,8 +14,8 @@ import { SmartTransactionCancellationReason, OriginalTransactionStatus, ClientId, -} from './types'; -import * as utils from './utils'; +} from './types.js'; +import * as utils from './utils.js'; const createSignedTransaction = () => { return '0xf86c098504a817c800825208943535353535353535353535353535353535353535880de0b6b3a76400008025a02b79f322a625d623a2bb2911e0c6b3e7eaf741a7c7c5d2e8c67ef3ff4acf146ca01ae168fea63dc3391b75b586c8a7c0cb55cdf3b8e2e4d8e097957a3a56c6f2c5'; diff --git a/packages/smart-transactions-controller/src/utils.ts b/packages/smart-transactions-controller/src/utils.ts index 936cd3406ee..65ffa8c3702 100644 --- a/packages/smart-transactions-controller/src/utils.ts +++ b/packages/smart-transactions-controller/src/utils.ts @@ -7,19 +7,19 @@ import type { } from '@metamask/transaction-controller'; import { TransactionStatus } from '@metamask/transaction-controller'; import { BigNumber } from 'bignumber.js'; -import _ from 'lodash'; +import * as _ from 'lodash-es'; // Ignoring TypeScript errors here because this import is disallowed for production builds, because // the `package.json` file is above the root directory. // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore import packageJson from '../package.json'; -import { API_BASE_URL, SENTINEL_API_BASE_URL_MAP } from './constants'; +import { API_BASE_URL, SENTINEL_API_BASE_URL_MAP } from './constants.js'; import type { SmartTransaction, SmartTransactionsStatus, SmartTransactionsNetworkConfig, -} from './types'; +} from './types.js'; import { APIType, SmartTransactionStatuses, @@ -27,7 +27,7 @@ import { SmartTransactionMinedTx, cancellationReasonToStatusMap, ClientId, -} from './types'; +} from './types.js'; export function isSmartTransactionPending(smartTransaction: SmartTransaction) { return smartTransaction.status === SmartTransactionStatuses.PENDING; diff --git a/packages/smart-transactions-controller/tests/helpers.ts b/packages/smart-transactions-controller/tests/helpers.ts index 31f81e95f03..551a203ad07 100644 --- a/packages/smart-transactions-controller/tests/helpers.ts +++ b/packages/smart-transactions-controller/tests/helpers.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { InternalProvider } from '@metamask/eth-json-rpc-provider'; import { JsonRpcEngine } from '@metamask/json-rpc-engine'; From 5882c8e1bf856c62e62c126810546fca47479b21 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:36 +0200 Subject: [PATCH 054/115] ESLint fix and `jest` global import for user-operation-controller --- .../user-operation-controller/package.json | 2 +- ...OperationController-method-action-types.ts | 2 +- .../src/UserOperationController.test.ts | 27 ++++++++++--------- .../src/UserOperationController.ts | 26 +++++++++--------- .../src/helpers/Bundler.test.ts | 6 +++-- .../src/helpers/Bundler.ts | 4 +-- .../PendingUserOperationTracker.test.ts | 11 ++++---- .../helpers/PendingUserOperationTracker.ts | 10 +++---- .../helpers/SnapSmartContractAccount.test.ts | 13 ++++----- .../src/helpers/SnapSmartContractAccount.ts | 8 +++--- .../user-operation-controller/src/index.ts | 6 ++--- .../src/utils/chain-id.test.ts | 2 +- .../src/utils/gas-fees.test.ts | 7 ++--- .../src/utils/gas-fees.ts | 8 +++--- .../src/utils/gas.test.ts | 13 ++++----- .../src/utils/gas.ts | 8 +++--- .../src/utils/transaction.test.ts | 14 +++++----- .../src/utils/transaction.ts | 6 ++--- .../src/utils/validation.test.ts | 10 +++---- .../src/utils/validation.ts | 6 ++--- 20 files changed, 98 insertions(+), 91 deletions(-) diff --git a/packages/user-operation-controller/package.json b/packages/user-operation-controller/package.json index 13b5808c26e..bc73bf8fae9 100644 --- a/packages/user-operation-controller/package.json +++ b/packages/user-operation-controller/package.json @@ -64,7 +64,7 @@ "@metamask/utils": "^11.11.0", "bn.js": "^5.2.1", "immer": "^9.0.6", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "uuid": "^8.3.2" }, "devDependencies": { diff --git a/packages/user-operation-controller/src/UserOperationController-method-action-types.ts b/packages/user-operation-controller/src/UserOperationController-method-action-types.ts index aeb25ac0a87..a1377907657 100644 --- a/packages/user-operation-controller/src/UserOperationController-method-action-types.ts +++ b/packages/user-operation-controller/src/UserOperationController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { UserOperationController } from './UserOperationController'; +import type { UserOperationController } from './UserOperationController.js'; /** * Create and submit a user operation. diff --git a/packages/user-operation-controller/src/UserOperationController.test.ts b/packages/user-operation-controller/src/UserOperationController.test.ts index cc946555099..c613a784b7a 100644 --- a/packages/user-operation-controller/src/UserOperationController.test.ts +++ b/packages/user-operation-controller/src/UserOperationController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { ApprovalType } from '@metamask/controller-utils'; import { errorCodes } from '@metamask/rpc-errors'; @@ -5,33 +6,33 @@ import { TransactionType } from '@metamask/transaction-controller'; import type { TransactionParams } from '@metamask/transaction-controller'; import { EventEmitter } from 'stream'; -import { ADDRESS_ZERO, EMPTY_BYTES, VALUE_ZERO } from './constants'; -import * as BundlerHelper from './helpers/Bundler'; -import * as PendingUserOperationTrackerHelper from './helpers/PendingUserOperationTracker'; -import { SnapSmartContractAccount } from './helpers/SnapSmartContractAccount'; -import { UserOperationStatus } from './types'; -import type { UserOperationMetadata } from './types'; +import { ADDRESS_ZERO, EMPTY_BYTES, VALUE_ZERO } from './constants.js'; +import * as BundlerHelper from './helpers/Bundler.js'; +import * as PendingUserOperationTrackerHelper from './helpers/PendingUserOperationTracker.js'; +import { SnapSmartContractAccount } from './helpers/SnapSmartContractAccount.js'; +import { UserOperationStatus } from './types.js'; +import type { UserOperationMetadata } from './types.js'; import type { PrepareUserOperationResponse, SignUserOperationResponse, SmartContractAccount, UpdateUserOperationResponse, -} from './types'; +} from './types.js'; import type { AddUserOperationOptions, AddUserOperationRequest, UserOperationControllerMessenger, -} from './UserOperationController'; -import { UserOperationController } from './UserOperationController'; -import { updateGas } from './utils/gas'; -import { updateGasFees } from './utils/gas-fees'; +} from './UserOperationController.js'; +import { UserOperationController } from './UserOperationController.js'; +import { updateGasFees } from './utils/gas-fees.js'; +import { updateGas } from './utils/gas.js'; import { validateAddUserOperationRequest, validateAddUserOperationOptions, validatePrepareUserOperationResponse, validateSignUserOperationResponse, validateUpdateUserOperationResponse, -} from './utils/validation'; +} from './utils/validation.js'; jest.mock('./utils/gas'); jest.mock('./utils/gas-fees'); @@ -237,7 +238,7 @@ describe('UserOperationController', () => { return approvalControllerAddRequestMock(); } - throw new Error(`Unexpected mock messenger action: ${action}`); + throw new Error(`Unexpected mock messenger action: ${String(action)}`); }, ); diff --git a/packages/user-operation-controller/src/UserOperationController.ts b/packages/user-operation-controller/src/UserOperationController.ts index c0fc7150f63..a33a0f22b38 100644 --- a/packages/user-operation-controller/src/UserOperationController.ts +++ b/packages/user-operation-controller/src/UserOperationController.ts @@ -30,31 +30,31 @@ import { add0x } from '@metamask/utils'; // This package purposefully relies on Node's EventEmitter module. // eslint-disable-next-line import-x/no-nodejs-modules import EventEmitter from 'events'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; import { v1 as random } from 'uuid'; -import { ADDRESS_ZERO, EMPTY_BYTES, VALUE_ZERO } from './constants'; -import { Bundler } from './helpers/Bundler'; -import { PendingUserOperationTracker } from './helpers/PendingUserOperationTracker'; -import { SnapSmartContractAccount } from './helpers/SnapSmartContractAccount'; -import { projectLogger as log } from './logger'; +import { ADDRESS_ZERO, EMPTY_BYTES, VALUE_ZERO } from './constants.js'; +import { Bundler } from './helpers/Bundler.js'; +import { PendingUserOperationTracker } from './helpers/PendingUserOperationTracker.js'; +import { SnapSmartContractAccount } from './helpers/SnapSmartContractAccount.js'; +import { projectLogger as log } from './logger.js'; import type { SmartContractAccount, UserOperation, UserOperationMetadata, -} from './types'; -import { UserOperationStatus } from './types'; -import type { UserOperationControllerMethodActions } from './UserOperationController-method-action-types'; -import { updateGas } from './utils/gas'; -import { updateGasFees } from './utils/gas-fees'; -import { getTransactionMetadata } from './utils/transaction'; +} from './types.js'; +import { UserOperationStatus } from './types.js'; +import type { UserOperationControllerMethodActions } from './UserOperationController-method-action-types.js'; +import { updateGasFees } from './utils/gas-fees.js'; +import { updateGas } from './utils/gas.js'; +import { getTransactionMetadata } from './utils/transaction.js'; import { validateAddUserOperationOptions, validateAddUserOperationRequest, validatePrepareUserOperationResponse, validateSignUserOperationResponse, validateUpdateUserOperationResponse, -} from './utils/validation'; +} from './utils/validation.js'; const controllerName = 'UserOperationController'; diff --git a/packages/user-operation-controller/src/helpers/Bundler.test.ts b/packages/user-operation-controller/src/helpers/Bundler.test.ts index 2beb90c8abe..5a2d36e1112 100644 --- a/packages/user-operation-controller/src/helpers/Bundler.test.ts +++ b/packages/user-operation-controller/src/helpers/Bundler.test.ts @@ -1,5 +1,7 @@ -import type { UserOperation } from '../types'; -import { Bundler } from './Bundler'; +import { jest } from '@jest/globals'; + +import type { UserOperation } from '../types.js'; +import { Bundler } from './Bundler.js'; const URL_MOCK = 'http://test.com'; const ENTRYPOINT_MOCK = '0x123'; diff --git a/packages/user-operation-controller/src/helpers/Bundler.ts b/packages/user-operation-controller/src/helpers/Bundler.ts index 7e66581aeed..2f62701588c 100644 --- a/packages/user-operation-controller/src/helpers/Bundler.ts +++ b/packages/user-operation-controller/src/helpers/Bundler.ts @@ -1,5 +1,5 @@ -import { createModuleLogger, projectLogger } from '../logger'; -import type { UserOperation, UserOperationReceipt } from '../types'; +import { createModuleLogger, projectLogger } from '../logger.js'; +import type { UserOperation, UserOperationReceipt } from '../types.js'; const log = createModuleLogger(projectLogger, 'bundler'); diff --git a/packages/user-operation-controller/src/helpers/PendingUserOperationTracker.test.ts b/packages/user-operation-controller/src/helpers/PendingUserOperationTracker.test.ts index 36a66efd467..8d39481d46b 100644 --- a/packages/user-operation-controller/src/helpers/PendingUserOperationTracker.test.ts +++ b/packages/user-operation-controller/src/helpers/PendingUserOperationTracker.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; import { query } from '@metamask/controller-utils'; import type { NetworkControllerGetNetworkClientByIdAction } from '@metamask/network-controller'; -import type { UserOperationMetadata, UserOperationReceipt } from '../types'; -import { UserOperationStatus } from '../types'; -import type { UserOperationControllerMessenger } from '../UserOperationController'; -import * as BundlerHelper from './Bundler'; -import { PendingUserOperationTracker } from './PendingUserOperationTracker'; +import type { UserOperationMetadata, UserOperationReceipt } from '../types.js'; +import { UserOperationStatus } from '../types.js'; +import type { UserOperationControllerMessenger } from '../UserOperationController.js'; +import * as BundlerHelper from './Bundler.js'; +import { PendingUserOperationTracker } from './PendingUserOperationTracker.js'; const CHAIN_ID_MOCK = '0x5'; const NETWORK_CLIENT_ID_MOCK = 'testNetworkClientId'; diff --git a/packages/user-operation-controller/src/helpers/PendingUserOperationTracker.ts b/packages/user-operation-controller/src/helpers/PendingUserOperationTracker.ts index 99124feeb0a..f887a7e4050 100644 --- a/packages/user-operation-controller/src/helpers/PendingUserOperationTracker.ts +++ b/packages/user-operation-controller/src/helpers/PendingUserOperationTracker.ts @@ -12,11 +12,11 @@ import type { Hex } from '@metamask/utils'; // eslint-disable-next-line import-x/no-nodejs-modules import EventEmitter from 'events'; -import { projectLogger } from '../logger'; -import type { UserOperationMetadata, UserOperationReceipt } from '../types'; -import { UserOperationStatus } from '../types'; -import type { UserOperationControllerMessenger } from '../UserOperationController'; -import { Bundler } from './Bundler'; +import { projectLogger } from '../logger.js'; +import type { UserOperationMetadata, UserOperationReceipt } from '../types.js'; +import { UserOperationStatus } from '../types.js'; +import type { UserOperationControllerMessenger } from '../UserOperationController.js'; +import { Bundler } from './Bundler.js'; const log = createModuleLogger(projectLogger, 'pending-user-operations'); diff --git a/packages/user-operation-controller/src/helpers/SnapSmartContractAccount.test.ts b/packages/user-operation-controller/src/helpers/SnapSmartContractAccount.test.ts index 28b48d0a27c..d4f14546d31 100644 --- a/packages/user-operation-controller/src/helpers/SnapSmartContractAccount.test.ts +++ b/packages/user-operation-controller/src/helpers/SnapSmartContractAccount.test.ts @@ -1,17 +1,18 @@ +import { jest } from '@jest/globals'; import type { KeyringController } from '@metamask/keyring-controller'; -import { ADDRESS_ZERO, EMPTY_BYTES, VALUE_ZERO } from '../constants'; +import { ADDRESS_ZERO, EMPTY_BYTES, VALUE_ZERO } from '../constants.js'; import type { PrepareUserOperationResponse, SignUserOperationRequest, SignUserOperationResponse, UpdateUserOperationRequest, UpdateUserOperationResponse, -} from '../types'; -import type { PrepareUserOperationRequest } from '../types'; -import type { UserOperationControllerMessenger } from '../UserOperationController'; -import { toEip155ChainId } from '../utils/chain-id'; -import { SnapSmartContractAccount } from './SnapSmartContractAccount'; +} from '../types.js'; +import type { PrepareUserOperationRequest } from '../types.js'; +import type { UserOperationControllerMessenger } from '../UserOperationController.js'; +import { toEip155ChainId } from '../utils/chain-id.js'; +import { SnapSmartContractAccount } from './SnapSmartContractAccount.js'; const PREPARE_USER_OPERATION_REQUEST_MOCK: PrepareUserOperationRequest = { chainId: '0x1', diff --git a/packages/user-operation-controller/src/helpers/SnapSmartContractAccount.ts b/packages/user-operation-controller/src/helpers/SnapSmartContractAccount.ts index 78cddc4ccd7..54ae14a07d3 100644 --- a/packages/user-operation-controller/src/helpers/SnapSmartContractAccount.ts +++ b/packages/user-operation-controller/src/helpers/SnapSmartContractAccount.ts @@ -1,4 +1,4 @@ -import { ADDRESS_ZERO, EMPTY_BYTES, VALUE_ZERO } from '../constants'; +import { ADDRESS_ZERO, EMPTY_BYTES, VALUE_ZERO } from '../constants.js'; import type { PrepareUserOperationRequest, PrepareUserOperationResponse, @@ -7,9 +7,9 @@ import type { SmartContractAccount, UpdateUserOperationRequest, UpdateUserOperationResponse, -} from '../types'; -import type { UserOperationControllerMessenger } from '../UserOperationController'; -import { toEip155ChainId } from '../utils/chain-id'; +} from '../types.js'; +import type { UserOperationControllerMessenger } from '../UserOperationController.js'; +import { toEip155ChainId } from '../utils/chain-id.js'; export class SnapSmartContractAccount implements SmartContractAccount { readonly #messenger: UserOperationControllerMessenger; diff --git a/packages/user-operation-controller/src/index.ts b/packages/user-operation-controller/src/index.ts index a6a4fee803a..64c6fffa00b 100644 --- a/packages/user-operation-controller/src/index.ts +++ b/packages/user-operation-controller/src/index.ts @@ -1,7 +1,7 @@ -export * from './UserOperationController'; +export * from './UserOperationController.js'; export type { UserOperationControllerAddUserOperationAction, UserOperationControllerAddUserOperationFromTransactionAction, UserOperationControllerStartPollingByNetworkClientIdAction, -} from './UserOperationController-method-action-types'; -export * from './types'; +} from './UserOperationController-method-action-types.js'; +export * from './types.js'; diff --git a/packages/user-operation-controller/src/utils/chain-id.test.ts b/packages/user-operation-controller/src/utils/chain-id.test.ts index 1efa378c3bc..47f8f0f42aa 100644 --- a/packages/user-operation-controller/src/utils/chain-id.test.ts +++ b/packages/user-operation-controller/src/utils/chain-id.test.ts @@ -1,4 +1,4 @@ -import { toEip155ChainId } from './chain-id'; +import { toEip155ChainId } from './chain-id.js'; describe('chain-id', () => { describe('toEip155ChainId', () => { diff --git a/packages/user-operation-controller/src/utils/gas-fees.test.ts b/packages/user-operation-controller/src/utils/gas-fees.test.ts index 794c98870e7..5e9a5edec81 100644 --- a/packages/user-operation-controller/src/utils/gas-fees.test.ts +++ b/packages/user-operation-controller/src/utils/gas-fees.test.ts @@ -1,12 +1,13 @@ +import { jest } from '@jest/globals'; import { ORIGIN_METAMASK, query } from '@metamask/controller-utils'; import type { GasFeeState } from '@metamask/gas-fee-controller'; import { GAS_ESTIMATE_TYPES } from '@metamask/gas-fee-controller'; import { UserFeeLevel } from '@metamask/transaction-controller'; import type { TransactionParams } from '@metamask/transaction-controller'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; -import type { UpdateGasFeesRequest } from './gas-fees'; -import { updateGasFees } from './gas-fees'; +import type { UpdateGasFeesRequest } from './gas-fees.js'; +import { updateGasFees } from './gas-fees.js'; jest.mock('@metamask/controller-utils', () => ({ ...jest.requireActual('@metamask/controller-utils'), diff --git a/packages/user-operation-controller/src/utils/gas-fees.ts b/packages/user-operation-controller/src/utils/gas-fees.ts index 45ebaaaa274..ee7d86d1f2e 100644 --- a/packages/user-operation-controller/src/utils/gas-fees.ts +++ b/packages/user-operation-controller/src/utils/gas-fees.ts @@ -13,10 +13,10 @@ import { UserFeeLevel } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; import { add0x } from '@metamask/utils'; -import { EMPTY_BYTES } from '../constants'; -import { createModuleLogger, projectLogger } from '../logger'; -import type { UserOperation, UserOperationMetadata } from '../types'; -import type { AddUserOperationRequest } from '../UserOperationController'; +import { EMPTY_BYTES } from '../constants.js'; +import { createModuleLogger, projectLogger } from '../logger.js'; +import type { UserOperation, UserOperationMetadata } from '../types.js'; +import type { AddUserOperationRequest } from '../UserOperationController.js'; const log = createModuleLogger(projectLogger, 'gas-fees'); diff --git a/packages/user-operation-controller/src/utils/gas.test.ts b/packages/user-operation-controller/src/utils/gas.test.ts index b8df1c484f4..89f321644ec 100644 --- a/packages/user-operation-controller/src/utils/gas.test.ts +++ b/packages/user-operation-controller/src/utils/gas.test.ts @@ -1,13 +1,14 @@ -import { cloneDeep } from 'lodash'; +import { jest } from '@jest/globals'; +import { cloneDeep } from 'lodash-es'; -import { VALUE_ZERO } from '../constants'; -import type { BundlerEstimateUserOperationGasResponse } from '../helpers/Bundler'; -import { Bundler } from '../helpers/Bundler'; +import { VALUE_ZERO } from '../constants.js'; +import type { BundlerEstimateUserOperationGasResponse } from '../helpers/Bundler.js'; +import { Bundler } from '../helpers/Bundler.js'; import type { PrepareUserOperationResponse, UserOperationMetadata, -} from '../types'; -import { updateGas } from './gas'; +} from '../types.js'; +import { updateGas } from './gas.js'; jest.mock('../helpers/Bundler', () => ({ Bundler: jest.fn(), diff --git a/packages/user-operation-controller/src/utils/gas.ts b/packages/user-operation-controller/src/utils/gas.ts index 3d5715832fc..ebc26d74402 100644 --- a/packages/user-operation-controller/src/utils/gas.ts +++ b/packages/user-operation-controller/src/utils/gas.ts @@ -2,13 +2,13 @@ import { hexToBN } from '@metamask/controller-utils'; import { add0x } from '@metamask/utils'; import BN from 'bn.js'; -import { VALUE_ZERO } from '../constants'; -import { Bundler } from '../helpers/Bundler'; -import { createModuleLogger, projectLogger } from '../logger'; +import { VALUE_ZERO } from '../constants.js'; +import { Bundler } from '../helpers/Bundler.js'; +import { createModuleLogger, projectLogger } from '../logger.js'; import type { PrepareUserOperationResponse, UserOperationMetadata, -} from '../types'; +} from '../types.js'; const log = createModuleLogger(projectLogger, 'gas'); diff --git a/packages/user-operation-controller/src/utils/transaction.test.ts b/packages/user-operation-controller/src/utils/transaction.test.ts index ee7e49561fb..565678d4a88 100644 --- a/packages/user-operation-controller/src/utils/transaction.test.ts +++ b/packages/user-operation-controller/src/utils/transaction.test.ts @@ -1,14 +1,14 @@ -import type { TransactionParams } from '../../../transaction-controller/src'; +import type { TransactionParams } from '../../../transaction-controller/src/index.js'; import { TransactionStatus, TransactionType, UserFeeLevel, -} from '../../../transaction-controller/src'; -import { EMPTY_BYTES, VALUE_ZERO } from '../constants'; -import { UserOperationStatus } from '../types'; -import type { UserOperation } from '../types'; -import type { UserOperationMetadata } from '../types'; -import { getTransactionMetadata } from './transaction'; +} from '../../../transaction-controller/src/index.js'; +import { EMPTY_BYTES, VALUE_ZERO } from '../constants.js'; +import { UserOperationStatus } from '../types.js'; +import type { UserOperation } from '../types.js'; +import type { UserOperationMetadata } from '../types.js'; +import { getTransactionMetadata } from './transaction.js'; const USER_OPERATION_METADATA_MOCK: UserOperationMetadata = { id: 'testUserOperationId', diff --git a/packages/user-operation-controller/src/utils/transaction.ts b/packages/user-operation-controller/src/utils/transaction.ts index 72e90be3cec..f945ab2898b 100644 --- a/packages/user-operation-controller/src/utils/transaction.ts +++ b/packages/user-operation-controller/src/utils/transaction.ts @@ -11,9 +11,9 @@ import type { Hex } from '@metamask/utils'; import { add0x, remove0x } from '@metamask/utils'; import BN from 'bn.js'; -import { EMPTY_BYTES, VALUE_ZERO } from '../constants'; -import { UserOperationStatus } from '../types'; -import type { UserOperationMetadata } from '../types'; +import { EMPTY_BYTES, VALUE_ZERO } from '../constants.js'; +import { UserOperationStatus } from '../types.js'; +import type { UserOperationMetadata } from '../types.js'; /** * Converts a user operation metadata object into a transaction metadata object. diff --git a/packages/user-operation-controller/src/utils/validation.test.ts b/packages/user-operation-controller/src/utils/validation.test.ts index e6537f0f422..59a2781a0fe 100644 --- a/packages/user-operation-controller/src/utils/validation.test.ts +++ b/packages/user-operation-controller/src/utils/validation.test.ts @@ -1,24 +1,24 @@ +import { jest } from '@jest/globals'; /* eslint-disable jest/expect-expect */ - import { TransactionType } from '@metamask/transaction-controller'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; import type { PrepareUserOperationResponse, SignUserOperationResponse, UpdateUserOperationResponse, -} from '../types'; +} from '../types.js'; import type { AddUserOperationOptions, AddUserOperationRequest, -} from '../UserOperationController'; +} from '../UserOperationController.js'; import { validateAddUserOperationOptions, validateAddUserOperationRequest, validatePrepareUserOperationResponse, validateSignUserOperationResponse, validateUpdateUserOperationResponse, -} from './validation'; +} from './validation.js'; const ADD_USER_OPERATION_REQUEST_MOCK: AddUserOperationRequest = { data: '0x1', diff --git a/packages/user-operation-controller/src/utils/validation.ts b/packages/user-operation-controller/src/utils/validation.ts index 3e06d4b500f..221575f264d 100644 --- a/packages/user-operation-controller/src/utils/validation.ts +++ b/packages/user-operation-controller/src/utils/validation.ts @@ -14,16 +14,16 @@ import { import { TransactionType } from '@metamask/transaction-controller'; import { isStrictHexString } from '@metamask/utils'; -import { EMPTY_BYTES } from '../constants'; +import { EMPTY_BYTES } from '../constants.js'; import type { PrepareUserOperationResponse, SignUserOperationResponse, UpdateUserOperationResponse, -} from '../types'; +} from '../types.js'; import type { AddUserOperationOptions, AddUserOperationRequest, -} from '../UserOperationController'; +} from '../UserOperationController.js'; /** * Validate a request to add a user operation. From 8099cdce74a8f465d6d6c83377e19ff20c282f64 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:37 +0200 Subject: [PATCH 055/115] ESLint fix and `jest` global import for transaction-controller --- packages/transaction-controller/package.json | 2 +- ...ansactionController-method-action-types.ts | 2 +- .../src/TransactionController.test.ts | 73 +++++++++---------- .../src/TransactionController.ts | 10 +-- .../TransactionControllerIntegration.test.ts | 27 +++---- .../src/api/accounts-api.test.ts | 7 +- .../src/api/accounts-api.ts | 4 +- .../src/api/simulation-api.test.ts | 12 ++- .../src/api/simulation-api.ts | 13 ++-- packages/transaction-controller/src/errors.ts | 2 +- .../src/gas-flows/DefaultGasFeeFlow.test.ts | 8 +- .../src/gas-flows/DefaultGasFeeFlow.ts | 20 +++-- .../src/gas-flows/LineaGasFeeFlow.test.ts | 15 ++-- .../src/gas-flows/LineaGasFeeFlow.ts | 16 ++-- .../gas-flows/MantleLayer1GasFeeFlow.test.ts | 13 ++-- .../src/gas-flows/MantleLayer1GasFeeFlow.ts | 10 +-- .../OptimismLayer1GasFeeFlow.test.ts | 11 +-- .../src/gas-flows/OptimismLayer1GasFeeFlow.ts | 8 +- .../gas-flows/OracleLayer1GasFeeFlow.test.ts | 13 ++-- .../src/gas-flows/OracleLayer1GasFeeFlow.ts | 10 +-- .../RandomisedEstimationsGasFeeFlow.test.ts | 13 ++-- .../RandomisedEstimationsGasFeeFlow.ts | 18 +++-- .../gas-flows/ScrollLayer1GasFeeFlow.test.ts | 10 +-- .../src/gas-flows/ScrollLayer1GasFeeFlow.ts | 8 +- .../src/gas-flows/TestGasFeeFlow.test.ts | 6 +- .../src/gas-flows/TestGasFeeFlow.ts | 4 +- .../src/helpers/GasFeePoller.test.ts | 17 +++-- .../src/helpers/GasFeePoller.ts | 16 ++-- .../src/helpers/MethodDataHelper.test.ts | 7 +- .../src/helpers/MethodDataHelper.ts | 6 +- .../helpers/MultichainTrackingHelper.test.ts | 11 ++- .../src/helpers/MultichainTrackingHelper.ts | 4 +- .../helpers/PendingTransactionTracker.test.ts | 13 ++-- .../src/helpers/PendingTransactionTracker.ts | 18 ++--- .../src/helpers/ResimulateHelper.test.ts | 13 ++-- .../src/helpers/ResimulateHelper.ts | 10 +-- .../src/helpers/TransactionPoller.test.ts | 9 ++- .../src/helpers/TransactionPoller.ts | 10 +-- .../src/hooks/CollectPublishHook.test.ts | 16 ++-- .../src/hooks/CollectPublishHook.ts | 12 ++- .../ExtraTransactionsPublishHook.test.ts | 9 ++- .../hooks/SequentialPublishBatchHook.test.ts | 9 ++- .../src/hooks/SequentialPublishBatchHook.ts | 6 +- packages/transaction-controller/src/index.ts | 26 +++---- packages/transaction-controller/src/types.ts | 2 +- .../src/utils/balance-changes.test.ts | 21 +++--- .../src/utils/balance-changes.ts | 20 ++--- .../src/utils/balance.test.ts | 12 ++- .../src/utils/batch.test.ts | 27 +++---- .../src/utils/eip7702.test.ts | 17 +++-- .../src/utils/eip7702.ts | 12 +-- .../src/utils/external-transactions.test.ts | 6 +- .../src/utils/external-transactions.ts | 4 +- .../src/utils/feature-flags.test.ts | 9 ++- .../src/utils/feature-flags.ts | 8 +- .../src/utils/first-time-interaction.test.ts | 13 ++-- .../src/utils/first-time-interaction.ts | 14 ++-- .../src/utils/gas-fee-tokens.test.ts | 17 +++-- .../src/utils/gas-fees.test.ts | 13 ++-- .../src/utils/gas-fees.ts | 16 ++-- .../src/utils/gas-flow.test.ts | 9 ++- .../src/utils/gas-flow.ts | 12 +-- .../src/utils/gas.test.ts | 31 +++++--- .../transaction-controller/src/utils/gas.ts | 21 +++--- .../src/utils/layer1-gas-fee-flow.test.ts | 11 +-- .../src/utils/layer1-gas-fee-flow.ts | 8 +- .../src/utils/nonce.test.ts | 10 ++- .../transaction-controller/src/utils/nonce.ts | 4 +- .../src/utils/prepare.test.ts | 6 +- .../src/utils/prepare.ts | 4 +- .../src/utils/provider.test.ts | 5 +- .../src/utils/provider.ts | 4 +- .../src/utils/retry.test.ts | 4 +- .../transaction-controller/src/utils/retry.ts | 2 +- .../src/utils/revert-reason.test.ts | 10 ++- .../src/utils/revert-reason.ts | 8 +- .../src/utils/signature.test.ts | 2 +- .../src/utils/swaps.test.ts | 15 ++-- .../transaction-controller/src/utils/swaps.ts | 18 ++--- .../src/utils/transaction-type.test.ts | 11 +-- .../src/utils/transaction-type.ts | 13 ++-- .../src/utils/utils.test.ts | 6 +- .../transaction-controller/src/utils/utils.ts | 8 +- .../src/utils/validation.test.ts | 6 +- .../src/utils/validation.ts | 6 +- .../tests/JsonRpcRequestMocks.ts | 2 +- 86 files changed, 526 insertions(+), 468 deletions(-) diff --git a/packages/transaction-controller/package.json b/packages/transaction-controller/package.json index 57d5a741b5b..55998e2f0c2 100644 --- a/packages/transaction-controller/package.json +++ b/packages/transaction-controller/package.json @@ -73,7 +73,7 @@ "bn.js": "^5.2.1", "eth-method-registry": "^4.0.0", "fast-json-patch": "^3.1.1", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "uuid": "^8.3.2" }, "devDependencies": { diff --git a/packages/transaction-controller/src/TransactionController-method-action-types.ts b/packages/transaction-controller/src/TransactionController-method-action-types.ts index ab865d28b14..194d8a98d4e 100644 --- a/packages/transaction-controller/src/TransactionController-method-action-types.ts +++ b/packages/transaction-controller/src/TransactionController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { TransactionController } from './TransactionController'; +import type { TransactionController } from './TransactionController.js'; /** * Handle new method data request. diff --git a/packages/transaction-controller/src/TransactionController.test.ts b/packages/transaction-controller/src/TransactionController.test.ts index a1c1d072381..54e8ebfe8c2 100644 --- a/packages/transaction-controller/src/TransactionController.test.ts +++ b/packages/transaction-controller/src/TransactionController.test.ts @@ -1,8 +1,7 @@ -/* eslint-disable jest/unbound-method */ +import { jest } from '@jest/globals'; /* eslint-disable @typescript-eslint/naming-convention */ /* eslint-disable camelcase */ /* eslint-disable jest/expect-expect */ - import type { ApprovalControllerAddRequestAction, AddResult, @@ -42,34 +41,34 @@ import assert from 'assert'; // eslint-disable-next-line import-x/namespace import * as uuidModule from 'uuid'; -import { FakeBlockTracker } from '../../../tests/fake-block-tracker'; -import { FakeProvider } from '../../../tests/fake-provider'; -import { flushPromises } from '../../../tests/helpers'; +import { FakeBlockTracker } from '../../../tests/fake-block-tracker.js'; +import { FakeProvider } from '../../../tests/fake-provider.js'; +import { flushPromises } from '../../../tests/helpers.js'; import { buildCustomNetworkClientConfiguration, buildMockFindNetworkClientIdByChainId, buildMockGetNetworkClientById, -} from '../../network-controller/tests/helpers'; -import { CHAIN_IDS } from './constants'; -import { DefaultGasFeeFlow } from './gas-flows/DefaultGasFeeFlow'; -import { LineaGasFeeFlow } from './gas-flows/LineaGasFeeFlow'; -import { RandomisedEstimationsGasFeeFlow } from './gas-flows/RandomisedEstimationsGasFeeFlow'; -import { TestGasFeeFlow } from './gas-flows/TestGasFeeFlow'; +} from '../../network-controller/tests/helpers.js'; +import { CHAIN_IDS } from './constants.js'; +import { DefaultGasFeeFlow } from './gas-flows/DefaultGasFeeFlow.js'; +import { LineaGasFeeFlow } from './gas-flows/LineaGasFeeFlow.js'; +import { RandomisedEstimationsGasFeeFlow } from './gas-flows/RandomisedEstimationsGasFeeFlow.js'; +import { TestGasFeeFlow } from './gas-flows/TestGasFeeFlow.js'; import { updateTransactionGasEstimates, GasFeePoller, -} from './helpers/GasFeePoller'; -import { MethodDataHelper } from './helpers/MethodDataHelper'; -import { MultichainTrackingHelper } from './helpers/MultichainTrackingHelper'; -import { PendingTransactionTracker } from './helpers/PendingTransactionTracker'; -import { shouldResimulate } from './helpers/ResimulateHelper'; -import { ExtraTransactionsPublishHook } from './hooks/ExtraTransactionsPublishHook'; +} from './helpers/GasFeePoller.js'; +import { MethodDataHelper } from './helpers/MethodDataHelper.js'; +import { MultichainTrackingHelper } from './helpers/MultichainTrackingHelper.js'; +import { PendingTransactionTracker } from './helpers/PendingTransactionTracker.js'; +import { shouldResimulate } from './helpers/ResimulateHelper.js'; +import { ExtraTransactionsPublishHook } from './hooks/ExtraTransactionsPublishHook.js'; import type { MethodData, TransactionControllerMessenger, TransactionControllerOptions, -} from './TransactionController'; -import { TransactionController } from './TransactionController'; +} from './TransactionController.js'; +import { TransactionController } from './TransactionController.js'; import type { TransactionMeta, DappSuggestedGasFees, @@ -84,7 +83,7 @@ import type { GasFeeEstimates, SimulationData, GetSimulationConfig, -} from './types'; +} from './types.js'; import { GasFeeEstimateLevel, GasFeeEstimateType, @@ -95,35 +94,35 @@ import { TransactionStatus, TransactionType, WalletDevice, -} from './types'; -import { getBalanceChanges } from './utils/balance-changes'; -import { addTransactionBatch } from './utils/batch'; -import { getDelegationAddress } from './utils/eip7702'; +} from './types.js'; +import { getBalanceChanges } from './utils/balance-changes.js'; +import { addTransactionBatch } from './utils/batch.js'; +import { getDelegationAddress } from './utils/eip7702.js'; import { getSubmitHistoryLimit, getTransactionHistoryLimit, -} from './utils/feature-flags'; -import { updateFirstTimeInteraction } from './utils/first-time-interaction'; +} from './utils/feature-flags.js'; +import { updateFirstTimeInteraction } from './utils/first-time-interaction.js'; +import { getGasFeeTokens } from './utils/gas-fee-tokens.js'; +import { updateGasFees } from './utils/gas-fees.js'; +import { getGasFeeFlow } from './utils/gas-flow.js'; import { addGasBuffer, estimateGas, estimateGasBatch, updateGas, -} from './utils/gas'; -import { getGasFeeTokens } from './utils/gas-fee-tokens'; -import { updateGasFees } from './utils/gas-fees'; -import { getGasFeeFlow } from './utils/gas-flow'; +} from './utils/gas.js'; import { getTransactionLayer1GasFee, updateTransactionLayer1GasFee, -} from './utils/layer1-gas-fee-flow'; -import { rpcRequest } from './utils/provider'; +} from './utils/layer1-gas-fee-flow.js'; +import { rpcRequest } from './utils/provider.js'; import { updatePostTransactionBalance, updateSwapsTransaction, -} from './utils/swaps'; -import * as transactionTypeUtils from './utils/transaction-type'; -import { ErrorCode } from './utils/validation'; +} from './utils/swaps.js'; +import * as transactionTypeUtils from './utils/transaction-type.js'; +import { ErrorCode } from './utils/validation.js'; type AllTransactionControllerActions = MessengerActions; @@ -1325,6 +1324,7 @@ describe('TransactionController', () => { it('updates state when helper emits update event', async () => { const { controller } = setupController(); + // eslint-disable-next-line jest/unbound-method jest.mocked(methodDataHelperMock.hub.on).mock.calls[0][1]({ fourBytePrefix: '0x12345678', methodData: METHOD_DATA_MOCK, @@ -5769,8 +5769,7 @@ describe('TransactionController', () => { }; // Send the transaction to put it in the process of being signed - // eslint-disable-next-line @typescript-eslint/no-floating-promises - controller.approveTransactionsWithSameNonce([mockTransactionParam]); + void controller.approveTransactionsWithSameNonce([mockTransactionParam]); // Now send it one more time to test that it doesn't get signed again const result = await controller.approveTransactionsWithSameNonce([ diff --git a/packages/transaction-controller/src/TransactionController.ts b/packages/transaction-controller/src/TransactionController.ts index 447ecc3d069..39b2f3c3504 100644 --- a/packages/transaction-controller/src/TransactionController.ts +++ b/packages/transaction-controller/src/TransactionController.ts @@ -2354,13 +2354,13 @@ export class TransactionController extends BaseController< // are not fully satisfied. We check both txParams and the base // object as predicate keys can be either. if (key in transaction.txParams) { - // TODO: Replace `any` with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - if (predicate(transaction.txParams[key as any]) === false) { + if ( + predicate( + transaction.txParams[key as keyof TransactionParams], + ) === false + ) { return false; } - // TODO: Replace `any` with type - } else if ( predicate(transaction[key as keyof TransactionMeta]) === false ) { diff --git a/packages/transaction-controller/src/TransactionControllerIntegration.test.ts b/packages/transaction-controller/src/TransactionControllerIntegration.test.ts index 6a577a314c4..b7757e056d4 100644 --- a/packages/transaction-controller/src/TransactionControllerIntegration.test.ts +++ b/packages/transaction-controller/src/TransactionControllerIntegration.test.ts @@ -1,4 +1,5 @@ import type { TypedTransaction, TypedTxData } from '@ethereumjs/tx'; +import { jest } from '@jest/globals'; import type { AccountsControllerActions } from '@metamask/accounts-controller'; import type { ApprovalControllerActions, @@ -35,14 +36,14 @@ import type { RemoteFeatureFlagControllerGetStateAction } from '@metamask/remote import assert from 'assert'; import { v4 as uuidV4 } from 'uuid'; -import { jestAdvanceTime } from '../../../tests/helpers'; -import { mockNetwork } from '../../../tests/mock-network'; +import { jestAdvanceTime } from '../../../tests/helpers.js'; +import { mockNetwork } from '../../../tests/mock-network.js'; import { buildAddNetworkFields, buildCustomNetworkClientConfiguration, buildUpdateNetworkCustomRpcEndpointFields, -} from '../../network-controller/tests/helpers'; -import { getDefaultRemoteFeatureFlagControllerState } from '../../remote-feature-flag-controller/src/remote-feature-flag-controller'; +} from '../../network-controller/tests/helpers.js'; +import { getDefaultRemoteFeatureFlagControllerState } from '../../remote-feature-flag-controller/src/remote-feature-flag-controller.js'; import { buildEthGasPriceRequestMock, buildEthBlockNumberRequestMock, @@ -53,14 +54,14 @@ import { buildEthGetBlockByHashRequestMock, buildEthSendRawTransactionRequestMock, buildEthGetTransactionReceiptRequestMock, -} from '../tests/JsonRpcRequestMocks'; +} from '../tests/JsonRpcRequestMocks.js'; import type { TransactionControllerMessenger, TransactionControllerOptions, -} from './TransactionController'; -import { TransactionController } from './TransactionController'; -import type { InternalAccount } from './types'; -import { TransactionStatus, TransactionType } from './types'; +} from './TransactionController.js'; +import { TransactionController } from './TransactionController.js'; +import type { InternalAccount } from './types.js'; +import { TransactionStatus, TransactionType } from './types.js'; jest.mock('uuid', () => { const actual = jest.requireActual('uuid'); @@ -1316,9 +1317,7 @@ describe('TransactionController Integration', () => { ]); expect(secondNonceLockIfAcquired).toBeNull(); - // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/await-thenable - await firstNonceLock.releaseLock(); + firstNonceLock.releaseLock(); await jestAdvanceTime({ duration: 1 }); secondNonceLockIfAcquired = await Promise.race([ @@ -1409,9 +1408,7 @@ describe('TransactionController Integration', () => { ]); expect(secondNonceLockIfAcquired).toBeNull(); - // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/await-thenable - await firstNonceLock.releaseLock(); + firstNonceLock.releaseLock(); await jestAdvanceTime({ duration: 1 }); secondNonceLockIfAcquired = await Promise.race([ diff --git a/packages/transaction-controller/src/api/accounts-api.test.ts b/packages/transaction-controller/src/api/accounts-api.test.ts index fbcc6fc196a..de6ed638098 100644 --- a/packages/transaction-controller/src/api/accounts-api.test.ts +++ b/packages/transaction-controller/src/api/accounts-api.test.ts @@ -1,8 +1,9 @@ +import { jest } from '@jest/globals'; import { successfulFetch } from '@metamask/controller-utils'; -import { FirstTimeInteractionError } from '../errors'; -import type { GetAccountAddressRelationshipRequest } from './accounts-api'; -import { getAccountAddressRelationship } from './accounts-api'; +import { FirstTimeInteractionError } from '../errors.js'; +import type { GetAccountAddressRelationshipRequest } from './accounts-api.js'; +import { getAccountAddressRelationship } from './accounts-api.js'; jest.mock('@metamask/controller-utils', () => ({ ...jest.requireActual('@metamask/controller-utils'), diff --git a/packages/transaction-controller/src/api/accounts-api.ts b/packages/transaction-controller/src/api/accounts-api.ts index 69fd3235112..4684955ece8 100644 --- a/packages/transaction-controller/src/api/accounts-api.ts +++ b/packages/transaction-controller/src/api/accounts-api.ts @@ -1,8 +1,8 @@ import { successfulFetch } from '@metamask/controller-utils'; import { createModuleLogger } from '@metamask/utils'; -import { FirstTimeInteractionError } from '../errors'; -import { projectLogger } from '../logger'; +import { FirstTimeInteractionError } from '../errors.js'; +import { projectLogger } from '../logger.js'; export type AccountAddressRelationshipResponse = { chainId?: number; diff --git a/packages/transaction-controller/src/api/simulation-api.test.ts b/packages/transaction-controller/src/api/simulation-api.test.ts index c70e5f2d527..42976f8c33f 100644 --- a/packages/transaction-controller/src/api/simulation-api.test.ts +++ b/packages/transaction-controller/src/api/simulation-api.test.ts @@ -1,10 +1,14 @@ +import { jest } from '@jest/globals'; import type { Hex } from '@metamask/utils'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; import type { GetSimulationConfig } from 'src'; -import { CHAIN_IDS, DELEGATION_MANAGER_ADDRESSES } from '../constants'; -import type { SimulationRequest, SimulationResponse } from './simulation-api'; -import { simulateTransactions } from './simulation-api'; +import { CHAIN_IDS, DELEGATION_MANAGER_ADDRESSES } from '../constants.js'; +import type { + SimulationRequest, + SimulationResponse, +} from './simulation-api.js'; +import { simulateTransactions } from './simulation-api.js'; const CHAIN_ID_MOCK = '0x1'; const CHAIN_ID_MOCK_DECIMAL = 1; diff --git a/packages/transaction-controller/src/api/simulation-api.ts b/packages/transaction-controller/src/api/simulation-api.ts index 4cdd3bfa795..ff16cbbb050 100644 --- a/packages/transaction-controller/src/api/simulation-api.ts +++ b/packages/transaction-controller/src/api/simulation-api.ts @@ -1,15 +1,18 @@ import { convertHexToDecimal } from '@metamask/controller-utils'; import { createModuleLogger } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; import { CODE_DELEGATION_MANAGER_NO_SIGNATURE_ERRORS, DELEGATION_MANAGER_ADDRESSES, -} from '../constants'; -import { SimulationChainNotSupportedError, SimulationError } from '../errors'; -import { projectLogger } from '../logger'; -import type { GetSimulationConfig } from '../types'; +} from '../constants.js'; +import { + SimulationChainNotSupportedError, + SimulationError, +} from '../errors.js'; +import { projectLogger } from '../logger.js'; +import type { GetSimulationConfig } from '../types.js'; const log = createModuleLogger(projectLogger, 'simulation-api'); diff --git a/packages/transaction-controller/src/errors.ts b/packages/transaction-controller/src/errors.ts index 53f79810aa5..d4e83a8888c 100644 --- a/packages/transaction-controller/src/errors.ts +++ b/packages/transaction-controller/src/errors.ts @@ -1,6 +1,6 @@ import type { Hex } from '@metamask/utils'; -import { SimulationErrorCode } from './types'; +import { SimulationErrorCode } from './types.js'; export class SimulationError extends Error { code?: string | number; diff --git a/packages/transaction-controller/src/gas-flows/DefaultGasFeeFlow.test.ts b/packages/transaction-controller/src/gas-flows/DefaultGasFeeFlow.test.ts index 97bdcf42f48..b253d1438e1 100644 --- a/packages/transaction-controller/src/gas-flows/DefaultGasFeeFlow.test.ts +++ b/packages/transaction-controller/src/gas-flows/DefaultGasFeeFlow.test.ts @@ -6,15 +6,15 @@ import type { } from '@metamask/gas-fee-controller'; import { GAS_ESTIMATE_TYPES } from '@metamask/gas-fee-controller'; -import type { TransactionControllerMessenger } from '../TransactionController'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; import type { FeeMarketGasFeeEstimates, GasPriceGasFeeEstimates, LegacyGasFeeEstimates, TransactionMeta, -} from '../types'; -import { GasFeeEstimateType, TransactionStatus } from '../types'; -import { DefaultGasFeeFlow } from './DefaultGasFeeFlow'; +} from '../types.js'; +import { GasFeeEstimateType, TransactionStatus } from '../types.js'; +import { DefaultGasFeeFlow } from './DefaultGasFeeFlow.js'; const TRANSACTION_META_MOCK: TransactionMeta = { id: '1', diff --git a/packages/transaction-controller/src/gas-flows/DefaultGasFeeFlow.ts b/packages/transaction-controller/src/gas-flows/DefaultGasFeeFlow.ts index 1810023ec5a..bce353044ca 100644 --- a/packages/transaction-controller/src/gas-flows/DefaultGasFeeFlow.ts +++ b/packages/transaction-controller/src/gas-flows/DefaultGasFeeFlow.ts @@ -7,7 +7,7 @@ import { GAS_ESTIMATE_TYPES } from '@metamask/gas-fee-controller'; import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; -import { projectLogger } from '../logger'; +import { projectLogger } from '../logger.js'; import type { FeeMarketGasFeeEstimateForLevel, FeeMarketGasFeeEstimates, @@ -17,9 +17,9 @@ import type { GasFeeFlowResponse, GasPriceGasFeeEstimates, LegacyGasFeeEstimates, -} from '../types'; -import { GasFeeEstimateLevel, GasFeeEstimateType } from '../types'; -import { gweiDecimalToWeiHex } from '../utils/gas-fees'; +} from '../types.js'; +import { GasFeeEstimateLevel, GasFeeEstimateType } from '../types.js'; +import { gweiDecimalToWeiHex } from '../utils/gas-fees.js'; const log = createModuleLogger(projectLogger, 'default-gas-fee-flow'); @@ -62,7 +62,9 @@ export class DefaultGasFeeFlow implements GasFeeFlow { #getFeeMarkEstimates( gasFeeEstimates: FeeMarketGasPriceEstimate, ): FeeMarketGasFeeEstimates { - const levels = Object.values(GasFeeEstimateLevel).reduce( + const levels = Object.values(GasFeeEstimateLevel).reduce< + Omit + >( (result, level) => ({ ...result, [level]: this.#getFeeMarketLevel(gasFeeEstimates, level), @@ -72,14 +74,16 @@ export class DefaultGasFeeFlow implements GasFeeFlow { return { type: GasFeeEstimateType.FeeMarket, - ...levels, - }; + ...(levels as Omit), + } as FeeMarketGasFeeEstimates; } #getLegacyEstimates( gasFeeEstimates: LegacyGasPriceEstimate, ): LegacyGasFeeEstimates { - const levels = Object.values(GasFeeEstimateLevel).reduce( + const levels = Object.values(GasFeeEstimateLevel).reduce< + Omit + >( (result, level) => ({ ...result, [level]: this.#getLegacyLevel(gasFeeEstimates, level), diff --git a/packages/transaction-controller/src/gas-flows/LineaGasFeeFlow.test.ts b/packages/transaction-controller/src/gas-flows/LineaGasFeeFlow.test.ts index 2988ce3f262..67813190591 100644 --- a/packages/transaction-controller/src/gas-flows/LineaGasFeeFlow.test.ts +++ b/packages/transaction-controller/src/gas-flows/LineaGasFeeFlow.test.ts @@ -1,22 +1,23 @@ +import { jest } from '@jest/globals'; import type { GasFeeState } from '@metamask/gas-fee-controller'; import { GAS_ESTIMATE_TYPES } from '@metamask/gas-fee-controller'; -import { CHAIN_IDS } from '../constants'; -import type { TransactionControllerMessenger } from '../TransactionController'; +import { CHAIN_IDS } from '../constants.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; import type { FeeMarketGasFeeEstimates, GasFeeFlowRequest, GasFeeFlowResponse, TransactionMeta, -} from '../types'; +} from '../types.js'; import { GasFeeEstimateLevel, GasFeeEstimateType, TransactionStatus, -} from '../types'; -import { rpcRequest } from '../utils/provider'; -import { DefaultGasFeeFlow } from './DefaultGasFeeFlow'; -import { LineaGasFeeFlow } from './LineaGasFeeFlow'; +} from '../types.js'; +import { rpcRequest } from '../utils/provider.js'; +import { DefaultGasFeeFlow } from './DefaultGasFeeFlow.js'; +import { LineaGasFeeFlow } from './LineaGasFeeFlow.js'; jest.mock('../utils/provider', () => ({ rpcRequest: jest.fn(), diff --git a/packages/transaction-controller/src/gas-flows/LineaGasFeeFlow.ts b/packages/transaction-controller/src/gas-flows/LineaGasFeeFlow.ts index fcdadaf94f5..510fb5a227d 100644 --- a/packages/transaction-controller/src/gas-flows/LineaGasFeeFlow.ts +++ b/packages/transaction-controller/src/gas-flows/LineaGasFeeFlow.ts @@ -4,18 +4,18 @@ import { createModuleLogger } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; import type BN from 'bn.js'; -import { projectLogger } from '../logger'; -import type { TransactionControllerMessenger } from '../TransactionController'; +import { projectLogger } from '../logger.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; import type { GasFeeEstimates, GasFeeFlow, GasFeeFlowRequest, GasFeeFlowResponse, TransactionMeta, -} from '../types'; -import { GasFeeEstimateLevel, GasFeeEstimateType } from '../types'; -import { rpcRequest } from '../utils/provider'; -import { DefaultGasFeeFlow } from './DefaultGasFeeFlow'; +} from '../types.js'; +import { GasFeeEstimateLevel, GasFeeEstimateType } from '../types.js'; +import { rpcRequest } from '../utils/provider.js'; +import { DefaultGasFeeFlow } from './DefaultGasFeeFlow.js'; type LineaEstimateGasResponse = { baseFeePerGas: Hex; @@ -102,7 +102,9 @@ export class LineaGasFeeFlow implements GasFeeFlow { log('Generated max fees', this.#feesToString(maxFees)); - const estimates = Object.values(GasFeeEstimateLevel).reduce( + const estimates = Object.values( + GasFeeEstimateLevel, + ).reduce( (result, level) => ({ ...result, [level]: { diff --git a/packages/transaction-controller/src/gas-flows/MantleLayer1GasFeeFlow.test.ts b/packages/transaction-controller/src/gas-flows/MantleLayer1GasFeeFlow.test.ts index e6528702e90..1a851280ef5 100644 --- a/packages/transaction-controller/src/gas-flows/MantleLayer1GasFeeFlow.test.ts +++ b/packages/transaction-controller/src/gas-flows/MantleLayer1GasFeeFlow.test.ts @@ -1,17 +1,18 @@ import { TransactionFactory } from '@ethereumjs/tx'; import type { TypedTransaction } from '@ethereumjs/tx'; import { Contract } from '@ethersproject/contracts'; +import { jest } from '@jest/globals'; import type { Provider } from '@metamask/network-controller'; import { add0x } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; import BN from 'bn.js'; -import { CHAIN_IDS } from '../constants'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import { TransactionStatus } from '../types'; -import type { Layer1GasFeeFlowRequest, TransactionMeta } from '../types'; -import { bnFromHex, padHexToEvenLength } from '../utils/utils'; -import { MantleLayer1GasFeeFlow } from './MantleLayer1GasFeeFlow'; +import { CHAIN_IDS } from '../constants.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import { TransactionStatus } from '../types.js'; +import type { Layer1GasFeeFlowRequest, TransactionMeta } from '../types.js'; +import { bnFromHex, padHexToEvenLength } from '../utils/utils.js'; +import { MantleLayer1GasFeeFlow } from './MantleLayer1GasFeeFlow.js'; jest.mock('@ethersproject/contracts', () => ({ Contract: jest.fn(), diff --git a/packages/transaction-controller/src/gas-flows/MantleLayer1GasFeeFlow.ts b/packages/transaction-controller/src/gas-flows/MantleLayer1GasFeeFlow.ts index faae3cf5094..e9f05ece807 100644 --- a/packages/transaction-controller/src/gas-flows/MantleLayer1GasFeeFlow.ts +++ b/packages/transaction-controller/src/gas-flows/MantleLayer1GasFeeFlow.ts @@ -4,11 +4,11 @@ import type { ExternalProvider } from '@ethersproject/providers'; import type { Hex } from '@metamask/utils'; import type BN from 'bn.js'; -import { CHAIN_IDS } from '../constants'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import type { Layer1GasFeeFlowRequest, TransactionMeta } from '../types'; -import { toBN } from '../utils/utils'; -import { OracleLayer1GasFeeFlow } from './OracleLayer1GasFeeFlow'; +import { CHAIN_IDS } from '../constants.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { Layer1GasFeeFlowRequest, TransactionMeta } from '../types.js'; +import { toBN } from '../utils/utils.js'; +import { OracleLayer1GasFeeFlow } from './OracleLayer1GasFeeFlow.js'; const MANTLE_CHAIN_IDS: Hex[] = [CHAIN_IDS.MANTLE, CHAIN_IDS.MANTLE_SEPOLIA]; diff --git a/packages/transaction-controller/src/gas-flows/OptimismLayer1GasFeeFlow.test.ts b/packages/transaction-controller/src/gas-flows/OptimismLayer1GasFeeFlow.test.ts index b8b078e1e9a..76c3b152216 100644 --- a/packages/transaction-controller/src/gas-flows/OptimismLayer1GasFeeFlow.test.ts +++ b/packages/transaction-controller/src/gas-flows/OptimismLayer1GasFeeFlow.test.ts @@ -1,12 +1,13 @@ +import { jest } from '@jest/globals'; import * as ControllerUtils from '@metamask/controller-utils'; import { hexToNumber } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { CHAIN_IDS } from '../constants'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import type { TransactionMeta } from '../types'; -import { TransactionStatus } from '../types'; -import { OptimismLayer1GasFeeFlow } from './OptimismLayer1GasFeeFlow'; +import { CHAIN_IDS } from '../constants.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { TransactionMeta } from '../types.js'; +import { TransactionStatus } from '../types.js'; +import { OptimismLayer1GasFeeFlow } from './OptimismLayer1GasFeeFlow.js'; jest.mock('@metamask/controller-utils', () => { const actual = jest.requireActual('@metamask/controller-utils'); diff --git a/packages/transaction-controller/src/gas-flows/OptimismLayer1GasFeeFlow.ts b/packages/transaction-controller/src/gas-flows/OptimismLayer1GasFeeFlow.ts index 5c5e6cd0151..8378bfcdf4b 100644 --- a/packages/transaction-controller/src/gas-flows/OptimismLayer1GasFeeFlow.ts +++ b/packages/transaction-controller/src/gas-flows/OptimismLayer1GasFeeFlow.ts @@ -2,10 +2,10 @@ import { handleFetch } from '@metamask/controller-utils'; import { hexToNumber } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { CHAIN_IDS } from '../constants'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import type { TransactionMeta } from '../types'; -import { OracleLayer1GasFeeFlow } from './OracleLayer1GasFeeFlow'; +import { CHAIN_IDS } from '../constants.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { TransactionMeta } from '../types.js'; +import { OracleLayer1GasFeeFlow } from './OracleLayer1GasFeeFlow.js'; const FALLBACK_OPTIMISM_STACK_CHAIN_IDS: Hex[] = [ CHAIN_IDS.OPTIMISM, diff --git a/packages/transaction-controller/src/gas-flows/OracleLayer1GasFeeFlow.test.ts b/packages/transaction-controller/src/gas-flows/OracleLayer1GasFeeFlow.test.ts index 53300918f4a..6ec985b1548 100644 --- a/packages/transaction-controller/src/gas-flows/OracleLayer1GasFeeFlow.test.ts +++ b/packages/transaction-controller/src/gas-flows/OracleLayer1GasFeeFlow.test.ts @@ -1,17 +1,18 @@ import type { TypedTransaction } from '@ethereumjs/tx'; import { TransactionFactory } from '@ethereumjs/tx'; import { Contract } from '@ethersproject/contracts'; +import { jest } from '@jest/globals'; import type { Provider } from '@metamask/network-controller'; import { add0x } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; import BN from 'bn.js'; -import { CHAIN_IDS } from '../constants'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import { TransactionStatus } from '../types'; -import type { Layer1GasFeeFlowRequest, TransactionMeta } from '../types'; -import { bnFromHex, padHexToEvenLength } from '../utils/utils'; -import { OracleLayer1GasFeeFlow } from './OracleLayer1GasFeeFlow'; +import { CHAIN_IDS } from '../constants.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import { TransactionStatus } from '../types.js'; +import type { Layer1GasFeeFlowRequest, TransactionMeta } from '../types.js'; +import { bnFromHex, padHexToEvenLength } from '../utils/utils.js'; +import { OracleLayer1GasFeeFlow } from './OracleLayer1GasFeeFlow.js'; jest.mock('@ethersproject/contracts', () => ({ Contract: jest.fn(), diff --git a/packages/transaction-controller/src/gas-flows/OracleLayer1GasFeeFlow.ts b/packages/transaction-controller/src/gas-flows/OracleLayer1GasFeeFlow.ts index e76586b2a7b..be7ff8adb14 100644 --- a/packages/transaction-controller/src/gas-flows/OracleLayer1GasFeeFlow.ts +++ b/packages/transaction-controller/src/gas-flows/OracleLayer1GasFeeFlow.ts @@ -5,16 +5,16 @@ import type { Hex } from '@metamask/utils'; import { add0x, createModuleLogger } from '@metamask/utils'; import BN from 'bn.js'; -import { projectLogger } from '../logger'; -import type { TransactionControllerMessenger } from '../TransactionController'; +import { projectLogger } from '../logger.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; import type { Layer1GasFeeFlow, Layer1GasFeeFlowRequest, Layer1GasFeeFlowResponse, TransactionMeta, -} from '../types'; -import { prepareTransaction } from '../utils/prepare'; -import { padHexToEvenLength, toBN } from '../utils/utils'; +} from '../types.js'; +import { prepareTransaction } from '../utils/prepare.js'; +import { padHexToEvenLength, toBN } from '../utils/utils.js'; const log = createModuleLogger(projectLogger, 'oracle-layer1-gas-fee-flow'); diff --git a/packages/transaction-controller/src/gas-flows/RandomisedEstimationsGasFeeFlow.test.ts b/packages/transaction-controller/src/gas-flows/RandomisedEstimationsGasFeeFlow.test.ts index 184528d5d70..6a61f51b689 100644 --- a/packages/transaction-controller/src/gas-flows/RandomisedEstimationsGasFeeFlow.test.ts +++ b/packages/transaction-controller/src/gas-flows/RandomisedEstimationsGasFeeFlow.test.ts @@ -1,25 +1,26 @@ +import { jest } from '@jest/globals'; import { toHex } from '@metamask/controller-utils'; import { GAS_ESTIMATE_TYPES } from '@metamask/gas-fee-controller'; import type { GasFeeState } from '@metamask/gas-fee-controller'; -import type { TransactionControllerMessenger } from '../TransactionController'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; import type { FeeMarketGasFeeEstimates, GasPriceGasFeeEstimates, LegacyGasFeeEstimates, TransactionMeta, -} from '../types'; +} from '../types.js'; import { GasFeeEstimateLevel, GasFeeEstimateType, TransactionStatus, -} from '../types'; -import { getGasFeeRandomisation } from '../utils/feature-flags'; -import { DefaultGasFeeFlow } from './DefaultGasFeeFlow'; +} from '../types.js'; +import { getGasFeeRandomisation } from '../utils/feature-flags.js'; +import { DefaultGasFeeFlow } from './DefaultGasFeeFlow.js'; import { RandomisedEstimationsGasFeeFlow, randomiseDecimalGWEIAndConvertToHex, -} from './RandomisedEstimationsGasFeeFlow'; +} from './RandomisedEstimationsGasFeeFlow.js'; jest.mock('./DefaultGasFeeFlow'); jest.mock('../utils/feature-flags'); diff --git a/packages/transaction-controller/src/gas-flows/RandomisedEstimationsGasFeeFlow.ts b/packages/transaction-controller/src/gas-flows/RandomisedEstimationsGasFeeFlow.ts index 0b19594e78b..fa803271ca8 100644 --- a/packages/transaction-controller/src/gas-flows/RandomisedEstimationsGasFeeFlow.ts +++ b/packages/transaction-controller/src/gas-flows/RandomisedEstimationsGasFeeFlow.ts @@ -3,8 +3,8 @@ import { GAS_ESTIMATE_TYPES } from '@metamask/gas-fee-controller'; import { add0x, createModuleLogger } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { projectLogger } from '../logger'; -import type { TransactionControllerMessenger } from '../TransactionController'; +import { projectLogger } from '../logger.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; import type { FeeMarketGasFeeEstimateForLevel, FeeMarketGasFeeEstimates, @@ -12,14 +12,14 @@ import type { GasFeeFlowRequest, GasFeeFlowResponse, TransactionMeta, -} from '../types'; -import { GasFeeEstimateLevel, GasFeeEstimateType } from '../types'; -import { getGasFeeRandomisation } from '../utils/feature-flags'; +} from '../types.js'; +import { GasFeeEstimateLevel, GasFeeEstimateType } from '../types.js'; +import { getGasFeeRandomisation } from '../utils/feature-flags.js'; import { gweiDecimalToWeiDecimal, gweiDecimalToWeiHex, -} from '../utils/gas-fees'; -import { DefaultGasFeeFlow } from './DefaultGasFeeFlow'; +} from '../utils/gas-fees.js'; +import { DefaultGasFeeFlow } from './DefaultGasFeeFlow.js'; const log = createModuleLogger( projectLogger, @@ -105,7 +105,9 @@ export class RandomisedEstimationsGasFeeFlow implements GasFeeFlow { lastNDigits: number, preservedNumberOfDigits: number, ): FeeMarketGasFeeEstimates { - const levels = Object.values(GasFeeEstimateLevel).reduce( + const levels = Object.values(GasFeeEstimateLevel).reduce< + Omit + >( (result, level) => ({ ...result, [level]: this.#getRandomisedFeeMarketLevel( diff --git a/packages/transaction-controller/src/gas-flows/ScrollLayer1GasFeeFlow.test.ts b/packages/transaction-controller/src/gas-flows/ScrollLayer1GasFeeFlow.test.ts index afe58af2b74..c46ae5245f0 100644 --- a/packages/transaction-controller/src/gas-flows/ScrollLayer1GasFeeFlow.test.ts +++ b/packages/transaction-controller/src/gas-flows/ScrollLayer1GasFeeFlow.test.ts @@ -1,10 +1,10 @@ import type { Hex } from '@metamask/utils'; -import { CHAIN_IDS } from '../constants'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import type { TransactionMeta } from '../types'; -import { TransactionStatus } from '../types'; -import { ScrollLayer1GasFeeFlow } from './ScrollLayer1GasFeeFlow'; +import { CHAIN_IDS } from '../constants.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { TransactionMeta } from '../types.js'; +import { TransactionStatus } from '../types.js'; +import { ScrollLayer1GasFeeFlow } from './ScrollLayer1GasFeeFlow.js'; const TRANSACTION_META_MOCK: TransactionMeta = { id: '1', diff --git a/packages/transaction-controller/src/gas-flows/ScrollLayer1GasFeeFlow.ts b/packages/transaction-controller/src/gas-flows/ScrollLayer1GasFeeFlow.ts index 6f1f3127406..25f98109121 100644 --- a/packages/transaction-controller/src/gas-flows/ScrollLayer1GasFeeFlow.ts +++ b/packages/transaction-controller/src/gas-flows/ScrollLayer1GasFeeFlow.ts @@ -1,9 +1,9 @@ import type { Hex } from '@metamask/utils'; -import { CHAIN_IDS } from '../constants'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import type { TransactionMeta } from '../types'; -import { OracleLayer1GasFeeFlow } from './OracleLayer1GasFeeFlow'; +import { CHAIN_IDS } from '../constants.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { TransactionMeta } from '../types.js'; +import { OracleLayer1GasFeeFlow } from './OracleLayer1GasFeeFlow.js'; const SCROLL_CHAIN_IDS: Hex[] = [CHAIN_IDS.SCROLL, CHAIN_IDS.SCROLL_SEPOLIA]; diff --git a/packages/transaction-controller/src/gas-flows/TestGasFeeFlow.test.ts b/packages/transaction-controller/src/gas-flows/TestGasFeeFlow.test.ts index be03eda14b5..6267a52d1e4 100644 --- a/packages/transaction-controller/src/gas-flows/TestGasFeeFlow.test.ts +++ b/packages/transaction-controller/src/gas-flows/TestGasFeeFlow.test.ts @@ -1,6 +1,6 @@ -import { GasFeeEstimateType } from '../types'; -import type { GasFeeFlowRequest } from '../types'; -import { TestGasFeeFlow } from './TestGasFeeFlow'; +import { GasFeeEstimateType } from '../types.js'; +import type { GasFeeFlowRequest } from '../types.js'; +import { TestGasFeeFlow } from './TestGasFeeFlow.js'; describe('TestGasFeeFlow', () => { describe('matchesTransaction', () => { diff --git a/packages/transaction-controller/src/gas-flows/TestGasFeeFlow.ts b/packages/transaction-controller/src/gas-flows/TestGasFeeFlow.ts index 95bfb1212de..0659f76e95b 100644 --- a/packages/transaction-controller/src/gas-flows/TestGasFeeFlow.ts +++ b/packages/transaction-controller/src/gas-flows/TestGasFeeFlow.ts @@ -1,12 +1,12 @@ import { toHex } from '@metamask/controller-utils'; import type { Hex } from '@metamask/utils'; -import { GasFeeEstimateType } from '../types'; +import { GasFeeEstimateType } from '../types.js'; import type { GasFeeFlow, GasFeeFlowRequest, GasFeeFlowResponse, -} from '../types'; +} from '../types.js'; const INCREMENT = 1e15; // 0.001 ETH const LEVEL_DIFFERENCE = 0.5; diff --git a/packages/transaction-controller/src/helpers/GasFeePoller.test.ts b/packages/transaction-controller/src/helpers/GasFeePoller.test.ts index eb9971571bc..3fc40e125b6 100644 --- a/packages/transaction-controller/src/helpers/GasFeePoller.test.ts +++ b/packages/transaction-controller/src/helpers/GasFeePoller.test.ts @@ -1,28 +1,29 @@ +import { jest } from '@jest/globals'; /* eslint-disable no-new */ import type { Hex } from '@metamask/utils'; -import { flushPromises } from '../../../../tests/helpers'; -import { DefaultGasFeeFlow } from '../gas-flows/DefaultGasFeeFlow'; -import type { TransactionControllerMessenger } from '../TransactionController'; +import { flushPromises } from '../../../../tests/helpers.js'; +import { DefaultGasFeeFlow } from '../gas-flows/DefaultGasFeeFlow.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; import { GasFeeEstimateLevel, GasFeeEstimateType, TransactionEnvelopeType, TransactionStatus, UserFeeLevel, -} from '../types'; +} from '../types.js'; import type { GasFeeFlowResponse, Layer1GasFeeFlow, TransactionBatchMeta, -} from '../types'; -import type { GasFeeFlow, GasFeeEstimates, TransactionMeta } from '../types'; -import { getTransactionLayer1GasFee } from '../utils/layer1-gas-fee-flow'; +} from '../types.js'; +import type { GasFeeFlow, GasFeeEstimates, TransactionMeta } from '../types.js'; +import { getTransactionLayer1GasFee } from '../utils/layer1-gas-fee-flow.js'; import { GasFeePoller, updateTransactionGasProperties, updateTransactionGasEstimates, -} from './GasFeePoller'; +} from './GasFeePoller.js'; jest.mock('../utils/feature-flags'); jest.mock('../utils/layer1-gas-fee-flow', () => ({ diff --git a/packages/transaction-controller/src/helpers/GasFeePoller.ts b/packages/transaction-controller/src/helpers/GasFeePoller.ts index 06ff0c1fd3a..38218478a16 100644 --- a/packages/transaction-controller/src/helpers/GasFeePoller.ts +++ b/packages/transaction-controller/src/helpers/GasFeePoller.ts @@ -9,9 +9,9 @@ import { createModuleLogger } from '@metamask/utils'; // eslint-disable-next-line import-x/no-nodejs-modules import EventEmitter from 'events'; -import { DefaultGasFeeFlow } from '../gas-flows/DefaultGasFeeFlow'; -import { projectLogger } from '../logger'; -import type { TransactionControllerMessenger } from '../TransactionController'; +import { DefaultGasFeeFlow } from '../gas-flows/DefaultGasFeeFlow.js'; +import { projectLogger } from '../logger.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; import type { GasFeeEstimates, GasFeeFlow, @@ -20,16 +20,16 @@ import type { TransactionMeta, TransactionParams, TransactionBatchMeta, -} from '../types'; +} from '../types.js'; import { GasFeeEstimateLevel, GasFeeEstimateType, TransactionStatus, TransactionEnvelopeType, -} from '../types'; -import { getGasFeeFlow } from '../utils/gas-flow'; -import { getTransactionLayer1GasFee } from '../utils/layer1-gas-fee-flow'; -import { getNetworkClientId } from '../utils/provider'; +} from '../types.js'; +import { getGasFeeFlow } from '../utils/gas-flow.js'; +import { getTransactionLayer1GasFee } from '../utils/layer1-gas-fee-flow.js'; +import { getNetworkClientId } from '../utils/provider.js'; const log = createModuleLogger(projectLogger, 'gas-fee-poller'); diff --git a/packages/transaction-controller/src/helpers/MethodDataHelper.test.ts b/packages/transaction-controller/src/helpers/MethodDataHelper.test.ts index 728bb4e9c75..c26235f9ec2 100644 --- a/packages/transaction-controller/src/helpers/MethodDataHelper.test.ts +++ b/packages/transaction-controller/src/helpers/MethodDataHelper.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; import { MethodRegistry } from 'eth-method-registry'; import type { MethodData, TransactionControllerMessenger, -} from '../TransactionController'; -import { getProvider } from '../utils/provider'; -import { MethodDataHelper } from './MethodDataHelper'; +} from '../TransactionController.js'; +import { getProvider } from '../utils/provider.js'; +import { MethodDataHelper } from './MethodDataHelper.js'; jest.mock('eth-method-registry'); diff --git a/packages/transaction-controller/src/helpers/MethodDataHelper.ts b/packages/transaction-controller/src/helpers/MethodDataHelper.ts index 15608fcc9ad..ef352dee207 100644 --- a/packages/transaction-controller/src/helpers/MethodDataHelper.ts +++ b/packages/transaction-controller/src/helpers/MethodDataHelper.ts @@ -6,12 +6,12 @@ import { MethodRegistry } from 'eth-method-registry'; // eslint-disable-next-line import-x/no-nodejs-modules import EventEmitter from 'events'; -import { projectLogger } from '../logger'; +import { projectLogger } from '../logger.js'; import type { MethodData, TransactionControllerMessenger, -} from '../TransactionController'; -import { getProvider } from '../utils/provider'; +} from '../TransactionController.js'; +import { getProvider } from '../utils/provider.js'; const log = createModuleLogger(projectLogger, 'method-data'); diff --git a/packages/transaction-controller/src/helpers/MultichainTrackingHelper.test.ts b/packages/transaction-controller/src/helpers/MultichainTrackingHelper.test.ts index 95d42992e9e..de74b8f9261 100644 --- a/packages/transaction-controller/src/helpers/MultichainTrackingHelper.test.ts +++ b/packages/transaction-controller/src/helpers/MultichainTrackingHelper.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { ChainId, NetworkType } from '@metamask/controller-utils'; import type { NetworkClientId, @@ -7,12 +8,12 @@ import type { import type { NonceTracker } from '@metamask/nonce-tracker'; import type { Hex } from '@metamask/utils'; -import { jestAdvanceTime } from '../../../../tests/helpers'; +import { jestAdvanceTime } from '../../../../tests/helpers.js'; import { MultichainTrackingHelper, MultichainTrackingHelperOptions, -} from './MultichainTrackingHelper'; -import type { PendingTransactionTracker } from './PendingTransactionTracker'; +} from './MultichainTrackingHelper.js'; +import type { PendingTransactionTracker } from './PendingTransactionTracker.js'; jest.mock( '@metamask/eth-query', @@ -513,9 +514,7 @@ describe('MultichainTrackingHelper', () => { ]); expect(secondReleaseLockIfAcquired).toBeNull(); - // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/await-thenable - await firstReleaseLock(); + firstReleaseLock(); await jestAdvanceTime({ duration: 1 }); secondReleaseLockIfAcquired = await Promise.race([ diff --git a/packages/transaction-controller/src/helpers/MultichainTrackingHelper.ts b/packages/transaction-controller/src/helpers/MultichainTrackingHelper.ts index 5b884376c19..8c432ad4bb1 100644 --- a/packages/transaction-controller/src/helpers/MultichainTrackingHelper.ts +++ b/packages/transaction-controller/src/helpers/MultichainTrackingHelper.ts @@ -10,8 +10,8 @@ import type { NonceLock, NonceTracker } from '@metamask/nonce-tracker'; import type { Hex } from '@metamask/utils'; import { Mutex } from 'async-mutex'; -import { createModuleLogger, projectLogger } from '../logger'; -import type { PendingTransactionTracker } from './PendingTransactionTracker'; +import { createModuleLogger, projectLogger } from '../logger.js'; +import type { PendingTransactionTracker } from './PendingTransactionTracker.js'; /** * Registry of network clients provided by the NetworkController diff --git a/packages/transaction-controller/src/helpers/PendingTransactionTracker.test.ts b/packages/transaction-controller/src/helpers/PendingTransactionTracker.test.ts index 4744e5e0032..7d29d80a583 100644 --- a/packages/transaction-controller/src/helpers/PendingTransactionTracker.test.ts +++ b/packages/transaction-controller/src/helpers/PendingTransactionTracker.test.ts @@ -1,13 +1,14 @@ +import { jest } from '@jest/globals'; import type { BlockTracker } from '@metamask/network-controller'; import { Json } from '@metamask/utils'; import { freeze } from 'immer'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import type { TransactionMeta } from '../types'; -import { TransactionStatus } from '../types'; -import { rpcRequest } from '../utils/provider'; -import { PendingTransactionTracker } from './PendingTransactionTracker'; -import { TransactionPoller } from './TransactionPoller'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { TransactionMeta } from '../types.js'; +import { TransactionStatus } from '../types.js'; +import { rpcRequest } from '../utils/provider.js'; +import { PendingTransactionTracker } from './PendingTransactionTracker.js'; +import { TransactionPoller } from './TransactionPoller.js'; const ID_MOCK = 'testId'; const CHAIN_ID_MOCK = '0x1'; diff --git a/packages/transaction-controller/src/helpers/PendingTransactionTracker.ts b/packages/transaction-controller/src/helpers/PendingTransactionTracker.ts index 691f2290332..80b0918635c 100644 --- a/packages/transaction-controller/src/helpers/PendingTransactionTracker.ts +++ b/packages/transaction-controller/src/helpers/PendingTransactionTracker.ts @@ -6,19 +6,19 @@ import type { Json } from '@metamask/utils'; // This package purposefully relies on Node's EventEmitter module. // eslint-disable-next-line import-x/no-nodejs-modules import EventEmitter from 'events'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; -import { createModuleLogger, projectLogger } from '../logger'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import type { TransactionMeta, TransactionReceipt } from '../types'; -import { TransactionStatus, TransactionType } from '../types'; +import { createModuleLogger, projectLogger } from '../logger.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { TransactionMeta, TransactionReceipt } from '../types.js'; +import { TransactionStatus, TransactionType } from '../types.js'; import { getAcceleratedPollingParams, getTimeoutAttempts, -} from '../utils/feature-flags'; -import { getChainId, rpcRequest } from '../utils/provider'; -import { extractRevert, OnChainFailureError } from '../utils/revert-reason'; -import { TransactionPoller } from './TransactionPoller'; +} from '../utils/feature-flags.js'; +import { getChainId, rpcRequest } from '../utils/provider.js'; +import { extractRevert, OnChainFailureError } from '../utils/revert-reason.js'; +import { TransactionPoller } from './TransactionPoller.js'; /** * We wait this many blocks before emitting a 'transaction-dropped' event diff --git a/packages/transaction-controller/src/helpers/ResimulateHelper.test.ts b/packages/transaction-controller/src/helpers/ResimulateHelper.test.ts index 8884491ebab..93b5036a667 100644 --- a/packages/transaction-controller/src/helpers/ResimulateHelper.test.ts +++ b/packages/transaction-controller/src/helpers/ResimulateHelper.test.ts @@ -1,16 +1,17 @@ +import { jest } from '@jest/globals'; import { NetworkType } from '@metamask/controller-utils'; import type { NetworkClientId } from '@metamask/network-controller'; import { BN } from 'bn.js'; -import { CHAIN_IDS } from '../constants'; +import { CHAIN_IDS } from '../constants.js'; import type { TransactionMeta, SecurityAlertResponse, SimulationData, SimulationTokenBalanceChange, -} from '../types'; -import { TransactionStatus, SimulationTokenStandard } from '../types'; -import { getPercentageChange } from '../utils/utils'; +} from '../types.js'; +import { TransactionStatus, SimulationTokenStandard } from '../types.js'; +import { getPercentageChange } from '../utils/utils.js'; import { ResimulateHelper, BLOCK_TIME_ADDITIONAL_SECONDS, @@ -20,8 +21,8 @@ import { shouldResimulate, VALUE_COMPARISON_PERCENT_THRESHOLD, RESIMULATE_INTERVAL_MS, -} from './ResimulateHelper'; -import type { ResimulateHelperOptions } from './ResimulateHelper'; +} from './ResimulateHelper.js'; +import type { ResimulateHelperOptions } from './ResimulateHelper.js'; const CURRENT_TIME_MOCK = 1234567890; const CURRENT_TIME_SECONDS_MOCK = 1234567; diff --git a/packages/transaction-controller/src/helpers/ResimulateHelper.ts b/packages/transaction-controller/src/helpers/ResimulateHelper.ts index debff05c48d..ee4a1d0e7f8 100644 --- a/packages/transaction-controller/src/helpers/ResimulateHelper.ts +++ b/packages/transaction-controller/src/helpers/ResimulateHelper.ts @@ -1,17 +1,17 @@ import type { Hex } from '@metamask/utils'; import { remove0x } from '@metamask/utils'; import { BN } from 'bn.js'; -import { isEqual } from 'lodash'; +import { isEqual } from 'lodash-es'; -import { createModuleLogger, projectLogger } from '../logger'; -import { TransactionStatus } from '../types'; +import { createModuleLogger, projectLogger } from '../logger.js'; +import { TransactionStatus } from '../types.js'; import type { SimulationBalanceChange, SimulationData, TransactionMeta, TransactionParams, -} from '../types'; -import { getPercentageChange } from '../utils/utils'; +} from '../types.js'; +import { getPercentageChange } from '../utils/utils.js'; const log = createModuleLogger(projectLogger, 'resimulate-helper'); diff --git a/packages/transaction-controller/src/helpers/TransactionPoller.test.ts b/packages/transaction-controller/src/helpers/TransactionPoller.test.ts index 6f9131de50a..75065829a25 100644 --- a/packages/transaction-controller/src/helpers/TransactionPoller.test.ts +++ b/packages/transaction-controller/src/helpers/TransactionPoller.test.ts @@ -1,10 +1,11 @@ +import { jest } from '@jest/globals'; import type { Transaction } from '@metamask/core-backend'; import type { BlockTracker } from '@metamask/network-controller'; -import { flushPromises } from '../../../../tests/helpers'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import type { TransactionMeta } from '../types'; -import { TransactionPoller } from './TransactionPoller'; +import { flushPromises } from '../../../../tests/helpers.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { TransactionMeta } from '../types.js'; +import { TransactionPoller } from './TransactionPoller.js'; jest.useFakeTimers(); diff --git a/packages/transaction-controller/src/helpers/TransactionPoller.ts b/packages/transaction-controller/src/helpers/TransactionPoller.ts index b5f10bc3431..0c87c10b4a3 100644 --- a/packages/transaction-controller/src/helpers/TransactionPoller.ts +++ b/packages/transaction-controller/src/helpers/TransactionPoller.ts @@ -2,12 +2,12 @@ import type { Transaction } from '@metamask/core-backend'; import type { BlockTracker } from '@metamask/network-controller'; import { createModuleLogger } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { isEqual } from 'lodash'; +import { isEqual } from 'lodash-es'; -import { projectLogger } from '../logger'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import type { TransactionMeta } from '../types'; -import { getAcceleratedPollingParams } from '../utils/feature-flags'; +import { projectLogger } from '../logger.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { TransactionMeta } from '../types.js'; +import { getAcceleratedPollingParams } from '../utils/feature-flags.js'; const log = createModuleLogger(projectLogger, 'transaction-poller'); diff --git a/packages/transaction-controller/src/hooks/CollectPublishHook.test.ts b/packages/transaction-controller/src/hooks/CollectPublishHook.test.ts index 75a27c4ba6f..5c4e59d43bb 100644 --- a/packages/transaction-controller/src/hooks/CollectPublishHook.test.ts +++ b/packages/transaction-controller/src/hooks/CollectPublishHook.test.ts @@ -1,8 +1,8 @@ -import { noop } from 'lodash'; +import { noop } from 'lodash-es'; -import type { TransactionMeta } from '..'; -import { flushPromises } from '../../../../tests/helpers'; -import { CollectPublishHook } from './CollectPublishHook'; +import { flushPromises } from '../../../../tests/helpers.js'; +import type { TransactionMeta } from '../index.js'; +import { CollectPublishHook } from './CollectPublishHook.js'; const SIGNED_TX_MOCK = '0x123'; const SIGNED_TX_2_MOCK = '0x456'; @@ -30,8 +30,8 @@ describe('CollectPublishHook', () => { const collectHook = new CollectPublishHook(2); const publishHook = collectHook.getHook(); - publishHook(TRANSACTION_META_MOCK, SIGNED_TX_MOCK).catch(noop); - publishHook(TRANSACTION_META_2_MOCK, SIGNED_TX_2_MOCK).catch(noop); + void publishHook(TRANSACTION_META_MOCK, SIGNED_TX_MOCK).catch(noop); + void publishHook(TRANSACTION_META_2_MOCK, SIGNED_TX_2_MOCK).catch(noop); await flushPromises(); @@ -47,8 +47,8 @@ describe('CollectPublishHook', () => { const collectHook = new CollectPublishHook(2); const publishHook = collectHook.getHook(); - publishHook(TRANSACTION_META_2_MOCK, SIGNED_TX_2_MOCK).catch(noop); - publishHook(TRANSACTION_META_MOCK, SIGNED_TX_MOCK).catch(noop); + void publishHook(TRANSACTION_META_2_MOCK, SIGNED_TX_2_MOCK).catch(noop); + void publishHook(TRANSACTION_META_MOCK, SIGNED_TX_MOCK).catch(noop); await flushPromises(); diff --git a/packages/transaction-controller/src/hooks/CollectPublishHook.ts b/packages/transaction-controller/src/hooks/CollectPublishHook.ts index 4fcd31602a7..5e15e8fd4b9 100644 --- a/packages/transaction-controller/src/hooks/CollectPublishHook.ts +++ b/packages/transaction-controller/src/hooks/CollectPublishHook.ts @@ -1,9 +1,13 @@ import type { DeferredPromise, Hex } from '@metamask/utils'; import { createDeferredPromise, createModuleLogger } from '@metamask/utils'; -import { sortBy } from 'lodash'; - -import { projectLogger } from '../logger'; -import type { PublishHook, PublishHookResult, TransactionMeta } from '../types'; +import { sortBy } from 'lodash-es'; + +import { projectLogger } from '../logger.js'; +import type { + PublishHook, + PublishHookResult, + TransactionMeta, +} from '../types.js'; const log = createModuleLogger(projectLogger, 'collect-publish-hook'); diff --git a/packages/transaction-controller/src/hooks/ExtraTransactionsPublishHook.test.ts b/packages/transaction-controller/src/hooks/ExtraTransactionsPublishHook.test.ts index e950de03df5..c25fab54011 100644 --- a/packages/transaction-controller/src/hooks/ExtraTransactionsPublishHook.test.ts +++ b/packages/transaction-controller/src/hooks/ExtraTransactionsPublishHook.test.ts @@ -1,13 +1,14 @@ +import { jest } from '@jest/globals'; import type { Hex } from '@metamask/utils'; import type { BatchTransactionParams, TransactionController, TransactionMeta, -} from '..'; -import type { BatchTransaction } from '../types'; -import { TransactionType } from '../types'; -import { ExtraTransactionsPublishHook } from './ExtraTransactionsPublishHook'; +} from '../index.js'; +import type { BatchTransaction } from '../types.js'; +import { TransactionType } from '../types.js'; +import { ExtraTransactionsPublishHook } from './ExtraTransactionsPublishHook.js'; const SIGNED_TRANSACTION_MOCK = '0xffe'; const SIGNED_TRANSACTION_2_MOCK = '0xfff' as Hex; diff --git a/packages/transaction-controller/src/hooks/SequentialPublishBatchHook.test.ts b/packages/transaction-controller/src/hooks/SequentialPublishBatchHook.test.ts index e43d4fd4ef8..bfe3aa12f99 100644 --- a/packages/transaction-controller/src/hooks/SequentialPublishBatchHook.test.ts +++ b/packages/transaction-controller/src/hooks/SequentialPublishBatchHook.test.ts @@ -1,9 +1,10 @@ +import { jest } from '@jest/globals'; import type { Hex } from '@metamask/utils'; -import { flushPromises } from '../../../../tests/helpers'; -import type { PendingTransactionTracker } from '../helpers/PendingTransactionTracker'; -import type { PublishBatchHookTransaction, TransactionMeta } from '../types'; -import { SequentialPublishBatchHook } from './SequentialPublishBatchHook'; +import { flushPromises } from '../../../../tests/helpers.js'; +import type { PendingTransactionTracker } from '../helpers/PendingTransactionTracker.js'; +import type { PublishBatchHookTransaction, TransactionMeta } from '../types.js'; +import { SequentialPublishBatchHook } from './SequentialPublishBatchHook.js'; const TRANSACTION_HASH_MOCK = '0x123'; const TRANSACTION_HASH_2_MOCK = '0x456'; diff --git a/packages/transaction-controller/src/hooks/SequentialPublishBatchHook.ts b/packages/transaction-controller/src/hooks/SequentialPublishBatchHook.ts index ee703029558..761b9172e86 100644 --- a/packages/transaction-controller/src/hooks/SequentialPublishBatchHook.ts +++ b/packages/transaction-controller/src/hooks/SequentialPublishBatchHook.ts @@ -2,14 +2,14 @@ import { rpcErrors } from '@metamask/rpc-errors'; import { createModuleLogger } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import type { PendingTransactionTracker } from '../helpers/PendingTransactionTracker'; -import { projectLogger } from '../logger'; +import type { PendingTransactionTracker } from '../helpers/PendingTransactionTracker.js'; +import { projectLogger } from '../logger.js'; import type { PublishBatchHook, PublishBatchHookRequest, PublishBatchHookResult, TransactionMeta, -} from '../types'; +} from '../types.js'; const log = createModuleLogger(projectLogger, 'sequential-publish-batch-hook'); diff --git a/packages/transaction-controller/src/index.ts b/packages/transaction-controller/src/index.ts index 9dbc08c9841..699bf103d24 100644 --- a/packages/transaction-controller/src/index.ts +++ b/packages/transaction-controller/src/index.ts @@ -22,7 +22,7 @@ export type { TransactionControllerUnapprovedTransactionAddedEvent, TransactionControllerMessenger, TransactionControllerOptions, -} from './TransactionController'; +} from './TransactionController.js'; export type { TransactionControllerAddTransactionAction, TransactionControllerAddTransactionBatchAction, @@ -56,12 +56,12 @@ export type { TransactionControllerUpdatePreviousGasParamsAction, TransactionControllerUpdateSelectedGasFeeTokenAction, TransactionControllerUpdateRequiredTransactionIdsAction, -} from './TransactionController-method-action-types'; +} from './TransactionController-method-action-types.js'; export { CANCEL_RATE, SPEED_UP_RATE, TransactionController, -} from './TransactionController'; +} from './TransactionController.js'; export type { AddTransactionOptions, AfterAddHook, @@ -115,7 +115,7 @@ export type { TransactionParams, TransactionReceipt, ValidateSecurityRequest, -} from './types'; +} from './types.js'; export { GasFeeEstimateLevel, GasFeeEstimateType, @@ -127,21 +127,21 @@ export { TransactionType, UserFeeLevel, WalletDevice, -} from './types'; -export { mergeGasFeeEstimates } from './utils/gas-flow'; +} from './types.js'; +export { mergeGasFeeEstimates } from './utils/gas-flow.js'; export { decodeAuthorizationSignature, generateEIP7702BatchTransaction, -} from './utils/eip7702'; +} from './utils/eip7702.js'; export { isEIP1559Transaction, normalizeTransactionParams, -} from './utils/utils'; -export { CHAIN_IDS } from './constants'; -export { HARDFORK } from './utils/prepare'; -export { getAccountAddressRelationship } from './api/accounts-api'; +} from './utils/utils.js'; +export { CHAIN_IDS } from './constants.js'; +export { HARDFORK } from './utils/prepare.js'; +export { getAccountAddressRelationship } from './api/accounts-api.js'; export type { GetAccountAddressRelationshipRequest, AccountAddressRelationshipResult, -} from './api/accounts-api'; -export { generateBatchId } from './utils/batch'; +} from './api/accounts-api.js'; +export { generateBatchId } from './utils/batch.js'; diff --git a/packages/transaction-controller/src/types.ts b/packages/transaction-controller/src/types.ts index 7fa97cdcc32..158c2f0db32 100644 --- a/packages/transaction-controller/src/types.ts +++ b/packages/transaction-controller/src/types.ts @@ -7,7 +7,7 @@ import type { NetworkClientId, Provider } from '@metamask/network-controller'; import type { Hex, Json } from '@metamask/utils'; import type { Operation } from 'fast-json-patch'; -import type { TransactionControllerMessenger } from './TransactionController'; +import type { TransactionControllerMessenger } from './TransactionController.js'; /** * Given a record, ensures that each property matches the `Json` type. diff --git a/packages/transaction-controller/src/utils/balance-changes.test.ts b/packages/transaction-controller/src/utils/balance-changes.test.ts index 5013029f065..9fcb30434cc 100644 --- a/packages/transaction-controller/src/utils/balance-changes.test.ts +++ b/packages/transaction-controller/src/utils/balance-changes.test.ts @@ -1,24 +1,25 @@ import type { LogDescription } from '@ethersproject/abi'; import { Interface } from '@ethersproject/abi'; +import { jest } from '@jest/globals'; import type { NetworkClientId } from '@metamask/network-controller'; import type { Hex } from '@metamask/utils'; -import { simulateTransactions } from '../api/simulation-api'; +import { simulateTransactions } from '../api/simulation-api.js'; import type { SimulationResponseLog, SimulationResponseTransaction, -} from '../api/simulation-api'; -import type { SimulationResponse } from '../api/simulation-api'; +} from '../api/simulation-api.js'; +import type { SimulationResponse } from '../api/simulation-api.js'; import { SimulationInvalidResponseError, SimulationRevertedError, -} from '../errors'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import type { GetSimulationConfig } from '../types'; -import { SimulationErrorCode, SimulationTokenStandard } from '../types'; -import type { GetBalanceChangesRequest } from './balance-changes'; -import { getBalanceChanges, SupportedToken } from './balance-changes'; -import { rpcRequest } from './provider'; +} from '../errors.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { GetSimulationConfig } from '../types.js'; +import { SimulationErrorCode, SimulationTokenStandard } from '../types.js'; +import type { GetBalanceChangesRequest } from './balance-changes.js'; +import { getBalanceChanges, SupportedToken } from './balance-changes.js'; +import { rpcRequest } from './provider.js'; jest.mock('../api/simulation-api'); diff --git a/packages/transaction-controller/src/utils/balance-changes.ts b/packages/transaction-controller/src/utils/balance-changes.ts index ba3ed0fe1e4..b366a75ba53 100644 --- a/packages/transaction-controller/src/utils/balance-changes.ts +++ b/packages/transaction-controller/src/utils/balance-changes.ts @@ -7,7 +7,7 @@ import { createModuleLogger } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; import BN from 'bn.js'; -import { simulateTransactions } from '../api/simulation-api'; +import { simulateTransactions } from '../api/simulation-api.js'; import type { SimulationResponseLog, SimulationRequestTransaction, @@ -15,18 +15,18 @@ import type { SimulationResponseCallTrace, SimulationResponseTransaction, SimulationRequest, -} from '../api/simulation-api'; +} from '../api/simulation-api.js'; import { ABI_SIMULATION_ERC20_WRAPPED, ABI_SIMULATION_ERC721_LEGACY, -} from '../constants'; +} from '../constants.js'; import { SimulationError, SimulationInvalidResponseError, SimulationRevertedError, -} from '../errors'; -import { projectLogger } from '../logger'; -import type { TransactionControllerMessenger } from '../TransactionController'; +} from '../errors.js'; +import { projectLogger } from '../logger.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; import type { Revert, SimulationBalanceChange, @@ -36,10 +36,10 @@ import type { TransactionParams, NestedTransactionMetadata, GetSimulationConfig, -} from '../types'; -import { SimulationTokenStandard } from '../types'; -import { getNativeBalance } from './balance'; -import { decodeRevert } from './revert-reason'; +} from '../types.js'; +import { SimulationTokenStandard } from '../types.js'; +import { getNativeBalance } from './balance.js'; +import { decodeRevert } from './revert-reason.js'; export enum SupportedToken { ERC20 = 'erc20', diff --git a/packages/transaction-controller/src/utils/balance.test.ts b/packages/transaction-controller/src/utils/balance.test.ts index cbe32171f6a..c7b43e06070 100644 --- a/packages/transaction-controller/src/utils/balance.test.ts +++ b/packages/transaction-controller/src/utils/balance.test.ts @@ -1,10 +1,14 @@ +import { jest } from '@jest/globals'; import { toHex } from '@metamask/controller-utils'; import type { NetworkClientId } from '@metamask/network-controller'; -import type { TransactionMeta } from '..'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import { getNativeBalance, isNativeBalanceSufficientForGas } from './balance'; -import { rpcRequest } from './provider'; +import type { TransactionMeta } from '../index.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import { + getNativeBalance, + isNativeBalanceSufficientForGas, +} from './balance.js'; +import { rpcRequest } from './provider.js'; jest.mock('./provider', () => ({ rpcRequest: jest.fn(), diff --git a/packages/transaction-controller/src/utils/batch.test.ts b/packages/transaction-controller/src/utils/batch.test.ts index d0bdf8c06eb..3793b7b65a0 100644 --- a/packages/transaction-controller/src/utils/batch.test.ts +++ b/packages/transaction-controller/src/utils/batch.test.ts @@ -1,49 +1,50 @@ +import { jest } from '@jest/globals'; import { ORIGIN_METAMASK } from '@metamask/approval-controller'; import type { AddResult } from '@metamask/approval-controller'; import { ApprovalType } from '@metamask/controller-utils'; import { rpcErrors, errorCodes } from '@metamask/rpc-errors'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; +import { flushPromises } from '../../../../tests/helpers.js'; +import { DefaultGasFeeFlow } from '../gas-flows/DefaultGasFeeFlow.js'; +import { SequentialPublishBatchHook } from '../hooks/SequentialPublishBatchHook.js'; import { TransactionEnvelopeType, TransactionType, GasFeeEstimateLevel, GasFeeEstimateType, TransactionStatus, -} from '..'; +} from '../index.js'; import type { TransactionControllerMessenger, TransactionControllerState, TransactionMeta, -} from '..'; -import { flushPromises } from '../../../../tests/helpers'; -import { DefaultGasFeeFlow } from '../gas-flows/DefaultGasFeeFlow'; -import { SequentialPublishBatchHook } from '../hooks/SequentialPublishBatchHook'; +} from '../index.js'; import type { GasFeeFlow, PublishBatchHook, RequiredAsset, TransactionBatchSingleRequest, -} from '../types'; +} from '../types.js'; import { ERROR_MESSAGE_NO_UPGRADE_CONTRACT, addTransactionBatch, isAtomicBatchSupported, -} from './batch'; +} from './batch.js'; import { ERROR_MESSGE_PUBLIC_KEY, doesAccountSupportEIP7702, doesChainSupportEIP7702, generateEIP7702BatchTransaction, isAccountUpgradedToEIP7702, -} from './eip7702'; +} from './eip7702.js'; import { getEIP7702SupportedChains, getEIP7702UpgradeContractAddress, -} from './feature-flags'; -import { simulateGasBatch } from './gas'; -import { determineTransactionType } from './transaction-type'; -import { validateBatchRequest } from './validation'; +} from './feature-flags.js'; +import { simulateGasBatch } from './gas.js'; +import { determineTransactionType } from './transaction-type.js'; +import { validateBatchRequest } from './validation.js'; jest.mock('./eip7702'); jest.mock('./feature-flags'); diff --git a/packages/transaction-controller/src/utils/eip7702.test.ts b/packages/transaction-controller/src/utils/eip7702.test.ts index 155eb007ee1..c808eee3324 100644 --- a/packages/transaction-controller/src/utils/eip7702.test.ts +++ b/packages/transaction-controller/src/utils/eip7702.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MockAnyNamespace, @@ -11,11 +12,11 @@ import { remove0x } from '@metamask/utils'; import type { KeyringControllerGetStateAction, KeyringControllerSignEip7702AuthorizationAction, -} from '../../../keyring-controller/src'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import { TransactionStatus } from '../types'; -import type { AuthorizationList } from '../types'; -import type { TransactionMeta } from '../types'; +} from '../../../keyring-controller/src/index.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import { TransactionStatus } from '../types.js'; +import type { AuthorizationList } from '../types.js'; +import type { TransactionMeta } from '../types.js'; import { DELEGATION_PREFIX, decodeAuthorizationSignature, @@ -25,12 +26,12 @@ import { getDelegationAddress, isAccountUpgradedToEIP7702, signAuthorizationList, -} from './eip7702'; +} from './eip7702.js'; import { getEIP7702ContractAddresses, getEIP7702SupportedChains, -} from './feature-flags'; -import { rpcRequest } from './provider'; +} from './feature-flags.js'; +import { rpcRequest } from './provider.js'; jest.mock('../utils/feature-flags'); diff --git a/packages/transaction-controller/src/utils/eip7702.ts b/packages/transaction-controller/src/utils/eip7702.ts index 91b39c390de..ea7f03792ac 100644 --- a/packages/transaction-controller/src/utils/eip7702.ts +++ b/packages/transaction-controller/src/utils/eip7702.ts @@ -5,20 +5,20 @@ import type { NetworkClientId } from '@metamask/network-controller'; import { createModuleLogger, add0x } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { ABI_IERC7821 } from '../constants'; -import { projectLogger } from '../logger'; -import type { TransactionControllerMessenger } from '../TransactionController'; +import { ABI_IERC7821 } from '../constants.js'; +import { projectLogger } from '../logger.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; import type { BatchTransactionParams, Authorization, AuthorizationList, TransactionMeta, -} from '../types'; +} from '../types.js'; import { getEIP7702ContractAddresses, getEIP7702SupportedChains, -} from './feature-flags'; -import { rpcRequest } from './provider'; +} from './feature-flags.js'; +import { rpcRequest } from './provider.js'; export const DELEGATION_PREFIX = '0xef0100'; export const BATCH_FUNCTION_NAME = 'execute'; diff --git a/packages/transaction-controller/src/utils/external-transactions.test.ts b/packages/transaction-controller/src/utils/external-transactions.test.ts index 7fe874e62ef..6093f6b62ed 100644 --- a/packages/transaction-controller/src/utils/external-transactions.test.ts +++ b/packages/transaction-controller/src/utils/external-transactions.test.ts @@ -1,8 +1,8 @@ import { rpcErrors } from '@metamask/rpc-errors'; -import type { TransactionMeta } from '../types'; -import { TransactionStatus } from '../types'; -import { validateConfirmedExternalTransaction } from './external-transactions'; +import type { TransactionMeta } from '../types.js'; +import { TransactionStatus } from '../types.js'; +import { validateConfirmedExternalTransaction } from './external-transactions.js'; describe('validateConfirmedExternalTransaction', () => { const mockTransactionMeta = ( diff --git a/packages/transaction-controller/src/utils/external-transactions.ts b/packages/transaction-controller/src/utils/external-transactions.ts index c7174764e21..cf4f5d2b666 100644 --- a/packages/transaction-controller/src/utils/external-transactions.ts +++ b/packages/transaction-controller/src/utils/external-transactions.ts @@ -1,8 +1,8 @@ // These utility functions are exclusively used by `confirmExternalTransaction` method in controller import { rpcErrors } from '@metamask/rpc-errors'; -import { TransactionStatus } from '../types'; -import type { TransactionMeta } from '../types'; +import { TransactionStatus } from '../types.js'; +import type { TransactionMeta } from '../types.js'; /** * Validates the external provided transaction meta. diff --git a/packages/transaction-controller/src/utils/feature-flags.test.ts b/packages/transaction-controller/src/utils/feature-flags.test.ts index 405008c10b6..f7593d8ca97 100644 --- a/packages/transaction-controller/src/utils/feature-flags.test.ts +++ b/packages/transaction-controller/src/utils/feature-flags.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { MOCK_ANY_NAMESPACE, Messenger } from '@metamask/messenger'; import type { MockAnyNamespace, @@ -7,8 +8,8 @@ import type { import type { RemoteFeatureFlagControllerGetStateAction } from '@metamask/remote-feature-flag-controller'; import type { Hex } from '@metamask/utils'; -import type { TransactionControllerMessenger } from '..'; -import type { TransactionControllerFeatureFlags } from './feature-flags'; +import type { TransactionControllerMessenger } from '../index.js'; +import type { TransactionControllerFeatureFlags } from './feature-flags.js'; import { getAcceleratedPollingParams, getBatchSizeLimit, @@ -22,8 +23,8 @@ import { getTransactionHistoryLimit, FeatureFlag, getTimeoutAttempts, -} from './feature-flags'; -import { isValidSignature } from './signature'; +} from './feature-flags.js'; +import { isValidSignature } from './signature.js'; jest.mock('./signature'); diff --git a/packages/transaction-controller/src/utils/feature-flags.ts b/packages/transaction-controller/src/utils/feature-flags.ts index 128e5844cf0..d7bf191c5e0 100644 --- a/packages/transaction-controller/src/utils/feature-flags.ts +++ b/packages/transaction-controller/src/utils/feature-flags.ts @@ -1,10 +1,10 @@ import { createModuleLogger } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { projectLogger } from '../logger'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import { isValidSignature } from './signature'; -import { padHexToEvenLength } from './utils'; +import { projectLogger } from '../logger.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import { isValidSignature } from './signature.js'; +import { padHexToEvenLength } from './utils.js'; const DEFAULT_BATCH_SIZE_LIMIT = 10; const DEFAULT_ACCELERATED_POLLING_COUNT_MAX = 10; diff --git a/packages/transaction-controller/src/utils/first-time-interaction.test.ts b/packages/transaction-controller/src/utils/first-time-interaction.test.ts index 208141f6ee7..190dd14e8ae 100644 --- a/packages/transaction-controller/src/utils/first-time-interaction.test.ts +++ b/packages/transaction-controller/src/utils/first-time-interaction.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; import type { TraceContext } from '@metamask/controller-utils'; -import { getAccountAddressRelationship } from '../api/accounts-api'; -import type { TransactionMeta } from '../types'; -import { TransactionStatus, TransactionType } from '../types'; -import { updateFirstTimeInteraction } from './first-time-interaction'; -import { decodeTransactionData } from './transaction-type'; -import { validateParamTo } from './validation'; +import { getAccountAddressRelationship } from '../api/accounts-api.js'; +import type { TransactionMeta } from '../types.js'; +import { TransactionStatus, TransactionType } from '../types.js'; +import { updateFirstTimeInteraction } from './first-time-interaction.js'; +import { decodeTransactionData } from './transaction-type.js'; +import { validateParamTo } from './validation.js'; jest.mock('./transaction-type'); jest.mock('./validation'); diff --git a/packages/transaction-controller/src/utils/first-time-interaction.ts b/packages/transaction-controller/src/utils/first-time-interaction.ts index 85ba6cfbcf0..f6d20c95393 100644 --- a/packages/transaction-controller/src/utils/first-time-interaction.ts +++ b/packages/transaction-controller/src/utils/first-time-interaction.ts @@ -2,13 +2,13 @@ import type { TransactionDescription } from '@ethersproject/abi'; import type { TraceContext, TraceCallback } from '@metamask/controller-utils'; import { hexToNumber } from '@metamask/utils'; -import { getAccountAddressRelationship } from '../api/accounts-api'; -import type { GetAccountAddressRelationshipRequest } from '../api/accounts-api'; -import { projectLogger as log } from '../logger'; -import { TransactionType } from '../types'; -import type { TransactionMeta } from '../types'; -import { decodeTransactionData } from './transaction-type'; -import { validateParamTo } from './validation'; +import { getAccountAddressRelationship } from '../api/accounts-api.js'; +import type { GetAccountAddressRelationshipRequest } from '../api/accounts-api.js'; +import { projectLogger as log } from '../logger.js'; +import { TransactionType } from '../types.js'; +import type { TransactionMeta } from '../types.js'; +import { decodeTransactionData } from './transaction-type.js'; +import { validateParamTo } from './validation.js'; const TOKEN_TRANSFER_TYPES = [ TransactionType.tokenMethodTransfer, diff --git a/packages/transaction-controller/src/utils/gas-fee-tokens.test.ts b/packages/transaction-controller/src/utils/gas-fee-tokens.test.ts index 8a6418375d4..6b626efb453 100644 --- a/packages/transaction-controller/src/utils/gas-fee-tokens.test.ts +++ b/packages/transaction-controller/src/utils/gas-fee-tokens.test.ts @@ -1,21 +1,22 @@ +import { jest } from '@jest/globals'; import type { Hex } from '@metamask/utils'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; +import { simulateTransactions } from '../api/simulation-api.js'; import type { GasFeeToken, GetSimulationConfig, TransactionControllerMessenger, TransactionMeta, -} from '..'; -import { simulateTransactions } from '../api/simulation-api'; -import { isNativeBalanceSufficientForGas } from './balance'; -import { doesChainSupportEIP7702 } from './eip7702'; -import { getEIP7702UpgradeContractAddress } from './feature-flags'; -import type { GetGasFeeTokensRequest } from './gas-fee-tokens'; +} from '../index.js'; +import { isNativeBalanceSufficientForGas } from './balance.js'; +import { doesChainSupportEIP7702 } from './eip7702.js'; +import { getEIP7702UpgradeContractAddress } from './feature-flags.js'; +import type { GetGasFeeTokensRequest } from './gas-fee-tokens.js'; import { checkGasFeeTokenBeforePublish, getGasFeeTokens, -} from './gas-fee-tokens'; +} from './gas-fee-tokens.js'; jest.mock('../api/simulation-api'); jest.mock('./eip7702'); diff --git a/packages/transaction-controller/src/utils/gas-fees.test.ts b/packages/transaction-controller/src/utils/gas-fees.test.ts index 0885e3dad40..24f0ef78127 100644 --- a/packages/transaction-controller/src/utils/gas-fees.test.ts +++ b/packages/transaction-controller/src/utils/gas-fees.test.ts @@ -1,16 +1,17 @@ +import { jest } from '@jest/globals'; import type { NetworkClientId } from '@metamask/network-controller'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import type { GasFeeFlow, GasFeeFlowResponse } from '../types'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { GasFeeFlow, GasFeeFlowResponse } from '../types.js'; import { GasFeeEstimateLevel, GasFeeEstimateType, TransactionType, UserFeeLevel, -} from '../types'; -import type { UpdateGasFeesRequest } from './gas-fees'; -import { gweiDecimalToWeiDecimal, updateGasFees } from './gas-fees'; -import { rpcRequest } from './provider'; +} from '../types.js'; +import type { UpdateGasFeesRequest } from './gas-fees.js'; +import { gweiDecimalToWeiDecimal, updateGasFees } from './gas-fees.js'; +import { rpcRequest } from './provider.js'; jest.mock('./provider', () => ({ rpcRequest: jest.fn(), diff --git a/packages/transaction-controller/src/utils/gas-fees.ts b/packages/transaction-controller/src/utils/gas-fees.ts index 33f12cf9878..66660547a2b 100644 --- a/packages/transaction-controller/src/utils/gas-fees.ts +++ b/packages/transaction-controller/src/utils/gas-fees.ts @@ -6,21 +6,21 @@ import type { import type { Hex } from '@metamask/utils'; import { add0x, createModuleLogger } from '@metamask/utils'; -import { projectLogger } from '../logger'; -import type { TransactionControllerMessenger } from '../TransactionController'; +import { projectLogger } from '../logger.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; import type { SavedGasFees, TransactionParams, TransactionMeta, GasFeeFlow, -} from '../types'; +} from '../types.js'; import { GasFeeEstimateLevel, GasFeeEstimateType, UserFeeLevel, -} from '../types'; -import { getGasFeeFlow } from './gas-flow'; -import { rpcRequest } from './provider'; +} from '../types.js'; +import { getGasFeeFlow } from './gas-flow.js'; +import { rpcRequest } from './provider.js'; export type UpdateGasFeesRequest = { eip1559: boolean; @@ -437,9 +437,7 @@ async function getSuggestedGasFees( }; default: throw new Error( - // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/restrict-template-expressions - `Unsupported gas fee estimate type returned from flow: ${gasFeeEstimateType}`, + `Unsupported gas fee estimate type returned from flow: ${String(gasFeeEstimateType)}`, ); } } catch (error) { diff --git a/packages/transaction-controller/src/utils/gas-flow.test.ts b/packages/transaction-controller/src/utils/gas-flow.test.ts index 7e80fa5f8f2..e18e08bb89f 100644 --- a/packages/transaction-controller/src/utils/gas-flow.test.ts +++ b/packages/transaction-controller/src/utils/gas-flow.test.ts @@ -1,15 +1,16 @@ +import { jest } from '@jest/globals'; import type { GasFeeEstimates as GasFeeControllerEstimates } from '@metamask/gas-fee-controller'; -import type { TransactionControllerMessenger } from '../TransactionController'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; import type { FeeMarketGasFeeEstimates, GasFeeFlow, GasPriceGasFeeEstimates, LegacyGasFeeEstimates, TransactionMeta, -} from '../types'; -import { GasFeeEstimateType, TransactionStatus } from '../types'; -import { getGasFeeFlow, mergeGasFeeEstimates } from './gas-flow'; +} from '../types.js'; +import { GasFeeEstimateType, TransactionStatus } from '../types.js'; +import { getGasFeeFlow, mergeGasFeeEstimates } from './gas-flow.js'; const TRANSACTION_META_MOCK: TransactionMeta = { id: '1', diff --git a/packages/transaction-controller/src/utils/gas-flow.ts b/packages/transaction-controller/src/utils/gas-flow.ts index 94e21e5e579..0231f173d78 100644 --- a/packages/transaction-controller/src/utils/gas-flow.ts +++ b/packages/transaction-controller/src/utils/gas-flow.ts @@ -7,18 +7,18 @@ import type { } from '@metamask/gas-fee-controller'; import type { GasFeeState } from '@metamask/gas-fee-controller'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import { GasFeeEstimateLevel, GasFeeEstimateType } from '../types'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import { GasFeeEstimateLevel, GasFeeEstimateType } from '../types.js'; import type { FeeMarketGasFeeEstimates, GasPriceGasFeeEstimates, LegacyGasFeeEstimates, -} from '../types'; +} from '../types.js'; import type { GasFeeFlow, TransactionMeta, FeeMarketGasFeeEstimateForLevel, -} from '../types'; +} from '../types.js'; type MergeGasFeeEstimatesRequest = { gasFeeControllerEstimates: @@ -64,7 +64,7 @@ export function mergeGasFeeEstimates({ const transactionEstimateType = transactionGasFeeEstimates.type; if (transactionEstimateType === GasFeeEstimateType.FeeMarket) { - return Object.values(GasFeeEstimateLevel).reduce( + return Object.values(GasFeeEstimateLevel).reduce( (result, level) => ({ ...result, [level]: mergeFeeMarketEstimate( @@ -77,7 +77,7 @@ export function mergeGasFeeEstimates({ } if (transactionEstimateType === GasFeeEstimateType.Legacy) { - return Object.values(GasFeeEstimateLevel).reduce( + return Object.values(GasFeeEstimateLevel).reduce( (result, level) => ({ ...result, [level]: getLegacyEstimate(transactionGasFeeEstimates, level), diff --git a/packages/transaction-controller/src/utils/gas.test.ts b/packages/transaction-controller/src/utils/gas.test.ts index a54716235e5..1becc652b4e 100644 --- a/packages/transaction-controller/src/utils/gas.test.ts +++ b/packages/transaction-controller/src/utils/gas.test.ts @@ -1,24 +1,31 @@ +import { jest } from '@jest/globals'; import type { NetworkClientId } from '@metamask/network-controller'; import { remove0x } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; import type { SimulationResponse, SimulationResponseTransaction, -} from '../api/simulation-api'; -import { simulateTransactions } from '../api/simulation-api'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import { TransactionEnvelopeType } from '../types'; -import type { TransactionMeta } from '../types'; +} from '../api/simulation-api.js'; +import { simulateTransactions } from '../api/simulation-api.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import { TransactionEnvelopeType } from '../types.js'; +import type { TransactionMeta } from '../types.js'; import type { AuthorizationList, BatchTransactionParams, TransactionBatchSingleRequest, -} from '../types'; -import { DELEGATION_PREFIX, generateEIP7702BatchTransaction } from './eip7702'; -import { getGasEstimateBuffer, getGasEstimateFallback } from './feature-flags'; -import type { UpdateGasRequest } from './gas'; +} from '../types.js'; +import { + DELEGATION_PREFIX, + generateEIP7702BatchTransaction, +} from './eip7702.js'; +import { + getGasEstimateBuffer, + getGasEstimateFallback, +} from './feature-flags.js'; +import type { UpdateGasRequest } from './gas.js'; import { addGasBuffer, estimateGas, @@ -31,8 +38,8 @@ import { INTRINSIC_GAS, DUMMY_AUTHORIZATION_SIGNATURE, simulateGasBatch, -} from './gas'; -import { rpcRequest } from './provider'; +} from './gas.js'; +import { rpcRequest } from './provider.js'; jest.mock('./provider', () => ({ ...jest.requireActual('./provider'), diff --git a/packages/transaction-controller/src/utils/gas.ts b/packages/transaction-controller/src/utils/gas.ts index f04568a6a91..bc2fd95d260 100644 --- a/packages/transaction-controller/src/utils/gas.ts +++ b/packages/transaction-controller/src/utils/gas.ts @@ -9,10 +9,10 @@ import type { Hex, Json } from '@metamask/utils'; import { add0x, createModuleLogger, remove0x } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { simulateTransactions } from '../api/simulation-api'; -import { projectLogger } from '../logger'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import { TransactionEnvelopeType } from '../types'; +import { simulateTransactions } from '../api/simulation-api.js'; +import { projectLogger } from '../logger.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import { TransactionEnvelopeType } from '../types.js'; import type { AuthorizationList, BatchTransactionParams, @@ -23,15 +23,18 @@ import type { TransactionBatchSingleRequest, TransactionMeta, TransactionParams, -} from '../types'; +} from '../types.js'; import { DELEGATION_PREFIX, doesAccountSupportEIP7702, generateEIP7702BatchTransaction, -} from './eip7702'; -import { getGasEstimateBuffer, getGasEstimateFallback } from './feature-flags'; -import { getChainId, rpcRequest } from './provider'; -import { decodeRevert } from './revert-reason'; +} from './eip7702.js'; +import { + getGasEstimateBuffer, + getGasEstimateFallback, +} from './feature-flags.js'; +import { getChainId, rpcRequest } from './provider.js'; +import { decodeRevert } from './revert-reason.js'; export type UpdateGasRequest = { isCustomNetwork: boolean; diff --git a/packages/transaction-controller/src/utils/layer1-gas-fee-flow.test.ts b/packages/transaction-controller/src/utils/layer1-gas-fee-flow.test.ts index 87ececc2424..2cc8ccec962 100644 --- a/packages/transaction-controller/src/utils/layer1-gas-fee-flow.test.ts +++ b/packages/transaction-controller/src/utils/layer1-gas-fee-flow.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; import type { Provider } from '@metamask/network-controller'; import type { Hex } from '@metamask/utils'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import { TransactionStatus } from '../types'; -import type { Layer1GasFeeFlow, TransactionMeta } from '../types'; -import { updateTransactionLayer1GasFee } from './layer1-gas-fee-flow'; -import { getProvider } from './provider'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import { TransactionStatus } from '../types.js'; +import type { Layer1GasFeeFlow, TransactionMeta } from '../types.js'; +import { updateTransactionLayer1GasFee } from './layer1-gas-fee-flow.js'; +import { getProvider } from './provider.js'; jest.mock('@metamask/controller-utils', () => ({ ...jest.requireActual('@metamask/controller-utils'), diff --git a/packages/transaction-controller/src/utils/layer1-gas-fee-flow.ts b/packages/transaction-controller/src/utils/layer1-gas-fee-flow.ts index f1deca85048..11f0f554d21 100644 --- a/packages/transaction-controller/src/utils/layer1-gas-fee-flow.ts +++ b/packages/transaction-controller/src/utils/layer1-gas-fee-flow.ts @@ -1,10 +1,10 @@ import { createModuleLogger } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { projectLogger } from '../logger'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import type { Layer1GasFeeFlow, TransactionMeta } from '../types'; -import { getProvider } from './provider'; +import { projectLogger } from '../logger.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { Layer1GasFeeFlow, TransactionMeta } from '../types.js'; +import { getProvider } from './provider.js'; const log = createModuleLogger(projectLogger, 'layer-1-gas-fee-flow'); diff --git a/packages/transaction-controller/src/utils/nonce.test.ts b/packages/transaction-controller/src/utils/nonce.test.ts index a9563c8cad4..f8ae6328acf 100644 --- a/packages/transaction-controller/src/utils/nonce.test.ts +++ b/packages/transaction-controller/src/utils/nonce.test.ts @@ -1,11 +1,15 @@ +import { jest } from '@jest/globals'; import type { NonceLock, Transaction as NonceTrackerTransaction, } from '@metamask/nonce-tracker'; -import type { TransactionMeta } from '../types'; -import { TransactionStatus } from '../types'; -import { getAndFormatTransactionsForNonceTracker, getNextNonce } from './nonce'; +import type { TransactionMeta } from '../types.js'; +import { TransactionStatus } from '../types.js'; +import { + getAndFormatTransactionsForNonceTracker, + getNextNonce, +} from './nonce.js'; const TRANSACTION_META_MOCK: TransactionMeta = { chainId: '0x1', diff --git a/packages/transaction-controller/src/utils/nonce.ts b/packages/transaction-controller/src/utils/nonce.ts index 8c17ee5c12a..49c65bf336f 100644 --- a/packages/transaction-controller/src/utils/nonce.ts +++ b/packages/transaction-controller/src/utils/nonce.ts @@ -4,8 +4,8 @@ import type { Transaction as NonceTrackerTransaction, } from '@metamask/nonce-tracker'; -import { createModuleLogger, projectLogger } from '../logger'; -import type { TransactionMeta, TransactionStatus } from '../types'; +import { createModuleLogger, projectLogger } from '../logger.js'; +import type { TransactionMeta, TransactionStatus } from '../types.js'; const log = createModuleLogger(projectLogger, 'nonce'); diff --git a/packages/transaction-controller/src/utils/prepare.test.ts b/packages/transaction-controller/src/utils/prepare.test.ts index c714afb0f47..a109bc13897 100644 --- a/packages/transaction-controller/src/utils/prepare.test.ts +++ b/packages/transaction-controller/src/utils/prepare.test.ts @@ -4,9 +4,9 @@ import { EOACodeEIP7702Transaction, } from '@ethereumjs/tx'; -import { TransactionEnvelopeType } from '../types'; -import type { Authorization, TransactionParams } from '../types'; -import { prepareTransaction, serializeTransaction } from './prepare'; +import { TransactionEnvelopeType } from '../types.js'; +import type { Authorization, TransactionParams } from '../types.js'; +import { prepareTransaction, serializeTransaction } from './prepare.js'; const CHAIN_ID_MOCK = '0x123'; diff --git a/packages/transaction-controller/src/utils/prepare.ts b/packages/transaction-controller/src/utils/prepare.ts index 2ec62c1b645..1586f750984 100644 --- a/packages/transaction-controller/src/utils/prepare.ts +++ b/packages/transaction-controller/src/utils/prepare.ts @@ -4,9 +4,9 @@ import type { TypedTransaction, TypedTxData } from '@ethereumjs/tx'; import { TransactionFactory } from '@ethereumjs/tx'; import { bytesToHex } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; -import type { AuthorizationList, TransactionParams } from '../types'; +import type { AuthorizationList, TransactionParams } from '../types.js'; export const HARDFORK = Hardfork.Prague; diff --git a/packages/transaction-controller/src/utils/provider.test.ts b/packages/transaction-controller/src/utils/provider.test.ts index 248124da355..5d4cad521c2 100644 --- a/packages/transaction-controller/src/utils/provider.test.ts +++ b/packages/transaction-controller/src/utils/provider.test.ts @@ -1,10 +1,11 @@ +import { jest } from '@jest/globals'; import type { NetworkClientId, Provider } from '@metamask/network-controller'; import { NetworkClientType } from '@metamask/network-controller'; import { RpcEndpointType } from '@metamask/network-controller'; import type { Hex } from '@metamask/utils'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import { getProvider, rpcRequest } from './provider'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import { getProvider, rpcRequest } from './provider.js'; describe('provider utils', () => { const requestMock = jest.fn(); diff --git a/packages/transaction-controller/src/utils/provider.ts b/packages/transaction-controller/src/utils/provider.ts index 0187a158524..ffa95c133b2 100644 --- a/packages/transaction-controller/src/utils/provider.ts +++ b/packages/transaction-controller/src/utils/provider.ts @@ -6,8 +6,8 @@ import type { import { NetworkClientType } from '@metamask/network-controller'; import type { Hex } from '@metamask/utils'; -import { createModuleLogger, projectLogger } from '../logger'; -import type { TransactionControllerMessenger } from '../TransactionController'; +import { createModuleLogger, projectLogger } from '../logger.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; const log = createModuleLogger(projectLogger, 'provider'); diff --git a/packages/transaction-controller/src/utils/retry.test.ts b/packages/transaction-controller/src/utils/retry.test.ts index 48a04bc13f4..5897730741a 100644 --- a/packages/transaction-controller/src/utils/retry.test.ts +++ b/packages/transaction-controller/src/utils/retry.test.ts @@ -1,5 +1,5 @@ -import type { TransactionParams } from '../types'; -import { getTransactionParamsWithIncreasedGasFee } from './retry'; +import type { TransactionParams } from '../types.js'; +import { getTransactionParamsWithIncreasedGasFee } from './retry.js'; const RATE_MOCK = 16; const VALUE_MOCK = '0x111'; diff --git a/packages/transaction-controller/src/utils/retry.ts b/packages/transaction-controller/src/utils/retry.ts index 9ab1e28aed3..61f37280986 100644 --- a/packages/transaction-controller/src/utils/retry.ts +++ b/packages/transaction-controller/src/utils/retry.ts @@ -6,7 +6,7 @@ import type { FeeMarketEIP1559Values, GasPriceValue, TransactionParams, -} from '../types'; +} from '../types.js'; /** * Returns new transaction parameters with increased gas fees. diff --git a/packages/transaction-controller/src/utils/revert-reason.test.ts b/packages/transaction-controller/src/utils/revert-reason.test.ts index 4133c8902e2..475aac94772 100644 --- a/packages/transaction-controller/src/utils/revert-reason.test.ts +++ b/packages/transaction-controller/src/utils/revert-reason.test.ts @@ -1,11 +1,13 @@ -import type { TransactionControllerMessenger } from '../TransactionController'; -import type { TransactionMeta } from '../types'; -import { rpcRequest } from './provider'; +import { jest } from '@jest/globals'; + +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { TransactionMeta } from '../types.js'; +import { rpcRequest } from './provider.js'; import { decodeRevert, extractRevert, OnChainFailureError, -} from './revert-reason'; +} from './revert-reason.js'; jest.mock('./provider', () => ({ ...jest.requireActual('./provider'), diff --git a/packages/transaction-controller/src/utils/revert-reason.ts b/packages/transaction-controller/src/utils/revert-reason.ts index 9079b4badeb..6c04c74b9ec 100644 --- a/packages/transaction-controller/src/utils/revert-reason.ts +++ b/packages/transaction-controller/src/utils/revert-reason.ts @@ -2,10 +2,10 @@ import { defaultAbiCoder } from '@ethersproject/abi'; import type { NetworkClientId } from '@metamask/network-controller'; import type { Hex } from '@metamask/utils'; -import { createModuleLogger, projectLogger } from '../logger'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import type { Revert, TransactionParams } from '../types'; -import { rpcRequest } from './provider'; +import { createModuleLogger, projectLogger } from '../logger.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { Revert, TransactionParams } from '../types.js'; +import { rpcRequest } from './provider.js'; const log = createModuleLogger(projectLogger, 'revert-reason'); diff --git a/packages/transaction-controller/src/utils/signature.test.ts b/packages/transaction-controller/src/utils/signature.test.ts index c07e25fce5c..346c1ae45a8 100644 --- a/packages/transaction-controller/src/utils/signature.test.ts +++ b/packages/transaction-controller/src/utils/signature.test.ts @@ -1,4 +1,4 @@ -import { isValidSignature } from './signature'; +import { isValidSignature } from './signature.js'; const VALUE_1_MOCK = '0x12345678'; const VALUE_2_MOCK = '0xabcabcabcabcabcabcabcabc'; diff --git a/packages/transaction-controller/src/utils/swaps.test.ts b/packages/transaction-controller/src/utils/swaps.test.ts index 39d34351008..a068ad25b75 100644 --- a/packages/transaction-controller/src/utils/swaps.test.ts +++ b/packages/transaction-controller/src/utils/swaps.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { MOCK_ANY_NAMESPACE, Messenger } from '@metamask/messenger'; import type { MockAnyNamespace, @@ -6,18 +7,18 @@ import type { } from '@metamask/messenger'; import type { NetworkClientId } from '@metamask/network-controller'; -import { flushPromises } from '../../../../tests/helpers'; -import { CHAIN_IDS } from '../constants'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import type { TransactionMeta } from '../types'; -import { TransactionType, TransactionStatus } from '../types'; -import { rpcRequest } from './provider'; +import { flushPromises } from '../../../../tests/helpers.js'; +import { CHAIN_IDS } from '../constants.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { TransactionMeta } from '../types.js'; +import { TransactionType, TransactionStatus } from '../types.js'; +import { rpcRequest } from './provider.js'; import { updateSwapsTransaction, updatePostTransactionBalance, UPDATE_POST_TX_BALANCE_ATTEMPTS, SWAPS_CHAINID_DEFAULT_TOKEN_MAP, -} from './swaps'; +} from './swaps.js'; jest.mock('./provider', () => ({ rpcRequest: jest.fn(), diff --git a/packages/transaction-controller/src/utils/swaps.ts b/packages/transaction-controller/src/utils/swaps.ts index d6c8755b97a..04e5cfd38e9 100644 --- a/packages/transaction-controller/src/utils/swaps.ts +++ b/packages/transaction-controller/src/utils/swaps.ts @@ -1,13 +1,13 @@ import type { NetworkClientId } from '@metamask/network-controller'; -import { merge, pickBy } from 'lodash'; - -import { CHAIN_IDS } from '../constants'; -import { createModuleLogger, projectLogger } from '../logger'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import type { TransactionMeta } from '../types'; -import { TransactionType } from '../types'; -import { rpcRequest } from './provider'; -import { validateIfTransactionUnapproved } from './utils'; +import { merge, pickBy } from 'lodash-es'; + +import { CHAIN_IDS } from '../constants.js'; +import { createModuleLogger, projectLogger } from '../logger.js'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { TransactionMeta } from '../types.js'; +import { TransactionType } from '../types.js'; +import { rpcRequest } from './provider.js'; +import { validateIfTransactionUnapproved } from './utils.js'; const log = createModuleLogger(projectLogger, 'swaps'); diff --git a/packages/transaction-controller/src/utils/transaction-type.test.ts b/packages/transaction-controller/src/utils/transaction-type.test.ts index 2b6b57bee3e..8cc286471bd 100644 --- a/packages/transaction-controller/src/utils/transaction-type.test.ts +++ b/packages/transaction-controller/src/utils/transaction-type.test.ts @@ -1,5 +1,6 @@ import { Interface } from '@ethersproject/abi'; import type { TransactionDescription } from '@ethersproject/abi'; +import { jest } from '@jest/globals'; import { abiERC721, abiERC20, @@ -8,14 +9,14 @@ import { } from '@metamask/metamask-eth-abis'; import type { NetworkClientId } from '@metamask/network-controller'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import { TransactionType } from '../types'; -import { DELEGATION_PREFIX } from './eip7702'; -import { rpcRequest } from './provider'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import { TransactionType } from '../types.js'; +import { DELEGATION_PREFIX } from './eip7702.js'; +import { rpcRequest } from './provider.js'; import { decodeTransactionData, determineTransactionType, -} from './transaction-type'; +} from './transaction-type.js'; jest.mock('./provider', () => ({ rpcRequest: jest.fn(), diff --git a/packages/transaction-controller/src/utils/transaction-type.ts b/packages/transaction-controller/src/utils/transaction-type.ts index 85ccad46cc6..6a258c26fe2 100644 --- a/packages/transaction-controller/src/utils/transaction-type.ts +++ b/packages/transaction-controller/src/utils/transaction-type.ts @@ -8,11 +8,14 @@ import { } from '@metamask/metamask-eth-abis'; import type { NetworkClientId } from '@metamask/network-controller'; -import type { TransactionControllerMessenger } from '../TransactionController'; -import type { InferTransactionTypeResult, TransactionParams } from '../types'; -import { TransactionType } from '../types'; -import { DELEGATION_PREFIX } from './eip7702'; -import { rpcRequest } from './provider'; +import type { TransactionControllerMessenger } from '../TransactionController.js'; +import type { + InferTransactionTypeResult, + TransactionParams, +} from '../types.js'; +import { TransactionType } from '../types.js'; +import { DELEGATION_PREFIX } from './eip7702.js'; +import { rpcRequest } from './provider.js'; export const ESTIMATE_GAS_ERROR = 'eth_estimateGas rpc method error'; diff --git a/packages/transaction-controller/src/utils/utils.test.ts b/packages/transaction-controller/src/utils/utils.test.ts index 64ddcc7d005..c0a9d2a6f2e 100644 --- a/packages/transaction-controller/src/utils/utils.test.ts +++ b/packages/transaction-controller/src/utils/utils.test.ts @@ -5,9 +5,9 @@ import type { FeeMarketEIP1559Values, GasPriceValue, TransactionParams, -} from '../types'; -import { TransactionStatus } from '../types'; -import * as util from './utils'; +} from '../types.js'; +import { TransactionStatus } from '../types.js'; +import * as util from './utils.js'; const MAX_FEE_PER_GAS = 'maxFeePerGas'; const MAX_PRIORITY_FEE_PER_GAS = 'maxPriorityFeePerGas'; diff --git a/packages/transaction-controller/src/utils/utils.ts b/packages/transaction-controller/src/utils/utils.ts index 553bd2cec22..3f26d9e553f 100644 --- a/packages/transaction-controller/src/utils/utils.ts +++ b/packages/transaction-controller/src/utils/utils.ts @@ -16,8 +16,8 @@ import type { TransactionError, TransactionMeta, TransactionParams, -} from '../types'; -import { TransactionEnvelopeType, TransactionStatus } from '../types'; +} from '../types.js'; +import { TransactionEnvelopeType, TransactionStatus } from '../types.js'; export const ESTIMATE_GAS_ERROR = 'eth_estimateGas rpc method error'; @@ -89,9 +89,7 @@ export const validateGasValues = ( gasValues: GasPriceValue | FeeMarketEIP1559Values, ): void => { Object.keys(gasValues).forEach((key) => { - // TODO: Replace `any` with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const value = (gasValues as any)[key]; + const value = gasValues[key as keyof typeof gasValues]; if (typeof value !== 'string' || !isStrictHexString(value)) { throw new TypeError( `expected hex string for ${key} but received: ${value}`, diff --git a/packages/transaction-controller/src/utils/validation.test.ts b/packages/transaction-controller/src/utils/validation.test.ts index f9bc98e7644..ab2c78cc6f1 100644 --- a/packages/transaction-controller/src/utils/validation.test.ts +++ b/packages/transaction-controller/src/utils/validation.test.ts @@ -1,14 +1,14 @@ import { rpcErrors } from '@metamask/rpc-errors'; import type { Hex } from '@metamask/utils'; -import { TransactionEnvelopeType, TransactionType } from '../types'; -import type { TransactionParams } from '../types'; +import { TransactionEnvelopeType, TransactionType } from '../types.js'; +import type { TransactionParams } from '../types.js'; import { validateBatchRequest, validateParamTo, validateTransactionOrigin, validateTxParams, -} from './validation'; +} from './validation.js'; const DATA_MOCK = '0x12345678'; const FROM_MOCK: Hex = '0x1678a085c290ebd122dc42cba69373b5953b831d'; diff --git a/packages/transaction-controller/src/utils/validation.ts b/packages/transaction-controller/src/utils/validation.ts index c3421bf2028..5617a377b23 100644 --- a/packages/transaction-controller/src/utils/validation.ts +++ b/packages/transaction-controller/src/utils/validation.ts @@ -5,13 +5,13 @@ import { JsonRpcError, providerErrors, rpcErrors } from '@metamask/rpc-errors'; import type { Hex } from '@metamask/utils'; import { isStrictHexString, remove0x } from '@metamask/utils'; -import { TransactionEnvelopeType, TransactionType } from '../types'; +import { TransactionEnvelopeType, TransactionType } from '../types.js'; import type { Authorization, TransactionBatchRequest, TransactionParams, -} from '../types'; -import { isEIP1559Transaction } from './utils'; +} from '../types.js'; +import { isEIP1559Transaction } from './utils.js'; export enum ErrorCode { DuplicateBundleId = 5720, diff --git a/packages/transaction-controller/tests/JsonRpcRequestMocks.ts b/packages/transaction-controller/tests/JsonRpcRequestMocks.ts index 6d211e1af58..64d0b8116fe 100644 --- a/packages/transaction-controller/tests/JsonRpcRequestMocks.ts +++ b/packages/transaction-controller/tests/JsonRpcRequestMocks.ts @@ -1,6 +1,6 @@ import type { Hex } from '@metamask/utils'; -import type { JsonRpcRequestMock } from '../../../tests/mock-network'; +import type { JsonRpcRequestMock } from '../../../tests/mock-network.js'; /** * Builds mock eth_gasPrice request. From f65c844eed99622b000b2067fd77fc2e46212993 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:40 +0200 Subject: [PATCH 056/115] ESLint fix and `jest` global import for assets-controller --- packages/assets-controller/package.json | 2 +- .../AssetsController-method-action-types.ts | 2 +- .../src/AssetsController.test.ts | 24 +++++++++++-------- .../assets-controller/src/AssetsController.ts | 6 ++--- .../MockAssetControllerMessenger.ts | 5 ++-- .../data-sources/AbstractDataSource.test.ts | 8 ++++--- .../src/data-sources/AbstractDataSource.ts | 2 +- .../AccountsApiDataSource.test.ts | 7 +++--- .../BackendWebsocketDataSource.test.ts | 9 +++---- .../BackendWebsocketDataSource.ts | 12 +++++----- .../src/data-sources/PriceDataSource.test.ts | 9 +++---- .../src/data-sources/PriceDataSource.ts | 2 +- .../src/data-sources/RpcDataSource.test.ts | 21 ++++++++-------- .../src/data-sources/RpcDataSource.ts | 4 ++-- .../src/data-sources/SnapDataSource.test.ts | 9 +++---- .../src/data-sources/SnapDataSource.ts | 13 +++++----- .../StakedBalanceDataSource.test.ts | 11 +++++---- .../src/data-sources/TokenDataSource.test.ts | 9 +++---- .../clients/MulticallClient.test.ts | 10 ++++++-- .../clients/TokensApiClient.test.ts | 8 ++++--- .../services/BalanceFetcher.test.ts | 9 +++---- .../services/StakedBalanceFetcher.test.ts | 5 ++-- .../services/TokenDetector.test.ts | 12 ++++++---- .../evm-rpc-services/services/index.ts | 6 ++--- .../evm-rpc-services/types/assets.ts | 2 +- .../evm-rpc-services/types/config.ts | 2 +- .../evm-rpc-services/types/index.ts | 12 +++++----- .../evm-rpc-services/types/multicall.ts | 2 +- .../evm-rpc-services/types/services.ts | 4 ++-- .../evm-rpc-services/types/state.ts | 2 +- .../evm-rpc-services/utils/batch.test.ts | 2 +- .../evm-rpc-services/utils/index.ts | 6 ++--- .../evm-rpc-services/utils/parsing.test.ts | 2 +- .../evm-rpc-services/utils/parsing.ts | 2 +- .../src/data-sources/index.ts | 16 ++++++------- packages/assets-controller/src/defaults.ts | 2 +- packages/assets-controller/src/index.ts | 5 +++- .../CustomAssetGraduationMiddleware.test.ts | 5 ++-- .../middlewares/DetectionMiddleware.test.ts | 7 +++--- .../middlewares/ParallelMiddleware.test.ts | 8 ++++--- .../src/middlewares/ParallelMiddleware.ts | 2 +- .../middlewares/RpcFallbackMiddleware.test.ts | 5 ++-- .../src/middlewares/RpcFallbackMiddleware.ts | 8 +++---- .../src/middlewares/index.ts | 16 ++++++------- .../migrations/healAssetsInfoMetadata.test.ts | 8 ++++--- .../src/migrations/healAssetsInfoMetadata.ts | 6 ++--- .../src/selectors/balance.test.ts | 8 +++---- .../src/selectors/balance.ts | 6 ++--- .../utils/customAssetsRpcSupplement.test.ts | 4 ++-- .../src/utils/customAssetsRpcSupplement.ts | 2 +- .../src/utils/fetchWithTimeout.test.ts | 4 +++- .../formatExchangeRatesForBridge.test.ts | 4 ++-- .../src/utils/formatExchangeRatesForBridge.ts | 6 ++--- .../formatStateForTransactionPay.test.ts | 8 +++++-- .../src/utils/formatStateForTransactionPay.ts | 6 ++--- packages/assets-controller/src/utils/index.ts | 16 ++++++------- .../src/utils/native-assets.test.ts | 5 ++-- .../src/utils/native-assets.ts | 4 ++-- .../src/utils/normalizeAmountString.test.ts | 2 +- .../src/utils/normalizeAmountString.ts | 2 +- .../src/utils/normalizeAssetId.ts | 2 +- ...ocessAccountActivityBalanceUpdates.test.ts | 4 ++-- .../processAccountActivityBalanceUpdates.ts | 4 ++-- 63 files changed, 228 insertions(+), 188 deletions(-) diff --git a/packages/assets-controller/package.json b/packages/assets-controller/package.json index bcd2f3d4431..8b00429beca 100644 --- a/packages/assets-controller/package.json +++ b/packages/assets-controller/package.json @@ -76,7 +76,7 @@ "@metamask/utils": "^11.11.0", "async-mutex": "^0.5.0", "bignumber.js": "^9.1.2", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "p-limit": "^3.1.0" }, "devDependencies": { diff --git a/packages/assets-controller/src/AssetsController-method-action-types.ts b/packages/assets-controller/src/AssetsController-method-action-types.ts index f886b37b4d4..53d4c5a1074 100644 --- a/packages/assets-controller/src/AssetsController-method-action-types.ts +++ b/packages/assets-controller/src/AssetsController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { AssetsController } from './AssetsController'; +import type { AssetsController } from './AssetsController.js'; export type AssetsControllerGetAssetsAction = { type: `AssetsController:getAssets`; diff --git a/packages/assets-controller/src/AssetsController.test.ts b/packages/assets-controller/src/AssetsController.test.ts index 6916fd97a9b..350c83fad86 100644 --- a/packages/assets-controller/src/AssetsController.test.ts +++ b/packages/assets-controller/src/AssetsController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable jest/unbound-method */ import type { TraceCallback, TraceRequest } from '@metamask/controller-utils'; import type { ApiPlatformClient } from '@metamask/core-backend'; @@ -13,25 +14,28 @@ import type { NetworkState } from '@metamask/network-controller'; import { AssetsController, getDefaultAssetsControllerState, -} from './AssetsController'; +} from './AssetsController.js'; import type { AssetsControllerMessenger, AssetsControllerState, -} from './AssetsController'; -import type { AccountsApiDataSourceConfig } from './data-sources/AccountsApiDataSource'; -import type { PriceDataSourceConfig } from './data-sources/PriceDataSource'; -import { PriceDataSource } from './data-sources/PriceDataSource'; -import { TokenDataSource } from './data-sources/TokenDataSource'; -import { buildDefaultAssetsInfo } from './defaults'; -import type { Assets3346MigrationState } from './migrations/healAssetsInfoMetadata'; +} from './AssetsController.js'; +import type { AccountsApiDataSourceConfig } from './data-sources/AccountsApiDataSource.js'; +import type { PriceDataSourceConfig } from './data-sources/PriceDataSource.js'; +import { PriceDataSource } from './data-sources/PriceDataSource.js'; +import { TokenDataSource } from './data-sources/TokenDataSource.js'; +import { buildDefaultAssetsInfo } from './defaults.js'; +import type { Assets3346MigrationState } from './migrations/healAssetsInfoMetadata.js'; import type { Caip19AssetId, AccountId, DataRequest, DataResponse, FungibleAssetMetadata, -} from './types'; -import { formatExchangeRatesForBridge, normalizeAssetId } from './utils'; +} from './types.js'; +import { + formatExchangeRatesForBridge, + normalizeAssetId, +} from './utils/index.js'; jest.mock('./utils', () => { const actual = jest.requireActual('./utils'); diff --git a/packages/assets-controller/src/AssetsController.ts b/packages/assets-controller/src/AssetsController.ts index 36b83373e08..8bad526796b 100644 --- a/packages/assets-controller/src/AssetsController.ts +++ b/packages/assets-controller/src/AssetsController.ts @@ -67,7 +67,7 @@ import { parseCaipChainId, } from '@metamask/utils'; import { Mutex } from 'async-mutex'; -import BigNumberJS from 'bignumber.js'; +import { BigNumber as BigNumberJS } from 'bignumber.js'; import { isEqual } from 'lodash-es'; import type { AssetsControllerMethodActions } from './AssetsController-method-action-types.js'; @@ -133,6 +133,8 @@ import type { SubscriptionResponse, Asset, } from './types.js'; +import { ZERO_ADDRESS } from './utils/constants.js'; +import { pickRpcCustomAssetsSupplement } from './utils/customAssetsRpcSupplement.js'; import { normalizeAmountString, normalizeAssetId, @@ -145,8 +147,6 @@ import type { BridgeExchangeRatesFormat, TransactionPayLegacyFormat, } from './utils/index.js'; -import { ZERO_ADDRESS } from './utils/constants.js'; -import { pickRpcCustomAssetsSupplement } from './utils/customAssetsRpcSupplement.js'; import { processAccountActivityBalanceUpdates } from './utils/processAccountActivityBalanceUpdates.js'; const NATIVE_ASSETS_QUERY_KEY = ['nativeAssets']; diff --git a/packages/assets-controller/src/__fixtures__/MockAssetControllerMessenger.ts b/packages/assets-controller/src/__fixtures__/MockAssetControllerMessenger.ts index 2652534783a..8086eba9d5c 100644 --- a/packages/assets-controller/src/__fixtures__/MockAssetControllerMessenger.ts +++ b/packages/assets-controller/src/__fixtures__/MockAssetControllerMessenger.ts @@ -1,5 +1,6 @@ import { defaultAbiCoder } from '@ethersproject/abi'; import * as ProviderModule from '@ethersproject/providers'; +import { jest } from '@jest/globals'; import { MOCK_ANY_NAMESPACE, Messenger, @@ -17,8 +18,8 @@ import { import { AssetsControllerMessenger, getDefaultAssetsControllerState, -} from '../AssetsController'; -import { STAKING_INTERFACE } from '../data-sources/evm-rpc-services/services/StakedBalanceFetcher'; +} from '../AssetsController.js'; +import { STAKING_INTERFACE } from '../data-sources/evm-rpc-services/services/StakedBalanceFetcher.js'; // Test escape hatch for mocking areas that do not need explicit types // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/assets-controller/src/data-sources/AbstractDataSource.test.ts b/packages/assets-controller/src/data-sources/AbstractDataSource.test.ts index a1d5ca677f3..de5c11892d4 100644 --- a/packages/assets-controller/src/data-sources/AbstractDataSource.test.ts +++ b/packages/assets-controller/src/data-sources/AbstractDataSource.test.ts @@ -1,10 +1,12 @@ -import type { ChainId } from '../types'; +import { jest } from '@jest/globals'; + +import type { ChainId } from '../types.js'; import type { ActiveSubscription, DataSourceState, SubscriptionRequest, -} from './AbstractDataSource'; -import { AbstractDataSource } from './AbstractDataSource'; +} from './AbstractDataSource.js'; +import { AbstractDataSource } from './AbstractDataSource.js'; const CHAIN_MAINNET = 'eip155:1' as ChainId; const CHAIN_POLYGON = 'eip155:137' as ChainId; diff --git a/packages/assets-controller/src/data-sources/AbstractDataSource.ts b/packages/assets-controller/src/data-sources/AbstractDataSource.ts index a1d29de5ce7..a669700e101 100644 --- a/packages/assets-controller/src/data-sources/AbstractDataSource.ts +++ b/packages/assets-controller/src/data-sources/AbstractDataSource.ts @@ -3,7 +3,7 @@ import type { DataRequest, DataResponse, AssetsControllerStateInternal, -} from '../types'; +} from '../types.js'; // ============================================================================ // DATA SOURCE BASE TYPES diff --git a/packages/assets-controller/src/data-sources/AccountsApiDataSource.test.ts b/packages/assets-controller/src/data-sources/AccountsApiDataSource.test.ts index f01829bf159..394ab1da70e 100644 --- a/packages/assets-controller/src/data-sources/AccountsApiDataSource.test.ts +++ b/packages/assets-controller/src/data-sources/AccountsApiDataSource.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable jest/unbound-method */ import type { V5BalanceItem, @@ -14,15 +15,15 @@ import type { DataRequest, Context, AssetsControllerStateInternal, -} from '../types'; +} from '../types.js'; import type { AccountsApiDataSourceOptions, AccountsApiDataSourceAllowedActions, -} from './AccountsApiDataSource'; +} from './AccountsApiDataSource.js'; import { AccountsApiDataSource, filterResponseToKnownAssets, -} from './AccountsApiDataSource'; +} from './AccountsApiDataSource.js'; type AllActions = AccountsApiDataSourceAllowedActions; type AllEvents = never; diff --git a/packages/assets-controller/src/data-sources/BackendWebsocketDataSource.test.ts b/packages/assets-controller/src/data-sources/BackendWebsocketDataSource.test.ts index b2d5af59586..e338a89311b 100644 --- a/packages/assets-controller/src/data-sources/BackendWebsocketDataSource.test.ts +++ b/packages/assets-controller/src/data-sources/BackendWebsocketDataSource.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable jest/unbound-method */ import type { ApiPlatformClient, @@ -9,16 +10,16 @@ import type { InternalAccount } from '@metamask/keyring-internal-api'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MockAnyNamespace } from '@metamask/messenger'; -import type { AssetsControllerMessenger } from '../AssetsController'; -import type { Caip19AssetId, ChainId, DataRequest } from '../types'; +import type { AssetsControllerMessenger } from '../AssetsController.js'; +import type { Caip19AssetId, ChainId, DataRequest } from '../types.js'; import { BackendWebsocketDataSource, createBackendWebsocketDataSource, -} from './BackendWebsocketDataSource'; +} from './BackendWebsocketDataSource.js'; import type { BackendWebsocketDataSourceAllowedActions, BackendWebsocketDataSourceAllowedEvents, -} from './BackendWebsocketDataSource'; +} from './BackendWebsocketDataSource.js'; type AllActions = BackendWebsocketDataSourceAllowedActions; type AllEvents = BackendWebsocketDataSourceAllowedEvents; diff --git a/packages/assets-controller/src/data-sources/BackendWebsocketDataSource.ts b/packages/assets-controller/src/data-sources/BackendWebsocketDataSource.ts index b0349b297be..e15290bedb2 100644 --- a/packages/assets-controller/src/data-sources/BackendWebsocketDataSource.ts +++ b/packages/assets-controller/src/data-sources/BackendWebsocketDataSource.ts @@ -14,15 +14,15 @@ import { toCaipChainId, } from '@metamask/utils'; -import type { AssetsControllerMessenger } from '../AssetsController'; -import { projectLogger, createModuleLogger } from '../logger'; -import type { ChainId, Caip19AssetId, DataResponse } from '../types'; -import { processAccountActivityBalanceUpdates } from '../utils/processAccountActivityBalanceUpdates'; -import { AbstractDataSource } from './AbstractDataSource'; +import type { AssetsControllerMessenger } from '../AssetsController.js'; +import { projectLogger, createModuleLogger } from '../logger.js'; +import type { ChainId, Caip19AssetId, DataResponse } from '../types.js'; +import { processAccountActivityBalanceUpdates } from '../utils/processAccountActivityBalanceUpdates.js'; +import { AbstractDataSource } from './AbstractDataSource.js'; import type { DataSourceState, SubscriptionRequest, -} from './AbstractDataSource'; +} from './AbstractDataSource.js'; // ============================================================================ // CONSTANTS diff --git a/packages/assets-controller/src/data-sources/PriceDataSource.test.ts b/packages/assets-controller/src/data-sources/PriceDataSource.test.ts index d0842543e31..ce0d36f5f83 100644 --- a/packages/assets-controller/src/data-sources/PriceDataSource.test.ts +++ b/packages/assets-controller/src/data-sources/PriceDataSource.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { SupportedCurrency } from '@metamask/core-backend'; import type { InternalAccount } from '@metamask/keyring-internal-api'; @@ -7,10 +8,10 @@ import type { Context, Caip19AssetId, AssetsControllerStateInternal, -} from '../types'; -import { normalizeAssetId } from '../utils'; -import type { PriceDataSourceOptions } from './PriceDataSource'; -import { PriceDataSource } from './PriceDataSource'; +} from '../types.js'; +import { normalizeAssetId } from '../utils/index.js'; +import type { PriceDataSourceOptions } from './PriceDataSource.js'; +import { PriceDataSource } from './PriceDataSource.js'; jest.useFakeTimers(); diff --git a/packages/assets-controller/src/data-sources/PriceDataSource.ts b/packages/assets-controller/src/data-sources/PriceDataSource.ts index 80a6aa0a7eb..b5adf89b4dd 100644 --- a/packages/assets-controller/src/data-sources/PriceDataSource.ts +++ b/packages/assets-controller/src/data-sources/PriceDataSource.ts @@ -15,8 +15,8 @@ import type { Middleware, AssetsControllerStateInternal, } from '../types.js'; -import { fetchWithTimeout, normalizeAssetId } from '../utils/index.js'; import { DedupingBatchFetcher } from '../utils/dedupingBatchFetcher.js'; +import { fetchWithTimeout, normalizeAssetId } from '../utils/index.js'; import type { SubscriptionRequest } from './AbstractDataSource.js'; import { reduceInBatchesSerially } from './evm-rpc-services/index.js'; diff --git a/packages/assets-controller/src/data-sources/RpcDataSource.test.ts b/packages/assets-controller/src/data-sources/RpcDataSource.test.ts index c2ff9044d13..739b66d1f97 100644 --- a/packages/assets-controller/src/data-sources/RpcDataSource.test.ts +++ b/packages/assets-controller/src/data-sources/RpcDataSource.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable jest/unbound-method */ import type { InternalAccount } from '@metamask/keyring-internal-api'; import type { NetworkState } from '@metamask/network-controller'; @@ -8,24 +9,24 @@ import { createMockAssetControllerMessenger, MockRootMessenger, registerRpcDataSourceActions, -} from '../__fixtures__/MockAssetControllerMessenger'; -import { getDefaultAssetsControllerState } from '../AssetsController'; -import type { AssetsControllerMessenger } from '../AssetsController'; -import type { Caip19AssetId, ChainId, DataRequest, Context } from '../types'; -import { normalizeAssetId } from '../utils'; -import { BalanceFetcher, TokenDetector } from './evm-rpc-services'; +} from '../__fixtures__/MockAssetControllerMessenger.js'; +import { getDefaultAssetsControllerState } from '../AssetsController.js'; +import type { AssetsControllerMessenger } from '../AssetsController.js'; +import type { Caip19AssetId, ChainId, DataRequest, Context } from '../types.js'; +import { normalizeAssetId } from '../utils/index.js'; +import { BalanceFetcher, TokenDetector } from './evm-rpc-services/index.js'; import type { Address, BalanceFetchResult, TokenDetectionResult, -} from './evm-rpc-services'; -import { shouldSkipNativeForCaipChainId } from './evm-rpc-services/utils/assets'; -import type { RpcDataSourceOptions } from './RpcDataSource'; +} from './evm-rpc-services/index.js'; +import { shouldSkipNativeForCaipChainId } from './evm-rpc-services/utils/assets.js'; +import type { RpcDataSourceOptions } from './RpcDataSource.js'; import { RpcDataSource, caipChainIdToHex, createRpcDataSource, -} from './RpcDataSource'; +} from './RpcDataSource.js'; const MOCK_CHAIN_ID_HEX = '0x1'; const MOCK_CHAIN_ID_CAIP = 'eip155:1' as ChainId; diff --git a/packages/assets-controller/src/data-sources/RpcDataSource.ts b/packages/assets-controller/src/data-sources/RpcDataSource.ts index f5b2c8b3724..aa92ba636b0 100644 --- a/packages/assets-controller/src/data-sources/RpcDataSource.ts +++ b/packages/assets-controller/src/data-sources/RpcDataSource.ts @@ -19,7 +19,7 @@ import { parseCaipChainId, } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import BigNumberJS from 'bignumber.js'; +import { BigNumber as BigNumberJS } from 'bignumber.js'; import type { AssetsControllerGetStateAction, @@ -35,8 +35,8 @@ import type { DataResponse, Middleware, } from '../types.js'; -import { normalizeAssetId } from '../utils/index.js'; import { ZERO_ADDRESS } from '../utils/constants.js'; +import { normalizeAssetId } from '../utils/index.js'; import { AbstractDataSource } from './AbstractDataSource.js'; import type { DataSourceState, diff --git a/packages/assets-controller/src/data-sources/SnapDataSource.test.ts b/packages/assets-controller/src/data-sources/SnapDataSource.test.ts index 8518b3d694d..536ab8f1a46 100644 --- a/packages/assets-controller/src/data-sources/SnapDataSource.test.ts +++ b/packages/assets-controller/src/data-sources/SnapDataSource.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable jest/unbound-method */ import type { InternalAccount } from '@metamask/keyring-internal-api'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; @@ -7,14 +8,14 @@ import type { SubjectPermissions, } from '@metamask/permission-controller'; -import type { AssetsControllerMessenger } from '../AssetsController'; -import type { ChainId, DataRequest, Context, Caip19AssetId } from '../types'; +import type { AssetsControllerMessenger } from '../AssetsController.js'; +import type { ChainId, DataRequest, Context, Caip19AssetId } from '../types.js'; import type { SnapDataSourceOptions, AccountBalancesUpdatedEventPayload, SnapDataSourceAllowedActions, SnapDataSourceAllowedEvents, -} from './SnapDataSource'; +} from './SnapDataSource.js'; import { SnapDataSource, createSnapDataSource, @@ -22,7 +23,7 @@ import { getChainIdsCaveat, KEYRING_PERMISSION, ASSETS_PERMISSION, -} from './SnapDataSource'; +} from './SnapDataSource.js'; // Test chain IDs const SOLANA_MAINNET = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp' as ChainId; diff --git a/packages/assets-controller/src/data-sources/SnapDataSource.ts b/packages/assets-controller/src/data-sources/SnapDataSource.ts index 17da7b0b5e3..dec5e6b1159 100644 --- a/packages/assets-controller/src/data-sources/SnapDataSource.ts +++ b/packages/assets-controller/src/data-sources/SnapDataSource.ts @@ -1,7 +1,6 @@ import type { Balance, CaipAssetType } from '@metamask/keyring-api'; import { KeyringClient } from '@metamask/keyring-snap-client'; import type { - Caveat, GetPermissions, PermissionConstraint, PermissionControllerStateChange, @@ -17,8 +16,8 @@ import { HandlerType, SnapCaveatType } from '@metamask/snaps-utils'; import { parseCaipAssetType } from '@metamask/utils'; import type { Json, JsonRpcRequest } from '@metamask/utils'; -import type { AssetsControllerMessenger } from '../AssetsController'; -import { projectLogger, createModuleLogger } from '../logger'; +import type { AssetsControllerMessenger } from '../AssetsController.js'; +import { projectLogger, createModuleLogger } from '../logger.js'; import type { AssetBalance, ChainId, @@ -26,12 +25,12 @@ import type { DataRequest, DataResponse, Middleware, -} from '../types'; -import { AbstractDataSource } from './AbstractDataSource'; +} from '../types.js'; +import { AbstractDataSource } from './AbstractDataSource.js'; import type { DataSourceState, SubscriptionRequest, -} from './AbstractDataSource'; +} from './AbstractDataSource.js'; // ============================================================================ // SNAP KEYRING EVENT TYPES @@ -97,7 +96,7 @@ export function getChainIdsCaveat( const caveat = permission.caveats.find( (permCaveat) => permCaveat.type === SnapCaveatType.ChainIds, - ) as Caveat | undefined; + ); return caveat ? (caveat.value as ChainId[]) : null; } diff --git a/packages/assets-controller/src/data-sources/StakedBalanceDataSource.test.ts b/packages/assets-controller/src/data-sources/StakedBalanceDataSource.test.ts index 358dcbc534d..944b207bdbb 100644 --- a/packages/assets-controller/src/data-sources/StakedBalanceDataSource.test.ts +++ b/packages/assets-controller/src/data-sources/StakedBalanceDataSource.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { InternalAccount } from '@metamask/keyring-internal-api'; import { TransactionStatus } from '@metamask/transaction-controller'; @@ -6,16 +7,16 @@ import { createMockAssetControllerMessenger, createMockWeb3Provider, registerStakedMessengerActions, -} from '../__fixtures__/MockAssetControllerMessenger'; -import type { AssetsControllerMessenger } from '../AssetsController'; +} from '../__fixtures__/MockAssetControllerMessenger.js'; +import type { AssetsControllerMessenger } from '../AssetsController.js'; import type { AssetsControllerStateInternal, ChainId, Context, DataRequest, -} from '../types'; -import type { StakedBalanceDataSourceOptions } from './StakedBalanceDataSource'; -import { StakedBalanceDataSource } from './StakedBalanceDataSource'; +} from '../types.js'; +import type { StakedBalanceDataSourceOptions } from './StakedBalanceDataSource.js'; +import { StakedBalanceDataSource } from './StakedBalanceDataSource.js'; const MAINNET_CHAIN_ID_HEX = '0x1'; const MAINNET_CHAIN_ID_CAIP = 'eip155:1' as ChainId; diff --git a/packages/assets-controller/src/data-sources/TokenDataSource.test.ts b/packages/assets-controller/src/data-sources/TokenDataSource.test.ts index c4de66e06f8..d1993502612 100644 --- a/packages/assets-controller/src/data-sources/TokenDataSource.test.ts +++ b/packages/assets-controller/src/data-sources/TokenDataSource.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { V3AssetResponse } from '@metamask/core-backend'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MockAnyNamespace } from '@metamask/messenger'; @@ -7,10 +8,10 @@ import type { } from '@metamask/phishing-controller'; import { TokenScanResultType } from '@metamask/phishing-controller'; -import type { AssetsControllerMessenger } from '../AssetsController'; -import type { Context, DataRequest, Caip19AssetId, ChainId } from '../types'; -import type { TokenDataSourceOptions } from './TokenDataSource'; -import { TokenDataSource } from './TokenDataSource'; +import type { AssetsControllerMessenger } from '../AssetsController.js'; +import type { Context, DataRequest, Caip19AssetId, ChainId } from '../types.js'; +import type { TokenDataSourceOptions } from './TokenDataSource.js'; +import { TokenDataSource } from './TokenDataSource.js'; type AllActions = PhishingControllerBulkScanTokensAction; type AllEvents = never; diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/clients/MulticallClient.test.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/clients/MulticallClient.test.ts index 01528dbdee1..35831386687 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/clients/MulticallClient.test.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/clients/MulticallClient.test.ts @@ -1,13 +1,19 @@ import { defaultAbiCoder, Interface } from '@ethersproject/abi'; +import { jest } from '@jest/globals'; import * as controllerUtils from '@metamask/controller-utils'; import type { Hex } from '@metamask/utils'; -import type { Address, BalanceOfRequest, ChainId, Provider } from '../types'; +import type { + Address, + BalanceOfRequest, + ChainId, + Provider, +} from '../types/index.js'; import { decodeAggregate3Response, encodeAggregate3, MulticallClient, -} from './MulticallClient'; +} from './MulticallClient.js'; // ============================================================================= // MOCK PROVIDER diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/clients/TokensApiClient.test.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/clients/TokensApiClient.test.ts index 83a16c13e6c..311314ddbae 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/clients/TokensApiClient.test.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/clients/TokensApiClient.test.ts @@ -1,9 +1,11 @@ -import type { ChainId } from '../types'; -import { TokensApiClient } from './TokensApiClient'; +import { jest } from '@jest/globals'; + +import type { ChainId } from '../types/index.js'; +import { TokensApiClient } from './TokensApiClient.js'; import type { TokensApiClientConfig, TokenListQueryClient, -} from './TokensApiClient'; +} from './TokensApiClient.js'; // ============================================================================= // CONSTANTS diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/services/BalanceFetcher.test.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/services/BalanceFetcher.test.ts index d4476a988e3..2e88a7b7eb0 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/services/BalanceFetcher.test.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/services/BalanceFetcher.test.ts @@ -1,19 +1,20 @@ +import { jest } from '@jest/globals'; import type { CaipAssetType } from '@metamask/utils'; -import type { MulticallClient } from '../clients'; +import type { MulticallClient } from '../clients/index.js'; import type { Address, AssetFetchEntry, AssetsBalanceState, BalanceOfResponse, ChainId, -} from '../types'; -import { BalanceFetcher } from './BalanceFetcher'; +} from '../types/index.js'; +import { BalanceFetcher } from './BalanceFetcher.js'; import type { BalanceFetcherConfig, BalanceFetcherMessenger, BalancePollingInput, -} from './BalanceFetcher'; +} from './BalanceFetcher.js'; // ============================================================================= // CONSTANTS diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/services/StakedBalanceFetcher.test.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/services/StakedBalanceFetcher.test.ts index d63b9ba8070..446e2ea0e54 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/services/StakedBalanceFetcher.test.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/services/StakedBalanceFetcher.test.ts @@ -1,14 +1,15 @@ import { defaultAbiCoder } from '@ethersproject/abi'; import type { Web3Provider } from '@ethersproject/providers'; +import { jest } from '@jest/globals'; import type { StakedBalanceFetcherConfig, StakedBalancePollingInput, -} from './StakedBalanceFetcher'; +} from './StakedBalanceFetcher.js'; import { StakedBalanceFetcher, isStakingContractAssetId, -} from './StakedBalanceFetcher'; +} from './StakedBalanceFetcher.js'; const TEST_ADDRESS = '0x9bed78535d6a03a955f1504aadba974d9a29e292'; const MAINNET_CHAIN_ID = '0x1'; diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/services/TokenDetector.test.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/services/TokenDetector.test.ts index 05a45a5ab7f..92b41a3fd79 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/services/TokenDetector.test.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/services/TokenDetector.test.ts @@ -1,16 +1,18 @@ -import type { MulticallClient } from '../clients'; -import type { TokensApiClient } from '../clients/TokensApiClient'; +import { jest } from '@jest/globals'; + +import type { MulticallClient } from '../clients/index.js'; +import type { TokensApiClient } from '../clients/TokensApiClient.js'; import type { Address, BalanceOfResponse, ChainId, TokenListEntry, -} from '../types'; -import { TokenDetector } from './TokenDetector'; +} from '../types/index.js'; +import { TokenDetector } from './TokenDetector.js'; import type { TokenDetectorConfig, DetectionPollingInput, -} from './TokenDetector'; +} from './TokenDetector.js'; // ============================================================================= // CONSTANTS diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/services/index.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/services/index.ts index 1eded823b02..8e6d21d8acf 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/services/index.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/services/index.ts @@ -3,14 +3,14 @@ export { type TokenDetectorConfig, type DetectionPollingInput, type OnDetectionUpdateCallback, -} from './TokenDetector'; +} from './TokenDetector.js'; export { BalanceFetcher, type BalanceFetcherConfig, type BalanceFetcherMessenger, type BalancePollingInput, type OnBalanceUpdateCallback, -} from './BalanceFetcher'; +} from './BalanceFetcher.js'; export { StakedBalanceFetcher, getSupportedStakingChainIds, @@ -20,4 +20,4 @@ export { type StakedBalancePollingInput, type StakedBalanceFetchResult, type OnStakedBalanceUpdateCallback, -} from './StakedBalanceFetcher'; +} from './StakedBalanceFetcher.js'; diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/types/assets.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/types/assets.ts index 5ca8f1ea496..511cd88e701 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/types/assets.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/types/assets.ts @@ -1,6 +1,6 @@ import type { CaipAssetType } from '@metamask/utils'; -import type { AccountId, Address, AssetType, ChainId } from './core'; +import type { AccountId, Address, AssetType, ChainId } from './core.js'; /** * Core asset definition. diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/types/config.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/types/config.ts index dbf583c910c..64225226761 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/types/config.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/types/config.ts @@ -1,4 +1,4 @@ -import type { ChainId } from './core'; +import type { ChainId } from './core.js'; /** * Minimal provider interface for RPC calls. diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/types/index.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/types/index.ts index ac9a8989041..8286fe3341e 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/types/index.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/types/index.ts @@ -5,10 +5,10 @@ export type { AssetType, CaipAssetType, ChainId, -} from './core'; +} from './core.js'; // Asset types -export type { Asset, AssetBalance } from './assets'; +export type { Asset, AssetBalance } from './assets.js'; // State types export type { @@ -16,13 +16,13 @@ export type { TokenChainsCacheEntry, TokenListEntry, TokenListState, -} from './state'; +} from './state.js'; // Config types -export type { GetProviderFunction, Provider } from './config'; +export type { GetProviderFunction, Provider } from './config.js'; // Multicall types -export type { BalanceOfRequest, BalanceOfResponse } from './multicall'; +export type { BalanceOfRequest, BalanceOfResponse } from './multicall.js'; // Service types export type { @@ -30,4 +30,4 @@ export type { BalanceFetchResult, TokenDetectionOptions, TokenDetectionResult, -} from './services'; +} from './services.js'; diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/types/multicall.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/types/multicall.ts index 7f56d538e27..bd19640ebeb 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/types/multicall.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/types/multicall.ts @@ -1,4 +1,4 @@ -import type { Address } from './core'; +import type { Address } from './core.js'; /** * Balance request for batch balance fetching. diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/types/services.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/types/services.ts index ab5a89dd6a2..14859e5254d 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/types/services.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/types/services.ts @@ -1,5 +1,5 @@ -import type { Asset, AssetBalance } from './assets'; -import type { AccountId, Address, CaipAssetType, ChainId } from './core'; +import type { Asset, AssetBalance } from './assets.js'; +import type { AccountId, Address, CaipAssetType, ChainId } from './core.js'; /** * Token detection result. diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/types/state.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/types/state.ts index 9ea14a2951f..af114458eaf 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/types/state.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/types/state.ts @@ -1,4 +1,4 @@ -import type { ChainId } from './core'; +import type { ChainId } from './core.js'; /** * Single token entry from token list. diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/utils/batch.test.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/utils/batch.test.ts index 9501555edf4..24f945dbb6f 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/utils/batch.test.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/utils/batch.test.ts @@ -1,4 +1,4 @@ -import { divideIntoBatches, reduceInBatchesSerially } from './batch'; +import { divideIntoBatches, reduceInBatchesSerially } from './batch.js'; describe('batch utilities', () => { describe('divideIntoBatches', () => { diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/utils/index.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/utils/index.ts index 8a9129363d1..55367744a83 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/utils/index.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/utils/index.ts @@ -1,8 +1,8 @@ -export { divideIntoBatches, reduceInBatchesSerially } from './batch'; -export { chainIdToHex, weiToHumanReadable } from './parsing'; +export { divideIntoBatches, reduceInBatchesSerially } from './batch.js'; +export { chainIdToHex, weiToHumanReadable } from './parsing.js'; export { getStakingContractAddress, getSupportedStakingChainIds, isStakingContractAssetId, STAKING_CONTRACT_ADDRESS_BY_CHAINID, -} from './staking-contracts'; +} from './staking-contracts.js'; diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/utils/parsing.test.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/utils/parsing.test.ts index 21a14f53671..6429d2b7577 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/utils/parsing.test.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/utils/parsing.test.ts @@ -1,4 +1,4 @@ -import { chainIdToHex, weiToHumanReadable } from './parsing'; +import { chainIdToHex, weiToHumanReadable } from './parsing.js'; describe('parsing utilities', () => { describe('weiToHumanReadable', () => { diff --git a/packages/assets-controller/src/data-sources/evm-rpc-services/utils/parsing.ts b/packages/assets-controller/src/data-sources/evm-rpc-services/utils/parsing.ts index dfc9b1922fa..e374149394f 100644 --- a/packages/assets-controller/src/data-sources/evm-rpc-services/utils/parsing.ts +++ b/packages/assets-controller/src/data-sources/evm-rpc-services/utils/parsing.ts @@ -5,7 +5,7 @@ import { parseCaipChainId, } from '@metamask/utils'; import type { CaipChainId, Hex } from '@metamask/utils'; -import BigNumberJS from 'bignumber.js'; +import { BigNumber as BigNumberJS } from 'bignumber.js'; import type { ChainId } from '../types/index.js'; diff --git a/packages/assets-controller/src/data-sources/index.ts b/packages/assets-controller/src/data-sources/index.ts index 47cb7c5734c..be96ba70d72 100644 --- a/packages/assets-controller/src/data-sources/index.ts +++ b/packages/assets-controller/src/data-sources/index.ts @@ -2,7 +2,7 @@ export { AbstractDataSource, type DataSourceState, type SubscriptionRequest, -} from './AbstractDataSource'; +} from './AbstractDataSource.js'; export { AccountsApiDataSource, @@ -10,7 +10,7 @@ export { type AccountsApiDataSourceOptions, type AccountsApiDataSourceState, type AccountsApiDataSourceAllowedActions, -} from './AccountsApiDataSource'; +} from './AccountsApiDataSource.js'; export { BackendWebsocketDataSource, @@ -19,7 +19,7 @@ export { type BackendWebsocketDataSourceState, type BackendWebsocketDataSourceAllowedActions, type BackendWebsocketDataSourceAllowedEvents, -} from './BackendWebsocketDataSource'; +} from './BackendWebsocketDataSource.js'; export { RpcDataSource, @@ -30,19 +30,19 @@ export { type RpcDataSourceAllowedActions, type RpcDataSourceAllowedEvents, type ChainStatus, -} from './RpcDataSource'; +} from './RpcDataSource.js'; export { TokenDataSource, type TokenDataSourceOptions, type TokenDataSourceAllowedActions, -} from './TokenDataSource'; +} from './TokenDataSource.js'; export { PriceDataSource, type PriceDataSourceConfig, type PriceDataSourceOptions, -} from './PriceDataSource'; +} from './PriceDataSource.js'; // Unified Snap Data Source (dynamically discovers keyring snaps via PermissionController) export { @@ -59,10 +59,10 @@ export { type SnapDataSourceOptions, type SnapDataSourceAllowedActions, type SnapDataSourceAllowedEvents, -} from './SnapDataSource'; +} from './SnapDataSource.js'; export { StakedBalanceDataSource, type StakedBalanceDataSourceConfig, type StakedBalanceDataSourceOptions, -} from './StakedBalanceDataSource'; +} from './StakedBalanceDataSource.js'; diff --git a/packages/assets-controller/src/defaults.ts b/packages/assets-controller/src/defaults.ts index 97e30970ca9..6c587cddf85 100644 --- a/packages/assets-controller/src/defaults.ts +++ b/packages/assets-controller/src/defaults.ts @@ -3,7 +3,7 @@ import type { Caip19AssetId, ChainId, FungibleAssetMetadata, -} from './types'; +} from './types.js'; /** * EIP-55 checksummed address of MetaMask USD (mUSD) — same canonical contract diff --git a/packages/assets-controller/src/index.ts b/packages/assets-controller/src/index.ts index f34bd8139bf..f659160fd54 100644 --- a/packages/assets-controller/src/index.ts +++ b/packages/assets-controller/src/index.ts @@ -100,7 +100,10 @@ export type { // Data sources - base class and types export { AbstractDataSource } from './data-sources/index.js'; -export type { DataSourceState, SubscriptionRequest } from './data-sources/index.js'; +export type { + DataSourceState, + SubscriptionRequest, +} from './data-sources/index.js'; // Data sources - AccountsApi export { AccountsApiDataSource } from './data-sources/index.js'; diff --git a/packages/assets-controller/src/middlewares/CustomAssetGraduationMiddleware.test.ts b/packages/assets-controller/src/middlewares/CustomAssetGraduationMiddleware.test.ts index 02331161e93..1a8aed7ad1c 100644 --- a/packages/assets-controller/src/middlewares/CustomAssetGraduationMiddleware.test.ts +++ b/packages/assets-controller/src/middlewares/CustomAssetGraduationMiddleware.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { InternalAccount } from '@metamask/keyring-internal-api'; import type { @@ -5,8 +6,8 @@ import type { Caip19AssetId, Context, DataRequest, -} from '../types'; -import { CustomAssetGraduationMiddleware } from './CustomAssetGraduationMiddleware'; +} from '../types.js'; +import { CustomAssetGraduationMiddleware } from './CustomAssetGraduationMiddleware.js'; const MOCK_ACCOUNT_ID = 'mock-account-id'; const OTHER_ACCOUNT_ID = 'other-account-id'; diff --git a/packages/assets-controller/src/middlewares/DetectionMiddleware.test.ts b/packages/assets-controller/src/middlewares/DetectionMiddleware.test.ts index 4d471c0bb0a..d87871c5e3c 100644 --- a/packages/assets-controller/src/middlewares/DetectionMiddleware.test.ts +++ b/packages/assets-controller/src/middlewares/DetectionMiddleware.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { InternalAccount } from '@metamask/keyring-internal-api'; import { Messenger } from '@metamask/messenger'; @@ -6,9 +7,9 @@ import type { DataRequest, Caip19AssetId, AssetsControllerStateInternal, -} from '../types'; -import { normalizeAssetId } from '../utils'; -import { DetectionMiddleware } from './DetectionMiddleware'; +} from '../types.js'; +import { normalizeAssetId } from '../utils/index.js'; +import { DetectionMiddleware } from './DetectionMiddleware.js'; const MOCK_ADDRESS = '0x1234567890123456789012345678901234567890'; const MOCK_ACCOUNT_ID = 'mock-account-id'; diff --git a/packages/assets-controller/src/middlewares/ParallelMiddleware.test.ts b/packages/assets-controller/src/middlewares/ParallelMiddleware.test.ts index a20712b6567..d45baba6a3b 100644 --- a/packages/assets-controller/src/middlewares/ParallelMiddleware.test.ts +++ b/packages/assets-controller/src/middlewares/ParallelMiddleware.test.ts @@ -1,6 +1,8 @@ -import type { AssetsDataSource } from '../types'; -import type { Context, DataResponse } from '../types'; -import { createParallelMiddleware } from './ParallelMiddleware'; +import { jest } from '@jest/globals'; + +import type { AssetsDataSource } from '../types.js'; +import type { Context, DataResponse } from '../types.js'; +import { createParallelMiddleware } from './ParallelMiddleware.js'; const MOCK_ASSET = 'eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'; diff --git a/packages/assets-controller/src/middlewares/ParallelMiddleware.ts b/packages/assets-controller/src/middlewares/ParallelMiddleware.ts index 7d67c83308e..8b6fceed491 100644 --- a/packages/assets-controller/src/middlewares/ParallelMiddleware.ts +++ b/packages/assets-controller/src/middlewares/ParallelMiddleware.ts @@ -7,7 +7,7 @@ import type { DataResponse, Middleware, AssetsDataSource, -} from '../types'; +} from '../types.js'; // ============================================================================ // MERGE HELPER diff --git a/packages/assets-controller/src/middlewares/RpcFallbackMiddleware.test.ts b/packages/assets-controller/src/middlewares/RpcFallbackMiddleware.test.ts index bcd82f65d19..733a594496b 100644 --- a/packages/assets-controller/src/middlewares/RpcFallbackMiddleware.test.ts +++ b/packages/assets-controller/src/middlewares/RpcFallbackMiddleware.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { InternalAccount } from '@metamask/keyring-internal-api'; import type { @@ -7,8 +8,8 @@ import type { Context, DataRequest, DataResponse, -} from '../types'; -import { RpcFallbackMiddleware } from './RpcFallbackMiddleware'; +} from '../types.js'; +import { RpcFallbackMiddleware } from './RpcFallbackMiddleware.js'; const MOCK_ACCOUNT_ID = 'mock-account-id'; const MOCK_ASSET_MAINNET = 'eip155:1/slip44:60' as Caip19AssetId; diff --git a/packages/assets-controller/src/middlewares/RpcFallbackMiddleware.ts b/packages/assets-controller/src/middlewares/RpcFallbackMiddleware.ts index b91da7490a3..fb164a89126 100644 --- a/packages/assets-controller/src/middlewares/RpcFallbackMiddleware.ts +++ b/packages/assets-controller/src/middlewares/RpcFallbackMiddleware.ts @@ -1,12 +1,12 @@ -import { projectLogger, createModuleLogger } from '../logger'; -import { forDataTypes } from '../types'; +import { projectLogger, createModuleLogger } from '../logger.js'; +import { forDataTypes } from '../types.js'; import type { AssetsDataSource, ChainId, DataResponse, Middleware, -} from '../types'; -import { mergeDataResponses } from './ParallelMiddleware'; +} from '../types.js'; +import { mergeDataResponses } from './ParallelMiddleware.js'; const CONTROLLER_NAME = 'RpcFallbackMiddleware'; diff --git a/packages/assets-controller/src/middlewares/index.ts b/packages/assets-controller/src/middlewares/index.ts index 15a26613b99..d6796382aa3 100644 --- a/packages/assets-controller/src/middlewares/index.ts +++ b/packages/assets-controller/src/middlewares/index.ts @@ -1,12 +1,12 @@ -export { CustomAssetGraduationMiddleware } from './CustomAssetGraduationMiddleware'; -export type { CustomAssetGraduationMiddlewareOptions } from './CustomAssetGraduationMiddleware'; -export { DetectionMiddleware } from './DetectionMiddleware'; -export { RpcFallbackMiddleware } from './RpcFallbackMiddleware'; -export type { RpcFallbackMiddlewareOptions } from './RpcFallbackMiddleware'; +export { CustomAssetGraduationMiddleware } from './CustomAssetGraduationMiddleware.js'; +export type { CustomAssetGraduationMiddlewareOptions } from './CustomAssetGraduationMiddleware.js'; +export { DetectionMiddleware } from './DetectionMiddleware.js'; +export { RpcFallbackMiddleware } from './RpcFallbackMiddleware.js'; +export type { RpcFallbackMiddlewareOptions } from './RpcFallbackMiddleware.js'; export { createParallelBalanceMiddleware, createParallelMiddleware, mergeDataResponses, -} from './ParallelMiddleware'; -export type { BalanceSource } from './ParallelMiddleware'; -export type { AssetsDataSource } from '../types'; +} from './ParallelMiddleware.js'; +export type { BalanceSource } from './ParallelMiddleware.js'; +export type { AssetsDataSource } from '../types.js'; diff --git a/packages/assets-controller/src/migrations/healAssetsInfoMetadata.test.ts b/packages/assets-controller/src/migrations/healAssetsInfoMetadata.test.ts index 98202bb31be..1b6481bf1d6 100644 --- a/packages/assets-controller/src/migrations/healAssetsInfoMetadata.test.ts +++ b/packages/assets-controller/src/migrations/healAssetsInfoMetadata.test.ts @@ -1,9 +1,11 @@ -import type { AssetsControllerStateInternal, Caip19AssetId } from '../types'; -import type { CurrentAssetsState } from './healAssetsInfoMetadata'; +import { jest } from '@jest/globals'; + +import type { AssetsControllerStateInternal, Caip19AssetId } from '../types.js'; +import type { CurrentAssetsState } from './healAssetsInfoMetadata.js'; import { healAssetsInfoMetadata, tempHealAssetsInfoMetadata, -} from './healAssetsInfoMetadata'; +} from './healAssetsInfoMetadata.js'; const ACCOUNT_ID = 'account-uuid-1'; const ACCOUNT_ADDRESS = '0x1111111111111111111111111111111111111111'; diff --git a/packages/assets-controller/src/migrations/healAssetsInfoMetadata.ts b/packages/assets-controller/src/migrations/healAssetsInfoMetadata.ts index fc34bc32855..e3f75f6fbb5 100644 --- a/packages/assets-controller/src/migrations/healAssetsInfoMetadata.ts +++ b/packages/assets-controller/src/migrations/healAssetsInfoMetadata.ts @@ -7,15 +7,15 @@ import { hasProperty, isObject, } from '@metamask/utils'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; -import { createModuleLogger, projectLogger } from '../logger'; +import { createModuleLogger, projectLogger } from '../logger.js'; import type { AccountId, Caip19AssetId, FungibleAssetMetadata, AssetsControllerStateInternal, -} from '../types'; +} from '../types.js'; /** * TEMPORARY MODULE — remove in a future release. diff --git a/packages/assets-controller/src/selectors/balance.test.ts b/packages/assets-controller/src/selectors/balance.test.ts index 61fcc2b9ddc..facc9a9af5b 100644 --- a/packages/assets-controller/src/selectors/balance.test.ts +++ b/packages/assets-controller/src/selectors/balance.test.ts @@ -1,9 +1,9 @@ import type { AccountTreeControllerState } from '@metamask/account-tree-controller'; import type { InternalAccount } from '@metamask/keyring-internal-api'; -import type { AssetsControllerState } from '../AssetsController'; -import type { Caip19AssetId } from '../types'; -import type { AccountsById, EnabledNetworkMap } from './balance'; +import type { AssetsControllerState } from '../AssetsController.js'; +import type { Caip19AssetId } from '../types.js'; +import type { AccountsById, EnabledNetworkMap } from './balance.js'; import { calculateBalanceChangeForAccountGroup, calculateBalanceForAllWallets, @@ -12,7 +12,7 @@ import { getAggregatedBalanceForAccountIds, getGroupIdForAccount, getInternalAccountsForGroup, -} from './balance'; +} from './balance.js'; describe('balance selectors', () => { const accountId1 = 'account-id-1'; diff --git a/packages/assets-controller/src/selectors/balance.ts b/packages/assets-controller/src/selectors/balance.ts index bd354714ff7..ba3d4845e91 100644 --- a/packages/assets-controller/src/selectors/balance.ts +++ b/packages/assets-controller/src/selectors/balance.ts @@ -9,16 +9,16 @@ import { parseCaipAssetType, parseCaipChainId, } from '@metamask/utils'; -import BigNumberJS from 'bignumber.js'; +import { BigNumber as BigNumberJS } from 'bignumber.js'; -import type { AssetsControllerState } from '../AssetsController'; +import type { AssetsControllerState } from '../AssetsController.js'; import type { AccountId, AssetBalance, AssetMetadata, AssetPreferences, Caip19AssetId, -} from '../types'; +} from '../types.js'; // ============================================================================ // TRACE NAMES — used in Sentry spans (search these strings in Discover) diff --git a/packages/assets-controller/src/utils/customAssetsRpcSupplement.test.ts b/packages/assets-controller/src/utils/customAssetsRpcSupplement.test.ts index c7bfe631747..597a6e541b5 100644 --- a/packages/assets-controller/src/utils/customAssetsRpcSupplement.test.ts +++ b/packages/assets-controller/src/utils/customAssetsRpcSupplement.test.ts @@ -1,5 +1,5 @@ -import type { Caip19AssetId, ChainId } from '../types'; -import { pickRpcCustomAssetsSupplement } from './customAssetsRpcSupplement'; +import type { Caip19AssetId, ChainId } from '../types.js'; +import { pickRpcCustomAssetsSupplement } from './customAssetsRpcSupplement.js'; const MAINNET = 'eip155:1' as ChainId; const POLYGON = 'eip155:137' as ChainId; diff --git a/packages/assets-controller/src/utils/customAssetsRpcSupplement.ts b/packages/assets-controller/src/utils/customAssetsRpcSupplement.ts index 3e202535bc5..3703a5f9fc9 100644 --- a/packages/assets-controller/src/utils/customAssetsRpcSupplement.ts +++ b/packages/assets-controller/src/utils/customAssetsRpcSupplement.ts @@ -1,6 +1,6 @@ import { parseCaipAssetType } from '@metamask/utils'; -import type { Caip19AssetId, ChainId } from '../types'; +import type { Caip19AssetId, ChainId } from '../types.js'; /** * Inputs needed to decide whether `RpcDataSource` should run a supplemental diff --git a/packages/assets-controller/src/utils/fetchWithTimeout.test.ts b/packages/assets-controller/src/utils/fetchWithTimeout.test.ts index 65c3f20ae2a..c7ab4634e72 100644 --- a/packages/assets-controller/src/utils/fetchWithTimeout.test.ts +++ b/packages/assets-controller/src/utils/fetchWithTimeout.test.ts @@ -1,4 +1,6 @@ -import { fetchWithTimeout } from './fetchWithTimeout'; +import { jest } from '@jest/globals'; + +import { fetchWithTimeout } from './fetchWithTimeout.js'; describe('fetchWithTimeout', () => { it('resolves with the task value when it settles in time', async () => { diff --git a/packages/assets-controller/src/utils/formatExchangeRatesForBridge.test.ts b/packages/assets-controller/src/utils/formatExchangeRatesForBridge.test.ts index 40cacaec833..6ca041632fc 100644 --- a/packages/assets-controller/src/utils/formatExchangeRatesForBridge.test.ts +++ b/packages/assets-controller/src/utils/formatExchangeRatesForBridge.test.ts @@ -1,5 +1,5 @@ -import type { AssetMetadata, FungibleAssetPrice } from '../types'; -import { formatExchangeRatesForBridge } from './formatExchangeRatesForBridge'; +import type { AssetMetadata, FungibleAssetPrice } from '../types.js'; +import { formatExchangeRatesForBridge } from './formatExchangeRatesForBridge.js'; /** * Builds minimal AssetPrice for tests. Defaults usdPrice to the same diff --git a/packages/assets-controller/src/utils/formatExchangeRatesForBridge.ts b/packages/assets-controller/src/utils/formatExchangeRatesForBridge.ts index db306600322..156349c7dce 100644 --- a/packages/assets-controller/src/utils/formatExchangeRatesForBridge.ts +++ b/packages/assets-controller/src/utils/formatExchangeRatesForBridge.ts @@ -15,7 +15,7 @@ import type { AssetPrice, FungibleAssetPrice, Caip19AssetId, -} from '../types'; +} from '../types.js'; /** * Exchange rates in the format expected by the bridge controller: @@ -128,9 +128,7 @@ export function formatExchangeRatesForBridge(params: { if (tokenAddress) { const priceInNative = nativeAssetUsdPrice > 0 ? usdPrice / nativeAssetUsdPrice : usdPrice; - if (!marketData[chainIdHex]) { - marketData[chainIdHex] = {}; - } + marketData[chainIdHex] ??= {}; marketData[chainIdHex][tokenAddress] = { ...priceData, price: priceInNative, diff --git a/packages/assets-controller/src/utils/formatStateForTransactionPay.test.ts b/packages/assets-controller/src/utils/formatStateForTransactionPay.test.ts index d906273061e..94c099feb50 100644 --- a/packages/assets-controller/src/utils/formatStateForTransactionPay.test.ts +++ b/packages/assets-controller/src/utils/formatStateForTransactionPay.test.ts @@ -1,8 +1,12 @@ -import type { AssetBalance, AssetMetadata, FungibleAssetPrice } from '../types'; +import type { + AssetBalance, + AssetMetadata, + FungibleAssetPrice, +} from '../types.js'; import { formatStateForTransactionPay, AccountForLegacyFormat, -} from './formatStateForTransactionPay'; +} from './formatStateForTransactionPay.js'; function price( overrides: Partial & { price: number }, diff --git a/packages/assets-controller/src/utils/formatStateForTransactionPay.ts b/packages/assets-controller/src/utils/formatStateForTransactionPay.ts index eeeba30c893..c0538a1d07b 100644 --- a/packages/assets-controller/src/utils/formatStateForTransactionPay.ts +++ b/packages/assets-controller/src/utils/formatStateForTransactionPay.ts @@ -8,9 +8,9 @@ import type { AssetMetadata, AssetPrice, Caip19AssetId, -} from '../types'; -import { formatExchangeRatesForBridge } from './formatExchangeRatesForBridge'; -import type { BridgeExchangeRatesFormat } from './formatExchangeRatesForBridge'; +} from '../types.js'; +import { formatExchangeRatesForBridge } from './formatExchangeRatesForBridge.js'; +import type { BridgeExchangeRatesFormat } from './formatExchangeRatesForBridge.js'; /** Account with id and address for mapping state to legacy format. */ export type AccountForLegacyFormat = { id: string; address: string }; diff --git a/packages/assets-controller/src/utils/index.ts b/packages/assets-controller/src/utils/index.ts index 408f745261d..daff68bcaec 100644 --- a/packages/assets-controller/src/utils/index.ts +++ b/packages/assets-controller/src/utils/index.ts @@ -1,15 +1,15 @@ -export { fetchWithTimeout } from './fetchWithTimeout'; -export { normalizeAmountString } from './normalizeAmountString'; -export { normalizeAssetId } from './normalizeAssetId'; -export { formatExchangeRatesForBridge } from './formatExchangeRatesForBridge'; -export { formatStateForTransactionPay } from './formatStateForTransactionPay'; -export type { BridgeExchangeRatesFormat } from './formatExchangeRatesForBridge'; +export { fetchWithTimeout } from './fetchWithTimeout.js'; +export { normalizeAmountString } from './normalizeAmountString.js'; +export { normalizeAssetId } from './normalizeAssetId.js'; +export { formatExchangeRatesForBridge } from './formatExchangeRatesForBridge.js'; +export { formatStateForTransactionPay } from './formatStateForTransactionPay.js'; +export type { BridgeExchangeRatesFormat } from './formatExchangeRatesForBridge.js'; export type { AccountForLegacyFormat, LegacyToken, TransactionPayLegacyFormat, -} from './formatStateForTransactionPay'; +} from './formatStateForTransactionPay.js'; export { buildNativeAssetsFromConstant, buildNativeAssetsFromApi, -} from './native-assets'; +} from './native-assets.js'; diff --git a/packages/assets-controller/src/utils/native-assets.test.ts b/packages/assets-controller/src/utils/native-assets.test.ts index e63df1bd83a..bad8e046466 100644 --- a/packages/assets-controller/src/utils/native-assets.test.ts +++ b/packages/assets-controller/src/utils/native-assets.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; import { SPOT_PRICES_SUPPORT_INFO } from '@metamask/assets-controllers'; import { fetchWithErrorHandling } from '@metamask/controller-utils'; import { buildNativeAssetsFromConstant, buildNativeAssetsFromApi, -} from './native-assets'; -import { normalizeAssetId } from './normalizeAssetId'; +} from './native-assets.js'; +import { normalizeAssetId } from './normalizeAssetId.js'; jest.mock('@metamask/controller-utils', () => ({ ...jest.requireActual('@metamask/controller-utils'), diff --git a/packages/assets-controller/src/utils/native-assets.ts b/packages/assets-controller/src/utils/native-assets.ts index 2693daae520..5cf251974aa 100644 --- a/packages/assets-controller/src/utils/native-assets.ts +++ b/packages/assets-controller/src/utils/native-assets.ts @@ -2,8 +2,8 @@ import { SPOT_PRICES_SUPPORT_INFO } from '@metamask/assets-controllers'; import { fetchWithErrorHandling } from '@metamask/controller-utils'; import { parseCaipAssetType } from '@metamask/utils'; -import type { Caip19AssetId, ChainId } from '../types'; -import { normalizeAssetId } from './normalizeAssetId'; +import type { Caip19AssetId, ChainId } from '../types.js'; +import { normalizeAssetId } from './normalizeAssetId.js'; const CHAINID_NETWORK_URL = 'https://chainid.network/chains.json'; diff --git a/packages/assets-controller/src/utils/normalizeAmountString.test.ts b/packages/assets-controller/src/utils/normalizeAmountString.test.ts index eb21ca68d38..da1af7da45b 100644 --- a/packages/assets-controller/src/utils/normalizeAmountString.test.ts +++ b/packages/assets-controller/src/utils/normalizeAmountString.test.ts @@ -1,4 +1,4 @@ -import { normalizeAmountString } from './normalizeAmountString'; +import { normalizeAmountString } from './normalizeAmountString.js'; describe('normalizeAmountString', () => { describe('with decimals=18 (e.g. ETH/most ERC20)', () => { diff --git a/packages/assets-controller/src/utils/normalizeAmountString.ts b/packages/assets-controller/src/utils/normalizeAmountString.ts index 69ec0399b4e..337b5150dec 100644 --- a/packages/assets-controller/src/utils/normalizeAmountString.ts +++ b/packages/assets-controller/src/utils/normalizeAmountString.ts @@ -1,4 +1,4 @@ -import BigNumberJS from 'bignumber.js'; +import { BigNumber as BigNumberJS } from 'bignumber.js'; /** * Normalize an asset balance `amount` string into a canonical plain-decimal diff --git a/packages/assets-controller/src/utils/normalizeAssetId.ts b/packages/assets-controller/src/utils/normalizeAssetId.ts index 76632a54813..ecdbc4f03e1 100644 --- a/packages/assets-controller/src/utils/normalizeAssetId.ts +++ b/packages/assets-controller/src/utils/normalizeAssetId.ts @@ -1,7 +1,7 @@ import { toChecksumAddress } from '@ethereumjs/util'; import { parseCaipAssetType, parseCaipChainId } from '@metamask/utils'; -import type { Caip19AssetId } from '../types'; +import type { Caip19AssetId } from '../types.js'; /** * Normalizes a CAIP-19 asset ID by checksumming EVM addresses. diff --git a/packages/assets-controller/src/utils/processAccountActivityBalanceUpdates.test.ts b/packages/assets-controller/src/utils/processAccountActivityBalanceUpdates.test.ts index 6f4f09e58c9..01f1d82b47a 100644 --- a/packages/assets-controller/src/utils/processAccountActivityBalanceUpdates.test.ts +++ b/packages/assets-controller/src/utils/processAccountActivityBalanceUpdates.test.ts @@ -1,7 +1,7 @@ import type { BalanceUpdate } from '@metamask/core-backend'; -import type { Caip19AssetId } from '../types'; -import { processAccountActivityBalanceUpdates } from './processAccountActivityBalanceUpdates'; +import type { Caip19AssetId } from '../types.js'; +import { processAccountActivityBalanceUpdates } from './processAccountActivityBalanceUpdates.js'; describe('processAccountActivityBalanceUpdates', () => { it('converts hex postBalance to human-readable amount', () => { diff --git a/packages/assets-controller/src/utils/processAccountActivityBalanceUpdates.ts b/packages/assets-controller/src/utils/processAccountActivityBalanceUpdates.ts index 16c3844ce3c..77e101ffb94 100644 --- a/packages/assets-controller/src/utils/processAccountActivityBalanceUpdates.ts +++ b/packages/assets-controller/src/utils/processAccountActivityBalanceUpdates.ts @@ -1,12 +1,12 @@ import type { BalanceUpdate } from '@metamask/core-backend'; -import BigNumberJS from 'bignumber.js'; +import { BigNumber as BigNumberJS } from 'bignumber.js'; import type { AssetBalance, AssetMetadata, Caip19AssetId, DataResponse, -} from '../types'; +} from '../types.js'; /** * Convert AccountActivityMessage balance updates into a {@link DataResponse} From 1c07c25cdf0a2f7349f71a76fcf8352363e4ac2c Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:41 +0200 Subject: [PATCH 057/115] ESLint fix and `jest` global import for assets-controllers --- packages/assets-controllers/package.json | 2 +- ...ntTrackerController-method-action-types.ts | 2 +- .../src/AccountTrackerController.test.ts | 17 +++--- .../src/AccountTrackerController.ts | 24 ++++---- ...sContractController-method-action-types.ts | 2 +- .../src/AssetsContractController.test.ts | 13 +++-- .../src/AssetsContractController.ts | 14 ++--- ...tractControllerWithNetworkClientId.test.ts | 2 +- ...rencyRateController-method-action-types.ts | 2 +- .../src/CurrencyRateController.test.ts | 9 +-- .../src/CurrencyRateController.ts | 6 +- .../DeFiPositionsController.test.ts | 17 +++--- .../DeFiPositionsController.ts | 10 ++-- .../__fixtures__/mock-responses.ts | 2 +- .../__fixtures__/mock-result.ts | 2 +- .../calculate-defi-metrics.test.ts | 4 +- .../calculate-defi-metrics.ts | 2 +- .../fetch-positions.test.ts | 2 +- .../fetch-positions.ts | 2 +- .../group-defi-positions.test.ts | 6 +- .../group-defi-positions.ts | 2 +- ...ainAssetsController-method-action-types.ts | 2 +- .../MultichainAssetsController.test.ts | 7 ++- .../MultichainAssetsController.ts | 26 ++++----- .../src/MultichainAssetsController/index.ts | 6 +- .../src/MultichainAssetsController/utils.ts | 9 +-- ...setsRatesController-method-action-types.ts | 2 +- .../MultichainAssetsRatesController.test.ts | 7 ++- .../MultichainAssetsRatesController/index.ts | 8 +-- .../MultichainBalancesController.test.ts | 7 ++- .../src/MultichainBalancesController/index.ts | 4 +- .../src/NftController.test.ts | 33 +++++------ .../assets-controllers/src/NftController.ts | 55 +++++++++---------- .../src/NftDetectionController.test.ts | 19 ++++--- .../src/NftDetectionController.ts | 4 +- .../RatesController/RatesController.test.ts | 12 ++-- .../src/RatesController/index.ts | 4 +- .../src/Standards/ERC20Standard.test.ts | 3 +- .../src/Standards/ERC20Standard.ts | 2 +- .../ERC1155/ERC1155Standard.test.ts | 3 +- .../NftStandards/ERC1155/ERC1155Standard.ts | 5 +- .../ERC721/ERC721Standard.test.ts | 2 +- .../NftStandards/ERC721/ERC721Standard.ts | 2 +- ...nBalancesController-method-action-types.ts | 2 +- .../src/TokenBalancesController.test.ts | 23 ++++---- .../src/TokenBalancesController.ts | 26 ++++----- ...DetectionController-method-action-types.ts | 2 +- .../src/TokenDetectionController.test.ts | 29 +++++----- .../src/TokenDetectionController.ts | 18 +++--- .../src/TokenListController.test.ts | 15 ++--- .../src/TokenListController.ts | 6 +- .../src/TokenListService.test.ts | 9 +-- .../src/TokenListService.ts | 6 +- .../src/TokenRatesController.test.ts | 23 ++++---- .../src/TokenRatesController.ts | 19 ++++--- ...TokenSearchDiscoveryDataController.test.ts | 16 ++++-- .../index.ts | 4 +- .../types.ts | 4 +- .../TokensController-method-action-types.ts | 2 +- .../src/TokensController.test.ts | 27 +++++---- .../src/TokensController.ts | 31 ++++------- .../assets-controllers/src/assetsUtil.test.ts | 13 +++-- packages/assets-controllers/src/assetsUtil.ts | 2 +- .../assets-controllers/src/balances.test.ts | 6 +- .../crypto-compare.test.ts | 2 +- .../crypto-compare-service/crypto-compare.ts | 2 +- .../src/crypto-compare-service/index.ts | 2 +- .../api-balance-fetcher.test.ts | 13 +++-- .../api-balance-fetcher.ts | 10 ++-- .../src/multi-chain-accounts-service/index.ts | 4 +- .../mocks/mock-get-balances.test.ts | 2 +- .../mocks/mock-get-balances.ts | 2 +- .../mocks/mock-get-supported-networks.ts | 2 +- .../multi-chain-accounts.test.ts | 6 +- .../multi-chain-accounts.ts | 2 +- .../assets-controllers/src/multicall.test.ts | 5 +- packages/assets-controllers/src/multicall.ts | 4 +- .../rpc-service/rpc-balance-fetcher.test.ts | 9 +-- .../src/rpc-service/rpc-balance-fetcher.ts | 14 ++--- .../src/selectors/stringify-balance.test.ts | 2 +- .../src/selectors/token-selectors.test.ts | 24 ++++---- .../src/selectors/token-selectors.ts | 47 ++++++++++------ .../abstract-token-prices-service.ts | 2 +- .../token-prices-service/codefi-v2.test.ts | 5 +- .../src/token-prices-service/codefi-v2.ts | 16 ++++-- .../src/token-prices-service/index.test.ts | 2 +- .../src/token-prices-service/index.ts | 4 +- .../src/token-service.test.ts | 4 +- .../assets-controllers/src/token-service.ts | 2 +- .../src/utils/create-batch-handler.test.ts | 4 +- .../src/utils/create-batch-handler.ts | 4 +- .../src/utils/formatters.test.ts | 2 +- .../src/utils/timeout-with-retry.test.ts | 6 +- 93 files changed, 444 insertions(+), 406 deletions(-) diff --git a/packages/assets-controllers/package.json b/packages/assets-controllers/package.json index fe1a974f47f..a57b307adcb 100644 --- a/packages/assets-controllers/package.json +++ b/packages/assets-controllers/package.json @@ -89,7 +89,7 @@ "bitcoin-address-validation": "^2.2.3", "bn.js": "^5.2.1", "immer": "^9.0.6", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "multiformats": "^9.9.0", "reselect": "^5.1.1", "single-call-balance-checker-abi": "^1.0.0", diff --git a/packages/assets-controllers/src/AccountTrackerController-method-action-types.ts b/packages/assets-controllers/src/AccountTrackerController-method-action-types.ts index 38794c00d96..e9eab07a2eb 100644 --- a/packages/assets-controllers/src/AccountTrackerController-method-action-types.ts +++ b/packages/assets-controllers/src/AccountTrackerController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { AccountTrackerController } from './AccountTrackerController'; +import type { AccountTrackerController } from './AccountTrackerController.js'; /** * Refreshes the balances of the accounts depending on the multi-account setting. diff --git a/packages/assets-controllers/src/AccountTrackerController.test.ts b/packages/assets-controllers/src/AccountTrackerController.test.ts index 3e18da317dd..aa0e40ed076 100644 --- a/packages/assets-controllers/src/AccountTrackerController.test.ts +++ b/packages/assets-controllers/src/AccountTrackerController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { query, toChecksumHexAddress } from '@metamask/controller-utils'; import type { InternalAccount } from '@metamask/keyring-internal-api'; @@ -19,17 +20,17 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; import BN from 'bn.js'; -import { FakeProvider } from '../../../tests/fake-provider'; -import { jestAdvanceTime } from '../../../tests/helpers'; -import { createMockInternalAccount } from '../../accounts-controller/tests/mocks'; +import { FakeProvider } from '../../../tests/fake-provider.js'; +import { jestAdvanceTime } from '../../../tests/helpers.js'; +import { createMockInternalAccount } from '../../accounts-controller/tests/mocks.js'; import { buildCustomNetworkClientConfiguration, buildMockGetNetworkClientById, -} from '../../network-controller/tests/helpers'; -import type { AccountTrackerControllerMessenger } from './AccountTrackerController'; -import { AccountTrackerController } from './AccountTrackerController'; -import { AccountsApiBalanceFetcher } from './multi-chain-accounts-service/api-balance-fetcher'; -import { getTokenBalancesForMultipleAddresses } from './multicall'; +} from '../../network-controller/tests/helpers.js'; +import type { AccountTrackerControllerMessenger } from './AccountTrackerController.js'; +import { AccountTrackerController } from './AccountTrackerController.js'; +import { AccountsApiBalanceFetcher } from './multi-chain-accounts-service/api-balance-fetcher.js'; +import { getTokenBalancesForMultipleAddresses } from './multicall.js'; type AllAccountTrackerControllerActions = MessengerActions; diff --git a/packages/assets-controllers/src/AccountTrackerController.ts b/packages/assets-controllers/src/AccountTrackerController.ts index 264e40ba353..f319460af18 100644 --- a/packages/assets-controllers/src/AccountTrackerController.ts +++ b/packages/assets-controllers/src/AccountTrackerController.ts @@ -42,22 +42,22 @@ import type { import { assert, KnownCaipNamespace } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; import { Mutex } from 'async-mutex'; -import { cloneDeep, isEqual } from 'lodash'; +import { cloneDeep, isEqual } from 'lodash-es'; -import type { AccountTrackerControllerMethodActions } from './AccountTrackerController-method-action-types'; -import { STAKING_CONTRACT_ADDRESS_BY_CHAINID } from './AssetsContractController'; +import type { AccountTrackerControllerMethodActions } from './AccountTrackerController-method-action-types.js'; +import { STAKING_CONTRACT_ADDRESS_BY_CHAINID } from './AssetsContractController.js'; import type { AssetsContractController, StakedBalance, -} from './AssetsContractController'; -import { shouldIncludeNativeToken } from './constants'; -import { AccountsApiBalanceFetcher } from './multi-chain-accounts-service/api-balance-fetcher'; +} from './AssetsContractController.js'; +import { shouldIncludeNativeToken } from './constants.js'; +import { AccountsApiBalanceFetcher } from './multi-chain-accounts-service/api-balance-fetcher.js'; import type { BalanceFetcher, BalanceFetchResult, ProcessedBalance, -} from './multi-chain-accounts-service/api-balance-fetcher'; -import { RpcBalanceFetcher } from './rpc-service/rpc-balance-fetcher'; +} from './multi-chain-accounts-service/api-balance-fetcher.js'; +import { RpcBalanceFetcher } from './rpc-service/rpc-balance-fetcher.js'; /** * The name of the {@link AccountTrackerController}. @@ -506,11 +506,9 @@ export class AccountTrackerController extends StaticIntervalPollingController { newAddresses.forEach((address) => { - if (!accountsByChainId[chainId][address]) { - accountsByChainId[chainId][address] = { - balance: '0x0', - }; - } + accountsByChainId[chainId][address] ??= { + balance: '0x0', + }; }); }); diff --git a/packages/assets-controllers/src/AssetsContractController-method-action-types.ts b/packages/assets-controllers/src/AssetsContractController-method-action-types.ts index 73f709e8793..2801517c446 100644 --- a/packages/assets-controllers/src/AssetsContractController-method-action-types.ts +++ b/packages/assets-controllers/src/AssetsContractController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { AssetsContractController } from './AssetsContractController'; +import type { AssetsContractController } from './AssetsContractController.js'; /** * Get a ERC20Standard instance using the relevant provider instance. diff --git a/packages/assets-controllers/src/AssetsContractController.test.ts b/packages/assets-controllers/src/AssetsContractController.test.ts index a9c893b7139..e0a9e9f0613 100644 --- a/packages/assets-controllers/src/AssetsContractController.test.ts +++ b/packages/assets-controllers/src/AssetsContractController.test.ts @@ -1,4 +1,5 @@ import { BigNumber } from '@ethersproject/bignumber'; +import { jest } from '@jest/globals'; import { BUILT_IN_NETWORKS, ChainId, @@ -27,15 +28,15 @@ import type { PreferencesState } from '@metamask/preferences-controller'; import { getDefaultPreferencesState } from '@metamask/preferences-controller'; import assert from 'assert'; -import { SECONDS } from '../../../tests/constants'; -import { mockNetwork } from '../../../tests/mock-network'; -import { buildInfuraNetworkClientConfiguration } from '../../network-controller/tests/helpers'; -import type { AssetsContractControllerMessenger } from './AssetsContractController'; +import { SECONDS } from '../../../tests/constants.js'; +import { mockNetwork } from '../../../tests/mock-network.js'; +import { buildInfuraNetworkClientConfiguration } from '../../network-controller/tests/helpers.js'; +import type { AssetsContractControllerMessenger } from './AssetsContractController.js'; import { AssetsContractController, MISSING_PROVIDER_ERROR, -} from './AssetsContractController'; -import { SupportedTokenDetectionNetworks } from './assetsUtil'; +} from './AssetsContractController.js'; +import { SupportedTokenDetectionNetworks } from './assetsUtil.js'; type AllAssetsContractControllerActions = MessengerActions; diff --git a/packages/assets-controllers/src/AssetsContractController.ts b/packages/assets-controllers/src/AssetsContractController.ts index ff33a0a2cf0..c25c085a906 100644 --- a/packages/assets-controllers/src/AssetsContractController.ts +++ b/packages/assets-controllers/src/AssetsContractController.ts @@ -18,16 +18,16 @@ import type { Hex } from '@metamask/utils'; import type BN from 'bn.js'; import abiSingleCallBalancesContract from 'single-call-balance-checker-abi'; -import type { AssetsContractControllerMethodActions } from './AssetsContractController-method-action-types'; +import type { AssetsContractControllerMethodActions } from './AssetsContractController-method-action-types.js'; import { SupportedStakedBalanceNetworks, SupportedTokenDetectionNetworks, -} from './assetsUtil'; -import type { Call } from './multicall'; -import { multicallOrFallback } from './multicall'; -import { ERC20Standard } from './Standards/ERC20Standard'; -import { ERC721Standard } from './Standards/NftStandards/ERC721/ERC721Standard'; -import { ERC1155Standard } from './Standards/NftStandards/ERC1155/ERC1155Standard'; +} from './assetsUtil.js'; +import type { Call } from './multicall.js'; +import { multicallOrFallback } from './multicall.js'; +import { ERC20Standard } from './Standards/ERC20Standard.js'; +import { ERC721Standard } from './Standards/NftStandards/ERC721/ERC721Standard.js'; +import { ERC1155Standard } from './Standards/NftStandards/ERC1155/ERC1155Standard.js'; /** * Check if token detection is enabled for certain networks diff --git a/packages/assets-controllers/src/AssetsContractControllerWithNetworkClientId.test.ts b/packages/assets-controllers/src/AssetsContractControllerWithNetworkClientId.test.ts index cd5ffe1a18b..87428c42bd6 100644 --- a/packages/assets-controllers/src/AssetsContractControllerWithNetworkClientId.test.ts +++ b/packages/assets-controllers/src/AssetsContractControllerWithNetworkClientId.test.ts @@ -2,7 +2,7 @@ import { BigNumber } from '@ethersproject/bignumber'; import { BUILT_IN_NETWORKS } from '@metamask/controller-utils'; import { NetworkClientType } from '@metamask/network-controller'; -import { SECONDS } from '../../../tests/constants'; +import { SECONDS } from '../../../tests/constants.js'; import { setupAssetContractControllers, mockNetworkWithDefaultChainId, diff --git a/packages/assets-controllers/src/CurrencyRateController-method-action-types.ts b/packages/assets-controllers/src/CurrencyRateController-method-action-types.ts index d8a71ecc84e..673ce8964c5 100644 --- a/packages/assets-controllers/src/CurrencyRateController-method-action-types.ts +++ b/packages/assets-controllers/src/CurrencyRateController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { CurrencyRateController } from './CurrencyRateController'; +import type { CurrencyRateController } from './CurrencyRateController.js'; /** * Sets a currency to track. diff --git a/packages/assets-controllers/src/CurrencyRateController.test.ts b/packages/assets-controllers/src/CurrencyRateController.test.ts index 38c8a689a13..39f2ae6c6ae 100644 --- a/packages/assets-controllers/src/CurrencyRateController.test.ts +++ b/packages/assets-controllers/src/CurrencyRateController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { ChainId, @@ -13,10 +14,10 @@ import type { import type { NetworkConfiguration } from '@metamask/network-controller'; import type { Hex } from '@metamask/utils'; -import { jestAdvanceTime } from '../../../tests/helpers'; -import type { CurrencyRateMessenger } from './CurrencyRateController'; -import { CurrencyRateController } from './CurrencyRateController'; -import type { AbstractTokenPricesService } from './token-prices-service'; +import { jestAdvanceTime } from '../../../tests/helpers.js'; +import type { CurrencyRateMessenger } from './CurrencyRateController.js'; +import { CurrencyRateController } from './CurrencyRateController.js'; +import type { AbstractTokenPricesService } from './token-prices-service/index.js'; const namespace = 'CurrencyRateController'; diff --git a/packages/assets-controllers/src/CurrencyRateController.ts b/packages/assets-controllers/src/CurrencyRateController.ts index 52a35f2de77..5c4ac92587a 100644 --- a/packages/assets-controllers/src/CurrencyRateController.ts +++ b/packages/assets-controllers/src/CurrencyRateController.ts @@ -17,9 +17,9 @@ import { StaticIntervalPollingController } from '@metamask/polling-controller'; import type { Hex } from '@metamask/utils'; import { Mutex } from 'async-mutex'; -import type { CurrencyRateControllerMethodActions } from './CurrencyRateController-method-action-types'; -import type { AbstractTokenPricesService } from './token-prices-service/abstract-token-prices-service'; -import { getNativeTokenAddress } from './token-prices-service/codefi-v2'; +import type { CurrencyRateControllerMethodActions } from './CurrencyRateController-method-action-types.js'; +import type { AbstractTokenPricesService } from './token-prices-service/abstract-token-prices-service.js'; +import { getNativeTokenAddress } from './token-prices-service/codefi-v2.js'; /** * currencyRates - Object keyed by native currency diff --git a/packages/assets-controllers/src/DeFiPositionsController/DeFiPositionsController.test.ts b/packages/assets-controllers/src/DeFiPositionsController/DeFiPositionsController.test.ts index b045d1891b2..2a0ce52d38f 100644 --- a/packages/assets-controllers/src/DeFiPositionsController/DeFiPositionsController.test.ts +++ b/packages/assets-controllers/src/DeFiPositionsController/DeFiPositionsController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { BtcAccountType, EthAccountType } from '@metamask/keyring-api'; import { MOCK_ANY_NAMESPACE, Messenger } from '@metamask/messenger'; @@ -7,20 +8,20 @@ import type { MockAnyNamespace, } from '@metamask/messenger'; -import { flushPromises } from '../../../../tests/helpers'; -import { createMockInternalAccount } from '../../../accounts-controller/tests/mocks'; +import { flushPromises } from '../../../../tests/helpers.js'; +import { createMockInternalAccount } from '../../../accounts-controller/tests/mocks.js'; import type { InternalAccount, TransactionMeta, -} from '../../../transaction-controller/src/types'; -import * as calculateDefiMetrics from './calculate-defi-metrics'; -import type { DeFiPositionsControllerMessenger } from './DeFiPositionsController'; +} from '../../../transaction-controller/src/types.js'; +import * as calculateDefiMetrics from './calculate-defi-metrics.js'; +import type { DeFiPositionsControllerMessenger } from './DeFiPositionsController.js'; import { DeFiPositionsController, getDefaultDefiPositionsControllerState, -} from './DeFiPositionsController'; -import * as fetchPositions from './fetch-positions'; -import * as groupDeFiPositions from './group-defi-positions'; +} from './DeFiPositionsController.js'; +import * as fetchPositions from './fetch-positions.js'; +import * as groupDeFiPositions from './group-defi-positions.js'; const GROUP_ACCOUNTS = [ createMockInternalAccount({ diff --git a/packages/assets-controllers/src/DeFiPositionsController/DeFiPositionsController.ts b/packages/assets-controllers/src/DeFiPositionsController/DeFiPositionsController.ts index 33b33ecc7df..9642fd52a44 100644 --- a/packages/assets-controllers/src/DeFiPositionsController/DeFiPositionsController.ts +++ b/packages/assets-controllers/src/DeFiPositionsController/DeFiPositionsController.ts @@ -15,11 +15,11 @@ import { StaticIntervalPollingController } from '@metamask/polling-controller'; import type { TransactionControllerTransactionConfirmedEvent } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { calculateDeFiPositionMetrics } from './calculate-defi-metrics'; -import type { DefiPositionResponse } from './fetch-positions'; -import { buildPositionFetcher } from './fetch-positions'; -import { groupDeFiPositions } from './group-defi-positions'; -import type { GroupedDeFiPositions } from './group-defi-positions'; +import { calculateDeFiPositionMetrics } from './calculate-defi-metrics.js'; +import type { DefiPositionResponse } from './fetch-positions.js'; +import { buildPositionFetcher } from './fetch-positions.js'; +import { groupDeFiPositions } from './group-defi-positions.js'; +import type { GroupedDeFiPositions } from './group-defi-positions.js'; const TEN_MINUTES_IN_MS = 600_000; diff --git a/packages/assets-controllers/src/DeFiPositionsController/__fixtures__/mock-responses.ts b/packages/assets-controllers/src/DeFiPositionsController/__fixtures__/mock-responses.ts index 18b41466da5..94cfdbbeef5 100644 --- a/packages/assets-controllers/src/DeFiPositionsController/__fixtures__/mock-responses.ts +++ b/packages/assets-controllers/src/DeFiPositionsController/__fixtures__/mock-responses.ts @@ -1,4 +1,4 @@ -import type { DefiPositionResponse } from '../fetch-positions'; +import type { DefiPositionResponse } from '../fetch-positions.js'; /** * Entries are from different chains diff --git a/packages/assets-controllers/src/DeFiPositionsController/__fixtures__/mock-result.ts b/packages/assets-controllers/src/DeFiPositionsController/__fixtures__/mock-result.ts index 4daf1df0744..3be5588f6f8 100644 --- a/packages/assets-controllers/src/DeFiPositionsController/__fixtures__/mock-result.ts +++ b/packages/assets-controllers/src/DeFiPositionsController/__fixtures__/mock-result.ts @@ -1,6 +1,6 @@ import type { Hex } from '@metamask/utils'; -import type { GroupedDeFiPositions } from '../group-defi-positions'; +import type { GroupedDeFiPositions } from '../group-defi-positions.js'; export const MOCK_EXPECTED_RESULT: { [key: Hex]: GroupedDeFiPositions } = { '0x1': { diff --git a/packages/assets-controllers/src/DeFiPositionsController/calculate-defi-metrics.test.ts b/packages/assets-controllers/src/DeFiPositionsController/calculate-defi-metrics.test.ts index 807ca125a0a..cb83e91b9c4 100644 --- a/packages/assets-controllers/src/DeFiPositionsController/calculate-defi-metrics.test.ts +++ b/packages/assets-controllers/src/DeFiPositionsController/calculate-defi-metrics.test.ts @@ -1,5 +1,5 @@ -import { MOCK_EXPECTED_RESULT } from './__fixtures__/mock-result'; -import { calculateDeFiPositionMetrics } from './calculate-defi-metrics'; +import { MOCK_EXPECTED_RESULT } from './__fixtures__/mock-result.js'; +import { calculateDeFiPositionMetrics } from './calculate-defi-metrics.js'; describe('groupDeFiPositions', () => { it('verifies that the resulting object is valid', () => { diff --git a/packages/assets-controllers/src/DeFiPositionsController/calculate-defi-metrics.ts b/packages/assets-controllers/src/DeFiPositionsController/calculate-defi-metrics.ts index e01d854db99..82b81752b76 100644 --- a/packages/assets-controllers/src/DeFiPositionsController/calculate-defi-metrics.ts +++ b/packages/assets-controllers/src/DeFiPositionsController/calculate-defi-metrics.ts @@ -3,7 +3,7 @@ import type { Hex } from '@metamask/utils'; import type { GroupedDeFiPositionsPerChain, TrackingEventPayload, -} from './DeFiPositionsController'; +} from './DeFiPositionsController.js'; /** * Calculates the total market value and total positions for a given account diff --git a/packages/assets-controllers/src/DeFiPositionsController/fetch-positions.test.ts b/packages/assets-controllers/src/DeFiPositionsController/fetch-positions.test.ts index e9228a070a8..c5ace0d5412 100644 --- a/packages/assets-controllers/src/DeFiPositionsController/fetch-positions.test.ts +++ b/packages/assets-controllers/src/DeFiPositionsController/fetch-positions.test.ts @@ -3,7 +3,7 @@ import nock from 'nock'; import { DEFI_POSITIONS_API_URL, buildPositionFetcher, -} from './fetch-positions'; +} from './fetch-positions.js'; describe('fetchPositions', () => { const mockAccountAddress = '0x1234567890123456789012345678901234567890'; diff --git a/packages/assets-controllers/src/DeFiPositionsController/fetch-positions.ts b/packages/assets-controllers/src/DeFiPositionsController/fetch-positions.ts index 427ca587081..a6a47b622fc 100644 --- a/packages/assets-controllers/src/DeFiPositionsController/fetch-positions.ts +++ b/packages/assets-controllers/src/DeFiPositionsController/fetch-positions.ts @@ -1,4 +1,4 @@ -import { timeoutWithRetry } from '../utils/timeout-with-retry'; +import { timeoutWithRetry } from '../utils/timeout-with-retry.js'; export type DefiPositionResponse = AdapterResponse<{ tokens: ProtocolToken[]; diff --git a/packages/assets-controllers/src/DeFiPositionsController/group-defi-positions.test.ts b/packages/assets-controllers/src/DeFiPositionsController/group-defi-positions.test.ts index ab3ade89e54..213e705eba5 100644 --- a/packages/assets-controllers/src/DeFiPositionsController/group-defi-positions.test.ts +++ b/packages/assets-controllers/src/DeFiPositionsController/group-defi-positions.test.ts @@ -6,9 +6,9 @@ import { MOCK_DEFI_RESPONSE_FAILED_ENTRY, MOCK_DEFI_RESPONSE_MULTI_CHAIN, MOCK_DEFI_RESPONSE_NO_PRICES, -} from './__fixtures__/mock-responses'; -import { MOCK_EXPECTED_RESULT } from './__fixtures__/mock-result'; -import { groupDeFiPositions } from './group-defi-positions'; +} from './__fixtures__/mock-responses.js'; +import { MOCK_EXPECTED_RESULT } from './__fixtures__/mock-result.js'; +import { groupDeFiPositions } from './group-defi-positions.js'; describe('groupDeFiPositions', () => { it('groups multiple chains', () => { diff --git a/packages/assets-controllers/src/DeFiPositionsController/group-defi-positions.ts b/packages/assets-controllers/src/DeFiPositionsController/group-defi-positions.ts index 16b13b45396..dfef9acc50c 100644 --- a/packages/assets-controllers/src/DeFiPositionsController/group-defi-positions.ts +++ b/packages/assets-controllers/src/DeFiPositionsController/group-defi-positions.ts @@ -7,7 +7,7 @@ import type { ProtocolToken, Underlying, Balance, -} from './fetch-positions'; +} from './fetch-positions.js'; export type GroupedDeFiPositions = { aggregatedMarketValue: number; diff --git a/packages/assets-controllers/src/MultichainAssetsController/MultichainAssetsController-method-action-types.ts b/packages/assets-controllers/src/MultichainAssetsController/MultichainAssetsController-method-action-types.ts index b7c48e83db8..a61cfdcd3e0 100644 --- a/packages/assets-controllers/src/MultichainAssetsController/MultichainAssetsController-method-action-types.ts +++ b/packages/assets-controllers/src/MultichainAssetsController/MultichainAssetsController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { MultichainAssetsController } from './MultichainAssetsController'; +import type { MultichainAssetsController } from './MultichainAssetsController.js'; /** * Returns the metadata for the given asset diff --git a/packages/assets-controllers/src/MultichainAssetsController/MultichainAssetsController.test.ts b/packages/assets-controllers/src/MultichainAssetsController/MultichainAssetsController.test.ts index f1bcd86cece..287f88ae161 100644 --- a/packages/assets-controllers/src/MultichainAssetsController/MultichainAssetsController.test.ts +++ b/packages/assets-controllers/src/MultichainAssetsController/MultichainAssetsController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import type { AccountAssetListUpdatedEventPayload, @@ -25,16 +26,16 @@ import { TokenScanResultType } from '@metamask/phishing-controller'; import type { Snap } from '@metamask/snaps-utils'; import { v4 as uuidv4 } from 'uuid'; +import { jestAdvanceTime } from '../../../../tests/helpers.js'; import { getDefaultMultichainAssetsControllerState, MultichainAssetsController, -} from '.'; -import { jestAdvanceTime } from '../../../../tests/helpers'; +} from './index.js'; import type { AssetMetadataResponse, MultichainAssetsControllerMessenger, MultichainAssetsControllerState, -} from './MultichainAssetsController'; +} from './MultichainAssetsController.js'; const mockSolanaAccount: InternalAccount = { type: 'solana:data-account', diff --git a/packages/assets-controllers/src/MultichainAssetsController/MultichainAssetsController.ts b/packages/assets-controllers/src/MultichainAssetsController/MultichainAssetsController.ts index 3bd5ee7e12f..df803ad83f1 100644 --- a/packages/assets-controllers/src/MultichainAssetsController/MultichainAssetsController.ts +++ b/packages/assets-controllers/src/MultichainAssetsController/MultichainAssetsController.ts @@ -41,8 +41,8 @@ import type { Json, JsonRpcRequest } from '@metamask/utils'; import type { MutexInterface } from 'async-mutex'; import { Mutex } from 'async-mutex'; -import type { MultichainAssetsControllerMethodActions } from './MultichainAssetsController-method-action-types'; -import { getChainIdsCaveat } from './utils'; +import type { MultichainAssetsControllerMethodActions } from './MultichainAssetsController-method-action-types.js'; +import { getChainIdsCaveat } from './utils.js'; const controllerName = 'MultichainAssetsController'; @@ -241,17 +241,17 @@ export class MultichainAssetsController extends StaticIntervalPollingController< this.messenger.subscribe( 'AccountsController:accountAdded', - // eslint-disable-next-line @typescript-eslint/no-misused-promises + async (account) => await this.#handleOnAccountAddedEvent(account), ); this.messenger.subscribe( 'AccountsController:accountRemoved', - // eslint-disable-next-line @typescript-eslint/no-misused-promises + async (account) => await this.#handleOnAccountRemovedEvent(account), ); this.messenger.subscribe( 'AccountsController:accountAssetListUpdated', - // eslint-disable-next-line @typescript-eslint/no-misused-promises + async (event) => await this.#handleAccountAssetListUpdatedEvent(event), ); @@ -341,9 +341,7 @@ export class MultichainAssetsController extends StaticIntervalPollingController< ].filter((asset) => !assetsToIgnore.includes(asset)); } - if (!state.allIgnoredAssets[accountId]) { - state.allIgnoredAssets[accountId] = []; - } + state.allIgnoredAssets[accountId] ??= []; const newIgnoredAssets = assetsToIgnore.filter( (asset) => !state.allIgnoredAssets[accountId].includes(asset), @@ -366,7 +364,7 @@ export class MultichainAssetsController extends StaticIntervalPollingController< accountId: string, ): Promise { if (assetIds.length === 0) { - return this.state.accountsAssets[accountId] || []; + return this.state.accountsAssets[accountId] ?? []; } // Validate that all assets are from the same chain @@ -387,9 +385,7 @@ export class MultichainAssetsController extends StaticIntervalPollingController< this.update((state) => { // Initialize account assets if it doesn't exist - if (!state.accountsAssets[accountId]) { - state.accountsAssets[accountId] = []; - } + state.accountsAssets[accountId] ??= []; // Add assets if they don't already exist for (const assetId of assetIds) { @@ -424,7 +420,7 @@ export class MultichainAssetsController extends StaticIntervalPollingController< }); } - return this.state.accountsAssets[accountId] || []; + return this.state.accountsAssets[accountId] ?? []; }); } @@ -457,7 +453,7 @@ export class MultichainAssetsController extends StaticIntervalPollingController< event.assets, )) { if (added.length > 0 || removed.length > 0) { - const existing = this.state.accountsAssets[accountId] || []; + const existing = this.state.accountsAssets[accountId] ?? []; // In case accountsAndAssetsToUpdate event is fired with "added" assets that already exist, we don't want to add them again // Also filter out ignored assets @@ -504,7 +500,7 @@ export class MultichainAssetsController extends StaticIntervalPollingController< accountsAndAssetsToUpdate, )) { const assets = new Set([ - ...(state.accountsAssets[accountId] || []), + ...(state.accountsAssets[accountId] ?? []), ...added, ]); for (const asset of removed) { diff --git a/packages/assets-controllers/src/MultichainAssetsController/index.ts b/packages/assets-controllers/src/MultichainAssetsController/index.ts index 2ad53646897..ed9c95ea52b 100644 --- a/packages/assets-controllers/src/MultichainAssetsController/index.ts +++ b/packages/assets-controllers/src/MultichainAssetsController/index.ts @@ -1,7 +1,7 @@ export { MultichainAssetsController, getDefaultMultichainAssetsControllerState, -} from './MultichainAssetsController'; +} from './MultichainAssetsController.js'; export type { MultichainAssetsControllerState, @@ -11,9 +11,9 @@ export type { MultichainAssetsControllerMessenger, MultichainAssetsControllerAccountAssetListUpdatedEvent, MultichainAssetsControllerEvents, -} from './MultichainAssetsController'; +} from './MultichainAssetsController.js'; export type { MultichainAssetsControllerGetAssetMetadataAction, MultichainAssetsControllerIgnoreAssetsAction, MultichainAssetsControllerAddAssetsAction, -} from './MultichainAssetsController-method-action-types'; +} from './MultichainAssetsController-method-action-types.js'; diff --git a/packages/assets-controllers/src/MultichainAssetsController/utils.ts b/packages/assets-controllers/src/MultichainAssetsController/utils.ts index 1b7e2323341..a680238462d 100644 --- a/packages/assets-controllers/src/MultichainAssetsController/utils.ts +++ b/packages/assets-controllers/src/MultichainAssetsController/utils.ts @@ -1,7 +1,4 @@ -import type { - Caveat, - PermissionConstraint, -} from '@metamask/permission-controller'; +import type { PermissionConstraint } from '@metamask/permission-controller'; import { SnapCaveatType } from '@metamask/snaps-utils'; // TODO: this is a duplicate of https://github.com/MetaMask/snaps/blob/362208e725db18baed550ade99087d44e7b537ed/packages/snaps-rpc-methods/src/endowments/name-lookup.ts#L151 @@ -26,7 +23,7 @@ export function getChainIdsCaveat( const caveat = permission.caveats.find( (permCaveat) => permCaveat.type === SnapCaveatType.ChainIds, - ) as Caveat | undefined; + ); - return caveat ? caveat.value : null; + return caveat ? (caveat.value as string[]) : null; } diff --git a/packages/assets-controllers/src/MultichainAssetsRatesController/MultichainAssetsRatesController-method-action-types.ts b/packages/assets-controllers/src/MultichainAssetsRatesController/MultichainAssetsRatesController-method-action-types.ts index 2d79438d0d2..1da91b94023 100644 --- a/packages/assets-controllers/src/MultichainAssetsRatesController/MultichainAssetsRatesController-method-action-types.ts +++ b/packages/assets-controllers/src/MultichainAssetsRatesController/MultichainAssetsRatesController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { MultichainAssetsRatesController } from './MultichainAssetsRatesController'; +import type { MultichainAssetsRatesController } from './MultichainAssetsRatesController.js'; /** * Updates token conversion rates for each non-EVM account. diff --git a/packages/assets-controllers/src/MultichainAssetsRatesController/MultichainAssetsRatesController.test.ts b/packages/assets-controllers/src/MultichainAssetsRatesController/MultichainAssetsRatesController.test.ts index e95dab33774..ea66519083a 100644 --- a/packages/assets-controllers/src/MultichainAssetsRatesController/MultichainAssetsRatesController.test.ts +++ b/packages/assets-controllers/src/MultichainAssetsRatesController/MultichainAssetsRatesController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import type { CaipAssetType } from '@metamask/keyring-api'; import { SolScope } from '@metamask/keyring-api'; @@ -15,9 +16,9 @@ import type { import type { OnAssetHistoricalPriceResponse } from '@metamask/snaps-sdk'; import { v4 as uuidv4 } from 'uuid'; -import { MultichainAssetsRatesController } from '.'; -import { jestAdvanceTime } from '../../../../tests/helpers'; -import type { MultichainAssetsRatesControllerMessenger } from './MultichainAssetsRatesController'; +import { jestAdvanceTime } from '../../../../tests/helpers.js'; +import { MultichainAssetsRatesController } from './index.js'; +import type { MultichainAssetsRatesControllerMessenger } from './MultichainAssetsRatesController.js'; type AllMultichainAssetsRateControllerActions = MessengerActions; diff --git a/packages/assets-controllers/src/MultichainAssetsRatesController/index.ts b/packages/assets-controllers/src/MultichainAssetsRatesController/index.ts index c285191f15f..ea14145b845 100644 --- a/packages/assets-controllers/src/MultichainAssetsRatesController/index.ts +++ b/packages/assets-controllers/src/MultichainAssetsRatesController/index.ts @@ -5,14 +5,14 @@ export type { MultichainAssetsRatesControllerGetStateAction, MultichainAssetsRatesControllerStateChange, MultichainAssetsRatesControllerMessenger, -} from './MultichainAssetsRatesController'; +} from './MultichainAssetsRatesController.js'; export type { MultichainAssetsRatesControllerUpdateAssetsRatesAction, MultichainAssetsRatesControllerFetchHistoricalPricesForAssetAction, -} from './MultichainAssetsRatesController-method-action-types'; +} from './MultichainAssetsRatesController-method-action-types.js'; export { MultichainAssetsRatesController, getDefaultMultichainAssetsRatesControllerState, -} from './MultichainAssetsRatesController'; -export { MAP_CAIP_CURRENCIES } from './constant'; +} from './MultichainAssetsRatesController.js'; +export { MAP_CAIP_CURRENCIES } from './constant.js'; diff --git a/packages/assets-controllers/src/MultichainBalancesController/MultichainBalancesController.test.ts b/packages/assets-controllers/src/MultichainBalancesController/MultichainBalancesController.test.ts index d49b10494ec..7666f552e3b 100644 --- a/packages/assets-controllers/src/MultichainBalancesController/MultichainBalancesController.test.ts +++ b/packages/assets-controllers/src/MultichainBalancesController/MultichainBalancesController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import type { Balance, CaipAssetType } from '@metamask/keyring-api'; import { @@ -21,12 +22,12 @@ import type { } from '@metamask/messenger'; import { v4 as uuidv4 } from 'uuid'; -import { MultichainBalancesController } from '.'; +import { MultichainBalancesController } from './index.js'; import type { MultichainBalancesControllerMessenger, MultichainBalancesControllerState, -} from '.'; -import { getDefaultMultichainBalancesControllerState } from './MultichainBalancesController'; +} from './index.js'; +import { getDefaultMultichainBalancesControllerState } from './MultichainBalancesController.js'; const mockBtcAccount = { address: 'bc1qssdcp5kvwh6nghzg9tuk99xsflwkdv4hgvq58q', diff --git a/packages/assets-controllers/src/MultichainBalancesController/index.ts b/packages/assets-controllers/src/MultichainBalancesController/index.ts index 7e7b30a0950..174fb14bc87 100644 --- a/packages/assets-controllers/src/MultichainBalancesController/index.ts +++ b/packages/assets-controllers/src/MultichainBalancesController/index.ts @@ -1,4 +1,4 @@ -export { MultichainBalancesController } from './MultichainBalancesController'; +export { MultichainBalancesController } from './MultichainBalancesController.js'; export type { MultichainBalancesControllerState, MultichainBalancesControllerGetStateAction, @@ -6,4 +6,4 @@ export type { MultichainBalancesControllerActions, MultichainBalancesControllerEvents, MultichainBalancesControllerMessenger, -} from './MultichainBalancesController'; +} from './MultichainBalancesController.js'; diff --git a/packages/assets-controllers/src/NftController.test.ts b/packages/assets-controllers/src/NftController.test.ts index 633d2faa894..8718f7ed308 100644 --- a/packages/assets-controllers/src/NftController.test.ts +++ b/packages/assets-controllers/src/NftController.test.ts @@ -1,4 +1,5 @@ import type { Network } from '@ethersproject/providers'; +import { jest } from '@jest/globals'; import type { AccountsControllerGetAccountAction, AccountsControllerGetSelectedAccountAction, @@ -40,31 +41,31 @@ import type { Hex } from '@metamask/utils'; import nock from 'nock'; import { v4 } from 'uuid'; -import { createMockInternalAccount } from '../../accounts-controller/tests/mocks'; +import { createMockInternalAccount } from '../../accounts-controller/tests/mocks.js'; import { buildCustomNetworkClientConfiguration, buildMockFindNetworkClientIdByChainId, buildMockGetNetworkClientById, -} from '../../network-controller/tests/helpers'; +} from '../../network-controller/tests/helpers.js'; import type { AssetsContractControllerGetERC1155TokenURIAction, AssetsContractControllerGetERC721AssetNameAction, AssetsContractControllerGetERC721AssetSymbolAction, AssetsContractControllerGetERC721TokenURIAction, -} from './AssetsContractController'; -import { getFormattedIpfsUrl } from './assetsUtil'; -import { Source } from './constants'; -import type { NftOwnershipResult } from './multicall'; -import { getNftOwnershipForMultipleNfts } from './multicall'; +} from './AssetsContractController.js'; +import { getFormattedIpfsUrl } from './assetsUtil.js'; +import { Source } from './constants.js'; +import type { NftOwnershipResult } from './multicall.js'; +import { getNftOwnershipForMultipleNfts } from './multicall.js'; import type { Nft, NftControllerState, NftControllerMessenger, NFTStandardType, NftMetadata, -} from './NftController'; -import { NftController } from './NftController'; -import type { Collection } from './NftDetectionController'; +} from './NftController.js'; +import { NftController } from './NftController.js'; +import type { Collection } from './NftDetectionController.js'; type AllActions = | MessengerActions @@ -1183,8 +1184,8 @@ describe('NftController', () => { }); // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/no-floating-promises - nftController.watchNft( + + void nftController.watchNft( ERC721_NFT, ERC721, 'https://etherscan.io', @@ -1198,7 +1199,7 @@ describe('NftController', () => { // now accept the request // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/no-floating-promises + approvalController.acceptRequest(requestId); await acceptedRequest; @@ -1289,8 +1290,8 @@ describe('NftController', () => { }); // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/no-floating-promises - nftController.watchNft( + + void nftController.watchNft( ERC721_NFT, ERC721, 'https://etherscan.io', @@ -1310,7 +1311,7 @@ describe('NftController', () => { }); // now accept the request // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/no-floating-promises + approvalController.acceptRequest(requestId); await acceptedRequest; diff --git a/packages/assets-controllers/src/NftController.ts b/packages/assets-controllers/src/NftController.ts index 5c4e9649b75..76523cd8bad 100644 --- a/packages/assets-controllers/src/NftController.ts +++ b/packages/assets-controllers/src/NftController.ts @@ -49,16 +49,16 @@ import type { AssetsContractControllerGetERC721AssetNameAction, AssetsContractControllerGetERC721AssetSymbolAction, AssetsContractControllerGetERC721TokenURIAction, -} from './AssetsContractController-method-action-types'; +} from './AssetsContractController-method-action-types.js'; import { compareNftMetadata, getFormattedIpfsUrl, hasNewCollectionFields, reduceInBatchesSerially, -} from './assetsUtil'; -import { Source } from './constants'; -import { getNftOwnershipForMultipleNfts } from './multicall'; -import type { NftOwnershipResult } from './multicall'; +} from './assetsUtil.js'; +import { Source } from './constants.js'; +import { getNftOwnershipForMultipleNfts } from './multicall.js'; +import type { NftOwnershipResult } from './multicall.js'; import type { ApiNftContract, ReservoirResponse, @@ -66,7 +66,7 @@ import type { Attributes, LastSale, TopBid, -} from './NftDetectionController'; +} from './NftDetectionController.js'; export type NFTStandardType = 'ERC721' | 'ERC1155'; @@ -458,7 +458,7 @@ export class NftController extends BaseController< ); this.#selectedAccountId = selectedAccount.id; - const newDisplayNftMedia = Boolean(displayNftMedia || openSeaEnabled); + const newDisplayNftMedia = Boolean(displayNftMedia ?? openSeaEnabled); // Get current state values if ( @@ -529,7 +529,7 @@ export class NftController extends BaseController< this.update((state) => { const oldState = state[baseStateKey]; - const addressState = oldState[userAddress] || {}; + const addressState = oldState[userAddress] ?? {}; const newAddressState = { ...addressState, [chainId]: newCollection, @@ -603,9 +603,9 @@ export class NftController extends BaseController< /* istanbul ignore next */ const nftMetadata: NftMetadata = Object.assign( {}, - { name: name || null }, - { description: description || null }, - { image: image || null }, + { name: name ?? null }, + { description: description ?? null }, + { image: image ?? null }, collection?.creator && { creator: collection.creator }, imageOriginal && { imageOriginal }, imageSmall && { imageThumbnail: imageSmall }, @@ -886,7 +886,7 @@ export class NftController extends BaseController< const releaseLock = await this.#mutex.acquire(); try { const { allNfts } = this.state; - const allNftsForUser = allNfts[userAddress] || {}; + const allNftsForUser = allNfts[userAddress] ?? {}; const allNftsForUserPerChain: { [chainId: `0x${string}`]: Nft[]; } = {}; @@ -1015,7 +1015,7 @@ export class NftController extends BaseController< const releaseLock = await this.#mutex.acquire(); try { const { allNftContracts } = this.state; - const allNftContractsForUser = allNftContracts[userAddress] || {}; + const allNftContractsForUser = allNftContracts[userAddress] ?? {}; const nftContractsForUserPerChain: { [chainId: `0x${string}`]: NftContract[]; } = {}; @@ -1149,7 +1149,7 @@ export class NftController extends BaseController< const checksumHexAddress = toChecksumHexAddress(address); const { allNfts, ignoredNfts } = this.state; const newIgnoredNfts = [...ignoredNfts]; - const nfts = allNfts[userAddress]?.[chainId] || []; + const nfts = allNfts[userAddress]?.[chainId] ?? []; const newNfts = nfts.filter((nft) => { if ( nft.address.toLowerCase() === checksumHexAddress.toLowerCase() && @@ -1190,7 +1190,7 @@ export class NftController extends BaseController< ): void { const checksumHexAddress = toChecksumHexAddress(address); const { allNfts } = this.state; - const nfts = allNfts[userAddress]?.[chainId] || []; + const nfts = allNfts[userAddress]?.[chainId] ?? []; const newNfts = nfts.filter( (nft) => !( @@ -1219,7 +1219,7 @@ export class NftController extends BaseController< ): NftContract[] { const checksumHexAddress = toChecksumHexAddress(address); const { allNftContracts } = this.state; - const nftContracts = allNftContracts[userAddress]?.[chainId] || []; + const nftContracts = allNftContracts[userAddress]?.[chainId] ?? []; const newNftContracts = nftContracts.filter( (nftContract) => @@ -1250,7 +1250,6 @@ export class NftController extends BaseController< if (type !== ERC721 && type !== ERC1155) { throw rpcErrors.invalidParams( - // eslint-disable-next-line @typescript-eslint/restrict-template-expressions `Non NFT asset type ${type} not supported by watchNft`, ); } @@ -1526,9 +1525,7 @@ export class NftController extends BaseController< // This is the case when the NFT is added manually and not detected automatically // TODO: An improvement would be to make the chainId a required field and return it when getting the NFT information - if (!nftMetadata.chainId) { - nftMetadata.chainId = convertHexToDecimal(chainId); - } + nftMetadata.chainId ??= convertHexToDecimal(chainId); if (nftContract) { await this.#addMultipleNfts(addressToSearch, [ @@ -1796,7 +1793,7 @@ export class NftController extends BaseController< userAddress: addressToSearch, }); const { allNfts } = this.state; - const nfts = allNfts[addressToSearch]?.[chainId] || []; + const nfts = allNfts[addressToSearch]?.[chainId] ?? []; const remainingNft = nfts.find( (nft) => nft.address.toLowerCase() === checksumHexAddress.toLowerCase(), ); @@ -1837,7 +1834,7 @@ export class NftController extends BaseController< userAddress: addressToSearch, }); const { allNfts } = this.state; - const nfts = allNfts[addressToSearch]?.[chainId] || []; + const nfts = allNfts[addressToSearch]?.[chainId] ?? []; const remainingNft = nfts.find( (nft) => nft.address.toLowerCase() === checksumHexAddress.toLowerCase(), ); @@ -1944,7 +1941,7 @@ export class NftController extends BaseController< ); const { chainId } = client.configuration; const { allNfts } = this.state; - const nfts = allNfts[addressToSearch]?.[chainId] || []; + const nfts = allNfts[addressToSearch]?.[chainId] ?? []; if (nfts.length === 0) { return; @@ -2008,7 +2005,7 @@ export class NftController extends BaseController< networkClientId, ); const { allNfts } = this.state; - const nfts = [...(allNfts[addressToSearch]?.[chainId] || [])]; + const nfts = [...(allNfts[addressToSearch]?.[chainId] ?? [])]; const index: number = nfts.findIndex( (nft) => nft.address === address && nft.tokenId === tokenId, ); @@ -2047,7 +2044,7 @@ export class NftController extends BaseController< chainId: Hex, ): { nft: Nft; index: number } | null { const { allNfts } = this.state; - const nfts = allNfts[selectedAddress]?.[chainId] || []; + const nfts = allNfts[selectedAddress]?.[chainId] ?? []; const index: number = nfts.findIndex( (nft) => nft.address.toLowerCase() === address.toLowerCase() && @@ -2076,7 +2073,7 @@ export class NftController extends BaseController< chainId: Hex, ): void { const { allNfts } = this.state; - const nfts = allNfts[selectedAddress]?.[chainId] || []; + const nfts = allNfts[selectedAddress]?.[chainId] ?? []; const nftInfo = this.findNftByAddressAndTokenId( nft.address, nft.tokenId, @@ -2118,7 +2115,7 @@ export class NftController extends BaseController< chainId: Hex, ): boolean { const { allNfts } = this.state; - const nfts = allNfts[selectedAddress]?.[chainId] || []; + const nfts = allNfts[selectedAddress]?.[chainId] ?? []; const index: number = nfts.findIndex( (nft) => nft.transactionId === transactionId, ); @@ -2179,7 +2176,7 @@ export class NftController extends BaseController< 'AccountsController:getAccount', this.#selectedAccountId, ); - return selectedAccount?.address || ''; + return selectedAccount?.address ?? ''; } /** @@ -2191,7 +2188,7 @@ export class NftController extends BaseController< async #updateNftUpdateForAccount(account: InternalAccount): Promise { // get all nfts for the account for all chains const nfts: Nft[] = Object.values( - this.state.allNfts[account.address] || {}, + this.state.allNfts[account.address] ?? {}, ).flat(); // Filter only nfts diff --git a/packages/assets-controllers/src/NftDetectionController.test.ts b/packages/assets-controllers/src/NftDetectionController.test.ts index d5320438001..905c2bd49c9 100644 --- a/packages/assets-controllers/src/NftDetectionController.test.ts +++ b/packages/assets-controllers/src/NftDetectionController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { AccountsController } from '@metamask/accounts-controller'; import { NFT_API_BASE_URL, @@ -25,21 +26,21 @@ import { getDefaultPreferencesState } from '@metamask/preferences-controller'; import type { PreferencesState } from '@metamask/preferences-controller'; import nock from 'nock'; -import { FakeBlockTracker } from '../../../tests/fake-block-tracker'; -import { FakeProvider } from '../../../tests/fake-provider'; -import { jestAdvanceTime } from '../../../tests/helpers'; -import { createMockInternalAccount } from '../../accounts-controller/tests/mocks'; +import { FakeBlockTracker } from '../../../tests/fake-block-tracker.js'; +import { FakeProvider } from '../../../tests/fake-provider.js'; +import { jestAdvanceTime } from '../../../tests/helpers.js'; +import { createMockInternalAccount } from '../../accounts-controller/tests/mocks.js'; import { buildMockFindNetworkClientIdByChainId, buildMockGetNetworkClientById, -} from '../../network-controller/tests/helpers'; -import { Source } from './constants'; -import { getDefaultNftControllerState } from './NftController'; +} from '../../network-controller/tests/helpers.js'; +import { Source } from './constants.js'; +import { getDefaultNftControllerState } from './NftController.js'; import { NftDetectionController, BlockaidResultType, -} from './NftDetectionController'; -import type { NftDetectionControllerMessenger } from './NftDetectionController'; +} from './NftDetectionController.js'; +import type { NftDetectionControllerMessenger } from './NftDetectionController.js'; type AllActions = MessengerActions; diff --git a/packages/assets-controllers/src/NftDetectionController.ts b/packages/assets-controllers/src/NftDetectionController.ts index bb67ab5d562..a2c508d221a 100644 --- a/packages/assets-controllers/src/NftDetectionController.ts +++ b/packages/assets-controllers/src/NftDetectionController.ts @@ -29,12 +29,12 @@ import type { import { createDeferredPromise } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { Source } from './constants'; +import { Source } from './constants.js'; import type { NftController, NftControllerState, NftMetadata, -} from './NftController'; +} from './NftController.js'; const controllerName = 'NftDetectionController'; diff --git a/packages/assets-controllers/src/RatesController/RatesController.test.ts b/packages/assets-controllers/src/RatesController/RatesController.test.ts index e7d4d007058..bc674ebb4b0 100644 --- a/packages/assets-controllers/src/RatesController/RatesController.test.ts +++ b/packages/assets-controllers/src/RatesController/RatesController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { MOCK_ANY_NAMESPACE, Messenger } from '@metamask/messenger'; import type { @@ -6,14 +7,17 @@ import type { MockAnyNamespace, } from '@metamask/messenger'; -import { jestAdvanceTime } from '../../../../tests/helpers'; -import type { fetchMultiExchangeRate as defaultFetchExchangeRate } from '../crypto-compare-service'; +import { jestAdvanceTime } from '../../../../tests/helpers.js'; +import type { fetchMultiExchangeRate as defaultFetchExchangeRate } from '../crypto-compare-service/index.js'; import { Cryptocurrency, RatesController, name as ratesControllerName, -} from './RatesController'; -import type { RatesControllerMessenger, RatesControllerState } from './types'; +} from './RatesController.js'; +import type { + RatesControllerMessenger, + RatesControllerState, +} from './types.js'; type AllActions = MessengerActions; diff --git a/packages/assets-controllers/src/RatesController/index.ts b/packages/assets-controllers/src/RatesController/index.ts index bf1a078eb2e..2b4e42f5636 100644 --- a/packages/assets-controllers/src/RatesController/index.ts +++ b/packages/assets-controllers/src/RatesController/index.ts @@ -1,4 +1,4 @@ -export { RatesController, Cryptocurrency } from './RatesController'; +export { RatesController, Cryptocurrency } from './RatesController.js'; export type { RatesControllerState, RatesControllerEvents, @@ -8,4 +8,4 @@ export type { RatesControllerStateChangeEvent, RatesControllerPollingStartedEvent, RatesControllerPollingStoppedEvent, -} from './types'; +} from './types.js'; diff --git a/packages/assets-controllers/src/Standards/ERC20Standard.test.ts b/packages/assets-controllers/src/Standards/ERC20Standard.test.ts index db16b75fba0..76fa6a2e941 100644 --- a/packages/assets-controllers/src/Standards/ERC20Standard.test.ts +++ b/packages/assets-controllers/src/Standards/ERC20Standard.test.ts @@ -1,9 +1,10 @@ import { Web3Provider } from '@ethersproject/providers'; +import { jest } from '@jest/globals'; import HttpProvider from '@metamask/ethjs-provider-http'; import BN from 'bn.js'; import nock from 'nock'; -import { ERC20Standard } from './ERC20Standard'; +import { ERC20Standard } from './ERC20Standard.js'; const MAINNET_PROVIDER_HTTP = new HttpProvider( 'https://mainnet.infura.io/v3/341eacb578dd44a1a049cbc5f6fd4035', diff --git a/packages/assets-controllers/src/Standards/ERC20Standard.ts b/packages/assets-controllers/src/Standards/ERC20Standard.ts index 05df1933f12..b33e37ea823 100644 --- a/packages/assets-controllers/src/Standards/ERC20Standard.ts +++ b/packages/assets-controllers/src/Standards/ERC20Standard.ts @@ -7,7 +7,7 @@ import { abiERC20 } from '@metamask/metamask-eth-abis'; import { assertIsStrictHexString, hexToBytes } from '@metamask/utils'; import type BN from 'bn.js'; -import { ethersBigNumberToBN } from '../assetsUtil'; +import { ethersBigNumberToBN } from '../assetsUtil.js'; export class ERC20Standard { private readonly provider: Web3Provider; diff --git a/packages/assets-controllers/src/Standards/NftStandards/ERC1155/ERC1155Standard.test.ts b/packages/assets-controllers/src/Standards/NftStandards/ERC1155/ERC1155Standard.test.ts index d35857522a2..fe0408d2d50 100644 --- a/packages/assets-controllers/src/Standards/NftStandards/ERC1155/ERC1155Standard.test.ts +++ b/packages/assets-controllers/src/Standards/NftStandards/ERC1155/ERC1155Standard.test.ts @@ -1,8 +1,9 @@ import { Web3Provider } from '@ethersproject/providers'; +import { jest } from '@jest/globals'; import HttpProvider from '@metamask/ethjs-provider-http'; import nock from 'nock'; -import { ERC1155Standard } from './ERC1155Standard'; +import { ERC1155Standard } from './ERC1155Standard.js'; const MAINNET_PROVIDER_HTTP = new HttpProvider( 'https://mainnet.infura.io/v3/341eacb578dd44a1a049cbc5f6fd4035', diff --git a/packages/assets-controllers/src/Standards/NftStandards/ERC1155/ERC1155Standard.ts b/packages/assets-controllers/src/Standards/NftStandards/ERC1155/ERC1155Standard.ts index d11b7eb84a4..1961a3498ce 100644 --- a/packages/assets-controllers/src/Standards/NftStandards/ERC1155/ERC1155Standard.ts +++ b/packages/assets-controllers/src/Standards/NftStandards/ERC1155/ERC1155Standard.ts @@ -11,7 +11,10 @@ import { import { abiERC1155 } from '@metamask/metamask-eth-abis'; import type * as BN from 'bn.js'; -import { getFormattedIpfsUrl, ethersBigNumberToBN } from '../../../assetsUtil'; +import { + getFormattedIpfsUrl, + ethersBigNumberToBN, +} from '../../../assetsUtil.js'; export class ERC1155Standard { private readonly provider: Web3Provider; diff --git a/packages/assets-controllers/src/Standards/NftStandards/ERC721/ERC721Standard.test.ts b/packages/assets-controllers/src/Standards/NftStandards/ERC721/ERC721Standard.test.ts index 19fe58346f2..b2c171a8a69 100644 --- a/packages/assets-controllers/src/Standards/NftStandards/ERC721/ERC721Standard.test.ts +++ b/packages/assets-controllers/src/Standards/NftStandards/ERC721/ERC721Standard.test.ts @@ -3,7 +3,7 @@ import { IPFS_DEFAULT_GATEWAY_URL } from '@metamask/controller-utils'; import HttpProvider from '@metamask/ethjs-provider-http'; import nock from 'nock'; -import { ERC721Standard } from './ERC721Standard'; +import { ERC721Standard } from './ERC721Standard.js'; const MAINNET_PROVIDER_HTTP = new HttpProvider( 'https://mainnet.infura.io/v3/341eacb578dd44a1a049cbc5f6fd4035', diff --git a/packages/assets-controllers/src/Standards/NftStandards/ERC721/ERC721Standard.ts b/packages/assets-controllers/src/Standards/NftStandards/ERC721/ERC721Standard.ts index 48b84612a69..e9fbd51c607 100644 --- a/packages/assets-controllers/src/Standards/NftStandards/ERC721/ERC721Standard.ts +++ b/packages/assets-controllers/src/Standards/NftStandards/ERC721/ERC721Standard.ts @@ -10,7 +10,7 @@ import { } from '@metamask/controller-utils'; import { abiERC721 } from '@metamask/metamask-eth-abis'; -import { getFormattedIpfsUrl } from '../../../assetsUtil'; +import { getFormattedIpfsUrl } from '../../../assetsUtil.js'; export class ERC721Standard { private readonly provider: Web3Provider; diff --git a/packages/assets-controllers/src/TokenBalancesController-method-action-types.ts b/packages/assets-controllers/src/TokenBalancesController-method-action-types.ts index e554dc72771..c6e79d8c62a 100644 --- a/packages/assets-controllers/src/TokenBalancesController-method-action-types.ts +++ b/packages/assets-controllers/src/TokenBalancesController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { TokenBalancesController } from './TokenBalancesController'; +import type { TokenBalancesController } from './TokenBalancesController.js'; export type TokenBalancesControllerGetChainPollingConfigAction = { type: `TokenBalancesController:getChainPollingConfig`; diff --git a/packages/assets-controllers/src/TokenBalancesController.test.ts b/packages/assets-controllers/src/TokenBalancesController.test.ts index 56656ee144c..c7d07bceea9 100644 --- a/packages/assets-controllers/src/TokenBalancesController.test.ts +++ b/packages/assets-controllers/src/TokenBalancesController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { toChecksumHexAddress, toHex } from '@metamask/controller-utils'; import type { BalanceUpdate } from '@metamask/core-backend'; @@ -16,14 +17,14 @@ import type { Hex } from '@metamask/utils'; import BN from 'bn.js'; import type nock from 'nock'; -import { jestAdvanceTime, flushPromises } from '../../../tests/helpers'; -import { createMockInternalAccount } from '../../accounts-controller/tests/mocks'; -import type { RpcEndpoint } from '../../network-controller/src/NetworkController'; -import { mockAPI_accountsAPI_MultichainAccountBalances as mockAPIAccountsAPIMultichainAccountBalancesCamelCase } from './__fixtures__/account-api-v4-mocks'; -import { waitFor } from './__fixtures__/test-utils'; -import { AccountsApiBalanceFetcher } from './multi-chain-accounts-service/api-balance-fetcher'; -import * as multicall from './multicall'; -import { RpcBalanceFetcher } from './rpc-service/rpc-balance-fetcher'; +import { jestAdvanceTime, flushPromises } from '../../../tests/helpers.js'; +import { createMockInternalAccount } from '../../accounts-controller/tests/mocks.js'; +import type { RpcEndpoint } from '../../network-controller/src/NetworkController.js'; +import { mockAPI_accountsAPI_MultichainAccountBalances as mockAPIAccountsAPIMultichainAccountBalancesCamelCase } from './__fixtures__/account-api-v4-mocks.js'; +import { waitFor } from './__fixtures__/test-utils.js'; +import { AccountsApiBalanceFetcher } from './multi-chain-accounts-service/api-balance-fetcher.js'; +import * as multicall from './multicall.js'; +import { RpcBalanceFetcher } from './rpc-service/rpc-balance-fetcher.js'; import type { ChainIdHex, TokenBalancesControllerMessenger, @@ -31,15 +32,15 @@ import type { TokenBalancesControllerState, TokenBalances, UpdateBalancesOptions, -} from './TokenBalancesController'; +} from './TokenBalancesController.js'; import { TokenBalancesController, UPDATE_BALANCES_BATCH_MS, caipChainIdToHex, mergeUpdateBalancesOptions, parseAssetType, -} from './TokenBalancesController'; -import type { TokensControllerState } from './TokensController'; +} from './TokenBalancesController.js'; +import type { TokensControllerState } from './TokensController.js'; type AllTokenBalancesControllerActions = MessengerActions; diff --git a/packages/assets-controllers/src/TokenBalancesController.ts b/packages/assets-controllers/src/TokenBalancesController.ts index f04e5d7fc87..c72529d9769 100644 --- a/packages/assets-controllers/src/TokenBalancesController.ts +++ b/packages/assets-controllers/src/TokenBalancesController.ts @@ -52,37 +52,37 @@ import { parseCaipChainId, } from '@metamask/utils'; import { produce } from 'immer'; -import { isEqual, union } from 'lodash'; +import { isEqual, union } from 'lodash-es'; -import type { AccountTrackerControllerGetStateAction } from './AccountTrackerController'; import type { AccountTrackerControllerUpdateNativeBalancesAction, AccountTrackerControllerUpdateStakedBalancesAction, -} from './AccountTrackerController-method-action-types'; -import { STAKING_CONTRACT_ADDRESS_BY_CHAINID } from './AssetsContractController'; +} from './AccountTrackerController-method-action-types.js'; +import type { AccountTrackerControllerGetStateAction } from './AccountTrackerController.js'; +import { STAKING_CONTRACT_ADDRESS_BY_CHAINID } from './AssetsContractController.js'; import { MUSD_ERC20_ADDRESS_LOWER, MUSD_TOKEN_DETECTION_CHAIN_IDS, -} from './constants'; -import { AccountsApiBalanceFetcher } from './multi-chain-accounts-service/api-balance-fetcher'; +} from './constants.js'; +import { AccountsApiBalanceFetcher } from './multi-chain-accounts-service/api-balance-fetcher.js'; import type { BalanceFetcher, ProcessedBalance, UnprocessedTokens, -} from './multi-chain-accounts-service/api-balance-fetcher'; -import { RpcBalanceFetcher } from './rpc-service/rpc-balance-fetcher'; -import type { TokenBalancesControllerMethodActions } from './TokenBalancesController-method-action-types'; +} from './multi-chain-accounts-service/api-balance-fetcher.js'; +import { RpcBalanceFetcher } from './rpc-service/rpc-balance-fetcher.js'; +import type { TokenBalancesControllerMethodActions } from './TokenBalancesController-method-action-types.js'; import type { TokenDetectionControllerAddDetectedTokensViaPollingAction, TokenDetectionControllerAddDetectedTokensViaWsAction, TokenDetectionControllerDetectTokensAction, -} from './TokenDetectionController-method-action-types'; +} from './TokenDetectionController-method-action-types.js'; import type { TokensControllerGetStateAction, TokensControllerState, TokensControllerStateChangeEvent, -} from './TokensController'; -import { createBatchedHandler } from './utils/create-batch-handler'; +} from './TokensController.js'; +import { createBatchedHandler } from './utils/create-batch-handler.js'; const MUSD_IMPORT_CHAIN_ID_SET = new Set(MUSD_TOKEN_DETECTION_CHAIN_IDS); @@ -1388,7 +1388,7 @@ export class TokenBalancesController extends StaticIntervalPollingController<{ for (const address of Object.keys(this.state.tokenBalances)) { const addressKey = address as ChecksumAddress; for (const network of Object.keys( - this.state.tokenBalances[addressKey] || {}, + this.state.tokenBalances[addressKey] ?? {}, )) { networksWithBalances.add(network); } diff --git a/packages/assets-controllers/src/TokenDetectionController-method-action-types.ts b/packages/assets-controllers/src/TokenDetectionController-method-action-types.ts index 80ac0965841..b3279a49707 100644 --- a/packages/assets-controllers/src/TokenDetectionController-method-action-types.ts +++ b/packages/assets-controllers/src/TokenDetectionController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { TokenDetectionController } from './TokenDetectionController'; +import type { TokenDetectionController } from './TokenDetectionController.js'; /** * Allows controller to make active and passive polling requests diff --git a/packages/assets-controllers/src/TokenDetectionController.test.ts b/packages/assets-controllers/src/TokenDetectionController.test.ts index 33b19d453ea..9382a66e0d4 100644 --- a/packages/assets-controllers/src/TokenDetectionController.test.ts +++ b/packages/assets-controllers/src/TokenDetectionController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { ChainId, NetworkType, @@ -31,33 +32,33 @@ import type { Hex } from '@metamask/utils'; import BN from 'bn.js'; import nock from 'nock'; -import { jestAdvanceTime } from '../../../tests/helpers'; -import { createMockInternalAccount } from '../../accounts-controller/tests/mocks'; +import { jestAdvanceTime } from '../../../tests/helpers.js'; +import { createMockInternalAccount } from '../../accounts-controller/tests/mocks.js'; import { buildCustomRpcEndpoint, buildInfuraNetworkConfiguration, -} from '../../network-controller/tests/helpers'; -import { formatAggregatorNames } from './assetsUtil'; -import { MUSD_ERC20_ADDRESS_LOWER } from './constants'; -import { TOKEN_END_POINT_API } from './token-service'; -import type { TokenDetectionControllerMessenger } from './TokenDetectionController'; +} from '../../network-controller/tests/helpers.js'; +import { formatAggregatorNames } from './assetsUtil.js'; +import { MUSD_ERC20_ADDRESS_LOWER } from './constants.js'; +import { TOKEN_END_POINT_API } from './token-service.js'; +import type { TokenDetectionControllerMessenger } from './TokenDetectionController.js'; import { TokenDetectionController, controllerName, -} from './TokenDetectionController'; -import { getDefaultTokenListState } from './TokenListController'; +} from './TokenDetectionController.js'; +import { getDefaultTokenListState } from './TokenListController.js'; import type { TokenListMap, TokenListState, TokenListToken, -} from './TokenListController'; -import type { TokenListService } from './TokenListService'; -import type { Token } from './TokenRatesController'; +} from './TokenListController.js'; +import type { TokenListService } from './TokenListService.js'; +import type { Token } from './TokenRatesController.js'; import type { TokensController, TokensControllerState, -} from './TokensController'; -import { getDefaultTokensState } from './TokensController'; +} from './TokensController.js'; +import { getDefaultTokensState } from './TokensController.js'; const DEFAULT_INTERVAL = 180000; diff --git a/packages/assets-controllers/src/TokenDetectionController.ts b/packages/assets-controllers/src/TokenDetectionController.ts index 0baf8a33311..0ee9cd31303 100644 --- a/packages/assets-controllers/src/TokenDetectionController.ts +++ b/packages/assets-controllers/src/TokenDetectionController.ts @@ -40,30 +40,30 @@ import type { AuthenticationController } from '@metamask/profile-sync-controller import type { TransactionControllerTransactionConfirmedEvent } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import type { AssetsContractController } from './AssetsContractController'; +import type { AssetsContractController } from './AssetsContractController.js'; import { formatIconUrlWithProxy, isTokenDetectionSupportedForNetwork, -} from './assetsUtil'; +} from './assetsUtil.js'; import { MUSD_ERC20_ADDRESS_LOWER, MUSD_TOKEN_DETECTION_CHAIN_IDS, MUSD_TOKEN_METADATA_BY_CHAIN, SUPPORTED_NETWORKS_ACCOUNTS_API_V4, -} from './constants'; -import type { TokenDetectionControllerMethodActions } from './TokenDetectionController-method-action-types'; +} from './constants.js'; +import type { TokenDetectionControllerMethodActions } from './TokenDetectionController-method-action-types.js'; import type { TokenListMap, TokenListToken, TokensChainsCache, -} from './TokenListController'; -import type { TokenListService } from './TokenListService'; -import type { Token } from './TokenRatesController'; -import type { TokensControllerGetStateAction } from './TokensController'; +} from './TokenListController.js'; +import type { TokenListService } from './TokenListService.js'; +import type { Token } from './TokenRatesController.js'; import type { TokensControllerAddDetectedTokensAction, TokensControllerAddTokensAction, -} from './TokensController-method-action-types'; +} from './TokensController-method-action-types.js'; +import type { TokensControllerGetStateAction } from './TokensController.js'; const DEFAULT_INTERVAL = 180000; diff --git a/packages/assets-controllers/src/TokenListController.test.ts b/packages/assets-controllers/src/TokenListController.test.ts index 2f34c93d81f..3a3a09a4b69 100644 --- a/packages/assets-controllers/src/TokenListController.test.ts +++ b/packages/assets-controllers/src/TokenListController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { ChainId, @@ -17,20 +18,20 @@ import { StorageGetResult } from '@metamask/storage-service'; import type { Hex } from '@metamask/utils'; import nock from 'nock'; -import { jestAdvanceTime } from '../../../tests/helpers'; +import { jestAdvanceTime } from '../../../tests/helpers.js'; import { buildCustomNetworkClientConfiguration, buildInfuraNetworkClientConfiguration, buildMockGetNetworkClientById, -} from '../../network-controller/tests/helpers'; -import * as tokenService from './token-service'; +} from '../../network-controller/tests/helpers.js'; +import * as tokenService from './token-service.js'; import type { TokenListMap, TokenListState, TokenListControllerMessenger, DataCache, -} from './TokenListController'; -import { TokenListController } from './TokenListController'; +} from './TokenListController.js'; +import { TokenListController } from './TokenListController.js'; const namespace = 'TokenListController'; const timestamp = Date.now(); @@ -669,8 +670,8 @@ describe('TokenListController', () => { messenger: restrictedMessenger, }); // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/no-floating-promises - controller.start(); + + void controller.start(); await new Promise((resolve) => setTimeout(() => resolve(), 150)); onNetworkStateChangeCallback({ selectedNetworkClientId, diff --git a/packages/assets-controllers/src/TokenListController.ts b/packages/assets-controllers/src/TokenListController.ts index 066a24d2a29..2635e6f26e1 100644 --- a/packages/assets-controllers/src/TokenListController.ts +++ b/packages/assets-controllers/src/TokenListController.ts @@ -22,8 +22,8 @@ import { isTokenListSupportedForNetwork, formatAggregatorNames, formatIconUrlWithProxy, -} from './assetsUtil'; -import { TokenRwaData, fetchTokenListByChainId } from './token-service'; +} from './assetsUtil.js'; +import { TokenRwaData, fetchTokenListByChainId } from './token-service.js'; // 4 Hour Interval Cache Refresh Threshold const DEFAULT_INTERVAL = 4 * 60 * 60 * 1000; @@ -234,7 +234,7 @@ export class TokenListController extends StaticIntervalPollingController { await this.#onNetworkControllerStateChange(networkControllerState); }, diff --git a/packages/assets-controllers/src/TokenListService.test.ts b/packages/assets-controllers/src/TokenListService.test.ts index 11854f7ec5f..1c06974221c 100644 --- a/packages/assets-controllers/src/TokenListService.test.ts +++ b/packages/assets-controllers/src/TokenListService.test.ts @@ -1,9 +1,10 @@ +import { jest } from '@jest/globals'; import type { Hex } from '@metamask/utils'; -import * as assetsUtil from './assetsUtil'; -import { fetchTokenListByChainId } from './token-service'; -import type { TokenListToken } from './TokenListController'; -import { buildTokenListMap, TokenListService } from './TokenListService'; +import * as assetsUtil from './assetsUtil.js'; +import { fetchTokenListByChainId } from './token-service.js'; +import type { TokenListToken } from './TokenListController.js'; +import { buildTokenListMap, TokenListService } from './TokenListService.js'; jest.mock('./token-service', () => ({ fetchTokenListByChainId: jest.fn(), diff --git a/packages/assets-controllers/src/TokenListService.ts b/packages/assets-controllers/src/TokenListService.ts index 4f6db1a0159..372d6d17c31 100644 --- a/packages/assets-controllers/src/TokenListService.ts +++ b/packages/assets-controllers/src/TokenListService.ts @@ -1,9 +1,9 @@ import type { Hex } from '@metamask/utils'; import { QueryClient } from '@tanstack/query-core'; -import { formatAggregatorNames, formatIconUrlWithProxy } from './assetsUtil'; -import { fetchTokenListByChainId } from './token-service'; -import type { TokenListMap, TokenListToken } from './TokenListController'; +import { formatAggregatorNames, formatIconUrlWithProxy } from './assetsUtil.js'; +import { fetchTokenListByChainId } from './token-service.js'; +import type { TokenListMap, TokenListToken } from './TokenListController.js'; // 4 hours — mirrors TokenListController's DEFAULT_THRESHOLD const FOUR_HOURS_MS = 4 * 60 * 60 * 1000; diff --git a/packages/assets-controllers/src/TokenRatesController.test.ts b/packages/assets-controllers/src/TokenRatesController.test.ts index c16908bf586..9cef249555f 100644 --- a/packages/assets-controllers/src/TokenRatesController.test.ts +++ b/packages/assets-controllers/src/TokenRatesController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { ChainId, toChecksumHexAddress } from '@metamask/controller-utils'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; @@ -17,22 +18,25 @@ import type { CaipAssetType, Hex } from '@metamask/utils'; import { add0x, KnownCaipNamespace } from '@metamask/utils'; import type { Patch } from 'immer'; -import { flushPromises } from '../../../tests/helpers'; -import { TOKEN_PRICES_BATCH_SIZE } from './assetsUtil'; +import { flushPromises } from '../../../tests/helpers.js'; +import { TOKEN_PRICES_BATCH_SIZE } from './assetsUtil.js'; import type { AbstractTokenPricesService, EvmAssetWithMarketData, -} from './token-prices-service/abstract-token-prices-service'; -import { ZERO_ADDRESS } from './token-prices-service/codefi-v2'; -import { controllerName, TokenRatesController } from './TokenRatesController'; +} from './token-prices-service/abstract-token-prices-service.js'; +import { ZERO_ADDRESS } from './token-prices-service/codefi-v2.js'; +import { + controllerName, + TokenRatesController, +} from './TokenRatesController.js'; import type { MarketDataDetails, Token, TokenRatesControllerMessenger, TokenRatesControllerState, -} from './TokenRatesController'; -import { getDefaultTokensState } from './TokensController'; -import type { TokensControllerState } from './TokensController'; +} from './TokenRatesController.js'; +import { getDefaultTokensState } from './TokensController.js'; +import type { TokensControllerState } from './TokensController.js'; const defaultSelectedAddress = '0x1111111111111111111111111111111111111111'; @@ -112,8 +116,7 @@ describe('TokenRatesController', () => { it('should not fail if tokenPricesService does not have setNativeAssetIdentifiers', async () => { const tokenPricesService = buildMockTokenPricesService(); // Explicitly remove setNativeAssetIdentifiers to simulate an old service - delete (tokenPricesService as Partial) - .setNativeAssetIdentifiers; + delete tokenPricesService.setNativeAssetIdentifiers; await withController( { diff --git a/packages/assets-controllers/src/TokenRatesController.ts b/packages/assets-controllers/src/TokenRatesController.ts index e8a98880b14..58dad4f5299 100644 --- a/packages/assets-controllers/src/TokenRatesController.ts +++ b/packages/assets-controllers/src/TokenRatesController.ts @@ -12,17 +12,20 @@ import type { import type { NetworkEnablementControllerGetStateAction } from '@metamask/network-enablement-controller'; import { StaticIntervalPollingController } from '@metamask/polling-controller'; import type { Hex } from '@metamask/utils'; -import { isEqual } from 'lodash'; - -import { reduceInBatchesSerially, TOKEN_PRICES_BATCH_SIZE } from './assetsUtil'; -import type { AbstractTokenPricesService } from './token-prices-service/abstract-token-prices-service'; -import { getNativeTokenAddress } from './token-prices-service/codefi-v2'; -import { TokenRwaData } from './token-service'; +import { isEqual } from 'lodash-es'; + +import { + reduceInBatchesSerially, + TOKEN_PRICES_BATCH_SIZE, +} from './assetsUtil.js'; +import type { AbstractTokenPricesService } from './token-prices-service/abstract-token-prices-service.js'; +import { getNativeTokenAddress } from './token-prices-service/codefi-v2.js'; +import { TokenRwaData } from './token-service.js'; import type { TokensControllerGetStateAction, TokensControllerStateChangeEvent, TokensControllerState, -} from './TokensController'; +} from './TokensController.js'; /** * @type Token @@ -280,7 +283,7 @@ export class TokenRatesController extends StaticIntervalPollingController { if (this.#isDeprecated()) { this.#enforceDisabledState(); diff --git a/packages/assets-controllers/src/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.test.ts b/packages/assets-controllers/src/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.test.ts index 05a1530aa88..02403265727 100644 --- a/packages/assets-controllers/src/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.test.ts +++ b/packages/assets-controllers/src/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { ChainId } from '@metamask/controller-utils'; import { MOCK_ANY_NAMESPACE, Messenger } from '@metamask/messenger'; @@ -12,20 +13,23 @@ import assert from 'assert'; import type { AbstractTokenPricesService, EvmAssetWithMarketData, -} from '../token-prices-service/abstract-token-prices-service'; -import { fetchTokenMetadata } from '../token-service'; -import type { Token } from '../TokenRatesController'; +} from '../token-prices-service/abstract-token-prices-service.js'; +import { fetchTokenMetadata } from '../token-service.js'; +import type { Token } from '../TokenRatesController.js'; import { getDefaultTokenSearchDiscoveryDataControllerState, TokenSearchDiscoveryDataController, controllerName, MAX_TOKEN_DISPLAY_DATA_LENGTH, -} from './TokenSearchDiscoveryDataController'; +} from './TokenSearchDiscoveryDataController.js'; import type { TokenSearchDiscoveryDataControllerMessenger, TokenSearchDiscoveryDataControllerState, -} from './TokenSearchDiscoveryDataController'; -import type { NotFoundTokenDisplayData, FoundTokenDisplayData } from './types'; +} from './TokenSearchDiscoveryDataController.js'; +import type { + NotFoundTokenDisplayData, + FoundTokenDisplayData, +} from './types.js'; jest.mock('../token-service', () => { const mockFetchTokenMetadata = jest.fn(); diff --git a/packages/assets-controllers/src/TokenSearchDiscoveryDataController/index.ts b/packages/assets-controllers/src/TokenSearchDiscoveryDataController/index.ts index e2f6c06eb59..033f1c5cf90 100644 --- a/packages/assets-controllers/src/TokenSearchDiscoveryDataController/index.ts +++ b/packages/assets-controllers/src/TokenSearchDiscoveryDataController/index.ts @@ -1,2 +1,2 @@ -export * from './TokenSearchDiscoveryDataController'; -export type * from './types'; +export * from './TokenSearchDiscoveryDataController.js'; +export type * from './types.js'; diff --git a/packages/assets-controllers/src/TokenSearchDiscoveryDataController/types.ts b/packages/assets-controllers/src/TokenSearchDiscoveryDataController/types.ts index 26b482ef141..694f65c2738 100644 --- a/packages/assets-controllers/src/TokenSearchDiscoveryDataController/types.ts +++ b/packages/assets-controllers/src/TokenSearchDiscoveryDataController/types.ts @@ -1,7 +1,7 @@ import type { Hex } from '@metamask/utils'; -import type { EvmAssetWithMarketData } from '../token-prices-service/abstract-token-prices-service'; -import type { Token } from '../TokenRatesController'; +import type { EvmAssetWithMarketData } from '../token-prices-service/abstract-token-prices-service.js'; +import type { Token } from '../TokenRatesController.js'; export type NotFoundTokenDisplayData = { found: false; diff --git a/packages/assets-controllers/src/TokensController-method-action-types.ts b/packages/assets-controllers/src/TokensController-method-action-types.ts index 7488df8e132..3aba1259bed 100644 --- a/packages/assets-controllers/src/TokensController-method-action-types.ts +++ b/packages/assets-controllers/src/TokensController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { TokensController } from './TokensController'; +import type { TokensController } from './TokensController.js'; /** * Adds a token to the stored token list. diff --git a/packages/assets-controllers/src/TokensController.test.ts b/packages/assets-controllers/src/TokensController.test.ts index e88f0eb588e..02ade3ccf5a 100644 --- a/packages/assets-controllers/src/TokensController.test.ts +++ b/packages/assets-controllers/src/TokensController.test.ts @@ -1,4 +1,5 @@ import { Contract } from '@ethersproject/contracts'; +import { jest } from '@jest/globals'; import { ApprovalController } from '@metamask/approval-controller'; import type { ApprovalControllerMessenger, @@ -30,22 +31,22 @@ import type { Patch } from 'immer'; import nock from 'nock'; import { v1 as uuidV1 } from 'uuid'; -import { FakeProvider } from '../../../tests/fake-provider'; -import { createMockInternalAccount } from '../../accounts-controller/tests/mocks'; +import { FakeProvider } from '../../../tests/fake-provider.js'; +import { createMockInternalAccount } from '../../accounts-controller/tests/mocks.js'; import { buildCustomNetworkClientConfiguration, buildMockGetNetworkClientById, -} from '../../network-controller/tests/helpers'; -import { ERC20Standard } from './Standards/ERC20Standard'; -import { ERC1155Standard } from './Standards/NftStandards/ERC1155/ERC1155Standard'; -import { TOKEN_END_POINT_API } from './token-service'; -import type { TokenRwaData } from './token-service'; -import type { Token } from './TokenRatesController'; -import { TokensController } from './TokensController'; +} from '../../network-controller/tests/helpers.js'; +import { ERC20Standard } from './Standards/ERC20Standard.js'; +import { ERC1155Standard } from './Standards/NftStandards/ERC1155/ERC1155Standard.js'; +import { TOKEN_END_POINT_API } from './token-service.js'; +import type { TokenRwaData } from './token-service.js'; +import type { Token } from './TokenRatesController.js'; +import { TokensController } from './TokensController.js'; import type { TokensControllerMessenger, TokensControllerState, -} from './TokensController'; +} from './TokensController.js'; jest.mock('@ethersproject/contracts'); jest.mock('uuid', () => ({ @@ -2785,16 +2786,14 @@ describe('TokensController', () => { messenger.subscribe('ApprovalController:stateChange', listener); }); - // eslint-disable-next-line @typescript-eslint/no-floating-promises - controller.watchAsset({ + void controller.watchAsset({ asset, type: 'ERC20', interactingAddress, networkClientId: 'goerli', }); - // eslint-disable-next-line @typescript-eslint/no-floating-promises - controller.watchAsset({ + void controller.watchAsset({ asset: anotherAsset, type: 'ERC20', interactingAddress, diff --git a/packages/assets-controllers/src/TokensController.ts b/packages/assets-controllers/src/TokensController.ts index f528a12b52b..51de66e3eeb 100644 --- a/packages/assets-controllers/src/TokensController.ts +++ b/packages/assets-controllers/src/TokensController.ts @@ -42,21 +42,21 @@ import { isStrictHexString } from '@metamask/utils'; import type { Hex, Json } from '@metamask/utils'; import { Mutex } from 'async-mutex'; import type { Patch } from 'immer'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; import { v1 as random } from 'uuid'; -import { formatAggregatorNames, formatIconUrlWithProxy } from './assetsUtil'; -import { ERC20Standard } from './Standards/ERC20Standard'; -import { ERC1155Standard } from './Standards/NftStandards/ERC1155/ERC1155Standard'; +import { formatAggregatorNames, formatIconUrlWithProxy } from './assetsUtil.js'; +import { ERC20Standard } from './Standards/ERC20Standard.js'; +import { ERC1155Standard } from './Standards/NftStandards/ERC1155/ERC1155Standard.js'; import { fetchTokenMetadata, TOKEN_METADATA_NO_SUPPORT_ERROR, TokenRwaData, -} from './token-service'; -import type { TokenListMap, TokenListToken } from './TokenListController'; -import type { TokenListService } from './TokenListService'; -import type { Token } from './TokenRatesController'; -import type { TokensControllerMethodActions } from './TokensController-method-action-types'; +} from './token-service.js'; +import type { TokenListMap, TokenListToken } from './TokenListController.js'; +import type { TokenListService } from './TokenListService.js'; +import type { Token } from './TokenRatesController.js'; +import type { TokensControllerMethodActions } from './TokensController-method-action-types.js'; /** * @type SuggestedAssetMeta @@ -1133,10 +1133,7 @@ export class TokensController extends BaseController< let newAllTokens = allTokens; if ( newTokens?.length || - (newTokens && - allTokens && - allTokens[interactingChainId] && - allTokens[interactingChainId][userAddressToAddTokens]) + (newTokens && allTokens?.[interactingChainId]?.[userAddressToAddTokens]) ) { const networkTokens = allTokens[interactingChainId]; const newNetworkTokens = { @@ -1153,9 +1150,7 @@ export class TokensController extends BaseController< if ( newIgnoredTokens?.length || (newIgnoredTokens && - allIgnoredTokens && - allIgnoredTokens[interactingChainId] && - allIgnoredTokens[interactingChainId][userAddressToAddTokens]) + allIgnoredTokens?.[interactingChainId]?.[userAddressToAddTokens]) ) { const networkIgnoredTokens = allIgnoredTokens[interactingChainId]; const newIgnoredNetworkTokens = { @@ -1172,9 +1167,7 @@ export class TokensController extends BaseController< if ( newDetectedTokens?.length || (newDetectedTokens && - allDetectedTokens && - allDetectedTokens[interactingChainId] && - allDetectedTokens[interactingChainId][userAddressToAddTokens]) + allDetectedTokens?.[interactingChainId]?.[userAddressToAddTokens]) ) { const networkDetectedTokens = allDetectedTokens[interactingChainId]; const newDetectedNetworkTokens = { diff --git a/packages/assets-controllers/src/assetsUtil.test.ts b/packages/assets-controllers/src/assetsUtil.test.ts index 634444e04b2..cb8f933818e 100644 --- a/packages/assets-controllers/src/assetsUtil.test.ts +++ b/packages/assets-controllers/src/assetsUtil.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { GANACHE_CHAIN_ID, ChainId, @@ -8,12 +9,12 @@ import { import { add0x } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import * as assetsUtil from './assetsUtil'; -import { TOKEN_PRICES_BATCH_SIZE } from './assetsUtil'; -import type { Nft, NftMetadata } from './NftController'; -import { getNativeTokenAddress } from './token-prices-service'; -import type { AbstractTokenPricesService } from './token-prices-service'; -import { EvmAssetWithMarketData } from './token-prices-service/abstract-token-prices-service'; +import * as assetsUtil from './assetsUtil.js'; +import { TOKEN_PRICES_BATCH_SIZE } from './assetsUtil.js'; +import type { Nft, NftMetadata } from './NftController.js'; +import { EvmAssetWithMarketData } from './token-prices-service/abstract-token-prices-service.js'; +import { getNativeTokenAddress } from './token-prices-service/index.js'; +import type { AbstractTokenPricesService } from './token-prices-service/index.js'; const DEFAULT_IPFS_URL_FORMAT = 'ipfs://'; const ALTERNATIVE_IPFS_URL_FORMAT = 'ipfs://ipfs/'; diff --git a/packages/assets-controllers/src/assetsUtil.ts b/packages/assets-controllers/src/assetsUtil.ts index a64809b1de6..947968c07e0 100644 --- a/packages/assets-controllers/src/assetsUtil.ts +++ b/packages/assets-controllers/src/assetsUtil.ts @@ -14,9 +14,9 @@ import BN from 'bn.js'; import { CID } from 'multiformats/cid'; import type { Nft, NftMetadata } from './NftController.js'; +import type { EvmAssetWithMarketData } from './token-prices-service/abstract-token-prices-service.js'; import { getNativeTokenAddress } from './token-prices-service/index.js'; import type { AbstractTokenPricesService } from './token-prices-service/index.js'; -import type { EvmAssetWithMarketData } from './token-prices-service/abstract-token-prices-service.js'; import type { ContractExchangeRates, ContractMarketData, diff --git a/packages/assets-controllers/src/balances.test.ts b/packages/assets-controllers/src/balances.test.ts index 3237f025972..6327d98264a 100644 --- a/packages/assets-controllers/src/balances.test.ts +++ b/packages/assets-controllers/src/balances.test.ts @@ -1,13 +1,13 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { AccountWalletType, AccountGroupType } from '@metamask/account-api'; -import { STAKING_CONTRACT_ADDRESS_BY_CHAINID } from './AssetsContractController'; +import { STAKING_CONTRACT_ADDRESS_BY_CHAINID } from './AssetsContractController.js'; import { calculateBalanceForAllWallets, calculateBalanceChangeForAllWallets, calculateBalanceChangeForAccountGroup, -} from './balances'; -import { getNativeTokenAddress } from './token-prices-service/codefi-v2'; +} from './balances.js'; +import { getNativeTokenAddress } from './token-prices-service/codefi-v2.js'; const createBaseMockState = (userCurrency = 'USD') => ({ AccountTreeController: { diff --git a/packages/assets-controllers/src/crypto-compare-service/crypto-compare.test.ts b/packages/assets-controllers/src/crypto-compare-service/crypto-compare.test.ts index 0c42dacf1d6..f69bb44bcd5 100644 --- a/packages/assets-controllers/src/crypto-compare-service/crypto-compare.test.ts +++ b/packages/assets-controllers/src/crypto-compare-service/crypto-compare.test.ts @@ -1,6 +1,6 @@ import nock from 'nock'; -import { fetchExchangeRate, fetchMultiExchangeRate } from './crypto-compare'; +import { fetchExchangeRate, fetchMultiExchangeRate } from './crypto-compare.js'; const cryptoCompareHost = 'https://min-api.cryptocompare.com'; diff --git a/packages/assets-controllers/src/crypto-compare-service/crypto-compare.ts b/packages/assets-controllers/src/crypto-compare-service/crypto-compare.ts index 5af6f3869d3..cb030c07391 100644 --- a/packages/assets-controllers/src/crypto-compare-service/crypto-compare.ts +++ b/packages/assets-controllers/src/crypto-compare-service/crypto-compare.ts @@ -1,6 +1,6 @@ import { handleFetch } from '@metamask/controller-utils'; -import { getKeyByValue } from '../assetsUtil'; +import { getKeyByValue } from '../assetsUtil.js'; /** * A map from native currency symbol to CryptoCompare identifier. diff --git a/packages/assets-controllers/src/crypto-compare-service/index.ts b/packages/assets-controllers/src/crypto-compare-service/index.ts index 33646741118..c33d3e11b9d 100644 --- a/packages/assets-controllers/src/crypto-compare-service/index.ts +++ b/packages/assets-controllers/src/crypto-compare-service/index.ts @@ -1 +1 @@ -export { fetchExchangeRate, fetchMultiExchangeRate } from './crypto-compare'; +export { fetchExchangeRate, fetchMultiExchangeRate } from './crypto-compare.js'; diff --git a/packages/assets-controllers/src/multi-chain-accounts-service/api-balance-fetcher.test.ts b/packages/assets-controllers/src/multi-chain-accounts-service/api-balance-fetcher.test.ts index a117e40022a..37ea6e79421 100644 --- a/packages/assets-controllers/src/multi-chain-accounts-service/api-balance-fetcher.test.ts +++ b/packages/assets-controllers/src/multi-chain-accounts-service/api-balance-fetcher.test.ts @@ -1,12 +1,13 @@ +import { jest } from '@jest/globals'; import type { InternalAccount } from '@metamask/keyring-internal-api'; import BN from 'bn.js'; -import { createMockInternalAccount } from '../../../accounts-controller/tests/mocks'; -import { SUPPORTED_NETWORKS_ACCOUNTS_API_V4 } from '../constants'; -import * as ConstantsModule from '../constants'; -import { AccountsApiBalanceFetcher } from './api-balance-fetcher'; -import type { ChainIdHex, ChecksumAddress } from './api-balance-fetcher'; -import type { GetBalancesResponse } from './types'; +import { createMockInternalAccount } from '../../../accounts-controller/tests/mocks.js'; +import { SUPPORTED_NETWORKS_ACCOUNTS_API_V4 } from '../constants.js'; +import * as ConstantsModule from '../constants.js'; +import { AccountsApiBalanceFetcher } from './api-balance-fetcher.js'; +import type { ChainIdHex, ChecksumAddress } from './api-balance-fetcher.js'; +import type { GetBalancesResponse } from './types.js'; // Mock dependencies that cause import issues jest.mock('../AssetsContractController', () => ({ diff --git a/packages/assets-controllers/src/multi-chain-accounts-service/api-balance-fetcher.ts b/packages/assets-controllers/src/multi-chain-accounts-service/api-balance-fetcher.ts index 9f1a53708d2..3e52a5336b6 100644 --- a/packages/assets-controllers/src/multi-chain-accounts-service/api-balance-fetcher.ts +++ b/packages/assets-controllers/src/multi-chain-accounts-service/api-balance-fetcher.ts @@ -12,15 +12,15 @@ import type { CaipAccountAddress, CaipChainId, Hex } from '@metamask/utils'; import { parseCaipChainId } from '@metamask/utils'; import BN from 'bn.js'; -import { STAKING_CONTRACT_ADDRESS_BY_CHAINID } from '../AssetsContractController'; +import { STAKING_CONTRACT_ADDRESS_BY_CHAINID } from '../AssetsContractController.js'; import { accountAddressToCaipReference, reduceInBatchesSerially, SupportedStakedBalanceNetworks, -} from '../assetsUtil'; -import { SUPPORTED_NETWORKS_ACCOUNTS_API_V4 } from '../constants'; -import { fetchMultiChainBalancesV4 } from './multi-chain-accounts'; -import type { GetBalancesResponse } from './types'; +} from '../assetsUtil.js'; +import { SUPPORTED_NETWORKS_ACCOUNTS_API_V4 } from '../constants.js'; +import { fetchMultiChainBalancesV4 } from './multi-chain-accounts.js'; +import type { GetBalancesResponse } from './types.js'; // Maximum number of account addresses that can be sent to the accounts API in a single request const ACCOUNTS_API_BATCH_SIZE = 20; diff --git a/packages/assets-controllers/src/multi-chain-accounts-service/index.ts b/packages/assets-controllers/src/multi-chain-accounts-service/index.ts index 13cdd73ca5f..15361688b45 100644 --- a/packages/assets-controllers/src/multi-chain-accounts-service/index.ts +++ b/packages/assets-controllers/src/multi-chain-accounts-service/index.ts @@ -1,9 +1,9 @@ export type { GetBalancesResponse, GetSupportedNetworksResponse, -} from './types'; +} from './types.js'; export { fetchMultiChainBalances, fetchSupportedNetworks, -} from './multi-chain-accounts'; +} from './multi-chain-accounts.js'; diff --git a/packages/assets-controllers/src/multi-chain-accounts-service/mocks/mock-get-balances.test.ts b/packages/assets-controllers/src/multi-chain-accounts-service/mocks/mock-get-balances.test.ts index 3fe96f75cfd..af0acef7bd0 100644 --- a/packages/assets-controllers/src/multi-chain-accounts-service/mocks/mock-get-balances.test.ts +++ b/packages/assets-controllers/src/multi-chain-accounts-service/mocks/mock-get-balances.test.ts @@ -1,7 +1,7 @@ import { MOCK_GET_BALANCES_RESPONSE, createMockGetBalancesResponse, -} from './mock-get-balances'; +} from './mock-get-balances.js'; describe('mock-get-balances', () => { describe('MOCK_GET_BALANCES_RESPONSE', () => { diff --git a/packages/assets-controllers/src/multi-chain-accounts-service/mocks/mock-get-balances.ts b/packages/assets-controllers/src/multi-chain-accounts-service/mocks/mock-get-balances.ts index 3ac5f716970..6de434c4d82 100644 --- a/packages/assets-controllers/src/multi-chain-accounts-service/mocks/mock-get-balances.ts +++ b/packages/assets-controllers/src/multi-chain-accounts-service/mocks/mock-get-balances.ts @@ -1,4 +1,4 @@ -import type { GetBalancesResponse } from '../types'; +import type { GetBalancesResponse } from '../types.js'; export const MOCK_GET_BALANCES_RESPONSE: GetBalancesResponse = { count: 6, diff --git a/packages/assets-controllers/src/multi-chain-accounts-service/mocks/mock-get-supported-networks.ts b/packages/assets-controllers/src/multi-chain-accounts-service/mocks/mock-get-supported-networks.ts index 73370150728..094928d9a10 100644 --- a/packages/assets-controllers/src/multi-chain-accounts-service/mocks/mock-get-supported-networks.ts +++ b/packages/assets-controllers/src/multi-chain-accounts-service/mocks/mock-get-supported-networks.ts @@ -1,4 +1,4 @@ -import type { GetSupportedNetworksResponse } from '../types'; +import type { GetSupportedNetworksResponse } from '../types.js'; export const MOCK_GET_SUPPORTED_NETWORKS_RESPONSE: GetSupportedNetworksResponse = { diff --git a/packages/assets-controllers/src/multi-chain-accounts-service/multi-chain-accounts.test.ts b/packages/assets-controllers/src/multi-chain-accounts-service/multi-chain-accounts.test.ts index 184b06c6934..13ed68205bf 100644 --- a/packages/assets-controllers/src/multi-chain-accounts-service/multi-chain-accounts.test.ts +++ b/packages/assets-controllers/src/multi-chain-accounts-service/multi-chain-accounts.test.ts @@ -1,13 +1,13 @@ import nock from 'nock'; -import { MOCK_GET_BALANCES_RESPONSE } from './mocks/mock-get-balances'; -import { MOCK_GET_SUPPORTED_NETWORKS_RESPONSE } from './mocks/mock-get-supported-networks'; +import { MOCK_GET_BALANCES_RESPONSE } from './mocks/mock-get-balances.js'; +import { MOCK_GET_SUPPORTED_NETWORKS_RESPONSE } from './mocks/mock-get-supported-networks.js'; import { MULTICHAIN_ACCOUNTS_DOMAIN, fetchMultiChainBalances, fetchMultiChainBalancesV4, fetchSupportedNetworks, -} from './multi-chain-accounts'; +} from './multi-chain-accounts.js'; const MOCK_ADDRESS = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'; const MOCK_CAIP_ADDRESSES = [ diff --git a/packages/assets-controllers/src/multi-chain-accounts-service/multi-chain-accounts.ts b/packages/assets-controllers/src/multi-chain-accounts-service/multi-chain-accounts.ts index 14c52d44823..5f72dd51692 100644 --- a/packages/assets-controllers/src/multi-chain-accounts-service/multi-chain-accounts.ts +++ b/packages/assets-controllers/src/multi-chain-accounts-service/multi-chain-accounts.ts @@ -6,7 +6,7 @@ import type { GetBalancesQueryParamsV4, GetBalancesResponse, GetSupportedNetworksResponse, -} from './types'; +} from './types.js'; export const MULTICHAIN_ACCOUNTS_DOMAIN = 'https://accounts.api.cx.metamask.io'; diff --git a/packages/assets-controllers/src/multicall.test.ts b/packages/assets-controllers/src/multicall.test.ts index 78b4bb2e97e..57c6fe50035 100644 --- a/packages/assets-controllers/src/multicall.test.ts +++ b/packages/assets-controllers/src/multicall.test.ts @@ -1,6 +1,7 @@ import { defaultAbiCoder } from '@ethersproject/abi'; import { Contract } from '@ethersproject/contracts'; import { Web3Provider } from '@ethersproject/providers'; +import { jest } from '@jest/globals'; import { abiERC20 } from '@metamask/metamask-eth-abis'; import type { Hex } from '@metamask/utils'; import BN from 'bn.js'; @@ -11,8 +12,8 @@ import { getTokenBalancesForMultipleAddresses, getStakedBalancesForAddresses, getNftOwnershipForMultipleNfts, -} from './multicall'; -import type { Aggregate3Call, NftOwnershipQuery } from './multicall'; +} from './multicall.js'; +import type { Aggregate3Call, NftOwnershipQuery } from './multicall.js'; const provider = new Web3Provider(jest.fn()); diff --git a/packages/assets-controllers/src/multicall.ts b/packages/assets-controllers/src/multicall.ts index cd3907e9082..65f728e3f1a 100644 --- a/packages/assets-controllers/src/multicall.ts +++ b/packages/assets-controllers/src/multicall.ts @@ -3,8 +3,8 @@ import type { Web3Provider } from '@ethersproject/providers'; import type { Hex } from '@metamask/utils'; import BN from 'bn.js'; -import { STAKING_CONTRACT_ADDRESS_BY_CHAINID } from './AssetsContractController'; -import { reduceInBatchesSerially } from './assetsUtil'; +import { STAKING_CONTRACT_ADDRESS_BY_CHAINID } from './AssetsContractController.js'; +import { reduceInBatchesSerially } from './assetsUtil.js'; // https://github.com/mds1/multicall/blob/main/deployments.json const MULTICALL_CONTRACT_BY_CHAINID = { diff --git a/packages/assets-controllers/src/rpc-service/rpc-balance-fetcher.test.ts b/packages/assets-controllers/src/rpc-service/rpc-balance-fetcher.test.ts index a38c3a66c0e..1d86222805e 100644 --- a/packages/assets-controllers/src/rpc-service/rpc-balance-fetcher.test.ts +++ b/packages/assets-controllers/src/rpc-service/rpc-balance-fetcher.test.ts @@ -1,12 +1,13 @@ import type { Web3Provider } from '@ethersproject/providers'; +import { jest } from '@jest/globals'; import type { InternalAccount } from '@metamask/keyring-internal-api'; import type { NetworkClient } from '@metamask/network-controller'; import BN from 'bn.js'; -import type { UnprocessedTokens } from '../multi-chain-accounts-service/api-balance-fetcher'; -import type { TokensControllerState } from '../TokensController'; -import { RpcBalanceFetcher } from './rpc-balance-fetcher'; -import type { ChainIdHex, ChecksumAddress } from './rpc-balance-fetcher'; +import type { UnprocessedTokens } from '../multi-chain-accounts-service/api-balance-fetcher.js'; +import type { TokensControllerState } from '../TokensController.js'; +import { RpcBalanceFetcher } from './rpc-balance-fetcher.js'; +import type { ChainIdHex, ChecksumAddress } from './rpc-balance-fetcher.js'; const MOCK_ADDRESS_1 = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'; const MOCK_ADDRESS_2 = '0x742d35cc6675c4f17f41140100aa83a4b1fa4c82'; diff --git a/packages/assets-controllers/src/rpc-service/rpc-balance-fetcher.ts b/packages/assets-controllers/src/rpc-service/rpc-balance-fetcher.ts index 327c644d117..f0d6d56cffd 100644 --- a/packages/assets-controllers/src/rpc-service/rpc-balance-fetcher.ts +++ b/packages/assets-controllers/src/rpc-service/rpc-balance-fetcher.ts @@ -8,11 +8,11 @@ import type { NetworkClient } from '@metamask/network-controller'; import type { Hex } from '@metamask/utils'; import BN from 'bn.js'; -import { STAKING_CONTRACT_ADDRESS_BY_CHAINID } from '../AssetsContractController'; -import { shouldIncludeNativeToken } from '../constants'; -import type { UnprocessedTokens } from '../multi-chain-accounts-service/api-balance-fetcher'; -import { getTokenBalancesForMultipleAddresses } from '../multicall'; -import type { TokensControllerState } from '../TokensController'; +import { STAKING_CONTRACT_ADDRESS_BY_CHAINID } from '../AssetsContractController.js'; +import { shouldIncludeNativeToken } from '../constants.js'; +import type { UnprocessedTokens } from '../multi-chain-accounts-service/api-balance-fetcher.js'; +import { getTokenBalancesForMultipleAddresses } from '../multicall.js'; +import type { TokensControllerState } from '../TokensController.js'; const RPC_TIMEOUT_MS = 30000; @@ -162,10 +162,10 @@ export class RpcBalanceFetcher implements BalanceFetcher { // Ensure native token entries exist for all addresses allAddressesForNative.forEach((address) => { - const nativeBalance = tokenBalances[ZERO_ADDRESS]?.[address] || null; + const nativeBalance = tokenBalances[ZERO_ADDRESS]?.[address] ?? null; chainResults.push({ success: true, - value: nativeBalance || new BN('0'), + value: nativeBalance ?? new BN('0'), account: address as ChecksumAddress, token: ZERO_ADDRESS, chainId, diff --git a/packages/assets-controllers/src/selectors/stringify-balance.test.ts b/packages/assets-controllers/src/selectors/stringify-balance.test.ts index 7cf8c0b216b..5ba6d2e805b 100644 --- a/packages/assets-controllers/src/selectors/stringify-balance.test.ts +++ b/packages/assets-controllers/src/selectors/stringify-balance.test.ts @@ -3,7 +3,7 @@ import { bigIntToHex } from '@metamask/utils'; import { stringifyBalanceWithDecimals, parseBalanceWithDecimals, -} from './stringify-balance'; +} from './stringify-balance.js'; describe('stringifyBalanceWithDecimals', () => { it('returns the balance early if it is 0', () => { diff --git a/packages/assets-controllers/src/selectors/token-selectors.test.ts b/packages/assets-controllers/src/selectors/token-selectors.test.ts index ccbac2f2d21..79a3761dbc8 100644 --- a/packages/assets-controllers/src/selectors/token-selectors.test.ts +++ b/packages/assets-controllers/src/selectors/token-selectors.test.ts @@ -8,18 +8,18 @@ import type { AccountsControllerState } from '@metamask/accounts-controller'; import { TrxScope } from '@metamask/keyring-api'; import type { NetworkState } from '@metamask/network-controller'; import type { Hex } from '@metamask/utils'; -import { cloneDeep } from 'lodash'; - -import type { AccountGroupMultichainAccountObject } from '../../../account-tree-controller/src/group'; -import type { CurrencyRateState } from '../CurrencyRateController'; -import type { MultichainAssetsControllerState } from '../MultichainAssetsController'; -import type { MultichainAssetsRatesControllerState } from '../MultichainAssetsRatesController'; -import type { MultichainBalancesControllerState } from '../MultichainBalancesController'; -import type { TokenBalancesControllerState } from '../TokenBalancesController'; -import type { TokenRatesControllerState } from '../TokenRatesController'; -import type { TokensControllerState } from '../TokensController'; -import { MOCK_TRON_TOKENS } from './__fixtures__/arrange-tron-state'; -import { selectAssetsBySelectedAccountGroup } from './token-selectors'; +import { cloneDeep } from 'lodash-es'; + +import type { AccountGroupMultichainAccountObject } from '../../../account-tree-controller/src/group.js'; +import type { CurrencyRateState } from '../CurrencyRateController.js'; +import type { MultichainAssetsControllerState } from '../MultichainAssetsController/index.js'; +import type { MultichainAssetsRatesControllerState } from '../MultichainAssetsRatesController/index.js'; +import type { MultichainBalancesControllerState } from '../MultichainBalancesController/index.js'; +import type { TokenBalancesControllerState } from '../TokenBalancesController.js'; +import type { TokenRatesControllerState } from '../TokenRatesController.js'; +import type { TokensControllerState } from '../TokensController.js'; +import { MOCK_TRON_TOKENS } from './__fixtures__/arrange-tron-state.js'; +import { selectAssetsBySelectedAccountGroup } from './token-selectors.js'; const mockTokensControllerState: TokensControllerState = { allTokens: { diff --git a/packages/assets-controllers/src/selectors/token-selectors.ts b/packages/assets-controllers/src/selectors/token-selectors.ts index e1231a36a6f..d45df14d535 100644 --- a/packages/assets-controllers/src/selectors/token-selectors.ts +++ b/packages/assets-controllers/src/selectors/token-selectors.ts @@ -8,7 +8,6 @@ import type { NetworkState } from '@metamask/network-controller'; import { hexToBigInt, parseCaipAssetType } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; import { createSelector, weakMapMemoize } from 'reselect'; -import { TokenRwaData } from 'src/token-service'; import { shouldIncludeNativeToken } from '../constants.js'; import type { CurrencyRateState } from '../CurrencyRateController.js'; @@ -16,6 +15,7 @@ import type { MultichainAssetsControllerState } from '../MultichainAssetsControl import type { MultichainAssetsRatesControllerState } from '../MultichainAssetsRatesController/index.js'; import type { MultichainBalancesControllerState } from '../MultichainBalancesController/index.js'; import { getNativeTokenAddress } from '../token-prices-service/codefi-v2.js'; +import type { TokenRwaData } from '../token-service.js'; import type { TokenBalancesControllerState } from '../TokenBalancesController.js'; import type { Token, @@ -461,24 +461,29 @@ const selectAllMultichainAssets = createAssetListSelector( }, ); -export const selectAllAssets = createAssetListSelector( - [ - selectAllEvmAssets, - selectAllMultichainAssets, - selectAllEvmAccountNativeBalances, - ], - (evmAssets, multichainAssets, evmAccountNativeBalances) => { - const groupAssets: AssetsByAccountGroup = {}; +export const selectAllAssets: (state: AssetListState) => AssetsByAccountGroup = + createAssetListSelector( + [ + selectAllEvmAssets, + selectAllMultichainAssets, + selectAllEvmAccountNativeBalances, + ], + ( + evmAssets, + multichainAssets, + evmAccountNativeBalances, + ): AssetsByAccountGroup => { + const groupAssets: AssetsByAccountGroup = {}; - mergeAssets(groupAssets, evmAssets); + mergeAssets(groupAssets, evmAssets); - mergeAssets(groupAssets, multichainAssets); + mergeAssets(groupAssets, multichainAssets); - mergeAssets(groupAssets, evmAccountNativeBalances); + mergeAssets(groupAssets, evmAccountNativeBalances); - return groupAssets; - }, -); + return groupAssets; + }, + ) as unknown as (state: AssetListState) => AssetsByAccountGroup; export type SelectAccountGroupAssetOpts = { filterTronStakedTokens: boolean; @@ -514,7 +519,10 @@ const filterTronStakedTokens = (assetsByAccountGroup: AccountGroupAssets) => { return newAssetsByAccountGroup; }; -export const selectAssetsBySelectedAccountGroup = createAssetListSelector( +export const selectAssetsBySelectedAccountGroup: ( + state: AssetListState, + opts?: SelectAccountGroupAssetOpts, +) => AccountGroupAssets = createAssetListSelector( [ selectAllAssets, (state) => state.selectedAccountGroup, @@ -523,7 +531,7 @@ export const selectAssetsBySelectedAccountGroup = createAssetListSelector( opts: SelectAccountGroupAssetOpts = defaultSelectAccountGroupAssetOpts, ) => opts, ], - (groupAssets, selectedAccountGroup, opts) => { + (groupAssets, selectedAccountGroup, opts): AccountGroupAssets => { if (!selectedAccountGroup) { return {}; } @@ -540,7 +548,10 @@ export const selectAssetsBySelectedAccountGroup = createAssetListSelector( memoize: weakMapMemoize, argsMemoize: weakMapMemoize, }, -); +) as unknown as ( + state: AssetListState, + opts?: SelectAccountGroupAssetOpts, +) => AccountGroupAssets; // TODO: Once native assets are part of the evm tokens state, this function can be simplified as chains will always be unique /** diff --git a/packages/assets-controllers/src/token-prices-service/abstract-token-prices-service.ts b/packages/assets-controllers/src/token-prices-service/abstract-token-prices-service.ts index 8c6ad9c9c85..23376d97955 100644 --- a/packages/assets-controllers/src/token-prices-service/abstract-token-prices-service.ts +++ b/packages/assets-controllers/src/token-prices-service/abstract-token-prices-service.ts @@ -1,7 +1,7 @@ import type { ServicePolicy } from '@metamask/controller-utils'; import type { CaipAssetType, CaipChainId, Hex } from '@metamask/utils'; -import type { MarketDataDetails } from '../TokenRatesController'; +import type { MarketDataDetails } from '../TokenRatesController.js'; /** * A map of CAIP-2 chain IDs to their native asset identifiers (CAIP-19 format). diff --git a/packages/assets-controllers/src/token-prices-service/codefi-v2.test.ts b/packages/assets-controllers/src/token-prices-service/codefi-v2.test.ts index 47aec3556fb..413fa20d30f 100644 --- a/packages/assets-controllers/src/token-prices-service/codefi-v2.test.ts +++ b/packages/assets-controllers/src/token-prices-service/codefi-v2.test.ts @@ -1,6 +1,7 @@ +import { jest } from '@jest/globals'; import { KnownCaipNamespace } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import nock, { isDone } from 'nock'; +import nock from 'nock'; import { CodefiTokenPricesServiceV2, @@ -16,7 +17,7 @@ import { getSupportedNetworks, resetSupportedNetworksCache, getAssetId, -} from './codefi-v2'; +} from './codefi-v2.js'; // We're not customizing the default max delay // The default can be found here: https://github.com/connor4312/cockatiel?tab=readme-ov-file#exponentialbackoff diff --git a/packages/assets-controllers/src/token-prices-service/codefi-v2.ts b/packages/assets-controllers/src/token-prices-service/codefi-v2.ts index 95e42a9539b..f032aecb8db 100644 --- a/packages/assets-controllers/src/token-prices-service/codefi-v2.ts +++ b/packages/assets-controllers/src/token-prices-service/codefi-v2.ts @@ -15,7 +15,7 @@ import { toCaipChainId, } from '@metamask/utils'; -import type { MarketDataDetails } from '../TokenRatesController'; +import type { MarketDataDetails } from '../TokenRatesController.js'; import type { AbstractTokenPricesService, EvmAssetAddressWithChain, @@ -23,7 +23,7 @@ import type { EvmAssetWithMarketData, ExchangeRatesByCurrency, NativeAssetIdentifiersMap, -} from './abstract-token-prices-service'; +} from './abstract-token-prices-service.js'; /** * The list of currencies that can be supplied as the `vsCurrency` parameter to @@ -913,7 +913,9 @@ export class CodefiTokenPricesServiceV2 implements AbstractTokenPricesService< throw new Error('Failed to fetch'); } - const filteredExchangeRates = cryptocurrencies.reduce((acc, key) => { + const filteredExchangeRates = cryptocurrencies.reduce< + ExchangeRatesByCurrency + >((acc, key) => { if (exchangeRates[key.toLowerCase() as SupportedCurrency]) { acc[key.toLowerCase() as SupportedCurrency] = exchangeRates[key.toLowerCase() as SupportedCurrency]; @@ -927,7 +929,9 @@ export class CodefiTokenPricesServiceV2 implements AbstractTokenPricesService< ); } - const filteredUsdExchangeRates = cryptocurrencies.reduce((acc, key) => { + const filteredUsdExchangeRates = cryptocurrencies.reduce< + ExchangeRatesByCurrency + >((acc, key) => { if (exchangeRatesUsd[key.toLowerCase() as SupportedCurrency]) { acc[key.toLowerCase() as SupportedCurrency] = exchangeRatesUsd[key.toLowerCase() as SupportedCurrency]; @@ -948,7 +952,9 @@ export class CodefiTokenPricesServiceV2 implements AbstractTokenPricesService< return filteredExchangeRates; } - const merged = Object.keys(filteredExchangeRates).reduce((acc, key) => { + const merged = Object.keys(filteredExchangeRates).reduce< + ExchangeRatesByCurrency + >((acc, key) => { acc[key as SupportedCurrency] = { ...filteredExchangeRates[key as SupportedCurrency], ...(filteredUsdExchangeRates[key as SupportedCurrency]?.value diff --git a/packages/assets-controllers/src/token-prices-service/index.test.ts b/packages/assets-controllers/src/token-prices-service/index.test.ts index 687fe8b6736..250d755a260 100644 --- a/packages/assets-controllers/src/token-prices-service/index.test.ts +++ b/packages/assets-controllers/src/token-prices-service/index.test.ts @@ -1,4 +1,4 @@ -import * as allExports from '.'; +import * as allExports from './index.js'; describe('token-prices-service', () => { it('has expected exports', () => { diff --git a/packages/assets-controllers/src/token-prices-service/index.ts b/packages/assets-controllers/src/token-prices-service/index.ts index da2ee6adffe..8361bb68afa 100644 --- a/packages/assets-controllers/src/token-prices-service/index.ts +++ b/packages/assets-controllers/src/token-prices-service/index.ts @@ -1,7 +1,7 @@ export type { AbstractTokenPricesService, NativeAssetIdentifiersMap, -} from './abstract-token-prices-service'; +} from './abstract-token-prices-service.js'; export { CodefiTokenPricesServiceV2, SUPPORTED_CHAIN_IDS, @@ -11,4 +11,4 @@ export { resetSupportedNetworksCache, SPOT_PRICES_SUPPORT_INFO, getAssetId, -} from './codefi-v2'; +} from './codefi-v2.js'; diff --git a/packages/assets-controllers/src/token-service.test.ts b/packages/assets-controllers/src/token-service.test.ts index 5661e83422f..153e7376890 100644 --- a/packages/assets-controllers/src/token-service.test.ts +++ b/packages/assets-controllers/src/token-service.test.ts @@ -3,7 +3,7 @@ import type { CaipChainId } from '@metamask/utils'; import type { CaipAssetType } from '@metamask/utils'; import nock from 'nock'; -import type { SortTrendingBy } from './token-service'; +import type { SortTrendingBy } from './token-service.js'; import { fetchRwas, fetchTokenAssets, @@ -13,7 +13,7 @@ import { searchTokens, TOKEN_END_POINT_API, TOKEN_METADATA_NO_SUPPORT_ERROR, -} from './token-service'; +} from './token-service.js'; const ONE_MILLISECOND = 1; const ONE_SECOND_IN_MILLISECONDS = 1_000; diff --git a/packages/assets-controllers/src/token-service.ts b/packages/assets-controllers/src/token-service.ts index 2218fda8690..ed4a08fb25c 100644 --- a/packages/assets-controllers/src/token-service.ts +++ b/packages/assets-controllers/src/token-service.ts @@ -6,7 +6,7 @@ import { } from '@metamask/controller-utils'; import type { CaipAssetType, CaipChainId, Hex } from '@metamask/utils'; -import { isTokenListSupportedForNetwork } from './assetsUtil'; +import { isTokenListSupportedForNetwork } from './assetsUtil.js'; export const TOKEN_END_POINT_API = 'https://token.api.cx.metamask.io'; export const TOKEN_METADATA_NO_SUPPORT_ERROR = diff --git a/packages/assets-controllers/src/utils/create-batch-handler.test.ts b/packages/assets-controllers/src/utils/create-batch-handler.test.ts index d3ac6601bd2..f73a746c400 100644 --- a/packages/assets-controllers/src/utils/create-batch-handler.test.ts +++ b/packages/assets-controllers/src/utils/create-batch-handler.test.ts @@ -1,4 +1,6 @@ -import { createBatchedHandler } from './create-batch-handler'; +import { jest } from '@jest/globals'; + +import { createBatchedHandler } from './create-batch-handler.js'; const TEST_BATCH_MS = 50; diff --git a/packages/assets-controllers/src/utils/create-batch-handler.ts b/packages/assets-controllers/src/utils/create-batch-handler.ts index 4d202b9575d..f0bdc872ea2 100644 --- a/packages/assets-controllers/src/utils/create-batch-handler.ts +++ b/packages/assets-controllers/src/utils/create-batch-handler.ts @@ -1,4 +1,4 @@ -import { debounce } from 'lodash'; +import { debounce } from 'lodash-es'; type PendingSettler = { resolve: () => void; @@ -54,7 +54,7 @@ export function createBatchedHandler( return new Promise((resolve, reject) => { eventBuffer.push(arg); pendingSettlers.push({ resolve, reject }); - // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Rejections are forwarded to capture() callers via pendingSettlers. + debouncedFlush(); }); }; diff --git a/packages/assets-controllers/src/utils/formatters.test.ts b/packages/assets-controllers/src/utils/formatters.test.ts index e3064ae8596..35badf5b32f 100644 --- a/packages/assets-controllers/src/utils/formatters.test.ts +++ b/packages/assets-controllers/src/utils/formatters.test.ts @@ -1,4 +1,4 @@ -import { createFormatters } from './formatters'; +import { createFormatters } from './formatters.js'; const locale = 'en-US'; diff --git a/packages/assets-controllers/src/utils/timeout-with-retry.test.ts b/packages/assets-controllers/src/utils/timeout-with-retry.test.ts index f39d212a164..2deae11cd42 100644 --- a/packages/assets-controllers/src/utils/timeout-with-retry.test.ts +++ b/packages/assets-controllers/src/utils/timeout-with-retry.test.ts @@ -1,5 +1,7 @@ -import { flushPromises } from '../../../../tests/helpers'; -import { timeoutWithRetry } from './timeout-with-retry'; +import { jest } from '@jest/globals'; + +import { flushPromises } from '../../../../tests/helpers.js'; +import { timeoutWithRetry } from './timeout-with-retry.js'; describe('timeoutWithRetry', () => { const timeout = 1000; From 93dac95ea3991d866f5b1ce36e660104ad04b739 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:44 +0200 Subject: [PATCH 058/115] ESLint fix and `jest` global import for bridge-controller --- packages/bridge-controller/package.json | 2 +- .../bridge-controller-method-action-types.ts | 2 +- .../src/bridge-controller.sse.batch.test.ts | 27 ++++--- .../src/bridge-controller.sse.test.ts | 73 +++++++---------- .../src/bridge-controller.test.ts | 62 +++++++-------- .../src/bridge-controller.ts | 48 +++++------ .../bridge-controller/src/constants/bridge.ts | 4 +- .../bridge-controller/src/constants/swaps.ts | 2 +- .../bridge-controller/src/constants/tokens.ts | 4 +- packages/bridge-controller/src/index.ts | 79 ++++++++++--------- .../bridge-controller/src/selectors.test.ts | 30 ++++--- packages/bridge-controller/src/selectors.ts | 20 ++--- packages/bridge-controller/src/types.ts | 30 +++---- .../src/utils/assets.test.ts | 7 +- .../bridge-controller/src/utils/assets.ts | 6 +- .../src/utils/balance.test.ts | 7 +- .../bridge-controller/src/utils/balance.ts | 2 +- .../src/utils/bridge.test.ts | 11 +-- .../bridge-controller/src/utils/bridge.ts | 20 ++--- .../src/utils/caip-formatters.test.ts | 6 +- .../src/utils/caip-formatters.ts | 6 +- .../src/utils/feature-flags.test.ts | 8 +- .../src/utils/feature-flags.ts | 11 ++- .../bridge-controller/src/utils/fetch.test.ts | 16 ++-- packages/bridge-controller/src/utils/fetch.ts | 26 +++--- .../src/utils/metrics/properties.test.ts | 13 +-- .../src/utils/metrics/properties.ts | 20 ++--- .../src/utils/metrics/types.ts | 6 +- .../bridge-controller/src/utils/quote-fees.ts | 20 ++--- .../bridge-controller/src/utils/quote.test.ts | 12 +-- packages/bridge-controller/src/utils/quote.ts | 12 +-- .../bridge-controller/src/utils/slippage.ts | 4 +- .../bridge-controller/src/utils/snaps.test.ts | 3 +- packages/bridge-controller/src/utils/snaps.ts | 4 +- .../bridge-controller/src/utils/swaps.test.ts | 13 +-- packages/bridge-controller/src/utils/swaps.ts | 10 +-- .../src/utils/trade-utils.test.ts | 6 +- .../src/utils/trade-utils.ts | 2 +- .../src/validators/batch-sell.ts | 8 +- .../src/validators/intent.ts | 4 +- .../src/validators/quote-response-v1.ts | 10 +-- .../bridge-controller/src/validators/quote.ts | 8 +- .../bridge-controller/src/validators/step.ts | 2 +- .../src/validators/validators.test.ts | 14 ++-- .../tests/mock-quotes-erc20-erc20.ts | 8 +- .../tests/mock-quotes-erc20-native.ts | 10 +-- .../tests/mock-quotes-native-erc20-eth.ts | 10 +-- .../tests/mock-quotes-native-erc20.ts | 10 +-- .../tests/mock-quotes-sol-erc20.ts | 10 +-- packages/bridge-controller/tests/mock-sse.ts | 8 +- 50 files changed, 368 insertions(+), 368 deletions(-) diff --git a/packages/bridge-controller/package.json b/packages/bridge-controller/package.json index 9e4a24f3c3f..9a682ac994e 100644 --- a/packages/bridge-controller/package.json +++ b/packages/bridge-controller/package.json @@ -81,7 +81,7 @@ "deepmerge": "^4.2.2", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "nock": "^13.3.1", "ts-jest": "^29.2.5", "tsx": "^4.20.5", diff --git a/packages/bridge-controller/src/bridge-controller-method-action-types.ts b/packages/bridge-controller/src/bridge-controller-method-action-types.ts index 0b592c95cd6..f10b7d816fe 100644 --- a/packages/bridge-controller/src/bridge-controller-method-action-types.ts +++ b/packages/bridge-controller/src/bridge-controller-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { BridgeController } from './bridge-controller'; +import type { BridgeController } from './bridge-controller.js'; export type BridgeControllerUpdateBridgeQuoteRequestParamsAction = { type: `BridgeController:updateBridgeQuoteRequestParams`; diff --git a/packages/bridge-controller/src/bridge-controller.sse.batch.test.ts b/packages/bridge-controller/src/bridge-controller.sse.batch.test.ts index 23baf3f531c..5cf7457e204 100644 --- a/packages/bridge-controller/src/bridge-controller.sse.batch.test.ts +++ b/packages/bridge-controller/src/bridge-controller.sse.batch.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { SolScope } from '@metamask/keyring-api'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -6,26 +7,26 @@ import type { MockAnyNamespace, } from '@metamask/messenger'; -import { flushPromises } from '../../../tests/helpers'; -import { mockBridgeQuotesErc20Erc20V1 } from '../tests/mock-quotes-erc20-erc20'; -import { mockBridgeQuotesNativeErc20V1 } from '../tests/mock-quotes-native-erc20'; +import { flushPromises } from '../../../tests/helpers.js'; +import { mockBridgeQuotesErc20Erc20V1 } from '../tests/mock-quotes-erc20-erc20.js'; +import { mockBridgeQuotesNativeErc20V1 } from '../tests/mock-quotes-native-erc20.js'; import { advanceToNthTimerThenFlush, mockSseBatchSellEventSource, -} from '../tests/mock-sse'; -import { BridgeController } from './bridge-controller'; +} from '../tests/mock-sse.js'; +import { BridgeController } from './bridge-controller.js'; import { BridgeClientId, BRIDGE_PROD_API_BASE_URL, DEFAULT_BRIDGE_CONTROLLER_STATE, -} from './constants/bridge'; -import * as selectors from './selectors'; -import { ChainId, RequestStatus } from './types'; -import type { BridgeControllerMessenger } from './types'; -import * as balanceUtils from './utils/balance'; -import * as featureFlagUtils from './utils/feature-flags'; -import * as fetchUtils from './utils/fetch'; -import { FeatureId } from './validators/feature-flags'; +} from './constants/bridge.js'; +import * as selectors from './selectors.js'; +import { ChainId, RequestStatus } from './types.js'; +import type { BridgeControllerMessenger } from './types.js'; +import * as balanceUtils from './utils/balance.js'; +import * as featureFlagUtils from './utils/feature-flags.js'; +import * as fetchUtils from './utils/fetch.js'; +import { FeatureId } from './validators/feature-flags.js'; type RootMessenger = Messenger< MockAnyNamespace, diff --git a/packages/bridge-controller/src/bridge-controller.sse.test.ts b/packages/bridge-controller/src/bridge-controller.sse.test.ts index e4a27087208..ef64bb15729 100644 --- a/packages/bridge-controller/src/bridge-controller.sse.test.ts +++ b/packages/bridge-controller/src/bridge-controller.sse.test.ts @@ -1,5 +1,6 @@ import { BigNumber } from '@ethersproject/bignumber'; import * as ethersContractUtils from '@ethersproject/contracts'; +import { jest } from '@jest/globals'; import { SolScope } from '@metamask/keyring-api'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -9,10 +10,10 @@ import type { } from '@metamask/messenger'; import { abiERC20 } from '@metamask/metamask-eth-abis'; -import { flushPromises } from '../../../tests/helpers'; -import { mockBridgeQuotesErc20Erc20V1 } from '../tests/mock-quotes-erc20-erc20'; -import { mockBridgeQuotesNativeErc20V1 } from '../tests/mock-quotes-native-erc20'; -import { mockBridgeQuotesNativeErc20EthV1 } from '../tests/mock-quotes-native-erc20-eth'; +import { flushPromises } from '../../../tests/helpers.js'; +import { mockBridgeQuotesErc20Erc20V1 } from '../tests/mock-quotes-erc20-erc20.js'; +import { mockBridgeQuotesNativeErc20EthV1 } from '../tests/mock-quotes-native-erc20-eth.js'; +import { mockBridgeQuotesNativeErc20V1 } from '../tests/mock-quotes-native-erc20.js'; import { advanceToNthTimer, advanceToNthTimerThenFlush, @@ -21,24 +22,24 @@ import { mockSseEventSourceWithMultipleDelays, mockSseEventSourceWithWarnings, mockSseServerError, -} from '../tests/mock-sse'; -import { BridgeController } from './bridge-controller'; +} from '../tests/mock-sse.js'; +import { BridgeController } from './bridge-controller.js'; import { BridgeClientId, BRIDGE_PROD_API_BASE_URL, DEFAULT_BRIDGE_CONTROLLER_STATE, ETH_USDT_ADDRESS, -} from './constants/bridge'; -import { ChainId, RequestStatus } from './types'; -import type { BridgeControllerMessenger } from './types'; -import * as balanceUtils from './utils/balance'; -import { formatChainIdToDec } from './utils/caip-formatters'; -import * as featureFlagUtils from './utils/feature-flags'; -import * as fetchUtils from './utils/fetch'; -import { FeatureId } from './validators/feature-flags'; -import { QuoteStreamCompleteReason } from './validators/quote-stream-complete'; -import { TokenFeatureType } from './validators/token-feature'; -import type { TxData } from './validators/trade'; +} from './constants/bridge.js'; +import { ChainId, RequestStatus } from './types.js'; +import type { BridgeControllerMessenger } from './types.js'; +import * as balanceUtils from './utils/balance.js'; +import { formatChainIdToDec } from './utils/caip-formatters.js'; +import * as featureFlagUtils from './utils/feature-flags.js'; +import * as fetchUtils from './utils/fetch.js'; +import { FeatureId } from './validators/feature-flags.js'; +import { QuoteStreamCompleteReason } from './validators/quote-stream-complete.js'; +import { TokenFeatureType } from './validators/token-feature.js'; +import type { TxData } from './validators/trade.js'; type RootMessenger = Messenger< MockAnyNamespace, @@ -747,8 +748,8 @@ describe('BridgeController SSE', function () { quotesLastFetched: expect.any(Number), }); const t2 = bridgeController.state.quotesLastFetched; - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - expect(t2).toBeGreaterThan(t1!); + + expect(t2).toBeGreaterThan(t1); // After 2nd server event await advanceToNthTimerThenFlush(); @@ -852,10 +853,7 @@ describe('BridgeController SSE', function () { quotesLastFetched: Date.now(), assetExchangeRates, }); - expect( - bridgeController.state.quotesLastFetched, - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - ).toBeGreaterThan(t2!); + expect(bridgeController.state.quotesLastFetched).toBeGreaterThan(t2); expect(consoleLogSpy.mock.calls).toMatchInlineSnapshot(` [ [ @@ -942,8 +940,8 @@ describe('BridgeController SSE', function () { expect(bridgeController.state.quotesRefreshCount).toBe(3); expect(bridgeController.state.quotes).toStrictEqual([]); expect(consoleLogSpy).toHaveBeenCalledTimes(1); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - expect(t5).toBeGreaterThan(t2!); + + expect(t5).toBeGreaterThan(t2); const expectedState = { ...DEFAULT_BRIDGE_CONTROLLER_STATE, quotesLoadingStatus: RequestStatus.LOADING, @@ -1020,10 +1018,7 @@ describe('BridgeController SSE', function () { ...expectedStateAfterFirstQuote, }); const t4 = bridgeController.state.quotesLastFetched; - expect(t4).toBe( - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - t5!, - ); + expect(t4).toBe(t5); // All other quotes are received await advanceToNthTimerThenFlush(3); expect(bridgeController.state).toStrictEqual({ @@ -1041,10 +1036,7 @@ describe('BridgeController SSE', function () { })), assetExchangeRates, }); - expect( - bridgeController.state.quotesLastFetched, - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - ).toBe(t4!); + expect(bridgeController.state.quotesLastFetched).toBe(t4); expect(consoleLogSpy).toHaveBeenCalledTimes(1); expect(fetchBridgeQuotesSpy).toHaveBeenCalledTimes(4); @@ -1166,10 +1158,7 @@ describe('BridgeController SSE', function () { await flushPromises(); const t4 = bridgeController.state.quotesLastFetched; - expect(t4).toBe( - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - t5!, - ); + expect(t4).toBe(t5); expect(bridgeController.state.quotesRefreshCount).toBe(0); expect(bridgeController.state.quotesLoadingStatus).toBe( RequestStatus.LOADING, @@ -1231,10 +1220,7 @@ describe('BridgeController SSE', function () { await advanceToNthTimerThenFlush(); expect(bridgeController.state).toStrictEqual(expectedState); const t7 = bridgeController.state.quotesLastFetched; - expect(t7).toBe( - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - t6!, - ); + expect(t7).toBe(t6); expect(consoleWarnSpy.mock.calls[0]).toMatchInlineSnapshot(` [ "Quote validation failed", @@ -1264,10 +1250,7 @@ describe('BridgeController SSE', function () { quotesRefreshCount: 2, quotesLoadingStatus: RequestStatus.FETCHED, }); - expect(bridgeController.state.quotesLastFetched).toBe( - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - t7!, - ); + expect(bridgeController.state.quotesLastFetched).toBe(t7); expect(consoleWarnSpy.mock.calls).toHaveLength(3); expect(consoleWarnSpy.mock.calls[1]).toMatchInlineSnapshot(` [ diff --git a/packages/bridge-controller/src/bridge-controller.test.ts b/packages/bridge-controller/src/bridge-controller.test.ts index dbdc5b1e964..f01a23fcbb3 100644 --- a/packages/bridge-controller/src/bridge-controller.test.ts +++ b/packages/bridge-controller/src/bridge-controller.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable jest/no-restricted-matchers */ import { deriveStateFromMetadata } from '@metamask/base-controller'; import { @@ -16,32 +17,35 @@ import type { import type { CaipAssetType } from '@metamask/utils'; import nock from 'nock'; -import { flushPromises } from '../../../tests/helpers'; -import { handleFetch } from '../../controller-utils/src'; -import { mockBridgeQuotesErc20NativeV1 } from '../tests/mock-quotes-erc20-native'; -import { mockBridgeQuotesNativeErc20V1 } from '../tests/mock-quotes-native-erc20'; -import { mockBridgeQuotesNativeErc20EthV1 } from '../tests/mock-quotes-native-erc20-eth'; -import { mockBridgeQuotesSolErc20V1 } from '../tests/mock-quotes-sol-erc20'; -import { advanceToNthTimerThenFlush } from '../tests/mock-sse'; -import { BridgeController } from './bridge-controller'; +import { flushPromises } from '../../../tests/helpers.js'; +import { handleFetch } from '../../controller-utils/src/index.js'; +import { mockBridgeQuotesErc20NativeV1 } from '../tests/mock-quotes-erc20-native.js'; +import { mockBridgeQuotesNativeErc20EthV1 } from '../tests/mock-quotes-native-erc20-eth.js'; +import { mockBridgeQuotesNativeErc20V1 } from '../tests/mock-quotes-native-erc20.js'; +import { mockBridgeQuotesSolErc20V1 } from '../tests/mock-quotes-sol-erc20.js'; +import { advanceToNthTimerThenFlush } from '../tests/mock-sse.js'; +import { BridgeController } from './bridge-controller.js'; import { BridgeClientId, BRIDGE_PROD_API_BASE_URL, DEFAULT_BRIDGE_CONTROLLER_STATE, ETH_USDT_ADDRESS, -} from './constants/bridge'; -import { SWAPS_API_V2_BASE_URL } from './constants/swaps'; -import * as selectors from './selectors'; -import { ChainId, RequestStatus, SortOrder, StatusTypes } from './types'; -import type { BridgeControllerMessenger, GenericQuoteRequest } from './types'; -import * as balanceUtils from './utils/balance'; -import { getNativeAssetForChainId, isSolanaChainId } from './utils/bridge'; +} from './constants/bridge.js'; +import { SWAPS_API_V2_BASE_URL } from './constants/swaps.js'; +import * as selectors from './selectors.js'; +import { ChainId, RequestStatus, SortOrder, StatusTypes } from './types.js'; +import type { + BridgeControllerMessenger, + GenericQuoteRequest, +} from './types.js'; +import * as balanceUtils from './utils/balance.js'; +import { getNativeAssetForChainId, isSolanaChainId } from './utils/bridge.js'; import { formatAddressToAssetId, formatChainIdToCaip, -} from './utils/caip-formatters'; -import * as featureFlagUtils from './utils/feature-flags'; -import * as fetchUtils from './utils/fetch'; +} from './utils/caip-formatters.js'; +import * as featureFlagUtils from './utils/feature-flags.js'; +import * as fetchUtils from './utils/fetch.js'; import { BatchSellMetricsEventName, BatchSellMetricsLocation, @@ -50,9 +54,9 @@ import { MetricsActionType, MetricsSwapType, UnifiedSwapBridgeEventName, -} from './utils/metrics/constants'; -import { FeatureId } from './validators/feature-flags'; -import type { QuoteResponseV1 } from './validators/quote-response-v1'; +} from './utils/metrics/constants.js'; +import { FeatureId } from './validators/feature-flags.js'; +import type { QuoteResponseV1 } from './validators/quote-response-v1.js'; const EMPTY_INIT_STATE = DEFAULT_BRIDGE_CONTROLLER_STATE; @@ -995,8 +999,8 @@ describe('BridgeController', function () { ); expect(fetchBridgeQuotesSpy).toHaveBeenCalledTimes(2); const secondFetchTime = bridgeController.state.quotesLastFetched; - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - expect(secondFetchTime).toBeGreaterThan(firstFetchTime!); + + expect(secondFetchTime).toBeGreaterThan(firstFetchTime); // After 3nd fetch throws an error jest.advanceTimersToNextTimer(); @@ -1019,10 +1023,9 @@ describe('BridgeController', function () { quotesRefreshCount: 3, }), ); - expect( - bridgeController.state.quotesLastFetched, - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - ).toBeGreaterThan(secondFetchTime!); + expect(bridgeController.state.quotesLastFetched).toBeGreaterThan( + secondFetchTime, + ); const thirdFetchTime = bridgeController.state.quotesLastFetched; // Incoming request update aborts current polling @@ -1065,10 +1068,7 @@ describe('BridgeController', function () { ...mockBridgeQuotesNativeErc20EthV1, ...mockBridgeQuotesNativeErc20EthV1, ]); - expect( - quotesLastFetched, - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - ).toBeGreaterThan(thirdFetchTime!); + expect(quotesLastFetched).toBeGreaterThan(thirdFetchTime); expect(hasSufficientBalanceSpy).toHaveBeenCalledTimes(1); expect(getLayer1GasFeeMock).not.toHaveBeenCalled(); diff --git a/packages/bridge-controller/src/bridge-controller.ts b/packages/bridge-controller/src/bridge-controller.ts index 8e81ad76817..48279450c32 100644 --- a/packages/bridge-controller/src/bridge-controller.ts +++ b/packages/bridge-controller/src/bridge-controller.ts @@ -10,22 +10,22 @@ import { StaticIntervalPollingController } from '@metamask/polling-controller'; import type { TransactionController } from '@metamask/transaction-controller'; import type { CaipAssetType, Hex } from '@metamask/utils'; -import type { BridgeClientId } from './constants/bridge'; +import type { BridgeClientId } from './constants/bridge.js'; import { BRIDGE_CONTROLLER_NAME, BRIDGE_PROD_API_BASE_URL, DEFAULT_BRIDGE_CONTROLLER_STATE, METABRIDGE_ETHEREUM_ADDRESS, REFRESH_INTERVAL_MS, -} from './constants/bridge'; -import { CHAIN_IDS } from './constants/chains'; -import { SWAPS_CONTRACT_ADDRESSES } from './constants/swaps'; -import { TraceName } from './constants/traces'; +} from './constants/bridge.js'; +import { CHAIN_IDS } from './constants/chains.js'; +import { SWAPS_CONTRACT_ADDRESSES } from './constants/swaps.js'; +import { TraceName } from './constants/traces.js'; import { ExchangeRateSourcesForLookup, selectIsAssetExchangeRateInState, -} from './selectors'; -import { RequestStatus } from './types'; +} from './selectors.js'; +import { RequestStatus } from './types.js'; import type { L1GasFees, GenericQuoteRequest, @@ -35,42 +35,42 @@ import type { BridgeControllerMessenger, FetchFunction, InputPrimaryDenomination, -} from './types'; -import { getAssetIdsForToken, toExchangeRates } from './utils/assets'; -import { hasSufficientBalance } from './utils/balance'; +} from './types.js'; +import { getAssetIdsForToken, toExchangeRates } from './utils/assets.js'; +import { hasSufficientBalance } from './utils/balance.js'; import { getDefaultBridgeControllerState, isCrossChain, isEthUsdt, isNonEvmChainId, isSolanaChainId, -} from './utils/bridge'; +} from './utils/bridge.js'; import { formatAddressToCaipReference, formatChainIdToCaip, formatChainIdToHex, -} from './utils/caip-formatters'; +} from './utils/caip-formatters.js'; import { getBridgeFeatureFlags, hasMinimumRequiredVersion, -} from './utils/feature-flags'; +} from './utils/feature-flags.js'; import { fetchAssetPrices, fetchBridgeQuotes, fetchBridgeQuoteStream, fetchBatchSellTrades, -} from './utils/fetch'; +} from './utils/fetch.js'; import { AbortReason, BatchSellMetricsEventName, MetaMetricsSwapsEventSource, MetricsActionType, UnifiedSwapBridgeEventName, -} from './utils/metrics/constants'; +} from './utils/metrics/constants.js'; import type { BridgeControllerMetricsEventName, BridgeControllerMetricsLocation, -} from './utils/metrics/constants'; +} from './utils/metrics/constants.js'; import { formatProviderLabel, getAccountHardwareType, @@ -79,22 +79,22 @@ import { isCustomSlippage, toInputChangedPropertyKey, toInputChangedPropertyValue, -} from './utils/metrics/properties'; +} from './utils/metrics/properties.js'; import type { QuoteFetchData, RequestMetadata, RequiredEventContextFromClient, -} from './utils/metrics/types'; -import type { CrossChainSwapsEventProperties } from './utils/metrics/types'; +} from './utils/metrics/types.js'; +import type { CrossChainSwapsEventProperties } from './utils/metrics/types.js'; +import { appendFeesToQuotes } from './utils/quote-fees.js'; import { isValidQuoteRequest, isValidBatchSellQuoteRequest, sortQuotes, -} from './utils/quote'; -import { appendFeesToQuotes } from './utils/quote-fees'; -import { getMinimumBalanceForRentExemptionInLamports } from './utils/snaps'; -import type { FeatureId } from './validators/feature-flags'; -import type { QuoteResponseV1 } from './validators/quote-response-v1'; +} from './utils/quote.js'; +import { getMinimumBalanceForRentExemptionInLamports } from './utils/snaps.js'; +import type { FeatureId } from './validators/feature-flags.js'; +import type { QuoteResponseV1 } from './validators/quote-response-v1.js'; const metadata: StateMetadata = { quoteRequest: { diff --git a/packages/bridge-controller/src/constants/bridge.ts b/packages/bridge-controller/src/constants/bridge.ts index 663253e2d4b..c9f25a3aa5d 100644 --- a/packages/bridge-controller/src/constants/bridge.ts +++ b/packages/bridge-controller/src/constants/bridge.ts @@ -5,8 +5,8 @@ import type { Hex } from '@metamask/utils'; import type { BridgeControllerState, FeatureFlagsPlatformConfig, -} from '../types'; -import { CHAIN_IDS } from './chains'; +} from '../types.js'; +import { CHAIN_IDS } from './chains.js'; export const ALLOWED_BRIDGE_CHAIN_IDS = [ CHAIN_IDS.MAINNET, diff --git a/packages/bridge-controller/src/constants/swaps.ts b/packages/bridge-controller/src/constants/swaps.ts index 1c968c2fef5..652634dc17f 100644 --- a/packages/bridge-controller/src/constants/swaps.ts +++ b/packages/bridge-controller/src/constants/swaps.ts @@ -1,6 +1,6 @@ import type { Hex } from '@metamask/utils'; -import { CHAIN_IDS } from './chains'; +import { CHAIN_IDS } from './chains.js'; export const SWAPS_API_V2_BASE_URL = 'https://swap.api.cx.metamask.io'; diff --git a/packages/bridge-controller/src/constants/tokens.ts b/packages/bridge-controller/src/constants/tokens.ts index f1b6615e2a5..ae26ea1c8b4 100644 --- a/packages/bridge-controller/src/constants/tokens.ts +++ b/packages/bridge-controller/src/constants/tokens.ts @@ -1,7 +1,7 @@ import { BtcScope, SolScope, TrxScope, XlmScope } from '@metamask/keyring-api'; -import type { AllowedBridgeChainIds } from './bridge'; -import { CHAIN_IDS } from './chains'; +import type { AllowedBridgeChainIds } from './bridge.js'; +import { CHAIN_IDS } from './chains.js'; export type SwapsTokenObject = { /** diff --git a/packages/bridge-controller/src/index.ts b/packages/bridge-controller/src/index.ts index 5bd78eb6e51..c2878523958 100644 --- a/packages/bridge-controller/src/index.ts +++ b/packages/bridge-controller/src/index.ts @@ -1,4 +1,4 @@ -export { BridgeController } from './bridge-controller'; +export { BridgeController } from './bridge-controller.js'; export { BatchSellMetricsEventName, @@ -9,10 +9,10 @@ export { InputAmountPreset, MetaMetricsSwapsEventSource, PollingStatus, -} from './utils/metrics/constants'; +} from './utils/metrics/constants.js'; -export type { BridgeControllerMetricsEventName } from './utils/metrics/constants'; -export type { BridgeControllerMetricsLocation } from './utils/metrics/constants'; +export type { BridgeControllerMetricsEventName } from './utils/metrics/constants.js'; +export type { BridgeControllerMetricsLocation } from './utils/metrics/constants.js'; export type { AccountHardwareType, @@ -25,7 +25,7 @@ export type { QuoteFetchData, QuoteWarning, InputPrimaryDenominationData, -} from './utils/metrics/types'; +} from './utils/metrics/types.js'; export { getAccountHardwareType, @@ -35,7 +35,7 @@ export { isHardwareWallet, isCustomSlippage, getQuotesReceivedProperties, -} from './utils/metrics/properties'; +} from './utils/metrics/properties.js'; export type { ChainConfiguration, @@ -67,7 +67,7 @@ export type { QuoteStreamCompleteData, BridgeControllerGetStateAction, BridgeControllerStateChangeEvent, -} from './types'; +} from './types.js'; export { AssetType, @@ -75,7 +75,7 @@ export { ChainId, RequestStatus, StatusTypes, -} from './types'; +} from './types.js'; export type { BridgeControllerUpdateBridgeQuoteRequestParamsAction, @@ -88,9 +88,9 @@ export type { BridgeControllerSetChainIntervalLengthAction, BridgeControllerTrackUnifiedSwapBridgeEventAction, BridgeControllerUpdateBatchSellTradesAction, -} from './bridge-controller-method-action-types'; +} from './bridge-controller-method-action-types.js'; -export { AbortReason } from './utils/metrics/constants'; +export { AbortReason } from './utils/metrics/constants.js'; export type { TxData, @@ -98,25 +98,25 @@ export type { TronTradeData, StellarTradeData, Trade, -} from './validators/trade'; +} from './validators/trade.js'; export { isBitcoinTrade, isTronTrade, isEvmTxData, isStellarTrade, -} from './validators/trade'; -export type { QuoteResponseV1 as QuoteResponse } from './validators/quote-response-v1'; -export type { Quote } from './validators/quote'; -export { FeeType, DiscountType } from './validators/quote'; -export { ActionTypes } from './validators/step'; +} from './validators/trade.js'; +export type { QuoteResponseV1 as QuoteResponse } from './validators/quote-response-v1.js'; +export type { Quote } from './validators/quote.js'; +export { FeeType, DiscountType } from './validators/quote.js'; +export { ActionTypes } from './validators/step.js'; export { validateQuoteStreamComplete, QuoteStreamCompleteReason, -} from './validators/quote-stream-complete'; -export { BatchSellTransactionType } from './validators/batch-sell'; -export { TokenFeatureType } from './validators/token-feature'; -export { BridgeAssetSchema } from './validators/bridge-asset'; -export { FeatureId } from './validators/feature-flags'; +} from './validators/quote-stream-complete.js'; +export { BatchSellTransactionType } from './validators/batch-sell.js'; +export { TokenFeatureType } from './validators/token-feature.js'; +export { BridgeAssetSchema } from './validators/bridge-asset.js'; +export { FeatureId } from './validators/feature-flags.js'; export { ALLOWED_BRIDGE_CHAIN_IDS, @@ -132,9 +132,9 @@ export { METABRIDGE_CHAIN_TO_ADDRESS_MAP, BRIDGE_DEV_API_BASE_URL, BRIDGE_PROD_API_BASE_URL, -} from './constants/bridge'; +} from './constants/bridge.js'; -export type { AllowedBridgeChainIds } from './constants/bridge'; +export type { AllowedBridgeChainIds } from './constants/bridge.js'; export { /** @@ -145,16 +145,19 @@ export { * @deprecated This map should not be used. Use getNativeAssetForChainId" } instead. */ SWAPS_CHAINID_DEFAULT_TOKEN_MAP, -} from './constants/tokens'; +} from './constants/tokens.js'; export { SWAPS_API_V2_BASE_URL, SWAPS_CONTRACT_ADDRESSES, SWAPS_WRAPPED_TOKENS_ADDRESSES, ALLOWED_CONTRACT_ADDRESSES, -} from './constants/swaps'; +} from './constants/swaps.js'; -export { MetricsActionType, MetricsSwapType } from './utils/metrics/constants'; +export { + MetricsActionType, + MetricsSwapType, +} from './utils/metrics/constants.js'; export { isEthUsdt, @@ -167,33 +170,33 @@ export { getNativeAssetForChainId, getDefaultBridgeControllerState, isCrossChain, -} from './utils/bridge'; +} from './utils/bridge.js'; export { isValidQuoteRequest, isValidBatchSellQuoteRequest, formatEtaInMinutes, calcSlippagePercentage, -} from './utils/quote'; +} from './utils/quote.js'; -export { calcLatestSrcBalance } from './utils/balance'; +export { calcLatestSrcBalance } from './utils/balance.js'; export { fetchBridgeTokens, getClientHeaders, fetchBridgeQuoteStream, -} from './utils/fetch'; +} from './utils/fetch.js'; -export { appendFeesToQuotes } from './utils/quote-fees'; +export { appendFeesToQuotes } from './utils/quote-fees.js'; export { formatChainIdToCaip, formatChainIdToHex, formatAddressToCaipReference, formatAddressToAssetId, -} from './utils/caip-formatters'; +} from './utils/caip-formatters.js'; -export { extractTradeData } from './utils/trade-utils'; +export { extractTradeData } from './utils/trade-utils.js'; export { selectBridgeQuotes, @@ -206,17 +209,17 @@ export { selectBridgeFeatureFlags, selectMinimumBalanceForRentExemptionInSOL, selectTokenWarnings, -} from './selectors'; +} from './selectors.js'; -export { DEFAULT_FEATURE_FLAG_CONFIG } from './constants/bridge'; +export { DEFAULT_FEATURE_FLAG_CONFIG } from './constants/bridge.js'; -export { getBridgeFeatureFlags } from './utils/feature-flags'; +export { getBridgeFeatureFlags } from './utils/feature-flags.js'; -export { BRIDGE_DEFAULT_SLIPPAGE } from './utils/slippage'; +export { BRIDGE_DEFAULT_SLIPPAGE } from './utils/slippage.js'; export { isValidSwapsContractAddress, getSwapsContractAddress, fetchTokens, type SwapsToken, -} from './utils/swaps'; +} from './utils/swaps.js'; diff --git a/packages/bridge-controller/src/selectors.test.ts b/packages/bridge-controller/src/selectors.test.ts index 03f12996ebe..e3037fdcd06 100644 --- a/packages/bridge-controller/src/selectors.test.ts +++ b/packages/bridge-controller/src/selectors.test.ts @@ -4,12 +4,12 @@ import { toHex } from '@metamask/controller-utils'; import { SolScope } from '@metamask/keyring-api'; import { parseCaipAssetType } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { merge } from 'lodash'; +import { merge } from 'lodash-es'; -import { mockBridgeQuotesErc20Erc20V1 } from '../tests/mock-quotes-erc20-erc20'; -import { mockBridgeQuotesNativeErc20V1 } from '../tests/mock-quotes-native-erc20'; -import { DEFAULT_CHAIN_RANKING, ETH_USDT_ADDRESS } from './constants/bridge'; -import type { BridgeAppState } from './selectors'; +import { mockBridgeQuotesErc20Erc20V1 } from '../tests/mock-quotes-erc20-erc20.js'; +import { mockBridgeQuotesNativeErc20V1 } from '../tests/mock-quotes-native-erc20.js'; +import { DEFAULT_CHAIN_RANKING, ETH_USDT_ADDRESS } from './constants/bridge.js'; +import type { BridgeAppState } from './selectors.js'; import { selectExchangeRateByAssetId, selectIsAssetExchangeRateInState, @@ -21,25 +21,25 @@ import { selectTokenWarnings, selectBatchSellQuotes, selectBatchSellTrades, -} from './selectors'; +} from './selectors.js'; import { SortOrder, RequestStatus, ChainId, BridgeAsset, NonEvmFees, -} from './types'; -import { getNativeAssetForChainId, isNativeAddress } from './utils/bridge'; +} from './types.js'; +import { getNativeAssetForChainId, isNativeAddress } from './utils/bridge.js'; import { formatAddressToAssetId, formatAddressToCaipReference, formatChainIdToCaip, formatChainIdToDec, formatChainIdToHex, -} from './utils/caip-formatters'; -import { BatchSellTransactionType } from './validators/batch-sell'; -import type { QuoteResponseV1 } from './validators/quote-response-v1'; -import { validateQuoteResponseV1 } from './validators/quote-response-v1'; +} from './utils/caip-formatters.js'; +import { BatchSellTransactionType } from './validators/batch-sell.js'; +import type { QuoteResponseV1 } from './validators/quote-response-v1.js'; +import { validateQuoteResponseV1 } from './validators/quote-response-v1.js'; const MOCK_USDC_ADDRESS = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'; const MOCK_MUSD_ADDRESS = '0x12345A7890123456789012345678901234567890'; @@ -347,8 +347,7 @@ describe('Bridge Selectors', () => { quotesLastFetched: Date.now() - 40000, // 40 seconds ago remoteFeatureFlags: { bridgeConfig: { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - ...(mockState.remoteFeatureFlags.bridgeConfig as any), + ...mockState.remoteFeatureFlags.bridgeConfig, chainRanking: [], chains: { '1': { @@ -382,8 +381,7 @@ describe('Bridge Selectors', () => { quotesLastFetched: Date.now() - 40000, // 40 seconds ago remoteFeatureFlags: { bridgeConfig: { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - ...(mockState.remoteFeatureFlags.bridgeConfig as any), + ...mockState.remoteFeatureFlags.bridgeConfig, chainRanking: [], chains: { '1': { diff --git a/packages/bridge-controller/src/selectors.ts b/packages/bridge-controller/src/selectors.ts index a9246b7bee5..8f1f93f663b 100644 --- a/packages/bridge-controller/src/selectors.ts +++ b/packages/bridge-controller/src/selectors.ts @@ -12,33 +12,33 @@ import type { import type { CaipAssetType } from '@metamask/utils'; import { isStrictHexString, parseCaipAssetType } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { orderBy } from 'lodash'; +import { orderBy } from 'lodash-es'; import { createSelector as createSelector_, createStructuredSelector as createStructuredSelector_, } from 'reselect'; -import { BRIDGE_PREFERRED_GAS_ESTIMATE } from './constants/bridge'; +import { BRIDGE_PREFERRED_GAS_ESTIMATE } from './constants/bridge.js'; import type { BridgeControllerState, ExchangeRate, QuoteMetadata, TokenAmountValues, -} from './types'; -import { RequestStatus, SortOrder } from './types'; +} from './types.js'; +import { RequestStatus, SortOrder } from './types.js'; import { getNativeAssetForChainId, isEvmQuoteResponse, isNativeAddress, isNonEvmChainId, -} from './utils/bridge'; +} from './utils/bridge.js'; import { formatAddressToAssetId, formatAddressToCaipReference, formatChainIdToCaip, formatChainIdToHex, -} from './utils/caip-formatters'; -import { processFeatureFlags } from './utils/feature-flags'; +} from './utils/caip-formatters.js'; +import { processFeatureFlags } from './utils/feature-flags.js'; import { calcAdjustedReturn, calcCost, @@ -52,9 +52,9 @@ import { calcTotalEstimatedNetworkFee, calcTotalMaxNetworkFee, calcBatchFees, -} from './utils/quote'; -import { getDefaultSlippagePercentage } from './utils/slippage'; -import type { QuoteResponseV1 } from './validators/quote-response-v1'; +} from './utils/quote.js'; +import { getDefaultSlippagePercentage } from './utils/slippage.js'; +import type { QuoteResponseV1 } from './validators/quote-response-v1.js'; /** * The controller states that provide exchange rates diff --git a/packages/bridge-controller/src/types.ts b/packages/bridge-controller/src/types.ts index d0228f874ac..1bd51a28d4e 100644 --- a/packages/bridge-controller/src/types.ts +++ b/packages/bridge-controller/src/types.ts @@ -27,25 +27,25 @@ import type { Hex, } from '@metamask/utils'; -import type { BridgeController } from './bridge-controller'; -import type { BridgeControllerMethodActions } from './bridge-controller-method-action-types'; -import type { BRIDGE_CONTROLLER_NAME } from './constants/bridge'; -import type { SimulatedGasFeeLimitsSchema } from './validators/batch-sell'; -import type { BatchSellTradesResponseSchema } from './validators/batch-sell'; -import type { BridgeAssetSchema } from './validators/bridge-asset'; +import type { BridgeControllerMethodActions } from './bridge-controller-method-action-types.js'; +import type { BridgeController } from './bridge-controller.js'; +import type { BRIDGE_CONTROLLER_NAME } from './constants/bridge.js'; +import type { SimulatedGasFeeLimitsSchema } from './validators/batch-sell.js'; +import type { BatchSellTradesResponseSchema } from './validators/batch-sell.js'; +import type { BridgeAssetSchema } from './validators/bridge-asset.js'; import type { ChainConfigurationSchema, ChainRankingSchema, PlatformConfigSchema, -} from './validators/feature-flags'; -import type { IntentSchema } from './validators/intent'; -import type { TxFeeGasLimitsSchema } from './validators/quote'; -import type { FeeDataSchema } from './validators/quote'; -import type { GaslessPropertiesSchema } from './validators/quote'; -import type { QuoteResponseV1 } from './validators/quote-response-v1'; -import type { QuoteStreamCompleteSchema } from './validators/quote-stream-complete'; -import type { StepSchema } from './validators/step'; -import type { TokenFeatureSchema } from './validators/token-feature'; +} from './validators/feature-flags.js'; +import type { IntentSchema } from './validators/intent.js'; +import type { QuoteResponseV1 } from './validators/quote-response-v1.js'; +import type { QuoteStreamCompleteSchema } from './validators/quote-stream-complete.js'; +import type { TxFeeGasLimitsSchema } from './validators/quote.js'; +import type { FeeDataSchema } from './validators/quote.js'; +import type { GaslessPropertiesSchema } from './validators/quote.js'; +import type { StepSchema } from './validators/step.js'; +import type { TokenFeatureSchema } from './validators/token-feature.js'; export type FetchFunction = ( input: RequestInfo | URL | string, diff --git a/packages/bridge-controller/src/utils/assets.test.ts b/packages/bridge-controller/src/utils/assets.test.ts index e51a9e0a3dd..d661c678bd4 100644 --- a/packages/bridge-controller/src/utils/assets.test.ts +++ b/packages/bridge-controller/src/utils/assets.test.ts @@ -1,8 +1,9 @@ +import { jest } from '@jest/globals'; import type { CaipAssetType } from '@metamask/utils'; -import { getAssetIdsForToken, toExchangeRates } from './assets'; -import { getNativeAssetForChainId } from './bridge'; -import { formatAddressToAssetId } from './caip-formatters'; +import { getAssetIdsForToken, toExchangeRates } from './assets.js'; +import { getNativeAssetForChainId } from './bridge.js'; +import { formatAddressToAssetId } from './caip-formatters.js'; // Mock the imported functions jest.mock('./bridge', () => ({ diff --git a/packages/bridge-controller/src/utils/assets.ts b/packages/bridge-controller/src/utils/assets.ts index 41bc81f3f50..db540aa01eb 100644 --- a/packages/bridge-controller/src/utils/assets.ts +++ b/packages/bridge-controller/src/utils/assets.ts @@ -1,8 +1,8 @@ import type { CaipAssetType } from '@metamask/utils'; -import type { ExchangeRate, GenericQuoteRequest } from '../types'; -import { getNativeAssetForChainId } from './bridge'; -import { formatAddressToAssetId } from './caip-formatters'; +import type { ExchangeRate, GenericQuoteRequest } from '../types.js'; +import { getNativeAssetForChainId } from './bridge.js'; +import { formatAddressToAssetId } from './caip-formatters.js'; export const getAssetIdsForToken = ( tokenAddress: GenericQuoteRequest['srcTokenAddress'], diff --git a/packages/bridge-controller/src/utils/balance.test.ts b/packages/bridge-controller/src/utils/balance.test.ts index f3db1e42a5f..4dff9f8594f 100644 --- a/packages/bridge-controller/src/utils/balance.test.ts +++ b/packages/bridge-controller/src/utils/balance.test.ts @@ -2,12 +2,13 @@ import { BigNumber } from '@ethersproject/bignumber'; import { AddressZero } from '@ethersproject/constants'; import { Contract } from '@ethersproject/contracts'; import { Web3Provider } from '@ethersproject/providers'; +import { jest } from '@jest/globals'; import { abiERC20 } from '@metamask/metamask-eth-abis'; import type { Provider } from '@metamask/network-controller'; -import { FakeProvider } from '../../../../tests/fake-provider'; -import * as balanceUtils from './balance'; -import { fetchTokenBalance } from './balance'; +import { FakeProvider } from '../../../../tests/fake-provider.js'; +import * as balanceUtils from './balance.js'; +import { fetchTokenBalance } from './balance.js'; declare global { var ethereumProvider: Provider; diff --git a/packages/bridge-controller/src/utils/balance.ts b/packages/bridge-controller/src/utils/balance.ts index 56eb212f5f4..4120c1d11d4 100644 --- a/packages/bridge-controller/src/utils/balance.ts +++ b/packages/bridge-controller/src/utils/balance.ts @@ -6,7 +6,7 @@ import { abiERC20 } from '@metamask/metamask-eth-abis'; import type { Provider } from '@metamask/network-controller'; import type { Hex } from '@metamask/utils'; -import { isNativeAddress } from './bridge'; +import { isNativeAddress } from './bridge.js'; export const fetchTokenBalance = async ( address: string, diff --git a/packages/bridge-controller/src/utils/bridge.test.ts b/packages/bridge-controller/src/utils/bridge.test.ts index f24dea769ae..0e37be9f49e 100644 --- a/packages/bridge-controller/src/utils/bridge.test.ts +++ b/packages/bridge-controller/src/utils/bridge.test.ts @@ -1,13 +1,14 @@ +import { jest } from '@jest/globals'; import { BtcScope, SolScope, XlmScope } from '@metamask/keyring-api'; import type { Hex } from '@metamask/utils'; import { ETH_USDT_ADDRESS, METABRIDGE_ETHEREUM_ADDRESS, -} from '../constants/bridge'; -import { CHAIN_IDS } from '../constants/chains'; -import { SWAPS_CHAINID_DEFAULT_TOKEN_MAP } from '../constants/tokens'; -import { ChainId } from '../types'; +} from '../constants/bridge.js'; +import { CHAIN_IDS } from '../constants/chains.js'; +import { SWAPS_CHAINID_DEFAULT_TOKEN_MAP } from '../constants/tokens.js'; +import { ChainId } from '../types.js'; import { getNativeAssetForChainId, isBitcoinChainId, @@ -19,7 +20,7 @@ import { isSwapsDefaultTokenAddress, isSwapsDefaultTokenSymbol, sumHexes, -} from './bridge'; +} from './bridge.js'; describe('Bridge utils', () => { beforeEach(() => { diff --git a/packages/bridge-controller/src/utils/bridge.ts b/packages/bridge-controller/src/utils/bridge.ts index a51bf2d4eff..09cd6e23ad0 100644 --- a/packages/bridge-controller/src/utils/bridge.ts +++ b/packages/bridge-controller/src/utils/bridge.ts @@ -10,27 +10,27 @@ import { DEFAULT_BRIDGE_CONTROLLER_STATE, ETH_USDT_ADDRESS, METABRIDGE_ETHEREUM_ADDRESS, -} from '../constants/bridge'; -import { CHAIN_IDS } from '../constants/chains'; -import { SWAPS_CONTRACT_ADDRESSES } from '../constants/swaps'; +} from '../constants/bridge.js'; +import { CHAIN_IDS } from '../constants/chains.js'; +import { SWAPS_CONTRACT_ADDRESSES } from '../constants/swaps.js'; import { SWAPS_CHAINID_DEFAULT_TOKEN_MAP, SYMBOL_TO_SLIP44_MAP, -} from '../constants/tokens'; -import type { SupportedSwapsNativeCurrencySymbols } from '../constants/tokens'; +} from '../constants/tokens.js'; +import type { SupportedSwapsNativeCurrencySymbols } from '../constants/tokens.js'; import type { BridgeAsset, BridgeControllerState, GenericQuoteRequest, -} from '../types'; -import { ChainId } from '../types'; -import type { QuoteResponseV1 } from '../validators/quote-response-v1'; -import type { TxData } from '../validators/trade'; +} from '../types.js'; +import { ChainId } from '../types.js'; +import type { QuoteResponseV1 } from '../validators/quote-response-v1.js'; +import type { TxData } from '../validators/trade.js'; import { formatChainIdToCaip, formatChainIdToDec, formatChainIdToHex, -} from './caip-formatters'; +} from './caip-formatters.js'; /** * Checks whether the transaction is a cross-chain transaction by comparing the source and destination chainIds diff --git a/packages/bridge-controller/src/utils/caip-formatters.test.ts b/packages/bridge-controller/src/utils/caip-formatters.test.ts index 3f91b91bfca..4f373cf1693 100644 --- a/packages/bridge-controller/src/utils/caip-formatters.test.ts +++ b/packages/bridge-controller/src/utils/caip-formatters.test.ts @@ -1,15 +1,15 @@ import { AddressZero } from '@ethersproject/constants'; import { BtcScope, SolScope, TrxScope, XlmScope } from '@metamask/keyring-api'; -import { CHAIN_IDS } from '../constants/chains'; -import { ChainId } from '../types'; +import { CHAIN_IDS } from '../constants/chains.js'; +import { ChainId } from '../types.js'; import { formatChainIdToCaip, formatChainIdToDec, formatChainIdToHex, formatAddressToCaipReference, formatAddressToAssetId, -} from './caip-formatters'; +} from './caip-formatters.js'; describe('CAIP Formatters', () => { describe('formatChainIdToCaip', () => { diff --git a/packages/bridge-controller/src/utils/caip-formatters.ts b/packages/bridge-controller/src/utils/caip-formatters.ts index eec21f2c74f..c3626eb79c2 100644 --- a/packages/bridge-controller/src/utils/caip-formatters.ts +++ b/packages/bridge-controller/src/utils/caip-formatters.ts @@ -18,8 +18,8 @@ import { } from '@metamask/utils'; import type { CaipAssetType, CaipChainId, Hex } from '@metamask/utils'; -import type { GenericQuoteRequest } from '../types'; -import { ChainId } from '../types'; +import type { GenericQuoteRequest } from '../types.js'; +import { ChainId } from '../types.js'; import { getNativeAssetForChainId, isBitcoinChainId, @@ -27,7 +27,7 @@ import { isSolanaChainId, isStellarChainId, isTronChainId, -} from './bridge'; +} from './bridge.js'; /** * Converts a chainId to a CaipChainId diff --git a/packages/bridge-controller/src/utils/feature-flags.test.ts b/packages/bridge-controller/src/utils/feature-flags.test.ts index 0ae8082d461..a3dc7f27747 100644 --- a/packages/bridge-controller/src/utils/feature-flags.test.ts +++ b/packages/bridge-controller/src/utils/feature-flags.test.ts @@ -1,13 +1,15 @@ -import { DEFAULT_CHAIN_RANKING } from '../constants/bridge'; +import { jest } from '@jest/globals'; + +import { DEFAULT_CHAIN_RANKING } from '../constants/bridge.js'; import type { FeatureFlagsPlatformConfig, BridgeControllerMessenger, -} from '../types'; +} from '../types.js'; import { formatFeatureFlags, getBridgeFeatureFlags, hasMinimumRequiredVersion, -} from './feature-flags'; +} from './feature-flags.js'; describe('feature-flags', () => { describe('formatFeatureFlags', () => { diff --git a/packages/bridge-controller/src/utils/feature-flags.ts b/packages/bridge-controller/src/utils/feature-flags.ts index b0aedd5197f..d4f304e7df0 100644 --- a/packages/bridge-controller/src/utils/feature-flags.ts +++ b/packages/bridge-controller/src/utils/feature-flags.ts @@ -3,10 +3,13 @@ import type { RemoteFeatureFlagControllerState } from '@metamask/remote-feature- import { DEFAULT_CHAIN_RANKING, DEFAULT_FEATURE_FLAG_CONFIG, -} from '../constants/bridge'; -import type { FeatureFlagsPlatformConfig, ChainConfiguration } from '../types'; -import { validateFeatureFlagsResponse } from '../validators/feature-flags'; -import { formatChainIdToCaip } from './caip-formatters'; +} from '../constants/bridge.js'; +import type { + FeatureFlagsPlatformConfig, + ChainConfiguration, +} from '../types.js'; +import { validateFeatureFlagsResponse } from '../validators/feature-flags.js'; +import { formatChainIdToCaip } from './caip-formatters.js'; export const formatFeatureFlags = ( bridgeFeatureFlags: FeatureFlagsPlatformConfig, diff --git a/packages/bridge-controller/src/utils/fetch.test.ts b/packages/bridge-controller/src/utils/fetch.test.ts index 62f058af5c2..be8d6b2eaa7 100644 --- a/packages/bridge-controller/src/utils/fetch.test.ts +++ b/packages/bridge-controller/src/utils/fetch.test.ts @@ -1,18 +1,22 @@ import { AddressZero } from '@ethersproject/constants'; +import { jest } from '@jest/globals'; import type { CaipAssetType } from '@metamask/utils'; -import { mockBridgeQuotesErc20Erc20V1 } from '../../tests/mock-quotes-erc20-erc20'; -import { mockBridgeQuotesNativeErc20V1 } from '../../tests/mock-quotes-native-erc20'; -import { BridgeClientId, BRIDGE_PROD_API_BASE_URL } from '../constants/bridge'; -import { BatchSellTransactionType } from '../validators/batch-sell'; -import { FeatureId } from '../validators/feature-flags'; +import { mockBridgeQuotesErc20Erc20V1 } from '../../tests/mock-quotes-erc20-erc20.js'; +import { mockBridgeQuotesNativeErc20V1 } from '../../tests/mock-quotes-native-erc20.js'; +import { + BridgeClientId, + BRIDGE_PROD_API_BASE_URL, +} from '../constants/bridge.js'; +import { BatchSellTransactionType } from '../validators/batch-sell.js'; +import { FeatureId } from '../validators/feature-flags.js'; import { fetchBridgeQuotes, fetchBridgeTokens, fetchAssetPrices, fetchBatchSellTrades, formatBatchSellTradesRequest, -} from './fetch'; +} from './fetch.js'; const mockFetchFn = jest.fn(); diff --git a/packages/bridge-controller/src/utils/fetch.ts b/packages/bridge-controller/src/utils/fetch.ts index b63b4d15dd9..d8f60476941 100644 --- a/packages/bridge-controller/src/utils/fetch.ts +++ b/packages/bridge-controller/src/utils/fetch.ts @@ -11,23 +11,23 @@ import type { QuoteStreamCompleteData, BatchSellTradesRequest, BatchSellTradesResponse, -} from '../types'; -import { validateBatchSellTradesResponse } from '../validators/batch-sell'; -import { validateBridgeAsset } from '../validators/bridge-asset'; -import type { FeatureId } from '../validators/feature-flags'; -import type { QuoteResponseV1 } from '../validators/quote-response-v1'; -import { validateQuoteResponseV1 } from '../validators/quote-response-v1'; -import { validateQuoteStreamComplete } from '../validators/quote-stream-complete'; -import { validateTokenFeature } from '../validators/token-feature'; -import { isEvmTxData } from '../validators/trade'; -import { getEthUsdtResetData } from './bridge'; +} from '../types.js'; +import { validateBatchSellTradesResponse } from '../validators/batch-sell.js'; +import { validateBridgeAsset } from '../validators/bridge-asset.js'; +import type { FeatureId } from '../validators/feature-flags.js'; +import type { QuoteResponseV1 } from '../validators/quote-response-v1.js'; +import { validateQuoteResponseV1 } from '../validators/quote-response-v1.js'; +import { validateQuoteStreamComplete } from '../validators/quote-stream-complete.js'; +import { validateTokenFeature } from '../validators/token-feature.js'; +import { isEvmTxData } from '../validators/trade.js'; +import { getEthUsdtResetData } from './bridge.js'; import { formatAddressToAssetId, formatAddressToCaipReference, formatChainIdToDec, -} from './caip-formatters'; -import { fetchServerEvents } from './fetch-server-events'; -import { formatStructErrors } from './struct-error'; +} from './caip-formatters.js'; +import { fetchServerEvents } from './fetch-server-events.js'; +import { formatStructErrors } from './struct-error.js'; export const getClientHeaders = ({ clientId, diff --git a/packages/bridge-controller/src/utils/metrics/properties.test.ts b/packages/bridge-controller/src/utils/metrics/properties.test.ts index 7c46242b872..696102bbfdc 100644 --- a/packages/bridge-controller/src/utils/metrics/properties.test.ts +++ b/packages/bridge-controller/src/utils/metrics/properties.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; import { SolScope } from '@metamask/keyring-api'; import type { CaipChainId } from '@metamask/utils'; -import type { QuoteMetadata } from '../../types'; -import type { QuoteResponseV1 } from '../../validators/quote-response-v1'; -import { getNativeAssetForChainId } from '../bridge'; -import { formatChainIdToCaip } from '../caip-formatters'; -import { MetricsSwapType } from './constants'; +import type { QuoteMetadata } from '../../types.js'; +import type { QuoteResponseV1 } from '../../validators/quote-response-v1.js'; +import { getNativeAssetForChainId } from '../bridge.js'; +import { formatChainIdToCaip } from '../caip-formatters.js'; +import { MetricsSwapType } from './constants.js'; import { getAccountHardwareType, isHardwareWallet, @@ -15,7 +16,7 @@ import { formatProviderLabel, getRequestParams, getQuotesReceivedProperties, -} from './properties'; +} from './properties.js'; describe('properties', () => { beforeEach(() => { diff --git a/packages/bridge-controller/src/utils/metrics/properties.ts b/packages/bridge-controller/src/utils/metrics/properties.ts index 9c0b45989a3..09db420acb7 100644 --- a/packages/bridge-controller/src/utils/metrics/properties.ts +++ b/packages/bridge-controller/src/utils/metrics/properties.ts @@ -1,29 +1,29 @@ /* eslint-disable @typescript-eslint/explicit-function-return-type */ import type { AccountsControllerState } from '@metamask/accounts-controller'; -import { DEFAULT_BRIDGE_CONTROLLER_STATE } from '../../constants/bridge'; -import { ChainId } from '../../types'; +import { DEFAULT_BRIDGE_CONTROLLER_STATE } from '../../constants/bridge.js'; +import { ChainId } from '../../types.js'; import type { GenericQuoteRequest, QuoteMetadata, QuoteRequest, -} from '../../types'; -import { FeatureId } from '../../validators/feature-flags'; -import type { QuoteResponseV1 } from '../../validators/quote-response-v1'; -import type { TxData } from '../../validators/trade'; -import { getNativeAssetForChainId, isCrossChain } from '../bridge'; +} from '../../types.js'; +import { FeatureId } from '../../validators/feature-flags.js'; +import type { QuoteResponseV1 } from '../../validators/quote-response-v1.js'; +import type { TxData } from '../../validators/trade.js'; +import { getNativeAssetForChainId, isCrossChain } from '../bridge.js'; import { formatAddressToAssetId, formatChainIdToCaip, -} from '../caip-formatters'; -import { MetricsSwapType } from './constants'; +} from '../caip-formatters.js'; +import { MetricsSwapType } from './constants.js'; import type { AccountHardwareType, InputKeys, InputValues, QuoteWarning, RequestParams, -} from './types'; +} from './types.js'; export const toInputChangedPropertyKey: Partial< Record diff --git a/packages/bridge-controller/src/utils/metrics/types.ts b/packages/bridge-controller/src/utils/metrics/types.ts index 62f27713716..cb0db21ce21 100644 --- a/packages/bridge-controller/src/utils/metrics/types.ts +++ b/packages/bridge-controller/src/utils/metrics/types.ts @@ -5,8 +5,8 @@ import type { InputPrimaryDenomination, SortOrder, StatusTypes, -} from '../../types'; -import type { FeatureId } from '../../validators/feature-flags'; +} from '../../types.js'; +import type { FeatureId } from '../../validators/feature-flags.js'; import type { UnifiedSwapBridgeEventName, BatchSellMetricsEventName, @@ -16,7 +16,7 @@ import type { MetricsActionType, MetricsSwapType, PollingStatus, -} from './constants'; +} from './constants.js'; /** * These properties map to properties required by the segment-schema. For example: https://github.com/Consensys/segment-schema/blob/main/libraries/properties/cross-chain-swaps-action.yaml diff --git a/packages/bridge-controller/src/utils/quote-fees.ts b/packages/bridge-controller/src/utils/quote-fees.ts index a6f639655ca..56023454c9b 100644 --- a/packages/bridge-controller/src/utils/quote-fees.ts +++ b/packages/bridge-controller/src/utils/quote-fees.ts @@ -2,19 +2,19 @@ import type { InternalAccount } from '@metamask/keyring-internal-api'; import type { TransactionController } from '@metamask/transaction-controller'; import { numberToHex } from '@metamask/utils'; -import { CHAIN_IDS } from '../constants/chains'; +import { CHAIN_IDS } from '../constants/chains.js'; import type { L1GasFees, NonEvmFees, BridgeControllerMessenger, -} from '../types'; -import type { QuoteResponseV1 } from '../validators/quote-response-v1'; -import { isTronTrade } from '../validators/trade'; -import type { TxData } from '../validators/trade'; -import { isNonEvmChainId, sumHexes } from './bridge'; -import { formatChainIdToCaip } from './caip-formatters'; -import { computeFeeRequest } from './snaps'; -import { extractTradeData } from './trade-utils'; +} from '../types.js'; +import type { QuoteResponseV1 } from '../validators/quote-response-v1.js'; +import { isTronTrade } from '../validators/trade.js'; +import type { TxData } from '../validators/trade.js'; +import { isNonEvmChainId, sumHexes } from './bridge.js'; +import { formatChainIdToCaip } from './caip-formatters.js'; +import { computeFeeRequest } from './snaps.js'; +import { extractTradeData } from './trade-utils.js'; /** * Appends transaction fees for EVM chains to quotes @@ -59,7 +59,7 @@ const appendL1GasFees = async ( }) : '0x0'; const tradeL1GasFees = await getLayer1GasFee({ - transactionParams: getTxParams(trade as TxData), + transactionParams: getTxParams(trade), chainId, }); diff --git a/packages/bridge-controller/src/utils/quote.test.ts b/packages/bridge-controller/src/utils/quote.test.ts index 4113818c892..4866d6fdff1 100644 --- a/packages/bridge-controller/src/utils/quote.test.ts +++ b/packages/bridge-controller/src/utils/quote.test.ts @@ -2,10 +2,10 @@ import { AddressZero } from '@ethersproject/constants'; import { convertHexToDecimal } from '@metamask/controller-utils'; import { BigNumber } from 'bignumber.js'; -import type { GenericQuoteRequest, NonEvmFees, L1GasFees } from '../types'; -import type { Quote } from '../validators/quote'; -import type { QuoteResponseV1 } from '../validators/quote-response-v1'; -import type { TxData } from '../validators/trade'; +import type { GenericQuoteRequest, NonEvmFees, L1GasFees } from '../types.js'; +import type { QuoteResponseV1 } from '../validators/quote-response-v1.js'; +import type { Quote } from '../validators/quote.js'; +import type { TxData } from '../validators/trade.js'; import { isValidQuoteRequest, getQuoteIdentifier, @@ -21,7 +21,7 @@ import { calcCost, formatEtaInMinutes, calcSlippagePercentage, -} from './quote'; +} from './quote.js'; describe('Quote Utils', () => { describe('isValidQuoteRequest', () => { @@ -500,7 +500,7 @@ describe('Quote Metadata Utils', () => { ...mockBridgeQuote, trade: { gasLimit: 21000, effectiveGas: 10000 }, approval: { gasLimit: 46000, effectiveGas: 20000 }, - } as QuoteResponseV1 & L1GasFees, + }, feePerGasInDecGwei: '52', maxFeePerGasInDecGwei: '102', exchangeRate: '2000', diff --git a/packages/bridge-controller/src/utils/quote.ts b/packages/bridge-controller/src/utils/quote.ts index fec1a84538e..f43510e79e1 100644 --- a/packages/bridge-controller/src/utils/quote.ts +++ b/packages/bridge-controller/src/utils/quote.ts @@ -13,12 +13,12 @@ import type { L1GasFees, QuoteMetadata, NonEvmFees, -} from '../types'; -import { FeatureId } from '../validators/feature-flags'; -import type { Quote } from '../validators/quote'; -import type { QuoteResponseV1 } from '../validators/quote-response-v1'; -import { TxData } from '../validators/trade'; -import { isNativeAddress, isNonEvmChainId } from './bridge'; +} from '../types.js'; +import { FeatureId } from '../validators/feature-flags.js'; +import type { QuoteResponseV1 } from '../validators/quote-response-v1.js'; +import type { Quote } from '../validators/quote.js'; +import { TxData } from '../validators/trade.js'; +import { isNativeAddress, isNonEvmChainId } from './bridge.js'; export const isValidQuoteRequest = ( partialRequest: Partial, diff --git a/packages/bridge-controller/src/utils/slippage.ts b/packages/bridge-controller/src/utils/slippage.ts index 75076a0ac11..9134438fb51 100644 --- a/packages/bridge-controller/src/utils/slippage.ts +++ b/packages/bridge-controller/src/utils/slippage.ts @@ -1,5 +1,5 @@ -import type { GenericQuoteRequest } from '../types'; -import { isCrossChain, isSolanaChainId } from './bridge'; +import type { GenericQuoteRequest } from '../types.js'; +import { isCrossChain, isSolanaChainId } from './bridge.js'; export const BRIDGE_DEFAULT_SLIPPAGE = 0.5; const SWAP_SOLANA_SLIPPAGE = undefined; diff --git a/packages/bridge-controller/src/utils/snaps.test.ts b/packages/bridge-controller/src/utils/snaps.test.ts index 3ae39c081eb..0d6c56c5e8d 100644 --- a/packages/bridge-controller/src/utils/snaps.test.ts +++ b/packages/bridge-controller/src/utils/snaps.test.ts @@ -1,10 +1,11 @@ +import { jest } from '@jest/globals'; import { SolScope } from '@metamask/keyring-api'; import { v4 as uuid } from 'uuid'; import { getMinimumBalanceForRentExemptionRequest, computeFeeRequest, -} from './snaps'; +} from './snaps.js'; jest.mock('uuid', () => ({ v4: jest.fn(), diff --git a/packages/bridge-controller/src/utils/snaps.ts b/packages/bridge-controller/src/utils/snaps.ts index 6c8badf6024..2787612e770 100644 --- a/packages/bridge-controller/src/utils/snaps.ts +++ b/packages/bridge-controller/src/utils/snaps.ts @@ -2,8 +2,8 @@ import { SolScope } from '@metamask/keyring-api'; import type { CaipChainId } from '@metamask/utils'; import { v4 as uuid } from 'uuid'; -import { DEFAULT_BRIDGE_CONTROLLER_STATE } from '../constants/bridge'; -import type { BridgeControllerMessenger } from '../types'; +import { DEFAULT_BRIDGE_CONTROLLER_STATE } from '../constants/bridge.js'; +import type { BridgeControllerMessenger } from '../types.js'; export const getMinimumBalanceForRentExemptionRequest = (snapId: string) => { return { diff --git a/packages/bridge-controller/src/utils/swaps.test.ts b/packages/bridge-controller/src/utils/swaps.test.ts index 336f6159f41..eaa8fe16969 100644 --- a/packages/bridge-controller/src/utils/swaps.test.ts +++ b/packages/bridge-controller/src/utils/swaps.test.ts @@ -1,22 +1,23 @@ +import { jest } from '@jest/globals'; import type { Hex } from '@metamask/utils'; -import { CHAIN_IDS } from '../constants/chains'; +import { CHAIN_IDS } from '../constants/chains.js'; import { ALLOWED_CONTRACT_ADDRESSES, SWAPS_CONTRACT_ADDRESSES, -} from '../constants/swaps'; +} from '../constants/swaps.js'; import { DEFAULT_TOKEN_ADDRESS, SWAPS_CHAINID_DEFAULT_TOKEN_MAP, -} from '../constants/tokens'; -import type { FetchFunction } from '../types'; +} from '../constants/tokens.js'; +import type { FetchFunction } from '../types.js'; import { API_BASE_URL, fetchTokens, getSwapsContractAddress, isValidSwapsContractAddress, -} from './swaps'; -import type { SwapsToken } from './swaps'; +} from './swaps.js'; +import type { SwapsToken } from './swaps.js'; describe('Swaps utils', () => { beforeEach(() => { diff --git a/packages/bridge-controller/src/utils/swaps.ts b/packages/bridge-controller/src/utils/swaps.ts index ebfd01be31d..6708e87ea42 100644 --- a/packages/bridge-controller/src/utils/swaps.ts +++ b/packages/bridge-controller/src/utils/swaps.ts @@ -1,16 +1,16 @@ import type { Hex } from '@metamask/utils'; -import { CHAIN_IDS } from '../constants/chains'; +import { CHAIN_IDS } from '../constants/chains.js'; import { ALLOWED_CONTRACT_ADDRESSES, SWAPS_CONTRACT_ADDRESSES, -} from '../constants/swaps'; +} from '../constants/swaps.js'; import { DEFAULT_TOKEN_ADDRESS, SWAPS_CHAINID_DEFAULT_TOKEN_MAP, -} from '../constants/tokens'; -import type { FetchFunction } from '../types'; -import { formatChainIdToDec } from './caip-formatters'; +} from '../constants/tokens.js'; +import type { FetchFunction } from '../types.js'; +import { formatChainIdToDec } from './caip-formatters.js'; /** * Checks if the given contract address is valid for the given chain ID. diff --git a/packages/bridge-controller/src/utils/trade-utils.test.ts b/packages/bridge-controller/src/utils/trade-utils.test.ts index f847daa13bb..4a686d18a33 100644 --- a/packages/bridge-controller/src/utils/trade-utils.test.ts +++ b/packages/bridge-controller/src/utils/trade-utils.test.ts @@ -3,14 +3,14 @@ import type { BitcoinTradeData, TronTradeData, Trade, -} from '../validators/trade'; +} from '../validators/trade.js'; import { isEvmTxData, isBitcoinTrade, isStellarTrade, isTronTrade, -} from '../validators/trade'; -import { extractTradeData } from './trade-utils'; +} from '../validators/trade.js'; +import { extractTradeData } from './trade-utils.js'; describe('Trade utils', () => { describe('isEvmTxData', () => { diff --git a/packages/bridge-controller/src/utils/trade-utils.ts b/packages/bridge-controller/src/utils/trade-utils.ts index cf1aa645ef0..a0319d2df03 100644 --- a/packages/bridge-controller/src/utils/trade-utils.ts +++ b/packages/bridge-controller/src/utils/trade-utils.ts @@ -5,7 +5,7 @@ import { isEvmTxData, isStellarTrade, hasOwnProp, -} from '../validators/trade'; +} from '../validators/trade.js'; /** * Extracts the transaction data from different trade formats diff --git a/packages/bridge-controller/src/validators/batch-sell.ts b/packages/bridge-controller/src/validators/batch-sell.ts index 79246d08b89..6aa59b3aab5 100644 --- a/packages/bridge-controller/src/validators/batch-sell.ts +++ b/packages/bridge-controller/src/validators/batch-sell.ts @@ -9,10 +9,10 @@ import { import type { Infer } from '@metamask/superstruct'; import { StrictHexStruct } from '@metamask/utils'; -import { BridgeAssetSchema } from './bridge-asset'; -import { NumberStringSchema } from './number'; -import { GaslessPropertiesSchema } from './quote'; -import { TxDataSchema } from './trade'; +import { BridgeAssetSchema } from './bridge-asset.js'; +import { NumberStringSchema } from './number.js'; +import { GaslessPropertiesSchema } from './quote.js'; +import { TxDataSchema } from './trade.js'; export enum BatchSellTransactionType { TRADE = 'trade', diff --git a/packages/bridge-controller/src/validators/intent.ts b/packages/bridge-controller/src/validators/intent.ts index ada780dcb81..3f42e164bc2 100644 --- a/packages/bridge-controller/src/validators/intent.ts +++ b/packages/bridge-controller/src/validators/intent.ts @@ -11,8 +11,8 @@ import { any, } from '@metamask/superstruct'; -import { TruthyDigitStringSchema } from './number'; -import { HexString } from './trade'; +import { TruthyDigitStringSchema } from './number.js'; +import { HexString } from './trade.js'; // Allow digit strings for amounts/validTo for flexibility across providers const DigitStringOrNumberSchema = union([TruthyDigitStringSchema, number()]); diff --git a/packages/bridge-controller/src/validators/quote-response-v1.ts b/packages/bridge-controller/src/validators/quote-response-v1.ts index 7695b30f850..0956b693083 100644 --- a/packages/bridge-controller/src/validators/quote-response-v1.ts +++ b/packages/bridge-controller/src/validators/quote-response-v1.ts @@ -10,21 +10,21 @@ import { } from '@metamask/superstruct'; import { StrictHexStruct } from '@metamask/utils'; -import { FeatureId } from './feature-flags'; -import { FloatStringSchema } from './number'; -import { QuoteSchema } from './quote'; +import { FeatureId } from './feature-flags.js'; +import { FloatStringSchema } from './number.js'; +import { QuoteSchema } from './quote.js'; import { TxDataSchema, TronTradeDataSchema, BitcoinTradeDataSchema, StellarTradeDataSchema, -} from './trade'; +} from './trade.js'; import type { BitcoinTradeData, StellarTradeData, TronTradeData, TxData, -} from './trade'; +} from './trade.js'; export const QuoteResponseSchemaV1 = type({ featureId: optional(enums(Object.values(FeatureId))), diff --git a/packages/bridge-controller/src/validators/quote.ts b/packages/bridge-controller/src/validators/quote.ts index f27dc1926d4..8982750fd0c 100644 --- a/packages/bridge-controller/src/validators/quote.ts +++ b/packages/bridge-controller/src/validators/quote.ts @@ -10,10 +10,10 @@ import { } from '@metamask/superstruct'; import type { Infer } from '@metamask/superstruct'; -import { ChainIdSchema, BridgeAssetSchema } from './bridge-asset'; -import { IntentSchema } from './intent'; -import { TruthyDigitStringSchema, NumberStringSchema } from './number'; -import { RefuelDataSchema, StepSchema } from './step'; +import { ChainIdSchema, BridgeAssetSchema } from './bridge-asset.js'; +import { IntentSchema } from './intent.js'; +import { TruthyDigitStringSchema, NumberStringSchema } from './number.js'; +import { RefuelDataSchema, StepSchema } from './step.js'; export enum FeeType { METABRIDGE = 'metabridge', diff --git a/packages/bridge-controller/src/validators/step.ts b/packages/bridge-controller/src/validators/step.ts index 59460be4c97..cf3fff44b72 100644 --- a/packages/bridge-controller/src/validators/step.ts +++ b/packages/bridge-controller/src/validators/step.ts @@ -1,6 +1,6 @@ import { type, enums, optional } from '@metamask/superstruct'; -import { BridgeAssetSchema, ChainIdSchema } from './bridge-asset'; +import { BridgeAssetSchema, ChainIdSchema } from './bridge-asset.js'; export enum ActionTypes { BRIDGE = 'bridge', diff --git a/packages/bridge-controller/src/validators/validators.test.ts b/packages/bridge-controller/src/validators/validators.test.ts index 3b809f31e90..58a0bfc835d 100644 --- a/packages/bridge-controller/src/validators/validators.test.ts +++ b/packages/bridge-controller/src/validators/validators.test.ts @@ -1,15 +1,15 @@ import { is } from '@metamask/superstruct'; -import { mockBridgeQuotesNativeErc20EthV1 } from '../../tests/mock-quotes-native-erc20-eth'; -import { validateFeatureFlagsResponse } from './feature-flags'; -import { IntentSchema } from './intent'; -import { DiscountType } from './quote'; -import { FeeDataSchema } from './quote'; -import { validateQuoteResponseV1 } from './quote-response-v1'; +import { mockBridgeQuotesNativeErc20EthV1 } from '../../tests/mock-quotes-native-erc20-eth.js'; +import { validateFeatureFlagsResponse } from './feature-flags.js'; +import { IntentSchema } from './intent.js'; +import { validateQuoteResponseV1 } from './quote-response-v1.js'; import { validateQuoteStreamComplete, QuoteStreamCompleteReason, -} from './quote-stream-complete'; +} from './quote-stream-complete.js'; +import { DiscountType } from './quote.js'; +import { FeeDataSchema } from './quote.js'; describe('validators', () => { describe('validateFeatureFlagsResponse', () => { diff --git a/packages/bridge-controller/tests/mock-quotes-erc20-erc20.ts b/packages/bridge-controller/tests/mock-quotes-erc20-erc20.ts index e43025d3721..7f63bed5a53 100644 --- a/packages/bridge-controller/tests/mock-quotes-erc20-erc20.ts +++ b/packages/bridge-controller/tests/mock-quotes-erc20-erc20.ts @@ -1,11 +1,11 @@ -import { merge } from 'lodash'; +import { merge } from 'lodash-es'; -import type { DeepPartial } from '../src/types'; +import type { DeepPartial } from '../src/types.js'; import { validateQuoteResponseV1, QuoteResponseV1, -} from '../src/validators/quote-response-v1'; -import { ActionTypes } from '../src/validators/step'; +} from '../src/validators/quote-response-v1.js'; +import { ActionTypes } from '../src/validators/step.js'; export const mockBridgeQuotesErc20Erc20V1: QuoteResponseV1[] = [ { diff --git a/packages/bridge-controller/tests/mock-quotes-erc20-native.ts b/packages/bridge-controller/tests/mock-quotes-erc20-native.ts index 07c33bfb418..1503dc55c6e 100644 --- a/packages/bridge-controller/tests/mock-quotes-erc20-native.ts +++ b/packages/bridge-controller/tests/mock-quotes-erc20-native.ts @@ -1,9 +1,9 @@ -import { merge } from 'lodash'; +import { merge } from 'lodash-es'; -import type { DeepPartial } from '../src/types'; -import type { QuoteResponseV1 } from '../src/validators/quote-response-v1'; -import { validateQuoteResponseV1 } from '../src/validators/quote-response-v1'; -import { ActionTypes } from '../src/validators/step'; +import type { DeepPartial } from '../src/types.js'; +import type { QuoteResponseV1 } from '../src/validators/quote-response-v1.js'; +import { validateQuoteResponseV1 } from '../src/validators/quote-response-v1.js'; +import { ActionTypes } from '../src/validators/step.js'; export const mockBridgeQuotesErc20NativeV1: QuoteResponseV1[] = [ { diff --git a/packages/bridge-controller/tests/mock-quotes-native-erc20-eth.ts b/packages/bridge-controller/tests/mock-quotes-native-erc20-eth.ts index ad41fbed3e3..54823d91c04 100644 --- a/packages/bridge-controller/tests/mock-quotes-native-erc20-eth.ts +++ b/packages/bridge-controller/tests/mock-quotes-native-erc20-eth.ts @@ -1,9 +1,9 @@ -import { merge } from 'lodash'; +import { merge } from 'lodash-es'; -import type { DeepPartial } from '../src/types'; -import type { QuoteResponseV1 } from '../src/validators/quote-response-v1'; -import { validateQuoteResponseV1 } from '../src/validators/quote-response-v1'; -import { ActionTypes } from '../src/validators/step'; +import type { DeepPartial } from '../src/types.js'; +import type { QuoteResponseV1 } from '../src/validators/quote-response-v1.js'; +import { validateQuoteResponseV1 } from '../src/validators/quote-response-v1.js'; +import { ActionTypes } from '../src/validators/step.js'; export const mockBridgeQuotesNativeErc20EthV1: QuoteResponseV1[] = [ { diff --git a/packages/bridge-controller/tests/mock-quotes-native-erc20.ts b/packages/bridge-controller/tests/mock-quotes-native-erc20.ts index ed44c75a924..a4c8804dd3a 100644 --- a/packages/bridge-controller/tests/mock-quotes-native-erc20.ts +++ b/packages/bridge-controller/tests/mock-quotes-native-erc20.ts @@ -1,9 +1,9 @@ -import { merge } from 'lodash'; +import { merge } from 'lodash-es'; -import type { DeepPartial } from '../src/types'; -import type { QuoteResponseV1 } from '../src/validators/quote-response-v1'; -import { validateQuoteResponseV1 } from '../src/validators/quote-response-v1'; -import { ActionTypes } from '../src/validators/step'; +import type { DeepPartial } from '../src/types.js'; +import type { QuoteResponseV1 } from '../src/validators/quote-response-v1.js'; +import { validateQuoteResponseV1 } from '../src/validators/quote-response-v1.js'; +import { ActionTypes } from '../src/validators/step.js'; export const mockBridgeQuotesNativeErc20V1: QuoteResponseV1[] = [ { diff --git a/packages/bridge-controller/tests/mock-quotes-sol-erc20.ts b/packages/bridge-controller/tests/mock-quotes-sol-erc20.ts index 7bc3ab0fcf5..5ab5d59d745 100644 --- a/packages/bridge-controller/tests/mock-quotes-sol-erc20.ts +++ b/packages/bridge-controller/tests/mock-quotes-sol-erc20.ts @@ -1,9 +1,9 @@ -import { merge } from 'lodash'; +import { merge } from 'lodash-es'; -import type { DeepPartial } from '../src/types'; -import type { QuoteResponseV1 } from '../src/validators/quote-response-v1'; -import { validateQuoteResponseV1 } from '../src/validators/quote-response-v1'; -import { ActionTypes } from '../src/validators/step'; +import type { DeepPartial } from '../src/types.js'; +import type { QuoteResponseV1 } from '../src/validators/quote-response-v1.js'; +import { validateQuoteResponseV1 } from '../src/validators/quote-response-v1.js'; +import { ActionTypes } from '../src/validators/step.js'; export const mockBridgeQuotesSolErc20V1: QuoteResponseV1[] = [ { diff --git a/packages/bridge-controller/tests/mock-sse.ts b/packages/bridge-controller/tests/mock-sse.ts index c8846021aec..7c486510720 100644 --- a/packages/bridge-controller/tests/mock-sse.ts +++ b/packages/bridge-controller/tests/mock-sse.ts @@ -1,9 +1,9 @@ -// eslint-disable-next-line @typescript-eslint/no-shadow +import { jest } from '@jest/globals'; import { ReadableStream } from 'node:stream/web'; -import { flushPromises } from '../../../tests/helpers'; -import type { QuoteStreamCompleteData, TokenFeature } from '../src'; -import { QuoteResponseV1 } from '../src/validators/quote-response-v1'; +import { flushPromises } from '../../../tests/helpers.js'; +import type { QuoteStreamCompleteData, TokenFeature } from '../src/index.js'; +import { QuoteResponseV1 } from '../src/validators/quote-response-v1.js'; type MockSseResponse = { status: number; ok: boolean; body: ReadableStream }; From 5fda52c87e6ca35207cc470ce468c7422c34c8e2 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:45 +0200 Subject: [PATCH 059/115] ESLint fix and `jest` global import for bridge-status-controller --- ...e-status-controller-method-action-types.ts | 2 +- ...ridge-status-controller.batch-sell.test.ts | 15 ++++++------- ...e-status-controller.intent-manager.test.ts | 7 ++++--- .../bridge-status-controller.intent.test.ts | 15 ++++++------- .../src/bridge-status-controller.intent.ts | 18 ++++++++++------ .../src/bridge-status-controller.test.ts | 21 ++++++++++--------- .../src/bridge-status-controller.ts | 2 +- .../bridge-status-controller/src/constants.ts | 2 +- .../bridge-status-controller/src/index.ts | 16 +++++++------- .../src/quote-status-manager/errors.test.ts | 4 ++-- .../src/quote-status-manager/errors.ts | 2 +- .../quote-status-api-service.test.ts | 13 ++++++------ .../quote-status-api-service.ts | 18 ++++++++-------- .../quote-status-entry-store.test.ts | 13 ++++++++---- .../quote-status-entry-store.ts | 6 +++--- ...uote-status-get-with-retry-outcome.test.ts | 8 +++---- .../quote-status-get-with-retry-outcome.ts | 6 +++--- .../quote-status-state-fsm.test.ts | 6 ++++-- .../quote-status-state-fsm.ts | 4 ++-- ...e-status-update-with-retry-outcome.test.ts | 6 +++--- .../quote-status-update-with-retry-outcome.ts | 4 ++-- .../quotes-status-manager.test.ts | 15 ++++++------- .../quotes-status-manager.ts | 20 +++++++++--------- .../src/quote-status-manager/types.ts | 10 ++++----- .../src/quote-status-manager/utils.test.ts | 4 +++- .../quote-status-manager/validators.test.ts | 4 ++-- .../src/quote-status-manager/validators.ts | 6 +++--- .../src/strategy/batch-sell-strategy.ts | 8 +++---- .../src/strategy/batch-strategy.ts | 6 +++--- .../src/strategy/evm-strategy.ts | 14 ++++++------- .../src/strategy/index.ts | 12 +++++------ .../src/strategy/intent-strategy.ts | 14 ++++++------- .../src/strategy/non-evm-strategy.ts | 10 ++++----- .../src/strategy/types.ts | 2 +- .../bridge-status-controller/src/types.ts | 8 +++---- .../src/utils/accounts.ts | 2 +- .../src/utils/authentication.ts | 2 +- .../src/utils/bridge-status.test.ts | 18 +++++++++------- .../src/utils/bridge-status.ts | 12 +++++------ .../src/utils/bridge.ts | 2 +- .../src/utils/feature-flags.ts | 4 ++-- .../bridge-status-controller/src/utils/gas.ts | 2 +- .../src/utils/history.test.ts | 4 ++-- .../src/utils/history.ts | 4 ++-- .../src/utils/intent-api.test.ts | 9 ++++---- .../src/utils/intent-api.ts | 4 ++-- .../src/utils/keyring.ts | 2 +- .../src/utils/metrics.test.ts | 4 ++-- .../src/utils/metrics.ts | 6 +++--- .../src/utils/network.ts | 2 +- .../src/utils/snaps.test.ts | 7 ++++--- .../src/utils/snaps.ts | 2 +- .../src/utils/swap-received-amount.ts | 2 +- .../src/utils/trace.ts | 2 +- .../src/utils/transaction.test.ts | 11 +++++----- .../src/utils/transaction.ts | 10 ++++----- .../src/utils/validators.test.ts | 2 +- .../test/mock-batch-sell-erc20-erc20.ts | 2 +- 58 files changed, 231 insertions(+), 205 deletions(-) diff --git a/packages/bridge-status-controller/src/bridge-status-controller-method-action-types.ts b/packages/bridge-status-controller/src/bridge-status-controller-method-action-types.ts index d6a4aaf6488..f777b04111d 100644 --- a/packages/bridge-status-controller/src/bridge-status-controller-method-action-types.ts +++ b/packages/bridge-status-controller/src/bridge-status-controller-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { BridgeStatusController } from './bridge-status-controller'; +import type { BridgeStatusController } from './bridge-status-controller.js'; export type BridgeStatusControllerStartPollingForBridgeTxStatusAction = { type: `BridgeStatusController:startPollingForBridgeTxStatus`; diff --git a/packages/bridge-status-controller/src/bridge-status-controller.batch-sell.test.ts b/packages/bridge-status-controller/src/bridge-status-controller.batch-sell.test.ts index 8281f5754fb..690f567cf14 100644 --- a/packages/bridge-status-controller/src/bridge-status-controller.batch-sell.test.ts +++ b/packages/bridge-status-controller/src/bridge-status-controller.batch-sell.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { BridgeControllerMessenger, TxData, @@ -25,16 +26,16 @@ import { getTxMetasForBatch, mockBatchSellErc20Erc20, mockBatchSellTradesErc20Erc20, -} from '../test/mock-batch-sell-erc20-erc20'; -import { BridgeStatusController } from './bridge-status-controller'; -import { BRIDGE_STATUS_CONTROLLER_NAME } from './constants'; -import { BridgeClientId } from './types'; +} from '../test/mock-batch-sell-erc20-erc20.js'; +import { BridgeStatusController } from './bridge-status-controller.js'; +import { BRIDGE_STATUS_CONTROLLER_NAME } from './constants.js'; +import { BridgeClientId } from './types.js'; import type { BridgeHistoryItem, BridgeStatusControllerMessenger, -} from './types'; -import { getBatchSellHistoryItemsForTxHash } from './utils/history'; -import { shouldDisable7702 } from './utils/transaction'; +} from './types.js'; +import { getBatchSellHistoryItemsForTxHash } from './utils/history.js'; +import { shouldDisable7702 } from './utils/transaction.js'; const mockGenerateBatchId = jest.fn(); jest.mock('@metamask/transaction-controller', () => ({ diff --git a/packages/bridge-status-controller/src/bridge-status-controller.intent-manager.test.ts b/packages/bridge-status-controller/src/bridge-status-controller.intent-manager.test.ts index af2822d83c4..5c5ff3bc9d7 100644 --- a/packages/bridge-status-controller/src/bridge-status-controller.intent-manager.test.ts +++ b/packages/bridge-status-controller/src/bridge-status-controller.intent-manager.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; /* eslint-disable @typescript-eslint/no-explicit-any */ import { BridgeClientId, StatusTypes } from '@metamask/bridge-controller'; import { TransactionStatus } from '@metamask/transaction-controller'; import { IntentManager } from './bridge-status-controller.intent'; -import type { BridgeHistoryItem } from './types'; -import { postSubmitOrder } from './utils/intent-api'; -import { IntentOrderStatus } from './utils/validators'; +import type { BridgeHistoryItem } from './types.js'; +import { postSubmitOrder } from './utils/intent-api.js'; +import { IntentOrderStatus } from './utils/validators.js'; const makeHistoryItem = ( overrides?: Partial, diff --git a/packages/bridge-status-controller/src/bridge-status-controller.intent.test.ts b/packages/bridge-status-controller/src/bridge-status-controller.intent.test.ts index a4c6824222a..594bfad702e 100644 --- a/packages/bridge-status-controller/src/bridge-status-controller.intent.test.ts +++ b/packages/bridge-status-controller/src/bridge-status-controller.intent.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable @typescript-eslint/explicit-function-return-type */ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable jest/no-restricted-matchers */ @@ -15,13 +16,13 @@ import { TransactionType, } from '@metamask/transaction-controller'; -import { BridgeStatusController } from './bridge-status-controller'; -import { MAX_ATTEMPTS } from './constants'; -import type { BridgeStatusControllerState } from './types'; -import * as bridgeStatusUtils from './utils/bridge-status'; -import * as historyUtils from './utils/history'; -import * as intentApi from './utils/intent-api'; -import { IntentOrderStatus } from './utils/validators'; +import { BridgeStatusController } from './bridge-status-controller.js'; +import { MAX_ATTEMPTS } from './constants.js'; +import type { BridgeStatusControllerState } from './types.js'; +import * as bridgeStatusUtils from './utils/bridge-status.js'; +import * as historyUtils from './utils/history.js'; +import * as intentApi from './utils/intent-api.js'; +import { IntentOrderStatus } from './utils/validators.js'; jest.spyOn(intentApi, 'postSubmitOrder').mockImplementation(jest.fn()); jest diff --git a/packages/bridge-status-controller/src/bridge-status-controller.intent.ts b/packages/bridge-status-controller/src/bridge-status-controller.intent.ts index cf040c02300..1f9a42bb9fb 100644 --- a/packages/bridge-status-controller/src/bridge-status-controller.intent.ts +++ b/packages/bridge-status-controller/src/bridge-status-controller.intent.ts @@ -1,16 +1,22 @@ import { BridgeClientId, StatusTypes } from '@metamask/bridge-controller'; -import type { BridgeStatusControllerMessenger, FetchFunction } from './types'; -import type { BridgeHistoryItem } from './types'; -import { getJwt } from './utils/authentication'; +import type { + BridgeStatusControllerMessenger, + FetchFunction, +} from './types.js'; +import type { BridgeHistoryItem } from './types.js'; +import { getJwt } from './utils/authentication.js'; import { IntentApi, IntentApiImpl, IntentBridgeStatus, translateIntentOrderToBridgeStatus, -} from './utils/intent-api'; -import { getTransactionMetaById, updateTransaction } from './utils/transaction'; -import { IntentStatusResponse, IntentOrderStatus } from './utils/validators'; +} from './utils/intent-api.js'; +import { + getTransactionMetaById, + updateTransaction, +} from './utils/transaction.js'; +import { IntentStatusResponse, IntentOrderStatus } from './utils/validators.js'; type IntentStatuses = { orderStatus: IntentOrderStatus; diff --git a/packages/bridge-status-controller/src/bridge-status-controller.test.ts b/packages/bridge-status-controller/src/bridge-status-controller.test.ts index 89dc773d1af..45c1b293078 100644 --- a/packages/bridge-status-controller/src/bridge-status-controller.test.ts +++ b/packages/bridge-status-controller/src/bridge-status-controller.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable @typescript-eslint/explicit-function-return-type */ /* eslint-disable jest/no-restricted-matchers */ import { deriveStateFromMetadata } from '@metamask/base-controller'; @@ -42,19 +43,19 @@ import type { CaipAssetType } from '@metamask/utils'; import { numberToHex } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { flushPromises } from '../../../tests/helpers'; -import { BridgeStatusController } from './bridge-status-controller'; +import { flushPromises } from '../../../tests/helpers.js'; +import { BridgeStatusController } from './bridge-status-controller.js'; import { BRIDGE_STATUS_CONTROLLER_NAME, DEFAULT_BRIDGE_STATUS_CONTROLLER_STATE, DEFAULT_MAX_PENDING_HISTORY_ITEM_AGE_MS, MAX_ATTEMPTS, -} from './constants'; +} from './constants.js'; import { QUOTE_STATUS_BACKFILL_WINDOW_MS, QuoteStatusState, -} from './quote-status-manager/constants'; -import { BridgeClientId } from './types'; +} from './quote-status-manager/constants.js'; +import { BridgeClientId } from './types.js'; import type { BridgeId, StartPollingForBridgeTxStatusArgsSerialized, @@ -62,11 +63,11 @@ import type { BridgeStatusControllerState, BridgeStatusControllerMessenger, StatusResponse, -} from './types'; -import * as bridgeStatusUtils from './utils/bridge-status'; -import * as historyUtils from './utils/history'; -import * as metricsUtils from './utils/metrics'; -import * as transactionUtils from './utils/transaction'; +} from './types.js'; +import * as bridgeStatusUtils from './utils/bridge-status.js'; +import * as historyUtils from './utils/history.js'; +import * as metricsUtils from './utils/metrics.js'; +import * as transactionUtils from './utils/transaction.js'; type AllBridgeStatusControllerActions = MessengerActions; diff --git a/packages/bridge-status-controller/src/bridge-status-controller.ts b/packages/bridge-status-controller/src/bridge-status-controller.ts index 8be53c71a2e..0efd86b4858 100644 --- a/packages/bridge-status-controller/src/bridge-status-controller.ts +++ b/packages/bridge-status-controller/src/bridge-status-controller.ts @@ -31,7 +31,7 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; import { numberToHex } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { IntentManager } from './bridge-status-controller.intent'; +import { IntentManager } from './bridge-status-controller.intent.js'; import { ALLOWED_FEATURE_IDS_FOR_STATUS_EVENTS, BRIDGE_PROD_API_BASE_URL, diff --git a/packages/bridge-status-controller/src/constants.ts b/packages/bridge-status-controller/src/constants.ts index 5505c1d2060..c194658e892 100644 --- a/packages/bridge-status-controller/src/constants.ts +++ b/packages/bridge-status-controller/src/constants.ts @@ -1,6 +1,6 @@ import { FeatureId } from '@metamask/bridge-controller'; -import type { BridgeStatusControllerState } from './types'; +import type { BridgeStatusControllerState } from './types.js'; export const REFRESH_INTERVAL_MS = 10 * 1000; // 10 seconds export const MAX_ATTEMPTS = 7; // at 7 attempts, delay is 10:40, cumulative time is 21:10 diff --git a/packages/bridge-status-controller/src/index.ts b/packages/bridge-status-controller/src/index.ts index 4e1d845ce0d..78e3ecda008 100644 --- a/packages/bridge-status-controller/src/index.ts +++ b/packages/bridge-status-controller/src/index.ts @@ -2,8 +2,8 @@ export { QuoteStatusUpdateError, QuoteStatusGetError, -} from './quote-status-manager/errors'; -export { BaseQuoteStatusUpdateErrorTypes } from './quote-status-manager/constants'; +} from './quote-status-manager/errors.js'; +export { BaseQuoteStatusUpdateErrorTypes } from './quote-status-manager/constants.js'; // Export constants export { @@ -11,7 +11,7 @@ export { DEFAULT_BRIDGE_STATUS_CONTROLLER_STATE, BRIDGE_STATUS_CONTROLLER_NAME, MAX_ATTEMPTS, -} from './constants'; +} from './constants.js'; export type { FetchFunction, @@ -32,7 +32,7 @@ export type { StartPollingForBridgeTxStatusArgsSerialized, TokenAmountValuesSerialized, QuoteMetadataSerialized, -} from './types'; +} from './types.js'; export type { BridgeStatusControllerStartPollingForBridgeTxStatusAction, @@ -42,13 +42,13 @@ export type { BridgeStatusControllerSubmitIntentAction, BridgeStatusControllerRestartPollingForFailedAttemptsAction, BridgeStatusControllerGetBridgeHistoryItemByTxMetaIdAction, -} from './bridge-status-controller-method-action-types'; +} from './bridge-status-controller-method-action-types.js'; -export { BridgeId, BridgeStatusAction } from './types'; +export { BridgeId, BridgeStatusAction } from './types.js'; -export { BridgeStatusController } from './bridge-status-controller'; +export { BridgeStatusController } from './bridge-status-controller.js'; export { getBatchSellHistoryItemsForTxHash, isBatchSellHistoryItem, -} from './utils/history'; +} from './utils/history.js'; diff --git a/packages/bridge-status-controller/src/quote-status-manager/errors.test.ts b/packages/bridge-status-controller/src/quote-status-manager/errors.test.ts index ae0d637ad5e..5f024756f4f 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/errors.test.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/errors.test.ts @@ -1,5 +1,5 @@ -import { QuoteStatusUpdateBackendErrorType } from './constants'; -import { QuoteStatusGetError, QuoteStatusUpdateError } from './errors'; +import { QuoteStatusUpdateBackendErrorType } from './constants.js'; +import { QuoteStatusGetError, QuoteStatusUpdateError } from './errors.js'; describe('QuoteStatusUpdateError', () => { describe('constructor', () => { diff --git a/packages/bridge-status-controller/src/quote-status-manager/errors.ts b/packages/bridge-status-controller/src/quote-status-manager/errors.ts index 01fbcd6a788..24c3c0a4eec 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/errors.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/errors.ts @@ -1,7 +1,7 @@ import { QuoteStatusGetErrorDetails, QuoteStatusUpdateErrorDetails, -} from './types'; +} from './types.js'; /** * Error thrown for quote status update failures. diff --git a/packages/bridge-status-controller/src/quote-status-manager/quote-status-api-service.test.ts b/packages/bridge-status-controller/src/quote-status-manager/quote-status-api-service.test.ts index 070ff4b761d..49abbee0885 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/quote-status-api-service.test.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/quote-status-api-service.test.ts @@ -1,18 +1,19 @@ +import { jest } from '@jest/globals'; import { StatusTypes } from '@metamask/bridge-controller'; -import { BridgeClientId, BridgeStatusControllerMessenger } from '../types'; +import { BridgeClientId, BridgeStatusControllerMessenger } from '../types.js'; import { QuoteStatusUpdateBackendErrorType, QuoteStatusBackendStatus, QuoteStatusFetchWithRetryOutcomeType, -} from './constants'; -import { QuoteStatusGetError, QuoteStatusUpdateError } from './errors'; -import { QuoteStatusApiService } from './quote-status-api-service'; +} from './constants.js'; +import { QuoteStatusGetError, QuoteStatusUpdateError } from './errors.js'; +import { QuoteStatusApiService } from './quote-status-api-service.js'; import type { QuoteStatusApiServiceOptions, QuoteStatusGetResponse, -} from './types'; -import * as validators from './validators'; +} from './types.js'; +import * as validators from './validators.js'; const API_BASE_URL = 'https://bridge.api.test'; diff --git a/packages/bridge-status-controller/src/quote-status-manager/quote-status-api-service.ts b/packages/bridge-status-controller/src/quote-status-manager/quote-status-api-service.ts index 937ff529a5c..21dc9a836e2 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/quote-status-api-service.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/quote-status-api-service.ts @@ -1,26 +1,26 @@ import { getClientHeaders } from '@metamask/bridge-controller'; import { StructError } from '@metamask/superstruct'; -import { BridgeClientId, BridgeStatusControllerMessenger } from '../types'; -import { getJwt } from '../utils/authentication'; +import { BridgeClientId, BridgeStatusControllerMessenger } from '../types.js'; +import { getJwt } from '../utils/authentication.js'; import { QuoteStatusBackendStatus, QuoteStatusUpdateRetryableBackendTypes, QuoteStatusFetchWithRetryOutcomeType, -} from './constants'; -import { QuoteStatusGetError, QuoteStatusUpdateError } from './errors'; -import { QuoteStatusGetWithRetryOutcome } from './quote-status-get-with-retry-outcome'; -import { QuoteStatusUpdateWithRetryOutcome } from './quote-status-update-with-retry-outcome'; +} from './constants.js'; +import { QuoteStatusGetError, QuoteStatusUpdateError } from './errors.js'; +import { QuoteStatusGetWithRetryOutcome } from './quote-status-get-with-retry-outcome.js'; +import { QuoteStatusUpdateWithRetryOutcome } from './quote-status-update-with-retry-outcome.js'; import { QuoteStatusApiServiceOptions, QuoteStatusGetResponse, QuoteStatusUpdateResponse, -} from './types'; -import { sleep } from './utils'; +} from './types.js'; +import { sleep } from './utils.js'; import { validateQuoteStatusGetResponse, validateQuoteStatusUpdateResponse, -} from './validators'; +} from './validators.js'; /** * Service responsible for calling bridge quote status update APIs. diff --git a/packages/bridge-status-controller/src/quote-status-manager/quote-status-entry-store.test.ts b/packages/bridge-status-controller/src/quote-status-manager/quote-status-entry-store.test.ts index a077941a150..14e35ebb350 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/quote-status-entry-store.test.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/quote-status-entry-store.test.ts @@ -1,7 +1,12 @@ -import { QuoteStatusState } from './constants'; -import { QuoteStatusEntryStore } from './quote-status-entry-store'; -import { QuoteStatusStateFsm } from './quote-status-state-fsm'; -import type { QuoteStatusPersistEntry, QuoteStatusRuntimeEntry } from './types'; +import { jest } from '@jest/globals'; + +import { QuoteStatusState } from './constants.js'; +import { QuoteStatusEntryStore } from './quote-status-entry-store.js'; +import { QuoteStatusStateFsm } from './quote-status-state-fsm.js'; +import type { + QuoteStatusPersistEntry, + QuoteStatusRuntimeEntry, +} from './types.js'; const TTL_MS = 1000; const NOW = 1_000_000; diff --git a/packages/bridge-status-controller/src/quote-status-manager/quote-status-entry-store.ts b/packages/bridge-status-controller/src/quote-status-manager/quote-status-entry-store.ts index bc72760892f..3aaf15dc175 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/quote-status-entry-store.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/quote-status-entry-store.ts @@ -1,10 +1,10 @@ -import { QuoteStatusState } from './constants'; -import { QuoteStatusStateFsm } from './quote-status-state-fsm'; +import { QuoteStatusState } from './constants.js'; +import { QuoteStatusStateFsm } from './quote-status-state-fsm.js'; import { QuoteStatusEntryStoreOptions, QuoteStatusPersistEntry, QuoteStatusRuntimeEntry, -} from './types'; +} from './types.js'; /** * In-memory store for quote status update entries. diff --git a/packages/bridge-status-controller/src/quote-status-manager/quote-status-get-with-retry-outcome.test.ts b/packages/bridge-status-controller/src/quote-status-manager/quote-status-get-with-retry-outcome.test.ts index 080c4530094..98fce6ba968 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/quote-status-get-with-retry-outcome.test.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/quote-status-get-with-retry-outcome.test.ts @@ -1,9 +1,9 @@ import { StatusTypes } from '@metamask/bridge-controller'; -import { QuoteStatusFetchWithRetryOutcomeType } from './constants'; -import { QuoteStatusGetError } from './errors'; -import { QuoteStatusGetWithRetryOutcome } from './quote-status-get-with-retry-outcome'; -import type { QuoteStatusGetResponse } from './types'; +import { QuoteStatusFetchWithRetryOutcomeType } from './constants.js'; +import { QuoteStatusGetError } from './errors.js'; +import { QuoteStatusGetWithRetryOutcome } from './quote-status-get-with-retry-outcome.js'; +import type { QuoteStatusGetResponse } from './types.js'; describe('QuoteStatusGetWithRetryOutcome', () => { it('exposes the outcome type', () => { diff --git a/packages/bridge-status-controller/src/quote-status-manager/quote-status-get-with-retry-outcome.ts b/packages/bridge-status-controller/src/quote-status-manager/quote-status-get-with-retry-outcome.ts index 0d14afdf1fd..cd27bfdc9dd 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/quote-status-get-with-retry-outcome.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/quote-status-get-with-retry-outcome.ts @@ -1,6 +1,6 @@ -import { QuoteStatusFetchWithRetryOutcomeType } from './constants'; -import { QuoteStatusGetError } from './errors'; -import { QuoteStatusGetResponse } from './types'; +import { QuoteStatusFetchWithRetryOutcomeType } from './constants.js'; +import { QuoteStatusGetError } from './errors.js'; +import { QuoteStatusGetResponse } from './types.js'; /** * Result of a retrying quote status fetch diff --git a/packages/bridge-status-controller/src/quote-status-manager/quote-status-state-fsm.test.ts b/packages/bridge-status-controller/src/quote-status-manager/quote-status-state-fsm.test.ts index 14bc03a71a8..523a5242ded 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/quote-status-state-fsm.test.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/quote-status-state-fsm.test.ts @@ -1,5 +1,7 @@ -import { QuoteStatusState } from './constants'; -import { QuoteStatusStateFsm } from './quote-status-state-fsm'; +import { jest } from '@jest/globals'; + +import { QuoteStatusState } from './constants.js'; +import { QuoteStatusStateFsm } from './quote-status-state-fsm.js'; describe('QuoteStatusStateFsm', () => { describe('constructor', () => { diff --git a/packages/bridge-status-controller/src/quote-status-manager/quote-status-state-fsm.ts b/packages/bridge-status-controller/src/quote-status-manager/quote-status-state-fsm.ts index 49ad62a5cfd..936efb62c78 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/quote-status-state-fsm.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/quote-status-state-fsm.ts @@ -1,11 +1,11 @@ import { AllowedQuoteStatusStateTransitions, QuoteStatusState, -} from './constants'; +} from './constants.js'; import type { QuoteStatusStateUpdateEvent, QuoteStatusStateUpdateListener, -} from './types'; +} from './types.js'; /** * Finite state machine that enforces forward-only quote status transitions. diff --git a/packages/bridge-status-controller/src/quote-status-manager/quote-status-update-with-retry-outcome.test.ts b/packages/bridge-status-controller/src/quote-status-manager/quote-status-update-with-retry-outcome.test.ts index c13b2cd34c9..9eff74ae16d 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/quote-status-update-with-retry-outcome.test.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/quote-status-update-with-retry-outcome.test.ts @@ -1,9 +1,9 @@ import { QuoteStatusUpdateBackendErrorType, QuoteStatusFetchWithRetryOutcomeType, -} from './constants'; -import { QuoteStatusUpdateWithRetryOutcome } from './quote-status-update-with-retry-outcome'; -import type { QuoteStatusUpdateResponse } from './types'; +} from './constants.js'; +import { QuoteStatusUpdateWithRetryOutcome } from './quote-status-update-with-retry-outcome.js'; +import type { QuoteStatusUpdateResponse } from './types.js'; describe('QuoteStatusUpdateWithRetryOutcome', () => { it('exposes the outcome type', () => { diff --git a/packages/bridge-status-controller/src/quote-status-manager/quote-status-update-with-retry-outcome.ts b/packages/bridge-status-controller/src/quote-status-manager/quote-status-update-with-retry-outcome.ts index 8edd374d64a..36634dc671f 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/quote-status-update-with-retry-outcome.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/quote-status-update-with-retry-outcome.ts @@ -1,5 +1,5 @@ -import { QuoteStatusFetchWithRetryOutcomeType } from './constants'; -import { QuoteStatusUpdateResponse } from './types'; +import { QuoteStatusFetchWithRetryOutcomeType } from './constants.js'; +import { QuoteStatusUpdateResponse } from './types.js'; /** * Result of a retrying quote status update diff --git a/packages/bridge-status-controller/src/quote-status-manager/quotes-status-manager.test.ts b/packages/bridge-status-controller/src/quote-status-manager/quotes-status-manager.test.ts index 2338f2903dd..3341d07b9f8 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/quotes-status-manager.test.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/quotes-status-manager.test.ts @@ -1,24 +1,25 @@ +import { jest } from '@jest/globals'; import { TransactionStatus, TransactionType, } from '@metamask/transaction-controller'; import type { TransactionMeta } from '@metamask/transaction-controller'; -import { BridgeClientId, BridgeStatusControllerMessenger } from '../types'; +import { BridgeClientId, BridgeStatusControllerMessenger } from '../types.js'; import { QuoteStatusState, QuoteStatusUpdateBackendErrorType, QuoteStatusBackendStatus, QuoteStatusFetchWithRetryOutcomeType, -} from './constants'; -import { QuoteStatusApiService } from './quote-status-api-service'; -import { QuoteStatusGetWithRetryOutcome } from './quote-status-get-with-retry-outcome'; -import { QuoteStatusUpdateWithRetryOutcome } from './quote-status-update-with-retry-outcome'; -import { QuoteStatusManager } from './quotes-status-manager'; +} from './constants.js'; +import { QuoteStatusApiService } from './quote-status-api-service.js'; +import { QuoteStatusGetWithRetryOutcome } from './quote-status-get-with-retry-outcome.js'; +import { QuoteStatusUpdateWithRetryOutcome } from './quote-status-update-with-retry-outcome.js'; +import { QuoteStatusManager } from './quotes-status-manager.js'; import type { QuoteStatusPersistEntry, QuoteStatusUpdateResponse, -} from './types'; +} from './types.js'; jest.mock('./quote-status-api-service'); diff --git a/packages/bridge-status-controller/src/quote-status-manager/quotes-status-manager.ts b/packages/bridge-status-controller/src/quote-status-manager/quotes-status-manager.ts index 1998177b281..dd288df3b2b 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/quotes-status-manager.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/quotes-status-manager.ts @@ -1,25 +1,25 @@ import { TransactionStatus } from '@metamask/transaction-controller'; -import { BridgeClientId, BridgeStatusControllerMessenger } from '../types'; +import { BridgeClientId, BridgeStatusControllerMessenger } from '../types.js'; import { getTransactionMetaById, hasNestedSwapTransactions, isCrossChainTx, -} from '../utils/transaction'; +} from '../utils/transaction.js'; import { QuoteStatusState, QuoteStatusStateToBackendStatus, QuoteStatusUpdateBackendErrorType, QuoteStatusBackendStatus, QuoteStatusFetchWithRetryOutcomeType, -} from './constants'; -import { QuoteStatusUpdateError } from './errors'; -import { QuoteStatusApiService } from './quote-status-api-service'; -import { QuoteStatusEntryStore } from './quote-status-entry-store'; -import { QuoteStatusGetWithRetryOutcome } from './quote-status-get-with-retry-outcome'; -import { QuoteStatusStateFsm } from './quote-status-state-fsm'; -import { QuoteStatusUpdateWithRetryOutcome } from './quote-status-update-with-retry-outcome'; -import { QuoteStatusPersistEntry, QuoteStatusRuntimeEntry } from './types'; +} from './constants.js'; +import { QuoteStatusUpdateError } from './errors.js'; +import { QuoteStatusApiService } from './quote-status-api-service.js'; +import { QuoteStatusEntryStore } from './quote-status-entry-store.js'; +import { QuoteStatusGetWithRetryOutcome } from './quote-status-get-with-retry-outcome.js'; +import { QuoteStatusStateFsm } from './quote-status-state-fsm.js'; +import { QuoteStatusUpdateWithRetryOutcome } from './quote-status-update-with-retry-outcome.js'; +import { QuoteStatusPersistEntry, QuoteStatusRuntimeEntry } from './types.js'; /** * Tracks bridge/swap quotes through their lifecycle and keeps the backend in diff --git a/packages/bridge-status-controller/src/quote-status-manager/types.ts b/packages/bridge-status-controller/src/quote-status-manager/types.ts index d1146c5d3cb..75163d1f762 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/types.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/types.ts @@ -1,17 +1,17 @@ import { BridgeClientId } from '@metamask/bridge-controller'; import { Infer } from '@metamask/superstruct'; -import { BridgeStatusControllerMessenger } from '../types'; +import { BridgeStatusControllerMessenger } from '../types.js'; import { QuoteStatusState, QuoteStatusUpdateBackendErrorType, -} from './constants'; -import { QuoteStatusGetError, QuoteStatusUpdateError } from './errors'; -import { QuoteStatusStateFsm } from './quote-status-state-fsm'; +} from './constants.js'; +import { QuoteStatusGetError, QuoteStatusUpdateError } from './errors.js'; +import { QuoteStatusStateFsm } from './quote-status-state-fsm.js'; import { QuoteStatusGetResponseSchema, QuoteStatusUpdateResponseSchema, -} from './validators'; +} from './validators.js'; /** * Persisted queue entry describing a single quote status update attempt. diff --git a/packages/bridge-status-controller/src/quote-status-manager/utils.test.ts b/packages/bridge-status-controller/src/quote-status-manager/utils.test.ts index 8cc83534daa..fc5cb53f1df 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/utils.test.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/utils.test.ts @@ -1,4 +1,6 @@ -import { sleep } from './utils'; +import { jest } from '@jest/globals'; + +import { sleep } from './utils.js'; describe('sleep', () => { beforeEach(() => { diff --git a/packages/bridge-status-controller/src/quote-status-manager/validators.test.ts b/packages/bridge-status-controller/src/quote-status-manager/validators.test.ts index d57a6d93dcd..17f4629f8f5 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/validators.test.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/validators.test.ts @@ -3,11 +3,11 @@ import { StatusTypes } from '@metamask/bridge-controller'; import { QuoteStatusBackendStatus, QuoteStatusUpdateBackendErrorType, -} from './constants'; +} from './constants.js'; import { validateQuoteStatusGetResponse, validateQuoteStatusUpdateResponse, -} from './validators'; +} from './validators.js'; describe('quote-status validators', () => { describe('validateQuoteStatusUpdateResponse', () => { diff --git a/packages/bridge-status-controller/src/quote-status-manager/validators.ts b/packages/bridge-status-controller/src/quote-status-manager/validators.ts index 9c530c74d57..43f35870e61 100644 --- a/packages/bridge-status-controller/src/quote-status-manager/validators.ts +++ b/packages/bridge-status-controller/src/quote-status-manager/validators.ts @@ -8,13 +8,13 @@ import { optional, } from '@metamask/superstruct'; -import { StatusResponseSchema } from '../utils/validators'; +import { StatusResponseSchema } from '../utils/validators.js'; import { BaseQuoteStatusUpdateErrorTypes, QuoteStatusUpdateBackendOnChainMismatchTypes, QuoteStatusBackendValues, -} from './constants'; -import { QuoteStatusGetResponse, QuoteStatusUpdateResponse } from './types'; +} from './constants.js'; +import { QuoteStatusGetResponse, QuoteStatusUpdateResponse } from './types.js'; const QuoteStatusUpdateResponseWithCurrentStatusSchema = type({ statusCode: number(), diff --git a/packages/bridge-status-controller/src/strategy/batch-sell-strategy.ts b/packages/bridge-status-controller/src/strategy/batch-sell-strategy.ts index 27b1f2c4626..b86530ae6c6 100644 --- a/packages/bridge-status-controller/src/strategy/batch-sell-strategy.ts +++ b/packages/bridge-status-controller/src/strategy/batch-sell-strategy.ts @@ -4,7 +4,7 @@ import { TransactionType, } from '@metamask/transaction-controller'; -import { QuoteAndTxMetadata } from '../types'; +import { QuoteAndTxMetadata } from '../types.js'; import { findAllTransactionsInBatch, getAddTransactionBatchParams, @@ -13,9 +13,9 @@ import { isTradeTx, shouldDisable7702, toQuoteAndTxMetadataBatch, -} from '../utils/transaction'; -import { SubmitStep } from './types'; -import type { SubmitStrategyParams, SubmitStepResult } from './types'; +} from '../utils/transaction.js'; +import { SubmitStep } from './types.js'; +import type { SubmitStrategyParams, SubmitStepResult } from './types.js'; const getHistoryKeyForQuote = ({ quoteResponse: { quoteId, quote }, diff --git a/packages/bridge-status-controller/src/strategy/batch-strategy.ts b/packages/bridge-status-controller/src/strategy/batch-strategy.ts index 88f7357e69e..bede6f8c892 100644 --- a/packages/bridge-status-controller/src/strategy/batch-strategy.ts +++ b/packages/bridge-status-controller/src/strategy/batch-strategy.ts @@ -7,9 +7,9 @@ import { isTradeTx, shouldDisable7702, toQuoteAndTxMetadata, -} from '../utils/transaction'; -import { SubmitStep } from './types'; -import type { SubmitStrategyParams, SubmitStepResult } from './types'; +} from '../utils/transaction.js'; +import { SubmitStep } from './types.js'; +import type { SubmitStrategyParams, SubmitStepResult } from './types.js'; /** * Submits batched EVM transactions to the TransactionController diff --git a/packages/bridge-status-controller/src/strategy/evm-strategy.ts b/packages/bridge-status-controller/src/strategy/evm-strategy.ts index a3f33253706..97f4bf54f75 100644 --- a/packages/bridge-status-controller/src/strategy/evm-strategy.ts +++ b/packages/bridge-status-controller/src/strategy/evm-strategy.ts @@ -7,10 +7,10 @@ import { TransactionType, } from '@metamask/transaction-controller'; -import { BridgeStatusControllerMessenger } from '../types'; -import { getAccountByAddress } from '../utils/accounts'; -import { getNetworkClientIdByChainId } from '../utils/network'; -import { getApprovalTraceParams } from '../utils/trace'; +import { BridgeStatusControllerMessenger } from '../types.js'; +import { getAccountByAddress } from '../utils/accounts.js'; +import { getNetworkClientIdByChainId } from '../utils/network.js'; +import { getApprovalTraceParams } from '../utils/trace.js'; import { addTransaction, generateActionId, @@ -18,9 +18,9 @@ import { handleMobileHardwareWalletDelay, toTransactionParams, waitForTxConfirmation, -} from '../utils/transaction'; -import { SubmitStep } from './types'; -import type { SubmitStrategyParams, SubmitStepResult } from './types'; +} from '../utils/transaction.js'; +import { SubmitStep } from './types.js'; +import type { SubmitStrategyParams, SubmitStepResult } from './types.js'; /** * Submits a single tx to the TransactionController and returns the txMetaId diff --git a/packages/bridge-status-controller/src/strategy/index.ts b/packages/bridge-status-controller/src/strategy/index.ts index 53500b9aba3..22b8ed10f68 100644 --- a/packages/bridge-status-controller/src/strategy/index.ts +++ b/packages/bridge-status-controller/src/strategy/index.ts @@ -14,12 +14,12 @@ import { TxData, } from '@metamask/bridge-controller'; -import { submitBatchSellHandler } from './batch-sell-strategy'; -import { submitBatchHandler } from './batch-strategy'; -import { submitEvmHandler as defaultSubmitHandler } from './evm-strategy'; -import { submitIntentHandler } from './intent-strategy'; -import { submitNonEvmHandler } from './non-evm-strategy'; -import type { SubmitStrategyParams, SubmitStepResult } from './types'; +import { submitBatchSellHandler } from './batch-sell-strategy.js'; +import { submitBatchHandler } from './batch-strategy.js'; +import { submitEvmHandler as defaultSubmitHandler } from './evm-strategy.js'; +import { submitIntentHandler } from './intent-strategy.js'; +import { submitNonEvmHandler } from './non-evm-strategy.js'; +import type { SubmitStrategyParams, SubmitStepResult } from './types.js'; const validateParams = < TxDataType extends diff --git a/packages/bridge-status-controller/src/strategy/intent-strategy.ts b/packages/bridge-status-controller/src/strategy/intent-strategy.ts index ef35263cfda..19a95b830bd 100644 --- a/packages/bridge-status-controller/src/strategy/intent-strategy.ts +++ b/packages/bridge-status-controller/src/strategy/intent-strategy.ts @@ -6,20 +6,20 @@ import { } from '@metamask/bridge-controller'; import { TransactionType } from '@metamask/transaction-controller'; -import { getJwt } from '../utils/authentication'; +import { getJwt } from '../utils/authentication.js'; import { getIntentFromQuote, mapIntentOrderStatusToTransactionStatus, postSubmitOrder, -} from '../utils/intent-api'; -import { signTypedMessage } from '../utils/keyring'; -import { getNetworkClientIdByChainId } from '../utils/network'; +} from '../utils/intent-api.js'; +import { signTypedMessage } from '../utils/keyring.js'; +import { getNetworkClientIdByChainId } from '../utils/network.js'; import { addSyntheticTransaction, waitForTxConfirmation, -} from '../utils/transaction'; -import { handleEvmApprovals } from './evm-strategy'; -import { SubmitStrategyParams, SubmitStepResult, SubmitStep } from './types'; +} from '../utils/transaction.js'; +import { handleEvmApprovals } from './evm-strategy.js'; +import { SubmitStrategyParams, SubmitStepResult, SubmitStep } from './types.js'; /** * Submits a synthetic EVM transaction to the TransactionController in order to display the intent order's diff --git a/packages/bridge-status-controller/src/strategy/non-evm-strategy.ts b/packages/bridge-status-controller/src/strategy/non-evm-strategy.ts index 29a22dcfd6d..cda6d5c2ad4 100644 --- a/packages/bridge-status-controller/src/strategy/non-evm-strategy.ts +++ b/packages/bridge-status-controller/src/strategy/non-evm-strategy.ts @@ -7,11 +7,11 @@ import type { TxData, } from '@metamask/bridge-controller'; -import { handleNonEvmTx } from '../utils/snaps'; -import { getApprovalTraceParams } from '../utils/trace'; -import { handleApprovalDelay } from '../utils/transaction'; -import { SubmitStep } from './types'; -import type { SubmitStrategyParams, SubmitStepResult } from './types'; +import { handleNonEvmTx } from '../utils/snaps.js'; +import { getApprovalTraceParams } from '../utils/trace.js'; +import { handleApprovalDelay } from '../utils/transaction.js'; +import { SubmitStep } from './types.js'; +import type { SubmitStrategyParams, SubmitStepResult } from './types.js'; /** * Submits the approval transaction for a non-EVM transaction if present diff --git a/packages/bridge-status-controller/src/strategy/types.ts b/packages/bridge-status-controller/src/strategy/types.ts index c45024a9cb4..2d56a7f8d9a 100644 --- a/packages/bridge-status-controller/src/strategy/types.ts +++ b/packages/bridge-status-controller/src/strategy/types.ts @@ -19,7 +19,7 @@ import type { FetchFunction, QuoteAndTxMetadata, StartPollingForBridgeTxStatusArgs, -} from '../types'; +} from '../types.js'; export enum SubmitStep { /** diff --git a/packages/bridge-status-controller/src/types.ts b/packages/bridge-status-controller/src/types.ts index 0f02fce8c76..8a76a77a167 100644 --- a/packages/bridge-status-controller/src/types.ts +++ b/packages/bridge-status-controller/src/types.ts @@ -43,10 +43,10 @@ import type { } from '@metamask/transaction-controller'; import type { CaipAssetType } from '@metamask/utils'; -import type { BridgeStatusControllerMethodActions } from './bridge-status-controller-method-action-types'; -import { BRIDGE_STATUS_CONTROLLER_NAME } from './constants'; -import { QuoteStatusState } from './quote-status-manager/constants'; -import { StatusResponseSchema } from './utils/validators'; +import type { BridgeStatusControllerMethodActions } from './bridge-status-controller-method-action-types.js'; +import { BRIDGE_STATUS_CONTROLLER_NAME } from './constants.js'; +import { QuoteStatusState } from './quote-status-manager/constants.js'; +import { StatusResponseSchema } from './utils/validators.js'; // All fields need to be types not interfaces, same with their children fields // o/w you get a type error diff --git a/packages/bridge-status-controller/src/utils/accounts.ts b/packages/bridge-status-controller/src/utils/accounts.ts index 41343aa5a1f..01b56075ad6 100644 --- a/packages/bridge-status-controller/src/utils/accounts.ts +++ b/packages/bridge-status-controller/src/utils/accounts.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/explicit-function-return-type */ -import { BridgeStatusControllerMessenger } from '../types'; +import { BridgeStatusControllerMessenger } from '../types.js'; export const getAccountByAddress = ( messenger: BridgeStatusControllerMessenger, diff --git a/packages/bridge-status-controller/src/utils/authentication.ts b/packages/bridge-status-controller/src/utils/authentication.ts index 0b9cbd68c3d..9c78fb8349b 100644 --- a/packages/bridge-status-controller/src/utils/authentication.ts +++ b/packages/bridge-status-controller/src/utils/authentication.ts @@ -1,4 +1,4 @@ -import type { BridgeStatusControllerMessenger } from '../types'; +import type { BridgeStatusControllerMessenger } from '../types.js'; export const getJwt = async ( messenger: BridgeStatusControllerMessenger, diff --git a/packages/bridge-status-controller/src/utils/bridge-status.test.ts b/packages/bridge-status-controller/src/utils/bridge-status.test.ts index df5680bb658..292e24a8aad 100644 --- a/packages/bridge-status-controller/src/utils/bridge-status.test.ts +++ b/packages/bridge-status-controller/src/utils/bridge-status.test.ts @@ -1,17 +1,19 @@ -import { BRIDGE_PROD_API_BASE_URL, REFRESH_INTERVAL_MS } from '../constants'; -import { QuoteStatusFetchWithRetryOutcomeType } from '../quote-status-manager/constants'; -import { QuoteStatusGetError } from '../quote-status-manager/errors'; -import { QuoteStatusGetWithRetryOutcome } from '../quote-status-manager/quote-status-get-with-retry-outcome'; -import type { QuoteStatusManager } from '../quote-status-manager/quotes-status-manager'; -import { BridgeClientId } from '../types'; -import type { StatusRequestWithSrcTxHash, FetchFunction } from '../types'; +import { jest } from '@jest/globals'; + +import { BRIDGE_PROD_API_BASE_URL, REFRESH_INTERVAL_MS } from '../constants.js'; +import { QuoteStatusFetchWithRetryOutcomeType } from '../quote-status-manager/constants.js'; +import { QuoteStatusGetError } from '../quote-status-manager/errors.js'; +import { QuoteStatusGetWithRetryOutcome } from '../quote-status-manager/quote-status-get-with-retry-outcome.js'; +import type { QuoteStatusManager } from '../quote-status-manager/quotes-status-manager.js'; +import { BridgeClientId } from '../types.js'; +import type { StatusRequestWithSrcTxHash, FetchFunction } from '../types.js'; import { fetchBridgeQuoteStatus, fetchBridgeTxStatus, getBridgeStatusUrl, getStatusRequestDto, shouldSkipFetchDueToFetchFailures, -} from './bridge-status'; +} from './bridge-status.js'; describe('utils', () => { const mockStatusRequest: StatusRequestWithSrcTxHash = { diff --git a/packages/bridge-status-controller/src/utils/bridge-status.ts b/packages/bridge-status-controller/src/utils/bridge-status.ts index f97a1e6bf65..15040f27032 100644 --- a/packages/bridge-status-controller/src/utils/bridge-status.ts +++ b/packages/bridge-status-controller/src/utils/bridge-status.ts @@ -7,8 +7,8 @@ import type { Quote, QuoteResponse } from '@metamask/bridge-controller'; import type { Provider } from '@metamask/network-controller'; import { StructError } from '@metamask/superstruct'; -import { REFRESH_INTERVAL_MS } from '../constants'; -import { QuoteStatusManager } from '../quote-status-manager/quotes-status-manager'; +import { REFRESH_INTERVAL_MS } from '../constants.js'; +import { QuoteStatusManager } from '../quote-status-manager/quotes-status-manager.js'; import type { StatusResponse, StatusRequestWithSrcTxHash, @@ -17,10 +17,10 @@ import type { BridgeHistoryItem, StatusRequest, BridgeStatusControllerMessenger, -} from '../types'; -import { isHistoryItemTooOld } from './history'; -import { getNetworkClientByChainId } from './network'; -import { validateBridgeStatusResponse } from './validators'; +} from '../types.js'; +import { isHistoryItemTooOld } from './history.js'; +import { getNetworkClientByChainId } from './network.js'; +import { validateBridgeStatusResponse } from './validators.js'; export const getBridgeStatusUrl = (bridgeApiBaseUrl: string): string => `${bridgeApiBaseUrl}/getTxStatus`; diff --git a/packages/bridge-status-controller/src/utils/bridge.ts b/packages/bridge-status-controller/src/utils/bridge.ts index 01aa557264e..6e9a1154262 100644 --- a/packages/bridge-status-controller/src/utils/bridge.ts +++ b/packages/bridge-status-controller/src/utils/bridge.ts @@ -5,7 +5,7 @@ import { RequiredEventContextFromClient, } from '@metamask/bridge-controller'; -import { BridgeStatusControllerMessenger } from '../types'; +import { BridgeStatusControllerMessenger } from '../types.js'; export const stopPollingForQuotes = ( messenger: BridgeStatusControllerMessenger, diff --git a/packages/bridge-status-controller/src/utils/feature-flags.ts b/packages/bridge-status-controller/src/utils/feature-flags.ts index 7194f9cfbe7..19452e9251b 100644 --- a/packages/bridge-status-controller/src/utils/feature-flags.ts +++ b/packages/bridge-status-controller/src/utils/feature-flags.ts @@ -1,7 +1,7 @@ import { getBridgeFeatureFlags } from '@metamask/bridge-controller'; -import { DEFAULT_MAX_PENDING_HISTORY_ITEM_AGE_MS } from '../constants'; -import { BridgeStatusControllerMessenger } from '../types'; +import { DEFAULT_MAX_PENDING_HISTORY_ITEM_AGE_MS } from '../constants.js'; +import { BridgeStatusControllerMessenger } from '../types.js'; export const getMaxPendingHistoryItemAgeMs = ( messenger: BridgeStatusControllerMessenger, diff --git a/packages/bridge-status-controller/src/utils/gas.ts b/packages/bridge-status-controller/src/utils/gas.ts index b5afdfe0abf..54d8e7690ae 100644 --- a/packages/bridge-status-controller/src/utils/gas.ts +++ b/packages/bridge-status-controller/src/utils/gas.ts @@ -3,7 +3,7 @@ import type { TokenAmountValues } from '@metamask/bridge-controller'; import type { TransactionReceipt } from '@metamask/transaction-controller'; import { BigNumber } from 'bignumber.js'; -import type { BridgeHistoryItem } from '../types'; +import type { BridgeHistoryItem } from '../types.js'; const calcGasInHexWei = (gasLimit?: string, gasPrice?: string) => { return gasLimit && gasPrice diff --git a/packages/bridge-status-controller/src/utils/history.test.ts b/packages/bridge-status-controller/src/utils/history.test.ts index 695e9d4ab32..1f5a0a75004 100644 --- a/packages/bridge-status-controller/src/utils/history.test.ts +++ b/packages/bridge-status-controller/src/utils/history.test.ts @@ -6,12 +6,12 @@ import type { BridgeHistoryItem, StartPollingForBridgeTxStatusArgsSerialized, StatusResponse, -} from '../types'; +} from '../types.js'; import { getHistoryKey, getInitialHistoryItem, rekeyHistoryItemInState, -} from './history'; +} from './history.js'; describe('History Utils', () => { describe('rekeyHistoryItemInState', () => { diff --git a/packages/bridge-status-controller/src/utils/history.ts b/packages/bridge-status-controller/src/utils/history.ts index 3eb541926a6..c504b9de75f 100644 --- a/packages/bridge-status-controller/src/utils/history.ts +++ b/packages/bridge-status-controller/src/utils/history.ts @@ -11,8 +11,8 @@ import type { BridgeStatusControllerMessenger, BridgeStatusControllerState, StartPollingForBridgeTxStatusArgsSerialized, -} from '../types'; -import { getMaxPendingHistoryItemAgeMs } from './feature-flags'; +} from '../types.js'; +import { getMaxPendingHistoryItemAgeMs } from './feature-flags.js'; const updateHistoryItem = ( oldHistoryItem: BridgeHistoryItem, diff --git a/packages/bridge-status-controller/src/utils/intent-api.test.ts b/packages/bridge-status-controller/src/utils/intent-api.test.ts index caaa42aa1d5..a3dae7849ed 100644 --- a/packages/bridge-status-controller/src/utils/intent-api.test.ts +++ b/packages/bridge-status-controller/src/utils/intent-api.test.ts @@ -1,17 +1,18 @@ +import { jest } from '@jest/globals'; /* eslint-disable @typescript-eslint/no-explicit-any */ import { BridgeClientId, StatusTypes } from '@metamask/bridge-controller'; import { TransactionStatus } from '@metamask/transaction-controller'; -import type { FetchFunction } from '../types'; +import type { FetchFunction } from '../types.js'; import { getIntentFromQuote, IntentApiImpl, mapIntentOrderStatusToTransactionStatus, postSubmitOrder, translateIntentOrderToBridgeStatus, -} from './intent-api'; -import type { IntentSubmissionParams } from './intent-api'; -import { IntentOrderStatus } from './validators'; +} from './intent-api.js'; +import type { IntentSubmissionParams } from './intent-api.js'; +import { IntentOrderStatus } from './validators.js'; describe('IntentApiImpl', () => { const baseUrl = 'https://example.com/api'; diff --git a/packages/bridge-status-controller/src/utils/intent-api.ts b/packages/bridge-status-controller/src/utils/intent-api.ts index c9edb1a0671..38421882f08 100644 --- a/packages/bridge-status-controller/src/utils/intent-api.ts +++ b/packages/bridge-status-controller/src/utils/intent-api.ts @@ -8,12 +8,12 @@ import { } from '@metamask/bridge-controller'; import { TransactionStatus } from '@metamask/transaction-controller'; -import type { FetchFunction, StatusResponse } from '../types'; +import type { FetchFunction, StatusResponse } from '../types.js'; import { IntentStatusResponse, IntentOrderStatus, validateIntentStatusResponse, -} from './validators'; +} from './validators.js'; export type IntentSubmissionParams = { srcChainId: ChainId; diff --git a/packages/bridge-status-controller/src/utils/keyring.ts b/packages/bridge-status-controller/src/utils/keyring.ts index 09c031add54..0eeba547e1b 100644 --- a/packages/bridge-status-controller/src/utils/keyring.ts +++ b/packages/bridge-status-controller/src/utils/keyring.ts @@ -1,7 +1,7 @@ import type { Intent } from '@metamask/bridge-controller'; import { SignTypedDataVersion } from '@metamask/keyring-controller'; -import type { BridgeStatusControllerMessenger } from '../types'; +import type { BridgeStatusControllerMessenger } from '../types.js'; export const signTypedMessage = async ({ messenger, diff --git a/packages/bridge-status-controller/src/utils/metrics.test.ts b/packages/bridge-status-controller/src/utils/metrics.test.ts index bff10092277..5f48886e8e9 100644 --- a/packages/bridge-status-controller/src/utils/metrics.test.ts +++ b/packages/bridge-status-controller/src/utils/metrics.test.ts @@ -15,7 +15,7 @@ import type { import { TransactionType } from '@metamask/transaction-controller'; import { TransactionStatus } from '@metamask/transaction-controller'; -import type { BridgeHistoryItem } from '../types'; +import type { BridgeHistoryItem } from '../types.js'; import { getTxStatusesFromHistory, getFinalizedTxProperties, @@ -24,7 +24,7 @@ import { getRequestMetadataFromHistory, getEVMTxPropertiesFromTransactionMeta, getPreConfirmationPropertiesFromQuote, -} from './metrics'; +} from './metrics.js'; describe('metrics utils', () => { const mockHistoryItem: BridgeHistoryItem = { diff --git a/packages/bridge-status-controller/src/utils/metrics.ts b/packages/bridge-status-controller/src/utils/metrics.ts index 99510c4aa57..2d28b950ae7 100644 --- a/packages/bridge-status-controller/src/utils/metrics.ts +++ b/packages/bridge-status-controller/src/utils/metrics.ts @@ -36,12 +36,12 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; import type { CaipAssetType, Hex } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import type { BridgeHistoryItem } from '../types'; -import { calcActualGasUsed } from './gas'; +import type { BridgeHistoryItem } from '../types.js'; +import { calcActualGasUsed } from './gas.js'; import { getActualBridgeReceivedAmount, getActualSwapReceivedAmount, -} from './swap-received-amount'; +} from './swap-received-amount.js'; export const getTxStatusesFromHistory = ({ status, diff --git a/packages/bridge-status-controller/src/utils/network.ts b/packages/bridge-status-controller/src/utils/network.ts index 98bc47f9e1e..e0ef393d277 100644 --- a/packages/bridge-status-controller/src/utils/network.ts +++ b/packages/bridge-status-controller/src/utils/network.ts @@ -3,7 +3,7 @@ import { formatChainIdToHex } from '@metamask/bridge-controller'; import type { GenericQuoteRequest } from '@metamask/bridge-controller'; import type { NetworkClient } from '@metamask/network-controller'; -import type { BridgeStatusControllerMessenger } from '../types'; +import type { BridgeStatusControllerMessenger } from '../types.js'; export const getSelectedChainId = ( messenger: BridgeStatusControllerMessenger, diff --git a/packages/bridge-status-controller/src/utils/snaps.test.ts b/packages/bridge-status-controller/src/utils/snaps.test.ts index 2b7fe7ed1b4..5c4c2ffff49 100644 --- a/packages/bridge-status-controller/src/utils/snaps.test.ts +++ b/packages/bridge-status-controller/src/utils/snaps.test.ts @@ -1,9 +1,10 @@ +import { jest } from '@jest/globals'; /* eslint-disable consistent-return */ import { v4 as uuid } from 'uuid'; -import { ChainId } from '../../../bridge-controller/src/types'; -import { BridgeStatusControllerMessenger } from '../types'; -import { createClientTransactionRequest, handleNonEvmTx } from './snaps'; +import { ChainId } from '../../../bridge-controller/src/types.js'; +import { BridgeStatusControllerMessenger } from '../types.js'; +import { createClientTransactionRequest, handleNonEvmTx } from './snaps.js'; jest.mock('uuid', () => ({ v4: jest.fn(), diff --git a/packages/bridge-status-controller/src/utils/snaps.ts b/packages/bridge-status-controller/src/utils/snaps.ts index 94ce3483344..4dec1345910 100644 --- a/packages/bridge-status-controller/src/utils/snaps.ts +++ b/packages/bridge-status-controller/src/utils/snaps.ts @@ -26,7 +26,7 @@ import { v4 as uuid } from 'uuid'; import type { BridgeStatusControllerMessenger, SolanaTransactionMeta, -} from '../types'; +} from '../types.js'; /** * Creates a client request object for signing and sending a transaction diff --git a/packages/bridge-status-controller/src/utils/swap-received-amount.ts b/packages/bridge-status-controller/src/utils/swap-received-amount.ts index f8553e77e64..9827fb41c74 100644 --- a/packages/bridge-status-controller/src/utils/swap-received-amount.ts +++ b/packages/bridge-status-controller/src/utils/swap-received-amount.ts @@ -3,7 +3,7 @@ import { isNativeAddress } from '@metamask/bridge-controller'; import type { TransactionMeta } from '@metamask/transaction-controller'; import { BigNumber } from 'bignumber.js'; -import type { BridgeHistoryItem } from '../types'; +import type { BridgeHistoryItem } from '../types.js'; const getReceivedNativeAmount = ( historyItem: BridgeHistoryItem, diff --git a/packages/bridge-status-controller/src/utils/trace.ts b/packages/bridge-status-controller/src/utils/trace.ts index 72098788d1f..3faf53d55ab 100644 --- a/packages/bridge-status-controller/src/utils/trace.ts +++ b/packages/bridge-status-controller/src/utils/trace.ts @@ -5,7 +5,7 @@ import { QuoteResponse, } from '@metamask/bridge-controller'; -import { TraceName } from '../constants'; +import { TraceName } from '../constants.js'; export const getTraceParams = ( quoteResponse: QuoteResponse, diff --git a/packages/bridge-status-controller/src/utils/transaction.test.ts b/packages/bridge-status-controller/src/utils/transaction.test.ts index 1cd257935e1..f513261d023 100644 --- a/packages/bridge-status-controller/src/utils/transaction.test.ts +++ b/packages/bridge-status-controller/src/utils/transaction.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable @typescript-eslint/explicit-function-return-type */ import { ChainId, @@ -18,13 +19,13 @@ import { } from '@metamask/transaction-controller'; import type { TransactionMeta } from '@metamask/transaction-controller'; -import { APPROVAL_DELAY_MS } from '../constants'; +import { APPROVAL_DELAY_MS } from '../constants.js'; import type { BridgeStatusControllerMessenger, QuoteAndTxMetadata, -} from '../types'; -import { getStatusRequestParams } from './bridge-status'; -import * as snaps from './snaps'; +} from '../types.js'; +import { getStatusRequestParams } from './bridge-status.js'; +import * as snaps from './snaps.js'; import { handleApprovalDelay, handleMobileHardwareWalletDelay, @@ -35,7 +36,7 @@ import { findAllTransactionsInBatch, isApprovalTx, updateTransactionsInBatch, -} from './transaction'; +} from './transaction.js'; describe('Bridge Status Controller Transaction Utils', () => { describe('waitForTxConfirmation', () => { diff --git a/packages/bridge-status-controller/src/utils/transaction.ts b/packages/bridge-status-controller/src/utils/transaction.ts index 6942ee261d8..519a2edf533 100644 --- a/packages/bridge-status-controller/src/utils/transaction.ts +++ b/packages/bridge-status-controller/src/utils/transaction.ts @@ -32,11 +32,11 @@ import type { import { createProjectLogger, isStrictHexString } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { APPROVAL_DELAY_MS } from '../constants'; -import type { BridgeStatusControllerMessenger } from '../types'; -import type { QuoteAndTxMetadata } from '../types'; -import { getAccountByAddress } from './accounts'; -import { getNetworkClientIdByChainId } from './network'; +import { APPROVAL_DELAY_MS } from '../constants.js'; +import type { BridgeStatusControllerMessenger } from '../types.js'; +import type { QuoteAndTxMetadata } from '../types.js'; +import { getAccountByAddress } from './accounts.js'; +import { getNetworkClientIdByChainId } from './network.js'; export const isApprovalTx = (type: TransactionType) => type === TransactionType.bridgeApproval || diff --git a/packages/bridge-status-controller/src/utils/validators.test.ts b/packages/bridge-status-controller/src/utils/validators.test.ts index 9987a1afb2c..ab842f35bb2 100644 --- a/packages/bridge-status-controller/src/utils/validators.test.ts +++ b/packages/bridge-status-controller/src/utils/validators.test.ts @@ -1,4 +1,4 @@ -import { validateBridgeStatusResponse } from './validators'; +import { validateBridgeStatusResponse } from './validators.js'; const BridgeTxStatusResponses = { STATUS_PENDING_VALID: { diff --git a/packages/bridge-status-controller/test/mock-batch-sell-erc20-erc20.ts b/packages/bridge-status-controller/test/mock-batch-sell-erc20-erc20.ts index ad65c4c72d1..3dbce387b4e 100644 --- a/packages/bridge-status-controller/test/mock-batch-sell-erc20-erc20.ts +++ b/packages/bridge-status-controller/test/mock-batch-sell-erc20-erc20.ts @@ -16,7 +16,7 @@ import { TransactionType, } from '@metamask/transaction-controller'; -import { BridgeHistoryItem } from '../src'; +import { BridgeHistoryItem } from '../src/index.js'; export const mockBatchSellErc20Erc20: QuoteResponse[] = [ { From 7803d029924892ca18bf64b63637290742e5f550 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:48 +0200 Subject: [PATCH 060/115] ESLint fix and `jest` global import for signature-controller --- .../SignatureController-method-action-types.ts | 2 +- .../src/SignatureController.test.ts | 17 +++++++++-------- .../src/SignatureController.ts | 16 ++++++++-------- packages/signature-controller/src/index.ts | 6 +++--- .../src/utils/decoding-api.test.ts | 8 +++++--- .../src/utils/decoding-api.ts | 6 +++--- .../src/utils/delegations.test.ts | 7 ++++--- .../src/utils/delegations.ts | 4 ++-- .../src/utils/normalize.test.ts | 4 ++-- .../signature-controller/src/utils/normalize.ts | 2 +- .../src/utils/validation.test.ts | 4 ++-- .../src/utils/validation.ts | 8 +++----- 12 files changed, 43 insertions(+), 41 deletions(-) diff --git a/packages/signature-controller/src/SignatureController-method-action-types.ts b/packages/signature-controller/src/SignatureController-method-action-types.ts index ca6aedcc146..3da10884974 100644 --- a/packages/signature-controller/src/SignatureController-method-action-types.ts +++ b/packages/signature-controller/src/SignatureController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { SignatureController } from './SignatureController'; +import type { SignatureController } from './SignatureController.js'; /** * Reset the controller state to the initial state. diff --git a/packages/signature-controller/src/SignatureController.test.ts b/packages/signature-controller/src/SignatureController.test.ts index 4f9d1d5349c..4d55c9d63ce 100644 --- a/packages/signature-controller/src/SignatureController.test.ts +++ b/packages/signature-controller/src/SignatureController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import type { SIWEMessage } from '@metamask/controller-utils'; import { detectSIWE, ORIGIN_METAMASK } from '@metamask/controller-utils'; @@ -5,26 +6,26 @@ import { SignTypedDataVersion } from '@metamask/keyring-controller'; import { LogType, SigningStage } from '@metamask/logging-controller'; import { v1 } from 'uuid'; -import { flushPromises } from '../../../tests/helpers'; +import { flushPromises } from '../../../tests/helpers.js'; import type { SignatureControllerMessenger, SignatureControllerOptions, SignatureControllerState, -} from './SignatureController'; -import { SignatureController } from './SignatureController'; +} from './SignatureController.js'; +import { SignatureController } from './SignatureController.js'; import type { MessageParamsPersonal, MessageParamsTyped, OriginalRequest, SignatureRequest, -} from './types'; -import { SignatureRequestStatus, SignatureRequestType } from './types'; -import * as DecodingDataUtils from './utils/decoding-api'; +} from './types.js'; +import { SignatureRequestStatus, SignatureRequestType } from './types.js'; +import * as DecodingDataUtils from './utils/decoding-api.js'; import { normalizePersonalMessageParams, normalizeTypedMessageParams, -} from './utils/normalize'; -import { validateTypedSignatureRequest } from './utils/validation'; +} from './utils/normalize.js'; +import { validateTypedSignatureRequest } from './utils/validation.js'; jest.mock('uuid'); jest.mock('./utils/validation'); diff --git a/packages/signature-controller/src/SignatureController.ts b/packages/signature-controller/src/SignatureController.ts index c24b6bebe33..d5f2de6961e 100644 --- a/packages/signature-controller/src/SignatureController.ts +++ b/packages/signature-controller/src/SignatureController.ts @@ -39,9 +39,9 @@ import type { Hex, Json } from '@metamask/utils'; import EventEmitter from 'events'; import { v1 as random } from 'uuid'; -import { projectLogger as log } from './logger'; -import type { SignatureControllerMethodActions } from './SignatureController-method-action-types'; -import { SignatureRequestStatus, SignatureRequestType } from './types'; +import { projectLogger as log } from './logger.js'; +import type { SignatureControllerMethodActions } from './SignatureController-method-action-types.js'; +import { SignatureRequestStatus, SignatureRequestType } from './types.js'; import type { MessageParamsPersonal, MessageParamsTyped, @@ -52,21 +52,21 @@ import type { LegacyStateMessage, StateSIWEMessage, MessageParamsTypedData, -} from './types'; -import { DECODING_API_ERRORS, decodeSignature } from './utils/decoding-api'; +} from './types.js'; +import { DECODING_API_ERRORS, decodeSignature } from './utils/decoding-api.js'; import { decodePermissionFromRequest, isDelegationRequest, validateExecutionPermissionMetadata, -} from './utils/delegations'; +} from './utils/delegations.js'; import { normalizePersonalMessageParams, normalizeTypedMessageParams, -} from './utils/normalize'; +} from './utils/normalize.js'; import { validatePersonalSignatureRequest, validateTypedSignatureRequest, -} from './utils/validation'; +} from './utils/validation.js'; const controllerName = 'SignatureController'; diff --git a/packages/signature-controller/src/index.ts b/packages/signature-controller/src/index.ts index 82447289f46..46754d16adb 100644 --- a/packages/signature-controller/src/index.ts +++ b/packages/signature-controller/src/index.ts @@ -1,4 +1,4 @@ -export * from './SignatureController'; +export * from './SignatureController.js'; export type { SignatureControllerResetStateAction, SignatureControllerRejectUnapprovedAction, @@ -10,5 +10,5 @@ export type { SignatureControllerSetDeferredSignErrorAction, SignatureControllerSetTypedMessageInProgressAction, SignatureControllerSetPersonalMessageInProgressAction, -} from './SignatureController-method-action-types'; -export * from './types'; +} from './SignatureController-method-action-types.js'; +export * from './types.js'; diff --git a/packages/signature-controller/src/utils/decoding-api.test.ts b/packages/signature-controller/src/utils/decoding-api.test.ts index f9dbfa2a52d..06e03df2f0e 100644 --- a/packages/signature-controller/src/utils/decoding-api.test.ts +++ b/packages/signature-controller/src/utils/decoding-api.test.ts @@ -1,6 +1,8 @@ -import { EthMethod } from '../types'; -import type { OriginalRequest } from '../types'; -import { decodeSignature } from './decoding-api'; +import { jest } from '@jest/globals'; + +import { EthMethod } from '../types.js'; +import type { OriginalRequest } from '../types.js'; +import { decodeSignature } from './decoding-api.js'; const PERMIT_REQUEST_MOCK = { method: EthMethod.SignTypedDataV4, diff --git a/packages/signature-controller/src/utils/decoding-api.ts b/packages/signature-controller/src/utils/decoding-api.ts index b8ed5bc1a81..fde49e5562e 100644 --- a/packages/signature-controller/src/utils/decoding-api.ts +++ b/packages/signature-controller/src/utils/decoding-api.ts @@ -1,6 +1,6 @@ -import { EthMethod } from '../types'; -import type { OriginalRequest } from '../types'; -import { normalizeParam } from './normalize'; +import { EthMethod } from '../types.js'; +import type { OriginalRequest } from '../types.js'; +import { normalizeParam } from './normalize.js'; export const DECODING_API_ERRORS = { UNSUPPORTED_SIGNATURE: 'UNSUPPORTED_SIGNATURE', diff --git a/packages/signature-controller/src/utils/delegations.test.ts b/packages/signature-controller/src/utils/delegations.test.ts index 4816956af4d..145bceae18d 100644 --- a/packages/signature-controller/src/utils/delegations.test.ts +++ b/packages/signature-controller/src/utils/delegations.test.ts @@ -1,13 +1,14 @@ +import { jest } from '@jest/globals'; import type { DecodedPermission } from '@metamask/gator-permissions-controller'; import type { Json } from '@metamask/utils'; -import type { SignatureControllerMessenger } from '../SignatureController'; -import type { MessageParamsTyped, MessageParamsTypedData } from '../types'; +import type { SignatureControllerMessenger } from '../SignatureController.js'; +import type { MessageParamsTyped, MessageParamsTypedData } from '../types.js'; import { decodePermissionFromRequest, isDelegationRequest, validateExecutionPermissionMetadata, -} from './delegations'; +} from './delegations.js'; describe('delegations utils', () => { describe('isDelegationRequest', () => { diff --git a/packages/signature-controller/src/utils/delegations.ts b/packages/signature-controller/src/utils/delegations.ts index cf1b12c7179..28a36633fb1 100644 --- a/packages/signature-controller/src/utils/delegations.ts +++ b/packages/signature-controller/src/utils/delegations.ts @@ -4,11 +4,11 @@ import type { } from '@metamask/gator-permissions-controller'; import { isHexAddress, isStrictHexString } from '@metamask/utils'; -import type { SignatureControllerMessenger } from '../SignatureController'; +import type { SignatureControllerMessenger } from '../SignatureController.js'; import type { MessageParamsTypedData, MessageParamsTypedDataWithMetadata, -} from '../types'; +} from '../types.js'; const DELEGATION_PRIMARY_TYPE = 'Delegation'; diff --git a/packages/signature-controller/src/utils/normalize.test.ts b/packages/signature-controller/src/utils/normalize.test.ts index 26b930f2d29..812cad765de 100644 --- a/packages/signature-controller/src/utils/normalize.test.ts +++ b/packages/signature-controller/src/utils/normalize.test.ts @@ -1,11 +1,11 @@ import { SignTypedDataVersion } from '@metamask/keyring-controller'; -import type { MessageParamsPersonal, MessageParamsTyped } from '../types'; +import type { MessageParamsPersonal, MessageParamsTyped } from '../types.js'; import { normalizeParam, normalizePersonalMessageParams, normalizeTypedMessageParams, -} from './normalize'; +} from './normalize.js'; describe('Normalize Utils', () => { describe('normalizePersonalMessageParams', () => { diff --git a/packages/signature-controller/src/utils/normalize.ts b/packages/signature-controller/src/utils/normalize.ts index 4c06c439acb..9ff8c4ee6f5 100644 --- a/packages/signature-controller/src/utils/normalize.ts +++ b/packages/signature-controller/src/utils/normalize.ts @@ -2,7 +2,7 @@ import { SignTypedDataVersion } from '@metamask/keyring-controller'; import { add0x, bytesToHex, remove0x } from '@metamask/utils'; import type { Json } from '@metamask/utils'; -import type { MessageParamsPersonal, MessageParamsTyped } from '../types'; +import type { MessageParamsPersonal, MessageParamsTyped } from '../types.js'; /** * Normalize personal message params. diff --git a/packages/signature-controller/src/utils/validation.test.ts b/packages/signature-controller/src/utils/validation.test.ts index 26f5b5ff1b7..fa1ccf7eadf 100644 --- a/packages/signature-controller/src/utils/validation.test.ts +++ b/packages/signature-controller/src/utils/validation.test.ts @@ -8,12 +8,12 @@ import type { MessageParamsPersonal, MessageParamsTyped, OriginalRequest, -} from '../types'; +} from '../types.js'; import { PRIMARY_TYPE_DELEGATION, validatePersonalSignatureRequest, validateTypedSignatureRequest, -} from './validation'; +} from './validation.js'; const CHAIN_ID_MOCK = '0x1'; const ORIGIN_MOCK = 'test.com'; diff --git a/packages/signature-controller/src/utils/validation.ts b/packages/signature-controller/src/utils/validation.ts index 024d1d9c8af..f36cdb6b8c7 100644 --- a/packages/signature-controller/src/utils/validation.ts +++ b/packages/signature-controller/src/utils/validation.ts @@ -15,8 +15,8 @@ import type { MessageParamsTyped, MessageParamsTypedData, OriginalRequest, -} from '../types'; -import { isDelegationRequest } from './delegations'; +} from '../types.js'; +import { isDelegationRequest } from './delegations.js'; export const PRIMARY_TYPE_DELEGATION = 'Delegation'; export const DELEGATOR_FIELD = 'delegator'; @@ -87,9 +87,7 @@ export function validateTypedSignatureRequest({ function validateTypedSignatureRequestV1(messageData: MessageParamsTyped) { if (!messageData.data || !Array.isArray(messageData.data)) { throw new Error( - // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/restrict-template-expressions - `Invalid message "data": ${messageData.data} must be a valid array.`, + `Invalid message "data": ${JSON.stringify(messageData.data)} must be a valid array.`, ); } From c25b97a29efd61db60d58ac5e73564bf8472591b Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:49 +0200 Subject: [PATCH 061/115] ESLint fix and `jest` global import for transaction-pay-controller --- .../transaction-pay-controller/package.json | 2 +- ...actionPayController-method-action-types.ts | 2 +- .../src/TransactionPayController.test.ts | 24 ++++++------ .../src/TransactionPayController.ts | 22 +++++------ .../src/actions/update-fiat-payment.test.ts | 9 +++-- .../src/actions/update-payment-token.test.ts | 11 +++--- .../src/constants.test.ts | 2 +- .../src/helpers/QuoteRefresher.test.ts | 14 +++---- .../helpers/TransactionPayPublishHook.test.ts | 11 +++--- .../src/helpers/TransactionPayPublishHook.ts | 14 +++---- .../transaction-pay-controller/src/index.ts | 10 ++--- .../strategy/across/AcrossStrategy.test.ts | 15 +++---- .../src/strategy/across/AcrossStrategy.ts | 20 +++++----- .../strategy/across/across-actions.test.ts | 4 +- .../src/strategy/across/across-actions.ts | 6 +-- .../src/strategy/across/across-quotes.test.ts | 25 ++++++------ .../src/strategy/across/across-quotes.ts | 39 ++++++++++--------- .../src/strategy/across/across-submit.test.ts | 15 +++---- .../src/strategy/across/across-submit.ts | 18 ++++----- .../src/strategy/across/authorization-list.ts | 4 +- .../src/strategy/across/perps.ts | 4 +- .../src/strategy/across/requests.ts | 2 +- .../src/strategy/across/transactions.test.ts | 4 +- .../src/strategy/across/transactions.ts | 2 +- .../src/strategy/fiat/FiatStrategy.test.ts | 13 ++++--- .../src/strategy/fiat/FiatStrategy.ts | 10 ++--- .../src/strategy/fiat/constants.ts | 2 +- .../strategy/fiat/fiat-direct-musd.test.ts | 13 ++++--- .../src/strategy/fiat/fiat-direct-musd.ts | 20 +++++----- .../src/strategy/fiat/fiat-quotes.test.ts | 22 ++++++----- .../src/strategy/fiat/fiat-quotes.ts | 25 ++++++------ .../strategy/fiat/fiat-submit-simple.test.ts | 17 ++++---- .../src/strategy/fiat/fiat-submit-simple.ts | 14 +++---- .../fiat-submit-with-transaction-data.test.ts | 19 ++++----- .../fiat/fiat-submit-with-transaction-data.ts | 18 ++++----- .../src/strategy/fiat/fiat-submit.test.ts | 30 +++++++------- .../src/strategy/fiat/fiat-submit.ts | 22 +++++------ .../strategy/fiat/fiat-test-funding.test.ts | 20 ++++++---- .../src/strategy/fiat/fiat-test-funding.ts | 20 +++++----- .../src/strategy/fiat/types.ts | 2 +- .../src/strategy/fiat/utils.test.ts | 16 +++++--- .../src/strategy/fiat/utils.ts | 16 ++++---- .../src/strategy/relay/RelayBridge.test.ts | 13 ++++--- .../src/strategy/relay/RelayStrategy.test.ts | 13 ++++--- .../src/strategy/relay/RelayStrategy.ts | 10 ++--- .../src/strategy/relay/constants.ts | 4 +- .../relay/hyperliquid-activation.test.ts | 11 +++--- .../strategy/relay/hyperliquid-activation.ts | 10 ++--- .../relay/hyperliquid-withdraw.test.ts | 11 +++--- .../strategy/relay/hyperliquid-withdraw.ts | 10 ++--- .../relay/polymarket/withdraw.test.ts | 15 +++---- .../src/strategy/relay/polymarket/withdraw.ts | 14 +++---- .../src/strategy/relay/relay-api.test.ts | 12 +++--- .../src/strategy/relay/relay-api.ts | 8 ++-- .../relay/relay-max-gas-station.test.ts | 17 ++++---- .../strategy/relay/relay-max-gas-station.ts | 10 ++--- .../relay/relay-post-ma-vault.test.ts | 15 +++---- .../src/strategy/relay/relay-post-ma-vault.ts | 14 +++---- .../src/strategy/relay/relay-quotes.test.ts | 21 +++++----- .../src/strategy/relay/relay-quotes.ts | 2 +- .../relay/relay-submit-execute.test.ts | 15 +++---- .../strategy/relay/relay-submit-execute.ts | 14 +++---- .../src/strategy/relay/relay-submit.test.ts | 28 +++++++------ .../src/strategy/relay/relay-submit.ts | 26 ++++++------- .../strategy/server/ServerStrategy.test.ts | 15 +++---- .../src/strategy/server/ServerStrategy.ts | 10 ++--- .../src/strategy/server/perps.test.ts | 6 +-- .../src/strategy/server/perps.ts | 4 +- .../src/strategy/server/server-api.test.ts | 12 +++--- .../src/strategy/server/server-api.ts | 8 ++-- .../src/strategy/server/server-quotes.test.ts | 23 +++++------ .../src/strategy/server/server-quotes.ts | 28 ++++++------- .../src/strategy/server/server-submit.test.ts | 23 +++++------ .../src/strategy/server/server-submit.ts | 20 +++++----- .../src/tests/messenger-mock.ts | 1 + .../transaction-pay-controller/src/types.ts | 4 +- .../src/utils/7702.ts | 4 +- .../src/utils/amounts.test.ts | 2 +- .../src/utils/amounts.ts | 2 +- .../src/utils/chomp.test.ts | 9 +++-- .../src/utils/chomp.ts | 8 ++-- .../src/utils/error-prefix.test.ts | 2 +- .../src/utils/feature-flags.test.ts | 15 +++---- .../src/utils/feature-flags.ts | 16 ++++---- .../src/utils/gas-station.test.ts | 9 +++-- .../src/utils/gas-station.ts | 8 ++-- .../src/utils/gas.test.ts | 15 +++---- .../src/utils/gas.ts | 8 +++- .../src/utils/ma-vault-deposit.test.ts | 11 +++--- .../src/utils/ma-vault-deposit.ts | 14 +++---- .../src/utils/no-op-quote.test.ts | 6 +-- .../src/utils/no-op-quote.ts | 4 +- .../src/utils/provider.test.ts | 5 ++- .../src/utils/provider.ts | 4 +- .../src/utils/quote-gas.test.ts | 9 +++-- .../src/utils/quotes.test.ts | 21 +++++----- .../src/utils/quotes.ts | 18 ++++----- .../src/utils/required-tokens.test.ts | 9 +++-- .../src/utils/required-tokens.ts | 6 +-- .../src/utils/source-amounts.test.ts | 17 ++++---- .../src/utils/strategy.test.ts | 16 ++++---- .../src/utils/strategy.ts | 12 +++--- .../src/utils/token.test.ts | 9 +++-- .../src/utils/token.ts | 8 ++-- .../src/utils/totals.test.ts | 11 +++--- .../src/utils/totals.ts | 8 ++-- .../src/utils/transaction.test.ts | 13 ++++--- .../src/utils/transaction.ts | 12 +++--- .../tsconfig.build.json | 3 +- 109 files changed, 707 insertions(+), 632 deletions(-) diff --git a/packages/transaction-pay-controller/package.json b/packages/transaction-pay-controller/package.json index c3afbebc141..04ab4e53289 100644 --- a/packages/transaction-pay-controller/package.json +++ b/packages/transaction-pay-controller/package.json @@ -68,7 +68,7 @@ "bignumber.js": "^9.1.2", "bn.js": "^5.2.1", "immer": "^9.0.6", - "lodash": "^4.17.21" + "lodash-es": "^4.17.21" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", diff --git a/packages/transaction-pay-controller/src/TransactionPayController-method-action-types.ts b/packages/transaction-pay-controller/src/TransactionPayController-method-action-types.ts index ff753bb1792..14a91436fa2 100644 --- a/packages/transaction-pay-controller/src/TransactionPayController-method-action-types.ts +++ b/packages/transaction-pay-controller/src/TransactionPayController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { TransactionPayController } from './TransactionPayController'; +import type { TransactionPayController } from './TransactionPayController.js'; /** * Sets the transaction configuration. diff --git a/packages/transaction-pay-controller/src/TransactionPayController.test.ts b/packages/transaction-pay-controller/src/TransactionPayController.test.ts index fcb6c4e840e..8213c10651b 100644 --- a/packages/transaction-pay-controller/src/TransactionPayController.test.ts +++ b/packages/transaction-pay-controller/src/TransactionPayController.test.ts @@ -1,28 +1,28 @@ +import { jest } from '@jest/globals'; /* eslint-disable no-new */ - import type { TransactionMeta } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { TransactionPayController } from '.'; -import { updateFiatPayment } from './actions/update-fiat-payment'; -import { updatePaymentToken } from './actions/update-payment-token'; -import { PaymentOverride, TransactionPayStrategy } from './constants'; -import { deriveFiatAssetForFiatPayment } from './strategy/fiat/utils'; -import { getMessengerMock } from './tests/messenger-mock'; +import { updateFiatPayment } from './actions/update-fiat-payment.js'; +import { updatePaymentToken } from './actions/update-payment-token.js'; +import { PaymentOverride, TransactionPayStrategy } from './constants.js'; +import { TransactionPayController } from './index.js'; +import { deriveFiatAssetForFiatPayment } from './strategy/fiat/utils.js'; +import { getMessengerMock } from './tests/messenger-mock.js'; import type { TransactionPayControllerMessenger, TransactionPayControllerOptions, TransactionPaySourceAmount, UpdateTransactionDataCallback, -} from './types'; -import { getStrategyOrder } from './utils/feature-flags'; -import { updateQuotes } from './utils/quotes'; -import { updateSourceAmounts } from './utils/source-amounts'; +} from './types.js'; +import { getStrategyOrder } from './utils/feature-flags.js'; +import { updateQuotes } from './utils/quotes.js'; +import { updateSourceAmounts } from './utils/source-amounts.js'; import { getTransaction, subscribeAssetChanges, subscribeTransactionChanges, -} from './utils/transaction'; +} from './utils/transaction.js'; jest.mock('./actions/update-fiat-payment'); jest.mock('./actions/update-payment-token'); diff --git a/packages/transaction-pay-controller/src/TransactionPayController.ts b/packages/transaction-pay-controller/src/TransactionPayController.ts index c9e31d480d1..996013d631b 100644 --- a/packages/transaction-pay-controller/src/TransactionPayController.ts +++ b/packages/transaction-pay-controller/src/TransactionPayController.ts @@ -2,16 +2,16 @@ import type { StateMetadata } from '@metamask/base-controller'; import { BaseController } from '@metamask/base-controller'; import type { TransactionMeta } from '@metamask/transaction-controller'; import type { Draft } from 'immer'; -import { noop } from 'lodash'; +import { noop } from 'lodash-es'; -import { updateFiatPayment } from './actions/update-fiat-payment'; -import { updatePaymentToken } from './actions/update-payment-token'; +import { updateFiatPayment } from './actions/update-fiat-payment.js'; +import { updatePaymentToken } from './actions/update-payment-token.js'; import { CONTROLLER_NAME, isTransactionPayStrategy, TransactionPayStrategy, -} from './constants'; -import { QuoteRefresher } from './helpers/QuoteRefresher'; +} from './constants.js'; +import { QuoteRefresher } from './helpers/QuoteRefresher.js'; import type { GetAmountDataCallback, GetDelegationTransactionCallback, @@ -25,14 +25,14 @@ import type { TransactionPayControllerState, UpdateFiatPaymentRequest, UpdatePaymentTokenRequest, -} from './types'; -import { getStrategyOrder } from './utils/feature-flags'; -import { updateQuotes } from './utils/quotes'; -import { updateSourceAmounts } from './utils/source-amounts'; +} from './types.js'; +import { getStrategyOrder } from './utils/feature-flags.js'; +import { updateQuotes } from './utils/quotes.js'; +import { updateSourceAmounts } from './utils/source-amounts.js'; import { subscribeAssetChanges, subscribeTransactionChanges, -} from './utils/transaction'; +} from './utils/transaction.js'; const MESSENGER_EXPOSED_METHODS = [ 'getAmountData', @@ -386,7 +386,7 @@ export class TransactionPayController extends BaseController< }); if (shouldUpdateQuotes) { - updateQuotes({ + void updateQuotes({ getStrategies: this.#getStrategiesWithFallback.bind(this), messenger: this.messenger, transactionData: this.state.transactionData[transactionId], diff --git a/packages/transaction-pay-controller/src/actions/update-fiat-payment.test.ts b/packages/transaction-pay-controller/src/actions/update-fiat-payment.test.ts index fd04bddee41..e6b8d4c0466 100644 --- a/packages/transaction-pay-controller/src/actions/update-fiat-payment.test.ts +++ b/packages/transaction-pay-controller/src/actions/update-fiat-payment.test.ts @@ -1,9 +1,10 @@ +import { jest } from '@jest/globals'; import type { TransactionMeta } from '@metamask/transaction-controller'; -import { noop } from 'lodash'; +import { noop } from 'lodash-es'; -import type { TransactionData, TransactionFiatPayment } from '../types'; -import { getTransaction } from '../utils/transaction'; -import { updateFiatPayment } from './update-fiat-payment'; +import type { TransactionData, TransactionFiatPayment } from '../types.js'; +import { getTransaction } from '../utils/transaction.js'; +import { updateFiatPayment } from './update-fiat-payment.js'; jest.mock('../utils/transaction'); diff --git a/packages/transaction-pay-controller/src/actions/update-payment-token.test.ts b/packages/transaction-pay-controller/src/actions/update-payment-token.test.ts index 52aebf29725..8ef80058eb3 100644 --- a/packages/transaction-pay-controller/src/actions/update-payment-token.test.ts +++ b/packages/transaction-pay-controller/src/actions/update-payment-token.test.ts @@ -1,14 +1,15 @@ +import { jest } from '@jest/globals'; import type { TransactionMeta } from '@metamask/transaction-controller'; -import { noop } from 'lodash'; +import { noop } from 'lodash-es'; -import type { TransactionData, TransactionPaymentToken } from '../types'; +import type { TransactionData, TransactionPaymentToken } from '../types.js'; import { getTokenBalance, getTokenFiatRate, getTokenInfo, -} from '../utils/token'; -import { getTransaction } from '../utils/transaction'; -import { updatePaymentToken } from './update-payment-token'; +} from '../utils/token.js'; +import { getTransaction } from '../utils/transaction.js'; +import { updatePaymentToken } from './update-payment-token.js'; jest.mock('../utils/token', () => ({ ...jest.createMockFromModule( diff --git a/packages/transaction-pay-controller/src/constants.test.ts b/packages/transaction-pay-controller/src/constants.test.ts index 5bb589f50c4..b9e2faabce2 100644 --- a/packages/transaction-pay-controller/src/constants.test.ts +++ b/packages/transaction-pay-controller/src/constants.test.ts @@ -3,7 +3,7 @@ import { POLYGON_PUSD_ADDRESS, POLYGON_USDCE_ADDRESS, STABLECOINS, -} from './constants'; +} from './constants.js'; describe('STABLECOINS', () => { it('includes both Polygon USDC.e and Polymarket pUSD as Polygon stablecoins', () => { diff --git a/packages/transaction-pay-controller/src/helpers/QuoteRefresher.test.ts b/packages/transaction-pay-controller/src/helpers/QuoteRefresher.test.ts index a6f44a5df9a..9bfae42f309 100644 --- a/packages/transaction-pay-controller/src/helpers/QuoteRefresher.test.ts +++ b/packages/transaction-pay-controller/src/helpers/QuoteRefresher.test.ts @@ -1,16 +1,16 @@ +import { jest } from '@jest/globals'; /* eslint-disable no-new */ - import { createDeferredPromise } from '@metamask/utils'; -import { flushPromises } from '../../../../tests/helpers'; -import { TransactionPayStrategy } from '../constants'; -import { getMessengerMock } from '../tests/messenger-mock'; +import { flushPromises } from '../../../../tests/helpers.js'; +import { TransactionPayStrategy } from '../constants.js'; +import { getMessengerMock } from '../tests/messenger-mock.js'; import type { TransactionData, TransactionPayControllerMessenger, -} from '../types'; -import { refreshQuotes } from '../utils/quotes'; -import { QuoteRefresher } from './QuoteRefresher'; +} from '../types.js'; +import { refreshQuotes } from '../utils/quotes.js'; +import { QuoteRefresher } from './QuoteRefresher.js'; jest.mock('../utils/quotes'); diff --git a/packages/transaction-pay-controller/src/helpers/TransactionPayPublishHook.test.ts b/packages/transaction-pay-controller/src/helpers/TransactionPayPublishHook.test.ts index 6b268dc80d2..4da52c0a875 100644 --- a/packages/transaction-pay-controller/src/helpers/TransactionPayPublishHook.test.ts +++ b/packages/transaction-pay-controller/src/helpers/TransactionPayPublishHook.test.ts @@ -1,16 +1,17 @@ +import { jest } from '@jest/globals'; import type { PublishHookResult, TransactionMeta, } from '@metamask/transaction-controller'; -import { TransactionPayStrategy } from '..'; -import { getMessengerMock } from '../tests/messenger-mock'; +import { TransactionPayStrategy } from '../index.js'; +import { getMessengerMock } from '../tests/messenger-mock.js'; import type { TransactionPayControllerState, TransactionPayQuote, -} from '../types'; -import { getStrategyByName } from '../utils/strategy'; -import { TransactionPayPublishHook } from './TransactionPayPublishHook'; +} from '../types.js'; +import { getStrategyByName } from '../utils/strategy.js'; +import { TransactionPayPublishHook } from './TransactionPayPublishHook.js'; jest.mock('../utils/strategy'); diff --git a/packages/transaction-pay-controller/src/helpers/TransactionPayPublishHook.ts b/packages/transaction-pay-controller/src/helpers/TransactionPayPublishHook.ts index 1b1cce0d216..cf57a00494e 100644 --- a/packages/transaction-pay-controller/src/helpers/TransactionPayPublishHook.ts +++ b/packages/transaction-pay-controller/src/helpers/TransactionPayPublishHook.ts @@ -4,16 +4,16 @@ import type { PublishHookResult } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; -import { TransactionPayStrategy } from '../constants'; -import { projectLogger } from '../logger'; +import { TransactionPayStrategy } from '../constants.js'; +import { projectLogger } from '../logger.js'; import type { TransactionPayControllerMessenger, TransactionPayQuote, -} from '../types'; -import { accountSupports7702 } from '../utils/7702'; -import { prefixError } from '../utils/error-prefix'; -import { getStrategyByName } from '../utils/strategy'; -import { updateTransaction } from '../utils/transaction'; +} from '../types.js'; +import { accountSupports7702 } from '../utils/7702.js'; +import { prefixError } from '../utils/error-prefix.js'; +import { getStrategyByName } from '../utils/strategy.js'; +import { updateTransaction } from '../utils/transaction.js'; const log = createModuleLogger(projectLogger, 'pay-publish-hook'); const ERROR_PREFIX = 'MetaMask Pay: '; diff --git a/packages/transaction-pay-controller/src/index.ts b/packages/transaction-pay-controller/src/index.ts index dbab894b8ac..6417727cdab 100644 --- a/packages/transaction-pay-controller/src/index.ts +++ b/packages/transaction-pay-controller/src/index.ts @@ -25,7 +25,7 @@ export type { TransactionPayTotals, UpdateFiatPaymentRequest, UpdatePaymentTokenRequest, -} from './types'; +} from './types.js'; export type { TransactionPayControllerGetAmountDataAction, TransactionPayControllerGetDelegationTransactionAction, @@ -36,7 +36,7 @@ export type { TransactionPayControllerSetTransactionConfigAction, TransactionPayControllerUpdatePaymentTokenAction, TransactionPayControllerUpdateFiatPaymentAction, -} from './TransactionPayController-method-action-types'; -export { PaymentOverride, TransactionPayStrategy } from './constants'; -export { TransactionPayController } from './TransactionPayController'; -export { TransactionPayPublishHook } from './helpers/TransactionPayPublishHook'; +} from './TransactionPayController-method-action-types.js'; +export { PaymentOverride, TransactionPayStrategy } from './constants.js'; +export { TransactionPayController } from './TransactionPayController.js'; +export { TransactionPayPublishHook } from './helpers/TransactionPayPublishHook.js'; diff --git a/packages/transaction-pay-controller/src/strategy/across/AcrossStrategy.test.ts b/packages/transaction-pay-controller/src/strategy/across/AcrossStrategy.test.ts index c63d7ba7a86..9bf64395324 100644 --- a/packages/transaction-pay-controller/src/strategy/across/AcrossStrategy.test.ts +++ b/packages/transaction-pay-controller/src/strategy/across/AcrossStrategy.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { TransactionMeta } from '@metamask/transaction-controller'; import { TransactionStatus, @@ -5,18 +6,18 @@ import { } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { ARBITRUM_USDC_ADDRESS, CHAIN_ID_ARBITRUM } from '../../constants'; +import { ARBITRUM_USDC_ADDRESS, CHAIN_ID_ARBITRUM } from '../../constants.js'; import type { PayStrategyCheckQuoteSupportRequest, PayStrategyExecuteRequest, PayStrategyGetQuotesRequest, TransactionPayQuote, -} from '../../types'; -import { getPayStrategiesConfig } from '../../utils/feature-flags'; -import { getAcrossQuotes } from './across-quotes'; -import { submitAcrossQuotes } from './across-submit'; -import { AcrossStrategy } from './AcrossStrategy'; -import type { AcrossQuote } from './types'; +} from '../../types.js'; +import { getPayStrategiesConfig } from '../../utils/feature-flags.js'; +import { getAcrossQuotes } from './across-quotes.js'; +import { submitAcrossQuotes } from './across-submit.js'; +import { AcrossStrategy } from './AcrossStrategy.js'; +import type { AcrossQuote } from './types.js'; jest.mock('./across-quotes'); jest.mock('./across-submit'); diff --git a/packages/transaction-pay-controller/src/strategy/across/AcrossStrategy.ts b/packages/transaction-pay-controller/src/strategy/across/AcrossStrategy.ts index 0c942dd7d03..9fcf618a5a0 100644 --- a/packages/transaction-pay-controller/src/strategy/across/AcrossStrategy.ts +++ b/packages/transaction-pay-controller/src/strategy/across/AcrossStrategy.ts @@ -6,16 +6,16 @@ import type { PayStrategyExecuteRequest, PayStrategyGetQuotesRequest, TransactionPayQuote, -} from '../../types'; -import { getPayStrategiesConfig } from '../../utils/feature-flags'; -import { isPredictWithdrawTransaction } from '../../utils/transaction'; -import { getAcrossDestination } from './across-actions'; -import { getAcrossQuotes } from './across-quotes'; -import { submitAcrossQuotes } from './across-submit'; -import { hasUnsupportedTransactionAuthorizationList } from './authorization-list'; -import { isSupportedAcrossPerpsDepositRequest } from './perps'; -import { isAcrossQuoteRequest } from './requests'; -import type { AcrossQuote } from './types'; +} from '../../types.js'; +import { getPayStrategiesConfig } from '../../utils/feature-flags.js'; +import { isPredictWithdrawTransaction } from '../../utils/transaction.js'; +import { getAcrossDestination } from './across-actions.js'; +import { getAcrossQuotes } from './across-quotes.js'; +import { submitAcrossQuotes } from './across-submit.js'; +import { hasUnsupportedTransactionAuthorizationList } from './authorization-list.js'; +import { isSupportedAcrossPerpsDepositRequest } from './perps.js'; +import { isAcrossQuoteRequest } from './requests.js'; +import type { AcrossQuote } from './types.js'; export class AcrossStrategy implements PayStrategy { supports(request: PayStrategyGetQuotesRequest): boolean { diff --git a/packages/transaction-pay-controller/src/strategy/across/across-actions.test.ts b/packages/transaction-pay-controller/src/strategy/across/across-actions.test.ts index b6e6f917537..890ddc892e9 100644 --- a/packages/transaction-pay-controller/src/strategy/across/across-actions.test.ts +++ b/packages/transaction-pay-controller/src/strategy/across/across-actions.test.ts @@ -2,7 +2,7 @@ import { Interface } from '@ethersproject/abi'; import type { TransactionMeta } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import type { QuoteRequest } from '../../types'; +import type { QuoteRequest } from '../../types.js'; import { buildAcrossActionFromCall, CREATE_PROXY_SIGNATURE, @@ -11,7 +11,7 @@ import { isExtractableOutputTokenTransferCall, SAFE_EXEC_TRANSACTION_SIGNATURE, TOKEN_TRANSFER_SIGNATURE, -} from './across-actions'; +} from './across-actions.js'; const TOKEN_TRANSFER_INTERFACE = new Interface([TOKEN_TRANSFER_SIGNATURE]); const CREATE_PROXY_INTERFACE = new Interface([CREATE_PROXY_SIGNATURE]); diff --git a/packages/transaction-pay-controller/src/strategy/across/across-actions.ts b/packages/transaction-pay-controller/src/strategy/across/across-actions.ts index d733d3080cf..24219ae84cd 100644 --- a/packages/transaction-pay-controller/src/strategy/across/across-actions.ts +++ b/packages/transaction-pay-controller/src/strategy/across/across-actions.ts @@ -3,9 +3,9 @@ import type { TransactionDescription } from '@ethersproject/abi'; import type { TransactionMeta } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import type { QuoteRequest } from '../../types'; -import { isSupportedAcrossPerpsDepositRequest } from './perps'; -import type { AcrossAction, AcrossActionArg } from './types'; +import type { QuoteRequest } from '../../types.js'; +import { isSupportedAcrossPerpsDepositRequest } from './perps.js'; +import type { AcrossAction, AcrossActionArg } from './types.js'; export const TOKEN_TRANSFER_SIGNATURE = 'function transfer(address to, uint256 value)'; diff --git a/packages/transaction-pay-controller/src/strategy/across/across-quotes.test.ts b/packages/transaction-pay-controller/src/strategy/across/across-quotes.test.ts index a21ae52c493..1b162784e33 100644 --- a/packages/transaction-pay-controller/src/strategy/across/across-quotes.test.ts +++ b/packages/transaction-pay-controller/src/strategy/across/across-quotes.test.ts @@ -1,4 +1,5 @@ import { Interface } from '@ethersproject/abi'; +import { jest } from '@jest/globals'; import { successfulFetch } from '@metamask/controller-utils'; import { TransactionType } from '@metamask/transaction-controller'; import type { @@ -7,27 +8,27 @@ import type { } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { getDefaultRemoteFeatureFlagControllerState } from '../../../../remote-feature-flag-controller/src/remote-feature-flag-controller'; +import { getDefaultRemoteFeatureFlagControllerState } from '../../../../remote-feature-flag-controller/src/remote-feature-flag-controller.js'; import { ARBITRUM_USDC_ADDRESS, CHAIN_ID_ARBITRUM, CHAIN_ID_HYPERCORE, TransactionPayStrategy, -} from '../../constants'; -import { getMessengerMock } from '../../tests/messenger-mock'; -import type { QuoteRequest } from '../../types'; +} from '../../constants.js'; +import { getMessengerMock } from '../../tests/messenger-mock.js'; +import type { QuoteRequest } from '../../types.js'; import { getGasBuffer, getSlippage, isEIP7702Chain, -} from '../../utils/feature-flags'; -import { calculateGasCost, calculateGasFeeTokenCost } from '../../utils/gas'; -import * as quoteGasUtils from '../../utils/quote-gas'; -import { getTokenBalance, getTokenFiatRate } from '../../utils/token'; -import { getAcrossQuotes } from './across-quotes'; -import { ACROSS_HYPERCORE_USDC_PERPS_ADDRESS } from './perps'; -import * as acrossTransactions from './transactions'; -import type { AcrossSwapApprovalResponse } from './types'; +} from '../../utils/feature-flags.js'; +import { calculateGasCost, calculateGasFeeTokenCost } from '../../utils/gas.js'; +import * as quoteGasUtils from '../../utils/quote-gas.js'; +import { getTokenBalance, getTokenFiatRate } from '../../utils/token.js'; +import { getAcrossQuotes } from './across-quotes.js'; +import { ACROSS_HYPERCORE_USDC_PERPS_ADDRESS } from './perps.js'; +import * as acrossTransactions from './transactions.js'; +import type { AcrossSwapApprovalResponse } from './types.js'; jest.mock('../../utils/token'); jest.mock('../../utils/gas', () => ({ diff --git a/packages/transaction-pay-controller/src/strategy/across/across-quotes.ts b/packages/transaction-pay-controller/src/strategy/across/across-quotes.ts index bd5eec27cb2..4d9360d164a 100644 --- a/packages/transaction-pay-controller/src/strategy/across/across-quotes.ts +++ b/packages/transaction-pay-controller/src/strategy/across/across-quotes.ts @@ -4,8 +4,8 @@ import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { TransactionPayStrategy } from '../../constants'; -import { projectLogger } from '../../logger'; +import { TransactionPayStrategy } from '../../constants.js'; +import { projectLogger } from '../../logger.js'; import type { Amount, FiatRates, @@ -13,38 +13,41 @@ import type { QuoteRequest, TransactionPayControllerMessenger, TransactionPayQuote, -} from '../../types'; -import { getFiatValueFromUsd, sumAmounts } from '../../utils/amounts'; -import { getPayStrategiesConfig, getSlippage } from '../../utils/feature-flags'; -import { calculateGasCost } from '../../utils/gas'; +} from '../../types.js'; +import { getFiatValueFromUsd, sumAmounts } from '../../utils/amounts.js'; +import { + getPayStrategiesConfig, + getSlippage, +} from '../../utils/feature-flags.js'; import { getGasStationCostInSourceTokenRaw, getGasStationEligibility, -} from '../../utils/gas-station'; -import { estimateQuoteGasLimits } from '../../utils/quote-gas'; -import type { QuoteGasTransaction } from '../../utils/quote-gas'; +} from '../../utils/gas-station.js'; +import { calculateGasCost } from '../../utils/gas.js'; +import { estimateQuoteGasLimits } from '../../utils/quote-gas.js'; +import type { QuoteGasTransaction } from '../../utils/quote-gas.js'; import { getNativeToken, getTokenBalance, getTokenFiatRate, -} from '../../utils/token'; -import { isPredictWithdrawTransaction } from '../../utils/transaction'; -import type { AcrossDestination } from './across-actions'; -import { getAcrossDestination } from './across-actions'; -import { hasUnsupportedTransactionAuthorizationList } from './authorization-list'; -import { normalizeAcrossRequest } from './perps'; -import { isAcrossQuoteRequest } from './requests'; +} from '../../utils/token.js'; +import { isPredictWithdrawTransaction } from '../../utils/transaction.js'; +import type { AcrossDestination } from './across-actions.js'; +import { getAcrossDestination } from './across-actions.js'; +import { hasUnsupportedTransactionAuthorizationList } from './authorization-list.js'; +import { normalizeAcrossRequest } from './perps.js'; +import { isAcrossQuoteRequest } from './requests.js'; import { getAcrossOrderedTransactions, getOriginalTransactionGas, -} from './transactions'; +} from './transactions.js'; import type { AcrossAction, AcrossActionRequestBody, AcrossGasLimits, AcrossQuote, AcrossSwapApprovalResponse, -} from './types'; +} from './types.js'; const log = createModuleLogger(projectLogger, 'across-strategy'); diff --git a/packages/transaction-pay-controller/src/strategy/across/across-submit.test.ts b/packages/transaction-pay-controller/src/strategy/across/across-submit.test.ts index dd453928c1d..f13819e40ab 100644 --- a/packages/transaction-pay-controller/src/strategy/across/across-submit.test.ts +++ b/packages/transaction-pay-controller/src/strategy/across/across-submit.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { successfulFetch, toHex } from '@metamask/controller-utils'; import { TransactionStatus, @@ -9,13 +10,13 @@ import type { } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { getDefaultRemoteFeatureFlagControllerState } from '../../../../remote-feature-flag-controller/src/remote-feature-flag-controller'; -import { TransactionPayStrategy } from '../../constants'; -import { getMessengerMock } from '../../tests/messenger-mock'; -import type { TransactionPayQuote } from '../../types'; -import { submitAcrossQuotes } from './across-submit'; -import * as acrossTransactions from './transactions'; -import type { AcrossQuote } from './types'; +import { getDefaultRemoteFeatureFlagControllerState } from '../../../../remote-feature-flag-controller/src/remote-feature-flag-controller.js'; +import { TransactionPayStrategy } from '../../constants.js'; +import { getMessengerMock } from '../../tests/messenger-mock.js'; +import type { TransactionPayQuote } from '../../types.js'; +import { submitAcrossQuotes } from './across-submit.js'; +import * as acrossTransactions from './transactions.js'; +import type { AcrossQuote } from './types.js'; jest.mock('@metamask/controller-utils', () => ({ ...jest.requireActual('@metamask/controller-utils'), diff --git a/packages/transaction-pay-controller/src/strategy/across/across-submit.ts b/packages/transaction-pay-controller/src/strategy/across/across-submit.ts index 02619938fa5..97efb0a93e4 100644 --- a/packages/transaction-pay-controller/src/strategy/across/across-submit.ts +++ b/packages/transaction-pay-controller/src/strategy/across/across-submit.ts @@ -12,28 +12,28 @@ import type { import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; -import { projectLogger } from '../../logger'; +import { projectLogger } from '../../logger.js'; import type { PayStrategyExecuteRequest, TransactionPayControllerMessenger, TransactionPayQuote, -} from '../../types'; -import { accountSupports7702 } from '../../utils/7702'; -import { getPayStrategiesConfig } from '../../utils/feature-flags'; -import { getGasBuffer } from '../../utils/feature-flags'; -import { getNetworkClientId } from '../../utils/provider'; +} from '../../types.js'; +import { accountSupports7702 } from '../../utils/7702.js'; +import { getPayStrategiesConfig } from '../../utils/feature-flags.js'; +import { getGasBuffer } from '../../utils/feature-flags.js'; +import { getNetworkClientId } from '../../utils/provider.js'; import { collectTransactionIds, getTransaction, updateTransaction, isPredictWithdrawTransaction, waitForTransactionConfirmed, -} from '../../utils/transaction'; +} from '../../utils/transaction.js'; import { getAcrossOrderedTransactions, getOriginalTransactionGas, -} from './transactions'; -import type { AcrossQuote } from './types'; +} from './transactions.js'; +import type { AcrossQuote } from './types.js'; const log = createModuleLogger(projectLogger, 'across-strategy'); const ACROSS_STATUS_POLL_INTERVAL = 1000; diff --git a/packages/transaction-pay-controller/src/strategy/across/authorization-list.ts b/packages/transaction-pay-controller/src/strategy/across/authorization-list.ts index c1570984585..c9e08cf8424 100644 --- a/packages/transaction-pay-controller/src/strategy/across/authorization-list.ts +++ b/packages/transaction-pay-controller/src/strategy/across/authorization-list.ts @@ -1,7 +1,7 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; -import type { QuoteRequest } from '../../types'; -import { isPredictWithdrawTransaction } from '../../utils/transaction'; +import type { QuoteRequest } from '../../types.js'; +import { isPredictWithdrawTransaction } from '../../utils/transaction.js'; /** * Check whether an authorization list on the original transaction is unsupported by Across. diff --git a/packages/transaction-pay-controller/src/strategy/across/perps.ts b/packages/transaction-pay-controller/src/strategy/across/perps.ts index 0a24e7617f8..89a2b1242e4 100644 --- a/packages/transaction-pay-controller/src/strategy/across/perps.ts +++ b/packages/transaction-pay-controller/src/strategy/across/perps.ts @@ -8,8 +8,8 @@ import { CHAIN_ID_HYPERCORE, HYPERCORE_USDC_DECIMALS, USDC_DECIMALS, -} from '../../constants'; -import type { QuoteRequest } from '../../types'; +} from '../../constants.js'; +import type { QuoteRequest } from '../../types.js'; export const ACROSS_HYPERCORE_USDC_PERPS_ADDRESS = '0x2100000000000000000000000000000000000000' as Hex; diff --git a/packages/transaction-pay-controller/src/strategy/across/requests.ts b/packages/transaction-pay-controller/src/strategy/across/requests.ts index f662dc7ae60..bd76b694d09 100644 --- a/packages/transaction-pay-controller/src/strategy/across/requests.ts +++ b/packages/transaction-pay-controller/src/strategy/across/requests.ts @@ -1,4 +1,4 @@ -import type { QuoteRequest } from '../../types'; +import type { QuoteRequest } from '../../types.js'; export function isAcrossQuoteRequest(request: QuoteRequest): boolean { return ( diff --git a/packages/transaction-pay-controller/src/strategy/across/transactions.test.ts b/packages/transaction-pay-controller/src/strategy/across/transactions.test.ts index 9647e5f48ee..28235b4c34b 100644 --- a/packages/transaction-pay-controller/src/strategy/across/transactions.test.ts +++ b/packages/transaction-pay-controller/src/strategy/across/transactions.test.ts @@ -1,8 +1,8 @@ import { TransactionType } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { getAcrossOrderedTransactions } from './transactions'; -import type { AcrossSwapApprovalResponse } from './types'; +import { getAcrossOrderedTransactions } from './transactions.js'; +import type { AcrossSwapApprovalResponse } from './types.js'; const QUOTE_MOCK: AcrossSwapApprovalResponse = { approvalTxns: [ diff --git a/packages/transaction-pay-controller/src/strategy/across/transactions.ts b/packages/transaction-pay-controller/src/strategy/across/transactions.ts index 38d04fff10b..3fe5d2260af 100644 --- a/packages/transaction-pay-controller/src/strategy/across/transactions.ts +++ b/packages/transaction-pay-controller/src/strategy/across/transactions.ts @@ -2,7 +2,7 @@ import { TransactionType } from '@metamask/transaction-controller'; import type { TransactionMeta } from '@metamask/transaction-controller'; import { BigNumber } from 'bignumber.js'; -import type { AcrossSwapApprovalResponse } from './types'; +import type { AcrossSwapApprovalResponse } from './types.js'; export type AcrossOrderedTransaction = { chainId: number; diff --git a/packages/transaction-pay-controller/src/strategy/fiat/FiatStrategy.test.ts b/packages/transaction-pay-controller/src/strategy/fiat/FiatStrategy.test.ts index b342021aebd..baef06d205c 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/FiatStrategy.test.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/FiatStrategy.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; import type { TransactionMeta } from '@metamask/transaction-controller'; -import type { TransactionPayControllerMessenger } from '../..'; -import type { TransactionPayQuote } from '../../types'; -import { getFiatQuotes } from './fiat-quotes'; -import { submitFiatQuotes } from './fiat-submit'; -import { FiatStrategy } from './FiatStrategy'; -import type { FiatQuote } from './types'; +import type { TransactionPayControllerMessenger } from '../../index.js'; +import type { TransactionPayQuote } from '../../types.js'; +import { getFiatQuotes } from './fiat-quotes.js'; +import { submitFiatQuotes } from './fiat-submit.js'; +import { FiatStrategy } from './FiatStrategy.js'; +import type { FiatQuote } from './types.js'; jest.mock('./fiat-quotes'); jest.mock('./fiat-submit'); diff --git a/packages/transaction-pay-controller/src/strategy/fiat/FiatStrategy.ts b/packages/transaction-pay-controller/src/strategy/fiat/FiatStrategy.ts index fca14901409..b6444f3c286 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/FiatStrategy.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/FiatStrategy.ts @@ -3,11 +3,11 @@ import type { PayStrategyExecuteRequest, PayStrategyGetQuotesRequest, TransactionPayQuote, -} from '../../types'; -import { prefixError } from '../../utils/error-prefix'; -import { getFiatQuotes } from './fiat-quotes'; -import { submitFiatQuotes } from './fiat-submit'; -import type { FiatQuote } from './types'; +} from '../../types.js'; +import { prefixError } from '../../utils/error-prefix.js'; +import { getFiatQuotes } from './fiat-quotes.js'; +import { submitFiatQuotes } from './fiat-submit.js'; +import type { FiatQuote } from './types.js'; const ERROR_PREFIX = 'Fiat: '; diff --git a/packages/transaction-pay-controller/src/strategy/fiat/constants.ts b/packages/transaction-pay-controller/src/strategy/fiat/constants.ts index 367c799ea22..fea887b8ec6 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/constants.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/constants.ts @@ -8,7 +8,7 @@ import { CHAIN_ID_POLYGON, MUSD_MONAD_ADDRESS, NATIVE_TOKEN_ADDRESS, -} from '../../constants'; +} from '../../constants.js'; export const DEFAULT_FIAT_CURRENCY = 'USD'; diff --git a/packages/transaction-pay-controller/src/strategy/fiat/fiat-direct-musd.test.ts b/packages/transaction-pay-controller/src/strategy/fiat/fiat-direct-musd.test.ts index 2832aced2aa..a6ecf9b9c66 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/fiat-direct-musd.test.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/fiat-direct-musd.test.ts @@ -1,22 +1,23 @@ +import { jest } from '@jest/globals'; import type { Quote as RampsQuote } from '@metamask/ramps-controller'; import type { TransactionMeta } from '@metamask/transaction-controller'; import { TransactionType } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { TransactionPayStrategy } from '../../constants'; +import { TransactionPayStrategy } from '../../constants.js'; import type { PayStrategyGetQuotesRequest, TransactionFiatPayment, TransactionPayRequiredToken, TransactionPayQuote, -} from '../../types'; -import { buildCaipAssetType, getTokenInfo } from '../../utils/token'; -import { getTransaction } from '../../utils/transaction'; -import { DEFAULT_FIAT_CURRENCY, MUSD_MONAD_FIAT_ASSET } from './constants'; +} from '../../types.js'; +import { buildCaipAssetType, getTokenInfo } from '../../utils/token.js'; +import { getTransaction } from '../../utils/transaction.js'; +import { DEFAULT_FIAT_CURRENCY, MUSD_MONAD_FIAT_ASSET } from './constants.js'; import { getDirectMusdFiatQuote, isDirectMusdMoneyAccountQuote, -} from './fiat-direct-musd'; +} from './fiat-direct-musd.js'; jest.mock('../../utils/token'); jest.mock('../../utils/transaction'); diff --git a/packages/transaction-pay-controller/src/strategy/fiat/fiat-direct-musd.ts b/packages/transaction-pay-controller/src/strategy/fiat/fiat-direct-musd.ts index 976bffcd9d2..e1efce2806e 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/fiat-direct-musd.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/fiat-direct-musd.ts @@ -6,27 +6,27 @@ import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { TransactionPayStrategy } from '../../constants'; -import { projectLogger } from '../../logger'; +import { TransactionPayStrategy } from '../../constants.js'; +import { projectLogger } from '../../logger.js'; import type { PayStrategyExecuteRequest, PayStrategyGetQuotesRequest, TransactionFiatPayment, TransactionPayRequiredToken, TransactionPayQuote, -} from '../../types'; -import { prefixError } from '../../utils/error-prefix'; -import { getFiatVaultDisabled } from '../../utils/feature-flags'; -import { submitMoneyAccountVaultDeposit } from '../../utils/ma-vault-deposit'; -import { buildCaipAssetType, getTokenInfo } from '../../utils/token'; -import { MUSD_MONAD_FIAT_ASSET } from './constants'; -import type { FiatQuote } from './types'; +} from '../../types.js'; +import { prefixError } from '../../utils/error-prefix.js'; +import { getFiatVaultDisabled } from '../../utils/feature-flags.js'; +import { submitMoneyAccountVaultDeposit } from '../../utils/ma-vault-deposit.js'; +import { buildCaipAssetType, getTokenInfo } from '../../utils/token.js'; +import { MUSD_MONAD_FIAT_ASSET } from './constants.js'; +import type { FiatQuote } from './types.js'; import { getRampsQuote, getRawSourceAmountFromOrderCryptoAmount, resolveSourceAmountRaw, validateOrderAsset, -} from './utils'; +} from './utils.js'; const log = createModuleLogger(projectLogger, 'fiat-direct-musd'); const DIRECT_MUSD_ERROR_PREFIX = 'Direct mUSD: '; diff --git a/packages/transaction-pay-controller/src/strategy/fiat/fiat-quotes.test.ts b/packages/transaction-pay-controller/src/strategy/fiat/fiat-quotes.test.ts index 580b868bc62..7320f2389f5 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/fiat-quotes.test.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/fiat-quotes.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { Quote as RampsQuote, QuotesResponse as RampsQuotesResponse, @@ -6,29 +7,32 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; import { TransactionType } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { NATIVE_TOKEN_ADDRESS, TransactionPayStrategy } from '../../constants'; +import { + NATIVE_TOKEN_ADDRESS, + TransactionPayStrategy, +} from '../../constants.js'; import type { PayStrategyGetQuotesRequest, TransactionFiatPayment, TransactionPayQuote, TransactionPayRequiredToken, -} from '../../types'; +} from '../../types.js'; import { buildCaipAssetType, computeRawFromFiatAmount, getTokenFiatRate, getTokenInfo, -} from '../../utils/token'; -import { getRelayQuotes } from '../relay/relay-quotes'; -import type { RelayQuote } from '../relay/types'; -import type { TransactionPayFiatAsset } from './constants'; -import { DEFAULT_FIAT_CURRENCY, MUSD_MONAD_FIAT_ASSET } from './constants'; -import { getFiatQuotes } from './fiat-quotes'; +} from '../../utils/token.js'; +import { getRelayQuotes } from '../relay/relay-quotes.js'; +import type { RelayQuote } from '../relay/types.js'; +import type { TransactionPayFiatAsset } from './constants.js'; +import { DEFAULT_FIAT_CURRENCY, MUSD_MONAD_FIAT_ASSET } from './constants.js'; +import { getFiatQuotes } from './fiat-quotes.js'; import { deriveFiatAssetForFiatPayment, getRawSourceAmountFromOrderCryptoAmount, isMoneyAccountDepositTransaction, -} from './utils'; +} from './utils.js'; jest.mock('../relay/relay-quotes'); jest.mock('../../utils/token'); diff --git a/packages/transaction-pay-controller/src/strategy/fiat/fiat-quotes.ts b/packages/transaction-pay-controller/src/strategy/fiat/fiat-quotes.ts index 5359bf83e50..88e52c2b253 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/fiat-quotes.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/fiat-quotes.ts @@ -3,32 +3,35 @@ import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { NATIVE_TOKEN_ADDRESS, TransactionPayStrategy } from '../../constants'; -import { projectLogger } from '../../logger'; +import { + NATIVE_TOKEN_ADDRESS, + TransactionPayStrategy, +} from '../../constants.js'; +import { projectLogger } from '../../logger.js'; import type { PayStrategyGetQuotesRequest, QuoteRequest, TransactionFiatPayment, TransactionPayRequiredToken, TransactionPayQuote, -} from '../../types'; -import { getDirectMoneyMusdEnabled } from '../../utils/feature-flags'; +} from '../../types.js'; +import { getDirectMoneyMusdEnabled } from '../../utils/feature-flags.js'; import { buildCaipAssetType, computeRawFromFiatAmount, getTokenFiatRate, getTokenInfo, -} from '../../utils/token'; -import { getRelayQuotes } from '../relay/relay-quotes'; -import type { RelayQuote } from '../relay/types'; -import type { TransactionPayFiatAsset } from './constants'; -import { getDirectMusdFiatQuote } from './fiat-direct-musd'; -import type { FiatQuote } from './types'; +} from '../../utils/token.js'; +import { getRelayQuotes } from '../relay/relay-quotes.js'; +import type { RelayQuote } from '../relay/types.js'; +import type { TransactionPayFiatAsset } from './constants.js'; +import { getDirectMusdFiatQuote } from './fiat-direct-musd.js'; +import type { FiatQuote } from './types.js'; import { deriveFiatAssetForFiatPayment, getRampsQuote, isMoneyAccountDepositTransaction, -} from './utils'; +} from './utils.js'; const log = createModuleLogger(projectLogger, 'fiat-strategy'); diff --git a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit-simple.test.ts b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit-simple.test.ts index 6168dd9e875..18ffbab57bf 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit-simple.test.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit-simple.test.ts @@ -1,19 +1,20 @@ +import { jest } from '@jest/globals'; import type { TransactionMeta } from '@metamask/transaction-controller'; import { TransactionType } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { TransactionPayStrategy } from '../../constants'; +import { TransactionPayStrategy } from '../../constants.js'; import type { PayStrategyExecuteRequest, QuoteRequest, TransactionPayQuote, -} from '../../types'; -import { getFiatMaxRateDriftPercent } from '../../utils/feature-flags'; -import { getRelayQuotes } from '../relay/relay-quotes'; -import { submitRelayQuotes } from '../relay/relay-submit'; -import type { RelayQuote } from '../relay/types'; -import { submitSimpleRelay } from './fiat-submit-simple'; -import type { FiatQuote } from './types'; +} from '../../types.js'; +import { getFiatMaxRateDriftPercent } from '../../utils/feature-flags.js'; +import { getRelayQuotes } from '../relay/relay-quotes.js'; +import { submitRelayQuotes } from '../relay/relay-submit.js'; +import type { RelayQuote } from '../relay/types.js'; +import { submitSimpleRelay } from './fiat-submit-simple.js'; +import type { FiatQuote } from './types.js'; jest.mock('../../utils/feature-flags'); jest.mock('../relay/relay-quotes'); diff --git a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit-simple.ts b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit-simple.ts index be1aca5e7f5..12f3d6a3b09 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit-simple.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit-simple.ts @@ -1,13 +1,13 @@ import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; -import { projectLogger } from '../../logger'; -import type { PayStrategyExecuteRequest, QuoteRequest } from '../../types'; -import { getFiatMaxRateDriftPercent } from '../../utils/feature-flags'; -import { getRelayQuotes } from '../relay/relay-quotes'; -import { submitRelayQuotes } from '../relay/relay-submit'; -import type { FiatQuote } from './types'; -import { validateRelayRateDrift } from './utils'; +import { projectLogger } from '../../logger.js'; +import type { PayStrategyExecuteRequest, QuoteRequest } from '../../types.js'; +import { getFiatMaxRateDriftPercent } from '../../utils/feature-flags.js'; +import { getRelayQuotes } from '../relay/relay-quotes.js'; +import { submitRelayQuotes } from '../relay/relay-submit.js'; +import type { FiatQuote } from './types.js'; +import { validateRelayRateDrift } from './utils.js'; const log = createModuleLogger(projectLogger, 'fiat-submit-simple'); diff --git a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit-with-transaction-data.test.ts b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit-with-transaction-data.test.ts index 99a744eff5b..d831d85f37f 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit-with-transaction-data.test.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit-with-transaction-data.test.ts @@ -1,23 +1,24 @@ +import { jest } from '@jest/globals'; import type { TransactionMeta } from '@metamask/transaction-controller'; import { TransactionType } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { TransactionPayStrategy } from '../../constants'; +import { TransactionPayStrategy } from '../../constants.js'; import type { PayStrategyExecuteRequest, QuoteRequest, TransactionPayQuote, -} from '../../types'; +} from '../../types.js'; import { getFiatFeeReserveMultiplier, getFiatMaxRateDriftPercent, -} from '../../utils/feature-flags'; -import { getTransaction, updateTransaction } from '../../utils/transaction'; -import { getRelayQuotes } from '../relay/relay-quotes'; -import { submitRelayQuotes } from '../relay/relay-submit'; -import type { RelayQuote } from '../relay/types'; -import { submitWithTransactionData } from './fiat-submit-with-transaction-data'; -import type { FiatQuote } from './types'; +} from '../../utils/feature-flags.js'; +import { getTransaction, updateTransaction } from '../../utils/transaction.js'; +import { getRelayQuotes } from '../relay/relay-quotes.js'; +import { submitRelayQuotes } from '../relay/relay-submit.js'; +import type { RelayQuote } from '../relay/types.js'; +import { submitWithTransactionData } from './fiat-submit-with-transaction-data.js'; +import type { FiatQuote } from './types.js'; jest.mock('../../utils/feature-flags'); jest.mock('../../utils/transaction'); diff --git a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit-with-transaction-data.ts b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit-with-transaction-data.ts index 03f975e1168..6d6d5944458 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit-with-transaction-data.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit-with-transaction-data.ts @@ -2,18 +2,18 @@ import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { projectLogger } from '../../logger'; -import type { PayStrategyExecuteRequest, QuoteRequest } from '../../types'; +import { projectLogger } from '../../logger.js'; +import type { PayStrategyExecuteRequest, QuoteRequest } from '../../types.js'; import { getFiatFeeReserveMultiplier, getFiatMaxRateDriftPercent, -} from '../../utils/feature-flags'; -import { getTransaction, updateTransaction } from '../../utils/transaction'; -import { getRelayQuotes } from '../relay/relay-quotes'; -import { submitRelayQuotes } from '../relay/relay-submit'; -import type { RelayQuote } from '../relay/types'; -import type { FiatQuote } from './types'; -import { validateRelayRateDrift } from './utils'; +} from '../../utils/feature-flags.js'; +import { getTransaction, updateTransaction } from '../../utils/transaction.js'; +import { getRelayQuotes } from '../relay/relay-quotes.js'; +import { submitRelayQuotes } from '../relay/relay-submit.js'; +import type { RelayQuote } from '../relay/types.js'; +import type { FiatQuote } from './types.js'; +import { validateRelayRateDrift } from './utils.js'; const log = createModuleLogger(projectLogger, 'fiat-submit-calldata'); diff --git a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.test.ts b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.test.ts index 1dee9b8a253..76d64bf12fa 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.test.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { Quote as RampsQuote, RampsOrder, @@ -8,29 +9,32 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; import { TransactionType } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { TransactionPayStrategy } from '../../constants'; +import { TransactionPayStrategy } from '../../constants.js'; import type { PayStrategyExecuteRequest, QuoteRequest, TransactionPayFiatOptions, TransactionPayQuote, -} from '../../types'; -import { buildCaipAssetType } from '../../utils/token'; +} from '../../types.js'; +import { buildCaipAssetType } from '../../utils/token.js'; import { collectTransactionIds, getTransaction, updateTransaction, waitForTransactionConfirmed, -} from '../../utils/transaction'; -import { getRelayQuotes } from '../relay/relay-quotes'; -import { submitRelayQuotes } from '../relay/relay-submit'; -import type { RelayQuote } from '../relay/types'; -import type { TransactionPayFiatAsset } from './constants'; -import { MUSD_MONAD_FIAT_ASSET } from './constants'; -import { submitFiatQuotes } from './fiat-submit'; -import { fundFiatOrderFromTestSource } from './fiat-test-funding'; -import type { FiatQuote } from './types'; -import { deriveFiatAssetForFiatPayment, resolveSourceAmountRaw } from './utils'; +} from '../../utils/transaction.js'; +import { getRelayQuotes } from '../relay/relay-quotes.js'; +import { submitRelayQuotes } from '../relay/relay-submit.js'; +import type { RelayQuote } from '../relay/types.js'; +import type { TransactionPayFiatAsset } from './constants.js'; +import { MUSD_MONAD_FIAT_ASSET } from './constants.js'; +import { submitFiatQuotes } from './fiat-submit.js'; +import { fundFiatOrderFromTestSource } from './fiat-test-funding.js'; +import type { FiatQuote } from './types.js'; +import { + deriveFiatAssetForFiatPayment, + resolveSourceAmountRaw, +} from './utils.js'; jest.mock('./utils', () => ({ ...jest.requireActual('./utils'), diff --git a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.ts b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.ts index 949170a4fea..19042c2a3ee 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.ts @@ -3,33 +3,33 @@ import { RampsOrderStatus } from '@metamask/ramps-controller'; import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; -import { projectLogger } from '../../logger'; +import { projectLogger } from '../../logger.js'; import type { PayStrategy, PayStrategyExecuteRequest, TransactionPayFiatOptions, TransactionPayControllerMessenger, -} from '../../types'; -import { prefixError } from '../../utils/error-prefix'; +} from '../../types.js'; +import { prefixError } from '../../utils/error-prefix.js'; import { getFiatOrderPollIntervalMs, getFiatOrderPollTimeoutMs, -} from '../../utils/feature-flags'; -import { updateTransaction } from '../../utils/transaction'; +} from '../../utils/feature-flags.js'; +import { updateTransaction } from '../../utils/transaction.js'; import { isDirectMusdMoneyAccountQuote, submitDirectMusdAfterFiatCompletion, -} from './fiat-direct-musd'; -import { submitSimpleRelay } from './fiat-submit-simple'; -import { submitWithTransactionData } from './fiat-submit-with-transaction-data'; -import { fundFiatOrderFromTestSource } from './fiat-test-funding'; -import type { FiatQuote } from './types'; +} from './fiat-direct-musd.js'; +import { submitSimpleRelay } from './fiat-submit-simple.js'; +import { submitWithTransactionData } from './fiat-submit-with-transaction-data.js'; +import { fundFiatOrderFromTestSource } from './fiat-test-funding.js'; +import type { FiatQuote } from './types.js'; import { deriveFiatAssetForFiatPayment, extractProviderCode, resolveSourceAmountRaw, validateOrderAsset, -} from './utils'; +} from './utils.js'; const log = createModuleLogger(projectLogger, 'fiat-submit'); const POST_RAMP_ERROR_PREFIX = 'Post-Ramp: '; diff --git a/packages/transaction-pay-controller/src/strategy/fiat/fiat-test-funding.test.ts b/packages/transaction-pay-controller/src/strategy/fiat/fiat-test-funding.test.ts index b80a1bc7740..0d496f362c4 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/fiat-test-funding.test.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/fiat-test-funding.test.ts @@ -1,21 +1,25 @@ import { Interface } from '@ethersproject/abi'; +import { jest } from '@jest/globals'; import type { TransactionMeta } from '@metamask/transaction-controller'; import { TransactionType } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { NATIVE_TOKEN_ADDRESS, TransactionPayStrategy } from '../../constants'; -import type { TransactionPayQuote } from '../../types'; -import { getNetworkClientId } from '../../utils/provider'; +import { + NATIVE_TOKEN_ADDRESS, + TransactionPayStrategy, +} from '../../constants.js'; +import type { TransactionPayQuote } from '../../types.js'; +import { getNetworkClientId } from '../../utils/provider.js'; import { buildCaipAssetType, getLiveTokenBalance, getNativeToken, getTokenInfo, -} from '../../utils/token'; -import { waitForTransactionConfirmed } from '../../utils/transaction'; -import { fundFiatOrderFromTestSource } from './fiat-test-funding'; -import type { FiatQuote } from './types'; -import { deriveFiatAssetForFiatPayment } from './utils'; +} from '../../utils/token.js'; +import { waitForTransactionConfirmed } from '../../utils/transaction.js'; +import { fundFiatOrderFromTestSource } from './fiat-test-funding.js'; +import type { FiatQuote } from './types.js'; +import { deriveFiatAssetForFiatPayment } from './utils.js'; jest.mock('../../utils/provider'); jest.mock('../../utils/token'); diff --git a/packages/transaction-pay-controller/src/strategy/fiat/fiat-test-funding.ts b/packages/transaction-pay-controller/src/strategy/fiat/fiat-test-funding.ts index 8a4f72e6fa9..00136c1e900 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/fiat-test-funding.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/fiat-test-funding.ts @@ -11,25 +11,25 @@ import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { NATIVE_TOKEN_ADDRESS } from '../../constants'; -import { projectLogger } from '../../logger'; +import { NATIVE_TOKEN_ADDRESS } from '../../constants.js'; +import { projectLogger } from '../../logger.js'; import type { TransactionPayControllerMessenger, TransactionPayFiatOptions, TransactionPayQuote, -} from '../../types'; -import { getNetworkClientId } from '../../utils/provider'; +} from '../../types.js'; +import { getNetworkClientId } from '../../utils/provider.js'; import { buildCaipAssetType, getLiveTokenBalance, getNativeToken, getTokenInfo, -} from '../../utils/token'; -import { waitForTransactionConfirmed } from '../../utils/transaction'; -import { isDirectMusdMoneyAccountQuote } from './fiat-direct-musd'; -import type { FiatQuote } from './types'; -import { deriveFiatAssetForFiatPayment } from './utils'; -import { getRawSourceAmountFromOrderCryptoAmount } from './utils'; +} from '../../utils/token.js'; +import { waitForTransactionConfirmed } from '../../utils/transaction.js'; +import { isDirectMusdMoneyAccountQuote } from './fiat-direct-musd.js'; +import type { FiatQuote } from './types.js'; +import { deriveFiatAssetForFiatPayment } from './utils.js'; +import { getRawSourceAmountFromOrderCryptoAmount } from './utils.js'; const log = createModuleLogger(projectLogger, 'fiat-test-funding'); const TOKEN_TRANSFER_INTERFACE = new Interface([ diff --git a/packages/transaction-pay-controller/src/strategy/fiat/types.ts b/packages/transaction-pay-controller/src/strategy/fiat/types.ts index a64c5aefea0..d40041b6748 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/types.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/types.ts @@ -1,6 +1,6 @@ import type { Quote } from '@metamask/ramps-controller'; -import type { RelayQuote } from '../relay/types'; +import type { RelayQuote } from '../relay/types.js'; export type FiatQuote = { rampsQuote: Quote; diff --git a/packages/transaction-pay-controller/src/strategy/fiat/utils.test.ts b/packages/transaction-pay-controller/src/strategy/fiat/utils.test.ts index f0fa144883d..5e62291b149 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/utils.test.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/utils.test.ts @@ -1,19 +1,23 @@ +import { jest } from '@jest/globals'; import type { RampsOrder } from '@metamask/ramps-controller'; import type { TransactionMeta } from '@metamask/transaction-controller'; import { TransactionType } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { getDefaultRemoteFeatureFlagControllerState } from '../../../../remote-feature-flag-controller/src/remote-feature-flag-controller'; -import { NATIVE_TOKEN_ADDRESS } from '../../constants'; -import { getMessengerMock } from '../../tests/messenger-mock'; -import { ETH_MAINNET_FIAT_ASSET, FIAT_ASSET_ID_BY_TX_TYPE } from './constants'; -import type { TransactionPayFiatAsset } from './constants'; +import { getDefaultRemoteFeatureFlagControllerState } from '../../../../remote-feature-flag-controller/src/remote-feature-flag-controller.js'; +import { NATIVE_TOKEN_ADDRESS } from '../../constants.js'; +import { getMessengerMock } from '../../tests/messenger-mock.js'; +import { + ETH_MAINNET_FIAT_ASSET, + FIAT_ASSET_ID_BY_TX_TYPE, +} from './constants.js'; +import type { TransactionPayFiatAsset } from './constants.js'; import { deriveFiatAssetForFiatPayment, getRawSourceAmountFromOrderCryptoAmount, isMoneyAccountDepositTransaction, resolveSourceAmountRaw, -} from './utils'; +} from './utils.js'; const TX_HASH_MOCK = '0xabc123'; const WALLET_ADDRESS_MOCK = '0x1111111111111111111111111111111111111111' as Hex; diff --git a/packages/transaction-pay-controller/src/strategy/fiat/utils.ts b/packages/transaction-pay-controller/src/strategy/fiat/utils.ts index 3a94efc7956..e53e557a98a 100644 --- a/packages/transaction-pay-controller/src/strategy/fiat/utils.ts +++ b/packages/transaction-pay-controller/src/strategy/fiat/utils.ts @@ -9,17 +9,17 @@ import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { projectLogger } from '../../logger'; -import type { TransactionPayControllerMessenger } from '../../types'; +import { projectLogger } from '../../logger.js'; +import type { TransactionPayControllerMessenger } from '../../types.js'; import { getFiatAssetPerTransactionType, getFiatEnabledTypes, -} from '../../utils/feature-flags'; -import { buildCaipAssetType, getTokenInfo } from '../../utils/token'; -import { getTransferredAmountFromTxHash } from '../../utils/transaction'; -import type { RelayQuote } from '../relay/types'; -import type { TransactionPayFiatAsset } from './constants'; -import { DEFAULT_FIAT_CURRENCY, FIAT_ENABLED_TYPES } from './constants'; +} from '../../utils/feature-flags.js'; +import { buildCaipAssetType, getTokenInfo } from '../../utils/token.js'; +import { getTransferredAmountFromTxHash } from '../../utils/transaction.js'; +import type { RelayQuote } from '../relay/types.js'; +import type { TransactionPayFiatAsset } from './constants.js'; +import { DEFAULT_FIAT_CURRENCY, FIAT_ENABLED_TYPES } from './constants.js'; const log = createModuleLogger(projectLogger, 'fiat-utils'); diff --git a/packages/transaction-pay-controller/src/strategy/relay/RelayBridge.test.ts b/packages/transaction-pay-controller/src/strategy/relay/RelayBridge.test.ts index 0f90f518930..6b142d330c4 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/RelayBridge.test.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/RelayBridge.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; import type { TransactionMeta } from '@metamask/transaction-controller'; -import type { TransactionPayControllerMessenger } from '../..'; -import type { TransactionPayQuote } from '../../types'; -import { getRelayQuotes } from './relay-quotes'; -import { submitRelayQuotes } from './relay-submit'; -import { RelayStrategy } from './RelayStrategy'; -import type { RelayQuote } from './types'; +import type { TransactionPayControllerMessenger } from '../../index.js'; +import type { TransactionPayQuote } from '../../types.js'; +import { getRelayQuotes } from './relay-quotes.js'; +import { submitRelayQuotes } from './relay-submit.js'; +import { RelayStrategy } from './RelayStrategy.js'; +import type { RelayQuote } from './types.js'; jest.mock('./relay-quotes'); jest.mock('./relay-submit'); diff --git a/packages/transaction-pay-controller/src/strategy/relay/RelayStrategy.test.ts b/packages/transaction-pay-controller/src/strategy/relay/RelayStrategy.test.ts index 947a0553fe1..e1474765588 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/RelayStrategy.test.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/RelayStrategy.test.ts @@ -1,15 +1,16 @@ +import { jest } from '@jest/globals'; import type { Hex } from '@metamask/utils'; import type { PayStrategyExecuteRequest, PayStrategyGetQuotesRequest, TransactionPayQuote, -} from '../../types'; -import { getPayStrategiesConfig } from '../../utils/feature-flags'; -import { getRelayQuotes } from './relay-quotes'; -import { submitRelayQuotes } from './relay-submit'; -import { RelayStrategy } from './RelayStrategy'; -import type { RelayQuote } from './types'; +} from '../../types.js'; +import { getPayStrategiesConfig } from '../../utils/feature-flags.js'; +import { getRelayQuotes } from './relay-quotes.js'; +import { submitRelayQuotes } from './relay-submit.js'; +import { RelayStrategy } from './RelayStrategy.js'; +import type { RelayQuote } from './types.js'; jest.mock('./relay-quotes'); jest.mock('./relay-submit'); diff --git a/packages/transaction-pay-controller/src/strategy/relay/RelayStrategy.ts b/packages/transaction-pay-controller/src/strategy/relay/RelayStrategy.ts index 22f6d9c31fd..af645056e7a 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/RelayStrategy.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/RelayStrategy.ts @@ -3,11 +3,11 @@ import type { PayStrategyExecuteRequest, PayStrategyGetQuotesRequest, TransactionPayQuote, -} from '../../types'; -import { getPayStrategiesConfig } from '../../utils/feature-flags'; -import { getRelayQuotes } from './relay-quotes'; -import { submitRelayQuotes } from './relay-submit'; -import type { RelayQuote } from './types'; +} from '../../types.js'; +import { getPayStrategiesConfig } from '../../utils/feature-flags.js'; +import { getRelayQuotes } from './relay-quotes.js'; +import { submitRelayQuotes } from './relay-submit.js'; +import type { RelayQuote } from './types.js'; export class RelayStrategy implements PayStrategy { supports(request: PayStrategyGetQuotesRequest): boolean { diff --git a/packages/transaction-pay-controller/src/strategy/relay/constants.ts b/packages/transaction-pay-controller/src/strategy/relay/constants.ts index 9d01da69fff..ab47df2db18 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/constants.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/constants.ts @@ -1,8 +1,8 @@ import { TransactionType } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { PERPS_DEPOSIT_TYPES } from '../../constants'; -import type { RelayStatus } from './types'; +import { PERPS_DEPOSIT_TYPES } from '../../constants.js'; +import type { RelayStatus } from './types.js'; export const FALLBACK_HASH = '0x0' as Hex; diff --git a/packages/transaction-pay-controller/src/strategy/relay/hyperliquid-activation.test.ts b/packages/transaction-pay-controller/src/strategy/relay/hyperliquid-activation.test.ts index 40adcdd015a..7b03bd24a4d 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/hyperliquid-activation.test.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/hyperliquid-activation.test.ts @@ -1,16 +1,17 @@ +import { jest } from '@jest/globals'; import type { Hex } from '@metamask/utils'; import type { QuoteRequest, TransactionPayControllerMessenger, -} from '../../types'; -import { getHyperliquidActivationFeeConfig } from '../../utils/feature-flags'; -import { HYPERLIQUID_INFO_URL } from './constants'; -import type { HyperLiquidLedgerUpdate } from './hyperliquid-activation'; +} from '../../types.js'; +import { getHyperliquidActivationFeeConfig } from '../../utils/feature-flags.js'; +import { HYPERLIQUID_INFO_URL } from './constants.js'; +import type { HyperLiquidLedgerUpdate } from './hyperliquid-activation.js'; import { applyHyperliquidActivationFee, isHyperLiquidAccountActivated, -} from './hyperliquid-activation'; +} from './hyperliquid-activation.js'; jest.mock('../../utils/feature-flags', () => ({ getHyperliquidActivationFeeConfig: jest.fn(), diff --git a/packages/transaction-pay-controller/src/strategy/relay/hyperliquid-activation.ts b/packages/transaction-pay-controller/src/strategy/relay/hyperliquid-activation.ts index 60b7a6bb953..84a5afe9300 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/hyperliquid-activation.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/hyperliquid-activation.ts @@ -2,14 +2,14 @@ import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { HYPERCORE_USDC_DECIMALS } from '../../constants'; -import { projectLogger } from '../../logger'; +import { HYPERCORE_USDC_DECIMALS } from '../../constants.js'; +import { projectLogger } from '../../logger.js'; import type { QuoteRequest, TransactionPayControllerMessenger, -} from '../../types'; -import { getHyperliquidActivationFeeConfig } from '../../utils/feature-flags'; -import { HYPERLIQUID_INFO_URL } from './constants'; +} from '../../types.js'; +import { getHyperliquidActivationFeeConfig } from '../../utils/feature-flags.js'; +import { HYPERLIQUID_INFO_URL } from './constants.js'; const log = createModuleLogger(projectLogger, 'hyperliquid-activation'); diff --git a/packages/transaction-pay-controller/src/strategy/relay/hyperliquid-withdraw.test.ts b/packages/transaction-pay-controller/src/strategy/relay/hyperliquid-withdraw.test.ts index 6fef5c4116b..dfa6de89c68 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/hyperliquid-withdraw.test.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/hyperliquid-withdraw.test.ts @@ -1,12 +1,13 @@ +import { jest } from '@jest/globals'; import { successfulFetch } from '@metamask/controller-utils'; import { SignTypedDataVersion } from '@metamask/keyring-controller'; import type { Hex } from '@metamask/utils'; -import { getMessengerMock } from '../../tests/messenger-mock'; -import type { TransactionPayQuote } from '../../types'; -import { RELAY_AUTHORIZE_URL, HYPERLIQUID_EXCHANGE_URL } from './constants'; -import { submitHyperliquidWithdraw } from './hyperliquid-withdraw'; -import type { RelayQuote, RelaySignatureStep } from './types'; +import { getMessengerMock } from '../../tests/messenger-mock.js'; +import type { TransactionPayQuote } from '../../types.js'; +import { RELAY_AUTHORIZE_URL, HYPERLIQUID_EXCHANGE_URL } from './constants.js'; +import { submitHyperliquidWithdraw } from './hyperliquid-withdraw.js'; +import type { RelayQuote, RelaySignatureStep } from './types.js'; jest.mock('@metamask/controller-utils', () => ({ ...jest.requireActual('@metamask/controller-utils'), diff --git a/packages/transaction-pay-controller/src/strategy/relay/hyperliquid-withdraw.ts b/packages/transaction-pay-controller/src/strategy/relay/hyperliquid-withdraw.ts index 69362a65794..cc453db0c1b 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/hyperliquid-withdraw.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/hyperliquid-withdraw.ts @@ -3,14 +3,14 @@ import { SignTypedDataVersion } from '@metamask/keyring-controller'; import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; -import { CHAIN_ID_ARBITRUM } from '../../constants'; -import { projectLogger } from '../../logger'; +import { CHAIN_ID_ARBITRUM } from '../../constants.js'; +import { projectLogger } from '../../logger.js'; import type { TransactionPayControllerMessenger, TransactionPayQuote, -} from '../../types'; -import { RELAY_AUTHORIZE_URL, HYPERLIQUID_EXCHANGE_URL } from './constants'; -import type { RelayQuote, RelaySignatureStep } from './types'; +} from '../../types.js'; +import { RELAY_AUTHORIZE_URL, HYPERLIQUID_EXCHANGE_URL } from './constants.js'; +import type { RelayQuote, RelaySignatureStep } from './types.js'; const log = createModuleLogger(projectLogger, 'hyperliquid-withdraw'); diff --git a/packages/transaction-pay-controller/src/strategy/relay/polymarket/withdraw.test.ts b/packages/transaction-pay-controller/src/strategy/relay/polymarket/withdraw.test.ts index 61c116f4ede..5af10ec749e 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/polymarket/withdraw.test.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/polymarket/withdraw.test.ts @@ -1,22 +1,23 @@ +import { jest } from '@jest/globals'; import type { Hex } from '@metamask/utils'; import { POLYGON_PUSD_ADDRESS, POLYGON_USDCE_ADDRESS, -} from '../../../constants'; -import { getMessengerMock } from '../../../tests/messenger-mock'; -import type { QuoteRequest, TransactionPayQuote } from '../../../types'; -import { getLiveTokenBalance } from '../../../utils/token'; -import type { RelayQuote, RelayQuoteRequest } from '../types'; +} from '../../../constants.js'; +import { getMessengerMock } from '../../../tests/messenger-mock.js'; +import type { QuoteRequest, TransactionPayQuote } from '../../../types.js'; +import { getLiveTokenBalance } from '../../../utils/token.js'; +import type { RelayQuote, RelayQuoteRequest } from '../types.js'; import { POLYMARKET_COLLATERAL_OFFRAMP_POLYGON, POLYMARKET_COLLATERAL_ONRAMP_POLYGON, -} from './constants'; +} from './constants.js'; import { applyPolymarketDepositWalletOverrides, submitPolymarketWithdraw, sweepPolymarketDepositWallet, -} from './withdraw'; +} from './withdraw.js'; jest.mock('../../../utils/token'); diff --git a/packages/transaction-pay-controller/src/strategy/relay/polymarket/withdraw.ts b/packages/transaction-pay-controller/src/strategy/relay/polymarket/withdraw.ts index 30a14183a4e..a234c1c4ac7 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/polymarket/withdraw.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/polymarket/withdraw.ts @@ -5,33 +5,33 @@ import { CHAIN_ID_POLYGON, POLYGON_PUSD_ADDRESS, POLYGON_USDCE_ADDRESS, -} from '../../../constants'; -import { projectLogger } from '../../../logger'; +} from '../../../constants.js'; +import { projectLogger } from '../../../logger.js'; import type { QuoteRequest, TransactionPayControllerMessenger, TransactionPayQuote, -} from '../../../types'; -import { getLiveTokenBalance } from '../../../utils/token'; +} from '../../../types.js'; +import { getLiveTokenBalance } from '../../../utils/token.js'; import type { RelayQuote, RelayQuoteRequest, RelayStatus, RelayTransactionStep, -} from '../types'; +} from '../types.js'; import { encodeApprove, encodeUnwrap, encodeWrap, extractErc20TransferRecipient, -} from './calldata'; +} from './calldata.js'; import { POLYMARKET_COLLATERAL_OFFRAMP_POLYGON, POLYMARKET_COLLATERAL_ONRAMP_POLYGON, SWEEP_BALANCE_RETRY_ATTEMPTS, SWEEP_BALANCE_RETRY_DELAY_MS, SWEEP_RELAYER_SETTLE_DELAY_MS, -} from './constants'; +} from './constants.js'; const log = createModuleLogger(projectLogger, 'polymarket-withdraw'); diff --git a/packages/transaction-pay-controller/src/strategy/relay/relay-api.test.ts b/packages/transaction-pay-controller/src/strategy/relay/relay-api.test.ts index 40ded0e790c..f432b712984 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/relay-api.test.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/relay-api.test.ts @@ -1,12 +1,14 @@ -import type { FeatureFlags } from '../../utils/feature-flags'; -import { getFeatureFlags } from '../../utils/feature-flags'; -import { RELAY_STATUS_URL } from './constants'; +import { jest } from '@jest/globals'; + +import type { FeatureFlags } from '../../utils/feature-flags.js'; +import { getFeatureFlags } from '../../utils/feature-flags.js'; +import { RELAY_STATUS_URL } from './constants.js'; import { fetchRelayQuote, getRelayStatus, submitRelayExecute, -} from './relay-api'; -import type { RelayQuoteRequest } from './types'; +} from './relay-api.js'; +import type { RelayQuoteRequest } from './types.js'; jest.mock('../../utils/feature-flags'); diff --git a/packages/transaction-pay-controller/src/strategy/relay/relay-api.ts b/packages/transaction-pay-controller/src/strategy/relay/relay-api.ts index 8f42d3715ee..836ba83159b 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/relay-api.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/relay-api.ts @@ -1,13 +1,13 @@ -import type { TransactionPayControllerMessenger } from '../../types'; -import { getFeatureFlags } from '../../utils/feature-flags'; -import { RELAY_STATUS_URL } from './constants'; +import type { TransactionPayControllerMessenger } from '../../types.js'; +import { getFeatureFlags } from '../../utils/feature-flags.js'; +import { RELAY_STATUS_URL } from './constants.js'; import type { RelayExecuteRequest, RelayExecuteResponse, RelayQuote, RelayQuoteRequest, RelayStatusResponse, -} from './types'; +} from './types.js'; /** * Fetch a quote from the Relay API. diff --git a/packages/transaction-pay-controller/src/strategy/relay/relay-max-gas-station.test.ts b/packages/transaction-pay-controller/src/strategy/relay/relay-max-gas-station.test.ts index 918d1d09cb1..9c383421c8d 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/relay-max-gas-station.test.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/relay-max-gas-station.test.ts @@ -1,27 +1,28 @@ +import { jest } from '@jest/globals'; import type { GasFeeToken, TransactionMeta, } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { TransactionPayStrategy } from '../..'; -import { getDefaultRemoteFeatureFlagControllerState } from '../../../../remote-feature-flag-controller/src/remote-feature-flag-controller'; -import { getMessengerMock } from '../../tests/messenger-mock'; +import { getDefaultRemoteFeatureFlagControllerState } from '../../../../remote-feature-flag-controller/src/remote-feature-flag-controller.js'; +import { TransactionPayStrategy } from '../../index.js'; +import { getMessengerMock } from '../../tests/messenger-mock.js'; import type { Amount, FiatValue, PayStrategyGetQuotesRequest, QuoteRequest, TransactionPayQuote, -} from '../../types'; -import { calculateGasFeeTokenCost } from '../../utils/gas'; +} from '../../types.js'; +import { calculateGasFeeTokenCost } from '../../utils/gas.js'; import { getNativeToken, getTokenBalance, getTokenInfo, -} from '../../utils/token'; -import { getRelayMaxGasStationQuote } from './relay-max-gas-station'; -import type { RelayQuote } from './types'; +} from '../../utils/token.js'; +import { getRelayMaxGasStationQuote } from './relay-max-gas-station.js'; +import type { RelayQuote } from './types.js'; jest.mock('../../utils/token'); jest.mock('../../utils/gas'); diff --git a/packages/transaction-pay-controller/src/strategy/relay/relay-max-gas-station.ts b/packages/transaction-pay-controller/src/strategy/relay/relay-max-gas-station.ts index 39063b63aea..f66f9c5c28a 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/relay-max-gas-station.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/relay-max-gas-station.ts @@ -1,23 +1,23 @@ import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { projectLogger } from '../../logger'; +import { projectLogger } from '../../logger.js'; import type { PayStrategyGetQuotesRequest, QuoteRequest, TransactionPayControllerMessenger, TransactionPayQuote, -} from '../../types'; +} from '../../types.js'; import { getGasStationEligibility, getGasStationCostInSourceTokenRaw, -} from '../../utils/gas-station'; +} from '../../utils/gas-station.js'; import { getNativeToken, getTokenBalance, getTokenInfo, -} from '../../utils/token'; -import type { RelayQuote, RelayTransactionStep } from './types'; +} from '../../utils/token.js'; +import type { RelayQuote, RelayTransactionStep } from './types.js'; const log = createModuleLogger(projectLogger, 'relay-max-gas-station'); diff --git a/packages/transaction-pay-controller/src/strategy/relay/relay-post-ma-vault.test.ts b/packages/transaction-pay-controller/src/strategy/relay/relay-post-ma-vault.test.ts index 445183f585c..722d26200b7 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/relay-post-ma-vault.test.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/relay-post-ma-vault.test.ts @@ -1,16 +1,17 @@ +import { jest } from '@jest/globals'; import type { TransactionMeta } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; import type { TransactionPayControllerMessenger, TransactionPayQuote, -} from '../../types'; -import { submitMoneyAccountVaultDeposit } from '../../utils/ma-vault-deposit'; -import { getTransferredAmountFromTxHash } from '../../utils/transaction'; -import { MUSD_MONAD_FIAT_ASSET } from '../fiat/constants'; -import { FALLBACK_HASH } from './constants'; -import { submitPostRelayVaultDeposit } from './relay-post-ma-vault'; -import type { RelayCompletionOutcome, RelayQuote } from './types'; +} from '../../types.js'; +import { submitMoneyAccountVaultDeposit } from '../../utils/ma-vault-deposit.js'; +import { getTransferredAmountFromTxHash } from '../../utils/transaction.js'; +import { MUSD_MONAD_FIAT_ASSET } from '../fiat/constants.js'; +import { FALLBACK_HASH } from './constants.js'; +import { submitPostRelayVaultDeposit } from './relay-post-ma-vault.js'; +import type { RelayCompletionOutcome, RelayQuote } from './types.js'; jest.mock('../../utils/transaction'); jest.mock('../../utils/ma-vault-deposit'); diff --git a/packages/transaction-pay-controller/src/strategy/relay/relay-post-ma-vault.ts b/packages/transaction-pay-controller/src/strategy/relay/relay-post-ma-vault.ts index 8c2cd7768c2..82b5f53d742 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/relay-post-ma-vault.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/relay-post-ma-vault.ts @@ -2,16 +2,16 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; -import { projectLogger } from '../../logger'; +import { projectLogger } from '../../logger.js'; import type { TransactionPayControllerMessenger, TransactionPayQuote, -} from '../../types'; -import { submitMoneyAccountVaultDeposit } from '../../utils/ma-vault-deposit'; -import { getTransferredAmountFromTxHash } from '../../utils/transaction'; -import { MUSD_MONAD_FIAT_ASSET } from '../fiat/constants'; -import { FALLBACK_HASH } from './constants'; -import type { RelayCompletionOutcome, RelayQuote } from './types'; +} from '../../types.js'; +import { submitMoneyAccountVaultDeposit } from '../../utils/ma-vault-deposit.js'; +import { getTransferredAmountFromTxHash } from '../../utils/transaction.js'; +import { MUSD_MONAD_FIAT_ASSET } from '../fiat/constants.js'; +import { FALLBACK_HASH } from './constants.js'; +import type { RelayCompletionOutcome, RelayQuote } from './types.js'; const log = createModuleLogger(projectLogger, 'relay-post-ma-vault'); diff --git a/packages/transaction-pay-controller/src/strategy/relay/relay-quotes.test.ts b/packages/transaction-pay-controller/src/strategy/relay/relay-quotes.test.ts index cd6ffa21974..ff536841bca 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/relay-quotes.test.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/relay-quotes.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { toHex } from '@metamask/controller-utils'; import { TransactionType } from '@metamask/transaction-controller'; import type { @@ -5,9 +6,9 @@ import type { TransactionMeta, } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; -import { getDefaultRemoteFeatureFlagControllerState } from '../../../../remote-feature-flag-controller/src/remote-feature-flag-controller'; +import { getDefaultRemoteFeatureFlagControllerState } from '../../../../remote-feature-flag-controller/src/remote-feature-flag-controller.js'; import { ARBITRUM_USDC_ADDRESS, CHAIN_ID_ARBITRUM, @@ -16,12 +17,12 @@ import { NATIVE_TOKEN_ADDRESS, PaymentOverride, POLYGON_USDCE_ADDRESS, -} from '../../constants'; -import { getMessengerMock } from '../../tests/messenger-mock'; +} from '../../constants.js'; +import { getMessengerMock } from '../../tests/messenger-mock.js'; import type { GetDelegationTransactionCallback, QuoteRequest, -} from '../../types'; +} from '../../types.js'; import { DEFAULT_RELAY_ORIGIN_GAS_OVERHEAD, DEFAULT_RELAY_QUOTE_URL, @@ -30,15 +31,15 @@ import { isRelayExecuteEnabled, getGasBuffer, getSlippage, -} from '../../utils/feature-flags'; -import { calculateGasCost, calculateGasFeeTokenCost } from '../../utils/gas'; +} from '../../utils/feature-flags.js'; +import { calculateGasCost, calculateGasFeeTokenCost } from '../../utils/gas.js'; import { getNativeToken, getTokenBalance, getTokenFiatRate, -} from '../../utils/token'; -import { getRelayQuotes } from './relay-quotes'; -import type { RelayQuote, RelayTransactionStep } from './types'; +} from '../../utils/token.js'; +import { getRelayQuotes } from './relay-quotes.js'; +import type { RelayQuote, RelayTransactionStep } from './types.js'; jest.mock('../../utils/token', () => ({ ...jest.createMockFromModule( diff --git a/packages/transaction-pay-controller/src/strategy/relay/relay-quotes.ts b/packages/transaction-pay-controller/src/strategy/relay/relay-quotes.ts index 134aafb17ee..3fa7c255ba5 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/relay-quotes.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/relay-quotes.ts @@ -10,7 +10,6 @@ import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { TransactionPayStrategy } from '../../index.js'; import { ARBITRUM_USDC_ADDRESS, CHAIN_ID_ARBITRUM, @@ -23,6 +22,7 @@ import { USDC_DECIMALS, PaymentOverride, } from '../../constants.js'; +import { TransactionPayStrategy } from '../../index.js'; import { projectLogger } from '../../logger.js'; import type { Amount, diff --git a/packages/transaction-pay-controller/src/strategy/relay/relay-submit-execute.test.ts b/packages/transaction-pay-controller/src/strategy/relay/relay-submit-execute.test.ts index e36509046db..c3c7c9c9e29 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/relay-submit-execute.test.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/relay-submit-execute.test.ts @@ -1,18 +1,19 @@ +import { jest } from '@jest/globals'; import { generateEIP7702BatchTransaction } from '@metamask/transaction-controller'; import type { TransactionMeta } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; -import { getMessengerMock } from '../../tests/messenger-mock'; -import type { TransactionPayQuote } from '../../types'; -import type { FeatureFlags } from '../../utils/feature-flags'; +import { getMessengerMock } from '../../tests/messenger-mock.js'; +import type { TransactionPayQuote } from '../../types.js'; +import type { FeatureFlags } from '../../utils/feature-flags.js'; import { getFeatureFlags, getRelayPollingInterval, getRelayPollingTimeout, -} from '../../utils/feature-flags'; -import { submitViaRelayExecute } from './relay-submit-execute'; -import type { RelayQuote } from './types'; +} from '../../utils/feature-flags.js'; +import { submitViaRelayExecute } from './relay-submit-execute.js'; +import type { RelayQuote } from './types.js'; jest.mock('../../utils/feature-flags'); diff --git a/packages/transaction-pay-controller/src/strategy/relay/relay-submit-execute.ts b/packages/transaction-pay-controller/src/strategy/relay/relay-submit-execute.ts index e2f2144a151..a18329f30fa 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/relay-submit-execute.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/relay-submit-execute.ts @@ -8,16 +8,16 @@ import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { projectLogger } from '../../logger'; +import { projectLogger } from '../../logger.js'; import type { TransactionPayControllerMessenger, TransactionPayQuote, -} from '../../types'; -import { prefixError } from '../../utils/error-prefix'; -import { getNetworkClientId } from '../../utils/provider'; -import { FALLBACK_HASH } from './constants'; -import { submitRelayExecute } from './relay-api'; -import type { RelayExecuteRequest, RelayQuote } from './types'; +} from '../../types.js'; +import { prefixError } from '../../utils/error-prefix.js'; +import { getNetworkClientId } from '../../utils/provider.js'; +import { FALLBACK_HASH } from './constants.js'; +import { submitRelayExecute } from './relay-api.js'; +import type { RelayExecuteRequest, RelayQuote } from './types.js'; const log = createModuleLogger(projectLogger, 'relay-strategy'); const RELAY_EXECUTE_ERROR_PREFIX = 'Execute: '; diff --git a/packages/transaction-pay-controller/src/strategy/relay/relay-submit.test.ts b/packages/transaction-pay-controller/src/strategy/relay/relay-submit.test.ts index 395c4a75bb1..5123abbd183 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/relay-submit.test.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/relay-submit.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { ORIGIN_METAMASK } from '@metamask/controller-utils'; import { TransactionType } from '@metamask/transaction-controller'; import type { @@ -5,32 +6,35 @@ import type { TransactionMeta, } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; -import { PaymentOverride } from '../../constants'; -import { getMessengerMock } from '../../tests/messenger-mock'; +import { PaymentOverride } from '../../constants.js'; +import { getMessengerMock } from '../../tests/messenger-mock.js'; import type { PayStrategyExecuteRequest, TransactionPayControllerMessenger, TransactionPayQuote, -} from '../../types'; -import type { FeatureFlags } from '../../utils/feature-flags'; +} from '../../types.js'; +import type { FeatureFlags } from '../../utils/feature-flags.js'; import { getFeatureFlags, getRelayPollingInterval, getRelayPollingTimeout, -} from '../../utils/feature-flags'; -import { getLiveTokenBalance, normalizeTokenAddress } from '../../utils/token'; +} from '../../utils/feature-flags.js'; +import { + getLiveTokenBalance, + normalizeTokenAddress, +} from '../../utils/token.js'; import { collectTransactionIds, getTransaction, updateTransaction, waitForTransactionConfirmed, -} from '../../utils/transaction'; -import { RELAY_STATUS_URL } from './constants'; -import { submitRelayQuotes } from './relay-submit'; -import { submitViaRelayExecute } from './relay-submit-execute'; -import type { RelayQuote } from './types'; +} from '../../utils/transaction.js'; +import { RELAY_STATUS_URL } from './constants.js'; +import { submitViaRelayExecute } from './relay-submit-execute.js'; +import { submitRelayQuotes } from './relay-submit.js'; +import type { RelayQuote } from './types.js'; jest.mock('../../utils/token'); jest.mock('../../utils/transaction'); diff --git a/packages/transaction-pay-controller/src/strategy/relay/relay-submit.ts b/packages/transaction-pay-controller/src/strategy/relay/relay-submit.ts index 5f7da9bbec5..e51b6d9bc90 100644 --- a/packages/transaction-pay-controller/src/strategy/relay/relay-submit.ts +++ b/packages/transaction-pay-controller/src/strategy/relay/relay-submit.ts @@ -9,50 +9,50 @@ import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { projectLogger } from '../../logger'; +import { projectLogger } from '../../logger.js'; import type { PayStrategyExecuteRequest, TransactionPayControllerMessenger, TransactionPayQuote, -} from '../../types'; -import { prefixError } from '../../utils/error-prefix'; +} from '../../types.js'; +import { prefixError } from '../../utils/error-prefix.js'; import { getFeatureFlags, getRelayPollingInterval, getRelayPollingTimeout, -} from '../../utils/feature-flags'; -import { getNetworkClientId } from '../../utils/provider'; +} from '../../utils/feature-flags.js'; +import { getNetworkClientId } from '../../utils/provider.js'; import { getLiveTokenBalance, normalizeTokenAddress, TokenAddressTarget, -} from '../../utils/token'; +} from '../../utils/token.js'; import { collectTransactionIds, getTransaction, updateTransaction, waitForTransactionConfirmed, -} from '../../utils/transaction'; +} from '../../utils/transaction.js'; import { FALLBACK_HASH, RELAY_DEPOSIT_TYPES, RELAY_FAILURE_STATUSES, RELAY_PENDING_STATUSES, -} from './constants'; -import { submitHyperliquidWithdraw } from './hyperliquid-withdraw'; +} from './constants.js'; +import { submitHyperliquidWithdraw } from './hyperliquid-withdraw.js'; import { sweepPolymarketDepositWallet, submitPolymarketWithdraw, -} from './polymarket/withdraw'; -import { getRelayStatus } from './relay-api'; -import { submitViaRelayExecute } from './relay-submit-execute'; +} from './polymarket/withdraw.js'; +import { getRelayStatus } from './relay-api.js'; +import { submitViaRelayExecute } from './relay-submit-execute.js'; import type { RelayCompletionOutcome, RelayQuote, RelayStatus, RelayStatusResponse, RelayTransactionStep, -} from './types'; +} from './types.js'; const log = createModuleLogger(projectLogger, 'relay-strategy'); const RELAY_ERROR_PREFIX = 'Relay: '; diff --git a/packages/transaction-pay-controller/src/strategy/server/ServerStrategy.test.ts b/packages/transaction-pay-controller/src/strategy/server/ServerStrategy.test.ts index 5d2396a283d..f32b8534063 100644 --- a/packages/transaction-pay-controller/src/strategy/server/ServerStrategy.test.ts +++ b/packages/transaction-pay-controller/src/strategy/server/ServerStrategy.test.ts @@ -1,12 +1,13 @@ +import { jest } from '@jest/globals'; import type { TransactionMeta } from '@metamask/transaction-controller'; -import type { TransactionPayControllerMessenger } from '../..'; -import type { TransactionPayQuote } from '../../types'; -import { getPayStrategiesConfig } from '../../utils/feature-flags'; -import { getServerQuotes } from './server-quotes'; -import { submitServerQuotes } from './server-submit'; -import { ServerStrategy } from './ServerStrategy'; -import type { ServerQuote } from './types'; +import type { TransactionPayControllerMessenger } from '../../index.js'; +import type { TransactionPayQuote } from '../../types.js'; +import { getPayStrategiesConfig } from '../../utils/feature-flags.js'; +import { getServerQuotes } from './server-quotes.js'; +import { submitServerQuotes } from './server-submit.js'; +import { ServerStrategy } from './ServerStrategy.js'; +import type { ServerQuote } from './types.js'; jest.mock('./server-quotes'); jest.mock('./server-submit'); diff --git a/packages/transaction-pay-controller/src/strategy/server/ServerStrategy.ts b/packages/transaction-pay-controller/src/strategy/server/ServerStrategy.ts index 2cb4e08f1ab..398ed12fc91 100644 --- a/packages/transaction-pay-controller/src/strategy/server/ServerStrategy.ts +++ b/packages/transaction-pay-controller/src/strategy/server/ServerStrategy.ts @@ -3,11 +3,11 @@ import type { PayStrategyExecuteRequest, PayStrategyGetQuotesRequest, TransactionPayQuote, -} from '../../types'; -import { getPayStrategiesConfig } from '../../utils/feature-flags'; -import { getServerQuotes } from './server-quotes'; -import { submitServerQuotes } from './server-submit'; -import type { ServerQuote } from './types'; +} from '../../types.js'; +import { getPayStrategiesConfig } from '../../utils/feature-flags.js'; +import { getServerQuotes } from './server-quotes.js'; +import { submitServerQuotes } from './server-submit.js'; +import type { ServerQuote } from './types.js'; /** * Pay strategy that routes quote, submit, and status requests through the diff --git a/packages/transaction-pay-controller/src/strategy/server/perps.test.ts b/packages/transaction-pay-controller/src/strategy/server/perps.test.ts index facb01c49e7..f77244bf139 100644 --- a/packages/transaction-pay-controller/src/strategy/server/perps.test.ts +++ b/packages/transaction-pay-controller/src/strategy/server/perps.test.ts @@ -4,13 +4,13 @@ import { ARBITRUM_USDC_ADDRESS, CHAIN_ID_ARBITRUM, CHAIN_ID_HYPERCORE, -} from '../../constants'; -import type { QuoteRequest } from '../../types'; +} from '../../constants.js'; +import type { QuoteRequest } from '../../types.js'; import { SERVER_HYPERCORE_USDC_PERPS_ADDRESS, isServerPerpsDepositRequest, normalizeServerPerpsRequest, -} from './perps'; +} from './perps.js'; const BRIDGE_ADDRESS_LOWER = '0x2df1c51e09aecf9cacb7bc98cb1742757f163df7'; diff --git a/packages/transaction-pay-controller/src/strategy/server/perps.ts b/packages/transaction-pay-controller/src/strategy/server/perps.ts index d4f71fe7308..ec6121c97e0 100644 --- a/packages/transaction-pay-controller/src/strategy/server/perps.ts +++ b/packages/transaction-pay-controller/src/strategy/server/perps.ts @@ -8,8 +8,8 @@ import { CHAIN_ID_HYPERCORE, HYPERCORE_USDC_DECIMALS, USDC_DECIMALS, -} from '../../constants'; -import type { QuoteRequest } from '../../types'; +} from '../../constants.js'; +import type { QuoteRequest } from '../../types.js'; /** * Shared 20-byte sentinel address emitted by the server strategy to flag a diff --git a/packages/transaction-pay-controller/src/strategy/server/server-api.test.ts b/packages/transaction-pay-controller/src/strategy/server/server-api.test.ts index 7016301e4c1..268cd92be17 100644 --- a/packages/transaction-pay-controller/src/strategy/server/server-api.test.ts +++ b/packages/transaction-pay-controller/src/strategy/server/server-api.test.ts @@ -1,12 +1,14 @@ -import type { PayStrategiesConfig } from '../../utils/feature-flags'; -import { getPayStrategiesConfig } from '../../utils/feature-flags'; +import { jest } from '@jest/globals'; + +import type { PayStrategiesConfig } from '../../utils/feature-flags.js'; +import { getPayStrategiesConfig } from '../../utils/feature-flags.js'; import { fetchServerQuote, getServerStatus, submitServerIntent, -} from './server-api'; -import { ServerProviderName, ServerStatus, ServerTradeType } from './types'; -import type { ServerQuoteRequest, ServerSubmitRequest } from './types'; +} from './server-api.js'; +import { ServerProviderName, ServerStatus, ServerTradeType } from './types.js'; +import type { ServerQuoteRequest, ServerSubmitRequest } from './types.js'; jest.mock('../../utils/feature-flags'); diff --git a/packages/transaction-pay-controller/src/strategy/server/server-api.ts b/packages/transaction-pay-controller/src/strategy/server/server-api.ts index e866202eab7..56e45874d5c 100644 --- a/packages/transaction-pay-controller/src/strategy/server/server-api.ts +++ b/packages/transaction-pay-controller/src/strategy/server/server-api.ts @@ -1,8 +1,8 @@ import { createModuleLogger } from '@metamask/utils'; -import { projectLogger } from '../../logger'; -import type { TransactionPayControllerMessenger } from '../../types'; -import { getPayStrategiesConfig } from '../../utils/feature-flags'; +import { projectLogger } from '../../logger.js'; +import type { TransactionPayControllerMessenger } from '../../types.js'; +import { getPayStrategiesConfig } from '../../utils/feature-flags.js'; import type { ServerProviderName, ServerQuoteRequest, @@ -10,7 +10,7 @@ import type { ServerStatusResponse, ServerSubmitRequest, ServerSubmitResponse, -} from './types'; +} from './types.js'; const log = createModuleLogger(projectLogger, 'server-api'); diff --git a/packages/transaction-pay-controller/src/strategy/server/server-quotes.test.ts b/packages/transaction-pay-controller/src/strategy/server/server-quotes.test.ts index 26ce8dc7f6e..f1580c159ce 100644 --- a/packages/transaction-pay-controller/src/strategy/server/server-quotes.test.ts +++ b/packages/transaction-pay-controller/src/strategy/server/server-quotes.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { TransactionMeta } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; @@ -5,31 +6,31 @@ import { CHAIN_ID_HYPERCORE, PaymentOverride, TransactionPayStrategy, -} from '../../constants'; -import { getMessengerMock } from '../../tests/messenger-mock'; +} from '../../constants.js'; +import { getMessengerMock } from '../../tests/messenger-mock.js'; import type { GetDelegationTransactionCallback, QuoteRequest, -} from '../../types'; +} from '../../types.js'; import { getFeatureFlags, getSlippage, isEIP7702Chain, -} from '../../utils/feature-flags'; -import { calculateGasCost, getGasFee } from '../../utils/gas'; +} from '../../utils/feature-flags.js'; import { getGasStationCostInSourceTokenRaw, getGasStationEligibility, -} from '../../utils/gas-station'; -import { estimateQuoteGasLimits } from '../../utils/quote-gas'; +} from '../../utils/gas-station.js'; +import { calculateGasCost, getGasFee } from '../../utils/gas.js'; +import { estimateQuoteGasLimits } from '../../utils/quote-gas.js'; import { getNativeToken, getTokenBalance, getTokenFiatRate, -} from '../../utils/token'; -import { fetchServerQuote } from './server-api'; -import { getServerQuotes } from './server-quotes'; -import { ServerProviderName, ServerTradeType } from './types'; +} from '../../utils/token.js'; +import { fetchServerQuote } from './server-api.js'; +import { getServerQuotes } from './server-quotes.js'; +import { ServerProviderName, ServerTradeType } from './types.js'; jest.mock('../../utils/feature-flags', () => ({ ...jest.requireActual('../../utils/feature-flags'), diff --git a/packages/transaction-pay-controller/src/strategy/server/server-quotes.ts b/packages/transaction-pay-controller/src/strategy/server/server-quotes.ts index 3b71e75d6d8..12a4fc649ab 100644 --- a/packages/transaction-pay-controller/src/strategy/server/server-quotes.ts +++ b/packages/transaction-pay-controller/src/strategy/server/server-quotes.ts @@ -12,42 +12,42 @@ import { CHAIN_ID_HYPERCORE, PaymentOverride, TransactionPayStrategy, -} from '../../constants'; -import { projectLogger } from '../../logger'; +} from '../../constants.js'; +import { projectLogger } from '../../logger.js'; import type { PayStrategyGetQuotesRequest, QuoteRequest, TransactionPayControllerMessenger, TransactionPayFees, TransactionPayQuote, -} from '../../types'; -import { getFiatValueFromUsd } from '../../utils/amounts'; +} from '../../types.js'; +import { getFiatValueFromUsd } from '../../utils/amounts.js'; import { getFeatureFlags, getSlippage, isEIP7702Chain, -} from '../../utils/feature-flags'; -import { calculateGasCost, getGasFee } from '../../utils/gas'; +} from '../../utils/feature-flags.js'; import { getGasStationCostInSourceTokenRaw, getGasStationEligibility, -} from '../../utils/gas-station'; -import { estimateQuoteGasLimits } from '../../utils/quote-gas'; -import type { QuoteGasTransaction } from '../../utils/quote-gas'; +} from '../../utils/gas-station.js'; +import { calculateGasCost, getGasFee } from '../../utils/gas.js'; +import { estimateQuoteGasLimits } from '../../utils/quote-gas.js'; +import type { QuoteGasTransaction } from '../../utils/quote-gas.js'; import { getNativeToken, getTokenBalance, getTokenFiatRate, -} from '../../utils/token'; -import { normalizeServerPerpsRequest } from './perps'; -import { fetchServerQuote } from './server-api'; +} from '../../utils/token.js'; +import { normalizeServerPerpsRequest } from './perps.js'; +import { fetchServerQuote } from './server-api.js'; import type { ServerQuote, ServerQuoteRequest, ServerQuoteResult, ServerTransactionStep, -} from './types'; -import { ServerTradeType } from './types'; +} from './types.js'; +import { ServerTradeType } from './types.js'; const log = createModuleLogger(projectLogger, 'server-quotes'); const TOKEN_TRANSFER_FOUR_BYTE = '0xa9059cbb'; diff --git a/packages/transaction-pay-controller/src/strategy/server/server-submit.test.ts b/packages/transaction-pay-controller/src/strategy/server/server-submit.test.ts index e179b314ae8..4fe70883cb4 100644 --- a/packages/transaction-pay-controller/src/strategy/server/server-submit.test.ts +++ b/packages/transaction-pay-controller/src/strategy/server/server-submit.test.ts @@ -1,29 +1,30 @@ +import { jest } from '@jest/globals'; import { successfulFetch } from '@metamask/controller-utils'; import { TransactionStatus } from '@metamask/transaction-controller'; import type { TransactionMeta } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; -import { PaymentOverride } from '../../constants'; -import { getMessengerMock } from '../../tests/messenger-mock'; +import { PaymentOverride } from '../../constants.js'; +import { getMessengerMock } from '../../tests/messenger-mock.js'; import type { PayStrategyExecuteRequest, TransactionPayQuote, -} from '../../types'; +} from '../../types.js'; import { getServerPollingInterval, getServerPollingTimeout, -} from '../../utils/feature-flags'; -import { getLiveTokenBalance } from '../../utils/token'; +} from '../../utils/feature-flags.js'; +import { getLiveTokenBalance } from '../../utils/token.js'; import { collectTransactionIds, getTransaction, waitForTransactionConfirmed, -} from '../../utils/transaction'; -import { getServerStatus, submitServerIntent } from './server-api'; -import { submitServerQuotes } from './server-submit'; -import { ServerProviderName, ServerStatus } from './types'; -import type { ServerQuote, ServerSignatureStep } from './types'; +} from '../../utils/transaction.js'; +import { getServerStatus, submitServerIntent } from './server-api.js'; +import { submitServerQuotes } from './server-submit.js'; +import { ServerProviderName, ServerStatus } from './types.js'; +import type { ServerQuote, ServerSignatureStep } from './types.js'; jest.mock('@metamask/controller-utils', () => ({ ...jest.requireActual('@metamask/controller-utils'), diff --git a/packages/transaction-pay-controller/src/strategy/server/server-submit.ts b/packages/transaction-pay-controller/src/strategy/server/server-submit.ts index 973e63facfe..8d6a21c6802 100644 --- a/packages/transaction-pay-controller/src/strategy/server/server-submit.ts +++ b/packages/transaction-pay-controller/src/strategy/server/server-submit.ts @@ -13,38 +13,38 @@ import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { projectLogger } from '../../logger'; +import { projectLogger } from '../../logger.js'; import type { PayStrategyExecuteRequest, TransactionPayControllerMessenger, TransactionPayQuote, -} from '../../types'; +} from '../../types.js'; import { getServerPollingInterval, getServerPollingTimeout, -} from '../../utils/feature-flags'; -import { getNetworkClientId } from '../../utils/provider'; +} from '../../utils/feature-flags.js'; +import { getNetworkClientId } from '../../utils/provider.js'; import { getLiveTokenBalance, normalizeTokenAddress, TokenAddressTarget, -} from '../../utils/token'; +} from '../../utils/token.js'; import { collectTransactionIds, getTransaction, updateTransaction, waitForTransactionConfirmed, -} from '../../utils/transaction'; -import { RELAY_DEPOSIT_TYPES } from '../relay/constants'; -import { getServerStatus, submitServerIntent } from './server-api'; +} from '../../utils/transaction.js'; +import { RELAY_DEPOSIT_TYPES } from '../relay/constants.js'; +import { getServerStatus, submitServerIntent } from './server-api.js'; import type { ServerQuote, ServerSignatureStep, ServerTransactionStep, ServerStatusResponse, ServerSubmitRequest, -} from './types'; -import { ServerStatus } from './types'; +} from './types.js'; +import { ServerStatus } from './types.js'; const log = createModuleLogger(projectLogger, 'server-strategy'); diff --git a/packages/transaction-pay-controller/src/tests/messenger-mock.ts b/packages/transaction-pay-controller/src/tests/messenger-mock.ts index b5aaea6303e..197cf6d7dbd 100644 --- a/packages/transaction-pay-controller/src/tests/messenger-mock.ts +++ b/packages/transaction-pay-controller/src/tests/messenger-mock.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { TokensControllerGetStateAction } from '@metamask/assets-controllers'; import type { TokenBalancesControllerGetStateAction } from '@metamask/assets-controllers'; import type { TokenRatesControllerGetStateAction } from '@metamask/assets-controllers'; diff --git a/packages/transaction-pay-controller/src/types.ts b/packages/transaction-pay-controller/src/types.ts index c1904e38f0d..d930c1a214a 100644 --- a/packages/transaction-pay-controller/src/types.ts +++ b/packages/transaction-pay-controller/src/types.ts @@ -57,8 +57,8 @@ import type { CONTROLLER_NAME, PaymentOverride, TransactionPayStrategy, -} from './constants'; -import type { TransactionPayControllerMethodActions } from './TransactionPayController-method-action-types'; +} from './constants.js'; +import type { TransactionPayControllerMethodActions } from './TransactionPayController-method-action-types.js'; export type AllowedActions = | AccountTrackerControllerGetStateAction diff --git a/packages/transaction-pay-controller/src/utils/7702.ts b/packages/transaction-pay-controller/src/utils/7702.ts index 00354371d23..4d8c1e082c0 100644 --- a/packages/transaction-pay-controller/src/utils/7702.ts +++ b/packages/transaction-pay-controller/src/utils/7702.ts @@ -1,5 +1,5 @@ -import type { TransactionPayControllerMessenger } from '../types'; -import { KEYRING_TYPES_SUPPORTING_7702 } from '../types'; +import type { TransactionPayControllerMessenger } from '../types.js'; +import { KEYRING_TYPES_SUPPORTING_7702 } from '../types.js'; /** * Check whether a given account supports EIP-7702 authorization signing. diff --git a/packages/transaction-pay-controller/src/utils/amounts.test.ts b/packages/transaction-pay-controller/src/utils/amounts.test.ts index c690b035759..e90a5ff6be5 100644 --- a/packages/transaction-pay-controller/src/utils/amounts.test.ts +++ b/packages/transaction-pay-controller/src/utils/amounts.test.ts @@ -1,6 +1,6 @@ import { BigNumber } from 'bignumber.js'; -import { getFiatValueFromUsd, sumAmounts } from './amounts'; +import { getFiatValueFromUsd, sumAmounts } from './amounts.js'; describe('Amounts utils', () => { describe('sumAmounts', () => { diff --git a/packages/transaction-pay-controller/src/utils/amounts.ts b/packages/transaction-pay-controller/src/utils/amounts.ts index c09a2cd2b6e..c21dad95861 100644 --- a/packages/transaction-pay-controller/src/utils/amounts.ts +++ b/packages/transaction-pay-controller/src/utils/amounts.ts @@ -1,6 +1,6 @@ import { BigNumber } from 'bignumber.js'; -import type { Amount, FiatValue } from '../types'; +import type { Amount, FiatValue } from '../types.js'; /** * Sum a list of amounts. diff --git a/packages/transaction-pay-controller/src/utils/chomp.test.ts b/packages/transaction-pay-controller/src/utils/chomp.test.ts index 370d72dd447..be037461131 100644 --- a/packages/transaction-pay-controller/src/utils/chomp.test.ts +++ b/packages/transaction-pay-controller/src/utils/chomp.test.ts @@ -1,9 +1,10 @@ +import { jest } from '@jest/globals'; import type { Hex } from '@metamask/utils'; -import { CHAIN_ID_MONAD, MUSD_MONAD_ADDRESS } from '../constants'; -import type { TransactionPayControllerMessenger } from '../types'; -import { findRecentChompVaultDeposit } from './chomp'; -import { rpcRequest } from './provider'; +import { CHAIN_ID_MONAD, MUSD_MONAD_ADDRESS } from '../constants.js'; +import type { TransactionPayControllerMessenger } from '../types.js'; +import { findRecentChompVaultDeposit } from './chomp.js'; +import { rpcRequest } from './provider.js'; jest.mock('./provider'); diff --git a/packages/transaction-pay-controller/src/utils/chomp.ts b/packages/transaction-pay-controller/src/utils/chomp.ts index 79f440f4bfa..2c2cc466276 100644 --- a/packages/transaction-pay-controller/src/utils/chomp.ts +++ b/packages/transaction-pay-controller/src/utils/chomp.ts @@ -1,10 +1,10 @@ import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; -import { CHAIN_ID_MONAD, MUSD_MONAD_ADDRESS } from '../constants'; -import { projectLogger } from '../logger'; -import type { TransactionPayControllerMessenger } from '../types'; -import { rpcRequest } from './provider'; +import { CHAIN_ID_MONAD, MUSD_MONAD_ADDRESS } from '../constants.js'; +import { projectLogger } from '../logger.js'; +import type { TransactionPayControllerMessenger } from '../types.js'; +import { rpcRequest } from './provider.js'; const log = createModuleLogger(projectLogger, 'chomp'); diff --git a/packages/transaction-pay-controller/src/utils/error-prefix.test.ts b/packages/transaction-pay-controller/src/utils/error-prefix.test.ts index 1488a7af95f..99ec914da92 100644 --- a/packages/transaction-pay-controller/src/utils/error-prefix.test.ts +++ b/packages/transaction-pay-controller/src/utils/error-prefix.test.ts @@ -1,4 +1,4 @@ -import { prefixError } from './error-prefix'; +import { prefixError } from './error-prefix.js'; describe('prefixError', () => { it('prefixes Error messages without replacing the Error object', () => { diff --git a/packages/transaction-pay-controller/src/utils/feature-flags.test.ts b/packages/transaction-pay-controller/src/utils/feature-flags.test.ts index e52b3e70d47..8bbc7ef6004 100644 --- a/packages/transaction-pay-controller/src/utils/feature-flags.test.ts +++ b/packages/transaction-pay-controller/src/utils/feature-flags.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; import { TransactionType } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { getDefaultRemoteFeatureFlagControllerState } from '../../../remote-feature-flag-controller/src/remote-feature-flag-controller'; -import { TransactionPayStrategy } from '../constants'; -import type { TransactionPayFiatAsset } from '../strategy/fiat/constants'; -import { FIAT_ENABLED_TYPES } from '../strategy/fiat/constants'; -import { getMessengerMock } from '../tests/messenger-mock'; +import { getDefaultRemoteFeatureFlagControllerState } from '../../../remote-feature-flag-controller/src/remote-feature-flag-controller.js'; +import { TransactionPayStrategy } from '../constants.js'; +import type { TransactionPayFiatAsset } from '../strategy/fiat/constants.js'; +import { FIAT_ENABLED_TYPES } from '../strategy/fiat/constants.js'; +import { getMessengerMock } from '../tests/messenger-mock.js'; import { DEFAULT_ACROSS_API_BASE, DEFAULT_FALLBACK_GAS_ESTIMATE, @@ -43,8 +44,8 @@ import { getSlippage, getStrategy, getStrategyOrder, -} from './feature-flags'; -import * as featureFlagsModule from './feature-flags'; +} from './feature-flags.js'; +import * as featureFlagsModule from './feature-flags.js'; const GAS_FALLBACK_ESTIMATE_MOCK = 123; const GAS_FALLBACK_MAX_MOCK = 456; diff --git a/packages/transaction-pay-controller/src/utils/feature-flags.ts b/packages/transaction-pay-controller/src/utils/feature-flags.ts index 978714a8fcf..bcc345051d4 100644 --- a/packages/transaction-pay-controller/src/utils/feature-flags.ts +++ b/packages/transaction-pay-controller/src/utils/feature-flags.ts @@ -2,30 +2,30 @@ import type { TransactionType } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { uniq } from 'lodash'; +import { uniq } from 'lodash-es'; import { isTransactionPayStrategy, STABLECOINS, TransactionPayStrategy, -} from '../constants'; -import { projectLogger } from '../logger'; -import type { TransactionPayFiatAsset } from '../strategy/fiat/constants'; +} from '../constants.js'; +import { projectLogger } from '../logger.js'; +import type { TransactionPayFiatAsset } from '../strategy/fiat/constants.js'; import { ETH_MAINNET_FIAT_ASSET, FIAT_ASSET_ID_BY_TX_TYPE, FIAT_ENABLED_TYPES, -} from '../strategy/fiat/constants'; +} from '../strategy/fiat/constants.js'; import { RELAY_EXECUTE_URL, RELAY_POLLING_INTERVAL, RELAY_QUOTE_URL, -} from '../strategy/relay/constants'; +} from '../strategy/relay/constants.js'; import { SERVER_POLLING_INTERVAL, SERVER_URL_BASE, -} from '../strategy/server/constants'; -import type { TransactionPayControllerMessenger } from '../types'; +} from '../strategy/server/constants.js'; +import type { TransactionPayControllerMessenger } from '../types.js'; const log = createModuleLogger(projectLogger, 'feature-flags'); diff --git a/packages/transaction-pay-controller/src/utils/gas-station.test.ts b/packages/transaction-pay-controller/src/utils/gas-station.test.ts index 135a1447eab..3005b198ad6 100644 --- a/packages/transaction-pay-controller/src/utils/gas-station.test.ts +++ b/packages/transaction-pay-controller/src/utils/gas-station.test.ts @@ -1,13 +1,14 @@ +import { jest } from '@jest/globals'; import type { GasFeeToken } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { getDefaultRemoteFeatureFlagControllerState } from '../../../remote-feature-flag-controller/src/remote-feature-flag-controller'; -import { getMessengerMock } from '../tests/messenger-mock'; -import { calculateGasFeeTokenCost } from './gas'; +import { getDefaultRemoteFeatureFlagControllerState } from '../../../remote-feature-flag-controller/src/remote-feature-flag-controller.js'; +import { getMessengerMock } from '../tests/messenger-mock.js'; import { getGasStationEligibility, getGasStationCostInSourceTokenRaw, -} from './gas-station'; +} from './gas-station.js'; +import { calculateGasFeeTokenCost } from './gas.js'; jest.mock('./gas'); diff --git a/packages/transaction-pay-controller/src/utils/gas-station.ts b/packages/transaction-pay-controller/src/utils/gas-station.ts index 6398a1365ff..e495c7762a1 100644 --- a/packages/transaction-pay-controller/src/utils/gas-station.ts +++ b/packages/transaction-pay-controller/src/utils/gas-station.ts @@ -4,14 +4,14 @@ import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; -import { projectLogger } from '../logger'; +import { projectLogger } from '../logger.js'; import type { Amount, QuoteRequest, TransactionPayControllerMessenger, -} from '../types'; -import { getFeatureFlags, isEIP7702Chain } from './feature-flags'; -import { calculateGasFeeTokenCost } from './gas'; +} from '../types.js'; +import { getFeatureFlags, isEIP7702Chain } from './feature-flags.js'; +import { calculateGasFeeTokenCost } from './gas.js'; const log = createModuleLogger(projectLogger, 'gas-station'); diff --git a/packages/transaction-pay-controller/src/utils/gas.test.ts b/packages/transaction-pay-controller/src/utils/gas.test.ts index 5023f93ffc6..7217f6780c7 100644 --- a/packages/transaction-pay-controller/src/utils/gas.test.ts +++ b/packages/transaction-pay-controller/src/utils/gas.test.ts @@ -1,22 +1,23 @@ +import { jest } from '@jest/globals'; import { toHex } from '@metamask/controller-utils'; import type { Hex } from '@metamask/utils'; -import { clone, cloneDeep } from 'lodash'; +import { clone, cloneDeep } from 'lodash-es'; -import type { GasFeeEstimates } from '../../../gas-fee-controller/src'; +import type { GasFeeEstimates } from '../../../gas-fee-controller/src/index.js'; import type { GasFeeToken, TransactionMeta, -} from '../../../transaction-controller/src'; -import { getMessengerMock } from '../tests/messenger-mock'; -import { getFallbackGas, getGasBuffer } from './feature-flags'; +} from '../../../transaction-controller/src/index.js'; +import { getMessengerMock } from '../tests/messenger-mock.js'; +import { getFallbackGas, getGasBuffer } from './feature-flags.js'; import { calculateGasCost, calculateGasFeeTokenCost, calculateTransactionGasCost, estimateGasLimit, getGasFee, -} from './gas'; -import { getTokenBalance, getTokenFiatRate } from './token'; +} from './gas.js'; +import { getTokenBalance, getTokenFiatRate } from './token.js'; jest.mock('./token'); jest.mock('./feature-flags', () => ({ diff --git a/packages/transaction-pay-controller/src/utils/gas.ts b/packages/transaction-pay-controller/src/utils/gas.ts index 57a2592407e..5593f04ab5f 100644 --- a/packages/transaction-pay-controller/src/utils/gas.ts +++ b/packages/transaction-pay-controller/src/utils/gas.ts @@ -289,7 +289,13 @@ export function getGasFee( const chainState = gasFeeControllerState?.gasFeeEstimatesByChainId?.[chainId]; const { estimatedBaseFee: estimatedBaseFeeGwei, medium } = - chainState?.gasFeeEstimates ?? {}; + (chainState?.gasFeeEstimates ?? {}) as { + estimatedBaseFee?: string; + medium?: { + suggestedMaxFeePerGas?: string; + suggestedMaxPriorityFeePerGas?: string; + }; + }; const maxFeePerGasGwei = medium?.suggestedMaxFeePerGas; const maxPriorityFeePerGasGwei = medium?.suggestedMaxPriorityFeePerGas; diff --git a/packages/transaction-pay-controller/src/utils/ma-vault-deposit.test.ts b/packages/transaction-pay-controller/src/utils/ma-vault-deposit.test.ts index 6a24aac3c91..257c9ee81b8 100644 --- a/packages/transaction-pay-controller/src/utils/ma-vault-deposit.test.ts +++ b/packages/transaction-pay-controller/src/utils/ma-vault-deposit.test.ts @@ -1,17 +1,18 @@ +import { jest } from '@jest/globals'; import { TransactionType } from '@metamask/transaction-controller'; import type { TransactionMeta } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import type { TransactionPayControllerMessenger } from '../types'; -import { findRecentChompVaultDeposit } from './chomp'; -import { submitMoneyAccountVaultDeposit } from './ma-vault-deposit'; -import { getNetworkClientId } from './provider'; +import type { TransactionPayControllerMessenger } from '../types.js'; +import { findRecentChompVaultDeposit } from './chomp.js'; +import { submitMoneyAccountVaultDeposit } from './ma-vault-deposit.js'; +import { getNetworkClientId } from './provider.js'; import { collectTransactionIds, getTransaction, updateTransaction, waitForTransactionConfirmed, -} from './transaction'; +} from './transaction.js'; jest.mock('./chomp'); jest.mock('./provider'); diff --git a/packages/transaction-pay-controller/src/utils/ma-vault-deposit.ts b/packages/transaction-pay-controller/src/utils/ma-vault-deposit.ts index ad2d02e39af..ebf85361fb6 100644 --- a/packages/transaction-pay-controller/src/utils/ma-vault-deposit.ts +++ b/packages/transaction-pay-controller/src/utils/ma-vault-deposit.ts @@ -4,18 +4,18 @@ import { TransactionType } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; -import { projectLogger } from '../logger'; -import { MUSD_MONAD_FIAT_ASSET } from '../strategy/fiat/constants'; -import type { TransactionPayControllerMessenger } from '../types'; -import { findRecentChompVaultDeposit } from './chomp'; -import { prefixError } from './error-prefix'; -import { getNetworkClientId } from './provider'; +import { projectLogger } from '../logger.js'; +import { MUSD_MONAD_FIAT_ASSET } from '../strategy/fiat/constants.js'; +import type { TransactionPayControllerMessenger } from '../types.js'; +import { findRecentChompVaultDeposit } from './chomp.js'; +import { prefixError } from './error-prefix.js'; +import { getNetworkClientId } from './provider.js'; import { collectTransactionIds, getTransaction, updateTransaction, waitForTransactionConfirmed, -} from './transaction'; +} from './transaction.js'; const log = createModuleLogger(projectLogger, 'ma-vault-deposit'); diff --git a/packages/transaction-pay-controller/src/utils/no-op-quote.test.ts b/packages/transaction-pay-controller/src/utils/no-op-quote.test.ts index 0997e584ca4..b955bcb3148 100644 --- a/packages/transaction-pay-controller/src/utils/no-op-quote.test.ts +++ b/packages/transaction-pay-controller/src/utils/no-op-quote.test.ts @@ -1,8 +1,8 @@ import type { Hex } from '@metamask/utils'; -import { TransactionPayStrategy } from '../constants'; -import type { TransactionPaymentToken } from '../types'; -import { buildNoOpQuote } from './no-op-quote'; +import { TransactionPayStrategy } from '../constants.js'; +import type { TransactionPaymentToken } from '../types.js'; +import { buildNoOpQuote } from './no-op-quote.js'; const FROM_MOCK = '0xabc' as Hex; diff --git a/packages/transaction-pay-controller/src/utils/no-op-quote.ts b/packages/transaction-pay-controller/src/utils/no-op-quote.ts index 35e5a4368e6..a4bcec8d4fd 100644 --- a/packages/transaction-pay-controller/src/utils/no-op-quote.ts +++ b/packages/transaction-pay-controller/src/utils/no-op-quote.ts @@ -1,12 +1,12 @@ import type { Hex, Json } from '@metamask/utils'; -import { TransactionPayStrategy } from '../constants'; +import { TransactionPayStrategy } from '../constants.js'; import type { Amount, FiatValue, TransactionPaymentToken, TransactionPayQuote, -} from '../types'; +} from '../types.js'; function zeroFiat(): FiatValue { return { fiat: '0', usd: '0' }; diff --git a/packages/transaction-pay-controller/src/utils/provider.test.ts b/packages/transaction-pay-controller/src/utils/provider.test.ts index 8510fd91795..88706457df2 100644 --- a/packages/transaction-pay-controller/src/utils/provider.test.ts +++ b/packages/transaction-pay-controller/src/utils/provider.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; import type { NetworkClient, Provider } from '@metamask/network-controller'; import { NetworkClientType } from '@metamask/network-controller'; import { RpcEndpointType } from '@metamask/network-controller'; import type { NetworkConfiguration } from '@metamask/network-controller'; import type { Hex } from '@metamask/utils'; -import { getMessengerMock } from '../tests/messenger-mock'; -import { getNetworkClientId, rpcRequest } from './provider'; +import { getMessengerMock } from '../tests/messenger-mock.js'; +import { getNetworkClientId, rpcRequest } from './provider.js'; const CHAIN_ID_MOCK = '0x1' as Hex; const DEFAULT_NETWORK_CLIENT_ID_MOCK = 'default-client-id'; diff --git a/packages/transaction-pay-controller/src/utils/provider.ts b/packages/transaction-pay-controller/src/utils/provider.ts index ed793fb3fcd..28fb54f8bb3 100644 --- a/packages/transaction-pay-controller/src/utils/provider.ts +++ b/packages/transaction-pay-controller/src/utils/provider.ts @@ -10,8 +10,8 @@ import { import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; -import { projectLogger } from '../logger'; -import type { TransactionPayControllerMessenger } from '../types'; +import { projectLogger } from '../logger.js'; +import type { TransactionPayControllerMessenger } from '../types.js'; const log = createModuleLogger(projectLogger, 'provider'); diff --git a/packages/transaction-pay-controller/src/utils/quote-gas.test.ts b/packages/transaction-pay-controller/src/utils/quote-gas.test.ts index 64cef9bccae..7bf7f9dd8de 100644 --- a/packages/transaction-pay-controller/src/utils/quote-gas.test.ts +++ b/packages/transaction-pay-controller/src/utils/quote-gas.test.ts @@ -1,9 +1,10 @@ +import { jest } from '@jest/globals'; import type { Hex } from '@metamask/utils'; -import { getMessengerMock } from '../tests/messenger-mock'; -import { getGasBuffer } from './feature-flags'; -import { estimateGasLimit } from './gas'; -import { estimateQuoteGasLimits } from './quote-gas'; +import { getMessengerMock } from '../tests/messenger-mock.js'; +import { getGasBuffer } from './feature-flags.js'; +import { estimateGasLimit } from './gas.js'; +import { estimateQuoteGasLimits } from './quote-gas.js'; jest.mock('./feature-flags', () => ({ ...jest.requireActual('./feature-flags'), diff --git a/packages/transaction-pay-controller/src/utils/quotes.test.ts b/packages/transaction-pay-controller/src/utils/quotes.test.ts index f414b8fe2fc..6829b873546 100644 --- a/packages/transaction-pay-controller/src/utils/quotes.test.ts +++ b/packages/transaction-pay-controller/src/utils/quotes.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; import { TransactionStatus } from '@metamask/transaction-controller'; import type { TransactionMeta } from '@metamask/transaction-controller'; import type { BatchTransaction } from '@metamask/transaction-controller'; import type { Hex, Json } from '@metamask/utils'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; -import { TransactionPayStrategy } from '../constants'; -import { getMessengerMock } from '../tests/messenger-mock'; +import { TransactionPayStrategy } from '../constants.js'; +import { getMessengerMock } from '../tests/messenger-mock.js'; import type { TransactionPaySourceAmount, TransactionData, @@ -13,18 +14,18 @@ import type { TransactionPayTotals, TransactionPaymentToken, TransactionPayRequiredToken, -} from '../types'; -import type { UpdateQuotesRequest } from './quotes'; -import { refreshQuotes, updateQuotes } from './quotes'; +} from '../types.js'; +import type { UpdateQuotesRequest } from './quotes.js'; +import { refreshQuotes, updateQuotes } from './quotes.js'; import { checkStrategyQuoteSupport, checkStrategySupport, getStrategiesByName, getStrategyByName, -} from './strategy'; -import { getLiveTokenBalance, getTokenFiatRate } from './token'; -import { calculateTotals } from './totals'; -import { getTransaction, updateTransaction } from './transaction'; +} from './strategy.js'; +import { getLiveTokenBalance, getTokenFiatRate } from './token.js'; +import { calculateTotals } from './totals.js'; +import { getTransaction, updateTransaction } from './transaction.js'; jest.mock('./strategy'); jest.mock('./transaction'); diff --git a/packages/transaction-pay-controller/src/utils/quotes.ts b/packages/transaction-pay-controller/src/utils/quotes.ts index 7ae137bdc7f..4d8b8b9f28a 100644 --- a/packages/transaction-pay-controller/src/utils/quotes.ts +++ b/packages/transaction-pay-controller/src/utils/quotes.ts @@ -4,8 +4,8 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; import type { Hex, Json } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; -import { PaymentOverride, TransactionPayStrategy } from '../constants'; -import { projectLogger } from '../logger'; +import { PaymentOverride, TransactionPayStrategy } from '../constants.js'; +import { projectLogger } from '../logger.js'; import type { QuoteRequest, TransactionData, @@ -16,22 +16,22 @@ import type { TransactionPayTotals, TransactionPaymentToken, UpdateTransactionDataCallback, -} from '../types'; -import { accountSupports7702 } from './7702'; -import { buildNoOpQuote } from './no-op-quote'; +} from '../types.js'; +import { accountSupports7702 } from './7702.js'; +import { buildNoOpQuote } from './no-op-quote.js'; import { checkStrategyQuoteSupport, checkStrategySupport, getStrategiesByName, getStrategyByName, -} from './strategy'; +} from './strategy.js'; import { computeTokenAmounts, getLiveTokenBalance, getTokenFiatRate, -} from './token'; -import { calculateTotals } from './totals'; -import { getTransaction, updateTransaction } from './transaction'; +} from './token.js'; +import { calculateTotals } from './totals.js'; +import { getTransaction, updateTransaction } from './transaction.js'; const DEFAULT_REFRESH_INTERVAL = 30 * 1000; // 30 Seconds diff --git a/packages/transaction-pay-controller/src/utils/required-tokens.test.ts b/packages/transaction-pay-controller/src/utils/required-tokens.test.ts index 2bbc3cd676c..d4c9c586368 100644 --- a/packages/transaction-pay-controller/src/utils/required-tokens.test.ts +++ b/packages/transaction-pay-controller/src/utils/required-tokens.test.ts @@ -1,10 +1,11 @@ +import { jest } from '@jest/globals'; import type { TransactionMeta } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { toHex } from '../../../controller-utils/src'; -import type { TransactionPayControllerMessenger } from '../types'; -import { parseRequiredTokens } from './required-tokens'; -import { getTokenBalance, getTokenFiatRate, getTokenInfo } from './token'; +import { toHex } from '../../../controller-utils/src/index.js'; +import type { TransactionPayControllerMessenger } from '../types.js'; +import { parseRequiredTokens } from './required-tokens.js'; +import { getTokenBalance, getTokenFiatRate, getTokenInfo } from './token.js'; jest.mock('./token', () => ({ ...jest.requireActual('./token'), diff --git a/packages/transaction-pay-controller/src/utils/required-tokens.ts b/packages/transaction-pay-controller/src/utils/required-tokens.ts index 9103a6c1cec..f5667304422 100644 --- a/packages/transaction-pay-controller/src/utils/required-tokens.ts +++ b/packages/transaction-pay-controller/src/utils/required-tokens.ts @@ -5,17 +5,17 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; -import { projectLogger } from '../logger'; +import { projectLogger } from '../logger.js'; import type { TransactionPayControllerMessenger, TransactionPayRequiredToken, -} from '../types'; +} from '../types.js'; import { computeTokenAmounts, getTokenBalance, getTokenFiatRate, getTokenInfo, -} from './token'; +} from './token.js'; const log = createModuleLogger(projectLogger, 'required-tokens'); diff --git a/packages/transaction-pay-controller/src/utils/source-amounts.test.ts b/packages/transaction-pay-controller/src/utils/source-amounts.test.ts index 87458d9ce31..a1a6a3524fe 100644 --- a/packages/transaction-pay-controller/src/utils/source-amounts.test.ts +++ b/packages/transaction-pay-controller/src/utils/source-amounts.test.ts @@ -1,13 +1,14 @@ +import { jest } from '@jest/globals'; import { TransactionType } from '@metamask/transaction-controller'; -import { TransactionPayStrategy } from '..'; -import type { TransactionPaymentToken } from '..'; -import { ARBITRUM_USDC_ADDRESS, CHAIN_ID_ARBITRUM } from '../constants'; -import { getMessengerMock } from '../tests/messenger-mock'; -import type { TransactionData, TransactionPayRequiredToken } from '../types'; -import { updateSourceAmounts } from './source-amounts'; -import { getTokenFiatRate } from './token'; -import { getTransaction } from './transaction'; +import { ARBITRUM_USDC_ADDRESS, CHAIN_ID_ARBITRUM } from '../constants.js'; +import { TransactionPayStrategy } from '../index.js'; +import type { TransactionPaymentToken } from '../index.js'; +import { getMessengerMock } from '../tests/messenger-mock.js'; +import type { TransactionData, TransactionPayRequiredToken } from '../types.js'; +import { updateSourceAmounts } from './source-amounts.js'; +import { getTokenFiatRate } from './token.js'; +import { getTransaction } from './transaction.js'; jest.mock('./token', () => ({ ...jest.requireActual('./token'), diff --git a/packages/transaction-pay-controller/src/utils/strategy.test.ts b/packages/transaction-pay-controller/src/utils/strategy.test.ts index d2c7da2084c..1ed82108377 100644 --- a/packages/transaction-pay-controller/src/utils/strategy.test.ts +++ b/packages/transaction-pay-controller/src/utils/strategy.test.ts @@ -1,15 +1,17 @@ -import { TransactionPayStrategy } from '../constants'; -import { AcrossStrategy } from '../strategy/across/AcrossStrategy'; -import { FiatStrategy } from '../strategy/fiat/FiatStrategy'; -import { RelayStrategy } from '../strategy/relay/RelayStrategy'; -import { ServerStrategy } from '../strategy/server/ServerStrategy'; -import type { PayStrategyGetQuotesRequest } from '../types'; +import { jest } from '@jest/globals'; + +import { TransactionPayStrategy } from '../constants.js'; +import { AcrossStrategy } from '../strategy/across/AcrossStrategy.js'; +import { FiatStrategy } from '../strategy/fiat/FiatStrategy.js'; +import { RelayStrategy } from '../strategy/relay/RelayStrategy.js'; +import { ServerStrategy } from '../strategy/server/ServerStrategy.js'; +import type { PayStrategyGetQuotesRequest } from '../types.js'; import { checkStrategyQuoteSupport, checkStrategySupport, getStrategiesByName, getStrategyByName, -} from './strategy'; +} from './strategy.js'; describe('Strategy Utils', () => { describe('getStrategyByName', () => { diff --git a/packages/transaction-pay-controller/src/utils/strategy.ts b/packages/transaction-pay-controller/src/utils/strategy.ts index 3026874d71a..97bd8cbdfa5 100644 --- a/packages/transaction-pay-controller/src/utils/strategy.ts +++ b/packages/transaction-pay-controller/src/utils/strategy.ts @@ -1,13 +1,13 @@ -import { TransactionPayStrategy } from '../constants'; -import { AcrossStrategy } from '../strategy/across/AcrossStrategy'; -import { FiatStrategy } from '../strategy/fiat/FiatStrategy'; -import { RelayStrategy } from '../strategy/relay/RelayStrategy'; -import { ServerStrategy } from '../strategy/server/ServerStrategy'; +import { TransactionPayStrategy } from '../constants.js'; +import { AcrossStrategy } from '../strategy/across/AcrossStrategy.js'; +import { FiatStrategy } from '../strategy/fiat/FiatStrategy.js'; +import { RelayStrategy } from '../strategy/relay/RelayStrategy.js'; +import { ServerStrategy } from '../strategy/server/ServerStrategy.js'; import type { PayStrategy, PayStrategyCheckQuoteSupportRequest, PayStrategyGetQuotesRequest, -} from '../types'; +} from '../types.js'; export type NamedStrategy = { name: TransactionPayStrategy; diff --git a/packages/transaction-pay-controller/src/utils/token.test.ts b/packages/transaction-pay-controller/src/utils/token.test.ts index e23dbd9e485..8093e03a959 100644 --- a/packages/transaction-pay-controller/src/utils/token.test.ts +++ b/packages/transaction-pay-controller/src/utils/token.test.ts @@ -1,4 +1,5 @@ import { Interface } from '@ethersproject/abi'; +import { jest } from '@jest/globals'; import type { TokensControllerState } from '@metamask/assets-controllers'; import type { AccountTrackerControllerState } from '@metamask/assets-controllers'; import type { TokenRatesControllerState } from '@metamask/assets-controllers'; @@ -7,13 +8,13 @@ import { RpcEndpointType } from '@metamask/network-controller'; import type { NetworkConfiguration } from '@metamask/network-controller'; import type { Hex } from '@metamask/utils'; -import { getDefaultRemoteFeatureFlagControllerState } from '../../../remote-feature-flag-controller/src/remote-feature-flag-controller'; +import { getDefaultRemoteFeatureFlagControllerState } from '../../../remote-feature-flag-controller/src/remote-feature-flag-controller.js'; import { CHAIN_ID_POLYGON, NATIVE_TOKEN_ADDRESS, POLYGON_USDCE_ADDRESS, -} from '../constants'; -import { getMessengerMock } from '../tests/messenger-mock'; +} from '../constants.js'; +import { getMessengerMock } from '../tests/messenger-mock.js'; import { buildCaipAssetType, computeRawFromFiatAmount, @@ -26,7 +27,7 @@ import { getLiveTokenBalance, normalizeTokenAddress, TokenAddressTarget, -} from './token'; +} from './token.js'; const TOKEN_ADDRESS_MOCK = '0x559B65722aD62AD6DAC4Fa5a1c6B23A2e8ce57Ec' as Hex; const TOKEN_ADDRESS_2_MOCK = '0x123456789abcdef1234567890abcdef12345678' as Hex; diff --git a/packages/transaction-pay-controller/src/utils/token.ts b/packages/transaction-pay-controller/src/utils/token.ts index 0f0f66b88c6..66ea9ac4541 100644 --- a/packages/transaction-pay-controller/src/utils/token.ts +++ b/packages/transaction-pay-controller/src/utils/token.ts @@ -10,14 +10,14 @@ import { CHAIN_ID_POLYGON, NATIVE_TOKEN_ADDRESS, SLIP44_COIN_TYPE_BY_CHAIN, -} from '../constants'; -import type { FiatRates, TransactionPayControllerMessenger } from '../types'; +} from '../constants.js'; +import type { FiatRates, TransactionPayControllerMessenger } from '../types.js'; import { getAssetsUnifyStateFeature, getStablecoins, isChainExcludedFromInfura, -} from './feature-flags'; -import { getNetworkClientId, rpcRequest } from './provider'; +} from './feature-flags.js'; +import { getNetworkClientId, rpcRequest } from './provider.js'; /** * Check if two tokens are the same (same address and chain). diff --git a/packages/transaction-pay-controller/src/utils/totals.test.ts b/packages/transaction-pay-controller/src/utils/totals.test.ts index 1fc2ec4a5ec..990e4ce4e6e 100644 --- a/packages/transaction-pay-controller/src/utils/totals.test.ts +++ b/packages/transaction-pay-controller/src/utils/totals.test.ts @@ -1,14 +1,15 @@ +import { jest } from '@jest/globals'; import type { TransactionMeta } from '@metamask/transaction-controller'; -import { TransactionPayStrategy } from '..'; -import type { TransactionPayControllerMessenger } from '..'; +import { TransactionPayStrategy } from '../index.js'; +import type { TransactionPayControllerMessenger } from '../index.js'; import type { QuoteRequest, TransactionPayQuote, TransactionPayRequiredToken, -} from '../types'; -import { calculateTransactionGasCost } from './gas'; -import { calculateTotals } from './totals'; +} from '../types.js'; +import { calculateTransactionGasCost } from './gas.js'; +import { calculateTotals } from './totals.js'; jest.mock('./gas'); diff --git a/packages/transaction-pay-controller/src/utils/totals.ts b/packages/transaction-pay-controller/src/utils/totals.ts index 62978191795..26d587de3e8 100644 --- a/packages/transaction-pay-controller/src/utils/totals.ts +++ b/packages/transaction-pay-controller/src/utils/totals.ts @@ -1,16 +1,16 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; import { BigNumber } from 'bignumber.js'; -import { TransactionPayStrategy } from '../constants'; +import { TransactionPayStrategy } from '../constants.js'; import type { FiatValue, TransactionPayControllerMessenger, TransactionPayQuote, TransactionPayRequiredToken, TransactionPayTotals, -} from '../types'; -import { sumAmounts } from './amounts'; -import { calculateTransactionGasCost } from './gas'; +} from '../types.js'; +import { sumAmounts } from './amounts.js'; +import { calculateTransactionGasCost } from './gas.js'; /** * Calculate totals for a list of quotes and tokens. diff --git a/packages/transaction-pay-controller/src/utils/transaction.test.ts b/packages/transaction-pay-controller/src/utils/transaction.test.ts index 741f40f7f4c..75bcca7bf8d 100644 --- a/packages/transaction-pay-controller/src/utils/transaction.test.ts +++ b/packages/transaction-pay-controller/src/utils/transaction.test.ts @@ -1,4 +1,5 @@ import { Interface } from '@ethersproject/abi'; +import { jest } from '@jest/globals'; import { abiERC20 } from '@metamask/metamask-eth-abis'; import { NetworkClientType } from '@metamask/network-controller'; import { @@ -8,16 +9,16 @@ import { import type { TransactionMeta } from '@metamask/transaction-controller'; import type { TransactionControllerState } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { noop } from 'lodash'; +import { noop } from 'lodash-es'; -import { NATIVE_TOKEN_ADDRESS } from '../constants'; -import { getMessengerMock } from '../tests/messenger-mock'; +import { NATIVE_TOKEN_ADDRESS } from '../constants.js'; +import { getMessengerMock } from '../tests/messenger-mock.js'; import type { TransactionData, TransactionPayControllerState, TransactionPayRequiredToken, -} from '../types'; -import { parseRequiredTokens } from './required-tokens'; +} from '../types.js'; +import { parseRequiredTokens } from './required-tokens.js'; import { FINALIZED_STATUSES, collectTransactionIds, @@ -28,7 +29,7 @@ import { subscribeTransactionChanges, updateTransaction, waitForTransactionConfirmed, -} from './transaction'; +} from './transaction.js'; jest.mock('./required-tokens'); diff --git a/packages/transaction-pay-controller/src/utils/transaction.ts b/packages/transaction-pay-controller/src/utils/transaction.ts index 75bf543b1f4..28b51243fcf 100644 --- a/packages/transaction-pay-controller/src/utils/transaction.ts +++ b/packages/transaction-pay-controller/src/utils/transaction.ts @@ -9,17 +9,17 @@ import type { Hex } from '@metamask/utils'; import { createModuleLogger } from '@metamask/utils'; import { BigNumber } from 'bignumber.js'; import type { Patch } from 'immer'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; -import { projectLogger } from '../logger'; +import { projectLogger } from '../logger.js'; import type { TransactionPayControllerMessenger, TransactionPayControllerState, UpdateTransactionDataCallback, -} from '../types'; -import { rpcRequest } from './provider'; -import { parseRequiredTokens } from './required-tokens'; -import { getNativeToken } from './token'; +} from '../types.js'; +import { rpcRequest } from './provider.js'; +import { parseRequiredTokens } from './required-tokens.js'; +import { getNativeToken } from './token.js'; const log = createModuleLogger(projectLogger, 'transaction'); diff --git a/packages/transaction-pay-controller/tsconfig.build.json b/packages/transaction-pay-controller/tsconfig.build.json index eaf49a92586..d921e0ef35f 100644 --- a/packages/transaction-pay-controller/tsconfig.build.json +++ b/packages/transaction-pay-controller/tsconfig.build.json @@ -40,5 +40,6 @@ "path": "../messenger/tsconfig.build.json" } ], - "include": ["../../types", "./src"] + "include": ["../../types", "./src"], + "exclude": ["./src/tests/**", "**/*.test.ts", "**/jest.config.ts"] } From 4b744b81821ae2b60ff3e0f07c7a1d14e0f8719d Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:48:52 +0200 Subject: [PATCH 062/115] ESLint fix and `jest` global import for account-tree-controller --- packages/account-tree-controller/package.json | 1 + ...countTreeController-method-action-types.ts | 2 +- .../src/AccountTreeController.test.ts | 15 +-- .../src/backup-and-sync/analytics/index.ts | 4 +- .../backup-and-sync/analytics/segment.test.ts | 7 +- .../backup-and-sync/analytics/traces.test.ts | 3 +- .../backup-and-sync/authentication/index.ts | 2 +- .../authentication/utils.test.ts | 8 +- .../backup-and-sync/authentication/utils.ts | 4 +- .../service/atomic-sync-queue.test.ts | 10 +- .../service/atomic-sync-queue.ts | 4 +- .../src/backup-and-sync/service/index.test.ts | 92 ++++++++++++++----- .../src/backup-and-sync/syncing/group.test.ts | 60 ++++++++---- .../src/backup-and-sync/syncing/index.ts | 8 +- .../backup-and-sync/syncing/legacy.test.ts | 65 ++++++++++--- .../backup-and-sync/syncing/metadata.test.ts | 8 +- .../backup-and-sync/syncing/wallet.test.ts | 41 ++++++--- .../user-storage/format-utils.test.ts | 37 +++++--- .../user-storage/format-utils.ts | 14 +-- .../src/backup-and-sync/user-storage/index.ts | 8 +- .../user-storage/network-operations.test.ts | 37 +++++--- .../user-storage/network-operations.ts | 16 ++-- .../user-storage/network-utils.test.ts | 4 +- .../user-storage/validation.test.ts | 2 +- .../user-storage/validation.ts | 4 +- .../backup-and-sync/utils/controller.test.ts | 11 ++- .../src/backup-and-sync/utils/controller.ts | 10 +- .../src/backup-and-sync/utils/errors.test.ts | 2 +- .../src/backup-and-sync/utils/index.ts | 6 +- .../utils/mutation-tracker.test.ts | 2 +- .../backup-and-sync/utils/mutation-tracker.ts | 2 +- packages/account-tree-controller/src/group.ts | 6 +- packages/account-tree-controller/src/index.ts | 16 ++-- .../account-tree-controller/src/rule.test.ts | 8 +- packages/account-tree-controller/src/rule.ts | 6 +- .../src/rules/entropy.test.ts | 6 +- .../src/rules/entropy.ts | 8 +- .../src/rules/keyring.test.ts | 8 +- .../src/rules/keyring.ts | 8 +- .../src/rules/snap.test.ts | 11 ++- .../account-tree-controller/src/rules/snap.ts | 8 +- .../account-tree-controller/src/wallet.ts | 2 +- .../tests/mockMessenger.ts | 2 +- 43 files changed, 372 insertions(+), 206 deletions(-) diff --git a/packages/account-tree-controller/package.json b/packages/account-tree-controller/package.json index 59a7143be08..d2121cdbd50 100644 --- a/packages/account-tree-controller/package.json +++ b/packages/account-tree-controller/package.json @@ -64,6 +64,7 @@ "lodash": "^4.17.21" }, "devDependencies": { + "@jest/globals": "^30.4.1", "@metamask/account-api": "^1.0.4", "@metamask/auto-changelog": "^6.1.0", "@metamask/providers": "^22.1.0", diff --git a/packages/account-tree-controller/src/AccountTreeController-method-action-types.ts b/packages/account-tree-controller/src/AccountTreeController-method-action-types.ts index abc6ca61e9d..25c3849dba5 100644 --- a/packages/account-tree-controller/src/AccountTreeController-method-action-types.ts +++ b/packages/account-tree-controller/src/AccountTreeController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { AccountTreeController } from './AccountTreeController'; +import type { AccountTreeController } from './AccountTreeController.js'; /** * Initialize the controller's state. diff --git a/packages/account-tree-controller/src/AccountTreeController.test.ts b/packages/account-tree-controller/src/AccountTreeController.test.ts index dfdf7bfa5e8..fc782494b6d 100644 --- a/packages/account-tree-controller/src/AccountTreeController.test.ts +++ b/packages/account-tree-controller/src/AccountTreeController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { AccountGroupId, AccountWalletId, @@ -34,16 +35,16 @@ import type { GetSnap as SnapControllerGetSnap } from '@metamask/snaps-controlle import { getAccountTreeControllerMessenger, getRootMessenger, -} from '../tests/mockMessenger'; +} from '../tests/mockMessenger.js'; import { AccountTreeController, getDefaultAccountTreeControllerState, -} from './AccountTreeController'; -import type { BackupAndSyncAnalyticsEventPayload } from './backup-and-sync/analytics'; -import { BackupAndSyncService } from './backup-and-sync/service'; -import { isAccountGroupNameUnique } from './group'; -import { getAccountWalletNameFromKeyringType } from './rules/keyring'; -import type { AccountTreeControllerState } from './types'; +} from './AccountTreeController.js'; +import type { BackupAndSyncAnalyticsEventPayload } from './backup-and-sync/analytics/index.js'; +import { BackupAndSyncService } from './backup-and-sync/service/index.js'; +import { isAccountGroupNameUnique } from './group.js'; +import { getAccountWalletNameFromKeyringType } from './rules/keyring.js'; +import type { AccountTreeControllerState } from './types.js'; // Local mock of EMPTY_ACCOUNT to avoid circular dependency const EMPTY_ACCOUNT_MOCK: InternalAccount = { diff --git a/packages/account-tree-controller/src/backup-and-sync/analytics/index.ts b/packages/account-tree-controller/src/backup-and-sync/analytics/index.ts index 33fa061b779..7143f49ae38 100644 --- a/packages/account-tree-controller/src/backup-and-sync/analytics/index.ts +++ b/packages/account-tree-controller/src/backup-and-sync/analytics/index.ts @@ -1,2 +1,2 @@ -export * from './segment'; -export * from './traces'; +export * from './segment.js'; +export * from './traces.js'; diff --git a/packages/account-tree-controller/src/backup-and-sync/analytics/segment.test.ts b/packages/account-tree-controller/src/backup-and-sync/analytics/segment.test.ts index f7051247a63..990213cbd6e 100644 --- a/packages/account-tree-controller/src/backup-and-sync/analytics/segment.test.ts +++ b/packages/account-tree-controller/src/backup-and-sync/analytics/segment.test.ts @@ -1,9 +1,12 @@ -import { BackupAndSyncAnalyticsEvent, formatAnalyticsEvent } from './segment'; +import { + BackupAndSyncAnalyticsEvent, + formatAnalyticsEvent, +} from './segment.js'; import type { BackupAndSyncAnalyticsAction, BackupAndSyncEmitAnalyticsEventParams, BackupAndSyncAnalyticsEventPayload, -} from './segment'; +} from './segment.js'; describe('BackupAndSyncAnalytics - Segment', () => { describe('BackupAndSyncAnalyticsEvents', () => { diff --git a/packages/account-tree-controller/src/backup-and-sync/analytics/traces.test.ts b/packages/account-tree-controller/src/backup-and-sync/analytics/traces.test.ts index 791ccdd563d..7e9d05e78dd 100644 --- a/packages/account-tree-controller/src/backup-and-sync/analytics/traces.test.ts +++ b/packages/account-tree-controller/src/backup-and-sync/analytics/traces.test.ts @@ -1,6 +1,7 @@ +import { jest } from '@jest/globals'; import type { TraceRequest } from '@metamask/controller-utils'; -import { TraceName, traceFallback } from './traces'; +import { TraceName, traceFallback } from './traces.js'; describe('BackupAndSyncAnalytics - Traces', () => { describe('TraceName', () => { diff --git a/packages/account-tree-controller/src/backup-and-sync/authentication/index.ts b/packages/account-tree-controller/src/backup-and-sync/authentication/index.ts index 04bca77e0de..9be8099fb95 100644 --- a/packages/account-tree-controller/src/backup-and-sync/authentication/index.ts +++ b/packages/account-tree-controller/src/backup-and-sync/authentication/index.ts @@ -1 +1 @@ -export * from './utils'; +export * from './utils.js'; diff --git a/packages/account-tree-controller/src/backup-and-sync/authentication/utils.test.ts b/packages/account-tree-controller/src/backup-and-sync/authentication/utils.test.ts index 3fc12e3fe95..0cf8505ad72 100644 --- a/packages/account-tree-controller/src/backup-and-sync/authentication/utils.test.ts +++ b/packages/account-tree-controller/src/backup-and-sync/authentication/utils.test.ts @@ -1,6 +1,8 @@ -import type { AccountTreeController } from '../../AccountTreeController'; -import type { BackupAndSyncContext } from '../types'; -import { getProfileId } from './utils'; +import { jest } from '@jest/globals'; + +import type { AccountTreeController } from '../../AccountTreeController.js'; +import type { BackupAndSyncContext } from '../types.js'; +import { getProfileId } from './utils.js'; describe('BackupAndSyncAuthentication - Utils', () => { describe('getProfileId', () => { diff --git a/packages/account-tree-controller/src/backup-and-sync/authentication/utils.ts b/packages/account-tree-controller/src/backup-and-sync/authentication/utils.ts index c380db605db..92448dd4979 100644 --- a/packages/account-tree-controller/src/backup-and-sync/authentication/utils.ts +++ b/packages/account-tree-controller/src/backup-and-sync/authentication/utils.ts @@ -1,7 +1,7 @@ import type { SDK } from '@metamask/profile-sync-controller'; -import { backupAndSyncLogger } from '../../logger'; -import type { BackupAndSyncContext } from '../types'; +import { backupAndSyncLogger } from '../../logger.js'; +import type { BackupAndSyncContext } from '../types.js'; export type ProfileId = SDK.UserProfile['profileId'] | undefined; diff --git a/packages/account-tree-controller/src/backup-and-sync/service/atomic-sync-queue.test.ts b/packages/account-tree-controller/src/backup-and-sync/service/atomic-sync-queue.test.ts index 76fc325ab0d..eed95af3bcd 100644 --- a/packages/account-tree-controller/src/backup-and-sync/service/atomic-sync-queue.test.ts +++ b/packages/account-tree-controller/src/backup-and-sync/service/atomic-sync-queue.test.ts @@ -1,11 +1,13 @@ -/* eslint-disable no-void */ -import { backupAndSyncLogger } from '../../logger'; -import { AtomicSyncQueue } from './atomic-sync-queue'; +import { jest } from '@jest/globals'; -jest.mock('../../logger', () => ({ +jest.unstable_mockModule('../../logger', () => ({ + projectLogger: jest.fn(), backupAndSyncLogger: jest.fn(), })); +const { backupAndSyncLogger } = await import('../../logger.js'); +const { AtomicSyncQueue } = await import('./atomic-sync-queue.js'); + const mockBackupAndSyncLogger = backupAndSyncLogger as jest.MockedFunction< typeof backupAndSyncLogger >; diff --git a/packages/account-tree-controller/src/backup-and-sync/service/atomic-sync-queue.ts b/packages/account-tree-controller/src/backup-and-sync/service/atomic-sync-queue.ts index 64b4147b2ea..bb91bee6143 100644 --- a/packages/account-tree-controller/src/backup-and-sync/service/atomic-sync-queue.ts +++ b/packages/account-tree-controller/src/backup-and-sync/service/atomic-sync-queue.ts @@ -1,7 +1,7 @@ import { createDeferredPromise } from '@metamask/utils'; -import { backupAndSyncLogger } from '../../logger'; -import type { AtomicSyncEvent } from '../types'; +import { backupAndSyncLogger } from '../../logger.js'; +import type { AtomicSyncEvent } from '../types.js'; /** * Manages atomic sync operations in a queue to prevent concurrent execution diff --git a/packages/account-tree-controller/src/backup-and-sync/service/index.test.ts b/packages/account-tree-controller/src/backup-and-sync/service/index.test.ts index f93f254fb2a..c80d9402b16 100644 --- a/packages/account-tree-controller/src/backup-and-sync/service/index.test.ts +++ b/packages/account-tree-controller/src/backup-and-sync/service/index.test.ts @@ -1,22 +1,74 @@ +import { jest } from '@jest/globals'; import { AccountWalletType } from '@metamask/account-api'; -import { BackupAndSyncService } from '.'; -import type { AccountGroupObject } from '../../group'; -import type { AccountTreeControllerState } from '../../types'; -import type { AccountWalletEntropyObject } from '../../wallet'; -import { TraceName } from '../analytics'; -import { getProfileId } from '../authentication'; -import { performLegacyAccountSyncing, syncWalletMetadata } from '../syncing'; -import type { BackupAndSyncContext } from '../types'; -import { getAllGroupsFromUserStorage } from '../user-storage'; -// We only need to import the functions we actually spy on -import { createStateSnapshot, getLocalEntropyWallets } from '../utils'; - -// Mock the sync functions and all external dependencies -jest.mock('../syncing'); -jest.mock('../authentication'); -jest.mock('../utils'); -jest.mock('../user-storage'); +import type { AccountGroupObject } from '../../group.js'; +import type { AccountTreeControllerState } from '../../types.js'; +import type { AccountWalletEntropyObject } from '../../wallet.js'; +import { TraceName } from '../analytics/index.js'; +import type { BackupAndSyncContext } from '../types.js'; + +jest.unstable_mockModule('../syncing', () => ({ + syncWalletMetadata: jest.fn(), + performLegacyAccountSyncing: jest.fn(), + syncGroupMetadata: jest.fn(), + syncGroupsMetadata: jest.fn(), + createMultichainAccountGroupsBatch: jest.fn(), + createLocalGroupsFromUserStorage: jest.fn(), + compareAndSyncMetadata: jest.fn(), +})); + +jest.unstable_mockModule('../authentication', () => ({ + getProfileId: jest.fn(), +})); + +// Import the real createSyncMutationTracker directly from its implementation +// module (not via the mocked '../utils' barrel) so the mock factory below can +// use it without triggering a circular import. +const { createSyncMutationTracker: realCreateSyncMutationTracker } = + await import('../utils/mutation-tracker.js'); + +jest.unstable_mockModule('../utils', () => ({ + getLocalEntropyWallets: jest.fn(), + getLocalGroupForEntropyWallet: jest.fn(), + getLocalGroupsForEntropyWallet: jest.fn(), + createStateSnapshot: jest.fn(), + restoreStateFromSnapshot: jest.fn(), + toErrorMessage: jest.fn(), + // Use the real tracker so tests observe actual tracker behaviour. + createSyncMutationTracker: realCreateSyncMutationTracker, +})); + +jest.unstable_mockModule('../user-storage', () => ({ + getAllGroupsFromUserStorage: jest.fn(), + getWalletFromUserStorage: jest.fn(), + pushWalletToUserStorage: jest.fn(), + getGroupFromUserStorage: jest.fn(), + pushGroupToUserStorage: jest.fn(), + pushGroupToUserStorageBatch: jest.fn(), + getAllLegacyUserStorageAccounts: jest.fn(), + formatWalletForUserStorageUsage: jest.fn(), + formatGroupForUserStorageUsage: jest.fn(), + parseWalletFromUserStorageResponse: jest.fn(), + parseGroupFromUserStorageResponse: jest.fn(), + parseLegacyAccountFromUserStorageResponse: jest.fn(), + executeWithRetry: jest.fn(), + assertValidUserStorageWallet: jest.fn(), + assertValidUserStorageGroup: jest.fn(), + assertValidLegacyUserStorageAccount: jest.fn(), +})); + +const { getProfileId } = await import('../authentication/index.js'); +const { + performLegacyAccountSyncing, + syncWalletMetadata, +} = await import('../syncing/index.js'); +const { getAllGroupsFromUserStorage } = await import('../user-storage/index.js'); +const { + createStateSnapshot, + getLocalEntropyWallets, + createSyncMutationTracker, +} = await import('../utils/index.js'); +const { BackupAndSyncService } = await import('./index.js'); // Get typed mocks for the functions we want to spy on const mockGetProfileId = getProfileId as jest.MockedFunction< @@ -39,12 +91,6 @@ const mockCreateStateSnapshot = createStateSnapshot as jest.MockedFunction< typeof createStateSnapshot >; -// `jest.mock('../utils')` auto-mocks every export, including the tracker -// factory. Grab the real one so tests use the actual tracker behaviour rather -// than a hand-rolled duplicate. -const { createSyncMutationTracker } = - jest.requireActual('../utils'); - describe('BackupAndSync - Service - BackupAndSyncService', () => { let mockContext: BackupAndSyncContext; let backupAndSyncService: BackupAndSyncService; diff --git a/packages/account-tree-controller/src/backup-and-sync/syncing/group.test.ts b/packages/account-tree-controller/src/backup-and-sync/syncing/group.test.ts index 2e546f2d5bc..ecf6dbb98e8 100644 --- a/packages/account-tree-controller/src/backup-and-sync/syncing/group.test.ts +++ b/packages/account-tree-controller/src/backup-and-sync/syncing/group.test.ts @@ -1,33 +1,53 @@ -import type { AccountGroupMultichainAccountObject } from '../../group'; -import type { AccountWalletEntropyObject } from '../../wallet'; -import { BackupAndSyncAnalyticsEvent } from '../analytics'; +import { jest } from '@jest/globals'; + +import type { AccountGroupMultichainAccountObject } from '../../group.js'; +import type { AccountWalletEntropyObject } from '../../wallet.js'; +import { BackupAndSyncAnalyticsEvent } from '../analytics/index.js'; import type { BackupAndSyncContext, UserStorageSyncedWalletGroup, -} from '../types'; -import { - pushGroupToUserStorage, - pushGroupToUserStorageBatch, -} from '../user-storage/network-operations'; -import { getLocalGroupsForEntropyWallet } from '../utils'; -import { - createLocalGroupsFromUserStorage, - syncGroupMetadata, - syncGroupsMetadata, -} from './group'; -import * as metadataExports from './metadata'; +} from '../types.js'; + +jest.unstable_mockModule('./metadata', () => ({ + compareAndSyncMetadata: jest.fn(), +})); -jest.mock('./metadata'); -jest.mock('../user-storage/network-operations'); -jest.mock('../utils', () => ({ - ...jest.requireActual('../utils'), +jest.unstable_mockModule('../user-storage/network-operations', () => ({ + getWalletFromUserStorage: jest.fn(), + pushWalletToUserStorage: jest.fn(), + getAllGroupsFromUserStorage: jest.fn(), + getGroupFromUserStorage: jest.fn(), + pushGroupToUserStorage: jest.fn(), + pushGroupToUserStorageBatch: jest.fn(), + getAllLegacyUserStorageAccounts: jest.fn(), +})); + +jest.unstable_mockModule('../utils', () => ({ + getLocalEntropyWallets: jest.fn(), + getLocalGroupForEntropyWallet: jest.fn(), getLocalGroupsForEntropyWallet: jest.fn(), + createStateSnapshot: jest.fn(), + restoreStateFromSnapshot: jest.fn(), + createSyncMutationTracker: jest.fn(), + toErrorMessage: jest.fn(), })); -jest.mock('../../logger', () => ({ +jest.unstable_mockModule('../../logger', () => ({ + projectLogger: jest.fn(), backupAndSyncLogger: jest.fn(), })); +const { pushGroupToUserStorage, pushGroupToUserStorageBatch } = await import( + '../user-storage/network-operations.js' +); +const { getLocalGroupsForEntropyWallet } = await import('../utils/index.js'); +const metadataExports = await import('./metadata.js'); +const { + createLocalGroupsFromUserStorage, + syncGroupMetadata, + syncGroupsMetadata, +} = await import('./group.js'); + const mockCompareAndSyncMetadata = metadataExports.compareAndSyncMetadata as jest.MockedFunction< typeof metadataExports.compareAndSyncMetadata diff --git a/packages/account-tree-controller/src/backup-and-sync/syncing/index.ts b/packages/account-tree-controller/src/backup-and-sync/syncing/index.ts index 2a76d6d32da..b38f5f6c35b 100644 --- a/packages/account-tree-controller/src/backup-and-sync/syncing/index.ts +++ b/packages/account-tree-controller/src/backup-and-sync/syncing/index.ts @@ -1,4 +1,4 @@ -export * from './group'; -export * from './legacy'; -export * from './wallet'; -export * from './metadata'; +export * from './group.js'; +export * from './legacy.js'; +export * from './wallet.js'; +export * from './metadata.js'; diff --git a/packages/account-tree-controller/src/backup-and-sync/syncing/legacy.test.ts b/packages/account-tree-controller/src/backup-and-sync/syncing/legacy.test.ts index 00ee21d0296..da4629d2290 100644 --- a/packages/account-tree-controller/src/backup-and-sync/syncing/legacy.test.ts +++ b/packages/account-tree-controller/src/backup-and-sync/syncing/legacy.test.ts @@ -1,20 +1,57 @@ +import { jest } from '@jest/globals'; import { AccountGroupType } from '@metamask/account-api'; -import { getUUIDFromAddressOfNormalAccount } from '@metamask/accounts-controller'; - -import type { AccountGroupMultichainAccountObject } from '../../group'; -import { BackupAndSyncAnalyticsEvent } from '../analytics'; -import type { BackupAndSyncContext } from '../types'; -import { getAllLegacyUserStorageAccounts } from '../user-storage'; -import { getLocalGroupsForEntropyWallet } from '../utils'; -import { createMultichainAccountGroupsBatch } from './group'; -import { performLegacyAccountSyncing } from './legacy'; - -jest.mock('@metamask/accounts-controller'); -jest.mock('../user-storage'); -jest.mock('../utils', () => ({ + +import type { AccountGroupMultichainAccountObject } from '../../group.js'; +import { BackupAndSyncAnalyticsEvent } from '../analytics/index.js'; +import type { BackupAndSyncContext } from '../types.js'; + +jest.unstable_mockModule('@metamask/accounts-controller', () => ({ + getUUIDFromAddressOfNormalAccount: jest.fn(), +})); + +jest.unstable_mockModule('../user-storage', () => ({ + getAllLegacyUserStorageAccounts: jest.fn(), + getWalletFromUserStorage: jest.fn(), + pushWalletToUserStorage: jest.fn(), + getAllGroupsFromUserStorage: jest.fn(), + getGroupFromUserStorage: jest.fn(), + pushGroupToUserStorage: jest.fn(), + pushGroupToUserStorageBatch: jest.fn(), + formatWalletForUserStorageUsage: jest.fn(), + formatGroupForUserStorageUsage: jest.fn(), + parseWalletFromUserStorageResponse: jest.fn(), + parseGroupFromUserStorageResponse: jest.fn(), + parseLegacyAccountFromUserStorageResponse: jest.fn(), + executeWithRetry: jest.fn(), + assertValidUserStorageWallet: jest.fn(), + assertValidUserStorageGroup: jest.fn(), + assertValidLegacyUserStorageAccount: jest.fn(), +})); + +jest.unstable_mockModule('../utils', () => ({ getLocalGroupsForEntropyWallet: jest.fn(), + getLocalEntropyWallets: jest.fn(), + getLocalGroupForEntropyWallet: jest.fn(), + createStateSnapshot: jest.fn(), + restoreStateFromSnapshot: jest.fn(), + createSyncMutationTracker: jest.fn(), + toErrorMessage: jest.fn(), +})); + +jest.unstable_mockModule('./group', () => ({ + createMultichainAccountGroupsBatch: jest.fn(), + createLocalGroupsFromUserStorage: jest.fn(), + syncGroupMetadata: jest.fn(), + syncGroupsMetadata: jest.fn(), })); -jest.mock('./group'); + +const { getUUIDFromAddressOfNormalAccount } = await import( + '@metamask/accounts-controller' +); +const { getAllLegacyUserStorageAccounts } = await import('../user-storage/index.js'); +const { getLocalGroupsForEntropyWallet } = await import('../utils/index.js'); +const { createMultichainAccountGroupsBatch } = await import('./group.js'); +const { performLegacyAccountSyncing } = await import('./legacy.js'); const mockGetUUIDFromAddressOfNormalAccount = getUUIDFromAddressOfNormalAccount as jest.MockedFunction< diff --git a/packages/account-tree-controller/src/backup-and-sync/syncing/metadata.test.ts b/packages/account-tree-controller/src/backup-and-sync/syncing/metadata.test.ts index 072ceefdedf..ba901301b82 100644 --- a/packages/account-tree-controller/src/backup-and-sync/syncing/metadata.test.ts +++ b/packages/account-tree-controller/src/backup-and-sync/syncing/metadata.test.ts @@ -1,6 +1,8 @@ -import { BackupAndSyncAnalyticsEvent } from '../analytics'; -import type { BackupAndSyncContext } from '../types'; -import { compareAndSyncMetadata } from './metadata'; +import { jest } from '@jest/globals'; + +import { BackupAndSyncAnalyticsEvent } from '../analytics/index.js'; +import type { BackupAndSyncContext } from '../types.js'; +import { compareAndSyncMetadata } from './metadata.js'; describe('BackupAndSync - Syncing - Metadata', () => { let mockContext: BackupAndSyncContext; diff --git a/packages/account-tree-controller/src/backup-and-sync/syncing/wallet.test.ts b/packages/account-tree-controller/src/backup-and-sync/syncing/wallet.test.ts index fe8021ac2f1..175b8982bd0 100644 --- a/packages/account-tree-controller/src/backup-and-sync/syncing/wallet.test.ts +++ b/packages/account-tree-controller/src/backup-and-sync/syncing/wallet.test.ts @@ -1,15 +1,32 @@ -import type { AccountWalletEntropyObject } from '../../wallet'; -import { BackupAndSyncAnalyticsEvent } from '../analytics'; -import type { BackupAndSyncContext, UserStorageSyncedWallet } from '../types'; -import { pushWalletToUserStorage } from '../user-storage/network-operations'; -import { compareAndSyncMetadata } from './metadata'; -import { - syncWalletMetadataAndCheckIfPushNeeded, - syncWalletMetadata, -} from './wallet'; - -jest.mock('./metadata'); -jest.mock('../user-storage/network-operations'); +import { jest } from '@jest/globals'; + +import type { AccountWalletEntropyObject } from '../../wallet.js'; +import { BackupAndSyncAnalyticsEvent } from '../analytics/index.js'; +import type { + BackupAndSyncContext, + UserStorageSyncedWallet, +} from '../types.js'; + +jest.unstable_mockModule('./metadata', () => ({ + compareAndSyncMetadata: jest.fn(), +})); + +jest.unstable_mockModule('../user-storage/network-operations', () => ({ + getWalletFromUserStorage: jest.fn(), + pushWalletToUserStorage: jest.fn(), + getAllGroupsFromUserStorage: jest.fn(), + getGroupFromUserStorage: jest.fn(), + pushGroupToUserStorage: jest.fn(), + pushGroupToUserStorageBatch: jest.fn(), + getAllLegacyUserStorageAccounts: jest.fn(), +})); + +const { pushWalletToUserStorage } = await import( + '../user-storage/network-operations.js' +); +const { compareAndSyncMetadata } = await import('./metadata.js'); +const { syncWalletMetadataAndCheckIfPushNeeded, syncWalletMetadata } = + await import('./wallet.js'); const mockCompareAndSyncMetadata = compareAndSyncMetadata as jest.MockedFunction; diff --git a/packages/account-tree-controller/src/backup-and-sync/user-storage/format-utils.test.ts b/packages/account-tree-controller/src/backup-and-sync/user-storage/format-utils.test.ts index b289895b517..a1087ef387f 100644 --- a/packages/account-tree-controller/src/backup-and-sync/user-storage/format-utils.test.ts +++ b/packages/account-tree-controller/src/backup-and-sync/user-storage/format-utils.test.ts @@ -1,22 +1,37 @@ -import type { AccountGroupMultichainAccountObject } from '../../group'; -import { backupAndSyncLogger } from '../../logger'; -import type { AccountWalletEntropyObject } from '../../wallet'; -import type { BackupAndSyncContext, UserStorageSyncedWallet } from '../types'; -import { +import { jest } from '@jest/globals'; + +import type { AccountGroupMultichainAccountObject } from '../../group.js'; +import type { AccountWalletEntropyObject } from '../../wallet.js'; +import type { + BackupAndSyncContext, + UserStorageSyncedWallet, +} from '../types.js'; + +jest.unstable_mockModule('./validation', () => ({ + assertValidUserStorageWallet: jest.fn(), + assertValidUserStorageGroup: jest.fn(), + assertValidLegacyUserStorageAccount: jest.fn(), +})); + +jest.unstable_mockModule('../../logger', () => ({ + projectLogger: jest.fn(), + backupAndSyncLogger: jest.fn(), +})); + +const { formatWalletForUserStorageUsage, formatGroupForUserStorageUsage, parseWalletFromUserStorageResponse, parseGroupFromUserStorageResponse, parseLegacyAccountFromUserStorageResponse, -} from './format-utils'; -import { +} = await import('./format-utils.js'); + +const { backupAndSyncLogger } = await import('../../logger.js'); +const { assertValidUserStorageWallet, assertValidUserStorageGroup, assertValidLegacyUserStorageAccount, -} from './validation'; - -jest.mock('./validation'); -jest.mock('../../logger'); +} = await import('./validation.js'); const mockBackupAndSyncLogger = backupAndSyncLogger as jest.MockedFunction< typeof backupAndSyncLogger diff --git a/packages/account-tree-controller/src/backup-and-sync/user-storage/format-utils.ts b/packages/account-tree-controller/src/backup-and-sync/user-storage/format-utils.ts index 6c50e9e095e..efb85e3b417 100644 --- a/packages/account-tree-controller/src/backup-and-sync/user-storage/format-utils.ts +++ b/packages/account-tree-controller/src/backup-and-sync/user-storage/format-utils.ts @@ -1,21 +1,21 @@ import { mask } from '@metamask/superstruct'; -import type { AccountGroupMultichainAccountObject } from '../../group'; -import { backupAndSyncLogger } from '../../logger'; -import type { AccountWalletEntropyObject } from '../../wallet'; +import type { AccountGroupMultichainAccountObject } from '../../group.js'; +import { backupAndSyncLogger } from '../../logger.js'; +import type { AccountWalletEntropyObject } from '../../wallet.js'; import type { BackupAndSyncContext, LegacyUserStorageSyncedAccount, UserStorageSyncedWallet, UserStorageSyncedWalletGroup, -} from '../types'; -import { UserStorageSyncedWalletGroupSchema } from '../types'; -import { toErrorMessage } from '../utils/errors'; +} from '../types.js'; +import { UserStorageSyncedWalletGroupSchema } from '../types.js'; +import { toErrorMessage } from '../utils/errors.js'; import { assertValidUserStorageWallet, assertValidUserStorageGroup, assertValidLegacyUserStorageAccount, -} from './validation'; +} from './validation.js'; /** * Formats the wallet for user storage usage. diff --git a/packages/account-tree-controller/src/backup-and-sync/user-storage/index.ts b/packages/account-tree-controller/src/backup-and-sync/user-storage/index.ts index 75b762c215e..de4f750c354 100644 --- a/packages/account-tree-controller/src/backup-and-sync/user-storage/index.ts +++ b/packages/account-tree-controller/src/backup-and-sync/user-storage/index.ts @@ -1,4 +1,4 @@ -export * from './format-utils'; -export * from './network-utils'; -export * from './network-operations'; -export * from './validation'; +export * from './format-utils.js'; +export * from './network-utils.js'; +export * from './network-operations.js'; +export * from './validation.js'; diff --git a/packages/account-tree-controller/src/backup-and-sync/user-storage/network-operations.test.ts b/packages/account-tree-controller/src/backup-and-sync/user-storage/network-operations.test.ts index deaab840145..f54de3539bf 100644 --- a/packages/account-tree-controller/src/backup-and-sync/user-storage/network-operations.test.ts +++ b/packages/account-tree-controller/src/backup-and-sync/user-storage/network-operations.test.ts @@ -1,25 +1,42 @@ +import { jest } from '@jest/globals'; import { SDK } from '@metamask/profile-sync-controller'; -import type { AccountGroupMultichainAccountObject } from '../../group'; -import type { AccountWalletEntropyObject } from '../../wallet'; +import type { AccountGroupMultichainAccountObject } from '../../group.js'; +import type { AccountWalletEntropyObject } from '../../wallet.js'; import type { BackupAndSyncContext, UserStorageSyncedWallet, UserStorageSyncedWalletGroup, -} from '../types'; +} from '../types.js'; import { USER_STORAGE_WALLETS_FEATURE_KEY, USER_STORAGE_WALLETS_FEATURE_ENTRY_KEY, USER_STORAGE_GROUPS_FEATURE_KEY, -} from './constants'; -import { +} from './constants.js'; + +jest.unstable_mockModule('./format-utils', () => ({ + formatWalletForUserStorageUsage: jest.fn(), + formatGroupForUserStorageUsage: jest.fn(), + parseWalletFromUserStorageResponse: jest.fn(), + parseGroupFromUserStorageResponse: jest.fn(), + parseLegacyAccountFromUserStorageResponse: jest.fn(), +})); + +jest.unstable_mockModule('./network-utils', () => ({ + executeWithRetry: jest.fn(), +})); + +const { formatWalletForUserStorageUsage, formatGroupForUserStorageUsage, parseWalletFromUserStorageResponse, parseGroupFromUserStorageResponse, parseLegacyAccountFromUserStorageResponse, -} from './format-utils'; -import { +} = await import('./format-utils.js'); + +const { executeWithRetry } = await import('./network-utils.js'); + +const { getWalletFromUserStorage, pushWalletToUserStorage, getAllGroupsFromUserStorage, @@ -27,11 +44,7 @@ import { pushGroupToUserStorage, pushGroupToUserStorageBatch, getAllLegacyUserStorageAccounts, -} from './network-operations'; -import { executeWithRetry } from './network-utils'; - -jest.mock('./format-utils'); -jest.mock('./network-utils'); +} = await import('./network-operations.js'); const mockFormatWalletForUserStorageUsage = formatWalletForUserStorageUsage as jest.MockedFunction< diff --git a/packages/account-tree-controller/src/backup-and-sync/user-storage/network-operations.ts b/packages/account-tree-controller/src/backup-and-sync/user-storage/network-operations.ts index 52cd55e9e3d..48a4e0d4e79 100644 --- a/packages/account-tree-controller/src/backup-and-sync/user-storage/network-operations.ts +++ b/packages/account-tree-controller/src/backup-and-sync/user-storage/network-operations.ts @@ -1,28 +1,28 @@ import { SDK } from '@metamask/profile-sync-controller'; -import type { AccountGroupMultichainAccountObject } from '../../group'; -import { backupAndSyncLogger } from '../../logger'; -import type { AccountWalletEntropyObject } from '../../wallet'; +import type { AccountGroupMultichainAccountObject } from '../../group.js'; +import { backupAndSyncLogger } from '../../logger.js'; +import type { AccountWalletEntropyObject } from '../../wallet.js'; import type { BackupAndSyncContext, LegacyUserStorageSyncedAccount, UserStorageSyncedWallet, UserStorageSyncedWalletGroup, -} from '../types'; -import { toErrorMessage } from '../utils/errors'; +} from '../types.js'; +import { toErrorMessage } from '../utils/errors.js'; import { USER_STORAGE_GROUPS_FEATURE_KEY, USER_STORAGE_WALLETS_FEATURE_ENTRY_KEY, USER_STORAGE_WALLETS_FEATURE_KEY, -} from './constants'; +} from './constants.js'; import { formatWalletForUserStorageUsage, formatGroupForUserStorageUsage, parseWalletFromUserStorageResponse, parseGroupFromUserStorageResponse, parseLegacyAccountFromUserStorageResponse, -} from './format-utils'; -import { executeWithRetry } from './network-utils'; +} from './format-utils.js'; +import { executeWithRetry } from './network-utils.js'; /** * Retrieves the wallet from user storage. diff --git a/packages/account-tree-controller/src/backup-and-sync/user-storage/network-utils.test.ts b/packages/account-tree-controller/src/backup-and-sync/user-storage/network-utils.test.ts index eee876f3f97..08e8d1ac3f3 100644 --- a/packages/account-tree-controller/src/backup-and-sync/user-storage/network-utils.test.ts +++ b/packages/account-tree-controller/src/backup-and-sync/user-storage/network-utils.test.ts @@ -1,4 +1,6 @@ -import { executeWithRetry } from './network-utils'; +import { jest } from '@jest/globals'; + +import { executeWithRetry } from './network-utils.js'; describe('BackupAndSync - UserStorage - NetworkUtils', () => { beforeEach(() => { diff --git a/packages/account-tree-controller/src/backup-and-sync/user-storage/validation.test.ts b/packages/account-tree-controller/src/backup-and-sync/user-storage/validation.test.ts index c404ab3731d..5252d59b7e3 100644 --- a/packages/account-tree-controller/src/backup-and-sync/user-storage/validation.test.ts +++ b/packages/account-tree-controller/src/backup-and-sync/user-storage/validation.test.ts @@ -2,7 +2,7 @@ import { assertValidUserStorageWallet, assertValidUserStorageGroup, assertValidLegacyUserStorageAccount, -} from './validation'; +} from './validation.js'; describe('BackupAndSync - UserStorage - Validation', () => { describe('assertValidUserStorageWallet', () => { diff --git a/packages/account-tree-controller/src/backup-and-sync/user-storage/validation.ts b/packages/account-tree-controller/src/backup-and-sync/user-storage/validation.ts index d31bf2bae78..325aa7e5c2c 100644 --- a/packages/account-tree-controller/src/backup-and-sync/user-storage/validation.ts +++ b/packages/account-tree-controller/src/backup-and-sync/user-storage/validation.ts @@ -4,12 +4,12 @@ import type { LegacyUserStorageSyncedAccount, UserStorageSyncedWallet, UserStorageSyncedWalletGroup, -} from '../types'; +} from '../types.js'; import { UserStorageSyncedWalletSchema, UserStorageSyncedWalletGroupSchema, LegacyUserStorageSyncedAccountSchema, -} from '../types'; +} from '../types.js'; /** * Formats validation error messages for user storage data. diff --git a/packages/account-tree-controller/src/backup-and-sync/utils/controller.test.ts b/packages/account-tree-controller/src/backup-and-sync/utils/controller.test.ts index 3437931e887..b2627b816c9 100644 --- a/packages/account-tree-controller/src/backup-and-sync/utils/controller.test.ts +++ b/packages/account-tree-controller/src/backup-and-sync/utils/controller.test.ts @@ -1,19 +1,20 @@ +import { jest } from '@jest/globals'; import { AccountWalletType, AccountGroupType } from '@metamask/account-api'; -import type { AccountTreeController } from '../../AccountTreeController'; +import type { AccountTreeController } from '../../AccountTreeController.js'; import type { AccountWalletEntropyObject, AccountWalletKeyringObject, -} from '../../wallet'; -import type { BackupAndSyncContext } from '../types'; +} from '../../wallet.js'; +import type { BackupAndSyncContext } from '../types.js'; import { getLocalEntropyWallets, getLocalGroupsForEntropyWallet, createStateSnapshot, restoreStateFromSnapshot, getLocalGroupForEntropyWallet, -} from './controller'; -import type { StateSnapshot } from './controller'; +} from './controller.js'; +import type { StateSnapshot } from './controller.js'; describe('BackupAndSyncUtils - Controller', () => { let mockContext: BackupAndSyncContext; diff --git a/packages/account-tree-controller/src/backup-and-sync/utils/controller.ts b/packages/account-tree-controller/src/backup-and-sync/utils/controller.ts index 4a0e368ca8e..b7cf1582207 100644 --- a/packages/account-tree-controller/src/backup-and-sync/utils/controller.ts +++ b/packages/account-tree-controller/src/backup-and-sync/utils/controller.ts @@ -5,11 +5,11 @@ import { } from '@metamask/account-api'; import type { AccountWalletId } from '@metamask/account-api'; -import type { AccountGroupMultichainAccountObject } from '../../group'; -import { backupAndSyncLogger } from '../../logger'; -import type { AccountTreeControllerState } from '../../types'; -import type { AccountWalletEntropyObject } from '../../wallet'; -import type { BackupAndSyncContext } from '../types'; +import type { AccountGroupMultichainAccountObject } from '../../group.js'; +import { backupAndSyncLogger } from '../../logger.js'; +import type { AccountTreeControllerState } from '../../types.js'; +import type { AccountWalletEntropyObject } from '../../wallet.js'; +import type { BackupAndSyncContext } from '../types.js'; /** * Gets all local entropy wallets that can be synced. diff --git a/packages/account-tree-controller/src/backup-and-sync/utils/errors.test.ts b/packages/account-tree-controller/src/backup-and-sync/utils/errors.test.ts index 2879bf4ad8c..9e963d5e751 100644 --- a/packages/account-tree-controller/src/backup-and-sync/utils/errors.test.ts +++ b/packages/account-tree-controller/src/backup-and-sync/utils/errors.test.ts @@ -1,4 +1,4 @@ -import { toErrorMessage } from './errors'; +import { toErrorMessage } from './errors.js'; describe('toErrorMessage', () => { it('returns the message property for Error instances', () => { diff --git a/packages/account-tree-controller/src/backup-and-sync/utils/index.ts b/packages/account-tree-controller/src/backup-and-sync/utils/index.ts index f84fb0dafde..4680c6258d7 100644 --- a/packages/account-tree-controller/src/backup-and-sync/utils/index.ts +++ b/packages/account-tree-controller/src/backup-and-sync/utils/index.ts @@ -1,3 +1,3 @@ -export * from './controller'; -export { toErrorMessage } from './errors'; -export { createSyncMutationTracker } from './mutation-tracker'; +export * from './controller.js'; +export { toErrorMessage } from './errors.js'; +export { createSyncMutationTracker } from './mutation-tracker.js'; diff --git a/packages/account-tree-controller/src/backup-and-sync/utils/mutation-tracker.test.ts b/packages/account-tree-controller/src/backup-and-sync/utils/mutation-tracker.test.ts index 43444baffe5..02c589130f6 100644 --- a/packages/account-tree-controller/src/backup-and-sync/utils/mutation-tracker.test.ts +++ b/packages/account-tree-controller/src/backup-and-sync/utils/mutation-tracker.test.ts @@ -1,4 +1,4 @@ -import { createSyncMutationTracker } from './mutation-tracker'; +import { createSyncMutationTracker } from './mutation-tracker.js'; describe('BackupAndSync - Utils - createSyncMutationTracker', () => { it('starts with no recorded writes', () => { diff --git a/packages/account-tree-controller/src/backup-and-sync/utils/mutation-tracker.ts b/packages/account-tree-controller/src/backup-and-sync/utils/mutation-tracker.ts index aa0d3e74beb..690f11cf443 100644 --- a/packages/account-tree-controller/src/backup-and-sync/utils/mutation-tracker.ts +++ b/packages/account-tree-controller/src/backup-and-sync/utils/mutation-tracker.ts @@ -1,4 +1,4 @@ -import type { SyncMutationTracker } from '../types'; +import type { SyncMutationTracker } from '../types.js'; /** * Creates a tracker that records whether the current full sync run performed a diff --git a/packages/account-tree-controller/src/group.ts b/packages/account-tree-controller/src/group.ts index 5e53cbc5a08..11ed0557d15 100644 --- a/packages/account-tree-controller/src/group.ts +++ b/packages/account-tree-controller/src/group.ts @@ -14,9 +14,9 @@ import { } from '@metamask/keyring-api'; import type { KeyringAccountType } from '@metamask/keyring-api'; -import type { UpdatableField, ExtractFieldValues } from './type-utils'; -import type { AccountTreeControllerState } from './types'; -import type { AccountWalletObject } from './wallet'; +import type { UpdatableField, ExtractFieldValues } from './type-utils.js'; +import type { AccountTreeControllerState } from './types.js'; +import type { AccountWalletObject } from './wallet.js'; /** * Persisted metadata for account groups (stored in controller state for persistence/sync). diff --git a/packages/account-tree-controller/src/index.ts b/packages/account-tree-controller/src/index.ts index 28b2f17f645..854ca0a392b 100644 --- a/packages/account-tree-controller/src/index.ts +++ b/packages/account-tree-controller/src/index.ts @@ -1,11 +1,11 @@ -export type { AccountWalletObject } from './wallet'; -export type { AccountGroupObject } from './group'; -export { isAccountGroupNameUnique } from './group'; +export type { AccountWalletObject } from './wallet.js'; +export type { AccountGroupObject } from './group.js'; +export { isAccountGroupNameUnique } from './group.js'; export { USER_STORAGE_GROUPS_FEATURE_KEY, USER_STORAGE_WALLETS_FEATURE_KEY, -} from './backup-and-sync/user-storage/constants'; +} from './backup-and-sync/user-storage/constants.js'; export type { AccountTreeControllerState, @@ -19,7 +19,7 @@ export type { AccountTreeControllerAccountGroupRemovedEvent, AccountTreeControllerEvents, AccountTreeControllerMessenger, -} from './types'; +} from './types.js'; export type { AccountTreeControllerGetAccountWalletObjectAction, @@ -38,11 +38,11 @@ export type { AccountTreeControllerSyncWithUserStorageAtLeastOnceAction, AccountTreeControllerInitAction, AccountTreeControllerReinitAction, -} from './AccountTreeController-method-action-types'; +} from './AccountTreeController-method-action-types.js'; -export type { AccountContext } from './AccountTreeController'; +export type { AccountContext } from './AccountTreeController.js'; export { AccountTreeController, getDefaultAccountTreeControllerState, -} from './AccountTreeController'; +} from './AccountTreeController.js'; diff --git a/packages/account-tree-controller/src/rule.test.ts b/packages/account-tree-controller/src/rule.test.ts index f98661db909..17732034583 100644 --- a/packages/account-tree-controller/src/rule.test.ts +++ b/packages/account-tree-controller/src/rule.test.ts @@ -16,10 +16,10 @@ import type { InternalAccount } from '@metamask/keyring-internal-api'; import { getAccountTreeControllerMessenger, getRootMessenger, -} from '../tests/mockMessenger'; -import type { AccountGroupObject } from './group'; -import { BaseRule } from './rule'; -import type { AccountWalletObject } from './wallet'; +} from '../tests/mockMessenger.js'; +import type { AccountGroupObject } from './group.js'; +import { BaseRule } from './rule.js'; +import type { AccountWalletObject } from './wallet.js'; const ETH_EOA_METHODS = [ EthMethod.PersonalSign, diff --git a/packages/account-tree-controller/src/rule.ts b/packages/account-tree-controller/src/rule.ts index f016687edb3..31e1d65b16f 100644 --- a/packages/account-tree-controller/src/rule.ts +++ b/packages/account-tree-controller/src/rule.ts @@ -8,9 +8,9 @@ import type { } from '@metamask/account-api'; import type { InternalAccount } from '@metamask/keyring-internal-api'; -import type { AccountGroupObject, AccountGroupObjectOf } from './group'; -import type { AccountTreeControllerMessenger } from './types'; -import type { AccountWalletObject, AccountWalletObjectOf } from './wallet'; +import type { AccountGroupObject, AccountGroupObjectOf } from './group.js'; +import type { AccountTreeControllerMessenger } from './types.js'; +import type { AccountWalletObject, AccountWalletObjectOf } from './wallet.js'; export type RuleResult< WalletType extends AccountWalletType, diff --git a/packages/account-tree-controller/src/rules/entropy.test.ts b/packages/account-tree-controller/src/rules/entropy.test.ts index b05f833213e..60a0ee209c7 100644 --- a/packages/account-tree-controller/src/rules/entropy.test.ts +++ b/packages/account-tree-controller/src/rules/entropy.test.ts @@ -18,9 +18,9 @@ import type { AccountWalletEntropyObject } from 'src/wallet'; import { getAccountTreeControllerMessenger, getRootMessenger, -} from '../../tests/mockMessenger'; -import type { AccountGroupObjectOf } from '../group'; -import { EntropyRule } from './entropy'; +} from '../../tests/mockMessenger.js'; +import type { AccountGroupObjectOf } from '../group.js'; +import { EntropyRule } from './entropy.js'; const ETH_EOA_METHODS = [ EthMethod.PersonalSign, diff --git a/packages/account-tree-controller/src/rules/entropy.ts b/packages/account-tree-controller/src/rules/entropy.ts index e9ddc1bf8b6..03fb50953fc 100644 --- a/packages/account-tree-controller/src/rules/entropy.ts +++ b/packages/account-tree-controller/src/rules/entropy.ts @@ -9,10 +9,10 @@ import { isEvmAccountType } from '@metamask/keyring-api'; import { KeyringTypes } from '@metamask/keyring-controller'; import type { InternalAccount } from '@metamask/keyring-internal-api'; -import type { AccountGroupObjectOf } from '../group'; -import { BaseRule } from '../rule'; -import type { Rule, RuleResult } from '../rule'; -import type { AccountWalletObjectOf } from '../wallet'; +import type { AccountGroupObjectOf } from '../group.js'; +import { BaseRule } from '../rule.js'; +import type { Rule, RuleResult } from '../rule.js'; +import type { AccountWalletObjectOf } from '../wallet.js'; export class EntropyRule extends BaseRule diff --git a/packages/account-tree-controller/src/rules/keyring.test.ts b/packages/account-tree-controller/src/rules/keyring.test.ts index 02f5bd947de..b2a6ebf4758 100644 --- a/packages/account-tree-controller/src/rules/keyring.test.ts +++ b/packages/account-tree-controller/src/rules/keyring.test.ts @@ -12,13 +12,13 @@ import type { InternalAccount } from '@metamask/keyring-internal-api'; import { getAccountTreeControllerMessenger, getRootMessenger, -} from '../../tests/mockMessenger'; -import type { AccountGroupObjectOf } from '../group'; +} from '../../tests/mockMessenger.js'; +import type { AccountGroupObjectOf } from '../group.js'; import type { AccountWalletKeyringObject, AccountWalletObjectOf, -} from '../wallet'; -import { KeyringRule, getAccountWalletNameFromKeyringType } from './keyring'; +} from '../wallet.js'; +import { KeyringRule, getAccountWalletNameFromKeyringType } from './keyring.js'; describe('keyring', () => { describe('getAccountWalletNameFromKeyringType', () => { diff --git a/packages/account-tree-controller/src/rules/keyring.ts b/packages/account-tree-controller/src/rules/keyring.ts index 9873988c95c..91c9305750c 100644 --- a/packages/account-tree-controller/src/rules/keyring.ts +++ b/packages/account-tree-controller/src/rules/keyring.ts @@ -5,10 +5,10 @@ import { KeyringType } from '@metamask/keyring-api/v2'; import { KeyringTypes } from '@metamask/keyring-controller'; import type { InternalAccount } from '@metamask/keyring-internal-api'; -import type { AccountGroupObjectOf } from '../group'; -import { BaseRule } from '../rule'; -import type { Rule, RuleResult } from '../rule'; -import type { AccountWalletObjectOf } from '../wallet'; +import type { AccountGroupObjectOf } from '../group.js'; +import { BaseRule } from '../rule.js'; +import type { Rule, RuleResult } from '../rule.js'; +import type { AccountWalletObjectOf } from '../wallet.js'; /** * Get wallet name from a keyring type. diff --git a/packages/account-tree-controller/src/rules/snap.test.ts b/packages/account-tree-controller/src/rules/snap.test.ts index 1309b23ef75..0426aa13e82 100644 --- a/packages/account-tree-controller/src/rules/snap.test.ts +++ b/packages/account-tree-controller/src/rules/snap.test.ts @@ -14,10 +14,13 @@ import type { Snap } from '@metamask/snaps-utils'; import { getAccountTreeControllerMessenger, getRootMessenger, -} from '../../tests/mockMessenger'; -import type { AccountGroupObjectOf } from '../group'; -import type { AccountWalletObjectOf, AccountWalletSnapObject } from '../wallet'; -import { SnapRule } from './snap'; +} from '../../tests/mockMessenger.js'; +import type { AccountGroupObjectOf } from '../group.js'; +import type { + AccountWalletObjectOf, + AccountWalletSnapObject, +} from '../wallet.js'; +import { SnapRule } from './snap.js'; const ETH_EOA_METHODS = [ EthMethod.PersonalSign, diff --git a/packages/account-tree-controller/src/rules/snap.ts b/packages/account-tree-controller/src/rules/snap.ts index 085242db781..04327e6d456 100644 --- a/packages/account-tree-controller/src/rules/snap.ts +++ b/packages/account-tree-controller/src/rules/snap.ts @@ -6,10 +6,10 @@ import type { InternalAccount } from '@metamask/keyring-internal-api'; import type { SnapId } from '@metamask/snaps-sdk'; import { stripSnapPrefix } from '@metamask/snaps-utils'; -import { BaseRule } from '../rule'; -import type { Rule, RuleResult } from '../rule'; -import type { AccountWalletObjectOf } from '../wallet'; -import { getAccountGroupPrefixFromKeyringType } from './keyring'; +import { BaseRule } from '../rule.js'; +import type { Rule, RuleResult } from '../rule.js'; +import type { AccountWalletObjectOf } from '../wallet.js'; +import { getAccountGroupPrefixFromKeyringType } from './keyring.js'; /** * Snap account type. diff --git a/packages/account-tree-controller/src/wallet.ts b/packages/account-tree-controller/src/wallet.ts index fdfc46270f5..cf3cd695514 100644 --- a/packages/account-tree-controller/src/wallet.ts +++ b/packages/account-tree-controller/src/wallet.ts @@ -14,7 +14,7 @@ import type { AccountGroupMultichainAccountObject, AccountGroupObject, AccountGroupSingleAccountObject, -} from './group'; +} from './group.js'; import type { UpdatableField, ExtractFieldValues } from './type-utils.js'; /** diff --git a/packages/account-tree-controller/tests/mockMessenger.ts b/packages/account-tree-controller/tests/mockMessenger.ts index a96594dbf76..3516c81a177 100644 --- a/packages/account-tree-controller/tests/mockMessenger.ts +++ b/packages/account-tree-controller/tests/mockMessenger.ts @@ -5,7 +5,7 @@ import type { MessengerEvents, } from '@metamask/messenger'; -import type { AccountTreeControllerMessenger } from '../src/types'; +import type { AccountTreeControllerMessenger } from '../src/types.js'; type AllAccountTreeControllerActions = MessengerActions; From 186a9b0a50580a744a2b2abbb229e042ea337388 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:49:49 +0200 Subject: [PATCH 063/115] ESLint fix and `jest` global import for ens-controller --- .../src/EnsController-method-action-types.ts | 2 +- packages/ens-controller/src/EnsController.test.ts | 7 ++++--- packages/ens-controller/src/EnsController.ts | 4 ++-- packages/ens-controller/src/index.ts | 4 ++-- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/ens-controller/src/EnsController-method-action-types.ts b/packages/ens-controller/src/EnsController-method-action-types.ts index 0cddc37e12d..5b355c8d8d6 100644 --- a/packages/ens-controller/src/EnsController-method-action-types.ts +++ b/packages/ens-controller/src/EnsController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { EnsController } from './EnsController'; +import type { EnsController } from './EnsController.js'; /** * Clears ensResolutionsByAddress state property. diff --git a/packages/ens-controller/src/EnsController.test.ts b/packages/ens-controller/src/EnsController.test.ts index e113c914061..57103811440 100644 --- a/packages/ens-controller/src/EnsController.test.ts +++ b/packages/ens-controller/src/EnsController.test.ts @@ -1,4 +1,5 @@ import * as providersModule from '@ethersproject/providers'; +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { toChecksumHexAddress, @@ -20,12 +21,12 @@ import type { import { buildMockGetNetworkClientById, buildCustomNetworkClientConfiguration, -} from '../../network-controller/tests/helpers'; -import { EnsController, DEFAULT_ENS_NETWORK_MAP } from './EnsController'; +} from '../../network-controller/tests/helpers.js'; +import { EnsController, DEFAULT_ENS_NETWORK_MAP } from './EnsController.js'; import type { EnsControllerState, EnsControllerMessenger, -} from './EnsController'; +} from './EnsController.js'; const defaultState: EnsControllerState = { ensEntries: {}, diff --git a/packages/ens-controller/src/EnsController.ts b/packages/ens-controller/src/EnsController.ts index 9d974bce5be..ef9a68c9f78 100644 --- a/packages/ens-controller/src/EnsController.ts +++ b/packages/ens-controller/src/EnsController.ts @@ -25,7 +25,7 @@ import type { Hex } from '@metamask/utils'; import { createProjectLogger } from '@metamask/utils'; import { toASCII } from 'punycode/punycode.js'; -import type { EnsControllerMethodActions } from './EnsController-method-action-types'; +import type { EnsControllerMethodActions } from './EnsController-method-action-types.js'; const log = createProjectLogger('ens-controller'); @@ -262,7 +262,7 @@ export class EnsController extends BaseController< // TODO Explicitly handle the case where `normalizedEnsName` is `null` // eslint-disable-next-line no-implicit-coercion return !!normalizedEnsName && this.state.ensEntries[chainId] - ? this.state.ensEntries[chainId][normalizedEnsName] || null + ? (this.state.ensEntries[chainId][normalizedEnsName] ?? null) : null; } diff --git a/packages/ens-controller/src/index.ts b/packages/ens-controller/src/index.ts index a2f476a1a05..9b6610d6d88 100644 --- a/packages/ens-controller/src/index.ts +++ b/packages/ens-controller/src/index.ts @@ -1,4 +1,4 @@ -export * from './EnsController'; +export * from './EnsController.js'; export type { EnsControllerResetStateAction, EnsControllerClearAction, @@ -6,4 +6,4 @@ export type { EnsControllerGetAction, EnsControllerSetAction, EnsControllerReverseResolveAddressAction, -} from './EnsController-method-action-types'; +} from './EnsController-method-action-types.js'; From 706c5eb96e2273955ee02fcf8a24b697386cc3e5 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:49:50 +0200 Subject: [PATCH 064/115] ESLint fix and `jest` global import for gas-fee-controller --- .../GasFeeController-method-action-types.ts | 2 +- .../src/GasFeeController.test.ts | 21 ++++++++----------- .../src/GasFeeController.ts | 8 +++---- .../src/determineGasFeeCalculations.test.ts | 8 ++++--- .../src/determineGasFeeCalculations.ts | 4 ++-- .../gas-fee-controller/src/gas-util.test.ts | 4 ++-- packages/gas-fee-controller/src/gas-util.ts | 2 +- packages/gas-fee-controller/src/index.ts | 4 ++-- 8 files changed, 26 insertions(+), 27 deletions(-) diff --git a/packages/gas-fee-controller/src/GasFeeController-method-action-types.ts b/packages/gas-fee-controller/src/GasFeeController-method-action-types.ts index 000c9b6a77e..4f50d3ce9a4 100644 --- a/packages/gas-fee-controller/src/GasFeeController-method-action-types.ts +++ b/packages/gas-fee-controller/src/GasFeeController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { GasFeeController } from './GasFeeController'; +import type { GasFeeController } from './GasFeeController.js'; /** * Resets the polling interval by stopping and restarting polling diff --git a/packages/gas-fee-controller/src/GasFeeController.test.ts b/packages/gas-fee-controller/src/GasFeeController.test.ts index 594330af428..27e4e70281c 100644 --- a/packages/gas-fee-controller/src/GasFeeController.test.ts +++ b/packages/gas-fee-controller/src/GasFeeController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { ChainId, @@ -22,22 +23,22 @@ import nock from 'nock'; import { buildCustomNetworkConfiguration, buildCustomRpcEndpoint, -} from '../../network-controller/tests/helpers'; -import determineGasFeeCalculations from './determineGasFeeCalculations'; +} from '../../network-controller/tests/helpers.js'; +import determineGasFeeCalculations from './determineGasFeeCalculations.js'; import { fetchGasEstimates, fetchLegacyGasPriceEstimates, fetchEthGasPriceEstimate, calculateTimeEstimate, -} from './gas-util'; -import { GAS_ESTIMATE_TYPES, GasFeeController } from './GasFeeController'; +} from './gas-util.js'; +import { GAS_ESTIMATE_TYPES, GasFeeController } from './GasFeeController.js'; import type { GasFeeMessenger, GasFeeState, GasFeeStateEthGasPrice, GasFeeStateFeeMarket, GasFeeStateLegacy, -} from './GasFeeController'; +} from './GasFeeController.js'; jest.mock('./determineGasFeeCalculations'); @@ -353,7 +354,7 @@ describe('GasFeeController', () => { gasFeeController.destroy(); const { blockTracker } = networkController.getProviderAndBlockTracker(); // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/no-floating-promises + blockTracker?.destroy(); jest.useRealTimers(); }); @@ -612,9 +613,7 @@ describe('GasFeeController', () => { }, }); - // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/await-thenable - await gasFeeController.enableNonRPCGasFeeApis(); + gasFeeController.enableNonRPCGasFeeApis(); expect(gasFeeController.state.nonRPCGasFeeApisDisabled).toBe(false); }); @@ -629,9 +628,7 @@ describe('GasFeeController', () => { }, }); - // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/await-thenable - await gasFeeController.disableNonRPCGasFeeApis(); + gasFeeController.disableNonRPCGasFeeApis(); expect(gasFeeController.state.nonRPCGasFeeApisDisabled).toBe(true); }); diff --git a/packages/gas-fee-controller/src/GasFeeController.ts b/packages/gas-fee-controller/src/GasFeeController.ts index bacebdd786f..9e74f2e0680 100644 --- a/packages/gas-fee-controller/src/GasFeeController.ts +++ b/packages/gas-fee-controller/src/GasFeeController.ts @@ -23,14 +23,14 @@ import { StaticIntervalPollingController } from '@metamask/polling-controller'; import type { Hex } from '@metamask/utils'; import { v1 as random } from 'uuid'; -import determineGasFeeCalculations from './determineGasFeeCalculations'; +import determineGasFeeCalculations from './determineGasFeeCalculations.js'; import { fetchGasEstimates, fetchLegacyGasPriceEstimates, fetchEthGasPriceEstimate, calculateTimeEstimate, -} from './gas-util'; -import type { GasFeeControllerMethodActions } from './GasFeeController-method-action-types'; +} from './gas-util.js'; +import type { GasFeeControllerMethodActions } from './GasFeeController-method-action-types.js'; export const LEGACY_GAS_PRICES_API_URL = `https://api.metaswap.codefi.network/gasPrices`; @@ -426,7 +426,7 @@ export class GasFeeController extends StaticIntervalPollingController { await this.#onNetworkControllerDidChange(networkControllerState); }, diff --git a/packages/gas-fee-controller/src/determineGasFeeCalculations.test.ts b/packages/gas-fee-controller/src/determineGasFeeCalculations.test.ts index a8df42bc14c..c0b73b49aea 100644 --- a/packages/gas-fee-controller/src/determineGasFeeCalculations.test.ts +++ b/packages/gas-fee-controller/src/determineGasFeeCalculations.test.ts @@ -1,17 +1,19 @@ -import determineGasFeeCalculations from './determineGasFeeCalculations'; +import { jest } from '@jest/globals'; + +import determineGasFeeCalculations from './determineGasFeeCalculations.js'; import { fetchGasEstimates, fetchLegacyGasPriceEstimates, fetchEthGasPriceEstimate, calculateTimeEstimate, -} from './gas-util'; +} from './gas-util.js'; import type { unknownString, GasFeeEstimates, LegacyGasPriceEstimate, EthGasPriceEstimate, EstimatedGasFeeTimeBounds, -} from './GasFeeController'; +} from './GasFeeController.js'; jest.mock('./gas-util'); diff --git a/packages/gas-fee-controller/src/determineGasFeeCalculations.ts b/packages/gas-fee-controller/src/determineGasFeeCalculations.ts index b93b86e9bb8..3d8382b451b 100644 --- a/packages/gas-fee-controller/src/determineGasFeeCalculations.ts +++ b/packages/gas-fee-controller/src/determineGasFeeCalculations.ts @@ -4,8 +4,8 @@ import type { GasFeeEstimates, GasFeeState as GasFeeCalculations, LegacyGasPriceEstimate, -} from './GasFeeController'; -import { GAS_ESTIMATE_TYPES } from './GasFeeController'; +} from './GasFeeController.js'; +import { GAS_ESTIMATE_TYPES } from './GasFeeController.js'; type DetermineGasFeeCalculationsRequest = { isEIP1559Compatible: boolean; diff --git a/packages/gas-fee-controller/src/gas-util.test.ts b/packages/gas-fee-controller/src/gas-util.test.ts index baea4369289..aaea5d2370b 100644 --- a/packages/gas-fee-controller/src/gas-util.test.ts +++ b/packages/gas-fee-controller/src/gas-util.test.ts @@ -5,8 +5,8 @@ import { normalizeGWEIDecimalNumbers, fetchGasEstimates, calculateTimeEstimate, -} from './gas-util'; -import type { GasFeeEstimates } from './GasFeeController'; +} from './gas-util.js'; +import type { GasFeeEstimates } from './GasFeeController.js'; const mockEIP1559ApiResponses: GasFeeEstimates[] = [ { diff --git a/packages/gas-fee-controller/src/gas-util.ts b/packages/gas-fee-controller/src/gas-util.ts index 17a242ac8be..adabe9fbf23 100644 --- a/packages/gas-fee-controller/src/gas-util.ts +++ b/packages/gas-fee-controller/src/gas-util.ts @@ -13,7 +13,7 @@ import type { EstimatedGasFeeTimeBounds, unknownString, LegacyGasPriceEstimate, -} from './GasFeeController'; +} from './GasFeeController.js'; const makeClientIdHeader = (clientId: string) => ({ 'X-Client-Id': clientId }); diff --git a/packages/gas-fee-controller/src/index.ts b/packages/gas-fee-controller/src/index.ts index 073a4b4b74a..20a4abf17e0 100644 --- a/packages/gas-fee-controller/src/index.ts +++ b/packages/gas-fee-controller/src/index.ts @@ -1,4 +1,4 @@ -export * from './GasFeeController'; +export * from './GasFeeController.js'; export type { GasFeeControllerResetPollingAction, GasFeeControllerFetchGasFeeEstimatesAction, @@ -8,4 +8,4 @@ export type { GasFeeControllerGetTimeEstimateAction, GasFeeControllerEnableNonRPCGasFeeApisAction, GasFeeControllerDisableNonRPCGasFeeApisAction, -} from './GasFeeController-method-action-types'; +} from './GasFeeController-method-action-types.js'; From 29eebf1873f8f036c00bebeacc0d12cf6f91a9b8 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:49:54 +0200 Subject: [PATCH 065/115] ESLint fix and `jest` global import for polling-controller --- .../phishing-controller/src/BulkTokenScan.test.ts | 1 + packages/phishing-controller/src/CacheManager.test.ts | 5 +++-- .../src/PhishingController.test.ts | 1 + .../phishing-controller/src/PhishingDetector.test.ts | 11 ++++++----- packages/phishing-controller/src/utils.test.ts | 9 +++++---- .../src/AbstractPollingController.ts | 2 +- .../src/BlockTrackerPollingController.test.ts | 5 +++-- .../src/BlockTrackerPollingController.ts | 8 ++++---- .../src/StaticIntervalPollingController.test.ts | 5 +++-- .../src/StaticIntervalPollingController.ts | 4 ++-- packages/polling-controller/src/index.ts | 6 +++--- 11 files changed, 32 insertions(+), 25 deletions(-) diff --git a/packages/phishing-controller/src/BulkTokenScan.test.ts b/packages/phishing-controller/src/BulkTokenScan.test.ts index 22cc11cd3cc..83f01e3b738 100644 --- a/packages/phishing-controller/src/BulkTokenScan.test.ts +++ b/packages/phishing-controller/src/BulkTokenScan.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { safelyExecuteWithTimeout } from '@metamask/controller-utils'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { diff --git a/packages/phishing-controller/src/CacheManager.test.ts b/packages/phishing-controller/src/CacheManager.test.ts index 3f0d3fe42e4..eb56a98cd64 100644 --- a/packages/phishing-controller/src/CacheManager.test.ts +++ b/packages/phishing-controller/src/CacheManager.test.ts @@ -1,5 +1,6 @@ -import { CacheManager } from './CacheManager'; -import * as utils from './utils'; +import { jest } from '@jest/globals'; +import { CacheManager } from './CacheManager.js'; +import * as utils from './utils.js'; describe('CacheManager', () => { let updateStateSpy: jest.Mock; diff --git a/packages/phishing-controller/src/PhishingController.test.ts b/packages/phishing-controller/src/PhishingController.test.ts index fac3cbc3703..648e986b76f 100644 --- a/packages/phishing-controller/src/PhishingController.test.ts +++ b/packages/phishing-controller/src/PhishingController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { AddressBookControllerState } from '@metamask/address-book-controller'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; diff --git a/packages/phishing-controller/src/PhishingDetector.test.ts b/packages/phishing-controller/src/PhishingDetector.test.ts index 51edd5ed482..eca8da2c400 100644 --- a/packages/phishing-controller/src/PhishingDetector.test.ts +++ b/packages/phishing-controller/src/PhishingDetector.test.ts @@ -1,8 +1,9 @@ -import { PhishingDetector } from './PhishingDetector'; -import type { PhishingDetectorOptions } from './PhishingDetector'; -import { formatHostnameToUrl } from './tests/utils'; -import { PhishingDetectorResultType } from './types'; -import { sha256Hash } from './utils'; +import { jest } from '@jest/globals'; +import { PhishingDetector } from './PhishingDetector.js'; +import type { PhishingDetectorOptions } from './PhishingDetector.js'; +import { formatHostnameToUrl } from './tests/utils.js'; +import { PhishingDetectorResultType } from './types.js'; +import { sha256Hash } from './utils.js'; describe('PhishingDetector', () => { describe('constructor', () => { diff --git a/packages/phishing-controller/src/utils.test.ts b/packages/phishing-controller/src/utils.test.ts index ca66a68d30b..0987861e84e 100644 --- a/packages/phishing-controller/src/utils.test.ts +++ b/packages/phishing-controller/src/utils.test.ts @@ -1,6 +1,7 @@ -import { ListKeys, ListNames } from './PhishingController'; -import type { PhishingListState } from './PhishingController'; -import type { TokenScanResultType } from './types'; +import { jest } from '@jest/globals'; +import { ListKeys, ListNames } from './PhishingController.js'; +import type { PhishingListState } from './PhishingController.js'; +import type { TokenScanResultType } from './types.js'; import { applyDiffs, buildCacheKey, @@ -22,7 +23,7 @@ import { sha256Hash, splitCacheHits, validateConfig, -} from './utils'; +} from './utils.js'; const exampleBlockedUrl = 'https://example-blocked-website.com'; const exampleBlockedUrlOne = 'https://another-example-blocked-website.com'; diff --git a/packages/polling-controller/src/AbstractPollingController.ts b/packages/polling-controller/src/AbstractPollingController.ts index 3957ccb3f97..e87f4d27177 100644 --- a/packages/polling-controller/src/AbstractPollingController.ts +++ b/packages/polling-controller/src/AbstractPollingController.ts @@ -6,7 +6,7 @@ import type { Constructor, PollingTokenSetId, IPollingController, -} from './types'; +} from './types.js'; export const getKey = (input: PollingInput): PollingTokenSetId => stringify(input); diff --git a/packages/polling-controller/src/BlockTrackerPollingController.test.ts b/packages/polling-controller/src/BlockTrackerPollingController.test.ts index 803ef553075..b839746e1a7 100644 --- a/packages/polling-controller/src/BlockTrackerPollingController.test.ts +++ b/packages/polling-controller/src/BlockTrackerPollingController.test.ts @@ -1,10 +1,11 @@ +import { jest } from '@jest/globals'; import { MOCK_ANY_NAMESPACE, Messenger } from '@metamask/messenger'; import type { MockAnyNamespace } from '@metamask/messenger'; import type { NetworkClient } from '@metamask/network-controller'; import EventEmitter from 'events'; -import type { BlockTrackerPollingInput } from './BlockTrackerPollingController'; -import { BlockTrackerPollingController } from './BlockTrackerPollingController'; +import type { BlockTrackerPollingInput } from './BlockTrackerPollingController.js'; +import { BlockTrackerPollingController } from './BlockTrackerPollingController.js'; const createExecutePollMock = () => { const executePollMock = jest.fn().mockImplementation(async () => { diff --git a/packages/polling-controller/src/BlockTrackerPollingController.ts b/packages/polling-controller/src/BlockTrackerPollingController.ts index c01762a4ed3..70cecbc283b 100644 --- a/packages/polling-controller/src/BlockTrackerPollingController.ts +++ b/packages/polling-controller/src/BlockTrackerPollingController.ts @@ -8,8 +8,8 @@ import type { Json } from '@metamask/utils'; import { AbstractPollingControllerBaseMixin, getKey, -} from './AbstractPollingController'; -import type { Constructor, PollingTokenSetId } from './types'; +} from './AbstractPollingController.js'; +import type { Constructor, PollingTokenSetId } from './types.js'; /** * The minimum input required to start polling for a {@link BlockTrackerPollingController}. @@ -54,7 +54,7 @@ function BlockTrackerPollingControllerMixin< if (networkClient) { const updateOnNewBlock = this._executePoll.bind(this, input); // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/no-misused-promises + networkClient.blockTracker.addListener('latest', updateOnNewBlock); this.#activeListeners[key] = updateOnNewBlock; } else { @@ -74,7 +74,7 @@ function BlockTrackerPollingControllerMixin< const listener = this.#activeListeners[key]; if (listener) { // TODO: Either fix this lint violation or explain why it's necessary to ignore. - // eslint-disable-next-line @typescript-eslint/no-misused-promises + networkClient.blockTracker.removeListener('latest', listener); delete this.#activeListeners[key]; } diff --git a/packages/polling-controller/src/StaticIntervalPollingController.test.ts b/packages/polling-controller/src/StaticIntervalPollingController.test.ts index 1f83ac413c1..c0ce64e05d1 100644 --- a/packages/polling-controller/src/StaticIntervalPollingController.test.ts +++ b/packages/polling-controller/src/StaticIntervalPollingController.test.ts @@ -1,9 +1,10 @@ +import { jest } from '@jest/globals'; import { MOCK_ANY_NAMESPACE, Messenger } from '@metamask/messenger'; import type { MockAnyNamespace } from '@metamask/messenger'; import { createDeferredPromise } from '@metamask/utils'; -import { jestAdvanceTime } from '../../../tests/helpers'; -import { StaticIntervalPollingController } from './StaticIntervalPollingController'; +import { jestAdvanceTime } from '../../../tests/helpers.js'; +import { StaticIntervalPollingController } from './StaticIntervalPollingController.js'; const TICK_TIME = 5; diff --git a/packages/polling-controller/src/StaticIntervalPollingController.ts b/packages/polling-controller/src/StaticIntervalPollingController.ts index dce38ce9195..4f57b6f760d 100644 --- a/packages/polling-controller/src/StaticIntervalPollingController.ts +++ b/packages/polling-controller/src/StaticIntervalPollingController.ts @@ -4,12 +4,12 @@ import type { Json } from '@metamask/utils'; import { AbstractPollingControllerBaseMixin, getKey, -} from './AbstractPollingController'; +} from './AbstractPollingController.js'; import type { Constructor, IPollingController, PollingTokenSetId, -} from './types'; +} from './types.js'; /** * StaticIntervalPollingControllerMixin diff --git a/packages/polling-controller/src/index.ts b/packages/polling-controller/src/index.ts index ba1758c443b..8ebd73b27fd 100644 --- a/packages/polling-controller/src/index.ts +++ b/packages/polling-controller/src/index.ts @@ -1,11 +1,11 @@ export { BlockTrackerPollingControllerOnly, BlockTrackerPollingController, -} from './BlockTrackerPollingController'; +} from './BlockTrackerPollingController.js'; export { StaticIntervalPollingControllerOnly, StaticIntervalPollingController, -} from './StaticIntervalPollingController'; +} from './StaticIntervalPollingController.js'; -export type { IPollingController } from './types'; +export type { IPollingController } from './types.js'; From 46ef8c326e7421eaff79ff3b96edd0b4a7eae8ad Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:49:54 +0200 Subject: [PATCH 066/115] ESLint fix and `jest` global import for phishing-controller --- .../src/BulkTokenScan.test.ts | 14 +++++----- .../src/CacheManager.test.ts | 1 - .../phishing-controller/src/CacheManager.ts | 2 +- .../phishing-controller/src/PathTrie.test.ts | 4 +-- packages/phishing-controller/src/PathTrie.ts | 2 +- .../PhishingController-method-action-types.ts | 2 +- .../src/PhishingController.test.ts | 27 ++++++++++--------- .../src/PhishingController.ts | 24 ++++++++++------- .../src/PhishingDetector.test.ts | 1 - .../src/PhishingDetector.ts | 10 +++---- .../src/address-poisoning.test.ts | 2 +- .../src/address-poisoning.ts | 2 +- packages/phishing-controller/src/index.ts | 22 +++++++-------- .../phishing-controller/src/utils.test.ts | 1 - packages/phishing-controller/src/utils.ts | 12 ++++----- 15 files changed, 65 insertions(+), 61 deletions(-) diff --git a/packages/phishing-controller/src/BulkTokenScan.test.ts b/packages/phishing-controller/src/BulkTokenScan.test.ts index 83f01e3b738..a64a0388b3d 100644 --- a/packages/phishing-controller/src/BulkTokenScan.test.ts +++ b/packages/phishing-controller/src/BulkTokenScan.test.ts @@ -6,19 +6,19 @@ import type { MessengerEvents, MockAnyNamespace, } from '@metamask/messenger'; -import nock, { cleanAll } from 'nock'; +import nock from 'nock'; import { PhishingController, SECURITY_ALERTS_BASE_URL, TOKEN_BULK_SCANNING_ENDPOINT, -} from './PhishingController'; +} from './PhishingController.js'; import type { PhishingControllerMessenger, PhishingControllerOptions, -} from './PhishingController'; -import { TokenScanResultType } from './types'; -import type { BulkTokenScanRequest, TokenScanApiResponse } from './types'; +} from './PhishingController.js'; +import { TokenScanResultType } from './types.js'; +import type { BulkTokenScanRequest, TokenScanApiResponse } from './types.js'; jest.mock('@metamask/controller-utils', () => ({ ...jest.requireActual('@metamask/controller-utils'), @@ -118,7 +118,7 @@ describe('PhishingController - Bulk Token Scanning', () => { }); afterEach(() => { - cleanAll(); + nock.cleanAll(); consoleErrorSpy.mockRestore(); consoleWarnSpy.mockRestore(); }); @@ -197,7 +197,7 @@ describe('PhishingController - Bulk Token Scanning', () => { expect(consoleWarnSpy).toHaveBeenCalledWith( 'Unsupported chain ID: 0x64', ); - cleanAll(); + nock.cleanAll(); }); it('should handle case insensitive chainId', async () => { diff --git a/packages/phishing-controller/src/CacheManager.test.ts b/packages/phishing-controller/src/CacheManager.test.ts index eb56a98cd64..5bbf8c92cb5 100644 --- a/packages/phishing-controller/src/CacheManager.test.ts +++ b/packages/phishing-controller/src/CacheManager.test.ts @@ -1,4 +1,3 @@ -import { jest } from '@jest/globals'; import { CacheManager } from './CacheManager.js'; import * as utils from './utils.js'; diff --git a/packages/phishing-controller/src/CacheManager.ts b/packages/phishing-controller/src/CacheManager.ts index bf40dd1e2df..9dd4b256353 100644 --- a/packages/phishing-controller/src/CacheManager.ts +++ b/packages/phishing-controller/src/CacheManager.ts @@ -1,4 +1,4 @@ -import { fetchTimeNow } from './utils'; +import { fetchTimeNow } from './utils.js'; /** * Generic cache entry type that wraps the data with a timestamp diff --git a/packages/phishing-controller/src/PathTrie.test.ts b/packages/phishing-controller/src/PathTrie.test.ts index 3169a7f1cfa..55d3f6567a8 100644 --- a/packages/phishing-controller/src/PathTrie.test.ts +++ b/packages/phishing-controller/src/PathTrie.test.ts @@ -5,8 +5,8 @@ import { insertToTrie, isTerminal, matchedPathPrefix, -} from './PathTrie'; -import type { PathTrie } from './PathTrie'; +} from './PathTrie.js'; +import type { PathTrie } from './PathTrie.js'; const emptyPathTrie: PathTrie = {}; diff --git a/packages/phishing-controller/src/PathTrie.ts b/packages/phishing-controller/src/PathTrie.ts index a500de3a8f2..8d435206c68 100644 --- a/packages/phishing-controller/src/PathTrie.ts +++ b/packages/phishing-controller/src/PathTrie.ts @@ -1,4 +1,4 @@ -import { getHostnameAndPathComponents } from './utils'; +import { getHostnameAndPathComponents } from './utils.js'; export type PathNode = { [key: string]: PathNode; diff --git a/packages/phishing-controller/src/PhishingController-method-action-types.ts b/packages/phishing-controller/src/PhishingController-method-action-types.ts index 59e7070b312..cfd36b561ed 100644 --- a/packages/phishing-controller/src/PhishingController-method-action-types.ts +++ b/packages/phishing-controller/src/PhishingController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { PhishingController } from './PhishingController'; +import type { PhishingController } from './PhishingController.js'; /** * Finds known recipient addresses that look like an address poisoning match. diff --git a/packages/phishing-controller/src/PhishingController.test.ts b/packages/phishing-controller/src/PhishingController.test.ts index 648e986b76f..28542e297f9 100644 --- a/packages/phishing-controller/src/PhishingController.test.ts +++ b/packages/phishing-controller/src/PhishingController.test.ts @@ -10,7 +10,7 @@ import type { import { TransactionStatus } from '@metamask/transaction-controller'; import type { TransactionControllerState } from '@metamask/transaction-controller'; import { strict as assert } from 'assert'; -import nock, { cleanAll, isDone, pendingMocks } from 'nock'; +import nock from 'nock'; import { ListNames, @@ -26,27 +26,30 @@ import { SECURITY_ALERTS_BASE_URL, ADDRESS_SCAN_ENDPOINT, APPROVALS_ENDPOINT, -} from './PhishingController'; +} from './PhishingController.js'; import type { PhishingControllerOptions, BulkPhishingDetectionScanResponse, PhishingControllerMessenger, -} from './PhishingController'; +} from './PhishingController.js'; import { createMockStateChangePayload, createMockTransaction, formatHostnameToUrl, TEST_ADDRESSES, -} from './tests/utils'; -import type { PhishingDetectionScanResult, AddressScanResult } from './types'; +} from './tests/utils.js'; +import type { + PhishingDetectionScanResult, + AddressScanResult, +} from './types.js'; import { PhishingDetectorResultType, RecommendedAction, AddressScanResultType, ApprovalResultType, ApprovalFeatureType, -} from './types'; -import { getHostnameFromUrl } from './utils'; +} from './types.js'; +import { getHostnameFromUrl } from './utils.js'; const controllerName = 'PhishingController'; @@ -188,7 +191,7 @@ function getPhishingController(options?: Partial): { describe('PhishingController', () => { afterEach(() => { jest.useRealTimers(); - cleanAll(); + nock.cleanAll(); }); it('should have no default phishing lists', () => { @@ -580,7 +583,7 @@ describe('PhishingController', () => { }, }); - cleanAll(); + nock.cleanAll(); nock(PHISHING_CONFIG_BASE_URL) .get(METAMASK_STALELIST_FILE) .reply(200, { @@ -2479,7 +2482,7 @@ describe('PhishingController', () => { describe('PhishingController - isBlockedRequest', () => { afterEach(() => { - cleanAll(); + nock.cleanAll(); }); it('should return false if c2DomainBlocklist is not defined or empty', async () => { @@ -3673,7 +3676,7 @@ describe('PhishingController', () => { label: '', }); expect(scope.isDone()).toBe(false); - cleanAll(); + nock.cleanAll(); }); it('will normalize address to lowercase', async () => { @@ -3980,7 +3983,7 @@ describe('URL Scan Cache', () => { }); afterEach(() => { jest.useRealTimers(); - cleanAll(); + nock.cleanAll(); }); it('should cache scan results and return them on subsequent calls', async () => { diff --git a/packages/phishing-controller/src/PhishingController.ts b/packages/phishing-controller/src/PhishingController.ts index ee48f86c228..02da6b89e2f 100644 --- a/packages/phishing-controller/src/PhishingController.ts +++ b/packages/phishing-controller/src/PhishingController.ts @@ -25,22 +25,26 @@ import { TransactionStatus } from '@metamask/transaction-controller'; import type { Patch } from 'immer'; import { toASCII } from 'punycode/punycode.js'; -import { findSimilarAddresses } from './address-poisoning'; -import { CacheManager } from './CacheManager'; -import type { CacheEntry } from './CacheManager'; -import { convertListToTrie, insertToTrie, matchedPathPrefix } from './PathTrie'; -import type { PathTrie } from './PathTrie'; +import { findSimilarAddresses } from './address-poisoning.js'; +import { CacheManager } from './CacheManager.js'; +import type { CacheEntry } from './CacheManager.js'; +import { + convertListToTrie, + insertToTrie, + matchedPathPrefix, +} from './PathTrie.js'; +import type { PathTrie } from './PathTrie.js'; import type { PhishingControllerMaybeUpdateStateAction, PhishingControllerMethodActions, PhishingControllerTestOriginAction, -} from './PhishingController-method-action-types'; -import { PhishingDetector } from './PhishingDetector'; +} from './PhishingController-method-action-types.js'; +import { PhishingDetector } from './PhishingDetector.js'; import { PhishingDetectorResultType, RecommendedAction, AddressScanResultType, -} from './types'; +} from './types.js'; import type { PhishingDetectorResult, PhishingDetectionScanResult, @@ -52,7 +56,7 @@ import type { AddressScanResult, SimilarAddressMatch, ApprovalsResponse, -} from './types'; +} from './types.js'; import { applyDiffs, fetchTimeNow, @@ -67,7 +71,7 @@ import { isAddressScanSupportedChain, isApprovalSupportedChain, isTokenScanSupportedChain, -} from './utils'; +} from './utils.js'; export const PHISHING_CONFIG_BASE_URL = 'https://phishing-detection.api.cx.metamask.io'; diff --git a/packages/phishing-controller/src/PhishingDetector.test.ts b/packages/phishing-controller/src/PhishingDetector.test.ts index eca8da2c400..8736b47c8fe 100644 --- a/packages/phishing-controller/src/PhishingDetector.test.ts +++ b/packages/phishing-controller/src/PhishingDetector.test.ts @@ -1,4 +1,3 @@ -import { jest } from '@jest/globals'; import { PhishingDetector } from './PhishingDetector.js'; import type { PhishingDetectorOptions } from './PhishingDetector.js'; import { formatHostnameToUrl } from './tests/utils.js'; diff --git a/packages/phishing-controller/src/PhishingDetector.ts b/packages/phishing-controller/src/PhishingDetector.ts index d94e1044b8b..b6064b7d3da 100644 --- a/packages/phishing-controller/src/PhishingDetector.ts +++ b/packages/phishing-controller/src/PhishingDetector.ts @@ -1,9 +1,9 @@ import { distance } from 'fastest-levenshtein'; -import { matchedPathPrefix } from './PathTrie'; -import type { PathTrie } from './PathTrie'; -import { PhishingDetectorResultType } from './types'; -import type { PhishingDetectorResult } from './types'; +import { matchedPathPrefix } from './PathTrie.js'; +import type { PathTrie } from './PathTrie.js'; +import { PhishingDetectorResultType } from './types.js'; +import type { PhishingDetectorResult } from './types.js'; import { domainPartsToDomain, domainPartsToFuzzyForm, @@ -14,7 +14,7 @@ import { matchPartsAgainstList, processConfigs, sha256Hash, -} from './utils'; +} from './utils.js'; export type LegacyPhishingDetectorList = { whitelist?: string[]; diff --git a/packages/phishing-controller/src/address-poisoning.test.ts b/packages/phishing-controller/src/address-poisoning.test.ts index cbf08b3ef62..cd89b4b2b40 100644 --- a/packages/phishing-controller/src/address-poisoning.test.ts +++ b/packages/phishing-controller/src/address-poisoning.test.ts @@ -1,4 +1,4 @@ -import { findSimilarAddresses } from './address-poisoning'; +import { findSimilarAddresses } from './address-poisoning.js'; function getNumberRange(start: number, end: number): number[] { return Array.from({ length: end - start + 1 }, (_, index) => start + index); diff --git a/packages/phishing-controller/src/address-poisoning.ts b/packages/phishing-controller/src/address-poisoning.ts index 89adf2953c2..63bbdbef205 100644 --- a/packages/phishing-controller/src/address-poisoning.ts +++ b/packages/phishing-controller/src/address-poisoning.ts @@ -1,6 +1,6 @@ import { isValidHexAddress } from '@metamask/controller-utils'; -import type { SimilarAddressMatch, SimilarityOptions } from './types'; +import type { SimilarAddressMatch, SimilarityOptions } from './types.js'; const DEFAULT_PREFIX_LEN = 4; const DEFAULT_SUFFIX_LEN = 4; diff --git a/packages/phishing-controller/src/index.ts b/packages/phishing-controller/src/index.ts index bb08ca9bf5b..0f963ea60c4 100644 --- a/packages/phishing-controller/src/index.ts +++ b/packages/phishing-controller/src/index.ts @@ -1,13 +1,13 @@ -export * from './PhishingController'; -export { findSimilarAddresses } from './address-poisoning'; +export * from './PhishingController.js'; +export { findSimilarAddresses } from './address-poisoning.js'; export type { LegacyPhishingDetectorList, PhishingDetectorList, FuzzyTolerance, PhishingDetectorOptions, PhishingDetectorConfiguration, -} from './PhishingDetector'; -export { PhishingDetector } from './PhishingDetector'; +} from './PhishingDetector.js'; +export { PhishingDetector } from './PhishingDetector.js'; export type { PhishingDetectionScanResult, AddressScanResult, @@ -21,22 +21,22 @@ export type { Exposure, Spender, ApprovalFeature, -} from './types'; -export type { TokenScanCacheData } from './types'; -export { TokenScanResultType } from './types'; +} from './types.js'; +export type { TokenScanCacheData } from './types.js'; +export { TokenScanResultType } from './types.js'; export { PhishingDetectorResultType, RecommendedAction, AddressScanResultType, ApprovalResultType, ApprovalFeatureType, -} from './types'; -export type { CacheEntry } from './CacheManager'; +} from './types.js'; +export type { CacheEntry } from './CacheManager.js'; export { PHISHING_DETECTION_PATH_BASED_ROOT_DOMAINS, getPhishingDetectionScanUrlParam, isPhishingDetectionPathBasedHostname, -} from './utils'; +} from './utils.js'; export type { PhishingControllerMaybeUpdateStateAction, @@ -49,4 +49,4 @@ export type { PhishingControllerScanAddressAction, PhishingControllerGetApprovalsAction, PhishingControllerCheckAddressPoisoningAction, -} from './PhishingController-method-action-types'; +} from './PhishingController-method-action-types.js'; diff --git a/packages/phishing-controller/src/utils.test.ts b/packages/phishing-controller/src/utils.test.ts index 0987861e84e..14330fbdf1e 100644 --- a/packages/phishing-controller/src/utils.test.ts +++ b/packages/phishing-controller/src/utils.test.ts @@ -1,4 +1,3 @@ -import { jest } from '@jest/globals'; import { ListKeys, ListNames } from './PhishingController.js'; import type { PhishingListState } from './PhishingController.js'; import type { TokenScanResultType } from './types.js'; diff --git a/packages/phishing-controller/src/utils.ts b/packages/phishing-controller/src/utils.ts index a654718887b..57dd71ab5b1 100644 --- a/packages/phishing-controller/src/utils.ts +++ b/packages/phishing-controller/src/utils.ts @@ -1,26 +1,26 @@ import { bytesToHex } from '@noble/hashes/utils'; import { sha256 } from 'ethereum-cryptography/sha256'; -import { deleteFromTrie, insertToTrie, deepCopyPathTrie } from './PathTrie'; -import type { Hotlist, PhishingListState } from './PhishingController'; -import { ListKeys, phishingListKeyNameMap } from './PhishingController'; +import { deleteFromTrie, insertToTrie, deepCopyPathTrie } from './PathTrie.js'; +import type { Hotlist, PhishingListState } from './PhishingController.js'; +import { ListKeys, phishingListKeyNameMap } from './PhishingController.js'; import type { PhishingDetectorList, PhishingDetectorConfiguration, -} from './PhishingDetector'; +} from './PhishingDetector.js'; import { ADDRESS_SCAN_SUPPORTED_CHAINS, APPROVAL_SUPPORTED_CHAINS, DEFAULT_CHAIN_ID_TO_NAME, TOKEN_SCAN_SUPPORTED_CHAINS, -} from './types'; +} from './types.js'; import type { AddressScanSupportedChain, ApprovalSupportedChain, TokenScanCacheData, TokenScanResult, TokenScanSupportedChain, -} from './types'; +} from './types.js'; const DEFAULT_TOLERANCE = 3; From d2817f5addd87a54914a3dc07d34b6c99bcec5db Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:49:58 +0200 Subject: [PATCH 067/115] ESLint fix and `jest` global import for selected-network-controller --- .../SelectedNetworkController-method-action-types.ts | 2 +- .../src/SelectedNetworkController.ts | 2 +- .../src/SelectedNetworkMiddleware.ts | 4 ++-- packages/selected-network-controller/src/index.ts | 10 +++++----- .../tests/SelectedNetworkController.test.ts | 5 +++-- .../tests/SelectedNetworkMiddleware.test.ts | 9 +++++---- 6 files changed, 17 insertions(+), 15 deletions(-) diff --git a/packages/selected-network-controller/src/SelectedNetworkController-method-action-types.ts b/packages/selected-network-controller/src/SelectedNetworkController-method-action-types.ts index 5798ce1b434..cc36282b9f2 100644 --- a/packages/selected-network-controller/src/SelectedNetworkController-method-action-types.ts +++ b/packages/selected-network-controller/src/SelectedNetworkController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { SelectedNetworkController } from './SelectedNetworkController'; +import type { SelectedNetworkController } from './SelectedNetworkController.js'; export type SelectedNetworkControllerSetNetworkClientIdForDomainAction = { type: `SelectedNetworkController:setNetworkClientIdForDomain`; diff --git a/packages/selected-network-controller/src/SelectedNetworkController.ts b/packages/selected-network-controller/src/SelectedNetworkController.ts index bc2e5093236..09d5db907c1 100644 --- a/packages/selected-network-controller/src/SelectedNetworkController.ts +++ b/packages/selected-network-controller/src/SelectedNetworkController.ts @@ -24,7 +24,7 @@ import { } from '@metamask/swappable-obj-proxy'; import type { Hex } from '@metamask/utils'; -import type { SelectedNetworkControllerMethodActions } from './SelectedNetworkController-method-action-types'; +import type { SelectedNetworkControllerMethodActions } from './SelectedNetworkController-method-action-types.js'; const controllerName = 'SelectedNetworkController'; diff --git a/packages/selected-network-controller/src/SelectedNetworkMiddleware.ts b/packages/selected-network-controller/src/SelectedNetworkMiddleware.ts index eb84a503e98..62bcdcc70b9 100644 --- a/packages/selected-network-controller/src/SelectedNetworkMiddleware.ts +++ b/packages/selected-network-controller/src/SelectedNetworkMiddleware.ts @@ -2,8 +2,8 @@ import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine'; import type { NetworkClientId } from '@metamask/network-controller'; import type { Json, JsonRpcParams, JsonRpcRequest } from '@metamask/utils'; -import type { SelectedNetworkControllerMessenger } from './SelectedNetworkController'; -import { SelectedNetworkControllerActionTypes } from './SelectedNetworkController'; +import type { SelectedNetworkControllerMessenger } from './SelectedNetworkController.js'; +import { SelectedNetworkControllerActionTypes } from './SelectedNetworkController.js'; export type SelectedNetworkMiddlewareJsonRpcRequest = JsonRpcRequest & { networkClientId?: NetworkClientId; diff --git a/packages/selected-network-controller/src/index.ts b/packages/selected-network-controller/src/index.ts index f07208bb983..946c94f531e 100644 --- a/packages/selected-network-controller/src/index.ts +++ b/packages/selected-network-controller/src/index.ts @@ -9,17 +9,17 @@ export type { SelectedNetworkControllerOptions, NetworkProxy, Domain, -} from './SelectedNetworkController'; +} from './SelectedNetworkController.js'; export { SelectedNetworkControllerActionTypes, SelectedNetworkControllerEventTypes, SelectedNetworkController, METAMASK_DOMAIN, -} from './SelectedNetworkController'; +} from './SelectedNetworkController.js'; export type { SelectedNetworkControllerSetNetworkClientIdForDomainAction, SelectedNetworkControllerGetNetworkClientIdForDomainAction, SelectedNetworkControllerGetProviderAndBlockTrackerAction, -} from './SelectedNetworkController-method-action-types'; -export type { SelectedNetworkMiddlewareJsonRpcRequest } from './SelectedNetworkMiddleware'; -export { createSelectedNetworkMiddleware } from './SelectedNetworkMiddleware'; +} from './SelectedNetworkController-method-action-types.js'; +export type { SelectedNetworkMiddlewareJsonRpcRequest } from './SelectedNetworkMiddleware.js'; +export { createSelectedNetworkMiddleware } from './SelectedNetworkMiddleware.js'; diff --git a/packages/selected-network-controller/tests/SelectedNetworkController.test.ts b/packages/selected-network-controller/tests/SelectedNetworkController.test.ts index f57aeebbb2f..6cc2ca9dc2b 100644 --- a/packages/selected-network-controller/tests/SelectedNetworkController.test.ts +++ b/packages/selected-network-controller/tests/SelectedNetworkController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -25,11 +26,11 @@ import type { Domain, NetworkProxy, SelectedNetworkControllerMessenger, -} from '../src/SelectedNetworkController'; +} from '../src/SelectedNetworkController.js'; import { METAMASK_DOMAIN, SelectedNetworkController, -} from '../src/SelectedNetworkController'; +} from '../src/SelectedNetworkController.js'; const controllerName = 'SelectedNetworkController'; diff --git a/packages/selected-network-controller/tests/SelectedNetworkMiddleware.test.ts b/packages/selected-network-controller/tests/SelectedNetworkMiddleware.test.ts index c57deb36fce..14ded8c5ec6 100644 --- a/packages/selected-network-controller/tests/SelectedNetworkMiddleware.test.ts +++ b/packages/selected-network-controller/tests/SelectedNetworkMiddleware.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { JsonRpcEngine } from '@metamask/json-rpc-engine'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -7,10 +8,10 @@ import type { } from '@metamask/messenger'; import type { JsonRpcResponse } from '@metamask/utils'; -import { SelectedNetworkControllerActionTypes } from '../src/SelectedNetworkController'; -import type { SelectedNetworkControllerMessenger } from '../src/SelectedNetworkController'; -import type { SelectedNetworkMiddlewareJsonRpcRequest } from '../src/SelectedNetworkMiddleware'; -import { createSelectedNetworkMiddleware } from '../src/SelectedNetworkMiddleware'; +import { SelectedNetworkControllerActionTypes } from '../src/SelectedNetworkController.js'; +import type { SelectedNetworkControllerMessenger } from '../src/SelectedNetworkController.js'; +import type { SelectedNetworkMiddlewareJsonRpcRequest } from '../src/SelectedNetworkMiddleware.js'; +import { createSelectedNetworkMiddleware } from '../src/SelectedNetworkMiddleware.js'; type AllSelectedNetworkControllerActions = MessengerActions; From 7d3ba3adfc5e3b4b76d3d1bca3c46063b052c754 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:49:58 +0200 Subject: [PATCH 068/115] ESLint fix and `jest` global import for profile-sync-controller --- ...nticationController-method-action-types.ts | 2 +- .../AuthenticationController.test.ts | 15 ++++---- .../AuthenticationController.ts | 10 +++--- .../__fixtures__/mockServices.ts | 2 +- .../src/controllers/authentication/index.ts | 8 ++--- .../controllers/authentication/mocks/index.ts | 2 +- .../mocks/mockResponses.test.ts | 2 +- .../authentication/mocks/mockResponses.ts | 2 +- .../src/controllers/index.ts | 4 +-- ...erStorageController-method-action-types.ts | 2 +- .../UserStorageController.test.ts | 21 +++++++----- .../user-storage/UserStorageController.ts | 20 +++++------ .../__fixtures__/mockMessenger.ts | 1 + .../user-storage/__fixtures__/mockServices.ts | 6 ++-- .../user-storage/__fixtures__/test-utils.ts | 6 ++-- .../__fixtures__/mockContacts.ts | 7 ++-- .../__fixtures__/test-utils.ts | 3 +- .../controller-integration.test.ts | 13 +++---- .../contact-syncing/controller-integration.ts | 34 +++++++++---------- .../setup-subscriptions.test.ts | 8 +++-- .../contact-syncing/setup-subscriptions.ts | 8 ++--- .../contact-syncing/sync-utils.test.ts | 6 ++-- .../contact-syncing/sync-utils.ts | 2 +- .../user-storage/contact-syncing/types.ts | 6 ++-- .../contact-syncing/utils.test.ts | 9 ++--- .../user-storage/contact-syncing/utils.ts | 4 +-- .../src/controllers/user-storage/index.ts | 14 ++++---- .../controllers/user-storage/mocks/index.ts | 4 +-- .../user-storage/mocks/mockResponses.ts | 10 +++--- .../user-storage/mocks/mockStorage.ts | 4 ++- .../src/controllers/user-storage/types.ts | 4 +-- .../controllers/user-storage/utils.test.ts | 2 +- .../src/sdk/__fixtures__/auth.ts | 2 +- .../src/sdk/__fixtures__/test-utils.ts | 11 +++--- .../src/sdk/__fixtures__/userstorage.ts | 2 +- .../authentication-jwt-bearer/flow-siwe.ts | 8 ++--- .../flow-srp.test.ts | 14 ++++---- .../sdk/authentication-jwt-bearer/flow-srp.ts | 20 +++++------ .../services.test.ts | 10 +++--- .../sdk/authentication-jwt-bearer/services.ts | 22 +++++------- .../sdk/authentication-jwt-bearer/types.ts | 2 +- .../utils/identifier.test.ts | 6 ++-- .../utils/identifier.ts | 4 +-- .../src/sdk/authentication.test.ts | 21 ++++++------ .../src/sdk/authentication.ts | 22 ++++++------ .../profile-sync-controller/src/sdk/errors.ts | 2 +- .../profile-sync-controller/src/sdk/index.ts | 14 ++++---- .../src/sdk/mocks/auth.ts | 4 +-- .../src/sdk/mocks/userstorage.ts | 8 ++--- .../src/sdk/user-storage.test.ts | 25 +++++++------- .../src/sdk/user-storage.ts | 18 +++++----- .../utils/eip-6963-metamask-provider.test.ts | 7 ++-- .../messaging-signing-snap-requests.test.ts | 8 ++--- .../sdk/utils/validate-login-response.test.ts | 4 +-- .../src/sdk/utils/validate-login-response.ts | 2 +- .../sdk/utils/validate-pair-response.test.ts | 4 +-- .../src/shared/encryption/cache.ts | 4 +-- .../src/shared/encryption/encryption.test.ts | 4 +-- .../src/shared/encryption/encryption.ts | 10 +++--- .../src/shared/encryption/index.ts | 4 +-- .../src/shared/env.test.ts | 4 +-- .../src/shared/storage-schema.test.ts | 2 +- .../src/shared/storage-schema.ts | 2 +- .../src/shared/types/services.ts | 2 +- .../src/shared/utils/event-queue.test.ts | 4 ++- 65 files changed, 270 insertions(+), 247 deletions(-) diff --git a/packages/profile-sync-controller/src/controllers/authentication/AuthenticationController-method-action-types.ts b/packages/profile-sync-controller/src/controllers/authentication/AuthenticationController-method-action-types.ts index 221d5f67f80..29fadebb633 100644 --- a/packages/profile-sync-controller/src/controllers/authentication/AuthenticationController-method-action-types.ts +++ b/packages/profile-sync-controller/src/controllers/authentication/AuthenticationController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { AuthenticationController } from './AuthenticationController'; +import type { AuthenticationController } from './AuthenticationController.js'; export type AuthenticationControllerPerformSignInAction = { type: `AuthenticationController:performSignIn`; diff --git a/packages/profile-sync-controller/src/controllers/authentication/AuthenticationController.test.ts b/packages/profile-sync-controller/src/controllers/authentication/AuthenticationController.test.ts index 0351e8f10be..429d2dfd248 100644 --- a/packages/profile-sync-controller/src/controllers/authentication/AuthenticationController.test.ts +++ b/packages/profile-sync-controller/src/controllers/authentication/AuthenticationController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -6,23 +7,23 @@ import type { MockAnyNamespace, } from '@metamask/messenger'; -import type { LoginResponse } from '../../sdk'; -import { Platform } from '../../sdk'; -import { arrangeAuthAPIs } from '../../sdk/__fixtures__/auth'; +import { arrangeAuthAPIs } from '../../sdk/__fixtures__/auth.js'; +import type { LoginResponse } from '../../sdk/index.js'; +import { Platform } from '../../sdk/index.js'; import { MOCK_ACCESS_JWT, MOCK_USER_PROFILE_LINEAGE_RESPONSE, -} from '../../sdk/mocks/auth'; -import { AuthenticationController } from './AuthenticationController'; +} from '../../sdk/mocks/auth.js'; +import { AuthenticationController } from './AuthenticationController.js'; import type { AuthenticationControllerMessenger, AuthenticationControllerState, ProfileSignInInfo, -} from './AuthenticationController'; +} from './AuthenticationController.js'; import { MOCK_LOGIN_RESPONSE, MOCK_OATH_TOKEN_RESPONSE, -} from './mocks/mockResponses'; +} from './mocks/mockResponses.js'; const MOCK_ENTROPY_SOURCE_IDS = [ 'MOCK_ENTROPY_SOURCE_ID', diff --git a/packages/profile-sync-controller/src/controllers/authentication/AuthenticationController.ts b/packages/profile-sync-controller/src/controllers/authentication/AuthenticationController.ts index 1bc6c14ce57..e91fbb1ad1a 100644 --- a/packages/profile-sync-controller/src/controllers/authentication/AuthenticationController.ts +++ b/packages/profile-sync-controller/src/controllers/authentication/AuthenticationController.ts @@ -19,20 +19,20 @@ import type { SRPInterface, UserProfile, UserProfileLineage, -} from '../../sdk'; +} from '../../sdk/index.js'; import { assertMessageStartsWithMetamask, AuthType, Env, JwtBearerAuth, -} from '../../sdk'; -import type { MetaMetricsAuth } from '../../shared/types/services'; +} from '../../sdk/index.js'; +import type { MetaMetricsAuth } from '../../shared/types/services.js'; import { createSnapPublicKeyRequest, createSnapAllPublicKeysRequest, createSnapSignMessageRequest, -} from './auth-snap-requests'; -import { AuthenticationControllerMethodActions } from './AuthenticationController-method-action-types'; +} from './auth-snap-requests.js'; +import { AuthenticationControllerMethodActions } from './AuthenticationController-method-action-types.js'; const controllerName = 'AuthenticationController'; diff --git a/packages/profile-sync-controller/src/controllers/authentication/__fixtures__/mockServices.ts b/packages/profile-sync-controller/src/controllers/authentication/__fixtures__/mockServices.ts index aec0aa08b5a..9b47a8abe76 100644 --- a/packages/profile-sync-controller/src/controllers/authentication/__fixtures__/mockServices.ts +++ b/packages/profile-sync-controller/src/controllers/authentication/__fixtures__/mockServices.ts @@ -4,7 +4,7 @@ import { getMockAuthAccessTokenResponse, getMockAuthLoginResponse, getMockAuthNonceResponse, -} from '../mocks/mockResponses'; +} from '../mocks/mockResponses.js'; type MockReply = { status: nock.StatusCode; diff --git a/packages/profile-sync-controller/src/controllers/authentication/index.ts b/packages/profile-sync-controller/src/controllers/authentication/index.ts index 6198e0e2008..9ac35a37056 100644 --- a/packages/profile-sync-controller/src/controllers/authentication/index.ts +++ b/packages/profile-sync-controller/src/controllers/authentication/index.ts @@ -1,9 +1,9 @@ -import { AuthenticationController } from './AuthenticationController'; +import { AuthenticationController } from './AuthenticationController.js'; export { AuthenticationController as Controller }; export default AuthenticationController; -export * from './AuthenticationController'; -export * as Mocks from './mocks'; +export * from './AuthenticationController.js'; +export * as Mocks from './mocks/index.js'; export type { AuthenticationControllerPerformSignInAction, @@ -14,4 +14,4 @@ export type { AuthenticationControllerGetUserProfileLineageAction, AuthenticationControllerIsSignedInAction, AuthenticationControllerRequestProfilePairingAction, -} from './AuthenticationController-method-action-types'; +} from './AuthenticationController-method-action-types.js'; diff --git a/packages/profile-sync-controller/src/controllers/authentication/mocks/index.ts b/packages/profile-sync-controller/src/controllers/authentication/mocks/index.ts index ae60f45b28d..9e1db815f4c 100644 --- a/packages/profile-sync-controller/src/controllers/authentication/mocks/index.ts +++ b/packages/profile-sync-controller/src/controllers/authentication/mocks/index.ts @@ -1 +1 @@ -export * from './mockResponses'; +export * from './mockResponses.js'; diff --git a/packages/profile-sync-controller/src/controllers/authentication/mocks/mockResponses.test.ts b/packages/profile-sync-controller/src/controllers/authentication/mocks/mockResponses.test.ts index 8ae5e21883e..629448e97d3 100644 --- a/packages/profile-sync-controller/src/controllers/authentication/mocks/mockResponses.test.ts +++ b/packages/profile-sync-controller/src/controllers/authentication/mocks/mockResponses.test.ts @@ -4,7 +4,7 @@ import { getE2EIdentifierFromJwt, MOCK_CUSTOMER_SERVICE_TOKEN_RESPONSE, MOCK_OATH_TOKEN_RESPONSE, -} from './mockResponses'; +} from './mockResponses.js'; describe('getE2EIdentifierFromJwt()', () => { it('extracts the sub claim from a valid mock JWT', () => { diff --git a/packages/profile-sync-controller/src/controllers/authentication/mocks/mockResponses.ts b/packages/profile-sync-controller/src/controllers/authentication/mocks/mockResponses.ts index 985d4f05fde..2350b2e2331 100644 --- a/packages/profile-sync-controller/src/controllers/authentication/mocks/mockResponses.ts +++ b/packages/profile-sync-controller/src/controllers/authentication/mocks/mockResponses.ts @@ -10,7 +10,7 @@ import { MOCK_OIDC_TOKEN_URL, MOCK_PAIR_PROFILES_URL, MOCK_CUSTOMER_SERVICE_TOKEN_URL, -} from '../../../sdk/mocks/auth'; +} from '../../../sdk/mocks/auth.js'; type MockResponse = { url: string; diff --git a/packages/profile-sync-controller/src/controllers/index.ts b/packages/profile-sync-controller/src/controllers/index.ts index 2522528014b..f3fc6546c88 100644 --- a/packages/profile-sync-controller/src/controllers/index.ts +++ b/packages/profile-sync-controller/src/controllers/index.ts @@ -1,2 +1,2 @@ -export * as Authentication from './authentication'; -export * as UserStorage from './user-storage'; +export * as Authentication from './authentication/index.js'; +export * as UserStorage from './user-storage/index.js'; diff --git a/packages/profile-sync-controller/src/controllers/user-storage/UserStorageController-method-action-types.ts b/packages/profile-sync-controller/src/controllers/user-storage/UserStorageController-method-action-types.ts index 3715c2d562f..772dfa02794 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/UserStorageController-method-action-types.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/UserStorageController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { UserStorageController } from './UserStorageController'; +import type { UserStorageController } from './UserStorageController.js'; /** * Allows retrieval of stored data. Data stored is string formatted. diff --git a/packages/profile-sync-controller/src/controllers/user-storage/UserStorageController.test.ts b/packages/profile-sync-controller/src/controllers/user-storage/UserStorageController.test.ts index 1081690d8f1..829c450ef21 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/UserStorageController.test.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/UserStorageController.test.ts @@ -2,14 +2,14 @@ import { deriveStateFromMetadata } from '@metamask/base-controller'; import { KeyringTypes } from '@metamask/keyring-controller'; import nock from 'nock'; -import { Env, getEnvUrls } from '../../sdk'; -import { createSHA256Hash } from '../../shared/encryption'; -import type { UserStorageGenericPathWithFeatureAndKey } from '../../shared/storage-schema'; +import { Env, getEnvUrls } from '../../sdk/index.js'; +import { createSHA256Hash } from '../../shared/encryption/index.js'; +import type { UserStorageGenericPathWithFeatureAndKey } from '../../shared/storage-schema.js'; import { createEntryPath, USER_STORAGE_FEATURE_NAMES, -} from '../../shared/storage-schema'; -import { mockUserStorageMessenger } from './__fixtures__/mockMessenger'; +} from '../../shared/storage-schema.js'; +import { mockUserStorageMessenger } from './__fixtures__/mockMessenger.js'; import { mockEndpointBatchUpsertUserStorage, mockEndpointGetUserStorage, @@ -18,10 +18,13 @@ import { mockEndpointDeleteUserStorageAllFeatureEntries, mockEndpointDeleteUserStorage, mockEndpointBatchDeleteUserStorage, -} from './__fixtures__/mockServices'; -import { BACKUPANDSYNC_FEATURES } from './constants'; -import { MOCK_STORAGE_DATA, MOCK_STORAGE_KEY } from './mocks/mockStorage'; -import { UserStorageController, defaultState } from './UserStorageController'; +} from './__fixtures__/mockServices.js'; +import { BACKUPANDSYNC_FEATURES } from './constants.js'; +import { MOCK_STORAGE_DATA, MOCK_STORAGE_KEY } from './mocks/mockStorage.js'; +import { + UserStorageController, + defaultState, +} from './UserStorageController.js'; describe('UserStorageController', () => { describe('constructor', () => { diff --git a/packages/profile-sync-controller/src/controllers/user-storage/UserStorageController.ts b/packages/profile-sync-controller/src/controllers/user-storage/UserStorageController.ts index 2e4d74ea86b..ae4d54ac654 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/UserStorageController.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/UserStorageController.ts @@ -30,21 +30,21 @@ import type { UserStorageGenericFeatureKey, UserStorageGenericPathWithFeatureAndKey, UserStorageGenericPathWithFeatureOnly, -} from '../../sdk'; -import { Env, UserStorage } from '../../sdk'; -import type { NativeScrypt } from '../../shared/types/encryption'; -import { EventQueue } from '../../shared/utils/event-queue'; -import { createSnapSignMessageRequest } from '../authentication/auth-snap-requests'; +} from '../../sdk/index.js'; +import { Env, UserStorage } from '../../sdk/index.js'; +import type { NativeScrypt } from '../../shared/types/encryption.js'; +import { EventQueue } from '../../shared/utils/event-queue.js'; +import { createSnapSignMessageRequest } from '../authentication/auth-snap-requests.js'; import type { AuthenticationControllerGetBearerTokenAction, AuthenticationControllerGetSessionProfileAction, AuthenticationControllerIsSignedInAction, AuthenticationControllerPerformSignInAction, -} from '../authentication/AuthenticationController-method-action-types'; -import { BACKUPANDSYNC_FEATURES } from './constants'; -import { syncContactsWithUserStorage } from './contact-syncing/controller-integration'; -import { setupContactSyncingSubscriptions } from './contact-syncing/setup-subscriptions'; -import type { UserStorageControllerMethodActions } from './UserStorageController-method-action-types'; +} from '../authentication/AuthenticationController-method-action-types.js'; +import { BACKUPANDSYNC_FEATURES } from './constants.js'; +import { syncContactsWithUserStorage } from './contact-syncing/controller-integration.js'; +import { setupContactSyncingSubscriptions } from './contact-syncing/setup-subscriptions.js'; +import type { UserStorageControllerMethodActions } from './UserStorageController-method-action-types.js'; const controllerName = 'UserStorageController'; diff --git a/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/mockMessenger.ts b/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/mockMessenger.ts index 6e535d71054..83c6da036d2 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/mockMessenger.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/mockMessenger.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { KeyringTypes } from '@metamask/keyring-controller'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { diff --git a/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/mockServices.ts b/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/mockServices.ts index dddac59d2b6..cfabc7b7d6d 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/mockServices.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/mockServices.ts @@ -1,10 +1,10 @@ import nock from 'nock'; -import { USER_STORAGE_FEATURE_NAMES } from '../../../shared/storage-schema'; +import { USER_STORAGE_FEATURE_NAMES } from '../../../shared/storage-schema.js'; import type { UserStorageGenericPathWithFeatureAndKey, UserStorageGenericPathWithFeatureOnly, -} from '../../../shared/storage-schema'; +} from '../../../shared/storage-schema.js'; import { getMockUserStorageGetResponse, getMockUserStoragePutResponse, @@ -13,7 +13,7 @@ import { getMockUserStorageBatchDeleteResponse, deleteMockUserStorageAllFeatureEntriesResponse, deleteMockUserStorageResponse, -} from '../mocks/mockResponses'; +} from '../mocks/mockResponses.js'; type MockReply = { status: nock.StatusCode; diff --git a/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/test-utils.ts b/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/test-utils.ts index 340acef469e..eae66dd5c99 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/test-utils.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/__fixtures__/test-utils.ts @@ -1,11 +1,11 @@ import type nock from 'nock'; -import encryption from '../../../shared/encryption/encryption'; -import { MOCK_STORAGE_KEY } from '../mocks/mockStorage'; +import encryption from '../../../shared/encryption/encryption.js'; +import { MOCK_STORAGE_KEY } from '../mocks/mockStorage.js'; import type { GetUserStorageAllFeatureEntriesResponse, GetUserStorageResponse, -} from '../types'; +} from '../types.js'; /** * Test Utility - creates a realistic mock user-storage entry diff --git a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/__fixtures__/mockContacts.ts b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/__fixtures__/mockContacts.ts index eaf6fe2f6ab..aa1677238fd 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/__fixtures__/mockContacts.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/__fixtures__/mockContacts.ts @@ -1,7 +1,10 @@ import type { AddressBookEntry } from '@metamask/address-book-controller'; -import { USER_STORAGE_VERSION, USER_STORAGE_VERSION_KEY } from '../constants'; -import type { UserStorageContactEntry } from '../types'; +import { + USER_STORAGE_VERSION, + USER_STORAGE_VERSION_KEY, +} from '../constants.js'; +import type { UserStorageContactEntry } from '../types.js'; // Base timestamp for predictable testing const NOW = 1657000000000; diff --git a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/__fixtures__/test-utils.ts b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/__fixtures__/test-utils.ts index 8a1ea37ab54..49c97fb3afe 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/__fixtures__/test-utils.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/__fixtures__/test-utils.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { AddressBookEntry, AddressType, @@ -12,7 +13,7 @@ import { Messenger as MessengerImpl, } from '@metamask/messenger'; -import { MOCK_LOCAL_CONTACTS } from './mockContacts'; +import { MOCK_LOCAL_CONTACTS } from './mockContacts.js'; /** * Test Utility - create a mock user storage messenger for contact syncing tests diff --git a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/controller-integration.test.ts b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/controller-integration.test.ts index 214e55c1aae..dd734d59cae 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/controller-integration.test.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/controller-integration.test.ts @@ -1,18 +1,19 @@ +import { jest } from '@jest/globals'; /* eslint-disable @typescript-eslint/no-explicit-any */ import type { AddressBookEntry } from '@metamask/address-book-controller'; -import { USER_STORAGE_FEATURE_NAMES } from '../../../shared/storage-schema'; +import { USER_STORAGE_FEATURE_NAMES } from '../../../shared/storage-schema.js'; import { MOCK_LOCAL_CONTACTS, MOCK_REMOTE_CONTACTS, -} from './__fixtures__/mockContacts'; +} from './__fixtures__/mockContacts.js'; import { mockUserStorageMessengerForContactSyncing, createMockUserStorageContacts, -} from './__fixtures__/test-utils'; -import * as ContactSyncingControllerIntegrationModule from './controller-integration'; -import * as ContactSyncingUtils from './sync-utils'; -import type { ContactSyncingOptions } from './types'; +} from './__fixtures__/test-utils.js'; +import * as ContactSyncingControllerIntegrationModule from './controller-integration.js'; +import * as ContactSyncingUtils from './sync-utils.js'; +import type { ContactSyncingOptions } from './types.js'; // Mock UserStorageController to avoid json-rpc-engine dependency issues class MockUserStorageController { diff --git a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/controller-integration.ts b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/controller-integration.ts index 08e0d05809b..3a2f40004d7 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/controller-integration.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/controller-integration.ts @@ -1,16 +1,16 @@ import type { AddressBookEntry } from '@metamask/address-book-controller'; -import { USER_STORAGE_FEATURE_NAMES } from '../../../shared/storage-schema'; -import { TraceName } from '../constants'; -import { canPerformContactSyncing } from './sync-utils'; -import type { ContactSyncingOptions } from './types'; -import type { UserStorageContactEntry } from './types'; -import type { SyncAddressBookEntry } from './utils'; +import { USER_STORAGE_FEATURE_NAMES } from '../../../shared/storage-schema.js'; +import { TraceName } from '../constants.js'; +import { canPerformContactSyncing } from './sync-utils.js'; +import type { ContactSyncingOptions } from './types.js'; +import type { UserStorageContactEntry } from './types.js'; +import type { SyncAddressBookEntry } from './utils.js'; import { mapAddressBookEntryToUserStorageEntry, mapUserStorageEntryToAddressBookEntry, -} from './utils'; -import { isContactBridgedFromAccounts } from './utils'; +} from './utils.js'; +import { isContactBridgedFromAccounts } from './utils.js'; export type SyncContactsWithUserStorageConfig = { onContactSyncErroneousSituation?: ( @@ -81,7 +81,7 @@ export async function syncContactsWithUserStorage( .filter((contact) => !isContactBridgedFromAccounts(contact)) .filter( (contact) => contact.address && contact.chainId && contact.name?.trim(), - ) || []; + ) ?? []; // Get remote contacts from user storage API const remoteContacts = await getRemoteContacts(options); @@ -90,7 +90,7 @@ export async function syncContactsWithUserStorage( const validRemoteContacts = remoteContacts?.filter( (contact) => contact.address && contact.chainId && contact.name?.trim(), - ) || []; + ) ?? []; const performSync = async () => { try { @@ -140,8 +140,8 @@ export async function syncContactsWithUserStorage( if (hasContentDifference) { // Check timestamps to determine which version to keep - const localTimestamp = localContact.lastUpdatedAt || 0; - const remoteTimestamp = remoteContact.lastUpdatedAt || 0; + const localTimestamp = localContact.lastUpdatedAt ?? 0; + const remoteTimestamp = remoteContact.lastUpdatedAt ?? 0; if (localTimestamp >= remoteTimestamp) { // Local is newer (or same age) - use local version @@ -192,9 +192,9 @@ export async function syncContactsWithUserStorage( getMessenger().call( 'AddressBookController:set', contact.address, - contact.name || '', + contact.name ?? '', contact.chainId, - contact.memo || '', + contact.memo ?? '', contact.addressType, ); @@ -383,8 +383,8 @@ export async function updateContactInRemoteStorage( // Create an updated entry with timestamp const updatedEntry = { ...contact, - lastUpdatedAt: contact.lastUpdatedAt || Date.now(), - } as SyncAddressBookEntry; + lastUpdatedAt: contact.lastUpdatedAt ?? Date.now(), + }; const key = createContactKey(contact); const storageEntry = mapAddressBookEntryToUserStorageEntry(updatedEntry); @@ -461,7 +461,7 @@ export async function deleteContactInRemoteStorage( ...existingContact, deletedAt: now, lastUpdatedAt: now, - } as SyncAddressBookEntry; + }; const deletedStorageEntry = mapAddressBookEntryToUserStorageEntry(deletedContact); diff --git a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/setup-subscriptions.test.ts b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/setup-subscriptions.test.ts index 00475971500..6567767359d 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/setup-subscriptions.test.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/setup-subscriptions.test.ts @@ -1,6 +1,8 @@ -import * as ControllerIntegration from './controller-integration'; -import { setupContactSyncingSubscriptions } from './setup-subscriptions'; -import * as SyncUtils from './sync-utils'; +import { jest } from '@jest/globals'; + +import * as ControllerIntegration from './controller-integration.js'; +import { setupContactSyncingSubscriptions } from './setup-subscriptions.js'; +import * as SyncUtils from './sync-utils.js'; // Define a type for the contact data type AddressBookContactData = { diff --git a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/setup-subscriptions.ts b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/setup-subscriptions.ts index c6d82a875e2..9613efba446 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/setup-subscriptions.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/setup-subscriptions.ts @@ -3,10 +3,10 @@ import type { AddressBookEntry } from '@metamask/address-book-controller'; import { updateContactInRemoteStorage, deleteContactInRemoteStorage, -} from './controller-integration'; -import { canPerformContactSyncing } from './sync-utils'; -import type { ContactSyncingOptions } from './types'; -import { isContactBridgedFromAccounts } from './utils'; +} from './controller-integration.js'; +import { canPerformContactSyncing } from './sync-utils.js'; +import type { ContactSyncingOptions } from './types.js'; +import { isContactBridgedFromAccounts } from './utils.js'; /** * Initialize and setup events to listen to for contact syncing diff --git a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/sync-utils.test.ts b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/sync-utils.test.ts index 989cb3be494..10ed623cd4b 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/sync-utils.test.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/sync-utils.test.ts @@ -1,5 +1,7 @@ -import { canPerformContactSyncing } from './sync-utils'; -import type { ContactSyncingOptions } from './types'; +import { jest } from '@jest/globals'; + +import { canPerformContactSyncing } from './sync-utils.js'; +import type { ContactSyncingOptions } from './types.js'; describe('user-storage/contact-syncing/sync-utils', () => { describe('canPerformContactSyncing', () => { diff --git a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/sync-utils.ts b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/sync-utils.ts index f5767356830..723cbe17128 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/sync-utils.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/sync-utils.ts @@ -1,4 +1,4 @@ -import type { ContactSyncingOptions } from './types'; +import type { ContactSyncingOptions } from './types.js'; /** * Check if we can perform contact syncing diff --git a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/types.ts b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/types.ts index 9b0c9ff138b..e0bcbe3ed62 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/types.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/types.ts @@ -1,12 +1,12 @@ import type { TraceCallback } from '@metamask/controller-utils'; import type { Hex } from '@metamask/utils'; -import type { UserStorageControllerMessenger } from '../UserStorageController'; -import type { UserStorageController } from '../UserStorageController'; +import type { UserStorageControllerMessenger } from '../UserStorageController.js'; +import type { UserStorageController } from '../UserStorageController.js'; import type { USER_STORAGE_VERSION_KEY, USER_STORAGE_VERSION, -} from './constants'; +} from './constants.js'; export type UserStorageContactEntry = { /** diff --git a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/utils.test.ts b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/utils.test.ts index c0f2572337e..9f4c1beb4b4 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/utils.test.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/utils.test.ts @@ -1,12 +1,13 @@ +import { jest } from '@jest/globals'; import type { AddressBookEntry } from '@metamask/address-book-controller'; -import { USER_STORAGE_VERSION, USER_STORAGE_VERSION_KEY } from './constants'; -import type { UserStorageContactEntry } from './types'; +import { USER_STORAGE_VERSION, USER_STORAGE_VERSION_KEY } from './constants.js'; +import type { UserStorageContactEntry } from './types.js'; import { mapAddressBookEntryToUserStorageEntry, mapUserStorageEntryToAddressBookEntry, -} from './utils'; -import type { SyncAddressBookEntry } from './utils'; +} from './utils.js'; +import type { SyncAddressBookEntry } from './utils.js'; describe('user-storage/contact-syncing/utils', () => { // Use checksum address format for consistent testing diff --git a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/utils.ts b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/utils.ts index 889857b2017..15acd3e0c80 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/utils.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/contact-syncing/utils.ts @@ -3,8 +3,8 @@ import type { AddressType, } from '@metamask/address-book-controller'; -import { USER_STORAGE_VERSION_KEY, USER_STORAGE_VERSION } from './constants'; -import type { UserStorageContactEntry } from './types'; +import { USER_STORAGE_VERSION_KEY, USER_STORAGE_VERSION } from './constants.js'; +import type { UserStorageContactEntry } from './types.js'; /** * Extends AddressBookEntry with sync metadata diff --git a/packages/profile-sync-controller/src/controllers/user-storage/index.ts b/packages/profile-sync-controller/src/controllers/user-storage/index.ts index c6d746f502b..bd21a21dcf9 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/index.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/index.ts @@ -1,12 +1,12 @@ -import { UserStorageController } from './UserStorageController'; +import { UserStorageController } from './UserStorageController.js'; export { UserStorageController as Controller }; export default UserStorageController; -export * from './UserStorageController'; -export * as Mocks from './mocks'; -export * from './constants'; -export * from '../../shared/encryption'; -export * from '../../shared/storage-schema'; +export * from './UserStorageController.js'; +export * as Mocks from './mocks/index.js'; +export * from './constants.js'; +export * from '../../shared/encryption/index.js'; +export * from '../../shared/storage-schema.js'; export type { UserStorageControllerPerformGetStorageAction, UserStorageControllerPerformGetStorageAllFeatureEntriesAction, @@ -20,4 +20,4 @@ export type { UserStorageControllerSetIsBackupAndSyncFeatureEnabledAction, UserStorageControllerSetIsContactSyncingInProgressAction, UserStorageControllerSyncContactsWithUserStorageAction, -} from './UserStorageController-method-action-types'; +} from './UserStorageController-method-action-types.js'; diff --git a/packages/profile-sync-controller/src/controllers/user-storage/mocks/index.ts b/packages/profile-sync-controller/src/controllers/user-storage/mocks/index.ts index bd3cb394f52..bf88958b315 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/mocks/index.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/mocks/index.ts @@ -1,2 +1,2 @@ -export * from './mockResponses'; -export * from './mockStorage'; +export * from './mockResponses.js'; +export * from './mockStorage.js'; diff --git a/packages/profile-sync-controller/src/controllers/user-storage/mocks/mockResponses.ts b/packages/profile-sync-controller/src/controllers/user-storage/mocks/mockResponses.ts index ec85757566b..a093bdb7ae6 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/mocks/mockResponses.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/mocks/mockResponses.ts @@ -1,21 +1,21 @@ -import { Env, getEnvUrls } from '../../../sdk'; +import { Env, getEnvUrls } from '../../../sdk/index.js'; import type { UserStorageGenericPathWithFeatureAndKey, UserStorageGenericPathWithFeatureOnly, -} from '../../../shared/storage-schema'; +} from '../../../shared/storage-schema.js'; import { createEntryPath, USER_STORAGE_FEATURE_NAMES, -} from '../../../shared/storage-schema'; +} from '../../../shared/storage-schema.js'; import type { GetUserStorageAllFeatureEntriesResponse, GetUserStorageResponse, -} from '../types'; +} from '../types.js'; import { MOCK_ENCRYPTED_STORAGE_DATA, MOCK_STORAGE_DATA, MOCK_STORAGE_KEY, -} from './mockStorage'; +} from './mockStorage.js'; type MockResponse = { url: string; diff --git a/packages/profile-sync-controller/src/controllers/user-storage/mocks/mockStorage.ts b/packages/profile-sync-controller/src/controllers/user-storage/mocks/mockStorage.ts index c6de9beeac0..1e7728eae82 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/mocks/mockStorage.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/mocks/mockStorage.ts @@ -1,4 +1,6 @@ -import encryption, { createSHA256Hash } from '../../../shared/encryption'; +import encryption, { + createSHA256Hash, +} from '../../../shared/encryption/index.js'; export const MOCK_STORAGE_KEY_SIGNATURE = 'mockStorageKey'; export const MOCK_STORAGE_KEY = createSHA256Hash(MOCK_STORAGE_KEY_SIGNATURE); diff --git a/packages/profile-sync-controller/src/controllers/user-storage/types.ts b/packages/profile-sync-controller/src/controllers/user-storage/types.ts index 1f38d86905b..923954cbc86 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/types.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/types.ts @@ -1,8 +1,8 @@ import type { UserStorageGenericPathWithFeatureAndKey, UserStorageGenericPathWithFeatureOnly, -} from '../../shared/storage-schema'; -import type { NativeScrypt } from '../../shared/types/encryption'; +} from '../../shared/storage-schema.js'; +import type { NativeScrypt } from '../../shared/types/encryption.js'; export type UserStorageBaseOptions = { bearerToken: string; diff --git a/packages/profile-sync-controller/src/controllers/user-storage/utils.test.ts b/packages/profile-sync-controller/src/controllers/user-storage/utils.test.ts index cecdf729f25..fd5e4e8171d 100644 --- a/packages/profile-sync-controller/src/controllers/user-storage/utils.test.ts +++ b/packages/profile-sync-controller/src/controllers/user-storage/utils.test.ts @@ -1,4 +1,4 @@ -import { setDifference, setIntersection } from './utils'; +import { setDifference, setIntersection } from './utils.js'; describe('utils - setDifference()', () => { it('should return the difference between 2 sets', () => { diff --git a/packages/profile-sync-controller/src/sdk/__fixtures__/auth.ts b/packages/profile-sync-controller/src/sdk/__fixtures__/auth.ts index 791d6658341..1879d580165 100644 --- a/packages/profile-sync-controller/src/sdk/__fixtures__/auth.ts +++ b/packages/profile-sync-controller/src/sdk/__fixtures__/auth.ts @@ -16,7 +16,7 @@ import { MOCK_USER_PROFILE_LINEAGE_RESPONSE, MOCK_CUSTOMER_SERVICE_TOKEN_URL, MOCK_CUSTOMER_SERVICE_TOKEN_RESPONSE, -} from '../mocks/auth'; +} from '../mocks/auth.js'; type MockReply = { status: nock.StatusCode; diff --git a/packages/profile-sync-controller/src/sdk/__fixtures__/test-utils.ts b/packages/profile-sync-controller/src/sdk/__fixtures__/test-utils.ts index b8cd5f72f77..dc7c6f7cedb 100644 --- a/packages/profile-sync-controller/src/sdk/__fixtures__/test-utils.ts +++ b/packages/profile-sync-controller/src/sdk/__fixtures__/test-utils.ts @@ -1,13 +1,14 @@ +import { jest } from '@jest/globals'; import type { Eip1193Provider } from 'ethers'; -import { Env, Platform } from '../../shared/env'; -import { JwtBearerAuth } from '../authentication'; +import { Env, Platform } from '../../shared/env.js'; import type { AuthSigningOptions, AuthStorageOptions, -} from '../authentication-jwt-bearer/types'; -import { AuthType } from '../authentication-jwt-bearer/types'; -import { SNAP_ORIGIN } from '../utils/messaging-signing-snap-requests'; +} from '../authentication-jwt-bearer/types.js'; +import { AuthType } from '../authentication-jwt-bearer/types.js'; +import { JwtBearerAuth } from '../authentication.js'; +import { SNAP_ORIGIN } from '../utils/messaging-signing-snap-requests.js'; // Alias mocking variables with ANY to test runtime safety. // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/profile-sync-controller/src/sdk/__fixtures__/userstorage.ts b/packages/profile-sync-controller/src/sdk/__fixtures__/userstorage.ts index a5678ba6328..052c87b51ac 100644 --- a/packages/profile-sync-controller/src/sdk/__fixtures__/userstorage.ts +++ b/packages/profile-sync-controller/src/sdk/__fixtures__/userstorage.ts @@ -4,7 +4,7 @@ import { MOCK_STORAGE_RESPONSE, MOCK_STORAGE_URL, MOCK_STORAGE_URL_ALL_FEATURE_ENTRIES, -} from '../mocks/userstorage'; +} from '../mocks/userstorage.js'; type MockReply = { status: nock.StatusCode; diff --git a/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/flow-siwe.ts b/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/flow-siwe.ts index 487e4f019b5..340a8d98a14 100644 --- a/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/flow-siwe.ts +++ b/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/flow-siwe.ts @@ -1,7 +1,7 @@ import { SiweMessage } from 'siwe'; -import { ValidationError } from '../errors'; -import { validateLoginResponse } from '../utils/validate-login-response'; +import { ValidationError } from '../errors.js'; +import { validateLoginResponse } from '../utils/validate-login-response.js'; import { SIWE_LOGIN_URL, authenticate, @@ -9,7 +9,7 @@ import { getCustomerServiceToken, getNonce, getUserProfileLineage, -} from './services'; +} from './services.js'; import type { AuthConfig, AuthStorageOptions, @@ -18,7 +18,7 @@ import type { LoginResponse, UserProfile, UserProfileLineage, -} from './types'; +} from './types.js'; type JwtBearerAuth_SIWE_Options = { storage: AuthStorageOptions; diff --git a/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/flow-srp.test.ts b/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/flow-srp.test.ts index 47149e3d78c..d90ddd0475f 100644 --- a/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/flow-srp.test.ts +++ b/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/flow-srp.test.ts @@ -1,9 +1,11 @@ -import { Env, Platform } from '../../shared/env'; -import { RateLimitedError } from '../errors'; -import { PAIR_DEDUPE_TTL_MS, SRPJwtBearerAuth } from './flow-srp'; -import { AuthType } from './types'; -import type { AuthConfig, LoginResponse, UserProfile } from './types'; -import * as timeUtils from './utils/time'; +import { jest } from '@jest/globals'; + +import { Env, Platform } from '../../shared/env.js'; +import { RateLimitedError } from '../errors.js'; +import { PAIR_DEDUPE_TTL_MS, SRPJwtBearerAuth } from './flow-srp.js'; +import { AuthType } from './types.js'; +import type { AuthConfig, LoginResponse, UserProfile } from './types.js'; +import * as timeUtils from './utils/time.js'; jest.setTimeout(15000); diff --git a/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/flow-srp.ts b/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/flow-srp.ts index 5cd06ded822..b2685d70c11 100644 --- a/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/flow-srp.ts +++ b/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/flow-srp.ts @@ -1,15 +1,15 @@ import type { Eip1193Provider } from 'ethers'; -import type { MetaMetricsAuth } from '../../shared/types/services'; -import { ValidationError, RateLimitedError } from '../errors'; -import { getMetaMaskProviderEIP6963 } from '../utils/eip-6963-metamask-provider'; +import type { MetaMetricsAuth } from '../../shared/types/services.js'; +import { ValidationError, RateLimitedError } from '../errors.js'; +import { getMetaMaskProviderEIP6963 } from '../utils/eip-6963-metamask-provider.js'; import { MESSAGE_SIGNING_SNAP, assertMessageStartsWithMetamask, connectSnap, isSnapConnected, -} from '../utils/messaging-signing-snap-requests'; -import { validateLoginResponse } from '../utils/validate-login-response'; +} from '../utils/messaging-signing-snap-requests.js'; +import { validateLoginResponse } from '../utils/validate-login-response.js'; import { authenticate, authorizeOIDC, @@ -17,8 +17,8 @@ import { getNonce, getUserProfileLineage, pairProfiles, -} from './services'; -import type { PairProfilesResponse } from './services'; +} from './services.js'; +import type { PairProfilesResponse } from './services.js'; import type { AuthConfig, AuthSigningOptions, @@ -28,9 +28,9 @@ import type { LoginResponse, UserProfile, UserProfileLineage, -} from './types'; -import { computeIdentifierId } from './utils/identifier'; -import * as timeUtils from './utils/time'; +} from './types.js'; +import { computeIdentifierId } from './utils/identifier.js'; +import * as timeUtils from './utils/time.js'; type JwtBearerAuth_SRP_Options = { storage: AuthStorageOptions; diff --git a/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/services.test.ts b/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/services.test.ts index d027faf50dd..b24fd86192d 100644 --- a/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/services.test.ts +++ b/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/services.test.ts @@ -1,10 +1,12 @@ -import { Env, Platform } from '../../shared/env'; +import { jest } from '@jest/globals'; + +import { Env, Platform } from '../../shared/env.js'; import { NonceRetrievalError, SignInError, PairError, RateLimitedError, -} from '../errors'; +} from '../errors.js'; import { getNonce, authenticate, @@ -21,8 +23,8 @@ import { PAIR_PROFILES_URL, PROFILE_LINEAGE_URL, CUSTOMER_SERVICE_TOKEN_URL, -} from './services'; -import { AuthType } from './types'; +} from './services.js'; +import { AuthType } from './types.js'; // Mock global fetch const mockFetch = jest.fn(); diff --git a/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/services.ts b/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/services.ts index 5c3a5be2249..28e00886599 100644 --- a/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/services.ts +++ b/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/services.ts @@ -1,23 +1,22 @@ -import type { Env, Platform } from '../../shared/env'; -import { getEnvUrls, getOidcClientId } from '../../shared/env'; -import type { MetaMetricsAuth } from '../../shared/types/services'; -import { HTTP_STATUS_CODES } from '../constants'; +import type { Env, Platform } from '../../shared/env.js'; +import { getEnvUrls, getOidcClientId } from '../../shared/env.js'; +import type { MetaMetricsAuth } from '../../shared/types/services.js'; +import { HTTP_STATUS_CODES } from '../constants.js'; import { NonceRetrievalError, PairError, SignInError, ValidationError, RateLimitedError, -} from '../errors'; -import { validatePairResponse } from '../utils/validate-pair-response'; +} from '../errors.js'; +import { validatePairResponse } from '../utils/validate-pair-response.js'; import type { AccessToken, - ErrorMessage, ProfileAlias, UserProfile, UserProfileLineage, -} from './types'; -import { AuthType } from './types'; +} from './types.js'; +import { AuthType } from './types.js'; /** * Parse Retry-After header into milliseconds if possible. @@ -56,10 +55,7 @@ async function getResponseErrorMessage(response: Response): Promise { let error = 'unknown'; try { - const responseBody = (await response.json()) as - | ErrorMessage - // eslint-disable-next-line @typescript-eslint/naming-convention - | { error_description: string; error: string }; + const responseBody = await response.json(); message = 'message' in responseBody diff --git a/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/types.ts b/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/types.ts index 2dae8fa502a..9d2e35fbb2d 100644 --- a/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/types.ts +++ b/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/types.ts @@ -1,4 +1,4 @@ -import type { Env, Platform } from '../../shared/env'; +import type { Env, Platform } from '../../shared/env.js'; export enum AuthType { /* sign in using a private key derived from your secret recovery phrase (SRP). diff --git a/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/utils/identifier.test.ts b/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/utils/identifier.test.ts index b314092cd6d..b517fab9dbe 100644 --- a/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/utils/identifier.test.ts +++ b/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/utils/identifier.test.ts @@ -1,6 +1,6 @@ -import { createSHA256Hash } from '../../../shared/encryption'; -import { Env } from '../../../shared/env'; -import { computeIdentifierId, IDENTIFIER_SALT } from './identifier'; +import { createSHA256Hash } from '../../../shared/encryption/index.js'; +import { Env } from '../../../shared/env.js'; +import { computeIdentifierId, IDENTIFIER_SALT } from './identifier.js'; describe('computeIdentifierId', () => { const MOCK_PUBLIC_KEY = diff --git a/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/utils/identifier.ts b/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/utils/identifier.ts index 93bfaaf515b..4e4f30b6af1 100644 --- a/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/utils/identifier.ts +++ b/packages/profile-sync-controller/src/sdk/authentication-jwt-bearer/utils/identifier.ts @@ -1,5 +1,5 @@ -import { createSHA256Hash } from '../../../shared/encryption'; -import type { Env } from '../../../shared/env'; +import { createSHA256Hash } from '../../../shared/encryption/index.js'; +import type { Env } from '../../../shared/env.js'; export const IDENTIFIER_SALT: Record = { dev: 'Baiche1eu8Oa2een5ieReul0Phooph4e', diff --git a/packages/profile-sync-controller/src/sdk/authentication.test.ts b/packages/profile-sync-controller/src/sdk/authentication.test.ts index f854e8ea776..e174d4c43e6 100644 --- a/packages/profile-sync-controller/src/sdk/authentication.test.ts +++ b/packages/profile-sync-controller/src/sdk/authentication.test.ts @@ -1,21 +1,22 @@ +import { jest } from '@jest/globals'; import type { Eip1193Provider } from 'ethers'; -import { Env, Platform } from '../shared/env'; -import { arrangeAuthAPIs } from './__fixtures__/auth'; -import type { MockVariable } from './__fixtures__/test-utils'; -import { arrangeAuth, arrangeMockProvider } from './__fixtures__/test-utils'; -import { JwtBearerAuth } from './authentication'; -import * as AuthServices from './authentication-jwt-bearer/services'; -import type { LoginResponse, Pair } from './authentication-jwt-bearer/types'; +import { Env, Platform } from '../shared/env.js'; +import { arrangeAuthAPIs } from './__fixtures__/auth.js'; +import type { MockVariable } from './__fixtures__/test-utils.js'; +import { arrangeAuth, arrangeMockProvider } from './__fixtures__/test-utils.js'; +import * as AuthServices from './authentication-jwt-bearer/services.js'; +import type { LoginResponse, Pair } from './authentication-jwt-bearer/types.js'; +import { JwtBearerAuth } from './authentication.js'; import { NonceRetrievalError, PairError, SignInError, UnsupportedAuthTypeError, ValidationError, -} from './errors'; -import { MOCK_ACCESS_JWT, MOCK_SRP_LOGIN_RESPONSE } from './mocks/auth'; -import * as Eip6963MetamaskProvider from './utils/eip-6963-metamask-provider'; +} from './errors.js'; +import { MOCK_ACCESS_JWT, MOCK_SRP_LOGIN_RESPONSE } from './mocks/auth.js'; +import * as Eip6963MetamaskProvider from './utils/eip-6963-metamask-provider.js'; const MOCK_SRP = '0x6265617665726275696c642e6f7267'; const MOCK_ADDRESS = '0x68757d15a4d8d1421c17003512AFce15D3f3FaDa'; diff --git a/packages/profile-sync-controller/src/sdk/authentication.ts b/packages/profile-sync-controller/src/sdk/authentication.ts index fdff9253a0a..5afeff8c5c3 100644 --- a/packages/profile-sync-controller/src/sdk/authentication.ts +++ b/packages/profile-sync-controller/src/sdk/authentication.ts @@ -1,20 +1,20 @@ import type { Eip1193Provider } from 'ethers'; -import type { Env } from '../shared/env'; -import { SIWEJwtBearerAuth } from './authentication-jwt-bearer/flow-siwe'; -import { SRPJwtBearerAuth } from './authentication-jwt-bearer/flow-srp'; +import type { Env } from '../shared/env.js'; +import { SIWEJwtBearerAuth } from './authentication-jwt-bearer/flow-siwe.js'; +import { SRPJwtBearerAuth } from './authentication-jwt-bearer/flow-srp.js'; import { getNonce, pairIdentifiers, -} from './authentication-jwt-bearer/services'; -import type { PairProfilesResponse } from './authentication-jwt-bearer/services'; +} from './authentication-jwt-bearer/services.js'; +import type { PairProfilesResponse } from './authentication-jwt-bearer/services.js'; import type { UserProfile, Pair, UserProfileLineage, -} from './authentication-jwt-bearer/types'; -import { AuthType } from './authentication-jwt-bearer/types'; -import { PairError, UnsupportedAuthTypeError } from './errors'; +} from './authentication-jwt-bearer/types.js'; +import { AuthType } from './authentication-jwt-bearer/types.js'; +import { PairError, UnsupportedAuthTypeError } from './errors.js'; // Computing the Classes, so we only get back the public methods for the interface. @@ -169,6 +169,6 @@ export class JwtBearerAuth implements SIWEInterface, SRPInterface { } } -export { SIWEJwtBearerAuth } from './authentication-jwt-bearer/flow-siwe'; -export { SRPJwtBearerAuth } from './authentication-jwt-bearer/flow-srp'; -export * from './authentication-jwt-bearer/types'; +export { SIWEJwtBearerAuth } from './authentication-jwt-bearer/flow-siwe.js'; +export { SRPJwtBearerAuth } from './authentication-jwt-bearer/flow-srp.js'; +export * from './authentication-jwt-bearer/types.js'; diff --git a/packages/profile-sync-controller/src/sdk/errors.ts b/packages/profile-sync-controller/src/sdk/errors.ts index ac2c0a7ee3a..38c056ea01b 100644 --- a/packages/profile-sync-controller/src/sdk/errors.ts +++ b/packages/profile-sync-controller/src/sdk/errors.ts @@ -1,4 +1,4 @@ -import { HTTP_STATUS_CODES } from './constants'; +import { HTTP_STATUS_CODES } from './constants.js'; export class NonceRetrievalError extends Error { constructor(message: string) { diff --git a/packages/profile-sync-controller/src/sdk/index.ts b/packages/profile-sync-controller/src/sdk/index.ts index 21bedd22a7e..63d0734c920 100644 --- a/packages/profile-sync-controller/src/sdk/index.ts +++ b/packages/profile-sync-controller/src/sdk/index.ts @@ -1,7 +1,7 @@ -export * from './authentication'; -export * from './user-storage'; -export * from './errors'; -export * from './utils/messaging-signing-snap-requests'; -export * from '../shared/encryption'; -export * from '../shared/env'; -export * from '../shared/storage-schema'; +export * from './authentication.js'; +export * from './user-storage.js'; +export * from './errors.js'; +export * from './utils/messaging-signing-snap-requests.js'; +export * from '../shared/encryption/index.js'; +export * from '../shared/env.js'; +export * from '../shared/storage-schema.js'; diff --git a/packages/profile-sync-controller/src/sdk/mocks/auth.ts b/packages/profile-sync-controller/src/sdk/mocks/auth.ts index 8d50ff88af8..774b53d4776 100644 --- a/packages/profile-sync-controller/src/sdk/mocks/auth.ts +++ b/packages/profile-sync-controller/src/sdk/mocks/auth.ts @@ -1,4 +1,4 @@ -import { Env, Platform } from '../../shared/env'; +import { Env, Platform } from '../../shared/env.js'; import { NONCE_URL, SIWE_LOGIN_URL, @@ -8,7 +8,7 @@ import { PAIR_PROFILES_URL, PROFILE_LINEAGE_URL, CUSTOMER_SERVICE_TOKEN_URL, -} from '../authentication-jwt-bearer/services'; +} from '../authentication-jwt-bearer/services.js'; export const MOCK_NONCE_URL = NONCE_URL(Env.PRD); export const MOCK_SRP_LOGIN_URL = SRP_LOGIN_URL(Env.PRD); diff --git a/packages/profile-sync-controller/src/sdk/mocks/userstorage.ts b/packages/profile-sync-controller/src/sdk/mocks/userstorage.ts index ecd341fc3bd..535c0c8b3b4 100644 --- a/packages/profile-sync-controller/src/sdk/mocks/userstorage.ts +++ b/packages/profile-sync-controller/src/sdk/mocks/userstorage.ts @@ -1,7 +1,7 @@ -import encryption, { createSHA256Hash } from '../../shared/encryption'; -import { Env } from '../../shared/env'; -import { USER_STORAGE_FEATURE_NAMES } from '../../shared/storage-schema'; -import { STORAGE_URL } from '../user-storage'; +import encryption, { createSHA256Hash } from '../../shared/encryption/index.js'; +import { Env } from '../../shared/env.js'; +import { USER_STORAGE_FEATURE_NAMES } from '../../shared/storage-schema.js'; +import { STORAGE_URL } from '../user-storage.js'; // Example mock notifications storage entry (wildcard) export const MOCK_STORAGE_URL = STORAGE_URL( diff --git a/packages/profile-sync-controller/src/sdk/user-storage.test.ts b/packages/profile-sync-controller/src/sdk/user-storage.test.ts index 397fcbd298c..58732e8935d 100644 --- a/packages/profile-sync-controller/src/sdk/user-storage.test.ts +++ b/packages/profile-sync-controller/src/sdk/user-storage.test.ts @@ -1,12 +1,13 @@ +import { jest } from '@jest/globals'; import nock from 'nock'; import type { UserStorageGenericFeatureKey } from 'src/shared/storage-schema'; -import encryption, { createSHA256Hash } from '../shared/encryption'; -import { SHARED_SALT } from '../shared/encryption/constants'; -import { Env } from '../shared/env'; -import { USER_STORAGE_FEATURE_NAMES } from '../shared/storage-schema'; -import { arrangeAuthAPIs } from './__fixtures__/auth'; -import { arrangeAuth, typedMockFn } from './__fixtures__/test-utils'; +import { SHARED_SALT } from '../shared/encryption/constants.js'; +import encryption, { createSHA256Hash } from '../shared/encryption/index.js'; +import { Env } from '../shared/env.js'; +import { USER_STORAGE_FEATURE_NAMES } from '../shared/storage-schema.js'; +import { arrangeAuthAPIs } from './__fixtures__/auth.js'; +import { arrangeAuth, typedMockFn } from './__fixtures__/test-utils.js'; import { handleMockUserStorageGet, handleMockUserStoragePut, @@ -14,18 +15,18 @@ import { handleMockUserStorageDeleteAllFeatureEntries, handleMockUserStorageDelete, handleMockUserStorageBatchDelete, -} from './__fixtures__/userstorage'; -import type { IBaseAuth } from './authentication-jwt-bearer/types'; -import { NotFoundError, UserStorageError } from './errors'; +} from './__fixtures__/userstorage.js'; +import type { IBaseAuth } from './authentication-jwt-bearer/types.js'; +import { NotFoundError, UserStorageError } from './errors.js'; import { MOCK_NOTIFICATIONS_DATA, MOCK_STORAGE_KEY, MOCK_STORAGE_RESPONSE, MOCK_STORAGE_URL, MOCK_STORAGE_URL_ALL_FEATURE_ENTRIES, -} from './mocks/userstorage'; -import type { StorageOptions } from './user-storage'; -import { STORAGE_URL, UserStorage } from './user-storage'; +} from './mocks/userstorage.js'; +import type { StorageOptions } from './user-storage.js'; +import { STORAGE_URL, UserStorage } from './user-storage.js'; const MOCK_SRP = '0x6265617665726275696c642e6f7267'; const MOCK_ADDRESS = '0x68757d15a4d8d1421c17003512AFce15D3f3FaDa'; diff --git a/packages/profile-sync-controller/src/sdk/user-storage.ts b/packages/profile-sync-controller/src/sdk/user-storage.ts index df3b59754f3..714cc8f7b3a 100644 --- a/packages/profile-sync-controller/src/sdk/user-storage.ts +++ b/packages/profile-sync-controller/src/sdk/user-storage.ts @@ -1,17 +1,17 @@ -import encryption, { createSHA256Hash } from '../shared/encryption'; -import { SHARED_SALT } from '../shared/encryption/constants'; -import type { Env } from '../shared/env'; -import { getEnvUrls } from '../shared/env'; +import { SHARED_SALT } from '../shared/encryption/constants.js'; +import encryption, { createSHA256Hash } from '../shared/encryption/index.js'; +import type { Env } from '../shared/env.js'; +import { getEnvUrls } from '../shared/env.js'; import type { UserStorageGenericFeatureKey, UserStorageGenericFeatureName, UserStorageGenericPathWithFeatureAndKey, UserStorageGenericPathWithFeatureOnly, -} from '../shared/storage-schema'; -import { createEntryPath } from '../shared/storage-schema'; -import type { NativeScrypt } from '../shared/types/encryption'; -import type { IBaseAuth } from './authentication-jwt-bearer/types'; -import { NotFoundError, UserStorageError } from './errors'; +} from '../shared/storage-schema.js'; +import { createEntryPath } from '../shared/storage-schema.js'; +import type { NativeScrypt } from '../shared/types/encryption.js'; +import type { IBaseAuth } from './authentication-jwt-bearer/types.js'; +import { NotFoundError, UserStorageError } from './errors.js'; export const STORAGE_URL = (env: Env, encryptedPath: string) => `${getEnvUrls(env).userStorageApiUrl}/api/v1/userstorage/${encryptedPath}`; diff --git a/packages/profile-sync-controller/src/sdk/utils/eip-6963-metamask-provider.test.ts b/packages/profile-sync-controller/src/sdk/utils/eip-6963-metamask-provider.test.ts index 5307131830e..329e88a4b46 100644 --- a/packages/profile-sync-controller/src/sdk/utils/eip-6963-metamask-provider.test.ts +++ b/packages/profile-sync-controller/src/sdk/utils/eip-6963-metamask-provider.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; import type { Eip1193Provider } from 'ethers'; -import type { MockVariable } from '../__fixtures__/test-utils'; -import type { AnnounceProviderEvent } from './eip-6963-metamask-provider'; +import type { MockVariable } from '../__fixtures__/test-utils.js'; +import type { AnnounceProviderEvent } from './eip-6963-metamask-provider.js'; import { getMetaMaskProviderEIP6963, metamaskClientsRdns, -} from './eip-6963-metamask-provider'; +} from './eip-6963-metamask-provider.js'; describe('getMetaMaskProviderEIP6963() tests', () => { let unsubscribe: undefined | (() => void); diff --git a/packages/profile-sync-controller/src/sdk/utils/messaging-signing-snap-requests.test.ts b/packages/profile-sync-controller/src/sdk/utils/messaging-signing-snap-requests.test.ts index fb9e022890c..9861629c0e2 100644 --- a/packages/profile-sync-controller/src/sdk/utils/messaging-signing-snap-requests.test.ts +++ b/packages/profile-sync-controller/src/sdk/utils/messaging-signing-snap-requests.test.ts @@ -1,13 +1,13 @@ -import { arrangeMockProvider } from '../__fixtures__/test-utils'; -import type { MockVariable } from '../__fixtures__/test-utils'; -import type { Snap } from './messaging-signing-snap-requests'; +import { arrangeMockProvider } from '../__fixtures__/test-utils.js'; +import type { MockVariable } from '../__fixtures__/test-utils.js'; +import type { Snap } from './messaging-signing-snap-requests.js'; import { MESSAGE_SIGNING_SNAP, SNAP_ORIGIN, connectSnap, getSnaps, isSnapConnected, -} from './messaging-signing-snap-requests'; +} from './messaging-signing-snap-requests.js'; /** * Most of these utilities are wrappers around making wallet requests, diff --git a/packages/profile-sync-controller/src/sdk/utils/validate-login-response.test.ts b/packages/profile-sync-controller/src/sdk/utils/validate-login-response.test.ts index 18a7bd914dd..cfe52492afb 100644 --- a/packages/profile-sync-controller/src/sdk/utils/validate-login-response.test.ts +++ b/packages/profile-sync-controller/src/sdk/utils/validate-login-response.test.ts @@ -1,5 +1,5 @@ -import type { LoginResponse } from '../authentication'; -import { validateLoginResponse } from './validate-login-response'; +import type { LoginResponse } from '../authentication.js'; +import { validateLoginResponse } from './validate-login-response.js'; /** * Creates a minimal JWT string with the given payload claims. diff --git a/packages/profile-sync-controller/src/sdk/utils/validate-login-response.ts b/packages/profile-sync-controller/src/sdk/utils/validate-login-response.ts index c8ee45ca260..0346a9e7908 100644 --- a/packages/profile-sync-controller/src/sdk/utils/validate-login-response.ts +++ b/packages/profile-sync-controller/src/sdk/utils/validate-login-response.ts @@ -1,4 +1,4 @@ -import type { LoginResponse } from '../authentication'; +import type { LoginResponse } from '../authentication.js'; /** * Validates that the input is a well-formed, non-expired LoginResponse. diff --git a/packages/profile-sync-controller/src/sdk/utils/validate-pair-response.test.ts b/packages/profile-sync-controller/src/sdk/utils/validate-pair-response.test.ts index 96fcaf89529..5b8899b83af 100644 --- a/packages/profile-sync-controller/src/sdk/utils/validate-pair-response.test.ts +++ b/packages/profile-sync-controller/src/sdk/utils/validate-pair-response.test.ts @@ -1,5 +1,5 @@ -import type { RawPairResponse } from './validate-pair-response'; -import { validatePairResponse } from './validate-pair-response'; +import type { RawPairResponse } from './validate-pair-response.js'; +import { validatePairResponse } from './validate-pair-response.js'; function createValidRawPairResponse(): RawPairResponse { return { diff --git a/packages/profile-sync-controller/src/shared/encryption/cache.ts b/packages/profile-sync-controller/src/shared/encryption/cache.ts index 7552ef60d1a..10c55d90b3f 100644 --- a/packages/profile-sync-controller/src/shared/encryption/cache.ts +++ b/packages/profile-sync-controller/src/shared/encryption/cache.ts @@ -1,5 +1,5 @@ -import { SHARED_SALT } from './constants'; -import { byteArrayToBase64 } from './utils'; +import { SHARED_SALT } from './constants.js'; +import { byteArrayToBase64 } from './utils.js'; type CachedEntry = { salt: Uint8Array; diff --git a/packages/profile-sync-controller/src/shared/encryption/encryption.test.ts b/packages/profile-sync-controller/src/shared/encryption/encryption.test.ts index 3517725ca3a..e83dd937c93 100644 --- a/packages/profile-sync-controller/src/shared/encryption/encryption.test.ts +++ b/packages/profile-sync-controller/src/shared/encryption/encryption.test.ts @@ -1,5 +1,5 @@ -import { MAX_KDF_PROMISE_CACHE_SIZE } from './constants'; -import encryption, { createSHA256Hash } from './encryption'; +import { MAX_KDF_PROMISE_CACHE_SIZE } from './constants.js'; +import encryption, { createSHA256Hash } from './encryption.js'; describe('encryption tests', () => { const PASSWORD = '123'; diff --git a/packages/profile-sync-controller/src/shared/encryption/encryption.ts b/packages/profile-sync-controller/src/shared/encryption/encryption.ts index 956a0fa4933..c96740b83d7 100644 --- a/packages/profile-sync-controller/src/shared/encryption/encryption.ts +++ b/packages/profile-sync-controller/src/shared/encryption/encryption.ts @@ -4,12 +4,12 @@ import { scryptAsync } from '@noble/hashes/scrypt'; import { sha256 } from '@noble/hashes/sha256'; import { utf8ToBytes, concatBytes, bytesToHex } from '@noble/hashes/utils'; -import type { NativeScrypt } from '../types/encryption'; +import type { NativeScrypt } from '../types/encryption.js'; import { getCachedKeyBySalt, getCachedKeyGeneratedWithSharedSalt, setCachedKey, -} from './cache'; +} from './cache.js'; import { ALGORITHM_KEY_SIZE, ALGORITHM_NONCE_SIZE, @@ -19,13 +19,13 @@ import { SCRYPT_r, SCRYPT_SALT_SIZE, SHARED_SALT, -} from './constants'; +} from './constants.js'; import { base64ToByteArray, byteArrayToBase64, bytesToUtf8, stringToByteArray, -} from './utils'; +} from './utils.js'; export type EncryptedPayload = { // version @@ -296,7 +296,7 @@ class EncryptorDecryptor { this.#kdfPromiseCache.set(cacheKey, kdfPromise); // Clean up the cache after completion (both success and failure) - // eslint-disable-next-line no-void + void kdfPromise.finally(() => { this.#kdfPromiseCache.delete(cacheKey); }); diff --git a/packages/profile-sync-controller/src/shared/encryption/index.ts b/packages/profile-sync-controller/src/shared/encryption/index.ts index 90cdb5f5f2e..d8341931f30 100644 --- a/packages/profile-sync-controller/src/shared/encryption/index.ts +++ b/packages/profile-sync-controller/src/shared/encryption/index.ts @@ -1,5 +1,5 @@ -import Encryption from './encryption'; +import Encryption from './encryption.js'; export { Encryption }; -export * from './encryption'; +export * from './encryption.js'; export default Encryption; diff --git a/packages/profile-sync-controller/src/shared/env.test.ts b/packages/profile-sync-controller/src/shared/env.test.ts index 4f9e1403abd..dbac8ed197c 100644 --- a/packages/profile-sync-controller/src/shared/env.test.ts +++ b/packages/profile-sync-controller/src/shared/env.test.ts @@ -1,5 +1,5 @@ -import type { MockVariable } from '../sdk/__fixtures__/test-utils'; -import { getEnvUrls, Env, Platform, getOidcClientId } from './env'; +import type { MockVariable } from '../sdk/__fixtures__/test-utils.js'; +import { getEnvUrls, Env, Platform, getOidcClientId } from './env.js'; describe('getEnvUrls', () => { it('should return URLs if given a valid environment', () => { diff --git a/packages/profile-sync-controller/src/shared/storage-schema.test.ts b/packages/profile-sync-controller/src/shared/storage-schema.test.ts index ca2597b7777..d34d5fa21ed 100644 --- a/packages/profile-sync-controller/src/shared/storage-schema.test.ts +++ b/packages/profile-sync-controller/src/shared/storage-schema.test.ts @@ -2,7 +2,7 @@ import { createEntryPath, getFeatureAndKeyFromPath, USER_STORAGE_FEATURE_NAMES, -} from './storage-schema'; +} from './storage-schema.js'; // eslint-disable-next-line @typescript-eslint/no-explicit-any type ErroneousUserStoragePath = any; diff --git a/packages/profile-sync-controller/src/shared/storage-schema.ts b/packages/profile-sync-controller/src/shared/storage-schema.ts index 90fb314d496..dc9f73fcfb6 100644 --- a/packages/profile-sync-controller/src/shared/storage-schema.ts +++ b/packages/profile-sync-controller/src/shared/storage-schema.ts @@ -1,4 +1,4 @@ -import { createSHA256Hash } from './encryption'; +import { createSHA256Hash } from './encryption/index.js'; /** * The User Storage Endpoint requires a feature name and a namespace key. diff --git a/packages/profile-sync-controller/src/shared/types/services.ts b/packages/profile-sync-controller/src/shared/types/services.ts index 49dbbb2b4fa..c20ca5d6128 100644 --- a/packages/profile-sync-controller/src/shared/types/services.ts +++ b/packages/profile-sync-controller/src/shared/types/services.ts @@ -1,4 +1,4 @@ -import type { Platform } from '../env'; +import type { Platform } from '../env.js'; export type ClientMetaMetrics = { metametricsId: string; diff --git a/packages/profile-sync-controller/src/shared/utils/event-queue.test.ts b/packages/profile-sync-controller/src/shared/utils/event-queue.test.ts index d44a4f81bc1..7ddcc09edaf 100644 --- a/packages/profile-sync-controller/src/shared/utils/event-queue.test.ts +++ b/packages/profile-sync-controller/src/shared/utils/event-queue.test.ts @@ -1,4 +1,6 @@ -import { EventQueue } from './event-queue'; +import { jest } from '@jest/globals'; + +import { EventQueue } from './event-queue.js'; describe('EventQueue', () => { let eventQueue: EventQueue; From c31338dc271f3a6872fde6598bee7ba6e0411289 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:50:02 +0200 Subject: [PATCH 069/115] ESLint fix and `jest` global import for multichain-transactions-controller --- ...ultichainTransactionsController-method-action-types.ts | 2 +- .../src/MultichainTransactionsController.test.ts | 7 ++++--- .../src/MultichainTransactionsController.ts | 6 ++---- packages/multichain-transactions-controller/src/index.ts | 8 ++++---- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/packages/multichain-transactions-controller/src/MultichainTransactionsController-method-action-types.ts b/packages/multichain-transactions-controller/src/MultichainTransactionsController-method-action-types.ts index 6a825efeec0..ca9e32605d6 100644 --- a/packages/multichain-transactions-controller/src/MultichainTransactionsController-method-action-types.ts +++ b/packages/multichain-transactions-controller/src/MultichainTransactionsController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { MultichainTransactionsController } from './MultichainTransactionsController'; +import type { MultichainTransactionsController } from './MultichainTransactionsController.js'; /** * Updates transactions for a specific account. This is used for the initial fetch diff --git a/packages/multichain-transactions-controller/src/MultichainTransactionsController.test.ts b/packages/multichain-transactions-controller/src/MultichainTransactionsController.test.ts index cf1ac2319d2..81dbdefd975 100644 --- a/packages/multichain-transactions-controller/src/MultichainTransactionsController.test.ts +++ b/packages/multichain-transactions-controller/src/MultichainTransactionsController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import type { AccountTransactionsUpdatedEventPayload, @@ -24,15 +25,15 @@ import type { import type { CaipChainId } from '@metamask/utils'; import { v4 as uuidv4 } from 'uuid'; -import { MultichainNetwork } from './constants'; +import { MultichainNetwork } from './constants.js'; import { MultichainTransactionsController, getDefaultMultichainTransactionsControllerState, -} from './MultichainTransactionsController'; +} from './MultichainTransactionsController.js'; import type { MultichainTransactionsControllerState, MultichainTransactionsControllerMessenger, -} from './MultichainTransactionsController'; +} from './MultichainTransactionsController.js'; const mockBtcAccount = { address: 'bc1qssdcp5kvwh6nghzg9tuk99xsflwkdv4hgvq58q', diff --git a/packages/multichain-transactions-controller/src/MultichainTransactionsController.ts b/packages/multichain-transactions-controller/src/MultichainTransactionsController.ts index d51575beb8b..d8a96a16dd1 100644 --- a/packages/multichain-transactions-controller/src/MultichainTransactionsController.ts +++ b/packages/multichain-transactions-controller/src/MultichainTransactionsController.ts @@ -24,7 +24,7 @@ import { HandlerType } from '@metamask/snaps-utils'; import type { CaipChainId, Json, JsonRpcRequest } from '@metamask/utils'; import type { Draft } from 'immer'; -import type { MultichainTransactionsControllerMethodActions } from './MultichainTransactionsController-method-action-types'; +import type { MultichainTransactionsControllerMethodActions } from './MultichainTransactionsController-method-action-types.js'; const controllerName = 'MultichainTransactionsController'; @@ -451,9 +451,7 @@ export class MultichainTransactionsController extends BaseController< this.update((state) => { Object.entries(updatedTransactions).forEach(([accountId, chainsData]) => { - if (!state.nonEvmTransactions[accountId]) { - state.nonEvmTransactions[accountId] = {}; - } + state.nonEvmTransactions[accountId] ??= {}; Object.entries(chainsData).forEach(([chain, transactions]) => { state.nonEvmTransactions[accountId][chain as CaipChainId] = { diff --git a/packages/multichain-transactions-controller/src/index.ts b/packages/multichain-transactions-controller/src/index.ts index ed5c590d95f..f9e781a0ec1 100644 --- a/packages/multichain-transactions-controller/src/index.ts +++ b/packages/multichain-transactions-controller/src/index.ts @@ -1,4 +1,4 @@ -export { MultichainTransactionsController } from './MultichainTransactionsController'; +export { MultichainTransactionsController } from './MultichainTransactionsController.js'; export type { MultichainTransactionsControllerState, PaginationOptions, @@ -10,6 +10,6 @@ export type { MultichainTransactionsControllerMessenger, MultichainTransactionsControllerTransactionSubmittedEvent, MultichainTransactionsControllerTransactionConfirmedEvent, -} from './MultichainTransactionsController'; -export type { MultichainTransactionsControllerUpdateTransactionsForAccountAction } from './MultichainTransactionsController-method-action-types'; -export { MultichainNetwork, MultichainNativeAsset } from './constants'; +} from './MultichainTransactionsController.js'; +export type { MultichainTransactionsControllerUpdateTransactionsForAccountAction } from './MultichainTransactionsController-method-action-types.js'; +export { MultichainNetwork, MultichainNativeAsset } from './constants.js'; From 9ffd0cc639d0b979d01447d66f2bdfd8b6dacbaa Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:50:03 +0200 Subject: [PATCH 070/115] ESLint fix and `jest` global import for multichain-account-service --- .../src/MultichainAccountGroup.test.ts | 12 +++---- ...chainAccountService-method-action-types.ts | 2 +- .../src/MultichainAccountService.test.ts | 33 ++++++++++--------- .../src/MultichainAccountWallet.test.ts | 13 ++++---- .../src/analytics/index.ts | 2 +- .../src/analytics/perf.test.ts | 7 ++-- .../src/analytics/perf.ts | 4 +-- .../src/analytics/traces.test.ts | 5 +-- .../src/analytics/traces.ts | 2 +- .../src/errors.test.ts | 7 ++-- .../multichain-account-service/src/errors.ts | 6 ++-- .../multichain-account-service/src/logger.ts | 2 +- .../providers/AccountProviderWrapper.test.ts | 6 ++-- .../src/providers/AccountProviderWrapper.ts | 4 +-- .../src/providers/BaseBip44AccountProvider.ts | 2 +- .../src/providers/BtcAccountProvider.test.ts | 18 +++++----- .../src/providers/EvmAccountProvider.test.ts | 9 ++--- .../src/providers/SnapAccountProvider.test.ts | 21 ++++++------ .../src/providers/SnapKeyringClient.test.ts | 5 +-- .../src/providers/SolAccountProvider.test.ts | 18 +++++----- .../src/providers/TrxAccountProvider.test.ts | 18 +++++----- .../src/providers/XlmAccountProvider.test.ts | 16 ++++----- .../src/providers/index.ts | 18 +++++----- .../src/providers/utils.test.ts | 2 +- .../src/tests/index.ts | 8 ++--- .../src/tests/messenger.ts | 3 +- .../src/tests/providers.ts | 1 + .../multichain-account-service/src/types.ts | 4 +-- .../src/utils.test.ts | 2 +- 29 files changed, 126 insertions(+), 124 deletions(-) diff --git a/packages/multichain-account-service/src/MultichainAccountGroup.test.ts b/packages/multichain-account-service/src/MultichainAccountGroup.test.ts index 927b6d6e764..2baca3d5e7e 100644 --- a/packages/multichain-account-service/src/MultichainAccountGroup.test.ts +++ b/packages/multichain-account-service/src/MultichainAccountGroup.test.ts @@ -8,10 +8,10 @@ import { import { EthScope, SolScope } from '@metamask/keyring-api'; import type { InternalAccount } from '@metamask/keyring-internal-api'; -import type { GroupState } from './MultichainAccountGroup'; -import { MultichainAccountGroup } from './MultichainAccountGroup'; -import { MultichainAccountWallet } from './MultichainAccountWallet'; -import type { RootMessenger, MockAccountProvider } from './tests'; +import type { GroupState } from './MultichainAccountGroup.js'; +import { MultichainAccountGroup } from './MultichainAccountGroup.js'; +import { MultichainAccountWallet } from './MultichainAccountWallet.js'; +import type { RootMessenger, MockAccountProvider } from './tests/index.js'; import { MOCK_SNAP_ACCOUNT_2, MOCK_WALLET_1_BTC_P2TR_ACCOUNT, @@ -22,8 +22,8 @@ import { setupBip44AccountProvider, getMultichainAccountServiceMessenger, getRootMessenger, -} from './tests'; -import type { MultichainAccountServiceMessenger } from './types'; +} from './tests/index.js'; +import type { MultichainAccountServiceMessenger } from './types.js'; function setup({ groupIndex = 0, diff --git a/packages/multichain-account-service/src/MultichainAccountService-method-action-types.ts b/packages/multichain-account-service/src/MultichainAccountService-method-action-types.ts index 7d998dd7610..24a2ee83aaa 100644 --- a/packages/multichain-account-service/src/MultichainAccountService-method-action-types.ts +++ b/packages/multichain-account-service/src/MultichainAccountService-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { MultichainAccountService } from './MultichainAccountService'; +import type { MultichainAccountService } from './MultichainAccountService.js'; /** * Initialize the service and constructs the internal reprensentation of diff --git a/packages/multichain-account-service/src/MultichainAccountService.test.ts b/packages/multichain-account-service/src/MultichainAccountService.test.ts index a9b2dc0fd7a..cfbb39def91 100644 --- a/packages/multichain-account-service/src/MultichainAccountService.test.ts +++ b/packages/multichain-account-service/src/MultichainAccountService.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Bip44Account, isBip44Account } from '@metamask/account-api'; import { mnemonicPhraseToBytes } from '@metamask/key-tree'; import type { @@ -15,33 +16,33 @@ import type { Keyring } from '@metamask/keyring-api/v2'; import { KeyringType } from '@metamask/keyring-api/v2'; import type { KeyringObject } from '@metamask/keyring-controller'; -import { traceFallback } from './analytics'; -import { isPerfEnabled, withLocalPerfTrace } from './analytics/perf'; +import { traceFallback } from './analytics/index.js'; +import { isPerfEnabled, withLocalPerfTrace } from './analytics/perf.js'; import type { MultichainAccountServiceOptions, RemoveMultichainAccountWalletFailureContext, -} from './MultichainAccountService'; -import { MultichainAccountService } from './MultichainAccountService'; -import type { Bip44AccountProvider } from './providers'; -import { TimeoutError } from './providers'; -import { AccountProviderWrapper } from './providers/AccountProviderWrapper'; +} from './MultichainAccountService.js'; +import { MultichainAccountService } from './MultichainAccountService.js'; +import { AccountProviderWrapper } from './providers/AccountProviderWrapper.js'; import { BTC_ACCOUNT_PROVIDER_NAME, BtcAccountProvider, -} from './providers/BtcAccountProvider'; +} from './providers/BtcAccountProvider.js'; import { EVM_ACCOUNT_PROVIDER_NAME, EvmAccountProvider, -} from './providers/EvmAccountProvider'; +} from './providers/EvmAccountProvider.js'; +import type { Bip44AccountProvider } from './providers/index.js'; +import { TimeoutError } from './providers/index.js'; import { SOL_ACCOUNT_PROVIDER_NAME, SolAccountProvider, -} from './providers/SolAccountProvider'; +} from './providers/SolAccountProvider.js'; import { TRX_ACCOUNT_PROVIDER_NAME, TrxAccountProvider, -} from './providers/TrxAccountProvider'; -import type { RootMessenger, MockAccountProvider } from './tests'; +} from './providers/TrxAccountProvider.js'; +import type { RootMessenger, MockAccountProvider } from './tests/index.js'; import { MOCK_HARDWARE_ACCOUNT_1, MOCK_HD_ACCOUNT_1, @@ -51,7 +52,7 @@ import { MOCK_SNAP_ACCOUNT_2, MOCK_SOL_ACCOUNT_1, MockAccountBuilder, -} from './tests'; +} from './tests/index.js'; import { MOCK_HD_KEYRING_1, MOCK_HD_KEYRING_2, @@ -59,9 +60,9 @@ import { getRootMessenger, makeMockAccountProvider, setupBip44AccountProvider, -} from './tests'; -import type { MultichainAccountServiceMessenger } from './types'; -import type { SentryError } from './utils'; +} from './tests/index.js'; +import type { MultichainAccountServiceMessenger } from './types.js'; +import type { SentryError } from './utils.js'; // Mock perf helpers so tests can control isPerfEnabled() without setting DEBUG env var. jest.mock('./analytics/perf', () => ({ diff --git a/packages/multichain-account-service/src/MultichainAccountWallet.test.ts b/packages/multichain-account-service/src/MultichainAccountWallet.test.ts index a91654ce4d7..c385df1169a 100644 --- a/packages/multichain-account-service/src/MultichainAccountWallet.test.ts +++ b/packages/multichain-account-service/src/MultichainAccountWallet.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { Bip44Account } from '@metamask/account-api'; import { AccountWalletType, @@ -16,10 +17,10 @@ import { import type { InternalAccount } from '@metamask/keyring-internal-api'; import { createDeferredPromise } from '@metamask/utils'; -import type { WalletState } from './MultichainAccountWallet'; -import { MultichainAccountWallet } from './MultichainAccountWallet'; -import { TimeoutError } from './providers'; -import type { MockAccountProvider, RootMessenger } from './tests'; +import type { WalletState } from './MultichainAccountWallet.js'; +import { MultichainAccountWallet } from './MultichainAccountWallet.js'; +import { TimeoutError } from './providers/index.js'; +import type { MockAccountProvider, RootMessenger } from './tests/index.js'; import { MOCK_HD_ACCOUNT_1, MOCK_HD_KEYRING_1, @@ -35,8 +36,8 @@ import { setupBip44AccountProvider, getMultichainAccountServiceMessenger, getRootMessenger, -} from './tests'; -import type { MultichainAccountServiceMessenger } from './types'; +} from './tests/index.js'; +import type { MultichainAccountServiceMessenger } from './types.js'; function setup({ entropySource = MOCK_WALLET_1_ENTROPY_SOURCE, diff --git a/packages/multichain-account-service/src/analytics/index.ts b/packages/multichain-account-service/src/analytics/index.ts index bc9f922b435..ad422446927 100644 --- a/packages/multichain-account-service/src/analytics/index.ts +++ b/packages/multichain-account-service/src/analytics/index.ts @@ -1 +1 @@ -export * from './traces'; +export * from './traces.js'; diff --git a/packages/multichain-account-service/src/analytics/perf.test.ts b/packages/multichain-account-service/src/analytics/perf.test.ts index eeb6cc7c807..b04391d3748 100644 --- a/packages/multichain-account-service/src/analytics/perf.test.ts +++ b/packages/multichain-account-service/src/analytics/perf.test.ts @@ -1,13 +1,14 @@ +import { jest } from '@jest/globals'; import type { TraceCallback, TraceRequest } from '@metamask/controller-utils'; -import { projectLogger } from '../logger'; +import { projectLogger } from '../logger.js'; import { isPerfEnabled, log as perfLog, tick, withLocalPerfTrace, -} from './perf'; -import { now } from './timer'; +} from './perf.js'; +import { now } from './timer.js'; jest.mock('./timer', () => ({ now: jest.fn(), diff --git a/packages/multichain-account-service/src/analytics/perf.ts b/packages/multichain-account-service/src/analytics/perf.ts index 4f31af7d151..62e7fd7938d 100644 --- a/packages/multichain-account-service/src/analytics/perf.ts +++ b/packages/multichain-account-service/src/analytics/perf.ts @@ -4,8 +4,8 @@ import type { TraceRequest, } from '@metamask/controller-utils'; -import { createModuleLogger, projectLogger } from '../logger'; -import { now } from './timer'; +import { createModuleLogger, projectLogger } from '../logger.js'; +import { now } from './timer.js'; export const log = createModuleLogger(projectLogger, 'perf'); diff --git a/packages/multichain-account-service/src/analytics/traces.test.ts b/packages/multichain-account-service/src/analytics/traces.test.ts index b669d8aebbb..4401998026d 100644 --- a/packages/multichain-account-service/src/analytics/traces.test.ts +++ b/packages/multichain-account-service/src/analytics/traces.test.ts @@ -1,14 +1,15 @@ +import { jest } from '@jest/globals'; import type { TraceRequest } from '@metamask/controller-utils'; import { AccountCreationType } from '@metamask/keyring-api'; import type { CreateAccountOptions } from '@metamask/keyring-api'; -import type { Bip44AccountProvider } from '../providers'; +import type { Bip44AccountProvider } from '../providers/index.js'; import { toCreateAccountsV2DataTraces, toProviderDataTraces, traceFallback, TraceName, -} from './traces'; +} from './traces.js'; describe('MultichainAccountService - Traces', () => { describe('traceFallback', () => { diff --git a/packages/multichain-account-service/src/analytics/traces.ts b/packages/multichain-account-service/src/analytics/traces.ts index eca4f03b3cc..d6e1be0b810 100644 --- a/packages/multichain-account-service/src/analytics/traces.ts +++ b/packages/multichain-account-service/src/analytics/traces.ts @@ -6,7 +6,7 @@ import type { import { CreateAccountOptions } from '@metamask/keyring-api'; // Explicit import to avoid circular dependency between `analytics` and `providers`. -import type { Bip44AccountProvider } from '../providers/BaseBip44AccountProvider'; +import type { Bip44AccountProvider } from '../providers/BaseBip44AccountProvider.js'; /** * Fallback function for tracing. diff --git a/packages/multichain-account-service/src/errors.test.ts b/packages/multichain-account-service/src/errors.test.ts index fdcf21a823a..4e9da19e34a 100644 --- a/packages/multichain-account-service/src/errors.test.ts +++ b/packages/multichain-account-service/src/errors.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; import { KeyringControllerError, KeyringControllerErrorMessage, } from '@metamask/keyring-controller'; -import { reportError } from './errors'; -import { logErrorAs } from './logger'; -import { TimeoutError } from './providers/utils'; +import { reportError } from './errors.js'; +import { logErrorAs } from './logger.js'; +import { TimeoutError } from './providers/utils.js'; jest.mock('./logger', () => ({ logErrorAs: jest.fn(), diff --git a/packages/multichain-account-service/src/errors.ts b/packages/multichain-account-service/src/errors.ts index 3cf130f0c81..425a882591c 100644 --- a/packages/multichain-account-service/src/errors.ts +++ b/packages/multichain-account-service/src/errors.ts @@ -1,9 +1,9 @@ -import { logErrorAs } from './logger'; +import { logErrorAs } from './logger.js'; import { isKeyringControllerLockedError, isTimeoutError, -} from './providers/utils'; -import { createSentryError } from './utils'; +} from './providers/utils.js'; +import { createSentryError } from './utils.js'; /** * Reports an error by logging it and optionally capturing it in Sentry. diff --git a/packages/multichain-account-service/src/logger.ts b/packages/multichain-account-service/src/logger.ts index 76dc8f6592f..98049e7d3d9 100644 --- a/packages/multichain-account-service/src/logger.ts +++ b/packages/multichain-account-service/src/logger.ts @@ -1,6 +1,6 @@ import { createProjectLogger, createModuleLogger } from '@metamask/utils'; -import { toErrorMessage } from './utils'; +import { toErrorMessage } from './utils.js'; export const projectLogger = createProjectLogger('multichain-account-service'); diff --git a/packages/multichain-account-service/src/providers/AccountProviderWrapper.test.ts b/packages/multichain-account-service/src/providers/AccountProviderWrapper.test.ts index dddb9f9a4ed..14432405e95 100644 --- a/packages/multichain-account-service/src/providers/AccountProviderWrapper.test.ts +++ b/packages/multichain-account-service/src/providers/AccountProviderWrapper.test.ts @@ -2,9 +2,9 @@ import { getMultichainAccountServiceMessenger, getRootMessenger, MOCK_WALLET_1_ENTROPY_SOURCE, -} from '../tests'; -import { AccountProviderWrapper } from './AccountProviderWrapper'; -import { EvmAccountProvider } from './EvmAccountProvider'; +} from '../tests/index.js'; +import { AccountProviderWrapper } from './AccountProviderWrapper.js'; +import { EvmAccountProvider } from './EvmAccountProvider.js'; function setup(): { wrapper: AccountProviderWrapper; diff --git a/packages/multichain-account-service/src/providers/AccountProviderWrapper.ts b/packages/multichain-account-service/src/providers/AccountProviderWrapper.ts index f973cab3dea..af9aae270cb 100644 --- a/packages/multichain-account-service/src/providers/AccountProviderWrapper.ts +++ b/packages/multichain-account-service/src/providers/AccountProviderWrapper.ts @@ -7,8 +7,8 @@ import type { import type { KeyringCapabilities } from '@metamask/keyring-api/v2'; import type { InternalAccount } from '@metamask/keyring-internal-api'; -import type { MultichainAccountServiceMessenger } from '../types'; -import { BaseBip44AccountProvider } from './BaseBip44AccountProvider'; +import type { MultichainAccountServiceMessenger } from '../types.js'; +import { BaseBip44AccountProvider } from './BaseBip44AccountProvider.js'; /** * A simple wrapper that adds disable functionality to any BaseBip44AccountProvider. diff --git a/packages/multichain-account-service/src/providers/BaseBip44AccountProvider.ts b/packages/multichain-account-service/src/providers/BaseBip44AccountProvider.ts index 18846f59146..5d2bccf63c1 100644 --- a/packages/multichain-account-service/src/providers/BaseBip44AccountProvider.ts +++ b/packages/multichain-account-service/src/providers/BaseBip44AccountProvider.ts @@ -15,7 +15,7 @@ import type { } from '@metamask/keyring-controller'; import type { InternalAccount } from '@metamask/keyring-internal-api'; -import type { MultichainAccountServiceMessenger } from '../types'; +import type { MultichainAccountServiceMessenger } from '../types.js'; /** * Asserts a keyring account is BIP-44 compatible. diff --git a/packages/multichain-account-service/src/providers/BtcAccountProvider.test.ts b/packages/multichain-account-service/src/providers/BtcAccountProvider.test.ts index eb1325206ef..2ee127d6967 100644 --- a/packages/multichain-account-service/src/providers/BtcAccountProvider.test.ts +++ b/packages/multichain-account-service/src/providers/BtcAccountProvider.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { isBip44Account } from '@metamask/account-api'; import { AccountCreationType, BtcScope } from '@metamask/keyring-api'; import type { KeyringCapabilities } from '@metamask/keyring-api/v2'; @@ -6,7 +7,7 @@ import type { InternalAccount } from '@metamask/keyring-internal-api'; import { SnapControllerState } from '@metamask/snaps-controllers'; import deepmerge from 'deepmerge'; -import { TraceName } from '../analytics/traces'; +import { TraceName } from '../analytics/traces.js'; import { getMultichainAccountServiceMessenger, getRootMessenger, @@ -17,23 +18,20 @@ import { MOCK_HD_KEYRING_1, MockAccountBuilder, toGroupIndexRangeArray, -} from '../tests'; -import type { RootMessenger, DeepPartial } from '../tests'; -import { AccountProviderWrapper } from './AccountProviderWrapper'; +} from '../tests/index.js'; +import type { RootMessenger, DeepPartial } from '../tests/index.js'; +import { AccountProviderWrapper } from './AccountProviderWrapper.js'; import { BTC_ACCOUNT_PROVIDER_DEFAULT_CONFIG, BTC_ACCOUNT_PROVIDER_NAME, BtcAccountProvider, -} from './BtcAccountProvider'; -import type { SnapAccountProviderConfig } from './SnapAccountProvider'; +} from './BtcAccountProvider.js'; +import type { SnapAccountProviderConfig } from './SnapAccountProvider.js'; function asConfig( partial: DeepPartial, ): SnapAccountProviderConfig { - return deepmerge( - BTC_ACCOUNT_PROVIDER_DEFAULT_CONFIG, - partial, - ) as SnapAccountProviderConfig; + return deepmerge(BTC_ACCOUNT_PROVIDER_DEFAULT_CONFIG, partial); } /** diff --git a/packages/multichain-account-service/src/providers/EvmAccountProvider.test.ts b/packages/multichain-account-service/src/providers/EvmAccountProvider.test.ts index 7b74221d331..43c791ad61a 100644 --- a/packages/multichain-account-service/src/providers/EvmAccountProvider.test.ts +++ b/packages/multichain-account-service/src/providers/EvmAccountProvider.test.ts @@ -1,4 +1,5 @@ import { publicToAddress } from '@ethereumjs/util'; +import { jest } from '@jest/globals'; import { isBip44Account } from '@metamask/account-api'; import { HdKeyring as LegacyHdKeyring } from '@metamask/eth-hd-keyring'; import { AccountCreationType, EthScope } from '@metamask/keyring-api'; @@ -16,7 +17,7 @@ import type { } from '@metamask/network-controller'; import { add0x, bytesToHex } from '@metamask/utils'; -import { TraceName } from '../analytics/traces'; +import { TraceName } from '../analytics/traces.js'; import { asKeyringAccount, getMultichainAccountServiceMessenger, @@ -28,14 +29,14 @@ import { MockAccountBuilder, mockAsInternalAccount, RootMessenger, -} from '../tests'; +} from '../tests/index.js'; import { EVM_ACCOUNT_PROVIDER_DEFAULT_CONFIG, EVM_ACCOUNT_PROVIDER_NAME, EvmAccountProvider, EvmAccountProviderConfig, -} from './EvmAccountProvider'; -import { TimeoutError } from './utils'; +} from './EvmAccountProvider.js'; +import { TimeoutError } from './utils.js'; // Real HD root rooted at a valid BIP-39 test mnemonic so the address peeked via // `keyring.root.deriveChild(groupIndex)` matches the address that the mock's diff --git a/packages/multichain-account-service/src/providers/SnapAccountProvider.test.ts b/packages/multichain-account-service/src/providers/SnapAccountProvider.test.ts index 68a21b1db85..f21c51e5ae6 100644 --- a/packages/multichain-account-service/src/providers/SnapAccountProvider.test.ts +++ b/packages/multichain-account-service/src/providers/SnapAccountProvider.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { isBip44Account } from '@metamask/account-api'; import type { Bip44Account } from '@metamask/account-api'; import type { TraceCallback, TraceRequest } from '@metamask/controller-utils'; @@ -21,8 +22,8 @@ import type { InternalAccount } from '@metamask/keyring-internal-api'; import type { JsonRpcRequest, SnapId } from '@metamask/snaps-sdk'; import deepmerge from 'deepmerge'; -import { traceFallback } from '../analytics'; -import type { DeepPartial, RootMessenger } from '../tests'; +import { traceFallback } from '../analytics/index.js'; +import type { DeepPartial, RootMessenger } from '../tests/index.js'; import { asKeyringAccount, getMultichainAccountServiceMessenger, @@ -30,17 +31,17 @@ import { MOCK_HD_ACCOUNT_1, MOCK_HD_ACCOUNT_2, MockAccountBuilder, -} from '../tests'; -import type { MultichainAccountServiceMessenger } from '../types'; -import { BtcAccountProvider } from './BtcAccountProvider'; -import type { SnapAccountProviderConfig } from './SnapAccountProvider'; +} from '../tests/index.js'; +import type { MultichainAccountServiceMessenger } from '../types.js'; +import { BtcAccountProvider } from './BtcAccountProvider.js'; +import type { SnapAccountProviderConfig } from './SnapAccountProvider.js'; import { isSnapAccountProvider, SnapAccountProvider, -} from './SnapAccountProvider'; -import { SolAccountProvider } from './SolAccountProvider'; -import { TrxAccountProvider } from './TrxAccountProvider'; -import { TimeoutError } from './utils'; +} from './SnapAccountProvider.js'; +import { SolAccountProvider } from './SolAccountProvider.js'; +import { TrxAccountProvider } from './TrxAccountProvider.js'; +import { TimeoutError } from './utils.js'; jest.mock('../analytics', () => { const actual = jest.requireActual('../analytics'); diff --git a/packages/multichain-account-service/src/providers/SnapKeyringClient.test.ts b/packages/multichain-account-service/src/providers/SnapKeyringClient.test.ts index 7c3d5fc6a44..0bbeefcaf6b 100644 --- a/packages/multichain-account-service/src/providers/SnapKeyringClient.test.ts +++ b/packages/multichain-account-service/src/providers/SnapKeyringClient.test.ts @@ -1,7 +1,8 @@ +import { jest } from '@jest/globals'; import { SolScope } from '@metamask/keyring-api'; -import { createSnapKeyringClient } from './SnapKeyringClient'; -import type { Sender } from './SnapKeyringClient'; +import { createSnapKeyringClient } from './SnapKeyringClient.js'; +import type { Sender } from './SnapKeyringClient.js'; /** * Builds a mock {@link Sender} whose `send` resolves to the given response. diff --git a/packages/multichain-account-service/src/providers/SolAccountProvider.test.ts b/packages/multichain-account-service/src/providers/SolAccountProvider.test.ts index cdbf7a14d3b..bf88c1756b8 100644 --- a/packages/multichain-account-service/src/providers/SolAccountProvider.test.ts +++ b/packages/multichain-account-service/src/providers/SolAccountProvider.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { isBip44Account } from '@metamask/account-api'; import { AccountCreationType, SolScope } from '@metamask/keyring-api'; import type { KeyringCapabilities } from '@metamask/keyring-api/v2'; @@ -6,7 +7,7 @@ import type { InternalAccount } from '@metamask/keyring-internal-api'; import { SnapControllerState } from '@metamask/snaps-controllers'; import deepmerge from 'deepmerge'; -import { TraceName } from '../analytics/traces'; +import { TraceName } from '../analytics/traces.js'; import { getMultichainAccountServiceMessenger, getRootMessenger, @@ -16,23 +17,20 @@ import { MOCK_SOL_ACCOUNT_1, MOCK_SOL_DISCOVERED_ACCOUNT_1, MockAccountBuilder, -} from '../tests'; -import type { RootMessenger, DeepPartial } from '../tests'; -import { AccountProviderWrapper } from './AccountProviderWrapper'; -import type { SnapAccountProviderConfig } from './SnapAccountProvider'; +} from '../tests/index.js'; +import type { RootMessenger, DeepPartial } from '../tests/index.js'; +import { AccountProviderWrapper } from './AccountProviderWrapper.js'; +import type { SnapAccountProviderConfig } from './SnapAccountProvider.js'; import { SOL_ACCOUNT_PROVIDER_DEFAULT_CONFIG, SOL_ACCOUNT_PROVIDER_NAME, SolAccountProvider, -} from './SolAccountProvider'; +} from './SolAccountProvider.js'; function asConfig( partial: DeepPartial, ): SnapAccountProviderConfig { - return deepmerge( - SOL_ACCOUNT_PROVIDER_DEFAULT_CONFIG, - partial, - ) as SnapAccountProviderConfig; + return deepmerge(SOL_ACCOUNT_PROVIDER_DEFAULT_CONFIG, partial); } /** diff --git a/packages/multichain-account-service/src/providers/TrxAccountProvider.test.ts b/packages/multichain-account-service/src/providers/TrxAccountProvider.test.ts index a8fbf169e75..eec2b5a847f 100644 --- a/packages/multichain-account-service/src/providers/TrxAccountProvider.test.ts +++ b/packages/multichain-account-service/src/providers/TrxAccountProvider.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { isBip44Account } from '@metamask/account-api'; import { AccountCreationType, TrxScope } from '@metamask/keyring-api'; import type { KeyringCapabilities } from '@metamask/keyring-api/v2'; @@ -6,7 +7,7 @@ import type { InternalAccount } from '@metamask/keyring-internal-api'; import { SnapControllerState } from '@metamask/snaps-controllers'; import deepmerge from 'deepmerge'; -import { TraceName } from '../analytics/traces'; +import { TraceName } from '../analytics/traces.js'; import { getMultichainAccountServiceMessenger, getRootMessenger, @@ -16,23 +17,20 @@ import { MOCK_TRX_DISCOVERED_ACCOUNT_1, MockAccountBuilder, toGroupIndexRangeArray, -} from '../tests'; -import type { RootMessenger, DeepPartial } from '../tests'; -import { AccountProviderWrapper } from './AccountProviderWrapper'; -import type { SnapAccountProviderConfig } from './SnapAccountProvider'; +} from '../tests/index.js'; +import type { RootMessenger, DeepPartial } from '../tests/index.js'; +import { AccountProviderWrapper } from './AccountProviderWrapper.js'; +import type { SnapAccountProviderConfig } from './SnapAccountProvider.js'; import { TRX_ACCOUNT_PROVIDER_DEFAULT_CONFIG, TRX_ACCOUNT_PROVIDER_NAME, TrxAccountProvider, -} from './TrxAccountProvider'; +} from './TrxAccountProvider.js'; function asConfig( partial: DeepPartial, ): SnapAccountProviderConfig { - return deepmerge( - TRX_ACCOUNT_PROVIDER_DEFAULT_CONFIG, - partial, - ) as SnapAccountProviderConfig; + return deepmerge(TRX_ACCOUNT_PROVIDER_DEFAULT_CONFIG, partial); } /** diff --git a/packages/multichain-account-service/src/providers/XlmAccountProvider.test.ts b/packages/multichain-account-service/src/providers/XlmAccountProvider.test.ts index d876920e35f..710e35a8d8b 100644 --- a/packages/multichain-account-service/src/providers/XlmAccountProvider.test.ts +++ b/packages/multichain-account-service/src/providers/XlmAccountProvider.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { isBip44Account } from '@metamask/account-api'; import type { SnapKeyring } from '@metamask/eth-snap-keyring'; import { AccountCreationType, XlmScope } from '@metamask/keyring-api'; @@ -16,23 +17,20 @@ import { MOCK_XLM_DISCOVERED_ACCOUNT_1, MockAccountBuilder, toGroupIndexRangeArray, -} from '../tests'; -import type { RootMessenger, DeepPartial } from '../tests'; -import { AccountProviderWrapper } from './AccountProviderWrapper'; -import type { SnapAccountProviderConfig } from './SnapAccountProvider'; +} from '../tests/index.js'; +import type { RootMessenger, DeepPartial } from '../tests/index.js'; +import { AccountProviderWrapper } from './AccountProviderWrapper.js'; +import type { SnapAccountProviderConfig } from './SnapAccountProvider.js'; import { XLM_ACCOUNT_PROVIDER_DEFAULT_CONFIG, XLM_ACCOUNT_PROVIDER_NAME, XlmAccountProvider, -} from './XlmAccountProvider'; +} from './XlmAccountProvider.js'; function asConfig( partial: DeepPartial, ): SnapAccountProviderConfig { - return deepmerge( - XLM_ACCOUNT_PROVIDER_DEFAULT_CONFIG, - partial, - ) as SnapAccountProviderConfig; + return deepmerge(XLM_ACCOUNT_PROVIDER_DEFAULT_CONFIG, partial); } /** diff --git a/packages/multichain-account-service/src/providers/index.ts b/packages/multichain-account-service/src/providers/index.ts index 51f20af248b..3098194fcb6 100644 --- a/packages/multichain-account-service/src/providers/index.ts +++ b/packages/multichain-account-service/src/providers/index.ts @@ -1,13 +1,13 @@ -export * from './BaseBip44AccountProvider'; -export * from './SnapAccountProvider'; -export * from './AccountProviderWrapper'; +export * from './BaseBip44AccountProvider.js'; +export * from './SnapAccountProvider.js'; +export * from './AccountProviderWrapper.js'; // Errors that can bubble up outside of provider calls. -export { TimeoutError, isTimeoutError } from './utils'; +export { TimeoutError, isTimeoutError } from './utils.js'; // Concrete providers: -export * from './SolAccountProvider'; -export * from './EvmAccountProvider'; -export * from './BtcAccountProvider'; -export * from './TrxAccountProvider'; -export * from './XlmAccountProvider'; +export * from './SolAccountProvider.js'; +export * from './EvmAccountProvider.js'; +export * from './BtcAccountProvider.js'; +export * from './TrxAccountProvider.js'; +export * from './XlmAccountProvider.js'; diff --git a/packages/multichain-account-service/src/providers/utils.test.ts b/packages/multichain-account-service/src/providers/utils.test.ts index 5a0c55f053f..b47d20e6226 100644 --- a/packages/multichain-account-service/src/providers/utils.test.ts +++ b/packages/multichain-account-service/src/providers/utils.test.ts @@ -9,7 +9,7 @@ import { isTimeoutError, withRetry, withTimeout, -} from './utils'; +} from './utils.js'; describe('utils', () => { it('retries RPC request up to 3 times if it fails and throws the last error', async () => { diff --git a/packages/multichain-account-service/src/tests/index.ts b/packages/multichain-account-service/src/tests/index.ts index f7f84be2207..2ecfc9d02d3 100644 --- a/packages/multichain-account-service/src/tests/index.ts +++ b/packages/multichain-account-service/src/tests/index.ts @@ -1,4 +1,4 @@ -export type * from './types'; -export * from './accounts'; -export * from './messenger'; -export * from './providers'; +export type * from './types.js'; +export * from './accounts.js'; +export * from './messenger.js'; +export * from './providers.js'; diff --git a/packages/multichain-account-service/src/tests/messenger.ts b/packages/multichain-account-service/src/tests/messenger.ts index a50cdda77db..a5b78417fce 100644 --- a/packages/multichain-account-service/src/tests/messenger.ts +++ b/packages/multichain-account-service/src/tests/messenger.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MessengerActions, @@ -5,7 +6,7 @@ import type { MockAnyNamespace, } from '@metamask/messenger'; -import type { MultichainAccountServiceMessenger } from '../types'; +import type { MultichainAccountServiceMessenger } from '../types.js'; export type AllMultichainAccountServiceActions = MessengerActions; diff --git a/packages/multichain-account-service/src/tests/providers.ts b/packages/multichain-account-service/src/tests/providers.ts index 676651cff67..0ec879b6565 100644 --- a/packages/multichain-account-service/src/tests/providers.ts +++ b/packages/multichain-account-service/src/tests/providers.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { Bip44Account } from '@metamask/account-api'; import { BtcScope, diff --git a/packages/multichain-account-service/src/types.ts b/packages/multichain-account-service/src/types.ts index 5d86323ca8c..d5d30c85a0f 100644 --- a/packages/multichain-account-service/src/types.ts +++ b/packages/multichain-account-service/src/types.ts @@ -35,8 +35,8 @@ import type { } from '@metamask/snap-account-service'; import type { SnapControllerHandleRequestAction } from '@metamask/snaps-controllers'; -import type { serviceName } from './MultichainAccountService'; -import type { MultichainAccountServiceMethodActions } from './MultichainAccountService-method-action-types'; +import type { MultichainAccountServiceMethodActions } from './MultichainAccountService-method-action-types.js'; +import type { serviceName } from './MultichainAccountService.js'; /** * All actions that {@link MultichainAccountService} registers so that other diff --git a/packages/multichain-account-service/src/utils.test.ts b/packages/multichain-account-service/src/utils.test.ts index 45de314ac4c..c6975c98c90 100644 --- a/packages/multichain-account-service/src/utils.test.ts +++ b/packages/multichain-account-service/src/utils.test.ts @@ -2,7 +2,7 @@ import { toErrorMessage, assertGroupIndexRangeIsValid, assertGroupIndexIsValid, -} from './utils'; +} from './utils.js'; describe('toErrorMessage', () => { it('returns the message of an Error instance', () => { From 5c75380144ecd985ff61c50ca2cdec5116769789 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:50:49 +0200 Subject: [PATCH 071/115] ESLint fix and `jest` global import for authenticated-user-storage --- ...thenticated-user-storage-method-action-types.ts | 2 +- .../src/authenticated-user-storage.test.ts | 14 +++++++------- .../src/authenticated-user-storage.ts | 10 +++++----- packages/authenticated-user-storage/src/index.ts | 14 +++++++------- packages/authenticated-user-storage/src/types.ts | 2 +- .../authenticated-user-storage/src/validators.ts | 2 +- .../tests/fixtures/authenticated-userstorage.ts | 2 +- .../tests/mocks/authenticated-userstorage.ts | 6 +++--- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/packages/authenticated-user-storage/src/authenticated-user-storage-method-action-types.ts b/packages/authenticated-user-storage/src/authenticated-user-storage-method-action-types.ts index b400de367c4..39c88ae9c5b 100644 --- a/packages/authenticated-user-storage/src/authenticated-user-storage-method-action-types.ts +++ b/packages/authenticated-user-storage/src/authenticated-user-storage-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { AuthenticatedUserStorageService } from './authenticated-user-storage'; +import type { AuthenticatedUserStorageService } from './authenticated-user-storage.js'; /** * Returns all delegation records belonging to the authenticated user. diff --git a/packages/authenticated-user-storage/src/authenticated-user-storage.test.ts b/packages/authenticated-user-storage/src/authenticated-user-storage.test.ts index 851b5e698af..a0fd4fca7c4 100644 --- a/packages/authenticated-user-storage/src/authenticated-user-storage.test.ts +++ b/packages/authenticated-user-storage/src/authenticated-user-storage.test.ts @@ -15,7 +15,7 @@ import { handleMockPutNotificationPreferences, handleMockGetAssetsWatchlist, handleMockSetAssetsWatchlist, -} from '../tests/fixtures/authenticated-userstorage'; +} from '../tests/fixtures/authenticated-userstorage.js'; import { MOCK_DELEGATION_RESPONSE, MOCK_DELEGATION_SUBMISSION, @@ -23,15 +23,15 @@ import { MOCK_NOTIFICATION_PREFERENCES, MOCK_ASSETS_WATCHLIST_BLOB, MOCK_ASSETS_WATCHLIST_URL, -} from '../tests/mocks/authenticated-userstorage'; -import type { AuthenticatedUserStorageMessenger } from './authenticated-user-storage'; +} from '../tests/mocks/authenticated-userstorage.js'; +import type { AuthenticatedUserStorageMessenger } from './authenticated-user-storage.js'; import { getAuthenticatedStorageUrl, AuthenticatedUserStorageService, -} from './authenticated-user-storage'; -import type { Environment } from './env'; -import { getUserStorageApiUrl } from './env'; -import { ASSETS_WATCHLIST_MAX_ASSETS } from './validators'; +} from './authenticated-user-storage.js'; +import type { Environment } from './env.js'; +import { getUserStorageApiUrl } from './env.js'; +import { ASSETS_WATCHLIST_MAX_ASSETS } from './validators.js'; const MOCK_ACCESS_TOKEN = 'mock-access-token'; diff --git a/packages/authenticated-user-storage/src/authenticated-user-storage.ts b/packages/authenticated-user-storage/src/authenticated-user-storage.ts index fc84e00555e..2b14522fe3c 100644 --- a/packages/authenticated-user-storage/src/authenticated-user-storage.ts +++ b/packages/authenticated-user-storage/src/authenticated-user-storage.ts @@ -9,22 +9,22 @@ import { HttpError } from '@metamask/controller-utils'; import type { Messenger } from '@metamask/messenger'; import type { Json } from '@metamask/utils'; -import type { AuthenticatedUserStorageServiceMethodActions } from './authenticated-user-storage-method-action-types'; -import type { Environment } from './env'; -import { getUserStorageApiUrl } from './env'; +import type { AuthenticatedUserStorageServiceMethodActions } from './authenticated-user-storage-method-action-types.js'; +import type { Environment } from './env.js'; +import { getUserStorageApiUrl } from './env.js'; import type { AssetsWatchlistBlob, ClientType, DelegationResponse, DelegationSubmission, NotificationPreferences, -} from './types'; +} from './types.js'; import { assertAssetsWatchlistBlob, assertAssetsWatchlistBlobForWrite, assertDelegationResponseArray, assertNotificationPreferences, -} from './validators'; +} from './validators.js'; // === GENERAL === diff --git a/packages/authenticated-user-storage/src/index.ts b/packages/authenticated-user-storage/src/index.ts index 96d3efec1ba..d1bb02bdbca 100644 --- a/packages/authenticated-user-storage/src/index.ts +++ b/packages/authenticated-user-storage/src/index.ts @@ -1,12 +1,12 @@ export { getAuthenticatedStorageUrl, AuthenticatedUserStorageService, -} from './authenticated-user-storage'; +} from './authenticated-user-storage.js'; export { ASSETS_WATCHLIST_MAX_ASSETS, DEFAULT_AGENTIC_CLI_PREFERENCES, DEFAULT_PRICE_ALERT_PREFERENCES, -} from './validators'; +} from './validators.js'; export type { AuthenticatedUserStorageActions, AuthenticatedUserStorageCacheUpdatedEvent, @@ -14,7 +14,7 @@ export type { AuthenticatedUserStorageGranularCacheUpdatedEvent, AuthenticatedUserStorageInvalidateQueriesAction, AuthenticatedUserStorageMessenger, -} from './authenticated-user-storage'; +} from './authenticated-user-storage.js'; export type { AuthenticatedUserStorageServiceListDelegationsAction, AuthenticatedUserStorageServiceCreateDelegationAction, @@ -23,9 +23,9 @@ export type { AuthenticatedUserStorageServicePutNotificationPreferencesAction, AuthenticatedUserStorageServiceGetAssetsWatchlistAction, AuthenticatedUserStorageServiceSetAssetsWatchlistAction, -} from './authenticated-user-storage-method-action-types'; -export { getUserStorageApiUrl } from './env'; -export type { Environment } from './env'; +} from './authenticated-user-storage-method-action-types.js'; +export { getUserStorageApiUrl } from './env.js'; +export type { Environment } from './env.js'; export type { Caveat, SignedDelegation, @@ -44,4 +44,4 @@ export type { NotificationPreferences, AssetsWatchlistBlob, ClientType, -} from './types'; +} from './types.js'; diff --git a/packages/authenticated-user-storage/src/types.ts b/packages/authenticated-user-storage/src/types.ts index f3a2323a19d..8775fc68032 100644 --- a/packages/authenticated-user-storage/src/types.ts +++ b/packages/authenticated-user-storage/src/types.ts @@ -133,7 +133,7 @@ export type NotificationPreferences = { // `./validators` and re-exported here so the public type surface remains in // `./types`. Keeping the runtime schema and the static type co-located in // one file keeps the two in lock-step. -export type { AssetsWatchlistBlob } from './validators'; +export type { AssetsWatchlistBlob } from './validators.js'; // --------------------------------------------------------------------------- // Shared diff --git a/packages/authenticated-user-storage/src/validators.ts b/packages/authenticated-user-storage/src/validators.ts index 8e5eaa0b9a4..8bc6098c6c6 100644 --- a/packages/authenticated-user-storage/src/validators.ts +++ b/packages/authenticated-user-storage/src/validators.ts @@ -18,7 +18,7 @@ import type { DelegationResponse, NotificationPreferences, PriceAlertPreference, -} from './types'; +} from './types.js'; /** * Matches a 0x-prefixed hex string with zero or more hex digits. diff --git a/packages/authenticated-user-storage/tests/fixtures/authenticated-userstorage.ts b/packages/authenticated-user-storage/tests/fixtures/authenticated-userstorage.ts index 564ab5f1a07..10d005b4e90 100644 --- a/packages/authenticated-user-storage/tests/fixtures/authenticated-userstorage.ts +++ b/packages/authenticated-user-storage/tests/fixtures/authenticated-userstorage.ts @@ -7,7 +7,7 @@ import { MOCK_DELEGATION_RESPONSE, MOCK_NOTIFICATION_PREFERENCES, MOCK_NOTIFICATION_PREFERENCES_URL, -} from '../mocks/authenticated-userstorage'; +} from '../mocks/authenticated-userstorage.js'; type MockReply = { status: nock.StatusCode; diff --git a/packages/authenticated-user-storage/tests/mocks/authenticated-userstorage.ts b/packages/authenticated-user-storage/tests/mocks/authenticated-userstorage.ts index 4f82283c601..e959a2fa211 100644 --- a/packages/authenticated-user-storage/tests/mocks/authenticated-userstorage.ts +++ b/packages/authenticated-user-storage/tests/mocks/authenticated-userstorage.ts @@ -1,11 +1,11 @@ -import { getAuthenticatedStorageUrl } from '../../src/authenticated-user-storage'; +import { getAuthenticatedStorageUrl } from '../../src/authenticated-user-storage.js'; import type { AssetsWatchlistBlob, DelegationResponse, DelegationSubmission, NotificationPreferences, -} from '../../src/types'; -import { DEFAULT_PRICE_ALERT_PREFERENCES } from '../../src/validators'; +} from '../../src/types.js'; +import { DEFAULT_PRICE_ALERT_PREFERENCES } from '../../src/validators.js'; export const MOCK_DELEGATIONS_URL = `${getAuthenticatedStorageUrl('prod')}/delegations`; export const MOCK_NOTIFICATION_PREFERENCES_URL = `${getAuthenticatedStorageUrl('prod')}/preferences/notifications`; From 895e45ab42e13a40646f01e2b8d31561c8f862d6 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:50:50 +0200 Subject: [PATCH 072/115] ESLint fix and `jest` global import for chomp-api-service --- .../src/chomp-api-service-method-action-types.ts | 2 +- packages/chomp-api-service/src/chomp-api-service.test.ts | 5 +++-- packages/chomp-api-service/src/chomp-api-service.ts | 4 ++-- packages/chomp-api-service/src/index.ts | 8 ++++---- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/chomp-api-service/src/chomp-api-service-method-action-types.ts b/packages/chomp-api-service/src/chomp-api-service-method-action-types.ts index ba2e1c8c984..26c863b0d9b 100644 --- a/packages/chomp-api-service/src/chomp-api-service-method-action-types.ts +++ b/packages/chomp-api-service/src/chomp-api-service-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { ChompApiService } from './chomp-api-service'; +import type { ChompApiService } from './chomp-api-service.js'; /** * Associates an address with a CHOMP profile. diff --git a/packages/chomp-api-service/src/chomp-api-service.test.ts b/packages/chomp-api-service/src/chomp-api-service.test.ts index 1750ff5fecb..635be9190c7 100644 --- a/packages/chomp-api-service/src/chomp-api-service.test.ts +++ b/packages/chomp-api-service/src/chomp-api-service.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { DEFAULT_MAX_RETRIES, handleAll } from '@metamask/controller-utils'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -7,8 +8,8 @@ import type { } from '@metamask/messenger'; import nock from 'nock'; -import type { ChompApiServiceMessenger } from './chomp-api-service'; -import { ChompApiService } from './chomp-api-service'; +import type { ChompApiServiceMessenger } from './chomp-api-service.js'; +import { ChompApiService } from './chomp-api-service.js'; const BASE_URL = 'https://api.chomp.example.com'; const MOCK_TOKEN = 'mock-jwt-token'; diff --git a/packages/chomp-api-service/src/chomp-api-service.ts b/packages/chomp-api-service/src/chomp-api-service.ts index 2e30d829763..a8d400c1bc5 100644 --- a/packages/chomp-api-service/src/chomp-api-service.ts +++ b/packages/chomp-api-service/src/chomp-api-service.ts @@ -29,7 +29,7 @@ import { } from '@metamask/utils'; import type { QueryClientConfig } from '@tanstack/query-core'; -import type { ChompApiServiceMethodActions } from './chomp-api-service-method-action-types'; +import type { ChompApiServiceMethodActions } from './chomp-api-service-method-action-types.js'; import type { AssociateAddressParams, AssociateAddressResponse, @@ -45,7 +45,7 @@ import type { ServiceDetailsResponse, VerifyDelegationParams, VerifyDelegationResponse, -} from './types'; +} from './types.js'; // === GENERAL === diff --git a/packages/chomp-api-service/src/index.ts b/packages/chomp-api-service/src/index.ts index 72d6cc07f37..ab5b8faa26f 100644 --- a/packages/chomp-api-service/src/index.ts +++ b/packages/chomp-api-service/src/index.ts @@ -1,4 +1,4 @@ -export { ChompApiService } from './chomp-api-service'; +export { ChompApiService } from './chomp-api-service.js'; export type { ChompApiServiceMessenger, ChompApiServiceActions, @@ -6,7 +6,7 @@ export type { ChompApiServiceInvalidateQueriesAction, ChompApiServiceCacheUpdatedEvent, ChompApiServiceGranularCacheUpdatedEvent, -} from './chomp-api-service'; +} from './chomp-api-service.js'; export type { ChompApiServiceAssociateAddressAction, ChompApiServiceGetAssociatedAddressesAction, @@ -17,7 +17,7 @@ export type { ChompApiServiceGetIntentsByAddressAction, ChompApiServiceCreateWithdrawalAction, ChompApiServiceGetServiceDetailsAction, -} from './chomp-api-service-method-action-types'; +} from './chomp-api-service-method-action-types.js'; export type { AccountUpgradeStatus, AssociateAddressParams, @@ -42,4 +42,4 @@ export type { SignedDelegation, VerifyDelegationParams, VerifyDelegationResponse, -} from './types'; +} from './types.js'; From 15eec4b46d9763202ba0c3813344d9f1b5104402 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:50:53 +0200 Subject: [PATCH 073/115] ESLint fix and `jest` global import for claims-controller --- .../src/ClaimsController-method-action-types.ts | 2 +- .../claims-controller/src/ClaimsController.test.ts | 11 ++++++----- packages/claims-controller/src/ClaimsController.ts | 8 ++++---- .../claims-controller/src/ClaimsService.test.ts | 12 +++++++----- packages/claims-controller/src/ClaimsService.ts | 10 +++++----- packages/claims-controller/src/index.ts | 14 +++++++------- packages/claims-controller/src/logger.ts | 2 +- packages/claims-controller/src/types.ts | 2 +- packages/claims-controller/src/utils.test.ts | 4 +++- .../claims-controller/tests/mocks/messenger.ts | 5 +++-- packages/claims-controller/tests/types.ts | 6 +++--- 11 files changed, 41 insertions(+), 35 deletions(-) diff --git a/packages/claims-controller/src/ClaimsController-method-action-types.ts b/packages/claims-controller/src/ClaimsController-method-action-types.ts index 6685cd3aedf..4cf63e746c7 100644 --- a/packages/claims-controller/src/ClaimsController-method-action-types.ts +++ b/packages/claims-controller/src/ClaimsController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { ClaimsController } from './ClaimsController'; +import type { ClaimsController } from './ClaimsController.js'; /** * Fetch the required configurations for the claims service. diff --git a/packages/claims-controller/src/ClaimsController.test.ts b/packages/claims-controller/src/ClaimsController.test.ts index 9b096d674e4..168c712fb90 100644 --- a/packages/claims-controller/src/ClaimsController.test.ts +++ b/packages/claims-controller/src/ClaimsController.test.ts @@ -1,18 +1,19 @@ +import { jest } from '@jest/globals'; import { toHex } from '@metamask/controller-utils'; -import { createMockClaimsControllerMessenger } from '../tests/mocks/messenger'; -import type { WithControllerArgs } from '../tests/types'; +import { createMockClaimsControllerMessenger } from '../tests/mocks/messenger.js'; +import type { WithControllerArgs } from '../tests/types.js'; import { ClaimsController, getDefaultClaimsControllerState, -} from './ClaimsController'; -import { ClaimsControllerErrorMessages, ClaimStatusEnum } from './constants'; +} from './ClaimsController.js'; +import { ClaimsControllerErrorMessages, ClaimStatusEnum } from './constants.js'; import type { Claim, ClaimDraft, ClaimsConfigurationsResponse, CreateClaimRequest, -} from './types'; +} from './types.js'; const mockClaimServiceRequestHeaders = jest.fn(); const mockClaimServiceGetClaimsApiUrl = jest.fn(); diff --git a/packages/claims-controller/src/ClaimsController.ts b/packages/claims-controller/src/ClaimsController.ts index f9ce5070afe..473fe3531ef 100644 --- a/packages/claims-controller/src/ClaimsController.ts +++ b/packages/claims-controller/src/ClaimsController.ts @@ -9,7 +9,7 @@ import type { KeyringControllerSignPersonalMessageAction } from '@metamask/keyri import type { Messenger } from '@metamask/messenger'; import { bytesToHex, stringToBytes } from '@metamask/utils'; -import type { ClaimsControllerMethodActions } from './ClaimsController-method-action-types'; +import type { ClaimsControllerMethodActions } from './ClaimsController-method-action-types.js'; import type { ClaimsServiceFetchClaimsConfigurationsAction, ClaimsServiceGenerateMessageForClaimSignatureAction, @@ -17,13 +17,13 @@ import type { ClaimsServiceGetClaimsAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetRequestHeadersAction, -} from './ClaimsService'; +} from './ClaimsService.js'; import { ClaimsControllerErrorMessages, CONTROLLER_NAME, DEFAULT_CLAIMS_CONFIGURATIONS, SERVICE_NAME, -} from './constants'; +} from './constants.js'; import type { Claim, ClaimDraft, @@ -31,7 +31,7 @@ import type { ClaimsControllerState, CreateClaimRequest, SubmitClaimConfig, -} from './types'; +} from './types.js'; export type ClaimsControllerGetStateAction = ControllerGetStateAction< typeof CONTROLLER_NAME, diff --git a/packages/claims-controller/src/ClaimsService.test.ts b/packages/claims-controller/src/ClaimsService.test.ts index 83ddac4a3ec..794f58a631d 100644 --- a/packages/claims-controller/src/ClaimsService.test.ts +++ b/packages/claims-controller/src/ClaimsService.test.ts @@ -1,17 +1,19 @@ -import { createMockClaimsServiceMessenger } from '../tests/mocks/messenger'; -import { ClaimsService } from './ClaimsService'; +import { jest } from '@jest/globals'; + +import { createMockClaimsServiceMessenger } from '../tests/mocks/messenger.js'; +import { ClaimsService } from './ClaimsService.js'; import { CLAIMS_API_URL_MAP, ClaimsServiceErrorMessages, ClaimStatusEnum, Env, -} from './constants'; +} from './constants.js'; import type { Claim, ClaimsConfigurationsResponse, GenerateSignatureMessageResponse, -} from './types'; -import { createSentryError } from './utils'; +} from './types.js'; +import { createSentryError } from './utils.js'; const mockAuthenticationControllerGetBearerToken = jest.fn(); const mockFetchFunction = jest.fn(); diff --git a/packages/claims-controller/src/ClaimsService.ts b/packages/claims-controller/src/ClaimsService.ts index 8e09a1a50a0..209cbd92417 100644 --- a/packages/claims-controller/src/ClaimsService.ts +++ b/packages/claims-controller/src/ClaimsService.ts @@ -6,15 +6,15 @@ import { CLAIMS_API_URL_MAP, ClaimsServiceErrorMessages, SERVICE_NAME, -} from './constants'; -import type { Env } from './constants'; -import { createModuleLogger, projectLogger } from './logger'; +} from './constants.js'; +import type { Env } from './constants.js'; +import { createModuleLogger, projectLogger } from './logger.js'; import type { Claim, ClaimsConfigurationsResponse, GenerateSignatureMessageResponse, -} from './types'; -import { createSentryError, getErrorFromResponse } from './utils'; +} from './types.js'; +import { createSentryError, getErrorFromResponse } from './utils.js'; export type ClaimsServiceFetchClaimsConfigurationsAction = { type: `${typeof SERVICE_NAME}:fetchClaimsConfigurations`; diff --git a/packages/claims-controller/src/index.ts b/packages/claims-controller/src/index.ts index 6675c21c470..5c33db2987b 100644 --- a/packages/claims-controller/src/index.ts +++ b/packages/claims-controller/src/index.ts @@ -1,14 +1,14 @@ export { ClaimsController, getDefaultClaimsControllerState, -} from './ClaimsController'; +} from './ClaimsController.js'; export type { ClaimsControllerGetStateAction, ClaimsControllerActions, ClaimsControllerStateChangeEvent, ClaimsControllerMessenger, -} from './ClaimsController'; +} from './ClaimsController.js'; export type { ClaimsControllerFetchClaimsConfigurationsAction, @@ -20,7 +20,7 @@ export type { ClaimsControllerDeleteClaimDraftAction, ClaimsControllerDeleteAllClaimDraftsAction, ClaimsControllerClearStateAction, -} from './ClaimsController-method-action-types'; +} from './ClaimsController-method-action-types.js'; export type { Claim, @@ -30,9 +30,9 @@ export type { CreateClaimRequest, SubmitClaimConfig, ClaimDraft, -} from './types'; +} from './types.js'; -export { ClaimsService } from './ClaimsService'; +export { ClaimsService } from './ClaimsService.js'; export type { ClaimsServiceFetchClaimsConfigurationsAction, @@ -43,7 +43,7 @@ export type { ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceActions, ClaimsServiceMessenger, -} from './ClaimsService'; +} from './ClaimsService.js'; export { ClaimStatusEnum, @@ -52,4 +52,4 @@ export { DEFAULT_CLAIMS_CONFIGURATIONS, ClaimsServiceErrorMessages, CLAIMS_API_URL_MAP, -} from './constants'; +} from './constants.js'; diff --git a/packages/claims-controller/src/logger.ts b/packages/claims-controller/src/logger.ts index 2a7fd152af5..a122df6b96c 100644 --- a/packages/claims-controller/src/logger.ts +++ b/packages/claims-controller/src/logger.ts @@ -1,6 +1,6 @@ import { createProjectLogger, createModuleLogger } from '@metamask/utils'; -import { CONTROLLER_NAME } from './constants'; +import { CONTROLLER_NAME } from './constants.js'; export const projectLogger = createProjectLogger(CONTROLLER_NAME); diff --git a/packages/claims-controller/src/types.ts b/packages/claims-controller/src/types.ts index 9eae8d3d4d0..9b03109d544 100644 --- a/packages/claims-controller/src/types.ts +++ b/packages/claims-controller/src/types.ts @@ -1,6 +1,6 @@ import type { Hex } from '@metamask/utils'; -import type { ClaimStatusEnum } from './constants'; +import type { ClaimStatusEnum } from './constants.js'; export type Attachment = { publicUrl: string; diff --git a/packages/claims-controller/src/utils.test.ts b/packages/claims-controller/src/utils.test.ts index 7b4a58c363f..afaf37243bb 100644 --- a/packages/claims-controller/src/utils.test.ts +++ b/packages/claims-controller/src/utils.test.ts @@ -1,4 +1,6 @@ -import { getErrorFromResponse, createSentryError } from './utils'; +import { jest } from '@jest/globals'; + +import { getErrorFromResponse, createSentryError } from './utils.js'; describe('getErrorFromResponse', () => { it('returns error with message from JSON response', async () => { diff --git a/packages/claims-controller/tests/mocks/messenger.ts b/packages/claims-controller/tests/mocks/messenger.ts index 7836f5b52c1..51915c69e74 100644 --- a/packages/claims-controller/tests/mocks/messenger.ts +++ b/packages/claims-controller/tests/mocks/messenger.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MessengerActions, @@ -5,11 +6,11 @@ import type { MockAnyNamespace, } from '@metamask/messenger'; +import { CONTROLLER_NAME, SERVICE_NAME } from '../../src/constants.js'; import type { ClaimsServiceMessenger, ClaimsControllerMessenger, -} from '../../src'; -import { CONTROLLER_NAME, SERVICE_NAME } from '../../src/constants'; +} from '../../src/index.js'; type AllShieldControllerActions = MessengerActions; diff --git a/packages/claims-controller/tests/types.ts b/packages/claims-controller/tests/types.ts index 2160c2b5da9..060136fbe67 100644 --- a/packages/claims-controller/tests/types.ts +++ b/packages/claims-controller/tests/types.ts @@ -2,9 +2,9 @@ import type { ClaimsController, ClaimsControllerMessenger, ClaimsControllerOptions, -} from '../src/ClaimsController'; -import type { ClaimsControllerState } from '../src/types'; -import type { RootControllerMessenger } from './mocks/messenger'; +} from '../src/ClaimsController.js'; +import type { ClaimsControllerState } from '../src/types.js'; +import type { RootControllerMessenger } from './mocks/messenger.js'; /** * Helper function to create controller with options. From 62494fd84cb8de3303065afcb1547e86bfeb4d1a Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:50:54 +0200 Subject: [PATCH 074/115] ESLint fix and `jest` global import for client-utils --- packages/client-utils/src/index.ts | 8 ++++---- .../src/mappers/api-transaction-mapper.test.ts | 8 +++++--- .../src/mappers/api-transaction-mapper.ts | 8 ++++---- .../client-utils/src/mappers/helpers/caip.test.ts | 2 +- packages/client-utils/src/mappers/helpers/caip.ts | 2 +- .../src/mappers/helpers/token-metadata.test.ts | 2 +- .../src/mappers/helpers/token-metadata.ts | 2 +- .../src/mappers/helpers/transactions.test.ts | 6 ++++-- .../src/mappers/helpers/transactions.ts | 10 +++++----- .../src/mappers/keyring-transaction-mapper.test.ts | 4 ++-- .../src/mappers/keyring-transaction-mapper.ts | 2 +- .../src/mappers/local-transaction-mapper.test.ts | 8 +++++--- .../src/mappers/local-transaction-mapper.ts | 14 +++++++------- .../test/fixtures/keyring-transactions.ts | 2 +- .../test/fixtures/local-transactions.ts | 4 ++-- packages/client-utils/test/test-helpers.ts | 4 ++-- 16 files changed, 46 insertions(+), 40 deletions(-) diff --git a/packages/client-utils/src/index.ts b/packages/client-utils/src/index.ts index fb31f08249c..141283712e1 100644 --- a/packages/client-utils/src/index.ts +++ b/packages/client-utils/src/index.ts @@ -1,5 +1,5 @@ -export { mapApiTransaction } from './mappers/api-transaction-mapper'; -export { mapKeyringTransaction } from './mappers/keyring-transaction-mapper'; -export { mapLocalTransaction } from './mappers/local-transaction-mapper'; +export { mapApiTransaction } from './mappers/api-transaction-mapper.js'; +export { mapKeyringTransaction } from './mappers/keyring-transaction-mapper.js'; +export { mapLocalTransaction } from './mappers/local-transaction-mapper.js'; -export type * from './types'; +export type * from './types.js'; diff --git a/packages/client-utils/src/mappers/api-transaction-mapper.test.ts b/packages/client-utils/src/mappers/api-transaction-mapper.test.ts index 2869421cf1f..c059f9d3b7d 100644 --- a/packages/client-utils/src/mappers/api-transaction-mapper.test.ts +++ b/packages/client-utils/src/mappers/api-transaction-mapper.test.ts @@ -1,6 +1,8 @@ -import { apiTransactionFixtures } from '../../test/fixtures/api-transactions'; -import { mapApiTransaction } from './api-transaction-mapper'; -import { formatAddressToAssetId } from './helpers/caip'; +import { jest } from '@jest/globals'; + +import { apiTransactionFixtures } from '../../test/fixtures/api-transactions.js'; +import { mapApiTransaction } from './api-transaction-mapper.js'; +import { formatAddressToAssetId } from './helpers/caip.js'; // Mock known-token lookup with the deterministic test table in `test/`. jest.mock('./helpers/token-metadata', () => ({ diff --git a/packages/client-utils/src/mappers/api-transaction-mapper.ts b/packages/client-utils/src/mappers/api-transaction-mapper.ts index e18751b0e8c..16b2b87c41c 100644 --- a/packages/client-utils/src/mappers/api-transaction-mapper.ts +++ b/packages/client-utils/src/mappers/api-transaction-mapper.ts @@ -10,15 +10,15 @@ import type { Status, TokenAmount, ValueTransfer, -} from '../types'; +} from '../types.js'; import { nativeTokenAddress, supplyMethodIds, swapsWrappedTokensAddresses, withdrawMethodIds, wrapMethodIds, -} from './constants'; -import { formatAddressToAssetId, getNativeAsset } from './helpers/caip'; +} from './constants.js'; +import { formatAddressToAssetId, getNativeAsset } from './helpers/caip.js'; import { getFees, getNftPaymentTransfer, @@ -26,7 +26,7 @@ import { getTokenMetadataFromKnownToken, parseValueTransfers, withFallbackTokenAssetId, -} from './helpers/transactions'; +} from './helpers/transactions.js'; /** * Maps an indexed API transaction into the shared activity item shape. diff --git a/packages/client-utils/src/mappers/helpers/caip.test.ts b/packages/client-utils/src/mappers/helpers/caip.test.ts index 20209510707..67e7462787b 100644 --- a/packages/client-utils/src/mappers/helpers/caip.test.ts +++ b/packages/client-utils/src/mappers/helpers/caip.test.ts @@ -2,7 +2,7 @@ import { formatAddressToAssetId, formatChainIdToCaip, getNativeAsset, -} from './caip'; +} from './caip.js'; describe('caip helpers', () => { describe('formatChainIdToCaip', () => { diff --git a/packages/client-utils/src/mappers/helpers/caip.ts b/packages/client-utils/src/mappers/helpers/caip.ts index 1f8a1c6d3ee..d0d0edc9085 100644 --- a/packages/client-utils/src/mappers/helpers/caip.ts +++ b/packages/client-utils/src/mappers/helpers/caip.ts @@ -7,7 +7,7 @@ import { toCaipAssetType, } from '@metamask/utils'; -import { nativeTokenAddress } from '../constants'; +import { nativeTokenAddress } from '../constants.js'; export type NativeAssetMetadata = { symbol: string; diff --git a/packages/client-utils/src/mappers/helpers/token-metadata.test.ts b/packages/client-utils/src/mappers/helpers/token-metadata.test.ts index 0b324575773..f0d6cfe6989 100644 --- a/packages/client-utils/src/mappers/helpers/token-metadata.test.ts +++ b/packages/client-utils/src/mappers/helpers/token-metadata.test.ts @@ -1,4 +1,4 @@ -import { getKnownTokenMetadata } from './token-metadata'; +import { getKnownTokenMetadata } from './token-metadata.js'; describe('getKnownTokenMetadata', () => { it('returns undefined when the contract address is missing', () => { diff --git a/packages/client-utils/src/mappers/helpers/token-metadata.ts b/packages/client-utils/src/mappers/helpers/token-metadata.ts index f4959967392..1bf72cefaba 100644 --- a/packages/client-utils/src/mappers/helpers/token-metadata.ts +++ b/packages/client-utils/src/mappers/helpers/token-metadata.ts @@ -2,7 +2,7 @@ import contractMap from '@metamask/contract-metadata'; import { toChecksumHexAddress } from '@metamask/controller-utils'; import type { CaipChainId, Hex } from '@metamask/utils'; -import { formatAddressToAssetId } from './caip'; +import { formatAddressToAssetId } from './caip.js'; export type KnownTokenMetadata = { symbol?: string; diff --git a/packages/client-utils/src/mappers/helpers/transactions.test.ts b/packages/client-utils/src/mappers/helpers/transactions.test.ts index 3127f194596..0a57bd214af 100644 --- a/packages/client-utils/src/mappers/helpers/transactions.test.ts +++ b/packages/client-utils/src/mappers/helpers/transactions.test.ts @@ -1,4 +1,6 @@ -import * as tokenMetadata from './token-metadata'; +import { jest } from '@jest/globals'; + +import * as tokenMetadata from './token-metadata.js'; import { getFees, getLocalTransactionFees, @@ -9,7 +11,7 @@ import { isNftStandard, parseValueTransfers, withFallbackTokenAssetId, -} from './transactions'; +} from './transactions.js'; describe('transaction helpers', () => { afterEach(() => { diff --git a/packages/client-utils/src/mappers/helpers/transactions.ts b/packages/client-utils/src/mappers/helpers/transactions.ts index 332ce98092d..4f1df467292 100644 --- a/packages/client-utils/src/mappers/helpers/transactions.ts +++ b/packages/client-utils/src/mappers/helpers/transactions.ts @@ -11,10 +11,10 @@ import { } from '@metamask/transaction-controller'; import type { CaipChainId, Hex } from '@metamask/utils'; -import type { Fee, Status, TokenAmount, ValueTransfer } from '../../types'; -import { nativeTokenAddress } from '../constants'; -import { formatAddressToAssetId, getNativeAsset } from './caip'; -import { getKnownTokenMetadata } from './token-metadata'; +import type { Fee, Status, TokenAmount, ValueTransfer } from '../../types.js'; +import { nativeTokenAddress } from '../constants.js'; +import { formatAddressToAssetId, getNativeAsset } from './caip.js'; +import { getKnownTokenMetadata } from './token-metadata.js'; // Adds optional `isSmartTransaction` to `TransactionMeta`. export type TransactionGroup = { @@ -326,7 +326,7 @@ export function getTokenAmountFromTransfer( const { transferType, amount } = transfer; const isNftTransfer = isNftStandard(transferType); const symbol = isNftTransfer - ? transfer.name || transfer.symbol + ? (transfer.name ?? transfer.symbol) : transfer.symbol; if (!symbol && amount === undefined) { diff --git a/packages/client-utils/src/mappers/keyring-transaction-mapper.test.ts b/packages/client-utils/src/mappers/keyring-transaction-mapper.test.ts index e1902a92d01..d6624ffef73 100644 --- a/packages/client-utils/src/mappers/keyring-transaction-mapper.test.ts +++ b/packages/client-utils/src/mappers/keyring-transaction-mapper.test.ts @@ -1,7 +1,7 @@ import { SolScope } from '@metamask/keyring-api'; -import { keyringTransactionFixtures } from '../../test/fixtures/keyring-transactions'; -import { mapKeyringTransaction } from './keyring-transaction-mapper'; +import { keyringTransactionFixtures } from '../../test/fixtures/keyring-transactions.js'; +import { mapKeyringTransaction } from './keyring-transaction-mapper.js'; describe('mapKeyringTransaction', () => { it('maps keyring send transactions with token amount data', () => { diff --git a/packages/client-utils/src/mappers/keyring-transaction-mapper.ts b/packages/client-utils/src/mappers/keyring-transaction-mapper.ts index 789f31fe73a..84edd2da9e4 100644 --- a/packages/client-utils/src/mappers/keyring-transaction-mapper.ts +++ b/packages/client-utils/src/mappers/keyring-transaction-mapper.ts @@ -4,7 +4,7 @@ import { TransactionType as KeyringTransactionType, } from '@metamask/keyring-api'; -import type { Fee, ActivityItem, Status, TokenAmount } from '../types'; +import type { Fee, ActivityItem, Status, TokenAmount } from '../types.js'; type Movement = KeyringTransaction['from'][number]; type KeyringFee = KeyringTransaction['fees'][number]; diff --git a/packages/client-utils/src/mappers/local-transaction-mapper.test.ts b/packages/client-utils/src/mappers/local-transaction-mapper.test.ts index 2888cef1e69..e49d3eadfa2 100644 --- a/packages/client-utils/src/mappers/local-transaction-mapper.test.ts +++ b/packages/client-utils/src/mappers/local-transaction-mapper.test.ts @@ -1,6 +1,8 @@ -import { localTransactionFixtures } from '../../test/fixtures/local-transactions'; -import { formatAddressToAssetId } from './helpers/caip'; -import { mapLocalTransaction } from './local-transaction-mapper'; +import { jest } from '@jest/globals'; + +import { localTransactionFixtures } from '../../test/fixtures/local-transactions.js'; +import { formatAddressToAssetId } from './helpers/caip.js'; +import { mapLocalTransaction } from './local-transaction-mapper.js'; jest.mock('./helpers/token-metadata', () => ({ getKnownTokenMetadata: jest.requireActual('../../test/test-helpers') diff --git a/packages/client-utils/src/mappers/local-transaction-mapper.ts b/packages/client-utils/src/mappers/local-transaction-mapper.ts index 16789381040..ff219ec64f0 100644 --- a/packages/client-utils/src/mappers/local-transaction-mapper.ts +++ b/packages/client-utils/src/mappers/local-transaction-mapper.ts @@ -2,7 +2,7 @@ import { isEqualCaseInsensitive as equalsIgnoreCase } from '@metamask/controller import { TransactionType } from '@metamask/transaction-controller'; import { KnownCaipNamespace, toCaipChainId } from '@metamask/utils'; -import type { Fee, ActivityItem, TokenAmount } from '../types'; +import type { Fee, ActivityItem, TokenAmount } from '../types.js'; import { permit2ApproveMethodId, swapsWrappedTokensAddresses, @@ -11,15 +11,15 @@ import { unwrapMethodIds, withdrawMethodIds, wrapMethodIds, -} from './constants'; -import { formatAddressToAssetId, getNativeAsset } from './helpers/caip'; -import { getKnownTokenMetadata } from './helpers/token-metadata'; +} from './constants.js'; +import { formatAddressToAssetId, getNativeAsset } from './helpers/caip.js'; +import { getKnownTokenMetadata } from './helpers/token-metadata.js'; import { getLocalTransactionFees, getLocalTransactionStatus, isNftStandard, -} from './helpers/transactions'; -import type { TransactionGroup } from './helpers/transactions'; +} from './helpers/transactions.js'; +import type { TransactionGroup } from './helpers/transactions.js'; const evmNativeDecimals = 18; @@ -63,7 +63,7 @@ export function mapLocalTransaction( const isPermit2Approve = methodId === permit2ApproveMethodId; const tokenContractAddress = isPermit2Approve ? undefined - : (transferInformation?.contractAddress ?? (to || undefined)); + : (transferInformation?.contractAddress ?? to ?? undefined); const chainId = toCaipChainId( KnownCaipNamespace.Eip155, Number.parseInt(initialTransaction.chainId, 16).toString(), diff --git a/packages/client-utils/test/fixtures/keyring-transactions.ts b/packages/client-utils/test/fixtures/keyring-transactions.ts index d9bc457b2ed..d79a1ac9a39 100644 --- a/packages/client-utils/test/fixtures/keyring-transactions.ts +++ b/packages/client-utils/test/fixtures/keyring-transactions.ts @@ -5,7 +5,7 @@ import { TransactionType, } from '@metamask/keyring-api'; -import { CustomTransactionTypeLabel } from '../../src/mappers/keyring-transaction-mapper'; +import { CustomTransactionTypeLabel } from '../../src/mappers/keyring-transaction-mapper.js'; const accountId = '00000000-0000-4000-8000-000000000000'; const stellarUsdcAsset = `stellar:pubnet/asset:USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN`; diff --git a/packages/client-utils/test/fixtures/local-transactions.ts b/packages/client-utils/test/fixtures/local-transactions.ts index 6de26dc2975..5204ac25429 100644 --- a/packages/client-utils/test/fixtures/local-transactions.ts +++ b/packages/client-utils/test/fixtures/local-transactions.ts @@ -3,12 +3,12 @@ import { TransactionType, } from '@metamask/transaction-controller'; -import { formatAddressToAssetId } from '../../src/mappers/helpers/caip'; +import { formatAddressToAssetId } from '../../src/mappers/helpers/caip.js'; import { buildApproveTransactionData, buildPermit2ApproveTransactionData, encodeMerklClaimCalldata, -} from '../test-helpers'; +} from '../test-helpers.js'; const chainIds = { mainnet: '0x1', diff --git a/packages/client-utils/test/test-helpers.ts b/packages/client-utils/test/test-helpers.ts index 0f43a700217..49c1095b1dc 100644 --- a/packages/client-utils/test/test-helpers.ts +++ b/packages/client-utils/test/test-helpers.ts @@ -1,8 +1,8 @@ import { Interface } from '@ethersproject/abi'; import type { CaipChainId, Hex } from '@metamask/utils'; -import { formatAddressToAssetId } from '../src/mappers/helpers/caip'; -import type { KnownTokenMetadata } from '../src/mappers/helpers/token-metadata'; +import { formatAddressToAssetId } from '../src/mappers/helpers/caip.js'; +import type { KnownTokenMetadata } from '../src/mappers/helpers/token-metadata.js'; const knownTokens: Record< string, From b030053e316f75753e938587a82e374bbc0f2de6 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:50:57 +0200 Subject: [PATCH 075/115] ESLint fix and `jest` global import for delegation-controller --- .../src/DelegationController-method-action-types.ts | 2 +- .../src/DelegationController.test.ts | 12 ++++++++---- .../src/DelegationController.ts | 4 ++-- packages/delegation-controller/src/constants.ts | 2 +- packages/delegation-controller/src/index.ts | 6 +++--- packages/delegation-controller/src/types.ts | 4 ++-- packages/delegation-controller/src/utils.ts | 4 ++-- 7 files changed, 19 insertions(+), 15 deletions(-) diff --git a/packages/delegation-controller/src/DelegationController-method-action-types.ts b/packages/delegation-controller/src/DelegationController-method-action-types.ts index 1a9aef56e27..18d17f8e296 100644 --- a/packages/delegation-controller/src/DelegationController-method-action-types.ts +++ b/packages/delegation-controller/src/DelegationController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { DelegationController } from './DelegationController'; +import type { DelegationController } from './DelegationController.js'; /** * Signs a delegation. diff --git a/packages/delegation-controller/src/DelegationController.test.ts b/packages/delegation-controller/src/DelegationController.test.ts index 5e885b7ed36..70b7b5df202 100644 --- a/packages/delegation-controller/src/DelegationController.test.ts +++ b/packages/delegation-controller/src/DelegationController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { SignTypedDataVersion } from '@metamask/keyring-controller'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; @@ -8,8 +9,11 @@ import type { } from '@metamask/messenger'; import { hexToNumber } from '@metamask/utils'; -import { ROOT_AUTHORITY } from './constants'; -import { controllerName, DelegationController } from './DelegationController'; +import { ROOT_AUTHORITY } from './constants.js'; +import { + controllerName, + DelegationController, +} from './DelegationController.js'; import type { Address, Delegation, @@ -17,8 +21,8 @@ import type { DelegationControllerState, DeleGatorEnvironment, Hex, -} from './types'; -import { toDelegationStruct } from './utils'; +} from './types.js'; +import { toDelegationStruct } from './utils.js'; type AllDelegationControllerActions = MessengerActions; diff --git a/packages/delegation-controller/src/DelegationController.ts b/packages/delegation-controller/src/DelegationController.ts index 98e399368ab..3118641fd0f 100644 --- a/packages/delegation-controller/src/DelegationController.ts +++ b/packages/delegation-controller/src/DelegationController.ts @@ -9,8 +9,8 @@ import type { DeleGatorEnvironment, Hex, UnsignedDelegation, -} from './types'; -import { createTypedMessageParams } from './utils'; +} from './types.js'; +import { createTypedMessageParams } from './utils.js'; export const controllerName = 'DelegationController'; diff --git a/packages/delegation-controller/src/constants.ts b/packages/delegation-controller/src/constants.ts index a68f311fdc2..1177f1ad590 100644 --- a/packages/delegation-controller/src/constants.ts +++ b/packages/delegation-controller/src/constants.ts @@ -1,4 +1,4 @@ -import type { Hex } from './types'; +import type { Hex } from './types.js'; export const ROOT_AUTHORITY = '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff' as Hex; diff --git a/packages/delegation-controller/src/index.ts b/packages/delegation-controller/src/index.ts index 493f3caaec6..3e9050f0936 100644 --- a/packages/delegation-controller/src/index.ts +++ b/packages/delegation-controller/src/index.ts @@ -1,9 +1,9 @@ -export type { DelegationControllerSignDelegationAction } from './DelegationController-method-action-types'; +export type { DelegationControllerSignDelegationAction } from './DelegationController-method-action-types.js'; export type { DelegationControllerGetStateAction, DelegationControllerActions, DelegationControllerEvents, DelegationControllerMessenger, -} from './types'; +} from './types.js'; -export { DelegationController } from './DelegationController'; +export { DelegationController } from './DelegationController.js'; diff --git a/packages/delegation-controller/src/types.ts b/packages/delegation-controller/src/types.ts index 7566053570c..9802ca94048 100644 --- a/packages/delegation-controller/src/types.ts +++ b/packages/delegation-controller/src/types.ts @@ -5,8 +5,8 @@ import type { import type { KeyringControllerSignTypedMessageAction } from '@metamask/keyring-controller'; import type { Messenger } from '@metamask/messenger'; -import type { controllerName } from './DelegationController'; -import type { DelegationControllerMethodActions } from './DelegationController-method-action-types'; +import type { DelegationControllerMethodActions } from './DelegationController-method-action-types.js'; +import type { controllerName } from './DelegationController.js'; type Hex = `0x${string}`; type Address = `0x${string}`; diff --git a/packages/delegation-controller/src/utils.ts b/packages/delegation-controller/src/utils.ts index edefcd88ad8..02da461f9ed 100644 --- a/packages/delegation-controller/src/utils.ts +++ b/packages/delegation-controller/src/utils.ts @@ -1,8 +1,8 @@ import type { TypedMessageParams } from '@metamask/keyring-controller'; import { getChecksumAddress } from '@metamask/utils'; -import { SIGNABLE_DELEGATION_TYPED_DATA } from './constants'; -import type { Address, Delegation, DelegationStruct } from './types'; +import { SIGNABLE_DELEGATION_TYPED_DATA } from './constants.js'; +import type { Address, Delegation, DelegationStruct } from './types.js'; type CreateTypedMessageParamsOptions = { chainId: number; From 4b41f53ba1797e0ca37d9c18fc69cc33cc4f26fe Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:50:58 +0200 Subject: [PATCH 076/115] ESLint fix and `jest` global import for earn-controller --- .../src/EarnController-method-action-types.ts | 2 +- packages/earn-controller/src/EarnController.test.ts | 9 +++++---- packages/earn-controller/src/EarnController.ts | 4 ++-- packages/earn-controller/src/index.ts | 8 ++++---- packages/earn-controller/src/selectors.test.ts | 4 ++-- packages/earn-controller/src/selectors.ts | 2 +- 6 files changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/earn-controller/src/EarnController-method-action-types.ts b/packages/earn-controller/src/EarnController-method-action-types.ts index 6171c7c4887..6d5f29a0620 100644 --- a/packages/earn-controller/src/EarnController-method-action-types.ts +++ b/packages/earn-controller/src/EarnController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { EarnController } from './EarnController'; +import type { EarnController } from './EarnController.js'; /** * Refreshes the pooled stakes data for the current account. diff --git a/packages/earn-controller/src/EarnController.test.ts b/packages/earn-controller/src/EarnController.test.ts index 7dbf3b1ca41..305e62d3493 100644 --- a/packages/earn-controller/src/EarnController.test.ts +++ b/packages/earn-controller/src/EarnController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { toHex } from '@metamask/controller-utils'; import type { InternalAccount } from '@metamask/keyring-internal-api'; @@ -20,19 +21,19 @@ import type { LendingMarket, } from '@metamask/stake-sdk'; -import type { TransactionMeta } from '../../transaction-controller/src'; +import type { TransactionMeta } from '../../transaction-controller/src/index.js'; import { TransactionStatus, TransactionType, -} from '../../transaction-controller/src'; +} from '../../transaction-controller/src/index.js'; import { EarnController, DEFAULT_POOLED_STAKING_CHAIN_STATE, -} from './EarnController'; +} from './EarnController.js'; import type { EarnControllerState, EarnControllerMessenger, -} from './EarnController'; +} from './EarnController.js'; type AllEarnControllerActions = MessengerActions; diff --git a/packages/earn-controller/src/EarnController.ts b/packages/earn-controller/src/EarnController.ts index 8715795ba48..7a0ade618a6 100644 --- a/packages/earn-controller/src/EarnController.ts +++ b/packages/earn-controller/src/EarnController.ts @@ -47,14 +47,14 @@ import type { TransactionMeta, } from '@metamask/transaction-controller'; -import type { EarnControllerMethodActions } from './EarnController-method-action-types'; +import type { EarnControllerMethodActions } from './EarnController-method-action-types.js'; import type { RefreshEarnEligibilityOptions, RefreshLendingPositionsOptions, RefreshPooledStakesOptions, RefreshPooledStakingDataOptions, RefreshPooledStakingVaultDailyApysOptions, -} from './types'; +} from './types.js'; export const controllerName = 'EarnController'; diff --git a/packages/earn-controller/src/index.ts b/packages/earn-controller/src/index.ts index a81e5525ce5..ee1e978106e 100644 --- a/packages/earn-controller/src/index.ts +++ b/packages/earn-controller/src/index.ts @@ -11,14 +11,14 @@ export type { EarnControllerActions, EarnControllerEvents, EarnControllerMessenger, -} from './EarnController'; +} from './EarnController.js'; export { controllerName, getDefaultEarnControllerState, DEFAULT_TRON_STAKING_STATE, EarnController, -} from './EarnController'; +} from './EarnController.js'; export type { EarnControllerRefreshPooledStakesAction, @@ -40,7 +40,7 @@ export type { EarnControllerGetLendingTokenAllowanceAction, EarnControllerGetLendingTokenMaxWithdrawAction, EarnControllerGetLendingTokenMaxDepositAction, -} from './EarnController-method-action-types'; +} from './EarnController-method-action-types.js'; export { selectLendingMarkets, @@ -62,7 +62,7 @@ export { selectLendingMarketsByChainIdAndTokenAddress, selectTronStaking, selectTronStakingApy, -} from './selectors'; +} from './selectors.js'; export { CHAIN_ID_TO_AAVE_POOL_CONTRACT, diff --git a/packages/earn-controller/src/selectors.test.ts b/packages/earn-controller/src/selectors.test.ts index 3bd1805ba5d..b0d08de1de7 100644 --- a/packages/earn-controller/src/selectors.test.ts +++ b/packages/earn-controller/src/selectors.test.ts @@ -3,7 +3,7 @@ import type { LendingMarket } from '@metamask/stake-sdk'; import type { EarnControllerState, LendingPositionWithMarket, -} from './EarnController'; +} from './EarnController.js'; import { selectLendingMarkets, selectLendingPositions, @@ -24,7 +24,7 @@ import { selectIsLendingEligible, selectTronStaking, selectTronStakingApy, -} from './selectors'; +} from './selectors.js'; describe('Earn Controller Selectors', () => { const mockMarket1: LendingMarket = { diff --git a/packages/earn-controller/src/selectors.ts b/packages/earn-controller/src/selectors.ts index b2d454539c5..21c400fce14 100644 --- a/packages/earn-controller/src/selectors.ts +++ b/packages/earn-controller/src/selectors.ts @@ -6,7 +6,7 @@ import type { LendingMarketWithPosition, LendingPositionWithMarket, LendingPositionWithMarketReference, -} from './EarnController'; +} from './EarnController.js'; export const selectLendingMarkets = ( state: EarnControllerState, From 7e03e86219962eb879fece3261893b3189be7848 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:51:01 +0200 Subject: [PATCH 077/115] ESLint fix and `jest` global import for multichain-api-middleware --- .../src/handlers/index.test.ts | 10 +++++----- .../src/handlers/index.ts | 16 ++++++++-------- .../src/handlers/wallet-createSession.test.ts | 3 ++- .../src/handlers/wallet-createSession.ts | 6 +++--- .../src/handlers/wallet-getSession.test.ts | 3 ++- .../src/handlers/wallet-getSession.ts | 2 +- .../src/handlers/wallet-invokeMethod.test.ts | 5 +++-- .../src/handlers/wallet-invokeMethod.ts | 2 +- .../src/handlers/wallet-revokeSession.test.ts | 3 ++- .../src/handlers/wallet-revokeSession.ts | 2 +- .../multichain-api-middleware/src/index.test.ts | 2 +- .../MultichainMiddlewareManager.test.ts | 5 +++-- .../MultichainSubscriptionManager.test.ts | 5 +++-- .../middlewares/MultichainSubscriptionManager.ts | 4 ++-- ...ltichainMethodCallValidatorMiddleware.test.ts | 13 +++++++------ 15 files changed, 44 insertions(+), 37 deletions(-) diff --git a/packages/multichain-api-middleware/src/handlers/index.test.ts b/packages/multichain-api-middleware/src/handlers/index.test.ts index cafe8f5d83f..94662dfb8c7 100644 --- a/packages/multichain-api-middleware/src/handlers/index.test.ts +++ b/packages/multichain-api-middleware/src/handlers/index.test.ts @@ -1,10 +1,10 @@ import { createMethodMiddleware } from '@metamask/json-rpc-engine'; -import { methodHandlers } from '.'; -import type { WalletCreateSessionHooks } from './wallet-createSession'; -import type { WalletGetSessionHooks } from './wallet-getSession'; -import type { WalletInvokeMethodHooks } from './wallet-invokeMethod'; -import type { WalletRevokeSessionHooks } from './wallet-revokeSession'; +import { methodHandlers } from './index.js'; +import type { WalletCreateSessionHooks } from './wallet-createSession.js'; +import type { WalletGetSessionHooks } from './wallet-getSession.js'; +import type { WalletInvokeMethodHooks } from './wallet-invokeMethod.js'; +import type { WalletRevokeSessionHooks } from './wallet-revokeSession.js'; type Hooks = WalletCreateSessionHooks & WalletGetSessionHooks & diff --git a/packages/multichain-api-middleware/src/handlers/index.ts b/packages/multichain-api-middleware/src/handlers/index.ts index ab8ad4ea991..aa35e794397 100644 --- a/packages/multichain-api-middleware/src/handlers/index.ts +++ b/packages/multichain-api-middleware/src/handlers/index.ts @@ -1,13 +1,13 @@ import type { UnionToIntersection } from '@metamask/json-rpc-engine/v2'; -import type { WalletCreateSessionHooks } from './wallet-createSession'; -import { walletCreateSessionHandler } from './wallet-createSession'; -import type { WalletGetSessionHooks } from './wallet-getSession'; -import { walletGetSessionHandler } from './wallet-getSession'; -import type { WalletInvokeMethodHooks } from './wallet-invokeMethod'; -import { walletInvokeMethodHandler } from './wallet-invokeMethod'; -import type { WalletRevokeSessionHooks } from './wallet-revokeSession'; -import { walletRevokeSessionHandler } from './wallet-revokeSession'; +import type { WalletCreateSessionHooks } from './wallet-createSession.js'; +import { walletCreateSessionHandler } from './wallet-createSession.js'; +import type { WalletGetSessionHooks } from './wallet-getSession.js'; +import { walletGetSessionHandler } from './wallet-getSession.js'; +import type { WalletInvokeMethodHooks } from './wallet-invokeMethod.js'; +import { walletInvokeMethodHandler } from './wallet-invokeMethod.js'; +import type { WalletRevokeSessionHooks } from './wallet-revokeSession.js'; +import { walletRevokeSessionHandler } from './wallet-revokeSession.js'; export type MethodHandlerHooks = UnionToIntersection< | WalletCreateSessionHooks diff --git a/packages/multichain-api-middleware/src/handlers/wallet-createSession.test.ts b/packages/multichain-api-middleware/src/handlers/wallet-createSession.test.ts index 2b4b6510bc8..d5ae3bd219a 100644 --- a/packages/multichain-api-middleware/src/handlers/wallet-createSession.test.ts +++ b/packages/multichain-api-middleware/src/handlers/wallet-createSession.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { Caip25Authorization, NormalizedScopesObject, @@ -18,7 +19,7 @@ import type { JsonRpcSuccess, } from '@metamask/utils'; -import { walletCreateSessionHandler } from './wallet-createSession'; +import { walletCreateSessionHandler } from './wallet-createSession.js'; jest.mock('@metamask/rpc-errors', () => ({ ...jest.requireActual('@metamask/rpc-errors'), diff --git a/packages/multichain-api-middleware/src/handlers/wallet-createSession.ts b/packages/multichain-api-middleware/src/handlers/wallet-createSession.ts index 53c57048840..79d374b42c0 100644 --- a/packages/multichain-api-middleware/src/handlers/wallet-createSession.ts +++ b/packages/multichain-api-middleware/src/handlers/wallet-createSession.ts @@ -50,7 +50,7 @@ import type { GetCapabilitiesHook, GetNonEvmSupportedMethodsHook, SortAccountIdsByLastSelectedHook, -} from './types'; +} from './types.js'; const SOLANA_CAIP_CHAIN_ID = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp'; @@ -128,7 +128,7 @@ async function handleWalletCreateSession( try { const { normalizedRequiredScopes, normalizedOptionalScopes } = - validateAndNormalizeScopes(requiredScopes || {}, optionalScopes || {}); + validateAndNormalizeScopes(requiredScopes ?? {}, optionalScopes ?? {}); const requiredScopesWithSupportedMethodsAndNotifications = getSupportedScopeObjects(normalizedRequiredScopes, { @@ -153,7 +153,7 @@ async function handleWalletCreateSession( isNamespaceInScopesObject( requiredScopesWithSupportedMethodsAndNotifications, KnownCaipNamespace.Solana, - ) || + ) ?? isNamespaceInScopesObject( optionalScopesWithSupportedMethodsAndNotifications, KnownCaipNamespace.Solana, diff --git a/packages/multichain-api-middleware/src/handlers/wallet-getSession.test.ts b/packages/multichain-api-middleware/src/handlers/wallet-getSession.test.ts index 788377dd1d2..34107f23235 100644 --- a/packages/multichain-api-middleware/src/handlers/wallet-getSession.test.ts +++ b/packages/multichain-api-middleware/src/handlers/wallet-getSession.test.ts @@ -1,7 +1,8 @@ +import { jest } from '@jest/globals'; import * as chainAgnosticPermissionModule from '@metamask/chain-agnostic-permission'; import type { JsonRpcRequest } from '@metamask/utils'; -import { walletGetSessionHandler } from './wallet-getSession'; +import { walletGetSessionHandler } from './wallet-getSession.js'; jest.mock('@metamask/chain-agnostic-permission', () => ({ ...jest.requireActual('@metamask/chain-agnostic-permission'), diff --git a/packages/multichain-api-middleware/src/handlers/wallet-getSession.ts b/packages/multichain-api-middleware/src/handlers/wallet-getSession.ts index 84cf51ed9c7..a38e0e783f1 100644 --- a/packages/multichain-api-middleware/src/handlers/wallet-getSession.ts +++ b/packages/multichain-api-middleware/src/handlers/wallet-getSession.ts @@ -23,7 +23,7 @@ import type { GetCaveatForOriginHook, GetNonEvmSupportedMethodsHook, SortAccountIdsByLastSelectedHook, -} from './types'; +} from './types.js'; type WalletGetSessionResult = { sessionScopes: NormalizedScopesObject; diff --git a/packages/multichain-api-middleware/src/handlers/wallet-invokeMethod.test.ts b/packages/multichain-api-middleware/src/handlers/wallet-invokeMethod.test.ts index ad4f83f9e78..79517b9971b 100644 --- a/packages/multichain-api-middleware/src/handlers/wallet-invokeMethod.test.ts +++ b/packages/multichain-api-middleware/src/handlers/wallet-invokeMethod.test.ts @@ -1,8 +1,9 @@ +import { jest } from '@jest/globals'; import * as chainAgnosticPermissionModule from '@metamask/chain-agnostic-permission'; import { providerErrors, rpcErrors } from '@metamask/rpc-errors'; -import type { WalletInvokeMethodRequest } from './wallet-invokeMethod'; -import { walletInvokeMethodHandler } from './wallet-invokeMethod'; +import type { WalletInvokeMethodRequest } from './wallet-invokeMethod.js'; +import { walletInvokeMethodHandler } from './wallet-invokeMethod.js'; // Allow individual modules to be mocked jest.mock('@metamask/chain-agnostic-permission', () => ({ diff --git a/packages/multichain-api-middleware/src/handlers/wallet-invokeMethod.ts b/packages/multichain-api-middleware/src/handlers/wallet-invokeMethod.ts index 1305d43ae87..aaba8539d0c 100644 --- a/packages/multichain-api-middleware/src/handlers/wallet-invokeMethod.ts +++ b/packages/multichain-api-middleware/src/handlers/wallet-invokeMethod.ts @@ -31,7 +31,7 @@ import type { GetCaveatForOriginHook, GetNonEvmSupportedMethodsHook, SortAccountIdsByLastSelectedHook, -} from './types'; +} from './types.js'; export type WalletInvokeMethodParams = { scope: ExternalScopeString; diff --git a/packages/multichain-api-middleware/src/handlers/wallet-revokeSession.test.ts b/packages/multichain-api-middleware/src/handlers/wallet-revokeSession.test.ts index 9c14f205366..cb3aae1d8f4 100644 --- a/packages/multichain-api-middleware/src/handlers/wallet-revokeSession.test.ts +++ b/packages/multichain-api-middleware/src/handlers/wallet-revokeSession.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Caip25CaveatType, Caip25EndowmentPermissionName, @@ -9,7 +10,7 @@ import { import { rpcErrors } from '@metamask/rpc-errors'; import type { JsonRpcRequest } from '@metamask/utils'; -import { walletRevokeSessionHandler } from './wallet-revokeSession'; +import { walletRevokeSessionHandler } from './wallet-revokeSession.js'; const baseRequest: JsonRpcRequest & { origin: string; diff --git a/packages/multichain-api-middleware/src/handlers/wallet-revokeSession.ts b/packages/multichain-api-middleware/src/handlers/wallet-revokeSession.ts index ce22f546a68..265a0f7e67e 100644 --- a/packages/multichain-api-middleware/src/handlers/wallet-revokeSession.ts +++ b/packages/multichain-api-middleware/src/handlers/wallet-revokeSession.ts @@ -24,7 +24,7 @@ import type { PendingJsonRpcResponse, } from '@metamask/utils'; -import type { Caip25Caveat, GetCaveatForOriginHook } from './types'; +import type { Caip25Caveat, GetCaveatForOriginHook } from './types.js'; export type WalletRevokeSessionHooks = GetCaveatForOriginHook & { revokePermissionForOrigin: ( diff --git a/packages/multichain-api-middleware/src/index.test.ts b/packages/multichain-api-middleware/src/index.test.ts index 58bef74e359..d904fd52fbe 100644 --- a/packages/multichain-api-middleware/src/index.test.ts +++ b/packages/multichain-api-middleware/src/index.test.ts @@ -1,4 +1,4 @@ -import * as allExports from '.'; +import * as allExports from './index.js'; describe('@metamask/multichain-api-middleware', () => { it('has expected JavaScript exports', () => { diff --git a/packages/multichain-api-middleware/src/middlewares/MultichainMiddlewareManager.test.ts b/packages/multichain-api-middleware/src/middlewares/MultichainMiddlewareManager.test.ts index cfc9e90f3ed..3d0b02dd5f1 100644 --- a/packages/multichain-api-middleware/src/middlewares/MultichainMiddlewareManager.test.ts +++ b/packages/multichain-api-middleware/src/middlewares/MultichainMiddlewareManager.test.ts @@ -1,7 +1,8 @@ +import { jest } from '@jest/globals'; import { rpcErrors } from '@metamask/rpc-errors'; -import type { ExtendedJsonRpcMiddleware } from './MultichainMiddlewareManager'; -import { MultichainMiddlewareManager } from './MultichainMiddlewareManager'; +import type { ExtendedJsonRpcMiddleware } from './MultichainMiddlewareManager.js'; +import { MultichainMiddlewareManager } from './MultichainMiddlewareManager.js'; const scope = 'eip155:1'; const origin = 'example.com'; diff --git a/packages/multichain-api-middleware/src/middlewares/MultichainSubscriptionManager.test.ts b/packages/multichain-api-middleware/src/middlewares/MultichainSubscriptionManager.test.ts index 811de8bbe2b..323db1221cc 100644 --- a/packages/multichain-api-middleware/src/middlewares/MultichainSubscriptionManager.test.ts +++ b/packages/multichain-api-middleware/src/middlewares/MultichainSubscriptionManager.test.ts @@ -1,8 +1,9 @@ +import { jest } from '@jest/globals'; import createSubscriptionManager from '@metamask/eth-json-rpc-filters/subscriptionManager'; import type SafeEventEmitter from '@metamask/safe-event-emitter'; -import { MultichainApiNotifications } from '../handlers/types'; -import { MultichainSubscriptionManager } from './MultichainSubscriptionManager'; +import { MultichainApiNotifications } from '../handlers/types.js'; +import { MultichainSubscriptionManager } from './MultichainSubscriptionManager.js'; jest.mock('@metamask/eth-json-rpc-filters/subscriptionManager', () => jest.fn(), diff --git a/packages/multichain-api-middleware/src/middlewares/MultichainSubscriptionManager.ts b/packages/multichain-api-middleware/src/middlewares/MultichainSubscriptionManager.ts index 2f819128da4..6d3e8c0958f 100644 --- a/packages/multichain-api-middleware/src/middlewares/MultichainSubscriptionManager.ts +++ b/packages/multichain-api-middleware/src/middlewares/MultichainSubscriptionManager.ts @@ -6,8 +6,8 @@ import SafeEventEmitter from '@metamask/safe-event-emitter'; import type { CaipChainId, Hex } from '@metamask/utils'; import { parseCaipChainId } from '@metamask/utils'; -import { MultichainApiNotifications } from '../handlers/types'; -import type { ExtendedJsonRpcMiddleware } from './MultichainMiddlewareManager'; +import { MultichainApiNotifications } from '../handlers/types.js'; +import type { ExtendedJsonRpcMiddleware } from './MultichainMiddlewareManager.js'; export type SubscriptionManager = { events: SafeEventEmitter; diff --git a/packages/multichain-api-middleware/src/middlewares/multichainMethodCallValidatorMiddleware.test.ts b/packages/multichain-api-middleware/src/middlewares/multichainMethodCallValidatorMiddleware.test.ts index eb68c8b1c27..9cc825a9d54 100644 --- a/packages/multichain-api-middleware/src/middlewares/multichainMethodCallValidatorMiddleware.test.ts +++ b/packages/multichain-api-middleware/src/middlewares/multichainMethodCallValidatorMiddleware.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; import type { JsonRpcError, JsonRpcRequest, JsonRpcResponse, } from '@metamask/utils'; -import { MultichainApiNotifications } from '../handlers/types'; -import { multichainMethodCallValidatorMiddleware } from './multichainMethodCallValidatorMiddleware'; +import { MultichainApiNotifications } from '../handlers/types.js'; +import { multichainMethodCallValidatorMiddleware } from './multichainMethodCallValidatorMiddleware.js'; describe('multichainMethodCallValidatorMiddleware', () => { const mockNext = jest.fn(); @@ -34,7 +35,7 @@ describe('multichainMethodCallValidatorMiddleware', () => { response, mockNext, (error) => { - reject(error); + reject(error instanceof Error ? error : new Error(String(error))); }, ); @@ -246,7 +247,7 @@ describe('multichainMethodCallValidatorMiddleware', () => { response, mockNext, (error) => { - reject(error); + reject(error instanceof Error ? error : new Error(String(error))); }, ); @@ -336,7 +337,7 @@ describe('multichainMethodCallValidatorMiddleware', () => { response, mockNext, (error) => { - reject(error); + reject(error instanceof Error ? error : new Error(String(error))); }, ); @@ -368,7 +369,7 @@ describe('multichainMethodCallValidatorMiddleware', () => { response, mockNext, (error) => { - reject(error); + reject(error instanceof Error ? error : new Error(String(error))); }, ); From 44a7d5c3af88027b3c47650132060d0ec608652c Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:51:01 +0200 Subject: [PATCH 078/115] ESLint fix and `jest` global import for eth-json-rpc-middleware --- .../src/block-cache.test.ts | 5 ++- .../src/block-cache.ts | 6 +-- .../src/block-ref-rewrite.test.ts | 5 ++- .../src/block-ref-rewrite.ts | 2 +- .../src/block-ref.test.ts | 4 +- .../eth-json-rpc-middleware/src/block-ref.ts | 6 +-- .../src/block-tracker-inspector.test.ts | 5 ++- .../src/block-tracker-inspector.ts | 2 +- .../eth-json-rpc-middleware/src/fetch.test.ts | 7 ++-- packages/eth-json-rpc-middleware/src/fetch.ts | 2 +- .../eth-json-rpc-middleware/src/index.test.ts | 2 +- packages/eth-json-rpc-middleware/src/index.ts | 30 +++++++-------- .../src/inflight-cache.test.ts | 4 +- .../src/inflight-cache.ts | 4 +- ...-get-granted-execution-permissions.test.ts | 7 ++-- ...allet-get-granted-execution-permissions.ts | 6 +-- ...et-supported-execution-permissions.test.ts | 7 ++-- ...let-get-supported-execution-permissions.ts | 6 +-- ...llet-request-execution-permissions.test.ts | 7 ++-- .../wallet-request-execution-permissions.ts | 4 +- ...wallet-revoke-execution-permission.test.ts | 7 ++-- .../wallet-revoke-execution-permission.ts | 4 +- .../src/providerAsMiddleware.test.ts | 5 ++- .../src/retryOnEmpty.test.ts | 7 ++-- .../src/retryOnEmpty.ts | 12 +++--- .../src/utils/cache.test.ts | 2 +- .../src/utils/common.test.ts | 2 +- .../src/utils/error.test.ts | 2 +- .../src/utils/normalize.test.ts | 2 +- .../src/utils/timeout.test.ts | 4 +- .../src/utils/validation.test.ts | 37 ++++--------------- .../src/utils/validation.ts | 4 +- .../src/wallet.test.ts | 8 ++-- .../eth-json-rpc-middleware/src/wallet.ts | 22 +++++------ .../test/util/helpers.ts | 3 +- 35 files changed, 117 insertions(+), 125 deletions(-) diff --git a/packages/eth-json-rpc-middleware/src/block-cache.test.ts b/packages/eth-json-rpc-middleware/src/block-cache.test.ts index b456789eeaf..e76499d048c 100644 --- a/packages/eth-json-rpc-middleware/src/block-cache.test.ts +++ b/packages/eth-json-rpc-middleware/src/block-cache.test.ts @@ -1,15 +1,16 @@ +import { jest } from '@jest/globals'; import { JsonRpcEngineV2, MiddlewareContext, } from '@metamask/json-rpc-engine/v2'; import type { Hex, Json } from '@metamask/utils'; -import { createBlockCacheMiddleware } from '.'; import { createProviderAndBlockTracker, createRequest, stubProviderRequests, -} from '../test/util/helpers'; +} from '../test/util/helpers.js'; +import { createBlockCacheMiddleware } from './index.js'; describe('block cache middleware', () => { let provider: ReturnType['provider']; diff --git a/packages/eth-json-rpc-middleware/src/block-cache.ts b/packages/eth-json-rpc-middleware/src/block-cache.ts index 700425a1fa2..6efc528fb00 100644 --- a/packages/eth-json-rpc-middleware/src/block-cache.ts +++ b/packages/eth-json-rpc-middleware/src/block-cache.ts @@ -5,20 +5,20 @@ import type { } from '@metamask/json-rpc-engine/v2'; import type { Json, JsonRpcRequest } from '@metamask/utils'; -import { projectLogger, createModuleLogger } from './logging-utils'; +import { projectLogger, createModuleLogger } from './logging-utils.js'; import type { Block, BlockCache, // eslint-disable-next-line @typescript-eslint/no-shadow Cache, -} from './types'; +} from './types.js'; import { cacheIdentifierForRequest, blockTagForRequest, cacheTypeForMethod, canCache, CacheStrategy, -} from './utils/cache'; +} from './utils/cache.js'; const log = createModuleLogger(projectLogger, 'block-cache'); // `` comes from https://github.com/ethereum/go-ethereum/issues/16925 diff --git a/packages/eth-json-rpc-middleware/src/block-ref-rewrite.test.ts b/packages/eth-json-rpc-middleware/src/block-ref-rewrite.test.ts index 158da99e291..3cc8ce956f6 100644 --- a/packages/eth-json-rpc-middleware/src/block-ref-rewrite.test.ts +++ b/packages/eth-json-rpc-middleware/src/block-ref-rewrite.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { PollingBlockTracker } from '@metamask/eth-block-tracker'; import { JsonRpcEngineV2 } from '@metamask/json-rpc-engine/v2'; import type { Json, JsonRpcRequest } from '@metamask/utils'; @@ -5,8 +6,8 @@ import type { Json, JsonRpcRequest } from '@metamask/utils'; import { createFinalMiddlewareWithDefaultResult, createRequest, -} from '../test/util/helpers'; -import { createBlockRefRewriteMiddleware } from './block-ref-rewrite'; +} from '../test/util/helpers.js'; +import { createBlockRefRewriteMiddleware } from './block-ref-rewrite.js'; const createMockBlockTracker = (): PollingBlockTracker => { return { diff --git a/packages/eth-json-rpc-middleware/src/block-ref-rewrite.ts b/packages/eth-json-rpc-middleware/src/block-ref-rewrite.ts index be2cc882382..7ad43ef900d 100644 --- a/packages/eth-json-rpc-middleware/src/block-ref-rewrite.ts +++ b/packages/eth-json-rpc-middleware/src/block-ref-rewrite.ts @@ -2,7 +2,7 @@ import type { PollingBlockTracker } from '@metamask/eth-block-tracker'; import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2'; import type { Json, JsonRpcRequest } from '@metamask/utils'; -import { blockTagParamIndex } from './utils/cache'; +import { blockTagParamIndex } from './utils/cache.js'; type BlockRefRewriteMiddlewareOptions = { blockTracker?: PollingBlockTracker; diff --git a/packages/eth-json-rpc-middleware/src/block-ref.test.ts b/packages/eth-json-rpc-middleware/src/block-ref.test.ts index e5f5406c546..d7451f99c52 100644 --- a/packages/eth-json-rpc-middleware/src/block-ref.test.ts +++ b/packages/eth-json-rpc-middleware/src/block-ref.test.ts @@ -1,6 +1,5 @@ import { MiddlewareContext } from '@metamask/json-rpc-engine/v2'; -import { createBlockRefMiddleware } from '.'; import { createMockParamsWithBlockParamAt, stubProviderRequests, @@ -12,7 +11,8 @@ import { createProviderAndBlockTracker, createEngine, createRequest, -} from '../test/util/helpers'; +} from '../test/util/helpers.js'; +import { createBlockRefMiddleware } from './index.js'; describe('createBlockRefMiddleware', () => { let provider: ReturnType['provider']; diff --git a/packages/eth-json-rpc-middleware/src/block-ref.ts b/packages/eth-json-rpc-middleware/src/block-ref.ts index 1fd52d1504c..8462b0eb97e 100644 --- a/packages/eth-json-rpc-middleware/src/block-ref.ts +++ b/packages/eth-json-rpc-middleware/src/block-ref.ts @@ -4,9 +4,9 @@ import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2'; import type { Json, JsonRpcParams, JsonRpcRequest } from '@metamask/utils'; import { klona } from 'klona'; -import { projectLogger, createModuleLogger } from './logging-utils'; -import type { Block } from './types'; -import { blockTagParamIndex } from './utils/cache'; +import { projectLogger, createModuleLogger } from './logging-utils.js'; +import type { Block } from './types.js'; +import { blockTagParamIndex } from './utils/cache.js'; type BlockRefMiddlewareOptions = { blockTracker?: PollingBlockTracker; diff --git a/packages/eth-json-rpc-middleware/src/block-tracker-inspector.test.ts b/packages/eth-json-rpc-middleware/src/block-tracker-inspector.test.ts index a6e6d4a790b..2853b96fd6b 100644 --- a/packages/eth-json-rpc-middleware/src/block-tracker-inspector.test.ts +++ b/packages/eth-json-rpc-middleware/src/block-tracker-inspector.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { PollingBlockTracker } from '@metamask/eth-block-tracker'; import { JsonRpcEngineV2 } from '@metamask/json-rpc-engine/v2'; import { rpcErrors } from '@metamask/rpc-errors'; @@ -6,8 +7,8 @@ import { Hex, Json } from '@metamask/utils'; import { createFinalMiddlewareWithDefaultResult, createRequest, -} from '../test/util/helpers'; -import { createBlockTrackerInspectorMiddleware } from './block-tracker-inspector'; +} from '../test/util/helpers.js'; +import { createBlockTrackerInspectorMiddleware } from './block-tracker-inspector.js'; const createMockBlockTracker = (): PollingBlockTracker => { return { diff --git a/packages/eth-json-rpc-middleware/src/block-tracker-inspector.ts b/packages/eth-json-rpc-middleware/src/block-tracker-inspector.ts index a8885ace130..ba31dba114e 100644 --- a/packages/eth-json-rpc-middleware/src/block-tracker-inspector.ts +++ b/packages/eth-json-rpc-middleware/src/block-tracker-inspector.ts @@ -3,7 +3,7 @@ import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2'; import { hasProperty } from '@metamask/utils'; import type { Json, JsonRpcRequest } from '@metamask/utils'; -import { projectLogger, createModuleLogger } from './logging-utils'; +import { projectLogger, createModuleLogger } from './logging-utils.js'; const log = createModuleLogger(projectLogger, 'block-tracker-inspector'); const futureBlockRefRequests: readonly string[] = [ diff --git a/packages/eth-json-rpc-middleware/src/fetch.test.ts b/packages/eth-json-rpc-middleware/src/fetch.test.ts index 4030442c8e5..f1d34f6b508 100644 --- a/packages/eth-json-rpc-middleware/src/fetch.test.ts +++ b/packages/eth-json-rpc-middleware/src/fetch.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { JsonRpcEngineV2, MiddlewareContext, @@ -10,9 +11,9 @@ import type { JsonRpcResponse, } from '@metamask/utils'; -import { createRequest } from '../test/util/helpers'; -import { createFetchMiddleware } from './fetch'; -import type { AbstractRpcServiceLike } from './types'; +import { createRequest } from '../test/util/helpers.js'; +import { createFetchMiddleware } from './fetch.js'; +import type { AbstractRpcServiceLike } from './types.js'; describe('createFetchMiddleware', () => { it.each([ diff --git a/packages/eth-json-rpc-middleware/src/fetch.ts b/packages/eth-json-rpc-middleware/src/fetch.ts index bd5dc886a3d..61b8935c476 100644 --- a/packages/eth-json-rpc-middleware/src/fetch.ts +++ b/packages/eth-json-rpc-middleware/src/fetch.ts @@ -5,7 +5,7 @@ import type { import { rpcErrors } from '@metamask/rpc-errors'; import type { Json, JsonRpcRequest } from '@metamask/utils'; -import type { AbstractRpcServiceLike } from './types'; +import type { AbstractRpcServiceLike } from './types.js'; /** * Creates middleware for sending a JSON-RPC request through the given RPC diff --git a/packages/eth-json-rpc-middleware/src/index.test.ts b/packages/eth-json-rpc-middleware/src/index.test.ts index ff6ab443529..f5dd72753cc 100644 --- a/packages/eth-json-rpc-middleware/src/index.test.ts +++ b/packages/eth-json-rpc-middleware/src/index.test.ts @@ -1,4 +1,4 @@ -import * as indexModule from '.'; +import * as indexModule from './index.js'; describe('index module', () => { it('has expected JavaScript exports', () => { diff --git a/packages/eth-json-rpc-middleware/src/index.ts b/packages/eth-json-rpc-middleware/src/index.ts index 8efff9e55d6..73a5dc9f51b 100644 --- a/packages/eth-json-rpc-middleware/src/index.ts +++ b/packages/eth-json-rpc-middleware/src/index.ts @@ -1,38 +1,38 @@ -export * from './block-cache'; -export * from './block-ref-rewrite'; -export * from './block-ref'; -export * from './block-tracker-inspector'; -export { createFetchMiddleware } from './fetch'; -export * from './inflight-cache'; +export * from './block-cache.js'; +export * from './block-ref-rewrite.js'; +export * from './block-ref.js'; +export * from './block-tracker-inspector.js'; +export { createFetchMiddleware } from './fetch.js'; +export * from './inflight-cache.js'; export type { PermissionDependency, RequestExecutionPermissionsRequestParams, RequestExecutionPermissionsResult, ProcessRequestExecutionPermissionsHook, -} from './methods/wallet-request-execution-permissions'; +} from './methods/wallet-request-execution-permissions.js'; export type { ProcessRevokeExecutionPermissionHook, RevokeExecutionPermissionRequestParams, RevokeExecutionPermissionResult, -} from './methods/wallet-revoke-execution-permission'; +} from './methods/wallet-revoke-execution-permission.js'; export type { GrantedExecutionPermission, GetGrantedExecutionPermissionsResult, ProcessGetGrantedExecutionPermissionsHook, -} from './methods/wallet-get-granted-execution-permissions'; +} from './methods/wallet-get-granted-execution-permissions.js'; export { GrantedExecutionPermissionStruct, GetGrantedExecutionPermissionsResultStruct, -} from './methods/wallet-get-granted-execution-permissions'; +} from './methods/wallet-get-granted-execution-permissions.js'; export type { SupportedExecutionPermissionConfig, GetSupportedExecutionPermissionsResult, ProcessGetSupportedExecutionPermissionsHook, -} from './methods/wallet-get-supported-execution-permissions'; +} from './methods/wallet-get-supported-execution-permissions.js'; export { SupportedExecutionPermissionConfigStruct, GetSupportedExecutionPermissionsResultStruct, -} from './methods/wallet-get-supported-execution-permissions'; -export * from './providerAsMiddleware'; -export * from './retryOnEmpty'; -export * from './wallet'; +} from './methods/wallet-get-supported-execution-permissions.js'; +export * from './providerAsMiddleware.js'; +export * from './retryOnEmpty.js'; +export * from './wallet.js'; diff --git a/packages/eth-json-rpc-middleware/src/inflight-cache.test.ts b/packages/eth-json-rpc-middleware/src/inflight-cache.test.ts index 22e1f053d29..08159a2ee76 100644 --- a/packages/eth-json-rpc-middleware/src/inflight-cache.test.ts +++ b/packages/eth-json-rpc-middleware/src/inflight-cache.test.ts @@ -1,7 +1,7 @@ import { JsonRpcEngineV2 } from '@metamask/json-rpc-engine/v2'; -import { createInflightCacheMiddleware } from '.'; -import { createRequest } from '../test/util/helpers'; +import { createRequest } from '../test/util/helpers.js'; +import { createInflightCacheMiddleware } from './index.js'; describe('inflight cache', () => { it('should cache an inflight request and only hit provider once', async () => { diff --git a/packages/eth-json-rpc-middleware/src/inflight-cache.ts b/packages/eth-json-rpc-middleware/src/inflight-cache.ts index 6d2b16c5737..d7c6cc1c0e0 100644 --- a/packages/eth-json-rpc-middleware/src/inflight-cache.ts +++ b/packages/eth-json-rpc-middleware/src/inflight-cache.ts @@ -5,8 +5,8 @@ import type { import { createDeferredPromise } from '@metamask/utils'; import type { Json, JsonRpcRequest } from '@metamask/utils'; -import { projectLogger, createModuleLogger } from './logging-utils'; -import { cacheIdentifierForRequest } from './utils/cache'; +import { projectLogger, createModuleLogger } from './logging-utils.js'; +import { cacheIdentifierForRequest } from './utils/cache.js'; type RequestHandler = [ (result: Readonly) => void, diff --git a/packages/eth-json-rpc-middleware/src/methods/wallet-get-granted-execution-permissions.test.ts b/packages/eth-json-rpc-middleware/src/methods/wallet-get-granted-execution-permissions.test.ts index 19a506fa1f5..5269a6429db 100644 --- a/packages/eth-json-rpc-middleware/src/methods/wallet-get-granted-execution-permissions.test.ts +++ b/packages/eth-json-rpc-middleware/src/methods/wallet-get-granted-execution-permissions.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; import type { Hex, Json, JsonRpcRequest } from '@metamask/utils'; -import type { WalletMiddlewareParams } from '../wallet'; +import type { WalletMiddlewareParams } from '../wallet.js'; import type { GetGrantedExecutionPermissionsResult, ProcessGetGrantedExecutionPermissionsHook, -} from './wallet-get-granted-execution-permissions'; -import { createWalletGetGrantedExecutionPermissionsHandler } from './wallet-get-granted-execution-permissions'; +} from './wallet-get-granted-execution-permissions.js'; +import { createWalletGetGrantedExecutionPermissionsHandler } from './wallet-get-granted-execution-permissions.js'; const RESULT_MOCK: GetGrantedExecutionPermissionsResult = [ { diff --git a/packages/eth-json-rpc-middleware/src/methods/wallet-get-granted-execution-permissions.ts b/packages/eth-json-rpc-middleware/src/methods/wallet-get-granted-execution-permissions.ts index d58259d8de9..06d352aa0fd 100644 --- a/packages/eth-json-rpc-middleware/src/methods/wallet-get-granted-execution-permissions.ts +++ b/packages/eth-json-rpc-middleware/src/methods/wallet-get-granted-execution-permissions.ts @@ -12,9 +12,9 @@ import { import { HexChecksumAddressStruct, StrictHexStruct } from '@metamask/utils'; import type { Json, JsonRpcRequest } from '@metamask/utils'; -import { NoParamsStruct } from '../utils/structs'; -import { validateParams } from '../utils/validation'; -import type { WalletMiddlewareContext } from '../wallet'; +import { NoParamsStruct } from '../utils/structs.js'; +import { validateParams } from '../utils/validation.js'; +import type { WalletMiddlewareContext } from '../wallet.js'; /** * Superstruct schema for the `wallet_getGrantedExecutionPermissions` request params. diff --git a/packages/eth-json-rpc-middleware/src/methods/wallet-get-supported-execution-permissions.test.ts b/packages/eth-json-rpc-middleware/src/methods/wallet-get-supported-execution-permissions.test.ts index 2fcec4d658f..edcda63ce9b 100644 --- a/packages/eth-json-rpc-middleware/src/methods/wallet-get-supported-execution-permissions.test.ts +++ b/packages/eth-json-rpc-middleware/src/methods/wallet-get-supported-execution-permissions.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; import type { Hex, Json, JsonRpcRequest } from '@metamask/utils'; -import type { WalletMiddlewareParams } from '../wallet'; +import type { WalletMiddlewareParams } from '../wallet.js'; import type { GetSupportedExecutionPermissionsResult, ProcessGetSupportedExecutionPermissionsHook, -} from './wallet-get-supported-execution-permissions'; -import { createWalletGetSupportedExecutionPermissionsHandler } from './wallet-get-supported-execution-permissions'; +} from './wallet-get-supported-execution-permissions.js'; +import { createWalletGetSupportedExecutionPermissionsHandler } from './wallet-get-supported-execution-permissions.js'; const RESULT_MOCK: GetSupportedExecutionPermissionsResult = { 'native-token-allowance': { diff --git a/packages/eth-json-rpc-middleware/src/methods/wallet-get-supported-execution-permissions.ts b/packages/eth-json-rpc-middleware/src/methods/wallet-get-supported-execution-permissions.ts index 120f947aae1..725bb951547 100644 --- a/packages/eth-json-rpc-middleware/src/methods/wallet-get-supported-execution-permissions.ts +++ b/packages/eth-json-rpc-middleware/src/methods/wallet-get-supported-execution-permissions.ts @@ -5,9 +5,9 @@ import { array, object, record, string } from '@metamask/superstruct'; import { StrictHexStruct } from '@metamask/utils'; import type { Json, JsonRpcRequest } from '@metamask/utils'; -import { NoParamsStruct } from '../utils/structs'; -import { validateParams } from '../utils/validation'; -import type { WalletMiddlewareContext } from '../wallet'; +import { NoParamsStruct } from '../utils/structs.js'; +import { validateParams } from '../utils/validation.js'; +import type { WalletMiddlewareContext } from '../wallet.js'; /** * Superstruct schema for the `wallet_getSupportedExecutionPermissions` request params. diff --git a/packages/eth-json-rpc-middleware/src/methods/wallet-request-execution-permissions.test.ts b/packages/eth-json-rpc-middleware/src/methods/wallet-request-execution-permissions.test.ts index 13e95d44acd..d6af6531c31 100644 --- a/packages/eth-json-rpc-middleware/src/methods/wallet-request-execution-permissions.test.ts +++ b/packages/eth-json-rpc-middleware/src/methods/wallet-request-execution-permissions.test.ts @@ -1,13 +1,14 @@ +import { jest } from '@jest/globals'; import type { Json, JsonRpcRequest } from '@metamask/utils'; import { klona } from 'klona'; -import type { WalletMiddlewareParams } from '../wallet'; +import type { WalletMiddlewareParams } from '../wallet.js'; import type { ProcessRequestExecutionPermissionsHook, RequestExecutionPermissionsRequestParams, RequestExecutionPermissionsResult, -} from './wallet-request-execution-permissions'; -import { createWalletRequestExecutionPermissionsHandler } from './wallet-request-execution-permissions'; +} from './wallet-request-execution-permissions.js'; +import { createWalletRequestExecutionPermissionsHandler } from './wallet-request-execution-permissions.js'; const FROM_ADDRESS_MOCK = '0x123abc123abc123abc123abc123abc123abc123A'; const TO_ADDRESS_MOCK = '0x016562aA41A8697720ce0943F003141f5dEAe006'; diff --git a/packages/eth-json-rpc-middleware/src/methods/wallet-request-execution-permissions.ts b/packages/eth-json-rpc-middleware/src/methods/wallet-request-execution-permissions.ts index dc2ec4027a8..67fb5f748ea 100644 --- a/packages/eth-json-rpc-middleware/src/methods/wallet-request-execution-permissions.ts +++ b/packages/eth-json-rpc-middleware/src/methods/wallet-request-execution-permissions.ts @@ -15,8 +15,8 @@ import { import { HexChecksumAddressStruct, StrictHexStruct } from '@metamask/utils'; import type { Hex, Json, JsonRpcRequest } from '@metamask/utils'; -import { validateParams } from '../utils/validation'; -import type { WalletMiddlewareContext } from '../wallet'; +import { validateParams } from '../utils/validation.js'; +import type { WalletMiddlewareContext } from '../wallet.js'; const PermissionStruct = object({ type: string(), diff --git a/packages/eth-json-rpc-middleware/src/methods/wallet-revoke-execution-permission.test.ts b/packages/eth-json-rpc-middleware/src/methods/wallet-revoke-execution-permission.test.ts index 13c92f80238..99e145221f4 100644 --- a/packages/eth-json-rpc-middleware/src/methods/wallet-revoke-execution-permission.test.ts +++ b/packages/eth-json-rpc-middleware/src/methods/wallet-revoke-execution-permission.test.ts @@ -1,12 +1,13 @@ +import { jest } from '@jest/globals'; import type { Json, JsonRpcRequest } from '@metamask/utils'; import { klona } from 'klona'; -import type { WalletMiddlewareParams } from '../wallet'; +import type { WalletMiddlewareParams } from '../wallet.js'; import type { ProcessRevokeExecutionPermissionHook, RevokeExecutionPermissionRequestParams, -} from './wallet-revoke-execution-permission'; -import { createWalletRevokeExecutionPermissionHandler } from './wallet-revoke-execution-permission'; +} from './wallet-revoke-execution-permission.js'; +import { createWalletRevokeExecutionPermissionHandler } from './wallet-revoke-execution-permission.js'; const HEX_MOCK = '0x123abc'; diff --git a/packages/eth-json-rpc-middleware/src/methods/wallet-revoke-execution-permission.ts b/packages/eth-json-rpc-middleware/src/methods/wallet-revoke-execution-permission.ts index fe2f7a6d833..a5da3aef542 100644 --- a/packages/eth-json-rpc-middleware/src/methods/wallet-revoke-execution-permission.ts +++ b/packages/eth-json-rpc-middleware/src/methods/wallet-revoke-execution-permission.ts @@ -5,8 +5,8 @@ import { object } from '@metamask/superstruct'; import { StrictHexStruct } from '@metamask/utils'; import type { Json, JsonRpcRequest } from '@metamask/utils'; -import { validateParams } from '../utils/validation'; -import type { WalletMiddlewareContext } from '../wallet'; +import { validateParams } from '../utils/validation.js'; +import type { WalletMiddlewareContext } from '../wallet.js'; export const RevokeExecutionPermissionResultStruct = object({}); diff --git a/packages/eth-json-rpc-middleware/src/providerAsMiddleware.test.ts b/packages/eth-json-rpc-middleware/src/providerAsMiddleware.test.ts index 73c743395b5..8a56e0d0ef4 100644 --- a/packages/eth-json-rpc-middleware/src/providerAsMiddleware.test.ts +++ b/packages/eth-json-rpc-middleware/src/providerAsMiddleware.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { InternalProvider } from '@metamask/eth-json-rpc-provider'; import { JsonRpcEngine } from '@metamask/json-rpc-engine'; import { JsonRpcEngineV2 } from '@metamask/json-rpc-engine/v2'; @@ -7,11 +8,11 @@ import { assertIsJsonRpcSuccess, } from '@metamask/utils'; -import { createRequest } from '../test/util/helpers'; +import { createRequest } from '../test/util/helpers.js'; import { providerAsMiddleware, providerAsMiddlewareV2, -} from './providerAsMiddleware'; +} from './providerAsMiddleware.js'; const createMockProvider = (resultOrError: Json | Error): InternalProvider => ({ diff --git a/packages/eth-json-rpc-middleware/src/retryOnEmpty.test.ts b/packages/eth-json-rpc-middleware/src/retryOnEmpty.test.ts index c201d8687db..590b8bf2eaf 100644 --- a/packages/eth-json-rpc-middleware/src/retryOnEmpty.test.ts +++ b/packages/eth-json-rpc-middleware/src/retryOnEmpty.test.ts @@ -1,8 +1,8 @@ +import { jest } from '@jest/globals'; import { providerErrors, rpcErrors } from '@metamask/rpc-errors'; import type { Json, JsonRpcParams, JsonRpcRequest } from '@metamask/utils'; -import { createRetryOnEmptyMiddleware } from '.'; -import type { ProviderRequestStub } from '../test/util/helpers'; +import type { ProviderRequestStub } from '../test/util/helpers.js'; import { createMockParamsWithBlockParamAt, createMockParamsWithoutBlockParamAt, @@ -14,7 +14,8 @@ import { createEngine, createRequest, createFinalMiddlewareWithDefaultResult, -} from '../test/util/helpers'; +} from '../test/util/helpers.js'; +import { createRetryOnEmptyMiddleware } from './index.js'; const originalSetTimeout = globalThis.setTimeout; diff --git a/packages/eth-json-rpc-middleware/src/retryOnEmpty.ts b/packages/eth-json-rpc-middleware/src/retryOnEmpty.ts index ba615fb2e60..ecf18c05e0c 100644 --- a/packages/eth-json-rpc-middleware/src/retryOnEmpty.ts +++ b/packages/eth-json-rpc-middleware/src/retryOnEmpty.ts @@ -4,11 +4,11 @@ import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2'; import type { Json, JsonRpcParams, JsonRpcRequest } from '@metamask/utils'; import { klona } from 'klona'; -import { projectLogger, createModuleLogger } from './logging-utils'; -import type { Block } from './types'; -import { blockTagParamIndex } from './utils/cache'; -import { isExecutionRevertedError } from './utils/error'; -import { timeout } from './utils/timeout'; +import { projectLogger, createModuleLogger } from './logging-utils.js'; +import type { Block } from './types.js'; +import { blockTagParamIndex } from './utils/cache.js'; +import { isExecutionRevertedError } from './utils/error.js'; +import { timeout } from './utils/timeout.js'; // // RetryOnEmptyMiddleware will retry any request with an empty response that has @@ -137,7 +137,7 @@ async function retry( return await asyncFn(); } catch (error: unknown) { if (isExecutionRevertedError(error)) { - throw error as unknown; + throw error; } log('(call %i) Request failed, waiting 1s to retry again...', index + 1); await timeout(1000); diff --git a/packages/eth-json-rpc-middleware/src/utils/cache.test.ts b/packages/eth-json-rpc-middleware/src/utils/cache.test.ts index d755a82ce26..57f83d7d3b7 100644 --- a/packages/eth-json-rpc-middleware/src/utils/cache.test.ts +++ b/packages/eth-json-rpc-middleware/src/utils/cache.test.ts @@ -4,7 +4,7 @@ import { cacheTypeForMethod, cacheIdentifierForRequest, canCache, -} from './cache'; +} from './cache.js'; const knownMethods = [ 'web3_clientVersion', diff --git a/packages/eth-json-rpc-middleware/src/utils/common.test.ts b/packages/eth-json-rpc-middleware/src/utils/common.test.ts index 304e6634d9e..38d5c80a8d5 100644 --- a/packages/eth-json-rpc-middleware/src/utils/common.test.ts +++ b/packages/eth-json-rpc-middleware/src/utils/common.test.ts @@ -1,4 +1,4 @@ -import { stripArrayTypeIfPresent } from './common'; +import { stripArrayTypeIfPresent } from './common.js'; describe('CommonUtils', () => { describe('stripArrayTypeIfPresent', () => { diff --git a/packages/eth-json-rpc-middleware/src/utils/error.test.ts b/packages/eth-json-rpc-middleware/src/utils/error.test.ts index d51eca67272..ad868fb4fc4 100644 --- a/packages/eth-json-rpc-middleware/src/utils/error.test.ts +++ b/packages/eth-json-rpc-middleware/src/utils/error.test.ts @@ -1,6 +1,6 @@ import { errorCodes } from '@metamask/rpc-errors'; -import { isExecutionRevertedError } from './error'; +import { isExecutionRevertedError } from './error.js'; const executionRevertedError = { code: errorCodes.rpc.invalidInput, diff --git a/packages/eth-json-rpc-middleware/src/utils/normalize.test.ts b/packages/eth-json-rpc-middleware/src/utils/normalize.test.ts index 72bcc706b39..dc489331196 100644 --- a/packages/eth-json-rpc-middleware/src/utils/normalize.test.ts +++ b/packages/eth-json-rpc-middleware/src/utils/normalize.test.ts @@ -2,7 +2,7 @@ import { MessageTypes, TypedMessage } from '@metamask/eth-sig-util'; import deepFreeze from 'deep-freeze-strict'; import { klona } from 'klona'; -import { normalizeTypedMessage } from './normalize'; +import { normalizeTypedMessage } from './normalize.js'; const MESSAGE_DATA_MOCK = { types: { diff --git a/packages/eth-json-rpc-middleware/src/utils/timeout.test.ts b/packages/eth-json-rpc-middleware/src/utils/timeout.test.ts index 8e9e8181991..de888ec904d 100644 --- a/packages/eth-json-rpc-middleware/src/utils/timeout.test.ts +++ b/packages/eth-json-rpc-middleware/src/utils/timeout.test.ts @@ -1,4 +1,6 @@ -import { timeout } from './timeout'; +import { jest } from '@jest/globals'; + +import { timeout } from './timeout.js'; describe('timeout', () => { describe('with real timers', () => { diff --git a/packages/eth-json-rpc-middleware/src/utils/validation.test.ts b/packages/eth-json-rpc-middleware/src/utils/validation.test.ts index 230b476a4cf..e36f182eae4 100644 --- a/packages/eth-json-rpc-middleware/src/utils/validation.test.ts +++ b/packages/eth-json-rpc-middleware/src/utils/validation.test.ts @@ -1,41 +1,21 @@ +import { jest } from '@jest/globals'; import { MiddlewareContext } from '@metamask/json-rpc-engine/v2'; import { providerErrors } from '@metamask/rpc-errors'; -import type { StructError } from '@metamask/superstruct'; -import { any, validate } from '@metamask/superstruct'; +import { any, object, string } from '@metamask/superstruct'; -import type { WalletMiddlewareKeyValues } from '../wallet'; +import type { WalletMiddlewareKeyValues } from '../wallet.js'; import { resemblesAddress, validateAndNormalizeKeyholder, validateParams, validateTypedMessageKeys, -} from './validation'; - -jest.mock('@metamask/superstruct', () => ({ - ...jest.requireActual('@metamask/superstruct'), - validate: jest.fn(), -})); +} from './validation.js'; const ADDRESS_MOCK = '0xABCDabcdABCDabcdABCDabcdABCDabcdABCDabcd'; const createContext = (): MiddlewareContext => new MiddlewareContext([['origin', 'test']]); -const STRUCT_ERROR_MOCK = { - failures: () => [ - { - path: ['test1', 'test2'], - message: 'test message', - }, - { - path: ['test3'], - message: 'test message 2', - }, - ], -} as StructError; - describe('Validation Utils', () => { - const validateMock = jest.mocked(validate); - let getAccountsMock: jest.MockedFn<(origin: string) => Promise>; beforeEach(() => { @@ -110,19 +90,18 @@ describe('Validation Utils', () => { describe('validateParams', () => { it('does now throw if superstruct returns no error', () => { - validateMock.mockReturnValue([undefined, undefined]); expect(() => validateParams({}, any())).not.toThrow(); }); it('throws if superstruct returns error', () => { - validateMock.mockReturnValue([STRUCT_ERROR_MOCK, undefined]); + const struct = object({ test1: object({ test2: string() }), test3: string() }); - expect(() => validateParams({}, any())) + expect(() => validateParams({ test1: { test2: 42 }, test3: 42 }, struct)) .toThrowErrorMatchingInlineSnapshot(` "Invalid params - test1 > test2 - test message - test3 - test message 2" + test1 > test2 - Expected a string, but received: 42 + test3 - Expected a string, but received: 42" `); }); }); diff --git a/packages/eth-json-rpc-middleware/src/utils/validation.ts b/packages/eth-json-rpc-middleware/src/utils/validation.ts index de3782fa67b..031fc0a76ca 100644 --- a/packages/eth-json-rpc-middleware/src/utils/validation.ts +++ b/packages/eth-json-rpc-middleware/src/utils/validation.ts @@ -4,8 +4,8 @@ import type { Struct, StructError } from '@metamask/superstruct'; import { validate } from '@metamask/superstruct'; import type { Hex } from '@metamask/utils'; -import type { WalletMiddlewareContext } from '../wallet'; -import { parseTypedMessage } from './normalize'; +import type { WalletMiddlewareContext } from '../wallet.js'; +import { parseTypedMessage } from './normalize.js'; /** * Validates and normalizes a keyholder address for transaction- and diff --git a/packages/eth-json-rpc-middleware/src/wallet.test.ts b/packages/eth-json-rpc-middleware/src/wallet.test.ts index a9964c0d3a1..5cb61e36644 100644 --- a/packages/eth-json-rpc-middleware/src/wallet.test.ts +++ b/packages/eth-json-rpc-middleware/src/wallet.test.ts @@ -1,15 +1,15 @@ import { MessageTypes, TypedMessage } from '@metamask/eth-sig-util'; import { JsonRpcEngineV2 } from '@metamask/json-rpc-engine/v2'; +import { createHandleParams, createRequest } from '../test/util/helpers.js'; import type { MessageParams, TransactionParams, TypedMessageParams, TypedMessageV1Params, -} from '.'; -import { createWalletMiddleware } from '.'; -import { createHandleParams, createRequest } from '../test/util/helpers'; -import { DANGEROUS_PROTOTYPE_PROPERTIES } from './utils/validation'; +} from './index.js'; +import { createWalletMiddleware } from './index.js'; +import { DANGEROUS_PROTOTYPE_PROPERTIES } from './utils/validation.js'; const testAddresses = [ '0xbe93f9bacbcffc8ee6663f2647917ed7a20a57bb', diff --git a/packages/eth-json-rpc-middleware/src/wallet.ts b/packages/eth-json-rpc-middleware/src/wallet.ts index b220be16e09..3b8e6f17f71 100644 --- a/packages/eth-json-rpc-middleware/src/wallet.ts +++ b/packages/eth-json-rpc-middleware/src/wallet.ts @@ -10,23 +10,23 @@ import { rpcErrors } from '@metamask/rpc-errors'; import { isValidHexAddress } from '@metamask/utils'; import type { JsonRpcRequest, Json, Hex } from '@metamask/utils'; -import { createWalletGetGrantedExecutionPermissionsHandler } from './methods/wallet-get-granted-execution-permissions'; -import type { ProcessGetGrantedExecutionPermissionsHook } from './methods/wallet-get-granted-execution-permissions'; -import { createWalletGetSupportedExecutionPermissionsHandler } from './methods/wallet-get-supported-execution-permissions'; -import type { ProcessGetSupportedExecutionPermissionsHook } from './methods/wallet-get-supported-execution-permissions'; -import { createWalletRequestExecutionPermissionsHandler } from './methods/wallet-request-execution-permissions'; -import type { ProcessRequestExecutionPermissionsHook } from './methods/wallet-request-execution-permissions'; -import { createWalletRevokeExecutionPermissionHandler } from './methods/wallet-revoke-execution-permission'; -import type { ProcessRevokeExecutionPermissionHook } from './methods/wallet-revoke-execution-permission'; -import { stripArrayTypeIfPresent } from './utils/common'; -import { normalizeTypedMessage, parseTypedMessage } from './utils/normalize'; +import { createWalletGetGrantedExecutionPermissionsHandler } from './methods/wallet-get-granted-execution-permissions.js'; +import type { ProcessGetGrantedExecutionPermissionsHook } from './methods/wallet-get-granted-execution-permissions.js'; +import { createWalletGetSupportedExecutionPermissionsHandler } from './methods/wallet-get-supported-execution-permissions.js'; +import type { ProcessGetSupportedExecutionPermissionsHook } from './methods/wallet-get-supported-execution-permissions.js'; +import { createWalletRequestExecutionPermissionsHandler } from './methods/wallet-request-execution-permissions.js'; +import type { ProcessRequestExecutionPermissionsHook } from './methods/wallet-request-execution-permissions.js'; +import { createWalletRevokeExecutionPermissionHandler } from './methods/wallet-revoke-execution-permission.js'; +import type { ProcessRevokeExecutionPermissionHook } from './methods/wallet-revoke-execution-permission.js'; +import { stripArrayTypeIfPresent } from './utils/common.js'; +import { normalizeTypedMessage, parseTypedMessage } from './utils/normalize.js'; import { resemblesAddress, validateAndNormalizeKeyholder as validateKeyholder, validateTypedDataForPrototypePollution, validateTypedDataV1ForPrototypePollution, validateTypedMessageKeys, -} from './utils/validation'; +} from './utils/validation.js'; export type TransactionParams = { from: string; diff --git a/packages/eth-json-rpc-middleware/test/util/helpers.ts b/packages/eth-json-rpc-middleware/test/util/helpers.ts index 778eda5a2cc..864d7e9ca47 100644 --- a/packages/eth-json-rpc-middleware/test/util/helpers.ts +++ b/packages/eth-json-rpc-middleware/test/util/helpers.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { PollingBlockTracker } from '@metamask/eth-block-tracker'; import { InternalProvider } from '@metamask/eth-json-rpc-provider'; import { JsonRpcEngine } from '@metamask/json-rpc-engine'; @@ -10,7 +11,7 @@ import type { Json, JsonRpcParams, JsonRpcRequest } from '@metamask/utils'; import { klona } from 'klona/full'; import { isDeepStrictEqual } from 'util'; -import type { WalletMiddlewareKeyValues } from '../../src/wallet'; +import type { WalletMiddlewareKeyValues } from '../../src/wallet.js'; export const createRequest = < Input extends Partial>, From a9a967c85fde9f43a6733f716b1fc3a55c4c1e95 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:51:05 +0200 Subject: [PATCH 079/115] ESLint fix and `jest` global import for config-registry-controller --- ...gRegistryController-method-action-types.ts | 2 +- .../src/ConfigRegistryController.test.ts | 13 ++++++------ .../src/ConfigRegistryController.ts | 6 +++--- ...egistry-api-service-method-action-types.ts | 2 +- .../config-registry-api-service.test.ts | 9 +++++---- .../config-registry-api-service.ts | 6 +++--- .../filters.test.ts | 6 +++--- .../config-registry-api-service/filters.ts | 2 +- .../config-registry-controller/src/index.ts | 20 +++++++++---------- .../src/selectors.test.ts | 4 ++-- .../src/selectors.ts | 6 +++--- .../tests/helpers.ts | 2 +- 12 files changed, 40 insertions(+), 38 deletions(-) diff --git a/packages/config-registry-controller/src/ConfigRegistryController-method-action-types.ts b/packages/config-registry-controller/src/ConfigRegistryController-method-action-types.ts index e40a2bce2fc..4415001e537 100644 --- a/packages/config-registry-controller/src/ConfigRegistryController-method-action-types.ts +++ b/packages/config-registry-controller/src/ConfigRegistryController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { ConfigRegistryController } from './ConfigRegistryController'; +import type { ConfigRegistryController } from './ConfigRegistryController.js'; /** * Stop all polling. diff --git a/packages/config-registry-controller/src/ConfigRegistryController.test.ts b/packages/config-registry-controller/src/ConfigRegistryController.test.ts index c15fed9cf2b..4421dfe6e57 100644 --- a/packages/config-registry-controller/src/ConfigRegistryController.test.ts +++ b/packages/config-registry-controller/src/ConfigRegistryController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { MockAnyNamespace, MessengerActions, @@ -5,15 +6,15 @@ import type { } from '@metamask/messenger'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; -import { createMockNetworkConfig } from '../tests/helpers'; -import type { RegistryNetworkConfig } from './config-registry-api-service/types'; -import type { FetchConfigResult } from './config-registry-api-service/types'; -import type { ConfigRegistryControllerMessenger } from './ConfigRegistryController'; +import { createMockNetworkConfig } from '../tests/helpers.js'; +import type { RegistryNetworkConfig } from './config-registry-api-service/types.js'; +import type { FetchConfigResult } from './config-registry-api-service/types.js'; +import type { ConfigRegistryControllerMessenger } from './ConfigRegistryController.js'; import { ConfigRegistryController, DEFAULT_POLLING_INTERVAL, -} from './ConfigRegistryController'; -import { selectFeaturedNetworks, selectNetworks } from './selectors'; +} from './ConfigRegistryController.js'; +import { selectFeaturedNetworks, selectNetworks } from './selectors.js'; const namespace = 'ConfigRegistryController' as const; diff --git a/packages/config-registry-controller/src/ConfigRegistryController.ts b/packages/config-registry-controller/src/ConfigRegistryController.ts index f1be853dfcb..2d5e5ec2f56 100644 --- a/packages/config-registry-controller/src/ConfigRegistryController.ts +++ b/packages/config-registry-controller/src/ConfigRegistryController.ts @@ -14,9 +14,9 @@ import type { RemoteFeatureFlagControllerGetStateAction } from '@metamask/remote import type { RemoteFeatureFlagControllerStateChangeEvent } from '@metamask/remote-feature-flag-controller'; import { Duration, inMilliseconds, Json } from '@metamask/utils'; -import type { ConfigRegistryApiServiceFetchConfigAction } from './config-registry-api-service/config-registry-api-service-method-action-types'; -import type { RegistryNetworkConfig } from './config-registry-api-service/types'; -import type { ConfigRegistryControllerMethodActions } from './ConfigRegistryController-method-action-types'; +import type { ConfigRegistryApiServiceFetchConfigAction } from './config-registry-api-service/config-registry-api-service-method-action-types.js'; +import type { RegistryNetworkConfig } from './config-registry-api-service/types.js'; +import type { ConfigRegistryControllerMethodActions } from './ConfigRegistryController-method-action-types.js'; const controllerName = 'ConfigRegistryController'; diff --git a/packages/config-registry-controller/src/config-registry-api-service/config-registry-api-service-method-action-types.ts b/packages/config-registry-controller/src/config-registry-api-service/config-registry-api-service-method-action-types.ts index 5bdba1c73df..5f2f15c4025 100644 --- a/packages/config-registry-controller/src/config-registry-api-service/config-registry-api-service-method-action-types.ts +++ b/packages/config-registry-controller/src/config-registry-api-service/config-registry-api-service-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { ConfigRegistryApiService } from './config-registry-api-service'; +import type { ConfigRegistryApiService } from './config-registry-api-service.js'; export type ConfigRegistryApiServiceFetchConfigAction = { type: `ConfigRegistryApiService:fetchConfig`; diff --git a/packages/config-registry-controller/src/config-registry-api-service/config-registry-api-service.test.ts b/packages/config-registry-controller/src/config-registry-api-service/config-registry-api-service.test.ts index fa3c1a5027b..2ff4d9f1942 100644 --- a/packages/config-registry-controller/src/config-registry-api-service/config-registry-api-service.test.ts +++ b/packages/config-registry-controller/src/config-registry-api-service/config-registry-api-service.test.ts @@ -1,13 +1,14 @@ +import { jest } from '@jest/globals'; import { SDK } from '@metamask/profile-sync-controller'; import nock from 'nock'; -import { createMockNetworkConfig } from '../../tests/helpers'; -import { ConfigRegistryApiService } from './config-registry-api-service'; +import { createMockNetworkConfig } from '../../tests/helpers.js'; +import { ConfigRegistryApiService } from './config-registry-api-service.js'; import type { ConfigRegistryApiServiceMessenger, ConfigRegistryApiServiceOptions, -} from './config-registry-api-service'; -import type { RegistryConfigApiResponse } from './types'; +} from './config-registry-api-service.js'; +import type { RegistryConfigApiResponse } from './types.js'; function createMockServiceMessenger(): ConfigRegistryApiServiceMessenger { return { diff --git a/packages/config-registry-controller/src/config-registry-api-service/config-registry-api-service.ts b/packages/config-registry-controller/src/config-registry-api-service/config-registry-api-service.ts index b023e2bdb42..1c8767ec9f0 100644 --- a/packages/config-registry-controller/src/config-registry-api-service/config-registry-api-service.ts +++ b/packages/config-registry-controller/src/config-registry-api-service/config-registry-api-service.ts @@ -7,13 +7,13 @@ import type { Messenger } from '@metamask/messenger'; import { SDK } from '@metamask/profile-sync-controller'; import type { IDisposable } from 'cockatiel'; -import type { ConfigRegistryApiServiceMethodActions } from './config-registry-api-service-method-action-types'; +import type { ConfigRegistryApiServiceMethodActions } from './config-registry-api-service-method-action-types.js'; import type { FetchConfigOptions, FetchConfigResult, RegistryConfigApiResponse, -} from './types'; -import { validateRegistryConfigApiResponse } from './types'; +} from './types.js'; +import { validateRegistryConfigApiResponse } from './types.js'; const ENDPOINT_PATH = '/config/networks'; diff --git a/packages/config-registry-controller/src/config-registry-api-service/filters.test.ts b/packages/config-registry-controller/src/config-registry-api-service/filters.test.ts index a9a15e14514..b81120efd16 100644 --- a/packages/config-registry-controller/src/config-registry-api-service/filters.test.ts +++ b/packages/config-registry-controller/src/config-registry-api-service/filters.test.ts @@ -1,6 +1,6 @@ -import { createMockNetworkConfig } from '../../tests/helpers'; -import { filterNetworks } from './filters'; -import type { RegistryNetworkConfig } from './types'; +import { createMockNetworkConfig } from '../../tests/helpers.js'; +import { filterNetworks } from './filters.js'; +import type { RegistryNetworkConfig } from './types.js'; describe('filters', () => { describe('filterNetworks', () => { diff --git a/packages/config-registry-controller/src/config-registry-api-service/filters.ts b/packages/config-registry-controller/src/config-registry-api-service/filters.ts index 0827d6ad65d..e0add5261f0 100644 --- a/packages/config-registry-controller/src/config-registry-api-service/filters.ts +++ b/packages/config-registry-controller/src/config-registry-api-service/filters.ts @@ -1,4 +1,4 @@ -import type { RegistryNetworkConfig } from './types'; +import type { RegistryNetworkConfig } from './types.js'; export type NetworkFilterOptions = { isFeatured?: boolean; diff --git a/packages/config-registry-controller/src/index.ts b/packages/config-registry-controller/src/index.ts index 1c650078617..bcc085962d1 100644 --- a/packages/config-registry-controller/src/index.ts +++ b/packages/config-registry-controller/src/index.ts @@ -6,33 +6,33 @@ export type { ConfigRegistryControllerEvents, ConfigRegistryControllerStateChangeEvent, ConfigRegistryControllerMessenger, -} from './ConfigRegistryController'; +} from './ConfigRegistryController.js'; export type { ConfigRegistryControllerStartPollingAction, ConfigRegistryControllerStopPollingAction, ConfigRegistryControllerMethodActions, -} from './ConfigRegistryController-method-action-types'; +} from './ConfigRegistryController-method-action-types.js'; export { ConfigRegistryController, DEFAULT_POLLING_INTERVAL, -} from './ConfigRegistryController'; -export { selectFeaturedNetworks, selectNetworks } from './selectors'; +} from './ConfigRegistryController.js'; +export { selectFeaturedNetworks, selectNetworks } from './selectors.js'; export type { FetchConfigOptions, FetchConfigResult, RegistryNetworkConfig, RegistryConfigApiResponse, -} from './config-registry-api-service/types'; +} from './config-registry-api-service/types.js'; export type { ConfigRegistryApiServiceOptions, ConfigRegistryApiServiceActions, ConfigRegistryApiServiceEvents, ConfigRegistryApiServiceMessenger, -} from './config-registry-api-service/config-registry-api-service'; +} from './config-registry-api-service/config-registry-api-service.js'; export type { ConfigRegistryApiServiceFetchConfigAction, ConfigRegistryApiServiceMethodActions, -} from './config-registry-api-service/config-registry-api-service-method-action-types'; -export type { NetworkFilterOptions } from './config-registry-api-service/filters'; -export { ConfigRegistryApiService } from './config-registry-api-service/config-registry-api-service'; -export { filterNetworks } from './config-registry-api-service/filters'; +} from './config-registry-api-service/config-registry-api-service-method-action-types.js'; +export type { NetworkFilterOptions } from './config-registry-api-service/filters.js'; +export { ConfigRegistryApiService } from './config-registry-api-service/config-registry-api-service.js'; +export { filterNetworks } from './config-registry-api-service/filters.js'; diff --git a/packages/config-registry-controller/src/selectors.test.ts b/packages/config-registry-controller/src/selectors.test.ts index fe7b6e6a7cf..1120c15eb55 100644 --- a/packages/config-registry-controller/src/selectors.test.ts +++ b/packages/config-registry-controller/src/selectors.test.ts @@ -1,5 +1,5 @@ -import { createMockNetworkConfig } from '../tests/helpers'; -import { selectFeaturedNetworks, selectNetworks } from './selectors'; +import { createMockNetworkConfig } from '../tests/helpers.js'; +import { selectFeaturedNetworks, selectNetworks } from './selectors.js'; describe('selectors', () => { describe('selectNetworks', () => { diff --git a/packages/config-registry-controller/src/selectors.ts b/packages/config-registry-controller/src/selectors.ts index 7d44c486a59..5c8c608dd33 100644 --- a/packages/config-registry-controller/src/selectors.ts +++ b/packages/config-registry-controller/src/selectors.ts @@ -1,8 +1,8 @@ import { createSelector } from 'reselect'; -import { filterNetworks } from './config-registry-api-service/filters'; -import type { RegistryNetworkConfig } from './config-registry-api-service/types'; -import type { ConfigRegistryControllerState } from './ConfigRegistryController'; +import { filterNetworks } from './config-registry-api-service/filters.js'; +import type { RegistryNetworkConfig } from './config-registry-api-service/types.js'; +import type { ConfigRegistryControllerState } from './ConfigRegistryController.js'; /** * Base selector to get all networks from the controller state. diff --git a/packages/config-registry-controller/tests/helpers.ts b/packages/config-registry-controller/tests/helpers.ts index a096f0e9143..38e9544d46c 100644 --- a/packages/config-registry-controller/tests/helpers.ts +++ b/packages/config-registry-controller/tests/helpers.ts @@ -1,4 +1,4 @@ -import type { RegistryNetworkConfig } from '../src/config-registry-api-service/types'; +import type { RegistryNetworkConfig } from '../src/config-registry-api-service/types.js'; /** * Creates a mock RegistryNetworkConfig (CAIP-2 chain) for testing. From 569c730f48faeafe3c772582ffef34fe719c7d66 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:51:06 +0200 Subject: [PATCH 080/115] ESLint fix and `jest` global import for core-backend --- ...atformClientService-method-action-types.ts | 2 +- .../src/ApiPlatformClientService.test.ts | 4 +-- .../src/api/ApiPlatformClient.test.ts | 6 ++--- .../src/api/accounts/client.test.ts | 8 +++--- .../core-backend/src/api/accounts/client.ts | 13 +++++++--- .../core-backend/src/api/accounts/index.ts | 4 +-- .../core-backend/src/api/accounts/types.ts | 2 +- .../core-backend/src/api/base-client.test.ts | 6 ++--- packages/core-backend/src/api/base-client.ts | 4 +-- .../src/api/prices/client.test.ts | 10 ++++---- .../core-backend/src/api/prices/client.ts | 13 +++++++--- packages/core-backend/src/api/prices/index.ts | 4 +-- packages/core-backend/src/api/test-utils.ts | 4 +-- .../core-backend/src/api/token/client.test.ts | 8 +++--- packages/core-backend/src/api/token/client.ts | 13 +++++++--- packages/core-backend/src/api/token/index.ts | 4 +-- .../src/api/tokens/client.test.ts | 6 ++--- .../core-backend/src/api/tokens/client.ts | 13 +++++++--- packages/core-backend/src/api/tokens/index.ts | 4 +-- ...ountActivityService-method-action-types.ts | 2 +- .../src/ws/AccountActivityService.test.ts | 15 +++++------ .../src/ws/AccountActivityService.ts | 20 +++++++-------- ...endWebSocketService-method-action-types.ts | 2 +- .../src/ws/BackendWebSocketService.test.ts | 25 ++++++++----------- .../src/ws/BackendWebSocketService.ts | 7 +++--- .../ohlcv/OHLCVService-method-action-types.ts | 2 +- .../src/ws/ohlcv/OHLCVService.test.ts | 13 +++++----- .../core-backend/src/ws/ohlcv/OHLCVService.ts | 15 ++++++----- packages/core-backend/src/ws/ohlcv/index.ts | 8 +++--- 29 files changed, 126 insertions(+), 111 deletions(-) diff --git a/packages/core-backend/src/ApiPlatformClientService-method-action-types.ts b/packages/core-backend/src/ApiPlatformClientService-method-action-types.ts index 1debb137c08..4ff7a560e78 100644 --- a/packages/core-backend/src/ApiPlatformClientService-method-action-types.ts +++ b/packages/core-backend/src/ApiPlatformClientService-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { ApiPlatformClientService } from './ApiPlatformClientService'; +import type { ApiPlatformClientService } from './ApiPlatformClientService.js'; /** * Returns the shared ApiPlatformClient instance. diff --git a/packages/core-backend/src/ApiPlatformClientService.test.ts b/packages/core-backend/src/ApiPlatformClientService.test.ts index 8ff627f83cd..abb2a5fa372 100644 --- a/packages/core-backend/src/ApiPlatformClientService.test.ts +++ b/packages/core-backend/src/ApiPlatformClientService.test.ts @@ -5,8 +5,8 @@ import type { MockAnyNamespace, } from '@metamask/messenger'; -import { ApiPlatformClientService } from './ApiPlatformClientService'; -import type { ApiPlatformClientServiceMessenger } from './ApiPlatformClientService'; +import { ApiPlatformClientService } from './ApiPlatformClientService.js'; +import type { ApiPlatformClientServiceMessenger } from './ApiPlatformClientService.js'; type AllApiPlatformClientServiceActions = MessengerActions; diff --git a/packages/core-backend/src/api/ApiPlatformClient.test.ts b/packages/core-backend/src/api/ApiPlatformClient.test.ts index 397193c6a36..b4dd3558db6 100644 --- a/packages/core-backend/src/api/ApiPlatformClient.test.ts +++ b/packages/core-backend/src/api/ApiPlatformClient.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /** * ApiPlatformClient Tests - Core client functionality. * @@ -11,7 +12,6 @@ * - api/token-client.test.ts * - api/tokens-client.test.ts */ - import { QueryClient } from '@tanstack/query-core'; import { @@ -24,12 +24,12 @@ import { HttpError, shouldRetry, calculateRetryDelay, -} from '.'; +} from './index.js'; import { mockFetch, createMockResponse, setupTestEnvironment, -} from './test-utils'; +} from './test-utils.js'; describe('ApiPlatformClient', () => { let client: ApiPlatformClient; diff --git a/packages/core-backend/src/api/accounts/client.test.ts b/packages/core-backend/src/api/accounts/client.test.ts index bdd5ec32367..0230be1e933 100644 --- a/packages/core-backend/src/api/accounts/client.test.ts +++ b/packages/core-backend/src/api/accounts/client.test.ts @@ -2,20 +2,20 @@ * Accounts API Client Tests - accounts.api.cx.metamask.io */ -import type { ApiPlatformClient } from '../ApiPlatformClient'; -import { API_URLS, HttpError } from '../shared-types'; +import type { ApiPlatformClient } from '../ApiPlatformClient.js'; +import { API_URLS, HttpError } from '../shared-types.js'; import { mockFetch, createMockResponse, setupTestEnvironment, -} from '../test-utils'; +} from '../test-utils.js'; import type { V1SupportedNetworksResponse, V2SupportedNetworksResponse, V2BalancesResponse, V5BalancesResponse, V6BalancesResponse, -} from './types'; +} from './types.js'; describe('AccountsApiClient', () => { let client: ApiPlatformClient; diff --git a/packages/core-backend/src/api/accounts/client.ts b/packages/core-backend/src/api/accounts/client.ts index e5cec8f0f7e..575746c63eb 100644 --- a/packages/core-backend/src/api/accounts/client.ts +++ b/packages/core-backend/src/api/accounts/client.ts @@ -17,9 +17,14 @@ import type { QueryFunctionContext, } from '@tanstack/query-core'; -import { BaseApiClient, API_URLS, STALE_TIMES, GC_TIMES } from '../base-client'; -import { getQueryOptionsOverrides } from '../shared-types'; -import type { FetchOptions } from '../shared-types'; +import { + BaseApiClient, + API_URLS, + STALE_TIMES, + GC_TIMES, +} from '../base-client.js'; +import { getQueryOptionsOverrides } from '../shared-types.js'; +import type { FetchOptions } from '../shared-types.js'; import type { V1SupportedNetworksResponse, V2SupportedNetworksResponse, @@ -35,7 +40,7 @@ import type { V1AccountRelationshipResult, V2NftsResponse, V2TokensResponse, -} from './types'; +} from './types.js'; /** * Accounts API Client. diff --git a/packages/core-backend/src/api/accounts/index.ts b/packages/core-backend/src/api/accounts/index.ts index 3f08819c3fa..e9cce03f246 100644 --- a/packages/core-backend/src/api/accounts/index.ts +++ b/packages/core-backend/src/api/accounts/index.ts @@ -2,7 +2,7 @@ * Accounts API barrel export. */ -export { AccountsApiClient } from './client'; +export { AccountsApiClient } from './client.js'; export type { V5BalanceItem, V5BalancesResponse, @@ -27,4 +27,4 @@ export type { V2NftsResponse, TokenDiscoveryItem, V2TokensResponse, -} from './types'; +} from './types.js'; diff --git a/packages/core-backend/src/api/accounts/types.ts b/packages/core-backend/src/api/accounts/types.ts index 41eeb031767..a01caaaa4de 100644 --- a/packages/core-backend/src/api/accounts/types.ts +++ b/packages/core-backend/src/api/accounts/types.ts @@ -3,7 +3,7 @@ * API: accounts.api.cx.metamask.io */ -import type { PageInfo } from '../shared-types'; +import type { PageInfo } from '../shared-types.js'; // ============================================================================ // BALANCE TYPES diff --git a/packages/core-backend/src/api/base-client.test.ts b/packages/core-backend/src/api/base-client.test.ts index 3db0eda66e6..1b4c4b137f3 100644 --- a/packages/core-backend/src/api/base-client.test.ts +++ b/packages/core-backend/src/api/base-client.test.ts @@ -1,11 +1,11 @@ +import { jest } from '@jest/globals'; /** * Base API Client Tests */ - import { QueryClient } from '@tanstack/query-core'; -import { AccountsApiClient } from './accounts'; -import { authQueryKeys } from './base-client'; +import { AccountsApiClient } from './accounts/index.js'; +import { authQueryKeys } from './base-client.js'; describe('BaseApiClient', () => { describe('invalidateAuthToken', () => { diff --git a/packages/core-backend/src/api/base-client.ts b/packages/core-backend/src/api/base-client.ts index c8a1d1e01a1..db8ff3fbe1b 100644 --- a/packages/core-backend/src/api/base-client.ts +++ b/packages/core-backend/src/api/base-client.ts @@ -12,8 +12,8 @@ import { calculateRetryDelay, shouldRetry, HttpError, -} from './shared-types'; -import type { ApiPlatformClientOptions } from './shared-types'; +} from './shared-types.js'; +import type { ApiPlatformClientOptions } from './shared-types.js'; // Auth query keys - shared for token management across clients export const authQueryKeys = { diff --git a/packages/core-backend/src/api/prices/client.test.ts b/packages/core-backend/src/api/prices/client.test.ts index 80cf8c5f095..237d4ed5a5a 100644 --- a/packages/core-backend/src/api/prices/client.test.ts +++ b/packages/core-backend/src/api/prices/client.test.ts @@ -2,19 +2,19 @@ * Prices API Client Tests - price.api.cx.metamask.io */ -import type { ApiPlatformClient } from '../ApiPlatformClient'; -import { API_URLS } from '../shared-types'; -import type { FetchOptions } from '../shared-types'; +import type { ApiPlatformClient } from '../ApiPlatformClient.js'; +import { API_URLS } from '../shared-types.js'; +import type { FetchOptions } from '../shared-types.js'; import { createMockResponse, mockFetch, setupTestEnvironment, -} from '../test-utils'; +} from '../test-utils.js'; import type { PriceSupportedNetworksResponse, V1ExchangeRatesResponse, V3SpotPricesResponse, -} from './types'; +} from './types.js'; describe('PricesApiClient', () => { let client: ApiPlatformClient; diff --git a/packages/core-backend/src/api/prices/client.ts b/packages/core-backend/src/api/prices/client.ts index 0cd31afe65e..f8cc86fa993 100644 --- a/packages/core-backend/src/api/prices/client.ts +++ b/packages/core-backend/src/api/prices/client.ts @@ -14,13 +14,18 @@ import type { QueryFunctionContext, } from '@tanstack/query-core'; -import { BaseApiClient, API_URLS, STALE_TIMES, GC_TIMES } from '../base-client'; -import { getQueryOptionsOverrides } from '../shared-types'; +import { + BaseApiClient, + API_URLS, + STALE_TIMES, + GC_TIMES, +} from '../base-client.js'; +import { getQueryOptionsOverrides } from '../shared-types.js'; import type { FetchOptions, MarketDataDetails, SupportedCurrency, -} from '../shared-types'; +} from '../shared-types.js'; import type { CoinGeckoSpotPrice, V1ExchangeRatesResponse, @@ -28,7 +33,7 @@ import type { V1HistoricalPricesResponse, V3SpotPricesResponse, V3HistoricalPricesResponse, -} from './types'; +} from './types.js'; /** * Prices API Client. diff --git a/packages/core-backend/src/api/prices/index.ts b/packages/core-backend/src/api/prices/index.ts index ca41dab5191..f8f24383a96 100644 --- a/packages/core-backend/src/api/prices/index.ts +++ b/packages/core-backend/src/api/prices/index.ts @@ -2,7 +2,7 @@ * Prices API barrel export. */ -export { PricesApiClient } from './client'; +export { PricesApiClient } from './client.js'; export type { V3SpotPricesResponse, CoinGeckoSpotPrice, @@ -11,4 +11,4 @@ export type { PriceSupportedNetworksResponse, V1HistoricalPricesResponse, V3HistoricalPricesResponse, -} from './types'; +} from './types.js'; diff --git a/packages/core-backend/src/api/test-utils.ts b/packages/core-backend/src/api/test-utils.ts index ce14c505222..5a14008d67c 100644 --- a/packages/core-backend/src/api/test-utils.ts +++ b/packages/core-backend/src/api/test-utils.ts @@ -1,10 +1,10 @@ +import { jest } from '@jest/globals'; /** * Shared test utilities for API client tests. */ - import { QueryClient } from '@tanstack/query-core'; -import { ApiPlatformClient } from './ApiPlatformClient'; +import { ApiPlatformClient } from './ApiPlatformClient.js'; // Mock fetch globally export const mockFetch = jest.fn(); diff --git a/packages/core-backend/src/api/token/client.test.ts b/packages/core-backend/src/api/token/client.test.ts index d09900257f2..9d8e95a9e22 100644 --- a/packages/core-backend/src/api/token/client.test.ts +++ b/packages/core-backend/src/api/token/client.test.ts @@ -2,14 +2,14 @@ * Token API Client Tests - token.api.cx.metamask.io */ -import type { ApiPlatformClient } from '../ApiPlatformClient'; -import { API_URLS } from '../shared-types'; +import type { ApiPlatformClient } from '../ApiPlatformClient.js'; +import { API_URLS } from '../shared-types.js'; import { mockFetch, createMockResponse, setupTestEnvironment, -} from '../test-utils'; -import type { NetworkInfo, TokenMetadata } from './types'; +} from '../test-utils.js'; +import type { NetworkInfo, TokenMetadata } from './types.js'; describe('TokenApiClient', () => { let client: ApiPlatformClient; diff --git a/packages/core-backend/src/api/token/client.ts b/packages/core-backend/src/api/token/client.ts index 1194c0df487..520a9602209 100644 --- a/packages/core-backend/src/api/token/client.ts +++ b/packages/core-backend/src/api/token/client.ts @@ -17,9 +17,14 @@ import type { QueryFunctionContext, } from '@tanstack/query-core'; -import { BaseApiClient, API_URLS, STALE_TIMES, GC_TIMES } from '../base-client'; -import { getQueryOptionsOverrides } from '../shared-types'; -import type { FetchOptions } from '../shared-types'; +import { + BaseApiClient, + API_URLS, + STALE_TIMES, + GC_TIMES, +} from '../base-client.js'; +import { getQueryOptionsOverrides } from '../shared-types.js'; +import type { FetchOptions } from '../shared-types.js'; import type { TokenMetadata, V1TokenDescriptionResponse, @@ -29,7 +34,7 @@ import type { TrendingSortOption, TopGainersSortOption, V1SuggestedOccurrenceFloorsResponse, -} from './types'; +} from './types.js'; /** * Token API Client. diff --git a/packages/core-backend/src/api/token/index.ts b/packages/core-backend/src/api/token/index.ts index dbf9047e995..c141ba43739 100644 --- a/packages/core-backend/src/api/token/index.ts +++ b/packages/core-backend/src/api/token/index.ts @@ -2,7 +2,7 @@ * Token API barrel export. */ -export { TokenApiClient } from './client'; +export { TokenApiClient } from './client.js'; export type { TokenMetadata, V1TokenDescriptionResponse, @@ -20,4 +20,4 @@ export type { TokenSecurityFees, TokenSecurityFinancialStats, TokenSecurityMetadata, -} from './types'; +} from './types.js'; diff --git a/packages/core-backend/src/api/tokens/client.test.ts b/packages/core-backend/src/api/tokens/client.test.ts index a0559a44129..a619505b6eb 100644 --- a/packages/core-backend/src/api/tokens/client.test.ts +++ b/packages/core-backend/src/api/tokens/client.test.ts @@ -2,13 +2,13 @@ * Tokens API Client Tests - tokens.api.cx.metamask.io */ -import type { ApiPlatformClient } from '../ApiPlatformClient'; -import { API_URLS } from '../shared-types'; +import type { ApiPlatformClient } from '../ApiPlatformClient.js'; +import { API_URLS } from '../shared-types.js'; import { mockFetch, createMockResponse, setupTestEnvironment, -} from '../test-utils'; +} from '../test-utils.js'; describe('TokensApiClient', () => { let client: ApiPlatformClient; diff --git a/packages/core-backend/src/api/tokens/client.ts b/packages/core-backend/src/api/tokens/client.ts index ad3a57e1e15..37d5d3ea589 100644 --- a/packages/core-backend/src/api/tokens/client.ts +++ b/packages/core-backend/src/api/tokens/client.ts @@ -11,15 +11,20 @@ import type { QueryFunctionContext, } from '@tanstack/query-core'; -import { BaseApiClient, API_URLS, STALE_TIMES, GC_TIMES } from '../base-client'; -import { getQueryOptionsOverrides } from '../shared-types'; -import type { FetchOptions } from '../shared-types'; +import { + BaseApiClient, + API_URLS, + STALE_TIMES, + GC_TIMES, +} from '../base-client.js'; +import { getQueryOptionsOverrides } from '../shared-types.js'; +import type { FetchOptions } from '../shared-types.js'; import type { V1TokenSupportedNetworksResponse, V2TokenSupportedNetworksResponse, V3AssetResponse, V3AssetsQueryOptions, -} from './types'; +} from './types.js'; /** * Tokens API Client. diff --git a/packages/core-backend/src/api/tokens/index.ts b/packages/core-backend/src/api/tokens/index.ts index c8fe69c1cea..1b4207f79b3 100644 --- a/packages/core-backend/src/api/tokens/index.ts +++ b/packages/core-backend/src/api/tokens/index.ts @@ -2,7 +2,7 @@ * Tokens API barrel export. */ -export { TokensApiClient } from './client'; +export { TokensApiClient } from './client.js'; export type { V1TokenSupportedNetworksResponse, V2TokenSupportedNetworksResponse, @@ -12,4 +12,4 @@ export type { V3AssetHoneypotStatus, V3AssetStorage, V3AssetDescription, -} from './types'; +} from './types.js'; diff --git a/packages/core-backend/src/ws/AccountActivityService-method-action-types.ts b/packages/core-backend/src/ws/AccountActivityService-method-action-types.ts index b9e97818b98..249caf8ad0d 100644 --- a/packages/core-backend/src/ws/AccountActivityService-method-action-types.ts +++ b/packages/core-backend/src/ws/AccountActivityService-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { AccountActivityService } from './AccountActivityService'; +import type { AccountActivityService } from './AccountActivityService.js'; /** * Subscribe to account activity (transactions and balance updates) diff --git a/packages/core-backend/src/ws/AccountActivityService.test.ts b/packages/core-backend/src/ws/AccountActivityService.test.ts index 2db21d4e867..91fbe8d7ab1 100644 --- a/packages/core-backend/src/ws/AccountActivityService.test.ts +++ b/packages/core-backend/src/ws/AccountActivityService.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { InternalAccount } from '@metamask/keyring-internal-api'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -7,16 +8,16 @@ import type { } from '@metamask/messenger'; import type { Hex, Json } from '@metamask/utils'; -import { flushPromises } from '../../../../tests/helpers'; -import type { Transaction, BalanceUpdate } from '../types'; -import type { AccountActivityMessage } from '../types'; -import { AccountActivityService } from './AccountActivityService'; +import { flushPromises } from '../../../../tests/helpers.js'; +import type { Transaction, BalanceUpdate } from '../types.js'; +import type { AccountActivityMessage } from '../types.js'; +import { AccountActivityService } from './AccountActivityService.js'; import type { AccountActivityServiceMessenger, SubscriptionOptions, -} from './AccountActivityService'; -import type { ServerNotificationMessage } from './BackendWebSocketService'; -import { WebSocketState } from './BackendWebSocketService'; +} from './AccountActivityService.js'; +import type { ServerNotificationMessage } from './BackendWebSocketService.js'; +import { WebSocketState } from './BackendWebSocketService.js'; type AllAccountActivityServiceActions = MessengerActions; diff --git a/packages/core-backend/src/ws/AccountActivityService.ts b/packages/core-backend/src/ws/AccountActivityService.ts index 8245b6b9de1..35245580d35 100644 --- a/packages/core-backend/src/ws/AccountActivityService.ts +++ b/packages/core-backend/src/ws/AccountActivityService.ts @@ -19,20 +19,20 @@ import type { } from '@metamask/remote-feature-flag-controller'; import { isObject } from '@metamask/utils'; -import { projectLogger, createModuleLogger } from '../logger'; +import { projectLogger, createModuleLogger } from '../logger.js'; import type { Transaction, AccountActivityMessage, BalanceUpdate, -} from '../types'; -import type { AccountActivityServiceMethodActions } from './AccountActivityService-method-action-types'; +} from '../types.js'; +import type { AccountActivityServiceMethodActions } from './AccountActivityService-method-action-types.js'; +import type { BackendWebSocketServiceMethodActions } from './BackendWebSocketService-method-action-types.js'; import type { WebSocketConnectionInfo, BackendWebSocketServiceConnectionStateChangedEvent, ServerNotificationMessage, -} from './BackendWebSocketService'; -import { WebSocketState } from './BackendWebSocketService'; -import type { BackendWebSocketServiceMethodActions } from './BackendWebSocketService-method-action-types'; +} from './BackendWebSocketService.js'; +import { WebSocketState } from './BackendWebSocketService.js'; // ============================================================================= // Types and Constants @@ -254,13 +254,13 @@ export class AccountActivityService { this.#messenger.subscribe( 'AccountTreeController:selectedAccountGroupChange', // Promise result intentionally not awaited - // eslint-disable-next-line @typescript-eslint/no-misused-promises + async () => await this.#handleSelectedAccountChange(), ); this.#messenger.subscribe( 'BackendWebSocketService:connectionStateChanged', // Promise result intentionally not awaited - // eslint-disable-next-line @typescript-eslint/no-misused-promises + (connectionInfo: WebSocketConnectionInfo) => this.#handleWebSocketStateChange(connectionInfo), ); @@ -268,7 +268,7 @@ export class AccountActivityService { // eslint-disable-next-line no-restricted-syntax 'RemoteFeatureFlagController:stateChange', // Promise result intentionally not awaited - // eslint-disable-next-line @typescript-eslint/no-misused-promises + async () => await this.#handleFeatureFlagsStateChange(), // Only react to changes in the set of enabled chain prefixes. The // messenger compares selector results with strict equality, so the @@ -393,7 +393,7 @@ export class AccountActivityService { // Trace message receipt with latency from transaction time to now // Promise result intentionally not awaited - // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.#trace( { name: `${SERVICE_NAME} Transaction Message`, diff --git a/packages/core-backend/src/ws/BackendWebSocketService-method-action-types.ts b/packages/core-backend/src/ws/BackendWebSocketService-method-action-types.ts index deb59311c3d..2390ec62dcc 100644 --- a/packages/core-backend/src/ws/BackendWebSocketService-method-action-types.ts +++ b/packages/core-backend/src/ws/BackendWebSocketService-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { BackendWebSocketService } from './BackendWebSocketService'; +import type { BackendWebSocketService } from './BackendWebSocketService.js'; /** * Establishes WebSocket connection with smart reconnection behavior diff --git a/packages/core-backend/src/ws/BackendWebSocketService.test.ts b/packages/core-backend/src/ws/BackendWebSocketService.test.ts index 21dc19dcd90..15d1b843611 100644 --- a/packages/core-backend/src/ws/BackendWebSocketService.test.ts +++ b/packages/core-backend/src/ws/BackendWebSocketService.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MessengerActions, @@ -5,18 +6,18 @@ import type { MockAnyNamespace, } from '@metamask/messenger'; -import { flushPromises } from '../../../../tests/helpers'; +import { flushPromises } from '../../../../tests/helpers.js'; import { BackendWebSocketService, getCloseReason, WebSocketState, WebSocketSubscription, -} from './BackendWebSocketService'; +} from './BackendWebSocketService.js'; import type { BackendWebSocketServiceOptions, BackendWebSocketServiceMessenger, ServerNotificationMessage, -} from './BackendWebSocketService'; +} from './BackendWebSocketService.js'; // ===================================================== // TYPES @@ -906,8 +907,7 @@ describe('BackendWebSocketService', () => { // Mock Math.random to make Cockatiel's jitter deterministic jest.spyOn(Math, 'random').mockReturnValue(0); - // eslint-disable-next-line @typescript-eslint/no-floating-promises - service.connect(); + void service.connect(); // Advance time past the timeout await completeAsyncOperations(101); @@ -956,8 +956,7 @@ describe('BackendWebSocketService', () => { // Mock Math.random to make Cockatiel's jitter deterministic jest.spyOn(Math, 'random').mockReturnValue(0); - // eslint-disable-next-line @typescript-eslint/no-floating-promises - service.connect(); + void service.connect(); await completeAsyncOperations(10); // Verify we're in CONNECTING state @@ -1028,8 +1027,7 @@ describe('BackendWebSocketService', () => { jest.spyOn(Math, 'random').mockReturnValue(0); // Start connection (this sets connectionTimeout) - // eslint-disable-next-line @typescript-eslint/no-floating-promises - service.connect(); + void service.connect(); await completeAsyncOperations(10); const mockWs = getMockWebSocket(); @@ -1138,8 +1136,7 @@ describe('BackendWebSocketService', () => { jest.spyOn(Math, 'random').mockReturnValue(0); // Trigger a connection failure to schedule a reconnect - // eslint-disable-next-line @typescript-eslint/no-floating-promises - service.connect(); + void service.connect(); await completeAsyncOperations(10); const mockWs = getMockWebSocket(); @@ -1178,8 +1175,7 @@ describe('BackendWebSocketService', () => { jest.spyOn(Math, 'random').mockReturnValue(0); // Trigger a connection failure to schedule a reconnect - // eslint-disable-next-line @typescript-eslint/no-floating-promises - service.connect(); + void service.connect(); await completeAsyncOperations(10); const mockWs = getMockWebSocket(); @@ -1260,8 +1256,7 @@ describe('BackendWebSocketService', () => { }, async ({ service, getMockWebSocket, completeAsyncOperations }) => { // Start connecting - // eslint-disable-next-line @typescript-eslint/no-floating-promises - service.connect(); + void service.connect(); await completeAsyncOperations(0); expect(service.getConnectionInfo().state).toBe( diff --git a/packages/core-backend/src/ws/BackendWebSocketService.ts b/packages/core-backend/src/ws/BackendWebSocketService.ts index b456a678c7c..df0cf5e0b86 100644 --- a/packages/core-backend/src/ws/BackendWebSocketService.ts +++ b/packages/core-backend/src/ws/BackendWebSocketService.ts @@ -9,8 +9,8 @@ import type { AuthenticationController } from '@metamask/profile-sync-controller import { getErrorMessage } from '@metamask/utils'; import { v4 as uuidV4 } from 'uuid'; -import { projectLogger, createModuleLogger } from '../logger'; -import type { BackendWebSocketServiceMethodActions } from './BackendWebSocketService-method-action-types'; +import { projectLogger, createModuleLogger } from '../logger.js'; +import type { BackendWebSocketServiceMethodActions } from './BackendWebSocketService-method-action-types.js'; const SERVICE_NAME = 'BackendWebSocketService' as const; @@ -1178,7 +1178,6 @@ export class BackendWebSocketService { this.#scheduleReconnect(); } - // eslint-disable-next-line @typescript-eslint/no-floating-promises this.#trace({ name: `${SERVICE_NAME} Disconnection`, data: { @@ -1426,7 +1425,7 @@ export class BackendWebSocketService { // Trace notification processing wi th latency data // Use stored channelType instead of parsing each time // Promise result intentionally not awaited - // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.#trace( { name: `${SERVICE_NAME} Notification`, diff --git a/packages/core-backend/src/ws/ohlcv/OHLCVService-method-action-types.ts b/packages/core-backend/src/ws/ohlcv/OHLCVService-method-action-types.ts index 6c30d853829..26b5e564ef5 100644 --- a/packages/core-backend/src/ws/ohlcv/OHLCVService-method-action-types.ts +++ b/packages/core-backend/src/ws/ohlcv/OHLCVService-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { OHLCVService } from './OHLCVService'; +import type { OHLCVService } from './OHLCVService.js'; /** * Subscribe to an OHLCV channel. If this is the first subscriber for the diff --git a/packages/core-backend/src/ws/ohlcv/OHLCVService.test.ts b/packages/core-backend/src/ws/ohlcv/OHLCVService.test.ts index 19a442779df..250ebfe80b5 100644 --- a/packages/core-backend/src/ws/ohlcv/OHLCVService.test.ts +++ b/packages/core-backend/src/ws/ohlcv/OHLCVService.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MessengerActions, @@ -5,12 +6,12 @@ import type { MockAnyNamespace, } from '@metamask/messenger'; -import { flushPromises } from '../../../../../tests/helpers'; -import type { ServerNotificationMessage } from '../BackendWebSocketService'; -import { WebSocketState } from '../BackendWebSocketService'; -import { OHLCVService } from './OHLCVService'; -import type { OHLCVServiceMessenger } from './OHLCVService'; -import type { OHLCVSubscriptionOptions } from './types'; +import { flushPromises } from '../../../../../tests/helpers.js'; +import type { ServerNotificationMessage } from '../BackendWebSocketService.js'; +import { WebSocketState } from '../BackendWebSocketService.js'; +import { OHLCVService } from './OHLCVService.js'; +import type { OHLCVServiceMessenger } from './OHLCVService.js'; +import type { OHLCVSubscriptionOptions } from './types.js'; // ============================================================================= // Test Helpers diff --git a/packages/core-backend/src/ws/ohlcv/OHLCVService.ts b/packages/core-backend/src/ws/ohlcv/OHLCVService.ts index f729bbf8fea..6bacc2a0514 100644 --- a/packages/core-backend/src/ws/ohlcv/OHLCVService.ts +++ b/packages/core-backend/src/ws/ohlcv/OHLCVService.ts @@ -15,16 +15,16 @@ import type { import type { Messenger } from '@metamask/messenger'; import { Mutex } from 'async-mutex'; -import { projectLogger, createModuleLogger } from '../../logger'; +import { projectLogger, createModuleLogger } from '../../logger.js'; +import type { BackendWebSocketServiceMethodActions } from '../BackendWebSocketService-method-action-types.js'; import type { WebSocketConnectionInfo, BackendWebSocketServiceConnectionStateChangedEvent, ServerNotificationMessage, -} from '../BackendWebSocketService'; -import { WebSocketState } from '../BackendWebSocketService'; -import type { BackendWebSocketServiceMethodActions } from '../BackendWebSocketService-method-action-types'; -import type { OHLCVServiceMethodActions } from './OHLCVService-method-action-types'; -import type { OHLCVBar, OHLCVSubscriptionOptions } from './types'; +} from '../BackendWebSocketService.js'; +import { WebSocketState } from '../BackendWebSocketService.js'; +import type { OHLCVServiceMethodActions } from './OHLCVService-method-action-types.js'; +import type { OHLCVBar, OHLCVSubscriptionOptions } from './types.js'; // ============================================================================= // Constants @@ -184,7 +184,7 @@ export class OHLCVService { this.#messenger.subscribe( 'BackendWebSocketService:connectionStateChanged', - // eslint-disable-next-line @typescript-eslint/no-misused-promises + (connectionInfo: WebSocketConnectionInfo) => this.#handleWebSocketStateChange(connectionInfo), ); @@ -442,7 +442,6 @@ export class OHLCVService { ): void { const bar = notification.data as OHLCVBar; - // eslint-disable-next-line @typescript-eslint/no-floating-promises this.#trace( { name: `${SERVICE_NAME} Bar Update`, diff --git a/packages/core-backend/src/ws/ohlcv/index.ts b/packages/core-backend/src/ws/ohlcv/index.ts index e40d24d8c36..7f99a9178c9 100644 --- a/packages/core-backend/src/ws/ohlcv/index.ts +++ b/packages/core-backend/src/ws/ohlcv/index.ts @@ -1,8 +1,8 @@ -export { OHLCVService } from './OHLCVService'; +export { OHLCVService } from './OHLCVService.js'; export { OHLCV_SERVICE_ALLOWED_ACTIONS, OHLCV_SERVICE_ALLOWED_EVENTS, -} from './OHLCVService'; +} from './OHLCVService.js'; export type { OHLCVSystemNotificationData, OHLCVServiceOptions, @@ -14,5 +14,5 @@ export type { OHLCVServiceEvents, AllowedEvents as OHLCVServiceAllowedEvents, OHLCVServiceMessenger, -} from './OHLCVService'; -export type { OHLCVBar, OHLCVSubscriptionOptions } from './types'; +} from './OHLCVService.js'; +export type { OHLCVBar, OHLCVSubscriptionOptions } from './types.js'; From 96d913e4e436e8b9634b645b2f1d2c494b5041d6 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:51:09 +0200 Subject: [PATCH 081/115] ESLint fix and `jest` global import for gator-permissions-controller --- ...rmissionsController-method-action-types.ts | 2 +- .../src/GatorPermissionsController.test.ts | 15 +++++++------ .../decodePermission/decodePermission.test.ts | 8 +++---- .../src/decodePermission/decodePermission.ts | 2 +- .../decoders/erc20PayeeRule.test.ts | 6 ++--- .../decoders/erc20PayeeRule.ts | 6 ++--- .../decoders/erc20TokenAllowance.test.ts | 4 ++-- .../decoders/erc20TokenAllowance.ts | 12 +++++----- .../decoders/erc20TokenPeriodic.test.ts | 4 ++-- .../decoders/erc20TokenPeriodic.ts | 12 +++++----- .../decoders/erc20TokenRevocation.test.ts | 2 +- .../decoders/erc20TokenRevocation.ts | 10 ++++----- .../decoders/erc20TokenStream.test.ts | 4 ++-- .../decoders/erc20TokenStream.ts | 12 +++++----- .../decoders/expiryRule.test.ts | 6 ++--- .../decodePermission/decoders/expiryRule.ts | 6 ++--- .../src/decodePermission/decoders/index.ts | 22 +++++++++---------- .../decoders/makePermissionDecoder.test.ts | 13 ++++++----- .../decoders/makePermissionDecoder.ts | 6 ++--- .../decoders/nativePayeeRule.test.ts | 6 ++--- .../decoders/nativePayeeRule.ts | 4 ++-- .../decoders/nativeTokenAllowance.test.ts | 2 +- .../decoders/nativeTokenAllowance.ts | 12 +++++----- .../decoders/nativeTokenPeriodic.test.ts | 4 ++-- .../decoders/nativeTokenPeriodic.ts | 12 +++++----- .../decoders/nativeTokenStream.test.ts | 2 +- .../decoders/nativeTokenStream.ts | 12 +++++----- .../decoders/redeemerRule.test.ts | 6 ++--- .../decodePermission/decoders/redeemerRule.ts | 6 ++--- .../decoders/tokenApprovalRevocation.test.ts | 4 ++-- .../decoders/tokenApprovalRevocation.ts | 8 +++---- .../src/decodePermission/utils.test.ts | 6 ++--- .../src/decodePermission/utils.ts | 2 +- .../src/errors.test.ts | 4 ++-- .../src/errors.ts | 4 ++-- .../src/permissionOnChainStatus.test.ts | 7 +++--- .../src/permissionOnChainStatus.ts | 8 +++---- .../src/utils.test.ts | 9 ++++---- .../gator-permissions-controller/src/utils.ts | 8 +++---- .../tests/mock.test.ts | 4 ++-- .../tests/mocks.ts | 2 +- 41 files changed, 144 insertions(+), 140 deletions(-) diff --git a/packages/gator-permissions-controller/src/GatorPermissionsController-method-action-types.ts b/packages/gator-permissions-controller/src/GatorPermissionsController-method-action-types.ts index cd8e92e7ab2..1acd3f0e7a2 100644 --- a/packages/gator-permissions-controller/src/GatorPermissionsController-method-action-types.ts +++ b/packages/gator-permissions-controller/src/GatorPermissionsController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { GatorPermissionsController } from './GatorPermissionsController'; +import type { GatorPermissionsController } from './GatorPermissionsController.js'; /** * Fetches granted permissions from the gator permissions provider Snap and updates state. diff --git a/packages/gator-permissions-controller/src/GatorPermissionsController.test.ts b/packages/gator-permissions-controller/src/GatorPermissionsController.test.ts index 22c08aab8fb..9377d615131 100644 --- a/packages/gator-permissions-controller/src/GatorPermissionsController.test.ts +++ b/packages/gator-permissions-controller/src/GatorPermissionsController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { createTimestampTerms, @@ -25,22 +26,22 @@ import { TransactionStatus } from '@metamask/transaction-controller'; import { hexToBigInt, numberToHex } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { flushPromises } from '../../../tests/helpers'; +import { flushPromises } from '../../../tests/helpers.js'; import { mockGatorPermissionsStorageEntriesFactory, mockNativeTokenStreamStorageEntry, -} from '../tests/mocks'; -import { DELEGATION_FRAMEWORK_VERSION } from './constants'; -import { GatorPermissionsFetchError } from './errors'; -import type { GatorPermissionsControllerMessenger } from './GatorPermissionsController'; -import { GatorPermissionsController } from './GatorPermissionsController'; +} from '../tests/mocks.js'; +import { DELEGATION_FRAMEWORK_VERSION } from './constants.js'; +import { GatorPermissionsFetchError } from './errors.js'; +import type { GatorPermissionsControllerMessenger } from './GatorPermissionsController.js'; +import { GatorPermissionsController } from './GatorPermissionsController.js'; import type { PermissionInfoWithMetadata, GatorPermissionStatus, StoredGatorPermission, RevocationParams, SupportedPermissionType, -} from './types'; +} from './types.js'; const PERMISSION_STATUSES: GatorPermissionStatus[] = [ 'Active', diff --git a/packages/gator-permissions-controller/src/decodePermission/decodePermission.test.ts b/packages/gator-permissions-controller/src/decodePermission/decodePermission.test.ts index 40762254890..d24b4311f92 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decodePermission.test.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decodePermission.test.ts @@ -10,14 +10,14 @@ import { findDecodersWithMatchingCaveatAddresses, reconstructDecodedPermission, selectUniqueDecoderAndDecodedPermission, -} from './decodePermission'; -import { createPermissionDecodersForContracts } from './decoders'; +} from './decodePermission.js'; +import { createPermissionDecodersForContracts } from './decoders/index.js'; import type { DecodedPermission, DeployedContractsByName, PermissionDecoder, -} from './types'; -import { getChecksumEnforcersByChainId } from './utils'; +} from './types.js'; +import { getChecksumEnforcersByChainId } from './utils.js'; // These tests use the live deployments table for version 1.3.0 to // construct deterministic caveat address sets for a known chain. diff --git a/packages/gator-permissions-controller/src/decodePermission/decodePermission.ts b/packages/gator-permissions-controller/src/decodePermission/decodePermission.ts index 949b1a4096e..63c22021177 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decodePermission.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decodePermission.ts @@ -7,7 +7,7 @@ import type { PermissionType, PermissionDecoder, ValidateAndDecodeResult, -} from './types'; +} from './types.js'; /** * Returns every permission decoder whose caveat-address pattern matches the diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20PayeeRule.test.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20PayeeRule.test.ts index 9d0acec9120..f4b448b8cb9 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20PayeeRule.test.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20PayeeRule.test.ts @@ -6,9 +6,9 @@ import { import { getChecksumAddress } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import type { ChecksumCaveat } from '../types'; -import { getChecksumEnforcersByChainId } from '../utils'; -import { erc20PayeeRule } from './erc20PayeeRule'; +import type { ChecksumCaveat } from '../types.js'; +import { getChecksumEnforcersByChainId } from '../utils.js'; +import { erc20PayeeRule } from './erc20PayeeRule.js'; describe('erc20PayeeRule', () => { const contracts = DELEGATOR_CONTRACTS['1.3.0'][CHAIN_ID.sepolia]; diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20PayeeRule.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20PayeeRule.ts index 6e1f24a6226..2f2ad4227cb 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20PayeeRule.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20PayeeRule.ts @@ -2,9 +2,9 @@ import { decodeAllowedCalldataTerms } from '@metamask/delegation-core'; import { getChecksumAddress } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { EXECUTION_PERMISSION_PAYEE_RULE_TYPE } from '../../constants'; -import type { RuleDecoder } from '../types'; -import { getByteLength } from '../utils'; +import { EXECUTION_PERMISSION_PAYEE_RULE_TYPE } from '../../constants.js'; +import type { RuleDecoder } from '../types.js'; +import { getByteLength } from '../utils.js'; const ERC20_TRANSFER_PAYEE_START_INDEX = 4; const ERC20_PAYEE_VALUE_BYTE_LENGTH = 32; diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenAllowance.test.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenAllowance.test.ts index c09e8caa4f3..e0e0454e11a 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenAllowance.test.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenAllowance.test.ts @@ -5,8 +5,8 @@ import { DELEGATOR_CONTRACTS, } from '@metamask/delegation-deployments'; -import { createPermissionDecodersForContracts } from '.'; -import { ZERO_32_BYTES } from '../utils'; +import { ZERO_32_BYTES } from '../utils.js'; +import { createPermissionDecodersForContracts } from './index.js'; describe('erc20-token-allowance decoder', () => { const chainId = CHAIN_ID.sepolia; diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenAllowance.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenAllowance.ts index 26e342cb676..5c96763f40b 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenAllowance.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenAllowance.ts @@ -4,18 +4,18 @@ import type { ChecksumCaveat, ChecksumEnforcersByChainId, DecodedPermission, -} from '../types'; +} from '../types.js'; import { getByteLength, getTermsByEnforcer, splitHex, UINT256_MAX, ZERO_32_BYTES, -} from '../utils'; -import { erc20PayeeRule } from './erc20PayeeRule'; -import { expiryRule } from './expiryRule'; -import type { MakePermissionDecoderConfig } from './makePermissionDecoder'; -import { redeemerRule } from './redeemerRule'; +} from '../utils.js'; +import { erc20PayeeRule } from './erc20PayeeRule.js'; +import { expiryRule } from './expiryRule.js'; +import type { MakePermissionDecoderConfig } from './makePermissionDecoder.js'; +import { redeemerRule } from './redeemerRule.js'; /** * Builds the configuration for the erc20-token-allowance permission decoder. diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenPeriodic.test.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenPeriodic.test.ts index e77c5cd4543..7a2b40ecc2a 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenPeriodic.test.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenPeriodic.test.ts @@ -8,8 +8,8 @@ import { DELEGATOR_CONTRACTS, } from '@metamask/delegation-deployments'; -import { createPermissionDecodersForContracts } from '.'; -import { MAX_PERIOD_DURATION, ZERO_32_BYTES } from '../utils'; +import { MAX_PERIOD_DURATION, ZERO_32_BYTES } from '../utils.js'; +import { createPermissionDecodersForContracts } from './index.js'; describe('erc20-token-periodic decoder', () => { const chainId = CHAIN_ID.sepolia; diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenPeriodic.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenPeriodic.ts index 52614cae437..1ab4c1eb6f2 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenPeriodic.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenPeriodic.ts @@ -4,18 +4,18 @@ import type { ChecksumCaveat, ChecksumEnforcersByChainId, DecodedPermission, -} from '../types'; +} from '../types.js'; import { getByteLength, getTermsByEnforcer, MAX_PERIOD_DURATION, splitHex, ZERO_32_BYTES, -} from '../utils'; -import { erc20PayeeRule } from './erc20PayeeRule'; -import { expiryRule } from './expiryRule'; -import type { MakePermissionDecoderConfig } from './makePermissionDecoder'; -import { redeemerRule } from './redeemerRule'; +} from '../utils.js'; +import { erc20PayeeRule } from './erc20PayeeRule.js'; +import { expiryRule } from './expiryRule.js'; +import type { MakePermissionDecoderConfig } from './makePermissionDecoder.js'; +import { redeemerRule } from './redeemerRule.js'; /** * Builds the configuration for the erc20-token-periodic permission decoder. diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenRevocation.test.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenRevocation.test.ts index d23bb16a76e..d71553fb6ec 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenRevocation.test.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenRevocation.test.ts @@ -5,7 +5,7 @@ import { } from '@metamask/delegation-deployments'; import { getChecksumAddress } from '@metamask/utils'; -import { createPermissionDecodersForContracts } from '.'; +import { createPermissionDecodersForContracts } from './index.js'; describe('erc20-token-revocation decoder', () => { const chainId = CHAIN_ID.sepolia; diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenRevocation.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenRevocation.ts index 1021fa6f0e2..0e933dd0fea 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenRevocation.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenRevocation.ts @@ -2,16 +2,16 @@ import type { ChecksumCaveat, ChecksumEnforcersByChainId, DecodedPermission, -} from '../types'; +} from '../types.js'; import { ERC20_APPROVE_SELECTOR_TERMS, ERC20_APPROVE_ZERO_AMOUNT_TERMS, getTermsByEnforcer, ZERO_32_BYTES, -} from '../utils'; -import { expiryRule } from './expiryRule'; -import type { MakePermissionDecoderConfig } from './makePermissionDecoder'; -import { redeemerRule } from './redeemerRule'; +} from '../utils.js'; +import { expiryRule } from './expiryRule.js'; +import type { MakePermissionDecoderConfig } from './makePermissionDecoder.js'; +import { redeemerRule } from './redeemerRule.js'; /** * Builds the configuration for the erc20-token-revocation permission decoder. diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenStream.test.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenStream.test.ts index 19304a8c440..50e290457ab 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenStream.test.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenStream.test.ts @@ -8,8 +8,8 @@ import { DELEGATOR_CONTRACTS, } from '@metamask/delegation-deployments'; -import { createPermissionDecodersForContracts } from '.'; -import { ZERO_32_BYTES } from '../utils'; +import { ZERO_32_BYTES } from '../utils.js'; +import { createPermissionDecodersForContracts } from './index.js'; describe('erc20-token-stream decoder', () => { const chainId = CHAIN_ID.sepolia; diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenStream.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenStream.ts index 75478391393..314bbbae932 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenStream.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/erc20TokenStream.ts @@ -4,17 +4,17 @@ import type { ChecksumCaveat, ChecksumEnforcersByChainId, DecodedPermission, -} from '../types'; +} from '../types.js'; import { getByteLength, getTermsByEnforcer, splitHex, ZERO_32_BYTES, -} from '../utils'; -import { erc20PayeeRule } from './erc20PayeeRule'; -import { expiryRule } from './expiryRule'; -import type { MakePermissionDecoderConfig } from './makePermissionDecoder'; -import { redeemerRule } from './redeemerRule'; +} from '../utils.js'; +import { erc20PayeeRule } from './erc20PayeeRule.js'; +import { expiryRule } from './expiryRule.js'; +import type { MakePermissionDecoderConfig } from './makePermissionDecoder.js'; +import { redeemerRule } from './redeemerRule.js'; /** * Builds the configuration for the erc20-token-stream permission decoder. diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/expiryRule.test.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/expiryRule.test.ts index 6966a6694a1..8ead3bcf3e5 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/expiryRule.test.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/expiryRule.test.ts @@ -5,9 +5,9 @@ import { } from '@metamask/delegation-deployments'; import type { Hex } from '@metamask/utils'; -import type { ChecksumCaveat } from '../types'; -import { getChecksumEnforcersByChainId } from '../utils'; -import { expiryRule } from './expiryRule'; +import type { ChecksumCaveat } from '../types.js'; +import { getChecksumEnforcersByChainId } from '../utils.js'; +import { expiryRule } from './expiryRule.js'; describe('expiryRule', () => { const contracts = DELEGATOR_CONTRACTS['1.3.0'][CHAIN_ID.sepolia]; diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/expiryRule.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/expiryRule.ts index 14b7127966f..c9c2b4f8116 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/expiryRule.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/expiryRule.ts @@ -1,6 +1,6 @@ -import { EXECUTION_PERMISSION_EXPIRY_RULE_TYPE } from '../../constants'; -import type { RuleDecoder } from '../types'; -import { extractExpiryFromCaveatTerms, getTermsByEnforcer } from '../utils'; +import { EXECUTION_PERMISSION_EXPIRY_RULE_TYPE } from '../../constants.js'; +import type { RuleDecoder } from '../types.js'; +import { extractExpiryFromCaveatTerms, getTermsByEnforcer } from '../utils.js'; /** * Rule decoder that extracts the expiry timestamp from a TimestampEnforcer diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/index.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/index.ts index 58d818b8a80..ed2bf230934 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/index.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/index.ts @@ -1,14 +1,14 @@ -import type { DeployedContractsByName, PermissionDecoder } from '../types'; -import { getChecksumEnforcersByChainId } from '../utils'; -import { makeErc20TokenAllowanceDecoderConfig } from './erc20TokenAllowance'; -import { makeErc20TokenPeriodicDecoderConfig } from './erc20TokenPeriodic'; -import { makeErc20TokenRevocationDecoderConfig } from './erc20TokenRevocation'; -import { makeErc20TokenStreamDecoderConfig } from './erc20TokenStream'; -import { makePermissionDecoder } from './makePermissionDecoder'; -import { makeNativeTokenAllowanceDecoderConfig } from './nativeTokenAllowance'; -import { makeNativeTokenPeriodicDecoderConfig } from './nativeTokenPeriodic'; -import { makeNativeTokenStreamDecoderConfig } from './nativeTokenStream'; -import { makeTokenApprovalRevocationDecoderConfig } from './tokenApprovalRevocation'; +import type { DeployedContractsByName, PermissionDecoder } from '../types.js'; +import { getChecksumEnforcersByChainId } from '../utils.js'; +import { makeErc20TokenAllowanceDecoderConfig } from './erc20TokenAllowance.js'; +import { makeErc20TokenPeriodicDecoderConfig } from './erc20TokenPeriodic.js'; +import { makeErc20TokenRevocationDecoderConfig } from './erc20TokenRevocation.js'; +import { makeErc20TokenStreamDecoderConfig } from './erc20TokenStream.js'; +import { makePermissionDecoder } from './makePermissionDecoder.js'; +import { makeNativeTokenAllowanceDecoderConfig } from './nativeTokenAllowance.js'; +import { makeNativeTokenPeriodicDecoderConfig } from './nativeTokenPeriodic.js'; +import { makeNativeTokenStreamDecoderConfig } from './nativeTokenStream.js'; +import { makeTokenApprovalRevocationDecoderConfig } from './tokenApprovalRevocation.js'; /** * Builds the canonical set of permission decoders for a chain. diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/makePermissionDecoder.test.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/makePermissionDecoder.test.ts index 817b2cf7ef0..fc23c77d79c 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/makePermissionDecoder.test.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/makePermissionDecoder.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { createAllowedCalldataTerms, createAllowedTargetsTerms, @@ -10,12 +11,12 @@ import { import { getChecksumAddress } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { getChecksumEnforcersByChainId } from '../utils'; -import { erc20PayeeRule } from './erc20PayeeRule'; -import { expiryRule } from './expiryRule'; -import { makePermissionDecoder } from './makePermissionDecoder'; -import { nativePayeeRule } from './nativePayeeRule'; -import { redeemerRule } from './redeemerRule'; +import { getChecksumEnforcersByChainId } from '../utils.js'; +import { erc20PayeeRule } from './erc20PayeeRule.js'; +import { expiryRule } from './expiryRule.js'; +import { makePermissionDecoder } from './makePermissionDecoder.js'; +import { nativePayeeRule } from './nativePayeeRule.js'; +import { redeemerRule } from './redeemerRule.js'; describe('makePermissionDecoder', () => { const contracts = DELEGATOR_CONTRACTS['1.3.0'][CHAIN_ID.sepolia]; diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/makePermissionDecoder.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/makePermissionDecoder.ts index bb15e243f11..7d2b9bb993f 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/makePermissionDecoder.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/makePermissionDecoder.ts @@ -3,7 +3,7 @@ import type { Caveat } from '@metamask/delegation-core'; import { getChecksumAddress, isStrictHexString } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { EXECUTION_PERMISSION_EXPIRY_RULE_TYPE } from '../../constants'; +import { EXECUTION_PERMISSION_EXPIRY_RULE_TYPE } from '../../constants.js'; import type { ChecksumCaveat, ChecksumEnforcersByChainId, @@ -12,8 +12,8 @@ import type { PermissionType, RuleDecoder, ValidateAndDecodeResult, -} from '../types'; -import { buildEnforcerCountsAndSet, enforcersMatchRule } from '../utils'; +} from '../types.js'; +import { buildEnforcerCountsAndSet, enforcersMatchRule } from '../utils.js'; /** * Configuration object describing how to decode a single permission type. diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/nativePayeeRule.test.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/nativePayeeRule.test.ts index d7e29cef562..c5c720d2f5c 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/nativePayeeRule.test.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/nativePayeeRule.test.ts @@ -6,9 +6,9 @@ import { import { getChecksumAddress } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import type { ChecksumCaveat } from '../types'; -import { getChecksumEnforcersByChainId } from '../utils'; -import { nativePayeeRule } from './nativePayeeRule'; +import type { ChecksumCaveat } from '../types.js'; +import { getChecksumEnforcersByChainId } from '../utils.js'; +import { nativePayeeRule } from './nativePayeeRule.js'; describe('nativePayeeRule', () => { const contracts = DELEGATOR_CONTRACTS['1.3.0'][CHAIN_ID.sepolia]; diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/nativePayeeRule.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/nativePayeeRule.ts index c30279deee3..77d444ad8e4 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/nativePayeeRule.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/nativePayeeRule.ts @@ -1,8 +1,8 @@ import { decodeAllowedTargetsTerms } from '@metamask/delegation-core'; import { getChecksumAddress } from '@metamask/utils'; -import { EXECUTION_PERMISSION_PAYEE_RULE_TYPE } from '../../constants'; -import type { RuleDecoder } from '../types'; +import { EXECUTION_PERMISSION_PAYEE_RULE_TYPE } from '../../constants.js'; +import type { RuleDecoder } from '../types.js'; /** * Rule decoder for native-token style payees, where the payee address(es) are diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenAllowance.test.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenAllowance.test.ts index 383428beedd..afdc98cbd88 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenAllowance.test.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenAllowance.test.ts @@ -5,7 +5,7 @@ import { DELEGATOR_CONTRACTS, } from '@metamask/delegation-deployments'; -import { createPermissionDecodersForContracts } from '.'; +import { createPermissionDecodersForContracts } from './index.js'; describe('native-token-allowance decoder', () => { const chainId = CHAIN_ID.sepolia; diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenAllowance.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenAllowance.ts index 5683910071e..9345709a87e 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenAllowance.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenAllowance.ts @@ -4,18 +4,18 @@ import type { ChecksumCaveat, ChecksumEnforcersByChainId, DecodedPermission, -} from '../types'; +} from '../types.js'; import { getByteLength, getTermsByEnforcer, splitHex, UINT256_MAX, ZERO_32_BYTES, -} from '../utils'; -import { expiryRule } from './expiryRule'; -import type { MakePermissionDecoderConfig } from './makePermissionDecoder'; -import { nativePayeeRule } from './nativePayeeRule'; -import { redeemerRule } from './redeemerRule'; +} from '../utils.js'; +import { expiryRule } from './expiryRule.js'; +import type { MakePermissionDecoderConfig } from './makePermissionDecoder.js'; +import { nativePayeeRule } from './nativePayeeRule.js'; +import { redeemerRule } from './redeemerRule.js'; /** * Builds the configuration for the native-token-allowance permission decoder. diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenPeriodic.test.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenPeriodic.test.ts index 677f0fdcc99..a504188ff24 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenPeriodic.test.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenPeriodic.test.ts @@ -8,8 +8,8 @@ import { DELEGATOR_CONTRACTS, } from '@metamask/delegation-deployments'; -import { createPermissionDecodersForContracts } from '.'; -import { MAX_PERIOD_DURATION } from '../utils'; +import { MAX_PERIOD_DURATION } from '../utils.js'; +import { createPermissionDecodersForContracts } from './index.js'; describe('native-token-periodic decoder', () => { const chainId = CHAIN_ID.sepolia; diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenPeriodic.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenPeriodic.ts index 23d2d098adf..7632af05f54 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenPeriodic.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenPeriodic.ts @@ -4,17 +4,17 @@ import type { ChecksumCaveat, ChecksumEnforcersByChainId, DecodedPermission, -} from '../types'; +} from '../types.js'; import { getByteLength, getTermsByEnforcer, MAX_PERIOD_DURATION, splitHex, -} from '../utils'; -import { expiryRule } from './expiryRule'; -import type { MakePermissionDecoderConfig } from './makePermissionDecoder'; -import { nativePayeeRule } from './nativePayeeRule'; -import { redeemerRule } from './redeemerRule'; +} from '../utils.js'; +import { expiryRule } from './expiryRule.js'; +import type { MakePermissionDecoderConfig } from './makePermissionDecoder.js'; +import { nativePayeeRule } from './nativePayeeRule.js'; +import { redeemerRule } from './redeemerRule.js'; /** * Builds the configuration for the native-token-periodic permission decoder. diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenStream.test.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenStream.test.ts index 28edc4be5bc..c89a37a5938 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenStream.test.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenStream.test.ts @@ -8,7 +8,7 @@ import { DELEGATOR_CONTRACTS, } from '@metamask/delegation-deployments'; -import { createPermissionDecodersForContracts } from '.'; +import { createPermissionDecodersForContracts } from './index.js'; describe('native-token-stream decoder', () => { const chainId = CHAIN_ID.sepolia; diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenStream.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenStream.ts index b2dbffa8d45..0f9fcecfef1 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenStream.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/nativeTokenStream.ts @@ -4,12 +4,12 @@ import type { ChecksumCaveat, ChecksumEnforcersByChainId, DecodedPermission, -} from '../types'; -import { getByteLength, getTermsByEnforcer, splitHex } from '../utils'; -import { expiryRule } from './expiryRule'; -import type { MakePermissionDecoderConfig } from './makePermissionDecoder'; -import { nativePayeeRule } from './nativePayeeRule'; -import { redeemerRule } from './redeemerRule'; +} from '../types.js'; +import { getByteLength, getTermsByEnforcer, splitHex } from '../utils.js'; +import { expiryRule } from './expiryRule.js'; +import type { MakePermissionDecoderConfig } from './makePermissionDecoder.js'; +import { nativePayeeRule } from './nativePayeeRule.js'; +import { redeemerRule } from './redeemerRule.js'; /** * Builds the configuration for the native-token-stream permission decoder. diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/redeemerRule.test.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/redeemerRule.test.ts index c397fccf608..0ae564ae915 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/redeemerRule.test.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/redeemerRule.test.ts @@ -6,9 +6,9 @@ import { import { getChecksumAddress } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import type { ChecksumCaveat } from '../types'; -import { getChecksumEnforcersByChainId } from '../utils'; -import { redeemerRule } from './redeemerRule'; +import type { ChecksumCaveat } from '../types.js'; +import { getChecksumEnforcersByChainId } from '../utils.js'; +import { redeemerRule } from './redeemerRule.js'; describe('redeemerRule', () => { const contracts = DELEGATOR_CONTRACTS['1.3.0'][CHAIN_ID.sepolia]; diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/redeemerRule.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/redeemerRule.ts index f7f283a8958..2c3aa94f6ee 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/redeemerRule.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/redeemerRule.ts @@ -1,9 +1,9 @@ import { decodeRedeemerTerms } from '@metamask/delegation-core'; import { getChecksumAddress } from '@metamask/utils'; -import { EXECUTION_PERMISSION_REDEEMER_RULE_TYPE } from '../../constants'; -import type { RuleDecoder } from '../types'; -import { getTermsByEnforcer } from '../utils'; +import { EXECUTION_PERMISSION_REDEEMER_RULE_TYPE } from '../../constants.js'; +import type { RuleDecoder } from '../types.js'; +import { getTermsByEnforcer } from '../utils.js'; /** * Rule decoder that extracts a redeemer allowlist from a RedeemerEnforcer diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/tokenApprovalRevocation.test.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/tokenApprovalRevocation.test.ts index 0d8b48a99a0..4cba8702342 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/tokenApprovalRevocation.test.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/tokenApprovalRevocation.test.ts @@ -4,8 +4,8 @@ import { DELEGATOR_CONTRACTS, } from '@metamask/delegation-deployments'; -import { createPermissionDecodersForContracts } from '.'; -import { getChecksumEnforcersByChainId } from '../utils'; +import { getChecksumEnforcersByChainId } from '../utils.js'; +import { createPermissionDecodersForContracts } from './index.js'; describe('token-approval-revocation decoder', () => { const chainId = CHAIN_ID.sepolia; diff --git a/packages/gator-permissions-controller/src/decodePermission/decoders/tokenApprovalRevocation.ts b/packages/gator-permissions-controller/src/decodePermission/decoders/tokenApprovalRevocation.ts index 0b4758148d0..62d6344300d 100644 --- a/packages/gator-permissions-controller/src/decodePermission/decoders/tokenApprovalRevocation.ts +++ b/packages/gator-permissions-controller/src/decodePermission/decoders/tokenApprovalRevocation.ts @@ -5,10 +5,10 @@ import type { ChecksumCaveat, ChecksumEnforcersByChainId, DecodedPermission, -} from '../types'; -import { getTermsByEnforcer } from '../utils'; -import { expiryRule } from './expiryRule'; -import type { MakePermissionDecoderConfig } from './makePermissionDecoder'; +} from '../types.js'; +import { getTermsByEnforcer } from '../utils.js'; +import { expiryRule } from './expiryRule.js'; +import type { MakePermissionDecoderConfig } from './makePermissionDecoder.js'; enum ApprovalRevocationFlag { Erc20Approve = 0x01, diff --git a/packages/gator-permissions-controller/src/decodePermission/utils.test.ts b/packages/gator-permissions-controller/src/decodePermission/utils.test.ts index d28bc61de4b..9912dd37191 100644 --- a/packages/gator-permissions-controller/src/decodePermission/utils.test.ts +++ b/packages/gator-permissions-controller/src/decodePermission/utils.test.ts @@ -2,13 +2,13 @@ import type { Caveat } from '@metamask/delegation-core'; import { getChecksumAddress } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { createPermissionDecodersForContracts } from './decoders'; -import type { DeployedContractsByName } from './types'; +import { createPermissionDecodersForContracts } from './decoders/index.js'; +import type { DeployedContractsByName } from './types.js'; import { getChecksumEnforcersByChainId, getTermsByEnforcer, splitHex, -} from './utils'; +} from './utils.js'; // Helper to build a contracts map with lowercase addresses const buildContracts = (): DeployedContractsByName => ({ diff --git a/packages/gator-permissions-controller/src/decodePermission/utils.ts b/packages/gator-permissions-controller/src/decodePermission/utils.ts index a1dac594723..9492c6ac75f 100644 --- a/packages/gator-permissions-controller/src/decodePermission/utils.ts +++ b/packages/gator-permissions-controller/src/decodePermission/utils.ts @@ -5,7 +5,7 @@ import type { Hex } from '@metamask/utils'; import type { ChecksumEnforcersByChainId, DeployedContractsByName, -} from './types'; +} from './types.js'; /** * The names of the enforcer contracts for each permission type. diff --git a/packages/gator-permissions-controller/src/errors.test.ts b/packages/gator-permissions-controller/src/errors.test.ts index f7be32427fc..b1874474126 100644 --- a/packages/gator-permissions-controller/src/errors.test.ts +++ b/packages/gator-permissions-controller/src/errors.test.ts @@ -4,11 +4,11 @@ import { GatorPermissionsProviderError, OriginNotAllowedError, PermissionDecodingError, -} from './errors'; +} from './errors.js'; import { GatorPermissionsControllerErrorCode, GatorPermissionsSnapRpcMethod, -} from './types'; +} from './types.js'; describe('errors', () => { describe('GatorPermissionsControllerError', () => { diff --git a/packages/gator-permissions-controller/src/errors.ts b/packages/gator-permissions-controller/src/errors.ts index 4bd806742f7..45e1ccc3c6f 100644 --- a/packages/gator-permissions-controller/src/errors.ts +++ b/packages/gator-permissions-controller/src/errors.ts @@ -1,5 +1,5 @@ -import type { GatorPermissionsSnapRpcMethod } from './types'; -import { GatorPermissionsControllerErrorCode } from './types'; +import type { GatorPermissionsSnapRpcMethod } from './types.js'; +import { GatorPermissionsControllerErrorCode } from './types.js'; /** * Represents a base gator permissions error. diff --git a/packages/gator-permissions-controller/src/permissionOnChainStatus.test.ts b/packages/gator-permissions-controller/src/permissionOnChainStatus.test.ts index 2b7eb658394..7c32faa4746 100644 --- a/packages/gator-permissions-controller/src/permissionOnChainStatus.test.ts +++ b/packages/gator-permissions-controller/src/permissionOnChainStatus.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { createNativeTokenStreamingTerms, createTimestampTerms, @@ -12,7 +13,7 @@ import { import { hexToBigInt, numberToHex } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { DELEGATION_FRAMEWORK_VERSION } from './constants'; +import { DELEGATION_FRAMEWORK_VERSION } from './constants.js'; import { encodeDisabledDelegationsCalldata, getExpiryFromDelegation, @@ -20,8 +21,8 @@ import { readLatestBlockTimestampSeconds, resolveGrantedPermissionOnChainStatus, updateGrantedPermissionsStatus, -} from './permissionOnChainStatus'; -import type { PermissionInfoWithMetadata } from './types'; +} from './permissionOnChainStatus.js'; +import type { PermissionInfoWithMetadata } from './types.js'; const contracts = DELEGATOR_CONTRACTS[DELEGATION_FRAMEWORK_VERSION][CHAIN_ID.sepolia]; diff --git a/packages/gator-permissions-controller/src/permissionOnChainStatus.ts b/packages/gator-permissions-controller/src/permissionOnChainStatus.ts index 6ac35cfde3a..91c04b3f9d4 100644 --- a/packages/gator-permissions-controller/src/permissionOnChainStatus.ts +++ b/packages/gator-permissions-controller/src/permissionOnChainStatus.ts @@ -4,16 +4,16 @@ import type { Delegation } from '@metamask/delegation-core'; import { bytesToHex, getChecksumAddress, hexToNumber } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import type { DeployedContractsByName } from './decodePermission/types'; +import type { DeployedContractsByName } from './decodePermission/types.js'; import { extractExpiryFromCaveatTerms, getChecksumEnforcersByChainId, -} from './decodePermission/utils'; -import { controllerLog } from './logger'; +} from './decodePermission/utils.js'; +import { controllerLog } from './logger.js'; import type { PermissionInfoWithMetadata, GatorPermissionStatus, -} from './types'; +} from './types.js'; /** Function selector for `DelegationManager.disabledDelegations(bytes32)`. */ const DISABLED_DELEGATIONS_SELECTOR = '0x2d40d052'; diff --git a/packages/gator-permissions-controller/src/utils.test.ts b/packages/gator-permissions-controller/src/utils.test.ts index d97067d5814..a5269b74b49 100644 --- a/packages/gator-permissions-controller/src/utils.test.ts +++ b/packages/gator-permissions-controller/src/utils.test.ts @@ -1,10 +1,11 @@ +import { jest } from '@jest/globals'; import type { SnapId } from '@metamask/snaps-sdk'; import { HandlerType } from '@metamask/snaps-utils'; -import { GatorPermissionsProviderError } from './errors'; -import type { GatorPermissionsControllerMessenger } from './GatorPermissionsController'; -import { GatorPermissionsSnapRpcMethod } from './types'; -import { executeSnapRpc } from './utils'; +import { GatorPermissionsProviderError } from './errors.js'; +import type { GatorPermissionsControllerMessenger } from './GatorPermissionsController.js'; +import { GatorPermissionsSnapRpcMethod } from './types.js'; +import { executeSnapRpc } from './utils.js'; describe('executeSnapRpc', () => { const mockSnapId = 'npm:@metamask/test-snap' as SnapId; diff --git a/packages/gator-permissions-controller/src/utils.ts b/packages/gator-permissions-controller/src/utils.ts index d0de1d7c229..27336d82e51 100644 --- a/packages/gator-permissions-controller/src/utils.ts +++ b/packages/gator-permissions-controller/src/utils.ts @@ -2,10 +2,10 @@ import type { SnapId } from '@metamask/snaps-sdk'; import { HandlerType } from '@metamask/snaps-utils'; import type { Json } from '@metamask/utils'; -import { GatorPermissionsProviderError } from './errors'; -import { GatorPermissionsControllerMessenger } from './GatorPermissionsController'; -import { utilsLog } from './logger'; -import type { GatorPermissionsSnapRpcMethod } from './types'; +import { GatorPermissionsProviderError } from './errors.js'; +import { GatorPermissionsControllerMessenger } from './GatorPermissionsController.js'; +import { utilsLog } from './logger.js'; +import type { GatorPermissionsSnapRpcMethod } from './types.js'; /** * Executes an RPC request against a Snap and returns the typed response. diff --git a/packages/gator-permissions-controller/tests/mock.test.ts b/packages/gator-permissions-controller/tests/mock.test.ts index 65e965ed921..fe5c446a683 100644 --- a/packages/gator-permissions-controller/tests/mock.test.ts +++ b/packages/gator-permissions-controller/tests/mock.test.ts @@ -1,5 +1,5 @@ -import { mockGatorPermissionsStorageEntriesFactory } from './mocks'; -import type { MockGatorPermissionsStorageEntriesConfig } from './mocks'; +import { mockGatorPermissionsStorageEntriesFactory } from './mocks.js'; +import type { MockGatorPermissionsStorageEntriesConfig } from './mocks.js'; describe('mockGatorPermissionsStorageEntriesFactory', () => { it('should create mock storage entries for all permission types', () => { diff --git a/packages/gator-permissions-controller/tests/mocks.ts b/packages/gator-permissions-controller/tests/mocks.ts index 7d9f13c4e6d..5d62cce3b57 100644 --- a/packages/gator-permissions-controller/tests/mocks.ts +++ b/packages/gator-permissions-controller/tests/mocks.ts @@ -6,7 +6,7 @@ import type { } from '@metamask/7715-permission-types'; import type { Hex } from '@metamask/utils'; -import type { StoredGatorPermission } from '../src/types'; +import type { StoredGatorPermission } from '../src/types.js'; /** * Mock stored gator permission: native-token-stream (as returned by the Snap). From 562119c893f18681d4b62ff533ecfa9434bbf299 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:51:09 +0200 Subject: [PATCH 082/115] ESLint fix and `jest` global import for network-connection-banner-controller --- ...kConnectionBannerController-method-action-types.ts | 2 +- .../src/NetworkConnectionBannerController.test.ts | 11 ++++++----- .../src/NetworkConnectionBannerController.ts | 4 ++-- .../network-connection-banner-controller/src/index.ts | 8 ++++---- .../src/selectors.test.ts | 4 ++-- .../src/selectors.ts | 2 +- .../src/url-utils.test.ts | 2 +- 7 files changed, 17 insertions(+), 16 deletions(-) diff --git a/packages/network-connection-banner-controller/src/NetworkConnectionBannerController-method-action-types.ts b/packages/network-connection-banner-controller/src/NetworkConnectionBannerController-method-action-types.ts index 9cbda05c26b..980b79d2f9e 100644 --- a/packages/network-connection-banner-controller/src/NetworkConnectionBannerController-method-action-types.ts +++ b/packages/network-connection-banner-controller/src/NetworkConnectionBannerController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { NetworkConnectionBannerController } from './NetworkConnectionBannerController'; +import type { NetworkConnectionBannerController } from './NetworkConnectionBannerController.js'; /** * Clears the banner state such that the banner will be hidden. diff --git a/packages/network-connection-banner-controller/src/NetworkConnectionBannerController.test.ts b/packages/network-connection-banner-controller/src/NetworkConnectionBannerController.test.ts index c1488bd93e5..bfc32d64100 100644 --- a/packages/network-connection-banner-controller/src/NetworkConnectionBannerController.test.ts +++ b/packages/network-connection-banner-controller/src/NetworkConnectionBannerController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { CONNECTIVITY_STATUSES } from '@metamask/connectivity-controller'; import type { ConnectivityControllerState } from '@metamask/connectivity-controller'; @@ -18,8 +19,8 @@ import type { NetworkEnablementControllerState } from '@metamask/network-enablem import { KnownCaipNamespace } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import type { NetworkConnectionBannerControllerMessenger } from './NetworkConnectionBannerController'; -import { NetworkConnectionBannerController } from './NetworkConnectionBannerController'; +import type { NetworkConnectionBannerControllerMessenger } from './NetworkConnectionBannerController.js'; +import { NetworkConnectionBannerController } from './NetworkConnectionBannerController.js'; const TEST_INFURA_PROJECT_ID = 'test-infura-project-id'; const MAINNET_CLIENT_ID = 'mainnet' satisfies BuiltInNetworkClientId; @@ -1783,7 +1784,7 @@ async function withController( rootMessenger.registerActionHandler( 'NetworkController:getState', - () => currentState.NetworkController as NetworkState, + () => currentState.NetworkController, ); rootMessenger.registerActionHandler( 'NetworkController:getNetworkConfigurationByChainId', @@ -1879,7 +1880,7 @@ async function withController( }; rootMessenger.publish( 'NetworkController:stateChange', - currentState.NetworkController as NetworkState, + currentState.NetworkController, [], ); }; @@ -1911,7 +1912,7 @@ async function withController( }; rootMessenger.publish( 'NetworkController:stateChange', - currentState.NetworkController as NetworkState, + currentState.NetworkController, [], ); rootMessenger.publish( diff --git a/packages/network-connection-banner-controller/src/NetworkConnectionBannerController.ts b/packages/network-connection-banner-controller/src/NetworkConnectionBannerController.ts index 5dfdb6528c1..f3cc67e8079 100644 --- a/packages/network-connection-banner-controller/src/NetworkConnectionBannerController.ts +++ b/packages/network-connection-banner-controller/src/NetworkConnectionBannerController.ts @@ -41,8 +41,8 @@ import type { Hex } from '@metamask/utils'; import { KnownCaipNamespace } from '@metamask/utils'; import { createSelector } from 'reselect'; -import type { NetworkConnectionBannerControllerMethodActions } from './NetworkConnectionBannerController-method-action-types'; -import { getIsInfuraEndpoint } from './url-utils'; +import type { NetworkConnectionBannerControllerMethodActions } from './NetworkConnectionBannerController-method-action-types.js'; +import { getIsInfuraEndpoint } from './url-utils.js'; /** * The name of the {@link NetworkConnectionBannerController}, used to namespace diff --git a/packages/network-connection-banner-controller/src/index.ts b/packages/network-connection-banner-controller/src/index.ts index 825f079000f..08b47d81af6 100644 --- a/packages/network-connection-banner-controller/src/index.ts +++ b/packages/network-connection-banner-controller/src/index.ts @@ -8,15 +8,15 @@ export type { NetworkConnectionBannerControllerOptions, FailedNetwork, NetworkConnectionBannerStatus, -} from './NetworkConnectionBannerController'; +} from './NetworkConnectionBannerController.js'; export type { NetworkConnectionBannerControllerDismissBannerAction, NetworkConnectionBannerControllerSwitchToDefaultInfuraRpcEndpointAction, -} from './NetworkConnectionBannerController-method-action-types'; +} from './NetworkConnectionBannerController-method-action-types.js'; export { NetworkConnectionBannerController, getDefaultNetworkConnectionBannerControllerState, DEFAULT_DEGRADED_BANNER_TIMEOUT, DEFAULT_UNAVAILABLE_BANNER_TIMEOUT, -} from './NetworkConnectionBannerController'; -export { networkConnectionBannerControllerSelectors } from './selectors'; +} from './NetworkConnectionBannerController.js'; +export { networkConnectionBannerControllerSelectors } from './selectors.js'; diff --git a/packages/network-connection-banner-controller/src/selectors.test.ts b/packages/network-connection-banner-controller/src/selectors.test.ts index 1f6c8fa5985..b51be9af5af 100644 --- a/packages/network-connection-banner-controller/src/selectors.test.ts +++ b/packages/network-connection-banner-controller/src/selectors.test.ts @@ -1,8 +1,8 @@ import type { NetworkConnectionBannerControllerState, FailedNetwork, -} from './NetworkConnectionBannerController'; -import { networkConnectionBannerControllerSelectors } from './selectors'; +} from './NetworkConnectionBannerController.js'; +import { networkConnectionBannerControllerSelectors } from './selectors.js'; const failedNetwork: FailedNetwork = { chainId: '0x1', diff --git a/packages/network-connection-banner-controller/src/selectors.ts b/packages/network-connection-banner-controller/src/selectors.ts index 4f17e6292b6..4e15222d572 100644 --- a/packages/network-connection-banner-controller/src/selectors.ts +++ b/packages/network-connection-banner-controller/src/selectors.ts @@ -4,7 +4,7 @@ import type { NetworkConnectionBannerControllerState, FailedNetwork, NetworkConnectionBannerStatus, -} from './NetworkConnectionBannerController'; +} from './NetworkConnectionBannerController.js'; /** * Selects the banner status from the controller state. diff --git a/packages/network-connection-banner-controller/src/url-utils.test.ts b/packages/network-connection-banner-controller/src/url-utils.test.ts index c6e1c121abb..304afcad3c0 100644 --- a/packages/network-connection-banner-controller/src/url-utils.test.ts +++ b/packages/network-connection-banner-controller/src/url-utils.test.ts @@ -1,4 +1,4 @@ -import { getIsInfuraEndpoint } from './url-utils'; +import { getIsInfuraEndpoint } from './url-utils.js'; const INFURA_PROJECT_ID = 'abc123def456'; From 62808e480148a5bfbd07d3b9c2700148f4dbe128 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:51:13 +0200 Subject: [PATCH 083/115] ESLint fix and `jest` global import for network-enablement-controller --- ...NetworkEnablementController-method-action-types.ts | 2 +- .../src/NetworkEnablementController.test.ts | 11 ++++++----- packages/network-enablement-controller/src/index.ts | 6 +++++- .../src/selectors.test.ts | 4 ++-- .../network-enablement-controller/src/selectors.ts | 4 ++-- .../src/services/Slip44Service.test.ts | 3 ++- .../src/services/index.ts | 2 +- .../network-enablement-controller/src/utils.test.ts | 4 ++-- packages/network-enablement-controller/src/utils.ts | 4 ++-- 9 files changed, 23 insertions(+), 17 deletions(-) diff --git a/packages/network-enablement-controller/src/NetworkEnablementController-method-action-types.ts b/packages/network-enablement-controller/src/NetworkEnablementController-method-action-types.ts index b3245a03936..4301ca30cad 100644 --- a/packages/network-enablement-controller/src/NetworkEnablementController-method-action-types.ts +++ b/packages/network-enablement-controller/src/NetworkEnablementController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { NetworkEnablementController } from './NetworkEnablementController'; +import type { NetworkEnablementController } from './NetworkEnablementController.js'; /** * Enables or disables a network for the user. diff --git a/packages/network-enablement-controller/src/NetworkEnablementController.test.ts b/packages/network-enablement-controller/src/NetworkEnablementController.test.ts index 410e68a089a..f4fdf33b027 100644 --- a/packages/network-enablement-controller/src/NetworkEnablementController.test.ts +++ b/packages/network-enablement-controller/src/NetworkEnablementController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { BuiltInNetworkName, ChainId } from '@metamask/controller-utils'; import { BtcScope, SolScope, TrxScope, XlmScope } from '@metamask/keyring-api'; @@ -14,14 +15,14 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; import { KnownCaipNamespace } from '@metamask/utils'; import type { CaipChainId, CaipNamespace, Hex } from '@metamask/utils'; -import { jestAdvanceTime } from '../../../tests/helpers'; -import { POPULAR_NETWORKS } from './constants'; -import { NetworkEnablementController } from './NetworkEnablementController'; +import { jestAdvanceTime } from '../../../tests/helpers.js'; +import { POPULAR_NETWORKS } from './constants.js'; +import { NetworkEnablementController } from './NetworkEnablementController.js'; import type { NetworkEnablementControllerMessenger, NativeAssetIdentifiersMap, -} from './NetworkEnablementController'; -import { Slip44Service } from './services'; +} from './NetworkEnablementController.js'; +import { Slip44Service } from './services/index.js'; // Known chainId mappings from chainid.network for mocking const chainIdToSlip44: Record = { diff --git a/packages/network-enablement-controller/src/index.ts b/packages/network-enablement-controller/src/index.ts index b06310b4ad7..9299edcb900 100644 --- a/packages/network-enablement-controller/src/index.ts +++ b/packages/network-enablement-controller/src/index.ts @@ -35,4 +35,8 @@ export { selectEnabledSolanaNetworks, } from './selectors.js'; -export { Slip44Service, getEvmSlip44, getSlip44BySymbol } from './services/index.js'; +export { + Slip44Service, + getEvmSlip44, + getSlip44BySymbol, +} from './services/index.js'; diff --git a/packages/network-enablement-controller/src/selectors.test.ts b/packages/network-enablement-controller/src/selectors.test.ts index 1410080bb47..ad6cda8fab2 100644 --- a/packages/network-enablement-controller/src/selectors.test.ts +++ b/packages/network-enablement-controller/src/selectors.test.ts @@ -1,6 +1,6 @@ import { KnownCaipNamespace } from '@metamask/utils'; -import type { NetworkEnablementControllerState } from './NetworkEnablementController'; +import type { NetworkEnablementControllerState } from './NetworkEnablementController.js'; import { selectEnabledNetworkMap, selectIsNetworkEnabled, @@ -9,7 +9,7 @@ import { selectEnabledNetworksCount, selectEnabledEvmNetworks, selectEnabledSolanaNetworks, -} from './selectors'; +} from './selectors.js'; describe('NetworkEnablementController Selectors', () => { const mockState: NetworkEnablementControllerState = { diff --git a/packages/network-enablement-controller/src/selectors.ts b/packages/network-enablement-controller/src/selectors.ts index dae9938a419..553940e6d5e 100644 --- a/packages/network-enablement-controller/src/selectors.ts +++ b/packages/network-enablement-controller/src/selectors.ts @@ -2,8 +2,8 @@ import type { CaipChainId, CaipNamespace, Hex } from '@metamask/utils'; import { KnownCaipNamespace } from '@metamask/utils'; import { createSelector } from 'reselect'; -import type { NetworkEnablementControllerState } from './NetworkEnablementController'; -import { deriveKeys } from './utils'; +import type { NetworkEnablementControllerState } from './NetworkEnablementController.js'; +import { deriveKeys } from './utils.js'; /** * Base selector to get the enabled network map from the controller state. diff --git a/packages/network-enablement-controller/src/services/Slip44Service.test.ts b/packages/network-enablement-controller/src/services/Slip44Service.test.ts index 1263cb59a52..86b2f6d85bf 100644 --- a/packages/network-enablement-controller/src/services/Slip44Service.test.ts +++ b/packages/network-enablement-controller/src/services/Slip44Service.test.ts @@ -1,6 +1,7 @@ +import { jest } from '@jest/globals'; import { fetchWithErrorHandling } from '@metamask/controller-utils'; -import { Slip44Service } from './Slip44Service'; +import { Slip44Service } from './Slip44Service.js'; jest.mock('@metamask/controller-utils', () => ({ fetchWithErrorHandling: jest.fn(), diff --git a/packages/network-enablement-controller/src/services/index.ts b/packages/network-enablement-controller/src/services/index.ts index 5d87168f7ff..72bc55b9a5e 100644 --- a/packages/network-enablement-controller/src/services/index.ts +++ b/packages/network-enablement-controller/src/services/index.ts @@ -1,4 +1,4 @@ -import { Slip44Service } from './Slip44Service'; +import { Slip44Service } from './Slip44Service.js'; export { Slip44Service }; diff --git a/packages/network-enablement-controller/src/utils.test.ts b/packages/network-enablement-controller/src/utils.test.ts index ed975ab5641..40844e326b3 100644 --- a/packages/network-enablement-controller/src/utils.test.ts +++ b/packages/network-enablement-controller/src/utils.test.ts @@ -1,11 +1,11 @@ import { KnownCaipNamespace } from '@metamask/utils'; -import type { NetworkEnablementControllerState } from './NetworkEnablementController'; +import type { NetworkEnablementControllerState } from './NetworkEnablementController.js'; import { deriveKeys, isOnlyNetworkEnabledInNamespace, isPopularNetwork, -} from './utils'; +} from './utils.js'; describe('Utils', () => { describe('deriveKeys', () => { diff --git a/packages/network-enablement-controller/src/utils.ts b/packages/network-enablement-controller/src/utils.ts index 09973e01120..c7534f9ad90 100644 --- a/packages/network-enablement-controller/src/utils.ts +++ b/packages/network-enablement-controller/src/utils.ts @@ -8,8 +8,8 @@ import { parseCaipChainId, } from '@metamask/utils'; -import { POPULAR_NETWORKS } from './constants'; -import type { NetworkEnablementControllerState } from './NetworkEnablementController'; +import { POPULAR_NETWORKS } from './constants.js'; +import type { NetworkEnablementControllerState } from './NetworkEnablementController.js'; /** * Represents the parsed keys derived from a chain ID. From 1160c7d7013b5f5b30eb3eb290690caf56ee5a6b Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:51:13 +0200 Subject: [PATCH 084/115] ESLint fix and `jest` global import for perps-controller --- .../PerpsController-method-action-types.ts | 2 +- .../perps-controller/src/aggregation/index.ts | 4 +- .../perps-controller/src/constants/index.ts | 16 ++++---- .../src/constants/myxConfig.ts | 2 +- packages/perps-controller/src/index.ts | 5 ++- .../src/providers/HyperLiquidProvider.ts | 22 +++++------ .../perps-controller/src/routing/index.ts | 4 +- packages/perps-controller/src/selectors.ts | 5 ++- .../src/services/DexDiscoveryCacheManager.ts | 7 +++- .../src/services/HyperLiquidClientService.ts | 2 +- .../HyperLiquidSubscriptionService.ts | 12 +++--- packages/perps-controller/src/types/index.ts | 10 ++--- .../perps-controller/src/types/perps-types.ts | 6 +-- .../src/utils/accountUtils.ts | 2 +- .../src/utils/coalescePerpsRestRequest.ts | 2 +- .../perps-controller/src/utils/errorUtils.ts | 2 +- .../src/utils/hyperLiquidAbstraction.ts | 2 +- .../src/utils/hyperLiquidAdapter.ts | 14 +++---- .../src/utils/hyperLiquidValidation.ts | 5 ++- packages/perps-controller/src/utils/index.ts | 38 +++++++++---------- .../src/utils/marketDataTransform.ts | 10 ++--- .../src/utils/orderCalculations.ts | 2 +- .../src/utils/perpsFormatters.ts | 2 +- .../src/utils/significantFigures.ts | 2 +- .../perps-controller/src/utils/sortMarkets.ts | 6 ++- .../src/utils/standaloneInfoClient.ts | 4 +- .../tests/defer-eligibility.test.ts | 7 ++-- .../tests/helpers/providerMocks.ts | 1 + .../tests/helpers/serviceMocks.ts | 2 +- .../tests/placeholder.test.ts | 2 +- .../src/PerpsController.configuration.test.ts | 3 +- .../src/PerpsController.lifecycle.test.ts | 3 +- .../PerpsController.market-filtering.test.ts | 2 +- .../src/PerpsController.operations.test.ts | 3 +- .../PerpsController.providers-cache.test.ts | 3 +- .../tests/src/PerpsController.state.test.ts | 2 +- .../src/PerpsController.subscriptions.test.ts | 3 +- .../tests/src/PerpsController.trading.test.ts | 3 +- .../SubscriptionMultiplexer.test.ts | 4 +- .../tests/src/constants/eventNames.test.ts | 4 +- .../src/constants/hyperLiquidConfig.test.ts | 6 +-- .../providers/AggregatedPerpsProvider.test.ts | 10 +++-- .../HyperLiquidProvider.account-mode.test.ts | 1 + .../HyperLiquidProvider.builder-fees.test.ts | 1 + .../HyperLiquidProvider.data.test.ts | 1 + ...HyperLiquidProvider.error-handling.test.ts | 1 + .../HyperLiquidProvider.history.test.ts | 1 + .../HyperLiquidProvider.lifecycle.test.ts | 1 + .../HyperLiquidProvider.misc.test.ts | 1 + .../HyperLiquidProvider.standalone.test.ts | 1 + .../HyperLiquidProvider.trading.test.ts | 1 + .../HyperLiquidProvider.validation.test.ts | 1 + .../tests/src/providers/MYXProvider.test.ts | 2 + .../tests/src/selectors.test.ts | 2 + .../tests/src/services/AccountService.test.ts | 12 +++--- .../src/services/DataLakeService.test.ts | 8 ++-- .../tests/src/services/DepositService.test.ts | 1 + .../src/services/EligibilityService.test.ts | 8 ++-- .../FeatureFlagConfigurationService.test.ts | 1 + .../services/HyperLiquidClientService.test.ts | 3 +- ...perLiquidSubscriptionService.cache.test.ts | 3 +- ...iquidSubscriptionService.lifecycle.test.ts | 3 +- ...uidSubscriptionService.market-data.test.ts | 3 +- ...rLiquidSubscriptionService.streams.test.ts | 3 +- .../services/HyperLiquidWalletService.test.ts | 1 + .../src/services/MYXClientService.test.ts | 1 + .../src/services/MYXWalletService.test.ts | 1 + .../src/services/MarketDataService.test.ts | 14 ++++--- .../RewardsIntegrationService.test.ts | 6 ++- .../services/TerminalMarketService.test.ts | 10 +++-- .../services/TradingReadinessCache.test.ts | 2 + .../TradingService.placeOrder.timeout.test.ts | 2 + .../tests/src/services/TradingService.test.ts | 12 +++--- .../tests/src/types/hyperliquid-types.test.ts | 2 +- .../utils/coalescePerpsRestRequest.test.ts | 4 +- .../tests/src/utils/errorUtils.test.ts | 2 +- .../src/utils/hyperLiquidAbstraction.test.ts | 2 +- .../src/utils/hyperLiquidAdapter.test.ts | 4 +- .../hyperLiquidOrderBookProcessor.test.ts | 2 +- .../src/utils/marketDataTransform.test.ts | 8 ++-- .../tests/src/utils/marketSearch.test.ts | 4 +- .../tests/src/utils/marketUtils.test.ts | 4 +- .../tests/src/utils/myxAdapter.test.ts | 1 + .../tests/src/utils/rewardsUtils.test.ts | 4 +- .../src/utils/significantFigures.test.ts | 2 +- .../tests/src/utils/sortMarkets.test.ts | 6 +-- .../src/utils/standaloneInfoClient.test.ts | 1 + .../tests/src/utils/transferData.test.ts | 2 +- 88 files changed, 228 insertions(+), 174 deletions(-) diff --git a/packages/perps-controller/src/PerpsController-method-action-types.ts b/packages/perps-controller/src/PerpsController-method-action-types.ts index bd9abaa38c8..6297e2b79f6 100644 --- a/packages/perps-controller/src/PerpsController-method-action-types.ts +++ b/packages/perps-controller/src/PerpsController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { PerpsController } from './PerpsController'; +import type { PerpsController } from './PerpsController.js'; /** * Read cached market data for the currently active provider (or aggregated). diff --git a/packages/perps-controller/src/aggregation/index.ts b/packages/perps-controller/src/aggregation/index.ts index 00b4fbfec0f..bc4b3e19c38 100644 --- a/packages/perps-controller/src/aggregation/index.ts +++ b/packages/perps-controller/src/aggregation/index.ts @@ -1,7 +1,7 @@ /** * Provider aggregation module exports */ -export { SubscriptionMultiplexer } from './SubscriptionMultiplexer'; +export { SubscriptionMultiplexer } from './SubscriptionMultiplexer.js'; export type { PriceAggregationMode, MultiplexedPricesParams, @@ -9,4 +9,4 @@ export type { MultiplexedOrderFillsParams, MultiplexedOrdersParams, MultiplexedAccountParams, -} from './SubscriptionMultiplexer'; +} from './SubscriptionMultiplexer.js'; diff --git a/packages/perps-controller/src/constants/index.ts b/packages/perps-controller/src/constants/index.ts index aedcaaec560..cd510d8579c 100644 --- a/packages/perps-controller/src/constants/index.ts +++ b/packages/perps-controller/src/constants/index.ts @@ -1,11 +1,11 @@ /** * Barrel re-export for all portable constants in controllers/ */ -export * from './chartConfig'; -export * from './eventNames'; -export * from './hyperLiquidConfig'; -export * from './orderTypes'; -export * from './perpsConfig'; -export * from './transactionsHistoryConfig'; -export * from './performanceMetrics'; -export * from './myxConfig'; +export * from './chartConfig.js'; +export * from './eventNames.js'; +export * from './hyperLiquidConfig.js'; +export * from './orderTypes.js'; +export * from './perpsConfig.js'; +export * from './transactionsHistoryConfig.js'; +export * from './performanceMetrics.js'; +export * from './myxConfig.js'; diff --git a/packages/perps-controller/src/constants/myxConfig.ts b/packages/perps-controller/src/constants/myxConfig.ts index 5c0abacaa5a..3eaf86976b1 100644 --- a/packages/perps-controller/src/constants/myxConfig.ts +++ b/packages/perps-controller/src/constants/myxConfig.ts @@ -12,7 +12,7 @@ import type { MYXNetwork, MYXEndpoints, MYXAssetConfigs, -} from '../types/myx-types'; +} from '../types/myx-types.js'; // ============================================================================ // Network Constants diff --git a/packages/perps-controller/src/index.ts b/packages/perps-controller/src/index.ts index e193e428ab9..e2bbf8dcea6 100644 --- a/packages/perps-controller/src/index.ts +++ b/packages/perps-controller/src/index.ts @@ -508,7 +508,10 @@ export { getMarketMatchRank, } from './utils/index.js'; export { MarketMatchRank } from './utils/index.js'; -export type { MarketPatternMatcher, CompiledMarketPattern } from './utils/index.js'; +export type { + MarketPatternMatcher, + CompiledMarketPattern, +} from './utils/index.js'; export type { OrderCalculationsDebugLogger, CalculateFinalPositionSizeParams, diff --git a/packages/perps-controller/src/providers/HyperLiquidProvider.ts b/packages/perps-controller/src/providers/HyperLiquidProvider.ts index f91c908247c..af52064b0d8 100644 --- a/packages/perps-controller/src/providers/HyperLiquidProvider.ts +++ b/packages/perps-controller/src/providers/HyperLiquidProvider.ts @@ -49,6 +49,17 @@ import { TradingReadinessCache, PerpsSigningCache, } from '../services/TradingReadinessCache.js'; +import type { + SDKOrderParams, + MetaResponse, + PerpsAssetCtx, + SpotMetaResponse, +} from '../types/hyperliquid-types.js'; +import { + HL_ABSTRACTION_WIRE, + HL_UNIFIED_ACCOUNT_MODE, + hyperLiquidModeFoldsSpot, +} from '../types/hyperliquid-types.js'; import { PerpsAnalyticsEvent } from '../types/index.js'; import type { AccountState, @@ -112,17 +123,6 @@ import type { RawLedgerUpdate, PerpsReadOptions, } from '../types/index.js'; -import type { - SDKOrderParams, - MetaResponse, - PerpsAssetCtx, - SpotMetaResponse, -} from '../types/hyperliquid-types.js'; -import { - HL_ABSTRACTION_WIRE, - HL_UNIFIED_ACCOUNT_MODE, - hyperLiquidModeFoldsSpot, -} from '../types/hyperliquid-types.js'; import type { PerpsControllerMessengerBase } from '../types/messenger.js'; import type { ExtendedAssetMeta, diff --git a/packages/perps-controller/src/routing/index.ts b/packages/perps-controller/src/routing/index.ts index e918f93fd85..12b69c6d5ea 100644 --- a/packages/perps-controller/src/routing/index.ts +++ b/packages/perps-controller/src/routing/index.ts @@ -1,5 +1,5 @@ /** * Provider routing module exports */ -export { ProviderRouter } from './ProviderRouter'; -export type { RouterSelectParams } from './ProviderRouter'; +export { ProviderRouter } from './ProviderRouter.js'; +export type { RouterSelectParams } from './ProviderRouter.js'; diff --git a/packages/perps-controller/src/selectors.ts b/packages/perps-controller/src/selectors.ts index 62742e9e45d..b9fbfd53f62 100644 --- a/packages/perps-controller/src/selectors.ts +++ b/packages/perps-controller/src/selectors.ts @@ -6,7 +6,10 @@ import { SortOptionId, } from './constants/perpsConfig.js'; import type { PerpsControllerState } from './PerpsController.js'; -import type { PerpsSelectedPaymentToken, SortDirection } from './types/index.js'; +import type { + PerpsSelectedPaymentToken, + SortDirection, +} from './types/index.js'; /** * Select whether the user is a first-time perps user diff --git a/packages/perps-controller/src/services/DexDiscoveryCacheManager.ts b/packages/perps-controller/src/services/DexDiscoveryCacheManager.ts index 4413ffa8992..3ed2a912489 100644 --- a/packages/perps-controller/src/services/DexDiscoveryCacheManager.ts +++ b/packages/perps-controller/src/services/DexDiscoveryCacheManager.ts @@ -1,8 +1,11 @@ import { MAINNET_HIP3_CONFIG, TESTNET_HIP3_CONFIG, -} from '../constants/hyperLiquidConfig'; -import type { DexDiscoveryState, ExtendedPerpDex } from '../types/perps-types'; +} from '../constants/hyperLiquidConfig.js'; +import type { + DexDiscoveryState, + ExtendedPerpDex, +} from '../types/perps-types.js'; type DexDiscoveryDeps = { isTestnetMode: () => boolean; diff --git a/packages/perps-controller/src/services/HyperLiquidClientService.ts b/packages/perps-controller/src/services/HyperLiquidClientService.ts index a50ad44dc99..e9aeacdb6d0 100644 --- a/packages/perps-controller/src/services/HyperLiquidClientService.ts +++ b/packages/perps-controller/src/services/HyperLiquidClientService.ts @@ -18,12 +18,12 @@ import { PERPS_CONSTANTS, } from '../constants/perpsConfig.js'; import { PERPS_ERROR_CODES } from '../perpsErrorCodes.js'; +import type { HyperLiquidNetwork } from '../types/config.js'; import { WebSocketConnectionState } from '../types/index.js'; import type { SubscribeCandlesParams, PerpsPlatformDependencies, } from '../types/index.js'; -import type { HyperLiquidNetwork } from '../types/config.js'; import type { CandleData } from '../types/perps-types.js'; import { coalescePerpsRestRequest } from '../utils/coalescePerpsRestRequest.js'; import { ensureError, isAbortError } from '../utils/errorUtils.js'; diff --git a/packages/perps-controller/src/services/HyperLiquidSubscriptionService.ts b/packages/perps-controller/src/services/HyperLiquidSubscriptionService.ts index f1895a31b3a..cb6dd75ff00 100644 --- a/packages/perps-controller/src/services/HyperLiquidSubscriptionService.ts +++ b/packages/perps-controller/src/services/HyperLiquidSubscriptionService.ts @@ -22,6 +22,12 @@ import { PERPS_CONSTANTS, ABSTRACTION_MODE_REFRESH_THROTTLE_MS, } from '../constants/perpsConfig.js'; +import type { + SpotClearinghouseStateResponse, + HyperLiquidAbstractionMode, + UserAbstractionResponse, +} from '../types/hyperliquid-types.js'; +import { hyperLiquidModeFoldsSpot } from '../types/hyperliquid-types.js'; import { WebSocketConnectionState } from '../types/index.js'; import type { PriceUpdate, @@ -41,12 +47,6 @@ import type { PerpsPlatformDependencies, PerpsLogger, } from '../types/index.js'; -import type { - SpotClearinghouseStateResponse, - HyperLiquidAbstractionMode, - UserAbstractionResponse, -} from '../types/hyperliquid-types.js'; -import { hyperLiquidModeFoldsSpot } from '../types/hyperliquid-types.js'; import { addSpotBalanceToAccountState, calculateWeightedReturnOnEquity, diff --git a/packages/perps-controller/src/types/index.ts b/packages/perps-controller/src/types/index.ts index 7e9bee75f06..75324414d64 100644 --- a/packages/perps-controller/src/types/index.ts +++ b/packages/perps-controller/src/types/index.ts @@ -6,8 +6,8 @@ import type { Hex, } from '@metamask/utils'; -import type { CandlePeriod, TimeDuration } from '../constants/chartConfig'; -import type { CandleData, OrderType } from './perps-types'; +import type { CandlePeriod, TimeDuration } from '../constants/chartConfig.js'; +import type { CandleData, OrderType } from './perps-types.js'; /** * Connection states for WebSocket management. @@ -1961,8 +1961,8 @@ export function isVersionGatedFeatureFlag( // These types live in separate files within types/ and need to be accessible // from the root barrel via `export * from './types'`. // ============================================================================ -export type * from './perps-types'; -export * from './transactionTypes'; +export type * from './perps-types.js'; +export * from './transactionTypes.js'; // hyperliquid-types: selective export to avoid OrderType clash with main types export type { AssetPosition, @@ -1980,4 +1980,4 @@ export type { MetaAndAssetCtxsResponse, PredictedFundingsResponse, SpotMetaResponse, -} from './hyperliquid-types'; +} from './hyperliquid-types.js'; diff --git a/packages/perps-controller/src/types/perps-types.ts b/packages/perps-controller/src/types/perps-types.ts index c393ae46796..126ad9c31c0 100644 --- a/packages/perps-controller/src/types/perps-types.ts +++ b/packages/perps-controller/src/types/perps-types.ts @@ -1,7 +1,7 @@ /** * Test result states for SDK validation */ -import { CandlePeriod } from '../constants/chartConfig'; +import { CandlePeriod } from '../constants/chartConfig.js'; // Order type enumeration export type OrderType = 'market' | 'limit'; @@ -71,10 +71,10 @@ export type { TradingDefaultsConfig, FeeRatesConfig, HyperLiquidNetwork, -} from './config'; +} from './config.js'; // Token types -export type { PerpsToken } from './token'; +export type { PerpsToken } from './token.js'; /** * Order form state for the Perps order view diff --git a/packages/perps-controller/src/utils/accountUtils.ts b/packages/perps-controller/src/utils/accountUtils.ts index 24839278a4a..9ca57314939 100644 --- a/packages/perps-controller/src/utils/accountUtils.ts +++ b/packages/perps-controller/src/utils/accountUtils.ts @@ -5,8 +5,8 @@ import type { InternalAccount } from '@metamask/keyring-internal-api'; import { PERPS_CONSTANTS } from '../constants/perpsConfig.js'; -import type { AccountState, PerpsInternalAccount } from '../types/index.js'; import type { SpotClearinghouseStateResponse } from '../types/hyperliquid-types.js'; +import type { AccountState, PerpsInternalAccount } from '../types/index.js'; const EVM_ACCOUNT_TYPES = new Set(['eip155:eoa', 'eip155:erc4337']); diff --git a/packages/perps-controller/src/utils/coalescePerpsRestRequest.ts b/packages/perps-controller/src/utils/coalescePerpsRestRequest.ts index 4632aa522fb..31d80c999d0 100644 --- a/packages/perps-controller/src/utils/coalescePerpsRestRequest.ts +++ b/packages/perps-controller/src/utils/coalescePerpsRestRequest.ts @@ -1,4 +1,4 @@ -import { PERFORMANCE_CONFIG } from '../constants/perpsConfig'; +import { PERFORMANCE_CONFIG } from '../constants/perpsConfig.js'; // Rapid perps market switching (candle bridge + activity tab burst) drives // duplicate REST calls against api.hyperliquid.xyz and occasionally trips 429. diff --git a/packages/perps-controller/src/utils/errorUtils.ts b/packages/perps-controller/src/utils/errorUtils.ts index c0c6e6b1439..c3e7c581d9f 100644 --- a/packages/perps-controller/src/utils/errorUtils.ts +++ b/packages/perps-controller/src/utils/errorUtils.ts @@ -4,7 +4,7 @@ */ import { hasProperty } from '@metamask/utils'; -import { PERPS_ERROR_CODES } from '../perpsErrorCodes'; +import { PERPS_ERROR_CODES } from '../perpsErrorCodes.js'; /** * Detects expected cancellation/abort errors that should not be reported to Sentry. diff --git a/packages/perps-controller/src/utils/hyperLiquidAbstraction.ts b/packages/perps-controller/src/utils/hyperLiquidAbstraction.ts index 7f45768b26a..606befac4d4 100644 --- a/packages/perps-controller/src/utils/hyperLiquidAbstraction.ts +++ b/packages/perps-controller/src/utils/hyperLiquidAbstraction.ts @@ -1,4 +1,4 @@ -import type { HyperLiquidAbstractionMode } from '../types/hyperliquid-types'; +import type { HyperLiquidAbstractionMode } from '../types/hyperliquid-types.js'; const MIGRATABLE_ABSTRACTION_MODES = new Set([ 'dexAbstraction', diff --git a/packages/perps-controller/src/utils/hyperLiquidAdapter.ts b/packages/perps-controller/src/utils/hyperLiquidAdapter.ts index 50d71309120..377903242f2 100644 --- a/packages/perps-controller/src/utils/hyperLiquidAdapter.ts +++ b/packages/perps-controller/src/utils/hyperLiquidAdapter.ts @@ -2,6 +2,13 @@ import { hasProperty, Hex, isHexString } from '@metamask/utils'; import { HIP3_ASSET_ID_CONFIG } from '../constants/hyperLiquidConfig.js'; import { DECIMAL_PRECISION_CONFIG } from '../constants/perpsConfig.js'; +import type { + AssetPosition, + FrontendOrder, + ClearinghouseStateResponse, + MetaResponse, + SDKOrderParams, +} from '../types/hyperliquid-types.js'; import type { AccountState, MarketInfo, @@ -11,13 +18,6 @@ import type { RawLedgerUpdate, UserHistoryItem, } from '../types/index.js'; -import type { - AssetPosition, - FrontendOrder, - ClearinghouseStateResponse, - MetaResponse, - SDKOrderParams, -} from '../types/hyperliquid-types.js'; import { countSignificantFigures, roundToSignificantFigures, diff --git a/packages/perps-controller/src/utils/hyperLiquidValidation.ts b/packages/perps-controller/src/utils/hyperLiquidValidation.ts index f3d6a10bbb9..dfd99f0658c 100644 --- a/packages/perps-controller/src/utils/hyperLiquidValidation.ts +++ b/packages/perps-controller/src/utils/hyperLiquidValidation.ts @@ -8,7 +8,10 @@ import { } from '../constants/hyperLiquidConfig.js'; import { HYPERLIQUID_ORDER_LIMITS } from '../constants/perpsConfig.js'; import { PERPS_ERROR_CODES } from '../perpsErrorCodes.js'; -import type { GetSupportedPathsParams, PerpsDebugLogger } from '../types/index.js'; +import type { + GetSupportedPathsParams, + PerpsDebugLogger, +} from '../types/index.js'; /** * Optional debug logger for validation functions. diff --git a/packages/perps-controller/src/utils/index.ts b/packages/perps-controller/src/utils/index.ts index 95e5e99cae3..079adb1abf9 100644 --- a/packages/perps-controller/src/utils/index.ts +++ b/packages/perps-controller/src/utils/index.ts @@ -4,8 +4,8 @@ * Note: hyperLiquidAdapter and orderCalculations both export calculatePositionSize. * We use selective exports to avoid the name collision. */ -export * from './accountUtils'; -export * from './errorUtils'; +export * from './accountUtils.js'; +export * from './errorUtils.js'; // hyperLiquidAdapter: selective export to avoid calculatePositionSize clash with orderCalculations export { adaptOrderToSDK, @@ -19,26 +19,26 @@ export { calculateHip3AssetId, parseAssetName, adaptHyperLiquidLedgerUpdateToUserHistoryItem, -} from './hyperLiquidAdapter'; -export * from './hyperLiquidOrderBookProcessor'; -export * from './hyperLiquidValidation'; -export * from './idUtils'; -export * from './marketDataTransform'; -export * from './marketSearch'; -export * from './marketUtils'; -export * from './orderCalculations'; -export * from './perpsDiskPersistence'; -export * from './rewardsUtils'; -export * from './significantFigures'; -export * from './sortMarkets'; -export * from './standaloneInfoClient'; -export * from './stringParseUtils'; -export * from './transferData'; -export * from './wait'; +} from './hyperLiquidAdapter.js'; +export * from './hyperLiquidOrderBookProcessor.js'; +export * from './hyperLiquidValidation.js'; +export * from './idUtils.js'; +export * from './marketDataTransform.js'; +export * from './marketSearch.js'; +export * from './marketUtils.js'; +export * from './orderCalculations.js'; +export * from './perpsDiskPersistence.js'; +export * from './rewardsUtils.js'; +export * from './significantFigures.js'; +export * from './sortMarkets.js'; +export * from './standaloneInfoClient.js'; +export * from './stringParseUtils.js'; +export * from './transferData.js'; +export * from './wait.js'; // Inline from former utils.ts (getEnvironment was previously at perps/utils.ts root) export const getEnvironment = (): 'DEV' | 'PROD' => { const env = globalThis.process?.env?.NODE_ENV ?? 'production'; return env === 'production' ? 'PROD' : 'DEV'; }; -export * from './perpsFormatters'; +export * from './perpsFormatters.js'; diff --git a/packages/perps-controller/src/utils/marketDataTransform.ts b/packages/perps-controller/src/utils/marketDataTransform.ts index 2d41fc0b870..47246da23f8 100644 --- a/packages/perps-controller/src/utils/marketDataTransform.ts +++ b/packages/perps-controller/src/utils/marketDataTransform.ts @@ -11,17 +11,17 @@ import { getHyperLiquidAssetName, } from '../constants/hyperLiquidConfig.js'; import { PERPS_CONSTANTS } from '../constants/perpsConfig.js'; -import type { - PerpsMarketData, - MarketType, - MarketDataFormatters, -} from '../types/index.js'; import type { AllMidsResponse, PerpsUniverse, PerpsAssetCtx, PredictedFunding, } from '../types/hyperliquid-types.js'; +import type { + PerpsMarketData, + MarketType, + MarketDataFormatters, +} from '../types/index.js'; import { parseAssetName } from './hyperLiquidAdapter.js'; /** diff --git a/packages/perps-controller/src/utils/orderCalculations.ts b/packages/perps-controller/src/utils/orderCalculations.ts index 64d242a4c22..360990cb33c 100644 --- a/packages/perps-controller/src/utils/orderCalculations.ts +++ b/packages/perps-controller/src/utils/orderCalculations.ts @@ -6,8 +6,8 @@ import { ORDER_SLIPPAGE_CONFIG, } from '../constants/perpsConfig.js'; import { PERPS_ERROR_CODES } from '../perpsErrorCodes.js'; -import type { PerpsDebugLogger } from '../types/index.js'; import type { SDKOrderParams } from '../types/hyperliquid-types.js'; +import type { PerpsDebugLogger } from '../types/index.js'; import { formatHyperLiquidPrice, formatHyperLiquidSize, diff --git a/packages/perps-controller/src/utils/perpsFormatters.ts b/packages/perps-controller/src/utils/perpsFormatters.ts index 0ed9b9f5db5..335214c9526 100644 --- a/packages/perps-controller/src/utils/perpsFormatters.ts +++ b/packages/perps-controller/src/utils/perpsFormatters.ts @@ -12,7 +12,7 @@ import { DECIMAL_PRECISION_CONFIG, FUNDING_RATE_CONFIG, PERPS_CONSTANTS, -} from '../constants/perpsConfig'; +} from '../constants/perpsConfig.js'; // Module-level Intl.NumberFormat cache (keyed by serialized options). const _fmtCache = new Map(); diff --git a/packages/perps-controller/src/utils/significantFigures.ts b/packages/perps-controller/src/utils/significantFigures.ts index b398397192e..4fe05c1f8f2 100644 --- a/packages/perps-controller/src/utils/significantFigures.ts +++ b/packages/perps-controller/src/utils/significantFigures.ts @@ -1,4 +1,4 @@ -import { DECIMAL_PRECISION_CONFIG } from '../constants/perpsConfig'; +import { DECIMAL_PRECISION_CONFIG } from '../constants/perpsConfig.js'; /** * Count significant figures in a price string. diff --git a/packages/perps-controller/src/utils/sortMarkets.ts b/packages/perps-controller/src/utils/sortMarkets.ts index 852ab4421ff..fd868689cfc 100644 --- a/packages/perps-controller/src/utils/sortMarkets.ts +++ b/packages/perps-controller/src/utils/sortMarkets.ts @@ -2,7 +2,11 @@ import { MARKET_SORTING_CONFIG, PERPS_CONSTANTS, } from '../constants/perpsConfig.js'; -import type { PerpsMarketData, SortDirection, SortField } from '../types/index.js'; +import type { + PerpsMarketData, + SortDirection, + SortField, +} from '../types/index.js'; export type SortMarketsParams = { markets: PerpsMarketData[]; diff --git a/packages/perps-controller/src/utils/standaloneInfoClient.ts b/packages/perps-controller/src/utils/standaloneInfoClient.ts index 10eb6575841..66ac7541518 100644 --- a/packages/perps-controller/src/utils/standaloneInfoClient.ts +++ b/packages/perps-controller/src/utils/standaloneInfoClient.ts @@ -1,10 +1,10 @@ import { HttpTransport, InfoClient } from '@nktkas/hyperliquid'; -import { PERPS_CONSTANTS } from '../constants/perpsConfig'; +import { PERPS_CONSTANTS } from '../constants/perpsConfig.js'; import type { ClearinghouseStateResponse, FrontendOpenOrdersResponse, -} from '../types/hyperliquid-types'; +} from '../types/hyperliquid-types.js'; export type StandaloneInfoClientOptions = { /** Whether to use testnet API endpoint */ diff --git a/packages/perps-controller/tests/defer-eligibility.test.ts b/packages/perps-controller/tests/defer-eligibility.test.ts index e41f035f160..87efcac73f0 100644 --- a/packages/perps-controller/tests/defer-eligibility.test.ts +++ b/packages/perps-controller/tests/defer-eligibility.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MockAnyNamespace, @@ -5,9 +6,9 @@ import type { MessengerEvents, } from '@metamask/messenger'; -import { PerpsController } from '../src/PerpsController'; -import type { PerpsControllerMessenger } from '../src/PerpsController'; -import type { PerpsPlatformDependencies } from '../src/types'; +import { PerpsController } from '../src/PerpsController.js'; +import type { PerpsControllerMessenger } from '../src/PerpsController.js'; +import type { PerpsPlatformDependencies } from '../src/types/index.js'; jest.mock('@nktkas/hyperliquid', () => ({})); jest.mock('@myx-trade/sdk', () => ({})); diff --git a/packages/perps-controller/tests/helpers/providerMocks.ts b/packages/perps-controller/tests/helpers/providerMocks.ts index db4509a63ca..264e2217158 100644 --- a/packages/perps-controller/tests/helpers/providerMocks.ts +++ b/packages/perps-controller/tests/helpers/providerMocks.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ /** * Shared provider mocks for Perps tests diff --git a/packages/perps-controller/tests/helpers/serviceMocks.ts b/packages/perps-controller/tests/helpers/serviceMocks.ts index d24aab94868..1cfaced45ba 100644 --- a/packages/perps-controller/tests/helpers/serviceMocks.ts +++ b/packages/perps-controller/tests/helpers/serviceMocks.ts @@ -1,9 +1,9 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ /** * Shared service mocks for Perps service tests * Provides reusable mock implementations for ServiceContext and related types */ - import { type ServiceContext, type PerpsControllerState, diff --git a/packages/perps-controller/tests/placeholder.test.ts b/packages/perps-controller/tests/placeholder.test.ts index 0a6ba41fd68..c497d3246ca 100644 --- a/packages/perps-controller/tests/placeholder.test.ts +++ b/packages/perps-controller/tests/placeholder.test.ts @@ -8,7 +8,7 @@ // Remove this file when tests are migrated from Mobile to Core. // Satisfies import-x/unambiguous (file must be an ES module). -import type { PerpsControllerState } from '../src'; +import type { PerpsControllerState } from '../src/index.js'; describe('PerpsController', () => { it('exports PerpsControllerState type', () => { diff --git a/packages/perps-controller/tests/src/PerpsController.configuration.test.ts b/packages/perps-controller/tests/src/PerpsController.configuration.test.ts index 944c5e8fd01..74702d6b412 100644 --- a/packages/perps-controller/tests/src/PerpsController.configuration.test.ts +++ b/packages/perps-controller/tests/src/PerpsController.configuration.test.ts @@ -1,11 +1,10 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ /** * PerpsController Tests * Clean, focused test suite for PerpsController */ - /* eslint-disable @typescript-eslint/no-explicit-any */ - import { GasFeeEstimateLevel, GasFeeEstimateType, diff --git a/packages/perps-controller/tests/src/PerpsController.lifecycle.test.ts b/packages/perps-controller/tests/src/PerpsController.lifecycle.test.ts index e88923a6aba..0d8da1bf5dd 100644 --- a/packages/perps-controller/tests/src/PerpsController.lifecycle.test.ts +++ b/packages/perps-controller/tests/src/PerpsController.lifecycle.test.ts @@ -1,11 +1,10 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ /** * PerpsController Tests * Clean, focused test suite for PerpsController */ - /* eslint-disable @typescript-eslint/no-explicit-any */ - import { GasFeeEstimateLevel, GasFeeEstimateType, diff --git a/packages/perps-controller/tests/src/PerpsController.market-filtering.test.ts b/packages/perps-controller/tests/src/PerpsController.market-filtering.test.ts index 3e4f84d9737..2351e37707b 100644 --- a/packages/perps-controller/tests/src/PerpsController.market-filtering.test.ts +++ b/packages/perps-controller/tests/src/PerpsController.market-filtering.test.ts @@ -1,9 +1,9 @@ +import { jest } from '@jest/globals'; /** * Tests for PerpsController market filtering, sorting, and pagination: * - getMarketCategories() * - getMarketDataWithPrices({ categories, sortBy, direction, limit }) */ - /* eslint-disable */ import { diff --git a/packages/perps-controller/tests/src/PerpsController.operations.test.ts b/packages/perps-controller/tests/src/PerpsController.operations.test.ts index 7697bdc850b..e8503187395 100644 --- a/packages/perps-controller/tests/src/PerpsController.operations.test.ts +++ b/packages/perps-controller/tests/src/PerpsController.operations.test.ts @@ -1,11 +1,10 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ /** * PerpsController Tests * Clean, focused test suite for PerpsController */ - /* eslint-disable @typescript-eslint/no-explicit-any */ - import { GasFeeEstimateLevel, GasFeeEstimateType, diff --git a/packages/perps-controller/tests/src/PerpsController.providers-cache.test.ts b/packages/perps-controller/tests/src/PerpsController.providers-cache.test.ts index 637bcfffb9f..0f59d723b21 100644 --- a/packages/perps-controller/tests/src/PerpsController.providers-cache.test.ts +++ b/packages/perps-controller/tests/src/PerpsController.providers-cache.test.ts @@ -1,11 +1,10 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ /** * PerpsController Tests * Clean, focused test suite for PerpsController */ - /* eslint-disable @typescript-eslint/no-explicit-any */ - import { GasFeeEstimateLevel, GasFeeEstimateType, diff --git a/packages/perps-controller/tests/src/PerpsController.state.test.ts b/packages/perps-controller/tests/src/PerpsController.state.test.ts index 690fcc5b806..f0ec2f7a6a7 100644 --- a/packages/perps-controller/tests/src/PerpsController.state.test.ts +++ b/packages/perps-controller/tests/src/PerpsController.state.test.ts @@ -1,9 +1,9 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ /** * PerpsController Tests * Clean, focused test suite for PerpsController */ - import { GasFeeEstimateLevel, GasFeeEstimateType, diff --git a/packages/perps-controller/tests/src/PerpsController.subscriptions.test.ts b/packages/perps-controller/tests/src/PerpsController.subscriptions.test.ts index 281d4d08814..2e83008cbbc 100644 --- a/packages/perps-controller/tests/src/PerpsController.subscriptions.test.ts +++ b/packages/perps-controller/tests/src/PerpsController.subscriptions.test.ts @@ -1,11 +1,10 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ /** * PerpsController Tests * Clean, focused test suite for PerpsController */ - /* eslint-disable @typescript-eslint/no-explicit-any */ - import { GasFeeEstimateLevel, GasFeeEstimateType, diff --git a/packages/perps-controller/tests/src/PerpsController.trading.test.ts b/packages/perps-controller/tests/src/PerpsController.trading.test.ts index 916f61dc6aa..e7b70207215 100644 --- a/packages/perps-controller/tests/src/PerpsController.trading.test.ts +++ b/packages/perps-controller/tests/src/PerpsController.trading.test.ts @@ -1,11 +1,10 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ /** * PerpsController Tests * Clean, focused test suite for PerpsController */ - /* eslint-disable @typescript-eslint/no-explicit-any */ - import { GasFeeEstimateLevel, GasFeeEstimateType, diff --git a/packages/perps-controller/tests/src/aggregation/SubscriptionMultiplexer.test.ts b/packages/perps-controller/tests/src/aggregation/SubscriptionMultiplexer.test.ts index 08ad4a2f6dc..c90016d6c7f 100644 --- a/packages/perps-controller/tests/src/aggregation/SubscriptionMultiplexer.test.ts +++ b/packages/perps-controller/tests/src/aggregation/SubscriptionMultiplexer.test.ts @@ -1,4 +1,6 @@ -import { SubscriptionMultiplexer } from '../../../src/aggregation/SubscriptionMultiplexer'; +import { jest } from '@jest/globals'; + +import { SubscriptionMultiplexer } from '../../../src/aggregation/SubscriptionMultiplexer.js'; /* eslint-disable */ import type { PerpsProvider, diff --git a/packages/perps-controller/tests/src/constants/eventNames.test.ts b/packages/perps-controller/tests/src/constants/eventNames.test.ts index dde1c1a9986..72bdc3130c9 100644 --- a/packages/perps-controller/tests/src/constants/eventNames.test.ts +++ b/packages/perps-controller/tests/src/constants/eventNames.test.ts @@ -1,8 +1,8 @@ import { PERPS_EVENT_PROPERTY, PERPS_EVENT_VALUE, -} from '../../../src/constants/eventNames'; -import { PerpsAnalyticsEvent } from '../../../src/types'; +} from '../../../src/constants/eventNames.js'; +import { PerpsAnalyticsEvent } from '../../../src/types/index.js'; describe('PERPS_EVENT_PROPERTY', () => { describe('advanced chart analytics property keys', () => { diff --git a/packages/perps-controller/tests/src/constants/hyperLiquidConfig.test.ts b/packages/perps-controller/tests/src/constants/hyperLiquidConfig.test.ts index 79fe690ad29..f6c3d22cc1c 100644 --- a/packages/perps-controller/tests/src/constants/hyperLiquidConfig.test.ts +++ b/packages/perps-controller/tests/src/constants/hyperLiquidConfig.test.ts @@ -1,6 +1,6 @@ -import { HIP3_ASSET_MARKET_TYPES } from '../../../src/constants/hyperLiquidConfig'; -import { MarketCategory, MARKET_CATEGORIES } from '../../../src/types'; -import type { MarketType, MarketTypeFilter } from '../../../src/types'; +import { HIP3_ASSET_MARKET_TYPES } from '../../../src/constants/hyperLiquidConfig.js'; +import { MarketCategory, MARKET_CATEGORIES } from '../../../src/types/index.js'; +import type { MarketType, MarketTypeFilter } from '../../../src/types/index.js'; describe('HIP3_ASSET_MARKET_TYPES', () => { it('classifies known US stocks correctly', () => { diff --git a/packages/perps-controller/tests/src/providers/AggregatedPerpsProvider.test.ts b/packages/perps-controller/tests/src/providers/AggregatedPerpsProvider.test.ts index e3ef2186446..4368ed446b7 100644 --- a/packages/perps-controller/tests/src/providers/AggregatedPerpsProvider.test.ts +++ b/packages/perps-controller/tests/src/providers/AggregatedPerpsProvider.test.ts @@ -1,13 +1,15 @@ -import { CandlePeriod } from '../../../src/constants/chartConfig'; -import { AggregatedPerpsProvider } from '../../../src/providers/AggregatedPerpsProvider'; +import { jest } from '@jest/globals'; + +import { CandlePeriod } from '../../../src/constants/chartConfig.js'; +import { AggregatedPerpsProvider } from '../../../src/providers/AggregatedPerpsProvider.js'; import type { PerpsProvider, PerpsProviderType, Position, MarketInfo, Order, -} from '../../../src/types'; -import { WebSocketConnectionState } from '../../../src/types'; +} from '../../../src/types/index.js'; +import { WebSocketConnectionState } from '../../../src/types/index.js'; /* eslint-disable */ import { createMockInfrastructure } from '../../helpers/serviceMocks'; diff --git a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.account-mode.test.ts b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.account-mode.test.ts index c80b526fb81..587afee2a0a 100644 --- a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.account-mode.test.ts +++ b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.account-mode.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ jest.mock('@nktkas/hyperliquid', () => ({})); diff --git a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.builder-fees.test.ts b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.builder-fees.test.ts index 381e3fdb8f3..6f56d875eb2 100644 --- a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.builder-fees.test.ts +++ b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.builder-fees.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ jest.mock('@nktkas/hyperliquid', () => ({})); diff --git a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.data.test.ts b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.data.test.ts index abc073ebecb..b809c721cba 100644 --- a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.data.test.ts +++ b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.data.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ jest.mock('@nktkas/hyperliquid', () => ({})); diff --git a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.error-handling.test.ts b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.error-handling.test.ts index 84d107e1375..5af571c97e8 100644 --- a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.error-handling.test.ts +++ b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.error-handling.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ jest.mock('@nktkas/hyperliquid', () => ({})); diff --git a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.history.test.ts b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.history.test.ts index 91d4fc1b764..47c5da52579 100644 --- a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.history.test.ts +++ b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.history.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ jest.mock('@nktkas/hyperliquid', () => ({})); diff --git a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.lifecycle.test.ts b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.lifecycle.test.ts index f50f682f9e0..905f867dcbe 100644 --- a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.lifecycle.test.ts +++ b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.lifecycle.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ jest.mock('@nktkas/hyperliquid', () => ({})); diff --git a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.misc.test.ts b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.misc.test.ts index 61b0711108b..71d544c4eb9 100644 --- a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.misc.test.ts +++ b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.misc.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ jest.mock('@nktkas/hyperliquid', () => ({})); diff --git a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.standalone.test.ts b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.standalone.test.ts index 2efcdcc879a..d23159e6e84 100644 --- a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.standalone.test.ts +++ b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.standalone.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ jest.mock('@nktkas/hyperliquid', () => ({})); diff --git a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.trading.test.ts b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.trading.test.ts index 5fd65f33b3d..0b40a344e00 100644 --- a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.trading.test.ts +++ b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.trading.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ jest.mock('@nktkas/hyperliquid', () => ({})); diff --git a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.validation.test.ts b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.validation.test.ts index b8dc4f2cf88..17dcf0c8f2e 100644 --- a/packages/perps-controller/tests/src/providers/HyperLiquidProvider.validation.test.ts +++ b/packages/perps-controller/tests/src/providers/HyperLiquidProvider.validation.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ jest.mock('@nktkas/hyperliquid', () => ({})); diff --git a/packages/perps-controller/tests/src/providers/MYXProvider.test.ts b/packages/perps-controller/tests/src/providers/MYXProvider.test.ts index 5156356323d..6c7afa6b531 100644 --- a/packages/perps-controller/tests/src/providers/MYXProvider.test.ts +++ b/packages/perps-controller/tests/src/providers/MYXProvider.test.ts @@ -1,3 +1,5 @@ +import { jest } from '@jest/globals'; + /* eslint-disable */ import { createMockInfrastructure, diff --git a/packages/perps-controller/tests/src/selectors.test.ts b/packages/perps-controller/tests/src/selectors.test.ts index 3463b40f5df..0710ed765db 100644 --- a/packages/perps-controller/tests/src/selectors.test.ts +++ b/packages/perps-controller/tests/src/selectors.test.ts @@ -1,3 +1,5 @@ +import { jest } from '@jest/globals'; + /* eslint-disable */ import { MARKET_SORTING_CONFIG } from '../../src/constants/perpsConfig'; import type { PerpsControllerState } from '../../src/PerpsController'; diff --git a/packages/perps-controller/tests/src/services/AccountService.test.ts b/packages/perps-controller/tests/src/services/AccountService.test.ts index 2f6bb9b7505..12e3248b7b5 100644 --- a/packages/perps-controller/tests/src/services/AccountService.test.ts +++ b/packages/perps-controller/tests/src/services/AccountService.test.ts @@ -1,13 +1,15 @@ -import type { PerpsControllerState } from '../../../src/PerpsController'; -import { AccountService } from '../../../src/services/AccountService'; -import type { ServiceContext } from '../../../src/services/ServiceContext'; -import { PerpsAnalyticsEvent } from '../../../src/types'; +import { jest } from '@jest/globals'; + +import type { PerpsControllerState } from '../../../src/PerpsController.js'; +import { AccountService } from '../../../src/services/AccountService.js'; +import type { ServiceContext } from '../../../src/services/ServiceContext.js'; +import { PerpsAnalyticsEvent } from '../../../src/types/index.js'; import type { PerpsProvider, WithdrawParams, WithdrawResult, PerpsPlatformDependencies, -} from '../../../src/types'; +} from '../../../src/types/index.js'; /* eslint-disable */ import { createMockHyperLiquidProvider } from '../../helpers/providerMocks'; import { diff --git a/packages/perps-controller/tests/src/services/DataLakeService.test.ts b/packages/perps-controller/tests/src/services/DataLakeService.test.ts index f51f0596a99..82f791c0a9e 100644 --- a/packages/perps-controller/tests/src/services/DataLakeService.test.ts +++ b/packages/perps-controller/tests/src/services/DataLakeService.test.ts @@ -1,6 +1,8 @@ -import { DataLakeService } from '../../../src/services/DataLakeService'; -import type { ServiceContext } from '../../../src/services/ServiceContext'; -import type { PerpsPlatformDependencies } from '../../../src/types'; +import { jest } from '@jest/globals'; + +import { DataLakeService } from '../../../src/services/DataLakeService.js'; +import type { ServiceContext } from '../../../src/services/ServiceContext.js'; +import type { PerpsPlatformDependencies } from '../../../src/types/index.js'; /* eslint-disable */ import { createMockServiceContext, diff --git a/packages/perps-controller/tests/src/services/DepositService.test.ts b/packages/perps-controller/tests/src/services/DepositService.test.ts index 4eddca74d46..254ffc23f5c 100644 --- a/packages/perps-controller/tests/src/services/DepositService.test.ts +++ b/packages/perps-controller/tests/src/services/DepositService.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ import { toHex } from '@metamask/controller-utils'; import { parseCaipAssetId } from '@metamask/utils'; diff --git a/packages/perps-controller/tests/src/services/EligibilityService.test.ts b/packages/perps-controller/tests/src/services/EligibilityService.test.ts index ab162e1b226..47cc3074320 100644 --- a/packages/perps-controller/tests/src/services/EligibilityService.test.ts +++ b/packages/perps-controller/tests/src/services/EligibilityService.test.ts @@ -1,6 +1,8 @@ -import { EligibilityService } from '../../../src/services/EligibilityService'; -import type { PerpsPlatformDependencies } from '../../../src/types'; -import { createMockInfrastructure } from '../../helpers/serviceMocks'; +import { jest } from '@jest/globals'; + +import { EligibilityService } from '../../../src/services/EligibilityService.js'; +import type { PerpsPlatformDependencies } from '../../../src/types/index.js'; +import { createMockInfrastructure } from '../../helpers/serviceMocks.js'; describe('EligibilityService', () => { let mockDeps: jest.Mocked; diff --git a/packages/perps-controller/tests/src/services/FeatureFlagConfigurationService.test.ts b/packages/perps-controller/tests/src/services/FeatureFlagConfigurationService.test.ts index f620e314252..8c4b13f9074 100644 --- a/packages/perps-controller/tests/src/services/FeatureFlagConfigurationService.test.ts +++ b/packages/perps-controller/tests/src/services/FeatureFlagConfigurationService.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ import type { RemoteFeatureFlagControllerState } from '@metamask/remote-feature-flag-controller'; diff --git a/packages/perps-controller/tests/src/services/HyperLiquidClientService.test.ts b/packages/perps-controller/tests/src/services/HyperLiquidClientService.test.ts index 81ae8775b69..f967a5d5aab 100644 --- a/packages/perps-controller/tests/src/services/HyperLiquidClientService.test.ts +++ b/packages/perps-controller/tests/src/services/HyperLiquidClientService.test.ts @@ -1,10 +1,9 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ - /* eslint-disable @typescript-eslint/no-require-imports */ /** * Unit tests for HyperLiquidClientService */ - /* eslint-disable @typescript-eslint/no-explicit-any */ import { CandlePeriod } from '../../../src/constants/chartConfig'; diff --git a/packages/perps-controller/tests/src/services/HyperLiquidSubscriptionService.cache.test.ts b/packages/perps-controller/tests/src/services/HyperLiquidSubscriptionService.cache.test.ts index 699b5fa7a0b..18c61309a71 100644 --- a/packages/perps-controller/tests/src/services/HyperLiquidSubscriptionService.cache.test.ts +++ b/packages/perps-controller/tests/src/services/HyperLiquidSubscriptionService.cache.test.ts @@ -1,10 +1,9 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ /** * Unit tests for HyperLiquidSubscriptionService */ - /* eslint-disable @typescript-eslint/no-explicit-any */ - import type { CaipAccountId, Hex } from '@metamask/utils'; import { ABSTRACTION_MODE_REFRESH_THROTTLE_MS } from '../../../src/constants/perpsConfig'; diff --git a/packages/perps-controller/tests/src/services/HyperLiquidSubscriptionService.lifecycle.test.ts b/packages/perps-controller/tests/src/services/HyperLiquidSubscriptionService.lifecycle.test.ts index 4b88a23515a..021b254083f 100644 --- a/packages/perps-controller/tests/src/services/HyperLiquidSubscriptionService.lifecycle.test.ts +++ b/packages/perps-controller/tests/src/services/HyperLiquidSubscriptionService.lifecycle.test.ts @@ -1,10 +1,9 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ /** * Unit tests for HyperLiquidSubscriptionService */ - /* eslint-disable @typescript-eslint/no-explicit-any */ - import type { CaipAccountId, Hex } from '@metamask/utils'; import { ABSTRACTION_MODE_REFRESH_THROTTLE_MS } from '../../../src/constants/perpsConfig'; diff --git a/packages/perps-controller/tests/src/services/HyperLiquidSubscriptionService.market-data.test.ts b/packages/perps-controller/tests/src/services/HyperLiquidSubscriptionService.market-data.test.ts index 384462e6092..c5759b45fef 100644 --- a/packages/perps-controller/tests/src/services/HyperLiquidSubscriptionService.market-data.test.ts +++ b/packages/perps-controller/tests/src/services/HyperLiquidSubscriptionService.market-data.test.ts @@ -1,10 +1,9 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ /** * Unit tests for HyperLiquidSubscriptionService */ - /* eslint-disable @typescript-eslint/no-explicit-any */ - import type { CaipAccountId, Hex } from '@metamask/utils'; import { ABSTRACTION_MODE_REFRESH_THROTTLE_MS } from '../../../src/constants/perpsConfig'; diff --git a/packages/perps-controller/tests/src/services/HyperLiquidSubscriptionService.streams.test.ts b/packages/perps-controller/tests/src/services/HyperLiquidSubscriptionService.streams.test.ts index 439114ff477..6f02581f40f 100644 --- a/packages/perps-controller/tests/src/services/HyperLiquidSubscriptionService.streams.test.ts +++ b/packages/perps-controller/tests/src/services/HyperLiquidSubscriptionService.streams.test.ts @@ -1,10 +1,9 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ /** * Unit tests for HyperLiquidSubscriptionService */ - /* eslint-disable @typescript-eslint/no-explicit-any */ - import type { CaipAccountId, Hex } from '@metamask/utils'; import { ABSTRACTION_MODE_REFRESH_THROTTLE_MS } from '../../../src/constants/perpsConfig'; diff --git a/packages/perps-controller/tests/src/services/HyperLiquidWalletService.test.ts b/packages/perps-controller/tests/src/services/HyperLiquidWalletService.test.ts index 88429202e91..194325b762a 100644 --- a/packages/perps-controller/tests/src/services/HyperLiquidWalletService.test.ts +++ b/packages/perps-controller/tests/src/services/HyperLiquidWalletService.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ /** * Unit tests for HyperLiquidWalletService diff --git a/packages/perps-controller/tests/src/services/MYXClientService.test.ts b/packages/perps-controller/tests/src/services/MYXClientService.test.ts index 9fe209c9561..5624304f9d5 100644 --- a/packages/perps-controller/tests/src/services/MYXClientService.test.ts +++ b/packages/perps-controller/tests/src/services/MYXClientService.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ import type { PerpsPlatformDependencies } from '@metamask/perps-controller'; diff --git a/packages/perps-controller/tests/src/services/MYXWalletService.test.ts b/packages/perps-controller/tests/src/services/MYXWalletService.test.ts index c223f874180..7441ee94831 100644 --- a/packages/perps-controller/tests/src/services/MYXWalletService.test.ts +++ b/packages/perps-controller/tests/src/services/MYXWalletService.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ /** * Unit tests for MYXWalletService diff --git a/packages/perps-controller/tests/src/services/MarketDataService.test.ts b/packages/perps-controller/tests/src/services/MarketDataService.test.ts index 77dfea8a5d4..2ebff2507a4 100644 --- a/packages/perps-controller/tests/src/services/MarketDataService.test.ts +++ b/packages/perps-controller/tests/src/services/MarketDataService.test.ts @@ -1,6 +1,8 @@ -import type { CandlePeriod } from '../../../src/constants/chartConfig'; -import { MarketDataService } from '../../../src/services/MarketDataService'; -import type { ServiceContext } from '../../../src/services/ServiceContext'; +import { jest } from '@jest/globals'; + +import type { CandlePeriod } from '../../../src/constants/chartConfig.js'; +import { MarketDataService } from '../../../src/services/MarketDataService.js'; +import type { ServiceContext } from '../../../src/services/ServiceContext.js'; import type { PerpsProvider, Position, @@ -16,9 +18,9 @@ import type { PerpsMarketData, PerpsTerminalMarketService, TerminalAssetMetadata, -} from '../../../src/types'; -import type { CandleData } from '../../../src/types/perps-types'; -import { resetPerpsRestCacheForTests } from '../../../src/utils/coalescePerpsRestRequest'; +} from '../../../src/types/index.js'; +import type { CandleData } from '../../../src/types/perps-types.js'; +import { resetPerpsRestCacheForTests } from '../../../src/utils/coalescePerpsRestRequest.js'; /* eslint-disable */ import { createMockHyperLiquidProvider, diff --git a/packages/perps-controller/tests/src/services/RewardsIntegrationService.test.ts b/packages/perps-controller/tests/src/services/RewardsIntegrationService.test.ts index f733177cb89..1fde0754c5e 100644 --- a/packages/perps-controller/tests/src/services/RewardsIntegrationService.test.ts +++ b/packages/perps-controller/tests/src/services/RewardsIntegrationService.test.ts @@ -1,5 +1,7 @@ -import { RewardsIntegrationService } from '../../../src/services/RewardsIntegrationService'; -import type { PerpsPlatformDependencies } from '../../../src/types'; +import { jest } from '@jest/globals'; + +import { RewardsIntegrationService } from '../../../src/services/RewardsIntegrationService.js'; +import type { PerpsPlatformDependencies } from '../../../src/types/index.js'; /* eslint-disable */ import { createMockEvmAccount, diff --git a/packages/perps-controller/tests/src/services/TerminalMarketService.test.ts b/packages/perps-controller/tests/src/services/TerminalMarketService.test.ts index d7b21620582..6760858a4e0 100644 --- a/packages/perps-controller/tests/src/services/TerminalMarketService.test.ts +++ b/packages/perps-controller/tests/src/services/TerminalMarketService.test.ts @@ -1,7 +1,9 @@ -import { TERMINAL_API_CONFIG } from '../../../src/constants/perpsConfig'; -import { TerminalMarketService } from '../../../src/services/TerminalMarketService'; -import type { PerpsPlatformDependencies } from '../../../src/types'; -import { createMockInfrastructure } from '../../helpers/serviceMocks'; +import { jest } from '@jest/globals'; + +import { TERMINAL_API_CONFIG } from '../../../src/constants/perpsConfig.js'; +import { TerminalMarketService } from '../../../src/services/TerminalMarketService.js'; +import type { PerpsPlatformDependencies } from '../../../src/types/index.js'; +import { createMockInfrastructure } from '../../helpers/serviceMocks.js'; describe('TerminalMarketService', () => { let mockDeps: jest.Mocked; diff --git a/packages/perps-controller/tests/src/services/TradingReadinessCache.test.ts b/packages/perps-controller/tests/src/services/TradingReadinessCache.test.ts index 75381486337..84691354c53 100644 --- a/packages/perps-controller/tests/src/services/TradingReadinessCache.test.ts +++ b/packages/perps-controller/tests/src/services/TradingReadinessCache.test.ts @@ -1,3 +1,5 @@ +import { jest } from '@jest/globals'; + /* eslint-disable */ import { TradingReadinessCache, diff --git a/packages/perps-controller/tests/src/services/TradingService.placeOrder.timeout.test.ts b/packages/perps-controller/tests/src/services/TradingService.placeOrder.timeout.test.ts index b25efeede4a..7209c0cc30c 100644 --- a/packages/perps-controller/tests/src/services/TradingService.placeOrder.timeout.test.ts +++ b/packages/perps-controller/tests/src/services/TradingService.placeOrder.timeout.test.ts @@ -1,3 +1,5 @@ +import { jest } from '@jest/globals'; + /* eslint-disable */ import { PERPS_CONSTANTS } from '../../../src/constants/perpsConfig'; import { TradingService } from '../../../src/services/TradingService'; diff --git a/packages/perps-controller/tests/src/services/TradingService.test.ts b/packages/perps-controller/tests/src/services/TradingService.test.ts index 6065ce58d72..f2fee62a739 100644 --- a/packages/perps-controller/tests/src/services/TradingService.test.ts +++ b/packages/perps-controller/tests/src/services/TradingService.test.ts @@ -1,7 +1,9 @@ -import { PERPS_EVENT_VALUE } from '../../../src/constants/eventNames'; -import type { ServiceContext } from '../../../src/services/ServiceContext'; -import { TradingService } from '../../../src/services/TradingService'; -import { PerpsAnalyticsEvent } from '../../../src/types'; +import { jest } from '@jest/globals'; + +import { PERPS_EVENT_VALUE } from '../../../src/constants/eventNames.js'; +import type { ServiceContext } from '../../../src/services/ServiceContext.js'; +import { TradingService } from '../../../src/services/TradingService.js'; +import { PerpsAnalyticsEvent } from '../../../src/types/index.js'; import type { PerpsProvider, OrderParams, @@ -15,7 +17,7 @@ import type { Order, UpdatePositionTPSLParams, PerpsPlatformDependencies, -} from '../../../src/types'; +} from '../../../src/types/index.js'; /* eslint-disable */ import { createMockHyperLiquidProvider } from '../../helpers/providerMocks'; import { diff --git a/packages/perps-controller/tests/src/types/hyperliquid-types.test.ts b/packages/perps-controller/tests/src/types/hyperliquid-types.test.ts index f506659f41e..f1c7762a70d 100644 --- a/packages/perps-controller/tests/src/types/hyperliquid-types.test.ts +++ b/packages/perps-controller/tests/src/types/hyperliquid-types.test.ts @@ -1,4 +1,4 @@ -import { hyperLiquidModeFoldsSpot } from '../../../src/types/hyperliquid-types'; +import { hyperLiquidModeFoldsSpot } from '../../../src/types/hyperliquid-types.js'; describe('hyperLiquidModeFoldsSpot', () => { it('folds for unifiedAccount', () => { diff --git a/packages/perps-controller/tests/src/utils/coalescePerpsRestRequest.test.ts b/packages/perps-controller/tests/src/utils/coalescePerpsRestRequest.test.ts index 63771180c39..c296238e0d0 100644 --- a/packages/perps-controller/tests/src/utils/coalescePerpsRestRequest.test.ts +++ b/packages/perps-controller/tests/src/utils/coalescePerpsRestRequest.test.ts @@ -1,7 +1,9 @@ +import { jest } from '@jest/globals'; + import { coalescePerpsRestRequest, resetPerpsRestCacheForTests, -} from '../../../src/utils/coalescePerpsRestRequest'; +} from '../../../src/utils/coalescePerpsRestRequest.js'; describe('coalescePerpsRestRequest', () => { beforeEach(() => { diff --git a/packages/perps-controller/tests/src/utils/errorUtils.test.ts b/packages/perps-controller/tests/src/utils/errorUtils.test.ts index b948e427685..cb52b7e57a2 100644 --- a/packages/perps-controller/tests/src/utils/errorUtils.test.ts +++ b/packages/perps-controller/tests/src/utils/errorUtils.test.ts @@ -2,7 +2,7 @@ import { isAbortError, ensureError, isKeyringLockedError, -} from '../../../src/utils/errorUtils'; +} from '../../../src/utils/errorUtils.js'; describe('errorUtils', () => { describe('isAbortError', () => { diff --git a/packages/perps-controller/tests/src/utils/hyperLiquidAbstraction.test.ts b/packages/perps-controller/tests/src/utils/hyperLiquidAbstraction.test.ts index 7694db7165c..7ed3364ed91 100644 --- a/packages/perps-controller/tests/src/utils/hyperLiquidAbstraction.test.ts +++ b/packages/perps-controller/tests/src/utils/hyperLiquidAbstraction.test.ts @@ -1,4 +1,4 @@ -import { shouldDeferUnifiedAccountSetup } from '../../../src/utils/hyperLiquidAbstraction'; +import { shouldDeferUnifiedAccountSetup } from '../../../src/utils/hyperLiquidAbstraction.js'; describe('shouldDeferUnifiedAccountSetup', () => { it.each(['dexAbstraction', 'default', 'disabled'] as const)( diff --git a/packages/perps-controller/tests/src/utils/hyperLiquidAdapter.test.ts b/packages/perps-controller/tests/src/utils/hyperLiquidAdapter.test.ts index ab9959ddb45..04ebe449fb5 100644 --- a/packages/perps-controller/tests/src/utils/hyperLiquidAdapter.test.ts +++ b/packages/perps-controller/tests/src/utils/hyperLiquidAdapter.test.ts @@ -1,5 +1,5 @@ -import type { FrontendOrder } from '../../../src/types/hyperliquid-types'; -import { adaptOrderFromSDK } from '../../../src/utils/hyperLiquidAdapter'; +import type { FrontendOrder } from '../../../src/types/hyperliquid-types.js'; +import { adaptOrderFromSDK } from '../../../src/utils/hyperLiquidAdapter.js'; /** * Builds a minimal valid `FrontendOrder` fixture, overridable per test. diff --git a/packages/perps-controller/tests/src/utils/hyperLiquidOrderBookProcessor.test.ts b/packages/perps-controller/tests/src/utils/hyperLiquidOrderBookProcessor.test.ts index 6aa9243a9b1..c17914d000d 100644 --- a/packages/perps-controller/tests/src/utils/hyperLiquidOrderBookProcessor.test.ts +++ b/packages/perps-controller/tests/src/utils/hyperLiquidOrderBookProcessor.test.ts @@ -1,8 +1,8 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ /** * Unit tests for HyperLiquid Order Book Processor */ - import type { BboWsEvent, L2BookResponse } from '@nktkas/hyperliquid'; import type { PriceUpdate } from '../../../src/types'; diff --git a/packages/perps-controller/tests/src/utils/marketDataTransform.test.ts b/packages/perps-controller/tests/src/utils/marketDataTransform.test.ts index a2f31c55e0a..4677f7916cc 100644 --- a/packages/perps-controller/tests/src/utils/marketDataTransform.test.ts +++ b/packages/perps-controller/tests/src/utils/marketDataTransform.test.ts @@ -2,17 +2,17 @@ import { HYPERLIQUID_ASSET_NAMES, HYPERLIQUID_CONFIG, getHyperLiquidAssetName, -} from '../../../src/constants/hyperLiquidConfig'; -import type { MarketDataFormatters } from '../../../src/types'; +} from '../../../src/constants/hyperLiquidConfig.js'; import type { AllMidsResponse, PerpsAssetCtx, PerpsUniverse, -} from '../../../src/types/hyperliquid-types'; +} from '../../../src/types/hyperliquid-types.js'; +import type { MarketDataFormatters } from '../../../src/types/index.js'; import { isMarketTradable, transformMarketData, -} from '../../../src/utils/marketDataTransform'; +} from '../../../src/utils/marketDataTransform.js'; // Mock formatters matching the MarketDataFormatters interface const mockFormatters: MarketDataFormatters = { diff --git a/packages/perps-controller/tests/src/utils/marketSearch.test.ts b/packages/perps-controller/tests/src/utils/marketSearch.test.ts index bddbd76d145..88487dac1f3 100644 --- a/packages/perps-controller/tests/src/utils/marketSearch.test.ts +++ b/packages/perps-controller/tests/src/utils/marketSearch.test.ts @@ -1,9 +1,9 @@ -import type { PerpsMarketData } from '../../../src/types'; +import type { PerpsMarketData } from '../../../src/types/index.js'; import { MarketMatchRank, getMarketMatchRank, rankMarketsByQuery, -} from '../../../src/utils/marketSearch'; +} from '../../../src/utils/marketSearch.js'; /** * Build a minimal market fixture. Only `symbol`, `name`, and optional diff --git a/packages/perps-controller/tests/src/utils/marketUtils.test.ts b/packages/perps-controller/tests/src/utils/marketUtils.test.ts index 070f07803f2..a881c05c4c0 100644 --- a/packages/perps-controller/tests/src/utils/marketUtils.test.ts +++ b/packages/perps-controller/tests/src/utils/marketUtils.test.ts @@ -1,9 +1,9 @@ -import type { PerpsMarketData } from '../../../src/types'; +import type { PerpsMarketData } from '../../../src/types/index.js'; import { getMarketTypeFilter, isHip3Market, matchesCategory, -} from '../../../src/utils/marketUtils'; +} from '../../../src/utils/marketUtils.js'; const market = (overrides: Partial): PerpsMarketData => ({ diff --git a/packages/perps-controller/tests/src/utils/myxAdapter.test.ts b/packages/perps-controller/tests/src/utils/myxAdapter.test.ts index bfef1a80cd1..4d31c4cde54 100644 --- a/packages/perps-controller/tests/src/utils/myxAdapter.test.ts +++ b/packages/perps-controller/tests/src/utils/myxAdapter.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ import BigNumber from 'bignumber.js'; diff --git a/packages/perps-controller/tests/src/utils/rewardsUtils.test.ts b/packages/perps-controller/tests/src/utils/rewardsUtils.test.ts index 88a5bcef568..db6760703af 100644 --- a/packages/perps-controller/tests/src/utils/rewardsUtils.test.ts +++ b/packages/perps-controller/tests/src/utils/rewardsUtils.test.ts @@ -1,4 +1,6 @@ -import type { PerpsLogger } from '../../../src/types'; +import { jest } from '@jest/globals'; + +import type { PerpsLogger } from '../../../src/types/index.js'; /* eslint-disable */ import { formatAccountToCaipAccountId, diff --git a/packages/perps-controller/tests/src/utils/significantFigures.test.ts b/packages/perps-controller/tests/src/utils/significantFigures.test.ts index 68256f14530..b9bac0cb973 100644 --- a/packages/perps-controller/tests/src/utils/significantFigures.test.ts +++ b/packages/perps-controller/tests/src/utils/significantFigures.test.ts @@ -2,7 +2,7 @@ import { countSignificantFigures, hasExceededSignificantFigures, roundToSignificantFigures, -} from '../../../src/utils/significantFigures'; +} from '../../../src/utils/significantFigures.js'; describe('significantFigures utilities', () => { describe('countSignificantFigures', () => { diff --git a/packages/perps-controller/tests/src/utils/sortMarkets.test.ts b/packages/perps-controller/tests/src/utils/sortMarkets.test.ts index cc100510307..9931607ddc4 100644 --- a/packages/perps-controller/tests/src/utils/sortMarkets.test.ts +++ b/packages/perps-controller/tests/src/utils/sortMarkets.test.ts @@ -1,6 +1,6 @@ -import { MARKET_SORTING_CONFIG } from '../../../src/constants/perpsConfig'; -import type { PerpsMarketData } from '../../../src/types'; -import { parseVolume, sortMarkets } from '../../../src/utils/sortMarkets'; +import { MARKET_SORTING_CONFIG } from '../../../src/constants/perpsConfig.js'; +import type { PerpsMarketData } from '../../../src/types/index.js'; +import { parseVolume, sortMarkets } from '../../../src/utils/sortMarkets.js'; const market = (overrides: Partial): PerpsMarketData => ({ diff --git a/packages/perps-controller/tests/src/utils/standaloneInfoClient.test.ts b/packages/perps-controller/tests/src/utils/standaloneInfoClient.test.ts index a07e84bc1c3..9f8db30fd53 100644 --- a/packages/perps-controller/tests/src/utils/standaloneInfoClient.test.ts +++ b/packages/perps-controller/tests/src/utils/standaloneInfoClient.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; /* eslint-disable */ import { HttpTransport, InfoClient } from '@nktkas/hyperliquid'; diff --git a/packages/perps-controller/tests/src/utils/transferData.test.ts b/packages/perps-controller/tests/src/utils/transferData.test.ts index 87d14ca2a3d..7a4bb2074f4 100644 --- a/packages/perps-controller/tests/src/utils/transferData.test.ts +++ b/packages/perps-controller/tests/src/utils/transferData.test.ts @@ -1,4 +1,4 @@ -import { generateERC20TransferData } from '../../../src/utils/transferData'; +import { generateERC20TransferData } from '../../../src/utils/transferData.js'; describe('generateERC20TransferData', () => { it('encodes ERC-20 transfer calldata', () => { From 9bce415ed65f0301965d6f08543f1cb0b2275ebe Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:51:17 +0200 Subject: [PATCH 085/115] ESLint fix and `jest` global import for profile-metrics-controller --- ...ofileMetricsController-method-action-types.ts | 2 +- .../src/ProfileMetricsController.test.ts | 11 ++++++----- .../src/ProfileMetricsController.ts | 15 +++++++-------- .../ProfileMetricsService-method-action-types.ts | 2 +- .../src/ProfileMetricsService.test.ts | 7 ++++--- .../src/ProfileMetricsService.ts | 2 +- ...roofOfOwnershipService-method-action-types.ts | 2 +- .../src/ProofOfOwnershipService.test.ts | 8 ++++---- .../src/ProofOfOwnershipService.ts | 6 +++--- packages/profile-metrics-controller/src/index.ts | 16 ++++++++-------- .../src/utils/canonicalize.test.ts | 2 +- 11 files changed, 37 insertions(+), 36 deletions(-) diff --git a/packages/profile-metrics-controller/src/ProfileMetricsController-method-action-types.ts b/packages/profile-metrics-controller/src/ProfileMetricsController-method-action-types.ts index 8a98132f744..2b9faeec11c 100644 --- a/packages/profile-metrics-controller/src/ProfileMetricsController-method-action-types.ts +++ b/packages/profile-metrics-controller/src/ProfileMetricsController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { ProfileMetricsController } from './ProfileMetricsController'; +import type { ProfileMetricsController } from './ProfileMetricsController.js'; /** * Skip the initial delay period by setting the end timestamp to the current time. diff --git a/packages/profile-metrics-controller/src/ProfileMetricsController.test.ts b/packages/profile-metrics-controller/src/ProfileMetricsController.test.ts index 155d4a3a5b3..87deec47cb4 100644 --- a/packages/profile-metrics-controller/src/ProfileMetricsController.test.ts +++ b/packages/profile-metrics-controller/src/ProfileMetricsController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import type { InternalAccount } from '@metamask/keyring-internal-api'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; @@ -10,16 +11,16 @@ import type { import { DEFAULT_INITIAL_DELAY_DURATION, ProfileMetricsController, -} from './ProfileMetricsController'; -import type { ProfileMetricsControllerMessenger } from './ProfileMetricsController'; +} from './ProfileMetricsController.js'; +import type { ProfileMetricsControllerMessenger } from './ProfileMetricsController.js'; import type { AccountOwnershipProof, AccountWithScopes, ProfileMetricsFetchNoncesRequest, ProfileMetricsSubmitMetricsRequest, -} from './ProfileMetricsService'; -import type { ProofOfOwnershipSignRequest } from './ProofOfOwnershipService'; -import { ProofUnsupportedNamespaceError } from './utils/canonicalize'; +} from './ProfileMetricsService.js'; +import type { ProofOfOwnershipSignRequest } from './ProofOfOwnershipService.js'; +import { ProofUnsupportedNamespaceError } from './utils/canonicalize.js'; /** * Creates a mock InternalAccount object for testing purposes. diff --git a/packages/profile-metrics-controller/src/ProfileMetricsController.ts b/packages/profile-metrics-controller/src/ProfileMetricsController.ts index d53580dcbce..854b4e904ae 100644 --- a/packages/profile-metrics-controller/src/ProfileMetricsController.ts +++ b/packages/profile-metrics-controller/src/ProfileMetricsController.ts @@ -19,17 +19,17 @@ import { TransactionControllerTransactionSubmittedEvent } from '@metamask/transa import { Duration, inMilliseconds, parseCaipChainId } from '@metamask/utils'; import { Mutex } from 'async-mutex'; -import type { ProfileMetricsControllerMethodActions } from './ProfileMetricsController-method-action-types'; +import type { ProfileMetricsControllerMethodActions } from './ProfileMetricsController-method-action-types.js'; +import type { ProfileMetricsServiceMethodActions } from './ProfileMetricsService-method-action-types.js'; import type { AccountOwnershipProof, AccountWithScopes, -} from './ProfileMetricsService'; -import type { ProfileMetricsServiceMethodActions } from './ProfileMetricsService-method-action-types'; -import type { ProofOfOwnershipServiceMethodActions } from './ProofOfOwnershipService-method-action-types'; +} from './ProfileMetricsService.js'; +import type { ProofOfOwnershipServiceMethodActions } from './ProofOfOwnershipService-method-action-types.js'; import { canonicalizeAddress, ProofUnsupportedNamespaceError, -} from './utils/canonicalize'; +} from './utils/canonicalize.js'; /** * The name of the {@link ProfileMetricsController}, used to namespace the @@ -259,6 +259,7 @@ export class ProfileMetricsController extends StaticIntervalPollingController()< // it must have opted in during onboarding, or during a previous session. this.skipInitialDelay(); } + // eslint-disable-next-line @typescript-eslint/no-floating-promises this.#enqueueAccountsIfNeeded().catch( this.messenger.captureException ?? console.error, ); @@ -543,9 +544,7 @@ export class ProfileMetricsController extends StaticIntervalPollingController()< await this.#mutex.runExclusive(async () => { this.update((state) => { const entropySourceId = getAccountEntropySourceId(account) ?? 'null'; - if (!state.syncQueue[entropySourceId]) { - state.syncQueue[entropySourceId] = []; - } + state.syncQueue[entropySourceId] ??= []; state.syncQueue[entropySourceId].push({ address: account.address, scopes: account.scopes, diff --git a/packages/profile-metrics-controller/src/ProfileMetricsService-method-action-types.ts b/packages/profile-metrics-controller/src/ProfileMetricsService-method-action-types.ts index 862d5afce90..e0dcf906916 100644 --- a/packages/profile-metrics-controller/src/ProfileMetricsService-method-action-types.ts +++ b/packages/profile-metrics-controller/src/ProfileMetricsService-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { ProfileMetricsService } from './ProfileMetricsService'; +import type { ProfileMetricsService } from './ProfileMetricsService.js'; /** * Fetch single-use nonces from the auth API, one per identifier. diff --git a/packages/profile-metrics-controller/src/ProfileMetricsService.test.ts b/packages/profile-metrics-controller/src/ProfileMetricsService.test.ts index ba6b30be880..0be74276ea1 100644 --- a/packages/profile-metrics-controller/src/ProfileMetricsService.test.ts +++ b/packages/profile-metrics-controller/src/ProfileMetricsService.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { HttpError } from '@metamask/controller-utils'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -8,12 +9,12 @@ import type { import { SDK } from '@metamask/profile-sync-controller'; import nock from 'nock'; -import { ProfileMetricsService } from '.'; +import { ProfileMetricsService } from './index.js'; import type { ProfileMetricsSubmitMetricsRequest, ProfileMetricsServiceMessenger, -} from '.'; -import { getAuthUrl } from './ProfileMetricsService'; +} from './index.js'; +import { getAuthUrl } from './ProfileMetricsService.js'; const defaultBaseEndpoint = getAuthUrl(SDK.Env.DEV); diff --git a/packages/profile-metrics-controller/src/ProfileMetricsService.ts b/packages/profile-metrics-controller/src/ProfileMetricsService.ts index 677a0a4f7d5..dd443167ff2 100644 --- a/packages/profile-metrics-controller/src/ProfileMetricsService.ts +++ b/packages/profile-metrics-controller/src/ProfileMetricsService.ts @@ -14,7 +14,7 @@ import { } from '@metamask/superstruct'; import type { IDisposable } from 'cockatiel'; -import type { ProfileMetricsServiceMethodActions } from './ProfileMetricsService-method-action-types'; +import type { ProfileMetricsServiceMethodActions } from './ProfileMetricsService-method-action-types.js'; /** * The shape of an entry in the `POST /api/v2/nonce/batch` response body. diff --git a/packages/profile-metrics-controller/src/ProofOfOwnershipService-method-action-types.ts b/packages/profile-metrics-controller/src/ProofOfOwnershipService-method-action-types.ts index 28436e645f2..650ecfe26e0 100644 --- a/packages/profile-metrics-controller/src/ProofOfOwnershipService-method-action-types.ts +++ b/packages/profile-metrics-controller/src/ProofOfOwnershipService-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { ProofOfOwnershipService } from './ProofOfOwnershipService'; +import type { ProofOfOwnershipService } from './ProofOfOwnershipService.js'; /** * Sign a proof of ownership for the given account and server-issued nonce. diff --git a/packages/profile-metrics-controller/src/ProofOfOwnershipService.test.ts b/packages/profile-metrics-controller/src/ProofOfOwnershipService.test.ts index 0238a59928d..a2ed340939b 100644 --- a/packages/profile-metrics-controller/src/ProofOfOwnershipService.test.ts +++ b/packages/profile-metrics-controller/src/ProofOfOwnershipService.test.ts @@ -6,10 +6,10 @@ import type { MessengerEvents, } from '@metamask/messenger'; -import { ProofOfOwnershipService } from '.'; -import type { ProofOfOwnershipServiceMessenger } from '.'; -import { SNAP_SIGN_PROOF_OF_OWNERSHIP_METHOD } from './ProofOfOwnershipService'; -import { ProofUnsupportedNamespaceError } from './utils/canonicalize'; +import { ProofOfOwnershipService } from './index.js'; +import type { ProofOfOwnershipServiceMessenger } from './index.js'; +import { SNAP_SIGN_PROOF_OF_OWNERSHIP_METHOD } from './ProofOfOwnershipService.js'; +import { ProofUnsupportedNamespaceError } from './utils/canonicalize.js'; /** * Creates a mock InternalAccount with the given scopes. EVM accounts are diff --git a/packages/profile-metrics-controller/src/ProofOfOwnershipService.ts b/packages/profile-metrics-controller/src/ProofOfOwnershipService.ts index 65212651b33..1dd1b7e910c 100644 --- a/packages/profile-metrics-controller/src/ProofOfOwnershipService.ts +++ b/packages/profile-metrics-controller/src/ProofOfOwnershipService.ts @@ -8,12 +8,12 @@ import { string, type as structType } from '@metamask/superstruct'; import { KnownCaipNamespace, parseCaipChainId } from '@metamask/utils'; import { v4 as uuid } from 'uuid'; -import type { AccountOwnershipProof } from './ProfileMetricsService'; -import type { ProofOfOwnershipServiceMethodActions } from './ProofOfOwnershipService-method-action-types'; +import type { AccountOwnershipProof } from './ProfileMetricsService.js'; +import type { ProofOfOwnershipServiceMethodActions } from './ProofOfOwnershipService-method-action-types.js'; import { canonicalizeAddress, ProofUnsupportedNamespaceError, -} from './utils/canonicalize'; +} from './utils/canonicalize.js'; // === GENERAL === diff --git a/packages/profile-metrics-controller/src/index.ts b/packages/profile-metrics-controller/src/index.ts index 81c38273fa1..da42db0b33d 100644 --- a/packages/profile-metrics-controller/src/index.ts +++ b/packages/profile-metrics-controller/src/index.ts @@ -5,33 +5,33 @@ export type { ProfileMetricsControllerMessenger, ProfileMetricsControllerState, ProfileMetricsControllerStateChangeEvent, -} from './ProfileMetricsController'; +} from './ProfileMetricsController.js'; export { ProfileMetricsController, getDefaultProfileMetricsControllerState, -} from './ProfileMetricsController'; +} from './ProfileMetricsController.js'; export type { ProfileMetricsServiceActions, ProfileMetricsServiceEvents, ProfileMetricsServiceMessenger, ProfileMetricsSubmitMetricsRequest, -} from './ProfileMetricsService'; +} from './ProfileMetricsService.js'; export { ProfileMetricsService, serviceName, serviceName as profileMetricsServiceName, -} from './ProfileMetricsService'; -export type { ProfileMetricsServiceMethodActions } from './ProfileMetricsService-method-action-types'; +} from './ProfileMetricsService.js'; +export type { ProfileMetricsServiceMethodActions } from './ProfileMetricsService-method-action-types.js'; export type { ProofOfOwnershipServiceActions, ProofOfOwnershipServiceEvents, ProofOfOwnershipServiceMessenger, -} from './ProofOfOwnershipService'; +} from './ProofOfOwnershipService.js'; export { ProofOfOwnershipService, serviceName as proofOfOwnershipServiceName, -} from './ProofOfOwnershipService'; +} from './ProofOfOwnershipService.js'; export type { ProfileMetricsControllerMethodActions, ProfileMetricsControllerSkipInitialDelayAction, -} from './ProfileMetricsController-method-action-types'; +} from './ProfileMetricsController-method-action-types.js'; diff --git a/packages/profile-metrics-controller/src/utils/canonicalize.test.ts b/packages/profile-metrics-controller/src/utils/canonicalize.test.ts index ed779fa4891..e6596d6a1f3 100644 --- a/packages/profile-metrics-controller/src/utils/canonicalize.test.ts +++ b/packages/profile-metrics-controller/src/utils/canonicalize.test.ts @@ -1,7 +1,7 @@ import { canonicalizeAddress, ProofUnsupportedNamespaceError, -} from './canonicalize'; +} from './canonicalize.js'; describe('canonicalizeAddress', () => { describe('eip155', () => { From 9a47694435360d0bab5dfe2526075ba278d5bcea Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:51:18 +0200 Subject: [PATCH 086/115] ESLint fix and `jest` global import for subscription-controller --- ...scriptionController-method-action-types.ts | 2 +- .../src/SubscriptionController.test.ts | 17 +++++++------- .../src/SubscriptionController.ts | 23 ++++++++++++------- .../src/SubscriptionService.test.ts | 14 ++++++----- .../src/SubscriptionService.ts | 10 ++++---- .../src/constants.test.ts | 4 ++-- .../subscription-controller/src/constants.ts | 2 +- .../src/errors.test.ts | 4 +++- .../subscription-controller/src/errors.ts | 2 +- packages/subscription-controller/src/index.ts | 18 +++++++-------- .../subscription-controller/src/logger.ts | 2 +- 11 files changed, 55 insertions(+), 43 deletions(-) diff --git a/packages/subscription-controller/src/SubscriptionController-method-action-types.ts b/packages/subscription-controller/src/SubscriptionController-method-action-types.ts index 1c8c6e2e309..d2ad7f4c3d9 100644 --- a/packages/subscription-controller/src/SubscriptionController-method-action-types.ts +++ b/packages/subscription-controller/src/SubscriptionController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { SubscriptionController } from './SubscriptionController'; +import type { SubscriptionController } from './SubscriptionController.js'; /** * Gets the pricing information from the subscription service. diff --git a/packages/subscription-controller/src/SubscriptionController.test.ts b/packages/subscription-controller/src/SubscriptionController.test.ts index cd24eca3513..fa1326960de 100644 --- a/packages/subscription-controller/src/SubscriptionController.test.ts +++ b/packages/subscription-controller/src/SubscriptionController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -11,23 +12,23 @@ import { } from '@metamask/transaction-controller'; import type { Hex } from '@metamask/utils'; -import { jestAdvanceTime } from '../../../tests/helpers'; -import { generateMockTxMeta } from '../tests/utils'; +import { jestAdvanceTime } from '../../../tests/helpers.js'; +import { generateMockTxMeta } from '../tests/utils.js'; import { controllerName, SubscriptionControllerErrorMessage, -} from './constants'; -import { SubscriptionServiceError } from './errors'; +} from './constants.js'; +import { SubscriptionServiceError } from './errors.js'; import { getDefaultSubscriptionControllerState, SubscriptionController, -} from './SubscriptionController'; +} from './SubscriptionController.js'; import type { AllowedEvents, SubscriptionControllerMessenger, SubscriptionControllerOptions, SubscriptionControllerState, -} from './SubscriptionController'; +} from './SubscriptionController.js'; import type { Subscription, PricingResponse, @@ -43,7 +44,7 @@ import type { ProductType, RecurringInterval, ISubscriptionService, -} from './types'; +} from './types.js'; import { CANCEL_TYPES, MODAL_TYPE, @@ -52,7 +53,7 @@ import { RECURRING_INTERVALS, SUBSCRIPTION_STATUSES, SubscriptionUserEvent, -} from './types'; +} from './types.js'; type AllActions = MessengerActions; diff --git a/packages/subscription-controller/src/SubscriptionController.ts b/packages/subscription-controller/src/SubscriptionController.ts index b645fc3d047..dc1470105ad 100644 --- a/packages/subscription-controller/src/SubscriptionController.ts +++ b/packages/subscription-controller/src/SubscriptionController.ts @@ -16,9 +16,13 @@ import { controllerName, DEFAULT_POLLING_INTERVAL, SubscriptionControllerErrorMessage, -} from './constants'; -import type { SubscriptionControllerMethodActions } from './SubscriptionController-method-action-types'; -import { PAYMENT_TYPES, PRODUCT_TYPES, SUBSCRIPTION_STATUSES } from './types'; +} from './constants.js'; +import type { SubscriptionControllerMethodActions } from './SubscriptionController-method-action-types.js'; +import { + PAYMENT_TYPES, + PRODUCT_TYPES, + SUBSCRIPTION_STATUSES, +} from './types.js'; import type { AssignCohortRequest, BillingPortalResponse, @@ -40,14 +44,14 @@ import type { StartCryptoSubscriptionResponse, StartSubscriptionResponse, CancelSubscriptionRequest, -} from './types'; +} from './types.js'; import type { ISubscriptionService, PricingResponse, ProductType, StartSubscriptionRequest, Subscription, -} from './types'; +} from './types.js'; export type SubscriptionControllerState = { customerId?: string; @@ -623,9 +627,12 @@ export class SubscriptionController extends StaticIntervalPollingController()< clearLastSelectedPaymentMethod(product: ProductType): void { this.update((state) => { if (state.lastSelectedPaymentMethod) { - const { [product]: _, ...rest } = state.lastSelectedPaymentMethod; - state.lastSelectedPaymentMethod = - rest as typeof state.lastSelectedPaymentMethod; + const { [product]: _removed, ...rest } = + state.lastSelectedPaymentMethod; + state.lastSelectedPaymentMethod = rest as Record< + ProductType, + CachedLastSelectedPaymentMethod + >; } }); } diff --git a/packages/subscription-controller/src/SubscriptionService.test.ts b/packages/subscription-controller/src/SubscriptionService.test.ts index a64902d8ee0..4578ac52661 100644 --- a/packages/subscription-controller/src/SubscriptionService.test.ts +++ b/packages/subscription-controller/src/SubscriptionService.test.ts @@ -1,16 +1,18 @@ +import { jest } from '@jest/globals'; + import { Env, getEnvUrls, SubscriptionControllerErrorMessage, SubscriptionServiceErrorMessage, -} from './constants'; -import * as constants from './constants'; -import { SubscriptionServiceError } from './errors'; +} from './constants.js'; +import * as constants from './constants.js'; +import { SubscriptionServiceError } from './errors.js'; import { SUBSCRIPTION_URL, SubscriptionService, SubscriptionServiceConfig, -} from './SubscriptionService'; +} from './SubscriptionService.js'; import type { StartSubscriptionRequest, StartCryptoSubscriptionRequest, @@ -19,7 +21,7 @@ import type { UpdatePaymentMethodCardRequest, UpdatePaymentMethodCryptoRequest, SubscriptionEligibility, -} from './types'; +} from './types.js'; import { CANCEL_TYPES, PAYMENT_TYPES, @@ -27,7 +29,7 @@ import { RECURRING_INTERVALS, SUBSCRIPTION_STATUSES, SubscriptionUserEvent, -} from './types'; +} from './types.js'; // Mock data const MOCK_SUBSCRIPTION: Subscription = { diff --git a/packages/subscription-controller/src/SubscriptionService.ts b/packages/subscription-controller/src/SubscriptionService.ts index 915fdb2cb57..37acb318146 100644 --- a/packages/subscription-controller/src/SubscriptionService.ts +++ b/packages/subscription-controller/src/SubscriptionService.ts @@ -2,14 +2,14 @@ import { getEnvUrls, SubscriptionControllerErrorMessage, SubscriptionServiceErrorMessage, -} from './constants'; -import type { Env } from './constants'; +} from './constants.js'; +import type { Env } from './constants.js'; import { createSentryError, getSubscriptionErrorFromResponse, SubscriptionServiceError, -} from './errors'; -import { createModuleLogger, projectLogger } from './logger'; +} from './errors.js'; +import { createModuleLogger, projectLogger } from './logger.js'; import type { AssignCohortRequest, AuthUtils, @@ -32,7 +32,7 @@ import type { LinkRewardsRequest, SubscriptionApiGeneralResponse, CancelSubscriptionRequest, -} from './types'; +} from './types.js'; export type SubscriptionServiceConfig = { env: Env; diff --git a/packages/subscription-controller/src/constants.test.ts b/packages/subscription-controller/src/constants.test.ts index a2277bc61a1..9afc5f2f779 100644 --- a/packages/subscription-controller/src/constants.test.ts +++ b/packages/subscription-controller/src/constants.test.ts @@ -1,5 +1,5 @@ -import type { Env } from './constants'; -import { getEnvUrls, controllerName } from './constants'; +import type { Env } from './constants.js'; +import { getEnvUrls, controllerName } from './constants.js'; describe('constants', () => { describe('getEnvUrls', () => { diff --git a/packages/subscription-controller/src/constants.ts b/packages/subscription-controller/src/constants.ts index c7fa0ecc456..eba4888352d 100644 --- a/packages/subscription-controller/src/constants.ts +++ b/packages/subscription-controller/src/constants.ts @@ -1,4 +1,4 @@ -import { SUBSCRIPTION_STATUSES } from './types'; +import { SUBSCRIPTION_STATUSES } from './types.js'; export const controllerName = 'SubscriptionController'; diff --git a/packages/subscription-controller/src/errors.test.ts b/packages/subscription-controller/src/errors.test.ts index 7b805568ae7..1ddbf04c035 100644 --- a/packages/subscription-controller/src/errors.test.ts +++ b/packages/subscription-controller/src/errors.test.ts @@ -1,9 +1,11 @@ +import { jest } from '@jest/globals'; + import { composeSubscriptionApiErrorMessage, createSentryError, getSubscriptionErrorFromResponse, SubscriptionServiceError, -} from './errors'; +} from './errors.js'; type MockResponseOptions = { status?: number; diff --git a/packages/subscription-controller/src/errors.ts b/packages/subscription-controller/src/errors.ts index cb2e29c0f1f..30c2e17d6dc 100644 --- a/packages/subscription-controller/src/errors.ts +++ b/packages/subscription-controller/src/errors.ts @@ -1,4 +1,4 @@ -import { SubscriptionApiError } from './types'; +import { SubscriptionApiError } from './types.js'; export class SubscriptionServiceError extends Error { /** diff --git a/packages/subscription-controller/src/index.ts b/packages/subscription-controller/src/index.ts index b1aa364de5a..d52e1c57fb6 100644 --- a/packages/subscription-controller/src/index.ts +++ b/packages/subscription-controller/src/index.ts @@ -8,7 +8,7 @@ export type { SubscriptionControllerStateChangeEvent, AllowedActions, AllowedEvents, -} from './SubscriptionController'; +} from './SubscriptionController.js'; export type { SubscriptionControllerGetPricingAction, SubscriptionControllerGetSubscriptionsAction, @@ -33,11 +33,11 @@ export type { SubscriptionControllerClearStateAction, SubscriptionControllerTriggerAccessTokenRefreshAction, SubscriptionControllerStopAllPollingAction, -} from './SubscriptionController-method-action-types'; +} from './SubscriptionController-method-action-types.js'; export { SubscriptionController, getDefaultSubscriptionControllerState, -} from './SubscriptionController'; +} from './SubscriptionController.js'; export type { SubscriptionApiError, Subscription, @@ -84,7 +84,7 @@ export type { AssignCohortRequest, GetSubscriptionsEligibilitiesRequest, ModalType, -} from './types'; +} from './types.js'; export { CANCEL_TYPES, CRYPTO_PAYMENT_METHOD_ERRORS, @@ -96,12 +96,12 @@ export { COHORT_NAMES, BALANCE_CATEGORIES, MODAL_TYPE, -} from './types'; -export { SubscriptionServiceError } from './errors'; +} from './types.js'; +export { SubscriptionServiceError } from './errors.js'; export { Env, SubscriptionControllerErrorMessage, SubscriptionServiceErrorMessage, -} from './constants'; -export type { SubscriptionServiceConfig } from './SubscriptionService'; -export { SubscriptionService } from './SubscriptionService'; +} from './constants.js'; +export type { SubscriptionServiceConfig } from './SubscriptionService.js'; +export { SubscriptionService } from './SubscriptionService.js'; diff --git a/packages/subscription-controller/src/logger.ts b/packages/subscription-controller/src/logger.ts index ca017b5ba54..abd139116dc 100644 --- a/packages/subscription-controller/src/logger.ts +++ b/packages/subscription-controller/src/logger.ts @@ -1,6 +1,6 @@ import { createProjectLogger, createModuleLogger } from '@metamask/utils'; -import { controllerName } from './constants'; +import { controllerName } from './constants.js'; export const projectLogger = createProjectLogger(controllerName); From a990202af7ef5579af8bb6acf9a5e14dab4ed146 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:51:54 +0200 Subject: [PATCH 087/115] ESLint fix and `jest` global import for ramps-controller --- .../RampsController-method-action-types.ts | 2 +- .../src/RampsController.test.ts | 43 +++++----- .../ramps-controller/src/RampsController.ts | 86 +++++++++---------- .../src/RampsService-method-action-types.ts | 2 +- .../ramps-controller/src/RampsService.test.ts | 13 +-- packages/ramps-controller/src/RampsService.ts | 2 +- .../ramps-controller/src/RequestCache.test.ts | 2 +- packages/ramps-controller/src/RequestCache.ts | 2 +- .../src/TransakService-method-action-types.ts | 2 +- .../src/TransakService.test.ts | 17 ++-- .../ramps-controller/src/TransakService.ts | 5 +- .../src/errorNormalization.test.ts | 2 +- .../ramps-controller/src/featureFlags.test.ts | 2 +- packages/ramps-controller/src/index.ts | 44 +++++----- .../src/providerAvailability.test.ts | 4 +- .../src/providerAvailability.ts | 2 +- .../src/quoteClassification.test.ts | 4 +- .../src/quoteClassification.ts | 2 +- .../ramps-controller/src/selectors.test.ts | 8 +- packages/ramps-controller/src/selectors.ts | 8 +- .../src/transakApiErrorUtils.test.ts | 6 +- .../src/transakApiErrorUtils.ts | 4 +- 22 files changed, 134 insertions(+), 128 deletions(-) diff --git a/packages/ramps-controller/src/RampsController-method-action-types.ts b/packages/ramps-controller/src/RampsController-method-action-types.ts index 4792d073e03..6b42331b61c 100644 --- a/packages/ramps-controller/src/RampsController-method-action-types.ts +++ b/packages/ramps-controller/src/RampsController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { RampsController } from './RampsController'; +import type { RampsController } from './RampsController.js'; /** * Executes a request with caching, deduplication, and at most one in-flight diff --git a/packages/ramps-controller/src/RampsController.test.ts b/packages/ramps-controller/src/RampsController.test.ts index 517ff9b7e7e..efba02f9075 100644 --- a/packages/ramps-controller/src/RampsController.test.ts +++ b/packages/ramps-controller/src/RampsController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { BrokenCircuitError } from '@metamask/controller-utils'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; @@ -10,19 +11,28 @@ import type { RemoteFeatureFlagControllerState } from '@metamask/remote-feature- import * as fs from 'fs'; import * as path from 'path'; -import { MONEY_HEADLESS_ALL_PROVIDERS_FLAG_KEY } from './featureFlags'; +import { MONEY_HEADLESS_ALL_PROVIDERS_FLAG_KEY } from './featureFlags.js'; import type { RampsControllerMessenger, RampsControllerState, ResourceState, UserRegion, -} from './RampsController'; +} from './RampsController.js'; import { RampsController, getDefaultRampsControllerState, RAMPS_CONTROLLER_REQUIRED_SERVICE_ACTIONS, -} from './RampsController'; -import { RAMPS_ERROR_CODES } from './rampsErrorCodes'; +} from './RampsController.js'; +import { RAMPS_ERROR_CODES } from './rampsErrorCodes.js'; +import type { + RampsServiceGetGeolocationAction, + RampsServiceGetCountriesAction, + RampsServiceGetTokensAction, + RampsServiceGetProvidersAction, + RampsServiceGetPaymentMethodsAction, + RampsServiceGetQuotesAction, + RampsServiceGetBuyWidgetUrlAction, +} from './RampsService-method-action-types.js'; import type { Country, TokensResponse, @@ -34,18 +44,9 @@ import type { Quote, RampsToken, RampsOrder, -} from './RampsService'; -import { RampsOrderStatus } from './RampsService'; -import type { - RampsServiceGetGeolocationAction, - RampsServiceGetCountriesAction, - RampsServiceGetTokensAction, - RampsServiceGetProvidersAction, - RampsServiceGetPaymentMethodsAction, - RampsServiceGetQuotesAction, - RampsServiceGetBuyWidgetUrlAction, -} from './RampsService-method-action-types'; -import { RequestStatus } from './RequestCache'; +} from './RampsService.js'; +import { RampsOrderStatus } from './RampsService.js'; +import { RequestStatus } from './RequestCache.js'; import type { TransakAccessToken, TransakUserDetails, @@ -61,7 +62,7 @@ import type { TransakOrder, TransakOrderPaymentMethod, PatchUserRequestBody, -} from './TransakService'; +} from './TransakService.js'; describe('RampsController', () => { const circuitBreakerOpenErrorMessage = @@ -70,7 +71,10 @@ describe('RampsController', () => { describe('RAMPS_CONTROLLER_REQUIRED_SERVICE_ACTIONS', () => { it('includes every RampsService action that RampsController calls', async () => { expect.hasAssertions(); - const controllerPath = path.join(__dirname, 'RampsController.ts'); + const controllerPath = path.join( + import.meta.dirname, + 'RampsController.ts', + ); const source = await fs.promises.readFile(controllerPath, 'utf-8'); const callPattern = /messenger\.call\s*\(\s*['"]((RampsService|TransakService):[^'"]+)['"]/gu; @@ -4630,8 +4634,7 @@ describe('RampsController', () => { it('does not fetch getPaymentMethods on provider selection (React Query owns fetching)', async () => { const providerWithoutField: Provider = { ...mockProvider }; - delete (providerWithoutField as Partial) - .supportedCryptoCurrencies; + delete providerWithoutField.supportedCryptoCurrencies; const getPaymentMethodsMock = jest.fn(async () => ({ payments: [] })); diff --git a/packages/ramps-controller/src/RampsController.ts b/packages/ramps-controller/src/RampsController.ts index 52a14fa12e8..b9cc0e31955 100644 --- a/packages/ramps-controller/src/RampsController.ts +++ b/packages/ramps-controller/src/RampsController.ts @@ -10,11 +10,22 @@ import type { RemoteFeatureFlagControllerGetStateAction } from '@metamask/remote import type { Json } from '@metamask/utils'; import type { Draft } from 'immer'; -import { isHeadlessAllProvidersEnabled } from './featureFlags'; -import { getProvidersServingAsset } from './providerAvailability'; -import type { RampsControllerMethodActions } from './RampsController-method-action-types'; -import type { RampsErrorCode } from './rampsErrorCodes'; -import { RAMPS_ERROR_CODES } from './rampsErrorCodes'; +import { isHeadlessAllProvidersEnabled } from './featureFlags.js'; +import { getProvidersServingAsset } from './providerAvailability.js'; +import type { RampsControllerMethodActions } from './RampsController-method-action-types.js'; +import type { RampsErrorCode } from './rampsErrorCodes.js'; +import { RAMPS_ERROR_CODES } from './rampsErrorCodes.js'; +import type { + RampsServiceGetGeolocationAction, + RampsServiceGetCountriesAction, + RampsServiceGetTokensAction, + RampsServiceGetProvidersAction, + RampsServiceGetPaymentMethodsAction, + RampsServiceGetQuotesAction, + RampsServiceGetBuyWidgetUrlAction, + RampsServiceGetOrderAction, + RampsServiceGetOrderFromCallbackAction, +} from './RampsService-method-action-types.js'; import type { BuyWidget, Country, @@ -30,26 +41,15 @@ import type { RampsToken, RampsServiceActions, RampsOrder, -} from './RampsService'; -import { RampsOrderStatus } from './RampsService'; -import type { - RampsServiceGetGeolocationAction, - RampsServiceGetCountriesAction, - RampsServiceGetTokensAction, - RampsServiceGetProvidersAction, - RampsServiceGetPaymentMethodsAction, - RampsServiceGetQuotesAction, - RampsServiceGetBuyWidgetUrlAction, - RampsServiceGetOrderAction, - RampsServiceGetOrderFromCallbackAction, -} from './RampsService-method-action-types'; +} from './RampsService.js'; +import { RampsOrderStatus } from './RampsService.js'; import type { RequestCache as RequestCacheType, RequestState, ExecuteRequestOptions, PendingRequest, ResourceType, -} from './RequestCache'; +} from './RequestCache.js'; import { DEFAULT_REQUEST_CACHE_TTL, DEFAULT_REQUEST_CACHE_MAX_SIZE, @@ -59,24 +59,7 @@ import { createSuccessState, createErrorState, RequestStatus, -} from './RequestCache'; -import type { - TransakAccessToken, - TransakUserDetails, - TransakBuyQuote, - TransakKycRequirement, - TransakAdditionalRequirementsResponse, - TransakDepositOrder, - TransakUserLimits, - TransakOttResponse, - TransakQuoteTranslation, - TransakTranslationRequest, - TransakIdProofStatus, - TransakOrderPaymentMethod, - PatchUserRequestBody, - TransakOrder, -} from './TransakService'; -import type { TransakServiceActions } from './TransakService'; +} from './RequestCache.js'; import type { TransakServiceSetApiKeyAction, TransakServiceSetAccessTokenAction, @@ -102,7 +85,24 @@ import type { TransakServiceCancelOrderAction, TransakServiceCancelAllActiveOrdersAction, TransakServiceGetActiveOrdersAction, -} from './TransakService-method-action-types'; +} from './TransakService-method-action-types.js'; +import type { + TransakAccessToken, + TransakUserDetails, + TransakBuyQuote, + TransakKycRequirement, + TransakAdditionalRequirementsResponse, + TransakDepositOrder, + TransakUserLimits, + TransakOttResponse, + TransakQuoteTranslation, + TransakTranslationRequest, + TransakIdProofStatus, + TransakOrderPaymentMethod, + PatchUserRequestBody, + TransakOrder, +} from './TransakService.js'; +import type { TransakServiceActions } from './TransakService.js'; // === GENERAL === @@ -2338,12 +2338,12 @@ export class RampsController extends BaseController< (existing) => getInternalOrderCode(existing) === internalOrderCode, ); if (idx === -1) { - state.orders.push(healedOrder as Draft); + state.orders.push(healedOrder); } else { state.orders[idx] = { ...state.orders[idx], ...healedOrder, - } as Draft; + }; } }); } @@ -2601,7 +2601,7 @@ export class RampsController extends BaseController< wallet, ); - const healedWalletAddress = order.walletAddress || wallet; + const healedWalletAddress = order.walletAddress ?? wallet; const internalOrderCode = getInternalOrderCode({ id: order.id, providerOrderId: orderCode, @@ -2618,12 +2618,12 @@ export class RampsController extends BaseController< getInternalOrderCode(existing) === internalOrderCode, ); if (idx === -1) { - state.orders.push(healedOrder as Draft); + state.orders.push(healedOrder); } else { state.orders[idx] = { ...state.orders[idx], ...healedOrder, - } as Draft; + }; } }); diff --git a/packages/ramps-controller/src/RampsService-method-action-types.ts b/packages/ramps-controller/src/RampsService-method-action-types.ts index f1ed33ab2e1..e4e3044b28a 100644 --- a/packages/ramps-controller/src/RampsService-method-action-types.ts +++ b/packages/ramps-controller/src/RampsService-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { RampsService } from './RampsService'; +import type { RampsService } from './RampsService.js'; /** * Makes a request to the API in order to retrieve the user's geolocation diff --git a/packages/ramps-controller/src/RampsService.test.ts b/packages/ramps-controller/src/RampsService.test.ts index ed4f5d10c99..eb1ac0d22b3 100644 --- a/packages/ramps-controller/src/RampsService.test.ts +++ b/packages/ramps-controller/src/RampsService.test.ts @@ -1,15 +1,16 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MockAnyNamespace, MessengerActions, MessengerEvents, } from '@metamask/messenger'; -import nock, { cleanAll } from 'nock'; +import nock from 'nock'; -import { flushPromises } from '../../../tests/helpers'; +import { flushPromises } from '../../../tests/helpers.js'; import packageJson from '../package.json'; -import type { RampsServiceMessenger } from './RampsService'; -import { RampsService, RampsEnvironment } from './RampsService'; +import type { RampsServiceMessenger } from './RampsService.js'; +import { RampsService, RampsEnvironment } from './RampsService.js'; const CONTROLLER_VERSION = packageJson.version; @@ -2597,7 +2598,7 @@ describe('RampsService', () => { }), ).rejects.toThrow('Wallet is locked'); expect(interceptor.isDone()).toBe(false); - cleanAll(); + nock.cleanAll(); }); }); @@ -2746,7 +2747,7 @@ describe('RampsService', () => { ), ).rejects.toThrow('Wallet is locked'); expect(interceptor.isDone()).toBe(false); - cleanAll(); + nock.cleanAll(); }); }); diff --git a/packages/ramps-controller/src/RampsService.ts b/packages/ramps-controller/src/RampsService.ts index 52af12bcfc3..819e95bcdc1 100644 --- a/packages/ramps-controller/src/RampsService.ts +++ b/packages/ramps-controller/src/RampsService.ts @@ -7,7 +7,7 @@ import type { Messenger } from '@metamask/messenger'; import type { AuthenticationController } from '@metamask/profile-sync-controller'; import packageJson from '../package.json'; -import type { RampsServiceMethodActions } from './RampsService-method-action-types'; +import type { RampsServiceMethodActions } from './RampsService-method-action-types.js'; /** * Represents phone number information for a country. diff --git a/packages/ramps-controller/src/RequestCache.test.ts b/packages/ramps-controller/src/RequestCache.test.ts index 3319d27220d..6887f0f7695 100644 --- a/packages/ramps-controller/src/RequestCache.test.ts +++ b/packages/ramps-controller/src/RequestCache.test.ts @@ -6,7 +6,7 @@ import { createSuccessState, createErrorState, DEFAULT_REQUEST_CACHE_TTL, -} from './RequestCache'; +} from './RequestCache.js'; describe('RequestCache', () => { describe('createCacheKey', () => { diff --git a/packages/ramps-controller/src/RequestCache.ts b/packages/ramps-controller/src/RequestCache.ts index 7cfc8e1e7e4..4a7a027a9f1 100644 --- a/packages/ramps-controller/src/RequestCache.ts +++ b/packages/ramps-controller/src/RequestCache.ts @@ -1,6 +1,6 @@ import type { Json } from '@metamask/utils'; -import type { RampsErrorCode } from './rampsErrorCodes'; +import type { RampsErrorCode } from './rampsErrorCodes.js'; /** * Types of resources that can have loading/error states. diff --git a/packages/ramps-controller/src/TransakService-method-action-types.ts b/packages/ramps-controller/src/TransakService-method-action-types.ts index 38864df659c..77e1c53698e 100644 --- a/packages/ramps-controller/src/TransakService-method-action-types.ts +++ b/packages/ramps-controller/src/TransakService-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { TransakService } from './TransakService'; +import type { TransakService } from './TransakService.js'; export type TransakServiceSetApiKeyAction = { type: `TransakService:setApiKey`; diff --git a/packages/ramps-controller/src/TransakService.test.ts b/packages/ramps-controller/src/TransakService.test.ts index 922641a37c1..6d0ed3d0618 100644 --- a/packages/ramps-controller/src/TransakService.test.ts +++ b/packages/ramps-controller/src/TransakService.test.ts @@ -1,22 +1,23 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MockAnyNamespace, MessengerActions, MessengerEvents, } from '@metamask/messenger'; -import nock, { cleanAll, isDone } from 'nock'; +import nock from 'nock'; -import { flushPromises } from '../../../tests/helpers'; +import { flushPromises } from '../../../tests/helpers.js'; import type { TransakServiceMessenger, TransakAccessToken, -} from './TransakService'; +} from './TransakService.js'; import { TransakService, TransakEnvironment, TransakOrderIdTransformer, TransakApiError, -} from './TransakService'; +} from './TransakService.js'; // === Test Constants === @@ -287,7 +288,7 @@ describe('TransakService', () => { afterEach(() => { jest.useRealTimers(); - cleanAll(); + nock.cleanAll(); }); describe('constructor', () => { @@ -318,7 +319,7 @@ describe('TransakService', () => { await jest.runAllTimersAsync(); await flushPromises(); await promise; - expect(isDone()).toBe(true); + expect(nock.isDone()).toBe(true); }); it('uses production URLs when environment is Production', async () => { @@ -336,7 +337,7 @@ describe('TransakService', () => { await jest.runAllTimersAsync(); await flushPromises(); await promise; - expect(isDone()).toBe(true); + expect(nock.isDone()).toBe(true); }); it('stores the initial API key when provided', () => { @@ -2157,7 +2158,7 @@ describe('TransakService', () => { await flushPromises(); expect(await promise).toStrictEqual([]); - expect(isDone()).toBe(true); + expect(nock.isDone()).toBe(true); }); it('collects individual cancel errors instead of throwing', async () => { diff --git a/packages/ramps-controller/src/TransakService.ts b/packages/ramps-controller/src/TransakService.ts index 515cfb55816..3330b6e5fcd 100644 --- a/packages/ramps-controller/src/TransakService.ts +++ b/packages/ramps-controller/src/TransakService.ts @@ -5,8 +5,8 @@ import type { import { createServicePolicy, HttpError } from '@metamask/controller-utils'; import type { Messenger } from '@metamask/messenger'; -import { TRANSAK_ERROR_CODES } from './transakErrorCodes'; -import type { TransakServiceMethodActions } from './TransakService-method-action-types'; +import { TRANSAK_ERROR_CODES } from './transakErrorCodes.js'; +import type { TransakServiceMethodActions } from './TransakService-method-action-types.js'; // === TYPES === @@ -592,6 +592,7 @@ export class TransakService { } catch { // ignore body read/parse failures } + // eslint-disable-next-line @typescript-eslint/only-throw-error throw new TransakApiError( fetchResponse.status, `Fetching '${url.toString()}' failed with status '${fetchResponse.status}'${errorBody ? `: ${errorBody}` : ''}`, diff --git a/packages/ramps-controller/src/errorNormalization.test.ts b/packages/ramps-controller/src/errorNormalization.test.ts index f07abd93e4b..a14590585e9 100644 --- a/packages/ramps-controller/src/errorNormalization.test.ts +++ b/packages/ramps-controller/src/errorNormalization.test.ts @@ -2,7 +2,7 @@ import { extractExplicitTypedError, getErrorMessage, normalizeToTypedError, -} from './errorNormalization'; +} from './errorNormalization.js'; type Code = 'NO_QUOTES' | 'QUOTE_FAILED' | 'UNKNOWN'; diff --git a/packages/ramps-controller/src/featureFlags.test.ts b/packages/ramps-controller/src/featureFlags.test.ts index 3485d2f59a0..920f454cd22 100644 --- a/packages/ramps-controller/src/featureFlags.test.ts +++ b/packages/ramps-controller/src/featureFlags.test.ts @@ -1,7 +1,7 @@ import { MONEY_HEADLESS_ALL_PROVIDERS_FLAG_KEY, isHeadlessAllProvidersEnabled, -} from './featureFlags'; +} from './featureFlags.js'; describe('MONEY_HEADLESS_ALL_PROVIDERS_FLAG_KEY', () => { it('matches the LaunchDarkly flag key', () => { diff --git a/packages/ramps-controller/src/index.ts b/packages/ramps-controller/src/index.ts index 3ebe6f39e43..1917725cee5 100644 --- a/packages/ramps-controller/src/index.ts +++ b/packages/ramps-controller/src/index.ts @@ -11,7 +11,7 @@ export type { ResourceState, TransakState, NativeProvidersState, -} from './RampsController'; +} from './RampsController.js'; export type { RampsControllerExecuteRequestAction, RampsControllerAbortRequestAction, @@ -60,13 +60,13 @@ export type { RampsControllerTransakCancelOrderAction, RampsControllerTransakCancelAllActiveOrdersAction, RampsControllerTransakGetActiveOrdersAction, -} from './RampsController-method-action-types'; +} from './RampsController-method-action-types.js'; export { RampsController, getDefaultRampsControllerState, getInternalOrderCode, RAMPS_CONTROLLER_REQUIRED_SERVICE_ACTIONS, -} from './RampsController'; +} from './RampsController.js'; export type { RampsServiceActions, RampsServiceEvents, @@ -102,14 +102,14 @@ export type { RampsOrderFiatCurrency, RampsOrderPaymentMethod, OrderPaymentDetail, -} from './RampsService'; +} from './RampsService.js'; export { RampsService, RampsEnvironment, RampsApiService, RampsOrderStatus, RAMPS_SDK_VERSION, -} from './RampsService'; +} from './RampsService.js'; export type { RampsServiceGetGeolocationAction, RampsServiceGetCountriesAction, @@ -118,15 +118,15 @@ export type { RampsServiceGetBuyWidgetUrlAction, RampsServiceGetOrderAction, RampsServiceGetOrderFromCallbackAction, -} from './RampsService-method-action-types'; +} from './RampsService-method-action-types.js'; export type { RequestCache, RequestState, ExecuteRequestOptions, PendingRequest, ResourceType, -} from './RequestCache'; -export type { RampsErrorCode } from './rampsErrorCodes'; +} from './RequestCache.js'; +export type { RampsErrorCode } from './rampsErrorCodes.js'; export { RequestStatus, DEFAULT_REQUEST_CACHE_TTL, @@ -136,32 +136,32 @@ export { createLoadingState, createSuccessState, createErrorState, -} from './RequestCache'; -export { RAMPS_ERROR_CODES } from './rampsErrorCodes'; -export type { RequestSelectorResult } from './selectors'; -export { createRequestSelector } from './selectors'; -export type { HeadlessFeatureFlagsLookup } from './featureFlags'; +} from './RequestCache.js'; +export { RAMPS_ERROR_CODES } from './rampsErrorCodes.js'; +export type { RequestSelectorResult } from './selectors.js'; +export { createRequestSelector } from './selectors.js'; +export type { HeadlessFeatureFlagsLookup } from './featureFlags.js'; export { MONEY_HEADLESS_ALL_PROVIDERS_FLAG_KEY, isHeadlessAllProvidersEnabled, -} from './featureFlags'; +} from './featureFlags.js'; export { providerServesAsset, getProvidersServingAsset, regionHasProviderForAsset, isFiatDepositAvailable, -} from './providerAvailability'; +} from './providerAvailability.js'; export { isExternalBrowserQuote, isCustomActionQuote, isInAppOnlyQuote, -} from './quoteClassification'; -export type { TypedError } from './errorNormalization'; +} from './quoteClassification.js'; +export type { TypedError } from './errorNormalization.js'; export { getErrorMessage, extractExplicitTypedError, normalizeToTypedError, -} from './errorNormalization'; +} from './errorNormalization.js'; export type { TransakServiceActions, TransakServiceEvents, @@ -187,17 +187,17 @@ export type { TransakUserLimits, TransakIdProofStatus, PatchUserRequestBody as TransakPatchUserRequestBody, -} from './TransakService'; +} from './TransakService.js'; export { TransakApiError, TransakService, TransakEnvironment, TransakOrderIdTransformer, -} from './TransakService'; +} from './TransakService.js'; export { getTransakApiMessage, isTransakPhoneRegisteredError, -} from './transakApiErrorUtils'; +} from './transakApiErrorUtils.js'; export type { TransakServiceMethodActions, TransakServiceSendUserOtpAction, @@ -209,4 +209,4 @@ export type { TransakServiceGetOrderAction, TransakServiceRequestOttAction, TransakServiceGeneratePaymentWidgetUrlAction, -} from './TransakService-method-action-types'; +} from './TransakService-method-action-types.js'; diff --git a/packages/ramps-controller/src/providerAvailability.test.ts b/packages/ramps-controller/src/providerAvailability.test.ts index 70612ecd11a..bcbd8434edb 100644 --- a/packages/ramps-controller/src/providerAvailability.test.ts +++ b/packages/ramps-controller/src/providerAvailability.test.ts @@ -3,8 +3,8 @@ import { isFiatDepositAvailable, providerServesAsset, regionHasProviderForAsset, -} from './providerAvailability'; -import type { Provider } from './RampsService'; +} from './providerAvailability.js'; +import type { Provider } from './RampsService.js'; const ASSET_ID = 'eip155:1/erc20:0xtoken'; diff --git a/packages/ramps-controller/src/providerAvailability.ts b/packages/ramps-controller/src/providerAvailability.ts index d1e6345279c..59d6e2b4492 100644 --- a/packages/ramps-controller/src/providerAvailability.ts +++ b/packages/ramps-controller/src/providerAvailability.ts @@ -1,4 +1,4 @@ -import type { Provider } from './RampsService'; +import type { Provider } from './RampsService.js'; /** * Whether a provider serves the given deposit asset. diff --git a/packages/ramps-controller/src/quoteClassification.test.ts b/packages/ramps-controller/src/quoteClassification.test.ts index b5908212522..de0d363dcc5 100644 --- a/packages/ramps-controller/src/quoteClassification.test.ts +++ b/packages/ramps-controller/src/quoteClassification.test.ts @@ -2,8 +2,8 @@ import { isCustomActionQuote, isExternalBrowserQuote, isInAppOnlyQuote, -} from './quoteClassification'; -import type { Quote } from './RampsService'; +} from './quoteClassification.js'; +import type { Quote } from './RampsService.js'; const buildQuote = ( overrides: { diff --git a/packages/ramps-controller/src/quoteClassification.ts b/packages/ramps-controller/src/quoteClassification.ts index dd0fbcf004b..5b1fe2c0565 100644 --- a/packages/ramps-controller/src/quoteClassification.ts +++ b/packages/ramps-controller/src/quoteClassification.ts @@ -1,4 +1,4 @@ -import type { Quote } from './RampsService'; +import type { Quote } from './RampsService.js'; /** * Whether a quote's checkout runs in an external / system browser rather than diff --git a/packages/ramps-controller/src/selectors.test.ts b/packages/ramps-controller/src/selectors.test.ts index 86a9883d7e6..5ce72e189c0 100644 --- a/packages/ramps-controller/src/selectors.test.ts +++ b/packages/ramps-controller/src/selectors.test.ts @@ -1,11 +1,11 @@ -import type { RampsControllerState } from './RampsController'; -import { RAMPS_ERROR_CODES } from './rampsErrorCodes'; +import type { RampsControllerState } from './RampsController.js'; +import { RAMPS_ERROR_CODES } from './rampsErrorCodes.js'; import { createLoadingState, createSuccessState, createErrorState, -} from './RequestCache'; -import { createRequestSelector } from './selectors'; +} from './RequestCache.js'; +import { createRequestSelector } from './selectors.js'; type TestRootState = { ramps: RampsControllerState; diff --git a/packages/ramps-controller/src/selectors.ts b/packages/ramps-controller/src/selectors.ts index fd8cc6a9fd6..1152ba5730d 100644 --- a/packages/ramps-controller/src/selectors.ts +++ b/packages/ramps-controller/src/selectors.ts @@ -1,7 +1,7 @@ -import type { RampsControllerState } from './RampsController'; -import type { RampsErrorCode } from './rampsErrorCodes'; -import type { RequestState } from './RequestCache'; -import { RequestStatus, createCacheKey } from './RequestCache'; +import type { RampsControllerState } from './RampsController.js'; +import type { RampsErrorCode } from './rampsErrorCodes.js'; +import type { RequestState } from './RequestCache.js'; +import { RequestStatus, createCacheKey } from './RequestCache.js'; /** * Result shape returned by request selectors. diff --git a/packages/ramps-controller/src/transakApiErrorUtils.test.ts b/packages/ramps-controller/src/transakApiErrorUtils.test.ts index 418b88ea0a8..9c20ab6aa9e 100644 --- a/packages/ramps-controller/src/transakApiErrorUtils.test.ts +++ b/packages/ramps-controller/src/transakApiErrorUtils.test.ts @@ -1,9 +1,9 @@ import { getTransakApiMessage, isTransakPhoneRegisteredError, -} from './transakApiErrorUtils'; -import { TRANSAK_ERROR_CODES } from './transakErrorCodes'; -import { TransakApiError } from './TransakService'; +} from './transakApiErrorUtils.js'; +import { TRANSAK_ERROR_CODES } from './transakErrorCodes.js'; +import { TransakApiError } from './TransakService.js'; describe('transakApiErrorUtils', () => { const phoneRegisteredError = new TransakApiError( diff --git a/packages/ramps-controller/src/transakApiErrorUtils.ts b/packages/ramps-controller/src/transakApiErrorUtils.ts index dad971fc1e2..eeb032281b9 100644 --- a/packages/ramps-controller/src/transakApiErrorUtils.ts +++ b/packages/ramps-controller/src/transakApiErrorUtils.ts @@ -1,5 +1,5 @@ -import { TRANSAK_ERROR_CODES } from './transakErrorCodes'; -import { TransakApiError } from './TransakService'; +import { TRANSAK_ERROR_CODES } from './transakErrorCodes.js'; +import { TransakApiError } from './TransakService.js'; export function getTransakApiMessage(error: unknown): string | undefined { return error instanceof TransakApiError ? error.apiMessage : undefined; From 30c47db8fbadf19db03568afadf9d61f50762de4 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:51:54 +0200 Subject: [PATCH 088/115] ESLint fix and `jest` global import for sample-controllers --- packages/sample-controllers/src/index.ts | 18 +++++++++--------- ...as-prices-controller-method-action-types.ts | 2 +- .../src/sample-gas-prices-controller.test.ts | 5 +++-- .../src/sample-gas-prices-controller.ts | 4 ++-- ...e-gas-prices-service-method-action-types.ts | 2 +- .../sample-gas-prices-service.test.ts | 4 ++-- .../sample-gas-prices-service.ts | 2 +- ...-petnames-controller-method-action-types.ts | 2 +- .../src/sample-petnames-controller.test.ts | 6 +++--- .../src/sample-petnames-controller.ts | 2 +- 10 files changed, 24 insertions(+), 23 deletions(-) diff --git a/packages/sample-controllers/src/index.ts b/packages/sample-controllers/src/index.ts index 81777561bcf..c0b57222b8c 100644 --- a/packages/sample-controllers/src/index.ts +++ b/packages/sample-controllers/src/index.ts @@ -5,9 +5,9 @@ export type { SampleGasPricesServiceGranularCacheUpdatedEvent, SampleGasPricesServiceEvents, SampleGasPricesServiceMessenger, -} from './sample-gas-prices-service/sample-gas-prices-service'; -export type { SampleGasPricesServiceFetchGasPricesAction } from './sample-gas-prices-service/sample-gas-prices-service-method-action-types'; -export { SampleGasPricesService } from './sample-gas-prices-service/sample-gas-prices-service'; +} from './sample-gas-prices-service/sample-gas-prices-service.js'; +export type { SampleGasPricesServiceFetchGasPricesAction } from './sample-gas-prices-service/sample-gas-prices-service-method-action-types.js'; +export { SampleGasPricesService } from './sample-gas-prices-service/sample-gas-prices-service.js'; export type { SampleGasPricesControllerActions, SampleGasPricesControllerEvents, @@ -15,12 +15,12 @@ export type { SampleGasPricesControllerMessenger, SampleGasPricesControllerState, SampleGasPricesControllerStateChangeEvent, -} from './sample-gas-prices-controller'; +} from './sample-gas-prices-controller.js'; export { SampleGasPricesController, getDefaultSampleGasPricesControllerState, -} from './sample-gas-prices-controller'; -export type { SampleGasPricesControllerUpdateGasPricesAction } from './sample-gas-prices-controller-method-action-types'; +} from './sample-gas-prices-controller.js'; +export type { SampleGasPricesControllerUpdateGasPricesAction } from './sample-gas-prices-controller-method-action-types.js'; export type { SamplePetnamesControllerActions, SamplePetnamesControllerEvents, @@ -28,9 +28,9 @@ export type { SamplePetnamesControllerMessenger, SamplePetnamesControllerState, SamplePetnamesControllerStateChangeEvent, -} from './sample-petnames-controller'; +} from './sample-petnames-controller.js'; export { SamplePetnamesController, getDefaultPetnamesControllerState, -} from './sample-petnames-controller'; -export type { SamplePetnamesControllerAssignPetnameAction } from './sample-petnames-controller-method-action-types'; +} from './sample-petnames-controller.js'; +export type { SamplePetnamesControllerAssignPetnameAction } from './sample-petnames-controller-method-action-types.js'; diff --git a/packages/sample-controllers/src/sample-gas-prices-controller-method-action-types.ts b/packages/sample-controllers/src/sample-gas-prices-controller-method-action-types.ts index fed4a95a7b7..bf47544440b 100644 --- a/packages/sample-controllers/src/sample-gas-prices-controller-method-action-types.ts +++ b/packages/sample-controllers/src/sample-gas-prices-controller-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { SampleGasPricesController } from './sample-gas-prices-controller'; +import type { SampleGasPricesController } from './sample-gas-prices-controller.js'; /** * Fetches the latest gas prices for the given chain and persists them to diff --git a/packages/sample-controllers/src/sample-gas-prices-controller.test.ts b/packages/sample-controllers/src/sample-gas-prices-controller.test.ts index 0d4eeff1a37..57b7298bd91 100644 --- a/packages/sample-controllers/src/sample-gas-prices-controller.test.ts +++ b/packages/sample-controllers/src/sample-gas-prices-controller.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -8,8 +9,8 @@ import type { import { SampleGasPricesController } from '@metamask/sample-controllers'; import type { SampleGasPricesControllerMessenger } from '@metamask/sample-controllers'; -import { flushPromises } from '../../../tests/helpers'; -import { buildMockGetNetworkClientById } from '../../network-controller/tests/helpers'; +import { flushPromises } from '../../../tests/helpers.js'; +import { buildMockGetNetworkClientById } from '../../network-controller/tests/helpers.js'; describe('SampleGasPricesController', () => { describe('constructor', () => { diff --git a/packages/sample-controllers/src/sample-gas-prices-controller.ts b/packages/sample-controllers/src/sample-gas-prices-controller.ts index c354c90da3f..267f77cfeaa 100644 --- a/packages/sample-controllers/src/sample-gas-prices-controller.ts +++ b/packages/sample-controllers/src/sample-gas-prices-controller.ts @@ -12,8 +12,8 @@ import type { } from '@metamask/network-controller'; import type { Hex } from '@metamask/utils'; -import type { SampleGasPricesControllerMethodActions } from './sample-gas-prices-controller-method-action-types'; -import type { SampleGasPricesServiceFetchGasPricesAction } from './sample-gas-prices-service/sample-gas-prices-service-method-action-types'; +import type { SampleGasPricesControllerMethodActions } from './sample-gas-prices-controller-method-action-types.js'; +import type { SampleGasPricesServiceFetchGasPricesAction } from './sample-gas-prices-service/sample-gas-prices-service-method-action-types.js'; // === GENERAL === diff --git a/packages/sample-controllers/src/sample-gas-prices-service/sample-gas-prices-service-method-action-types.ts b/packages/sample-controllers/src/sample-gas-prices-service/sample-gas-prices-service-method-action-types.ts index e96aaa704a1..f0959df0af8 100644 --- a/packages/sample-controllers/src/sample-gas-prices-service/sample-gas-prices-service-method-action-types.ts +++ b/packages/sample-controllers/src/sample-gas-prices-service/sample-gas-prices-service-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { SampleGasPricesService } from './sample-gas-prices-service'; +import type { SampleGasPricesService } from './sample-gas-prices-service.js'; /** * Makes a request to the API in order to retrieve gas prices for a particular diff --git a/packages/sample-controllers/src/sample-gas-prices-service/sample-gas-prices-service.test.ts b/packages/sample-controllers/src/sample-gas-prices-service/sample-gas-prices-service.test.ts index d360f5b36d4..54e394e8b77 100644 --- a/packages/sample-controllers/src/sample-gas-prices-service/sample-gas-prices-service.test.ts +++ b/packages/sample-controllers/src/sample-gas-prices-service/sample-gas-prices-service.test.ts @@ -7,8 +7,8 @@ import type { } from '@metamask/messenger'; import nock from 'nock'; -import type { SampleGasPricesServiceMessenger } from './sample-gas-prices-service'; -import { SampleGasPricesService } from './sample-gas-prices-service'; +import type { SampleGasPricesServiceMessenger } from './sample-gas-prices-service.js'; +import { SampleGasPricesService } from './sample-gas-prices-service.js'; describe('SampleGasPricesService', () => { describe('SampleGasPricesService:fetchGasPrices', () => { diff --git a/packages/sample-controllers/src/sample-gas-prices-service/sample-gas-prices-service.ts b/packages/sample-controllers/src/sample-gas-prices-service/sample-gas-prices-service.ts index 591f26e3625..9372f46d618 100644 --- a/packages/sample-controllers/src/sample-gas-prices-service/sample-gas-prices-service.ts +++ b/packages/sample-controllers/src/sample-gas-prices-service/sample-gas-prices-service.ts @@ -12,7 +12,7 @@ import { is, number, type } from '@metamask/superstruct'; import type { Hex } from '@metamask/utils'; import type { QueryClientConfig } from '@tanstack/query-core'; -import type { SampleGasPricesServiceMethodActions } from './sample-gas-prices-service-method-action-types'; +import type { SampleGasPricesServiceMethodActions } from './sample-gas-prices-service-method-action-types.js'; // === GENERAL === diff --git a/packages/sample-controllers/src/sample-petnames-controller-method-action-types.ts b/packages/sample-controllers/src/sample-petnames-controller-method-action-types.ts index 33da8c281d5..fbfccf4eb9b 100644 --- a/packages/sample-controllers/src/sample-petnames-controller-method-action-types.ts +++ b/packages/sample-controllers/src/sample-petnames-controller-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { SamplePetnamesController } from './sample-petnames-controller'; +import type { SamplePetnamesController } from './sample-petnames-controller.js'; /** * Registers the given name with the given address (relative to the given diff --git a/packages/sample-controllers/src/sample-petnames-controller.test.ts b/packages/sample-controllers/src/sample-petnames-controller.test.ts index ae641c1c35b..68a4217779c 100644 --- a/packages/sample-controllers/src/sample-petnames-controller.test.ts +++ b/packages/sample-controllers/src/sample-petnames-controller.test.ts @@ -6,9 +6,9 @@ import type { MessengerEvents, } from '@metamask/messenger'; -import { PROTOTYPE_POLLUTION_BLOCKLIST } from '../../controller-utils/src/util'; -import type { SamplePetnamesControllerMessenger } from './sample-petnames-controller'; -import { SamplePetnamesController } from './sample-petnames-controller'; +import { PROTOTYPE_POLLUTION_BLOCKLIST } from '../../controller-utils/src/util.js'; +import type { SamplePetnamesControllerMessenger } from './sample-petnames-controller.js'; +import { SamplePetnamesController } from './sample-petnames-controller.js'; describe('SamplePetnamesController', () => { describe('constructor', () => { diff --git a/packages/sample-controllers/src/sample-petnames-controller.ts b/packages/sample-controllers/src/sample-petnames-controller.ts index a8b18844537..84e6dfb5cf3 100644 --- a/packages/sample-controllers/src/sample-petnames-controller.ts +++ b/packages/sample-controllers/src/sample-petnames-controller.ts @@ -8,7 +8,7 @@ import { isSafeDynamicKey } from '@metamask/controller-utils'; import type { Messenger } from '@metamask/messenger'; import type { Hex } from '@metamask/utils'; -import type { SamplePetnamesControllerMethodActions } from './sample-petnames-controller-method-action-types'; +import type { SamplePetnamesControllerMethodActions } from './sample-petnames-controller-method-action-types.js'; // === GENERAL === From f2c3a8728371f80e52e027ea72b1d2cd74a16d95 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:51:57 +0200 Subject: [PATCH 089/115] ESLint fix and `jest` global import for seedless-onboarding-controller --- .../src/SecretMetadata.ts | 6 ++-- ...nboardingController-method-action-types.ts | 2 +- .../src/SeedlessOnboardingController.test.ts | 29 ++++++++++--------- .../src/SeedlessOnboardingController.ts | 18 ++++++------ .../src/assertions.test.ts | 6 ++-- .../src/assertions.ts | 4 +-- .../src/errors.test.ts | 4 +-- .../src/errors.ts | 4 +-- .../src/index.ts | 14 ++++----- .../src/logger.ts | 2 +- .../src/types.ts | 2 +- .../src/utils.test.ts | 6 ++-- .../src/utils.ts | 4 +-- .../tests/__fixtures__/mockMessenger.ts | 5 ++-- .../tests/__fixtures__/topfClient.ts | 2 +- .../tests/mocks/toprf.ts | 4 +-- .../tests/mocks/utils.ts | 2 +- 17 files changed, 58 insertions(+), 56 deletions(-) diff --git a/packages/seedless-onboarding-controller/src/SecretMetadata.ts b/packages/seedless-onboarding-controller/src/SecretMetadata.ts index 43c4897d22c..9b474097e1a 100644 --- a/packages/seedless-onboarding-controller/src/SecretMetadata.ts +++ b/packages/seedless-onboarding-controller/src/SecretMetadata.ts @@ -10,9 +10,9 @@ import { import { SeedlessOnboardingControllerErrorMessage, SecretType, -} from './constants'; -import type { SecretDataType } from './types'; -import { getSecretTypeFromDataType } from './utils'; +} from './constants.js'; +import type { SecretDataType } from './types.js'; +import { getSecretTypeFromDataType } from './utils.js'; type ISecretMetadata = { data: DataType; diff --git a/packages/seedless-onboarding-controller/src/SeedlessOnboardingController-method-action-types.ts b/packages/seedless-onboarding-controller/src/SeedlessOnboardingController-method-action-types.ts index 5e560ee7256..1281dd0c075 100644 --- a/packages/seedless-onboarding-controller/src/SeedlessOnboardingController-method-action-types.ts +++ b/packages/seedless-onboarding-controller/src/SeedlessOnboardingController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { SeedlessOnboardingController } from './SeedlessOnboardingController'; +import type { SeedlessOnboardingController } from './SeedlessOnboardingController.js'; export type SeedlessOnboardingControllerFetchMetadataAccessCredsAction = { type: `SeedlessOnboardingController:fetchMetadataAccessCreds`; diff --git a/packages/seedless-onboarding-controller/src/SeedlessOnboardingController.test.ts b/packages/seedless-onboarding-controller/src/SeedlessOnboardingController.test.ts index ff081033178..613a2d49013 100644 --- a/packages/seedless-onboarding-controller/src/SeedlessOnboardingController.test.ts +++ b/packages/seedless-onboarding-controller/src/SeedlessOnboardingController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { keccak256AndHexify } from '@metamask/auth-network-utils'; import { deriveStateFromMetadata } from '@metamask/base-controller'; import type { @@ -49,39 +50,39 @@ import type { webcrypto } from 'node:crypto'; import type { MockKeyringControllerMessenger, RootMessenger, -} from '../tests/__fixtures__/mockMessenger'; -import { mockSeedlessOnboardingMessenger } from '../tests/__fixtures__/mockMessenger'; +} from '../tests/__fixtures__/mockMessenger.js'; +import { mockSeedlessOnboardingMessenger } from '../tests/__fixtures__/mockMessenger.js'; import { handleMockSecretDataGet, handleMockSecretDataAdd, handleMockCommitment, handleMockAuthenticate, -} from '../tests/__fixtures__/topfClient'; +} from '../tests/__fixtures__/topfClient.js'; import { createMockSecretDataGetResponse, MULTIPLE_MOCK_SECRET_METADATA, -} from '../tests/mocks/toprf'; -import { MockToprfEncryptorDecryptor } from '../tests/mocks/toprfEncryptor'; -import { createMockJWTToken } from '../tests/mocks/utils'; -import MockVaultEncryptor from '../tests/mocks/vaultEncryptor'; +} from '../tests/mocks/toprf.js'; +import { MockToprfEncryptorDecryptor } from '../tests/mocks/toprfEncryptor.js'; +import { createMockJWTToken } from '../tests/mocks/utils.js'; +import MockVaultEncryptor from '../tests/mocks/vaultEncryptor.js'; import { Web3AuthNetwork, SeedlessOnboardingControllerErrorMessage, SeedlessOnboardingMigrationVersion, AuthConnection, SecretType, -} from './constants'; -import { PasswordSyncError, RecoveryError } from './errors'; -import { SecretMetadata } from './SecretMetadata'; +} from './constants.js'; +import { PasswordSyncError, RecoveryError } from './errors.js'; +import { SecretMetadata } from './SecretMetadata.js'; import { SeedlessOnboardingController, getInitialSeedlessOnboardingControllerStateWithDefaults, -} from './SeedlessOnboardingController'; +} from './SeedlessOnboardingController.js'; import type { SeedlessOnboardingControllerMessenger, SeedlessOnboardingControllerOptions, -} from './SeedlessOnboardingController'; -import type { SeedlessOnboardingControllerState } from './types'; +} from './SeedlessOnboardingController.js'; +import type { SeedlessOnboardingControllerState } from './types.js'; const authConnection = AuthConnection.Google; const socialLoginEmail = 'user-test@gmail.com'; @@ -239,7 +240,7 @@ async function withController( // In the withController function, before creating the controller: const originalFetchMetadataAccessCreds = - // eslint-disable-next-line jest/unbound-method -- testing mock + // eslint-disable-next-line jest/unbound-method SeedlessOnboardingController.prototype.fetchMetadataAccessCreds; jest diff --git a/packages/seedless-onboarding-controller/src/SeedlessOnboardingController.ts b/packages/seedless-onboarding-controller/src/SeedlessOnboardingController.ts index c778a1c613a..c0c351c187b 100644 --- a/packages/seedless-onboarding-controller/src/SeedlessOnboardingController.ts +++ b/packages/seedless-onboarding-controller/src/SeedlessOnboardingController.ts @@ -42,8 +42,8 @@ import { assertIsSeedlessOnboardingUserAuthenticated, assertIsValidPassword, assertIsValidVaultData, -} from './assertions'; -import type { AuthConnection } from './constants'; +} from './assertions.js'; +import type { AuthConnection } from './constants.js'; import { controllerName, PASSWORD_OUTDATED_CACHE_TTL_MS, @@ -51,15 +51,15 @@ import { SeedlessOnboardingControllerErrorMessage, SeedlessOnboardingMigrationVersion, Web3AuthNetwork, -} from './constants'; +} from './constants.js'; import { PasswordSyncError, RecoveryError, SeedlessOnboardingError, -} from './errors'; -import { projectLogger, createModuleLogger } from './logger'; -import { SecretMetadata } from './SecretMetadata'; -import type { SeedlessOnboardingControllerMethodActions } from './SeedlessOnboardingController-method-action-types'; +} from './errors.js'; +import { projectLogger, createModuleLogger } from './logger.js'; +import { SecretMetadata } from './SecretMetadata.js'; +import type { SeedlessOnboardingControllerMethodActions } from './SeedlessOnboardingController-method-action-types.js'; import type { MutuallyExclusiveCallback, SeedlessOnboardingControllerState, @@ -71,14 +71,14 @@ import type { VaultData, DeserializedVaultData, ToprfKeyDeriver, -} from './types'; +} from './types.js'; import { compareAndGetLatestToken, decodeJWTToken, decodeNodeAuthToken, deserializeVaultData, serializeVaultData, -} from './utils'; +} from './utils.js'; const log = createModuleLogger(projectLogger, controllerName); diff --git a/packages/seedless-onboarding-controller/src/assertions.test.ts b/packages/seedless-onboarding-controller/src/assertions.test.ts index 270f53adc2f..bec8735444a 100644 --- a/packages/seedless-onboarding-controller/src/assertions.test.ts +++ b/packages/seedless-onboarding-controller/src/assertions.test.ts @@ -2,9 +2,9 @@ import { assertIsPasswordOutdatedCacheValid, assertIsValidPassword, assertIsValidVaultData, -} from './assertions'; -import { SeedlessOnboardingControllerErrorMessage } from './constants'; -import { VaultData } from './types'; +} from './assertions.js'; +import { SeedlessOnboardingControllerErrorMessage } from './constants.js'; +import { VaultData } from './types.js'; describe('assertIsValidPassword', () => { it('should throw when password is not a string', () => { diff --git a/packages/seedless-onboarding-controller/src/assertions.ts b/packages/seedless-onboarding-controller/src/assertions.ts index c9929e1a2b4..cc7eddc4278 100644 --- a/packages/seedless-onboarding-controller/src/assertions.ts +++ b/packages/seedless-onboarding-controller/src/assertions.ts @@ -1,5 +1,5 @@ -import { SeedlessOnboardingControllerErrorMessage } from './constants'; -import type { AuthenticatedUserDetails, VaultData } from './types'; +import { SeedlessOnboardingControllerErrorMessage } from './constants.js'; +import type { AuthenticatedUserDetails, VaultData } from './types.js'; /** * Assert that the provided password is a valid non-empty string. diff --git a/packages/seedless-onboarding-controller/src/errors.test.ts b/packages/seedless-onboarding-controller/src/errors.test.ts index e090e16a648..9dc4c40e24e 100644 --- a/packages/seedless-onboarding-controller/src/errors.test.ts +++ b/packages/seedless-onboarding-controller/src/errors.test.ts @@ -1,10 +1,10 @@ import { TOPRFErrorCode } from '@metamask/toprf-secure-backup'; -import { SeedlessOnboardingControllerErrorMessage } from './constants'; +import { SeedlessOnboardingControllerErrorMessage } from './constants.js'; import { getErrorMessageFromTOPRFErrorCode, SeedlessOnboardingError, -} from './errors'; +} from './errors.js'; describe('getErrorMessageFromTOPRFErrorCode', () => { it('returns TooManyLoginAttempts for RateLimitExceeded', () => { diff --git a/packages/seedless-onboarding-controller/src/errors.ts b/packages/seedless-onboarding-controller/src/errors.ts index 005a614cdb6..be950deaf8d 100644 --- a/packages/seedless-onboarding-controller/src/errors.ts +++ b/packages/seedless-onboarding-controller/src/errors.ts @@ -1,8 +1,8 @@ import { TOPRFError, TOPRFErrorCode } from '@metamask/toprf-secure-backup'; import type { RateLimitErrorData } from '@metamask/toprf-secure-backup'; -import { SeedlessOnboardingControllerErrorMessage } from './constants'; -import type { RecoveryErrorData } from './types'; +import { SeedlessOnboardingControllerErrorMessage } from './constants.js'; +import type { RecoveryErrorData } from './types.js'; /** * Get the error message from the TOPRF error code. diff --git a/packages/seedless-onboarding-controller/src/index.ts b/packages/seedless-onboarding-controller/src/index.ts index 352ff7fe228..299e6b43cbb 100644 --- a/packages/seedless-onboarding-controller/src/index.ts +++ b/packages/seedless-onboarding-controller/src/index.ts @@ -1,7 +1,7 @@ export { SeedlessOnboardingController, getInitialSeedlessOnboardingControllerStateWithDefaults as getDefaultSeedlessOnboardingControllerState, -} from './SeedlessOnboardingController'; +} from './SeedlessOnboardingController.js'; export type { SeedlessOnboardingControllerOptions, SeedlessOnboardingControllerMessenger, @@ -9,7 +9,7 @@ export type { SeedlessOnboardingControllerStateChangeEvent, SeedlessOnboardingControllerActions, SeedlessOnboardingControllerEvents, -} from './SeedlessOnboardingController'; +} from './SeedlessOnboardingController.js'; export type { SeedlessOnboardingControllerFetchMetadataAccessCredsAction, SeedlessOnboardingControllerPreloadToprfNodeDetailsAction, @@ -38,22 +38,22 @@ export type { SeedlessOnboardingControllerCheckMetadataAccessTokenExpiredAction, SeedlessOnboardingControllerCheckAccessTokenExpiredAction, SeedlessOnboardingControllerRunMigrationsAction, -} from './SeedlessOnboardingController-method-action-types'; +} from './SeedlessOnboardingController-method-action-types.js'; export type { AuthenticatedUserDetails, SocialBackupsMetadata, SeedlessOnboardingControllerState, ToprfKeyDeriver, RecoveryErrorData, -} from './types'; +} from './types.js'; export { Web3AuthNetwork, SeedlessOnboardingControllerErrorMessage, SeedlessOnboardingMigrationVersion, AuthConnection, SecretType, -} from './constants'; -export { SecretMetadata } from './SecretMetadata'; -export { RecoveryError, SeedlessOnboardingError } from './errors'; +} from './constants.js'; +export { SecretMetadata } from './SecretMetadata.js'; +export { RecoveryError, SeedlessOnboardingError } from './errors.js'; export { EncAccountDataType } from '@metamask/toprf-secure-backup'; diff --git a/packages/seedless-onboarding-controller/src/logger.ts b/packages/seedless-onboarding-controller/src/logger.ts index ca017b5ba54..abd139116dc 100644 --- a/packages/seedless-onboarding-controller/src/logger.ts +++ b/packages/seedless-onboarding-controller/src/logger.ts @@ -1,6 +1,6 @@ import { createProjectLogger, createModuleLogger } from '@metamask/utils'; -import { controllerName } from './constants'; +import { controllerName } from './constants.js'; export const projectLogger = createProjectLogger(controllerName); diff --git a/packages/seedless-onboarding-controller/src/types.ts b/packages/seedless-onboarding-controller/src/types.ts index 39033b6feef..a09fb81b832 100644 --- a/packages/seedless-onboarding-controller/src/types.ts +++ b/packages/seedless-onboarding-controller/src/types.ts @@ -1,7 +1,7 @@ import type { KeyPair, NodeAuthTokens } from '@metamask/toprf-secure-backup'; import type { MutexInterface } from 'async-mutex'; -import type { AuthConnection, SecretType } from './constants'; +import type { AuthConnection, SecretType } from './constants.js'; /** * The backup state of the secret data. diff --git a/packages/seedless-onboarding-controller/src/utils.test.ts b/packages/seedless-onboarding-controller/src/utils.test.ts index ecd047a0b82..9a0ff066351 100644 --- a/packages/seedless-onboarding-controller/src/utils.test.ts +++ b/packages/seedless-onboarding-controller/src/utils.test.ts @@ -2,14 +2,14 @@ import { EncAccountDataType } from '@metamask/toprf-secure-backup'; import { bytesToBase64 } from '@metamask/utils'; import { utf8ToBytes } from '@noble/ciphers/utils'; -import { createMockJWTToken } from '../tests/mocks/utils'; -import type { DecodedNodeAuthToken } from './types'; +import { createMockJWTToken } from '../tests/mocks/utils.js'; +import type { DecodedNodeAuthToken } from './types.js'; import { decodeNodeAuthToken, decodeJWTToken, compareAndGetLatestToken, getSecretTypeFromDataType, -} from './utils'; +} from './utils.js'; describe('utils', () => { describe('decodeNodeAuthToken', () => { diff --git a/packages/seedless-onboarding-controller/src/utils.ts b/packages/seedless-onboarding-controller/src/utils.ts index 149e689cd5c..d7bd9ac0176 100644 --- a/packages/seedless-onboarding-controller/src/utils.ts +++ b/packages/seedless-onboarding-controller/src/utils.ts @@ -8,13 +8,13 @@ import { } from '@metamask/utils'; import { bytesToUtf8 } from '@noble/ciphers/utils'; -import { SecretType } from './constants'; +import { SecretType } from './constants.js'; import type { DecodedBaseJWTToken, DecodedNodeAuthToken, DeserializedVaultData, VaultData, -} from './types'; +} from './types.js'; /** * Decode the node auth token from base64 to json object. diff --git a/packages/seedless-onboarding-controller/tests/__fixtures__/mockMessenger.ts b/packages/seedless-onboarding-controller/tests/__fixtures__/mockMessenger.ts index 51a791e5d17..52e8b12aed7 100644 --- a/packages/seedless-onboarding-controller/tests/__fixtures__/mockMessenger.ts +++ b/packages/seedless-onboarding-controller/tests/__fixtures__/mockMessenger.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { KeyringControllerLockEvent, KeyringControllerUnlockEvent, @@ -9,8 +10,8 @@ import type { MessengerEvents, } from '@metamask/messenger'; -import { controllerName } from '../../src/constants'; -import type { SeedlessOnboardingControllerMessenger } from '../../src/SeedlessOnboardingController'; +import { controllerName } from '../../src/constants.js'; +import type { SeedlessOnboardingControllerMessenger } from '../../src/SeedlessOnboardingController.js'; export type AllSeedlessOnboardingControllerActions = MessengerActions; diff --git a/packages/seedless-onboarding-controller/tests/__fixtures__/topfClient.ts b/packages/seedless-onboarding-controller/tests/__fixtures__/topfClient.ts index 4062bc6dd2b..8e0b09c57ad 100644 --- a/packages/seedless-onboarding-controller/tests/__fixtures__/topfClient.ts +++ b/packages/seedless-onboarding-controller/tests/__fixtures__/topfClient.ts @@ -9,7 +9,7 @@ import { MOCK_TOPRF_AUTHENTICATION_RESPONSE, MOCK_TOPRF_COMMITMENT_RESPONSE, TOPRF_BASE_URL, -} from '../mocks/toprf'; +} from '../mocks/toprf.js'; type MockReply = { status: nock.StatusCode; diff --git a/packages/seedless-onboarding-controller/tests/mocks/toprf.ts b/packages/seedless-onboarding-controller/tests/mocks/toprf.ts index 5766cb6867c..60822e83d06 100644 --- a/packages/seedless-onboarding-controller/tests/mocks/toprf.ts +++ b/packages/seedless-onboarding-controller/tests/mocks/toprf.ts @@ -1,7 +1,7 @@ import { EncAccountDataType } from '@metamask/toprf-secure-backup'; -import { SecretType } from '../../src/constants'; -import { MockToprfEncryptorDecryptor } from './toprfEncryptor'; +import { SecretType } from '../../src/constants.js'; +import { MockToprfEncryptorDecryptor } from './toprfEncryptor.js'; export const TOPRF_BASE_URL = /https:\/\/node-[1-5]\.dev-node\.web3auth\.io/u; diff --git a/packages/seedless-onboarding-controller/tests/mocks/utils.ts b/packages/seedless-onboarding-controller/tests/mocks/utils.ts index b49f719f42c..b779c8413de 100644 --- a/packages/seedless-onboarding-controller/tests/mocks/utils.ts +++ b/packages/seedless-onboarding-controller/tests/mocks/utils.ts @@ -1,4 +1,4 @@ -import type { DecodedBaseJWTToken } from '../../src/types'; +import type { DecodedBaseJWTToken } from '../../src/types.js'; /** * Creates a mock JWT token for testing From 45ff0feb26295277406df650a445136f7ac56024 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:51:58 +0200 Subject: [PATCH 090/115] ESLint fix and `jest` global import for social-controllers --- .../SocialController-method-action-types.ts | 2 +- .../src/SocialController.test.ts | 9 +++++---- .../social-controllers/src/SocialController.ts | 8 ++++---- .../src/SocialService-method-action-types.ts | 2 +- .../src/SocialService.test.ts | 7 ++++--- .../social-controllers/src/SocialService.ts | 8 ++++---- packages/social-controllers/src/index.test.ts | 2 +- packages/social-controllers/src/index.ts | 18 +++++++++--------- 8 files changed, 29 insertions(+), 27 deletions(-) diff --git a/packages/social-controllers/src/SocialController-method-action-types.ts b/packages/social-controllers/src/SocialController-method-action-types.ts index 116df08618d..84bfe6b3419 100644 --- a/packages/social-controllers/src/SocialController-method-action-types.ts +++ b/packages/social-controllers/src/SocialController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { SocialController } from './SocialController'; +import type { SocialController } from './SocialController.js'; /** * Fetches the leaderboard and persists the entries to state. diff --git a/packages/social-controllers/src/SocialController.test.ts b/packages/social-controllers/src/SocialController.test.ts index 0d8dc33d58a..8b1f35646a3 100644 --- a/packages/social-controllers/src/SocialController.test.ts +++ b/packages/social-controllers/src/SocialController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MockAnyNamespace, @@ -5,13 +6,13 @@ import type { MessengerEvents, } from '@metamask/messenger'; -import { controllerName } from './social-constants'; -import type { SocialControllerState } from './social-types'; -import type { SocialControllerMessenger } from './SocialController'; +import { controllerName } from './social-constants.js'; +import type { SocialControllerState } from './social-types.js'; +import type { SocialControllerMessenger } from './SocialController.js'; import { SocialController, getDefaultSocialControllerState, -} from './SocialController'; +} from './SocialController.js'; const mockProfileSummary = { profileId: '550e8400-e29b-41d4-a716-446655440000', diff --git a/packages/social-controllers/src/SocialController.ts b/packages/social-controllers/src/SocialController.ts index 30624434022..053e137af20 100644 --- a/packages/social-controllers/src/SocialController.ts +++ b/packages/social-controllers/src/SocialController.ts @@ -6,7 +6,7 @@ import type { import { BaseController } from '@metamask/base-controller'; import type { Messenger } from '@metamask/messenger'; -import { controllerName } from './social-constants'; +import { controllerName } from './social-constants.js'; import type { FetchLeaderboardOptions, FollowOptions, @@ -16,8 +16,8 @@ import type { SocialControllerState, UnfollowOptions, UnfollowResponse, -} from './social-types'; -import type { SocialControllerMethodActions } from './SocialController-method-action-types'; +} from './social-types.js'; +import type { SocialControllerMethodActions } from './SocialController-method-action-types.js'; import type { SocialServiceFetchFollowingAction, SocialServiceFetchLeaderboardAction, @@ -25,7 +25,7 @@ import type { SocialServiceOptInToLeaderboardAction, SocialServiceOptOutOfLeaderboardAction, SocialServiceUnfollowAction, -} from './SocialService-method-action-types'; +} from './SocialService-method-action-types.js'; // === MESSENGER === diff --git a/packages/social-controllers/src/SocialService-method-action-types.ts b/packages/social-controllers/src/SocialService-method-action-types.ts index 5f6bcb217b8..a0170f96bae 100644 --- a/packages/social-controllers/src/SocialService-method-action-types.ts +++ b/packages/social-controllers/src/SocialService-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { SocialService } from './SocialService'; +import type { SocialService } from './SocialService.js'; /** * Fetches the leaderboard of top traders. diff --git a/packages/social-controllers/src/SocialService.test.ts b/packages/social-controllers/src/SocialService.test.ts index 35aaee3dd4d..1eb74dbcb9a 100644 --- a/packages/social-controllers/src/SocialService.test.ts +++ b/packages/social-controllers/src/SocialService.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MockAnyNamespace, @@ -5,9 +6,9 @@ import type { MessengerEvents, } from '@metamask/messenger'; -import { SocialServiceErrorMessage, serviceName } from './social-constants'; -import type { SocialServiceMessenger } from './SocialService'; -import { SocialService } from './SocialService'; +import { SocialServiceErrorMessage, serviceName } from './social-constants.js'; +import type { SocialServiceMessenger } from './SocialService.js'; +import { SocialService } from './SocialService.js'; const BASE_URL = 'http://test.com'; const V1_URL = `${BASE_URL}/api/v1`; diff --git a/packages/social-controllers/src/SocialService.ts b/packages/social-controllers/src/SocialService.ts index 7fbd5c26a6e..abaf5f16b67 100644 --- a/packages/social-controllers/src/SocialService.ts +++ b/packages/social-controllers/src/SocialService.ts @@ -22,7 +22,7 @@ import { type as structType, } from '@metamask/superstruct'; -import { serviceName, SocialServiceErrorMessage } from './social-constants'; +import { serviceName, SocialServiceErrorMessage } from './social-constants.js'; import type { FeedResponse, FetchFeedOptions, @@ -41,9 +41,9 @@ import type { TraderProfileResponse, UnfollowOptions, UnfollowResponse, -} from './social-types'; -import { TradeStruct } from './social-types'; -import type { SocialServiceMethodActions } from './SocialService-method-action-types'; +} from './social-types.js'; +import { TradeStruct } from './social-types.js'; +import type { SocialServiceMethodActions } from './SocialService-method-action-types.js'; // --------------------------------------------------------------------------- // Superstruct validation schemas diff --git a/packages/social-controllers/src/index.test.ts b/packages/social-controllers/src/index.test.ts index 049d56294a7..21e4fc8b486 100644 --- a/packages/social-controllers/src/index.test.ts +++ b/packages/social-controllers/src/index.test.ts @@ -1,4 +1,4 @@ -import { SocialController, SocialService, socialServiceName } from '.'; +import { SocialController, SocialService, socialServiceName } from './index.js'; describe('social-controllers exports', () => { it('exports SocialController class', () => { diff --git a/packages/social-controllers/src/index.ts b/packages/social-controllers/src/index.ts index 99c031d3805..ce8cda85776 100644 --- a/packages/social-controllers/src/index.ts +++ b/packages/social-controllers/src/index.ts @@ -5,11 +5,11 @@ export type { SocialControllerMessenger, SocialControllerOptions, SocialControllerStateChangeEvent, -} from './SocialController'; +} from './SocialController.js'; export { SocialController, getDefaultSocialControllerState, -} from './SocialController'; +} from './SocialController.js'; export type { SocialControllerFollowTraderAction, @@ -18,14 +18,14 @@ export type { SocialControllerUnfollowTraderAction, SocialControllerUpdateFollowingAction, SocialControllerUpdateLeaderboardAction, -} from './SocialController-method-action-types'; +} from './SocialController-method-action-types.js'; export type { SocialServiceActions, SocialServiceEvents, SocialServiceMessenger, -} from './SocialService'; -export { SocialService } from './SocialService'; +} from './SocialService.js'; +export { SocialService } from './SocialService.js'; export type { SocialServiceFetchClosedPositionsAction, @@ -40,9 +40,9 @@ export type { SocialServiceOptInToLeaderboardAction, SocialServiceOptOutOfLeaderboardAction, SocialServiceUnfollowAction, -} from './SocialService-method-action-types'; +} from './SocialService-method-action-types.js'; -export { TradeStruct } from './social-types'; +export { TradeStruct } from './social-types.js'; export type { FeedItem, FeedPagination, @@ -72,9 +72,9 @@ export type { TraderStats, UnfollowOptions, UnfollowResponse, -} from './social-types'; +} from './social-types.js'; export { serviceName as socialServiceName, SocialServiceErrorMessage, -} from './social-constants'; +} from './social-constants.js'; From 57fae7a7bc7a3694308f291f20b325bd3447bdd2 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:52:02 +0200 Subject: [PATCH 091/115] ESLint fix and `jest` global import for wallet --- packages/wallet/src/Wallet.test.ts | 11 ++++++----- packages/wallet/src/Wallet.ts | 6 +++--- packages/wallet/src/index.ts | 10 +++++----- .../src/initialization/initialization.ts | 8 ++++---- .../accounts-controller/accounts-controller.ts | 4 ++-- .../address-book-controller.test.ts | 6 +++--- .../address-book-controller.ts | 2 +- .../approval-controller.test.ts | 7 ++++--- .../approval-controller/approval-controller.ts | 2 +- .../always-online-adapter.test.ts | 3 ++- .../connectivity-controller.test.ts | 6 +++--- .../connectivity-controller.ts | 4 ++-- .../src/initialization/instances/index.ts | 18 +++++++++--------- .../keyring-controller/encryptor.test.ts | 2 +- .../keyring-controller.test.ts | 3 ++- .../keyring-controller/keyring-controller.ts | 4 ++-- .../instances/keyring-controller/types.ts | 2 +- .../network-controller/network-controller.ts | 2 +- .../remote-feature-flag-controller.test.ts | 7 ++++--- .../remote-feature-flag-controller.ts | 2 +- .../storage-service/storage-service.ts | 2 +- .../transaction-controller.test.ts | 13 +++++++------ .../transaction-controller.ts | 4 ++-- packages/wallet/src/initialization/types.ts | 8 ++++++-- packages/wallet/src/types.ts | 18 +++++++++--------- packages/wallet/src/utilities.ts | 4 ++-- 26 files changed, 84 insertions(+), 74 deletions(-) diff --git a/packages/wallet/src/Wallet.test.ts b/packages/wallet/src/Wallet.test.ts index 4dc315803b3..8cd170671ab 100644 --- a/packages/wallet/src/Wallet.test.ts +++ b/packages/wallet/src/Wallet.test.ts @@ -1,14 +1,15 @@ +import { jest } from '@jest/globals'; import { getDefaultAddressBookControllerState } from '@metamask/address-book-controller'; import { CONNECTIVITY_STATUSES } from '@metamask/connectivity-controller'; import { Messenger } from '@metamask/messenger'; import { InMemoryStorageAdapter } from '@metamask/storage-service'; import { Json } from '@metamask/utils'; -import MockEncryptor from '../../keyring-controller/tests/mocks/mockEncryptor'; -import * as initializationModule from './initialization/initialization'; -import { AlwaysOnlineAdapter } from './initialization/instances/connectivity-controller/always-online-adapter'; -import { importSecretRecoveryPhrase } from './utilities'; -import { Wallet } from './Wallet'; +import MockEncryptor from '../../keyring-controller/tests/mocks/mockEncryptor.js'; +import * as initializationModule from './initialization/initialization.js'; +import { AlwaysOnlineAdapter } from './initialization/instances/connectivity-controller/always-online-adapter.js'; +import { importSecretRecoveryPhrase } from './utilities.js'; +import { Wallet } from './Wallet.js'; const TEST_SRP = 'test test test test test test test test test test test ball'; const TEST_PASSWORD = 'testpass'; diff --git a/packages/wallet/src/Wallet.ts b/packages/wallet/src/Wallet.ts index 01c945570e5..21683f0836e 100644 --- a/packages/wallet/src/Wallet.ts +++ b/packages/wallet/src/Wallet.ts @@ -8,9 +8,9 @@ import type { DefaultInstances, DefaultState, RootMessenger, -} from './initialization/defaults'; -import { initialize } from './initialization/initialization'; -import { WalletOptions } from './types'; +} from './initialization/defaults.js'; +import { initialize } from './initialization/initialization.js'; +import { WalletOptions } from './types.js'; export class Wallet { // TODO: Expand default types when passing additionalConfigurations. diff --git a/packages/wallet/src/index.ts b/packages/wallet/src/index.ts index 337ad6ed7f0..50e9b004160 100644 --- a/packages/wallet/src/index.ts +++ b/packages/wallet/src/index.ts @@ -1,11 +1,11 @@ -export { Wallet } from './Wallet'; -export { AlwaysOnlineAdapter } from './initialization/instances/connectivity-controller/always-online-adapter'; -export { importSecretRecoveryPhrase } from './utilities'; -export type { WalletOptions } from './types'; +export { Wallet } from './Wallet.js'; +export { AlwaysOnlineAdapter } from './initialization/instances/connectivity-controller/always-online-adapter.js'; +export { importSecretRecoveryPhrase } from './utilities.js'; +export type { WalletOptions } from './types.js'; export type { DefaultActions, DefaultEvents, DefaultInstances, DefaultState, RootMessenger, -} from './initialization/defaults'; +} from './initialization/defaults.js'; diff --git a/packages/wallet/src/initialization/initialization.ts b/packages/wallet/src/initialization/initialization.ts index 28a7b835f51..9ed426722de 100644 --- a/packages/wallet/src/initialization/initialization.ts +++ b/packages/wallet/src/initialization/initialization.ts @@ -1,11 +1,11 @@ -import type { InstanceSpecificOptions, WalletOptions } from '../types'; +import type { InstanceSpecificOptions, WalletOptions } from '../types.js'; import type { DefaultActions, DefaultEvents, DefaultInstances, -} from './defaults'; -import { defaultConfigurations, RootMessenger } from './defaults'; -import { InitializationConfiguration } from './types'; +} from './defaults.js'; +import { defaultConfigurations, RootMessenger } from './defaults.js'; +import { InitializationConfiguration } from './types.js'; type InitializeOptions = WalletOptions & { messenger: RootMessenger; diff --git a/packages/wallet/src/initialization/instances/accounts-controller/accounts-controller.ts b/packages/wallet/src/initialization/instances/accounts-controller/accounts-controller.ts index 3865c944de5..ec2ea40bb68 100644 --- a/packages/wallet/src/initialization/instances/accounts-controller/accounts-controller.ts +++ b/packages/wallet/src/initialization/instances/accounts-controller/accounts-controller.ts @@ -8,8 +8,8 @@ import type { DefaultActions, DefaultEvents, RootMessenger, -} from '../../defaults'; -import type { InitializationConfiguration } from '../../types'; +} from '../../defaults.js'; +import type { InitializationConfiguration } from '../../types.js'; export const accountsController: InitializationConfiguration< AccountsController, diff --git a/packages/wallet/src/initialization/instances/address-book-controller/address-book-controller.test.ts b/packages/wallet/src/initialization/instances/address-book-controller/address-book-controller.test.ts index 552cafe9547..3a118b95da3 100644 --- a/packages/wallet/src/initialization/instances/address-book-controller/address-book-controller.test.ts +++ b/packages/wallet/src/initialization/instances/address-book-controller/address-book-controller.test.ts @@ -4,13 +4,13 @@ import { } from '@metamask/address-book-controller'; import { Messenger } from '@metamask/messenger'; -import { defaultConfigurations } from '../../defaults'; +import { defaultConfigurations } from '../../defaults.js'; import type { DefaultActions, DefaultEvents, RootMessenger, -} from '../../defaults'; -import { addressBookController } from './address-book-controller'; +} from '../../defaults.js'; +import { addressBookController } from './address-book-controller.js'; const ADDRESS = '0x1234567890123456789012345678901234567890'; diff --git a/packages/wallet/src/initialization/instances/address-book-controller/address-book-controller.ts b/packages/wallet/src/initialization/instances/address-book-controller/address-book-controller.ts index eda7ee93433..d21148e659b 100644 --- a/packages/wallet/src/initialization/instances/address-book-controller/address-book-controller.ts +++ b/packages/wallet/src/initialization/instances/address-book-controller/address-book-controller.ts @@ -4,7 +4,7 @@ import { } from '@metamask/address-book-controller'; import { Messenger } from '@metamask/messenger'; -import type { InitializationConfiguration } from '../../types'; +import type { InitializationConfiguration } from '../../types.js'; export const addressBookController: InitializationConfiguration< AddressBookController, diff --git a/packages/wallet/src/initialization/instances/approval-controller/approval-controller.test.ts b/packages/wallet/src/initialization/instances/approval-controller/approval-controller.test.ts index de5a517e696..f36bf5202bb 100644 --- a/packages/wallet/src/initialization/instances/approval-controller/approval-controller.test.ts +++ b/packages/wallet/src/initialization/instances/approval-controller/approval-controller.test.ts @@ -1,14 +1,15 @@ +import { jest } from '@jest/globals'; import { ApprovalController } from '@metamask/approval-controller'; import { ApprovalType } from '@metamask/controller-utils'; import { Messenger } from '@metamask/messenger'; -import { defaultConfigurations } from '../../defaults'; +import { defaultConfigurations } from '../../defaults.js'; import type { DefaultActions, DefaultEvents, RootMessenger, -} from '../../defaults'; -import { approvalController } from './approval-controller'; +} from '../../defaults.js'; +import { approvalController } from './approval-controller.js'; /** * Creates a root messenger for use in tests. diff --git a/packages/wallet/src/initialization/instances/approval-controller/approval-controller.ts b/packages/wallet/src/initialization/instances/approval-controller/approval-controller.ts index 728c0020083..d88456fb357 100644 --- a/packages/wallet/src/initialization/instances/approval-controller/approval-controller.ts +++ b/packages/wallet/src/initialization/instances/approval-controller/approval-controller.ts @@ -5,7 +5,7 @@ import { import { ApprovalType } from '@metamask/controller-utils'; import { Messenger } from '@metamask/messenger'; -import { InitializationConfiguration } from '../../types'; +import { InitializationConfiguration } from '../../types.js'; /** * Approval types that are exempt from per-origin rate limiting, so more than one diff --git a/packages/wallet/src/initialization/instances/connectivity-controller/always-online-adapter.test.ts b/packages/wallet/src/initialization/instances/connectivity-controller/always-online-adapter.test.ts index 417438a541a..7bc2153c417 100644 --- a/packages/wallet/src/initialization/instances/connectivity-controller/always-online-adapter.test.ts +++ b/packages/wallet/src/initialization/instances/connectivity-controller/always-online-adapter.test.ts @@ -1,6 +1,7 @@ +import { jest } from '@jest/globals'; import { CONNECTIVITY_STATUSES } from '@metamask/connectivity-controller'; -import { AlwaysOnlineAdapter } from './always-online-adapter'; +import { AlwaysOnlineAdapter } from './always-online-adapter.js'; describe('AlwaysOnlineAdapter', () => { it('returns Online from getStatus', async () => { diff --git a/packages/wallet/src/initialization/instances/connectivity-controller/connectivity-controller.test.ts b/packages/wallet/src/initialization/instances/connectivity-controller/connectivity-controller.test.ts index 12be2018dd7..caf117a7dd8 100644 --- a/packages/wallet/src/initialization/instances/connectivity-controller/connectivity-controller.test.ts +++ b/packages/wallet/src/initialization/instances/connectivity-controller/connectivity-controller.test.ts @@ -5,9 +5,9 @@ import type { DefaultActions, DefaultEvents, RootMessenger, -} from '../../defaults'; -import { AlwaysOnlineAdapter } from './always-online-adapter'; -import { connectivityController } from './connectivity-controller'; +} from '../../defaults.js'; +import { AlwaysOnlineAdapter } from './always-online-adapter.js'; +import { connectivityController } from './connectivity-controller.js'; describe('connectivityController', () => { it('reports online status after initialization', () => { diff --git a/packages/wallet/src/initialization/instances/connectivity-controller/connectivity-controller.ts b/packages/wallet/src/initialization/instances/connectivity-controller/connectivity-controller.ts index 43f681879ec..f9a4a727d98 100644 --- a/packages/wallet/src/initialization/instances/connectivity-controller/connectivity-controller.ts +++ b/packages/wallet/src/initialization/instances/connectivity-controller/connectivity-controller.ts @@ -8,8 +8,8 @@ import type { DefaultActions, DefaultEvents, RootMessenger, -} from '../../defaults'; -import type { InitializationConfiguration } from '../../types'; +} from '../../defaults.js'; +import type { InitializationConfiguration } from '../../types.js'; export const connectivityController: InitializationConfiguration< ConnectivityController, diff --git a/packages/wallet/src/initialization/instances/index.ts b/packages/wallet/src/initialization/instances/index.ts index a15db956032..624fe8bc567 100644 --- a/packages/wallet/src/initialization/instances/index.ts +++ b/packages/wallet/src/initialization/instances/index.ts @@ -1,9 +1,9 @@ -export { accountsController } from './accounts-controller/accounts-controller'; -export { addressBookController } from './address-book-controller/address-book-controller'; -export { approvalController } from './approval-controller/approval-controller'; -export { connectivityController } from './connectivity-controller/connectivity-controller'; -export { keyringController } from './keyring-controller/keyring-controller'; -export { networkController } from './network-controller/network-controller'; -export { remoteFeatureFlagController } from './remote-feature-flag-controller/remote-feature-flag-controller'; -export { storageService } from './storage-service/storage-service'; -export { transactionController } from './transaction-controller/transaction-controller'; +export { accountsController } from './accounts-controller/accounts-controller.js'; +export { addressBookController } from './address-book-controller/address-book-controller.js'; +export { approvalController } from './approval-controller/approval-controller.js'; +export { connectivityController } from './connectivity-controller/connectivity-controller.js'; +export { keyringController } from './keyring-controller/keyring-controller.js'; +export { networkController } from './network-controller/network-controller.js'; +export { remoteFeatureFlagController } from './remote-feature-flag-controller/remote-feature-flag-controller.js'; +export { storageService } from './storage-service/storage-service.js'; +export { transactionController } from './transaction-controller/transaction-controller.js'; diff --git a/packages/wallet/src/initialization/instances/keyring-controller/encryptor.test.ts b/packages/wallet/src/initialization/instances/keyring-controller/encryptor.test.ts index 618db04b00f..011736efc7c 100644 --- a/packages/wallet/src/initialization/instances/keyring-controller/encryptor.test.ts +++ b/packages/wallet/src/initialization/instances/keyring-controller/encryptor.test.ts @@ -1,4 +1,4 @@ -import { encryptorFactory } from './encryptor'; +import { encryptorFactory } from './encryptor.js'; describe('encryptorFactory', () => { const encryptor = encryptorFactory(600_000); diff --git a/packages/wallet/src/initialization/instances/keyring-controller/keyring-controller.test.ts b/packages/wallet/src/initialization/instances/keyring-controller/keyring-controller.test.ts index 1c7be08b5b7..7dafa69e904 100644 --- a/packages/wallet/src/initialization/instances/keyring-controller/keyring-controller.test.ts +++ b/packages/wallet/src/initialization/instances/keyring-controller/keyring-controller.test.ts @@ -1,10 +1,11 @@ +import { jest } from '@jest/globals'; import { KeyringController } from '@metamask/keyring-controller'; import type { KeyringControllerMessenger, KeyringControllerOptions, } from '@metamask/keyring-controller'; -import { keyringController } from './keyring-controller'; +import { keyringController } from './keyring-controller.js'; jest.mock('@metamask/keyring-controller', () => ({ ...jest.requireActual('@metamask/keyring-controller'), diff --git a/packages/wallet/src/initialization/instances/keyring-controller/keyring-controller.ts b/packages/wallet/src/initialization/instances/keyring-controller/keyring-controller.ts index 88eedcc4452..fa6cc7c9db8 100644 --- a/packages/wallet/src/initialization/instances/keyring-controller/keyring-controller.ts +++ b/packages/wallet/src/initialization/instances/keyring-controller/keyring-controller.ts @@ -6,8 +6,8 @@ import { } from '@metamask/keyring-controller'; import { Messenger } from '@metamask/messenger'; -import { InitializationConfiguration } from '../../types'; -import { encryptorFactory } from './encryptor'; +import { InitializationConfiguration } from '../../types.js'; +import { encryptorFactory } from './encryptor.js'; export const keyringController: InitializationConfiguration< KeyringController, diff --git a/packages/wallet/src/initialization/instances/keyring-controller/types.ts b/packages/wallet/src/initialization/instances/keyring-controller/types.ts index dc582af58c5..48db114cd44 100644 --- a/packages/wallet/src/initialization/instances/keyring-controller/types.ts +++ b/packages/wallet/src/initialization/instances/keyring-controller/types.ts @@ -1,6 +1,6 @@ import type { KeyringControllerOptions } from '@metamask/keyring-controller'; -import type { GenericEncryptor } from './encryptor'; +import type { GenericEncryptor } from './encryptor.js'; /** * Per-instance options for the wallet's `KeyringController`. All fields are diff --git a/packages/wallet/src/initialization/instances/network-controller/network-controller.ts b/packages/wallet/src/initialization/instances/network-controller/network-controller.ts index f48f37fed3f..edde8e53ccd 100644 --- a/packages/wallet/src/initialization/instances/network-controller/network-controller.ts +++ b/packages/wallet/src/initialization/instances/network-controller/network-controller.ts @@ -4,7 +4,7 @@ import { NetworkControllerMessenger, } from '@metamask/network-controller'; -import { InitializationConfiguration } from '../../types'; +import { InitializationConfiguration } from '../../types.js'; export const networkController: InitializationConfiguration< NetworkController, diff --git a/packages/wallet/src/initialization/instances/remote-feature-flag-controller/remote-feature-flag-controller.test.ts b/packages/wallet/src/initialization/instances/remote-feature-flag-controller/remote-feature-flag-controller.test.ts index 5939977fa8c..64b702af99a 100644 --- a/packages/wallet/src/initialization/instances/remote-feature-flag-controller/remote-feature-flag-controller.test.ts +++ b/packages/wallet/src/initialization/instances/remote-feature-flag-controller/remote-feature-flag-controller.test.ts @@ -1,13 +1,14 @@ +import { jest } from '@jest/globals'; import { Messenger } from '@metamask/messenger'; import { RemoteFeatureFlagController } from '@metamask/remote-feature-flag-controller'; -import { defaultConfigurations } from '../../defaults'; +import { defaultConfigurations } from '../../defaults.js'; import type { DefaultActions, DefaultEvents, RootMessenger, -} from '../../defaults'; -import { remoteFeatureFlagController } from './remote-feature-flag-controller'; +} from '../../defaults.js'; +import { remoteFeatureFlagController } from './remote-feature-flag-controller.js'; /** * Creates a root messenger for use in tests. diff --git a/packages/wallet/src/initialization/instances/remote-feature-flag-controller/remote-feature-flag-controller.ts b/packages/wallet/src/initialization/instances/remote-feature-flag-controller/remote-feature-flag-controller.ts index 5f155deb023..35e7486ea9e 100644 --- a/packages/wallet/src/initialization/instances/remote-feature-flag-controller/remote-feature-flag-controller.ts +++ b/packages/wallet/src/initialization/instances/remote-feature-flag-controller/remote-feature-flag-controller.ts @@ -4,7 +4,7 @@ import { RemoteFeatureFlagControllerMessenger, } from '@metamask/remote-feature-flag-controller'; -import { InitializationConfiguration } from '../../types'; +import { InitializationConfiguration } from '../../types.js'; export const remoteFeatureFlagController: InitializationConfiguration< RemoteFeatureFlagController, diff --git a/packages/wallet/src/initialization/instances/storage-service/storage-service.ts b/packages/wallet/src/initialization/instances/storage-service/storage-service.ts index c20595d54f4..98dfbcc5e2e 100644 --- a/packages/wallet/src/initialization/instances/storage-service/storage-service.ts +++ b/packages/wallet/src/initialization/instances/storage-service/storage-service.ts @@ -2,7 +2,7 @@ import { Messenger } from '@metamask/messenger'; import { StorageService } from '@metamask/storage-service'; import { StorageServiceMessenger } from '@metamask/storage-service'; -import { InitializationConfiguration } from '../../types'; +import { InitializationConfiguration } from '../../types.js'; export const storageService: InitializationConfiguration< StorageService, diff --git a/packages/wallet/src/initialization/instances/transaction-controller/transaction-controller.test.ts b/packages/wallet/src/initialization/instances/transaction-controller/transaction-controller.test.ts index 1e88b0e52d2..1b922b08673 100644 --- a/packages/wallet/src/initialization/instances/transaction-controller/transaction-controller.test.ts +++ b/packages/wallet/src/initialization/instances/transaction-controller/transaction-controller.test.ts @@ -1,17 +1,18 @@ +import { jest } from '@jest/globals'; import { Messenger } from '@metamask/messenger'; import { InMemoryStorageAdapter } from '@metamask/storage-service'; import { TransactionController } from '@metamask/transaction-controller'; -import type { WalletOptions } from '../../../types'; -import { Wallet } from '../../../Wallet'; -import { defaultConfigurations } from '../../defaults'; +import type { WalletOptions } from '../../../types.js'; +import { Wallet } from '../../../Wallet.js'; +import { defaultConfigurations } from '../../defaults.js'; import type { DefaultActions, DefaultEvents, RootMessenger, -} from '../../defaults'; -import { AlwaysOnlineAdapter } from '../connectivity-controller/always-online-adapter'; -import { transactionController } from './transaction-controller'; +} from '../../defaults.js'; +import { AlwaysOnlineAdapter } from '../connectivity-controller/always-online-adapter.js'; +import { transactionController } from './transaction-controller.js'; const controllers: TransactionController[] = []; const wallets: Wallet[] = []; diff --git a/packages/wallet/src/initialization/instances/transaction-controller/transaction-controller.ts b/packages/wallet/src/initialization/instances/transaction-controller/transaction-controller.ts index 6ee57a27e60..65eeb232fef 100644 --- a/packages/wallet/src/initialization/instances/transaction-controller/transaction-controller.ts +++ b/packages/wallet/src/initialization/instances/transaction-controller/transaction-controller.ts @@ -2,9 +2,9 @@ import { Messenger } from '@metamask/messenger'; import type { TransactionControllerMessenger } from '@metamask/transaction-controller'; import { TransactionController } from '@metamask/transaction-controller'; -import type { InitializationConfiguration } from '../../types'; +import type { InitializationConfiguration } from '../../types.js'; -export type { TransactionControllerInstanceOptions } from './types'; +export type { TransactionControllerInstanceOptions } from './types.js'; export const transactionController: InitializationConfiguration< TransactionController, diff --git a/packages/wallet/src/initialization/types.ts b/packages/wallet/src/initialization/types.ts index 1e7e51602b3..891b653c6df 100644 --- a/packages/wallet/src/initialization/types.ts +++ b/packages/wallet/src/initialization/types.ts @@ -1,5 +1,9 @@ -import type { InstanceSpecificOptions } from '../types'; -import type { DefaultActions, DefaultEvents, RootMessenger } from './defaults'; +import type { InstanceSpecificOptions } from '../types.js'; +import type { + DefaultActions, + DefaultEvents, + RootMessenger, +} from './defaults.js'; /** * Utility type for inferring the state of an instance. diff --git a/packages/wallet/src/types.ts b/packages/wallet/src/types.ts index 1f330e9bafd..8912d490bea 100644 --- a/packages/wallet/src/types.ts +++ b/packages/wallet/src/types.ts @@ -4,15 +4,15 @@ import type { DefaultActions, DefaultEvents, RootMessenger, -} from './initialization/defaults'; -import type { ApprovalControllerInstanceOptions } from './initialization/instances/approval-controller/types'; -import type { ConnectivityControllerInstanceOptions } from './initialization/instances/connectivity-controller/types'; -import type { KeyringControllerInstanceOptions } from './initialization/instances/keyring-controller/types'; -import type { NetworkControllerInstanceOptions } from './initialization/instances/network-controller/types'; -import type { RemoteFeatureFlagControllerInstanceOptions } from './initialization/instances/remote-feature-flag-controller/types'; -import type { StorageServiceInstanceOptions } from './initialization/instances/storage-service/types'; -import type { TransactionControllerInstanceOptions } from './initialization/instances/transaction-controller/types'; -import type { InitializationConfiguration } from './initialization/types'; +} from './initialization/defaults.js'; +import type { ApprovalControllerInstanceOptions } from './initialization/instances/approval-controller/types.js'; +import type { ConnectivityControllerInstanceOptions } from './initialization/instances/connectivity-controller/types.js'; +import type { KeyringControllerInstanceOptions } from './initialization/instances/keyring-controller/types.js'; +import type { NetworkControllerInstanceOptions } from './initialization/instances/network-controller/types.js'; +import type { RemoteFeatureFlagControllerInstanceOptions } from './initialization/instances/remote-feature-flag-controller/types.js'; +import type { StorageServiceInstanceOptions } from './initialization/instances/storage-service/types.js'; +import type { TransactionControllerInstanceOptions } from './initialization/instances/transaction-controller/types.js'; +import type { InitializationConfiguration } from './initialization/types.js'; export type WalletOptions = { messenger?: RootMessenger; diff --git a/packages/wallet/src/utilities.ts b/packages/wallet/src/utilities.ts index 4630dd5460c..ad02ef2c489 100644 --- a/packages/wallet/src/utilities.ts +++ b/packages/wallet/src/utilities.ts @@ -1,6 +1,6 @@ -import { wordlist } from '@metamask/scure-bip39/dist/wordlists/english'; +import { wordlist } from '@metamask/scure-bip39/dist/wordlists/english.js'; -import { Wallet } from './Wallet'; +import { Wallet } from './Wallet.js'; /** * Import a secret recovery phrase using the wallet object. From e3a8a5290be7b531ac15053465ebd88a9855fbab Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:52:03 +0200 Subject: [PATCH 092/115] ESLint fix and `jest` global import for money-account-controller --- .../src/MoneyAccountController-method-action-types.ts | 2 +- .../src/MoneyAccountController.test.ts | 5 +++-- .../src/MoneyAccountController.ts | 8 ++++---- packages/money-account-controller/src/index.ts | 10 +++++----- packages/money-account-controller/src/utils.test.ts | 2 +- 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/packages/money-account-controller/src/MoneyAccountController-method-action-types.ts b/packages/money-account-controller/src/MoneyAccountController-method-action-types.ts index 5edf280cef7..a0e8d1fb519 100644 --- a/packages/money-account-controller/src/MoneyAccountController-method-action-types.ts +++ b/packages/money-account-controller/src/MoneyAccountController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { MoneyAccountController } from './MoneyAccountController'; +import type { MoneyAccountController } from './MoneyAccountController.js'; /** * Initializes the controller by creating a money account for the primary diff --git a/packages/money-account-controller/src/MoneyAccountController.test.ts b/packages/money-account-controller/src/MoneyAccountController.test.ts index 701b6ceea9b..0989fa230e3 100644 --- a/packages/money-account-controller/src/MoneyAccountController.test.ts +++ b/packages/money-account-controller/src/MoneyAccountController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { KeyringControllerError, KeyringControllerErrorMessage, @@ -10,11 +11,11 @@ import type { MessengerEvents, } from '@metamask/messenger'; -import type { MoneyAccount, MoneyAccountControllerMessenger } from '.'; +import type { MoneyAccount, MoneyAccountControllerMessenger } from './index.js'; import { MoneyAccountController, getDefaultMoneyAccountControllerState, -} from '.'; +} from './index.js'; const MOCK_ENTROPY_SOURCE_ID = 'entropy-source-1'; const MOCK_OTHER_ENTROPY_SOURCE_ID = 'entropy-source-2'; diff --git a/packages/money-account-controller/src/MoneyAccountController.ts b/packages/money-account-controller/src/MoneyAccountController.ts index 3898debb25f..ae1fd3fc155 100644 --- a/packages/money-account-controller/src/MoneyAccountController.ts +++ b/packages/money-account-controller/src/MoneyAccountController.ts @@ -27,10 +27,10 @@ import { EthKeyring } from '@metamask/keyring-utils'; import type { Messenger } from '@metamask/messenger'; import { Mutex } from 'async-mutex'; -import { projectLogger as log } from './logger'; -import type { MoneyAccountControllerMethodActions } from './MoneyAccountController-method-action-types'; -import type { MoneyAccount } from './types'; -import { isMoneyKeyring } from './utils'; +import { projectLogger as log } from './logger.js'; +import type { MoneyAccountControllerMethodActions } from './MoneyAccountController-method-action-types.js'; +import type { MoneyAccount } from './types.js'; +import { isMoneyKeyring } from './utils.js'; export const controllerName = 'MoneyAccountController'; diff --git a/packages/money-account-controller/src/index.ts b/packages/money-account-controller/src/index.ts index 6ad8e5fe97b..d8ab43a19a9 100644 --- a/packages/money-account-controller/src/index.ts +++ b/packages/money-account-controller/src/index.ts @@ -1,10 +1,10 @@ -export type { MoneyAccount } from './types'; -export { isMoneyKeyring } from './utils'; +export type { MoneyAccount } from './types.js'; +export { isMoneyKeyring } from './utils.js'; export { MoneyAccountController, controllerName, getDefaultMoneyAccountControllerState, -} from './MoneyAccountController'; +} from './MoneyAccountController.js'; export type { MoneyAccountControllerState, MoneyAccountControllerGetStateAction, @@ -12,10 +12,10 @@ export type { MoneyAccountControllerStateChangeEvent, MoneyAccountControllerEvents, MoneyAccountControllerMessenger, -} from './MoneyAccountController'; +} from './MoneyAccountController.js'; export type { MoneyAccountControllerClearStateAction, MoneyAccountControllerCreateMoneyAccountAction, MoneyAccountControllerGetMoneyAccountAction, MoneyAccountControllerInitAction, -} from './MoneyAccountController-method-action-types'; +} from './MoneyAccountController-method-action-types.js'; diff --git a/packages/money-account-controller/src/utils.test.ts b/packages/money-account-controller/src/utils.test.ts index 3ee2accba51..b3fa2459282 100644 --- a/packages/money-account-controller/src/utils.test.ts +++ b/packages/money-account-controller/src/utils.test.ts @@ -1,7 +1,7 @@ import { KeyringTypes } from '@metamask/keyring-controller'; import { EthKeyring } from '@metamask/keyring-utils'; -import { isMoneyKeyring } from './utils'; +import { isMoneyKeyring } from './utils.js'; describe('isMoneyKeyring', () => { it('returns true for a Money Keyring', () => { From c452c33edcc49cdfa83b89922b9426fa62d93dfe Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:52:06 +0200 Subject: [PATCH 093/115] ESLint fix and `jest` global import for money-account-api-data-service --- .../src/index.ts | 14 ++++++------ ...nt-api-data-service-method-action-types.ts | 2 +- .../money-account-api-data-service.test.ts | 12 +++++----- .../src/money-account-api-data-service.ts | 22 +++++++++---------- .../src/response.types.ts | 2 +- 5 files changed, 26 insertions(+), 26 deletions(-) diff --git a/packages/money-account-api-data-service/src/index.ts b/packages/money-account-api-data-service/src/index.ts index 780facd0ac0..bba02920461 100644 --- a/packages/money-account-api-data-service/src/index.ts +++ b/packages/money-account-api-data-service/src/index.ts @@ -1,15 +1,15 @@ -export { MoneyAccountApiDataService } from './money-account-api-data-service'; +export { MoneyAccountApiDataService } from './money-account-api-data-service.js'; export type { MoneyAccountApiDataServiceActions, MoneyAccountApiDataServiceEvents, MoneyAccountApiDataServiceMessenger, -} from './money-account-api-data-service'; +} from './money-account-api-data-service.js'; export type { MoneyAccountApiDataServiceFetchPositionsAction, MoneyAccountApiDataServiceFetchInterestAction, MoneyAccountApiDataServiceFetchHistoryAction, MoneyAccountApiDataServiceFetchRateHistoryAction, -} from './money-account-api-data-service-method-action-types'; +} from './money-account-api-data-service-method-action-types.js'; export type { PositionResponse, InterestResponse, @@ -21,12 +21,12 @@ export type { DataFreshness, CashFlowType, CashFlowSource, -} from './response.types'; +} from './response.types.js'; export type { InterestWindow, InterestOptions, HistoryOptions, RateHistoryOptions, -} from './types'; -export { Env } from './constants'; -export { MoneyAccountApiResponseValidationError } from './errors'; +} from './types.js'; +export { Env } from './constants.js'; +export { MoneyAccountApiResponseValidationError } from './errors.js'; diff --git a/packages/money-account-api-data-service/src/money-account-api-data-service-method-action-types.ts b/packages/money-account-api-data-service/src/money-account-api-data-service-method-action-types.ts index a969d0b4d37..d3773dc11e4 100644 --- a/packages/money-account-api-data-service/src/money-account-api-data-service-method-action-types.ts +++ b/packages/money-account-api-data-service/src/money-account-api-data-service-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { MoneyAccountApiDataService } from './money-account-api-data-service'; +import type { MoneyAccountApiDataService } from './money-account-api-data-service.js'; /** * Fetches the current vault positions for a given user address. diff --git a/packages/money-account-api-data-service/src/money-account-api-data-service.test.ts b/packages/money-account-api-data-service/src/money-account-api-data-service.test.ts index f396130de6f..e446c3feb90 100644 --- a/packages/money-account-api-data-service/src/money-account-api-data-service.test.ts +++ b/packages/money-account-api-data-service/src/money-account-api-data-service.test.ts @@ -5,15 +5,15 @@ import type { MessengerActions, MessengerEvents, } from '@metamask/messenger'; -import nock, { cleanAll as nockCleanAll } from 'nock'; +import nock from 'nock'; -import { Env, MONEY_ACCOUNT_API_URL_MAP } from './constants'; -import { MoneyAccountApiResponseValidationError } from './errors'; -import type { MoneyAccountApiDataServiceMessenger } from './money-account-api-data-service'; +import { Env, MONEY_ACCOUNT_API_URL_MAP } from './constants.js'; +import { MoneyAccountApiResponseValidationError } from './errors.js'; +import type { MoneyAccountApiDataServiceMessenger } from './money-account-api-data-service.js'; import { MoneyAccountApiDataService, serviceName, -} from './money-account-api-data-service'; +} from './money-account-api-data-service.js'; // ============================================================ // Fixtures @@ -159,7 +159,7 @@ function createService(env: Env = Env.DEV): { describe('MoneyAccountApiDataService', () => { afterEach(() => { - nockCleanAll(); + nock.cleanAll(); }); describe('constructor', () => { diff --git a/packages/money-account-api-data-service/src/money-account-api-data-service.ts b/packages/money-account-api-data-service/src/money-account-api-data-service.ts index 2f216249d06..7b65ee5c1ed 100644 --- a/packages/money-account-api-data-service/src/money-account-api-data-service.ts +++ b/packages/money-account-api-data-service/src/money-account-api-data-service.ts @@ -16,27 +16,27 @@ import { Env, MONEY_ACCOUNT_API_URL_MAP, RATE_HISTORY_STALE_TIME_MS, -} from './constants'; -import { MoneyAccountApiResponseValidationError } from './errors'; -import { projectLogger, createModuleLogger } from './logger'; -import type { MoneyAccountApiDataServiceMethodActions } from './money-account-api-data-service-method-action-types'; +} from './constants.js'; +import { MoneyAccountApiResponseValidationError } from './errors.js'; +import { projectLogger, createModuleLogger } from './logger.js'; +import type { MoneyAccountApiDataServiceMethodActions } from './money-account-api-data-service-method-action-types.js'; import type { HistoryResponse, InterestResponse, PositionResponse, RateHistoryResponse, -} from './response.types'; +} from './response.types.js'; import { HistoryResponseStruct, InterestResponseStruct, PositionResponseStruct, RateHistoryResponseStruct, -} from './structs'; +} from './structs.js'; import type { HistoryOptions, InterestOptions, RateHistoryOptions, -} from './types'; +} from './types.js'; // === GENERAL === @@ -200,7 +200,7 @@ export class MoneyAccountApiDataService extends BaseDataService< ); } - return validated as unknown as PositionResponse; + return validated as PositionResponse; }, }); } @@ -258,7 +258,7 @@ export class MoneyAccountApiDataService extends BaseDataService< ); } - return validated as unknown as InterestResponse; + return validated as InterestResponse; }, }); } @@ -331,7 +331,7 @@ export class MoneyAccountApiDataService extends BaseDataService< ); } - return validated as unknown as HistoryResponse; + return validated as HistoryResponse; }, }, options?.cursor ?? undefined, @@ -391,7 +391,7 @@ export class MoneyAccountApiDataService extends BaseDataService< ); } - return validated as unknown as RateHistoryResponse; + return validated as RateHistoryResponse; }, }); } diff --git a/packages/money-account-api-data-service/src/response.types.ts b/packages/money-account-api-data-service/src/response.types.ts index ff779e24b2b..8f188a99ee8 100644 --- a/packages/money-account-api-data-service/src/response.types.ts +++ b/packages/money-account-api-data-service/src/response.types.ts @@ -5,7 +5,7 @@ import type { InterestResponseStruct, PositionResponseStruct, RateHistoryResponseStruct, -} from './structs'; +} from './structs.js'; // All types in this file mirror the external Money Account API's snake_case // JSON contract verbatim to maintain 1:1 parity with API responses. From aa1e5ec55545d4fc4dedb4712f97bab16fd18604 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:52:07 +0200 Subject: [PATCH 094/115] ESLint fix and `jest` global import for money-account-balance-service --- packages/money-account-balance-service/src/index.ts | 10 +++++----- ...y-account-balance-service-method-action-types.ts | 2 +- .../src/money-account-balance-service.test.ts | 13 +++++++------ 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/packages/money-account-balance-service/src/index.ts b/packages/money-account-balance-service/src/index.ts index afce7bded99..6139a03238a 100644 --- a/packages/money-account-balance-service/src/index.ts +++ b/packages/money-account-balance-service/src/index.ts @@ -1,4 +1,4 @@ -export { MoneyAccountBalanceService } from './money-account-balance-service'; +export { MoneyAccountBalanceService } from './money-account-balance-service.js'; export type { MoneyAccountBalanceServiceActions, MoneyAccountBalanceServiceEvents, @@ -6,7 +6,7 @@ export type { MoneyAccountBalanceServiceOptions, MoneyAccountBalanceServiceTraceCallback, MoneyAccountBalanceServiceTraceRequest, -} from './money-account-balance-service'; +} from './money-account-balance-service.js'; export type { MoneyAccountBalanceServiceGetMoneyAccountBalanceAction, MoneyAccountBalanceServiceGetMusdBalanceAction, @@ -14,7 +14,7 @@ export type { MoneyAccountBalanceServiceGetExchangeRateAction, MoneyAccountBalanceServiceGetMusdEquivalentValueAction, MoneyAccountBalanceServiceGetVaultApyAction, -} from './money-account-balance-service-method-action-types'; +} from './money-account-balance-service-method-action-types.js'; export type { ExchangeRateResponse, MoneyAccountBalanceResponse, @@ -24,5 +24,5 @@ export type { export { VaultConfigNotAvailableError, VaultConfigValidationError, -} from './errors'; -export type { VaultConfig } from './types'; +} from './errors.js'; +export type { VaultConfig } from './types.js'; diff --git a/packages/money-account-balance-service/src/money-account-balance-service-method-action-types.ts b/packages/money-account-balance-service/src/money-account-balance-service-method-action-types.ts index 1c5493a4799..a146aefb51e 100644 --- a/packages/money-account-balance-service/src/money-account-balance-service-method-action-types.ts +++ b/packages/money-account-balance-service/src/money-account-balance-service-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { MoneyAccountBalanceService } from './money-account-balance-service'; +import type { MoneyAccountBalanceService } from './money-account-balance-service.js'; /** * Fetches the mUSD ERC-20 balance for the given account address via RPC. diff --git a/packages/money-account-balance-service/src/money-account-balance-service.test.ts b/packages/money-account-balance-service/src/money-account-balance-service.test.ts index c2d9897d2e5..60bbaed6b71 100644 --- a/packages/money-account-balance-service/src/money-account-balance-service.test.ts +++ b/packages/money-account-balance-service/src/money-account-balance-service.test.ts @@ -1,5 +1,6 @@ import { Contract } from '@ethersproject/contracts'; import { Web3Provider } from '@ethersproject/providers'; +import { jest } from '@jest/globals'; import { DEFAULT_MAX_RETRIES, HttpError } from '@metamask/controller-utils'; import type { TraceCallback, @@ -14,24 +15,24 @@ import type { } from '@metamask/messenger'; import { abiERC20 } from '@metamask/metamask-eth-abis'; import type { Json } from '@metamask/utils'; -import nock, { cleanAll as nockCleanAll } from 'nock'; +import nock from 'nock'; import { LENS_ABI, MONEY_ACCOUNT_BALANCE_STALETIME_FEATURE_FLAG_KEY, MULTICALL3_ADDRESS_BY_CHAIN_ID, VAULT_CONFIG_FEATURE_FLAG_KEY, -} from './constants'; +} from './constants.js'; import { VaultConfigNotAvailableError, VaultConfigValidationError, VedaResponseValidationError, -} from './errors'; -import type { MoneyAccountBalanceServiceMessenger } from './money-account-balance-service'; +} from './errors.js'; +import type { MoneyAccountBalanceServiceMessenger } from './money-account-balance-service.js'; import { MoneyAccountBalanceService, serviceName, -} from './money-account-balance-service'; +} from './money-account-balance-service.js'; jest.mock('@ethersproject/contracts'); jest.mock('@ethersproject/providers'); @@ -456,7 +457,7 @@ describe('MoneyAccountBalanceService', () => { beforeEach(() => { MockContract.mockReset(); MockWeb3Provider.mockImplementation(() => ({}) as unknown as Web3Provider); - nockCleanAll(); + nock.cleanAll(); }); afterEach(() => { From 0d5dee04c021bcb8d15f5284277d637979d5241b Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:52:15 +0200 Subject: [PATCH 095/115] ESLint fix and `jest` global import for money-account-upgrade-controller --- ...countUpgradeController-method-action-types.ts | 2 +- .../src/MoneyAccountUpgradeController.test.ts | 5 +++-- .../src/MoneyAccountUpgradeController.ts | 16 ++++++++-------- .../src/errors.test.ts | 2 +- .../src/index.ts | 10 +++++----- .../src/steps/associate-address.test.ts | 5 +++-- .../src/steps/associate-address.ts | 4 ++-- .../src/steps/build-delegations.test.ts | 5 +++-- .../src/steps/build-delegations.ts | 6 +++--- .../src/steps/eip-7702-authorization.test.ts | 5 +++-- .../src/steps/eip-7702-authorization.ts | 2 +- .../src/steps/register-intents.test.ts | 5 +++-- .../src/steps/register-intents.ts | 4 ++-- .../src/steps/step.ts | 2 +- 14 files changed, 39 insertions(+), 34 deletions(-) diff --git a/packages/money-account-upgrade-controller/src/MoneyAccountUpgradeController-method-action-types.ts b/packages/money-account-upgrade-controller/src/MoneyAccountUpgradeController-method-action-types.ts index 23d5c723629..001f6a6ccef 100644 --- a/packages/money-account-upgrade-controller/src/MoneyAccountUpgradeController-method-action-types.ts +++ b/packages/money-account-upgrade-controller/src/MoneyAccountUpgradeController-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { MoneyAccountUpgradeController } from './MoneyAccountUpgradeController'; +import type { MoneyAccountUpgradeController } from './MoneyAccountUpgradeController.js'; /** * Runs each step in the upgrade sequence in order. A step that reports diff --git a/packages/money-account-upgrade-controller/src/MoneyAccountUpgradeController.test.ts b/packages/money-account-upgrade-controller/src/MoneyAccountUpgradeController.test.ts index 7a08f3a60fa..cd3f588cf44 100644 --- a/packages/money-account-upgrade-controller/src/MoneyAccountUpgradeController.test.ts +++ b/packages/money-account-upgrade-controller/src/MoneyAccountUpgradeController.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { DELEGATOR_CONTRACTS } from '@metamask/delegation-deployments'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -11,11 +12,11 @@ import type { Hex } from '@metamask/utils'; import type { MoneyAccountUpgradeControllerMessenger, MoneyAccountUpgradeStepError, -} from '.'; +} from './index.js'; import { MoneyAccountUpgradeController, isMoneyAccountUpgradeStepError, -} from '.'; +} from './index.js'; const MOCK_CHAIN_ID = '0x1' as Hex; // mainnet, supported in delegation-deployments@1.3.0 const UNSUPPORTED_CHAIN_ID = '0x539' as Hex; // 1337 — local dev, not in registry diff --git a/packages/money-account-upgrade-controller/src/MoneyAccountUpgradeController.ts b/packages/money-account-upgrade-controller/src/MoneyAccountUpgradeController.ts index b38e095b474..e11598ddfc7 100644 --- a/packages/money-account-upgrade-controller/src/MoneyAccountUpgradeController.ts +++ b/packages/money-account-upgrade-controller/src/MoneyAccountUpgradeController.ts @@ -31,14 +31,14 @@ import type { import { hexToNumber } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import { MoneyAccountUpgradeStepError } from './errors'; -import type { MoneyAccountUpgradeControllerMethodActions } from './MoneyAccountUpgradeController-method-action-types'; -import { associateAddressStep } from './steps/associate-address'; -import { buildDelegationStep } from './steps/build-delegations'; -import { eip7702AuthorizationStep } from './steps/eip-7702-authorization'; -import { registerIntentsStep } from './steps/register-intents'; -import type { Step } from './steps/step'; -import type { UpgradeConfig } from './types'; +import { MoneyAccountUpgradeStepError } from './errors.js'; +import type { MoneyAccountUpgradeControllerMethodActions } from './MoneyAccountUpgradeController-method-action-types.js'; +import { associateAddressStep } from './steps/associate-address.js'; +import { buildDelegationStep } from './steps/build-delegations.js'; +import { eip7702AuthorizationStep } from './steps/eip-7702-authorization.js'; +import { registerIntentsStep } from './steps/register-intents.js'; +import type { Step } from './steps/step.js'; +import type { UpgradeConfig } from './types.js'; /** * The Delegation Framework deployment version we resolve contract addresses diff --git a/packages/money-account-upgrade-controller/src/errors.test.ts b/packages/money-account-upgrade-controller/src/errors.test.ts index 53b3f1a885f..a886ee39a2f 100644 --- a/packages/money-account-upgrade-controller/src/errors.test.ts +++ b/packages/money-account-upgrade-controller/src/errors.test.ts @@ -1,7 +1,7 @@ import { MoneyAccountUpgradeStepError, isMoneyAccountUpgradeStepError, -} from './errors'; +} from './errors.js'; describe('MoneyAccountUpgradeStepError', () => { it('records the step name and preserves an Error cause', () => { diff --git a/packages/money-account-upgrade-controller/src/index.ts b/packages/money-account-upgrade-controller/src/index.ts index 784e62cfd50..e2bd2c62553 100644 --- a/packages/money-account-upgrade-controller/src/index.ts +++ b/packages/money-account-upgrade-controller/src/index.ts @@ -1,9 +1,9 @@ -export type { UpgradeConfig } from './types'; +export type { UpgradeConfig } from './types.js'; export { MoneyAccountUpgradeStepError, isMoneyAccountUpgradeStepError, -} from './errors'; -export { MoneyAccountUpgradeController } from './MoneyAccountUpgradeController'; +} from './errors.js'; +export { MoneyAccountUpgradeController } from './MoneyAccountUpgradeController.js'; export type { MoneyAccountUpgradeControllerState, MoneyAccountUpgradeControllerGetStateAction, @@ -11,5 +11,5 @@ export type { MoneyAccountUpgradeControllerStateChangedEvent, MoneyAccountUpgradeControllerEvents, MoneyAccountUpgradeControllerMessenger, -} from './MoneyAccountUpgradeController'; -export type { MoneyAccountUpgradeControllerUpgradeAccountAction } from './MoneyAccountUpgradeController-method-action-types'; +} from './MoneyAccountUpgradeController.js'; +export type { MoneyAccountUpgradeControllerUpgradeAccountAction } from './MoneyAccountUpgradeController-method-action-types.js'; diff --git a/packages/money-account-upgrade-controller/src/steps/associate-address.test.ts b/packages/money-account-upgrade-controller/src/steps/associate-address.test.ts index c1fafd7bd87..91da332af26 100644 --- a/packages/money-account-upgrade-controller/src/steps/associate-address.test.ts +++ b/packages/money-account-upgrade-controller/src/steps/associate-address.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MockAnyNamespace, @@ -6,8 +7,8 @@ import type { } from '@metamask/messenger'; import type { Hex } from '@metamask/utils'; -import type { MoneyAccountUpgradeControllerMessenger } from '../MoneyAccountUpgradeController'; -import { associateAddressStep } from './associate-address'; +import type { MoneyAccountUpgradeControllerMessenger } from '../MoneyAccountUpgradeController.js'; +import { associateAddressStep } from './associate-address.js'; const MOCK_ADDRESS = '0xAbCdEf1234567890AbCdEf1234567890AbCdEf12' as Hex; const MOCK_ADDRESS_LOWERCASE = MOCK_ADDRESS.toLowerCase() as Hex; diff --git a/packages/money-account-upgrade-controller/src/steps/associate-address.ts b/packages/money-account-upgrade-controller/src/steps/associate-address.ts index 4bb9c3fec09..bba2715962c 100644 --- a/packages/money-account-upgrade-controller/src/steps/associate-address.ts +++ b/packages/money-account-upgrade-controller/src/steps/associate-address.ts @@ -1,8 +1,8 @@ import type { Hex } from '@metamask/utils'; import { hasProperty } from '@metamask/utils'; -import { equalsIgnoreCase } from './delegation-matchers'; -import type { Step } from './step'; +import { equalsIgnoreCase } from './delegation-matchers.js'; +import type { Step } from './step.js'; /** * Determines whether an error is a CHOMP conflict (HTTP 409) response. diff --git a/packages/money-account-upgrade-controller/src/steps/build-delegations.test.ts b/packages/money-account-upgrade-controller/src/steps/build-delegations.test.ts index dc383b4c1d2..26897798621 100644 --- a/packages/money-account-upgrade-controller/src/steps/build-delegations.test.ts +++ b/packages/money-account-upgrade-controller/src/steps/build-delegations.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { DelegationResponse } from '@metamask/authenticated-user-storage'; import { ROOT_AUTHORITY, @@ -14,8 +15,8 @@ import type { } from '@metamask/messenger'; import type { Hex } from '@metamask/utils'; -import type { MoneyAccountUpgradeControllerMessenger } from '../MoneyAccountUpgradeController'; -import { buildDelegationStep } from './build-delegations'; +import type { MoneyAccountUpgradeControllerMessenger } from '../MoneyAccountUpgradeController.js'; +import { buildDelegationStep } from './build-delegations.js'; jest.mock('@metamask/delegation-core', () => ({ ROOT_AUTHORITY: diff --git a/packages/money-account-upgrade-controller/src/steps/build-delegations.ts b/packages/money-account-upgrade-controller/src/steps/build-delegations.ts index 3edf32fe292..6663c1de4d9 100644 --- a/packages/money-account-upgrade-controller/src/steps/build-delegations.ts +++ b/packages/money-account-upgrade-controller/src/steps/build-delegations.ts @@ -9,12 +9,12 @@ import { import { add0x, bytesToHex } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import type { MoneyAccountUpgradeControllerMessenger } from '../MoneyAccountUpgradeController'; +import type { MoneyAccountUpgradeControllerMessenger } from '../MoneyAccountUpgradeController.js'; import { equalsIgnoreCase, makeHasVedaRedeemerCaveat, -} from './delegation-matchers'; -import type { Step } from './step'; +} from './delegation-matchers.js'; +import type { Step } from './step.js'; const MAX_UINT256 = 2n ** 256n - 1n; const MAX_UINT256_HEX: Hex = add0x(MAX_UINT256.toString(16)); diff --git a/packages/money-account-upgrade-controller/src/steps/eip-7702-authorization.test.ts b/packages/money-account-upgrade-controller/src/steps/eip-7702-authorization.test.ts index e1c179fc8fb..205b70cdddd 100644 --- a/packages/money-account-upgrade-controller/src/steps/eip-7702-authorization.test.ts +++ b/packages/money-account-upgrade-controller/src/steps/eip-7702-authorization.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { MockAnyNamespace, @@ -6,8 +7,8 @@ import type { } from '@metamask/messenger'; import type { Hex } from '@metamask/utils'; -import type { MoneyAccountUpgradeControllerMessenger } from '../MoneyAccountUpgradeController'; -import { eip7702AuthorizationStep } from './eip-7702-authorization'; +import type { MoneyAccountUpgradeControllerMessenger } from '../MoneyAccountUpgradeController.js'; +import { eip7702AuthorizationStep } from './eip-7702-authorization.js'; const MOCK_ADDRESS = '0xabcdef1234567890abcdef1234567890abcdef12' as Hex; const MOCK_CHAIN_ID = '0xaa36a7' as Hex; // 11155111 (Sepolia) — non-trivial decimal diff --git a/packages/money-account-upgrade-controller/src/steps/eip-7702-authorization.ts b/packages/money-account-upgrade-controller/src/steps/eip-7702-authorization.ts index f494a679452..2a2f29f25bc 100644 --- a/packages/money-account-upgrade-controller/src/steps/eip-7702-authorization.ts +++ b/packages/money-account-upgrade-controller/src/steps/eip-7702-authorization.ts @@ -2,7 +2,7 @@ import type { Provider } from '@metamask/network-controller'; import { add0x, isStrictHexString } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import type { Step, StepContext } from './step'; +import type { Step, StepContext } from './step.js'; const EIP_7702_DELEGATION_PREFIX = '0xef0100'; // '0x' (2) + 'ef0100' (6) + 20-byte address (40) = 48 characters. diff --git a/packages/money-account-upgrade-controller/src/steps/register-intents.test.ts b/packages/money-account-upgrade-controller/src/steps/register-intents.test.ts index 2d67e1498d6..5ef46a53890 100644 --- a/packages/money-account-upgrade-controller/src/steps/register-intents.test.ts +++ b/packages/money-account-upgrade-controller/src/steps/register-intents.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { DelegationResponse, DelegationMetadata, @@ -12,8 +13,8 @@ import type { } from '@metamask/messenger'; import type { Hex } from '@metamask/utils'; -import type { MoneyAccountUpgradeControllerMessenger } from '../MoneyAccountUpgradeController'; -import { registerIntentsStep } from './register-intents'; +import type { MoneyAccountUpgradeControllerMessenger } from '../MoneyAccountUpgradeController.js'; +import { registerIntentsStep } from './register-intents.js'; jest.mock('@metamask/delegation-core', () => ({ createRedeemerTerms: jest.fn(), diff --git a/packages/money-account-upgrade-controller/src/steps/register-intents.ts b/packages/money-account-upgrade-controller/src/steps/register-intents.ts index f3a3fe434d3..eda4b0d0b9d 100644 --- a/packages/money-account-upgrade-controller/src/steps/register-intents.ts +++ b/packages/money-account-upgrade-controller/src/steps/register-intents.ts @@ -7,8 +7,8 @@ import type { import { equalsIgnoreCase, makeHasVedaRedeemerCaveat, -} from './delegation-matchers'; -import type { Step } from './step'; +} from './delegation-matchers.js'; +import type { Step } from './step.js'; type IntentMetadataType = SendIntentParams['metadata']['type']; diff --git a/packages/money-account-upgrade-controller/src/steps/step.ts b/packages/money-account-upgrade-controller/src/steps/step.ts index 9537119d8ab..70e2855380e 100644 --- a/packages/money-account-upgrade-controller/src/steps/step.ts +++ b/packages/money-account-upgrade-controller/src/steps/step.ts @@ -1,6 +1,6 @@ import type { Hex } from '@metamask/utils'; -import type { MoneyAccountUpgradeControllerMessenger } from '../MoneyAccountUpgradeController'; +import type { MoneyAccountUpgradeControllerMessenger } from '../MoneyAccountUpgradeController.js'; /** * Context supplied to each step when it is run. From ce26321f3c158e62b5023e3eb0496e7d4594bbff Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:52:15 +0200 Subject: [PATCH 096/115] ESLint fix and `jest` global import for react-data-query --- packages/react-data-query/src/createUIQueryClient.test.ts | 7 ++++--- packages/react-data-query/src/hooks.test.ts | 3 ++- packages/react-data-query/src/index.ts | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/react-data-query/src/createUIQueryClient.test.ts b/packages/react-data-query/src/createUIQueryClient.test.ts index ddfe6ab9ed6..f78d8c9cf58 100644 --- a/packages/react-data-query/src/createUIQueryClient.test.ts +++ b/packages/react-data-query/src/createUIQueryClient.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { Messenger } from '@metamask/messenger'; import { Duration, inMilliseconds } from '@metamask/utils'; import { @@ -14,13 +15,13 @@ import { ExampleDataServiceEvents, GetActivityResponse, PageParam, -} from '../../base-data-service/tests/ExampleDataService'; +} from '../../base-data-service/tests/ExampleDataService.js'; import { mockAssets, mockTransactionsPage1, mockTransactionsPage2, -} from '../../base-data-service/tests/mocks'; -import { createUIQueryClient } from './createUIQueryClient'; +} from '../../base-data-service/tests/mocks.js'; +import { createUIQueryClient } from './createUIQueryClient.js'; const DATA_SERVICES = ['ExampleDataService']; diff --git a/packages/react-data-query/src/hooks.test.ts b/packages/react-data-query/src/hooks.test.ts index 779bda9838d..2c3cb20984f 100644 --- a/packages/react-data-query/src/hooks.test.ts +++ b/packages/react-data-query/src/hooks.test.ts @@ -1,9 +1,10 @@ +import { jest } from '@jest/globals'; import { useQuery as useQueryTanStack, useInfiniteQuery as useInfiniteQueryTanStack, } from '@tanstack/react-query'; -import { useInfiniteQuery, useQuery } from './hooks'; +import { useInfiniteQuery, useQuery } from './hooks.js'; jest.mock('@tanstack/react-query', () => ({ useQuery: jest.fn(), diff --git a/packages/react-data-query/src/index.ts b/packages/react-data-query/src/index.ts index f121a7eed64..00a1a60ab4e 100644 --- a/packages/react-data-query/src/index.ts +++ b/packages/react-data-query/src/index.ts @@ -1,2 +1,2 @@ -export { createUIQueryClient } from './createUIQueryClient'; -export { useQuery, useInfiniteQuery } from './hooks'; +export { createUIQueryClient } from './createUIQueryClient.js'; +export { useQuery, useInfiniteQuery } from './hooks.js'; From 4c0c49f75b6d45aaef13f317946459fe8f01a8ef Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:52:19 +0200 Subject: [PATCH 097/115] ESLint fix and `jest` global import for sentinel-api-service --- packages/sentinel-api-service/src/index.ts | 12 ++++++------ .../sentinel-api-service-method-action-types.ts | 2 +- .../src/sentinel-api-service.test.ts | 15 ++++++++------- .../src/sentinel-api-service.ts | 10 +++++----- packages/sentinel-api-service/src/types.ts | 4 ++-- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/packages/sentinel-api-service/src/index.ts b/packages/sentinel-api-service/src/index.ts index f3160e4f359..62b5fdaf971 100644 --- a/packages/sentinel-api-service/src/index.ts +++ b/packages/sentinel-api-service/src/index.ts @@ -1,5 +1,5 @@ -export { SentinelApiService } from './sentinel-api-service'; -export { SentinelEnvironment, serviceName } from './constants'; +export { SentinelApiService } from './sentinel-api-service.js'; +export { SentinelEnvironment, serviceName } from './constants.js'; export type { SentinelApiServiceActions, SentinelApiServiceEvents, @@ -27,20 +27,20 @@ export type { SentinelSmartTransactionRequest, SentinelSmartTransactionResponse, SentinelStateOverrides, -} from './types'; +} from './types.js'; export { SentinelFeature, SentinelKind, SentinelSmartTransactionStatus, -} from './types'; +} from './types.js'; export type { SentinelApiServiceGetNetworksAction, SentinelApiServiceSimulateTransactionsAction, SentinelApiServiceSubmitRelayTransactionAction, SentinelApiServiceGetSmartTransactionAction, -} from './sentinel-api-service-method-action-types'; +} from './sentinel-api-service-method-action-types.js'; export { SentinelApiResponseValidationError, SentinelChainNotSupportedError, SentinelJsonRpcError, -} from './errors'; +} from './errors.js'; diff --git a/packages/sentinel-api-service/src/sentinel-api-service-method-action-types.ts b/packages/sentinel-api-service/src/sentinel-api-service-method-action-types.ts index 8fe319d6b8f..60ee169751d 100644 --- a/packages/sentinel-api-service/src/sentinel-api-service-method-action-types.ts +++ b/packages/sentinel-api-service/src/sentinel-api-service-method-action-types.ts @@ -3,7 +3,7 @@ * Do not edit manually. */ -import type { SentinelApiService } from './sentinel-api-service'; +import type { SentinelApiService } from './sentinel-api-service.js'; /** * Fetches the Sentinel supported-network registry. The result is cached, as diff --git a/packages/sentinel-api-service/src/sentinel-api-service.test.ts b/packages/sentinel-api-service/src/sentinel-api-service.test.ts index 3066586c356..9605cd20bb5 100644 --- a/packages/sentinel-api-service/src/sentinel-api-service.test.ts +++ b/packages/sentinel-api-service/src/sentinel-api-service.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { HttpError } from '@metamask/controller-utils'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -6,7 +7,7 @@ import type { MessengerEvents, } from '@metamask/messenger'; import type { Hex } from '@metamask/utils'; -import nock, { cleanAll as nockCleanAll } from 'nock'; +import nock from 'nock'; import { BASE_URL_TEMPLATE, @@ -16,23 +17,23 @@ import { RPC_METHOD_SIMULATE, SentinelEnvironment, serviceName, -} from './constants'; +} from './constants.js'; import { SentinelApiResponseValidationError, SentinelChainNotSupportedError, SentinelJsonRpcError, -} from './errors'; -import { SentinelApiService } from './sentinel-api-service'; +} from './errors.js'; +import { SentinelApiService } from './sentinel-api-service.js'; import { SentinelFeature, SentinelKind, SentinelSmartTransactionStatus, -} from './types'; +} from './types.js'; import type { SentinelApiServiceMessenger, SentinelRelaySubmitRequest, SentinelSimulationRequest, -} from './types'; +} from './types.js'; // ============================================================ // Fixtures @@ -212,7 +213,7 @@ function mockNetworks(times = 1): nock.Scope { describe('SentinelApiService', () => { afterEach(() => { - nockCleanAll(); + nock.cleanAll(); }); describe('errors', () => { diff --git a/packages/sentinel-api-service/src/sentinel-api-service.ts b/packages/sentinel-api-service/src/sentinel-api-service.ts index fe11b05ac7c..6e98281dd7c 100644 --- a/packages/sentinel-api-service/src/sentinel-api-service.ts +++ b/packages/sentinel-api-service/src/sentinel-api-service.ts @@ -14,19 +14,19 @@ import { RPC_METHOD_SEND_RELAY, RPC_METHOD_SIMULATE, serviceName, -} from './constants'; +} from './constants.js'; import { SentinelApiResponseValidationError, SentinelChainNotSupportedError, SentinelJsonRpcError, -} from './errors'; -import { projectLogger, createModuleLogger } from './logger'; +} from './errors.js'; +import { projectLogger, createModuleLogger } from './logger.js'; import { SentinelSmartTransactionResponseStruct, SentinelNetworkRegistryStruct, SentinelRelaySubmitResponseStruct, SentinelSimulationResponseStruct, -} from './structs'; +} from './structs.js'; import type { SentinelApiServiceMessenger, SentinelApiServiceOptions, @@ -38,7 +38,7 @@ import type { SentinelSimulationResponse, SentinelSmartTransactionRequest, SentinelSmartTransactionResponse, -} from './types'; +} from './types.js'; const log = createModuleLogger(projectLogger, serviceName); diff --git a/packages/sentinel-api-service/src/types.ts b/packages/sentinel-api-service/src/types.ts index bc6b89e6b30..63658e6e4b8 100644 --- a/packages/sentinel-api-service/src/types.ts +++ b/packages/sentinel-api-service/src/types.ts @@ -8,8 +8,8 @@ import type { Messenger } from '@metamask/messenger'; import type { Hex } from '@metamask/utils'; import type { QueryClientConfig } from '@tanstack/query-core'; -import type { SentinelEnvironment, serviceName } from './constants'; -import type { SentinelApiServiceMethodActions } from './sentinel-api-service-method-action-types'; +import type { SentinelEnvironment, serviceName } from './constants.js'; +import type { SentinelApiServiceMethodActions } from './sentinel-api-service-method-action-types.js'; /** * Invalidates cached queries for {@link SentinelApiService}. From 1a2581133f25c4cf2831c6df85cdd3826782483e Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:53:09 +0200 Subject: [PATCH 098/115] ESLint fix and `jest` global import for eip-7702-internal-rpc-middleware --- packages/eip-7702-internal-rpc-middleware/src/index.ts | 10 +++++----- .../eip-7702-internal-rpc-middleware/src/utils.test.ts | 3 ++- .../src/wallet_getAccountUpgradeStatus.test.ts | 5 +++-- .../src/wallet_getAccountUpgradeStatus.ts | 8 ++++---- .../src/wallet_upgradeAccount.test.ts | 5 +++-- .../src/wallet_upgradeAccount.ts | 6 +++--- 6 files changed, 20 insertions(+), 17 deletions(-) diff --git a/packages/eip-7702-internal-rpc-middleware/src/index.ts b/packages/eip-7702-internal-rpc-middleware/src/index.ts index 09ee48299bb..443b9000b16 100644 --- a/packages/eip-7702-internal-rpc-middleware/src/index.ts +++ b/packages/eip-7702-internal-rpc-middleware/src/index.ts @@ -1,12 +1,12 @@ // Method handlers -export { walletUpgradeAccount } from './wallet_upgradeAccount'; -export { walletGetAccountUpgradeStatus } from './wallet_getAccountUpgradeStatus'; +export { walletUpgradeAccount } from './wallet_upgradeAccount.js'; +export { walletGetAccountUpgradeStatus } from './wallet_getAccountUpgradeStatus.js'; // Utilities -export { validateParams, validateAndNormalizeAddress } from './utils'; +export { validateParams, validateAndNormalizeAddress } from './utils.js'; // Constants -export { METHOD_NAMES } from './constants'; +export { METHOD_NAMES } from './constants.js'; // Types export type { @@ -14,4 +14,4 @@ export type { UpgradeAccountResult, GetAccountUpgradeStatusParams, GetAccountUpgradeStatusResult, -} from './types'; +} from './types.js'; diff --git a/packages/eip-7702-internal-rpc-middleware/src/utils.test.ts b/packages/eip-7702-internal-rpc-middleware/src/utils.test.ts index c7b7afc962b..b9fd69df072 100644 --- a/packages/eip-7702-internal-rpc-middleware/src/utils.test.ts +++ b/packages/eip-7702-internal-rpc-middleware/src/utils.test.ts @@ -1,8 +1,9 @@ +import { jest } from '@jest/globals'; import { providerErrors, rpcErrors } from '@metamask/rpc-errors'; import { object, string, number } from '@metamask/superstruct'; import type { Hex } from '@metamask/utils'; -import { validateParams, validateAndNormalizeAddress } from './utils'; +import { validateParams, validateAndNormalizeAddress } from './utils.js'; describe('validateParams', () => { it('does not throw for valid parameters', () => { diff --git a/packages/eip-7702-internal-rpc-middleware/src/wallet_getAccountUpgradeStatus.test.ts b/packages/eip-7702-internal-rpc-middleware/src/wallet_getAccountUpgradeStatus.test.ts index 2c6edb15fd8..21df7dbefb2 100644 --- a/packages/eip-7702-internal-rpc-middleware/src/wallet_getAccountUpgradeStatus.test.ts +++ b/packages/eip-7702-internal-rpc-middleware/src/wallet_getAccountUpgradeStatus.test.ts @@ -1,8 +1,9 @@ +import { jest } from '@jest/globals'; import { rpcErrors } from '@metamask/rpc-errors'; import type { JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils'; -import type { GetAccountUpgradeStatusParams } from './types'; -import { walletGetAccountUpgradeStatus } from './wallet_getAccountUpgradeStatus'; +import type { GetAccountUpgradeStatusParams } from './types.js'; +import { walletGetAccountUpgradeStatus } from './wallet_getAccountUpgradeStatus.js'; const TEST_ACCOUNT = '0x1234567890123456789012345678901234567890'; const NETWORK_CLIENT_ID = 'mainnet'; diff --git a/packages/eip-7702-internal-rpc-middleware/src/wallet_getAccountUpgradeStatus.ts b/packages/eip-7702-internal-rpc-middleware/src/wallet_getAccountUpgradeStatus.ts index 41a2aa631fb..c72e6289aa3 100644 --- a/packages/eip-7702-internal-rpc-middleware/src/wallet_getAccountUpgradeStatus.ts +++ b/packages/eip-7702-internal-rpc-middleware/src/wallet_getAccountUpgradeStatus.ts @@ -6,10 +6,10 @@ import type { Hex, } from '@metamask/utils'; -import { DELEGATION_INDICATOR_PREFIX } from './constants'; -import type { GetAccountUpgradeStatusParams } from './types'; -import { GetAccountUpgradeStatusParamsStruct } from './types'; -import { validateParams, validateAndNormalizeAddress } from './utils'; +import { DELEGATION_INDICATOR_PREFIX } from './constants.js'; +import type { GetAccountUpgradeStatusParams } from './types.js'; +import { GetAccountUpgradeStatusParamsStruct } from './types.js'; +import { validateParams, validateAndNormalizeAddress } from './utils.js'; export type WalletGetAccountUpgradeStatusHooks = { getCurrentChainIdForDomain: (origin: string) => Hex | null; diff --git a/packages/eip-7702-internal-rpc-middleware/src/wallet_upgradeAccount.test.ts b/packages/eip-7702-internal-rpc-middleware/src/wallet_upgradeAccount.test.ts index d80eacbca20..df8631ce5a1 100644 --- a/packages/eip-7702-internal-rpc-middleware/src/wallet_upgradeAccount.test.ts +++ b/packages/eip-7702-internal-rpc-middleware/src/wallet_upgradeAccount.test.ts @@ -1,8 +1,9 @@ +import { jest } from '@jest/globals'; import { rpcErrors } from '@metamask/rpc-errors'; import type { JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils'; -import type { UpgradeAccountParams } from './types'; -import { walletUpgradeAccount } from './wallet_upgradeAccount'; +import type { UpgradeAccountParams } from './types.js'; +import { walletUpgradeAccount } from './wallet_upgradeAccount.js'; const TEST_ACCOUNT = '0x1234567890123456789012345678901234567890'; const UPGRADE_CONTRACT = '0x0000000000000000000000000000000000000000'; diff --git a/packages/eip-7702-internal-rpc-middleware/src/wallet_upgradeAccount.ts b/packages/eip-7702-internal-rpc-middleware/src/wallet_upgradeAccount.ts index af786b26e2d..f17f65fe54e 100644 --- a/packages/eip-7702-internal-rpc-middleware/src/wallet_upgradeAccount.ts +++ b/packages/eip-7702-internal-rpc-middleware/src/wallet_upgradeAccount.ts @@ -5,9 +5,9 @@ import type { Hex, } from '@metamask/utils'; -import type { UpgradeAccountParams } from './types'; -import { UpgradeAccountParamsStruct } from './types'; -import { validateParams, validateAndNormalizeAddress } from './utils'; +import type { UpgradeAccountParams } from './types.js'; +import { UpgradeAccountParamsStruct } from './types.js'; +import { validateParams, validateAndNormalizeAddress } from './utils.js'; export type WalletUpgradeAccountHooks = { upgradeAccount: ( From 5266c7fda235f1cc561595a2590a7de0a2d91a77 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:53:10 +0200 Subject: [PATCH 099/115] ESLint fix and `jest` global import for local-node-utils --- packages/local-node-utils/src/archive.ts | 2 +- packages/local-node-utils/src/artifact.ts | 2 +- .../local-node-utils/src/cache-directory.ts | 2 +- packages/local-node-utils/src/command.test.ts | 2 +- .../src/executable-wrapper.ts | 2 +- packages/local-node-utils/src/index.test.ts | 10 +++---- packages/local-node-utils/src/index.ts | 30 +++++++++---------- .../local-node-utils/src/integration.test.ts | 25 ++++++++-------- packages/local-node-utils/src/package-json.ts | 2 +- 9 files changed, 39 insertions(+), 38 deletions(-) diff --git a/packages/local-node-utils/src/archive.ts b/packages/local-node-utils/src/archive.ts index c7310feffd8..81fc6bf86b6 100644 --- a/packages/local-node-utils/src/archive.ts +++ b/packages/local-node-utils/src/archive.ts @@ -1,4 +1,4 @@ -import { runCommand } from './command'; +import { runCommand } from './command.js'; export async function extractTarGzArchive( archivePath: string, diff --git a/packages/local-node-utils/src/artifact.ts b/packages/local-node-utils/src/artifact.ts index 85b2d9a4cbc..4a7093ff081 100644 --- a/packages/local-node-utils/src/artifact.ts +++ b/packages/local-node-utils/src/artifact.ts @@ -1,7 +1,7 @@ /* eslint-disable import-x/no-nodejs-modules */ import { createHash } from 'node:crypto'; -import type { ArtifactConfig, ArtifactPlatformConfig } from './types'; +import type { ArtifactConfig, ArtifactPlatformConfig } from './types.js'; export function mergeArtifactConfig( defaults: ArtifactConfig, diff --git a/packages/local-node-utils/src/cache-directory.ts b/packages/local-node-utils/src/cache-directory.ts index 0bfd0215bcf..be720afddd1 100644 --- a/packages/local-node-utils/src/cache-directory.ts +++ b/packages/local-node-utils/src/cache-directory.ts @@ -4,7 +4,7 @@ import { homedir } from 'node:os'; import { join } from 'node:path'; import { parse as parseYaml } from 'yaml'; -import { isFileMissingError } from './errors'; +import { isFileMissingError } from './errors.js'; export function getMetamaskCacheDirectory({ cwd = process.cwd(), diff --git a/packages/local-node-utils/src/command.test.ts b/packages/local-node-utils/src/command.test.ts index 1b4f94c0b6a..5319ab59479 100644 --- a/packages/local-node-utils/src/command.test.ts +++ b/packages/local-node-utils/src/command.test.ts @@ -1,7 +1,7 @@ /* eslint-disable jest/expect-expect */ import assert from 'node:assert/strict'; -import { runCommand } from './command'; +import { runCommand } from './command.js'; describe('runCommand', () => { it('runs a successful command', async () => { diff --git a/packages/local-node-utils/src/executable-wrapper.ts b/packages/local-node-utils/src/executable-wrapper.ts index f01b3dd612b..4b6a76722ae 100644 --- a/packages/local-node-utils/src/executable-wrapper.ts +++ b/packages/local-node-utils/src/executable-wrapper.ts @@ -2,7 +2,7 @@ import { chmod, mkdir, unlink, writeFile } from 'node:fs/promises'; import { join, relative, resolve } from 'node:path'; -import { isFileMissingError } from './errors'; +import { isFileMissingError } from './errors.js'; export type ExecutableWrapperPathResolution = 'absolute' | 'relative'; diff --git a/packages/local-node-utils/src/index.test.ts b/packages/local-node-utils/src/index.test.ts index 285994c62b5..beb4e0864ed 100644 --- a/packages/local-node-utils/src/index.test.ts +++ b/packages/local-node-utils/src/index.test.ts @@ -10,11 +10,11 @@ import { mergeArtifactConfig, requireCompletePlatformConfig, resolvePlatformConfig, -} from './artifact'; -import { getMetamaskCacheDirectory } from './cache-directory'; -import { readCliValue } from './cli'; -import { readPackageJsonToolConfig } from './package-json'; -import type { ArtifactConfig } from './types'; +} from './artifact.js'; +import { getMetamaskCacheDirectory } from './cache-directory.js'; +import { readCliValue } from './cli.js'; +import { readPackageJsonToolConfig } from './package-json.js'; +import type { ArtifactConfig } from './types.js'; describe('artifact helpers', () => { const defaults: ArtifactConfig = { diff --git a/packages/local-node-utils/src/index.ts b/packages/local-node-utils/src/index.ts index 5209ae45993..c68ea6b9033 100644 --- a/packages/local-node-utils/src/index.ts +++ b/packages/local-node-utils/src/index.ts @@ -2,23 +2,23 @@ export type { ArtifactConfig, ArtifactPlatformConfig, InstallDependencies, -} from './types'; +} from './types.js'; export { getCacheKey, mergeArtifactConfig, requireCompletePlatformConfig, resolvePlatformConfig, -} from './artifact'; -export { cleanInstallerCache } from './cache'; -export { getMetamaskCacheDirectory } from './cache-directory'; -export { verifyFileChecksum } from './checksum'; -export { readCliValue } from './cli'; -export { runCommand } from './command'; -export { isFileMissingError } from './errors'; -export { extractTarBz2Archive, extractTarGzArchive } from './archive'; -export { downloadFileFromUrl } from './download'; -export { installExecutableWrapper } from './executable-wrapper'; -export type { ExecutableWrapperPathResolution } from './executable-wrapper'; -export { findExecutable, isDirectory, isFile } from './filesystem'; -export { getPlatformKey, normalizeSystemArchitecture } from './platform'; -export { readPackageJsonToolConfig } from './package-json'; +} from './artifact.js'; +export { cleanInstallerCache } from './cache.js'; +export { getMetamaskCacheDirectory } from './cache-directory.js'; +export { verifyFileChecksum } from './checksum.js'; +export { readCliValue } from './cli.js'; +export { runCommand } from './command.js'; +export { isFileMissingError } from './errors.js'; +export { extractTarBz2Archive, extractTarGzArchive } from './archive.js'; +export { downloadFileFromUrl } from './download.js'; +export { installExecutableWrapper } from './executable-wrapper.js'; +export type { ExecutableWrapperPathResolution } from './executable-wrapper.js'; +export { findExecutable, isDirectory, isFile } from './filesystem.js'; +export { getPlatformKey, normalizeSystemArchitecture } from './platform.js'; +export { readPackageJsonToolConfig } from './package-json.js'; diff --git a/packages/local-node-utils/src/integration.test.ts b/packages/local-node-utils/src/integration.test.ts index 5d94b2d8559..2b44ab83bd3 100644 --- a/packages/local-node-utils/src/integration.test.ts +++ b/packages/local-node-utils/src/integration.test.ts @@ -1,4 +1,5 @@ -import nock, { cleanAll } from 'nock'; +import { jest } from '@jest/globals'; +import nock from 'nock'; /* eslint-disable jest/expect-expect, n/no-sync */ import assert from 'node:assert/strict'; import { @@ -12,16 +13,16 @@ import { import { tmpdir } from 'node:os'; import { join } from 'node:path'; -import { extractTarBz2Archive, extractTarGzArchive } from './archive'; -import { cleanInstallerCache } from './cache'; -import { getMetamaskCacheDirectory } from './cache-directory'; -import { verifyFileChecksum } from './checksum'; -import { runCommand } from './command'; -import { downloadFileFromUrl, openDownloadStream } from './download'; -import { isFileMissingError } from './errors'; -import { installExecutableWrapper } from './executable-wrapper'; -import { findExecutable, isDirectory, isFile } from './filesystem'; -import { getPlatformKey, normalizeSystemArchitecture } from './platform'; +import { extractTarBz2Archive, extractTarGzArchive } from './archive.js'; +import { getMetamaskCacheDirectory } from './cache-directory.js'; +import { cleanInstallerCache } from './cache.js'; +import { verifyFileChecksum } from './checksum.js'; +import { runCommand } from './command.js'; +import { downloadFileFromUrl, openDownloadStream } from './download.js'; +import { isFileMissingError } from './errors.js'; +import { installExecutableWrapper } from './executable-wrapper.js'; +import { findExecutable, isDirectory, isFile } from './filesystem.js'; +import { getPlatformKey, normalizeSystemArchitecture } from './platform.js'; jest.mock('./command', () => ({ runCommand: jest.fn(), @@ -76,7 +77,7 @@ describe('cache', () => { describe('download', () => { afterEach(() => { - cleanAll(); + nock.cleanAll(); }); it('downloads a file from a URL', async () => { diff --git a/packages/local-node-utils/src/package-json.ts b/packages/local-node-utils/src/package-json.ts index ab9a55eff2f..cd5abf3fa9a 100644 --- a/packages/local-node-utils/src/package-json.ts +++ b/packages/local-node-utils/src/package-json.ts @@ -2,7 +2,7 @@ import { readFileSync } from 'node:fs'; import { join } from 'node:path'; -import { isFileMissingError } from './errors'; +import { isFileMissingError } from './errors.js'; export function readPackageJsonToolConfig({ cwd = process.cwd(), From c72ee8f14dbb678507616fe268236729c38b52dd Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:53:15 +0200 Subject: [PATCH 100/115] ESLint fix and `jest` global import for messenger-cli --- packages/messenger-cli/src/check.test.ts | 7 ++++--- packages/messenger-cli/src/check.ts | 6 +++--- packages/messenger-cli/src/cli.test.ts | 1 + packages/messenger-cli/src/cli.ts | 8 ++++---- packages/messenger-cli/src/fix.test.ts | 7 ++++--- packages/messenger-cli/src/fix.ts | 6 +++--- packages/messenger-cli/src/generate-content.test.ts | 4 ++-- packages/messenger-cli/src/generate-content.ts | 4 ++-- packages/messenger-cli/src/parse-source.test.ts | 6 +++++- 9 files changed, 28 insertions(+), 21 deletions(-) diff --git a/packages/messenger-cli/src/check.test.ts b/packages/messenger-cli/src/check.test.ts index c7232738c1f..914a1ff4e20 100644 --- a/packages/messenger-cli/src/check.test.ts +++ b/packages/messenger-cli/src/check.test.ts @@ -1,10 +1,11 @@ +import { jest } from '@jest/globals'; import { createSandbox } from '@metamask/utils/node'; import * as fs from 'node:fs'; import * as path from 'node:path'; -import { checkActionTypesFiles } from './check'; -import { generateActionTypesContent } from './generate-content'; -import type { SourceInfo } from './parse-source'; +import { checkActionTypesFiles } from './check.js'; +import { generateActionTypesContent } from './generate-content.js'; +import type { SourceInfo } from './parse-source.js'; const { withinSandbox } = createSandbox('messenger/check-action-types'); diff --git a/packages/messenger-cli/src/check.ts b/packages/messenger-cli/src/check.ts index 46009ff8b58..20903d4a875 100644 --- a/packages/messenger-cli/src/check.ts +++ b/packages/messenger-cli/src/check.ts @@ -1,9 +1,9 @@ import * as fs from 'node:fs'; import * as path from 'node:path'; -import { generateActionTypesContent } from './generate-content'; -import type { SourceInfo } from './parse-source'; -import { Formatter } from './types'; +import { generateActionTypesContent } from './generate-content.js'; +import type { SourceInfo } from './parse-source.js'; +import { Formatter } from './types.js'; /** * Checks if generated action types files are up to date. diff --git a/packages/messenger-cli/src/cli.test.ts b/packages/messenger-cli/src/cli.test.ts index 4b189086d1d..e70226b90fd 100644 --- a/packages/messenger-cli/src/cli.test.ts +++ b/packages/messenger-cli/src/cli.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { createSandbox } from '@metamask/utils/node'; import execa from 'execa'; import * as fs from 'node:fs'; diff --git a/packages/messenger-cli/src/cli.ts b/packages/messenger-cli/src/cli.ts index 27073853b96..b94cb59c0f3 100644 --- a/packages/messenger-cli/src/cli.ts +++ b/packages/messenger-cli/src/cli.ts @@ -2,10 +2,10 @@ import yargs from 'yargs'; -import { checkActionTypesFiles } from './check'; -import { generateAllActionTypesFiles } from './fix'; -import { findSourcesWithExposedMethods } from './parse-source'; -import { Formatter } from './types'; +import { checkActionTypesFiles } from './check.js'; +import { generateAllActionTypesFiles } from './fix.js'; +import { findSourcesWithExposedMethods } from './parse-source.js'; +import { Formatter } from './types.js'; type CommandLineArguments = { check: boolean; diff --git a/packages/messenger-cli/src/fix.test.ts b/packages/messenger-cli/src/fix.test.ts index dfd207dd5a6..a8716056da3 100644 --- a/packages/messenger-cli/src/fix.test.ts +++ b/packages/messenger-cli/src/fix.test.ts @@ -1,10 +1,11 @@ +import { jest } from '@jest/globals'; import { createSandbox } from '@metamask/utils/node'; import * as fs from 'node:fs'; import * as path from 'node:path'; -import { generateAllActionTypesFiles } from './fix'; -import { generateActionTypesContent } from './generate-content'; -import type { SourceInfo } from './parse-source'; +import { generateAllActionTypesFiles } from './fix.js'; +import { generateActionTypesContent } from './generate-content.js'; +import type { SourceInfo } from './parse-source.js'; const { withinSandbox } = createSandbox('messenger/fix-action-types'); diff --git a/packages/messenger-cli/src/fix.ts b/packages/messenger-cli/src/fix.ts index 46b5860cf3d..63d99034647 100644 --- a/packages/messenger-cli/src/fix.ts +++ b/packages/messenger-cli/src/fix.ts @@ -1,9 +1,9 @@ import * as fs from 'node:fs'; import * as path from 'node:path'; -import { generateActionTypesContent } from './generate-content'; -import type { SourceInfo } from './parse-source'; -import type { Formatter } from './types'; +import { generateActionTypesContent } from './generate-content.js'; +import type { SourceInfo } from './parse-source.js'; +import type { Formatter } from './types.js'; /** * Generates action types files for all controllers/services. diff --git a/packages/messenger-cli/src/generate-content.test.ts b/packages/messenger-cli/src/generate-content.test.ts index 1e939a9b5fb..85519348f06 100644 --- a/packages/messenger-cli/src/generate-content.test.ts +++ b/packages/messenger-cli/src/generate-content.test.ts @@ -1,5 +1,5 @@ -import { generateActionTypesContent } from './generate-content'; -import type { SourceInfo } from './parse-source'; +import { generateActionTypesContent } from './generate-content.js'; +import type { SourceInfo } from './parse-source.js'; describe('generateActionTypesContent', () => { it('generates action types for a controller with one method', async () => { diff --git a/packages/messenger-cli/src/generate-content.ts b/packages/messenger-cli/src/generate-content.ts index 3bfc3017771..76e4fef242b 100644 --- a/packages/messenger-cli/src/generate-content.ts +++ b/packages/messenger-cli/src/generate-content.ts @@ -1,8 +1,8 @@ import { assertExhaustive, getErrorMessage } from '@metamask/utils'; import * as path from 'node:path'; -import type { SourceInfo } from './parse-source'; -import { Formatter } from './types'; +import type { SourceInfo } from './parse-source.js'; +import { Formatter } from './types.js'; /** * The default options used by Oxfmt and Prettier when formatting the generated diff --git a/packages/messenger-cli/src/parse-source.test.ts b/packages/messenger-cli/src/parse-source.test.ts index 80366d4994a..d9c1257bc25 100644 --- a/packages/messenger-cli/src/parse-source.test.ts +++ b/packages/messenger-cli/src/parse-source.test.ts @@ -1,8 +1,12 @@ +import { jest } from '@jest/globals'; import { createSandbox } from '@metamask/utils/node'; import * as fs from 'node:fs'; import * as path from 'node:path'; -import { findSourcesWithExposedMethods, parseSourceFile } from './parse-source'; +import { + findSourcesWithExposedMethods, + parseSourceFile, +} from './parse-source.js'; const { withinSandbox: withinParseSourceSandbox } = createSandbox( 'messenger/parse-source', From 07f3e3d2b70ace7cedcb8d698df1fae867fd8499 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:53:15 +0200 Subject: [PATCH 101/115] ESLint fix and `jest` global import for wallet-cli --- .../src/commands/daemon/call.test.ts | 8 +++++--- .../wallet-cli/src/commands/daemon/call.ts | 6 +++--- .../src/commands/daemon/list.test.ts | 8 +++++--- .../wallet-cli/src/commands/daemon/list.ts | 6 +++--- .../src/commands/daemon/purge.test.ts | 11 +++++----- .../wallet-cli/src/commands/daemon/purge.ts | 8 ++++---- .../src/commands/daemon/start.test.ts | 8 +++++--- .../wallet-cli/src/commands/daemon/start.ts | 4 ++-- .../src/commands/daemon/status.test.ts | 10 ++++++---- .../wallet-cli/src/commands/daemon/status.ts | 8 ++++---- .../src/commands/daemon/stop.test.ts | 12 ++++++----- .../wallet-cli/src/commands/daemon/stop.ts | 8 ++++---- .../src/commands/wallet/unlock.test.ts | 10 ++++++---- .../wallet-cli/src/commands/wallet/unlock.ts | 8 ++++---- .../src/daemon/daemon-client.test.ts | 5 +++-- .../wallet-cli/src/daemon/daemon-client.ts | 4 ++-- .../src/daemon/daemon-entry.test.ts | 17 ++++++++-------- .../wallet-cli/src/daemon/daemon-entry.ts | 20 +++++++++---------- .../src/daemon/daemon-spawn.test.ts | 13 ++++++------ .../wallet-cli/src/daemon/daemon-spawn.ts | 8 ++++---- .../wallet-cli/src/daemon/data-dir.test.ts | 3 ++- packages/wallet-cli/src/daemon/paths.test.ts | 2 +- packages/wallet-cli/src/daemon/paths.ts | 2 +- .../wallet-cli/src/daemon/prompts.test.ts | 7 ++++--- .../src/daemon/rpc-socket-server.test.ts | 5 +++-- .../src/daemon/rpc-socket-server.ts | 4 ++-- .../wallet-cli/src/daemon/secrets.test.ts | 8 +++----- packages/wallet-cli/src/daemon/secrets.ts | 2 +- .../wallet-cli/src/daemon/socket-line.test.ts | 3 ++- .../src/daemon/socket.integration.test.ts | 9 +++++---- .../wallet-cli/src/daemon/stop-daemon.test.ts | 7 ++++--- packages/wallet-cli/src/daemon/stop-daemon.ts | 4 ++-- packages/wallet-cli/src/daemon/types.ts | 2 +- packages/wallet-cli/src/daemon/utils.test.ts | 3 ++- .../daemon/wallet-factory.integration.test.ts | 5 +++-- .../src/daemon/wallet-factory.test.ts | 9 +++++---- .../wallet-cli/src/daemon/wallet-factory.ts | 8 ++++---- .../src/persistence/KeyValueStore.test.ts | 2 +- .../src/persistence/persistence.test.ts | 5 +++-- .../wallet-cli/src/persistence/persistence.ts | 2 +- 40 files changed, 149 insertions(+), 125 deletions(-) diff --git a/packages/wallet-cli/src/commands/daemon/call.test.ts b/packages/wallet-cli/src/commands/daemon/call.test.ts index c39f933b1a8..809022f517e 100644 --- a/packages/wallet-cli/src/commands/daemon/call.test.ts +++ b/packages/wallet-cli/src/commands/daemon/call.test.ts @@ -1,6 +1,8 @@ -import { sendCommand } from '../../daemon/daemon-client'; -import { runCommand } from '../../test/run-command'; -import DaemonCall from './call'; +import { jest } from '@jest/globals'; + +import { sendCommand } from '../../daemon/daemon-client.js'; +import { runCommand } from '../../test/run-command.js'; +import DaemonCall from './call.js'; jest.mock('../../daemon/daemon-client'); diff --git a/packages/wallet-cli/src/commands/daemon/call.ts b/packages/wallet-cli/src/commands/daemon/call.ts index 3a4a2a989ce..bf9ad50c22a 100644 --- a/packages/wallet-cli/src/commands/daemon/call.ts +++ b/packages/wallet-cli/src/commands/daemon/call.ts @@ -2,12 +2,12 @@ import type { Json } from '@metamask/utils'; import { isJsonRpcFailure } from '@metamask/utils'; import { Args, Command, Flags } from '@oclif/core'; -import { sendCommand } from '../../daemon/daemon-client'; -import { getDaemonPaths } from '../../daemon/paths'; +import { sendCommand } from '../../daemon/daemon-client.js'; +import { getDaemonPaths } from '../../daemon/paths.js'; import { formatJsonRpcError, makeDaemonConnectionError, -} from '../../daemon/utils'; +} from '../../daemon/utils.js'; export default class DaemonCall extends Command { static override description = 'Call a messenger action on the wallet daemon'; diff --git a/packages/wallet-cli/src/commands/daemon/list.test.ts b/packages/wallet-cli/src/commands/daemon/list.test.ts index 2a9843c0e2e..d09ea8e3bf2 100644 --- a/packages/wallet-cli/src/commands/daemon/list.test.ts +++ b/packages/wallet-cli/src/commands/daemon/list.test.ts @@ -1,6 +1,8 @@ -import { sendCommand } from '../../daemon/daemon-client'; -import { runCommand } from '../../test/run-command'; -import DaemonList from './list'; +import { jest } from '@jest/globals'; + +import { sendCommand } from '../../daemon/daemon-client.js'; +import { runCommand } from '../../test/run-command.js'; +import DaemonList from './list.js'; jest.mock('../../daemon/daemon-client'); diff --git a/packages/wallet-cli/src/commands/daemon/list.ts b/packages/wallet-cli/src/commands/daemon/list.ts index a4d66bc6458..f54e024dc36 100644 --- a/packages/wallet-cli/src/commands/daemon/list.ts +++ b/packages/wallet-cli/src/commands/daemon/list.ts @@ -1,13 +1,13 @@ import { isJsonRpcFailure } from '@metamask/utils'; import { Command } from '@oclif/core'; -import { sendCommand } from '../../daemon/daemon-client'; -import { getDaemonPaths } from '../../daemon/paths'; +import { sendCommand } from '../../daemon/daemon-client.js'; +import { getDaemonPaths } from '../../daemon/paths.js'; import { formatJsonRpcError, isStringArray, makeDaemonConnectionError, -} from '../../daemon/utils'; +} from '../../daemon/utils.js'; export default class DaemonList extends Command { static override description = diff --git a/packages/wallet-cli/src/commands/daemon/purge.test.ts b/packages/wallet-cli/src/commands/daemon/purge.test.ts index 78c2d39aedf..ba8d636c9c8 100644 --- a/packages/wallet-cli/src/commands/daemon/purge.test.ts +++ b/packages/wallet-cli/src/commands/daemon/purge.test.ts @@ -1,10 +1,11 @@ +import { jest } from '@jest/globals'; import { rm } from 'node:fs/promises'; -import { pingDaemon } from '../../daemon/daemon-client'; -import { confirmPurge } from '../../daemon/prompts'; -import { stopDaemon } from '../../daemon/stop-daemon'; -import { runCommand } from '../../test/run-command'; -import DaemonPurge from './purge'; +import { pingDaemon } from '../../daemon/daemon-client.js'; +import { confirmPurge } from '../../daemon/prompts.js'; +import { stopDaemon } from '../../daemon/stop-daemon.js'; +import { runCommand } from '../../test/run-command.js'; +import DaemonPurge from './purge.js'; jest.mock('node:fs/promises'); jest.mock('../../daemon/daemon-client'); diff --git a/packages/wallet-cli/src/commands/daemon/purge.ts b/packages/wallet-cli/src/commands/daemon/purge.ts index d3f56d593ae..0fe63dc0a96 100644 --- a/packages/wallet-cli/src/commands/daemon/purge.ts +++ b/packages/wallet-cli/src/commands/daemon/purge.ts @@ -1,10 +1,10 @@ import { Command, Flags } from '@oclif/core'; import { rm } from 'node:fs/promises'; -import { pingDaemon } from '../../daemon/daemon-client'; -import { getDaemonPaths } from '../../daemon/paths'; -import { confirmPurge } from '../../daemon/prompts'; -import { stopDaemon } from '../../daemon/stop-daemon'; +import { pingDaemon } from '../../daemon/daemon-client.js'; +import { getDaemonPaths } from '../../daemon/paths.js'; +import { confirmPurge } from '../../daemon/prompts.js'; +import { stopDaemon } from '../../daemon/stop-daemon.js'; export default class DaemonPurge extends Command { static override description = diff --git a/packages/wallet-cli/src/commands/daemon/start.test.ts b/packages/wallet-cli/src/commands/daemon/start.test.ts index 913371b39e3..5afcbf6cf6e 100644 --- a/packages/wallet-cli/src/commands/daemon/start.test.ts +++ b/packages/wallet-cli/src/commands/daemon/start.test.ts @@ -1,6 +1,8 @@ -import { ensureDaemon } from '../../daemon/daemon-spawn'; -import { runCommand } from '../../test/run-command'; -import DaemonStart from './start'; +import { jest } from '@jest/globals'; + +import { ensureDaemon } from '../../daemon/daemon-spawn.js'; +import { runCommand } from '../../test/run-command.js'; +import DaemonStart from './start.js'; jest.mock('../../daemon/daemon-spawn'); diff --git a/packages/wallet-cli/src/commands/daemon/start.ts b/packages/wallet-cli/src/commands/daemon/start.ts index 27cad21bd8c..cf7aaee7774 100644 --- a/packages/wallet-cli/src/commands/daemon/start.ts +++ b/packages/wallet-cli/src/commands/daemon/start.ts @@ -1,7 +1,7 @@ import { Command, Flags } from '@oclif/core'; -import { ensureDaemon } from '../../daemon/daemon-spawn'; -import { Password, Srp } from '../../daemon/secrets'; +import { ensureDaemon } from '../../daemon/daemon-spawn.js'; +import { Password, Srp } from '../../daemon/secrets.js'; export default class DaemonStart extends Command { static override description = 'Start the wallet daemon'; diff --git a/packages/wallet-cli/src/commands/daemon/status.test.ts b/packages/wallet-cli/src/commands/daemon/status.test.ts index c6bf33b47ad..e5b10333556 100644 --- a/packages/wallet-cli/src/commands/daemon/status.test.ts +++ b/packages/wallet-cli/src/commands/daemon/status.test.ts @@ -1,7 +1,9 @@ -import { pingDaemon, sendCommand } from '../../daemon/daemon-client'; -import { isProcessAlive, readPidFile } from '../../daemon/utils'; -import { runCommand } from '../../test/run-command'; -import DaemonStatus from './status'; +import { jest } from '@jest/globals'; + +import { pingDaemon, sendCommand } from '../../daemon/daemon-client.js'; +import { isProcessAlive, readPidFile } from '../../daemon/utils.js'; +import { runCommand } from '../../test/run-command.js'; +import DaemonStatus from './status.js'; jest.mock('../../daemon/daemon-client'); jest.mock('../../daemon/utils'); diff --git a/packages/wallet-cli/src/commands/daemon/status.ts b/packages/wallet-cli/src/commands/daemon/status.ts index 24dfb5e68cc..a2c576631ba 100644 --- a/packages/wallet-cli/src/commands/daemon/status.ts +++ b/packages/wallet-cli/src/commands/daemon/status.ts @@ -1,10 +1,10 @@ import { isJsonRpcFailure } from '@metamask/utils'; import { Command } from '@oclif/core'; -import { pingDaemon, sendCommand } from '../../daemon/daemon-client'; -import { getDaemonPaths } from '../../daemon/paths'; -import type { DaemonStatusInfo } from '../../daemon/types'; -import { isProcessAlive, readPidFile } from '../../daemon/utils'; +import { pingDaemon, sendCommand } from '../../daemon/daemon-client.js'; +import { getDaemonPaths } from '../../daemon/paths.js'; +import type { DaemonStatusInfo } from '../../daemon/types.js'; +import { isProcessAlive, readPidFile } from '../../daemon/utils.js'; export default class DaemonStatus extends Command { static override description = 'Check the status of the wallet daemon'; diff --git a/packages/wallet-cli/src/commands/daemon/stop.test.ts b/packages/wallet-cli/src/commands/daemon/stop.test.ts index b30d7152fa6..7d823b0294c 100644 --- a/packages/wallet-cli/src/commands/daemon/stop.test.ts +++ b/packages/wallet-cli/src/commands/daemon/stop.test.ts @@ -1,8 +1,10 @@ -import { pingDaemon } from '../../daemon/daemon-client'; -import { stopDaemon } from '../../daemon/stop-daemon'; -import { readPidFile } from '../../daemon/utils'; -import { runCommand } from '../../test/run-command'; -import DaemonStop from './stop'; +import { jest } from '@jest/globals'; + +import { pingDaemon } from '../../daemon/daemon-client.js'; +import { stopDaemon } from '../../daemon/stop-daemon.js'; +import { readPidFile } from '../../daemon/utils.js'; +import { runCommand } from '../../test/run-command.js'; +import DaemonStop from './stop.js'; jest.mock('../../daemon/daemon-client'); jest.mock('../../daemon/stop-daemon'); diff --git a/packages/wallet-cli/src/commands/daemon/stop.ts b/packages/wallet-cli/src/commands/daemon/stop.ts index 238db803749..1dbdf43ac23 100644 --- a/packages/wallet-cli/src/commands/daemon/stop.ts +++ b/packages/wallet-cli/src/commands/daemon/stop.ts @@ -1,9 +1,9 @@ import { Command } from '@oclif/core'; -import { pingDaemon } from '../../daemon/daemon-client'; -import { getDaemonPaths } from '../../daemon/paths'; -import { stopDaemon } from '../../daemon/stop-daemon'; -import { readPidFile } from '../../daemon/utils'; +import { pingDaemon } from '../../daemon/daemon-client.js'; +import { getDaemonPaths } from '../../daemon/paths.js'; +import { stopDaemon } from '../../daemon/stop-daemon.js'; +import { readPidFile } from '../../daemon/utils.js'; export default class DaemonStop extends Command { static override description = 'Stop the wallet daemon'; diff --git a/packages/wallet-cli/src/commands/wallet/unlock.test.ts b/packages/wallet-cli/src/commands/wallet/unlock.test.ts index 4a5ad4f2061..1e0395bf04d 100644 --- a/packages/wallet-cli/src/commands/wallet/unlock.test.ts +++ b/packages/wallet-cli/src/commands/wallet/unlock.test.ts @@ -1,7 +1,9 @@ -import { sendCommand } from '../../daemon/daemon-client'; -import { promptPassword } from '../../daemon/prompts'; -import { runCommand } from '../../test/run-command'; -import WalletUnlock from './unlock'; +import { jest } from '@jest/globals'; + +import { sendCommand } from '../../daemon/daemon-client.js'; +import { promptPassword } from '../../daemon/prompts.js'; +import { runCommand } from '../../test/run-command.js'; +import WalletUnlock from './unlock.js'; jest.mock('../../daemon/daemon-client'); jest.mock('../../daemon/prompts'); diff --git a/packages/wallet-cli/src/commands/wallet/unlock.ts b/packages/wallet-cli/src/commands/wallet/unlock.ts index b86944758d5..c60b7df6d56 100644 --- a/packages/wallet-cli/src/commands/wallet/unlock.ts +++ b/packages/wallet-cli/src/commands/wallet/unlock.ts @@ -1,13 +1,13 @@ import { isJsonRpcFailure } from '@metamask/utils'; import { Command, Flags } from '@oclif/core'; -import { sendCommand } from '../../daemon/daemon-client'; -import { getDaemonPaths } from '../../daemon/paths'; -import { promptPassword } from '../../daemon/prompts'; +import { sendCommand } from '../../daemon/daemon-client.js'; +import { getDaemonPaths } from '../../daemon/paths.js'; +import { promptPassword } from '../../daemon/prompts.js'; import { emptyToUndefined, makeDaemonConnectionError, -} from '../../daemon/utils'; +} from '../../daemon/utils.js'; export default class WalletUnlock extends Command { static override description = diff --git a/packages/wallet-cli/src/daemon/daemon-client.test.ts b/packages/wallet-cli/src/daemon/daemon-client.test.ts index 96cfa33e49c..57ca66b4d88 100644 --- a/packages/wallet-cli/src/daemon/daemon-client.test.ts +++ b/packages/wallet-cli/src/daemon/daemon-client.test.ts @@ -1,10 +1,11 @@ +import { jest } from '@jest/globals'; import type { JsonRpcResponse } from '@metamask/utils'; import { EventEmitter } from 'node:events'; import { createConnection } from 'node:net'; import type { Socket } from 'node:net'; -import { sendCommand, pingDaemon } from './daemon-client'; -import { readLine, writeLine } from './socket-line'; +import { sendCommand, pingDaemon } from './daemon-client.js'; +import { readLine, writeLine } from './socket-line.js'; jest.mock('node:net'); jest.mock('./socket-line'); diff --git a/packages/wallet-cli/src/daemon/daemon-client.ts b/packages/wallet-cli/src/daemon/daemon-client.ts index f28e3de99b0..a0017b8a875 100644 --- a/packages/wallet-cli/src/daemon/daemon-client.ts +++ b/packages/wallet-cli/src/daemon/daemon-client.ts @@ -4,8 +4,8 @@ import { randomUUID } from 'node:crypto'; import { createConnection } from 'node:net'; import type { Socket } from 'node:net'; -import { readLine, writeLine } from './socket-line'; -import { isErrorWithCode } from './utils'; +import { readLine, writeLine } from './socket-line.js'; +import { isErrorWithCode } from './utils.js'; const DEFAULT_TIMEOUT_MS = 30_000; diff --git a/packages/wallet-cli/src/daemon/daemon-entry.test.ts b/packages/wallet-cli/src/daemon/daemon-entry.test.ts index a5e3d4224cc..b7e494e0704 100644 --- a/packages/wallet-cli/src/daemon/daemon-entry.test.ts +++ b/packages/wallet-cli/src/daemon/daemon-entry.test.ts @@ -1,13 +1,14 @@ +import { jest } from '@jest/globals'; import { validate } from '@metamask/superstruct'; import { appendFile, readFile, rm, writeFile } from 'node:fs/promises'; -import { pingDaemon } from './daemon-client'; -import { ensureOwnerOnlyDirectory } from './data-dir'; -import { getDaemonPaths } from './paths'; -import { startRpcSocketServer } from './rpc-socket-server'; -import type { RpcSocketServerHandle } from './rpc-socket-server'; -import { isProcessAlive } from './utils'; -import { createWallet } from './wallet-factory'; +import { pingDaemon } from './daemon-client.js'; +import { ensureOwnerOnlyDirectory } from './data-dir.js'; +import { getDaemonPaths } from './paths.js'; +import { startRpcSocketServer } from './rpc-socket-server.js'; +import type { RpcSocketServerHandle } from './rpc-socket-server.js'; +import { isProcessAlive } from './utils.js'; +import { createWallet } from './wallet-factory.js'; jest.mock('node:fs/promises'); jest.mock('./data-dir'); @@ -126,7 +127,7 @@ describe('daemon-entry', () => { */ async function importDaemonEntry(): Promise { await jest.isolateModulesAsync(async () => { - await import('./daemon-entry'); + await import('./daemon-entry.js'); for (let i = 0; i < 10; i++) { await new Promise((resolve) => process.nextTick(resolve)); } diff --git a/packages/wallet-cli/src/daemon/daemon-entry.ts b/packages/wallet-cli/src/daemon/daemon-entry.ts index 39095f07aea..6d905d511fc 100644 --- a/packages/wallet-cli/src/daemon/daemon-entry.ts +++ b/packages/wallet-cli/src/daemon/daemon-entry.ts @@ -3,21 +3,21 @@ import type { Json } from '@metamask/utils'; import type { Wallet } from '@metamask/wallet'; import { appendFile, readFile, rm, writeFile } from 'node:fs/promises'; -import { pingDaemon } from './daemon-client'; -import { ensureOwnerOnlyDirectory } from './data-dir'; -import { getDaemonPaths } from './paths'; -import { startRpcSocketServer } from './rpc-socket-server'; -import type { RpcSocketServerHandle } from './rpc-socket-server'; -import { Password, Srp } from './secrets'; -import { defineHandler } from './types'; +import { pingDaemon } from './daemon-client.js'; +import { ensureOwnerOnlyDirectory } from './data-dir.js'; +import { getDaemonPaths } from './paths.js'; +import { startRpcSocketServer } from './rpc-socket-server.js'; +import type { RpcSocketServerHandle } from './rpc-socket-server.js'; +import { Password, Srp } from './secrets.js'; +import { defineHandler } from './types.js'; import type { DaemonStatusInfo, Logger, RpcDispatcher, RpcHandlerMap, -} from './types'; -import { isErrorWithCode, isProcessAlive, readPidFile } from './utils'; -import { createWallet } from './wallet-factory'; +} from './types.js'; +import { isErrorWithCode, isProcessAlive, readPidFile } from './utils.js'; +import { createWallet } from './wallet-factory.js'; /** * Params struct for the `call` RPC method. `params` must be a non-empty array diff --git a/packages/wallet-cli/src/daemon/daemon-spawn.test.ts b/packages/wallet-cli/src/daemon/daemon-spawn.test.ts index 5848e8a2986..25a58353e35 100644 --- a/packages/wallet-cli/src/daemon/daemon-spawn.test.ts +++ b/packages/wallet-cli/src/daemon/daemon-spawn.test.ts @@ -1,13 +1,14 @@ +import { jest } from '@jest/globals'; import { spawn } from 'node:child_process'; import type { ChildProcess } from 'node:child_process'; import { closeSync, existsSync, openSync } from 'node:fs'; -import { pingDaemon } from './daemon-client'; -import { ensureDaemon } from './daemon-spawn'; -import { ensureOwnerOnlyDirectory } from './data-dir'; -import { getDaemonPaths } from './paths'; -import { Password, Srp } from './secrets'; -import type { DaemonSpawnConfig } from './types'; +import { pingDaemon } from './daemon-client.js'; +import { ensureDaemon } from './daemon-spawn.js'; +import { ensureOwnerOnlyDirectory } from './data-dir.js'; +import { getDaemonPaths } from './paths.js'; +import { Password, Srp } from './secrets.js'; +import type { DaemonSpawnConfig } from './types.js'; jest.mock('node:child_process'); jest.mock('node:fs'); diff --git a/packages/wallet-cli/src/daemon/daemon-spawn.ts b/packages/wallet-cli/src/daemon/daemon-spawn.ts index e7a5b605313..b2bca342888 100644 --- a/packages/wallet-cli/src/daemon/daemon-spawn.ts +++ b/packages/wallet-cli/src/daemon/daemon-spawn.ts @@ -2,10 +2,10 @@ import { spawn } from 'node:child_process'; import { closeSync, existsSync, openSync } from 'node:fs'; import { join } from 'node:path'; -import { pingDaemon } from './daemon-client'; -import { ensureOwnerOnlyDirectory } from './data-dir'; -import { getDaemonPaths } from './paths'; -import type { DaemonSpawnConfig } from './types'; +import { pingDaemon } from './daemon-client.js'; +import { ensureOwnerOnlyDirectory } from './data-dir.js'; +import { getDaemonPaths } from './paths.js'; +import type { DaemonSpawnConfig } from './types.js'; const POLL_INTERVAL_MS = 100; const MAX_POLLS = 300; // 30 seconds diff --git a/packages/wallet-cli/src/daemon/data-dir.test.ts b/packages/wallet-cli/src/daemon/data-dir.test.ts index 1203a9d3948..028c6d29270 100644 --- a/packages/wallet-cli/src/daemon/data-dir.test.ts +++ b/packages/wallet-cli/src/daemon/data-dir.test.ts @@ -1,7 +1,8 @@ +import { jest } from '@jest/globals'; import { mkdirSync } from 'node:fs'; import { chmod } from 'node:fs/promises'; -import { ensureOwnerOnlyDirectory } from './data-dir'; +import { ensureOwnerOnlyDirectory } from './data-dir.js'; jest.mock('node:fs'); jest.mock('node:fs/promises'); diff --git a/packages/wallet-cli/src/daemon/paths.test.ts b/packages/wallet-cli/src/daemon/paths.test.ts index ca127020309..964b95c7f0f 100644 --- a/packages/wallet-cli/src/daemon/paths.test.ts +++ b/packages/wallet-cli/src/daemon/paths.test.ts @@ -1,6 +1,6 @@ import { join } from 'node:path'; -import { getDaemonPaths } from './paths'; +import { getDaemonPaths } from './paths.js'; describe('getDaemonPaths', () => { it('returns correct paths for the given data directory', () => { diff --git a/packages/wallet-cli/src/daemon/paths.ts b/packages/wallet-cli/src/daemon/paths.ts index 398b5b30dfb..2d0df229d96 100644 --- a/packages/wallet-cli/src/daemon/paths.ts +++ b/packages/wallet-cli/src/daemon/paths.ts @@ -1,6 +1,6 @@ import { join } from 'node:path'; -import type { DaemonPaths } from './types'; +import type { DaemonPaths } from './types.js'; /** * Resolve paths for daemon state files within the given data directory. diff --git a/packages/wallet-cli/src/daemon/prompts.test.ts b/packages/wallet-cli/src/daemon/prompts.test.ts index b5671a0aae8..9a081270336 100644 --- a/packages/wallet-cli/src/daemon/prompts.test.ts +++ b/packages/wallet-cli/src/daemon/prompts.test.ts @@ -5,6 +5,7 @@ // only types. import type Confirm from '@inquirer/confirm'; import type Password from '@inquirer/password'; +import { jest } from '@jest/globals'; jest.unstable_mockModule('@inquirer/confirm', () => ({ __esModule: true, @@ -23,7 +24,7 @@ describe('confirmPurge', () => { const confirm = (await import('@inquirer/confirm')) .default as unknown as ConfirmMock; confirm.mockResolvedValue(true); - const { confirmPurge } = await import('./prompts'); + const { confirmPurge } = await import('./prompts.js'); const result = await confirmPurge(); @@ -38,7 +39,7 @@ describe('confirmPurge', () => { const confirm = (await import('@inquirer/confirm')) .default as unknown as ConfirmMock; confirm.mockResolvedValue(false); - const { confirmPurge } = await import('./prompts'); + const { confirmPurge } = await import('./prompts.js'); expect(await confirmPurge()).toBe(false); }); @@ -49,7 +50,7 @@ describe('promptPassword', () => { const password = (await import('@inquirer/password')) .default as unknown as PasswordMock; password.mockResolvedValue('hunter2'); - const { promptPassword } = await import('./prompts'); + const { promptPassword } = await import('./prompts.js'); const result = await promptPassword(); diff --git a/packages/wallet-cli/src/daemon/rpc-socket-server.test.ts b/packages/wallet-cli/src/daemon/rpc-socket-server.test.ts index aeea4e8d236..801da35cf67 100644 --- a/packages/wallet-cli/src/daemon/rpc-socket-server.test.ts +++ b/packages/wallet-cli/src/daemon/rpc-socket-server.test.ts @@ -1,11 +1,12 @@ +import { jest } from '@jest/globals'; import { any, literal } from '@metamask/superstruct'; import { EventEmitter } from 'node:events'; import { chmod, unlink } from 'node:fs/promises'; import { createServer } from 'node:net'; import type { Server, Socket } from 'node:net'; -import { startRpcSocketServer } from './rpc-socket-server'; -import type { RpcHandlerDefinition, RpcHandlerMap } from './types'; +import { startRpcSocketServer } from './rpc-socket-server.js'; +import type { RpcHandlerDefinition, RpcHandlerMap } from './types.js'; // any() paramsStruct so the struct guard never rejects test inputs. function asHandler(run: jest.Mock): RpcHandlerDefinition { diff --git a/packages/wallet-cli/src/daemon/rpc-socket-server.ts b/packages/wallet-cli/src/daemon/rpc-socket-server.ts index a221235e150..096c4d6656c 100644 --- a/packages/wallet-cli/src/daemon/rpc-socket-server.ts +++ b/packages/wallet-cli/src/daemon/rpc-socket-server.ts @@ -10,8 +10,8 @@ import { chmod, unlink } from 'node:fs/promises'; import { createServer } from 'node:net'; import type { Server } from 'node:net'; -import type { RpcHandlerMap } from './types'; -import { isErrorWithCode } from './utils'; +import type { RpcHandlerMap } from './types.js'; +import { isErrorWithCode } from './utils.js'; const CONNECTION_TIMEOUT_MS = 30_000; diff --git a/packages/wallet-cli/src/daemon/secrets.test.ts b/packages/wallet-cli/src/daemon/secrets.test.ts index b54ea515aa2..cd8e0f29ea6 100644 --- a/packages/wallet-cli/src/daemon/secrets.test.ts +++ b/packages/wallet-cli/src/daemon/secrets.test.ts @@ -1,6 +1,6 @@ import { inspect } from 'node:util'; -import { Password, Srp } from './secrets'; +import { Password, Srp } from './secrets.js'; const VALID_SRP_12 = 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about'; @@ -67,8 +67,7 @@ describe('Password', () => { }); it('redacts under template-literal interpolation', () => { - // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- We are intentionally exercising the redacting toString(). - const message = `password is ${password}`; + const message = `password is ${String(password)}`; expect(message).toBe('password is [redacted]'); expect(message).not.toContain(SECRET); }); @@ -162,8 +161,7 @@ describe('Srp', () => { }); it('redacts under template-literal interpolation', () => { - // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- We are intentionally exercising the redacting toString(). - const message = `srp is ${srp}`; + const message = `srp is ${String(srp)}`; expect(message).toBe('srp is [redacted]'); expect(message).not.toContain('ball'); }); diff --git a/packages/wallet-cli/src/daemon/secrets.ts b/packages/wallet-cli/src/daemon/secrets.ts index af64973c49a..fad3bb512de 100644 --- a/packages/wallet-cli/src/daemon/secrets.ts +++ b/packages/wallet-cli/src/daemon/secrets.ts @@ -1,5 +1,5 @@ import { validateMnemonic } from '@metamask/scure-bip39'; -import { wordlist } from '@metamask/scure-bip39/dist/wordlists/english'; +import { wordlist } from '@metamask/scure-bip39/dist/wordlists/english.js'; const REDACTED = '[redacted]'; diff --git a/packages/wallet-cli/src/daemon/socket-line.test.ts b/packages/wallet-cli/src/daemon/socket-line.test.ts index acb02e4a234..35890d1b21b 100644 --- a/packages/wallet-cli/src/daemon/socket-line.test.ts +++ b/packages/wallet-cli/src/daemon/socket-line.test.ts @@ -1,7 +1,8 @@ +import { jest } from '@jest/globals'; import { EventEmitter } from 'node:events'; import type { Socket } from 'node:net'; -import { readLine, writeLine } from './socket-line'; +import { readLine, writeLine } from './socket-line.js'; /** * Create a mock Socket backed by EventEmitter. diff --git a/packages/wallet-cli/src/daemon/socket.integration.test.ts b/packages/wallet-cli/src/daemon/socket.integration.test.ts index 98c619f2ded..070ebf8c15a 100644 --- a/packages/wallet-cli/src/daemon/socket.integration.test.ts +++ b/packages/wallet-cli/src/daemon/socket.integration.test.ts @@ -1,13 +1,14 @@ +import { jest } from '@jest/globals'; import { any } from '@metamask/superstruct'; import { stat } from 'node:fs/promises'; import { createConnection } from 'node:net'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; -import { pingDaemon, sendCommand } from './daemon-client'; -import { startRpcSocketServer } from './rpc-socket-server'; -import type { RpcSocketServerHandle } from './rpc-socket-server'; -import type { RpcHandlerDefinition } from './types'; +import { pingDaemon, sendCommand } from './daemon-client.js'; +import { startRpcSocketServer } from './rpc-socket-server.js'; +import type { RpcSocketServerHandle } from './rpc-socket-server.js'; +import type { RpcHandlerDefinition } from './types.js'; // any() paramsStruct so integration test inputs are never rejected by the struct guard. function handlerDefinition( diff --git a/packages/wallet-cli/src/daemon/stop-daemon.test.ts b/packages/wallet-cli/src/daemon/stop-daemon.test.ts index daaa96cd5cf..9ca12e34228 100644 --- a/packages/wallet-cli/src/daemon/stop-daemon.test.ts +++ b/packages/wallet-cli/src/daemon/stop-daemon.test.ts @@ -1,8 +1,9 @@ +import { jest } from '@jest/globals'; import { rm } from 'node:fs/promises'; -import { pingDaemon, sendCommand } from './daemon-client'; -import { stopDaemon } from './stop-daemon'; -import { isProcessAlive, readPidFile, sendSignal, waitFor } from './utils'; +import { pingDaemon, sendCommand } from './daemon-client.js'; +import { stopDaemon } from './stop-daemon.js'; +import { isProcessAlive, readPidFile, sendSignal, waitFor } from './utils.js'; jest.mock('node:fs/promises'); jest.mock('./daemon-client'); diff --git a/packages/wallet-cli/src/daemon/stop-daemon.ts b/packages/wallet-cli/src/daemon/stop-daemon.ts index 3ffcdde8392..fac200e7a24 100644 --- a/packages/wallet-cli/src/daemon/stop-daemon.ts +++ b/packages/wallet-cli/src/daemon/stop-daemon.ts @@ -1,7 +1,7 @@ import { rm } from 'node:fs/promises'; -import { pingDaemon, sendCommand } from './daemon-client'; -import { isProcessAlive, readPidFile, sendSignal, waitFor } from './utils'; +import { pingDaemon, sendCommand } from './daemon-client.js'; +import { isProcessAlive, readPidFile, sendSignal, waitFor } from './utils.js'; /** * Stop the daemon, preferring a graceful shutdown. diff --git a/packages/wallet-cli/src/daemon/types.ts b/packages/wallet-cli/src/daemon/types.ts index fdf251faa3d..04fce071db1 100644 --- a/packages/wallet-cli/src/daemon/types.ts +++ b/packages/wallet-cli/src/daemon/types.ts @@ -1,7 +1,7 @@ import type { Struct } from '@metamask/superstruct'; import type { Json } from '@metamask/utils'; -import type { Password, Srp } from './secrets'; +import type { Password, Srp } from './secrets.js'; /** * Sink for daemon diagnostic messages. A backgrounded daemon's stdio may be diff --git a/packages/wallet-cli/src/daemon/utils.test.ts b/packages/wallet-cli/src/daemon/utils.test.ts index 167f35ae95d..8508d1eeded 100644 --- a/packages/wallet-cli/src/daemon/utils.test.ts +++ b/packages/wallet-cli/src/daemon/utils.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { readFile } from 'node:fs/promises'; import { @@ -10,7 +11,7 @@ import { readPidFile, sendSignal, waitFor, -} from './utils'; +} from './utils.js'; jest.mock('node:fs/promises'); diff --git a/packages/wallet-cli/src/daemon/wallet-factory.integration.test.ts b/packages/wallet-cli/src/daemon/wallet-factory.integration.test.ts index e5e6624fef0..3079771380f 100644 --- a/packages/wallet-cli/src/daemon/wallet-factory.integration.test.ts +++ b/packages/wallet-cli/src/daemon/wallet-factory.integration.test.ts @@ -1,9 +1,10 @@ +import { jest } from '@jest/globals'; import { rmSync } from 'node:fs'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; -import { Password, Srp } from './secrets'; -import { createWallet } from './wallet-factory'; +import { Password, Srp } from './secrets.js'; +import { createWallet } from './wallet-factory.js'; /** * Real-Wallet integration tests for `createWallet`. Every other suite in this diff --git a/packages/wallet-cli/src/daemon/wallet-factory.test.ts b/packages/wallet-cli/src/daemon/wallet-factory.test.ts index 26d58695569..d623809029f 100644 --- a/packages/wallet-cli/src/daemon/wallet-factory.test.ts +++ b/packages/wallet-cli/src/daemon/wallet-factory.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { ClientConfigApiService } from '@metamask/remote-feature-flag-controller'; import { InMemoryStorageAdapter } from '@metamask/storage-service'; import { @@ -10,10 +11,10 @@ import { rm } from 'node:fs/promises'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; -import { KeyValueStore } from '../persistence/KeyValueStore'; -import * as persistenceModule from '../persistence/persistence'; -import { Password, Srp } from './secrets'; -import { createWallet } from './wallet-factory'; +import { KeyValueStore } from '../persistence/KeyValueStore.js'; +import * as persistenceModule from '../persistence/persistence.js'; +import { Password, Srp } from './secrets.js'; +import { createWallet } from './wallet-factory.js'; jest.mock('@metamask/wallet'); jest.mock('@metamask/remote-feature-flag-controller'); diff --git a/packages/wallet-cli/src/daemon/wallet-factory.ts b/packages/wallet-cli/src/daemon/wallet-factory.ts index 6ecf2bbe29c..f281c74f230 100644 --- a/packages/wallet-cli/src/daemon/wallet-factory.ts +++ b/packages/wallet-cli/src/daemon/wallet-factory.ts @@ -14,10 +14,10 @@ import { import type { WalletOptions } from '@metamask/wallet'; import { rm } from 'node:fs/promises'; -import { KeyValueStore } from '../persistence/KeyValueStore'; -import { loadState, subscribeToChanges } from '../persistence/persistence'; -import type { Password, Srp } from './secrets'; -import type { Logger } from './types'; +import { KeyValueStore } from '../persistence/KeyValueStore.js'; +import { loadState, subscribeToChanges } from '../persistence/persistence.js'; +import type { Password, Srp } from './secrets.js'; +import type { Logger } from './types.js'; const IN_MEMORY_DATABASE_PATH = ':memory:'; diff --git a/packages/wallet-cli/src/persistence/KeyValueStore.test.ts b/packages/wallet-cli/src/persistence/KeyValueStore.test.ts index f7c3ad6445d..dcb1f26ee57 100644 --- a/packages/wallet-cli/src/persistence/KeyValueStore.test.ts +++ b/packages/wallet-cli/src/persistence/KeyValueStore.test.ts @@ -4,7 +4,7 @@ import { unlink } from 'fs/promises'; import os from 'os'; import path from 'path'; -import { KeyValueStore } from './KeyValueStore'; +import { KeyValueStore } from './KeyValueStore.js'; describe('KeyValueStore', () => { let store: KeyValueStore; diff --git a/packages/wallet-cli/src/persistence/persistence.test.ts b/packages/wallet-cli/src/persistence/persistence.test.ts index 7d26e5520cf..202f67881b0 100644 --- a/packages/wallet-cli/src/persistence/persistence.test.ts +++ b/packages/wallet-cli/src/persistence/persistence.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import type { StateMetadataConstraint } from '@metamask/base-controller'; import type { Json } from '@metamask/utils'; import type { @@ -6,8 +7,8 @@ import type { RootMessenger, } from '@metamask/wallet'; -import { KeyValueStore } from './KeyValueStore'; -import { loadState, subscribeToChanges } from './persistence'; +import { KeyValueStore } from './KeyValueStore.js'; +import { loadState, subscribeToChanges } from './persistence.js'; type TestMessenger = RootMessenger; diff --git a/packages/wallet-cli/src/persistence/persistence.ts b/packages/wallet-cli/src/persistence/persistence.ts index cf3c07bf4f7..bd7278bcc2f 100644 --- a/packages/wallet-cli/src/persistence/persistence.ts +++ b/packages/wallet-cli/src/persistence/persistence.ts @@ -8,7 +8,7 @@ import type { } from '@metamask/wallet'; import type { Patch } from 'immer'; -import type { KeyValueStore } from './KeyValueStore'; +import type { KeyValueStore } from './KeyValueStore.js'; /** * Handler for a controller's `stateChanged` event: the new controller state and From 1227353c203fe67930d981a1dfbfca8e74e47a81 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:53:19 +0200 Subject: [PATCH 102/115] ESLint fix and `jest` global import for bitcoin-regtest-up --- packages/bitcoin-regtest-up/src/bin/bitcoin-regtest-up.ts | 2 +- packages/bitcoin-regtest-up/src/index.ts | 4 ++-- packages/bitcoin-regtest-up/src/install.test.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/bitcoin-regtest-up/src/bin/bitcoin-regtest-up.ts b/packages/bitcoin-regtest-up/src/bin/bitcoin-regtest-up.ts index c9cd9985b98..029995a4bbb 100644 --- a/packages/bitcoin-regtest-up/src/bin/bitcoin-regtest-up.ts +++ b/packages/bitcoin-regtest-up/src/bin/bitcoin-regtest-up.ts @@ -5,7 +5,7 @@ import { installBitcoinRegtest, parseBitcoinRegtestInstallCliOptions, readBitcoinRegtestInstallOptionsFromPackageJson, -} from '../install'; +} from '../install.js'; async function main(): Promise { const [command, ...args] = process.argv.slice(2); diff --git a/packages/bitcoin-regtest-up/src/index.ts b/packages/bitcoin-regtest-up/src/index.ts index 7e36171c69b..fe800015793 100644 --- a/packages/bitcoin-regtest-up/src/index.ts +++ b/packages/bitcoin-regtest-up/src/index.ts @@ -5,11 +5,11 @@ export { installBitcoinRegtest, parseBitcoinRegtestInstallCliOptions, readBitcoinRegtestInstallOptionsFromPackageJson, -} from './install'; +} from './install.js'; export type { BitcoinRegtestArtifactConfig, BitcoinRegtestArtifactPlatformConfig, BitcoinRegtestInstallDependencies, BitcoinRegtestInstallOptions, BitcoinRegtestInstallResult, -} from './install'; +} from './install.js'; diff --git a/packages/bitcoin-regtest-up/src/install.test.ts b/packages/bitcoin-regtest-up/src/install.test.ts index 9481f528cf2..f543af50195 100644 --- a/packages/bitcoin-regtest-up/src/install.test.ts +++ b/packages/bitcoin-regtest-up/src/install.test.ts @@ -23,8 +23,8 @@ import { installBitcoinRegtest, parseBitcoinRegtestInstallCliOptions, readBitcoinRegtestInstallOptionsFromPackageJson, -} from './install'; -import type { BitcoinRegtestInstallDependencies } from './install'; +} from './install.js'; +import type { BitcoinRegtestInstallDependencies } from './install.js'; describe('bitcoin-regtest-up installer', () => { let tempDirs: string[] = []; From 71df4efbdc923b69686e5e5f884a5b6b4db468cc Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:53:19 +0200 Subject: [PATCH 103/115] ESLint fix and `jest` global import for foundryup --- packages/foundryup/src/cli.ts | 2 +- packages/foundryup/src/download.ts | 2 +- packages/foundryup/src/extract.ts | 8 ++++---- packages/foundryup/src/foundryup.test.ts | 17 +++++++++-------- packages/foundryup/src/index.ts | 10 +++++----- packages/foundryup/src/options.ts | 6 +++--- packages/foundryup/src/utils.ts | 6 +++--- 7 files changed, 26 insertions(+), 25 deletions(-) diff --git a/packages/foundryup/src/cli.ts b/packages/foundryup/src/cli.ts index 2fab6c50585..39ea8c28750 100644 --- a/packages/foundryup/src/cli.ts +++ b/packages/foundryup/src/cli.ts @@ -6,7 +6,7 @@ * This script downloads and installs Foundry binaries. * If an error occurs, it logs the error and exits with code 1. */ -import { downloadAndInstallFoundryBinaries } from '.'; +import { downloadAndInstallFoundryBinaries } from './index.js'; /** * Run the main installation process and handle errors. diff --git a/packages/foundryup/src/download.ts b/packages/foundryup/src/download.ts index 3958694702d..d9dac1e9cbc 100644 --- a/packages/foundryup/src/download.ts +++ b/packages/foundryup/src/download.ts @@ -4,7 +4,7 @@ import { request as httpsRequest } from 'node:https'; import { Stream } from 'node:stream'; import { pipeline } from 'node:stream/promises'; -import type { DownloadOptions } from './types'; +import type { DownloadOptions } from './types.js'; /** * A PassThrough stream that emits a 'response' event when the HTTP(S) response is available. diff --git a/packages/foundryup/src/extract.ts b/packages/foundryup/src/extract.ts index 3cb213d9d97..82248a4aac8 100644 --- a/packages/foundryup/src/extract.ts +++ b/packages/foundryup/src/extract.ts @@ -11,10 +11,10 @@ import { extract as extractTar } from 'tar'; import { Open } from 'unzipper'; import type { Source, Entry } from 'unzipper'; -import { startDownload } from './download'; -import { Extension } from './types'; -import type { Binary } from './types'; -import { say } from './utils'; +import { startDownload } from './download.js'; +import { Extension } from './types.js'; +import type { Binary } from './types.js'; +import { say } from './utils.js'; /** * Extracts the binaries from the given URL and writes them to the destination. diff --git a/packages/foundryup/src/foundryup.test.ts b/packages/foundryup/src/foundryup.test.ts index da3268a3dfa..f769f34df43 100644 --- a/packages/foundryup/src/foundryup.test.ts +++ b/packages/foundryup/src/foundryup.test.ts @@ -1,7 +1,8 @@ +import { jest } from '@jest/globals'; import type { Dir } from 'fs'; import { readFileSync } from 'fs'; import fs from 'fs/promises'; -import nock, { cleanAll } from 'nock'; +import nock from 'nock'; import { join, relative } from 'path'; import { parse as parseYaml } from 'yaml'; @@ -9,11 +10,11 @@ import { checkAndDownloadBinaries, getBinaryArchiveUrl, getCacheDirectory, -} from '.'; -import { parseArgs } from './options'; -import type { Binary, Checksums } from './types'; -import { Architecture, Platform } from './types'; -import { isCodedError } from './utils'; +} from './index.js'; +import { parseArgs } from './options.js'; +import type { Binary, Checksums } from './types.js'; +import { Architecture, Platform } from './types.js'; +import { isCodedError } from './utils.js'; type OperationDetails = { path?: string; @@ -217,13 +218,13 @@ describe('foundryup', () => { beforeEach(() => { jest.clearAllMocks(); - cleanAll(); + nock.cleanAll(); }); it('handles download errors gracefully', async () => { (fs.opendir as jest.Mock).mockRejectedValue({ code: 'ENOENT' }); - cleanAll(); + nock.cleanAll(); nock('https://example.com') .head('/binaries.zip') .reply(500, 'Internal Server Error') diff --git a/packages/foundryup/src/index.ts b/packages/foundryup/src/index.ts index 309c759275a..b483a61987e 100755 --- a/packages/foundryup/src/index.ts +++ b/packages/foundryup/src/index.ts @@ -16,17 +16,17 @@ import { dirname, join, relative } from 'node:path'; import { cwd, exit } from 'node:process'; import { parse as parseYaml } from 'yaml'; -import { extractFrom } from './extract'; -import { parseArgs, printBanner } from './options'; -import type { Checksums, Architecture, Binary } from './types'; -import { Extension, Platform } from './types'; +import { extractFrom } from './extract.js'; +import { parseArgs, printBanner } from './options.js'; +import type { Checksums, Architecture, Binary } from './types.js'; +import { Extension, Platform } from './types.js'; import { getVersion, isCodedError, noop, say, transformChecksums, -} from './utils'; +} from './utils.js'; /** * Determines the cache directory based on the .yarnrc.yml configuration. diff --git a/packages/foundryup/src/options.ts b/packages/foundryup/src/options.ts index a0666b89edc..97a95fd3816 100644 --- a/packages/foundryup/src/options.ts +++ b/packages/foundryup/src/options.ts @@ -2,15 +2,15 @@ import { platform } from 'node:os'; import { argv, stdout } from 'node:process'; import yargs from 'yargs/yargs'; -import { Architecture, Binary, Platform } from './types'; +import { Architecture, Binary, Platform } from './types.js'; import type { Checksums, ParsedOptions, ArchitecturesTuple, BinariesTuple, PlatformsTuple, -} from './types'; -import { normalizeSystemArchitecture } from './utils'; +} from './types.js'; +import { normalizeSystemArchitecture } from './utils.js'; /** * Type guard to check if a string is a valid version string starting with 'v'. diff --git a/packages/foundryup/src/utils.ts b/packages/foundryup/src/utils.ts index 1b9c33092c6..6cdbb1f14dc 100644 --- a/packages/foundryup/src/utils.ts +++ b/packages/foundryup/src/utils.ts @@ -1,13 +1,13 @@ import { execFileSync, execSync } from 'node:child_process'; import { arch } from 'node:os'; -import { Architecture } from './types'; +import { Architecture } from './types.js'; import type { Checksums, PlatformArchChecksums, Binary, Platform, -} from './types'; +} from './types.js'; /** * No Operation. A function that does nothing and returns nothing. @@ -114,7 +114,7 @@ export function transformChecksums( const key = `${targetPlatform}-${targetArch}` as const; return { algorithm: checksums.algorithm, - binaries: Object.entries(checksums.binaries).reduce( + binaries: Object.entries(checksums.binaries).reduce>( (acc, [name, record]) => { acc[name as Binary] = record[key]; return acc; From bd51526cd9c2e69e18d100ee07a907ff7b78b92b Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:53:23 +0200 Subject: [PATCH 104/115] ESLint fix and `jest` global import for java-tron-up --- packages/java-tron-up/src/bin/java-tron-up.ts | 2 +- packages/java-tron-up/src/index.ts | 4 ++-- packages/java-tron-up/src/install.test.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/java-tron-up/src/bin/java-tron-up.ts b/packages/java-tron-up/src/bin/java-tron-up.ts index a32b97bc7fe..5f73d89d154 100644 --- a/packages/java-tron-up/src/bin/java-tron-up.ts +++ b/packages/java-tron-up/src/bin/java-tron-up.ts @@ -5,7 +5,7 @@ import { installJavaTron, parseJavaTronInstallCliOptions, readJavaTronInstallOptionsFromPackageJson, -} from '../install'; +} from '../install.js'; async function main(): Promise { const [command, ...args] = process.argv.slice(2); diff --git a/packages/java-tron-up/src/index.ts b/packages/java-tron-up/src/index.ts index 12992703cdd..cd1263803fc 100644 --- a/packages/java-tron-up/src/index.ts +++ b/packages/java-tron-up/src/index.ts @@ -7,7 +7,7 @@ export { installJavaTron, parseJavaTronInstallCliOptions, readJavaTronInstallOptionsFromPackageJson, -} from './install'; +} from './install.js'; export type { JavaTronArtifactConfig, JavaTronArtifactPlatformConfig, @@ -15,4 +15,4 @@ export type { JavaTronInstallOptions, JavaTronInstallResult, JavaTronJavaRuntimeConfig, -} from './install'; +} from './install.js'; diff --git a/packages/java-tron-up/src/install.test.ts b/packages/java-tron-up/src/install.test.ts index f593685a6dd..3a1c17394de 100644 --- a/packages/java-tron-up/src/install.test.ts +++ b/packages/java-tron-up/src/install.test.ts @@ -23,8 +23,8 @@ import { installJavaTron, parseJavaTronInstallCliOptions, readJavaTronInstallOptionsFromPackageJson, -} from './install'; -import type { JavaTronInstallDependencies } from './install'; +} from './install.js'; +import type { JavaTronInstallDependencies } from './install.js'; describe('java-tron-up installer', () => { let tempDirs: string[] = []; From 42aa1beaba4cd7a90a17dacceb8f1bb9a82b916b Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:53:23 +0200 Subject: [PATCH 105/115] ESLint fix and `jest` global import for platform-api-docs --- packages/platform-api-docs/src/cli.test.ts | 1 + packages/platform-api-docs/src/discovery.test.ts | 2 +- packages/platform-api-docs/src/extraction.test.ts | 7 +++++-- packages/platform-api-docs/src/extraction.ts | 5 ++++- packages/platform-api-docs/src/generate.test.ts | 3 ++- packages/platform-api-docs/src/generate.ts | 11 +++++++---- packages/platform-api-docs/src/markdown.test.ts | 4 ++-- packages/platform-api-docs/src/markdown.ts | 2 +- 8 files changed, 23 insertions(+), 12 deletions(-) diff --git a/packages/platform-api-docs/src/cli.test.ts b/packages/platform-api-docs/src/cli.test.ts index 4d45bd4d5d1..27af6d6ae3e 100644 --- a/packages/platform-api-docs/src/cli.test.ts +++ b/packages/platform-api-docs/src/cli.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { createSandbox } from '@metamask/utils/node'; import execa from 'execa'; import * as fs from 'node:fs'; diff --git a/packages/platform-api-docs/src/discovery.test.ts b/packages/platform-api-docs/src/discovery.test.ts index 108d7bac009..0805d676459 100644 --- a/packages/platform-api-docs/src/discovery.test.ts +++ b/packages/platform-api-docs/src/discovery.test.ts @@ -2,7 +2,7 @@ import { createSandbox } from '@metamask/utils/node'; import * as fs from 'node:fs'; import * as path from 'node:path'; -import { findDtsFiles, findTsFiles } from './discovery'; +import { findDtsFiles, findTsFiles } from './discovery.js'; const { withinSandbox } = createSandbox('platform-api-docs/discovery'); diff --git a/packages/platform-api-docs/src/extraction.test.ts b/packages/platform-api-docs/src/extraction.test.ts index 3ac351469c9..cf601e45c5f 100644 --- a/packages/platform-api-docs/src/extraction.test.ts +++ b/packages/platform-api-docs/src/extraction.test.ts @@ -2,8 +2,11 @@ import { createSandbox } from '@metamask/utils/node'; import * as fs from 'node:fs'; import * as path from 'node:path'; -import { createExtractionProject, extractFromSourceFile } from './extraction'; -import { MessengerCapabilityPacket } from './types'; +import { + createExtractionProject, + extractFromSourceFile, +} from './extraction.js'; +import { MessengerCapabilityPacket } from './types.js'; const { withinSandbox } = createSandbox('platform-api-docs/extraction'); diff --git a/packages/platform-api-docs/src/extraction.ts b/packages/platform-api-docs/src/extraction.ts index b3cba35d73b..bb81f0c2bc3 100644 --- a/packages/platform-api-docs/src/extraction.ts +++ b/packages/platform-api-docs/src/extraction.ts @@ -15,7 +15,10 @@ import type { } from 'ts-morph'; import { Node as NodeGuards, Project, ts } from 'ts-morph'; -import type { MessengerCapabilityPacket, DocumentedParameter } from './types'; +import type { + MessengerCapabilityPacket, + DocumentedParameter, +} from './types.js'; // --------------------------------------------------------------------------- // NOTE: `ts-morph` is used heavily in this file to parse and extract diff --git a/packages/platform-api-docs/src/generate.test.ts b/packages/platform-api-docs/src/generate.test.ts index 6d7dafe69d2..80e5fa8d926 100644 --- a/packages/platform-api-docs/src/generate.test.ts +++ b/packages/platform-api-docs/src/generate.test.ts @@ -1,9 +1,10 @@ +import { jest } from '@jest/globals'; import { createSandbox } from '@metamask/utils/node'; import execa from 'execa'; import * as fs from 'node:fs'; import * as path from 'node:path'; -import { generate, resolveRepoUrl } from './generate'; +import { generate, resolveRepoUrl } from './generate.js'; const { withinSandbox } = createSandbox('platform-api-docs/generate'); diff --git a/packages/platform-api-docs/src/generate.ts b/packages/platform-api-docs/src/generate.ts index 0e41f3e2082..11d336c59dd 100644 --- a/packages/platform-api-docs/src/generate.ts +++ b/packages/platform-api-docs/src/generate.ts @@ -5,14 +5,17 @@ import * as path from 'node:path'; import { promisify } from 'node:util'; import type { Project } from 'ts-morph'; -import { findDtsFiles, findTsFiles } from './discovery'; -import { createExtractionProject, extractFromSourceFile } from './extraction'; +import { findDtsFiles, findTsFiles } from './discovery.js'; +import { + createExtractionProject, + extractFromSourceFile, +} from './extraction.js'; import { generateIndexPage, generateNamespacePage, generateSidebars, -} from './markdown'; -import type { MessengerCapabilityPacket, NamespaceGroup } from './types'; +} from './markdown.js'; +import type { MessengerCapabilityPacket, NamespaceGroup } from './types.js'; /** * Compute a deduplication score for a messenger item, preferring items with diff --git a/packages/platform-api-docs/src/markdown.test.ts b/packages/platform-api-docs/src/markdown.test.ts index 85dd841363a..6881424d49c 100644 --- a/packages/platform-api-docs/src/markdown.test.ts +++ b/packages/platform-api-docs/src/markdown.test.ts @@ -3,8 +3,8 @@ import { generateItemMarkdown, generateNamespacePage, generateSidebars, -} from './markdown'; -import type { MessengerCapabilityPacket, NamespaceGroup } from './types'; +} from './markdown.js'; +import type { MessengerCapabilityPacket, NamespaceGroup } from './types.js'; const makeItem = ( overrides: Partial = {}, diff --git a/packages/platform-api-docs/src/markdown.ts b/packages/platform-api-docs/src/markdown.ts index ff4ca208f2f..965bf2089c3 100644 --- a/packages/platform-api-docs/src/markdown.ts +++ b/packages/platform-api-docs/src/markdown.ts @@ -1,4 +1,4 @@ -import type { MessengerCapabilityPacket, NamespaceGroup } from './types'; +import type { MessengerCapabilityPacket, NamespaceGroup } from './types.js'; /** * Convert backtick-quoted action/event names in text into links when they From 4fff069f85cc4195148306c98119e6081353a0ea Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:53:27 +0200 Subject: [PATCH 106/115] ESLint fix and `jest` global import for solana-test-validator-up --- .../src/bin/solana-test-validator-up.ts | 2 +- packages/solana-test-validator-up/src/index.ts | 4 ++-- packages/solana-test-validator-up/src/install.test.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/solana-test-validator-up/src/bin/solana-test-validator-up.ts b/packages/solana-test-validator-up/src/bin/solana-test-validator-up.ts index 77c33bc3d72..904f7820f75 100644 --- a/packages/solana-test-validator-up/src/bin/solana-test-validator-up.ts +++ b/packages/solana-test-validator-up/src/bin/solana-test-validator-up.ts @@ -5,7 +5,7 @@ import { installSolanaTestValidator, parseSolanaTestValidatorInstallCliOptions, readSolanaTestValidatorInstallOptionsFromPackageJson, -} from '../install'; +} from '../install.js'; async function main(): Promise { const [command, ...args] = process.argv.slice(2); diff --git a/packages/solana-test-validator-up/src/index.ts b/packages/solana-test-validator-up/src/index.ts index b1acf97cfc6..19dbbe96262 100644 --- a/packages/solana-test-validator-up/src/index.ts +++ b/packages/solana-test-validator-up/src/index.ts @@ -5,11 +5,11 @@ export { installSolanaTestValidator, parseSolanaTestValidatorInstallCliOptions, readSolanaTestValidatorInstallOptionsFromPackageJson, -} from './install'; +} from './install.js'; export type { SolanaTestValidatorArtifactConfig, SolanaTestValidatorArtifactPlatformConfig, SolanaTestValidatorInstallDependencies, SolanaTestValidatorInstallOptions, SolanaTestValidatorInstallResult, -} from './install'; +} from './install.js'; diff --git a/packages/solana-test-validator-up/src/install.test.ts b/packages/solana-test-validator-up/src/install.test.ts index f561c886580..ac8b29af723 100644 --- a/packages/solana-test-validator-up/src/install.test.ts +++ b/packages/solana-test-validator-up/src/install.test.ts @@ -23,8 +23,8 @@ import { installSolanaTestValidator, parseSolanaTestValidatorInstallCliOptions, readSolanaTestValidatorInstallOptionsFromPackageJson, -} from './install'; -import type { SolanaTestValidatorInstallDependencies } from './install'; +} from './install.js'; +import type { SolanaTestValidatorInstallDependencies } from './install.js'; describe('solana-test-validator-up installer', () => { let tempDirs: string[] = []; From 10a3e0f983ed2d0df193797aad5e8463d0128c11 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:53:28 +0200 Subject: [PATCH 107/115] ESLint fix and `jest` global import for stellar-quickstart-up --- packages/stellar-quickstart-up/src/index.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stellar-quickstart-up/src/index.test.ts b/packages/stellar-quickstart-up/src/index.test.ts index bc062d3694a..baa030ac10f 100644 --- a/packages/stellar-quickstart-up/src/index.test.ts +++ b/packages/stellar-quickstart-up/src/index.test.ts @@ -1,4 +1,4 @@ -import greeter from '.'; +import greeter from './index.js'; describe('Test', () => { it('greets', () => { From 27d9814fc7a4f52ea40a780499a90f9675770179 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:54:00 +0200 Subject: [PATCH 108/115] ESLint fix and `jest` global import for create-package script --- scripts/create-package/cli.test.ts | 6 +++--- scripts/create-package/cli.ts | 2 +- scripts/create-package/commands.test.ts | 6 +++--- scripts/create-package/commands.ts | 4 ++-- scripts/create-package/fs-utils.test.ts | 2 +- scripts/create-package/index.test.ts | 4 ++-- scripts/create-package/index.ts | 4 ++-- scripts/create-package/utils.test.ts | 8 ++++---- scripts/create-package/utils.ts | 6 +++--- 9 files changed, 21 insertions(+), 21 deletions(-) diff --git a/scripts/create-package/cli.test.ts b/scripts/create-package/cli.test.ts index 330f9838ded..08e6cce80eb 100644 --- a/scripts/create-package/cli.test.ts +++ b/scripts/create-package/cli.test.ts @@ -1,6 +1,6 @@ -import cli from './cli'; -import { commands, commandMap } from './commands'; -import * as utils from './utils'; +import cli from './cli.js'; +import { commands, commandMap } from './commands.js'; +import * as utils from './utils.js'; jest.mock('./utils'); diff --git a/scripts/create-package/cli.ts b/scripts/create-package/cli.ts index e077ad9af0d..b8bb488d5fb 100644 --- a/scripts/create-package/cli.ts +++ b/scripts/create-package/cli.ts @@ -1,6 +1,6 @@ import yargs from 'yargs'; -import type { CommandModule } from './commands'; +import type { CommandModule } from './commands.js'; /** * The entry point of `create-package`, a yargs application for creating new diff --git a/scripts/create-package/commands.test.ts b/scripts/create-package/commands.test.ts index cb6889d834c..4e51bf7ec46 100644 --- a/scripts/create-package/commands.test.ts +++ b/scripts/create-package/commands.test.ts @@ -1,8 +1,8 @@ import type { Arguments } from 'yargs'; -import type { CreatePackageOptions } from './commands'; -import { createPackageHandler } from './commands'; -import * as utils from './utils'; +import type { CreatePackageOptions } from './commands.js'; +import { createPackageHandler } from './commands.js'; +import * as utils from './utils.js'; jest.mock('./utils', () => ({ finalizeAndWriteData: jest.fn(), diff --git a/scripts/create-package/commands.ts b/scripts/create-package/commands.ts index 662d369ca0d..3c64c38729d 100644 --- a/scripts/create-package/commands.ts +++ b/scripts/create-package/commands.ts @@ -4,8 +4,8 @@ import type { Arguments, } from 'yargs'; -import type { PackageData } from './utils'; -import { finalizeAndWriteData, readMonorepoFiles } from './utils'; +import type { PackageData } from './utils.js'; +import { finalizeAndWriteData, readMonorepoFiles } from './utils.js'; export type CreatePackageOptions = { name: string; diff --git a/scripts/create-package/fs-utils.test.ts b/scripts/create-package/fs-utils.test.ts index e65574a1f2b..436e8be40f0 100644 --- a/scripts/create-package/fs-utils.test.ts +++ b/scripts/create-package/fs-utils.test.ts @@ -2,7 +2,7 @@ import { createSandbox, writeFile, readFile } from '@metamask/utils/node'; import { promises as fs } from 'fs'; import path from 'path'; -import { readAllFiles, writeFiles } from './fs-utils'; +import { readAllFiles, writeFiles } from './fs-utils.js'; const { withinSandbox } = createSandbox('create-package/fs-utils'); diff --git a/scripts/create-package/index.test.ts b/scripts/create-package/index.test.ts index 3a6c6af7d27..39436aea78c 100644 --- a/scripts/create-package/index.test.ts +++ b/scripts/create-package/index.test.ts @@ -1,5 +1,5 @@ -import cli from './cli'; -import { commands } from './commands'; +import cli from './cli.js'; +import { commands } from './commands.js'; jest.mock('./cli'); diff --git a/scripts/create-package/index.ts b/scripts/create-package/index.ts index 55c35cab738..2fbd2be0206 100644 --- a/scripts/create-package/index.ts +++ b/scripts/create-package/index.ts @@ -2,8 +2,8 @@ * Entry point file for the `create-package` CLI. */ -import cli from './cli'; -import { commands } from './commands'; +import cli from './cli.js'; +import { commands } from './commands.js'; cli(process.argv, commands).catch((error) => { console.error(error); diff --git a/scripts/create-package/utils.test.ts b/scripts/create-package/utils.test.ts index ad8c264f046..c48b8a308b7 100644 --- a/scripts/create-package/utils.test.ts +++ b/scripts/create-package/utils.test.ts @@ -4,10 +4,10 @@ import fs from 'fs'; import path from 'path'; import { format } from 'prettier'; -import { MonorepoFiles } from './constants'; -import * as fsUtils from './fs-utils'; -import type { PackageData } from './utils'; -import { finalizeAndWriteData, readMonorepoFiles } from './utils'; +import { MonorepoFiles } from './constants.js'; +import * as fsUtils from './fs-utils.js'; +import type { PackageData } from './utils.js'; +import { finalizeAndWriteData, readMonorepoFiles } from './utils.js'; jest.mock('fs', () => ({ existsSync: jest.fn(), diff --git a/scripts/create-package/utils.ts b/scripts/create-package/utils.ts index e98e770fc5a..2f7f4410fc9 100644 --- a/scripts/create-package/utils.ts +++ b/scripts/create-package/utils.ts @@ -5,9 +5,9 @@ import path from 'path'; import { format as prettierFormat } from 'prettier'; import type { Options as PrettierOptions } from 'prettier'; -import { MonorepoFiles, Placeholders } from './constants'; -import type { FileMap } from './fs-utils'; -import { readAllFiles, writeFiles } from './fs-utils'; +import { MonorepoFiles, Placeholders } from './constants.js'; +import type { FileMap } from './fs-utils.js'; +import { readAllFiles, writeFiles } from './fs-utils.js'; const PACKAGE_TEMPLATE_DIR = path.join(import.meta.dirname, 'package-template'); const REPO_ROOT = path.join(import.meta.dirname, '..', '..'); From 45e4d880fad815f7057fd8e5f809d0490e6a28c4 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:54:00 +0200 Subject: [PATCH 109/115] Fix .js import extensions and `isomorphic-fetch` hoisting in shared test infrastructure --- tests/helpers.ts | 1 + tests/mock-network.ts | 4 ++-- tests/setup.ts | 2 +- tests/setupAfterEnv/index.ts | 4 ++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/tests/helpers.ts b/tests/helpers.ts index b4c60c01473..f0a2e71e6ca 100644 --- a/tests/helpers.ts +++ b/tests/helpers.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { getKnownPropertyNames } from '@metamask/utils'; /** diff --git a/tests/mock-network.ts b/tests/mock-network.ts index 2d0f32b9110..2479ff98a1b 100644 --- a/tests/mock-network.ts +++ b/tests/mock-network.ts @@ -1,8 +1,8 @@ import type { JsonRpcRequest, JsonRpcResponse } from '@metamask/utils'; import nock from 'nock'; -import type { NetworkClientConfiguration } from '../packages/network-controller/src/types'; -import { NetworkClientType } from '../packages/network-controller/src/types'; +import type { NetworkClientConfiguration } from '../packages/network-controller/src/types.js'; +import { NetworkClientType } from '../packages/network-controller/src/types.js'; /** * An object which instructs the MockedNetwork class which JSON-RPC request diff --git a/tests/setup.ts b/tests/setup.ts index b7953a291e6..85a8f7da9d7 100644 --- a/tests/setup.ts +++ b/tests/setup.ts @@ -9,5 +9,5 @@ delete globalThis.Request; // @ts-expect-error - Clear Response to ensure isomorphic-fetch sets up node-fetch version delete globalThis.Response; // Dynamic import so this runs *after* the deletes above (static imports are hoisted in ESM). -// eslint-disable-next-line import-x/no-unassigned-import + await import('isomorphic-fetch'); diff --git a/tests/setupAfterEnv/index.ts b/tests/setupAfterEnv/index.ts index b92d66804c4..04ea22faa6f 100644 --- a/tests/setupAfterEnv/index.ts +++ b/tests/setupAfterEnv/index.ts @@ -1,5 +1,5 @@ // These imports are for side effects only. /* eslint-disable import-x/no-unassigned-import */ -import './matchers'; -import './nock'; +import './matchers.js'; +import './nock.js'; /* eslint-enable import-x/no-unassigned-import */ From 53aef75d6970deed9b9a5beaa4f308fa21986c52 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 20:54:14 +0200 Subject: [PATCH 110/115] Remove resolved suppressions from eslint-suppressions.json --- eslint-suppressions.json | 27 ++------------------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/eslint-suppressions.json b/eslint-suppressions.json index 79caefd17d3..2114eb69d07 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -14,9 +14,6 @@ "@typescript-eslint/explicit-function-return-type": { "count": 7 }, - "@typescript-eslint/prefer-nullish-coalescing": { - "count": 1 - }, "no-negated-condition": { "count": 3 }, @@ -251,9 +248,6 @@ "packages/assets-controllers/src/DeFiPositionsController/DeFiPositionsController.ts": { "@typescript-eslint/explicit-function-return-type": { "count": 2 - }, - "@typescript-eslint/no-misused-promises": { - "count": 2 } }, "packages/assets-controllers/src/DeFiPositionsController/group-defi-positions.ts": { @@ -289,9 +283,6 @@ } }, "packages/assets-controllers/src/MultichainBalancesController/MultichainBalancesController.ts": { - "@typescript-eslint/no-misused-promises": { - "count": 1 - }, "no-restricted-syntax": { "count": 2 } @@ -311,9 +302,6 @@ "@typescript-eslint/naming-convention": { "count": 5 }, - "@typescript-eslint/no-misused-promises": { - "count": 2 - }, "@typescript-eslint/prefer-nullish-coalescing": { "count": 6 }, @@ -475,9 +463,6 @@ "@typescript-eslint/no-unused-vars": { "count": 1 }, - "@typescript-eslint/prefer-optional-chain": { - "count": 3 - }, "id-length": { "count": 1 }, @@ -1377,9 +1362,6 @@ "@typescript-eslint/explicit-function-return-type": { "count": 4 }, - "@typescript-eslint/no-misused-promises": { - "count": 2 - }, "no-restricted-syntax": { "count": 1 } @@ -2131,7 +2113,7 @@ "count": 10 }, "@typescript-eslint/no-floating-promises": { - "count": 4 + "count": 3 }, "no-restricted-syntax": { "count": 4 @@ -2240,11 +2222,6 @@ "count": 2 } }, - "packages/transaction-pay-controller/src/strategy/bridge/bridge-submit.ts": { - "no-restricted-syntax": { - "count": 1 - } - }, "packages/transaction-pay-controller/src/strategy/relay/hyperliquid-withdraw.ts": { "no-restricted-syntax": { "count": 1 @@ -2374,4 +2351,4 @@ "count": 10 } } -} +} \ No newline at end of file From e813e6fe3a4d3b9a50b407322c76b9ceb81e905a Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 22:59:38 +0200 Subject: [PATCH 111/115] ESM lint fixes: jest shadow, no-void, CJS unambiguous, JSON extensions Several ESLint rule conflicts and gaps arose from the ESM-only migration: - Allow `jest` to shadow its global in test files: importing `jest` from `@jest/globals` (required in ESM) shadows the Jest-injected global, so `@typescript-eslint/no-shadow` is set to allow `['jest']` in test files. - Allow `void expr` as a statement: `no-floating-promises` requires `void` to mark intentionally ignored promises, but `no-void` was blocking it; `allowAsStatement: true` resolves the conflict. - Turn off `import-x/unambiguous` for CJS config files (`*.cjs`, `jest.environment.js`, `.eslintrc.js`, etc.) that have no import/export. - Add `json: 'always'` to `import-x/extensions` so JSON imports are not flagged as using an unexpected file extension. - Fix `jest.resolver.cjs`: formatter moved inline `eslint-disable-line` comments to the next line, breaking them; converted to `eslint-disable-next-line`. - Add `export {}` to `tests/setup.ts` so it is unambiguously an ES module. --- eslint.config.mjs | 17 +++++++++++++++++ tests/setup.ts | 3 ++- tsconfig.packages.json | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 8ec18b8a9a0..86f42cf6355 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -95,6 +95,9 @@ const config = createConfig([ // Handled by Oxfmt. 'prettier/prettier': 'off', 'import-x/order': 'off', + // Allow `void somePromise()` to explicitly mark ignored promises + // (required by `no-floating-promises`). + 'no-void': ['error', { allowAsStatement: true }], }, }, { @@ -226,6 +229,19 @@ const config = createConfig([ 'n/hashbang': 'off', }, }, + { + files: [ + '**/*.cjs', + '**/.prettierrc.js', + '**/.eslintrc.js', + '**/jest.config*.js', + '**/jest.environment.js', + ], + rules: { + // CJS config files have no import/export statements. + 'import-x/unambiguous': 'off', + }, + }, { files: ['**/jest.environment.js'], rules: { @@ -397,6 +413,7 @@ const config = createConfig([ js: 'ignorePackages', ts: 'never', tsx: 'never', + json: 'always', }, ], 'import-x/no-useless-path-segments': [ diff --git a/tests/setup.ts b/tests/setup.ts index 85a8f7da9d7..6f0fa61050f 100644 --- a/tests/setup.ts +++ b/tests/setup.ts @@ -9,5 +9,6 @@ delete globalThis.Request; // @ts-expect-error - Clear Response to ensure isomorphic-fetch sets up node-fetch version delete globalThis.Response; // Dynamic import so this runs *after* the deletes above (static imports are hoisted in ESM). - await import('isomorphic-fetch'); + +export {}; diff --git a/tsconfig.packages.json b/tsconfig.packages.json index fbde19a5981..83a81722c5b 100644 --- a/tsconfig.packages.json +++ b/tsconfig.packages.json @@ -13,7 +13,7 @@ */ "paths": { "@metamask/json-rpc-engine/v2": ["../json-rpc-engine/src/v2/index.ts"], - "@metamask/*": ["../*/src"] + "@metamask/*": ["../*/src/index.ts"] } } } From 419ffdc1f58ff8507235aeb5d17e5e18932ba54f Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 16 Jul 2026 23:00:49 +0200 Subject: [PATCH 112/115] Add `@jest/globals` to root devDependencies; prune resolved suppressions - Add `@jest/globals: ^30.4.1` to root package.json devDependencies so the package is available for top-level test infrastructure. - Remove `prefer-nullish-coalescing` suppression entries that are no longer needed now that those errors were fixed in the source files. - Update yarn.lock to reflect the new and updated dependencies. --- eslint-suppressions.json | 17 +- knip.config.ts | 1 + package.json | 1 + yarn.lock | 921 ++++++++++++++++++++++----------------- 4 files changed, 525 insertions(+), 415 deletions(-) diff --git a/eslint-suppressions.json b/eslint-suppressions.json index 2114eb69d07..483411966b1 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -302,9 +302,6 @@ "@typescript-eslint/naming-convention": { "count": 5 }, - "@typescript-eslint/prefer-nullish-coalescing": { - "count": 6 - }, "@typescript-eslint/prefer-optional-chain": { "count": 1 }, @@ -586,9 +583,6 @@ "@typescript-eslint/explicit-function-return-type": { "count": 25 }, - "@typescript-eslint/prefer-nullish-coalescing": { - "count": 1 - }, "no-negated-condition": { "count": 1 } @@ -1273,9 +1267,6 @@ "@typescript-eslint/explicit-function-return-type": { "count": 1 }, - "@typescript-eslint/prefer-nullish-coalescing": { - "count": 2 - }, "id-denylist": { "count": 1 } @@ -1721,9 +1712,6 @@ "@typescript-eslint/explicit-function-return-type": { "count": 4 }, - "@typescript-eslint/prefer-nullish-coalescing": { - "count": 4 - }, "id-length": { "count": 2 }, @@ -2087,9 +2075,6 @@ "@typescript-eslint/explicit-function-return-type": { "count": 7 }, - "@typescript-eslint/no-base-to-string": { - "count": 1 - }, "@typescript-eslint/no-unused-vars": { "count": 2 }, @@ -2351,4 +2336,4 @@ "count": 10 } } -} \ No newline at end of file +} diff --git a/knip.config.ts b/knip.config.ts index 97dc77e7c63..840dafc9260 100644 --- a/knip.config.ts +++ b/knip.config.ts @@ -279,6 +279,7 @@ const config: KnipConfig = { // follow-up. '@metamask/providers', 'webextension-polyfill', + '@jest/globals', ], }; diff --git a/package.json b/package.json index c5bfd24c5c2..a47f5ad6f58 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "workspaces:list-versions": "./scripts/list-workspace-versions.sh" }, "devDependencies": { + "@jest/globals": "^30.4.1", "@lavamoat/allow-scripts": "^3.0.4", "@lavamoat/preinstall-always-fail": "^2.1.0", "@metamask/create-release-branch": "^4.2.1", diff --git a/yarn.lock b/yarn.lock index 02edd5d1835..eabc167426e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -242,7 +242,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.29.7": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.27.1, @babel/code-frame@npm:^7.29.7": version: 7.29.7 resolution: "@babel/code-frame@npm:7.29.7" dependencies: @@ -260,7 +260,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.2, @babel/core@npm:^7.23.9, @babel/core@npm:^7.25.9": +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.2, @babel/core@npm:^7.23.9, @babel/core@npm:^7.25.9, @babel/core@npm:^7.27.4": version: 7.29.7 resolution: "@babel/core@npm:7.29.7" dependencies: @@ -283,7 +283,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.25.9, @babel/generator@npm:^7.29.7, @babel/generator@npm:^7.7.2": +"@babel/generator@npm:^7.25.9, @babel/generator@npm:^7.27.5, @babel/generator@npm:^7.29.7, @babel/generator@npm:^7.7.2": version: 7.29.7 resolution: "@babel/generator@npm:7.29.7" dependencies: @@ -687,7 +687,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.29.7, @babel/plugin-syntax-jsx@npm:^7.7.2": +"@babel/plugin-syntax-jsx@npm:^7.27.1, @babel/plugin-syntax-jsx@npm:^7.29.7, @babel/plugin-syntax-jsx@npm:^7.7.2": version: 7.29.7 resolution: "@babel/plugin-syntax-jsx@npm:7.29.7" dependencies: @@ -786,7 +786,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.29.7, @babel/plugin-syntax-typescript@npm:^7.7.2": +"@babel/plugin-syntax-typescript@npm:^7.27.1, @babel/plugin-syntax-typescript@npm:^7.29.7, @babel/plugin-syntax-typescript@npm:^7.7.2": version: 7.29.7 resolution: "@babel/plugin-syntax-typescript@npm:7.29.7" dependencies: @@ -1659,7 +1659,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.23.0, @babel/types@npm:^7.28.2, @babel/types@npm:^7.29.7, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.23.0, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.29.7, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": version: 7.29.7 resolution: "@babel/types@npm:7.29.7" dependencies: @@ -3361,6 +3361,15 @@ __metadata: languageName: node linkType: hard +"@ethereumjs/rlp@npm:^10.1.2": + version: 10.1.2 + resolution: "@ethereumjs/rlp@npm:10.1.2" + bin: + rlp: bin/rlp.cjs + checksum: 10/1b85894b8cd95295a8c83731016aa48f1e8e871ab8ece0c93f9f191e4ac265ff1b4bc3ddab560821ee085a34fb6755757fbe530a91d086e42558f432ab967ce2 + languageName: node + linkType: hard + "@ethereumjs/rlp@npm:^4.0.1": version: 4.0.1 resolution: "@ethereumjs/rlp@npm:4.0.1" @@ -3403,6 +3412,17 @@ __metadata: languageName: node linkType: hard +"@ethereumjs/util@npm:^10.0.0": + version: 10.1.2 + resolution: "@ethereumjs/util@npm:10.1.2" + dependencies: + "@ethereumjs/rlp": "npm:^10.1.2" + "@noble/curves": "npm:^2.0.1" + "@noble/hashes": "npm:^2.0.1" + checksum: 10/7e207e696a924dd2a5f79b81bd89cf58c15631abe7c83a05d366bdd12261ffca6bf93c7afde86b6b2b8f3fb7bff26ab116f73c8943dec3b2d523b429a986fd9c + languageName: node + linkType: hard + "@ethereumjs/util@npm:^8.1.0": version: 8.1.0 resolution: "@ethereumjs/util@npm:8.1.0" @@ -3424,6 +3444,19 @@ __metadata: languageName: node linkType: hard +"@ethereumjs/wallet@npm:^10.0.0": + version: 10.0.0 + resolution: "@ethereumjs/wallet@npm:10.0.0" + dependencies: + "@ethereumjs/util": "npm:^10.0.0" + "@scure/base": "npm:^1.2.4" + ethereum-cryptography: "npm:^3.2.0" + js-md5: "npm:^0.8.3" + uuid: "npm:^11.1.0" + checksum: 10/06e0e250057c4a9f5fe28cd631fd6e25be97395002736b12c419ba5f1f6d6a1fb2630bdc4738224dccd96aa7f2cb80a1efacb65415af6d4ebe4ec5596f2f08bb + languageName: node + linkType: hard + "@ethersproject/abi@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/abi@npm:5.7.0" @@ -4756,6 +4789,25 @@ __metadata: languageName: node linkType: hard +"@jest/diff-sequences@npm:30.4.0": + version: 30.4.0 + resolution: "@jest/diff-sequences@npm:30.4.0" + checksum: 10/65c27937c10a7157899dad5d176806104286f9d55464f318955a0cee98db8aed6b8f70ad4aee7133468087146422cdd391d49b1e101ec543db3283ee4eb59c06 + languageName: node + linkType: hard + +"@jest/environment@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/environment@npm:30.4.1" + dependencies: + "@jest/fake-timers": "npm:30.4.1" + "@jest/types": "npm:30.4.1" + "@types/node": "npm:*" + jest-mock: "npm:30.4.1" + checksum: 10/c25946fee29604f5aa24ea059bc3cc7bc4c8cdaf26db1ed6ffa4f28e37f5193cc4e868650c807d89caff4123e44d07b58200d4cb5960ebdb7d66531509d76359 + languageName: node + linkType: hard + "@jest/environment@npm:^29.7.0": version: 29.7.0 resolution: "@jest/environment@npm:29.7.0" @@ -4768,6 +4820,15 @@ __metadata: languageName: node linkType: hard +"@jest/expect-utils@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/expect-utils@npm:30.4.1" + dependencies: + "@jest/get-type": "npm:30.1.0" + checksum: 10/3f0337ec791d669cacd07594521f2da71b956712dfd0c0007253dd5e886ef640df510af1357878a80ac56f09d3db9fd68e3db66959f0fdb3add5f551dd7e0f35 + languageName: node + linkType: hard + "@jest/expect-utils@npm:^29.7.0": version: 29.7.0 resolution: "@jest/expect-utils@npm:29.7.0" @@ -4777,6 +4838,16 @@ __metadata: languageName: node linkType: hard +"@jest/expect@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/expect@npm:30.4.1" + dependencies: + expect: "npm:30.4.1" + jest-snapshot: "npm:30.4.1" + checksum: 10/40ae0317a3590ced7a7fd21c49e6b1af6b122e6a83822e643af83f02034dfed6485248cae08d6bcf9380039ba3824ac56db18478712c64ddf5f709ee23cf30cd + languageName: node + linkType: hard + "@jest/expect@npm:^29.7.0": version: 29.7.0 resolution: "@jest/expect@npm:29.7.0" @@ -4787,6 +4858,20 @@ __metadata: languageName: node linkType: hard +"@jest/fake-timers@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/fake-timers@npm:30.4.1" + dependencies: + "@jest/types": "npm:30.4.1" + "@sinonjs/fake-timers": "npm:^15.4.0" + "@types/node": "npm:*" + jest-message-util: "npm:30.4.1" + jest-mock: "npm:30.4.1" + jest-util: "npm:30.4.1" + checksum: 10/bc7aff23548395d6e7957bc24f699f921a9616f2357ab49616b0468c7b5e94e6ac4cbdd45d306f1a5d7f72e2a055294f52be3666e4c1da7c137874c5b226e1c6 + languageName: node + linkType: hard + "@jest/fake-timers@npm:^29.7.0": version: 29.7.0 resolution: "@jest/fake-timers@npm:29.7.0" @@ -4801,6 +4886,13 @@ __metadata: languageName: node linkType: hard +"@jest/get-type@npm:30.1.0": + version: 30.1.0 + resolution: "@jest/get-type@npm:30.1.0" + checksum: 10/e2a95fbb49ce2d15547db8af5602626caf9b05f62a5e583b4a2de9bd93a2bfe7175f9bbb2b8a5c3909ce261d467b6991d7265bb1d547cb60e7e97f571f361a70 + languageName: node + linkType: hard + "@jest/globals@npm:^29.7.0": version: 29.7.0 resolution: "@jest/globals@npm:29.7.0" @@ -4813,6 +4905,28 @@ __metadata: languageName: node linkType: hard +"@jest/globals@npm:^30.4.1": + version: 30.4.1 + resolution: "@jest/globals@npm:30.4.1" + dependencies: + "@jest/environment": "npm:30.4.1" + "@jest/expect": "npm:30.4.1" + "@jest/types": "npm:30.4.1" + jest-mock: "npm:30.4.1" + checksum: 10/5fe04b9c3b97f0061e4464201ee0dd674dd958843eb80542791d1c576c51f12aaa3f3b369e136d5fd3f8c716f9c9bbfbb76491a3cbc3c4efb3cc71063f909132 + languageName: node + linkType: hard + +"@jest/pattern@npm:30.4.0": + version: 30.4.0 + resolution: "@jest/pattern@npm:30.4.0" + dependencies: + "@types/node": "npm:*" + jest-regex-util: "npm:30.4.0" + checksum: 10/4fb1db0e586713708d2fcd79059315600978608483ef2d80e04a0a59b20b0d8de0d3f47cad950ff90bfb9ea3cb788709ee3d1eb225734e4dbf1c4b743c93d204 + languageName: node + linkType: hard + "@jest/reporters@npm:^29.7.0": version: 29.7.0 resolution: "@jest/reporters@npm:29.7.0" @@ -4850,6 +4964,15 @@ __metadata: languageName: node linkType: hard +"@jest/schemas@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/schemas@npm:30.4.1" + dependencies: + "@sinclair/typebox": "npm:^0.34.0" + checksum: 10/86e62c8fd8fc77535085f1ede3a416430a3740f78b8f88ec7d0ee4516b22daf3326ffc1ade9d5f7839bbde923aaf1b5ac430a42ed4bb1a38edc3de5005a58f51 + languageName: node + linkType: hard + "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -4859,6 +4982,18 @@ __metadata: languageName: node linkType: hard +"@jest/snapshot-utils@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/snapshot-utils@npm:30.4.1" + dependencies: + "@jest/types": "npm:30.4.1" + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + natural-compare: "npm:^1.4.0" + checksum: 10/8f17768702153267388b3043f358027385e591ac4668699bfce3547cb8e08ac146a074913bcddf68c0a4f7155e24a6d582d27f4592f5c3bd5f9fbc3f9182ef78 + languageName: node + linkType: hard + "@jest/source-map@npm:^29.6.3": version: 29.6.3 resolution: "@jest/source-map@npm:29.6.3" @@ -4894,6 +5029,28 @@ __metadata: languageName: node linkType: hard +"@jest/transform@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/transform@npm:30.4.1" + dependencies: + "@babel/core": "npm:^7.27.4" + "@jest/types": "npm:30.4.1" + "@jridgewell/trace-mapping": "npm:^0.3.25" + babel-plugin-istanbul: "npm:^7.0.1" + chalk: "npm:^4.1.2" + convert-source-map: "npm:^2.0.0" + fast-json-stable-stringify: "npm:^2.1.0" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.4.1" + jest-regex-util: "npm:30.4.0" + jest-util: "npm:30.4.1" + pirates: "npm:^4.0.7" + slash: "npm:^3.0.0" + write-file-atomic: "npm:^5.0.1" + checksum: 10/7b570451f6c26360f1b852c2281dcc4e36fe685dbc159cf5eabf83d49d6aae4569f444d38f3afb5b3b6e0b809eb41b65f3145c0cac5fee3eec9c9b178fb1f0ea + languageName: node + linkType: hard + "@jest/transform@npm:^29.7.0": version: 29.7.0 resolution: "@jest/transform@npm:29.7.0" @@ -4917,6 +5074,21 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/types@npm:30.4.1" + dependencies: + "@jest/pattern": "npm:30.4.0" + "@jest/schemas": "npm:30.4.1" + "@types/istanbul-lib-coverage": "npm:^2.0.6" + "@types/istanbul-reports": "npm:^3.0.4" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.33" + chalk: "npm:^4.1.2" + checksum: 10/cc0999508613487c6d0f55661cd342ebe7cfe579fa9917534b94310204358f03f94524f70f00b4fe3c6dd2ccd0fd44657615a1b9f420ab310d68b43964bff87c + languageName: node + linkType: hard + "@jest/types@npm:^26.6.2": version: 26.6.2 resolution: "@jest/types@npm:26.6.2" @@ -5423,6 +5595,7 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/account-tree-controller@workspace:packages/account-tree-controller" dependencies: + "@jest/globals": "npm:^30.4.1" "@metamask/account-api": "npm:^1.0.4" "@metamask/accounts-controller": "npm:^39.0.5" "@metamask/auto-changelog": "npm:^6.1.0" @@ -5480,7 +5653,7 @@ __metadata: ethereum-cryptography: "npm:^2.1.2" immer: "npm:^9.0.6" jest: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" ts-jest: "npm:^29.2.5" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -5557,7 +5730,7 @@ __metadata: "@types/uuid": "npm:^8.3.0" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" ts-jest: "npm:^29.2.5" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -5689,7 +5862,7 @@ __metadata: bignumber.js: "npm:^9.1.2" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" p-limit: "npm:^3.1.0" ts-jest: "npm:^29.2.5" tsx: "npm:^4.20.5" @@ -5757,7 +5930,7 @@ __metadata: immer: "npm:^9.0.6" jest: "npm:^29.7.0" jest-environment-jsdom: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" multiformats: "npm:^9.9.0" nock: "npm:^13.3.1" reselect: "npm:^5.1.1" @@ -5877,6 +6050,7 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/base-data-service@workspace:packages/base-data-service" dependencies: + "@jest/globals": "npm:^30.4.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/storage-service": "npm:^1.0.2" @@ -5888,7 +6062,7 @@ __metadata: deepmerge: "npm:^4.2.2" fast-deep-equal: "npm:^3.1.3" jest: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" nock: "npm:^13.3.1" ts-jest: "npm:^29.2.5" tsx: "npm:^4.20.5" @@ -5951,7 +6125,7 @@ __metadata: deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" jest-environment-jsdom: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" nock: "npm:^13.3.1" reselect: "npm:^5.1.1" ts-jest: "npm:^29.2.5" @@ -6039,7 +6213,7 @@ __metadata: "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" ts-jest: "npm:^29.2.5" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6162,6 +6336,7 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/composable-controller@workspace:packages/composable-controller" dependencies: + "@jest/globals": "npm:^30.4.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" "@metamask/json-rpc-engine": "npm:^10.5.0" @@ -6318,6 +6493,7 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/core-monorepo@workspace:." dependencies: + "@jest/globals": "npm:^30.4.1" "@lavamoat/allow-scripts": "npm:^3.0.4" "@lavamoat/preinstall-always-fail": "npm:^2.1.0" "@metamask/create-release-branch": "npm:^4.2.1" @@ -6482,7 +6658,7 @@ __metadata: deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" klona: "npm:^2.0.6" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" ts-jest: "npm:^29.2.5" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6526,7 +6702,7 @@ __metadata: "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" ts-jest: "npm:^29.2.5" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6731,6 +6907,7 @@ __metadata: resolution: "@metamask/eth-json-rpc-provider@workspace:packages/eth-json-rpc-provider" dependencies: "@ethersproject/providers": "npm:^5.7.0" + "@jest/globals": "npm:^30.4.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/eth-query": "npm:^4.0.0" "@metamask/ethjs-query": "npm:^0.5.3" @@ -7181,6 +7358,7 @@ __metadata: "@ethereumjs/common": "npm:^4.4.0" "@ethereumjs/tx": "npm:^5.4.0" "@ethereumjs/util": "npm:^9.1.0" + "@ethereumjs/wallet": "npm:^10.0.0" "@lavamoat/allow-scripts": "npm:^3.0.4" "@lavamoat/preinstall-always-fail": "npm:^2.1.0" "@metamask/auto-changelog": "npm:^6.1.0" @@ -7199,17 +7377,15 @@ __metadata: "@types/jest": "npm:^29.5.14" async-mutex: "npm:^0.5.0" deepmerge: "npm:^4.2.2" - ethereumjs-wallet: "npm:^1.0.1" immer: "npm:^9.0.6" jest: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" 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" ulid: "npm:^2.3.0" - uuid: "npm:^8.3.2" languageName: unknown linkType: soft @@ -7634,7 +7810,7 @@ __metadata: deepmerge: "npm:^4.2.2" immer: "npm:^9.0.6" jest: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" nock: "npm:^13.3.1" ts-jest: "npm:^29.2.5" tsx: "npm:^4.20.5" @@ -7754,7 +7930,7 @@ __metadata: jest: "npm:^29.7.0" jest-environment-jsdom: "npm:^29.7.0" jest-when: "npm:^3.4.2" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" loglevel: "npm:^1.8.1" nock: "npm:^13.3.1" node-fetch: "npm:^2.7.0" @@ -7832,7 +8008,7 @@ __metadata: firebase: "npm:^11.2.0" jest: "npm:^29.7.0" jest-environment-jsdom: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" loglevel: "npm:^1.8.1" nock: "npm:^13.3.1" semver: "npm:^7.6.3" @@ -7911,6 +8087,7 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/permission-controller@workspace:packages/permission-controller" dependencies: + "@jest/globals": "npm:^30.4.1" "@metamask/approval-controller": "npm:^9.0.2" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/base-controller": "npm:^9.1.0" @@ -8454,7 +8631,7 @@ __metadata: cockatiel: "npm:^3.1.2" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" ts-jest: "npm:^29.2.5" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8535,7 +8712,7 @@ __metadata: bignumber.js: "npm:^9.1.2" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" nock: "npm:^13.3.1" reselect: "npm:^5.1.1" ts-jest: "npm:^29.2.5" @@ -8565,7 +8742,7 @@ __metadata: "@types/jest": "npm:^29.5.14" deepmerge: "npm:^4.2.2" jest: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" ts-jest: "npm:^29.2.5" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8871,7 +9048,7 @@ __metadata: immer: "npm:^9.0.6" jest: "npm:^29.7.0" jest-environment-jsdom: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" nock: "npm:^13.3.1" ts-jest: "npm:^29.2.5" tsx: "npm:^4.20.5" @@ -8912,7 +9089,7 @@ __metadata: deepmerge: "npm:^4.2.2" immer: "npm:^9.0.6" jest: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" ts-jest: "npm:^29.2.5" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8945,7 +9122,7 @@ __metadata: deepmerge: "npm:^4.2.2" immer: "npm:^9.0.6" jest: "npm:^29.7.0" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" ts-jest: "npm:^29.2.5" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -9157,7 +9334,7 @@ __metadata: languageName: node linkType: hard -"@noble/ciphers@npm:^1.2.1, @noble/ciphers@npm:^1.3.0": +"@noble/ciphers@npm:1.3.0, @noble/ciphers@npm:^1.2.1, @noble/ciphers@npm:^1.3.0": version: 1.3.0 resolution: "@noble/ciphers@npm:1.3.0" checksum: 10/051660051e3e9e2ca5fb9dece2885532b56b7e62946f89afa7284a0fb8bc02e2bd1c06554dba68162ff42d295b54026456084198610f63c296873b2f1cd7a586 @@ -9182,6 +9359,15 @@ __metadata: languageName: node linkType: hard +"@noble/curves@npm:1.9.0": + version: 1.9.0 + resolution: "@noble/curves@npm:1.9.0" + dependencies: + "@noble/hashes": "npm:1.8.0" + checksum: 10/f2c5946310722fee23e04ed747f21ce72e0436e38e1fa620d226a8c613262e7d0dbab5341f14caf92936089d01d9e9231964c409cd1ac2a73a075f3cdb1acc41 + languageName: node + linkType: hard + "@noble/curves@npm:1.9.1": version: 1.9.1 resolution: "@noble/curves@npm:1.9.1" @@ -9200,6 +9386,15 @@ __metadata: languageName: node linkType: hard +"@noble/curves@npm:^2.0.1": + version: 2.2.0 + resolution: "@noble/curves@npm:2.2.0" + dependencies: + "@noble/hashes": "npm:2.2.0" + checksum: 10/f9545e55bb8b6cdf2618c936870b9229339c90b25f129fc368b4b534e723f274e5c0daf8abca2f891bcf0a59c3b49c5ac5205899aec07f5251f545ec616e3aa9 + languageName: node + linkType: hard + "@noble/hashes@npm:1.3.2": version: 1.3.2 resolution: "@noble/hashes@npm:1.3.2" @@ -9221,7 +9416,7 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:^2.2.0": +"@noble/hashes@npm:2.2.0, @noble/hashes@npm:^2.0.1, @noble/hashes@npm:^2.2.0": version: 2.2.0 resolution: "@noble/hashes@npm:2.2.0" checksum: 10/b1b78bedc2a01394be047429f3d888905015fe8a09f1b7e43e0b5736b54133df62f73dcc73ede43af38e96e86156afb45b86973fdeaa95d9f0880333c3fc0907 @@ -10269,6 +10464,13 @@ __metadata: languageName: node linkType: hard +"@pkgr/core@npm:^0.3.6": + version: 0.3.6 + resolution: "@pkgr/core@npm:0.3.6" + checksum: 10/29082aa13d36f13fc41cdc64cb1feb36b630de0d6ebde84e2ff68e3d7a7f1dce4462cca91f76176c46e50bbca6b1e7f1fd9cf907af12d5d70da83bc981ca4ccf + languageName: node + linkType: hard + "@pnpm/config.env-replace@npm:^1.1.0": version: 1.1.0 resolution: "@pnpm/config.env-replace@npm:1.1.0" @@ -10376,7 +10578,7 @@ __metadata: languageName: node linkType: hard -"@scure/base@npm:^1.0.0, @scure/base@npm:^1.1.1, @scure/base@npm:^1.1.3, @scure/base@npm:~1.2.5": +"@scure/base@npm:^1.0.0, @scure/base@npm:^1.1.1, @scure/base@npm:^1.1.3, @scure/base@npm:^1.2.4, @scure/base@npm:~1.2.5": version: 1.2.6 resolution: "@scure/base@npm:1.2.6" checksum: 10/c1a7bd5e0b0c8f94c36fbc220f4a67cc832b00e2d2065c7d8a404ed81ab1c94c5443def6d361a70fc382db3496e9487fb9941728f0584782b274c18a4bed4187 @@ -10469,6 +10671,13 @@ __metadata: languageName: node linkType: hard +"@sinclair/typebox@npm:^0.34.0": + version: 0.34.52 + resolution: "@sinclair/typebox@npm:0.34.52" + checksum: 10/693a7ab6c8935cbb6e89698bd75ac465038ecfff8b8ad22c50ad6d93a049b0e7cfe4d759200d0401707c5679d6f7a3791fd6dee139bcbb250fa3aae3c17e8bd1 + languageName: node + linkType: hard + "@sindresorhus/is@npm:^4.6.0": version: 4.6.0 resolution: "@sindresorhus/is@npm:4.6.0" @@ -10483,7 +10692,7 @@ __metadata: languageName: node linkType: hard -"@sinonjs/commons@npm:^3.0.0": +"@sinonjs/commons@npm:^3.0.0, @sinonjs/commons@npm:^3.0.1": version: 3.0.1 resolution: "@sinonjs/commons@npm:3.0.1" dependencies: @@ -10501,6 +10710,15 @@ __metadata: languageName: node linkType: hard +"@sinonjs/fake-timers@npm:^15.4.0": + version: 15.4.0 + resolution: "@sinonjs/fake-timers@npm:15.4.0" + dependencies: + "@sinonjs/commons": "npm:^3.0.1" + checksum: 10/3960a9fe065f38a4228c66d184eeb101e8a6af9cbfc8454dd5d45ac397201da72134048d4e808a25993494885b172dd6deecdad9949bbf4c1d3a220ef561f6cc + languageName: node + linkType: hard + "@slorber/remark-comment@npm:^1.0.0": version: 1.0.0 resolution: "@slorber/remark-comment@npm:1.0.0" @@ -10988,7 +11206,7 @@ __metadata: languageName: node linkType: hard -"@types/bn.js@npm:*, @types/bn.js@npm:^5.1.0, @types/bn.js@npm:^5.1.5": +"@types/bn.js@npm:*, @types/bn.js@npm:^5.1.5": version: 5.1.6 resolution: "@types/bn.js@npm:5.1.6" dependencies: @@ -11202,7 +11420,7 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1, @types/istanbul-lib-coverage@npm:^2.0.6": version: 2.0.6 resolution: "@types/istanbul-lib-coverage@npm:2.0.6" checksum: 10/3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 @@ -11218,7 +11436,7 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-reports@npm:^3.0.0": +"@types/istanbul-reports@npm:^3.0.0, @types/istanbul-reports@npm:^3.0.4": version: 3.0.4 resolution: "@types/istanbul-reports@npm:3.0.4" dependencies: @@ -11287,20 +11505,13 @@ __metadata: languageName: node linkType: hard -"@types/lodash@npm:*": +"@types/lodash@npm:*, @types/lodash@npm:^4.14.191, @types/lodash@npm:^4.17.20": version: 4.17.24 resolution: "@types/lodash@npm:4.17.24" checksum: 10/0f2082565f60f9787eefc046edc38458054512be5a8b3584ef0bad5fd9e85d0ab55ec5a1fbfae1ed6ba015cf1f9e837d5fb4da1f99fc60b8f74b2a46146fb00f languageName: node linkType: hard -"@types/lodash@npm:^4.14.191, @types/lodash@npm:^4.17.20": - version: 4.17.20 - resolution: "@types/lodash@npm:4.17.20" - checksum: 10/8cd8ad3bd78d2e06a93ae8d6c9907981d5673655fec7cb274a4d9a59549aab5bb5b3017361280773b8990ddfccf363e14d1b37c97af8a9fe363de677f9a61524 - languageName: node - linkType: hard - "@types/mdast@npm:^4.0.0, @types/mdast@npm:^4.0.2": version: 4.0.4 resolution: "@types/mdast@npm:4.0.4" @@ -11373,15 +11584,6 @@ __metadata: languageName: node linkType: hard -"@types/pbkdf2@npm:^3.0.0": - version: 3.1.2 - resolution: "@types/pbkdf2@npm:3.1.2" - dependencies: - "@types/node": "npm:*" - checksum: 10/bebe1e596cbbe5f7d2726a58859e61986c5a42459048e29cb7f2d4d764be6bbb0844572fd5d70ca8955a8a17e8b4ed80984fc4903e165d9efb8807a3fbb051aa - languageName: node - linkType: hard - "@types/prismjs@npm:^1.26.0": version: 1.26.6 resolution: "@types/prismjs@npm:1.26.6" @@ -11477,15 +11679,6 @@ __metadata: languageName: node linkType: hard -"@types/secp256k1@npm:^4.0.1": - version: 4.0.6 - resolution: "@types/secp256k1@npm:4.0.6" - dependencies: - "@types/node": "npm:*" - checksum: 10/211f823be990b55612e604d620acf0dc3bc942d3836bdd8da604269effabc86d98161e5947487b4e4e128f9180fc1682daae2f89ea7a4d9648fdfe52fba365fc - languageName: node - linkType: hard - "@types/semver@npm:^7, @types/semver@npm:^7.3.6": version: 7.5.8 resolution: "@types/semver@npm:7.5.8" @@ -11551,7 +11744,7 @@ __metadata: languageName: node linkType: hard -"@types/stack-utils@npm:^2.0.0": +"@types/stack-utils@npm:^2.0.0, @types/stack-utils@npm:^2.0.3": version: 2.0.3 resolution: "@types/stack-utils@npm:2.0.3" checksum: 10/72576cc1522090fe497337c2b99d9838e320659ac57fa5560fcbdcbafcf5d0216c6b3a0a8a4ee4fdb3b1f5e3420aa4f6223ab57b82fef3578bec3206425c6cf5 @@ -11627,12 +11820,12 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^17.0.32, @types/yargs@npm:^17.0.8": - version: 17.0.33 - resolution: "@types/yargs@npm:17.0.33" +"@types/yargs@npm:^17.0.32, @types/yargs@npm:^17.0.33, @types/yargs@npm:^17.0.8": + version: 17.0.35 + resolution: "@types/yargs@npm:17.0.35" dependencies: "@types/yargs-parser": "npm:*" - checksum: 10/16f6681bf4d99fb671bf56029141ed01db2862e3db9df7fc92d8bea494359ac96a1b4b1c35a836d1e95e665fb18ad753ab2015fc0db663454e8fd4e5d5e2ef91 + checksum: 10/47bcd4476a4194ea11617ea71cba8a1eddf5505fc39c44336c1a08d452a0de4486aedbc13f47a017c8efbcb5a8aa358d976880663732ebcbc6dbcbbecadb0581 languageName: node linkType: hard @@ -11771,10 +11964,10 @@ __metadata: languageName: node linkType: hard -"@ungap/structured-clone@npm:^1.0.0": - version: 1.3.1 - resolution: "@ungap/structured-clone@npm:1.3.1" - checksum: 10/64df206f50aef71c176f9059c1b29e1694821419c6728c446ecf39c80a811eeef156668bf51421b676494a12fd0129ccf09a44f0c641f13c27f50d5f0db6de4e +"@ungap/structured-clone@npm:^1.0.0, @ungap/structured-clone@npm:^1.3.0": + version: 1.3.3 + resolution: "@ungap/structured-clone@npm:1.3.3" + checksum: 10/ccdb7fc0a7055e361f57ded33030b9c1a06398e48db35ab1cdae7a03f82e5a1f5342bcf66781dde6364584b44c7739f8f320dff992d318051b69805aaee10d9f languageName: node linkType: hard @@ -12096,13 +12289,6 @@ __metadata: languageName: node linkType: hard -"aes-js@npm:^3.1.2": - version: 3.1.2 - resolution: "aes-js@npm:3.1.2" - checksum: 10/b65916767034a51375a3ac5aad62af452d89a386c1ae7b607bb9145d0bb8b8823bf2f3eba85bdfa52d61c65d5aed90ba90f677b8c826bfa1a8b7ae2fa3b54d91 - languageName: node - linkType: hard - "agent-base@npm:6": version: 6.0.2 resolution: "agent-base@npm:6.0.2" @@ -12279,7 +12465,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^5.0.0": +"ansi-styles@npm:^5.0.0, ansi-styles@npm:^5.2.0": version: 5.2.0 resolution: "ansi-styles@npm:5.2.0" checksum: 10/d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 @@ -12300,7 +12486,7 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": +"anymatch@npm:^3.0.3, anymatch@npm:^3.1.3, anymatch@npm:~3.1.2": version: 3.1.3 resolution: "anymatch@npm:3.1.3" dependencies: @@ -12521,6 +12707,19 @@ __metadata: languageName: node linkType: hard +"babel-plugin-istanbul@npm:^7.0.1": + version: 7.0.1 + resolution: "babel-plugin-istanbul@npm:7.0.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@istanbuljs/load-nyc-config": "npm:^1.0.0" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-instrument: "npm:^6.0.2" + test-exclude: "npm:^6.0.0" + checksum: 10/fe9f865f975aaa7a033de9ccb2b63fdcca7817266c5e98d3e02ac7ffd774c695093d215302796cb3770a71ef4574e7a9b298504c3c0c104cf4b48c8eda67b2a6 + languageName: node + linkType: hard + "babel-plugin-jest-hoist@npm:^29.6.3": version: 29.6.3 resolution: "babel-plugin-jest-hoist@npm:29.6.3" @@ -12581,9 +12780,9 @@ __metadata: languageName: node linkType: hard -"babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.1.0 - resolution: "babel-preset-current-node-syntax@npm:1.1.0" +"babel-preset-current-node-syntax@npm:^1.0.0, babel-preset-current-node-syntax@npm:^1.2.0": + version: 1.2.0 + resolution: "babel-preset-current-node-syntax@npm:1.2.0" dependencies: "@babel/plugin-syntax-async-generators": "npm:^7.8.4" "@babel/plugin-syntax-bigint": "npm:^7.8.3" @@ -12601,8 +12800,8 @@ __metadata: "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/46331111ae72b7121172fd9e6a4a7830f651ad44bf26dbbf77b3c8a60a18009411a3eacb5e72274004290c110371230272109957d5224d155436b4794ead2f1b + "@babel/core": ^7.0.0 || ^8.0.0-0 + checksum: 10/3608fa671cfa46364ea6ec704b8fcdd7514b7b70e6ec09b1199e13ae73ed346c51d5ce2cb6d4d5b295f6a3f2cad1fdeec2308aa9e037002dd7c929194cc838ea languageName: node linkType: hard @@ -12656,15 +12855,6 @@ __metadata: languageName: node linkType: hard -"base-x@npm:^3.0.2": - version: 3.0.10 - resolution: "base-x@npm:3.0.10" - dependencies: - safe-buffer: "npm:^5.0.1" - checksum: 10/52307739559e81d9980889de2359cb4f816cc0eb9a463028fa3ab239ab913d9044a1b47b4520f98e68453df32a457b8ba58b8d0ee7e757fc3fb971f3fa7a1482 - languageName: node - linkType: hard - "base58-js@npm:^1.0.0": version: 1.0.5 resolution: "base58-js@npm:1.0.5" @@ -12791,13 +12981,6 @@ __metadata: languageName: node linkType: hard -"blakejs@npm:^1.1.0": - version: 1.2.1 - resolution: "blakejs@npm:1.2.1" - checksum: 10/0638b1bd058b21892633929c43005aa6a4cc4b2ac5b338a146c3c076622f1b360795bd7a4d1f077c9b01863ed2df0c1504a81c5b520d164179120434847e6cd7 - languageName: node - linkType: hard - "bluebird@npm:~3.7.2": version: 3.7.2 resolution: "bluebird@npm:3.7.2" @@ -12826,7 +13009,7 @@ __metadata: languageName: node linkType: hard -"bn.js@npm:^5.1.2, bn.js@npm:^5.2.0, bn.js@npm:^5.2.1, bn.js@npm:^5.2.2": +"bn.js@npm:^5.2.1, bn.js@npm:^5.2.2": version: 5.2.2 resolution: "bn.js@npm:5.2.2" checksum: 10/51ebb2df83b33e5d8581165206e260d5e9c873752954616e5bf3758952b84d7399a9c6d00852815a0aeefb1150a7f34451b62d4287342d457fa432eee869e83e @@ -12946,20 +13129,6 @@ __metadata: languageName: node linkType: hard -"browserify-aes@npm:^1.2.0": - version: 1.2.0 - resolution: "browserify-aes@npm:1.2.0" - dependencies: - buffer-xor: "npm:^1.0.3" - cipher-base: "npm:^1.0.0" - create-hash: "npm:^1.1.0" - evp_bytestokey: "npm:^1.0.3" - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - checksum: 10/2813058f74e083a00450b11ea9d5d1f072de7bf0133f5d122d4ff7b849bece56d52b9c51ad0db0fad21c0bc4e8272fd5196114bbe7b94a9b7feb0f9fbb33a3bf - languageName: node - linkType: hard - "browserslist@npm:^4.0.0, browserslist@npm:^4.23.0, browserslist@npm:^4.24.0, browserslist@npm:^4.28.1, browserslist@npm:^4.28.2": version: 4.28.2 resolution: "browserslist@npm:4.28.2" @@ -12984,26 +13153,6 @@ __metadata: languageName: node linkType: hard -"bs58@npm:^4.0.0": - version: 4.0.1 - resolution: "bs58@npm:4.0.1" - dependencies: - base-x: "npm:^3.0.2" - checksum: 10/b3c5365bb9e0c561e1a82f1a2d809a1a692059fae016be233a6127ad2f50a6b986467c3a50669ce4c18929dcccb297c5909314dd347a25a68c21b68eb3e95ac2 - languageName: node - linkType: hard - -"bs58check@npm:^2.1.2": - version: 2.1.2 - resolution: "bs58check@npm:2.1.2" - dependencies: - bs58: "npm:^4.0.0" - create-hash: "npm:^1.1.0" - safe-buffer: "npm:^5.1.2" - checksum: 10/43bdf08a5dd04581b78f040bc4169480e17008da482ffe2a6507327bbc4fc5c28de0501f7faf22901cfe57fbca79cbb202ca529003fedb4cb8dccd265b38e54d - languageName: node - linkType: hard - "bser@npm:2.1.1": version: 2.1.1 resolution: "bser@npm:2.1.1" @@ -13020,13 +13169,6 @@ __metadata: languageName: node linkType: hard -"buffer-xor@npm:^1.0.3": - version: 1.0.3 - resolution: "buffer-xor@npm:1.0.3" - checksum: 10/4a63d48b5117c7eda896d81cd3582d9707329b07c97a14b0ece2edc6e64220ea7ea17c94b295e8c2cb7b9f8291e2b079f9096be8ac14be238420a43e06ec66e2 - languageName: node - linkType: hard - "buffer@npm:^5.5.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" @@ -13383,13 +13525,10 @@ __metadata: languageName: node linkType: hard -"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": - version: 1.0.4 - resolution: "cipher-base@npm:1.0.4" - dependencies: - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - checksum: 10/3d5d6652ca499c3f7c5d7fdc2932a357ec1e5aa84f2ad766d850efd42e89753c97b795c3a104a8e7ae35b4e293f5363926913de3bf8181af37067d9d541ca0db +"ci-info@npm:^4.2.0": + version: 4.4.0 + resolution: "ci-info@npm:4.4.0" + checksum: 10/dfded0c630267d89660c8abb988ac8395a382bdfefedcc03e3e2858523312c5207db777c239c34774e3fcff11f015477c19d2ac8a58ea58aa476614a2e64f434 languageName: node linkType: hard @@ -13897,33 +14036,6 @@ __metadata: languageName: node linkType: hard -"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": - version: 1.2.0 - resolution: "create-hash@npm:1.2.0" - dependencies: - cipher-base: "npm:^1.0.1" - inherits: "npm:^2.0.1" - md5.js: "npm:^1.3.4" - ripemd160: "npm:^2.0.1" - sha.js: "npm:^2.4.0" - checksum: 10/3cfef32043b47a8999602af9bcd74966db6971dd3eb828d1a479f3a44d7f58e38c1caf34aa21a01941cc8d9e1a841738a732f200f00ea155f8a8835133d2e7bc - languageName: node - linkType: hard - -"create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": - version: 1.1.7 - resolution: "create-hmac@npm:1.1.7" - dependencies: - cipher-base: "npm:^1.0.3" - create-hash: "npm:^1.1.0" - inherits: "npm:^2.0.1" - ripemd160: "npm:^2.0.0" - safe-buffer: "npm:^5.0.1" - sha.js: "npm:^2.4.8" - checksum: 10/2b26769f87e99ef72150bf99d1439d69272b2e510e23a2b8daf4e93e2412f4842504237d726044fa797cb20ee0ec8bee78d414b11f2d7ca93299185c93df0dae - languageName: node - linkType: hard - "create-jest@npm:^29.7.0": version: 29.7.0 resolution: "create-jest@npm:29.7.0" @@ -14736,7 +14848,7 @@ __metadata: languageName: node linkType: hard -"elliptic@npm:6.6.1, elliptic@npm:^6.5.7, elliptic@npm:^6.6.1": +"elliptic@npm:6.6.1, elliptic@npm:^6.6.1": version: 6.6.1 resolution: "elliptic@npm:6.6.1" dependencies: @@ -15537,29 +15649,6 @@ __metadata: languageName: node linkType: hard -"ethereum-cryptography@npm:^0.1.3": - version: 0.1.3 - resolution: "ethereum-cryptography@npm:0.1.3" - dependencies: - "@types/pbkdf2": "npm:^3.0.0" - "@types/secp256k1": "npm:^4.0.1" - blakejs: "npm:^1.1.0" - browserify-aes: "npm:^1.2.0" - bs58check: "npm:^2.1.2" - create-hash: "npm:^1.2.0" - create-hmac: "npm:^1.1.7" - hash.js: "npm:^1.1.7" - keccak: "npm:^3.0.0" - pbkdf2: "npm:^3.0.17" - randombytes: "npm:^2.1.0" - safe-buffer: "npm:^5.1.2" - scrypt-js: "npm:^3.0.0" - secp256k1: "npm:^4.0.1" - setimmediate: "npm:^1.0.5" - checksum: 10/975e476782746acd97d5b37366801ae622a52fb31e5d83f600804be230a61ef7b9d289dcecd9c308fb441967caf3a6e3768dd7c8add6441fcc60c398175d5a96 - languageName: node - linkType: hard - "ethereum-cryptography@npm:^2.0.0, ethereum-cryptography@npm:^2.1.2, ethereum-cryptography@npm:^2.2.1": version: 2.2.1 resolution: "ethereum-cryptography@npm:2.2.1" @@ -15572,32 +15661,16 @@ __metadata: languageName: node linkType: hard -"ethereumjs-util@npm:^7.1.2": - version: 7.1.5 - resolution: "ethereumjs-util@npm:7.1.5" - dependencies: - "@types/bn.js": "npm:^5.1.0" - bn.js: "npm:^5.1.2" - create-hash: "npm:^1.1.2" - ethereum-cryptography: "npm:^0.1.3" - rlp: "npm:^2.2.4" - checksum: 10/f28fc1ebb8f35bf9e418f76f51be737d94d603b912c3e014c4e87cd45ccd1b10bdfef764c8f152574b57e9faa260a18773cbc110f9e0a754d6b3730699e54dc9 - languageName: node - linkType: hard - -"ethereumjs-wallet@npm:^1.0.1": - version: 1.0.2 - resolution: "ethereumjs-wallet@npm:1.0.2" +"ethereum-cryptography@npm:^3.2.0": + version: 3.2.0 + resolution: "ethereum-cryptography@npm:3.2.0" dependencies: - aes-js: "npm:^3.1.2" - bs58check: "npm:^2.1.2" - ethereum-cryptography: "npm:^0.1.3" - ethereumjs-util: "npm:^7.1.2" - randombytes: "npm:^2.1.0" - scrypt-js: "npm:^3.0.1" - utf8: "npm:^3.0.0" - uuid: "npm:^8.3.2" - checksum: 10/0a9ad0ac0930627c15e6fa6115dde8d1dd81160e57fbdf81ef0bcd1e0edd750fe9e8b00992651e694cabefee29eef2ad651dce8b24ae5253861927d0e19b6c90 + "@noble/ciphers": "npm:1.3.0" + "@noble/curves": "npm:1.9.0" + "@noble/hashes": "npm:1.8.0" + "@scure/bip32": "npm:1.7.0" + "@scure/bip39": "npm:1.6.0" + checksum: 10/35c72fdfe26861e20b6a37bca9b4f22517d0fe130370d2b0071890225ca10a30848c8c784a1389544de2b5308f22a76a6e60c234449b8a504c5a4c092a04785c languageName: node linkType: hard @@ -15681,17 +15754,6 @@ __metadata: languageName: node linkType: hard -"evp_bytestokey@npm:^1.0.3": - version: 1.0.3 - resolution: "evp_bytestokey@npm:1.0.3" - dependencies: - md5.js: "npm:^1.3.4" - node-gyp: "npm:latest" - safe-buffer: "npm:^5.1.1" - checksum: 10/ad4e1577f1a6b721c7800dcc7c733fe01f6c310732bb5bf2240245c2a5b45a38518b91d8be2c610611623160b9d1c0e91f1ce96d639f8b53e8894625cf20fa45 - languageName: node - linkType: hard - "execa@npm:^5.0.0, execa@npm:^5.1.1": version: 5.1.1 resolution: "execa@npm:5.1.1" @@ -15740,6 +15802,20 @@ __metadata: languageName: node linkType: hard +"expect@npm:30.4.1": + version: 30.4.1 + resolution: "expect@npm:30.4.1" + dependencies: + "@jest/expect-utils": "npm:30.4.1" + "@jest/get-type": "npm:30.1.0" + jest-matcher-utils: "npm:30.4.1" + jest-message-util: "npm:30.4.1" + jest-mock: "npm:30.4.1" + jest-util: "npm:30.4.1" + checksum: 10/f25051e5073c55369199ec3108ac01c60074bd09dad0b5a6c9fe40596438051cb52607e0e97505126422535b8d0dacab13aa29bb14e9fac71630bc710201a3f1 + languageName: node + linkType: hard + "expect@npm:^29.0.0, expect@npm:^29.7.0": version: 29.7.0 resolution: "expect@npm:29.7.0" @@ -15993,7 +16069,7 @@ __metadata: languageName: node linkType: hard -"fb-watchman@npm:^2.0.0": +"fb-watchman@npm:^2.0.0, fb-watchman@npm:^2.0.2": version: 2.0.2 resolution: "fb-watchman@npm:2.0.2" dependencies: @@ -16333,7 +16409,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": +"fsevents@npm:^2.3.2, fsevents@npm:^2.3.3, fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -16343,7 +16419,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": +"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A^2.3.3#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -16710,18 +16786,7 @@ __metadata: languageName: node linkType: hard -"hash-base@npm:^3.0.0": - version: 3.1.0 - resolution: "hash-base@npm:3.1.0" - dependencies: - inherits: "npm:^2.0.4" - readable-stream: "npm:^3.6.0" - safe-buffer: "npm:^5.2.0" - checksum: 10/26b7e97ac3de13cb23fc3145e7e3450b0530274a9562144fc2bf5c1e2983afd0e09ed7cc3b20974ba66039fad316db463da80eb452e7373e780cbee9a0d2f2dc - languageName: node - linkType: hard - -"hash.js@npm:1.1.7, hash.js@npm:^1.0.0, hash.js@npm:^1.0.3, hash.js@npm:^1.1.7": +"hash.js@npm:1.1.7, hash.js@npm:^1.0.0, hash.js@npm:^1.0.3": version: 1.1.7 resolution: "hash.js@npm:1.1.7" dependencies: @@ -17837,7 +17902,7 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-instrument@npm:^6.0.0": +"istanbul-lib-instrument@npm:^6.0.0, istanbul-lib-instrument@npm:^6.0.2": version: 6.0.3 resolution: "istanbul-lib-instrument@npm:6.0.3" dependencies: @@ -18011,6 +18076,18 @@ __metadata: languageName: node linkType: hard +"jest-diff@npm:30.4.1": + version: 30.4.1 + resolution: "jest-diff@npm:30.4.1" + dependencies: + "@jest/diff-sequences": "npm:30.4.0" + "@jest/get-type": "npm:30.1.0" + chalk: "npm:^4.1.2" + pretty-format: "npm:30.4.1" + checksum: 10/594212df96bf101170afdb7eebd188d6d7d27241cbdd18b61d95f1142a3c94ae3b270377d15e719fb3c5efe4458d32acba8ad13dd6230dd7d6917a9eebb32625 + languageName: node + linkType: hard + "jest-diff@npm:^29.7.0": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" @@ -18087,6 +18164,28 @@ __metadata: languageName: node linkType: hard +"jest-haste-map@npm:30.4.1": + version: 30.4.1 + resolution: "jest-haste-map@npm:30.4.1" + dependencies: + "@jest/types": "npm:30.4.1" + "@types/node": "npm:*" + anymatch: "npm:^3.1.3" + fb-watchman: "npm:^2.0.2" + fsevents: "npm:^2.3.3" + graceful-fs: "npm:^4.2.11" + jest-regex-util: "npm:30.4.0" + jest-util: "npm:30.4.1" + jest-worker: "npm:30.4.1" + picomatch: "npm:^4.0.3" + walker: "npm:^1.0.8" + dependenciesMeta: + fsevents: + optional: true + checksum: 10/d26404c7258d03fa423604191bca39707438ca1e62a9a471c92fcd468fa386cbdce2c50b3834fb830b25836e3eee34e3070d22b016b42f0ab626c157f5726eeb + languageName: node + linkType: hard + "jest-haste-map@npm:^29.7.0": version: 29.7.0 resolution: "jest-haste-map@npm:29.7.0" @@ -18120,6 +18219,18 @@ __metadata: languageName: node linkType: hard +"jest-matcher-utils@npm:30.4.1": + version: 30.4.1 + resolution: "jest-matcher-utils@npm:30.4.1" + dependencies: + "@jest/get-type": "npm:30.1.0" + chalk: "npm:^4.1.2" + jest-diff: "npm:30.4.1" + pretty-format: "npm:30.4.1" + checksum: 10/4da6e5c7fe5903fae7394233ea4b892567fb027065670c03096d01be0b389f858055c5ade20d59e82fedec6f3287e6f1720de526cd9a9ad3495432320adb9194 + languageName: node + linkType: hard + "jest-matcher-utils@npm:^29.7.0": version: 29.7.0 resolution: "jest-matcher-utils@npm:29.7.0" @@ -18132,6 +18243,24 @@ __metadata: languageName: node linkType: hard +"jest-message-util@npm:30.4.1": + version: 30.4.1 + resolution: "jest-message-util@npm:30.4.1" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@jest/types": "npm:30.4.1" + "@types/stack-utils": "npm:^2.0.3" + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + jest-util: "npm:30.4.1" + picomatch: "npm:^4.0.3" + pretty-format: "npm:30.4.1" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.6" + checksum: 10/f83894efa37aa9c61c0a559b1027ecdb0d0cd8afd3e8ea74e797c707d58daea814e72f04b6db0bb6a148c12ae203e9c6e6c5544832ca5fae286c4f80c18ddc3f + languageName: node + linkType: hard + "jest-message-util@npm:^29.7.0": version: 29.7.0 resolution: "jest-message-util@npm:29.7.0" @@ -18149,6 +18278,17 @@ __metadata: languageName: node linkType: hard +"jest-mock@npm:30.4.1": + version: 30.4.1 + resolution: "jest-mock@npm:30.4.1" + dependencies: + "@jest/types": "npm:30.4.1" + "@types/node": "npm:*" + jest-util: "npm:30.4.1" + checksum: 10/8d0c2794130217b9030b888ce380fe57d82388eec19351bd666440ba46f1e24a7e2bdf42cbe9bcfda2b881d4c0ea09db3c80131b9ab788fb5224af2a1339b422 + languageName: node + linkType: hard + "jest-mock@npm:^29.7.0": version: 29.7.0 resolution: "jest-mock@npm:29.7.0" @@ -18172,6 +18312,13 @@ __metadata: languageName: node linkType: hard +"jest-regex-util@npm:30.4.0": + version: 30.4.0 + resolution: "jest-regex-util@npm:30.4.0" + checksum: 10/8664fcc1d07c8236a3bd012c0f06ae9d14d96e758b32ee340a3a7c4c326d0b5052d8c4ae4f4c4184f08bf78723d905352f22923647df9658ace3604f03bf074f + languageName: node + linkType: hard + "jest-regex-util@npm:^29.6.3": version: 29.6.3 resolution: "jest-regex-util@npm:29.6.3" @@ -18275,6 +18422,35 @@ __metadata: languageName: node linkType: hard +"jest-snapshot@npm:30.4.1": + version: 30.4.1 + resolution: "jest-snapshot@npm:30.4.1" + dependencies: + "@babel/core": "npm:^7.27.4" + "@babel/generator": "npm:^7.27.5" + "@babel/plugin-syntax-jsx": "npm:^7.27.1" + "@babel/plugin-syntax-typescript": "npm:^7.27.1" + "@babel/types": "npm:^7.27.3" + "@jest/expect-utils": "npm:30.4.1" + "@jest/get-type": "npm:30.1.0" + "@jest/snapshot-utils": "npm:30.4.1" + "@jest/transform": "npm:30.4.1" + "@jest/types": "npm:30.4.1" + babel-preset-current-node-syntax: "npm:^1.2.0" + chalk: "npm:^4.1.2" + expect: "npm:30.4.1" + graceful-fs: "npm:^4.2.11" + jest-diff: "npm:30.4.1" + jest-matcher-utils: "npm:30.4.1" + jest-message-util: "npm:30.4.1" + jest-util: "npm:30.4.1" + pretty-format: "npm:30.4.1" + semver: "npm:^7.7.2" + synckit: "npm:^0.11.8" + checksum: 10/6135108d3e0e9fb93ed10fd9ad91d8dbe56f90a9ea84c32a0b551518f8c71f363299dcc301717f3ed82cfe2a276d7993d2b3ccfabea3e8020d49ae8b0f9b6cd8 + languageName: node + linkType: hard + "jest-snapshot@npm:^29.7.0": version: 29.7.0 resolution: "jest-snapshot@npm:29.7.0" @@ -18303,6 +18479,20 @@ __metadata: languageName: node linkType: hard +"jest-util@npm:30.4.1": + version: 30.4.1 + resolution: "jest-util@npm:30.4.1" + dependencies: + "@jest/types": "npm:30.4.1" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + ci-info: "npm:^4.2.0" + graceful-fs: "npm:^4.2.11" + picomatch: "npm:^4.0.3" + checksum: 10/603093e12076906afcf28be514d5b7ac4e3c0e26997b0047614cf2a308b65d773137304a1fb011d747517e881aeed067f6606b9937f5b838d67f6e5734b49ebe + languageName: node + linkType: hard + "jest-util@npm:^26.0.0": version: 26.6.2 resolution: "jest-util@npm:26.6.2" @@ -18370,6 +18560,19 @@ __metadata: languageName: node linkType: hard +"jest-worker@npm:30.4.1": + version: 30.4.1 + resolution: "jest-worker@npm:30.4.1" + dependencies: + "@types/node": "npm:*" + "@ungap/structured-clone": "npm:^1.3.0" + jest-util: "npm:30.4.1" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.1.1" + checksum: 10/ff6af73c9097fc07e90490d3e1e354c702390ef66f7f40054a15dd6d56809a25634179969ff80bde782a6c645f49fa48bf3aacfe7d05af7315c48020f9b2b1cd + languageName: node + linkType: hard + "jest-worker@npm:^27.4.5": version: 27.5.1 resolution: "jest-worker@npm:27.5.1" @@ -18443,6 +18646,13 @@ __metadata: languageName: node linkType: hard +"js-md5@npm:^0.8.3": + version: 0.8.3 + resolution: "js-md5@npm:0.8.3" + checksum: 10/2f74961bb21293cc4e023685985b531748da88c5e57fd4ef96d1d292e0918c09a4b192c425520c0aea6988190e9694c2e38ed34f7907a908614e6b133095f882 + languageName: node + linkType: hard + "js-sha3@npm:0.5.5": version: 0.5.5 resolution: "js-sha3@npm:0.5.5" @@ -18664,18 +18874,6 @@ __metadata: languageName: node linkType: hard -"keccak@npm:^3.0.0": - version: 3.0.4 - resolution: "keccak@npm:3.0.4" - dependencies: - node-addon-api: "npm:^2.0.0" - node-gyp: "npm:latest" - node-gyp-build: "npm:^4.2.0" - readable-stream: "npm:^3.6.0" - checksum: 10/45478bb0a57e44d0108646499b8360914b0fbc8b0e088f1076659cb34faaa9eb829c40f6dd9dadb3460bb86cc33153c41fed37fe5ce09465a60e71e78c23fa55 - languageName: node - linkType: hard - "keyv@npm:^4.5.3, keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" @@ -19080,17 +19278,6 @@ __metadata: languageName: node linkType: hard -"md5.js@npm:^1.3.4": - version: 1.3.5 - resolution: "md5.js@npm:1.3.5" - dependencies: - hash-base: "npm:^3.0.0" - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.1.2" - checksum: 10/098494d885684bcc4f92294b18ba61b7bd353c23147fbc4688c75b45cb8590f5a95fd4584d742415dcc52487f7a1ef6ea611cfa1543b0dc4492fe026357f3f0c - languageName: node - linkType: hard - "mdast-util-directive@npm:^3.0.0": version: 3.1.0 resolution: "mdast-util-directive@npm:3.1.0" @@ -20333,24 +20520,6 @@ __metadata: languageName: node linkType: hard -"node-addon-api@npm:^2.0.0": - version: 2.0.2 - resolution: "node-addon-api@npm:2.0.2" - dependencies: - node-gyp: "npm:latest" - checksum: 10/e4ce4daac5b2fefa6b94491b86979a9c12d9cceba571d2c6df1eb5859f9da68e5dc198f128798e1785a88aafee6e11f4992dcccd4bf86bec90973927d158bd60 - languageName: node - linkType: hard - -"node-addon-api@npm:^5.0.0": - version: 5.1.0 - resolution: "node-addon-api@npm:5.1.0" - dependencies: - node-gyp: "npm:latest" - checksum: 10/595f59ffb4630564f587c502119cbd980d302e482781021f3b479f5fc7e41cf8f2f7280fdc2795f32d148e4f3259bd15043c52d4a3442796aa6f1ae97b959636 - languageName: node - linkType: hard - "node-emoji@npm:^2.1.0": version: 2.2.0 resolution: "node-emoji@npm:2.2.0" @@ -20377,17 +20546,6 @@ __metadata: languageName: node linkType: hard -"node-gyp-build@npm:^4.2.0": - version: 4.8.1 - resolution: "node-gyp-build@npm:4.8.1" - bin: - node-gyp-build: bin.js - node-gyp-build-optional: optional.js - node-gyp-build-test: build-test.js - checksum: 10/b9297770f96a92e5f2b854f3fd5e4bd418df81d7785a81ab60cec5cf2e5e72dc2c3319808978adc572cfa3885e6b12338cb5f4034bed2cab35f0d76a4b75ccdf - languageName: node - linkType: hard - "node-gyp@npm:^10.0.0, node-gyp@npm:latest": version: 10.2.0 resolution: "node-gyp@npm:10.2.0" @@ -21303,19 +21461,6 @@ __metadata: languageName: node linkType: hard -"pbkdf2@npm:^3.0.17": - version: 3.1.2 - resolution: "pbkdf2@npm:3.1.2" - dependencies: - create-hash: "npm:^1.1.2" - create-hmac: "npm:^1.1.4" - ripemd160: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - sha.js: "npm:^2.4.8" - checksum: 10/40bdf30df1c9bb1ae41ec50c11e480cf0d36484b7c7933bf55e4451d1d0e3f09589df70935c56e7fccc5702779a0d7b842d012be8c08a187b44eb24d55bb9460 - languageName: node - linkType: hard - "picocolors@npm:^1.0.0, picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" @@ -21330,10 +21475,10 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^4.0.4": - version: 4.0.4 - resolution: "picomatch@npm:4.0.4" - checksum: 10/f6ef80a3590827ce20378ae110ac78209cc4f74d39236370f1780f957b7ee41c12acde0e4651b90f39983506fd2f5e449994716f516db2e9752924aff8de93ce +"picomatch@npm:^4.0.3, picomatch@npm:^4.0.4": + version: 4.0.5 + resolution: "picomatch@npm:4.0.5" + checksum: 10/8bad770af9dcdb7f94ad1a893adcbe08a97d75a18872f8fed37161d3124217471c402b3929f051532f795f4ff2e53dcebb1644df4c1a5f3a9c476fef3b9f8c51 languageName: node linkType: hard @@ -21344,10 +21489,10 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.4": - version: 4.0.6 - resolution: "pirates@npm:4.0.6" - checksum: 10/d02dda76f4fec1cbdf395c36c11cf26f76a644f9f9a1bfa84d3167d0d3154d5289aacc72677aa20d599bb4a6937a471de1b65c995e2aea2d8687cbcd7e43ea5f +"pirates@npm:^4.0.4, pirates@npm:^4.0.7": + version: 4.0.7 + resolution: "pirates@npm:4.0.7" + checksum: 10/2427f371366081ae42feb58214f04805d6b41d6b84d74480ebcc9e0ddbd7105a139f7c653daeaf83ad8a1a77214cf07f64178e76de048128fec501eab3305a96 languageName: node linkType: hard @@ -22281,6 +22426,18 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:30.4.1": + version: 30.4.1 + resolution: "pretty-format@npm:30.4.1" + dependencies: + "@jest/schemas": "npm:30.4.1" + ansi-styles: "npm:^5.2.0" + react-is-18: "npm:react-is@^18.3.1" + react-is-19: "npm:react-is@^19.2.5" + checksum: 10/60311ef47a646eeaec0432efe66290cb6f0d2eccb123a28ad4ab6d7e53087bc62db91cfd54c3cc00c89d6875aefb2bf6264381b6c9411ce6bff3d6aa8280abad + languageName: node + linkType: hard + "pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": version: 29.7.0 resolution: "pretty-format@npm:29.7.0" @@ -22642,6 +22799,20 @@ __metadata: languageName: node linkType: hard +"react-is-18@npm:react-is@^18.3.1, react-is@npm:^18.0.0": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10/d5f60c87d285af24b1e1e7eaeb123ec256c3c8bdea7061ab3932e3e14685708221bf234ec50b21e10dd07f008f1b966a2730a0ce4ff67905b3872ff2042aec22 + languageName: node + linkType: hard + +"react-is-19@npm:react-is@^19.2.5": + version: 19.2.7 + resolution: "react-is@npm:19.2.7" + checksum: 10/ae0d3ae7638aa2fa2a82a78a817daf2806e57fa0aef357d07e1e8d1e9a301902e5967168e9334b5816db0df8fa980a725cd57569ba5a9e6e76a71e117b18be04 + languageName: node + linkType: hard + "react-is@npm:^16.13.1, react-is@npm:^16.6.0, react-is@npm:^16.7.0": version: 16.13.1 resolution: "react-is@npm:16.13.1" @@ -22649,13 +22820,6 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^18.0.0": - version: 18.3.1 - resolution: "react-is@npm:18.3.1" - checksum: 10/d5f60c87d285af24b1e1e7eaeb123ec256c3c8bdea7061ab3932e3e14685708221bf234ec50b21e10dd07f008f1b966a2730a0ce4ff67905b3872ff2042aec22 - languageName: node - linkType: hard - "react-json-view-lite@npm:^2.3.0": version: 2.5.0 resolution: "react-json-view-lite@npm:2.5.0" @@ -23271,27 +23435,6 @@ __metadata: languageName: node linkType: hard -"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": - version: 2.0.2 - resolution: "ripemd160@npm:2.0.2" - dependencies: - hash-base: "npm:^3.0.0" - inherits: "npm:^2.0.1" - checksum: 10/006accc40578ee2beae382757c4ce2908a826b27e2b079efdcd2959ee544ddf210b7b5d7d5e80467807604244e7388427330f5c6d4cd61e6edaddc5773ccc393 - languageName: node - linkType: hard - -"rlp@npm:^2.2.4": - version: 2.2.7 - resolution: "rlp@npm:2.2.7" - dependencies: - bn.js: "npm:^5.2.0" - bin: - rlp: bin/rlp - checksum: 10/cf1919a2dc99f336191b3363b76299db567c192b7ee3c6f5c722728c34f65577883c9c88eeb7a1bfcbc26693c8a4f1fb0662e79ee86f0c98dd258d6987303498 - languageName: node - linkType: hard - "rtlcss@npm:^4.1.0": version: 4.3.0 resolution: "rtlcss@npm:4.3.0" @@ -23338,7 +23481,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10/32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451 @@ -23419,25 +23562,13 @@ __metadata: languageName: node linkType: hard -"scrypt-js@npm:3.0.1, scrypt-js@npm:^3.0.0, scrypt-js@npm:^3.0.1": +"scrypt-js@npm:3.0.1": version: 3.0.1 resolution: "scrypt-js@npm:3.0.1" checksum: 10/2f8aa72b7f76a6f9c446bbec5670f80d47497bccce98474203d89b5667717223eeb04a50492ae685ed7adc5a060fc2d8f9fd988f8f7ebdaf3341967f3aeff116 languageName: node linkType: hard -"secp256k1@npm:^4.0.1": - version: 4.0.4 - resolution: "secp256k1@npm:4.0.4" - dependencies: - elliptic: "npm:^6.5.7" - node-addon-api: "npm:^5.0.0" - node-gyp: "npm:latest" - node-gyp-build: "npm:^4.2.0" - checksum: 10/45000f348c853df7c1e2b67c48efb062ae78c0620ab1a5cfb02fa20d3aad39c641f4e7a18b3de3b54a7c0cc1e0addeb8ecd9d88bc332e92df17a92b60c36122a - languageName: node - linkType: hard - "section-matter@npm:^1.0.0": version: 1.0.0 resolution: "section-matter@npm:1.0.0" @@ -23483,12 +23614,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.1.1, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.3, semver@npm:^7.7.3, semver@npm:^7.8.1": - version: 7.8.2 - resolution: "semver@npm:7.8.2" +"semver@npm:^7.1.1, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.3, semver@npm:^7.7.2, semver@npm:^7.7.3, semver@npm:^7.8.1": + version: 7.8.5 + resolution: "semver@npm:7.8.5" bin: semver: bin/semver.js - checksum: 10/52221d8f1cadacda3cc3f0a2e7f7146e0442c7f4219acb25970bed055f5d0a6afbba5f22e293b078c2e93fca3dce0a08b088485e8b75d32a165f16c3627091c8 + checksum: 10/9b01d2ff11e6e4a4539b7ca3c5f280c8704cb397a28504469f2ed4f00ad2194748d756647362a9712fff30984d15772ab7f083108c2fb508e2096ae9e708f22c languageName: node linkType: hard @@ -23596,13 +23727,6 @@ __metadata: languageName: node linkType: hard -"setimmediate@npm:^1.0.5": - version: 1.0.5 - resolution: "setimmediate@npm:1.0.5" - checksum: 10/76e3f5d7f4b581b6100ff819761f04a984fa3f3990e72a6554b57188ded53efce2d3d6c0932c10f810b7c59414f85e2ab3c11521877d1dea1ce0b56dc906f485 - languageName: node - linkType: hard - "setprototypeof@npm:1.2.0, setprototypeof@npm:~1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" @@ -23610,18 +23734,6 @@ __metadata: languageName: node linkType: hard -"sha.js@npm:^2.4.0, sha.js@npm:^2.4.8": - version: 2.4.11 - resolution: "sha.js@npm:2.4.11" - dependencies: - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - bin: - sha.js: ./bin.js - checksum: 10/d833bfa3e0a67579a6ce6e1bc95571f05246e0a441dd8c76e3057972f2a3e098465687a4369b07e83a0375a88703577f71b5b2e966809e67ebc340dbedb478c7 - languageName: node - linkType: hard - "sha256-uint8array@npm:^0.10.3": version: 0.10.7 resolution: "sha256-uint8array@npm:0.10.7" @@ -24071,7 +24183,7 @@ __metadata: languageName: node linkType: hard -"stack-utils@npm:^2.0.3": +"stack-utils@npm:^2.0.3, stack-utils@npm:^2.0.6": version: 2.0.6 resolution: "stack-utils@npm:2.0.6" dependencies: @@ -24309,7 +24421,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8, supports-color@npm:^8.0.0": +"supports-color@npm:^8, supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: @@ -24356,6 +24468,15 @@ __metadata: languageName: node linkType: hard +"synckit@npm:^0.11.8": + version: 0.11.13 + resolution: "synckit@npm:0.11.13" + dependencies: + "@pkgr/core": "npm:^0.3.6" + checksum: 10/188544a829dbd38abd144281960835c1f8027aaa495b7c40d39ebf0c1c63a4a41c0edc42818b7ada9b5c0c15fba2f625b472220d128798fe98f9181fed84e6a2 + languageName: node + linkType: hard + "synckit@npm:^0.9.1": version: 0.9.2 resolution: "synckit@npm:0.9.2" @@ -25194,13 +25315,6 @@ __metadata: languageName: node linkType: hard -"utf8@npm:^3.0.0": - version: 3.0.0 - resolution: "utf8@npm:3.0.0" - checksum: 10/31d19c4faacbb65b09ebc1c21c32b20bdb0919c6f6773cee5001b99bb83f8e503e7233c08fc71ebb34f7cfebd95cec3243b81d90176097aa2f286cccb4ce866e - languageName: node - linkType: hard - "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -25229,6 +25343,15 @@ __metadata: languageName: node linkType: hard +"uuid@npm:^11.1.0": + version: 11.1.1 + resolution: "uuid@npm:11.1.1" + bin: + uuid: dist/esm/bin/uuid + checksum: 10/16411d3dc12a08d6691616c09a75e66a7f900ba1beef6628a76fe0602f82fae2ee537b564d0b7bc95c24f58d059ca9b58c75a1e806118efb50e17822ff00ddd2 + languageName: node + linkType: hard + "uuid@npm:^8.3.2": version: 8.3.2 resolution: "uuid@npm:8.3.2" @@ -25850,7 +25973,7 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^5.0.0": +"write-file-atomic@npm:^5.0.0, write-file-atomic@npm:^5.0.1": version: 5.0.1 resolution: "write-file-atomic@npm:5.0.1" dependencies: From 53252000c0e33fd98da2654b05d96b7e88911cdf Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Fri, 17 Jul 2026 00:25:56 +0200 Subject: [PATCH 113/115] patch: add `dist/esm/index.d.mts` to `@metamask/safe-event-emitter` TypeScript with `moduleResolution: "Node16"` determines whether a `.d.ts` file is ESM or CJS based on the package's `"type"` field. `@metamask/safe-event-emitter` has no `"type": "module"`, so TypeScript treats its ESM type declarations (`dist/esm/index.d.ts`) as CJS, causing the default import to resolve as the module namespace rather than the class constructor. The fix: add a `dist/esm/index.d.mts` file (which TypeScript always treats as ESM, regardless of `"type"`) and point the `"import"` condition in the package's `exports` field at it. --- ...e-event-emitter-npm-3.1.1-a7872b1f5a.patch | 24 +++++++++++++++++++ package.json | 4 +++- packages/eth-block-tracker/package.json | 2 +- packages/json-rpc-engine/package.json | 2 +- .../json-rpc-middleware-stream/package.json | 2 +- .../multichain-api-middleware/package.json | 2 +- yarn.lock | 17 +++++++++---- 7 files changed, 43 insertions(+), 10 deletions(-) create mode 100644 .yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch diff --git a/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch b/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch new file mode 100644 index 00000000000..a5ef80d01f5 --- /dev/null +++ b/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch @@ -0,0 +1,24 @@ +diff --git a/dist/esm/index.d.mts b/dist/esm/index.d.mts +new file mode 100644 +index 0000000000000000000000000000000000000000..d48ab7ade4e48f566f3ca48c60636368919b1044 +--- /dev/null ++++ b/dist/esm/index.d.mts +@@ -0,0 +1,5 @@ ++/// ++import { EventEmitter } from 'events'; ++export default class SafeEventEmitter extends EventEmitter { ++ emit(type: string, ...args: any[]): boolean; ++} +diff --git a/package.json b/package.json +index 87ca2f6363c43d2f9d45be268e8ba03c1669c02c..72211f17fe3976ef8dac7d8512d60a6de1275fbd 100644 +--- a/package.json ++++ b/package.json +@@ -8,7 +8,7 @@ + "exports": { + ".": { + "import": { +- "types": "./dist/esm/index.d.ts", ++ "types": "./dist/esm/index.d.mts", + "default": "./dist/esm/index.mjs" + }, + "require": { diff --git a/package.json b/package.json index a47f5ad6f58..1987858ab46 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,9 @@ "@nktkas/hyperliquid@npm:^0.33.1": "patch:@nktkas/hyperliquid@npm%3A0.33.1#~/.yarn/patches/@nktkas-hyperliquid-npm-0.33.1-6a541fdd1d.patch", "elliptic@6.5.4": "^6.5.7", "fast-xml-parser@^4.3.4": "^4.4.1", - "ws@7.4.6": "^7.5.10" + "ws@7.4.6": "^7.5.10", + "@metamask/safe-event-emitter@npm:^3.0.0": "patch:@metamask/safe-event-emitter@npm%3A3.1.1#~/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch", + "@metamask/safe-event-emitter@npm:^3.1.1": "patch:@metamask/safe-event-emitter@npm%3A3.1.1#~/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch" }, "simple-git-hooks": { "pre-push": "yarn lint" diff --git a/packages/eth-block-tracker/package.json b/packages/eth-block-tracker/package.json index 1f3ba1c7cf9..90ebcafb361 100644 --- a/packages/eth-block-tracker/package.json +++ b/packages/eth-block-tracker/package.json @@ -49,7 +49,7 @@ }, "dependencies": { "@metamask/eth-json-rpc-provider": "^6.0.1", - "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/safe-event-emitter": "patch:@metamask/safe-event-emitter@npm%3A3.1.1#~/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch", "@metamask/utils": "^11.11.0", "json-rpc-random-id": "^1.0.1" }, diff --git a/packages/json-rpc-engine/package.json b/packages/json-rpc-engine/package.json index 83f35798ff1..4f00cc55be3 100644 --- a/packages/json-rpc-engine/package.json +++ b/packages/json-rpc-engine/package.json @@ -55,7 +55,7 @@ "dependencies": { "@metamask/messenger": "^2.0.0", "@metamask/rpc-errors": "^7.0.2", - "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/safe-event-emitter": "patch:@metamask/safe-event-emitter@npm%3A3.1.1#~/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch", "@metamask/utils": "^11.11.0", "@types/deep-freeze-strict": "^1.1.0", "deep-freeze-strict": "^1.1.1", diff --git a/packages/json-rpc-middleware-stream/package.json b/packages/json-rpc-middleware-stream/package.json index 797bc9b43c3..ce0a6edb40b 100644 --- a/packages/json-rpc-middleware-stream/package.json +++ b/packages/json-rpc-middleware-stream/package.json @@ -47,7 +47,7 @@ }, "dependencies": { "@metamask/json-rpc-engine": "^10.5.0", - "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/safe-event-emitter": "patch:@metamask/safe-event-emitter@npm%3A3.1.1#~/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch", "@metamask/utils": "^11.11.0", "readable-stream": "^3.6.2" }, diff --git a/packages/multichain-api-middleware/package.json b/packages/multichain-api-middleware/package.json index 6f78717cbc4..8938f51a43a 100644 --- a/packages/multichain-api-middleware/package.json +++ b/packages/multichain-api-middleware/package.json @@ -64,7 +64,7 @@ "@metamask/auto-changelog": "^6.1.0", "@metamask/eth-json-rpc-filters": "^9.0.0", "@metamask/multichain-transactions-controller": "^7.1.1", - "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/safe-event-emitter": "patch:@metamask/safe-event-emitter@npm%3A3.1.1#~/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch", "@types/jest": "^29.5.14", "deepmerge": "^4.2.2", "jest": "^29.7.0", diff --git a/yarn.lock b/yarn.lock index eabc167426e..9d4aab6df96 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6804,7 +6804,7 @@ __metadata: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/eth-json-rpc-provider": "npm:^6.0.1" "@metamask/json-rpc-engine": "npm:^10.5.0" - "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/safe-event-emitter": "patch:@metamask/safe-event-emitter@npm%3A3.1.1#~/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch" "@metamask/utils": "npm:^11.11.0" "@types/jest": "npm:^29.5.14" "@types/json-rpc-random-id": "npm:^1.0.1" @@ -7288,7 +7288,7 @@ __metadata: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/rpc-errors": "npm:^7.0.2" - "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/safe-event-emitter": "patch:@metamask/safe-event-emitter@npm%3A3.1.1#~/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch" "@metamask/utils": "npm:^11.11.0" "@types/deep-freeze-strict": "npm:^1.1.0" "@types/jest": "npm:^29.5.14" @@ -7309,7 +7309,7 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/json-rpc-engine": "npm:^10.5.0" - "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/safe-event-emitter": "patch:@metamask/safe-event-emitter@npm%3A3.1.1#~/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch" "@metamask/utils": "npm:^11.11.0" "@types/jest": "npm:^29.5.14" "@types/readable-stream": "npm:^2.3.0" @@ -7771,7 +7771,7 @@ __metadata: "@metamask/network-controller": "npm:^34.0.0" "@metamask/permission-controller": "npm:^13.1.1" "@metamask/rpc-errors": "npm:^7.0.2" - "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/safe-event-emitter": "patch:@metamask/safe-event-emitter@npm%3A3.1.1#~/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch" "@metamask/snaps-controllers": "npm:^19.0.0" "@metamask/utils": "npm:^11.11.0" "@open-rpc/meta-schema": "npm:^1.14.6" @@ -8489,13 +8489,20 @@ __metadata: languageName: node linkType: hard -"@metamask/safe-event-emitter@npm:^3.0.0, @metamask/safe-event-emitter@npm:^3.1.1": +"@metamask/safe-event-emitter@npm:3.1.1": version: 3.1.1 resolution: "@metamask/safe-event-emitter@npm:3.1.1" checksum: 10/e24db4d7c20764bfc5b025065f92518c805f0ffb1da4820078b8cff7dcae964c0f354cf053fcb7ac659de015d5ffdf21aae5e8d44e191ee8faa9066855f22653 languageName: node linkType: hard +"@metamask/safe-event-emitter@patch:@metamask/safe-event-emitter@npm%3A3.1.1#~/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch": + version: 3.1.1 + resolution: "@metamask/safe-event-emitter@patch:@metamask/safe-event-emitter@npm%3A3.1.1#~/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch::version=3.1.1&hash=4a033d" + checksum: 10/b47560199f61105a5a719b907400395893c52aa6a1d9aa37a4128b054351dd45fb485655dcb71f926e58da406f39f6a93c60396cc00ed1753a97ac3f5a2c7e5e + languageName: node + linkType: hard + "@metamask/sample-controllers@workspace:packages/sample-controllers": version: 0.0.0-use.local resolution: "@metamask/sample-controllers@workspace:packages/sample-controllers" From 21eb3781afb7bbb7a65d3ba6605f60effd16b66c Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Mon, 20 Jul 2026 14:25:49 +0200 Subject: [PATCH 114/115] Remove `tsconfig.buildinfo` in `build:only-clean` command --- package.json | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 1987858ab46..714b005fd20 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "build": "yarn tsc --build tsconfig.build.json --verbose", "build:clean": "yarn build:only-clean && yarn build", "build:docs": "yarn workspaces foreach --all --no-private --parallel --interlaced --verbose run build:docs", - "build:only-clean": "rimraf -g 'packages/*/dist'", + "build:only-clean": "rimraf -g 'packages/*/dist' 'packages/*/tsconfig.build.tsbuildinfo'", "build:types": "tsc --build tsconfig.build.json --verbose", "changelog:update": "yarn workspaces foreach --all --no-private --parallel --interlaced --verbose run changelog:update", "changelog:validate": "yarn workspaces foreach --all --no-private --parallel --interlaced --verbose run changelog:validate", @@ -113,9 +113,7 @@ "@nktkas/hyperliquid@npm:^0.33.1": "patch:@nktkas/hyperliquid@npm%3A0.33.1#~/.yarn/patches/@nktkas-hyperliquid-npm-0.33.1-6a541fdd1d.patch", "elliptic@6.5.4": "^6.5.7", "fast-xml-parser@^4.3.4": "^4.4.1", - "ws@7.4.6": "^7.5.10", - "@metamask/safe-event-emitter@npm:^3.0.0": "patch:@metamask/safe-event-emitter@npm%3A3.1.1#~/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch", - "@metamask/safe-event-emitter@npm:^3.1.1": "patch:@metamask/safe-event-emitter@npm%3A3.1.1#~/.yarn/patches/@metamask-safe-event-emitter-npm-3.1.1-a7872b1f5a.patch" + "ws@7.4.6": "^7.5.10" }, "simple-git-hooks": { "pre-push": "yarn lint" From 2438c877230b95d9fc993dd43e48d283ffe278df Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Mon, 20 Jul 2026 15:49:24 +0200 Subject: [PATCH 115/115] Include file extension in messenger CLI generated files --- packages/messenger-cli/src/generate-content.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/messenger-cli/src/generate-content.ts b/packages/messenger-cli/src/generate-content.ts index 76e4fef242b..ce882d5d5f3 100644 --- a/packages/messenger-cli/src/generate-content.ts +++ b/packages/messenger-cli/src/generate-content.ts @@ -104,7 +104,7 @@ export async function generateActionTypesContent( formatter: Formatter, ): Promise { const baseFileName = path.basename(source.filePath, '.ts'); - const sourceImportPath = `./${baseFileName}`; + const sourceImportPath = `./${baseFileName}.js`; let content = `/** * This file is auto generated.