aboutsummaryrefslogtreecommitdiffstats
path: root/packages/subproviders/src/subproviders/subprovider.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/subproviders/src/subproviders/subprovider.ts')
-rw-r--r--packages/subproviders/src/subproviders/subprovider.ts70
1 files changed, 0 insertions, 70 deletions
diff --git a/packages/subproviders/src/subproviders/subprovider.ts b/packages/subproviders/src/subproviders/subprovider.ts
deleted file mode 100644
index cd6780e0c..000000000
--- a/packages/subproviders/src/subproviders/subprovider.ts
+++ /dev/null
@@ -1,70 +0,0 @@
-import { promisify } from '@0x/utils';
-import { JSONRPCRequestPayload, JSONRPCResponsePayload, Provider } from 'ethereum-types';
-
-import { Callback, ErrorCallback, JSONRPCRequestPayloadWithMethod } from '../types';
-/**
- * A altered version of the base class Subprovider found in [web3-provider-engine](https://github.com/MetaMask/provider-engine).
- * This one has an async/await `emitPayloadAsync` and also defined types.
- */
-export abstract class Subprovider {
- // tslint:disable-next-line:underscore-private-and-protected
- private engine!: Provider;
- protected static _createFinalPayload(
- payload: Partial<JSONRPCRequestPayloadWithMethod>,
- ): Partial<JSONRPCRequestPayloadWithMethod> {
- const finalPayload = {
- // defaults
- id: Subprovider._getRandomId(),
- jsonrpc: '2.0',
- params: [],
- ...payload,
- };
- return finalPayload;
- }
- // Ported from: https://github.com/MetaMask/provider-engine/blob/master/util/random-id.js
- private static _getRandomId(): number {
- const extraDigits = 3;
- const baseTen = 10;
- // 13 time digits
- const datePart = new Date().getTime() * Math.pow(baseTen, extraDigits);
- // 3 random digits
- const extraPart = Math.floor(Math.random() * Math.pow(baseTen, extraDigits));
- // 16 digits
- return datePart + extraPart;
- }
- /**
- * @param payload JSON RPC request payload
- * @param next A callback to pass the request to the next subprovider in the stack
- * @param end A callback called once the subprovider is done handling the request
- */
- // tslint:disable-next-line:async-suffix
- public abstract async handleRequest(
- payload: JSONRPCRequestPayload,
- next: Callback,
- end: ErrorCallback,
- ): Promise<void>;
-
- /**
- * Emits a JSON RPC payload that will then be handled by the ProviderEngine instance
- * this subprovider is a part of. The payload will cascade down the subprovider middleware
- * stack until finding the responsible entity for handling the request.
- * @param payload JSON RPC payload
- * @returns JSON RPC response payload
- */
- public async emitPayloadAsync(payload: Partial<JSONRPCRequestPayloadWithMethod>): Promise<JSONRPCResponsePayload> {
- const finalPayload = Subprovider._createFinalPayload(payload);
- // Promisify does the binding internally and `this` is supplied as a second argument
- // tslint:disable-next-line:no-unbound-method
- const response = await promisify<JSONRPCResponsePayload>(this.engine.sendAsync, this.engine)(finalPayload);
- return response;
- }
- /**
- * Set's the subprovider's engine to the ProviderEngine it is added to.
- * This is only called within the ProviderEngine source code, do not call
- * directly.
- * @param engine The ProviderEngine this subprovider is added to
- */
- public setEngine(engine: Provider): void {
- this.engine = engine;
- }
-}