Skip to content

Commit

Permalink
add removeListener events to EIP1193Provider
Browse files Browse the repository at this point in the history
 + update CHANGELOG
 + Fix some events types at `SocketProvider`
  • Loading branch information
Muhammad-Altabba committed Jun 22, 2023
1 parent 89b2cd3 commit 6c59986
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 8 deletions.
9 changes: 9 additions & 0 deletions packages/web3-types/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,15 @@ Documentation:

## [Unreleased]

### Added

- Added the `SimpleProvider` interface which has only `request(args)` method that is compatible with EIP-1193 (#6210)
- Added the `Eip1193EventName` type that contains the possible events names according to EIP-1193 (#6210)

### Changed

- The `EIP1193Provider` class has now all the events (for `on` and `removeListener`) according to EIP-1193 (#6210)

### Fixed

- Fixed bug #6185, now web3.js compiles on typescript v5 (#6195)
13 changes: 13 additions & 0 deletions packages/web3-types/src/web3_base_provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,12 +108,25 @@ export type ProviderChainId = string;

export type ProviderAccounts = string[];

export type Eip1193EventName =
| 'connect'
| 'disconnect'
| 'message'
| 'chainChanged'
| 'accountsChanged';

export interface EIP1193Provider<API extends Web3APISpec> extends SimpleProvider<API> {
on(event: 'connect', listener: (info: ProviderInfo) => void): void;
on(event: 'disconnect', listener: (error: ProviderRpcError) => void): void;
on(event: 'message', listener: (message: ProviderMessage) => void): void;
on(event: 'chainChanged', listener: (chainId: ProviderChainId) => void): void;
on(event: 'accountsChanged', listener: (accounts: ProviderAccounts) => void): void;

removeListener(event: 'connect', listener: (info: ProviderInfo) => void): void;
removeListener(event: 'disconnect', listener: (error: ProviderRpcError) => void): void;
removeListener(event: 'message', listener: (message: ProviderMessage) => void): void;
removeListener(event: 'chainChanged', listener: (chainId: ProviderChainId) => void): void;
removeListener(event: 'accountsChanged', listener: (accounts: ProviderAccounts) => void): void;
}

// Provider interface compatible with EIP-1193
Expand Down
30 changes: 22 additions & 8 deletions packages/web3-utils/src/socket_provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ along with web3.js. If not, see <http://www.gnu.org/licenses/>.
*/
import {
ConnectionEvent,
Eip1193EventName,
EthExecutionAPI,
JsonRpcBatchRequest,
JsonRpcBatchResponse,
Expand Down Expand Up @@ -223,8 +224,11 @@ export abstract class SocketProvider<
listener: Web3Eip1193ProviderEventCallback<unknown> | Web3ProviderEventCallback<T>,
): void;
public on<T = JsonRpcResult, P = unknown>(
type: string | 'disconnect' | 'connect' | 'chainChanged' | 'accountsChanged',
listener: Web3Eip1193ProviderEventCallback<P> | Web3ProviderEventCallback<T>,
type: string | Eip1193EventName,
listener:
| Web3Eip1193ProviderEventCallback<P>
| Web3ProviderMessageEventCallback<T>
| Web3ProviderEventCallback<T>,
): void {
this._eventEmitter.on(type, listener);
}
Expand All @@ -249,15 +253,20 @@ export abstract class SocketProvider<
): void;
public once<T = JsonRpcResult>(
type: 'message',
listener: Web3Eip1193ProviderEventCallback<ProviderMessage> | Web3ProviderEventCallback<T>,
listener:
| Web3Eip1193ProviderEventCallback<ProviderMessage>
| Web3ProviderMessageEventCallback<T>,
): void;
public once<T = JsonRpcResult>(
type: string,
listener: Web3Eip1193ProviderEventCallback<unknown> | Web3ProviderEventCallback<T>,
): void;
public once<T = JsonRpcResult, P = unknown>(
type: string | 'disconnect' | 'connect' | 'chainChanged' | 'accountsChanged',
listener: Web3Eip1193ProviderEventCallback<P> | Web3ProviderEventCallback<T>,
type: string | Eip1193EventName,
listener:
| Web3Eip1193ProviderEventCallback<P>
| Web3ProviderMessageEventCallback<T>
| Web3ProviderEventCallback<T>,
): void {
this._eventEmitter.once(type, listener);
}
Expand Down Expand Up @@ -285,15 +294,20 @@ export abstract class SocketProvider<
): void;
public removeListener<T = JsonRpcResult>(
type: 'message',
listener: Web3Eip1193ProviderEventCallback<ProviderMessage> | Web3ProviderEventCallback<T>,
listener:
| Web3Eip1193ProviderEventCallback<ProviderMessage>
| Web3ProviderMessageEventCallback<T>,
): void;
public removeListener<T = JsonRpcResult>(
type: string,
listener: Web3Eip1193ProviderEventCallback<unknown> | Web3ProviderEventCallback<T>,
): void;
public removeListener<T = JsonRpcResult, P = unknown>(
type: string | 'disconnect' | 'connect' | 'chainChanged' | 'accountsChanged',
listener: Web3Eip1193ProviderEventCallback<P> | Web3ProviderEventCallback<T>,
type: string | Eip1193EventName,
listener:
| Web3Eip1193ProviderEventCallback<P>
| Web3ProviderMessageEventCallback<T>
| Web3ProviderEventCallback<T>,
): void {
this._eventEmitter.removeListener(type, listener);
}
Expand Down

0 comments on commit 6c59986

Please sign in to comment.