From a44f005ee2a6272be4205376d2dafa01b84a80ff Mon Sep 17 00:00:00 2001 From: Ryan Ghods Date: Tue, 5 May 2020 10:06:28 -0700 Subject: [PATCH] Add EIP-1193 compatible provider to AbstractProvider interface --- CHANGELOG.md | 3 +++ packages/web3-core/package.json | 2 +- packages/web3-core/types/index.d.ts | 10 ++++++++-- packages/web3/types/tests/web3-test.ts | 25 ++++++++++++++++++++----- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 13e0a62e433..1528023a44f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -179,11 +179,14 @@ Released with 1.0.0-beta.37 code base. ### Added - Introduce review and release guidelines. (#3460) +- Add EIP-1193 compatible provider to `AbstractProvider` interface. (#3499) +- Add Typescript definitions for contract `methods` and `call`. (#3454) ### Changed - Change CI provider from Travis to Github Actions. (#3468) - Improve code clarity of HttpProvider keepAlive option setting. (#3463) +- Updated type definitions for Web3 HTTP Provider. (#3482) ### Fixed diff --git a/packages/web3-core/package.json b/packages/web3-core/package.json index c80072e8d29..7afdb491886 100644 --- a/packages/web3-core/package.json +++ b/packages/web3-core/package.json @@ -1,7 +1,7 @@ { "name": "web3-core", "version": "1.2.7", - "description": "Web3 core tools for sub packages. This is an internal package.", + "description": "Web3 core tools for sub-packages. This is an internal package.", "repository": "https://github.com/ethereum/web3.js/tree/1.x/packages/web3-core", "license": "LGPL-3.0", "engines": { diff --git a/packages/web3-core/types/index.d.ts b/packages/web3-core/types/index.d.ts index 97ba5635eef..2ac876a8335 100644 --- a/packages/web3-core/types/index.d.ts +++ b/packages/web3-core/types/index.d.ts @@ -19,7 +19,6 @@ */ import * as net from 'net'; -import { EventEmitter } from "events" import { HttpProviderBase, HttpProviderOptions, @@ -411,9 +410,16 @@ export interface LogsOptions { export type BlockNumber = string | number | BN | BigNumber | 'latest' | 'pending' | 'earliest' | 'genesis'; +export interface RequestArguments { + method: string; + params?: any; + [key: string]: any; +} + export interface AbstractProvider { - send(payload: JsonRpcPayload, callback: (error: Error | null, result?: JsonRpcResponse) => void): void; sendAsync(payload: JsonRpcPayload, callback: (error: Error | null, result?: JsonRpcResponse) => void): void; + send?(payload: JsonRpcPayload, callback: (error: Error | null, result?: JsonRpcResponse) => void): void; + request?(args: RequestArguments): Promise; } export type provider = diff --git a/packages/web3/types/tests/web3-test.ts b/packages/web3/types/tests/web3-test.ts index f17985861ce..fe55c20597d 100644 --- a/packages/web3/types/tests/web3-test.ts +++ b/packages/web3/types/tests/web3-test.ts @@ -19,9 +19,8 @@ import Web3 from 'web3'; import * as net from 'net'; -import { AbstractProvider } from 'web3-core'; -import { JsonRpcPayload, JsonRpcResponse } from "web3-core-helpers" -import { EventEmitter } from 'events'; +import { AbstractProvider, RequestArguments } from 'web3-core'; +import { JsonRpcPayload, JsonRpcResponse } from 'web3-core-helpers'; // $ExpectType Utils Web3.utils; @@ -89,9 +88,25 @@ web3 = new Web3('https://localhost:5000/', netSocket); // $ExpectType Web3 web3 = new Web3(); -class CustomProvider implements AbstractProvider { +class CustomProvider1 implements AbstractProvider { + sendAsync(payload: JsonRpcPayload, callback: (error: Error | null, result?: JsonRpcResponse) => void) {} +} + +// $ExpectType Web3 +web3 = new Web3(new CustomProvider1()); + +class CustomProvider2 implements AbstractProvider { send(payload: JsonRpcPayload, callback: (error: Error | null, result?: JsonRpcResponse) => void) {} sendAsync(payload: JsonRpcPayload, callback: (error: Error | null, result?: JsonRpcResponse) => void) {} } + +// $ExpectType Web3 +web3 = new Web3(new CustomProvider2()); + +class CustomProvider3 implements AbstractProvider { + async request(args: RequestArguments) {} + sendAsync(payload: JsonRpcPayload, callback: (error: Error | null, result?: JsonRpcResponse) => void) {} +} + // $ExpectType Web3 -web3 = new Web3(new CustomProvider()); +web3 = new Web3(new CustomProvider3());