Skip to content

Commit b171486

Browse files
authored
eth-json-rpc-provider migration - Integration into packages/ (#1738)
## Explanation This PR implements the following incremental steps in the process for migrating `eth-json-rpc-provider` into the core monorepo: *** ### Phase B: Staging from `merged-packages/` #### 5. Port tags - See: #1800 <details> <summary>Push ported tags to core repo</summary> - [x] https://github.com/MetaMask/core/releases/tag/@metamask/[email protected] - [x] https://github.com/MetaMask/core/releases/tag/@metamask/[email protected] - [x] https://github.com/MetaMask/core/releases/tag/@metamask/[email protected] - [x] https://github.com/MetaMask/core/releases/tag/@metamask/[email protected] - [x] https://github.com/MetaMask/core/releases/tag/@metamask/[email protected] </details> <details> <summary>Verify that the tag diff links in CHANGELOG are working</summary> - [x] **WONTFIX**: https://github.com/MetaMask/core/compare/@metamask/[email protected] - [x] https://github.com/MetaMask/core/compare/@metamask/[email protected]...@metamask/[email protected] - [x] https://github.com/MetaMask/core/compare/@metamask/[email protected]...@metamask/[email protected] - [x] https://github.com/MetaMask/core/compare/@metamask/[email protected]...@metamask/[email protected] - [x] https://github.com/MetaMask/core/compare/@metamask/[email protected]...@metamask/[email protected] </details> ### Phase C: Integration into `packages/` #### 1. The big leap - [x] **Move migration target from `migrated-packages/` to `packages/`.** - [x] Run `yarn install` in the root directory. - [x] Check that all tests are passing in migration target by running `yarn workspace @metamask/<package-name> test`. #### 2. Update downstream repos - [x] Add tsconfig reference paths for migration target in downstream packages and root. - [x] Bump migration target version in downstream packages and root. #### 3. Linter fixes - [x] Apply yarn constraints fixes to migration target package.json file: `yarn constraints --fix` (run twice). - [x] Identify validator fixes for CHANGELOG using `yarn workspace @metamask/<package-name> changelog:validate` and apply the diffs. #### 4. Resolve downstream errors - [x] #1653 - If introducing the migration target breaks any downstream repos: - [x] Resolve simple errors - [x] Mark and ignore complex errors using `@ts-expect-error TODO:` annotations. - [x] Create a separate issue for resolving the marked errors as soon as the migration is completed. #### 5. Finalize merge - [x] Check that all tests are passing in all subpackages of core and CI. - [x] Merge `packages/<package-name>` directory into core main branch. *** See #1551 (comment) for an outline of the entire process. ## Next Steps - The next PR(s) will implement the final steps of the migration process (D-1 in the migration checklist). ## Blocked by - Dependencies: - [x] typescript bump: #1718 - [x] `@metamask/utils` bump: #1639 - Downstream type errors: - [x] #1653 - [ ] MetaMask/eth-json-rpc-provider#14 (ignored) - [ ] MetaMask/utils#140 (ignored) - Tag porting: - [x] #1802 - [x] "Unreleased" tag diff link shows entire history of core: https://github.com/MetaMask/core/compare/@metamask/[email protected] ## References - Contributes to #1685 - Contributes to #1551 ## Changelog <!-- If you're making any consumer-facing changes, list those changes here as if you were updating a changelog, using the template below as a guide. (CATEGORY is one of BREAKING, ADDED, CHANGED, DEPRECATED, REMOVED, or FIXED. For security-related issues, follow the Security Advisory process.) Please take care to name the exact pieces of the API you've added or changed (e.g. types, interfaces, functions, or methods). If there are any breaking changes, make sure to offer a solution for consumers to follow once they upgrade to the changes. Finally, if you're only making changes to development scripts or tests, you may replace the template below with "None". --> ### `@metamask/eth-json-rpc-provider` - **ADDED**: Migrated into the core monorepo. ## 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 highlighted breaking changes using the "BREAKING" category above as appropriate
1 parent 855a752 commit b171486

25 files changed

+581
-46
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
"@metamask/eslint-config-jest": "^12.1.0",
4444
"@metamask/eslint-config-nodejs": "^12.1.0",
4545
"@metamask/eslint-config-typescript": "^12.1.0",
46-
"@metamask/eth-json-rpc-provider": "^2.1.0",
46+
"@metamask/eth-json-rpc-provider": "^2.2.0",
4747
"@metamask/json-rpc-engine": "^7.1.1",
4848
"@metamask/utils": "^8.1.0",
4949
"@types/node": "^16.18.54",

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

+8-8
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@ Release `v2.0.0` is identical to `v1.0.1` aside from Node.js version requirement
3737

3838
## [1.0.0]
3939
### Added
40-
- Initial release, including `providerFromEngine` and `providerFromMiddleware`
41-
42-
[Unreleased]: https://github.com/MetaMask/eth-json-rpc-provider/compare/v2.2.0...HEAD
43-
[2.2.0]: https://github.com/MetaMask/eth-json-rpc-provider/compare/v2.1.0...v2.2.0
44-
[2.1.0]: https://github.com/MetaMask/eth-json-rpc-provider/compare/v2.0.0...v2.1.0
45-
[2.0.0]: https://github.com/MetaMask/eth-json-rpc-provider/compare/v1.0.1...v2.0.0
46-
[1.0.1]: https://github.com/MetaMask/eth-json-rpc-provider/compare/v1.0.0...v1.0.1
47-
[1.0.0]: https://github.com/MetaMask/eth-json-rpc-provider/releases/tag/v1.0.0
40+
- Initial release, including `providerFromEngine` and `providerFromMiddleware`.
41+
42+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/eth-json-rpc-provider@2.2.0...HEAD
43+
[2.2.0]: https://github.com/MetaMask/core/compare/@metamask/eth-json-rpc-provider@2.1.0...@metamask/eth-json-rpc-provider@2.2.0
44+
[2.1.0]: https://github.com/MetaMask/core/compare/@metamask/eth-json-rpc-provider@2.0.0...@metamask/eth-json-rpc-provider@2.1.0
45+
[2.0.0]: https://github.com/MetaMask/core/compare/@metamask/eth-json-rpc-provider@1.0.1...@metamask/eth-json-rpc-provider@2.0.0
46+
[1.0.1]: https://github.com/MetaMask/core/compare/@metamask/eth-json-rpc-provider@1.0.0...@metamask/eth-json-rpc-provider@1.0.1
47+
[1.0.0]: https://github.com/MetaMask/core/releases/tag/@metamask/eth-json-rpc-provider@1.0.0

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

+18-7
Original file line numberDiff line numberDiff line change
@@ -2,47 +2,58 @@
22
"name": "@metamask/eth-json-rpc-provider",
33
"version": "2.2.0",
44
"description": "Create an Ethereum provider using a JSON-RPC engine or middleware",
5+
"keywords": [
6+
"MetaMask",
7+
"Ethereum"
8+
],
9+
"homepage": "https://github.com/MetaMask/core/tree/main/packages/eth-json-rpc-provider#readme",
10+
"bugs": {
11+
"url": "https://github.com/MetaMask/core/issues"
12+
},
513
"repository": {
614
"type": "git",
7-
"url": "https://github.com/MetaMask/eth-json-rpc-provider.git"
15+
"url": "https://github.com/MetaMask/core.git"
816
},
917
"license": "ISC",
10-
"main": "dist/index.js",
11-
"types": "dist/index.d.ts",
18+
"main": "./dist/index.js",
19+
"types": "./dist/index.d.ts",
1220
"files": [
1321
"dist/"
1422
],
1523
"scripts": {
1624
"build": "tsc --project tsconfig.build.json",
1725
"build:clean": "rimraf dist && yarn build",
1826
"build:docs": "typedoc",
27+
"changelog:validate": "../../scripts/validate-changelog.sh @metamask/eth-json-rpc-provider",
1928
"lint": "yarn lint:eslint && yarn lint:misc --check && yarn lint:dependencies",
2029
"lint:dependencies": "depcheck",
2130
"lint:eslint": "eslint . --cache --ext js,ts",
2231
"lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write && yarn lint:dependencies",
2332
"lint:misc": "prettier '**/*.json' '**/*.md' '!CHANGELOG.md' '**/*.yml' '!.yarnrc.yml' --ignore-path .gitignore --no-error-on-unmatched-pattern",
2433
"prepack": "./scripts/prepack.sh",
25-
"test": "jest && jest-it-up",
34+
"publish:preview": "yarn npm publish --tag preview",
35+
"test": "jest",
36+
"test:clean": "jest --clearCache",
2637
"test:watch": "jest --watch"
2738
},
2839
"dependencies": {
29-
"@metamask/json-rpc-engine": "^7.1.0",
40+
"@metamask/json-rpc-engine": "^7.1.1",
3041
"@metamask/safe-event-emitter": "^3.0.0",
3142
"@metamask/utils": "^8.1.0"
3243
},
3344
"devDependencies": {
3445
"@metamask/auto-changelog": "^3.1.0",
3546
"@types/jest": "^27.4.1",
36-
"depcheck": "^1.4.3",
3747
"deepmerge": "^4.2.2",
48+
"depcheck": "^1.4.3",
3849
"jest": "^27.5.1",
3950
"jest-it-up": "^2.0.2",
4051
"ts-jest": "^27.1.4",
4152
"typedoc": "^0.24.8"
4253
},
4354
"packageManager": "[email protected]",
4455
"engines": {
45-
"node": "^16.20 || ^18.16 || >=20"
56+
"node": ">=16.0.0"
4657
},
4758
"publishConfig": {
4859
"access": "public",

merged-packages/eth-json-rpc-provider/src/index.test.ts renamed to packages/eth-json-rpc-provider/src/index.test.ts

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ describe('Package exports', () => {
44
it('has expected exports', () => {
55
expect(Object.keys(allExports)).toMatchInlineSnapshot(`
66
Array [
7+
"SafeEventEmitterProvider",
78
"providerFromEngine",
89
"providerFromMiddleware",
910
]
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
export * from './provider-from-engine';
22
export * from './provider-from-middleware';
3-
export type { SafeEventEmitterProvider } from './safe-event-emitter-provider';
3+
export { SafeEventEmitterProvider } from './safe-event-emitter-provider';

packages/network-controller/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"@metamask/controller-utils": "^5.0.2",
3434
"@metamask/eth-json-rpc-infura": "^9.0.0",
3535
"@metamask/eth-json-rpc-middleware": "^12.0.0",
36-
"@metamask/eth-json-rpc-provider": "^2.1.0",
36+
"@metamask/eth-json-rpc-provider": "^2.2.0",
3737
"@metamask/eth-query": "^3.0.1",
3838
"@metamask/json-rpc-engine": "^7.1.1",
3939
"@metamask/rpc-errors": "^6.1.0",

packages/network-controller/tests/fake-provider.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { SafeEventEmitterProvider } from '@metamask/eth-json-rpc-provider/dist/safe-event-emitter-provider';
1+
import { SafeEventEmitterProvider } from '@metamask/eth-json-rpc-provider';
22
import { JsonRpcEngine } from '@metamask/json-rpc-engine';
33
import type { JsonRpcRequest, JsonRpcResponse } from '@metamask/utils';
44
import { inspect, isDeepStrictEqual } from 'util';

packages/network-controller/tsconfig.build.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
},
88
"references": [
99
{ "path": "../base-controller/tsconfig.build.json" },
10-
{ "path": "../controller-utils/tsconfig.build.json" }
10+
{ "path": "../controller-utils/tsconfig.build.json" },
11+
{ "path": "../eth-json-rpc-provider/tsconfig.build.json" }
1112
],
1213
"include": ["../../types", "./src"]
1314
}

packages/network-controller/tsconfig.json

+3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
},
1111
{
1212
"path": "../controller-utils"
13+
},
14+
{
15+
"path": "../eth-json-rpc-provider"
1316
}
1417
],
1518
"include": ["../../types", "../../tests", "./src", "./tests"]

tests/fake-block-tracker.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { SafeEventEmitterProvider } from '@metamask/eth-json-rpc-provider/dist/safe-event-emitter-provider';
1+
import { SafeEventEmitterProvider } from '@metamask/eth-json-rpc-provider';
22
import { JsonRpcEngine } from '@metamask/json-rpc-engine';
33
import { PollingBlockTracker } from 'eth-block-tracker';
44

tsconfig.build.json

+3
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
{
2828
"path": "./packages/ens-controller/tsconfig.build.json"
2929
},
30+
{
31+
"path": "./packages/eth-json-rpc-provider/tsconfig.build.json"
32+
},
3033
{
3134
"path": "./packages/gas-fee-controller/tsconfig.build.json"
3235
},

tsconfig.json

+3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@
3131
{
3232
"path": "./packages/ens-controller"
3333
},
34+
{
35+
"path": "./packages/eth-json-rpc-provider"
36+
},
3437
{
3538
"path": "./packages/gas-fee-controller"
3639
},

0 commit comments

Comments
 (0)