Skip to content
Draft
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 1 addition & 9 deletions eslint-warning-thresholds.json
Original file line number Diff line number Diff line change
Expand Up @@ -152,12 +152,6 @@
"packages/eip-5792-middleware/src/hooks/processSendCalls.ts": {
"@typescript-eslint/no-misused-promises": 1
},
"packages/eth-json-rpc-provider/src/safe-event-emitter-provider.test.ts": {
"import-x/namespace": 1
},
"packages/eth-json-rpc-provider/src/safe-event-emitter-provider.ts": {
"@typescript-eslint/prefer-readonly": 1
},
"packages/gas-fee-controller/src/GasFeeController.test.ts": {
"import-x/namespace": 2,
"import-x/order": 1
Expand Down Expand Up @@ -258,9 +252,7 @@
"jsdoc/require-returns": 1
},
"packages/network-controller/src/NetworkController.ts": {
"@typescript-eslint/prefer-promise-reject-errors": 1,
"@typescript-eslint/prefer-readonly": 2,
"jsdoc/tag-lines": 1
"@typescript-eslint/prefer-promise-reject-errors": 1
},
"packages/network-controller/tests/NetworkController.test.ts": {
"@typescript-eslint/no-unused-vars": 1,
Expand Down
4 changes: 2 additions & 2 deletions packages/bridge-controller/src/utils/balance.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { BigNumber } from '@ethersproject/bignumber';
import { AddressZero } from '@ethersproject/constants';
import { Contract } from '@ethersproject/contracts';
import { Web3Provider } from '@ethersproject/providers';
import type { SafeEventEmitterProvider } from '@metamask/eth-json-rpc-provider';
import type { InternalProvider } from '@metamask/eth-json-rpc-provider';
import { abiERC20 } from '@metamask/metamask-eth-abis';

import * as balanceUtils from './balance';
Expand All @@ -11,7 +11,7 @@ import { FakeProvider } from '../../../../tests/fake-provider';

declare global {
// eslint-disable-next-line no-var
var ethereumProvider: SafeEventEmitterProvider;
var ethereumProvider: InternalProvider;
}

jest.mock('@ethersproject/contracts', () => {
Expand Down
3 changes: 3 additions & 0 deletions packages/eth-json-rpc-provider/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed

- **BREAKING:** Replace `SafeEventEmitterProvider` with `InternalProvider` ([#6796](https://github.com/MetaMask/core/pull/6796))
- The new class is behaviorally equivalent to the previous version except it does not extend `SafeEventEmitter`.
- `SafeEventEmitterProvider` is for now still exported as a deprecated alias of `InternalProvider` for backwards compatibility.
- Bump `@metamask/utils` from `^11.8.0` to `^11.8.1` ([#6708](https://github.com/MetaMask/core/pull/6708))

## [5.0.0]
Expand Down
1 change: 0 additions & 1 deletion packages/eth-json-rpc-provider/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@
"dependencies": {
"@metamask/json-rpc-engine": "^10.1.0",
"@metamask/rpc-errors": "^7.0.2",
"@metamask/safe-event-emitter": "^3.0.0",
"@metamask/utils": "^11.8.1",
"uuid": "^8.3.2"
},
Expand Down
1 change: 1 addition & 0 deletions packages/eth-json-rpc-provider/src/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ describe('Package exports', () => {
it('has expected exports', () => {
expect(Object.keys(allExports)).toMatchInlineSnapshot(`
Array [
"InternalProvider",
"SafeEventEmitterProvider",
"providerFromEngine",
"providerFromMiddleware",
Expand Down
11 changes: 10 additions & 1 deletion packages/eth-json-rpc-provider/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
import { InternalProvider } from './internal-provider';

export * from './provider-from-engine';
export * from './provider-from-middleware';
export { SafeEventEmitterProvider } from './safe-event-emitter-provider';

/**
* @deprecated Use {@link InternalProvider} instead.
*/
type SafeEventEmitterProvider = InternalProvider;
const SafeEventEmitterProvider = InternalProvider;

export { InternalProvider, SafeEventEmitterProvider };
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ import { providerErrors } from '@metamask/rpc-errors';
import { type JsonRpcRequest, type Json } from '@metamask/utils';
import { BrowserProvider } from 'ethers';
import { promisify } from 'util';
// eslint-disable-next-line import-x/namespace
import * as uuid from 'uuid';

import {
SafeEventEmitterProvider,
InternalProvider,
convertEip1193RequestToJsonRpcRequest,
} from './safe-event-emitter-provider';
} from './internal-provider';

jest.mock('uuid');

Expand All @@ -34,9 +35,9 @@ function createMockEngine(method: string, response: Json) {
return engine;
}

describe('SafeEventEmitterProvider', () => {
describe('InternalProvider', () => {
it('returns the correct block number with @metamask/eth-query', async () => {
const provider = new SafeEventEmitterProvider({
const provider = new InternalProvider({
engine: createMockEngine('eth_blockNumber', 42),
});
const ethQuery = new EthQuery(provider);
Expand All @@ -47,7 +48,7 @@ describe('SafeEventEmitterProvider', () => {
});

it('returns the correct block number with @metamask/ethjs-query', async () => {
const provider = new SafeEventEmitterProvider({
const provider = new InternalProvider({
engine: createMockEngine('eth_blockNumber', 42),
});
const ethJsQuery = new EthJsQuery(provider);
Expand All @@ -58,7 +59,7 @@ describe('SafeEventEmitterProvider', () => {
});

it('returns the correct block number with Web3Provider', async () => {
const provider = new SafeEventEmitterProvider({
const provider = new InternalProvider({
engine: createMockEngine('eth_blockNumber', 42),
});
const web3Provider = new Web3Provider(provider);
Expand All @@ -69,7 +70,7 @@ describe('SafeEventEmitterProvider', () => {
});

it('returns the correct block number with BrowserProvider', async () => {
const provider = new SafeEventEmitterProvider({
const provider = new InternalProvider({
engine: createMockEngine('eth_blockNumber', 42),
});
const browserProvider = new BrowserProvider(provider);
Expand All @@ -88,7 +89,7 @@ describe('SafeEventEmitterProvider', () => {
res.result = 42;
end();
});
const provider = new SafeEventEmitterProvider({ engine });
const provider = new InternalProvider({ engine });
const exampleRequest = {
id: 1,
jsonrpc: '2.0' as const,
Expand Down Expand Up @@ -121,7 +122,7 @@ describe('SafeEventEmitterProvider', () => {
res.result = 42;
end();
});
const provider = new SafeEventEmitterProvider({ engine });
const provider = new InternalProvider({ engine });
const exampleRequest = {
method: 'test',
params: {
Expand Down Expand Up @@ -158,7 +159,7 @@ describe('SafeEventEmitterProvider', () => {
}),
);
});
const provider = new SafeEventEmitterProvider({ engine });
const provider = new InternalProvider({ engine });
const exampleRequest = {
id: 1,
jsonrpc: '2.0' as const,
Expand All @@ -172,9 +173,7 @@ describe('SafeEventEmitterProvider', () => {
code: 1001,
message: 'Test error',
data: { cause: 'Test cause' },
stack: expect.stringContaining(
'safe-event-emitter-provider.test.ts:',
),
stack: expect.stringContaining('internal-provider.test.ts:'),
}),
);
});
Expand All @@ -184,7 +183,7 @@ describe('SafeEventEmitterProvider', () => {
engine.push(() => {
throw new Error('Test error');
});
const provider = new SafeEventEmitterProvider({ engine });
const provider = new InternalProvider({ engine });
const exampleRequest = {
id: 1,
jsonrpc: '2.0' as const,
Expand All @@ -199,9 +198,7 @@ describe('SafeEventEmitterProvider', () => {
message: 'Test error',
data: {
cause: expect.objectContaining({
stack: expect.stringContaining(
'safe-event-emitter-provider.test.ts:',
),
stack: expect.stringContaining('internal-provider.test.ts:'),
message: 'Test error',
}),
},
Expand All @@ -219,7 +216,7 @@ describe('SafeEventEmitterProvider', () => {
res.result = 42;
end();
});
const provider = new SafeEventEmitterProvider({ engine });
const provider = new InternalProvider({ engine });
const promisifiedSendAsync = promisify(provider.sendAsync);
const exampleRequest = {
id: 1,
Expand Down Expand Up @@ -253,7 +250,7 @@ describe('SafeEventEmitterProvider', () => {
res.result = 42;
end();
});
const provider = new SafeEventEmitterProvider({ engine });
const provider = new InternalProvider({ engine });
const promisifiedSendAsync = promisify(provider.sendAsync);
const exampleRequest = {
method: 'test',
Expand Down Expand Up @@ -283,7 +280,7 @@ describe('SafeEventEmitterProvider', () => {
engine.push((_req, _res, _next, _end) => {
throw new Error('Test error');
});
const provider = new SafeEventEmitterProvider({ engine });
const provider = new InternalProvider({ engine });
const promisifiedSendAsync = promisify(provider.sendAsync);
const exampleRequest = {
id: 1,
Expand All @@ -300,7 +297,7 @@ describe('SafeEventEmitterProvider', () => {
describe('send', () => {
it('throws if a callback is not provided', () => {
const engine = new JsonRpcEngine();
const provider = new SafeEventEmitterProvider({ engine });
const provider = new InternalProvider({ engine });
const exampleRequest = {
id: 1,
jsonrpc: '2.0' as const,
Expand All @@ -320,7 +317,7 @@ describe('SafeEventEmitterProvider', () => {
res.result = 42;
end();
});
const provider = new SafeEventEmitterProvider({ engine });
const provider = new InternalProvider({ engine });
const promisifiedSend = promisify(provider.send);
const exampleRequest = {
id: 1,
Expand Down Expand Up @@ -354,7 +351,7 @@ describe('SafeEventEmitterProvider', () => {
res.result = 42;
end();
});
const provider = new SafeEventEmitterProvider({ engine });
const provider = new InternalProvider({ engine });
const promisifiedSend = promisify(provider.send);
const exampleRequest = {
method: 'test',
Expand Down Expand Up @@ -384,7 +381,7 @@ describe('SafeEventEmitterProvider', () => {
engine.push((_req, _res, _next, _end) => {
throw new Error('Test error');
});
const provider = new SafeEventEmitterProvider({ engine });
const provider = new InternalProvider({ engine });
const promisifiedSend = promisify(provider.send);
const exampleRequest = {
id: 1,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type { JsonRpcEngine } from '@metamask/json-rpc-engine';
import { JsonRpcError } from '@metamask/rpc-errors';
import SafeEventEmitter from '@metamask/safe-event-emitter';
import type {
Json,
JsonRpcId,
Expand Down Expand Up @@ -52,17 +51,16 @@ export function convertEip1193RequestToJsonRpcRequest<
* This provider loosely follows conventions that pre-date EIP-1193.
* It is not compliant with any Ethereum provider standard.
*/
export class SafeEventEmitterProvider extends SafeEventEmitter {
#engine: JsonRpcEngine;
export class InternalProvider {
readonly #engine: JsonRpcEngine;

/**
* Construct a SafeEventEmitterProvider from a JSON-RPC engine.
* Construct a InternalProvider from a JSON-RPC engine.
*
* @param options - Options.
* @param options.engine - The JSON-RPC engine used to process requests.
*/
constructor({ engine }: { engine: JsonRpcEngine }) {
super();
this.#engine = engine;
}

Expand Down
8 changes: 3 additions & 5 deletions packages/eth-json-rpc-provider/src/provider-from-engine.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
import type { JsonRpcEngine } from '@metamask/json-rpc-engine';

import { SafeEventEmitterProvider } from './safe-event-emitter-provider';
import { InternalProvider } from './internal-provider';

/**
* Construct an Ethereum provider from the given JSON-RPC engine.
*
* @param engine - The JSON-RPC engine to construct a provider from.
* @returns An Ethereum provider.
*/
export function providerFromEngine(
engine: JsonRpcEngine,
): SafeEventEmitterProvider {
return new SafeEventEmitterProvider({ engine });
export function providerFromEngine(engine: JsonRpcEngine): InternalProvider {
return new InternalProvider({ engine });
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import { JsonRpcEngine } from '@metamask/json-rpc-engine';
import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';
import type { Json, JsonRpcParams } from '@metamask/utils';

import type { InternalProvider } from './internal-provider';
import { providerFromEngine } from './provider-from-engine';
import type { SafeEventEmitterProvider } from './safe-event-emitter-provider';

/**
* Construct an Ethereum provider from the given middleware.
Expand All @@ -14,9 +14,9 @@ import type { SafeEventEmitterProvider } from './safe-event-emitter-provider';
export function providerFromMiddleware<
Params extends JsonRpcParams,
Result extends Json,
>(middleware: JsonRpcMiddleware<Params, Result>): SafeEventEmitterProvider {
>(middleware: JsonRpcMiddleware<Params, Result>): InternalProvider {
const engine: JsonRpcEngine = new JsonRpcEngine();
engine.push(middleware);
const provider: SafeEventEmitterProvider = providerFromEngine(engine);
const provider: InternalProvider = providerFromEngine(engine);
return provider;
}
1 change: 1 addition & 0 deletions packages/network-controller/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed

- **BREAKING:** Use `InternalProvider` instead of `SafeEventEmitterProvider` ([#6796](https://github.com/MetaMask/core/pull/6796))
- Bump `@metamask/utils` from `^11.8.0` to `^11.8.1` ([#6708](https://github.com/MetaMask/core/pull/6708))
- Update `@metamask/eth-json-rpc-middleware` from `^17.0.1` to `^18.0.0` ([#6714](https://github.com/MetaMask/core/pull/6714))
- Bump `@metamask/error-reporting-service` from `^2.1.0` to `^2.2.0` ([#6782](https://github.com/MetaMask/core/pull/6782))
Expand Down
Loading
Loading