aboutsummaryrefslogtreecommitdiffstats
path: root/packages/web3-wrapper
diff options
context:
space:
mode:
authorAlex Browne <stephenalexbrowne@gmail.com>2018-06-06 07:20:38 +0800
committerAlex Browne <stephenalexbrowne@gmail.com>2018-06-07 03:40:31 +0800
commitd6d7f4e875b161aa7284467a61f67989f76ec89e (patch)
treed0287504809489cec96a9673ffac41429cf14cd7 /packages/web3-wrapper
parent63caddea62453863de84a4b53e14fe3e61d3008f (diff)
downloaddexon-sol-tools-d6d7f4e875b161aa7284467a61f67989f76ec89e.tar
dexon-sol-tools-d6d7f4e875b161aa7284467a61f67989f76ec89e.tar.gz
dexon-sol-tools-d6d7f4e875b161aa7284467a61f67989f76ec89e.tar.bz2
dexon-sol-tools-d6d7f4e875b161aa7284467a61f67989f76ec89e.tar.lz
dexon-sol-tools-d6d7f4e875b161aa7284467a61f67989f76ec89e.tar.xz
dexon-sol-tools-d6d7f4e875b161aa7284467a61f67989f76ec89e.tar.zst
dexon-sol-tools-d6d7f4e875b161aa7284467a61f67989f76ec89e.zip
Update more things to work with both Geth and Ganache
Diffstat (limited to 'packages/web3-wrapper')
-rw-r--r--packages/web3-wrapper/src/index.ts2
-rw-r--r--packages/web3-wrapper/src/web3_wrapper.ts21
2 files changed, 19 insertions, 4 deletions
diff --git a/packages/web3-wrapper/src/index.ts b/packages/web3-wrapper/src/index.ts
index 7309e09a8..b14fa7406 100644
--- a/packages/web3-wrapper/src/index.ts
+++ b/packages/web3-wrapper/src/index.ts
@@ -1,2 +1,2 @@
-export { Web3Wrapper } from './web3_wrapper';
+export { Web3Wrapper, uniqueVersionIds } from './web3_wrapper';
export { Web3WrapperErrors } from './types';
diff --git a/packages/web3-wrapper/src/web3_wrapper.ts b/packages/web3-wrapper/src/web3_wrapper.ts
index a19253449..6c9fa980e 100644
--- a/packages/web3-wrapper/src/web3_wrapper.ts
+++ b/packages/web3-wrapper/src/web3_wrapper.ts
@@ -21,6 +21,13 @@ import { Web3WrapperErrors } from './types';
const BASE_TEN = 10;
+// These are unique identifiers contained in the response of the
+// web3_clientVersion call.
+export const uniqueVersionIds = {
+ geth: 'Geth',
+ ganache: 'EthereumJS TestRPC',
+};
+
/**
* A wrapper around the Web3.js 0.x library that provides a consistent, clean promise-based interface.
*/
@@ -254,12 +261,20 @@ export class Web3Wrapper {
await this._sendRawPayloadAsync<string>({ method: 'evm_mine', params: [] });
}
/**
- * Increase the next blocks timestamp on TestRPC/Ganache local node
+ * Increase the next blocks timestamp on TestRPC/Ganache or Geth local node.
+ * Will throw if provider is neither TestRPC/Ganache or Geth.
* @param timeDelta Amount of time to add in seconds
*/
public async increaseTimeAsync(timeDelta: number): Promise<number> {
- // TODO(albrow): Detect Geth vs. Ganache and use appropriate endpoint.
- return this._sendRawPayloadAsync<number>({ method: 'debug_increaseTime', params: [timeDelta] });
+ // Detect Geth vs. Ganache and use appropriate endpoint.
+ const version = await this.getNodeVersionAsync();
+ if (_.includes(version, uniqueVersionIds.geth)) {
+ return this._sendRawPayloadAsync<number>({ method: 'debug_increaseTime', params: [timeDelta] });
+ } else if (_.includes(version, uniqueVersionIds.ganache)) {
+ return this._sendRawPayloadAsync<number>({ method: 'evm_increaseTime', params: [timeDelta] });
+ } else {
+ throw new Error(`Unknown client version: ${version}`);
+ }
}
/**
* Retrieve smart contract logs for a given filter