Add support for EIP1193 providers and clean up provider standardization logic

This commit is contained in:
Fabio Berger
2019-02-18 15:12:29 -08:00
parent e909faa3ef
commit 5db20bbbe8
20 changed files with 188 additions and 66 deletions

View File

@@ -37,7 +37,6 @@
"@ledgerhq/hw-app-eth": "^4.3.0",
"@ledgerhq/hw-transport-u2f": "4.24.0",
"@types/eth-lightwallet": "^3.0.0",
"@types/ganache-core": "^2.1.2",
"@types/hdkey": "^0.7.0",
"@types/web3-provider-engine": "^14.0.0",
"bip39": "^2.5.0",

View File

@@ -1,4 +1,4 @@
import { JSONRPCRequestPayload, Provider } from 'ethereum-types';
import { GanacheProvider, JSONRPCRequestPayload } from 'ethereum-types';
import * as Ganache from 'ganache-core';
import { Callback, ErrorCallback } from '../types';
@@ -10,7 +10,7 @@ import { Subprovider } from './subprovider';
* It intercepts all JSON RPC requests and relays them to an in-process ganache instance.
*/
export class GanacheSubprovider extends Subprovider {
private readonly _ganacheProvider: Provider;
private readonly _ganacheProvider: GanacheProvider;
/**
* Instantiates a GanacheSubprovider
* @param opts The desired opts with which to instantiate the Ganache provider

View File

@@ -1,5 +1,6 @@
import { providerUtils } from '@0x/utils';
import { marshaller, Web3Wrapper } from '@0x/web3-wrapper';
import { JSONRPCRequestPayload, Provider } from 'ethereum-types';
import { JSONRPCRequestPayload, Web3WrapperProvider } from 'ethereum-types';
import * as ethUtil from 'ethereumjs-util';
import { Callback, ErrorCallback } from '../types';
@@ -16,15 +17,16 @@ import { Subprovider } from './subprovider';
*/
export class MetamaskSubprovider extends Subprovider {
private readonly _web3Wrapper: Web3Wrapper;
private readonly _provider: Provider;
private readonly _provider: Web3WrapperProvider;
/**
* Instantiates a new MetamaskSubprovider
* @param provider Web3 provider that should handle all user account related requests
*/
constructor(provider: Provider) {
constructor(provider: Web3WrapperProvider) {
super();
this._web3Wrapper = new Web3Wrapper(provider);
this._provider = provider;
const web3WrapperProvider = providerUtils.standardizeOrThrow(provider);
this._provider = web3WrapperProvider;
}
/**
* This method conforms to the web3-provider-engine interface.

View File

@@ -1,5 +1,5 @@
import { promisify } from '@0x/utils';
import { JSONRPCRequestPayload, JSONRPCResponsePayload, Provider } from 'ethereum-types';
import { JSONRPCRequestPayload, JSONRPCResponsePayload, ProviderEngineProvider } from 'ethereum-types';
import { Callback, ErrorCallback, JSONRPCRequestPayloadWithMethod } from '../types';
/**
@@ -8,7 +8,7 @@ import { Callback, ErrorCallback, JSONRPCRequestPayloadWithMethod } from '../typ
*/
export abstract class Subprovider {
// tslint:disable-next-line:underscore-private-and-protected
private engine!: Provider;
private engine!: ProviderEngineProvider;
protected static _createFinalPayload(
payload: Partial<JSONRPCRequestPayloadWithMethod>,
): Partial<JSONRPCRequestPayloadWithMethod> {
@@ -64,7 +64,7 @@ export abstract class Subprovider {
* directly.
* @param engine The ProviderEngine this subprovider is added to
*/
public setEngine(engine: Provider): void {
public setEngine(engine: ProviderEngineProvider): void {
this.engine = engine;
}
}