Skip to content

Commit 64f0777

Browse files
authored
chore: Migrate @metamask/eth-json-rpc-middleware to /packages (#6866)
## Explanation Finalizes the migration of `@metamask/eth-json-rpc-middleware` from its own repository to the core monorepo per "Phase C" of [the migration process](https://github.com/MetaMask/core/blob/1bb289e3d9a76291ba66defe4117792600231751/docs/package-migration-process-guide.md#pr6-1-migrate-the-source-repos-git-history-into-the-merged-packages-temporary-directory-in-core). ## References N/A ## Checklist - [x] I've updated the test suite for new or updated code as appropriate - [x] I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate - [x] I've communicated my changes to consumers by [updating changelogs for packages I've changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs), highlighting breaking changes as necessary - [x] I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Migrates @metamask/eth-json-rpc-middleware into /packages, bumps Node to ^18.18 and eth-block-tracker to ^13, updates network-controller to middleware v20, and adjusts ESLint/Jest/ownership/TS configs. > > - **Packages**: > - **@metamask/eth-json-rpc-middleware**: Added to `packages/` with build/test scripts, changelog, keywords/homepage/bugs updates, Node engine `^18.18`, and coverage thresholds; minor test/doc tweaks. > - Bump `@metamask/eth-block-tracker` to `^13.0.0`. > - **Consumers**: > - **@metamask/network-controller**: Update dependency to `@metamask/eth-json-rpc-middleware@^20.0.0`; changelog and TS project references updated. > - **Repo config**: > - **ESLint**: Add package-specific overrides; broaden test globs; update warning thresholds. > - **Ownership**: Update `.github/CODEOWNERS` and `teams.json` to include `eth-json-rpc-middleware` and related paths; adjust some owners. > - **TypeScript**: Add `eth-json-rpc-middleware` to root and consumer `tsconfig` references; exclude tests from its build. > - **Yarn/constraints**: Update constraints (license/export checks) and lockfile for new/updated deps. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit efd2d67. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
1 parent 7e3f1a6 commit 64f0777

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+635
-129
lines changed

.github/CODEOWNERS

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
/packages/composable-controller @MetaMask/core-platform
6868
/packages/controller-utils @MetaMask/core-platform
6969
/packages/error-reporting-service @MetaMask/core-platform
70+
/packages/eth-json-rpc-middleware @MetaMask/core-platform
7071
/packages/messenger @MetaMask/core-platform
7172
/packages/sample-controllers @MetaMask/core-platform
7273
/packages/polling-controller @MetaMask/core-platform
@@ -82,18 +83,20 @@
8283
/packages/subscription-controller @MetaMask/web3auth
8384

8485
## Joint team ownership
86+
/packages/core-backend @MetaMask/core-platform @MetaMask/metamask-assets
8587
/packages/eth-block-tracker @MetaMask/wallet-integrations @MetaMask/core-platform
86-
/packages/eth-json-rpc-provider @MetaMask/wallet-integrations @MetaMask/core-platform
87-
/packages/json-rpc-engine @MetaMask/wallet-integrations @MetaMask/core-platform
88-
/packages/json-rpc-middleware-stream @MetaMask/wallet-integrations @MetaMask/core-platform
89-
/packages/keyring-controller @MetaMask/accounts-engineers @MetaMask/core-platform
90-
/packages/multichain-network-controller @MetaMask/core-platform @MetaMask/accounts-engineers @MetaMask/metamask-assets
91-
/packages/network-controller @MetaMask/core-platform @MetaMask/metamask-assets
92-
/packages/permission-controller @MetaMask/wallet-integrations @MetaMask/core-platform
93-
/packages/permission-log-controller @MetaMask/wallet-integrations @MetaMask/core-platform
94-
/packages/remote-feature-flag-controller @MetaMask/extension-platform @MetaMask/mobile-platform
95-
/packages/foundryup @MetaMask/mobile-platform @MetaMask/extension-platform
96-
/packages/core-backend @MetaMask/core-platform @MetaMask/metamask-assets
88+
/packages/eth-json-rpc-middleware/src/methods @MetaMask/confirmations @MetaMask/wallet-api-platform-engineers
89+
/packages/eth-json-rpc-middleware/src/wallet.* @MetaMask/confirmations @MetaMask/wallet-api-platform-engineers
90+
/packages/eth-json-rpc-provider @MetaMask/wallet-integrations @MetaMask/core-platform
91+
/packages/foundryup @MetaMask/mobile-platform @MetaMask/extension-platform
92+
/packages/json-rpc-engine @MetaMask/wallet-integrations @MetaMask/core-platform
93+
/packages/json-rpc-middleware-stream @MetaMask/wallet-integrations @MetaMask/core-platform
94+
/packages/keyring-controller @MetaMask/accounts-engineers @MetaMask/core-platform
95+
/packages/multichain-network-controller @MetaMask/core-platform @MetaMask/accounts-engineers @MetaMask/metamask-assets
96+
/packages/network-controller @MetaMask/core-platform @MetaMask/metamask-assets
97+
/packages/permission-controller @MetaMask/wallet-integrations @MetaMask/core-platform
98+
/packages/permission-log-controller @MetaMask/wallet-integrations @MetaMask/core-platform
99+
/packages/remote-feature-flag-controller @MetaMask/extension-platform @MetaMask/mobile-platform @MetaMask/core-platform
97100

98101
## Package Release related
99102
/packages/account-tree-controller/package.json @MetaMask/accounts-engineers @MetaMask/core-platform

eslint-warning-thresholds.json

Lines changed: 87 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,99 @@
133133
"@typescript-eslint/prefer-promise-reject-errors": 1,
134134
"promise/param-names": 3
135135
},
136+
"packages/eip-5792-middleware/src/hooks/processSendCalls.ts": {
137+
"@typescript-eslint/no-misused-promises": 1
138+
},
136139
"packages/ens-controller/src/EnsController.test.ts": {
137140
"import-x/order": 2
138141
},
139142
"packages/ens-controller/src/EnsController.ts": {
140143
"jsdoc/check-tag-names": 6
141144
},
142-
"packages/eip-5792-middleware/src/hooks/processSendCalls.ts": {
143-
"@typescript-eslint/no-misused-promises": 1
145+
"packages/eth-json-rpc-middleware/src/block-cache.test.ts": {
146+
"@typescript-eslint/explicit-function-return-type": 1
147+
},
148+
"packages/eth-json-rpc-middleware/src/block-cache.ts": {
149+
"@typescript-eslint/no-explicit-any": 1,
150+
"no-restricted-syntax": 1
151+
},
152+
"packages/eth-json-rpc-middleware/src/block-ref.test.ts": {
153+
"@typescript-eslint/explicit-function-return-type": 1,
154+
"@typescript-eslint/no-explicit-any": 4,
155+
"jest/expect-expect": 2,
156+
"jsdoc/match-description": 1
157+
},
158+
"packages/eth-json-rpc-middleware/src/block-tracker-inspector.ts": {
159+
"@typescript-eslint/no-explicit-any": 1,
160+
"jsdoc/match-description": 1
161+
},
162+
"packages/eth-json-rpc-middleware/src/fetch.test.ts": {
163+
"@typescript-eslint/explicit-function-return-type": 1,
164+
"jsdoc/match-description": 1
165+
},
166+
"packages/eth-json-rpc-middleware/src/fetch.ts": {
167+
"jsdoc/match-description": 1
168+
},
169+
"packages/eth-json-rpc-middleware/src/inflight-cache.test.ts": {
170+
"@typescript-eslint/explicit-function-return-type": 1
171+
},
172+
"packages/eth-json-rpc-middleware/src/inflight-cache.ts": {
173+
"@typescript-eslint/explicit-function-return-type": 1,
174+
"@typescript-eslint/no-explicit-any": 1
175+
},
176+
"packages/eth-json-rpc-middleware/src/methods/wallet-request-execution-permissions.test.ts": {
177+
"@typescript-eslint/explicit-function-return-type": 1
178+
},
179+
"packages/eth-json-rpc-middleware/src/methods/wallet-revoke-execution-permission.test.ts": {
180+
"@typescript-eslint/explicit-function-return-type": 1
181+
},
182+
"packages/eth-json-rpc-middleware/src/retryOnEmpty.test.ts": {
183+
"@typescript-eslint/explicit-function-return-type": 4,
184+
"@typescript-eslint/no-explicit-any": 4,
185+
"jest/expect-expect": 5,
186+
"jsdoc/match-description": 4
187+
},
188+
"packages/eth-json-rpc-middleware/src/utils/cache.ts": {
189+
"jsdoc/match-description": 6
190+
},
191+
"packages/eth-json-rpc-middleware/src/utils/common.ts": {
192+
"@typescript-eslint/explicit-function-return-type": 1,
193+
"jsdoc/match-description": 1
194+
},
195+
"packages/eth-json-rpc-middleware/src/utils/normalize.test.ts": {
196+
"@typescript-eslint/explicit-function-return-type": 1
197+
},
198+
"packages/eth-json-rpc-middleware/src/utils/normalize.ts": {
199+
"@typescript-eslint/explicit-function-return-type": 2,
200+
"jsdoc/match-description": 3
201+
},
202+
"packages/eth-json-rpc-middleware/src/utils/timeout.test.ts": {
203+
"@typescript-eslint/explicit-function-return-type": 4
204+
},
205+
"packages/eth-json-rpc-middleware/src/utils/timeout.ts": {
206+
"jsdoc/match-description": 1
207+
},
208+
"packages/eth-json-rpc-middleware/src/wallet.test.ts": {
209+
"@typescript-eslint/explicit-function-return-type": 53
210+
},
211+
"packages/eth-json-rpc-middleware/src/wallet.ts": {
212+
"@typescript-eslint/explicit-function-return-type": 2,
213+
"@typescript-eslint/no-explicit-any": 2,
214+
"@typescript-eslint/prefer-nullish-coalescing": 5,
215+
"jsdoc/match-description": 3
216+
},
217+
"packages/eth-json-rpc-middleware/test/setupAfterEnv.ts": {
218+
"@typescript-eslint/explicit-function-return-type": 2,
219+
"@typescript-eslint/no-explicit-any": 3,
220+
"jsdoc/match-description": 2
221+
},
222+
"packages/eth-json-rpc-middleware/test/util/createHitTrackerMiddleware.ts": {
223+
"@typescript-eslint/explicit-function-return-type": 2
224+
},
225+
"packages/eth-json-rpc-middleware/test/util/helpers.ts": {
226+
"@typescript-eslint/explicit-function-return-type": 4,
227+
"@typescript-eslint/no-explicit-any": 1,
228+
"jsdoc/match-description": 9
144229
},
145230
"packages/eth-json-rpc-provider/src/safe-event-emitter-provider.test.ts": {
146231
"import-x/namespace": 1
@@ -256,15 +341,6 @@
256341
"@typescript-eslint/no-unused-vars": 1,
257342
"@typescript-eslint/prefer-promise-reject-errors": 1
258343
},
259-
"packages/network-controller/tests/create-network-client.test.ts": {
260-
"import-x/order": 1
261-
},
262-
"packages/network-controller/tests/provider-api-tests/helpers.ts": {
263-
"@typescript-eslint/prefer-promise-reject-errors": 1,
264-
"import-x/namespace": 1,
265-
"import-x/no-named-as-default-member": 1,
266-
"promise/catch-or-return": 1
267-
},
268344
"packages/permission-controller/src/Permission.ts": {
269345
"prettier/prettier": 11
270346
},

eslint.config.mjs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ const config = createConfig([
6262
files: [
6363
'**/*.{js,cjs,mjs}',
6464
'**/*.test.{js,ts}',
65+
'**/test/**/*.{js,ts}',
6566
'**/tests/**/*.{js,ts}',
6667
'scripts/*.ts',
6768
'scripts/create-package/**/*.ts',
@@ -218,6 +219,28 @@ const config = createConfig([
218219
sourceType: 'module',
219220
},
220221
},
222+
{
223+
files: ['packages/eth-json-rpc-middleware/**/*.ts'],
224+
rules: {
225+
// TODO: Review and re-enable these rules
226+
'@typescript-eslint/consistent-type-definitions': 'off',
227+
'@typescript-eslint/explicit-function-return-type': 'warn',
228+
'@typescript-eslint/naming-convention': 'off',
229+
'@typescript-eslint/no-explicit-any': 'warn',
230+
'@typescript-eslint/prefer-nullish-coalescing': 'warn',
231+
'@typescript-eslint/prefer-optional-chain': 'warn',
232+
'@typescript-eslint/restrict-template-expressions': 'off',
233+
'id-denylist': 'off',
234+
'id-length': 'off',
235+
'jsdoc/match-description': 'warn',
236+
'jsdoc/no-types': 'warn',
237+
'jsdoc/require-hyphen-before-param-description': 'warn',
238+
'jsdoc/require-jsdoc': 'off',
239+
'jsdoc/require-param-description': 'warn',
240+
'no-restricted-globals': 'off',
241+
'no-restricted-syntax': 'warn',
242+
},
243+
},
221244
{
222245
files: ['packages/foundryup/**/*.{js,ts}'],
223246
rules: {

merged-packages/eth-json-rpc-middleware/tsconfig.build.json

Lines changed: 0 additions & 26 deletions
This file was deleted.

merged-packages/eth-json-rpc-middleware/CHANGELOG.md renamed to packages/eth-json-rpc-middleware/CHANGELOG.md

Lines changed: 4 additions & 0 deletions

merged-packages/eth-json-rpc-middleware/jest.config.js renamed to packages/eth-json-rpc-middleware/jest.config.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ module.exports = merge(baseConfig, {
2020
// An object that configures minimum threshold enforcement for coverage results
2121
coverageThreshold: {
2222
global: {
23-
branches: 77.19,
24-
functions: 82.45,
25-
lines: 83.89,
26-
statements: 83.89,
23+
branches: 67.25,
24+
functions: 81.57,
25+
lines: 79.71,
26+
statements: 79.83,
2727
},
2828
},
2929
});

merged-packages/eth-json-rpc-middleware/package.json renamed to packages/eth-json-rpc-middleware/package.json

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@
22
"name": "@metamask/eth-json-rpc-middleware",
33
"version": "20.0.0",
44
"description": "Ethereum-related json-rpc-engine middleware",
5-
"homepage": "https://github.com/MetaMask/eth-json-rpc-middleware#readme",
5+
"keywords": [
6+
"MetaMask",
7+
"Ethereum"
8+
],
9+
"homepage": "https://github.com/MetaMask/core/tree/main/packages/eth-json-rpc-middleware#readme",
610
"bugs": {
7-
"url": "https://github.com/MetaMask/eth-json-rpc-middleware/issues"
11+
"url": "https://github.com/MetaMask/core/issues"
812
},
913
"repository": {
1014
"type": "git",
@@ -29,24 +33,25 @@
2933
"module": "./dist/index.mjs",
3034
"types": "./dist/index.d.cts",
3135
"files": [
32-
"dist"
36+
"dist/"
3337
],
3438
"scripts": {
35-
"build": "ts-bridge --project tsconfig.build.json --clean",
36-
"build:clean": "rimraf dist && yarn build",
39+
"build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references",
3740
"build:docs": "typedoc",
38-
"lint": "yarn lint:eslint && yarn lint:constraints && yarn lint:misc --check && yarn lint:dependencies --check && yarn lint:changelog",
39-
"lint:changelog": "auto-changelog validate --prettier",
40-
"lint:constraints": "yarn constraints",
41-
"lint:dependencies": "depcheck && yarn dedupe --check",
42-
"lint:dependencies:fix": "depcheck && yarn dedupe",
43-
"lint:eslint": "eslint . --cache",
44-
"lint:fix": "yarn lint:eslint --fix && yarn lint:constraints --fix && yarn lint:misc --write && yarn lint:dependencies:fix && yarn lint:changelog",
45-
"lint:misc": "prettier '**/*.json' '**/*.md' '**/*.yml' '!.yarnrc.yml' --ignore-path .gitignore --no-error-on-unmatched-pattern",
46-
"prepack": "./scripts/prepack.sh",
47-
"test": "jest && yarn build:clean && yarn test:types",
48-
"test:types": "tsd --files 'src/**/*.test-d.ts' && attw --pack",
49-
"test:watch": "jest --watch"
41+
"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",
42+
"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",
43+
"lint": "yarn lint:eslint && yarn lint:misc --check && yarn lint:dependencies && yarn lint:changelog",
44+
"lint:changelog": "auto-changelog validate",
45+
"lint:dependencies": "depcheck",
46+
"lint:eslint": "eslint . --cache --ext js,ts",
47+
"lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write && yarn lint:dependencies && yarn lint:changelog",
48+
"lint:misc": "prettier '**/*.json' '**/*.md' '!CHANGELOG.md' '**/*.yml' '!.yarnrc.yml' --ignore-path .gitignore --no-error-on-unmatched-pattern",
49+
"publish:preview": "yarn npm publish --tag preview",
50+
"since-latest-release": "../../scripts/since-latest-release.sh",
51+
"test": "NODE_OPTIONS=--experimental-vm-modules jest --reporters=jest-silent-reporter",
52+
"test:clean": "NODE_OPTIONS=--experimental-vm-modules jest --clearCache",
53+
"test:verbose": "NODE_OPTIONS=--experimental-vm-modules jest --verbose",
54+
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
5055
},
5156
"dependencies": {
5257
"@metamask/eth-block-tracker": "^13.0.0",
@@ -72,9 +77,8 @@
7277
"typedoc": "^0.24.8",
7378
"typescript": "~5.2.2"
7479
},
75-
"packageManager": "yarn@4.1.1",
7680
"engines": {
77-
"node": "^18.16 || ^20 || >=22"
81+
"node": "^18.18 || >=20"
7882
},
7983
"publishConfig": {
8084
"access": "public",

0 commit comments

Comments
 (0)