diff --git a/.github/workflows/lint-build-test.yml b/.github/workflows/lint-build-test.yml index 2f5f9ba0722..6eb2976dadd 100644 --- a/.github/workflows/lint-build-test.yml +++ b/.github/workflows/lint-build-test.yml @@ -220,7 +220,7 @@ jobs: echo "Building changed packages:" jq -r '"- " + (.references[].path | ltrimstr("./") | rtrimstr("/tsconfig.build.json"))' "$TSCONFIG" echo "" - yarn ts-bridge --project "$TSCONFIG" --verbose + yarn tsc --build --project "$TSCONFIG" --verbose else echo "No packages to build." fi diff --git a/.prettierrc.js b/.prettierrc.cjs similarity index 100% rename from .prettierrc.js rename to .prettierrc.cjs 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/docs/processes/package-migration-process-guide.md b/docs/processes/package-migration-process-guide.md index 31b4d676a02..8854fdbd189 100644 --- a/docs/processes/package-migration-process-guide.md +++ b/docs/processes/package-migration-process-guide.md @@ -85,12 +85,12 @@ Find the release commit SHA with `git log --oneline merged-packages/ run test` to run all tests for a package. - Run `yarn workspace run jest --no-coverage ` to run a test file within the context of a package. diff --git a/eslint-suppressions.json b/eslint-suppressions.json index 80bf50a1201..253b9a7f00b 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -144,7 +144,7 @@ "count": 1 } }, - "packages/assets-controllers/jest.environment.js": { + "packages/assets-controllers/jest.environment.cjs": { "n/prefer-global/text-decoder": { "count": 1 }, @@ -500,7 +500,7 @@ "count": 25 }, "@typescript-eslint/prefer-nullish-coalescing": { - "count": 1 + "count": 2 }, "no-negated-condition": { "count": 1 @@ -1859,9 +1859,6 @@ "@typescript-eslint/explicit-function-return-type": { "count": 10 }, - "@typescript-eslint/naming-convention": { - "count": 1 - }, "@typescript-eslint/no-explicit-any": { "count": 4 }, diff --git a/eslint.config.mjs b/eslint.config.mjs index 4c3d0a2c90e..f1a6c8d64a1 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -107,7 +107,7 @@ const config = createConfig([ extends: [nodejs], }, { - files: ['**/*.{js,cjs}'], + files: ['**/*.cjs'], languageOptions: { sourceType: 'script', ecmaVersion: 2020, @@ -152,6 +152,10 @@ const config = createConfig([ 'jest/no-alias-methods': 'error', 'jest/no-commented-out-tests': 'error', 'jest/no-disabled-tests': 'error', + + // `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: { @@ -192,14 +196,14 @@ const config = createConfig([ }, }, { - files: ['**/jest.environment.js'], + files: ['**/jest.environment.cjs'], rules: { // These files run under Node, and thus `require(...)` is expected. 'n/global-require': 'off', }, }, { - files: ['**/*.mjs'], + files: ['**/*.js', '**/*.mjs'], languageOptions: { sourceType: 'module', }, diff --git a/jest.config.packages.js b/jest.config.packages.cjs similarity index 90% rename from jest.config.packages.js rename to jest.config.packages.cjs index a3e1943acaf..e066df2f412 100644 --- a/jest.config.packages.js +++ b/jest.config.packages.cjs @@ -94,6 +94,11 @@ module.exports = { '/../../node_modules/@metamask/$1', ], '^uuid$': require.resolve('uuid'), + // The sources import `lodash-es`, because `lodash` is CommonJS and its + // named exports cannot be imported from an ES module. The tests compile to + // CommonJS, where the reverse is true, so they are pointed back at + // `lodash`. The two have the same API. + '^lodash-es$': require.resolve('lodash'), }, // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader @@ -190,7 +195,22 @@ module.exports = { // testURL: "http://localhost", // A map from regular expressions to paths to transformers - // transform: undefined, + // The packages are ESM, but Jest runs the tests as CommonJS: Jest only + // treats TypeScript as ESM when the extension is listed in + // `extensionsToTreatAsEsm`, so overriding the module settings here compiles + // the sources to CommonJS for tests without affecting the published build. + transform: { + '^.+\\.tsx?$': [ + 'ts-jest', + { + tsconfig: { + module: 'CommonJS', + moduleResolution: 'Node', + verbatimModuleSyntax: false, + }, + }, + ], + }, // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation // transformIgnorePatterns: undefined diff --git a/jest.config.scripts.js b/jest.config.scripts.cjs similarity index 88% rename from jest.config.scripts.js rename to jest.config.scripts.cjs index 64cd2bd44ac..4a6d8b66f87 100644 --- a/jest.config.scripts.js +++ b/jest.config.scripts.cjs @@ -42,6 +42,15 @@ module.exports = { preset: 'ts-jest', + // Unlike the packages, the scripts use `import.meta`, which has no CommonJS + // equivalent, so their tests run as ESM. Jest only treats TypeScript as ESM + // when the extension is listed here. + extensionsToTreatAsEsm: ['.ts', '.mts'], + + transform: { + '^.+\\.m?tsx?$': ['ts-jest', { useESM: true }], + }, + // "resetMocks" resets all mocks, including mocked modules, to jest.fn(), // between each test case. resetMocks: true, diff --git a/knip.config.mts b/knip.config.mts index d3d13d37c46..abfaf9dd739 100644 --- a/knip.config.mts +++ b/knip.config.mts @@ -7,7 +7,7 @@ const config: KnipConfig = { 'scripts/**/*.{ts,js,sh}', 'tests/**/*.ts', '*.config.{js,cjs,mjs,ts}', - '.prettierrc.js', + '.prettierrc.cjs', ], project: ['scripts/**/*.ts', 'tests/**/*.ts', '*.{js,cjs,mjs,ts}'], ignore: ['scripts/create-package/package-template/**'], @@ -41,7 +41,7 @@ const config: KnipConfig = { ignoreDependencies: [ '@metamask/controller-utils', '@metamask/keyring-internal-api', - 'lodash', + 'lodash-es', ], }, 'packages/analytics-data-regulation-controller': { @@ -66,7 +66,7 @@ const config: KnipConfig = { ignoreDependencies: [ '@metamask/gas-fee-controller', '@metamask/remote-feature-flag-controller', - 'lodash', + 'lodash-es', 'nock', ], }, @@ -127,7 +127,7 @@ const config: KnipConfig = { ignoreDependencies: [ '@metamask/base-controller', '@metamask/superstruct', - 'lodash', + 'lodash-es', ], }, 'packages/multichain-network-controller': { @@ -183,10 +183,10 @@ const config: KnipConfig = { ignoreDependencies: ['cockatiel', 'nock'], }, 'packages/selected-network-controller': { - ignoreDependencies: ['immer', 'lodash', 'nock'], + ignoreDependencies: ['immer', 'lodash-es', 'nock'], }, 'packages/signature-controller': { - ignoreDependencies: ['lodash'], + ignoreDependencies: ['lodash-es'], }, 'packages/snap-account-service': { ignoreDependencies: [ diff --git a/package.json b/package.json index 6727232dd3f..c69c3f0e098 100644 --- a/package.json +++ b/package.json @@ -12,11 +12,12 @@ "packages/*" ], "files": [], + "type": "module", "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'", + "build:only-clean": "rimraf -g 'packages/*/dist' 'packages/*/tsconfig.build.tsbuildinfo'", "build:types": "tsc --build tsconfig.build.json --verbose", "changelog:merge": "tsx scripts/merge-changelog-conflicts.ts", "changelog:update": "yarn workspaces foreach --all --no-private --parallel --interlaced --verbose run changelog:update", @@ -54,7 +55,7 @@ "test": "yarn test:scripts --silent --collectCoverage=false --reporters=jest-silent-reporter && yarn test:scripts:shell && yarn test:packages", "test:clean": "yarn workspaces foreach --all --parallel --verbose run test:clean && yarn test", "test:packages": "yarn test:verbose --silent --collectCoverage=false --reporters=jest-silent-reporter", - "test:scripts": "NODE_OPTIONS=--experimental-vm-modules yarn jest --config ./jest.config.scripts.js --silent", + "test:scripts": "NODE_OPTIONS=--experimental-vm-modules yarn jest --config ./jest.config.scripts.cjs --silent", "test:scripts:shell": "node_modules/bats/bin/bats scripts/*.bats", "test:verbose": "yarn workspaces foreach --all --parallel --verbose run test:verbose", "workspaces:list-versions": "./scripts/list-workspace-versions.sh" @@ -62,6 +63,7 @@ "devDependencies": { "@actions/core": "^3.0.1", "@actions/github": "^9.1.1", + "@jest/globals": "^30.4.1", "@lavamoat/allow-scripts": "^3.0.4", "@lavamoat/preinstall-always-fail": "^2.1.0", "@metamask/auto-changelog": "^6.1.0", @@ -76,7 +78,6 @@ "@metamask/network-controller": "^36.0.0", "@metamask/skills": "^0.1.0", "@metamask/utils": "^11.12.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "@types/lodash": "^4.14.191", "@types/node": "^22.13.14", @@ -111,6 +112,7 @@ "rimraf": "^5.0.5", "semver": "^7.6.3", "simple-git-hooks": "^2.8.0", + "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typescript": "~5.3.3", "typescript-eslint": "^8.48.0", diff --git a/packages/account-tree-controller/CHANGELOG.md b/packages/account-tree-controller/CHANGELOG.md index 840ed691ed0..b64a2873408 100644 --- a/packages/account-tree-controller/CHANGELOG.md +++ b/packages/account-tree-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [9.0.0] diff --git a/packages/account-tree-controller/jest.config.js b/packages/account-tree-controller/jest.config.cjs similarity index 90% rename from packages/account-tree-controller/jest.config.js rename to packages/account-tree-controller/jest.config.cjs index a78c856767b..543a5d9546d 100644 --- a/packages/account-tree-controller/jest.config.js +++ b/packages/account-tree-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/account-tree-controller/package.json b/packages/account-tree-controller/package.json index 1f2f50db4e2..ae1f155bcf2 100644 --- a/packages/account-tree-controller/package.json +++ b/packages/account-tree-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/account-tree-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/account-tree-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -68,17 +63,17 @@ "@metamask/superstruct": "^3.4.1", "@metamask/utils": "^11.12.0", "fast-deep-equal": "^3.1.3", - "lodash": "^4.17.21" + "lodash-es": "^4.17.21" }, "devDependencies": { "@metamask/account-api": "^2.0.0", "@metamask/auto-changelog": "^6.1.0", "@metamask/eth-hd-keyring": "^15.0.0", "@metamask/providers": "^22.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/accounts-controller/CHANGELOG.md b/packages/accounts-controller/CHANGELOG.md index 2ccb0c94024..1362ebadb55 100644 --- a/packages/accounts-controller/CHANGELOG.md +++ b/packages/accounts-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/accounts-controller/jest.config.js b/packages/accounts-controller/jest.config.cjs similarity index 90% rename from packages/accounts-controller/jest.config.js rename to packages/accounts-controller/jest.config.cjs index 5312c1e6c3a..694b55b218b 100644 --- a/packages/accounts-controller/jest.config.js +++ b/packages/accounts-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/accounts-controller/package.json b/packages/accounts-controller/package.json index 07475eaf2ca..24c933c6c22 100644 --- a/packages/accounts-controller/package.json +++ b/packages/accounts-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/accounts-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/accounts-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -70,17 +65,17 @@ "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": { "@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": "^30.0.0", "@types/readable-stream": "^2.3.0", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/accounts-controller/src/AccountsController.ts b/packages/accounts-controller/src/AccountsController.ts index c4ee9b5ae62..50af609db83 100644 --- a/packages/accounts-controller/src/AccountsController.ts +++ b/packages/accounts-controller/src/AccountsController.ts @@ -34,7 +34,7 @@ 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.js'; import { projectLogger as log } from './logger.js'; diff --git a/packages/accounts-controller/src/utils.ts b/packages/accounts-controller/src/utils.ts index 64090871669..e488b3d62ca 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.js'; +// This is exported by the `uuid` package, but not importable in ESM. +type V4Options = Exclude[0], undefined>; + /** * Returns the name of the keyring type. * diff --git a/packages/address-book-controller/CHANGELOG.md b/packages/address-book-controller/CHANGELOG.md index 7ccf23e3495..a0d37c077d6 100644 --- a/packages/address-book-controller/CHANGELOG.md +++ b/packages/address-book-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/controller-utils` from `^12.0.0` to `^12.3.0` ([#8774](https://github.com/MetaMask/core/pull/8774), [#9058](https://github.com/MetaMask/core/pull/9058), [#9083](https://github.com/MetaMask/core/pull/9083), [#9218](https://github.com/MetaMask/core/pull/9218)) diff --git a/packages/address-book-controller/jest.config.js b/packages/address-book-controller/jest.config.cjs similarity index 90% rename from packages/address-book-controller/jest.config.js rename to packages/address-book-controller/jest.config.cjs index 43c60a649b3..3f1909beebd 100644 --- a/packages/address-book-controller/jest.config.js +++ b/packages/address-book-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/address-book-controller/package.json b/packages/address-book-controller/package.json index 0dec0ea28e6..45e2057f74f 100644 --- a/packages/address-book-controller/package.json +++ b/packages/address-book-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/address-book-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/address-book-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -62,10 +57,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/ai-controllers/CHANGELOG.md b/packages/ai-controllers/CHANGELOG.md index be9a905338c..dfc366b17b8 100644 --- a/packages/ai-controllers/CHANGELOG.md +++ b/packages/ai-controllers/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/ai-controllers/jest.config.js b/packages/ai-controllers/jest.config.cjs similarity index 88% rename from packages/ai-controllers/jest.config.js rename to packages/ai-controllers/jest.config.cjs index 55df7971f9f..05bf00fa97e 100644 --- a/packages/ai-controllers/jest.config.js +++ b/packages/ai-controllers/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/ai-controllers/package.json b/packages/ai-controllers/package.json index 8431dacfb8d..cc60f936bfd 100644 --- a/packages/ai-controllers/package.json +++ b/packages/ai-controllers/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/ai-controllers", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/ai-controllers", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -62,10 +57,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/analytics-controller/CHANGELOG.md b/packages/analytics-controller/CHANGELOG.md index c51017d82d4..b65f3de2a3d 100644 --- a/packages/analytics-controller/CHANGELOG.md +++ b/packages/analytics-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [2.1.0] diff --git a/packages/analytics-controller/jest.config.js b/packages/analytics-controller/jest.config.cjs similarity index 90% rename from packages/analytics-controller/jest.config.js rename to packages/analytics-controller/jest.config.cjs index 5c48b1b92e8..6a48a293141 100644 --- a/packages/analytics-controller/jest.config.js +++ b/packages/analytics-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/analytics-controller/package.json b/packages/analytics-controller/package.json index add889aa486..d057db5b2d6 100644 --- a/packages/analytics-controller/package.json +++ b/packages/analytics-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/analytics-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/analytics-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -59,16 +54,16 @@ "@metamask/geolocation-controller": "^1.0.0", "@metamask/messenger": "^2.0.0", "@metamask/utils": "^11.12.0", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "uuid": "^8.3.2" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "@types/uuid": "^8.3.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/analytics-controller/src/AnalyticsController.ts b/packages/analytics-controller/src/AnalyticsController.ts index 9d282137088..8045f12d662 100644 --- a/packages/analytics-controller/src/AnalyticsController.ts +++ b/packages/analytics-controller/src/AnalyticsController.ts @@ -10,7 +10,7 @@ import type { } from '@metamask/geolocation-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.js'; @@ -24,7 +24,7 @@ import type { AnalyticsLocationContext, AnalyticsUserTraits, AnalyticsTrackingEvent, -} from './AnalyticsPlatformAdapter.types'; +} from './AnalyticsPlatformAdapter.types.js'; import type { AnalyticsEventFragment, AnalyticsEventFragmentFinalizeOptions, diff --git a/packages/analytics-controller/src/EventFragment.types.ts b/packages/analytics-controller/src/EventFragment.types.ts index 61a03996d03..22501b1d3c7 100644 --- a/packages/analytics-controller/src/EventFragment.types.ts +++ b/packages/analytics-controller/src/EventFragment.types.ts @@ -1,7 +1,7 @@ import type { AnalyticsContext, AnalyticsEventProperties, -} from './AnalyticsPlatformAdapter.types'; +} from './AnalyticsPlatformAdapter.types.js'; /** * A bag of analytics properties that accumulates across a user journey. diff --git a/packages/analytics-controller/src/index.ts b/packages/analytics-controller/src/index.ts index 872b1812cb0..47e2813e2ea 100644 --- a/packages/analytics-controller/src/index.ts +++ b/packages/analytics-controller/src/index.ts @@ -20,7 +20,7 @@ export type { AnalyticsUserTraits, AnalyticsPlatformAdapter, AnalyticsTrackingEvent, -} from './AnalyticsPlatformAdapter.types'; +} from './AnalyticsPlatformAdapter.types.js'; // Export event fragment types export type { diff --git a/packages/analytics-data-regulation-controller/CHANGELOG.md b/packages/analytics-data-regulation-controller/CHANGELOG.md index 5f5a677672f..9ffeb594a20 100644 --- a/packages/analytics-data-regulation-controller/CHANGELOG.md +++ b/packages/analytics-data-regulation-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/controller-utils` from `^11.19.0` to `^12.3.0` ([#8344](https://github.com/MetaMask/core/pull/8344), [#8755](https://github.com/MetaMask/core/pull/8755), [#8774](https://github.com/MetaMask/core/pull/8774), [#9058](https://github.com/MetaMask/core/pull/9058), [#9083](https://github.com/MetaMask/core/pull/9083), [#9218](https://github.com/MetaMask/core/pull/9218)) diff --git a/packages/eth-json-rpc-provider/jest.config.js b/packages/analytics-data-regulation-controller/jest.config.cjs similarity index 92% rename from packages/eth-json-rpc-provider/jest.config.js rename to packages/analytics-data-regulation-controller/jest.config.cjs index 6da8ce580c8..112702bd4c8 100644 --- a/packages/eth-json-rpc-provider/jest.config.js +++ b/packages/analytics-data-regulation-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/analytics-data-regulation-controller/package.json b/packages/analytics-data-regulation-controller/package.json index 8b0f8c17d7b..5d7d27d4c57 100644 --- a/packages/analytics-data-regulation-controller/package.json +++ b/packages/analytics-data-regulation-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/analytics-data-regulation-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/analytics-data-regulation-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -62,11 +57,11 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/announcement-controller/CHANGELOG.md b/packages/announcement-controller/CHANGELOG.md index 6316cc63f3f..64947cd1487 100644 --- a/packages/announcement-controller/CHANGELOG.md +++ b/packages/announcement-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/messenger` from `^1.0.0` to `^2.0.0` ([#8364](https://github.com/MetaMask/core/pull/8364), [#8373](https://github.com/MetaMask/core/pull/8373), [#8632](https://github.com/MetaMask/core/pull/8632), [#9392](https://github.com/MetaMask/core/pull/9392)) - Bump `@metamask/base-controller` from `^9.0.1` to `^9.1.0` ([#8457](https://github.com/MetaMask/core/pull/8457)) diff --git a/packages/analytics-data-regulation-controller/jest.config.js b/packages/announcement-controller/jest.config.cjs similarity index 90% rename from packages/analytics-data-regulation-controller/jest.config.js rename to packages/announcement-controller/jest.config.cjs index ca084133399..6456e074bb0 100644 --- a/packages/analytics-data-regulation-controller/jest.config.js +++ b/packages/announcement-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/announcement-controller/package.json b/packages/announcement-controller/package.json index 1d23381c2f2..63b4f248f63 100644 --- a/packages/announcement-controller/package.json +++ b/packages/announcement-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/announcement-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/announcement-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -60,10 +55,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/app-metadata-controller/CHANGELOG.md b/packages/app-metadata-controller/CHANGELOG.md index 03fe6dca488..1da85e22830 100644 --- a/packages/app-metadata-controller/CHANGELOG.md +++ b/packages/app-metadata-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/messenger` from `^1.0.0` to `^2.0.0` ([#8364](https://github.com/MetaMask/core/pull/8364), [#8373](https://github.com/MetaMask/core/pull/8373), [#8632](https://github.com/MetaMask/core/pull/8632), [#9392](https://github.com/MetaMask/core/pull/9392)) - Bump `@metamask/base-controller` from `^9.0.1` to `^9.1.0` ([#8457](https://github.com/MetaMask/core/pull/8457)) diff --git a/packages/announcement-controller/jest.config.js b/packages/app-metadata-controller/jest.config.cjs similarity index 90% rename from packages/announcement-controller/jest.config.js rename to packages/app-metadata-controller/jest.config.cjs index ca084133399..6456e074bb0 100644 --- a/packages/announcement-controller/jest.config.js +++ b/packages/app-metadata-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/app-metadata-controller/package.json b/packages/app-metadata-controller/package.json index d0e875757ee..0e8c4f5c494 100644 --- a/packages/app-metadata-controller/package.json +++ b/packages/app-metadata-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/app-metadata-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/app-metadata-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -58,10 +53,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/approval-controller/CHANGELOG.md b/packages/approval-controller/CHANGELOG.md index 408b22a14f7..9b722827d95 100644 --- a/packages/approval-controller/CHANGELOG.md +++ b/packages/approval-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/messenger` from `^1.2.0` to `^2.0.0` ([#9392](https://github.com/MetaMask/core/pull/9392)) diff --git a/packages/app-metadata-controller/jest.config.js b/packages/approval-controller/jest.config.cjs similarity index 90% rename from packages/app-metadata-controller/jest.config.js rename to packages/approval-controller/jest.config.cjs index ca084133399..6456e074bb0 100644 --- a/packages/app-metadata-controller/jest.config.js +++ b/packages/approval-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/approval-controller/package.json b/packages/approval-controller/package.json index 961c5f287a7..bfba984889f 100644 --- a/packages/approval-controller/package.json +++ b/packages/approval-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/approval-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/approval-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -63,10 +58,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/assets-controller/CHANGELOG.md b/packages/assets-controller/CHANGELOG.md index 77eb091ce5e..df35d445aab 100644 --- a/packages/assets-controller/CHANGELOG.md +++ b/packages/assets-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/assets-controllers` from `^111.2.0` to `^111.3.0` ([#10152](https://github.com/MetaMask/core/pull/10152)) diff --git a/packages/assets-controller/jest.config.js b/packages/assets-controller/jest.config.cjs similarity index 90% rename from packages/assets-controller/jest.config.js rename to packages/assets-controller/jest.config.cjs index 49ea0e46510..64b2076d514 100644 --- a/packages/assets-controller/jest.config.js +++ b/packages/assets-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/assets-controller/package.json b/packages/assets-controller/package.json index fba221a7513..3842e942248 100644 --- a/packages/assets-controller/package.json +++ b/packages/assets-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/assets-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/assets-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -84,17 +79,17 @@ "@metamask/utils": "^11.12.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": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", - "@types/lodash": "^4.14.191", + "@types/lodash-es": "^4.17.12", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/assets-controller/src/AssetsController.ts b/packages/assets-controller/src/AssetsController.ts index 4c978938d61..e3dffd5630b 100644 --- a/packages/assets-controller/src/AssetsController.ts +++ b/packages/assets-controller/src/AssetsController.ts @@ -75,8 +75,8 @@ import { parseCaipChainId, } from '@metamask/utils'; import { Mutex } from 'async-mutex'; -import BigNumberJS from 'bignumber.js'; -import { isEqual } from 'lodash'; +import { BigNumber as BigNumberJS } from 'bignumber.js'; +import { isEqual } from 'lodash-es'; import type { AssetsControllerMethodActions } from './AssetsController-method-action-types.js'; import type { diff --git a/packages/assets-controller/src/data-sources/AccountActivityDataSource.ts b/packages/assets-controller/src/data-sources/AccountActivityDataSource.ts index 196af953ac0..a5ef47fdbac 100644 --- a/packages/assets-controller/src/data-sources/AccountActivityDataSource.ts +++ b/packages/assets-controller/src/data-sources/AccountActivityDataSource.ts @@ -5,7 +5,7 @@ import type { } from '@metamask/core-backend'; import type { InternalAccount } from '@metamask/keyring-internal-api'; import { isCaipChainId } from '@metamask/utils'; -import BigNumberJS from 'bignumber.js'; +import { BigNumber as BigNumberJS } from 'bignumber.js'; import type { AssetsControllerMessenger } from '../AssetsController.js'; import { projectLogger, createModuleLogger } from '../logger.js'; diff --git a/packages/assets-controller/src/data-sources/RpcDataSource.ts b/packages/assets-controller/src/data-sources/RpcDataSource.ts index 3683caf4052..93f8cb5b6ae 100644 --- a/packages/assets-controller/src/data-sources/RpcDataSource.ts +++ b/packages/assets-controller/src/data-sources/RpcDataSource.ts @@ -22,7 +22,7 @@ import { KnownCaipNamespace, } from '@metamask/utils'; import type { Hex } from '@metamask/utils'; -import BigNumberJS from 'bignumber.js'; +import { BigNumber as BigNumberJS } from 'bignumber.js'; import type { AssetsControllerGetStateAction, 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/migrations/healAssetsInfoMetadata.test.ts b/packages/assets-controller/src/migrations/healAssetsInfoMetadata.test.ts index a139e740428..d72f4614287 100644 --- a/packages/assets-controller/src/migrations/healAssetsInfoMetadata.test.ts +++ b/packages/assets-controller/src/migrations/healAssetsInfoMetadata.test.ts @@ -1,4 +1,4 @@ -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; import { createTestApiClient, diff --git a/packages/assets-controller/src/migrations/healAssetsInfoMetadata.ts b/packages/assets-controller/src/migrations/healAssetsInfoMetadata.ts index 175e2e73e37..75c0c6ae868 100644 --- a/packages/assets-controller/src/migrations/healAssetsInfoMetadata.ts +++ b/packages/assets-controller/src/migrations/healAssetsInfoMetadata.ts @@ -8,7 +8,7 @@ import { hasProperty, isObject, } from '@metamask/utils'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; import { divideIntoBatches } from '../data-sources/evm-rpc-services/utils/batch.js'; import { DEFAULT_TRACKED_ASSETS_BY_CHAIN } from '../defaults.js'; diff --git a/packages/assets-controller/src/selectors/balance.ts b/packages/assets-controller/src/selectors/balance.ts index 5a9f4b2a639..c3c72c4b500 100644 --- a/packages/assets-controller/src/selectors/balance.ts +++ b/packages/assets-controller/src/selectors/balance.ts @@ -9,7 +9,7 @@ import { parseCaipAssetType, parseCaipChainId, } from '@metamask/utils'; -import BigNumberJS from 'bignumber.js'; +import { BigNumber as BigNumberJS } from 'bignumber.js'; import type { AssetsControllerState } from '../AssetsController.js'; import type { diff --git a/packages/assets-controller/src/utils/formatExchangeRatesForBridge.ts b/packages/assets-controller/src/utils/formatExchangeRatesForBridge.ts index c452f271853..f95bb782126 100644 --- a/packages/assets-controller/src/utils/formatExchangeRatesForBridge.ts +++ b/packages/assets-controller/src/utils/formatExchangeRatesForBridge.ts @@ -9,7 +9,7 @@ import { } from '@metamask/assets-controllers'; import { Hex, KnownCaipNamespace, numberToHex } from '@metamask/utils'; import { parseCaipAssetType, parseCaipChainId } from '@metamask/utils'; -import { isEqual } from 'lodash'; +import { isEqual } from 'lodash-es'; import type { AssetMetadata, diff --git a/packages/assets-controller/src/utils/formatStateForTransactionPay.ts b/packages/assets-controller/src/utils/formatStateForTransactionPay.ts index f2084924a4a..104ce0a03ea 100644 --- a/packages/assets-controller/src/utils/formatStateForTransactionPay.ts +++ b/packages/assets-controller/src/utils/formatStateForTransactionPay.ts @@ -2,7 +2,7 @@ import { toChecksumAddress } from '@ethereumjs/util'; import { getNativeTokenAddress } from '@metamask/assets-controllers'; import { numberToHex } from '@metamask/utils'; import { parseCaipAssetType, parseCaipChainId } from '@metamask/utils'; -import { isEqual } from 'lodash'; +import { isEqual } from 'lodash-es'; import type { AssetBalance, 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 6a3563dc89e..fcf028b4d00 100644 --- a/packages/assets-controller/src/utils/normalizeAssetId.ts +++ b/packages/assets-controller/src/utils/normalizeAssetId.ts @@ -1,10 +1,12 @@ import { toChecksumAddress } from '@ethereumjs/util'; import { parseCaipAssetType, parseCaipChainId } from '@metamask/utils'; -import type { MemoizedFunction } from 'lodash'; -import memoize from 'lodash/memoize'; +import { memoize } from 'lodash-es'; import type { Caip19AssetId } from '../types.js'; +// Not exported by `lodash-es`. +type MemoizedFunction = Omit, never>; + /** * Normalizes a CAIP-19 asset ID by checksumming EVM addresses. * This ensures consistent asset IDs regardless of the data source format. diff --git a/packages/assets-controllers/CHANGELOG.md b/packages/assets-controllers/CHANGELOG.md index f9ae0f60432..78587b9f9f0 100644 --- a/packages/assets-controllers/CHANGELOG.md +++ b/packages/assets-controllers/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [111.3.0] diff --git a/packages/assets-controllers/jest.config.js b/packages/assets-controllers/jest.config.cjs similarity index 87% rename from packages/assets-controllers/jest.config.js rename to packages/assets-controllers/jest.config.cjs index a91d4995fcc..71acce83961 100644 --- a/packages/assets-controllers/jest.config.js +++ b/packages/assets-controllers/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); @@ -31,5 +31,5 @@ module.exports = merge(baseConfig, { }, // We rely on `window` to make requests - testEnvironment: '/jest.environment.js', + testEnvironment: '/jest.environment.cjs', }); diff --git a/packages/assets-controllers/jest.environment.js b/packages/assets-controllers/jest.environment.cjs similarity index 100% rename from packages/assets-controllers/jest.environment.js rename to packages/assets-controllers/jest.environment.cjs diff --git a/packages/assets-controllers/package.json b/packages/assets-controllers/package.json index ea2ea0ae7aa..70ed4ff8408 100644 --- a/packages/assets-controllers/package.json +++ b/packages/assets-controllers/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/assets-controllers", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/assets-controllers", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -97,7 +92,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", @@ -112,14 +107,14 @@ "@metamask/keyring-internal-api": "^12.0.0", "@metamask/keyring-snap-client": "^10.0.0", "@metamask/providers": "^22.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", - "@types/lodash": "^4.14.191", + "@types/lodash-es": "^4.17.12", "@types/node": "^22.13.14", "deepmerge": "^4.2.2", "jest": "^30.4.2", "jest-environment-jsdom": "^30.4.1", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/assets-controllers/src/AccountTrackerController.ts b/packages/assets-controllers/src/AccountTrackerController.ts index 7b887f96b6c..134a4c6baad 100644 --- a/packages/assets-controllers/src/AccountTrackerController.ts +++ b/packages/assets-controllers/src/AccountTrackerController.ts @@ -42,7 +42,7 @@ 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.js'; import { STAKING_CONTRACT_ADDRESS_BY_CHAINID } from './AssetsContractController.js'; diff --git a/packages/assets-controllers/src/TokenBalancesController.ts b/packages/assets-controllers/src/TokenBalancesController.ts index 0ec5ca0cf85..ee5dae7adc5 100644 --- a/packages/assets-controllers/src/TokenBalancesController.ts +++ b/packages/assets-controllers/src/TokenBalancesController.ts @@ -52,7 +52,7 @@ import { parseCaipChainId, } from '@metamask/utils'; import { produce } from 'immer'; -import { isEqual, union } from 'lodash'; +import { isEqual, union } from 'lodash-es'; import type { AccountTrackerControllerUpdateNativeBalancesAction, diff --git a/packages/assets-controllers/src/TokenRatesController.ts b/packages/assets-controllers/src/TokenRatesController.ts index 1c65bf3718d..cf49fc5f588 100644 --- a/packages/assets-controllers/src/TokenRatesController.ts +++ b/packages/assets-controllers/src/TokenRatesController.ts @@ -12,7 +12,7 @@ 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 { isEqual } from 'lodash-es'; import { reduceInBatchesSerially, diff --git a/packages/assets-controllers/src/TokensController.ts b/packages/assets-controllers/src/TokensController.ts index dc7d42f1321..5d6ac6b262f 100644 --- a/packages/assets-controllers/src/TokensController.ts +++ b/packages/assets-controllers/src/TokensController.ts @@ -42,7 +42,7 @@ 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.js'; diff --git a/packages/assets-controllers/src/selectors/token-selectors.test.ts b/packages/assets-controllers/src/selectors/token-selectors.test.ts index 3ca474bde2e..79a3761dbc8 100644 --- a/packages/assets-controllers/src/selectors/token-selectors.test.ts +++ b/packages/assets-controllers/src/selectors/token-selectors.test.ts @@ -8,7 +8,7 @@ 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 { cloneDeep } from 'lodash-es'; import type { AccountGroupMultichainAccountObject } from '../../../account-tree-controller/src/group.js'; import type { CurrencyRateState } from '../CurrencyRateController.js'; diff --git a/packages/assets-controllers/src/selectors/token-selectors.ts b/packages/assets-controllers/src/selectors/token-selectors.ts index 4dc85e8ef72..d3a9264c620 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 { TokenRwaData } from '../token-service.js'; import type { TokenBalancesControllerState } from '../TokenBalancesController.js'; import type { Token, @@ -461,7 +461,11 @@ const selectAllMultichainAssets = createAssetListSelector( }, ); -export const selectAllAssets = createAssetListSelector( +// TS2742: The inferred type of 'selectAllAssets' cannot be named without a +// reference to '../../../../node_modules/@metamask/account-tree-controller/dist/wallet.js'. +// This is likely not portable. A type annotation is necessary. +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const selectAllAssets: any = createAssetListSelector( [ selectAllEvmAssets, selectAllMultichainAssets, diff --git a/packages/assets-controllers/src/utils/create-batch-handler.ts b/packages/assets-controllers/src/utils/create-batch-handler.ts index 4d202b9575d..f68546f1c0f 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; diff --git a/packages/authenticated-user-storage/CHANGELOG.md b/packages/authenticated-user-storage/CHANGELOG.md index ec532f69eab..4104ee74d04 100644 --- a/packages/authenticated-user-storage/CHANGELOG.md +++ b/packages/authenticated-user-storage/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/approval-controller/jest.config.js b/packages/authenticated-user-storage/jest.config.cjs similarity index 90% rename from packages/approval-controller/jest.config.js rename to packages/authenticated-user-storage/jest.config.cjs index ca084133399..6456e074bb0 100644 --- a/packages/approval-controller/jest.config.js +++ b/packages/authenticated-user-storage/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/authenticated-user-storage/jest.config.js b/packages/authenticated-user-storage/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/authenticated-user-storage/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/authenticated-user-storage/package.json b/packages/authenticated-user-storage/package.json index 0eb78271e45..0006bbde048 100644 --- a/packages/authenticated-user-storage/package.json +++ b/packages/authenticated-user-storage/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,15 +32,17 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/authenticated-user-storage", "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 --esm --check", - "messenger-action-types:generate": "tsx ../../packages/messenger-cli/src/cli.ts --esm --generate", + "messenger-action-types:check": "tsx ../../packages/messenger-cli/src/cli.ts --formatter oxfmt --esm --check", + "messenger-action-types:generate": "tsx ../../packages/messenger-cli/src/cli.ts --formatter oxfmt --esm --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", @@ -63,11 +58,11 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/base-controller/CHANGELOG.md b/packages/base-controller/CHANGELOG.md index 4193480481d..1744c55254e 100644 --- a/packages/base-controller/CHANGELOG.md +++ b/packages/base-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/messenger` from `^1.1.1` to `^2.0.0` ([#8632](https://github.com/MetaMask/core/pull/8632), [#9392](https://github.com/MetaMask/core/pull/9392)) diff --git a/packages/base-controller/jest.config.cjs b/packages/base-controller/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/base-controller/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/base-controller/jest.config.js b/packages/base-controller/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/base-controller/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/base-controller/package.json b/packages/base-controller/package.json index af0e30f4264..381117cc6c4 100644 --- a/packages/base-controller/package.json +++ b/packages/base-controller/package.json @@ -18,18 +18,11 @@ "files": [ "dist/" ], - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", + "type": "module", "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" }, @@ -38,9 +31,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/base-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/base-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -58,10 +53,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/base-data-service/CHANGELOG.md b/packages/base-data-service/CHANGELOG.md index a0af23fee9f..b8a0b04175d 100644 --- a/packages/base-data-service/CHANGELOG.md +++ b/packages/base-data-service/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/base-data-service/jest.config.js b/packages/base-data-service/jest.config.cjs similarity index 90% rename from packages/base-data-service/jest.config.js rename to packages/base-data-service/jest.config.cjs index e45df2b6e59..abd4f404e7e 100644 --- a/packages/base-data-service/jest.config.js +++ b/packages/base-data-service/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/base-data-service/package.json b/packages/base-data-service/package.json index e3bc214a9b8..00f503751c9 100644 --- a/packages/base-data-service/package.json +++ b/packages/base-data-service/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/base-data-service", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/base-data-service", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -63,16 +58,16 @@ "@tanstack/query-core": "^5.62.16", "cockatiel": "^3.1.2", "fast-deep-equal": "^3.1.3", - "lodash": "^4.17.21" + "lodash-es": "^4.17.21" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", - "@types/lodash": "^4.14.191", + "@types/lodash-es": "^4.17.12", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/base-data-service/src/BaseDataService.ts b/packages/base-data-service/src/BaseDataService.ts index eed44817ce0..77ffd8981c7 100644 --- a/packages/base-data-service/src/BaseDataService.ts +++ b/packages/base-data-service/src/BaseDataService.ts @@ -31,7 +31,7 @@ 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, diff --git a/packages/bitcoin-regtest-up/CHANGELOG.md b/packages/bitcoin-regtest-up/CHANGELOG.md index fc7469d006b..e298d1f0af9 100644 --- a/packages/bitcoin-regtest-up/CHANGELOG.md +++ b/packages/bitcoin-regtest-up/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [1.0.0] diff --git a/packages/bitcoin-regtest-up/jest.config.js b/packages/bitcoin-regtest-up/jest.config.cjs similarity index 92% rename from packages/bitcoin-regtest-up/jest.config.js rename to packages/bitcoin-regtest-up/jest.config.cjs index 2bc1c7a6203..66a7d6269bd 100644 --- a/packages/bitcoin-regtest-up/jest.config.js +++ b/packages/bitcoin-regtest-up/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/bitcoin-regtest-up/package.json b/packages/bitcoin-regtest-up/package.json index eb587cef1df..d8e71962428 100644 --- a/packages/bitcoin-regtest-up/package.json +++ b/packages/bitcoin-regtest-up/package.json @@ -15,23 +15,16 @@ "type": "git", "url": "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/MetaMask/core.git" }, - "bin": "./dist/bin/bitcoin-regtest-up.mjs", + "bin": "./dist/bin/bitcoin-regtest-up.js", "files": [ "dist/" ], + "type": "module", "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" }, @@ -40,9 +33,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/bitcoin-regtest-up", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/bitcoin-regtest-up", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -60,10 +55,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/bridge-controller/CHANGELOG.md b/packages/bridge-controller/CHANGELOG.md index a545f7f986f..9e367ccdc42 100644 --- a/packages/bridge-controller/CHANGELOG.md +++ b/packages/bridge-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/assets-controllers` from `^111.2.0` to `^111.3.0` ([#10152](https://github.com/MetaMask/core/pull/10152)) diff --git a/packages/bridge-controller/jest.config.js b/packages/bridge-controller/jest.config.cjs similarity index 93% rename from packages/bridge-controller/jest.config.js rename to packages/bridge-controller/jest.config.cjs index f9e336cb4c5..7955f082f42 100644 --- a/packages/bridge-controller/jest.config.js +++ b/packages/bridge-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/bridge-controller/package.json b/packages/bridge-controller/package.json index 4781554c7d7..b5f117de985 100644 --- a/packages/bridge-controller/package.json +++ b/packages/bridge-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/bridge-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/bridge-controller", "generate-method-action-types": "tsx ../../packages/messenger/src/generate-action-types/cli.ts", @@ -84,13 +79,13 @@ "@metamask/auto-changelog": "^6.1.0", "@metamask/eth-json-rpc-provider": "^6.0.1", "@metamask/superstruct": "^3.4.1", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "jest-environment-jsdom": "^30.4.1", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/bridge-controller/src/selectors.test.ts b/packages/bridge-controller/src/selectors.test.ts index 7e1efb17d93..c88f97dd95f 100644 --- a/packages/bridge-controller/src/selectors.test.ts +++ b/packages/bridge-controller/src/selectors.test.ts @@ -8,7 +8,7 @@ import { parseCaipChainId, } 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.js'; import { diff --git a/packages/bridge-controller/src/selectors.ts b/packages/bridge-controller/src/selectors.ts index 7d71624adf8..9c20286b9c4 100644 --- a/packages/bridge-controller/src/selectors.ts +++ b/packages/bridge-controller/src/selectors.ts @@ -12,7 +12,7 @@ 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_, diff --git a/packages/bridge-controller/src/utils/quote-metadata/merge.test.ts b/packages/bridge-controller/src/utils/quote-metadata/merge.test.ts index 820f77c0067..5b665e58118 100644 --- a/packages/bridge-controller/src/utils/quote-metadata/merge.test.ts +++ b/packages/bridge-controller/src/utils/quote-metadata/merge.test.ts @@ -1,4 +1,4 @@ -import { merge } from 'lodash'; +import { merge } from 'lodash-es'; import { getMockBridgeQuotesErc20Erc20V2 } from '../../../tests/mock-quotes-erc20-erc20.js'; import { diff --git a/packages/bridge-controller/src/utils/quote-metadata/merge.ts b/packages/bridge-controller/src/utils/quote-metadata/merge.ts index 8ba6bddf4b3..5d55db11824 100644 --- a/packages/bridge-controller/src/utils/quote-metadata/merge.ts +++ b/packages/bridge-controller/src/utils/quote-metadata/merge.ts @@ -1,4 +1,4 @@ -import { merge } from 'lodash'; +import { merge } from 'lodash-es'; import type { DeepPartial } from '../../types.js'; import type { QuoteResponse } from '../../validators/quote-response.js'; diff --git a/packages/bridge-controller/src/utils/quote-metadata/to-quote-metadata-v1.ts b/packages/bridge-controller/src/utils/quote-metadata/to-quote-metadata-v1.ts index 64d78455c58..dd4b2e20ca1 100644 --- a/packages/bridge-controller/src/utils/quote-metadata/to-quote-metadata-v1.ts +++ b/packages/bridge-controller/src/utils/quote-metadata/to-quote-metadata-v1.ts @@ -1,4 +1,4 @@ -import { merge } from 'lodash'; +import { merge } from 'lodash-es'; import type { DeepPartial } from '../../types.js'; import type { AmountsAndAsset } from '../../validators/amount-and-asset.js'; diff --git a/packages/bridge-controller/tests/mock-quotes-erc20-erc20.ts b/packages/bridge-controller/tests/mock-quotes-erc20-erc20.ts index eb64b1806a6..247f87ac8a9 100644 --- a/packages/bridge-controller/tests/mock-quotes-erc20-erc20.ts +++ b/packages/bridge-controller/tests/mock-quotes-erc20-erc20.ts @@ -1,4 +1,4 @@ -import { merge } from 'lodash'; +import { merge } from 'lodash-es'; import { toQuoteResponseV2 } from '../src/index.js'; import type { DeepPartial } from '../src/types.js'; diff --git a/packages/bridge-controller/tests/mock-quotes-erc20-native.ts b/packages/bridge-controller/tests/mock-quotes-erc20-native.ts index 05f6c011530..c60f18cd50f 100644 --- a/packages/bridge-controller/tests/mock-quotes-erc20-native.ts +++ b/packages/bridge-controller/tests/mock-quotes-erc20-native.ts @@ -1,4 +1,4 @@ -import { merge } from 'lodash'; +import { merge } from 'lodash-es'; import { toQuoteResponseV2 } from '../src/coercers/quote-response-v1-to-v2.js'; import type { DeepPartial } from '../src/types.js'; 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 6ef89d6770e..a162d6ed3fa 100644 --- a/packages/bridge-controller/tests/mock-quotes-native-erc20-eth.ts +++ b/packages/bridge-controller/tests/mock-quotes-native-erc20-eth.ts @@ -1,4 +1,4 @@ -import { merge } from 'lodash'; +import { merge } from 'lodash-es'; import { toQuoteResponseV2 } from '../src/coercers/quote-response-v1-to-v2.js'; import type { DeepPartial } from '../src/types.js'; diff --git a/packages/bridge-controller/tests/mock-quotes-native-erc20.ts b/packages/bridge-controller/tests/mock-quotes-native-erc20.ts index 52214e3c433..0a3db27ac23 100644 --- a/packages/bridge-controller/tests/mock-quotes-native-erc20.ts +++ b/packages/bridge-controller/tests/mock-quotes-native-erc20.ts @@ -1,5 +1,5 @@ import { KnownCaipNamespace } from '@metamask/utils'; -import { merge } from 'lodash'; +import { merge } from 'lodash-es'; import { toQuoteResponseV2 } from '../src/coercers/quote-response-v1-to-v2.js'; import type { DeepPartial } from '../src/types.js'; diff --git a/packages/bridge-controller/tests/mock-quotes-sol-erc20.ts b/packages/bridge-controller/tests/mock-quotes-sol-erc20.ts index 92e90049ea9..0a98de74b06 100644 --- a/packages/bridge-controller/tests/mock-quotes-sol-erc20.ts +++ b/packages/bridge-controller/tests/mock-quotes-sol-erc20.ts @@ -1,4 +1,4 @@ -import { merge } from 'lodash'; +import { merge } from 'lodash-es'; import { toQuoteResponseV2 } from '../src/coercers/quote-response-v1-to-v2.js'; import type { DeepPartial } from '../src/types.js'; diff --git a/packages/bridge-controller/tests/mock-sse.ts b/packages/bridge-controller/tests/mock-sse.ts index eaf485e5d44..d7bc5a31e9d 100644 --- a/packages/bridge-controller/tests/mock-sse.ts +++ b/packages/bridge-controller/tests/mock-sse.ts @@ -1,4 +1,3 @@ -// eslint-disable-next-line @typescript-eslint/no-shadow import { ReadableStream } from 'node:stream/web'; import { flushPromises } from '../../../tests/helpers.js'; diff --git a/packages/bridge-status-controller/CHANGELOG.md b/packages/bridge-status-controller/CHANGELOG.md index 0e199ffcadb..0094eb2c90b 100644 --- a/packages/bridge-status-controller/CHANGELOG.md +++ b/packages/bridge-status-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [75.5.1] diff --git a/packages/bridge-status-controller/jest.config.js b/packages/bridge-status-controller/jest.config.cjs similarity index 94% rename from packages/bridge-status-controller/jest.config.js rename to packages/bridge-status-controller/jest.config.cjs index 86e3fc3cfeb..b640a219f3e 100644 --- a/packages/bridge-status-controller/jest.config.js +++ b/packages/bridge-status-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/bridge-status-controller/package.json b/packages/bridge-status-controller/package.json index 96efede7c43..c96db51adec 100644 --- a/packages/bridge-status-controller/package.json +++ b/packages/bridge-status-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/bridge-status-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/bridge-status-controller", "generate-method-action-types": "tsx ../../packages/messenger/src/generate-action-types/cli.ts", @@ -73,13 +68,13 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "jest-environment-jsdom": "^30.4.1", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/bridge-status-controller/src/bridge-status-controller.ts b/packages/bridge-status-controller/src/bridge-status-controller.ts index ab7f4e27328..24da0263b8f 100644 --- a/packages/bridge-status-controller/src/bridge-status-controller.ts +++ b/packages/bridge-status-controller/src/bridge-status-controller.ts @@ -36,7 +36,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/build-utils/CHANGELOG.md b/packages/build-utils/CHANGELOG.md index d997d587aeb..d35048f3b7e 100644 --- a/packages/build-utils/CHANGELOG.md +++ b/packages/build-utils/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.8.1` to `^11.12.0` ([#7511](https://github.com/MetaMask/core/pull/7511), [#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/build-utils/jest.config.cjs b/packages/build-utils/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/build-utils/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/build-utils/jest.config.js b/packages/build-utils/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/build-utils/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/build-utils/package.json b/packages/build-utils/package.json index fea86fc72b4..48435048ae5 100644 --- a/packages/build-utils/package.json +++ b/packages/build-utils/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/build-utils", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/build-utils", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -58,10 +53,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/chain-agnostic-permission/CHANGELOG.md b/packages/chain-agnostic-permission/CHANGELOG.md index 5d125c1ce34..3658ab4df82 100644 --- a/packages/chain-agnostic-permission/CHANGELOG.md +++ b/packages/chain-agnostic-permission/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/chain-agnostic-permission/jest.config.js b/packages/chain-agnostic-permission/jest.config.cjs similarity index 90% rename from packages/chain-agnostic-permission/jest.config.js rename to packages/chain-agnostic-permission/jest.config.cjs index 3ecd657de92..69a3b5bff7f 100644 --- a/packages/chain-agnostic-permission/jest.config.js +++ b/packages/chain-agnostic-permission/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/chain-agnostic-permission/package.json b/packages/chain-agnostic-permission/package.json index abf7877a35d..7f71012bf06 100644 --- a/packages/chain-agnostic-permission/package.json +++ b/packages/chain-agnostic-permission/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/chain-agnostic-permission", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/chain-agnostic-permission", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -58,15 +53,15 @@ "@metamask/permission-controller": "^13.1.1", "@metamask/rpc-errors": "^7.0.2", "@metamask/utils": "^11.12.0", - "lodash": "^4.17.21" + "lodash-es": "^4.17.21" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/keyring-internal-api": "^12.0.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/chain-agnostic-permission/src/caip25Permission.test.ts b/packages/chain-agnostic-permission/src/caip25Permission.test.ts index b8fb923934f..f35a35b981a 100644 --- a/packages/chain-agnostic-permission/src/caip25Permission.test.ts +++ b/packages/chain-agnostic-permission/src/caip25Permission.test.ts @@ -8,7 +8,7 @@ import type { PermissionSpecificationConstraint, CaveatSpecificationConstraint, } from '@metamask/permission-controller'; -import { pick } from 'lodash'; +import { pick } from 'lodash-es'; import type { Caip25CaveatValue } from './caip25Permission.js'; import { diff --git a/packages/chain-agnostic-permission/src/caip25Permission.ts b/packages/chain-agnostic-permission/src/caip25Permission.ts index 1b3959e7f2b..3758969b4f7 100644 --- a/packages/chain-agnostic-permission/src/caip25Permission.ts +++ b/packages/chain-agnostic-permission/src/caip25Permission.ts @@ -23,7 +23,7 @@ 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.js'; import { diff --git a/packages/chain-agnostic-permission/src/scope/constants.ts b/packages/chain-agnostic-permission/src/scope/constants.ts index cc6f6a5977b..7aa554b9e35 100644 --- a/packages/chain-agnostic-permission/src/scope/constants.ts +++ b/packages/chain-agnostic-permission/src/scope/constants.ts @@ -1,4 +1,4 @@ -import MetaMaskOpenRPCDocument from '@metamask/api-specs'; +import { MetaMaskOpenRPCDocument } from '@metamask/api-specs'; import type { NonWalletKnownCaipNamespace } from './types.js'; diff --git a/packages/chain-agnostic-permission/src/scope/transform.ts b/packages/chain-agnostic-permission/src/scope/transform.ts index cb364d513b3..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, diff --git a/packages/chomp-api-service/CHANGELOG.md b/packages/chomp-api-service/CHANGELOG.md index 704aad34436..c7adf413bd3 100644 --- a/packages/chomp-api-service/CHANGELOG.md +++ b/packages/chomp-api-service/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [4.0.2] diff --git a/packages/chomp-api-service/jest.config.cjs b/packages/chomp-api-service/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/chomp-api-service/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/chomp-api-service/jest.config.js b/packages/chomp-api-service/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/chomp-api-service/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/chomp-api-service/package.json b/packages/chomp-api-service/package.json index b55d88893ea..169bad5501d 100644 --- a/packages/chomp-api-service/package.json +++ b/packages/chomp-api-service/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/chomp-api-service", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/chomp-api-service", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -62,11 +57,11 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/claims-controller/CHANGELOG.md b/packages/claims-controller/CHANGELOG.md index 3aab087eaf6..92e97400b99 100644 --- a/packages/claims-controller/CHANGELOG.md +++ b/packages/claims-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [0.6.2] diff --git a/packages/claims-controller/jest.config.cjs b/packages/claims-controller/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/claims-controller/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/claims-controller/jest.config.js b/packages/claims-controller/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/claims-controller/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/claims-controller/package.json b/packages/claims-controller/package.json index 428b78d23f2..3f088a979b3 100644 --- a/packages/claims-controller/package.json +++ b/packages/claims-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/claims-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/claims-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -67,10 +62,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/client-controller/CHANGELOG.md b/packages/client-controller/CHANGELOG.md index 53290fe64b6..da1ce67aa06 100644 --- a/packages/client-controller/CHANGELOG.md +++ b/packages/client-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/messenger` from `^1.0.0` to `^2.0.0` ([#8364](https://github.com/MetaMask/core/pull/8364), [#8373](https://github.com/MetaMask/core/pull/8373), [#8632](https://github.com/MetaMask/core/pull/8632), [#9392](https://github.com/MetaMask/core/pull/9392)) - Bump `@metamask/base-controller` from `^9.0.1` to `^9.1.0` ([#8457](https://github.com/MetaMask/core/pull/8457)) diff --git a/packages/client-controller/jest.config.js b/packages/client-controller/jest.config.cjs similarity index 88% rename from packages/client-controller/jest.config.js rename to packages/client-controller/jest.config.cjs index 9efbc1e7d1f..c1fd6a90ef2 100644 --- a/packages/client-controller/jest.config.js +++ b/packages/client-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/client-controller/package.json b/packages/client-controller/package.json index f176f128595..02d1242d95b 100644 --- a/packages/client-controller/package.json +++ b/packages/client-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/client-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/client-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -60,11 +55,11 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "jest-environment-jsdom": "^30.4.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/client-utils/CHANGELOG.md b/packages/client-utils/CHANGELOG.md index b2cad4ade44..e0b0c280a8f 100644 --- a/packages/client-utils/CHANGELOG.md +++ b/packages/client-utils/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/core-backend` from `^9.0.0` to `^9.1.1` ([#10138](https://github.com/MetaMask/core/pull/10138), [#10139](https://github.com/MetaMask/core/pull/10139)) - Bump `@metamask/transaction-controller` from `^69.6.0` to `^69.8.1` ([#9969](https://github.com/MetaMask/core/pull/9969), [#10080](https://github.com/MetaMask/core/pull/10080), [#10046](https://github.com/MetaMask/core/pull/10046), [#10124](https://github.com/MetaMask/core/pull/10124)) diff --git a/packages/client-utils/jest.config.js b/packages/client-utils/jest.config.cjs similarity index 92% rename from packages/client-utils/jest.config.js rename to packages/client-utils/jest.config.cjs index d6ba5b87a98..b058defa030 100644 --- a/packages/client-utils/jest.config.js +++ b/packages/client-utils/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/client-utils/package.json b/packages/client-utils/package.json index 25c28d8a877..89834eb57dc 100644 --- a/packages/client-utils/package.json +++ b/packages/client-utils/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/client-utils", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/client-utils", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -67,10 +62,10 @@ "devDependencies": { "@ethersproject/abi": "^5.7.0", "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/compliance-controller/CHANGELOG.md b/packages/compliance-controller/CHANGELOG.md index 4a45092b5b0..3eb9698af14 100644 --- a/packages/compliance-controller/CHANGELOG.md +++ b/packages/compliance-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/controller-utils` from `^12.1.0` to `^12.3.0` ([#9058](https://github.com/MetaMask/core/pull/9058), [#9083](https://github.com/MetaMask/core/pull/9083), [#9218](https://github.com/MetaMask/core/pull/9218)) diff --git a/packages/compliance-controller/jest.config.cjs b/packages/compliance-controller/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/compliance-controller/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/compliance-controller/jest.config.js b/packages/compliance-controller/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/compliance-controller/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/compliance-controller/package.json b/packages/compliance-controller/package.json index 88dd4e6c72e..6f9b9837aae 100644 --- a/packages/compliance-controller/package.json +++ b/packages/compliance-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/compliance-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/compliance-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -64,11 +59,11 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/composable-controller/CHANGELOG.md b/packages/composable-controller/CHANGELOG.md index ee9c5707bf7..ca240079c62 100644 --- a/packages/composable-controller/CHANGELOG.md +++ b/packages/composable-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/json-rpc-engine` from `^10.2.4` to `^10.3.0` ([#8661](https://github.com/MetaMask/core/pull/8661)) - Bump `@metamask/messenger` from `^1.0.0` to `^2.0.0` ([#8364](https://github.com/MetaMask/core/pull/8364), [#8373](https://github.com/MetaMask/core/pull/8373), [#8632](https://github.com/MetaMask/core/pull/8632), [#9392](https://github.com/MetaMask/core/pull/9392)) diff --git a/packages/composable-controller/jest.config.cjs b/packages/composable-controller/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/composable-controller/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/composable-controller/jest.config.js b/packages/composable-controller/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/composable-controller/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/composable-controller/package.json b/packages/composable-controller/package.json index 3ebeef552e1..597a738ab2b 100644 --- a/packages/composable-controller/package.json +++ b/packages/composable-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/composable-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/composable-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -59,11 +54,11 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/json-rpc-engine": "^10.5.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "immer": "^9.0.6", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/config-registry-controller/CHANGELOG.md b/packages/config-registry-controller/CHANGELOG.md index 1c8760e3402..65a35e33558 100644 --- a/packages/config-registry-controller/CHANGELOG.md +++ b/packages/config-registry-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/remote-feature-flag-controller` from `^6.0.0` to `^6.1.1` ([#9980](https://github.com/MetaMask/core/pull/9980), [#10129](https://github.com/MetaMask/core/pull/10129)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/config-registry-controller/jest.config.cjs b/packages/config-registry-controller/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/config-registry-controller/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/config-registry-controller/jest.config.js b/packages/config-registry-controller/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/config-registry-controller/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/config-registry-controller/package.json b/packages/config-registry-controller/package.json index 1dea8f00436..f8e5bfb1e8e 100644 --- a/packages/config-registry-controller/package.json +++ b/packages/config-registry-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/config-registry-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/config-registry-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -69,11 +64,11 @@ "devDependencies": { "@lavamoat/allow-scripts": "^3.0.4", "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/connectivity-controller/CHANGELOG.md b/packages/connectivity-controller/CHANGELOG.md index 95ec3cdfda9..54fcf41891c 100644 --- a/packages/connectivity-controller/CHANGELOG.md +++ b/packages/connectivity-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [0.3.0] diff --git a/packages/connectivity-controller/jest.config.cjs b/packages/connectivity-controller/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/connectivity-controller/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/connectivity-controller/jest.config.js b/packages/connectivity-controller/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/connectivity-controller/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/connectivity-controller/package.json b/packages/connectivity-controller/package.json index 392d5ff49b1..1e74a62f506 100644 --- a/packages/connectivity-controller/package.json +++ b/packages/connectivity-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/connectivity-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/connectivity-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -61,10 +56,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/controller-utils/CHANGELOG.md b/packages/controller-utils/CHANGELOG.md index 3930f4cdcfd..bebb404663f 100644 --- a/packages/controller-utils/CHANGELOG.md +++ b/packages/controller-utils/CHANGELOG.md @@ -13,6 +13,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Replace `@spruceid/siwe-parser` with `@signinwithethereum/siwe-parser` ^4.2.1 ([#10049](https://github.com/MetaMask/core/pull/10049)) - The old package is no longer maintained. The Ethereum Identity Foundation now maintains the successor under the `@signinwithethereum` scope. diff --git a/packages/controller-utils/jest.config.js b/packages/controller-utils/jest.config.cjs similarity index 84% rename from packages/controller-utils/jest.config.js rename to packages/controller-utils/jest.config.cjs index f7ca96dbc15..52629c22795 100644 --- a/packages/controller-utils/jest.config.js +++ b/packages/controller-utils/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); @@ -25,5 +25,5 @@ module.exports = merge(baseConfig, { }, // We rely on `window` to make requests - testEnvironment: '/jest.environment.js', + testEnvironment: '/jest.environment.cjs', }); diff --git a/packages/controller-utils/jest.environment.js b/packages/controller-utils/jest.environment.cjs similarity index 100% rename from packages/controller-utils/jest.environment.js rename to packages/controller-utils/jest.environment.cjs diff --git a/packages/controller-utils/package.json b/packages/controller-utils/package.json index 0bacf9a8bfa..314afd5d057 100644 --- a/packages/controller-utils/package.json +++ b/packages/controller-utils/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/controller-utils", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/controller-utils", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -64,19 +59,19 @@ "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", "@metamask/eth-json-rpc-provider": "^6.0.1", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", - "@types/lodash": "^4.14.191", + "@types/lodash-es": "^4.17.12", "deepmerge": "^4.2.2", "jest": "^30.4.2", "jest-environment-jsdom": "^30.4.1", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/controller-utils/src/util.ts b/packages/controller-utils/src/util.ts index 71a0f8c5430..e2e4e5cac3d 100644 --- a/packages/controller-utils/src/util.ts +++ b/packages/controller-utils/src/util.ts @@ -13,7 +13,7 @@ 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.js'; diff --git a/packages/core-backend/CHANGELOG.md b/packages/core-backend/CHANGELOG.md index cc97165dbcd..c7053478dab 100644 --- a/packages/core-backend/CHANGELOG.md +++ b/packages/core-backend/CHANGELOG.md @@ -9,8 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) -- **BREAKING:** Bump minimum Node.js version to 22 ([#9168](https://github.com/MetaMask/core/pull/9168)) ## [9.1.1] diff --git a/packages/core-backend/jest.config.js b/packages/core-backend/jest.config.cjs similarity index 91% rename from packages/core-backend/jest.config.js rename to packages/core-backend/jest.config.cjs index 638112ed628..5e65933d538 100644 --- a/packages/core-backend/jest.config.js +++ b/packages/core-backend/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/core-backend/package.json b/packages/core-backend/package.json index 80f4a371d33..09d8128b175 100644 --- a/packages/core-backend/package.json +++ b/packages/core-backend/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/core-backend", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/core-backend", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -69,11 +64,11 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "jest-environment-jsdom": "^30.4.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/cryptography/jest.config.cjs b/packages/cryptography/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/cryptography/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/cryptography/jest.config.js b/packages/cryptography/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/cryptography/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/cryptography/package.json b/packages/cryptography/package.json index ce76d7e0ef1..6876aeb6167 100644 --- a/packages/cryptography/package.json +++ b/packages/cryptography/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/cryptography", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/cryptography", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -56,10 +51,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/delegation-controller/CHANGELOG.md b/packages/delegation-controller/CHANGELOG.md index 8f0ca6ddf3d..18e2128702a 100644 --- a/packages/delegation-controller/CHANGELOG.md +++ b/packages/delegation-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/keyring-controller` from `^27.0.0` to `^27.1.1` ([#9129](https://github.com/MetaMask/core/pull/9129), [#9791](https://github.com/MetaMask/core/pull/9791)) diff --git a/packages/delegation-controller/jest.config.cjs b/packages/delegation-controller/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/delegation-controller/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/delegation-controller/jest.config.js b/packages/delegation-controller/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/delegation-controller/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/delegation-controller/package.json b/packages/delegation-controller/package.json index 73bcafb210a..9da5a435e44 100644 --- a/packages/delegation-controller/package.json +++ b/packages/delegation-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/delegation-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/delegation-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -62,10 +57,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/earn-controller/CHANGELOG.md b/packages/earn-controller/CHANGELOG.md index 0792e28e883..671fb1708e6 100644 --- a/packages/earn-controller/CHANGELOG.md +++ b/packages/earn-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [12.2.7] diff --git a/packages/earn-controller/jest.config.js b/packages/earn-controller/jest.config.cjs similarity index 90% rename from packages/earn-controller/jest.config.js rename to packages/earn-controller/jest.config.cjs index 66bf6e01f38..8c056676b43 100644 --- a/packages/earn-controller/jest.config.js +++ b/packages/earn-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/earn-controller/package.json b/packages/earn-controller/package.json index c4757b8c75a..2d128d9eb2c 100644 --- a/packages/earn-controller/package.json +++ b/packages/earn-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/earn-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/earn-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -69,10 +64,10 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/transaction-controller": "^69.8.1", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/eip-5792-middleware/CHANGELOG.md b/packages/eip-5792-middleware/CHANGELOG.md index 30a743f6075..2a49215d48d 100644 --- a/packages/eip-5792-middleware/CHANGELOG.md +++ b/packages/eip-5792-middleware/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/transaction-controller` from `^69.0.0` to `^69.8.1` ([#9568](https://github.com/MetaMask/core/pull/9568), [#10080](https://github.com/MetaMask/core/pull/10080), [#9589](https://github.com/MetaMask/core/pull/9589), [#9593](https://github.com/MetaMask/core/pull/9593), [#9693](https://github.com/MetaMask/core/pull/9693), [#9735](https://github.com/MetaMask/core/pull/9735), [#9780](https://github.com/MetaMask/core/pull/9780), [#9798](https://github.com/MetaMask/core/pull/9798), [#9823](https://github.com/MetaMask/core/pull/9823), [#9960](https://github.com/MetaMask/core/pull/9960), [#9969](https://github.com/MetaMask/core/pull/9969), [#10046](https://github.com/MetaMask/core/pull/10046), [#10124](https://github.com/MetaMask/core/pull/10124)) - Bump `@metamask/superstruct` from `^3.1.0` to `^3.4.1` ([#9754](https://github.com/MetaMask/core/pull/9754)) diff --git a/packages/eip-5792-middleware/jest.config.js b/packages/eip-5792-middleware/jest.config.cjs similarity index 90% rename from packages/eip-5792-middleware/jest.config.js rename to packages/eip-5792-middleware/jest.config.cjs index 729b145b19c..d1992a3743b 100644 --- a/packages/eip-5792-middleware/jest.config.js +++ b/packages/eip-5792-middleware/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/eip-5792-middleware/package.json b/packages/eip-5792-middleware/package.json index d03e9b0f586..13235b25d36 100644 --- a/packages/eip-5792-middleware/package.json +++ b/packages/eip-5792-middleware/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/eip-5792-middleware", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/eip-5792-middleware", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -58,18 +53,18 @@ "@metamask/superstruct": "^3.4.1", "@metamask/transaction-controller": "^69.8.1", "@metamask/utils": "^11.12.0", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "uuid": "^8.3.2" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/keyring-controller": "^27.1.1", "@metamask/rpc-errors": "^7.0.2", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "klona": "^2.0.6", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/eip-5792-middleware/src/hooks/processSendCalls.ts b/packages/eip-5792-middleware/src/hooks/processSendCalls.ts index 9e6d59720f5..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 { diff --git a/packages/eip-7702-internal-rpc-middleware/CHANGELOG.md b/packages/eip-7702-internal-rpc-middleware/CHANGELOG.md index df37d42b496..dd8f085912f 100644 --- a/packages/eip-7702-internal-rpc-middleware/CHANGELOG.md +++ b/packages/eip-7702-internal-rpc-middleware/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/controller-utils` from `^12.0.0` to `^12.3.0` ([#8774](https://github.com/MetaMask/core/pull/8774), [#9058](https://github.com/MetaMask/core/pull/9058), [#9083](https://github.com/MetaMask/core/pull/9083), [#9218](https://github.com/MetaMask/core/pull/9218)) diff --git a/packages/eip-7702-internal-rpc-middleware/jest.config.cjs b/packages/eip-7702-internal-rpc-middleware/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/eip-7702-internal-rpc-middleware/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/eip-7702-internal-rpc-middleware/jest.config.js b/packages/eip-7702-internal-rpc-middleware/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/eip-7702-internal-rpc-middleware/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/eip-7702-internal-rpc-middleware/package.json b/packages/eip-7702-internal-rpc-middleware/package.json index a52f68a9acb..2aecde69cc8 100644 --- a/packages/eip-7702-internal-rpc-middleware/package.json +++ b/packages/eip-7702-internal-rpc-middleware/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/eip-7702-internal-rpc-middleware", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/eip-7702-internal-rpc-middleware", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -60,10 +55,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/eip1193-permission-middleware/CHANGELOG.md b/packages/eip1193-permission-middleware/CHANGELOG.md index 96283a676df..39d67c02ba8 100644 --- a/packages/eip1193-permission-middleware/CHANGELOG.md +++ b/packages/eip1193-permission-middleware/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/controller-utils` from `^12.0.0` to `^12.3.0` ([#8774](https://github.com/MetaMask/core/pull/8774), [#9058](https://github.com/MetaMask/core/pull/9058), [#9083](https://github.com/MetaMask/core/pull/9083), [#9218](https://github.com/MetaMask/core/pull/9218)) diff --git a/packages/eip1193-permission-middleware/jest.config.cjs b/packages/eip1193-permission-middleware/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/eip1193-permission-middleware/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/eip1193-permission-middleware/jest.config.js b/packages/eip1193-permission-middleware/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/eip1193-permission-middleware/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/eip1193-permission-middleware/package.json b/packages/eip1193-permission-middleware/package.json index 67736f6013b..16ad4330aa1 100644 --- a/packages/eip1193-permission-middleware/package.json +++ b/packages/eip1193-permission-middleware/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/eip1193-permission-middleware", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/eip1193-permission-middleware", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -58,15 +53,15 @@ "@metamask/json-rpc-engine": "^10.5.0", "@metamask/permission-controller": "^13.1.1", "@metamask/utils": "^11.12.0", - "lodash": "^4.17.21" + "lodash-es": "^4.17.21" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/rpc-errors": "^7.0.2", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/eip1193-permission-middleware/src/wallet-requestPermissions.ts b/packages/eip1193-permission-middleware/src/wallet-requestPermissions.ts index d49fee4f791..4dc6e03f71a 100644 --- a/packages/eip1193-permission-middleware/src/wallet-requestPermissions.ts +++ b/packages/eip1193-permission-middleware/src/wallet-requestPermissions.ts @@ -22,7 +22,7 @@ import type { JsonRpcRequest, PendingJsonRpcResponse, } from '@metamask/utils'; -import { pick } from 'lodash'; +import { pick } from 'lodash-es'; import { CaveatTypes, EndowmentTypes, RestrictedMethods } from './types.js'; diff --git a/packages/eth-block-tracker/CHANGELOG.md b/packages/eth-block-tracker/CHANGELOG.md index 905d04bdc75..894977900fa 100644 --- a/packages/eth-block-tracker/CHANGELOG.md +++ b/packages/eth-block-tracker/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/json-rpc-engine` from `^10.2.4` to `^10.3.0` ([#8661](https://github.com/MetaMask/core/pull/8661)) diff --git a/packages/eth-block-tracker/jest.config.js b/packages/eth-block-tracker/jest.config.cjs similarity index 90% rename from packages/eth-block-tracker/jest.config.js rename to packages/eth-block-tracker/jest.config.cjs index 01a358a1cef..ed2bf4de9b6 100644 --- a/packages/eth-block-tracker/jest.config.js +++ b/packages/eth-block-tracker/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/eth-block-tracker/package.json b/packages/eth-block-tracker/package.json index 162f5bf14d2..5424865af34 100644 --- a/packages/eth-block-tracker/package.json +++ b/packages/eth-block-tracker/package.json @@ -19,20 +19,12 @@ "dist", "dist/" ], + "type": "module", "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" }, @@ -41,9 +33,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/eth-block-tracker", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/eth-block-tracker", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -56,18 +50,18 @@ }, "dependencies": { "@metamask/eth-json-rpc-provider": "^6.0.1", - "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/safe-event-emitter": "^3.1.3", "@metamask/utils": "^11.12.0", "json-rpc-random-id": "^1.0.1" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/json-rpc-engine": "^10.5.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "@types/json-rpc-random-id": "^1.0.1", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/eth-json-rpc-middleware/CHANGELOG.md b/packages/eth-json-rpc-middleware/CHANGELOG.md index a35f826fe4c..9465cfcd126 100644 --- a/packages/eth-json-rpc-middleware/CHANGELOG.md +++ b/packages/eth-json-rpc-middleware/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/eth-json-rpc-middleware/jest.config.js b/packages/eth-json-rpc-middleware/jest.config.cjs similarity index 92% rename from packages/eth-json-rpc-middleware/jest.config.js rename to packages/eth-json-rpc-middleware/jest.config.cjs index fecbe76e3b3..d251c422055 100644 --- a/packages/eth-json-rpc-middleware/jest.config.js +++ b/packages/eth-json-rpc-middleware/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/eth-json-rpc-middleware/package.json b/packages/eth-json-rpc-middleware/package.json index 50cdbbe0dfc..83e06f3df6f 100644 --- a/packages/eth-json-rpc-middleware/package.json +++ b/packages/eth-json-rpc-middleware/package.json @@ -18,20 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -40,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "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", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -67,12 +61,13 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/deep-freeze-strict": "^1.1.0", "@types/jest": "^30.0.0", "deep-freeze-strict": "^1.1.1", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", + "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", "typescript": "~5.3.3" diff --git a/packages/eth-json-rpc-provider/CHANGELOG.md b/packages/eth-json-rpc-provider/CHANGELOG.md index c2a0c186952..f26ef93ec2f 100644 --- a/packages/eth-json-rpc-provider/CHANGELOG.md +++ b/packages/eth-json-rpc-provider/CHANGELOG.md @@ -14,6 +14,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/json-rpc-engine` from `^10.2.4` to `^10.5.0` ([#8661](https://github.com/MetaMask/core/pull/8661), [#8746](https://github.com/MetaMask/core/pull/8746), [#8753](https://github.com/MetaMask/core/pull/8753)) diff --git a/packages/eth-json-rpc-provider/jest.config.cjs b/packages/eth-json-rpc-provider/jest.config.cjs new file mode 100644 index 00000000000..112702bd4c8 --- /dev/null +++ b/packages/eth-json-rpc-provider/jest.config.cjs @@ -0,0 +1,32 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An array of regexp pattern strings used to skip coverage collection + coveragePathIgnorePatterns: [ + // This file is tested indirectly in other packages' test suites. + '.*/mock-internal-provider\\.ts', + ], + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/eth-json-rpc-provider/package.json b/packages/eth-json-rpc-provider/package.json index 57cf14f0748..e1f4c4e82ec 100644 --- a/packages/eth-json-rpc-provider/package.json +++ b/packages/eth-json-rpc-provider/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/eth-json-rpc-provider", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/eth-json-rpc-provider", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -57,7 +52,7 @@ "@metamask/rpc-errors": "^7.0.2", "@metamask/utils": "^11.12.0", "@types/lodash": "^4.14.191", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "nanoid": "^3.3.8" }, "devDependencies": { @@ -65,11 +60,11 @@ "@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": "^30.0.0", "deepmerge": "^4.2.2", "ethers": "^6.12.0", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/eth-json-rpc-provider/src/mock-internal-provider.ts b/packages/eth-json-rpc-provider/src/mock-internal-provider.ts index f798cc7db16..f8127df02e9 100644 --- a/packages/eth-json-rpc-provider/src/mock-internal-provider.ts +++ b/packages/eth-json-rpc-provider/src/mock-internal-provider.ts @@ -13,7 +13,7 @@ import type { JsonRpcResponse, JsonRpcVersion2, } from '@metamask/utils'; -import { isEqual } from 'lodash'; +import { isEqual } from 'lodash-es'; import { InternalProvider } from './internal-provider.js'; diff --git a/packages/foundryup/CHANGELOG.md b/packages/foundryup/CHANGELOG.md index 2616264724b..b3bf548c6a2 100644 --- a/packages/foundryup/CHANGELOG.md +++ b/packages/foundryup/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [1.0.1] diff --git a/packages/foundryup/jest.config.js b/packages/foundryup/jest.config.cjs similarity index 90% rename from packages/foundryup/jest.config.js rename to packages/foundryup/jest.config.cjs index 3e2689f3405..f2d3743752a 100644 --- a/packages/foundryup/jest.config.js +++ b/packages/foundryup/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/foundryup/package.json b/packages/foundryup/package.json index a465a17ad2f..388eef6cff5 100644 --- a/packages/foundryup/package.json +++ b/packages/foundryup/package.json @@ -16,14 +16,13 @@ "url": "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/MetaMask/core.git" }, "bin": { - "mm-foundryup": "./dist/cli.mjs" + "mm-foundryup": "./dist/cli.js" }, "files": [ "dist/" ], + "type": "module", "sideEffects": false, - "main": "./dist/index.cjs", - "types": "./dist/index.d.cts", "exports": { "./package.json": "./package.json" }, @@ -33,9 +32,11 @@ }, "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/foundryup", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/foundryup", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -55,7 +56,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "@types/unzipper": "^0.10.10", "@types/yargs": "^17.0.32", @@ -63,6 +63,7 @@ "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/gas-fee-controller/CHANGELOG.md b/packages/gas-fee-controller/CHANGELOG.md index 89e3187cbfa..7e777e1658c 100644 --- a/packages/gas-fee-controller/CHANGELOG.md +++ b/packages/gas-fee-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/gas-fee-controller/jest.config.js b/packages/gas-fee-controller/jest.config.cjs similarity index 90% rename from packages/gas-fee-controller/jest.config.js rename to packages/gas-fee-controller/jest.config.cjs index 9085847b1a8..95d665f34c0 100644 --- a/packages/gas-fee-controller/jest.config.js +++ b/packages/gas-fee-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/gas-fee-controller/package.json b/packages/gas-fee-controller/package.json index 8aa6316fe40..035ac2538dc 100644 --- a/packages/gas-fee-controller/package.json +++ b/packages/gas-fee-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/gas-fee-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/gas-fee-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -71,13 +66,13 @@ "devDependencies": { "@babel/runtime": "^7.23.9", "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "@types/jest-when": "^2.7.3", "deepmerge": "^4.2.2", "jest": "^30.4.2", "jest-when": "^3.7.0", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/gator-permissions-controller/CHANGELOG.md b/packages/gator-permissions-controller/CHANGELOG.md index b5a285151a2..a8ec5d7cff6 100644 --- a/packages/gator-permissions-controller/CHANGELOG.md +++ b/packages/gator-permissions-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/transaction-controller` from `^69.6.1` to `^69.8.1` ([#10046](https://github.com/MetaMask/core/pull/10046), [#10080](https://github.com/MetaMask/core/pull/10080), [#10124](https://github.com/MetaMask/core/pull/10124)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/gator-permissions-controller/jest.config.js b/packages/gator-permissions-controller/jest.config.cjs similarity index 90% rename from packages/gator-permissions-controller/jest.config.js rename to packages/gator-permissions-controller/jest.config.cjs index 37add1f8801..058dd12c896 100644 --- a/packages/gator-permissions-controller/jest.config.js +++ b/packages/gator-permissions-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/gator-permissions-controller/package.json b/packages/gator-permissions-controller/package.json index 09ac3f2525e..7bcd9eea83b 100644 --- a/packages/gator-permissions-controller/package.json +++ b/packages/gator-permissions-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/gator-permissions-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/gator-permissions-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -72,10 +67,10 @@ "@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": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/geolocation-controller/CHANGELOG.md b/packages/geolocation-controller/CHANGELOG.md index 391dad333cf..d608fb06ecd 100644 --- a/packages/geolocation-controller/CHANGELOG.md +++ b/packages/geolocation-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [1.0.0] diff --git a/packages/geolocation-controller/jest.config.cjs b/packages/geolocation-controller/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/geolocation-controller/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/geolocation-controller/jest.config.js b/packages/geolocation-controller/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/geolocation-controller/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/geolocation-controller/package.json b/packages/geolocation-controller/package.json index e5e5b13b11a..c5d9b71d56d 100644 --- a/packages/geolocation-controller/package.json +++ b/packages/geolocation-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/geolocation-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/geolocation-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -61,10 +56,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/java-tron-up/CHANGELOG.md b/packages/java-tron-up/CHANGELOG.md index f64bf24d90a..2e498189973 100644 --- a/packages/java-tron-up/CHANGELOG.md +++ b/packages/java-tron-up/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [1.0.0] diff --git a/packages/java-tron-up/jest.config.js b/packages/java-tron-up/jest.config.cjs similarity index 92% rename from packages/java-tron-up/jest.config.js rename to packages/java-tron-up/jest.config.cjs index ac981bb832e..76b33b29bcb 100644 --- a/packages/java-tron-up/jest.config.js +++ b/packages/java-tron-up/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/java-tron-up/package.json b/packages/java-tron-up/package.json index f0346a45e65..243de152e76 100644 --- a/packages/java-tron-up/package.json +++ b/packages/java-tron-up/package.json @@ -15,23 +15,16 @@ "type": "git", "url": "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/MetaMask/core.git" }, - "bin": "./dist/bin/java-tron-up.mjs", + "bin": "./dist/bin/java-tron-up.js", "files": [ "dist/" ], + "type": "module", "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" }, @@ -40,9 +33,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/java-tron-up", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/java-tron-up", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -60,10 +55,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/json-rpc-engine/CHANGELOG.md b/packages/json-rpc-engine/CHANGELOG.md index b9978710904..f5b16d257a7 100644 --- a/packages/json-rpc-engine/CHANGELOG.md +++ b/packages/json-rpc-engine/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/messenger` from `^1.2.0` to `^2.0.0` ([#9392](https://github.com/MetaMask/core/pull/9392)) diff --git a/packages/json-rpc-engine/jest.config.js b/packages/json-rpc-engine/jest.config.cjs similarity index 90% rename from packages/json-rpc-engine/jest.config.js rename to packages/json-rpc-engine/jest.config.cjs index d1d26575e17..4588f650d26 100644 --- a/packages/json-rpc-engine/jest.config.js +++ b/packages/json-rpc-engine/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/json-rpc-engine/package.json b/packages/json-rpc-engine/package.json index 14e1b95ae0e..4c73161e354 100644 --- a/packages/json-rpc-engine/package.json +++ b/packages/json-rpc-engine/package.json @@ -22,29 +22,16 @@ "dist/", "v2.js" ], + "type": "module", "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" }, @@ -53,9 +40,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "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", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -69,7 +58,7 @@ "dependencies": { "@metamask/messenger": "^2.0.0", "@metamask/rpc-errors": "^7.0.2", - "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/safe-event-emitter": "^3.1.3", "@metamask/utils": "^11.12.0", "@types/deep-freeze-strict": "^1.1.0", "deep-freeze-strict": "^1.1.1", @@ -79,10 +68,10 @@ "@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": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/json-rpc-middleware-stream/CHANGELOG.md b/packages/json-rpc-middleware-stream/CHANGELOG.md index 3e1c543e80c..0527bcf0536 100644 --- a/packages/json-rpc-middleware-stream/CHANGELOG.md +++ b/packages/json-rpc-middleware-stream/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.8.1` to `^11.12.0` ([#7511](https://github.com/MetaMask/core/pull/7511), [#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/json-rpc-engine` from `^10.1.1` to `^10.5.0` ([#7202](https://github.com/MetaMask/core/pull/7202), [#7642](https://github.com/MetaMask/core/pull/7642), [#7856](https://github.com/MetaMask/core/pull/7856), [#8078](https://github.com/MetaMask/core/pull/8078), [#8317](https://github.com/MetaMask/core/pull/8317), [#8661](https://github.com/MetaMask/core/pull/8661), [#8746](https://github.com/MetaMask/core/pull/8746), [#8753](https://github.com/MetaMask/core/pull/8753)) diff --git a/packages/json-rpc-middleware-stream/jest.config.js b/packages/json-rpc-middleware-stream/jest.config.cjs similarity index 90% rename from packages/json-rpc-middleware-stream/jest.config.js rename to packages/json-rpc-middleware-stream/jest.config.cjs index f245081436d..71de6fc9880 100644 --- a/packages/json-rpc-middleware-stream/jest.config.js +++ b/packages/json-rpc-middleware-stream/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/json-rpc-middleware-stream/package.json b/packages/json-rpc-middleware-stream/package.json index 1b5d67c6766..2503c00d070 100644 --- a/packages/json-rpc-middleware-stream/package.json +++ b/packages/json-rpc-middleware-stream/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "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", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -54,18 +49,18 @@ }, "dependencies": { "@metamask/json-rpc-engine": "^10.5.0", - "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/safe-event-emitter": "^3.1.3", "@metamask/utils": "^11.12.0", "readable-stream": "^3.6.2" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "@types/readable-stream": "^2.3.0", "deepmerge": "^4.2.2", "extension-port-stream": "^3.0.0", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/keyring-controller/CHANGELOG.md b/packages/keyring-controller/CHANGELOG.md index 16f30dd05fb..dba4cc98246 100644 --- a/packages/keyring-controller/CHANGELOG.md +++ b/packages/keyring-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/eth-sig-util` from `^8.2.0` to `^9.0.0` ([#9999](https://github.com/MetaMask/core/pull/9999)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/keyring-controller/jest.config.js b/packages/keyring-controller/jest.config.cjs similarity index 90% rename from packages/keyring-controller/jest.config.js rename to packages/keyring-controller/jest.config.cjs index 02289944e6f..5d3cc96f819 100644 --- a/packages/keyring-controller/jest.config.js +++ b/packages/keyring-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/keyring-controller/package.json b/packages/keyring-controller/package.json index 736452f5c6a..b80f4ac619b 100644 --- a/packages/keyring-controller/package.json +++ b/packages/keyring-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/keyring-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/keyring-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -69,7 +64,7 @@ "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,10 +75,10 @@ "@metamask/auto-changelog": "^6.1.0", "@metamask/keyring-utils": "^5.0.0", "@metamask/scure-bip39": "^2.1.1", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/keyring-controller/src/KeyringController.ts b/packages/keyring-controller/src/KeyringController.ts index 1fbf8426ff4..f935aa5e85a 100644 --- a/packages/keyring-controller/src/KeyringController.ts +++ b/packages/keyring-controller/src/KeyringController.ts @@ -37,9 +37,9 @@ import { } from '@metamask/utils'; import { Mutex } from 'async-mutex'; import type { MutexInterface } from 'async-mutex'; -import Wallet, { thirdparty as importers } from 'ethereumjs-wallet'; +import * as ethereumjsWallet 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'; @@ -53,6 +53,26 @@ import type { TypedMessageParams, } from './types.js'; +/** + * `ethereumjs-wallet` is CommonJS, and Node cannot reliably detect its named + * exports, so importing `thirdparty` directly fails at run time. It also + * declares a TypeScript-style default export, which means `module.exports` is + * reached through `default` under Node's ESM interop but is the namespace + * itself once `esModuleInterop` has unwrapped it. Both shapes are resolved + * here so the imports work whichever applies. + */ +/* istanbul ignore next: only one branch is reachable per module system */ +const walletModule = (typeof ethereumjsWallet.default === 'object' && +ethereumjsWallet.default + ? ethereumjsWallet.default + : ethereumjsWallet) as unknown as { + default: typeof ethereumjsWallet.default; + thirdparty: typeof ethereumjsWallet.thirdparty; +}; + +const Wallet = walletModule.default; +const importers = walletModule.thirdparty; + const name = 'KeyringController'; const MESSENGER_EXPOSED_METHODS = [ @@ -1376,6 +1396,7 @@ export class KeyringController< try { wallet = importers.fromEtherWallet(input, password); } catch { + // @ts-expect-error: Wallet.fromV3 does not exist? wallet = wallet ?? (await Wallet.fromV3(input, password, true)); } privateKey = bytesToHex(new Uint8Array(wallet.getPrivateKey())); diff --git a/packages/keyring-controller/tests/mocks/mockEncryptor.ts b/packages/keyring-controller/tests/mocks/mockEncryptor.ts index af97c8d3e5c..92e3acd7382 100644 --- a/packages/keyring-controller/tests/mocks/mockEncryptor.ts +++ b/packages/keyring-controller/tests/mocks/mockEncryptor.ts @@ -6,7 +6,7 @@ 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.js'; diff --git a/packages/kyc-controller/CHANGELOG.md b/packages/kyc-controller/CHANGELOG.md index 7677938e429..8653c281444 100644 --- a/packages/kyc-controller/CHANGELOG.md +++ b/packages/kyc-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [0.1.0] diff --git a/packages/kyc-controller/jest.config.cjs b/packages/kyc-controller/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/kyc-controller/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/kyc-controller/jest.config.js b/packages/kyc-controller/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/kyc-controller/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/kyc-controller/package.json b/packages/kyc-controller/package.json index 8fc3a4297a2..9899b75835f 100644 --- a/packages/kyc-controller/package.json +++ b/packages/kyc-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,10 +32,12 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", - "build:watch": "yarn build && chokidar 'src/**/*.ts' -c 'ts-bridge --project tsconfig.build.json --verbose --no-references' --initial", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", + "build:watch": "yarn build && chokidar 'src/**/*.ts' -c 'tsc --project tsconfig.build.json' --initial", "changelog:update": "../../scripts/update-changelog.sh @metamask/kyc-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/kyc-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -75,12 +70,12 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "chokidar-cli": "^3.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/local-node-utils/CHANGELOG.md b/packages/local-node-utils/CHANGELOG.md index 6c0971b6ba7..0d0df4742d7 100644 --- a/packages/local-node-utils/CHANGELOG.md +++ b/packages/local-node-utils/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [1.0.0] diff --git a/packages/local-node-utils/jest.config.js b/packages/local-node-utils/jest.config.cjs similarity index 90% rename from packages/local-node-utils/jest.config.js rename to packages/local-node-utils/jest.config.cjs index e733dd05831..5d72142042b 100644 --- a/packages/local-node-utils/jest.config.js +++ b/packages/local-node-utils/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/local-node-utils/package.json b/packages/local-node-utils/package.json index 32d7d0c8375..bf43c62f595 100644 --- a/packages/local-node-utils/package.json +++ b/packages/local-node-utils/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/local-node-utils", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/local-node-utils", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -59,11 +54,11 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/logging-controller/CHANGELOG.md b/packages/logging-controller/CHANGELOG.md index cae05dc493d..aeb93d76097 100644 --- a/packages/logging-controller/CHANGELOG.md +++ b/packages/logging-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/logging-controller/jest.config.cjs b/packages/logging-controller/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/logging-controller/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/logging-controller/jest.config.js b/packages/logging-controller/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/logging-controller/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/logging-controller/package.json b/packages/logging-controller/package.json index f71dec728cd..96736ec5d65 100644 --- a/packages/logging-controller/package.json +++ b/packages/logging-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/logging-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/logging-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -62,10 +57,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/message-manager/CHANGELOG.md b/packages/message-manager/CHANGELOG.md index bb071a6f08a..45d77ecb7ec 100644 --- a/packages/message-manager/CHANGELOG.md +++ b/packages/message-manager/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/controller-utils` from `^12.0.0` to `^12.3.0` ([#8774](https://github.com/MetaMask/core/pull/8774), [#9058](https://github.com/MetaMask/core/pull/9058), [#9083](https://github.com/MetaMask/core/pull/9083), [#9218](https://github.com/MetaMask/core/pull/9218)) diff --git a/packages/message-manager/jest.config.cjs b/packages/message-manager/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/message-manager/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/message-manager/jest.config.js b/packages/message-manager/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/message-manager/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/message-manager/package.json b/packages/message-manager/package.json index 39d11e1c2a0..11cd91cf98f 100644 --- a/packages/message-manager/package.json +++ b/packages/message-manager/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/message-manager", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/message-manager", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -64,10 +59,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/messenger-cli/CHANGELOG.md b/packages/messenger-cli/CHANGELOG.md index ca24d38770c..363368b5aca 100644 --- a/packages/messenger-cli/CHANGELOG.md +++ b/packages/messenger-cli/CHANGELOG.md @@ -14,6 +14,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/messenger-cli/jest.config.cjs b/packages/messenger-cli/jest.config.cjs new file mode 100644 index 00000000000..4d2130d21a8 --- /dev/null +++ b/packages/messenger-cli/jest.config.cjs @@ -0,0 +1,42 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +const config = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // Unlike the other packages, these tests run as ESM. `generate-content.ts` + // reaches for the ESM-only `oxfmt` through a dynamic `import()`, which the + // CommonJS transform would turn into a `require()` that cannot load it. + extensionsToTreatAsEsm: ['.ts'], + + // cli.ts is tested via execa subprocess in cli.test.ts; Jest can't instrument it + coveragePathIgnorePatterns: ['./src/cli.ts'], + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 90.65, + functions: 100, + lines: 97.39, + statements: 97.4, + }, + }, +}); + +// `deepmerge` concatenates arrays, so the CommonJS transform inherited from the +// base config has to be replaced outright rather than merged into. +config.transform = { + '^.+\\.tsx?$': ['ts-jest', { useESM: true }], +}; + +module.exports = config; diff --git a/packages/messenger-cli/jest.config.js b/packages/messenger-cli/jest.config.js deleted file mode 100644 index ab426afd5c0..00000000000 --- a/packages/messenger-cli/jest.config.js +++ /dev/null @@ -1,29 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // cli.ts is tested via execa subprocess in cli.test.ts; Jest can't instrument it - coveragePathIgnorePatterns: ['./src/cli.ts'], - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 90.65, - functions: 100, - lines: 97.59, - statements: 97.6, - }, - }, -}); diff --git a/packages/messenger-cli/package.json b/packages/messenger-cli/package.json index c3ff3bdb2c1..35afc5dc4fd 100644 --- a/packages/messenger-cli/package.json +++ b/packages/messenger-cli/package.json @@ -16,19 +16,22 @@ "url": "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/MetaMask/core.git" }, "bin": { - "messenger-action-types": "./dist/cli.mjs" + "messenger-action-types": "./dist/cli.js" }, "files": [ "dist/" ], + "type": "module", "sideEffects": false, "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" }, "scripts": { - "build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references", - "build:all": "ts-bridge --project tsconfig.build.json --verbose --clean", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", + "build:clean": "yarn build:only-clean && yarn build", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "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", @@ -44,8 +47,8 @@ "yargs": "^17.7.2" }, "devDependencies": { + "@jest/globals": "^30.4.1", "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "@types/yargs": "^17.0.32", "deepmerge": "^4.2.2", @@ -53,6 +56,7 @@ "jest": "^30.4.2", "oxfmt": "^0.44.0", "prettier": "^3.3.3", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typescript": "~5.3.3" diff --git a/packages/messenger-cli/src/check.test.ts b/packages/messenger-cli/src/check.test.ts index ea212269438..91aca0c700b 100644 --- a/packages/messenger-cli/src/check.test.ts +++ b/packages/messenger-cli/src/check.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { createSandbox } from '@metamask/utils/node'; import * as fs from 'node:fs'; import * as path from 'node:path'; @@ -27,7 +28,9 @@ describe('checkActionTypesFiles', () => { 'utf8', ); - const consoleSpy = jest.spyOn(console, 'log').mockImplementation(); + const consoleSpy = jest + .spyOn(console, 'log') + .mockImplementation(() => undefined); const result = await checkActionTypesFiles([controller], 'prettier'); consoleSpy.mockRestore(); @@ -52,8 +55,12 @@ describe('checkActionTypesFiles', () => { 'utf8', ); - const consoleSpy = jest.spyOn(console, 'log').mockImplementation(); - const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(); + const consoleSpy = jest + .spyOn(console, 'log') + .mockImplementation(() => undefined); + const consoleErrorSpy = jest + .spyOn(console, 'error') + .mockImplementation(() => undefined); const result = await checkActionTypesFiles([controller], 'prettier'); consoleSpy.mockRestore(); consoleErrorSpy.mockRestore(); @@ -73,8 +80,12 @@ describe('checkActionTypesFiles', () => { methods: [{ name: 'doStuff', jsDoc: '' }], }; - const consoleSpy = jest.spyOn(console, 'log').mockImplementation(); - const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(); + const consoleSpy = jest + .spyOn(console, 'log') + .mockImplementation(() => undefined); + const consoleErrorSpy = jest + .spyOn(console, 'error') + .mockImplementation(() => undefined); const result = await checkActionTypesFiles([controller], 'prettier'); consoleSpy.mockRestore(); consoleErrorSpy.mockRestore(); @@ -101,8 +112,12 @@ describe('checkActionTypesFiles', () => { Object.assign(new Error('EPERM'), { code: 'EPERM' }), ); - const consoleSpy = jest.spyOn(console, 'log').mockImplementation(); - const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(); + const consoleSpy = jest + .spyOn(console, 'log') + .mockImplementation(() => undefined); + const consoleErrorSpy = jest + .spyOn(console, 'error') + .mockImplementation(() => undefined); const result = await checkActionTypesFiles([controller], 'prettier'); expect(consoleErrorSpy).toHaveBeenCalledWith( diff --git a/packages/messenger-cli/src/cli.test.ts b/packages/messenger-cli/src/cli.test.ts index ce87d9138d8..c60ce41120a 100644 --- a/packages/messenger-cli/src/cli.test.ts +++ b/packages/messenger-cli/src/cli.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'; -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/messenger-cli/src/fix.test.ts b/packages/messenger-cli/src/fix.test.ts index dd436ca363b..b16a3b5de8a 100644 --- a/packages/messenger-cli/src/fix.test.ts +++ b/packages/messenger-cli/src/fix.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { createSandbox } from '@metamask/utils/node'; import * as fs from 'node:fs'; import * as path from 'node:path'; @@ -20,7 +21,9 @@ describe('generateAllActionTypesFiles', () => { methods: [{ name: 'doStuff', jsDoc: '' }], }; - const consoleSpy = jest.spyOn(console, 'log').mockImplementation(); + const consoleSpy = jest + .spyOn(console, 'log') + .mockImplementation(() => undefined); await generateAllActionTypesFiles([controller], 'prettier'); consoleSpy.mockRestore(); @@ -52,7 +55,9 @@ describe('generateAllActionTypesFiles', () => { }, ]; - const consoleSpy = jest.spyOn(console, 'log').mockImplementation(); + const consoleSpy = jest + .spyOn(console, 'log') + .mockImplementation(() => undefined); await generateAllActionTypesFiles(controllers, 'prettier'); consoleSpy.mockRestore(); diff --git a/packages/messenger-cli/src/parse-source.test.ts b/packages/messenger-cli/src/parse-source.test.ts index f80a44d4cfb..4ebba2e3057 100644 --- a/packages/messenger-cli/src/parse-source.test.ts +++ b/packages/messenger-cli/src/parse-source.test.ts @@ -1,3 +1,4 @@ +import { jest } from '@jest/globals'; import { createSandbox } from '@metamask/utils/node'; import * as fs from 'node:fs'; import * as path from 'node:path'; @@ -445,7 +446,9 @@ class BadTsconfigController { 'utf8', ); - const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(); + const consoleErrorSpy = jest + .spyOn(console, 'error') + .mockImplementation(() => undefined); const result = await parseSourceFile(controllerFile); expect(result).toBeNull(); @@ -478,7 +481,9 @@ class NoTsconfigController { 'utf8', ); - const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(); + const consoleErrorSpy = jest + .spyOn(console, 'error') + .mockImplementation(() => undefined); const result = await parseSourceFile(controllerFile); // Should return null because assert fails when type checker can't be created @@ -492,7 +497,9 @@ class NoTsconfigController { it('returns null and logs error for invalid file', async () => { expect.assertions(2); - const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(); + const consoleErrorSpy = jest + .spyOn(console, 'error') + .mockImplementation(() => undefined); const result = await parseSourceFile('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/nonexistent/file.ts'); 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/messenger/CHANGELOG.md b/packages/messenger/CHANGELOG.md index 2ca351baeb2..f8158f564e1 100644 --- a/packages/messenger/CHANGELOG.md +++ b/packages/messenger/CHANGELOG.md @@ -15,6 +15,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/messenger/jest.config.js b/packages/messenger/jest.config.cjs similarity index 91% rename from packages/messenger/jest.config.js rename to packages/messenger/jest.config.cjs index 9ad52b2640b..93fea407a10 100644 --- a/packages/messenger/jest.config.js +++ b/packages/messenger/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/messenger/package.json b/packages/messenger/package.json index ed68dfec313..204c123e78a 100644 --- a/packages/messenger/package.json +++ b/packages/messenger/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/messenger", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/messenger", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -61,11 +56,11 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "immer": "^9.0.6", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tstyche": "^5.0.2", "tsx": "^4.20.5", diff --git a/packages/money-account-api-data-service/CHANGELOG.md b/packages/money-account-api-data-service/CHANGELOG.md index f4fd9c0a91b..b123ad49e7d 100644 --- a/packages/money-account-api-data-service/CHANGELOG.md +++ b/packages/money-account-api-data-service/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/money-account-api-data-service/jest.config.js b/packages/money-account-api-data-service/jest.config.cjs similarity index 87% rename from packages/money-account-api-data-service/jest.config.js rename to packages/money-account-api-data-service/jest.config.cjs index c17efa251af..4e1004f80ec 100644 --- a/packages/money-account-api-data-service/jest.config.js +++ b/packages/money-account-api-data-service/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/money-account-api-data-service/package.json b/packages/money-account-api-data-service/package.json index d9fa910596b..8a8dcdadbcc 100644 --- a/packages/money-account-api-data-service/package.json +++ b/packages/money-account-api-data-service/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/money-account-api-data-service", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/money-account-api-data-service", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -64,11 +59,11 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/money-account-api-data-service/src/index.ts b/packages/money-account-api-data-service/src/index.ts index bf60cee5d1c..10efdcbc672 100644 --- a/packages/money-account-api-data-service/src/index.ts +++ b/packages/money-account-api-data-service/src/index.ts @@ -25,7 +25,7 @@ export type { DataFreshness, CashFlowType, CashFlowSource, -} from './response.types'; +} from './response.types.js'; export type { InterestWindow, InterestOptions, 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 f559b416c75..e62a99693b1 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 @@ -29,7 +29,7 @@ import type { InterestResponse, PositionResponse, RateHistoryResponse, -} from './response.types'; +} from './response.types.js'; import { HistoryResponseStruct, InterestResponseStruct, diff --git a/packages/money-account-balance-service/CHANGELOG.md b/packages/money-account-balance-service/CHANGELOG.md index 61e544380da..28f2734129d 100644 --- a/packages/money-account-balance-service/CHANGELOG.md +++ b/packages/money-account-balance-service/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/remote-feature-flag-controller` from `^6.0.0` to `^6.1.1` ([#9980](https://github.com/MetaMask/core/pull/9980), [#10129](https://github.com/MetaMask/core/pull/10129)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/money-account-balance-service/jest.config.js b/packages/money-account-balance-service/jest.config.cjs similarity index 87% rename from packages/money-account-balance-service/jest.config.js rename to packages/money-account-balance-service/jest.config.cjs index c17efa251af..4e1004f80ec 100644 --- a/packages/money-account-balance-service/jest.config.js +++ b/packages/money-account-balance-service/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/money-account-balance-service/package.json b/packages/money-account-balance-service/package.json index f87077094e6..2039a5c06e1 100644 --- a/packages/money-account-balance-service/package.json +++ b/packages/money-account-balance-service/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/money-account-balance-service", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/money-account-balance-service", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -69,11 +64,11 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/money-account-balance-service/src/index.ts b/packages/money-account-balance-service/src/index.ts index 2690bdd4782..4a9fae6229c 100644 --- a/packages/money-account-balance-service/src/index.ts +++ b/packages/money-account-balance-service/src/index.ts @@ -22,7 +22,7 @@ export type { MoneyAccountBalanceResponse, MusdEquivalentValueResponse, NormalizedVaultApyResponse, -} from './response.types'; +} from './response.types.js'; export type { BalanceSource, BalanceSourcePolicy } from './constants.js'; export { BALANCE_SOURCE_POLICIES, 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 c90e8f31fb3..f0ebd61e40f 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 @@ -62,7 +62,7 @@ import type { MoneyAccountBalanceResponse, MusdEquivalentValueResponse, NormalizedVaultApyResponse, -} from './response.types'; +} from './response.types.js'; import { VaultApyRawResponseStruct, VaultConfigStruct } from './structs.js'; import type { VaultConfig } from './types.js'; diff --git a/packages/money-account-balance-service/src/requestNormalization.ts b/packages/money-account-balance-service/src/requestNormalization.ts index 88ca9f1f4a4..b06c180266e 100644 --- a/packages/money-account-balance-service/src/requestNormalization.ts +++ b/packages/money-account-balance-service/src/requestNormalization.ts @@ -1,6 +1,6 @@ import { Infer } from '@metamask/superstruct'; -import type { NormalizedVaultApyResponse } from './response.types'; +import type { NormalizedVaultApyResponse } from './response.types.js'; import { VaultApyRawResponseStruct } from './structs.js'; import { convertAprToApy } from './utils.js'; diff --git a/packages/money-account-controller/CHANGELOG.md b/packages/money-account-controller/CHANGELOG.md index 490497c0679..ee7f9e602df 100644 --- a/packages/money-account-controller/CHANGELOG.md +++ b/packages/money-account-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/accounts-controller` from `^39.0.7` to `^39.1.1` ([#9807](https://github.com/MetaMask/core/pull/9807), [#9969](https://github.com/MetaMask/core/pull/9969)) diff --git a/packages/money-account-controller/jest.config.cjs b/packages/money-account-controller/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/money-account-controller/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/money-account-controller/jest.config.js b/packages/money-account-controller/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/money-account-controller/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/money-account-controller/package.json b/packages/money-account-controller/package.json index 0ae04bd03c0..97361075f26 100644 --- a/packages/money-account-controller/package.json +++ b/packages/money-account-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/money-account-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/money-account-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -67,10 +62,10 @@ "@metamask/auto-changelog": "^6.1.0", "@metamask/keyring-utils": "^5.0.0", "@metamask/utils": "^11.12.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/money-account-upgrade-controller/CHANGELOG.md b/packages/money-account-upgrade-controller/CHANGELOG.md index 7c1b2c19e9f..0afe78e92f6 100644 --- a/packages/money-account-upgrade-controller/CHANGELOG.md +++ b/packages/money-account-upgrade-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/remote-feature-flag-controller` from `^6.1.0` to `^6.1.1` ([#10129](https://github.com/MetaMask/core/pull/10129)) diff --git a/packages/money-account-upgrade-controller/jest.config.js b/packages/money-account-upgrade-controller/jest.config.cjs similarity index 87% rename from packages/money-account-upgrade-controller/jest.config.js rename to packages/money-account-upgrade-controller/jest.config.cjs index 1c5314007e1..8125dff7e09 100644 --- a/packages/money-account-upgrade-controller/jest.config.js +++ b/packages/money-account-upgrade-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/money-account-upgrade-controller/package.json b/packages/money-account-upgrade-controller/package.json index 37e93b9a320..ff9ccd7da95 100644 --- a/packages/money-account-upgrade-controller/package.json +++ b/packages/money-account-upgrade-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/money-account-upgrade-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/money-account-upgrade-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -70,10 +65,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/money-account-utils/CHANGELOG.md b/packages/money-account-utils/CHANGELOG.md index 378b3655cf0..b25b569acbb 100644 --- a/packages/money-account-utils/CHANGELOG.md +++ b/packages/money-account-utils/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/transaction-controller` from `^69.8.0` to `^69.8.1` ([#10124](https://github.com/MetaMask/core/pull/10124)) diff --git a/packages/money-account-utils/jest.config.cjs b/packages/money-account-utils/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/money-account-utils/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/money-account-utils/jest.config.js b/packages/money-account-utils/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/money-account-utils/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/money-account-utils/package.json b/packages/money-account-utils/package.json index 5ad3a2f0105..a1efd3cd9e9 100644 --- a/packages/money-account-utils/package.json +++ b/packages/money-account-utils/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/money-account-utils", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/money-account-utils", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -63,10 +58,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/multichain-account-service/CHANGELOG.md b/packages/multichain-account-service/CHANGELOG.md index 98290d449a2..2f10fea4fb0 100644 --- a/packages/multichain-account-service/CHANGELOG.md +++ b/packages/multichain-account-service/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/accounts-controller` from `^39.1.0` to `^39.1.1` ([#9969](https://github.com/MetaMask/core/pull/9969)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/multichain-account-service/jest.config.js b/packages/multichain-account-service/jest.config.cjs similarity index 91% rename from packages/multichain-account-service/jest.config.js rename to packages/multichain-account-service/jest.config.cjs index ffd06163763..a4b9bd90eeb 100644 --- a/packages/multichain-account-service/jest.config.js +++ b/packages/multichain-account-service/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/multichain-account-service/package.json b/packages/multichain-account-service/package.json index 31ef3204acd..1996df11cd3 100644 --- a/packages/multichain-account-service/package.json +++ b/packages/multichain-account-service/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/multichain-account-service", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/multichain-account-service", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -74,18 +69,18 @@ "@metamask/superstruct": "^3.4.1", "@metamask/utils": "^11.12.0", "async-mutex": "^0.5.0", - "lodash": "^4.17.21" + "lodash-es": "^4.17.21" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/controller-utils": "^12.3.0", "@metamask/eth-hd-keyring": "^15.0.0", "@metamask/providers": "^22.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "@types/uuid": "^8.3.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/multichain-api-middleware/CHANGELOG.md b/packages/multichain-api-middleware/CHANGELOG.md index 7acf76bec37..2d4b4d40dbf 100644 --- a/packages/multichain-api-middleware/CHANGELOG.md +++ b/packages/multichain-api-middleware/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/multichain-api-middleware/jest.config.js b/packages/multichain-api-middleware/jest.config.cjs similarity index 90% rename from packages/multichain-api-middleware/jest.config.js rename to packages/multichain-api-middleware/jest.config.cjs index a6816cce33a..41869fb9684 100644 --- a/packages/multichain-api-middleware/jest.config.js +++ b/packages/multichain-api-middleware/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/multichain-api-middleware/package.json b/packages/multichain-api-middleware/package.json index 95229e441c9..1ba6acae6eb 100644 --- a/packages/multichain-api-middleware/package.json +++ b/packages/multichain-api-middleware/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/multichain-api-middleware", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/multichain-api-middleware", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -71,11 +66,11 @@ "@metamask/auto-changelog": "^6.1.0", "@metamask/eth-json-rpc-filters": "^9.0.0", "@metamask/multichain-transactions-controller": "^7.1.2", - "@metamask/safe-event-emitter": "^3.0.0", - "@ts-bridge/cli": "^0.6.4", + "@metamask/safe-event-emitter": "^3.1.3", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", 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/CHANGELOG.md b/packages/multichain-network-controller/CHANGELOG.md index 4563b16558d..949702b3090 100644 --- a/packages/multichain-network-controller/CHANGELOG.md +++ b/packages/multichain-network-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/multichain-network-controller/jest.config.js b/packages/multichain-network-controller/jest.config.cjs similarity index 90% rename from packages/multichain-network-controller/jest.config.js rename to packages/multichain-network-controller/jest.config.cjs index 3b19ddb3f39..853be4bf83b 100644 --- a/packages/multichain-network-controller/jest.config.js +++ b/packages/multichain-network-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/multichain-network-controller/package.json b/packages/multichain-network-controller/package.json index 1d3f449b792..c04dc5fee33 100644 --- a/packages/multichain-network-controller/package.json +++ b/packages/multichain-network-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/multichain-network-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/multichain-network-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -65,19 +60,19 @@ "@metamask/superstruct": "^3.4.1", "@metamask/utils": "^11.12.0", "@solana/addresses": "^2.0.0", - "lodash": "^4.17.21" + "lodash-es": "^4.17.21" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/keyring-controller": "^27.1.1", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", - "@types/lodash": "^4.14.191", + "@types/lodash-es": "^4.17.12", "@types/uuid": "^8.3.0", "deepmerge": "^4.2.2", "immer": "^9.0.6", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/multichain-network-controller/src/MultichainNetworkService/MultichainNetworkService.test.ts b/packages/multichain-network-controller/src/MultichainNetworkService/MultichainNetworkService.test.ts index be29e727cf9..9b1743a7bac 100644 --- a/packages/multichain-network-controller/src/MultichainNetworkService/MultichainNetworkService.test.ts +++ b/packages/multichain-network-controller/src/MultichainNetworkService/MultichainNetworkService.test.ts @@ -1,6 +1,6 @@ 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, diff --git a/packages/multichain-network-controller/src/MultichainNetworkService/MultichainNetworkService.ts b/packages/multichain-network-controller/src/MultichainNetworkService/MultichainNetworkService.ts index e564c491812..801b0cef9df 100644 --- a/packages/multichain-network-controller/src/MultichainNetworkService/MultichainNetworkService.ts +++ b/packages/multichain-network-controller/src/MultichainNetworkService/MultichainNetworkService.ts @@ -1,6 +1,6 @@ import { assert } from '@metamask/superstruct'; import type { CaipAccountId } from '@metamask/utils'; -import { chunk } from 'lodash'; +import { chunk } from 'lodash-es'; import { ActiveNetworksResponseStruct, diff --git a/packages/multichain-transactions-controller/CHANGELOG.md b/packages/multichain-transactions-controller/CHANGELOG.md index acf5819043b..25a0debc79a 100644 --- a/packages/multichain-transactions-controller/CHANGELOG.md +++ b/packages/multichain-transactions-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/accounts-controller` from `^39.0.7` to `^39.1.1` ([#9807](https://github.com/MetaMask/core/pull/9807), [#9969](https://github.com/MetaMask/core/pull/9969)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/multichain-transactions-controller/jest.config.js b/packages/multichain-transactions-controller/jest.config.cjs similarity index 90% rename from packages/multichain-transactions-controller/jest.config.js rename to packages/multichain-transactions-controller/jest.config.cjs index 61cef5a0b68..c2ddb8f7c8f 100644 --- a/packages/multichain-transactions-controller/jest.config.js +++ b/packages/multichain-transactions-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/multichain-transactions-controller/package.json b/packages/multichain-transactions-controller/package.json index e347775c9a0..cc04f394397 100644 --- a/packages/multichain-transactions-controller/package.json +++ b/packages/multichain-transactions-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/multichain-transactions-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/multichain-transactions-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -73,10 +68,10 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/keyring-controller": "^27.1.1", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/name-controller/CHANGELOG.md b/packages/name-controller/CHANGELOG.md index b4e653de0d5..0870f0f9198 100644 --- a/packages/name-controller/CHANGELOG.md +++ b/packages/name-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/controller-utils` from `^12.0.0` to `^12.3.0` ([#8774](https://github.com/MetaMask/core/pull/8774), [#9058](https://github.com/MetaMask/core/pull/9058), [#9083](https://github.com/MetaMask/core/pull/9083), [#9218](https://github.com/MetaMask/core/pull/9218)) diff --git a/packages/name-controller/jest.config.cjs b/packages/name-controller/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/name-controller/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/name-controller/jest.config.js b/packages/name-controller/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/name-controller/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/name-controller/package.json b/packages/name-controller/package.json index b016c8dd726..db4d5d067f8 100644 --- a/packages/name-controller/package.json +++ b/packages/name-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/name-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/name-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -64,10 +59,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/network-connection-banner-controller/CHANGELOG.md b/packages/network-connection-banner-controller/CHANGELOG.md index b0aeb9fe0d1..104f131db34 100644 --- a/packages/network-connection-banner-controller/CHANGELOG.md +++ b/packages/network-connection-banner-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/network-connection-banner-controller/jest.config.js b/packages/network-connection-banner-controller/jest.config.cjs similarity index 91% rename from packages/network-connection-banner-controller/jest.config.js rename to packages/network-connection-banner-controller/jest.config.cjs index f6a03b68807..a0f19ea501a 100644 --- a/packages/network-connection-banner-controller/jest.config.js +++ b/packages/network-connection-banner-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/network-connection-banner-controller/package.json b/packages/network-connection-banner-controller/package.json index c3d7d0569c6..29b7982433c 100644 --- a/packages/network-connection-banner-controller/package.json +++ b/packages/network-connection-banner-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/network-connection-banner-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/network-connection-banner-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -67,10 +62,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/network-controller/CHANGELOG.md b/packages/network-controller/CHANGELOG.md index cb1cd35679f..19f7f85d97b 100644 --- a/packages/network-controller/CHANGELOG.md +++ b/packages/network-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/remote-feature-flag-controller` from `^6.0.0` to `^6.1.1` ([#9980](https://github.com/MetaMask/core/pull/9980), [#10129](https://github.com/MetaMask/core/pull/10129)) - Bump `@metamask/eth-json-rpc-middleware` from `^24.0.1` to `^24.0.2` ([#10040](https://github.com/MetaMask/core/pull/10040)) diff --git a/packages/network-controller/jest.config.js b/packages/network-controller/jest.config.cjs similarity index 92% rename from packages/network-controller/jest.config.js rename to packages/network-controller/jest.config.cjs index e20eff6e4a0..7c9351912c4 100644 --- a/packages/network-controller/jest.config.js +++ b/packages/network-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/network-controller/package.json b/packages/network-controller/package.json index 3eacff9637e..9db9958e72b 100644 --- a/packages/network-controller/package.json +++ b/packages/network-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/network-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/network-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -81,11 +76,10 @@ "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": "^30.0.0", "@types/jest-when": "^2.7.3", - "@types/lodash": "^4.14.191", + "@types/lodash-es": "^4.17.12", "@types/node-fetch": "^2.6.12", "cockatiel": "^3.1.2", "deep-freeze-strict": "^1.1.1", @@ -93,9 +87,10 @@ "jest": "^30.4.2", "jest-environment-jsdom": "^30.4.1", "jest-when": "^3.7.0", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "nock": "^13.3.1", "node-fetch": "^2.7.0", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/network-controller/src/NetworkController.ts b/packages/network-controller/src/NetworkController.ts index e82e9a530ca..e45abeea8bf 100644 --- a/packages/network-controller/src/NetworkController.ts +++ b/packages/network-controller/src/NetworkController.ts @@ -52,7 +52,7 @@ import { 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'; diff --git a/packages/network-controller/src/create-network-client.ts b/packages/network-controller/src/create-network-client.ts index c83df15bc59..8f13fb7024e 100644 --- a/packages/network-controller/src/create-network-client.ts +++ b/packages/network-controller/src/create-network-client.ts @@ -173,6 +173,9 @@ export function createNetworkClient({ if (configuration.type === NetworkClientType.Infura) { rpcApiMiddleware = asV2Middleware( createInfuraMiddleware({ + // TODO: This was introduced by the ESM refactor for unknown reasons and + // should be investigated further. + // @ts-expect-error: Type mismatch. rpcService: rpcServiceChain, options: { source: 'metamask', 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 c4ee0afec87..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,4 +1,4 @@ -import { fill } from 'lodash'; +import { fill } from 'lodash-es'; import type { ProviderType } from './helpers.js'; import { withMockedCommunications, withNetworkClient } from './helpers.js'; diff --git a/packages/network-enablement-controller/CHANGELOG.md b/packages/network-enablement-controller/CHANGELOG.md index 3928a199a9b..3d729d18c39 100644 --- a/packages/network-enablement-controller/CHANGELOG.md +++ b/packages/network-enablement-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/transaction-controller` from `^69.6.1` to `^69.8.1` ([#10046](https://github.com/MetaMask/core/pull/10046), [#10080](https://github.com/MetaMask/core/pull/10080), [#10124](https://github.com/MetaMask/core/pull/10124)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/network-enablement-controller/jest.config.js b/packages/network-enablement-controller/jest.config.cjs similarity index 90% rename from packages/network-enablement-controller/jest.config.js rename to packages/network-enablement-controller/jest.config.cjs index 8df1ea4fd9d..cece7750158 100644 --- a/packages/network-enablement-controller/jest.config.js +++ b/packages/network-enablement-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/network-enablement-controller/package.json b/packages/network-enablement-controller/package.json index c1432e99b6d..f807c7229d7 100644 --- a/packages/network-enablement-controller/package.json +++ b/packages/network-enablement-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/network-enablement-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/network-enablement-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -69,10 +64,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/notification-services-controller/CHANGELOG.md b/packages/notification-services-controller/CHANGELOG.md index e06869aade6..d064e2f4ad1 100644 --- a/packages/notification-services-controller/CHANGELOG.md +++ b/packages/notification-services-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ### Fixed diff --git a/packages/notification-services-controller/jest.config.js b/packages/notification-services-controller/jest.config.cjs similarity index 86% rename from packages/notification-services-controller/jest.config.js rename to packages/notification-services-controller/jest.config.cjs index 24f98707e42..cb0212f8d0c 100644 --- a/packages/notification-services-controller/jest.config.js +++ b/packages/notification-services-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); @@ -32,5 +32,5 @@ module.exports = merge(baseConfig, { ], // These tests rely on the Crypto API - testEnvironment: '/jest.environment.js', + testEnvironment: '/jest.environment.cjs', }); diff --git a/packages/notification-services-controller/jest.environment.js b/packages/notification-services-controller/jest.environment.cjs similarity index 100% rename from packages/notification-services-controller/jest.environment.js rename to packages/notification-services-controller/jest.environment.cjs diff --git a/packages/notification-services-controller/package.json b/packages/notification-services-controller/package.json index 43113517149..1a321d6f0a9 100644 --- a/packages/notification-services-controller/package.json +++ b/packages/notification-services-controller/package.json @@ -20,69 +20,32 @@ "notification-services/", "push-services/" ], + "type": "module", "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" }, @@ -91,9 +54,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/notification-services-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/notification-services-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -117,7 +82,7 @@ "@metamask/utils": "^11.12.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" @@ -126,9 +91,8 @@ "@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": "^30.0.0", - "@types/lodash": "^4.14.191", + "@types/lodash-es": "^4.17.12", "@types/readable-stream": "^2.3.0", "@types/semver": "^7", "contentful": "^10.15.0", @@ -136,6 +100,7 @@ "jest": "^30.4.2", "jest-environment-jsdom": "^30.4.1", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/notification-services-controller/src/NotificationServicesController/NotificationServicesController.ts b/packages/notification-services-controller/src/NotificationServicesController/NotificationServicesController.ts index 2d7ff412276..b3aa98d4883 100644 --- a/packages/notification-services-controller/src/NotificationServicesController/NotificationServicesController.ts +++ b/packages/notification-services-controller/src/NotificationServicesController/NotificationServicesController.ts @@ -29,7 +29,7 @@ import type { import type { Messenger } from '@metamask/messenger'; import type { AuthenticationController } from '@metamask/profile-sync-controller'; import { assert } from '@metamask/utils'; -import { debounce } from 'lodash'; +import { debounce } from 'lodash-es'; import log from 'loglevel'; import type { 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 9363964500a..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,11 +1,10 @@ +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.js'; +} from '../NotificationServicesController/types/notification-api/index.js'; import { isOnChainNotification } from './notification-api-type-guards.js'; /** diff --git a/packages/passkey-controller/CHANGELOG.md b/packages/passkey-controller/CHANGELOG.md index 1f64eaa4242..173e87af66d 100644 --- a/packages/passkey-controller/CHANGELOG.md +++ b/packages/passkey-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/passkey-controller/jest.config.js b/packages/passkey-controller/jest.config.cjs similarity index 83% rename from packages/passkey-controller/jest.config.js rename to packages/passkey-controller/jest.config.cjs index 0f5e11a7b84..61aeb28fc4e 100644 --- a/packages/passkey-controller/jest.config.js +++ b/packages/passkey-controller/jest.config.cjs @@ -1,7 +1,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/passkey-controller/package.json b/packages/passkey-controller/package.json index 0d158a7e2d5..ee5ec44338f 100644 --- a/packages/passkey-controller/package.json +++ b/packages/passkey-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/passkey-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/passkey-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -68,10 +63,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/permission-controller/.eslintrc.js b/packages/permission-controller/.eslintrc.js deleted file mode 100644 index 1e60b9c9bd4..00000000000 --- a/packages/permission-controller/.eslintrc.js +++ /dev/null @@ -1,85 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - - overrides: [ - { - files: ['src/PermissionController.test.ts'], - rules: { - // This is taken directly from @metamask/eslint-config-typescript@12.1.0 - '@typescript-eslint/naming-convention': [ - 'error', - // We have to disable the default selector for our objectLiteralProperty - // filter to work. - // { - // selector: 'default', - // format: ['camelCase'], - // leadingUnderscore: 'allow', - // trailingUnderscore: 'forbid', - // }, - { - selector: 'enumMember', - format: ['PascalCase'], - }, - { - selector: 'interface', - format: ['PascalCase'], - custom: { - regex: '^I[A-Z]', - match: false, - }, - }, - { - selector: 'objectLiteralMethod', - format: ['camelCase', 'PascalCase', 'UPPER_CASE'], - }, - // This option is modified by the addition of a filter. - { - selector: 'objectLiteralProperty', - format: ['camelCase', 'PascalCase', 'UPPER_CASE'], - filter: { - // Match RPC method names like foo_bar, foo_barBaz, etc., and metamask.io - regex: '(^[a-z]+_[a-z]+[a-zA-Z0-9]*)|metamask\\.io$', - match: false, - }, - }, - { - selector: 'typeLike', - format: ['PascalCase'], - }, - { - selector: 'typeParameter', - format: ['PascalCase'], - custom: { - regex: '^.{3,}', - match: true, - }, - }, - { - selector: 'variable', - format: ['camelCase', 'UPPER_CASE', 'PascalCase'], - leadingUnderscore: 'allow', - }, - { - selector: 'parameter', - format: ['camelCase', 'PascalCase'], - leadingUnderscore: 'allow', - }, - { - selector: [ - 'classProperty', - 'objectLiteralProperty', - 'typeProperty', - 'classMethod', - 'objectLiteralMethod', - 'typeMethod', - 'accessor', - 'enumMember', - ], - format: null, - modifiers: ['requiresQuotes'], - }, - ], - }, - }, - ], -}; diff --git a/packages/permission-controller/CHANGELOG.md b/packages/permission-controller/CHANGELOG.md index 9d93f092a1c..82d7b1f8ac9 100644 --- a/packages/permission-controller/CHANGELOG.md +++ b/packages/permission-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/controller-utils` from `^12.0.0` to `^12.3.0` ([#8774](https://github.com/MetaMask/core/pull/8774), [#9058](https://github.com/MetaMask/core/pull/9058), [#9083](https://github.com/MetaMask/core/pull/9083), [#9218](https://github.com/MetaMask/core/pull/9218)) diff --git a/packages/permission-controller/jest.config.js b/packages/permission-controller/jest.config.cjs similarity index 90% rename from packages/permission-controller/jest.config.js rename to packages/permission-controller/jest.config.cjs index e69a27d2955..1a1b5e8c2ce 100644 --- a/packages/permission-controller/jest.config.js +++ b/packages/permission-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/permission-controller/package.json b/packages/permission-controller/package.json index 2be01330905..947be4e7dd0 100644 --- a/packages/permission-controller/package.json +++ b/packages/permission-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/permission-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/permission-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -69,10 +64,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/permission-log-controller/CHANGELOG.md b/packages/permission-log-controller/CHANGELOG.md index 2808f8bdba7..1b864e79cfe 100644 --- a/packages/permission-log-controller/CHANGELOG.md +++ b/packages/permission-log-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/json-rpc-engine` from `^10.2.4` to `^10.5.0` ([#8661](https://github.com/MetaMask/core/pull/8661), [#8746](https://github.com/MetaMask/core/pull/8746), [#8753](https://github.com/MetaMask/core/pull/8753)) diff --git a/packages/permission-log-controller/jest.config.cjs b/packages/permission-log-controller/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/permission-log-controller/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/permission-log-controller/jest.config.js b/packages/permission-log-controller/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/permission-log-controller/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/permission-log-controller/package.json b/packages/permission-log-controller/package.json index b24aa825e53..14e2986f8e3 100644 --- a/packages/permission-log-controller/package.json +++ b/packages/permission-log-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/permission-log-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/permission-log-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -62,13 +57,13 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/deep-freeze-strict": "^1.1.0", "@types/jest": "^30.0.0", "deep-freeze-strict": "^1.1.1", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nanoid": "^3.3.8", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/perps-controller/CHANGELOG.md b/packages/perps-controller/CHANGELOG.md index 9c50edc6a63..25ab5325b2f 100644 --- a/packages/perps-controller/CHANGELOG.md +++ b/packages/perps-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [16.2.0] diff --git a/packages/perps-controller/jest.config.js b/packages/perps-controller/jest.config.cjs similarity index 93% rename from packages/perps-controller/jest.config.js rename to packages/perps-controller/jest.config.cjs index b776cf1a044..76070d8b174 100644 --- a/packages/perps-controller/jest.config.js +++ b/packages/perps-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/perps-controller/package.json b/packages/perps-controller/package.json index 56798bef245..587ea1b5f6e 100644 --- a/packages/perps-controller/package.json +++ b/packages/perps-controller/package.json @@ -18,59 +18,28 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -79,9 +48,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/perps-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/perps-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -117,11 +88,11 @@ "@metamask/profile-sync-controller": "^30.0.0", "@metamask/remote-feature-flag-controller": "^6.1.1", "@metamask/transaction-controller": "^69.8.1", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "@types/uuid": "^8.3.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/phishing-controller/CHANGELOG.md b/packages/phishing-controller/CHANGELOG.md index 275c49b5263..25e27e07276 100644 --- a/packages/phishing-controller/CHANGELOG.md +++ b/packages/phishing-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/transaction-controller` from `^69.8.0` to `^69.8.1` ([#10124](https://github.com/MetaMask/core/pull/10124)) diff --git a/packages/phishing-controller/jest.config.js b/packages/phishing-controller/jest.config.cjs similarity index 90% rename from packages/phishing-controller/jest.config.js rename to packages/phishing-controller/jest.config.cjs index 422b97aa459..e94b4c5e85b 100644 --- a/packages/phishing-controller/jest.config.js +++ b/packages/phishing-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/phishing-controller/package.json b/packages/phishing-controller/package.json index cdfa9c2d14e..4f31832f096 100644 --- a/packages/phishing-controller/package.json +++ b/packages/phishing-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/phishing-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/phishing-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -68,11 +63,11 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/platform-api-docs/CHANGELOG.md b/packages/platform-api-docs/CHANGELOG.md index 32701fa0718..c315c9e72d4 100644 --- a/packages/platform-api-docs/CHANGELOG.md +++ b/packages/platform-api-docs/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Speed up documentation generation by loading source files in bulk instead of one at a time ([#9990](https://github.com/MetaMask/core/pull/9990)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/platform-api-docs/jest.config.js b/packages/platform-api-docs/jest.config.cjs similarity index 92% rename from packages/platform-api-docs/jest.config.js rename to packages/platform-api-docs/jest.config.cjs index 4cf31d3b644..29a133bbdea 100644 --- a/packages/platform-api-docs/jest.config.js +++ b/packages/platform-api-docs/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/platform-api-docs/package.json b/packages/platform-api-docs/package.json index b0d52be93b2..82cfc499339 100644 --- a/packages/platform-api-docs/package.json +++ b/packages/platform-api-docs/package.json @@ -15,19 +15,22 @@ "type": "git", "url": "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/MetaMask/core.git" }, - "bin": "./dist/cli.mjs", + "bin": "./dist/cli.js", "files": [ "dist/", "site/" ], + "type": "module", "sideEffects": false, "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" }, "scripts": { - "build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references", - "build:all": "ts-bridge --project tsconfig.build.json --verbose --clean", + "build": "tsc --project tsconfig.build.json", + "build:all": "tsc --build tsconfig.build.json --verbose", + "build:clean": "yarn build:only-clean && yarn build", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "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", @@ -58,7 +61,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "@types/node": "^22.13.14", "@types/npm-which": "^3", @@ -66,6 +68,7 @@ "@types/yargs": "^17.0.32", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typescript": "~5.3.3" diff --git a/packages/platform-api-docs/src/cli.test.ts b/packages/platform-api-docs/src/cli.test.ts index 0e098788b6e..40fe588eec3 100644 --- a/packages/platform-api-docs/src/cli.test.ts +++ b/packages/platform-api-docs/src/cli.test.ts @@ -149,9 +149,9 @@ export type QuxMessenger = Messenger<'Qux', QuxAction, never>; const result = await runCLI(['--help']); expect(result.exitCode).toBe(0); - expect(result.all).toContain( - 'Produces documentation for the platform API, the set of actions and events\navailable in clients through the message bus', - ); + // Keep this short: yargs wraps the help text to the terminal width, so a + // longer excerpt would depend on where the tests run. + expect(result.all).toContain('Produces documentation for the platform API'); }); it('exits with error when no scannable directories found', async () => { diff --git a/packages/platform-api-docs/src/cli.ts b/packages/platform-api-docs/src/cli.ts index 577c9e0d51e..2967bdb4fbb 100644 --- a/packages/platform-api-docs/src/cli.ts +++ b/packages/platform-api-docs/src/cli.ts @@ -68,7 +68,7 @@ type ParsedArguments = CommonArguments & * @returns Absolute path to the `docusaurus` executable. */ function resolveDocusaurus(): string { - return npmWhich(__dirname).sync('docusaurus'); + return npmWhich(import.meta.dirname).sync('docusaurus'); } /** @@ -103,7 +103,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/polling-controller/CHANGELOG.md b/packages/polling-controller/CHANGELOG.md index c8d396ec484..1a6c24e81b8 100644 --- a/packages/polling-controller/CHANGELOG.md +++ b/packages/polling-controller/CHANGELOG.md @@ -13,6 +13,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/network-controller` from `^35.0.0` to `^35.0.1` ([#9758](https://github.com/MetaMask/core/pull/9758)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/polling-controller/jest.config.js b/packages/polling-controller/jest.config.cjs similarity index 90% rename from packages/polling-controller/jest.config.js rename to packages/polling-controller/jest.config.cjs index 47f2cf906ed..06f2e9e67af 100644 --- a/packages/polling-controller/jest.config.js +++ b/packages/polling-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/polling-controller/package.json b/packages/polling-controller/package.json index 2cfc8d1095d..8f2b8b40e3f 100644 --- a/packages/polling-controller/package.json +++ b/packages/polling-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/polling-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/polling-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -62,10 +57,10 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/messenger": "^2.0.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/preferences-controller/CHANGELOG.md b/packages/preferences-controller/CHANGELOG.md index 84ad4951418..e0b072fb050 100644 --- a/packages/preferences-controller/CHANGELOG.md +++ b/packages/preferences-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.11.0` ([#9074](https://github.com/MetaMask/core/pull/9074)) - Bump `@metamask/messenger` from `^1.0.0` to `^2.0.0` ([#8364](https://github.com/MetaMask/core/pull/8364), [#8373](https://github.com/MetaMask/core/pull/8373), [#8632](https://github.com/MetaMask/core/pull/8632), [#9392](https://github.com/MetaMask/core/pull/9392)) diff --git a/packages/preferences-controller/jest.config.js b/packages/preferences-controller/jest.config.cjs similarity index 90% rename from packages/preferences-controller/jest.config.js rename to packages/preferences-controller/jest.config.cjs index 0929655a0d7..7e9d3a514e9 100644 --- a/packages/preferences-controller/jest.config.js +++ b/packages/preferences-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/preferences-controller/package.json b/packages/preferences-controller/package.json index 47d7120f053..a4bf90b2b11 100644 --- a/packages/preferences-controller/package.json +++ b/packages/preferences-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/preferences-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/preferences-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -61,10 +56,10 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/utils": "^11.12.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/profile-metrics-controller/CHANGELOG.md b/packages/profile-metrics-controller/CHANGELOG.md index d5d4ee3e55b..786569adea7 100644 --- a/packages/profile-metrics-controller/CHANGELOG.md +++ b/packages/profile-metrics-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [4.0.4] diff --git a/packages/profile-metrics-controller/jest.config.js b/packages/profile-metrics-controller/jest.config.cjs similarity index 90% rename from packages/profile-metrics-controller/jest.config.js rename to packages/profile-metrics-controller/jest.config.cjs index 39096b2ce02..9468d682921 100644 --- a/packages/profile-metrics-controller/jest.config.js +++ b/packages/profile-metrics-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/profile-metrics-controller/package.json b/packages/profile-metrics-controller/package.json index 35c2ae2135e..6b00b572b83 100644 --- a/packages/profile-metrics-controller/package.json +++ b/packages/profile-metrics-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/profile-metrics-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/profile-metrics-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -74,11 +69,11 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/keyring-internal-api": "^12.0.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/profile-metrics-controller/tsconfig.json b/packages/profile-metrics-controller/tsconfig.json index 0bcad567710..f5c8ceb09e8 100644 --- a/packages/profile-metrics-controller/tsconfig.json +++ b/packages/profile-metrics-controller/tsconfig.json @@ -35,7 +35,7 @@ * uncompiled source code for packages that live in this repo. * * NOTE: This must be synchronized with the `moduleNameMapper` option in - * `jest.config.packages.js`. + * `jest.config.packages.cjs`. * * NOTE 2: This is not necessary when copying this package to `packages/`. */ diff --git a/packages/profile-sync-controller/CHANGELOG.md b/packages/profile-sync-controller/CHANGELOG.md index 0f029f53704..46581f2e4e8 100644 --- a/packages/profile-sync-controller/CHANGELOG.md +++ b/packages/profile-sync-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Replace `siwe` with `@signinwithethereum/siwe` ^4.2.1 ([#10049](https://github.com/MetaMask/core/pull/10049)) - The old package is no longer maintained by Spruce. The Ethereum Identity Foundation now maintains the successor under the `@signinwithethereum` scope. The `SiweMessage` class API is backward compatible for the usage in this package (`new SiweMessage({...}).prepareMessage()`). diff --git a/packages/profile-sync-controller/jest.config.js b/packages/profile-sync-controller/jest.config.cjs similarity index 86% rename from packages/profile-sync-controller/jest.config.js rename to packages/profile-sync-controller/jest.config.cjs index b8684bca10f..062374f13ff 100644 --- a/packages/profile-sync-controller/jest.config.js +++ b/packages/profile-sync-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); @@ -32,5 +32,5 @@ module.exports = merge(baseConfig, { ], // These tests rely on the Crypto API - testEnvironment: '/jest.environment.js', + testEnvironment: '/jest.environment.cjs', }); diff --git a/packages/profile-sync-controller/jest.environment.js b/packages/profile-sync-controller/jest.environment.cjs similarity index 100% rename from packages/profile-sync-controller/jest.environment.js rename to packages/profile-sync-controller/jest.environment.cjs diff --git a/packages/profile-sync-controller/package.json b/packages/profile-sync-controller/package.json index b1b8463d65b..54006d9b813 100644 --- a/packages/profile-sync-controller/package.json +++ b/packages/profile-sync-controller/package.json @@ -21,69 +21,32 @@ "user-storage/", "sdk/" ], + "type": "module", "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" }, @@ -92,9 +55,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/profile-sync-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/profile-sync-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -130,13 +95,13 @@ "@metamask/keyring-api": "^24.0.0", "@metamask/keyring-internal-api": "^12.0.0", "@metamask/providers": "^22.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "ethers": "^6.12.0", "jest": "^30.4.2", "jest-environment-jsdom": "^30.4.1", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/ramps-controller/CHANGELOG.md b/packages/ramps-controller/CHANGELOG.md index 1cbd5fae24e..45d03751d83 100644 --- a/packages/ramps-controller/CHANGELOG.md +++ b/packages/ramps-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [20.3.0] 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.cjs similarity index 90% rename from packages/ramps-controller/jest.config.js rename to packages/ramps-controller/jest.config.cjs index 0a61b64f2f4..e80b15f9fbf 100644 --- a/packages/ramps-controller/jest.config.js +++ b/packages/ramps-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); 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/ramps-controller/package.json b/packages/ramps-controller/package.json index 3a3324fb878..3617a81728d 100644 --- a/packages/ramps-controller/package.json +++ b/packages/ramps-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/ramps-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/ramps-controller", "dev": "node dev-watch.js", @@ -64,11 +59,11 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/rate-limit-controller/CHANGELOG.md b/packages/rate-limit-controller/CHANGELOG.md index 3428ce2a523..0539b56ad1a 100644 --- a/packages/rate-limit-controller/CHANGELOG.md +++ b/packages/rate-limit-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/messenger` from `^1.0.0` to `^2.0.0` ([#8364](https://github.com/MetaMask/core/pull/8364), [#8373](https://github.com/MetaMask/core/pull/8373), [#8632](https://github.com/MetaMask/core/pull/8632), [#9392](https://github.com/MetaMask/core/pull/9392)) diff --git a/packages/rate-limit-controller/jest.config.js b/packages/rate-limit-controller/jest.config.cjs similarity index 90% rename from packages/rate-limit-controller/jest.config.js rename to packages/rate-limit-controller/jest.config.cjs index 2d216bdd979..8c68d2142ab 100644 --- a/packages/rate-limit-controller/jest.config.js +++ b/packages/rate-limit-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/rate-limit-controller/package.json b/packages/rate-limit-controller/package.json index 5a5b4406431..2a8eadd2bc4 100644 --- a/packages/rate-limit-controller/package.json +++ b/packages/rate-limit-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/rate-limit-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/rate-limit-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -60,10 +55,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/react-data-query/CHANGELOG.md b/packages/react-data-query/CHANGELOG.md index a2a137d968f..7390fdac694 100644 --- a/packages/react-data-query/CHANGELOG.md +++ b/packages/react-data-query/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/react-data-query/jest.config.js b/packages/react-data-query/jest.config.cjs similarity index 91% rename from packages/react-data-query/jest.config.js rename to packages/react-data-query/jest.config.cjs index 16f29aaac46..5ab3fe3aa07 100644 --- a/packages/react-data-query/jest.config.js +++ b/packages/react-data-query/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/react-data-query/package.json b/packages/react-data-query/package.json index 7a7d1107e8b..1aeba121b7d 100644 --- a/packages/react-data-query/package.json +++ b/packages/react-data-query/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/react-data-query", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/react-data-query", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -61,10 +56,10 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/messenger": "^2.0.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/remote-feature-flag-controller/CHANGELOG.md b/packages/remote-feature-flag-controller/CHANGELOG.md index 598c8ebb94d..d75b3f81e2c 100644 --- a/packages/remote-feature-flag-controller/CHANGELOG.md +++ b/packages/remote-feature-flag-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [6.1.1] diff --git a/packages/remote-feature-flag-controller/jest.config.js b/packages/remote-feature-flag-controller/jest.config.cjs similarity index 90% rename from packages/remote-feature-flag-controller/jest.config.js rename to packages/remote-feature-flag-controller/jest.config.cjs index bd46c807c9f..3edac144e09 100644 --- a/packages/remote-feature-flag-controller/jest.config.js +++ b/packages/remote-feature-flag-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/remote-feature-flag-controller/package.json b/packages/remote-feature-flag-controller/package.json index ffc08d23eaf..fae9e1a45bf 100644 --- a/packages/remote-feature-flag-controller/package.json +++ b/packages/remote-feature-flag-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/remote-feature-flag-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/remote-feature-flag-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -64,11 +59,11 @@ "devDependencies": { "@lavamoat/allow-scripts": "^3.0.4", "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/sample-controllers/CHANGELOG.md b/packages/sample-controllers/CHANGELOG.md index 449006ffbda..8dd4d25afbb 100644 --- a/packages/sample-controllers/CHANGELOG.md +++ b/packages/sample-controllers/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/sample-controllers/jest.config.cjs b/packages/sample-controllers/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/sample-controllers/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/sample-controllers/jest.config.js b/packages/sample-controllers/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/sample-controllers/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/sample-controllers/package.json b/packages/sample-controllers/package.json index 003b91b150a..f67371a8fed 100644 --- a/packages/sample-controllers/package.json +++ b/packages/sample-controllers/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/sample-controllers", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/sample-controllers", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -66,11 +61,11 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/controller-utils": "^12.3.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/sample-controllers/tsconfig.json b/packages/sample-controllers/tsconfig.json index c291290d7db..57a908d3930 100644 --- a/packages/sample-controllers/tsconfig.json +++ b/packages/sample-controllers/tsconfig.json @@ -26,7 +26,7 @@ * uncompiled source code for packages that live in this repo. * * NOTE: This must be synchronized with the `moduleNameMapper` option in - * `jest.config.packages.js`. + * `jest.config.packages.cjs`. * * NOTE 2: This is not necessary when copying this package to `packages/`. */ diff --git a/packages/seedless-onboarding-controller/CHANGELOG.md b/packages/seedless-onboarding-controller/CHANGELOG.md index c472e873de9..cfc92374b22 100644 --- a/packages/seedless-onboarding-controller/CHANGELOG.md +++ b/packages/seedless-onboarding-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/keyring-controller` from `^27.1.0` to `^27.1.1` ([#9791](https://github.com/MetaMask/core/pull/9791)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/seedless-onboarding-controller/jest.config.js b/packages/seedless-onboarding-controller/jest.config.cjs similarity index 90% rename from packages/seedless-onboarding-controller/jest.config.js rename to packages/seedless-onboarding-controller/jest.config.cjs index ff67b94d816..0c23b528ade 100644 --- a/packages/seedless-onboarding-controller/jest.config.js +++ b/packages/seedless-onboarding-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/seedless-onboarding-controller/package.json b/packages/seedless-onboarding-controller/package.json index 5e36d7095b7..3e7285da7f2 100644 --- a/packages/seedless-onboarding-controller/package.json +++ b/packages/seedless-onboarding-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/seedless-onboarding-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/seedless-onboarding-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -71,13 +66,13 @@ "@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": "^30.0.0", "@types/json-stable-stringify-without-jsonify": "^1.0.2", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/selected-network-controller/CHANGELOG.md b/packages/selected-network-controller/CHANGELOG.md index 430a1afc9e5..e3babf8ff83 100644 --- a/packages/selected-network-controller/CHANGELOG.md +++ b/packages/selected-network-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/selected-network-controller/jest.config.js b/packages/selected-network-controller/jest.config.cjs similarity index 92% rename from packages/selected-network-controller/jest.config.js rename to packages/selected-network-controller/jest.config.cjs index e6b243e9a43..c3e394df131 100644 --- a/packages/selected-network-controller/jest.config.js +++ b/packages/selected-network-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/selected-network-controller/package.json b/packages/selected-network-controller/package.json index 0d62f1dbc2a..052ffb40602 100644 --- a/packages/selected-network-controller/package.json +++ b/packages/selected-network-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/selected-network-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/selected-network-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -65,14 +60,14 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "immer": "^9.0.6", "jest": "^30.4.2", "jest-environment-jsdom": "^30.4.1", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/sentinel-api-service/CHANGELOG.md b/packages/sentinel-api-service/CHANGELOG.md index 6c9b79f39ec..0435561f762 100644 --- a/packages/sentinel-api-service/CHANGELOG.md +++ b/packages/sentinel-api-service/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/sentinel-api-service/jest.config.cjs b/packages/sentinel-api-service/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/sentinel-api-service/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/sentinel-api-service/jest.config.js b/packages/sentinel-api-service/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/sentinel-api-service/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/sentinel-api-service/package.json b/packages/sentinel-api-service/package.json index 769833fe298..a71316248e6 100644 --- a/packages/sentinel-api-service/package.json +++ b/packages/sentinel-api-service/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/sentinel-api-service", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/sentinel-api-service", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -64,11 +59,11 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/shield-controller/CHANGELOG.md b/packages/shield-controller/CHANGELOG.md index 024396dc1a4..c56044b5eb8 100644 --- a/packages/shield-controller/CHANGELOG.md +++ b/packages/shield-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [6.0.2] diff --git a/packages/shield-controller/jest.config.js b/packages/shield-controller/jest.config.cjs similarity index 90% rename from packages/shield-controller/jest.config.js rename to packages/shield-controller/jest.config.cjs index ae4b5bf5106..05c061d3dea 100644 --- a/packages/shield-controller/jest.config.js +++ b/packages/shield-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/shield-controller/package.json b/packages/shield-controller/package.json index ca98b46cec3..808aff6dcbf 100644 --- a/packages/shield-controller/package.json +++ b/packages/shield-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/shield-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/shield-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -71,11 +66,11 @@ "@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": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/shield-controller/src/ShieldController.ts b/packages/shield-controller/src/ShieldController.ts index 1c1d16fb980..d1fd38ff4e8 100644 --- a/packages/shield-controller/src/ShieldController.ts +++ b/packages/shield-controller/src/ShieldController.ts @@ -14,7 +14,7 @@ import type { TransactionControllerStateChangeEvent, TransactionMeta, } from '@metamask/transaction-controller'; -import { cloneDeep, isEqual } from 'lodash'; +import { cloneDeep, isEqual } from 'lodash-es'; import { controllerName } from './constants.js'; import { projectLogger, createModuleLogger } from './logger.js'; diff --git a/packages/signature-controller/CHANGELOG.md b/packages/signature-controller/CHANGELOG.md index c84c40f709c..e91aaeb4ae9 100644 --- a/packages/signature-controller/CHANGELOG.md +++ b/packages/signature-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/eth-sig-util` from `^8.2.0` to `^9.0.0` ([#9999](https://github.com/MetaMask/core/pull/9999)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/signature-controller/jest.config.js b/packages/signature-controller/jest.config.cjs similarity index 90% rename from packages/signature-controller/jest.config.js rename to packages/signature-controller/jest.config.cjs index 5ff8040ea0b..c8c219e0667 100644 --- a/packages/signature-controller/jest.config.js +++ b/packages/signature-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/signature-controller/package.json b/packages/signature-controller/package.json index 655ddb93990..9a607d42206 100644 --- a/packages/signature-controller/package.json +++ b/packages/signature-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/signature-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/signature-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -67,15 +62,15 @@ "@metamask/network-controller": "^36.0.0", "@metamask/utils": "^11.12.0", "jsonschema": "^1.4.1", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "uuid": "^8.3.2" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/smart-transactions-controller/CHANGELOG.md b/packages/smart-transactions-controller/CHANGELOG.md index a78e2acc90f..8396e728c3f 100644 --- a/packages/smart-transactions-controller/CHANGELOG.md +++ b/packages/smart-transactions-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [26.0.1] diff --git a/packages/smart-transactions-controller/jest.config.js b/packages/smart-transactions-controller/jest.config.cjs similarity index 90% rename from packages/smart-transactions-controller/jest.config.js rename to packages/smart-transactions-controller/jest.config.cjs index 492a07efd4c..fbfc944f8c2 100644 --- a/packages/smart-transactions-controller/jest.config.js +++ b/packages/smart-transactions-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/smart-transactions-controller/package.json b/packages/smart-transactions-controller/package.json index 67fcf31db18..b49e55bc857 100644 --- a/packages/smart-transactions-controller/package.json +++ b/packages/smart-transactions-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/smart-transactions-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/smart-transactions-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -72,16 +67,16 @@ "@metamask/transaction-controller": "^69.8.1", "@metamask/utils": "^11.12.0", "bignumber.js": "^9.1.2", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "reselect": "^5.1.1" }, "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": "^30.4.2", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/smart-transactions-controller/src/SmartTransactionsController.ts b/packages/smart-transactions-controller/src/SmartTransactionsController.ts index d726e1bc858..23e199eafdc 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 { DEFAULT_DISABLED_SMART_TRANSACTIONS_FEATURE_FLAGS, diff --git a/packages/smart-transactions-controller/src/utils.ts b/packages/smart-transactions-controller/src/utils.ts index 9506ab82424..b2153d12a33 100644 --- a/packages/smart-transactions-controller/src/utils.ts +++ b/packages/smart-transactions-controller/src/utils.ts @@ -7,7 +7,7 @@ import type { } from '@metamask/transaction-controller'; import { TransactionStatus } from '@metamask/transaction-controller'; import { BigNumber } from 'bignumber.js'; -import _ from 'lodash'; +import { camelCase, isArray, isObject, mapKeys, mapValues } 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. @@ -135,19 +135,19 @@ export const getStxProcessingTime = ( export const mapKeysToCamel = ( obj: Record, ): Record => { - if (!_.isObject(obj)) { + if (!isObject(obj)) { return obj; } - const mappedValues = _.mapValues(obj, (val: Record) => { - if (_.isArray(val)) { + const mappedValues = mapValues(obj, (val: Record) => { + if (isArray(val)) { return val.map(mapKeysToCamel); - } else if (_.isObject(val)) { + } else if (isObject(val)) { return mapKeysToCamel(val); } return val; }); // eslint-disable-next-line @typescript-eslint/no-unused-vars - return _.mapKeys(mappedValues, (value, key) => _.camelCase(key)); + return mapKeys(mappedValues, (value, key) => camelCase(key)); }; export async function handleFetch(request: string, options?: RequestInit) { diff --git a/packages/snap-account-service/CHANGELOG.md b/packages/snap-account-service/CHANGELOG.md index c11250ea163..16da9c12fb7 100644 --- a/packages/snap-account-service/CHANGELOG.md +++ b/packages/snap-account-service/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/snap-account-service/jest.config.js b/packages/snap-account-service/jest.config.cjs similarity index 90% rename from packages/snap-account-service/jest.config.js rename to packages/snap-account-service/jest.config.cjs index 0eb4a09b245..78bc62a4db7 100644 --- a/packages/snap-account-service/jest.config.js +++ b/packages/snap-account-service/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/snap-account-service/package.json b/packages/snap-account-service/package.json index 18961694201..c7b1208a4ff 100644 --- a/packages/snap-account-service/package.json +++ b/packages/snap-account-service/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/snap-account-service", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/snap-account-service", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -65,15 +60,15 @@ "@metamask/snaps-controllers": "^19.0.0", "@metamask/snaps-sdk": "^11.0.0", "@metamask/utils": "^11.12.0", - "lodash": "^4.17.21" + "lodash-es": "^4.17.21" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/keyring-utils": "^5.0.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/snap-account-service/src/SnapPlatformWatcher.ts b/packages/snap-account-service/src/SnapPlatformWatcher.ts index ec3797464ed..b4ba6869e5f 100644 --- a/packages/snap-account-service/src/SnapPlatformWatcher.ts +++ b/packages/snap-account-service/src/SnapPlatformWatcher.ts @@ -1,5 +1,5 @@ import { createDeferredPromise, DeferredPromise } from '@metamask/utils'; -import { once } from 'lodash'; +import { once } from 'lodash-es'; import { projectLogger as log } from './logger.js'; import type { SnapAccountServiceMessenger } from './SnapAccountService.js'; diff --git a/packages/social-controllers/CHANGELOG.md b/packages/social-controllers/CHANGELOG.md index bbc5abe077e..47ab7e28945 100644 --- a/packages/social-controllers/CHANGELOG.md +++ b/packages/social-controllers/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [2.8.1] diff --git a/packages/social-controllers/jest.config.cjs b/packages/social-controllers/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/social-controllers/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/social-controllers/jest.config.js b/packages/social-controllers/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/social-controllers/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/social-controllers/package.json b/packages/social-controllers/package.json index fdf51c4c574..b6350dff6e4 100644 --- a/packages/social-controllers/package.json +++ b/packages/social-controllers/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/social-controllers", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/social-controllers", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -64,10 +59,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/solana-test-validator-up/CHANGELOG.md b/packages/solana-test-validator-up/CHANGELOG.md index 854b66c5bab..2d6fa4273a8 100644 --- a/packages/solana-test-validator-up/CHANGELOG.md +++ b/packages/solana-test-validator-up/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [1.0.0] diff --git a/packages/solana-test-validator-up/jest.config.js b/packages/solana-test-validator-up/jest.config.cjs similarity index 92% rename from packages/solana-test-validator-up/jest.config.js rename to packages/solana-test-validator-up/jest.config.cjs index fd487307ddd..96c64c8c389 100644 --- a/packages/solana-test-validator-up/jest.config.js +++ b/packages/solana-test-validator-up/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/solana-test-validator-up/package.json b/packages/solana-test-validator-up/package.json index 3e0cee63644..5bfa8c5279e 100644 --- a/packages/solana-test-validator-up/package.json +++ b/packages/solana-test-validator-up/package.json @@ -15,23 +15,16 @@ "type": "git", "url": "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/MetaMask/core.git" }, - "bin": "./dist/bin/solana-test-validator-up.mjs", + "bin": "./dist/bin/solana-test-validator-up.js", "files": [ "dist/" ], + "type": "module", "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" }, @@ -40,9 +33,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/solana-test-validator-up", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/solana-test-validator-up", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -60,10 +55,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/stellar-quickstart-up/CHANGELOG.md b/packages/stellar-quickstart-up/CHANGELOG.md index 7d3ae898bdb..3485cde502f 100644 --- a/packages/stellar-quickstart-up/CHANGELOG.md +++ b/packages/stellar-quickstart-up/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) [Unreleased]: https://github.com/MetaMask/core/ diff --git a/packages/stellar-quickstart-up/jest.config.cjs b/packages/stellar-quickstart-up/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/stellar-quickstart-up/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/stellar-quickstart-up/jest.config.js b/packages/stellar-quickstart-up/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/stellar-quickstart-up/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/stellar-quickstart-up/package.json b/packages/stellar-quickstart-up/package.json index 33a3c170510..8d4e0444744 100644 --- a/packages/stellar-quickstart-up/package.json +++ b/packages/stellar-quickstart-up/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/stellar-quickstart-up", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/stellar-quickstart-up", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -56,10 +51,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/storage-service/CHANGELOG.md b/packages/storage-service/CHANGELOG.md index e6c103975cf..57c7c87de3a 100644 --- a/packages/storage-service/CHANGELOG.md +++ b/packages/storage-service/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/utils` from `^11.9.0` to `^11.12.0` ([#9074](https://github.com/MetaMask/core/pull/9074), [#10076](https://github.com/MetaMask/core/pull/10076)) - Bump `@metamask/messenger` from `^1.2.0` to `^2.0.0` ([#9392](https://github.com/MetaMask/core/pull/9392)) diff --git a/packages/storage-service/jest.config.cjs b/packages/storage-service/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/storage-service/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/storage-service/jest.config.js b/packages/storage-service/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/storage-service/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/storage-service/package.json b/packages/storage-service/package.json index f0ccd775d77..9133e7b7a90 100644 --- a/packages/storage-service/package.json +++ b/packages/storage-service/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/storage-service", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/storage-service", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -60,10 +55,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/subscription-controller/CHANGELOG.md b/packages/subscription-controller/CHANGELOG.md index 082b51b7dcd..4243cd5ee57 100644 --- a/packages/subscription-controller/CHANGELOG.md +++ b/packages/subscription-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) ## [8.1.0] diff --git a/packages/subscription-controller/jest.config.cjs b/packages/subscription-controller/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/subscription-controller/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/subscription-controller/jest.config.js b/packages/subscription-controller/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/subscription-controller/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/subscription-controller/package.json b/packages/subscription-controller/package.json index e5c3d1bec93..eb575293aa1 100644 --- a/packages/subscription-controller/package.json +++ b/packages/subscription-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/subscription-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/subscription-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -70,10 +65,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/transaction-controller/CHANGELOG.md b/packages/transaction-controller/CHANGELOG.md index b4906ce730d..92fb835d3a1 100644 --- a/packages/transaction-controller/CHANGELOG.md +++ b/packages/transaction-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/core-backend` from `^9.0.0` to `^9.1.1` ([#10138](https://github.com/MetaMask/core/pull/10138), [#10139](https://github.com/MetaMask/core/pull/10139)) - Bump `@metamask/remote-feature-flag-controller` from `^6.1.0` to `^6.1.1` ([#10129](https://github.com/MetaMask/core/pull/10129)) diff --git a/packages/transaction-controller/jest.config.js b/packages/transaction-controller/jest.config.cjs similarity index 91% rename from packages/transaction-controller/jest.config.js rename to packages/transaction-controller/jest.config.cjs index 636e85e9785..be6f5d6833e 100644 --- a/packages/transaction-controller/jest.config.js +++ b/packages/transaction-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/transaction-controller/package.json b/packages/transaction-controller/package.json index 6b487809cd5..ef52e5fd18a 100644 --- a/packages/transaction-controller/package.json +++ b/packages/transaction-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/transaction-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/transaction-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -81,7 +76,7 @@ "eth-method-registry": "^4.0.0", "ethereum-cryptography": "^2.1.2", "fast-json-patch": "^3.1.1", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "uuid": "^8.3.2" }, "devDependencies": { @@ -91,7 +86,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": "^30.0.0", "@types/node": "^22.13.14", @@ -100,6 +94,7 @@ "jest": "^30.4.2", "jest-environment-jsdom": "^30.4.1", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/transaction-controller/src/TransactionController.ts b/packages/transaction-controller/src/TransactionController.ts index 5b9deaced95..778d5f56e36 100644 --- a/packages/transaction-controller/src/TransactionController.ts +++ b/packages/transaction-controller/src/TransactionController.ts @@ -68,7 +68,7 @@ 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.js'; diff --git a/packages/transaction-controller/src/api/simulation-api.test.ts b/packages/transaction-controller/src/api/simulation-api.test.ts index 74191d0668b..8148c9bee08 100644 --- a/packages/transaction-controller/src/api/simulation-api.test.ts +++ b/packages/transaction-controller/src/api/simulation-api.test.ts @@ -1,5 +1,5 @@ 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.js'; diff --git a/packages/transaction-controller/src/api/simulation-api.ts b/packages/transaction-controller/src/api/simulation-api.ts index 4d080a3055e..ff16cbbb050 100644 --- a/packages/transaction-controller/src/api/simulation-api.ts +++ b/packages/transaction-controller/src/api/simulation-api.ts @@ -1,7 +1,7 @@ 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, diff --git a/packages/transaction-controller/src/helpers/PendingTransactionTracker.ts b/packages/transaction-controller/src/helpers/PendingTransactionTracker.ts index a510d828ca2..80b0918635c 100644 --- a/packages/transaction-controller/src/helpers/PendingTransactionTracker.ts +++ b/packages/transaction-controller/src/helpers/PendingTransactionTracker.ts @@ -6,7 +6,7 @@ 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.js'; import type { TransactionControllerMessenger } from '../TransactionController.js'; diff --git a/packages/transaction-controller/src/helpers/ResimulateHelper.ts b/packages/transaction-controller/src/helpers/ResimulateHelper.ts index 123f9ff190b..5e3875d1676 100644 --- a/packages/transaction-controller/src/helpers/ResimulateHelper.ts +++ b/packages/transaction-controller/src/helpers/ResimulateHelper.ts @@ -1,7 +1,7 @@ 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.js'; import { TransactionContainerType, TransactionStatus } from '../types.js'; diff --git a/packages/transaction-controller/src/helpers/TransactionPoller.ts b/packages/transaction-controller/src/helpers/TransactionPoller.ts index 406400e2a3d..0c87c10b4a3 100644 --- a/packages/transaction-controller/src/helpers/TransactionPoller.ts +++ b/packages/transaction-controller/src/helpers/TransactionPoller.ts @@ -2,7 +2,7 @@ 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.js'; import type { TransactionControllerMessenger } from '../TransactionController.js'; diff --git a/packages/transaction-controller/src/hooks/CollectPublishHook.test.ts b/packages/transaction-controller/src/hooks/CollectPublishHook.test.ts index ce853bf9a22..23bf3f27ac8 100644 --- a/packages/transaction-controller/src/hooks/CollectPublishHook.test.ts +++ b/packages/transaction-controller/src/hooks/CollectPublishHook.test.ts @@ -1,4 +1,4 @@ -import { noop } from 'lodash'; +import { noop } from 'lodash-es'; import { flushPromises } from '../../../../tests/helpers.js'; import type { TransactionMeta } from '../index.js'; diff --git a/packages/transaction-controller/src/hooks/CollectPublishHook.ts b/packages/transaction-controller/src/hooks/CollectPublishHook.ts index 978608f61e8..5e15e8fd4b9 100644 --- a/packages/transaction-controller/src/hooks/CollectPublishHook.ts +++ b/packages/transaction-controller/src/hooks/CollectPublishHook.ts @@ -1,6 +1,6 @@ import type { DeferredPromise, Hex } from '@metamask/utils'; import { createDeferredPromise, createModuleLogger } from '@metamask/utils'; -import { sortBy } from 'lodash'; +import { sortBy } from 'lodash-es'; import { projectLogger } from '../logger.js'; import type { diff --git a/packages/transaction-controller/src/utils/batch.test.ts b/packages/transaction-controller/src/utils/batch.test.ts index 43d84bd8c41..040739a4929 100644 --- a/packages/transaction-controller/src/utils/batch.test.ts +++ b/packages/transaction-controller/src/utils/batch.test.ts @@ -2,7 +2,7 @@ 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'; 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 9b769acd2da..ea9db48a3dc 100644 --- a/packages/transaction-controller/src/utils/gas-fee-tokens.test.ts +++ b/packages/transaction-controller/src/utils/gas-fee-tokens.test.ts @@ -1,5 +1,5 @@ import type { Hex } from '@metamask/utils'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; import { simulateTransactions } from '../api/simulation-api.js'; import type { diff --git a/packages/transaction-controller/src/utils/gas.test.ts b/packages/transaction-controller/src/utils/gas.test.ts index 0d15aca708e..01e7d585a35 100644 --- a/packages/transaction-controller/src/utils/gas.test.ts +++ b/packages/transaction-controller/src/utils/gas.test.ts @@ -1,7 +1,7 @@ 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, diff --git a/packages/transaction-controller/src/utils/prepare.ts b/packages/transaction-controller/src/utils/prepare.ts index 96bd589b672..1586f750984 100644 --- a/packages/transaction-controller/src/utils/prepare.ts +++ b/packages/transaction-controller/src/utils/prepare.ts @@ -4,7 +4,7 @@ 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.js'; diff --git a/packages/transaction-controller/src/utils/swaps.ts b/packages/transaction-controller/src/utils/swaps.ts index 685cf00cc35..04e5cfd38e9 100644 --- a/packages/transaction-controller/src/utils/swaps.ts +++ b/packages/transaction-controller/src/utils/swaps.ts @@ -1,5 +1,5 @@ import type { NetworkClientId } from '@metamask/network-controller'; -import { merge, pickBy } from 'lodash'; +import { merge, pickBy } from 'lodash-es'; import { CHAIN_IDS } from '../constants.js'; import { createModuleLogger, projectLogger } from '../logger.js'; diff --git a/packages/transaction-pay-controller/CHANGELOG.md b/packages/transaction-pay-controller/CHANGELOG.md index efafd800143..cf5948a2c5d 100644 --- a/packages/transaction-pay-controller/CHANGELOG.md +++ b/packages/transaction-pay-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/assets-controllers` from `^111.2.0` to `^111.3.0` ([#10152](https://github.com/MetaMask/core/pull/10152)) diff --git a/packages/transaction-pay-controller/jest.config.js b/packages/transaction-pay-controller/jest.config.cjs similarity index 90% rename from packages/transaction-pay-controller/jest.config.js rename to packages/transaction-pay-controller/jest.config.cjs index 363ffd2deb8..92659169abb 100644 --- a/packages/transaction-pay-controller/jest.config.js +++ b/packages/transaction-pay-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/transaction-pay-controller/package.json b/packages/transaction-pay-controller/package.json index ae03d623549..01e2a71aa84 100644 --- a/packages/transaction-pay-controller/package.json +++ b/packages/transaction-pay-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/transaction-pay-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/transaction-pay-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -76,14 +71,14 @@ "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", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/transaction-pay-controller/src/TransactionPayController.ts b/packages/transaction-pay-controller/src/TransactionPayController.ts index b522deed48f..60e47e74567 100644 --- a/packages/transaction-pay-controller/src/TransactionPayController.ts +++ b/packages/transaction-pay-controller/src/TransactionPayController.ts @@ -2,7 +2,7 @@ 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.js'; import { updatePaymentToken } from './actions/update-payment-token.js'; 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 58baa2427b5..10f28b800fc 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,5 +1,5 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; -import { noop } from 'lodash'; +import { noop } from 'lodash-es'; import type { TransactionData, TransactionFiatPayment } from '../types.js'; import { getTransaction } from '../utils/transaction.js'; 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 d637f586166..7184ea2bbab 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,5 +1,5 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; -import { noop } from 'lodash'; +import { noop } from 'lodash-es'; import type { TransactionData, TransactionPaymentToken } from '../types.js'; import { diff --git a/packages/transaction-pay-controller/src/helpers/QuoteRefresher.ts b/packages/transaction-pay-controller/src/helpers/QuoteRefresher.ts index f90e2e58c3e..df9dc8eaad2 100644 --- a/packages/transaction-pay-controller/src/helpers/QuoteRefresher.ts +++ b/packages/transaction-pay-controller/src/helpers/QuoteRefresher.ts @@ -1,6 +1,6 @@ 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 type { 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 256b48af94e..9e55914678b 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 @@ -5,7 +5,7 @@ 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.js'; import { 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 7daade07019..c0719865cdc 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,7 +1,7 @@ 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.js'; import type { TransactionPayQuote } from '../../types.js'; 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 c2ee7db26eb..9a6da6422ee 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 @@ -5,7 +5,7 @@ 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.js'; import { getMessengerMock } from '../../tests/messenger-mock.js'; 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 0d0230b6081..fbe12854135 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 @@ -2,7 +2,7 @@ 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.js'; import { getMessengerMock } from '../../tests/messenger-mock.js'; diff --git a/packages/transaction-pay-controller/src/tests/messenger-mock.ts b/packages/transaction-pay-controller/src/tests/messenger-mock.ts index f81bbf7516d..96fd295e4be 100644 --- a/packages/transaction-pay-controller/src/tests/messenger-mock.ts +++ b/packages/transaction-pay-controller/src/tests/messenger-mock.ts @@ -46,10 +46,13 @@ type RootMessenger = Messenger; * @param options.skipRegister - Whether to skip registering action handlers. * @returns The mock messenger and associated mock functions. */ -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type +// TS2742: The inferred type of 'getMessengerMock' cannot be named without a +// reference to '../../../../node_modules/@metamask/transaction-controller/dist/utils/gas.js'. +// This is likely not portable. A type annotation is necessary. export function getMessengerMock({ skipRegister, -}: { skipRegister?: boolean } = {}) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any +}: { skipRegister?: boolean } = {}): any { const getControllerStateMock: jest.MockedFn< TransactionPayControllerGetStateAction['handler'] > = jest.fn(); diff --git a/packages/transaction-pay-controller/src/utils/feature-flags.ts b/packages/transaction-pay-controller/src/utils/feature-flags.ts index b9c34ebc06d..349c69941a0 100644 --- a/packages/transaction-pay-controller/src/utils/feature-flags.ts +++ b/packages/transaction-pay-controller/src/utils/feature-flags.ts @@ -6,7 +6,7 @@ import type { 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, diff --git a/packages/transaction-pay-controller/src/utils/gas.test.ts b/packages/transaction-pay-controller/src/utils/gas.test.ts index 83fb3ab603a..8a3edf9de11 100644 --- a/packages/transaction-pay-controller/src/utils/gas.test.ts +++ b/packages/transaction-pay-controller/src/utils/gas.test.ts @@ -1,6 +1,6 @@ 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/index.js'; import type { diff --git a/packages/transaction-pay-controller/src/utils/quotes.test.ts b/packages/transaction-pay-controller/src/utils/quotes.test.ts index ac3d246c11b..71c582f8fe8 100644 --- a/packages/transaction-pay-controller/src/utils/quotes.test.ts +++ b/packages/transaction-pay-controller/src/utils/quotes.test.ts @@ -2,7 +2,7 @@ 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.js'; import { getMessengerMock } from '../tests/messenger-mock.js'; diff --git a/packages/transaction-pay-controller/src/utils/transaction.test.ts b/packages/transaction-pay-controller/src/utils/transaction.test.ts index 8db399076d4..68fe77d7935 100644 --- a/packages/transaction-pay-controller/src/utils/transaction.test.ts +++ b/packages/transaction-pay-controller/src/utils/transaction.test.ts @@ -8,7 +8,7 @@ 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.js'; import { getMessengerMock } from '../tests/messenger-mock.js'; diff --git a/packages/transaction-pay-controller/src/utils/transaction.ts b/packages/transaction-pay-controller/src/utils/transaction.ts index 5713675a37c..3978940281f 100644 --- a/packages/transaction-pay-controller/src/utils/transaction.ts +++ b/packages/transaction-pay-controller/src/utils/transaction.ts @@ -6,7 +6,7 @@ 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.js'; import type { diff --git a/packages/user-operation-controller/CHANGELOG.md b/packages/user-operation-controller/CHANGELOG.md index 2de4839b4e6..b5d8d180436 100644 --- a/packages/user-operation-controller/CHANGELOG.md +++ b/packages/user-operation-controller/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/transaction-controller` from `^69.6.1` to `^69.8.1` ([#10046](https://github.com/MetaMask/core/pull/10046), [#10080](https://github.com/MetaMask/core/pull/10080), [#10124](https://github.com/MetaMask/core/pull/10124)) - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076)) diff --git a/packages/user-operation-controller/jest.config.js b/packages/user-operation-controller/jest.config.cjs similarity index 90% rename from packages/user-operation-controller/jest.config.js rename to packages/user-operation-controller/jest.config.cjs index 53362a9b4f2..3e0c784acac 100644 --- a/packages/user-operation-controller/jest.config.js +++ b/packages/user-operation-controller/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); diff --git a/packages/user-operation-controller/package.json b/packages/user-operation-controller/package.json index 46d1a0a1c08..ebcd0bfa2d5 100644 --- a/packages/user-operation-controller/package.json +++ b/packages/user-operation-controller/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/user-operation-controller", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/user-operation-controller", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -71,16 +66,16 @@ "@metamask/utils": "^11.12.0", "bn.js": "^5.2.1", "immer": "^9.0.6", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "uuid": "^8.3.2" }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/eth-block-tracker": "^15.0.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/user-operation-controller/src/UserOperationController.ts b/packages/user-operation-controller/src/UserOperationController.ts index f3785ec2b46..a33a0f22b38 100644 --- a/packages/user-operation-controller/src/UserOperationController.ts +++ b/packages/user-operation-controller/src/UserOperationController.ts @@ -30,7 +30,7 @@ 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.js'; 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 3aaddfdbb7b..79d3f396a55 100644 --- a/packages/user-operation-controller/src/utils/gas-fees.test.ts +++ b/packages/user-operation-controller/src/utils/gas-fees.test.ts @@ -3,7 +3,7 @@ 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.js'; import { updateGasFees } from './gas-fees.js'; diff --git a/packages/user-operation-controller/src/utils/gas.test.ts b/packages/user-operation-controller/src/utils/gas.test.ts index 04bbdaf9529..35dc2c094a0 100644 --- a/packages/user-operation-controller/src/utils/gas.test.ts +++ b/packages/user-operation-controller/src/utils/gas.test.ts @@ -1,4 +1,4 @@ -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; import { VALUE_ZERO } from '../constants.js'; import type { BundlerEstimateUserOperationGasResponse } from '../helpers/Bundler.js'; diff --git a/packages/user-operation-controller/src/utils/validation.test.ts b/packages/user-operation-controller/src/utils/validation.test.ts index ac45e248373..b7faa6daf56 100644 --- a/packages/user-operation-controller/src/utils/validation.test.ts +++ b/packages/user-operation-controller/src/utils/validation.test.ts @@ -1,7 +1,7 @@ /* eslint-disable jest/expect-expect */ import { TransactionType } from '@metamask/transaction-controller'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; import type { PrepareUserOperationResponse, diff --git a/packages/wallet-cli/jest.config.js b/packages/wallet-cli/jest.config.cjs similarity index 92% rename from packages/wallet-cli/jest.config.js rename to packages/wallet-cli/jest.config.cjs index 2c7fd279302..16a8801da44 100644 --- a/packages/wallet-cli/jest.config.js +++ b/packages/wallet-cli/jest.config.cjs @@ -6,7 +6,7 @@ const merge = require('deepmerge'); const path = require('path'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); const displayName = path.basename(__dirname); @@ -17,7 +17,7 @@ module.exports = merge(baseConfig, { // The e2e test constructs a real KeyringController, which needs the Web // Crypto API; this environment polyfills `crypto` when the test realm (Node // < 21 under --experimental-vm-modules) lacks it. - testEnvironment: '/jest.environment.js', + testEnvironment: '/jest.environment.cjs', // The test harness in `src/test/` is exercised by the command tests but // not all of its error/edge branches are worth driving directly — it's diff --git a/packages/wallet-cli/jest.config.e2e.js b/packages/wallet-cli/jest.config.e2e.cjs similarity index 87% rename from packages/wallet-cli/jest.config.e2e.js rename to packages/wallet-cli/jest.config.e2e.cjs index aff6a9372c3..60484cd9bb8 100644 --- a/packages/wallet-cli/jest.config.e2e.js +++ b/packages/wallet-cli/jest.config.e2e.cjs @@ -10,7 +10,7 @@ const merge = require('deepmerge'); -const baseConfig = require('../../jest.config.packages'); +const baseConfig = require('../../jest.config.packages.cjs'); module.exports = merge(baseConfig, { displayName: 'wallet-cli:e2e', @@ -24,7 +24,7 @@ module.exports = merge(baseConfig, { collectCoverage: false, // The CLI runs in a normal Node process with the Web Crypto globals, so this - // suite needs neither the `jest.environment.js` polyfill nor any coverage + // suite needs neither the `jest.environment.cjs` polyfill nor any coverage // threshold. testEnvironment: 'node', }); diff --git a/packages/wallet-cli/jest.environment.js b/packages/wallet-cli/jest.environment.cjs similarity index 100% rename from packages/wallet-cli/jest.environment.js rename to packages/wallet-cli/jest.environment.cjs diff --git a/packages/wallet-cli/package.json b/packages/wallet-cli/package.json index 6ac90ab3f91..3c274d318cf 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" @@ -31,8 +32,10 @@ "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:clean": "yarn build:only-clean && yarn build", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "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", @@ -40,7 +43,7 @@ "since-latest-release": "../../scripts/since-latest-release.sh", "test": "yarn test:prepare && NODE_OPTIONS=--experimental-vm-modules jest --reporters=jest-silent-reporter", "test:clean": "NODE_OPTIONS=--experimental-vm-modules jest --clearCache", - "test:e2e": "yarn test:prepare && NODE_OPTIONS=--experimental-vm-modules jest --config jest.config.e2e.js", + "test:e2e": "yarn test:prepare && NODE_OPTIONS=--experimental-vm-modules jest --config jest.config.e2e.cjs", "test:e2e:install-anvil": "mm-foundryup", "test:prepare": "./scripts/install-binaries.sh", "test:verbose": "NODE_OPTIONS=--experimental-vm-modules jest --verbose", @@ -67,13 +70,13 @@ "devDependencies": { "@metamask/auto-changelog": "^6.1.0", "@metamask/foundryup": "^1.0.1", - "@ts-bridge/cli": "^0.6.4", "@types/better-sqlite3": "^7.6.13", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", "jest-environment-node": "^30.4.1", "nock": "^13.3.1", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typescript": "~5.3.3" diff --git a/packages/wallet-cli/src/daemon/prompts.test.ts b/packages/wallet-cli/src/daemon/prompts.test.ts index 2ab323496fe..f2c98294565 100644 --- a/packages/wallet-cli/src/daemon/prompts.test.ts +++ b/packages/wallet-cli/src/daemon/prompts.test.ts @@ -1,16 +1,17 @@ // `@inquirer/confirm` and `@inquirer/password` are ESM-only and `prompts.ts` -// reaches them via dynamic `import()`. Use jest's ESM mock API and dynamic -// imports to mirror that. The import statements below tag this file as a -// module for the `import-x/unambiguous` lint rule, even though they import -// only types. +// reaches them via dynamic `import()`. The tests compile to CommonJS, which +// turns those into `require()`, so the plain mock API applies to them and the +// real ESM-only packages are never loaded. The import statements below tag +// this file as a module for the `import-x/unambiguous` lint rule, even though +// they import only types. import type Confirm from '@inquirer/confirm'; import type Password from '@inquirer/password'; -jest.unstable_mockModule('@inquirer/confirm', () => ({ +jest.mock('@inquirer/confirm', () => ({ __esModule: true, default: jest.fn(), })); -jest.unstable_mockModule('@inquirer/password', () => ({ +jest.mock('@inquirer/password', () => ({ __esModule: true, default: jest.fn(), })); 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-framework-docs/jest.config.cjs b/packages/wallet-framework-docs/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/wallet-framework-docs/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/wallet-framework-docs/jest.config.js b/packages/wallet-framework-docs/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/wallet-framework-docs/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/wallet-framework-docs/package.json b/packages/wallet-framework-docs/package.json index ebc2e8ed354..eecc7081f29 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/CHANGELOG.md b/packages/wallet/CHANGELOG.md index 8d34b9436b1..a56535086c9 100644 --- a/packages/wallet/CHANGELOG.md +++ b/packages/wallet/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536)) + - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions. - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976)) - Bump `@metamask/claims-controller` from `^0.6.1` to `^0.6.2` ([#10139](https://github.com/MetaMask/core/pull/10139)) - Bump `@metamask/shield-controller` from `^6.0.1` to `^6.0.2` ([#10139](https://github.com/MetaMask/core/pull/10139)) diff --git a/packages/wallet/jest.config.cjs b/packages/wallet/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/packages/wallet/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/packages/wallet/jest.config.js b/packages/wallet/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/packages/wallet/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/packages/wallet/package.json b/packages/wallet/package.json index 43ea96e295b..85ce2417390 100644 --- a/packages/wallet/package.json +++ b/packages/wallet/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh @metamask/wallet", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/wallet", "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts", @@ -80,10 +75,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/packages/wallet/src/utilities.ts b/packages/wallet/src/utilities.ts index 360d73f2bc2..ad02ef2c489 100644 --- a/packages/wallet/src/utilities.ts +++ b/packages/wallet/src/utilities.ts @@ -1,4 +1,4 @@ -import { wordlist } from '@metamask/scure-bip39/dist/wordlists/english'; +import { wordlist } from '@metamask/scure-bip39/dist/wordlists/english.js'; import { Wallet } from './Wallet.js'; diff --git a/scripts/create-package/cli.test.ts b/scripts/create-package/cli.test.ts index 21f7cb254ff..7d85f9c09af 100644 --- a/scripts/create-package/cli.test.ts +++ b/scripts/create-package/cli.test.ts @@ -1,8 +1,22 @@ -import cli from './cli.js'; -import { commands, commandMap } from './commands.js'; -import * as utils from './utils.js'; - -jest.mock('./utils'); +import { jest } from '@jest/globals'; + +// `jest.mock` does not apply to ES modules, so the module registry is stubbed +// with `jest.unstable_mockModule` and the modules under test are imported +// dynamically afterwards. +jest.unstable_mockModule('./utils.js', () => ({ + readMonorepoFiles: jest.fn(), + finalizeAndWriteData: jest.fn(), +})); + +// yargs' ESM shim captures `process.exit` by reference when it is loaded, so +// the spy has to be installed before `cli.js` pulls yargs in. Its +// implementation is re-armed in `beforeEach`, because `resetMocks` clears it +// between tests. +const exitSpy = jest.spyOn(process, 'exit'); + +const { default: cli } = await import('./cli.js'); +const { commands, commandMap } = await import('./commands.js'); +const utils = await import('./utils.js'); /** * Returns a mock `process.argv` array with the provided arguments. Includes @@ -44,7 +58,7 @@ describe('create-package/cli', () => { beforeEach(() => { // yargs calls process.exit() with 1 on failure and sometimes 0 on success. // We have to intercept it. - jest.spyOn(process, 'exit').mockImplementation((code) => { + exitSpy.mockImplementation((code) => { if (code === 1) { throw new Error('exit: 1'); } else { @@ -63,7 +77,9 @@ describe('create-package/cli', () => { it('should error if a string option contains only whitespace', async () => { const defaultCommand = commandMap.$0; - jest.spyOn(defaultCommand, 'handler').mockImplementation(); + jest + .spyOn(defaultCommand, 'handler') + .mockImplementation(async () => undefined); await expect(cli(getMockArgv('--name', ' '), commands)).rejects.toThrow( 'exit: 1', @@ -79,14 +95,14 @@ describe('create-package/cli', () => { const defaultCommand = commandMap.$0; jest.spyOn(defaultCommand, 'handler'); - jest.spyOn(utils, 'readMonorepoFiles').mockResolvedValue({ + jest.mocked(utils.readMonorepoFiles).mockResolvedValue({ tsConfig: {}, tsConfigBuild: {}, nodeVersions: '>=18.0.0', // TODO: Replace `any` with type // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any); - jest.spyOn(utils, 'finalizeAndWriteData').mockResolvedValue(); + jest.mocked(utils.finalizeAndWriteData).mockResolvedValue(); expect( await cli( @@ -105,14 +121,14 @@ describe('create-package/cli', () => { const defaultCommand = commandMap.$0; jest.spyOn(defaultCommand, 'handler'); - jest.spyOn(utils, 'readMonorepoFiles').mockResolvedValue({ + jest.mocked(utils.readMonorepoFiles).mockResolvedValue({ tsConfig: {}, tsConfigBuild: {}, nodeVersions: '>=18.0.0', // TODO: Replace `any` with type // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any); - jest.spyOn(utils, 'finalizeAndWriteData').mockResolvedValue(); + jest.mocked(utils.finalizeAndWriteData).mockResolvedValue(); expect( await cli( @@ -129,7 +145,9 @@ describe('create-package/cli', () => { it('should create a new package', async () => { const defaultCommand = commandMap.$0; - jest.spyOn(defaultCommand, 'handler').mockImplementation(); + jest + .spyOn(defaultCommand, 'handler') + .mockImplementation(async () => undefined); expect( await cli( @@ -146,7 +164,9 @@ describe('create-package/cli', () => { it('should error if the package name is missing', async () => { const defaultCommand = commandMap.$0; - jest.spyOn(defaultCommand, 'handler').mockImplementation(); + jest + .spyOn(defaultCommand, 'handler') + .mockImplementation(async () => undefined); await expect( cli(getMockArgv('--description', 'bar'), commands), @@ -159,7 +179,9 @@ describe('create-package/cli', () => { it('should error if the package description is missing', async () => { const defaultCommand = commandMap.$0; - jest.spyOn(defaultCommand, 'handler').mockImplementation(); + jest + .spyOn(defaultCommand, 'handler') + .mockImplementation(async () => undefined); await expect(cli(getMockArgv('--name', 'foo'), commands)).rejects.toThrow( 'exit: 1', diff --git a/scripts/create-package/commands.test.ts b/scripts/create-package/commands.test.ts index 4e51bf7ec46..5276ea42cbf 100644 --- a/scripts/create-package/commands.test.ts +++ b/scripts/create-package/commands.test.ts @@ -1,21 +1,26 @@ +import { jest } from '@jest/globals'; import type { Arguments } from 'yargs'; import type { CreatePackageOptions } from './commands.js'; -import { createPackageHandler } from './commands.js'; -import * as utils from './utils.js'; -jest.mock('./utils', () => ({ +// `jest.mock` does not apply to ES modules, so the module registry is stubbed +// with `jest.unstable_mockModule` and the modules under test are imported +// dynamically afterwards. +jest.unstable_mockModule('./utils.js', () => ({ finalizeAndWriteData: jest.fn(), readMonorepoFiles: jest.fn(), })); +const utils = await import('./utils.js'); +const { createPackageHandler } = await import('./commands.js'); + // January 2 to avoid time zone issues. jest.useFakeTimers().setSystemTime(new Date('2023-01-02')); describe('create-package/commands', () => { describe('createPackageHandler', () => { it('should create the expected package', async () => { - (utils.readMonorepoFiles as jest.Mock).mockResolvedValue({ + jest.mocked(utils.readMonorepoFiles).mockResolvedValue({ tsConfig: { references: [{ path: '../packages/foo' }], }, diff --git a/scripts/create-package/index.test.ts b/scripts/create-package/index.test.ts index 39436aea78c..56d730ba1af 100644 --- a/scripts/create-package/index.test.ts +++ b/scripts/create-package/index.test.ts @@ -1,7 +1,15 @@ -import cli from './cli.js'; -import { commands } from './commands.js'; +import { jest } from '@jest/globals'; -jest.mock('./cli'); +// `jest.mock` does not apply to ES modules, so the module registry is stubbed +// with `jest.unstable_mockModule` and the modules under test are imported +// dynamically afterwards. +jest.unstable_mockModule('./cli.js', () => ({ + __esModule: true, + default: jest.fn(), +})); + +const { default: cli } = await import('./cli.js'); +const { commands } = await import('./commands.js'); describe('create-package/index', () => { let originalProcess: typeof globalThis.process; @@ -16,13 +24,12 @@ describe('create-package/index', () => { }); it('executes the CLI application', async () => { - const mock = cli as jest.MockedFunction; - mock.mockRejectedValue('foo'); + jest.mocked(cli).mockRejectedValue('foo'); - jest.spyOn(console, 'error').mockImplementation(); + jest.spyOn(console, 'error').mockImplementation(() => undefined); - // eslint-disable-next-line @typescript-eslint/no-require-imports, n/global-require, import-x/no-unassigned-import - require('.'); + // Importing the entry point runs it, which is the behaviour under test. + await import('./index.js'); await new Promise((resolve) => setImmediate(resolve)); expect(cli).toHaveBeenCalledTimes(1); diff --git a/scripts/create-package/package-template/jest.config.cjs b/scripts/create-package/package-template/jest.config.cjs new file mode 100644 index 00000000000..6456e074bb0 --- /dev/null +++ b/scripts/create-package/package-template/jest.config.cjs @@ -0,0 +1,26 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +const merge = require('deepmerge'); +const path = require('path'); + +const baseConfig = require('../../jest.config.packages.cjs'); + +const displayName = path.basename(__dirname); + +module.exports = merge(baseConfig, { + // The display name when running multiple projects + displayName, + + // An object that configures minimum threshold enforcement for coverage results + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, +}); diff --git a/scripts/create-package/package-template/jest.config.js b/scripts/create-package/package-template/jest.config.js deleted file mode 100644 index ca084133399..00000000000 --- a/scripts/create-package/package-template/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -const merge = require('deepmerge'); -const path = require('path'); - -const baseConfig = require('../../jest.config.packages'); - -const displayName = path.basename(__dirname); - -module.exports = merge(baseConfig, { - // The display name when running multiple projects - displayName, - - // An object that configures minimum threshold enforcement for coverage results - coverageThreshold: { - global: { - branches: 100, - functions: 100, - lines: 100, - statements: 100, - }, - }, -}); diff --git a/scripts/create-package/package-template/package.json b/scripts/create-package/package-template/package.json index 50a66badadd..fedd98270d8 100644 --- a/scripts/create-package/package-template/package.json +++ b/scripts/create-package/package-template/package.json @@ -18,19 +18,12 @@ "files": [ "dist/" ], + "type": "module", "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" }, @@ -39,9 +32,11 @@ "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:clean": "yarn build:only-clean && yarn build", "build:docs": "typedoc", + "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'", "changelog:update": "../../scripts/update-changelog.sh PACKAGE_NAME", "changelog:validate": "../../scripts/validate-changelog.sh PACKAGE_NAME", "messenger-action-types:check": "tsx ../../packages/messenger-cli/src/cli.ts --formatter oxfmt --check", @@ -54,10 +49,10 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.1.0", - "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "deepmerge": "^4.2.2", "jest": "^30.4.2", + "rimraf": "^5.0.5", "ts-jest": "^29.4.11", "tsx": "^4.20.5", "typedoc": "^0.25.13", diff --git a/scripts/create-package/utils.test.ts b/scripts/create-package/utils.test.ts index c48b8a308b7..9f7d385410b 100644 --- a/scripts/create-package/utils.test.ts +++ b/scripts/create-package/utils.test.ts @@ -1,15 +1,16 @@ +import { jest } from '@jest/globals'; import * as commentJson from 'comment-json'; -import execa from 'execa'; -import fs from 'fs'; +import type { Stats } from 'fs'; import path from 'path'; -import { format } from 'prettier'; 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', () => ({ +// `jest.mock` does not apply to ES modules, so the module registry is stubbed +// with `jest.unstable_mockModule` and the modules under test are imported +// dynamically afterwards. `utils.ts` reaches for the default and the named +// exports of `fs`, so the mock exposes the same object as both. +const fsMock = { existsSync: jest.fn(), promises: { mkdir: jest.fn(), @@ -17,19 +18,27 @@ jest.mock('fs', () => ({ writeFile: jest.fn(), stat: jest.fn(), }, -})); +}; + +jest.unstable_mockModule('fs', () => ({ ...fsMock, default: fsMock })); -jest.mock('execa', () => jest.fn()); +jest.unstable_mockModule('execa', () => ({ default: jest.fn() })); -jest.mock('prettier', () => ({ +jest.unstable_mockModule('prettier', () => ({ format: jest.fn(), })); -jest.mock('./fs-utils', () => ({ +jest.unstable_mockModule('./fs-utils.js', () => ({ readAllFiles: jest.fn(), writeFiles: jest.fn(), })); +const { default: fs } = await import('fs'); +const { default: execa } = await import('execa'); +const { format } = await import('prettier'); +const fsUtils = await import('./fs-utils.js'); +const { finalizeAndWriteData, readMonorepoFiles } = await import('./utils.js'); + describe('create-package/utils', () => { describe('readMonorepoFiles', () => { const tsConfig = JSON.stringify({ @@ -43,20 +52,24 @@ describe('create-package/utils', () => { }); it('should read the expected monorepo files', async () => { - (fs.promises.readFile as jest.Mock).mockImplementation( - async (filePath: string) => { - switch (path.basename(filePath)) { - case MonorepoFiles.TsConfig: - return tsConfig; - case MonorepoFiles.TsConfigBuild: - return tsConfigBuild; - case MonorepoFiles.PackageJson: - return packageJson; - default: - throw new Error(`Unexpected file: ${path.basename(filePath)}`); - } - }, - ); + // `readFile` is overloaded, which `mockImplementation` cannot match, so + // it is narrowed to the single signature `utils.ts` relies on. + const readFile = jest.mocked( + fs.promises.readFile, + ) as unknown as jest.Mock<(filePath: string) => Promise>; + + readFile.mockImplementation(async (filePath) => { + switch (path.basename(filePath)) { + case MonorepoFiles.TsConfig: + return tsConfig; + case MonorepoFiles.TsConfigBuild: + return tsConfigBuild; + case MonorepoFiles.PackageJson: + return packageJson; + default: + throw new Error(`Unexpected file: ${path.basename(filePath)}`); + } + }); const monorepoFileData = await readMonorepoFiles(); @@ -91,9 +104,9 @@ describe('create-package/utils', () => { const mockError = new Error('Not found') as NodeJS.ErrnoException; mockError.code = 'ENOENT'; - jest.spyOn(fs.promises, 'stat').mockRejectedValue(mockError); + jest.mocked(fs.promises.stat).mockRejectedValue(mockError); - (fsUtils.readAllFiles as jest.Mock).mockResolvedValueOnce({ + jest.mocked(fsUtils.readAllFiles).mockResolvedValueOnce({ 'src/index.ts': 'export default 42;', 'src/index.test.ts': 'export default 42;', 'mock1.file': @@ -102,7 +115,7 @@ describe('create-package/utils', () => { 'mock3.file': 'PACKAGE_DESCRIPTION PACKAGE_DIRECTORY_NAME', }); - (format as jest.Mock).mockImplementation((input) => input); + jest.mocked(format).mockImplementation(async (input) => input); await finalizeAndWriteData(packageData, monorepoFileData); @@ -183,7 +196,7 @@ describe('create-package/utils', () => { nodeVersions: '20.0.0', }; - (fs.promises.stat as jest.Mock).mockResolvedValue({}); + jest.mocked(fs.promises.stat).mockResolvedValue({} as Stats); await expect( finalizeAndWriteData(packageData, monorepoFileData), @@ -197,7 +210,7 @@ describe('create-package/utils', () => { const mockError = new Error('Permission denied') as NodeJS.ErrnoException; mockError.code = 'EACCES'; - jest.spyOn(fs.promises, 'stat').mockRejectedValue(mockError); + jest.mocked(fs.promises.stat).mockRejectedValue(mockError); const packageData: PackageData = { name: '@metamask/foo', diff --git a/scripts/create-package/utils.ts b/scripts/create-package/utils.ts index 11320073968..66aa316006d 100644 --- a/scripts/create-package/utils.ts +++ b/scripts/create-package/utils.ts @@ -1,6 +1,7 @@ import * as commentJson from 'comment-json'; import execa from 'execa'; import { promises as fs } from 'fs'; +import { createRequire } from 'module'; import path from 'path'; import { format as prettierFormat } from 'prettier'; import type { Options as PrettierOptions } from 'prettier'; @@ -9,8 +10,8 @@ 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(__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); @@ -21,10 +22,10 @@ const allPlaceholdersRegex = new RegExp( 'gu', ); -// Our lint config really hates this, but it works. -// eslint-disable-next-line -const prettierRc = require( - path.join(REPO_ROOT, '.prettierrc.js'), +// The Prettier config is CommonJS, so it is loaded through `createRequire` +// rather than an `import`, which would need to be asynchronous. +const prettierRc = createRequire(import.meta.url)( + path.join(REPO_ROOT, '.prettierrc.cjs'), ) as PrettierOptions; /** diff --git a/scripts/lib/changelog-conflicts.test.ts b/scripts/lib/changelog-conflicts.test.ts index 4220abe0a58..d15523aa9e3 100644 --- a/scripts/lib/changelog-conflicts.test.ts +++ b/scripts/lib/changelog-conflicts.test.ts @@ -1,15 +1,19 @@ -import execa from 'execa'; +import { jest } from '@jest/globals'; import { promises as fs } from 'fs'; -import { +// `jest.mock` does not apply to ES modules, so the module registry is stubbed +// with `jest.unstable_mockModule` and the modules under test are imported +// dynamically afterwards. +jest.unstable_mockModule('execa', () => ({ default: jest.fn() })); + +const { default: execa } = await import('execa'); +const { findConflictingChangelogFiles, mergeChangelogs, readGitBlob, resolveChangelogConflicts, resolvePackageMetadata, -} from './changelog-conflicts.js'; - -jest.mock('execa'); +} = await import('./changelog-conflicts.js'); const REPO_URL = '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/MetaMask/core'; const TAG_PREFIX = '@metamask/example@'; @@ -601,7 +605,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 describe('findConflictedChangelogFiles', () => { it('filters unmerged paths down to package changelogs', async () => { - (execa as unknown as jest.Mock).mockResolvedValue({ + jest.mocked(execa).mockResolvedValue({ + // @ts-expect-error: Partial mock. stdout: [ 'packages/foo/CHANGELOG.md', 'packages/foo/package.json', @@ -620,7 +625,8 @@ describe('findConflictedChangelogFiles', () => { }); it('returns an empty array when there are no unmerged paths', async () => { - (execa as unknown as jest.Mock).mockResolvedValue({ stdout: '' }); + // @ts-expect-error: Partial mock. + jest.mocked(execa).mockResolvedValue({ stdout: '' }); expect(await findConflictingChangelogFiles()).toStrictEqual([]); }); @@ -628,7 +634,8 @@ describe('findConflictedChangelogFiles', () => { describe('readGitBlob', () => { it('reads a file at the given ref', async () => { - (execa as unknown as jest.Mock).mockResolvedValue({ stdout: 'content' }); + // @ts-expect-error: Partial mock. + jest.mocked(execa).mockResolvedValue({ stdout: 'content' }); const result = await readGitBlob(':2', 'packages/foo/CHANGELOG.md'); @@ -672,7 +679,8 @@ describe('resolvePackageMetadata', () => { it('falls back to the "ours" conflict stage if package.json is not parseable in the working tree', async () => { jest.spyOn(fs, 'readFile').mockResolvedValue('<<<<<<< HEAD\nconflict'); - (execa as unknown as jest.Mock).mockResolvedValue({ + jest.mocked(execa).mockResolvedValue({ + // @ts-expect-error: Partial mokc. stdout: JSON.stringify({ name: '@metamask/example', repository: { url: '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/MetaMask/core' }, @@ -741,8 +749,10 @@ describe('resolveChangelogConflicts', () => { - Added theirs entry ([#11](${REPO_URL}/pull/11))`, ); - (execa as unknown as jest.Mock).mockImplementation( - async (command: string, args: string[]) => { + jest + .mocked(execa) + // @ts-expect-error: Partial mock. + .mockImplementation(async (command: string, args: string[]) => { if (args[0] === 'diff') { return { stdout: changelogPath }; } @@ -759,8 +769,7 @@ describe('resolveChangelogConflicts', () => { return { stdout: '' }; } throw new Error(`Unexpected execa call: ${command} ${args.join(' ')}`); - }, - ); + }); jest.spyOn(fs, 'readFile').mockResolvedValue( JSON.stringify({ @@ -800,6 +809,7 @@ describe('resolveChangelogConflicts', () => { const theirsContent = baseContent; (execa as unknown as jest.Mock).mockImplementation( + // @ts-expect-error: Partial mock. async (command: string, args: string[]) => { if (args[0] === 'diff') { return { stdout: changelogPath }; @@ -833,7 +843,10 @@ describe('resolveChangelogConflicts', () => { expect(result.resolved).toStrictEqual([ { path: changelogPath, mergedEntryCount: 0 }, ]); - const [, writtenContent] = (fs.writeFile as jest.Mock).mock.calls[0]; + const [, writtenContent] = jest.mocked(fs.writeFile).mock.calls[0] as [ + string, + string, + ]; expect(writtenContent.match(/Bump `dep`/gu)).toHaveLength(1); expect(writtenContent).toContain('Bump `dep` from `1.0.0` to `1.0.5`'); }); @@ -848,6 +861,7 @@ describe('resolveChangelogConflicts', () => { ); (execa as unknown as jest.Mock).mockImplementation( + // @ts-expect-error: Partial mock. async (command: string, args: string[]) => { if (args[0] === 'diff') { return { stdout: changelogPath }; @@ -893,7 +907,8 @@ describe('resolveChangelogConflicts', () => { it('skips a file that cannot be parsed and leaves it unresolved', async () => { const changelogPath = 'packages/example/CHANGELOG.md'; - (execa as unknown as jest.Mock).mockImplementation( + jest.mocked(execa).mockImplementation( + // @ts-expect-error: Partial mock. async (command: string, args: string[]) => { if (args[0] === 'diff') { return { stdout: changelogPath }; diff --git a/scripts/lib/changelog-conflicts.ts b/scripts/lib/changelog-conflicts.ts index 6d7ed4562a3..ae0503e3160 100644 --- a/scripts/lib/changelog-conflicts.ts +++ b/scripts/lib/changelog-conflicts.ts @@ -6,7 +6,7 @@ import { promises as fs } from 'fs'; import path from 'path'; import { gt } from 'semver'; -export const ROOT_WORKSPACE = path.resolve(__dirname, '../..'); +export const ROOT_WORKSPACE = path.resolve(import.meta.dirname, '../..'); const CHANGELOG_PATH_PATTERN = /^packages\/[^/]+\/CHANGELOG\.md$/u; 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/manage-codeowners/main.ts b/scripts/manage-codeowners/main.ts index 637d78385b0..ec7aebcaa62 100644 --- a/scripts/manage-codeowners/main.ts +++ b/scripts/manage-codeowners/main.ts @@ -8,7 +8,7 @@ import codeownersSections from '../../codeowners.js'; * The path to the generated CODEOWNERS file. */ const CODEOWNERS_FILE_PATH = path.resolve( - __dirname, + import.meta.dirname, '../../.github/CODEOWNERS', ); diff --git a/scripts/merge-changelog-conflicts.test.ts b/scripts/merge-changelog-conflicts.test.ts index 63c72e10cbd..f01c870da6a 100644 --- a/scripts/merge-changelog-conflicts.test.ts +++ b/scripts/merge-changelog-conflicts.test.ts @@ -1,13 +1,20 @@ -import * as changelogConflicts from './lib/changelog-conflicts.js'; -import { main } from './merge-changelog-conflicts.js'; +import { jest } from '@jest/globals'; -jest.mock('./lib/changelog-conflicts'); +// `jest.mock` does not apply to ES modules, so the module registry is stubbed +// with `jest.unstable_mockModule` and the modules under test are imported +// dynamically afterwards. +jest.unstable_mockModule('./lib/changelog-conflicts.js', () => ({ + resolveChangelogConflicts: jest.fn(), +})); + +const changelogConflicts = await import('./lib/changelog-conflicts.js'); +const { main } = await import('./merge-changelog-conflicts.js'); describe('merge-changelog-conflicts', () => { beforeEach(() => { - jest.spyOn(console, 'log').mockImplementation(); - jest.spyOn(console, 'warn').mockImplementation(); - jest.spyOn(console, 'error').mockImplementation(); + jest.spyOn(console, 'log').mockReturnValue(undefined); + jest.spyOn(console, 'warn').mockReturnValue(undefined); + jest.spyOn(console, 'error').mockReturnValue(undefined); // The module under test invokes `main()` once as a side effect of being // imported (using the auto-mocked, undefined-returning // `resolveChangelogConflicts`), which leaves a stale exit code. @@ -20,7 +27,7 @@ describe('merge-changelog-conflicts', () => { it('logs a message and exits cleanly when there are no conflicted files', async () => { jest - .spyOn(changelogConflicts, 'resolveChangelogConflicts') + .mocked(changelogConflicts.resolveChangelogConflicts) .mockResolvedValue({ resolved: [], skipped: [] }); await main(); @@ -33,7 +40,7 @@ describe('merge-changelog-conflicts', () => { it('logs each resolved file and exits cleanly', async () => { jest - .spyOn(changelogConflicts, 'resolveChangelogConflicts') + .mocked(changelogConflicts.resolveChangelogConflicts) .mockResolvedValue({ resolved: [ { path: 'packages/example/CHANGELOG.md', mergedEntryCount: 2 }, @@ -54,7 +61,7 @@ describe('merge-changelog-conflicts', () => { it('warns about skipped files and exits with a non-zero code', async () => { jest - .spyOn(changelogConflicts, 'resolveChangelogConflicts') + .mocked(changelogConflicts.resolveChangelogConflicts) .mockResolvedValue({ resolved: [], skipped: [ 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); 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/tsconfig.packages.json b/tsconfig.packages.json index fbde19a5981..f0d7cffcca6 100644 --- a/tsconfig.packages.json +++ b/tsconfig.packages.json @@ -9,11 +9,11 @@ * uncompiled source code for packages that live in this repo. * * NOTE: This must be synchronized with the `moduleNameMapper` option in - * `jest.config.packages.js`. + * `jest.config.packages.cjs`. */ "paths": { "@metamask/json-rpc-engine/v2": ["../json-rpc-engine/src/v2/index.ts"], - "@metamask/*": ["../*/src"] + "@metamask/*": ["../*/src/index.ts"] } } } diff --git a/yarn.config.cjs b/yarn.config.cjs index fd44537397a..cbc35380295 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -90,6 +90,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 @@ -145,21 +148,33 @@ 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', + ); + + expectWorkspaceField( + workspace, + 'scripts.build:clean', + 'yarn build:only-clean && yarn build', + ); + + expectWorkspaceField( + workspace, + 'scripts.build:only-clean', + `rimraf './dist' './tsconfig.build.tsbuildinfo'`, ); } @@ -550,35 +565,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( @@ -586,6 +582,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}".`, + ); + } + } } /** diff --git a/yarn.lock b/yarn.lock index 87f469bb255..c7da4f0c294 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4906,7 +4906,7 @@ __metadata: languageName: node linkType: hard -"@jest/globals@npm:30.4.1": +"@jest/globals@npm:30.4.1, @jest/globals@npm:^30.4.1": version: 30.4.1 resolution: "@jest/globals@npm:30.4.1" dependencies: @@ -5591,12 +5591,12 @@ __metadata: "@metamask/snaps-utils": "npm:^12.1.2" "@metamask/superstruct": "npm:^3.4.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" fast-deep-equal: "npm:^3.1.3" jest: "npm:^30.4.2" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -5628,14 +5628,14 @@ __metadata: "@metamask/providers": "npm:^22.1.0" "@metamask/superstruct": "npm:^3.4.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" "@types/readable-stream": "npm:^2.3.0" deepmerge: "npm:^4.2.2" ethereum-cryptography: "npm:^2.1.2" immer: "npm:^9.0.6" jest: "npm:^30.4.2" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -5669,10 +5669,10 @@ __metadata: "@metamask/controller-utils": "npm:^12.3.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -5690,10 +5690,10 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/superstruct": "npm:^3.4.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -5711,12 +5711,12 @@ __metadata: "@metamask/geolocation-controller": "npm:^1.0.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" "@types/uuid": "npm:^8.3.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -5735,11 +5735,11 @@ __metadata: "@metamask/controller-utils": "npm:^12.3.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -5755,10 +5755,10 @@ __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:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -5781,10 +5781,10 @@ __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:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -5802,11 +5802,11 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" nanoid: "npm:^3.3.8" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -5847,16 +5847,16 @@ __metadata: "@metamask/snaps-utils": "npm:^12.1.2" "@metamask/transaction-controller": "npm:^69.8.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" - "@types/lodash": "npm:^4.14.191" + "@types/lodash-es": "npm:^4.17.12" async-mutex: "npm:^0.5.0" bignumber.js: "npm:^9.1.2" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" nock: "npm:^13.3.1" p-limit: "npm:^3.1.0" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -5913,10 +5913,9 @@ __metadata: "@metamask/transaction-controller": "npm:^69.8.1" "@metamask/utils": "npm:^11.12.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:^30.0.0" - "@types/lodash": "npm:^4.14.191" + "@types/lodash-es": "npm:^4.17.12" "@types/node": "npm:^22.13.14" "@types/uuid": "npm:^8.3.0" async-mutex: "npm:^0.5.0" @@ -5926,10 +5925,11 @@ __metadata: immer: "npm:^9.0.6" jest: "npm:^30.4.2" jest-environment-jsdom: "npm:^30.4.1" - 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" + rimraf: "npm:^5.0.5" single-call-balance-checker-abi: "npm:^1.0.0" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" @@ -5988,11 +5988,11 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/superstruct": "npm:^3.4.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6031,11 +6031,11 @@ __metadata: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" immer: "npm:^9.0.6" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6054,15 +6054,15 @@ __metadata: "@metamask/superstruct": "npm:^3.4.1" "@metamask/utils": "npm:^11.12.0" "@tanstack/query-core": "npm:^5.62.16" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" - "@types/lodash": "npm:^4.14.191" + "@types/lodash-es": "npm:^4.17.12" cockatiel: "npm:^3.1.2" deepmerge: "npm:^4.2.2" fast-deep-equal: "npm:^3.1.3" jest: "npm:^30.4.2" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6077,17 +6077,17 @@ __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:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" typedoc-plugin-missing-exports: "npm:^2.0.0" typescript: "npm:~5.3.3" bin: - bitcoin-regtest-up: ./dist/bin/bitcoin-regtest-up.mjs + bitcoin-regtest-up: ./dist/bin/bitcoin-regtest-up.js languageName: unknown linkType: soft @@ -6120,15 +6120,15 @@ __metadata: "@metamask/superstruct": "npm:^3.4.1" "@metamask/transaction-controller": "npm:^69.8.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" bignumber.js: "npm:^9.1.2" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" jest-environment-jsdom: "npm:^30.4.1" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" nock: "npm:^13.3.1" reselect: "npm:^5.1.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6157,14 +6157,14 @@ __metadata: "@metamask/superstruct": "npm:^3.4.1" "@metamask/transaction-controller": "npm:^69.8.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" bignumber.js: "npm:^9.1.2" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" jest-environment-jsdom: "npm:^30.4.1" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6189,11 +6189,11 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/eslint": "npm:^8.44.7" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6213,11 +6213,11 @@ __metadata: "@metamask/permission-controller": "npm:^13.1.1" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6237,11 +6237,11 @@ __metadata: "@metamask/superstruct": "npm:^3.4.1" "@metamask/utils": "npm:^11.12.0" "@tanstack/query-core": "npm:^5.62.16" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6264,10 +6264,10 @@ __metadata: "@metamask/superstruct": "npm:^3.4.1" "@metamask/utils": "npm:^11.12.0" "@tanstack/query-core": "npm:^5.62.16" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6283,11 +6283,11 @@ __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:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" jest-environment-jsdom: "npm:^30.4.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6309,11 +6309,11 @@ __metadata: "@metamask/slip44": "npm:^4.3.0" "@metamask/transaction-controller": "npm:^69.8.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" eth-chainlist: "npm:^0.0.795" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6332,12 +6332,12 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/superstruct": "npm:^3.4.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" nock: "npm:^13.3.1" reselect: "npm:^5.1.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6354,11 +6354,11 @@ __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:^30.0.0" deepmerge: "npm:^4.2.2" immer: "npm:^9.0.6" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6381,12 +6381,12 @@ __metadata: "@metamask/remote-feature-flag-controller": "npm:^6.1.1" "@metamask/superstruct": "npm:^3.4.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" nock: "npm:^13.3.1" reselect: "npm:^5.1.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6402,11 +6402,11 @@ __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:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" reselect: "npm:^5.1.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6455,10 +6455,9 @@ __metadata: "@metamask/ethjs-unit": "npm:^0.3.0" "@metamask/utils": "npm:^11.12.0" "@signinwithethereum/siwe-parser": "npm:^4.2.1" - "@ts-bridge/cli": "npm:^0.6.4" "@types/bn.js": "npm:^5.1.5" "@types/jest": "npm:^30.0.0" - "@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" @@ -6467,8 +6466,9 @@ __metadata: fast-deep-equal: "npm:^3.1.3" jest: "npm:^30.4.2" jest-environment-jsdom: "npm:^30.4.1" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6492,13 +6492,13 @@ __metadata: "@metamask/remote-feature-flag-controller": "npm:^6.1.1" "@metamask/utils": "npm:^11.12.0" "@tanstack/query-core": "npm:^5.62.16" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" async-mutex: "npm:^0.5.0" cockatiel: "npm:^3.1.2" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" jest-environment-jsdom: "npm:^30.4.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6514,6 +6514,7 @@ __metadata: dependencies: "@actions/core": "npm:^3.0.1" "@actions/github": "npm:^9.1.1" + "@jest/globals": "npm:^30.4.1" "@lavamoat/allow-scripts": "npm:^3.0.4" "@lavamoat/preinstall-always-fail": "npm:^2.1.0" "@metamask/auto-changelog": "npm:^6.1.0" @@ -6528,7 +6529,6 @@ __metadata: "@metamask/network-controller": "npm:^36.0.0" "@metamask/skills": "npm:^0.1.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" "@types/lodash": "npm:^4.14.191" "@types/node": "npm:^22.13.14" @@ -6563,6 +6563,7 @@ __metadata: rimraf: "npm:^5.0.5" semver: "npm:^7.6.3" simple-git-hooks: "npm:^2.8.0" + ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typescript: "npm:~5.3.3" typescript-eslint: "npm:^8.48.0" @@ -6607,10 +6608,10 @@ __metadata: resolution: "@metamask/cryptography@workspace:packages/cryptography" dependencies: "@metamask/auto-changelog": "npm:^6.1.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6628,10 +6629,10 @@ __metadata: "@metamask/keyring-controller": "npm:^27.1.1" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6673,11 +6674,11 @@ __metadata: "@metamask/network-controller": "npm:^36.0.0" "@metamask/stake-sdk": "npm:^3.2.1" "@metamask/transaction-controller": "npm:^69.8.1" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" reselect: "npm:^5.1.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6698,12 +6699,12 @@ __metadata: "@metamask/superstruct": "npm:^3.4.1" "@metamask/transaction-controller": "npm:^69.8.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" klona: "npm:^2.0.6" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6722,10 +6723,10 @@ __metadata: "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/superstruct": "npm:^3.4.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6745,11 +6746,11 @@ __metadata: "@metamask/permission-controller": "npm:^13.1.1" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6828,14 +6829,14 @@ __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": "npm:^3.1.3" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" "@types/json-rpc-random-id": "npm:^1.0.1" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" json-rpc-random-id: "npm:^1.0.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -6901,14 +6902,15 @@ __metadata: "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/superstruct": "npm:^3.4.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/deep-freeze-strict": "npm:^1.1.0" "@types/jest": "npm:^30.0.0" deep-freeze-strict: "npm:^1.1.1" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" klona: "npm:^2.0.6" + rimraf: "npm:^5.0.5" safe-stable-stringify: "npm:^2.4.3" + ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" typescript: "npm:~5.3.3" @@ -6939,14 +6941,14 @@ __metadata: "@metamask/json-rpc-engine": "npm:^10.5.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" "@types/lodash": "npm:^4.14.191" deepmerge: "npm:^4.2.2" ethers: "npm:^6.12.0" jest: "npm:^30.4.2" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" nanoid: "npm:^3.3.8" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7198,7 +7200,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:^30.0.0" "@types/unzipper": "npm:^0.10.10" "@types/yargs": "npm:^17.0.32" @@ -7207,6 +7208,7 @@ __metadata: jest: "npm:^30.4.2" minipass: "npm:^7.1.2" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" tar: "npm:^7.4.3" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" @@ -7218,7 +7220,7 @@ __metadata: yargs: "npm:^17.7.2" yargs-parser: "npm:^21.1.1" bin: - mm-foundryup: ./dist/cli.mjs + mm-foundryup: ./dist/cli.js languageName: unknown linkType: soft @@ -7236,7 +7238,6 @@ __metadata: "@metamask/network-controller": "npm:^36.0.0" "@metamask/polling-controller": "npm:^16.0.9" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/bn.js": "npm:^5.1.5" "@types/jest": "npm:^30.0.0" "@types/jest-when": "npm:^2.7.3" @@ -7246,6 +7247,7 @@ __metadata: jest: "npm:^30.4.2" jest-when: "npm:^3.7.0" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7276,10 +7278,10 @@ __metadata: "@metamask/snaps-utils": "npm:^12.1.2" "@metamask/transaction-controller": "npm:^69.8.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7296,10 +7298,10 @@ __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:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7314,17 +7316,17 @@ __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:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" typedoc-plugin-missing-exports: "npm:^2.0.0" typescript: "npm:~5.3.3" bin: - java-tron-up: ./dist/bin/java-tron-up.mjs + java-tron-up: ./dist/bin/java-tron-up.js languageName: unknown linkType: soft @@ -7337,15 +7339,15 @@ __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": "npm:^3.1.3" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/deep-freeze-strict": "npm:^1.1.0" "@types/jest": "npm:^30.0.0" deep-freeze-strict: "npm:^1.1.1" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" klona: "npm:^2.0.6" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7359,15 +7361,15 @@ __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": "npm:^3.1.3" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" "@types/readable-stream": "npm:^2.3.0" deepmerge: "npm:^4.2.2" extension-port-stream: "npm:^3.0.0" jest: "npm:^30.4.2" readable-stream: "npm:^3.6.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7424,14 +7426,14 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/scure-bip39": "npm:^2.1.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" async-mutex: "npm:^0.5.0" deepmerge: "npm:^4.2.2" ethereumjs-wallet: "npm:^1.0.1" immer: "npm:^9.0.6" jest: "npm:^30.4.2" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7547,13 +7549,13 @@ __metadata: "@noble/hashes": "npm:^1.8.0" "@scure/base": "npm:^1.2.6" "@tanstack/query-core": "npm:^5.62.16" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" chokidar-cli: "npm:^3.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" nock: "npm:^13.3.1" reselect: "npm:^5.1.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" tweetnacl: "npm:^1.0.3" @@ -7568,11 +7570,11 @@ __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:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7590,10 +7592,10 @@ __metadata: "@metamask/base-controller": "npm:^9.1.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7613,12 +7615,12 @@ __metadata: "@metamask/eth-sig-util": "npm:^9.0.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" "@types/uuid": "npm:^8.3.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" jsonschema: "npm:^1.4.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7632,9 +7634,9 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/messenger-cli@workspace:packages/messenger-cli" dependencies: + "@jest/globals": "npm:^30.4.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" "@types/yargs": "npm:^17.0.32" deepmerge: "npm:^4.2.2" @@ -7642,6 +7644,7 @@ __metadata: jest: "npm:^30.4.2" oxfmt: "npm:^0.44.0" prettier: "npm:^3.3.3" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typescript: "npm:~5.3.3" @@ -7656,7 +7659,7 @@ __metadata: prettier: optional: true bin: - messenger-action-types: ./dist/cli.mjs + messenger-action-types: ./dist/cli.js languageName: unknown linkType: soft @@ -7680,11 +7683,11 @@ __metadata: dependencies: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" immer: "npm:^9.0.6" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tstyche: "npm:^5.0.2" tsx: "npm:^4.20.5" @@ -7714,11 +7717,11 @@ __metadata: "@metamask/superstruct": "npm:^3.4.1" "@metamask/utils": "npm:^11.12.0" "@tanstack/query-core": "npm:^5.62.16" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7743,11 +7746,11 @@ __metadata: "@metamask/remote-feature-flag-controller": "npm:^6.1.1" "@metamask/superstruct": "npm:^3.4.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7769,11 +7772,11 @@ __metadata: "@metamask/keyring-utils": "npm:^5.0.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" async-mutex: "npm:^0.5.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7799,10 +7802,10 @@ __metadata: "@metamask/network-controller": "npm:^36.0.0" "@metamask/remote-feature-flag-controller": "npm:^6.1.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7821,10 +7824,10 @@ __metadata: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/transaction-controller": "npm:^69.8.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7859,13 +7862,13 @@ __metadata: "@metamask/snaps-utils": "npm:^12.1.2" "@metamask/superstruct": "npm:^3.4.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" "@types/uuid": "npm:^8.3.0" async-mutex: "npm:^0.5.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7894,16 +7897,16 @@ __metadata: "@metamask/network-controller": "npm:^36.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": "npm:^3.1.3" "@metamask/snaps-controllers": "npm:^19.0.0" "@metamask/utils": "npm:^11.12.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:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" jsonschema: "npm:^1.4.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7928,15 +7931,15 @@ __metadata: "@metamask/superstruct": "npm:^3.4.1" "@metamask/utils": "npm:^11.12.0" "@solana/addresses": "npm:^2.0.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" - "@types/lodash": "npm:^4.14.191" + "@types/lodash-es": "npm:^4.17.12" "@types/uuid": "npm:^8.3.0" deepmerge: "npm:^4.2.2" immer: "npm:^9.0.6" jest: "npm:^30.4.2" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7962,12 +7965,12 @@ __metadata: "@metamask/snaps-sdk": "npm:^11.0.0" "@metamask/snaps-utils": "npm:^12.1.2" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" "@types/uuid": "npm:^8.3.0" deepmerge: "npm:^4.2.2" immer: "npm:^9.0.6" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -7986,11 +7989,11 @@ __metadata: "@metamask/controller-utils": "npm:^12.3.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" async-mutex: "npm:^0.5.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8012,11 +8015,11 @@ __metadata: "@metamask/network-controller": "npm:^36.0.0" "@metamask/network-enablement-controller": "npm:^6.0.5" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" reselect: "npm:^5.1.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8047,11 +8050,10 @@ __metadata: "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/swappable-obj-proxy": "npm:^2.3.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/deep-freeze-strict": "npm:^1.1.0" "@types/jest": "npm:^30.0.0" "@types/jest-when": "npm:^2.7.3" - "@types/lodash": "npm:^4.14.191" + "@types/lodash-es": "npm:^4.17.12" "@types/node-fetch": "npm:^2.6.12" cockatiel: "npm:^3.1.2" deep-freeze-strict: "npm:^1.1.1" @@ -8061,11 +8063,12 @@ __metadata: jest: "npm:^30.4.2" jest-environment-jsdom: "npm:^30.4.1" jest-when: "npm:^3.7.0" - 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" reselect: "npm:^5.1.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8091,11 +8094,11 @@ __metadata: "@metamask/slip44": "npm:^4.3.0" "@metamask/transaction-controller": "npm:^69.8.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" reselect: "npm:^5.1.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8131,9 +8134,8 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/profile-sync-controller": "npm:^30.0.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" - "@types/lodash": "npm:^4.14.191" + "@types/lodash-es": "npm:^4.17.12" "@types/readable-stream": "npm:^2.3.0" "@types/semver": "npm:^7" bignumber.js: "npm:^9.1.2" @@ -8142,9 +8144,10 @@ __metadata: firebase: "npm:^11.2.0" jest: "npm:^30.4.2" jest-environment-jsdom: "npm:^30.4.1" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" loglevel: "npm:^1.8.1" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" semver: "npm:^7.6.3" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" @@ -8188,11 +8191,11 @@ __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:^30.0.0" async-mutex: "npm:^0.5.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8232,7 +8235,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/deep-freeze-strict": "npm:^1.1.0" "@types/jest": "npm:^30.0.0" deep-freeze-strict: "npm:^1.1.1" @@ -8240,6 +8242,7 @@ __metadata: immer: "npm:^9.0.6" jest: "npm:^30.4.2" nanoid: "npm:^3.3.8" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8257,13 +8260,13 @@ __metadata: "@metamask/json-rpc-engine": "npm:^10.5.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/deep-freeze-strict": "npm:^1.1.0" "@types/jest": "npm:^30.0.0" deep-freeze-strict: "npm:^1.1.1" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" nanoid: "npm:^3.3.8" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8293,13 +8296,13 @@ __metadata: "@metamask/transaction-controller": "npm:^69.8.1" "@metamask/utils": "npm:^11.12.0" "@nktkas/hyperliquid": "npm:^0.33.1" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" "@types/uuid": "npm:^8.3.0" bignumber.js: "npm:^9.1.2" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" reselect: "npm:^5.1.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8321,7 +8324,6 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/transaction-controller": "npm:^69.8.1" "@noble/hashes": "npm:^1.8.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" "@types/punycode": "npm:^2.1.0" deepmerge: "npm:^4.2.2" @@ -8330,6 +8332,7 @@ __metadata: jest: "npm:^30.4.2" nock: "npm:^13.3.1" punycode: "npm:^2.1.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8351,7 +8354,6 @@ __metadata: "@mdx-js/react": "npm:^3.1.1" "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" "@types/node": "npm:^22.13.14" "@types/npm-which": "npm:^3" @@ -8364,13 +8366,14 @@ __metadata: prism-react-renderer: "npm:^2.4.1" react: "npm:^19.0.0" react-dom: "npm:^19.0.0" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" ts-morph: "npm:^28.0.0" tsx: "npm:^4.20.5" typescript: "npm:~5.3.3" yargs: "npm:^17.7.2" bin: - platform-api-docs: ./dist/cli.mjs + platform-api-docs: ./dist/cli.js languageName: unknown linkType: soft @@ -8382,12 +8385,12 @@ __metadata: "@metamask/base-controller": "npm:^9.1.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" "@types/uuid": "npm:^8.3.0" deepmerge: "npm:^4.2.2" fast-json-stable-stringify: "npm:^2.1.0" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8415,10 +8418,10 @@ __metadata: "@metamask/base-controller": "npm:^9.1.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8446,12 +8449,12 @@ __metadata: "@metamask/superstruct": "npm:^3.4.1" "@metamask/transaction-controller": "npm:^69.8.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" async-mutex: "npm:^0.5.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8483,7 +8486,6 @@ __metadata: "@noble/curves": "npm:^1.9.2" "@noble/hashes": "npm:^1.8.0" "@signinwithethereum/siwe": "npm:^4.2.1" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" ethers: "npm:^6.12.0" @@ -8492,6 +8494,7 @@ __metadata: jest-environment-jsdom: "npm:^30.4.1" loglevel: "npm:^1.8.1" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8535,11 +8538,11 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/profile-sync-controller": "npm:^30.0.0" "@metamask/remote-feature-flag-controller": "npm:^6.1.1" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8557,10 +8560,10 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8579,10 +8582,10 @@ __metadata: "@metamask/utils": "npm:^11.12.0" "@tanstack/query-core": "npm:^5.62.16" "@tanstack/react-query": "npm:^5.62.16" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8610,11 +8613,11 @@ __metadata: "@metamask/controller-utils": "npm:^12.3.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8634,10 +8637,10 @@ __metadata: languageName: node linkType: hard -"@metamask/safe-event-emitter@npm:^3.0.0, @metamask/safe-event-emitter@npm:^3.1.1": - version: 3.1.1 - resolution: "@metamask/safe-event-emitter@npm:3.1.1" - checksum: 10/e24db4d7c20764bfc5b025065f92518c805f0ffb1da4820078b8cff7dcae964c0f354cf053fcb7ac659de015d5ffdf21aae5e8d44e191ee8faa9066855f22653 +"@metamask/safe-event-emitter@npm:^3.0.0, @metamask/safe-event-emitter@npm:^3.1.1, @metamask/safe-event-emitter@npm:^3.1.3": + version: 3.1.3 + resolution: "@metamask/safe-event-emitter@npm:3.1.3" + checksum: 10/adec56b940385cc34ecd14149c1f0a5c0273f255d7cb7a7df31dfda92381443b58534d173deb0b3361e3ca48a27847b5d715442874c2f6c53be9523c82f4ff2a languageName: node linkType: hard @@ -8654,11 +8657,11 @@ __metadata: "@metamask/superstruct": "npm:^3.4.1" "@metamask/utils": "npm:^11.12.0" "@tanstack/query-core": "npm:^5.62.16" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8694,7 +8697,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:^30.0.0" "@types/json-stable-stringify-without-jsonify": "npm:^1.0.2" @@ -8702,6 +8704,7 @@ __metadata: deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8722,14 +8725,14 @@ __metadata: "@metamask/permission-controller": "npm:^13.1.1" "@metamask/swappable-obj-proxy": "npm:^2.3.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" immer: "npm:^9.0.6" jest: "npm:^30.4.2" jest-environment-jsdom: "npm:^30.4.1" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8749,11 +8752,11 @@ __metadata: "@metamask/superstruct": "npm:^3.4.1" "@metamask/utils": "npm:^11.12.0" "@tanstack/query-core": "npm:^5.62.16" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8779,12 +8782,12 @@ __metadata: "@metamask/transaction-controller": "npm:^69.8.1" "@metamask/utils": "npm:^11.12.0" "@tanstack/query-core": "npm:^5.62.16" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" cockatiel: "npm:^3.1.2" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8810,12 +8813,12 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/network-controller": "npm:^36.0.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" jsonschema: "npm:^1.4.1" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8863,13 +8866,13 @@ __metadata: "@metamask/superstruct": "npm:^3.4.1" "@metamask/transaction-controller": "npm:^69.8.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" bignumber.js: "npm:^9.1.2" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" nock: "npm:^13.3.1" reselect: "npm:^5.1.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -8894,11 +8897,11 @@ __metadata: "@metamask/snaps-controllers": "npm:^19.0.0" "@metamask/snaps-sdk": "npm:^11.0.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -9035,10 +9038,10 @@ __metadata: "@metamask/messenger": "npm:^2.0.0" "@metamask/profile-sync-controller": "npm:^30.0.0" "@metamask/superstruct": "npm:^3.4.1" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -9053,17 +9056,17 @@ __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:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" typedoc-plugin-missing-exports: "npm:^2.0.0" typescript: "npm:~5.3.3" bin: - solana-test-validator-up: ./dist/bin/solana-test-validator-up.mjs + solana-test-validator-up: ./dist/bin/solana-test-validator-up.js languageName: unknown linkType: soft @@ -9079,10 +9082,10 @@ __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:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -9098,10 +9101,10 @@ __metadata: "@metamask/auto-changelog": "npm:^6.1.0" "@metamask/messenger": "npm:^2.0.0" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -9125,12 +9128,12 @@ __metadata: "@metamask/transaction-controller": "npm:^69.8.1" "@metamask/utils": "npm:^11.12.0" "@tanstack/query-core": "npm:^5.62.16" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" bignumber.js: "npm:^9.1.2" deepmerge: "npm:^4.2.2" fast-deep-equal: "npm:^3.1.3" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -9201,7 +9204,6 @@ __metadata: "@metamask/remote-feature-flag-controller": "npm:^6.1.1" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/bn.js": "npm:^5.1.5" "@types/jest": "npm:^30.0.0" "@types/node": "npm:^22.13.14" @@ -9215,8 +9217,9 @@ __metadata: immer: "npm:^9.0.6" jest: "npm:^30.4.2" jest-environment-jsdom: "npm:^30.4.1" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -9251,14 +9254,14 @@ __metadata: "@metamask/sentinel-api-service": "npm:^1.0.1" "@metamask/transaction-controller": "npm:^69.8.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" bignumber.js: "npm:^9.1.2" bn.js: "npm:^5.2.1" deepmerge: "npm:^4.2.2" immer: "npm:^9.0.6" jest: "npm:^30.4.2" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -9286,13 +9289,13 @@ __metadata: "@metamask/superstruct": "npm:^3.4.1" "@metamask/transaction-controller": "npm:^69.8.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" bn.js: "npm:^5.2.1" deepmerge: "npm:^4.2.2" immer: "npm:^9.0.6" jest: "npm:^30.4.2" - lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -9361,7 +9364,6 @@ __metadata: "@metamask/utils": "npm:^11.12.0" "@metamask/wallet": "npm:^12.0.3" "@oclif/core": "npm:^4.10.5" - "@ts-bridge/cli": "npm:^0.6.4" "@types/better-sqlite3": "npm:^7.6.13" "@types/jest": "npm:^30.0.0" better-sqlite3: "npm:^12.9.0" @@ -9370,6 +9372,7 @@ __metadata: jest: "npm:^30.4.2" jest-environment-node: "npm:^30.4.1" nock: "npm:^13.3.1" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typescript: "npm:~5.3.3" @@ -9438,10 +9441,10 @@ __metadata: "@metamask/subscription-controller": "npm:^8.1.0" "@metamask/transaction-controller": "npm:^69.8.1" "@metamask/utils": "npm:^11.12.0" - "@ts-bridge/cli": "npm:^0.6.4" "@types/jest": "npm:^30.0.0" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + rimraf: "npm:^5.0.5" ts-jest: "npm:^29.4.11" tsx: "npm:^4.20.5" typedoc: "npm:^0.25.13" @@ -11432,30 +11435,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" @@ -11852,10 +11831,19 @@ __metadata: 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 +"@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:*, @types/lodash@npm:^4.14.191, @types/lodash@npm:^4.17.20": + version: 4.17.25 + resolution: "@types/lodash@npm:4.17.25" + checksum: 10/f786e05664439cc8d327fd97c62c060d81b3c4ed52127d01fbc926139e1a669c1554bf3cd0dbb43f8fcc7d9b5c6c23c543cc36de8dc815c9f289ea852b26ebd6 languageName: node linkType: hard @@ -14801,13 +14789,6 @@ __metadata: languageName: node linkType: hard -"cjs-module-lexer@npm:^1.3.1": - version: 1.4.0 - resolution: "cjs-module-lexer@npm:1.4.0" - checksum: 10/b041096749792526120d8b8756929f8ef5dd4596502a0e1013f857e3027acd6091915fea77037921d70ee1a99988a100d994d3d3c2e323b04dd4c5ffd516cf13 - languageName: node - linkType: hard - "cjs-module-lexer@npm:^2.1.0": version: 2.2.0 resolution: "cjs-module-lexer@npm:2.2.0" @@ -20441,6 +20422,13 @@ __metadata: languageName: node linkType: hard +"lodash-es@npm:^4.17.21": + version: 4.18.1 + resolution: "lodash-es@npm:4.18.1" + checksum: 10/8bfad225ef09ef42b04283cdaf7830efcc2ba29ae41b56501c74422155ee1ccaa1f0f6e8319def3451a1fe54dec501c8e4bee622bae2b2d98ac993731e0a5cce + languageName: node + linkType: hard + "lodash.camelcase@npm:^4.3.0": version: 4.3.0 resolution: "lodash.camelcase@npm:4.3.0"