diff --git a/package.json b/package.json index a536ee46..b7a0cbd0 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "dependencies": { "@metamask/eth-json-rpc-provider": "^1.0.0", "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^5.0.2", + "@metamask/utils": "^7.1.0", "json-rpc-random-id": "^1.0.1", "pify": "^5.0.0" }, @@ -38,6 +38,7 @@ "@metamask/eslint-config-jest": "^12.0.0", "@metamask/eslint-config-nodejs": "^12.0.0", "@metamask/eslint-config-typescript": "^12.0.0", + "@metamask/json-rpc-engine": "^7.0.0", "@types/jest": "^29.1.2", "@types/json-rpc-random-id": "^1.0.1", "@types/node": "^17.0.23", @@ -54,7 +55,6 @@ "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-promise": "^6.1.1", "jest": "^29.1.2", - "json-rpc-engine": "^6.1.0", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", "rimraf": "^3.0.2", diff --git a/src/PollingBlockTracker.ts b/src/PollingBlockTracker.ts index 7e21c4fc..00fa99b8 100644 --- a/src/PollingBlockTracker.ts +++ b/src/PollingBlockTracker.ts @@ -1,6 +1,6 @@ import type { SafeEventEmitterProvider } from '@metamask/eth-json-rpc-provider'; import SafeEventEmitter from '@metamask/safe-event-emitter'; -import type { JsonRpcRequest } from 'json-rpc-engine'; +import type { JsonRpcRequest } from '@metamask/utils'; import getCreateRandomId from 'json-rpc-random-id'; import pify from 'pify'; @@ -25,7 +25,7 @@ export interface PollingBlockTrackerOptions { usePastBlocks?: boolean; } -interface ExtendedJsonRpcRequest extends JsonRpcRequest { +interface ExtendedJsonRpcRequest extends JsonRpcRequest<[]> { skipCache?: boolean; } @@ -283,7 +283,7 @@ export class PollingBlockTracker } private async _fetchLatestBlock(): Promise { - const req: ExtendedJsonRpcRequest<[]> = { + const req: ExtendedJsonRpcRequest = { jsonrpc: '2.0', id: createRandomId(), method: 'eth_blockNumber', diff --git a/src/SubscribeBlockTracker.ts b/src/SubscribeBlockTracker.ts index 72b4cf0d..d0ac90b8 100644 --- a/src/SubscribeBlockTracker.ts +++ b/src/SubscribeBlockTracker.ts @@ -1,6 +1,10 @@ import type { SafeEventEmitterProvider } from '@metamask/eth-json-rpc-provider'; import SafeEventEmitter from '@metamask/safe-event-emitter'; -import type { JsonRpcNotification, JsonRpcSuccess } from 'json-rpc-engine'; +import type { + Json, + JsonRpcNotification, + JsonRpcSuccess, +} from '@metamask/utils'; import getCreateRandomId from 'json-rpc-random-id'; import type { BlockTracker } from './BlockTracker'; @@ -20,6 +24,7 @@ export interface SubscribeBlockTrackerOptions { } interface SubscriptionNotificationParams { + [key: string]: Json; subscription: string; result: { number: string }; } @@ -250,7 +255,7 @@ export class SubscribeBlockTracker } } - private async _call(method: string, ...params: unknown[]): Promise { + private async _call(method: string, ...params: Json[]): Promise { return new Promise((resolve, reject) => { this._provider.sendAsync( { @@ -263,7 +268,7 @@ export class SubscribeBlockTracker if (err) { reject(err); } else { - resolve((res as JsonRpcSuccess).result); + resolve((res as JsonRpcSuccess).result); } }, ); diff --git a/tests/withBlockTracker.ts b/tests/withBlockTracker.ts index a764b9eb..e7e1b05d 100644 --- a/tests/withBlockTracker.ts +++ b/tests/withBlockTracker.ts @@ -1,7 +1,7 @@ import { providerFromEngine } from '@metamask/eth-json-rpc-provider'; import type { SafeEventEmitterProvider } from '@metamask/eth-json-rpc-provider'; -import type { JsonRpcRequest, JsonRpcResponse } from 'json-rpc-engine'; -import { JsonRpcEngine } from 'json-rpc-engine'; +import { JsonRpcEngine } from '@metamask/json-rpc-engine'; +import type { JsonRpcRequest, JsonRpcResponse } from '@metamask/utils'; import util from 'util'; import type { @@ -122,8 +122,8 @@ function getFakeProvider({ .spyOn(provider, 'sendAsync') .mockImplementation( ( - request: JsonRpcRequest, - callback: (err: unknown, response?: JsonRpcResponse) => void, + request: JsonRpcRequest, + callback: (err: unknown, response?: JsonRpcResponse) => void, ) => { const index = stubs.findIndex( (stub) => stub.methodName === request.method, diff --git a/yarn.lock b/yarn.lock index 8b1707d4..8b72abb5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -801,6 +801,23 @@ "@metamask/safe-event-emitter" "^2.0.0" json-rpc-engine "^6.1.0" +"@metamask/json-rpc-engine@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@metamask/json-rpc-engine/-/json-rpc-engine-7.0.0.tgz#5110d7e90a75aab4e515621fafff5adf7174b6e3" + integrity sha512-qIfQvEOD3vFMZpXQUcXjuVDnkznzjARRSa9mUjZnYImhoxgvPdTery31I+zkRuksNLffvJc08SL2cQaC3uVfYA== + dependencies: + "@metamask/rpc-errors" "^5.0.0" + "@metamask/safe-event-emitter" "^2.0.0" + "@metamask/utils" "^5.0.1" + +"@metamask/rpc-errors@^5.0.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@metamask/rpc-errors/-/rpc-errors-5.1.1.tgz#f82732ad0952d34d219eca42699c0c74bee95a9e" + integrity sha512-JjZnDi2y2CfvbohhBl+FOQRzmFlJpybcQlIk37zEX8B96eVSPbH/T8S0p7cSF8IE33IWx6JkD8Ycsd+2TXFxCw== + dependencies: + "@metamask/utils" "^5.0.0" + fast-safe-stringify "^2.0.6" + "@metamask/safe-event-emitter@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" @@ -811,7 +828,7 @@ resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-3.0.0.tgz#8c2b9073fe0722d48693143b0dc8448840daa3bd" integrity sha512-j6Z47VOmVyGMlnKXZmL0fyvWfEYtKWCA9yGZkU3FCsGZUT5lHGmvaV9JA5F2Y+010y7+ROtR3WMXIkvl/nVzqQ== -"@metamask/utils@^5.0.2": +"@metamask/utils@^5.0.0", "@metamask/utils@^5.0.1": version "5.0.2" resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-5.0.2.tgz#140ba5061d90d9dac0280c19cab101bc18c8857c" integrity sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g== @@ -822,6 +839,18 @@ semver "^7.3.8" superstruct "^1.0.3" +"@metamask/utils@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-7.1.0.tgz#0eb60de7608391a469b24320510c003dd4774b70" + integrity sha512-13deTtY8YUWRfEN7BUPeudDIWuKqjHmPm9vricTkNLFkLCWEuFQIoJf+v47lI7G4kx8uO/zRwKgPyeGlqo3Baw== + dependencies: + "@ethereumjs/tx" "^4.1.2" + "@noble/hashes" "^1.3.1" + "@types/debug" "^4.1.7" + debug "^4.3.4" + semver "^7.5.4" + superstruct "^1.0.3" + "@nicolo-ribaudo/semver-v6@^6.3.3": version "6.3.3" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz#ea6d23ade78a325f7a52750aab1526b02b628c29" @@ -834,11 +863,16 @@ dependencies: "@noble/hashes" "1.3.0" -"@noble/hashes@1.3.0", "@noble/hashes@^1.3.0", "@noble/hashes@~1.3.0": +"@noble/hashes@1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1" integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg== +"@noble/hashes@^1.3.0", "@noble/hashes@^1.3.1", "@noble/hashes@~1.3.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" + integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -3928,7 +3962,7 @@ semver@^6.0.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3: +semver@^7.0.0, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==