From 0cc4241f4cbdcb1f357dcbac9e8aa31baccf3e31 Mon Sep 17 00:00:00 2001 From: Samuel Furter Date: Thu, 28 Mar 2019 11:52:33 +0100 Subject: [PATCH 01/10] version in root package.json and in web3 module package.json n increased manually otherwise the web3.version property will return the wrong version --- package.json | 2 +- packages/web3/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c0591931bf0..1dfb6506267 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "web3", "namespace": "ethereum", - "version": "1.0.0-beta.49", + "version": "1.0.0-beta.51", "description": "Ethereum JavaScript API wrapper repository", "license": "LGPL-3.0", "main": "./packages/web3/src/index.js", diff --git a/packages/web3/package.json b/packages/web3/package.json index b6557f06748..d40518d93d1 100644 --- a/packages/web3/package.json +++ b/packages/web3/package.json @@ -1,7 +1,7 @@ { "name": "web3", "namespace": "ethereum", - "version": "1.0.0-beta.50", + "version": "1.0.0-beta.51", "description": "Ethereum JavaScript API", "repository": "https://github.com/ethereum/web3.js/tree/1.0/packages/web3", "license": "LGPL-3.0", From 782efa4cac058fed1dd38763ac9703c5cdaf160c Mon Sep 17 00:00:00 2001 From: Samuel Furter Date: Thu, 28 Mar 2019 12:20:50 +0100 Subject: [PATCH 02/10] getTimeout updated to be production build save --- .../web3-core-method/lib/factories/AbstractMethodFactory.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/web3-core-method/lib/factories/AbstractMethodFactory.js b/packages/web3-core-method/lib/factories/AbstractMethodFactory.js index 58197289024..fb912d32b3c 100644 --- a/packages/web3-core-method/lib/factories/AbstractMethodFactory.js +++ b/packages/web3-core-method/lib/factories/AbstractMethodFactory.js @@ -132,9 +132,8 @@ export default class AbstractMethodFactory { */ getTimeout(moduleInstance) { let timeout = moduleInstance.transactionBlockTimeout; - const providerName = moduleInstance.currentProvider.constructor.name; - if (providerName === 'HttpProvider' || providerName === 'CustomProvider') { + if (!moduleInstance.currentProvider.SOCKET_MESSAGE) { timeout = moduleInstance.transactionPollingTimeout; } From 35fdb0a8e2db64d5e580b34c221de3c4ed9cf560 Mon Sep 17 00:00:00 2001 From: Samuel Furter Date: Thu, 28 Mar 2019 12:25:51 +0100 Subject: [PATCH 03/10] outputTransactionReceiptFormatter updated which gives us the possibility to simplify the AbstractObservedTransactionMethod --- packages/web3-core-helpers/src/Formatters.js | 2 ++ .../AbstractObservedTransactionMethod.js | 15 +-------------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/packages/web3-core-helpers/src/Formatters.js b/packages/web3-core-helpers/src/Formatters.js index e6df7c358e0..a2f5754bbbe 100644 --- a/packages/web3-core-helpers/src/Formatters.js +++ b/packages/web3-core-helpers/src/Formatters.js @@ -280,6 +280,8 @@ export const outputTransactionReceiptFormatter = (receipt) => { if (typeof receipt.status !== 'undefined' && receipt.status !== null) { receipt.status = Boolean(parseInt(receipt.status)); + } else { + receipt.status = true; } return receipt; diff --git a/packages/web3-core-method/lib/methods/transaction/AbstractObservedTransactionMethod.js b/packages/web3-core-method/lib/methods/transaction/AbstractObservedTransactionMethod.js index 90d51a8e152..04bb368bb86 100644 --- a/packages/web3-core-method/lib/methods/transaction/AbstractObservedTransactionMethod.js +++ b/packages/web3-core-method/lib/methods/transaction/AbstractObservedTransactionMethod.js @@ -80,7 +80,7 @@ export default class AbstractObservedTransactionMethod extends AbstractMethod { confirmations = transactionConfirmation.confirmations; receipt = transactionConfirmation.receipt; - if (this.hasRevertReceiptStatus(receipt)) { + if (!receipt.status) { if (this.parameters[0].gas === receipt.gasUsed) { this.handleError( new Error( @@ -161,17 +161,4 @@ export default class AbstractObservedTransactionMethod extends AbstractMethod { this.promiEvent.reject(error); } - - /** - * Checks if the status property has a revert state - * - * @method hasRevertReceiptStatus - * - * @param {Object} receipt - * - * @returns {Boolean} - */ - hasRevertReceiptStatus(receipt) { - return receipt.status === false && receipt.status !== undefined && receipt.status !== null; - } } From 64f37ca53c5e6dd4443f97b8f43e03115015b01e Mon Sep 17 00:00:00 2001 From: Samuel Furter Date: Thu, 28 Mar 2019 12:37:38 +0100 Subject: [PATCH 04/10] address property changed to privateKey in EthSignMethod --- packages/web3-eth/src/methods/EthSignMethod.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web3-eth/src/methods/EthSignMethod.js b/packages/web3-eth/src/methods/EthSignMethod.js index d579e089639..3628d7b83fc 100644 --- a/packages/web3-eth/src/methods/EthSignMethod.js +++ b/packages/web3-eth/src/methods/EthSignMethod.js @@ -63,7 +63,7 @@ export default class EthSignMethod extends SignMethod { let signedMessage = this.moduleInstance.accounts.sign( this.parameters[1], - this.moduleInstance.accounts.wallet[this.parameters[0]].address + this.moduleInstance.accounts.wallet[this.parameters[0]].privateKey ); if (this.callback) { From 6601f739c2a85abb692584388c5744d1615bdc1e Mon Sep 17 00:00:00 2001 From: Samuel Furter Date: Thu, 28 Mar 2019 12:48:08 +0100 Subject: [PATCH 05/10] README.md files updated --- packages/web3-core-helpers/README.md | 2 +- packages/web3-core-subscriptions/README.md | 8 -------- packages/web3-eth-accounts/README.md | 1 + packages/web3-eth-ens/README.md | 5 +++-- packages/web3-eth-personal/README.md | 2 +- packages/web3-eth-personal/src/index.js | 3 +-- packages/web3-eth/README.md | 3 +++ packages/web3-net/README.md | 1 + packages/web3-providers/README.md | 18 ++++++------------ packages/web3-shh/README.md | 1 + 10 files changed, 18 insertions(+), 26 deletions(-) diff --git a/packages/web3-core-helpers/README.md b/packages/web3-core-helpers/README.md index bb89582a2cf..017a0354051 100644 --- a/packages/web3-core-helpers/README.md +++ b/packages/web3-core-helpers/README.md @@ -16,7 +16,7 @@ npm install web3-core-helpers ## Usage ```js -import {errors, formatters} from 'web3-core-helpers'; +import {formatters} from 'web3-core-helpers'; ``` ## Types diff --git a/packages/web3-core-subscriptions/README.md b/packages/web3-core-subscriptions/README.md index 0e8d7f300a5..91e9f956ab1 100644 --- a/packages/web3-core-subscriptions/README.md +++ b/packages/web3-core-subscriptions/README.md @@ -13,14 +13,6 @@ If you would like to know all supported subscriptions please have a look in the npm install web3-core-subscriptions ``` -## Exported classes - -```js -SubscriptionsFactory -LogSubscription -AbstractSubscription -``` - ## Types All the typescript typings are placed in the types folder. diff --git a/packages/web3-eth-accounts/README.md b/packages/web3-eth-accounts/README.md index 8a8ef93033c..2bec1ee73e0 100644 --- a/packages/web3-eth-accounts/README.md +++ b/packages/web3-eth-accounts/README.md @@ -20,6 +20,7 @@ import {Accounts} from 'web3-eth-accounts'; const accounts = new Accounts( 'http://127.0.0.1:4546', + null, options ); ``` diff --git a/packages/web3-eth-ens/README.md b/packages/web3-eth-ens/README.md index 602e5be889c..d0212b9ddc1 100644 --- a/packages/web3-eth-ens/README.md +++ b/packages/web3-eth-ens/README.md @@ -18,8 +18,9 @@ import {Ens} from 'web3-eth-ens'; new Ens( 'ws://localhost:8546', - accounts, - {} + null, + options, + accountsModule ); ``` diff --git a/packages/web3-eth-personal/README.md b/packages/web3-eth-personal/README.md index fa62f685360..d0d44925fd4 100644 --- a/packages/web3-eth-personal/README.md +++ b/packages/web3-eth-personal/README.md @@ -18,7 +18,7 @@ import {Personal} from 'web3-eth-personal'; const personal = new Personal( 'http://127.0.0.1:4546', - accounts, + null, options ); ``` diff --git a/packages/web3-eth-personal/src/index.js b/packages/web3-eth-personal/src/index.js index 83a2498f4eb..e151192d386 100644 --- a/packages/web3-eth-personal/src/index.js +++ b/packages/web3-eth-personal/src/index.js @@ -35,11 +35,10 @@ import PersonalModule from './Personal.js'; * @param {Web3EthereumProvider|HttpProvider|WebsocketProvider|IpcProvider|String} provider * @param {Net.Socket} net * @param {Object} options - * @param {Accounts} accounts * * @returns {Personal} */ -export function Personal(provider, net = null, options = {}, accounts = {}) { +export function Personal(provider, net = null, options = {}) { const resolvedProvider = new ProviderResolver().resolve(provider, net); return new PersonalModule( diff --git a/packages/web3-eth/README.md b/packages/web3-eth/README.md index 47e7d819169..c8590de8ade 100644 --- a/packages/web3-eth/README.md +++ b/packages/web3-eth/README.md @@ -14,8 +14,11 @@ npm install web3-eth ## Usage ```js +import {Eth} from 'web3-eth'; + const eth = new Eth( 'http://127.0.0.1:4546', + null, options ); ``` diff --git a/packages/web3-net/README.md b/packages/web3-net/README.md index 692f8838f04..362f7e701cb 100644 --- a/packages/web3-net/README.md +++ b/packages/web3-net/README.md @@ -18,6 +18,7 @@ import {Network} from 'web3-net'; const net = new Network( 'http://127.0.0.1:4546', + null, options ); ``` diff --git a/packages/web3-providers/README.md b/packages/web3-providers/README.md index b87bd3e1f61..d8770dd9a7f 100644 --- a/packages/web3-providers/README.md +++ b/packages/web3-providers/README.md @@ -59,12 +59,9 @@ The BatchRequest provides the possibility to send JSON-RPC requests as batch. Please read the [documentation][docs] for more. ```js -import {ProvidersModuleFactory, BatchRequest} 'web3-providers'; - -const provider = new ProvidersModuleFactory() - .createProviderResolver - .resolve('ws://localhost:8546'); +import {ProviderResolver, BatchRequest} 'web3-providers'; +const provider = new ProviderResolver().resolve('ws://localhost:8546'); const batchRequest = new BatchRequest(provider); batchRequest.add(web3.eth.getBalance.request( @@ -80,10 +77,9 @@ await batchRequest.execute(); Checks if an provider is given from the environment (Mist, MetaMask) and returns the provider. ```js -import {ProvidersModuleFactory} from 'web3-providers'; +import {ProviderDetector} from 'web3-providers'; -const providerDetector = new ProvidersModuleFactory.createProviderDetector(); -const givenProvider = providerDetector.detect(); +const givenProvider = ProviderDetector.detect(); ``` #### ProviderResolver @@ -91,11 +87,9 @@ The ProviderResolver resolves an url or an given provider object to the correct Because of the resolves does web3 has internally just one provider interface and we have no direct dependency to third party providers. ```js -import {ProvidersModuleFactory} 'web3-providers'; +import {ProviderResolver} 'web3-providers'; -const socketProviderAdapter = new ProvidersModuleFactory() - .createProviderResolver - .resolve('ws://localhost:8546'); +const socketProviderAdapter = new ProviderResolver().resolve('ws://localhost:8546'); ``` ## Types diff --git a/packages/web3-shh/README.md b/packages/web3-shh/README.md index 9f3fb6a05ba..6c5a1a6dfa5 100644 --- a/packages/web3-shh/README.md +++ b/packages/web3-shh/README.md @@ -18,6 +18,7 @@ import {Shh} from 'web3-shh'; const shh = new Shh( 'http://127.0.0.1:4546', + null, options ); ``` From 7e267f3d7fbaa6dba877a718fb68c8eb72988490 Mon Sep 17 00:00:00 2001 From: Samuel Furter Date: Thu, 28 Mar 2019 12:49:52 +0100 Subject: [PATCH 06/10] the timeout parameter doesn't have to be optional because the HttpProvider is defining a default value --- packages/web3-providers/src/factories/ProvidersModuleFactory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web3-providers/src/factories/ProvidersModuleFactory.js b/packages/web3-providers/src/factories/ProvidersModuleFactory.js index d669a970804..ab0ab5375ad 100644 --- a/packages/web3-providers/src/factories/ProvidersModuleFactory.js +++ b/packages/web3-providers/src/factories/ProvidersModuleFactory.js @@ -85,7 +85,7 @@ export default class ProvidersModuleFactory { * * @returns {XMLHttpRequest} */ - createXMLHttpRequest(host, timeout = 0, headers, agent, withCredentials) { + createXMLHttpRequest(host, timeout, headers, agent, withCredentials) { let request; // runtime is of type node From f4ff1a1be19da93feb30b7a78349449158d244ba Mon Sep 17 00:00:00 2001 From: Samuel Furter Date: Thu, 28 Mar 2019 13:35:42 +0100 Subject: [PATCH 07/10] local signing with accounts as standalone module tested and options inheritance fixed in the clone method of the AbstractContract --- packages/web3-eth-accounts/src/index.js | 2 +- packages/web3-eth-contract/src/AbstractContract.js | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/web3-eth-accounts/src/index.js b/packages/web3-eth-accounts/src/index.js index d6f0f00e5b0..e10c257d865 100644 --- a/packages/web3-eth-accounts/src/index.js +++ b/packages/web3-eth-accounts/src/index.js @@ -36,5 +36,5 @@ import AccountsModule from './Accounts'; * @constructor */ export function Accounts(provider, net = null, options = {}) { - return new AccountsModule(provider, Utils, new MethodFactory(Utils, formatters), options, net); + return new AccountsModule(provider, Utils, formatters, new MethodFactory(Utils, formatters), options, net); } diff --git a/packages/web3-eth-contract/src/AbstractContract.js b/packages/web3-eth-contract/src/AbstractContract.js index d31bc56a5c6..202dbfae771 100644 --- a/packages/web3-eth-contract/src/AbstractContract.js +++ b/packages/web3-eth-contract/src/AbstractContract.js @@ -218,7 +218,17 @@ export default class AbstractContract extends AbstractWeb3Module { this.accounts, [], '', - this.options + { + defaultAccount: this.defaultAccount, + defaultBlock: this.defaultBlock, + defaultGas: this.defaultGas, + defaultGasPrice: this.defaultGasPrice, + transactionBlockTimeout: this.transactionBlockTimeout, + transactionConfirmationBlocks: this.transactionConfirmationBlocks, + transactionPollingTimeout: this.transactionPollingTimeout, + transactionSigner: this.transactionSigner, + data: options.data + } ); clone.abiModel = this.abiModel; From a62e0507f02bbe2acac4caaffe71e6424133bc06 Mon Sep 17 00:00:00 2001 From: Samuel Furter Date: Thu, 28 Mar 2019 13:47:54 +0100 Subject: [PATCH 08/10] clone method fixed in AbstractContract --- packages/web3-eth-contract/src/AbstractContract.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web3-eth-contract/src/AbstractContract.js b/packages/web3-eth-contract/src/AbstractContract.js index 202dbfae771..cd93106a60b 100644 --- a/packages/web3-eth-contract/src/AbstractContract.js +++ b/packages/web3-eth-contract/src/AbstractContract.js @@ -227,7 +227,7 @@ export default class AbstractContract extends AbstractWeb3Module { transactionConfirmationBlocks: this.transactionConfirmationBlocks, transactionPollingTimeout: this.transactionPollingTimeout, transactionSigner: this.transactionSigner, - data: options.data + data: this.options.data } ); From 894502da098a4cc58fdf0af733a94b51b0c767f8 Mon Sep 17 00:00:00 2001 From: Samuel Furter Date: Thu, 28 Mar 2019 13:59:07 +0100 Subject: [PATCH 09/10] AbstractContractTest updated --- .../web3-eth-contract/src/AbstractContract.js | 28 ++++++++----------- .../tests/src/AbstractContractTest.js | 24 ++++++++++++---- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/packages/web3-eth-contract/src/AbstractContract.js b/packages/web3-eth-contract/src/AbstractContract.js index cd93106a60b..5543bfbd4f4 100644 --- a/packages/web3-eth-contract/src/AbstractContract.js +++ b/packages/web3-eth-contract/src/AbstractContract.js @@ -213,23 +213,17 @@ export default class AbstractContract extends AbstractWeb3Module { * @returns {AbstractContract} */ clone() { - const clone = this.contractModuleFactory.createContract( - this.currentProvider, - this.accounts, - [], - '', - { - defaultAccount: this.defaultAccount, - defaultBlock: this.defaultBlock, - defaultGas: this.defaultGas, - defaultGasPrice: this.defaultGasPrice, - transactionBlockTimeout: this.transactionBlockTimeout, - transactionConfirmationBlocks: this.transactionConfirmationBlocks, - transactionPollingTimeout: this.transactionPollingTimeout, - transactionSigner: this.transactionSigner, - data: this.options.data - } - ); + const clone = this.contractModuleFactory.createContract(this.currentProvider, this.accounts, [], '', { + defaultAccount: this.defaultAccount, + defaultBlock: this.defaultBlock, + defaultGas: this.defaultGas, + defaultGasPrice: this.defaultGasPrice, + transactionBlockTimeout: this.transactionBlockTimeout, + transactionConfirmationBlocks: this.transactionConfirmationBlocks, + transactionPollingTimeout: this.transactionPollingTimeout, + transactionSigner: this.transactionSigner, + data: this.options.data + }); clone.abiModel = this.abiModel; diff --git a/packages/web3-eth-contract/tests/src/AbstractContractTest.js b/packages/web3-eth-contract/tests/src/AbstractContractTest.js index 1e9861473d6..f042146b381 100644 --- a/packages/web3-eth-contract/tests/src/AbstractContractTest.js +++ b/packages/web3-eth-contract/tests/src/AbstractContractTest.js @@ -153,7 +153,8 @@ describe('AbstractContractTest', () => { }); const options = {fromBlock: true}; - abstractContract.once('event', options, () => {}); + abstractContract.once('event', options, () => { + }); expect(eventSubscriptionMock.unsubscribe).toHaveBeenCalled(); @@ -173,7 +174,8 @@ describe('AbstractContractTest', () => { methodFactoryMock.createPastEventLogsMethod.mockReturnValueOnce(getPastLogsMethodMock); - await expect(abstractContract.getPastEvents('eventName', {}, () => {})).resolves.toEqual(true); + await expect(abstractContract.getPastEvents('eventName', {}, () => { + })).resolves.toEqual(true); expect(abiModelMock.hasEvent).toHaveBeenCalledWith('eventName'); @@ -195,7 +197,8 @@ describe('AbstractContractTest', () => { methodFactoryMock.createAllPastEventLogsMethod.mockReturnValueOnce(getPastLogsMethodMock); - await expect(abstractContract.getPastEvents('allEvents', {}, () => {})).resolves.toEqual(true); + await expect(abstractContract.getPastEvents('allEvents', {}, () => { + })).resolves.toEqual(true); expect(getPastLogsMethodMock.execute).toHaveBeenCalled(); @@ -209,7 +212,8 @@ describe('AbstractContractTest', () => { it('calls getPastEvents and returns a rejected promise', async () => { abiModelMock.hasEvent.mockReturnValueOnce(false); - await expect(abstractContract.getPastEvents('eventName', {}, () => {})).rejects.toThrow( + await expect(abstractContract.getPastEvents('eventName', {}, () => { + })).rejects.toThrow( 'Event with name "eventName" does not exists.' ); @@ -236,7 +240,17 @@ describe('AbstractContractTest', () => { abstractContract.accounts, [], '', - abstractContract.options + { + data: '', + defaultAccount: undefined, + defaultBlock: 'latest', + defaultGas: undefined, + defaultGasPrice: undefined, + transactionBlockTimeout: 50, + transactionConfirmationBlocks: 24, + transactionPollingTimeout: 750, + transactionSigner: {} + } ); }); From 67468b3f923d85839fc06ff4eedbe553ba60c185 Mon Sep 17 00:00:00 2001 From: Samuel Furter Date: Thu, 28 Mar 2019 14:07:29 +0100 Subject: [PATCH 10/10] code style improved --- .../tests/src/AbstractContractTest.js | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/web3-eth-contract/tests/src/AbstractContractTest.js b/packages/web3-eth-contract/tests/src/AbstractContractTest.js index f042146b381..e6aa83e2113 100644 --- a/packages/web3-eth-contract/tests/src/AbstractContractTest.js +++ b/packages/web3-eth-contract/tests/src/AbstractContractTest.js @@ -153,8 +153,7 @@ describe('AbstractContractTest', () => { }); const options = {fromBlock: true}; - abstractContract.once('event', options, () => { - }); + abstractContract.once('event', options, () => {}); expect(eventSubscriptionMock.unsubscribe).toHaveBeenCalled(); @@ -174,8 +173,7 @@ describe('AbstractContractTest', () => { methodFactoryMock.createPastEventLogsMethod.mockReturnValueOnce(getPastLogsMethodMock); - await expect(abstractContract.getPastEvents('eventName', {}, () => { - })).resolves.toEqual(true); + await expect(abstractContract.getPastEvents('eventName', {}, () => {})).resolves.toEqual(true); expect(abiModelMock.hasEvent).toHaveBeenCalledWith('eventName'); @@ -197,8 +195,7 @@ describe('AbstractContractTest', () => { methodFactoryMock.createAllPastEventLogsMethod.mockReturnValueOnce(getPastLogsMethodMock); - await expect(abstractContract.getPastEvents('allEvents', {}, () => { - })).resolves.toEqual(true); + await expect(abstractContract.getPastEvents('allEvents', {}, () => {})).resolves.toEqual(true); expect(getPastLogsMethodMock.execute).toHaveBeenCalled(); @@ -212,8 +209,7 @@ describe('AbstractContractTest', () => { it('calls getPastEvents and returns a rejected promise', async () => { abiModelMock.hasEvent.mockReturnValueOnce(false); - await expect(abstractContract.getPastEvents('eventName', {}, () => { - })).rejects.toThrow( + await expect(abstractContract.getPastEvents('eventName', {}, () => {})).rejects.toThrow( 'Event with name "eventName" does not exists.' );