diff --git a/contracts/asset-proxy/CHANGELOG.json b/contracts/asset-proxy/CHANGELOG.json index cd08c26182..3fc82ed326 100644 --- a/contracts/asset-proxy/CHANGELOG.json +++ b/contracts/asset-proxy/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.1.1", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "version": "2.1.0", "changes": [ diff --git a/contracts/asset-proxy/CHANGELOG.md b/contracts/asset-proxy/CHANGELOG.md index add42d96b3..71b87e5037 100644 --- a/contracts/asset-proxy/CHANGELOG.md +++ b/contracts/asset-proxy/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.1.1 - _April 11, 2019_ + + * Dependencies updated + ## v2.1.0 - _March 21, 2019_ * Run Web3ProviderEngine without excess block polling (#1695) diff --git a/contracts/asset-proxy/package.json b/contracts/asset-proxy/package.json index 5d187ca41f..445877654c 100644 --- a/contracts/asset-proxy/package.json +++ b/contracts/asset-proxy/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-asset-proxy", - "version": "2.1.0", + "version": "2.1.1", "engines": { "node": ">=6.12" }, @@ -24,6 +24,7 @@ "clean": "shx rm -rf lib generated-artifacts generated-wrappers", "generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output generated-wrappers --backend ethers", "lint": "tslint --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", + "fix": "tslint --fix --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", "coverage:report:text": "istanbul report text", "coverage:report:html": "istanbul report html && open coverage/index.html", "profiler:report:html": "istanbul report html && open coverage/index.html", @@ -46,12 +47,12 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/protocol/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.8", - "@0x/contracts-gen": "^1.0.7", - "@0x/contracts-test-utils": "^3.1.1", - "@0x/dev-utils": "^2.2.0", - "@0x/sol-compiler": "^3.1.5", - "@0x/tslint-config": "^3.0.0", + "@0x/abi-gen": "^2.0.9", + "@0x/contracts-gen": "^1.0.8", + "@0x/contracts-test-utils": "^3.1.2", + "@0x/dev-utils": "^2.2.1", + "@0x/sol-compiler": "^3.1.6", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "@types/node": "*", "chai": "^4.0.1", @@ -67,17 +68,17 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.4", - "@0x/contracts-erc1155": "^1.1.0", - "@0x/contracts-erc20": "^2.1.0", - "@0x/contracts-erc721": "^2.1.0", - "@0x/contracts-utils": "^3.1.0", - "@0x/order-utils": "^7.1.1", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", - "ethereum-types": "^2.1.1", + "@0x/base-contract": "^5.0.5", + "@0x/contracts-erc1155": "^1.1.1", + "@0x/contracts-erc20": "^2.2.0", + "@0x/contracts-erc721": "^2.1.1", + "@0x/contracts-utils": "^3.1.1", + "@0x/order-utils": "^7.2.0", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", + "ethereum-types": "^2.1.2", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/contracts/asset-proxy/test/utils/erc1155_proxy_wrapper.ts b/contracts/asset-proxy/test/utils/erc1155_proxy_wrapper.ts index 4a43a4711b..e17c166379 100644 --- a/contracts/asset-proxy/test/utils/erc1155_proxy_wrapper.ts +++ b/contracts/asset-proxy/test/utils/erc1155_proxy_wrapper.ts @@ -115,7 +115,7 @@ export class ERC1155ProxyWrapper { valuesToTransfer, receiverCallbackData, ); - if (!_.isUndefined(extraData)) { + if (extraData !== undefined) { encodedAssetData = `${encodedAssetData}${extraData}`; } const data = this._assetProxyInterface.transferFrom.getABIEncodedTransactionData( @@ -199,10 +199,10 @@ export class ERC1155ProxyWrapper { // Mint tokens for each owner for this token for (const tokenOwnerAddress of this._tokenOwnerAddresses) { // tslint:disable-next-line:no-unused-variable - if (_.isUndefined(fungibleHoldingsByOwner[tokenOwnerAddress])) { + if (fungibleHoldingsByOwner[tokenOwnerAddress] === undefined) { fungibleHoldingsByOwner[tokenOwnerAddress] = {}; } - if (_.isUndefined(fungibleHoldingsByOwner[tokenOwnerAddress][dummyAddress])) { + if (fungibleHoldingsByOwner[tokenOwnerAddress][dummyAddress] === undefined) { fungibleHoldingsByOwner[tokenOwnerAddress][dummyAddress] = {}; } fungibleHoldingsByOwner[tokenOwnerAddress][dummyAddress][tokenIdAsString] = @@ -221,13 +221,13 @@ export class ERC1155ProxyWrapper { const tokenIdAsString = tokenId.toString(); this._nonFungibleTokenIds.push(tokenIdAsString); _.each(this._tokenOwnerAddresses, async (tokenOwnerAddress: string, i: number) => { - if (_.isUndefined(nonFungibleHoldingsByOwner[tokenOwnerAddress])) { + if (nonFungibleHoldingsByOwner[tokenOwnerAddress] === undefined) { nonFungibleHoldingsByOwner[tokenOwnerAddress] = {}; } - if (_.isUndefined(nonFungibleHoldingsByOwner[tokenOwnerAddress][dummyAddress])) { + if (nonFungibleHoldingsByOwner[tokenOwnerAddress][dummyAddress] === undefined) { nonFungibleHoldingsByOwner[tokenOwnerAddress][dummyAddress] = {}; } - if (_.isUndefined(nonFungibleHoldingsByOwner[tokenOwnerAddress][dummyAddress][tokenIdAsString])) { + if (nonFungibleHoldingsByOwner[tokenOwnerAddress][dummyAddress][tokenIdAsString] === undefined) { nonFungibleHoldingsByOwner[tokenOwnerAddress][dummyAddress][tokenIdAsString] = []; } this._nfts.push({ id: nftIds[i], tokenId }); @@ -278,26 +278,25 @@ export class ERC1155ProxyWrapper { for (const tokenOwnerAddress of this._tokenOwnerAddresses) { // Fungible tokens for (const tokenId of this._fungibleTokenIds) { - if (_.isUndefined(tokenHoldingsByOwner[tokenOwnerAddress])) { + if (tokenHoldingsByOwner[tokenOwnerAddress] === undefined) { tokenHoldingsByOwner[tokenOwnerAddress] = {}; } - if (_.isUndefined(tokenHoldingsByOwner[tokenOwnerAddress][tokenAddress])) { + if (tokenHoldingsByOwner[tokenOwnerAddress][tokenAddress] === undefined) { tokenHoldingsByOwner[tokenOwnerAddress][tokenAddress] = {}; } tokenHoldingsByOwner[tokenOwnerAddress][tokenAddress][tokenId] = balances[i++]; } // Non-fungible tokens for (const nft of this._nfts) { - if (_.isUndefined(nonFungibleHoldingsByOwner[tokenOwnerAddress])) { + if (nonFungibleHoldingsByOwner[tokenOwnerAddress] === undefined) { nonFungibleHoldingsByOwner[tokenOwnerAddress] = {}; } - if (_.isUndefined(nonFungibleHoldingsByOwner[tokenOwnerAddress][tokenAddress])) { + if (nonFungibleHoldingsByOwner[tokenOwnerAddress][tokenAddress] === undefined) { nonFungibleHoldingsByOwner[tokenOwnerAddress][tokenAddress] = {}; } if ( - _.isUndefined( - nonFungibleHoldingsByOwner[tokenOwnerAddress][tokenAddress][nft.tokenId.toString()], - ) + nonFungibleHoldingsByOwner[tokenOwnerAddress][tokenAddress][nft.tokenId.toString()] === + undefined ) { nonFungibleHoldingsByOwner[tokenOwnerAddress][tokenAddress][nft.tokenId.toString()] = []; } @@ -348,25 +347,25 @@ export class ERC1155ProxyWrapper { const tokenWrapper = _.find(this._dummyTokenWrappers, (wrapper: Erc1155Wrapper) => { return wrapper.getContract().address === contractAddress; }); - if (_.isUndefined(tokenWrapper)) { + if (tokenWrapper === undefined) { throw new Error(`Contract: ${contractAddress} was not deployed through ERC1155ProxyWrapper`); } return tokenWrapper; } private _getContractFromAddress(tokenAddress: string): ERC1155MintableContract { const tokenContractIfExists = _.find(this._dummyTokenWrappers, c => c.getContract().address === tokenAddress); - if (_.isUndefined(tokenContractIfExists)) { + if (tokenContractIfExists === undefined) { throw new Error(`Token: ${tokenAddress} was not deployed through ERC1155ProxyWrapper`); } return tokenContractIfExists.getContract(); } private _validateDummyTokenContractsExistOrThrow(): void { - if (_.isUndefined(this._dummyTokenWrappers)) { + if (this._dummyTokenWrappers === undefined) { throw new Error('Dummy ERC1155 tokens not yet deployed, please call "deployDummyTokensAsync"'); } } private _validateProxyContractExistsOrThrow(): void { - if (_.isUndefined(this._proxyContract)) { + if (this._proxyContract === undefined) { throw new Error('ERC1155 proxy contract not yet deployed, please call "deployProxyAsync"'); } } diff --git a/contracts/asset-proxy/test/utils/erc20_wrapper.ts b/contracts/asset-proxy/test/utils/erc20_wrapper.ts index 6e726b6385..857a9f4e9b 100644 --- a/contracts/asset-proxy/test/utils/erc20_wrapper.ts +++ b/contracts/asset-proxy/test/utils/erc20_wrapper.ts @@ -133,7 +133,7 @@ export class ERC20Wrapper { _.forEach(balances, (balance, balanceIndex) => { const tokenAddress = balanceInfo[balanceIndex].tokenAddress; const tokenOwnerAddress = balanceInfo[balanceIndex].tokenOwnerAddress; - if (_.isUndefined(balancesByOwner[tokenOwnerAddress])) { + if (balancesByOwner[tokenOwnerAddress] === undefined) { balancesByOwner[tokenOwnerAddress] = {}; } const wrappedBalance = new BigNumber(balance); @@ -142,7 +142,7 @@ export class ERC20Wrapper { return balancesByOwner; } public addDummyTokenContract(dummy: DummyERC20TokenContract): void { - if (!_.isUndefined(this._dummyTokenContracts)) { + if (this._dummyTokenContracts !== undefined) { this._dummyTokenContracts.push(dummy); } } @@ -160,18 +160,18 @@ export class ERC20Wrapper { const erc20ProxyData = assetDataUtils.decodeERC20AssetData(assetData); const tokenAddress = erc20ProxyData.tokenAddress; const tokenContractIfExists = _.find(this._dummyTokenContracts, c => c.address === tokenAddress); - if (_.isUndefined(tokenContractIfExists)) { + if (tokenContractIfExists === undefined) { throw new Error(`Token: ${tokenAddress} was not deployed through ERC20Wrapper`); } return tokenContractIfExists; } private _validateDummyTokenContractsExistOrThrow(): void { - if (_.isUndefined(this._dummyTokenContracts)) { + if (this._dummyTokenContracts === undefined) { throw new Error('Dummy ERC20 tokens not yet deployed, please call "deployDummyTokensAsync"'); } } private _validateProxyContractExistsOrThrow(): void { - if (_.isUndefined(this._proxyContract)) { + if (this._proxyContract === undefined) { throw new Error('ERC20 proxy contract not yet deployed, please call "deployProxyAsync"'); } } diff --git a/contracts/asset-proxy/test/utils/erc721_wrapper.ts b/contracts/asset-proxy/test/utils/erc721_wrapper.ts index aa94d5df84..2c59793f63 100644 --- a/contracts/asset-proxy/test/utils/erc721_wrapper.ts +++ b/contracts/asset-proxy/test/utils/erc721_wrapper.ts @@ -62,12 +62,12 @@ export class ERC721Wrapper { for (const i of _.times(constants.NUM_ERC721_TOKENS_TO_MINT)) { const tokenId = generatePseudoRandomSalt(); await this.mintAsync(dummyTokenContract.address, tokenId, tokenOwnerAddress); - if (_.isUndefined(this._initialTokenIdsByOwner[tokenOwnerAddress])) { + if (this._initialTokenIdsByOwner[tokenOwnerAddress] === undefined) { this._initialTokenIdsByOwner[tokenOwnerAddress] = { [dummyTokenContract.address]: [], }; } - if (_.isUndefined(this._initialTokenIdsByOwner[tokenOwnerAddress][dummyTokenContract.address])) { + if (this._initialTokenIdsByOwner[tokenOwnerAddress][dummyTokenContract.address] === undefined) { this._initialTokenIdsByOwner[tokenOwnerAddress][dummyTokenContract.address] = []; } this._initialTokenIdsByOwner[tokenOwnerAddress][dummyTokenContract.address].push(tokenId); @@ -189,12 +189,12 @@ export class ERC721Wrapper { _.forEach(tokenOwnerAddresses, (tokenOwnerAddress, ownerIndex) => { const tokenAddress = tokenInfo[ownerIndex].tokenAddress; const tokenId = tokenInfo[ownerIndex].tokenId; - if (_.isUndefined(tokenIdsByOwner[tokenOwnerAddress])) { + if (tokenIdsByOwner[tokenOwnerAddress] === undefined) { tokenIdsByOwner[tokenOwnerAddress] = { [tokenAddress]: [], }; } - if (_.isUndefined(tokenIdsByOwner[tokenOwnerAddress][tokenAddress])) { + if (tokenIdsByOwner[tokenOwnerAddress][tokenAddress] === undefined) { tokenIdsByOwner[tokenOwnerAddress][tokenAddress] = []; } tokenIdsByOwner[tokenOwnerAddress][tokenAddress].push(tokenId); @@ -210,18 +210,18 @@ export class ERC721Wrapper { } private _getTokenContractFromAssetData(tokenAddress: string): DummyERC721TokenContract { const tokenContractIfExists = _.find(this._dummyTokenContracts, c => c.address === tokenAddress); - if (_.isUndefined(tokenContractIfExists)) { + if (tokenContractIfExists === undefined) { throw new Error(`Token: ${tokenAddress} was not deployed through ERC20Wrapper`); } return tokenContractIfExists; } private _validateDummyTokenContractsExistOrThrow(): void { - if (_.isUndefined(this._dummyTokenContracts)) { + if (this._dummyTokenContracts === undefined) { throw new Error('Dummy ERC721 tokens not yet deployed, please call "deployDummyTokensAsync"'); } } private _validateProxyContractExistsOrThrow(): void { - if (_.isUndefined(this._proxyContract)) { + if (this._proxyContract === undefined) { throw new Error('ERC721 proxy contract not yet deployed, please call "deployProxyAsync"'); } } diff --git a/contracts/coordinator/CHANGELOG.json b/contracts/coordinator/CHANGELOG.json index 0efc92c116..c8afdd0713 100644 --- a/contracts/coordinator/CHANGELOG.json +++ b/contracts/coordinator/CHANGELOG.json @@ -10,7 +10,8 @@ "note": "Make `assertValidTransactionOrdersApproval` internal", "pr": 1729 } - ] + ], + "timestamp": 1554997931 }, { "version": "1.1.0", diff --git a/contracts/coordinator/CHANGELOG.md b/contracts/coordinator/CHANGELOG.md index 7abad801a4..feb122eafd 100644 --- a/contracts/coordinator/CHANGELOG.md +++ b/contracts/coordinator/CHANGELOG.md @@ -5,6 +5,11 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.0 - _April 11, 2019_ + + * Make `decodeOrdersFromFillData`, `getCoordinatorApprovalHash`, and `getTransactionHash` public (#1729) + * Make `assertValidTransactionOrdersApproval` internal (#1729) + ## v1.1.0 - _March 21, 2019_ * Run Web3ProviderEngine without excess block polling (#1695) diff --git a/contracts/coordinator/package.json b/contracts/coordinator/package.json index afc8a0adc3..9cd2b4268c 100644 --- a/contracts/coordinator/package.json +++ b/contracts/coordinator/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-coordinator", - "version": "1.1.0", + "version": "2.0.0", "engines": { "node": ">=6.12" }, @@ -24,6 +24,7 @@ "clean": "shx rm -rf lib generated-artifacts generated-wrappers", "generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output generated-wrappers --backend ethers", "lint": "tslint --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", + "fix": "tslint --fix --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", "coverage:report:text": "istanbul report text", "coverage:report:html": "istanbul report html && open coverage/index.html", "profiler:report:html": "istanbul report html && open coverage/index.html", @@ -46,12 +47,12 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/extensions/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.8", - "@0x/contracts-gen": "^1.0.7", - "@0x/contracts-test-utils": "^3.1.1", - "@0x/dev-utils": "^2.2.0", - "@0x/sol-compiler": "^3.1.5", - "@0x/tslint-config": "^3.0.0", + "@0x/abi-gen": "^2.0.9", + "@0x/contracts-gen": "^1.0.8", + "@0x/contracts-test-utils": "^3.1.2", + "@0x/dev-utils": "^2.2.1", + "@0x/sol-compiler": "^3.1.6", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "@types/node": "*", "chai": "^4.0.1", @@ -67,18 +68,18 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.4", - "@0x/contracts-asset-proxy": "^2.1.0", - "@0x/contracts-erc20": "^2.1.0", + "@0x/base-contract": "^5.0.5", + "@0x/contracts-asset-proxy": "^2.1.1", + "@0x/contracts-erc20": "^2.2.0", "@0x/contracts-exchange": "1.0.2", - "@0x/contracts-exchange-libs": "^2.1.0", - "@0x/contracts-utils": "^3.1.0", - "@0x/order-utils": "^7.1.1", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", - "ethereum-types": "^2.1.1", + "@0x/contracts-exchange-libs": "^2.1.1", + "@0x/contracts-utils": "^3.1.1", + "@0x/order-utils": "^7.2.0", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", + "ethereum-types": "^2.1.2", "ethereumjs-util": "^5.1.1", "lodash": "^4.17.11" }, diff --git a/contracts/coordinator/test/utils/coordinator_registry_wrapper.ts b/contracts/coordinator/test/utils/coordinator_registry_wrapper.ts index 70c9477929..3c80714225 100644 --- a/contracts/coordinator/test/utils/coordinator_registry_wrapper.ts +++ b/contracts/coordinator/test/utils/coordinator_registry_wrapper.ts @@ -1,7 +1,6 @@ import { LogDecoder, txDefaults } from '@0x/contracts-test-utils'; import { Web3Wrapper } from '@0x/web3-wrapper'; import { TransactionReceiptWithDecodedLogs, ZeroExProvider } from 'ethereum-types'; -import * as _ from 'lodash'; import { artifacts, CoordinatorRegistryContract } from '../../src'; @@ -26,7 +25,7 @@ export class CoordinatorRegistryWrapper { this._provider, txDefaults, ); - if (_.isUndefined(this._coordinatorRegistryContract)) { + if (this._coordinatorRegistryContract === undefined) { throw new Error(`Failed to deploy Coordinator Registry contract.`); } return this._coordinatorRegistryContract; @@ -56,7 +55,7 @@ export class CoordinatorRegistryWrapper { return coordinatorEndpoint; } private _assertCoordinatorRegistryDeployed(): void { - if (_.isUndefined(this._coordinatorRegistryContract)) { + if (this._coordinatorRegistryContract === undefined) { throw new Error( 'The Coordinator Registry contract was not deployed through the CoordinatorRegistryWrapper. Call `deployCoordinatorRegistryAsync` to deploy.', ); diff --git a/contracts/erc1155/CHANGELOG.json b/contracts/erc1155/CHANGELOG.json index 4a52aa85ff..7b58d36332 100644 --- a/contracts/erc1155/CHANGELOG.json +++ b/contracts/erc1155/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "1.1.1", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "version": "1.1.0", "changes": [ diff --git a/contracts/erc1155/CHANGELOG.md b/contracts/erc1155/CHANGELOG.md index 91cafbe214..a6de7ba88c 100644 --- a/contracts/erc1155/CHANGELOG.md +++ b/contracts/erc1155/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v1.1.1 - _April 11, 2019_ + + * Dependencies updated + ## v1.1.0 - _March 21, 2019_ * Run Web3ProviderEngine without excess block polling (#1695) diff --git a/contracts/erc1155/package.json b/contracts/erc1155/package.json index b5e0ba99d8..f3b3abaa54 100644 --- a/contracts/erc1155/package.json +++ b/contracts/erc1155/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-erc1155", - "version": "1.1.0", + "version": "1.1.1", "engines": { "node": ">=6.12" }, @@ -24,6 +24,7 @@ "clean": "shx rm -rf lib generated-artifacts generated-wrappers", "generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output generated-wrappers --backend ethers", "lint": "tslint --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", + "fix": "tslint --fix --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", "coverage:report:text": "istanbul report text", "coverage:report:html": "istanbul report html && open coverage/index.html", "profiler:report:html": "istanbul report html && open coverage/index.html", @@ -46,11 +47,11 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/tokens/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.8", - "@0x/contracts-gen": "^1.0.7", - "@0x/dev-utils": "^2.2.0", - "@0x/sol-compiler": "^3.1.5", - "@0x/tslint-config": "^3.0.0", + "@0x/abi-gen": "^2.0.9", + "@0x/contracts-gen": "^1.0.8", + "@0x/dev-utils": "^2.2.1", + "@0x/sol-compiler": "^3.1.6", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "@types/node": "*", "chai": "^4.0.1", @@ -66,14 +67,14 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.4", - "@0x/contracts-test-utils": "^3.1.1", - "@0x/contracts-utils": "^3.1.0", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", - "ethereum-types": "^2.1.1", + "@0x/base-contract": "^5.0.5", + "@0x/contracts-test-utils": "^3.1.2", + "@0x/contracts-utils": "^3.1.1", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", + "ethereum-types": "^2.1.2", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/contracts/erc1155/test/utils/erc1155_wrapper.ts b/contracts/erc1155/test/utils/erc1155_wrapper.ts index 7f620ece02..e75c6a1b04 100644 --- a/contracts/erc1155/test/utils/erc1155_wrapper.ts +++ b/contracts/erc1155/test/utils/erc1155_wrapper.ts @@ -36,8 +36,8 @@ export class Erc1155Wrapper { callbackData?: string, delegatedSpender?: string, ): Promise { - const spender = _.isUndefined(delegatedSpender) ? from : delegatedSpender; - const callbackDataHex = _.isUndefined(callbackData) ? '0x' : callbackData; + const spender = delegatedSpender === undefined ? from : delegatedSpender; + const callbackDataHex = callbackData === undefined ? '0x' : callbackData; const tx = await this._logDecoder.getTxWithDecodedLogsAsync( await this._erc1155Contract.safeTransferFrom.sendTransactionAsync(from, to, token, value, callbackDataHex, { from: spender, @@ -53,8 +53,8 @@ export class Erc1155Wrapper { callbackData?: string, delegatedSpender?: string, ): Promise { - const spender = _.isUndefined(delegatedSpender) ? from : delegatedSpender; - const callbackDataHex = _.isUndefined(callbackData) ? '0x' : callbackData; + const spender = delegatedSpender === undefined ? from : delegatedSpender; + const callbackDataHex = callbackData === undefined ? '0x' : callbackData; const tx = await this._logDecoder.getTxWithDecodedLogsAsync( await this._erc1155Contract.safeBatchTransferFrom.sendTransactionAsync( from, diff --git a/contracts/erc20/CHANGELOG.json b/contracts/erc20/CHANGELOG.json index 1e43197f55..e10539b5bc 100644 --- a/contracts/erc20/CHANGELOG.json +++ b/contracts/erc20/CHANGELOG.json @@ -6,7 +6,8 @@ "note": "Added UntransferrableDummyERC20Token", "pr": 1714 } - ] + ], + "timestamp": 1554997931 }, { "version": "2.1.0", diff --git a/contracts/erc20/CHANGELOG.md b/contracts/erc20/CHANGELOG.md index 203bd1be0f..c7d3195509 100644 --- a/contracts/erc20/CHANGELOG.md +++ b/contracts/erc20/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.2.0 - _April 11, 2019_ + + * Added UntransferrableDummyERC20Token (#1714) + ## v2.1.0 - _March 21, 2019_ * Run Web3ProviderEngine without excess block polling (#1695) diff --git a/contracts/erc20/package.json b/contracts/erc20/package.json index d742904029..f5f961dab5 100644 --- a/contracts/erc20/package.json +++ b/contracts/erc20/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-erc20", - "version": "2.1.0", + "version": "2.2.0", "engines": { "node": ">=6.12" }, @@ -24,6 +24,7 @@ "clean": "shx rm -rf lib generated-artifacts generated-wrappers", "generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output generated-wrappers --backend ethers", "lint": "tslint --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", + "fix": "tslint --fix --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", "coverage:report:text": "istanbul report text", "coverage:report:html": "istanbul report html && open coverage/index.html", "profiler:report:html": "istanbul report html && open coverage/index.html", @@ -46,12 +47,12 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/tokens/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.8", - "@0x/contracts-gen": "^1.0.7", - "@0x/contracts-test-utils": "^3.1.1", - "@0x/dev-utils": "^2.2.0", - "@0x/sol-compiler": "^3.1.5", - "@0x/tslint-config": "^3.0.0", + "@0x/abi-gen": "^2.0.9", + "@0x/contracts-gen": "^1.0.8", + "@0x/contracts-test-utils": "^3.1.2", + "@0x/dev-utils": "^2.2.1", + "@0x/sol-compiler": "^3.1.6", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "@types/node": "*", "chai": "^4.0.1", @@ -67,14 +68,14 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.4", - "@0x/contracts-exchange-libs": "^2.1.0", - "@0x/contracts-utils": "^3.1.0", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", - "ethereum-types": "^2.1.1", + "@0x/base-contract": "^5.0.5", + "@0x/contracts-exchange-libs": "^2.1.1", + "@0x/contracts-utils": "^3.1.1", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", + "ethereum-types": "^2.1.2", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/contracts/erc721/CHANGELOG.json b/contracts/erc721/CHANGELOG.json index 26547ae1d8..36ef80e737 100644 --- a/contracts/erc721/CHANGELOG.json +++ b/contracts/erc721/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.1.1", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "version": "2.1.0", "changes": [ diff --git a/contracts/erc721/CHANGELOG.md b/contracts/erc721/CHANGELOG.md index 912401de5d..27482a59ad 100644 --- a/contracts/erc721/CHANGELOG.md +++ b/contracts/erc721/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.1.1 - _April 11, 2019_ + + * Dependencies updated + ## v2.1.0 - _March 21, 2019_ * Run Web3ProviderEngine without excess block polling (#1695) diff --git a/contracts/erc721/package.json b/contracts/erc721/package.json index 1353374fca..8fa189ea12 100644 --- a/contracts/erc721/package.json +++ b/contracts/erc721/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-erc721", - "version": "2.1.0", + "version": "2.1.1", "engines": { "node": ">=6.12" }, @@ -24,6 +24,7 @@ "clean": "shx rm -rf lib generated-artifacts generated-wrappers", "generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output generated-wrappers --backend ethers", "lint": "tslint --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", + "fix": "tslint --fix --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", "coverage:report:text": "istanbul report text", "coverage:report:html": "istanbul report html && open coverage/index.html", "profiler:report:html": "istanbul report html && open coverage/index.html", @@ -46,12 +47,12 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/tokens/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.8", - "@0x/contracts-gen": "^1.0.7", - "@0x/contracts-test-utils": "^3.1.1", - "@0x/dev-utils": "^2.2.0", - "@0x/sol-compiler": "^3.1.5", - "@0x/tslint-config": "^3.0.0", + "@0x/abi-gen": "^2.0.9", + "@0x/contracts-gen": "^1.0.8", + "@0x/contracts-test-utils": "^3.1.2", + "@0x/dev-utils": "^2.2.1", + "@0x/sol-compiler": "^3.1.6", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "@types/node": "*", "chai": "^4.0.1", @@ -67,13 +68,13 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.4", - "@0x/contracts-utils": "^3.1.0", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", - "ethereum-types": "^2.1.1", + "@0x/base-contract": "^5.0.5", + "@0x/contracts-utils": "^3.1.1", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", + "ethereum-types": "^2.1.2", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/contracts/exchange-forwarder/CHANGELOG.json b/contracts/exchange-forwarder/CHANGELOG.json index c0486759d4..2012aec8f9 100644 --- a/contracts/exchange-forwarder/CHANGELOG.json +++ b/contracts/exchange-forwarder/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.1.1", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "version": "2.1.0", "changes": [ diff --git a/contracts/exchange-forwarder/CHANGELOG.md b/contracts/exchange-forwarder/CHANGELOG.md index 61dd06d75c..ff837e2949 100644 --- a/contracts/exchange-forwarder/CHANGELOG.md +++ b/contracts/exchange-forwarder/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.1.1 - _April 11, 2019_ + + * Dependencies updated + ## v2.1.0 - _March 21, 2019_ * Run Web3ProviderEngine without excess block polling (#1695) diff --git a/contracts/exchange-forwarder/package.json b/contracts/exchange-forwarder/package.json index 905da9f2b5..ccdd18c9d8 100644 --- a/contracts/exchange-forwarder/package.json +++ b/contracts/exchange-forwarder/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-exchange-forwarder", - "version": "2.1.0", + "version": "2.1.1", "engines": { "node": ">=6.12" }, @@ -24,6 +24,7 @@ "clean": "shx rm -rf lib generated-artifacts generated-wrappers", "generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output generated-wrappers --backend ethers", "lint": "tslint --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", + "fix": "tslint --fix --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", "coverage:report:text": "istanbul report text", "coverage:report:html": "istanbul report html && open coverage/index.html", "profiler:report:html": "istanbul report html && open coverage/index.html", @@ -46,13 +47,13 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/extensions/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.8", - "@0x/contract-wrappers": "^8.0.5", - "@0x/contracts-gen": "^1.0.7", - "@0x/contracts-test-utils": "^3.1.1", - "@0x/dev-utils": "^2.2.0", - "@0x/sol-compiler": "^3.1.5", - "@0x/tslint-config": "^3.0.0", + "@0x/abi-gen": "^2.0.9", + "@0x/contract-wrappers": "^9.0.0", + "@0x/contracts-gen": "^1.0.8", + "@0x/contracts-test-utils": "^3.1.2", + "@0x/dev-utils": "^2.2.1", + "@0x/sol-compiler": "^3.1.6", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "@types/node": "*", "chai": "^4.0.1", @@ -68,19 +69,19 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.4", - "@0x/contracts-asset-proxy": "^2.1.0", + "@0x/base-contract": "^5.0.5", + "@0x/contracts-asset-proxy": "^2.1.1", "@0x/contracts-erc20": "1.0.8", "@0x/contracts-erc721": "1.0.8", "@0x/contracts-exchange": "1.0.2", "@0x/contracts-exchange-libs": "1.0.2", "@0x/contracts-utils": "2.0.1", - "@0x/order-utils": "^7.1.1", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", - "ethereum-types": "^2.1.1", + "@0x/order-utils": "^7.2.0", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", + "ethereum-types": "^2.1.2", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/contracts/exchange-forwarder/test/utils/forwarder_wrapper.ts b/contracts/exchange-forwarder/test/utils/forwarder_wrapper.ts index 383401d33e..ff6e4c8663 100644 --- a/contracts/exchange-forwarder/test/utils/forwarder_wrapper.ts +++ b/contracts/exchange-forwarder/test/utils/forwarder_wrapper.ts @@ -76,8 +76,8 @@ export class ForwarderWrapper { ): Promise { const params = ForwarderWrapper._createOptimizedOrders(orders); const feeParams = ForwarderWrapper._createOptimizedZrxOrders(feeOrders); - const feePercentage = _.isUndefined(opts.feePercentage) ? constants.ZERO_AMOUNT : opts.feePercentage; - const feeRecipient = _.isUndefined(opts.feeRecipient) ? constants.NULL_ADDRESS : opts.feeRecipient; + const feePercentage = opts.feePercentage === undefined ? constants.ZERO_AMOUNT : opts.feePercentage; + const feeRecipient = opts.feeRecipient === undefined ? constants.NULL_ADDRESS : opts.feeRecipient; const txHash = await this._forwarderContract.marketSellOrdersWithEth.sendTransactionAsync( params.orders, params.signatures, @@ -99,8 +99,8 @@ export class ForwarderWrapper { ): Promise { const params = ForwarderWrapper._createOptimizedOrders(orders); const feeParams = ForwarderWrapper._createOptimizedZrxOrders(feeOrders); - const feePercentage = _.isUndefined(opts.feePercentage) ? constants.ZERO_AMOUNT : opts.feePercentage; - const feeRecipient = _.isUndefined(opts.feeRecipient) ? constants.NULL_ADDRESS : opts.feeRecipient; + const feePercentage = opts.feePercentage === undefined ? constants.ZERO_AMOUNT : opts.feePercentage; + const feeRecipient = opts.feeRecipient === undefined ? constants.NULL_ADDRESS : opts.feeRecipient; const txHash = await this._forwarderContract.marketBuyOrdersWithEth.sendTransactionAsync( params.orders, makerAssetFillAmount, diff --git a/contracts/exchange-libs/CHANGELOG.json b/contracts/exchange-libs/CHANGELOG.json index 6fbf4e3c12..4619cbef52 100644 --- a/contracts/exchange-libs/CHANGELOG.json +++ b/contracts/exchange-libs/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.1.1", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "version": "2.1.0", "changes": [ diff --git a/contracts/exchange-libs/CHANGELOG.md b/contracts/exchange-libs/CHANGELOG.md index 6e3be33a21..d6f7db63ad 100644 --- a/contracts/exchange-libs/CHANGELOG.md +++ b/contracts/exchange-libs/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.1.1 - _April 11, 2019_ + + * Dependencies updated + ## v2.1.0 - _March 21, 2019_ * Run Web3ProviderEngine without excess block polling (#1695) diff --git a/contracts/exchange-libs/package.json b/contracts/exchange-libs/package.json index 79e4eb7233..03810d28a8 100644 --- a/contracts/exchange-libs/package.json +++ b/contracts/exchange-libs/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-exchange-libs", - "version": "2.1.0", + "version": "2.1.1", "engines": { "node": ">=6.12" }, @@ -24,6 +24,7 @@ "clean": "shx rm -rf lib generated-artifacts generated-wrappers", "generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output generated-wrappers --backend ethers", "lint": "tslint --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", + "fix": "tslint --fix --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", "coverage:report:text": "istanbul report text", "coverage:report:html": "istanbul report html && open coverage/index.html", "profiler:report:html": "istanbul report html && open coverage/index.html", @@ -46,12 +47,12 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/libs/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.8", - "@0x/contracts-gen": "^1.0.7", - "@0x/contracts-test-utils": "^3.1.1", - "@0x/dev-utils": "^2.2.0", - "@0x/sol-compiler": "^3.1.5", - "@0x/tslint-config": "^3.0.0", + "@0x/abi-gen": "^2.0.9", + "@0x/contracts-gen": "^1.0.8", + "@0x/contracts-test-utils": "^3.1.2", + "@0x/dev-utils": "^2.2.1", + "@0x/sol-compiler": "^3.1.6", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "@types/node": "*", "chai": "^4.0.1", @@ -67,14 +68,14 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.4", - "@0x/contracts-utils": "^3.1.0", - "@0x/order-utils": "^7.1.1", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", - "ethereum-types": "^2.1.1", + "@0x/base-contract": "^5.0.5", + "@0x/contracts-utils": "^3.1.1", + "@0x/order-utils": "^7.2.0", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", + "ethereum-types": "^2.1.2", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/contracts/exchange/CHANGELOG.json b/contracts/exchange/CHANGELOG.json index f66cc2e00a..884ae081de 100644 --- a/contracts/exchange/CHANGELOG.json +++ b/contracts/exchange/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.1.1", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "version": "2.1.0", "changes": [ diff --git a/contracts/exchange/CHANGELOG.md b/contracts/exchange/CHANGELOG.md index 70b8e2afe2..e5fc4edfc1 100644 --- a/contracts/exchange/CHANGELOG.md +++ b/contracts/exchange/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.1.1 - _April 11, 2019_ + + * Dependencies updated + ## v2.1.0 - _March 21, 2019_ * Run Web3ProviderEngine without excess block polling (#1695) diff --git a/contracts/exchange/package.json b/contracts/exchange/package.json index 6f4f51bae6..cd91c5b344 100644 --- a/contracts/exchange/package.json +++ b/contracts/exchange/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-exchange", - "version": "2.1.0", + "version": "2.1.1", "engines": { "node": ">=6.12" }, @@ -24,6 +24,7 @@ "clean": "shx rm -rf lib generated-artifacts generated-wrappers", "generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output generated-wrappers --backend ethers", "lint": "tslint --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", + "fix": "tslint --fix --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", "coverage:report:text": "istanbul report text", "coverage:report:html": "istanbul report html && open coverage/index.html", "profiler:report:html": "istanbul report html && open coverage/index.html", @@ -46,12 +47,12 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/protocol/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.8", - "@0x/contracts-gen": "^1.0.7", - "@0x/contracts-test-utils": "^3.1.1", - "@0x/dev-utils": "^2.2.0", - "@0x/sol-compiler": "^3.1.5", - "@0x/tslint-config": "^3.0.0", + "@0x/abi-gen": "^2.0.9", + "@0x/contracts-gen": "^1.0.8", + "@0x/contracts-test-utils": "^3.1.2", + "@0x/dev-utils": "^2.2.1", + "@0x/sol-compiler": "^3.1.6", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "@types/node": "*", "chai": "^4.0.1", @@ -67,19 +68,19 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.4", - "@0x/contracts-asset-proxy": "^2.1.0", - "@0x/contracts-erc1155": "^1.1.0", - "@0x/contracts-erc20": "^2.1.0", - "@0x/contracts-erc721": "^2.1.0", - "@0x/contracts-exchange-libs": "^2.1.0", - "@0x/contracts-utils": "^3.1.0", - "@0x/order-utils": "^7.1.1", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", - "ethereum-types": "^2.1.1", + "@0x/base-contract": "^5.0.5", + "@0x/contracts-asset-proxy": "^2.1.1", + "@0x/contracts-erc1155": "^1.1.1", + "@0x/contracts-erc20": "^2.2.0", + "@0x/contracts-erc721": "^2.1.1", + "@0x/contracts-exchange-libs": "^2.1.1", + "@0x/contracts-utils": "^3.1.1", + "@0x/order-utils": "^7.2.0", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", + "ethereum-types": "^2.1.2", "ethereumjs-util": "^5.1.1", "lodash": "^4.17.11" }, diff --git a/contracts/exchange/test/utils/fill_order_combinatorial_utils.ts b/contracts/exchange/test/utils/fill_order_combinatorial_utils.ts index 5554a1beb7..a15b27e12b 100644 --- a/contracts/exchange/test/utils/fill_order_combinatorial_utils.ts +++ b/contracts/exchange/test/utils/fill_order_combinatorial_utils.ts @@ -437,7 +437,7 @@ export class FillOrderCombinatorialUtils { lazyStore: BalanceAndProxyAllowanceLazyStore, fillRevertReasonIfExists: RevertReason | undefined, ): Promise { - if (!_.isUndefined(fillRevertReasonIfExists)) { + if (fillRevertReasonIfExists !== undefined) { return expectTransactionFailedAsync( this.exchangeWrapper.fillOrderAsync(signedOrder, this.takerAddress, { takerAssetFillAmount }), fillRevertReasonIfExists, diff --git a/contracts/extensions/CHANGELOG.json b/contracts/extensions/CHANGELOG.json index aa54e8e0bf..f573c86bec 100644 --- a/contracts/extensions/CHANGELOG.json +++ b/contracts/extensions/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "3.1.1", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "version": "3.1.0", "changes": [ diff --git a/contracts/extensions/CHANGELOG.md b/contracts/extensions/CHANGELOG.md index a9d71d11e5..1d5f6caf89 100644 --- a/contracts/extensions/CHANGELOG.md +++ b/contracts/extensions/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.1.1 - _April 11, 2019_ + + * Dependencies updated + ## v3.1.0 - _March 21, 2019_ * Run Web3ProviderEngine without excess block polling (#1695) diff --git a/contracts/extensions/package.json b/contracts/extensions/package.json index c5e17f2d16..d71e0b0f7e 100644 --- a/contracts/extensions/package.json +++ b/contracts/extensions/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-extensions", - "version": "3.1.0", + "version": "3.1.1", "engines": { "node": ">=6.12" }, @@ -24,6 +24,7 @@ "clean": "shx rm -rf lib generated-artifacts generated-wrappers", "generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output generated-wrappers --backend ethers", "lint": "tslint --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", + "fix": "tslint --fix --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", "coverage:report:text": "istanbul report text", "coverage:report:html": "istanbul report html && open coverage/index.html", "profiler:report:html": "istanbul report html && open coverage/index.html", @@ -46,13 +47,13 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/extensions/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.8", - "@0x/contract-wrappers": "^8.0.5", - "@0x/contracts-gen": "^1.0.7", - "@0x/contracts-test-utils": "^3.1.1", - "@0x/dev-utils": "^2.2.0", - "@0x/sol-compiler": "^3.1.5", - "@0x/tslint-config": "^3.0.0", + "@0x/abi-gen": "^2.0.9", + "@0x/contract-wrappers": "^9.0.0", + "@0x/contracts-gen": "^1.0.8", + "@0x/contracts-test-utils": "^3.1.2", + "@0x/dev-utils": "^2.2.1", + "@0x/sol-compiler": "^3.1.6", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "@types/node": "*", "chai": "^4.0.1", @@ -68,19 +69,19 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.4", - "@0x/contracts-asset-proxy": "^2.1.0", - "@0x/contracts-erc20": "^2.1.0", - "@0x/contracts-erc721": "^2.1.0", - "@0x/contracts-exchange": "^2.1.0", - "@0x/contracts-exchange-libs": "^2.1.0", - "@0x/contracts-utils": "^3.1.0", - "@0x/order-utils": "^7.1.1", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", - "ethereum-types": "^2.1.1", + "@0x/base-contract": "^5.0.5", + "@0x/contracts-asset-proxy": "^2.1.1", + "@0x/contracts-erc20": "^2.2.0", + "@0x/contracts-erc721": "^2.1.1", + "@0x/contracts-exchange": "^2.1.1", + "@0x/contracts-exchange-libs": "^2.1.1", + "@0x/contracts-utils": "^3.1.1", + "@0x/order-utils": "^7.2.0", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", + "ethereum-types": "^2.1.2", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/contracts/extensions/test/utils/balance_threshold_wrapper.ts b/contracts/extensions/test/utils/balance_threshold_wrapper.ts index 039e8ab47c..30d1798aeb 100644 --- a/contracts/extensions/test/utils/balance_threshold_wrapper.ts +++ b/contracts/extensions/test/utils/balance_threshold_wrapper.ts @@ -12,7 +12,6 @@ import { SignedOrder } from '@0x/types'; import { BigNumber } from '@0x/utils'; import { Web3Wrapper } from '@0x/web3-wrapper'; import { TransactionReceiptWithDecodedLogs } from 'ethereum-types'; -import * as _ from 'lodash'; import { artifacts, BalanceThresholdFilterContract } from '../../src'; @@ -264,7 +263,7 @@ export class BalanceThresholdWrapper { gas?: number, ): Promise { const signedExchangeTx = this._signerTransactionFactory.newSignedTransaction(abiEncodedExchangeTxData); - const txOpts = _.isUndefined(gas) ? { from } : { from, gas }; + const txOpts = gas === undefined ? { from } : { from, gas }; const txHash = await this._balanceThresholdFilter.executeTransaction.sendTransactionAsync( signedExchangeTx.salt, signedExchangeTx.signerAddress, diff --git a/contracts/multisig/CHANGELOG.json b/contracts/multisig/CHANGELOG.json index e969aa5324..5bccf6576e 100644 --- a/contracts/multisig/CHANGELOG.json +++ b/contracts/multisig/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "3.1.1", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "version": "3.1.0", "changes": [ diff --git a/contracts/multisig/CHANGELOG.md b/contracts/multisig/CHANGELOG.md index 6085cd1e0e..6c2b6e09df 100644 --- a/contracts/multisig/CHANGELOG.md +++ b/contracts/multisig/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.1.1 - _April 11, 2019_ + + * Dependencies updated + ## v3.1.0 - _March 21, 2019_ * Run Web3ProviderEngine without excess block polling (#1695) diff --git a/contracts/multisig/package.json b/contracts/multisig/package.json index d53942ca15..75da17f513 100644 --- a/contracts/multisig/package.json +++ b/contracts/multisig/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-multisig", - "version": "3.1.0", + "version": "3.1.1", "engines": { "node": ">=6.12" }, @@ -24,6 +24,7 @@ "clean": "shx rm -rf lib generated-artifacts generated-wrappers", "generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../../packages/abi-gen-templates/contract.handlebars --partials '../../packages/abi-gen-templates/partials/**/*.handlebars' --output generated-wrappers --backend ethers", "lint": "tslint --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", + "fix": "tslint --fix --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", "coverage:report:text": "istanbul report text", "coverage:report:html": "istanbul report html && open coverage/index.html", "profiler:report:html": "istanbul report html && open coverage/index.html", @@ -46,12 +47,12 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/multisig/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.8", - "@0x/contracts-gen": "^1.0.7", - "@0x/contracts-test-utils": "^3.1.1", - "@0x/dev-utils": "^2.2.0", - "@0x/sol-compiler": "^3.1.5", - "@0x/tslint-config": "^3.0.0", + "@0x/abi-gen": "^2.0.9", + "@0x/contracts-gen": "^1.0.8", + "@0x/contracts-test-utils": "^3.1.2", + "@0x/dev-utils": "^2.2.1", + "@0x/sol-compiler": "^3.1.6", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "@types/node": "*", "chai": "^4.0.1", @@ -67,15 +68,15 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.4", - "@0x/contracts-asset-proxy": "^2.1.0", - "@0x/contracts-erc20": "^2.1.0", + "@0x/base-contract": "^5.0.5", + "@0x/contracts-asset-proxy": "^2.1.1", + "@0x/contracts-erc20": "^2.2.0", "@0x/contracts-utils": "2.0.1", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", - "ethereum-types": "^2.1.1", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", + "ethereum-types": "^2.1.2", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/contracts/multisig/test/multi_sig_with_time_lock.ts b/contracts/multisig/test/multi_sig_with_time_lock.ts index b9b3732a7e..9596271514 100644 --- a/contracts/multisig/test/multi_sig_with_time_lock.ts +++ b/contracts/multisig/test/multi_sig_with_time_lock.ts @@ -70,7 +70,7 @@ describe('MultiSigWalletWithTimeLock', () => { REQUIRED_APPROVALS, secondsTimeLocked, ); - expect(_.isUndefined((multiSig as any).external_call)).to.be.equal(true); + expect((multiSig as any).external_call === undefined).to.be.equal(true); }); }); describe('confirmTransaction', () => { @@ -271,7 +271,7 @@ describe('MultiSigWalletWithTimeLock', () => { const blockNum = await web3Wrapper.getBlockNumberAsync(); const blockInfo = await web3Wrapper.getBlockIfExistsAsync(blockNum); - if (_.isUndefined(blockInfo)) { + if (blockInfo === undefined) { throw new Error(`Unexpectedly failed to fetch block at #${blockNum}`); } const timestamp = new BigNumber(blockInfo.timestamp); diff --git a/contracts/multisig/test/utils/asset_proxy_owner_wrapper.ts b/contracts/multisig/test/utils/asset_proxy_owner_wrapper.ts index f75d5c952e..afb6cb33ce 100644 --- a/contracts/multisig/test/utils/asset_proxy_owner_wrapper.ts +++ b/contracts/multisig/test/utils/asset_proxy_owner_wrapper.ts @@ -3,7 +3,6 @@ import { LogDecoder, Web3ProviderEngine } from '@0x/contracts-test-utils'; import { BigNumber } from '@0x/utils'; import { Web3Wrapper } from '@0x/web3-wrapper'; import { TransactionReceiptWithDecodedLogs } from 'ethereum-types'; -import * as _ from 'lodash'; import { AssetProxyOwnerContract } from '../../generated-wrappers/asset_proxy_owner'; import { artifacts } from '../../src/artifacts'; @@ -23,7 +22,7 @@ export class AssetProxyOwnerWrapper { from: string, opts: { value?: BigNumber } = {}, ): Promise { - const value = _.isUndefined(opts.value) ? new BigNumber(0) : opts.value; + const value = opts.value === undefined ? new BigNumber(0) : opts.value; const txHash = await this._assetProxyOwner.submitTransaction.sendTransactionAsync(destination, value, data, { from, }); diff --git a/contracts/multisig/test/utils/multi_sig_wrapper.ts b/contracts/multisig/test/utils/multi_sig_wrapper.ts index 225a262346..9a405d0671 100644 --- a/contracts/multisig/test/utils/multi_sig_wrapper.ts +++ b/contracts/multisig/test/utils/multi_sig_wrapper.ts @@ -2,7 +2,6 @@ import { LogDecoder, Web3ProviderEngine } from '@0x/contracts-test-utils'; import { BigNumber } from '@0x/utils'; import { Web3Wrapper } from '@0x/web3-wrapper'; import { TransactionReceiptWithDecodedLogs } from 'ethereum-types'; -import * as _ from 'lodash'; import { MultiSigWalletContract } from '../../generated-wrappers/multi_sig_wallet'; import { artifacts } from '../../src/artifacts'; @@ -22,7 +21,7 @@ export class MultiSigWrapper { from: string, opts: { value?: BigNumber } = {}, ): Promise { - const value = _.isUndefined(opts.value) ? new BigNumber(0) : opts.value; + const value = opts.value === undefined ? new BigNumber(0) : opts.value; const txHash = await this._multiSig.submitTransaction.sendTransactionAsync(destination, value, data, { from, }); diff --git a/contracts/test-utils/CHANGELOG.json b/contracts/test-utils/CHANGELOG.json index 1a649c0a91..da99a6158a 100644 --- a/contracts/test-utils/CHANGELOG.json +++ b/contracts/test-utils/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "3.1.2", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "3.1.1", diff --git a/contracts/test-utils/CHANGELOG.md b/contracts/test-utils/CHANGELOG.md index b4e625254a..86b9f03beb 100644 --- a/contracts/test-utils/CHANGELOG.md +++ b/contracts/test-utils/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.1.2 - _April 11, 2019_ + + * Dependencies updated + ## v3.1.1 - _March 21, 2019_ * Dependencies updated diff --git a/contracts/test-utils/package.json b/contracts/test-utils/package.json index c79e2f20ee..37de628cd4 100644 --- a/contracts/test-utils/package.json +++ b/contracts/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-test-utils", - "version": "3.1.1", + "version": "3.1.2", "engines": { "node": ">=6.12" }, @@ -17,6 +17,7 @@ "run_mocha": "mocha --require source-map-support/register --require make-promises-safe 'lib/test/**/*.js' --timeout 100000 --bail --exit", "clean": "shx rm -rf lib", "lint": "tslint --format stylish --project tsconfig.lint.json", + "fix": "tslint --fix --format stylish --project tsconfig.lint.json", "coverage:report:text": "istanbul report text", "coverage:report:html": "istanbul report html && open coverage/index.html", "profiler:report:html": "istanbul report html && open coverage/index.html", @@ -40,19 +41,19 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/abi-gen": "^2.0.8", - "@0x/dev-utils": "^2.2.0", - "@0x/order-utils": "^7.1.1", - "@0x/sol-compiler": "^3.1.5", - "@0x/sol-coverage": "^3.0.2", - "@0x/sol-profiler": "^3.1.4", - "@0x/sol-trace": "^2.0.10", - "@0x/subproviders": "^4.0.4", - "@0x/tslint-config": "^3.0.0", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", + "@0x/abi-gen": "^2.0.9", + "@0x/dev-utils": "^2.2.1", + "@0x/order-utils": "^7.2.0", + "@0x/sol-compiler": "^3.1.6", + "@0x/sol-coverage": "^3.0.3", + "@0x/sol-profiler": "^3.1.5", + "@0x/sol-trace": "^2.0.11", + "@0x/subproviders": "^4.0.5", + "@0x/tslint-config": "^3.0.1", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", "@types/bn.js": "^4.11.0", "@types/js-combinatorics": "^0.5.29", "@types/lodash": "4.14.104", @@ -62,7 +63,7 @@ "chai-as-promised": "^7.1.0", "chai-bignumber": "^3.0.0", "dirty-chai": "^2.0.1", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "ethereumjs-util": "^5.1.1", "ethers": "~4.0.4", "js-combinatorics": "^0.5.3", diff --git a/contracts/test-utils/src/assertions.ts b/contracts/test-utils/src/assertions.ts index f31651f4df..c24a3d1696 100644 --- a/contracts/test-utils/src/assertions.ts +++ b/contracts/test-utils/src/assertions.ts @@ -24,7 +24,7 @@ export type sendTransactionResult = Promise { - if (_.isUndefined(nodeType)) { + if (nodeType === undefined) { nodeType = await web3Wrapper.getNodeTypeAsync(); } switch (nodeType) { @@ -99,7 +99,7 @@ export async function expectTransactionFailedAsync(p: sendTransactionResult, rea _.noop(e); }); - if (_.isUndefined(nodeType)) { + if (nodeType === undefined) { nodeType = await web3Wrapper.getNodeTypeAsync(); } switch (nodeType) { diff --git a/contracts/test-utils/src/block_timestamp.ts b/contracts/test-utils/src/block_timestamp.ts index 66c13eed11..5f1a218477 100644 --- a/contracts/test-utils/src/block_timestamp.ts +++ b/contracts/test-utils/src/block_timestamp.ts @@ -1,5 +1,3 @@ -import * as _ from 'lodash'; - import { constants } from './constants'; import { web3Wrapper } from './web3_wrapper'; @@ -13,7 +11,7 @@ let firstAccount: string | undefined; * reject if the time could not be increased. */ export async function increaseTimeAndMineBlockAsync(seconds: number): Promise { - if (_.isUndefined(firstAccount)) { + if (firstAccount === undefined) { const accounts = await web3Wrapper.getAvailableAddressesAsync(); firstAccount = accounts[0]; } @@ -36,7 +34,7 @@ export async function increaseTimeAndMineBlockAsync(seconds: number): Promise { const currentBlockIfExists = await web3Wrapper.getBlockIfExistsAsync('latest'); - if (_.isUndefined(currentBlockIfExists)) { + if (currentBlockIfExists === undefined) { throw new Error(`Unable to fetch latest block.`); } return currentBlockIfExists.timestamp; diff --git a/contracts/test-utils/src/coverage.ts b/contracts/test-utils/src/coverage.ts index 25818593cb..d3a8cd8ca0 100644 --- a/contracts/test-utils/src/coverage.ts +++ b/contracts/test-utils/src/coverage.ts @@ -1,12 +1,10 @@ import { devConstants } from '@0x/dev-utils'; import { CoverageSubprovider, SolCompilerArtifactAdapter } from '@0x/sol-coverage'; -import * as _ from 'lodash'; - let coverageSubprovider: CoverageSubprovider; export const coverage = { getCoverageSubproviderSingleton(): CoverageSubprovider { - if (_.isUndefined(coverageSubprovider)) { + if (coverageSubprovider === undefined) { coverageSubprovider = coverage._getCoverageSubprovider(); } return coverageSubprovider; diff --git a/contracts/test-utils/src/log_decoder.ts b/contracts/test-utils/src/log_decoder.ts index 54666ea5f0..f380f5cef2 100644 --- a/contracts/test-utils/src/log_decoder.ts +++ b/contracts/test-utils/src/log_decoder.ts @@ -37,7 +37,7 @@ export class LogDecoder { public decodeLogOrThrow(log: LogEntry): LogWithDecodedArgs | RawLog { const logWithDecodedArgsOrLog = this._abiDecoder.tryToDecodeLogOrNoop(log); // tslint:disable-next-line:no-unnecessary-type-assertion - if (_.isUndefined((logWithDecodedArgsOrLog as LogWithDecodedArgs).args)) { + if ((logWithDecodedArgsOrLog as LogWithDecodedArgs).args === undefined) { throw new Error(`Unable to decode log: ${JSON.stringify(log)}`); } LogDecoder.wrapLogBigNumbers(logWithDecodedArgsOrLog); diff --git a/contracts/test-utils/src/profiler.ts b/contracts/test-utils/src/profiler.ts index 7f51c384f6..336df6fbce 100644 --- a/contracts/test-utils/src/profiler.ts +++ b/contracts/test-utils/src/profiler.ts @@ -1,6 +1,5 @@ import { devConstants } from '@0x/dev-utils'; import { ProfilerSubprovider, SolCompilerArtifactAdapter } from '@0x/sol-profiler'; -import * as _ from 'lodash'; let profilerSubprovider: ProfilerSubprovider; @@ -12,7 +11,7 @@ export const profiler = { profiler.getProfilerSubproviderSingleton().stop(); }, getProfilerSubproviderSingleton(): ProfilerSubprovider { - if (_.isUndefined(profilerSubprovider)) { + if (profilerSubprovider === undefined) { profilerSubprovider = profiler._getProfilerSubprovider(); } return profilerSubprovider; diff --git a/contracts/test-utils/src/revert_trace.ts b/contracts/test-utils/src/revert_trace.ts index 3a57788591..df9b2def00 100644 --- a/contracts/test-utils/src/revert_trace.ts +++ b/contracts/test-utils/src/revert_trace.ts @@ -1,12 +1,11 @@ import { devConstants } from '@0x/dev-utils'; import { RevertTraceSubprovider, SolCompilerArtifactAdapter } from '@0x/sol-trace'; -import * as _ from 'lodash'; let revertTraceSubprovider: RevertTraceSubprovider; export const revertTrace = { getRevertTraceSubproviderSingleton(): RevertTraceSubprovider { - if (_.isUndefined(revertTraceSubprovider)) { + if (revertTraceSubprovider === undefined) { revertTraceSubprovider = revertTrace._getRevertTraceSubprovider(); } return revertTraceSubprovider; diff --git a/contracts/utils/CHANGELOG.json b/contracts/utils/CHANGELOG.json index d95a53890b..84f9f8f3e2 100644 --- a/contracts/utils/CHANGELOG.json +++ b/contracts/utils/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "3.1.1", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "version": "3.1.0", "changes": [ diff --git a/contracts/utils/CHANGELOG.md b/contracts/utils/CHANGELOG.md index e48dd2c08d..2d89a06584 100644 --- a/contracts/utils/CHANGELOG.md +++ b/contracts/utils/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.1.1 - _April 11, 2019_ + + * Dependencies updated + ## v3.1.0 - _March 21, 2019_ * Added `startProviderEngine` to `providerUtils`. Preventing excess block polling (#1695) diff --git a/contracts/utils/package.json b/contracts/utils/package.json index 152738c841..c8aaa46a95 100644 --- a/contracts/utils/package.json +++ b/contracts/utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-utils", - "version": "3.1.0", + "version": "3.1.1", "engines": { "node": ">=6.12" }, @@ -24,6 +24,7 @@ "clean": "shx rm -rf lib generated-artifacts generated-wrappers", "generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output generated-wrappers --backend ethers", "lint": "tslint --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", + "fix": "tslint --fix --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", "coverage:report:text": "istanbul report text", "coverage:report:html": "istanbul report html && open coverage/index.html", "profiler:report:html": "istanbul report html && open coverage/index.html", @@ -46,12 +47,12 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/utils/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.8", - "@0x/contracts-gen": "^1.0.7", - "@0x/contracts-test-utils": "^3.1.1", - "@0x/dev-utils": "^2.2.0", - "@0x/sol-compiler": "^3.1.5", - "@0x/tslint-config": "^3.0.0", + "@0x/abi-gen": "^2.0.9", + "@0x/contracts-gen": "^1.0.8", + "@0x/contracts-test-utils": "^3.1.2", + "@0x/dev-utils": "^2.2.1", + "@0x/sol-compiler": "^3.1.6", + "@0x/tslint-config": "^3.0.1", "@types/bn.js": "^4.11.0", "@types/lodash": "4.14.104", "@types/node": "*", @@ -68,14 +69,14 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.4", - "@0x/order-utils": "^7.1.1", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", + "@0x/base-contract": "^5.0.5", + "@0x/order-utils": "^7.2.0", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", "bn.js": "^4.11.8", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "ethereumjs-util": "^5.1.1", "lodash": "^4.17.11" }, diff --git a/package.json b/package.json index 5522d57d28..edcbcaf0e9 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ ], "scripts": { "deps_versions:ci": "node ./packages/monorepo-scripts/lib/deps_versions.js", + "fix": "wsrun fix $PKG --fast-exit --parallel --exclude-missing", "ganache": "ganache-cli -p 8545 --gasLimit 10000000 --networkId 50 -m \"${npm_package_config_mnemonic}\"", "prettier": "prettier --write '**/*.{ts,tsx,json,md}' --config .prettierrc", "prettier:ci": "prettier --list-different '**/*.{ts,tsx,json,md}' --config .prettierrc", diff --git a/packages/0x.js/CHANGELOG.json b/packages/0x.js/CHANGELOG.json index dbd19a48f2..6757774a86 100644 --- a/packages/0x.js/CHANGELOG.json +++ b/packages/0x.js/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "6.0.6", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "6.0.5", diff --git a/packages/0x.js/CHANGELOG.md b/packages/0x.js/CHANGELOG.md index f835026ef1..eded8fd9ea 100644 --- a/packages/0x.js/CHANGELOG.md +++ b/packages/0x.js/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v6.0.6 - _April 11, 2019_ + + * Dependencies updated + ## v6.0.5 - _March 21, 2019_ * Dependencies updated diff --git a/packages/0x.js/package.json b/packages/0x.js/package.json index d447a918c9..583c45b097 100644 --- a/packages/0x.js/package.json +++ b/packages/0x.js/package.json @@ -1,6 +1,6 @@ { "name": "0x.js", - "version": "6.0.5", + "version": "6.0.6", "engines": { "node": ">=6.12" }, @@ -19,6 +19,7 @@ "build:ci": "yarn build:commonjs", "build:all": "run-p build:umd:prod build:commonjs", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "test:circleci": "run-s test:coverage", "rebuild_and_test": "run-s build test", "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", @@ -42,11 +43,11 @@ }, "license": "Apache-2.0", "devDependencies": { - "@0x/abi-gen-wrappers": "^4.1.0", - "@0x/contract-addresses": "^2.3.0", - "@0x/dev-utils": "^2.2.0", - "@0x/migrations": "^4.1.0", - "@0x/tslint-config": "^3.0.0", + "@0x/abi-gen-wrappers": "^4.2.0", + "@0x/contract-addresses": "^2.3.1", + "@0x/dev-utils": "^2.2.1", + "@0x/migrations": "^4.1.1", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", "@types/node": "*", @@ -72,18 +73,18 @@ "webpack": "^4.20.2" }, "dependencies": { - "@0x/assert": "^2.0.8", - "@0x/base-contract": "^5.0.4", - "@0x/contract-wrappers": "^8.0.5", - "@0x/order-utils": "^7.1.1", - "@0x/order-watcher": "^4.0.5", - "@0x/subproviders": "^4.0.4", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", + "@0x/assert": "^2.0.9", + "@0x/base-contract": "^5.0.5", + "@0x/contract-wrappers": "^9.0.0", + "@0x/order-utils": "^7.2.0", + "@0x/order-watcher": "^4.0.6", + "@0x/subproviders": "^4.0.5", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", "@types/web3-provider-engine": "^14.0.0", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "ethers": "~4.0.4", "lodash": "^4.17.11", "web3-provider-engine": "14.0.6" diff --git a/packages/abi-gen-templates/CHANGELOG.json b/packages/abi-gen-templates/CHANGELOG.json index b30017b54d..5f15f7af69 100644 --- a/packages/abi-gen-templates/CHANGELOG.json +++ b/packages/abi-gen-templates/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.0.2", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1551130135, "version": "2.0.1", diff --git a/packages/abi-gen-templates/CHANGELOG.md b/packages/abi-gen-templates/CHANGELOG.md index bbd04f8ac8..7089e273be 100644 --- a/packages/abi-gen-templates/CHANGELOG.md +++ b/packages/abi-gen-templates/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.2 - _April 11, 2019_ + + * Dependencies updated + ## v2.0.1 - _February 25, 2019_ * Dependencies updated diff --git a/packages/abi-gen-templates/contract.handlebars b/packages/abi-gen-templates/contract.handlebars index bb557eff55..f2ab7de484 100644 --- a/packages/abi-gen-templates/contract.handlebars +++ b/packages/abi-gen-templates/contract.handlebars @@ -7,7 +7,6 @@ import { BigNumber, classUtils, logUtils, providerUtils } from '@0x/utils'; import { SimpleContractArtifact } from '@0x/types'; import { Web3Wrapper } from '@0x/web3-wrapper'; import * as ethers from 'ethers'; -import * as _ from 'lodash'; // tslint:enable:no-unused-variable {{#if events}} @@ -46,7 +45,7 @@ export class {{contractName}}Contract extends BaseContract { txDefaults: Partial, {{> typed_params inputs=ctor.inputs}} ): Promise<{{contractName}}Contract> { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-templates/package.json b/packages/abi-gen-templates/package.json index 1e84d28d46..caac100c3f 100644 --- a/packages/abi-gen-templates/package.json +++ b/packages/abi-gen-templates/package.json @@ -1,6 +1,6 @@ { "name": "@0x/abi-gen-templates", - "version": "2.0.1", + "version": "2.0.2", "engines": { "node": ">=6.12" }, diff --git a/packages/abi-gen-wrappers/CHANGELOG.json b/packages/abi-gen-wrappers/CHANGELOG.json index 7184de7134..375db7586e 100644 --- a/packages/abi-gen-wrappers/CHANGELOG.json +++ b/packages/abi-gen-wrappers/CHANGELOG.json @@ -6,7 +6,8 @@ "note": "Added IAssetProxy wrapper", "pr": 1714 } - ] + ], + "timestamp": 1554997931 }, { "version": "4.1.0", diff --git a/packages/abi-gen-wrappers/CHANGELOG.md b/packages/abi-gen-wrappers/CHANGELOG.md index 679d6fe678..1c4ca6477c 100644 --- a/packages/abi-gen-wrappers/CHANGELOG.md +++ b/packages/abi-gen-wrappers/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.2.0 - _April 11, 2019_ + + * Added IAssetProxy wrapper (#1714) + ## v4.1.0 - _March 21, 2019_ * Add Coordinator and CoordinatorRegistry contract wrappers (#1689) diff --git a/packages/abi-gen-wrappers/package.json b/packages/abi-gen-wrappers/package.json index e21122fe1d..1c2cc2f898 100644 --- a/packages/abi-gen-wrappers/package.json +++ b/packages/abi-gen-wrappers/package.json @@ -1,6 +1,6 @@ { "name": "@0x/abi-gen-wrappers", - "version": "4.1.0", + "version": "4.2.0", "engines": { "node": ">=6.12" }, @@ -13,6 +13,7 @@ "build": "yarn pre_build && tsc -b", "build:ci": "yarn build", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "pre_build": "yarn generate_contract_wrappers", "clean": "shx rm -rf lib wrappers", "generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output src/generated-wrappers --backend ethers" @@ -30,19 +31,19 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/abi-gen-wrappers/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.8", - "@0x/abi-gen-templates": "^2.0.1", - "@0x/tslint-config": "^3.0.0", - "@0x/types": "^2.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", - "ethereum-types": "^2.1.1", + "@0x/abi-gen": "^2.0.9", + "@0x/abi-gen-templates": "^2.0.2", + "@0x/tslint-config": "^3.0.1", + "@0x/types": "^2.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", + "ethereum-types": "^2.1.2", "ethers": "~4.0.4", "lodash": "^4.17.11", "shx": "^0.2.2" }, "dependencies": { - "@0x/base-contract": "^5.0.4" + "@0x/base-contract": "^5.0.5" }, "publishConfig": { "access": "public" diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/asset_proxy_owner.ts b/packages/abi-gen-wrappers/src/generated-wrappers/asset_proxy_owner.ts index 7ca1490dc2..0fc4ab116d 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/asset_proxy_owner.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/asset_proxy_owner.ts @@ -1426,7 +1426,7 @@ export class AssetProxyOwnerContract extends BaseContract { _required: BigNumber, _secondsTimeLocked: BigNumber, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/coordinator.ts b/packages/abi-gen-wrappers/src/generated-wrappers/coordinator.ts index c102596d12..0a941d36fd 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/coordinator.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/coordinator.ts @@ -263,7 +263,7 @@ export class CoordinatorContract extends BaseContract { txDefaults: Partial, _exchange: string, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/coordinator_registry.ts b/packages/abi-gen-wrappers/src/generated-wrappers/coordinator_registry.ts index 461849d718..814ecb1cf2 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/coordinator_registry.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/coordinator_registry.ts @@ -136,7 +136,7 @@ export class CoordinatorRegistryContract extends BaseContract { supportedProvider: SupportedProvider, txDefaults: Partial, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/dummy_erc20_token.ts b/packages/abi-gen-wrappers/src/generated-wrappers/dummy_erc20_token.ts index 3ccec7e161..0580a80905 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/dummy_erc20_token.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/dummy_erc20_token.ts @@ -760,7 +760,7 @@ export class DummyERC20TokenContract extends BaseContract { _decimals: BigNumber, _totalSupply: BigNumber, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/dummy_erc721_token.ts b/packages/abi-gen-wrappers/src/generated-wrappers/dummy_erc721_token.ts index 235ea9b3b1..1198c5cc09 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/dummy_erc721_token.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/dummy_erc721_token.ts @@ -950,7 +950,7 @@ export class DummyERC721TokenContract extends BaseContract { _name: string, _symbol: string, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/dutch_auction.ts b/packages/abi-gen-wrappers/src/generated-wrappers/dutch_auction.ts index 36c9816ada..e8337009b0 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/dutch_auction.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/dutch_auction.ts @@ -200,7 +200,7 @@ export class DutchAuctionContract extends BaseContract { txDefaults: Partial, _exchange: string, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/erc20_proxy.ts b/packages/abi-gen-wrappers/src/generated-wrappers/erc20_proxy.ts index c039a1e179..b9db716884 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/erc20_proxy.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/erc20_proxy.ts @@ -486,7 +486,7 @@ export class ERC20ProxyContract extends BaseContract { supportedProvider: SupportedProvider, txDefaults: Partial, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/erc20_token.ts b/packages/abi-gen-wrappers/src/generated-wrappers/erc20_token.ts index 8d6b527350..9b4b656875 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/erc20_token.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/erc20_token.ts @@ -389,7 +389,7 @@ export class ERC20TokenContract extends BaseContract { supportedProvider: SupportedProvider, txDefaults: Partial, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/erc721_proxy.ts b/packages/abi-gen-wrappers/src/generated-wrappers/erc721_proxy.ts index e2e1ce1b8c..7730831e54 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/erc721_proxy.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/erc721_proxy.ts @@ -486,7 +486,7 @@ export class ERC721ProxyContract extends BaseContract { supportedProvider: SupportedProvider, txDefaults: Partial, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/erc721_token.ts b/packages/abi-gen-wrappers/src/generated-wrappers/erc721_token.ts index ee68f3c0e2..98d733eaf2 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/erc721_token.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/erc721_token.ts @@ -624,7 +624,7 @@ export class ERC721TokenContract extends BaseContract { supportedProvider: SupportedProvider, txDefaults: Partial, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/exchange.ts b/packages/abi-gen-wrappers/src/generated-wrappers/exchange.ts index ce86701b48..eb5f6bfc64 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/exchange.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/exchange.ts @@ -2229,7 +2229,7 @@ export class ExchangeContract extends BaseContract { txDefaults: Partial, _zrxAssetData: string, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/forwarder.ts b/packages/abi-gen-wrappers/src/generated-wrappers/forwarder.ts index e420a70b46..088f547f8b 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/forwarder.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/forwarder.ts @@ -461,7 +461,7 @@ export class ForwarderContract extends BaseContract { _zrxAssetData: string, _wethAssetData: string, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/i_asset_proxy.ts b/packages/abi-gen-wrappers/src/generated-wrappers/i_asset_proxy.ts index 08a1c454db..66477e9165 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/i_asset_proxy.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/i_asset_proxy.ts @@ -488,7 +488,7 @@ export class IAssetProxyContract extends BaseContract { supportedProvider: SupportedProvider, txDefaults: Partial, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/i_validator.ts b/packages/abi-gen-wrappers/src/generated-wrappers/i_validator.ts index 9e77932a4c..6506975f74 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/i_validator.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/i_validator.ts @@ -52,7 +52,7 @@ export class IValidatorContract extends BaseContract { supportedProvider: SupportedProvider, txDefaults: Partial, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/i_wallet.ts b/packages/abi-gen-wrappers/src/generated-wrappers/i_wallet.ts index ebb330dcf5..1bb69eed3c 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/i_wallet.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/i_wallet.ts @@ -50,7 +50,7 @@ export class IWalletContract extends BaseContract { supportedProvider: SupportedProvider, txDefaults: Partial, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/multi_asset_proxy.ts b/packages/abi-gen-wrappers/src/generated-wrappers/multi_asset_proxy.ts index f331a8556b..8d12bcb3fe 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/multi_asset_proxy.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/multi_asset_proxy.ts @@ -625,7 +625,7 @@ export class MultiAssetProxyContract extends BaseContract { supportedProvider: SupportedProvider, txDefaults: Partial, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/order_validator.ts b/packages/abi-gen-wrappers/src/generated-wrappers/order_validator.ts index 5c08a6fb7b..132a2191f7 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/order_validator.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/order_validator.ts @@ -232,7 +232,7 @@ export class OrderValidatorContract extends BaseContract { _exchange: string, _zrxAssetData: string, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/weth9.ts b/packages/abi-gen-wrappers/src/generated-wrappers/weth9.ts index 401ed43fff..83a8523fdc 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/weth9.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/weth9.ts @@ -624,7 +624,7 @@ export class WETH9Contract extends BaseContract { supportedProvider: SupportedProvider, txDefaults: Partial, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/zrx_token.ts b/packages/abi-gen-wrappers/src/generated-wrappers/zrx_token.ts index 079f0836b0..7b5ad30880 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/zrx_token.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/zrx_token.ts @@ -467,7 +467,7 @@ export class ZRXTokenContract extends BaseContract { supportedProvider: SupportedProvider, txDefaults: Partial, ): Promise { - if (_.isUndefined(artifact.compilerOutput)) { + if (artifact.compilerOutput === undefined) { throw new Error('Compiler output not found in the artifact file'); } const provider = providerUtils.standardizeOrThrow(supportedProvider); diff --git a/packages/abi-gen/CHANGELOG.json b/packages/abi-gen/CHANGELOG.json index df099913d5..09e208a9d2 100644 --- a/packages/abi-gen/CHANGELOG.json +++ b/packages/abi-gen/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.0.9", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "2.0.8", diff --git a/packages/abi-gen/CHANGELOG.md b/packages/abi-gen/CHANGELOG.md index 09d21f2411..f7bbc7cac1 100644 --- a/packages/abi-gen/CHANGELOG.md +++ b/packages/abi-gen/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.9 - _April 11, 2019_ + + * Dependencies updated + ## v2.0.8 - _March 21, 2019_ * Dependencies updated diff --git a/packages/abi-gen/package.json b/packages/abi-gen/package.json index 85a6203e63..3c62fc8e07 100644 --- a/packages/abi-gen/package.json +++ b/packages/abi-gen/package.json @@ -1,6 +1,6 @@ { "name": "@0x/abi-gen", - "version": "2.0.8", + "version": "2.0.9", "engines": { "node": ">=6.12" }, @@ -9,6 +9,7 @@ "types": "lib/src/index.d.ts", "scripts": { "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "clean": "shx rm -rf lib", "build": "tsc -b", "build:ci": "yarn build", @@ -31,10 +32,10 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/abi-gen/README.md", "dependencies": { - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", "chalk": "^2.3.0", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "glob": "^7.1.2", "handlebars": "^4.0.11", "lodash": "^4.17.11", @@ -45,7 +46,7 @@ "yargs": "^10.0.3" }, "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/glob": "5.0.35", "@types/handlebars": "^4.0.36", "@types/mkdirp": "^0.5.2", diff --git a/packages/abi-gen/src/index.ts b/packages/abi-gen/src/index.ts index 6e0ca2c875..7374f9b07c 100644 --- a/packages/abi-gen/src/index.ts +++ b/packages/abi-gen/src/index.ts @@ -92,12 +92,12 @@ for (const abiFileName of abiFileNames) { let ABI; if (_.isArray(parsedContent)) { ABI = parsedContent; // ABI file - } else if (!_.isUndefined(parsedContent.abi)) { + } else if (parsedContent.abi !== undefined) { ABI = parsedContent.abi; // Truffle artifact - } else if (!_.isUndefined(parsedContent.compilerOutput.abi)) { + } else if (parsedContent.compilerOutput.abi !== undefined) { ABI = parsedContent.compilerOutput.abi; // 0x artifact } - if (_.isUndefined(ABI)) { + if (ABI === undefined) { logUtils.log(`${chalk.red(`ABI not found in ${abiFileName}.`)}`); logUtils.log( `Please make sure your ABI file is either an array with ABI entries or a truffle artifact or 0x sol-compiler artifact`, @@ -114,7 +114,7 @@ for (const abiFileName of abiFileNames) { } let ctor = ABI.find((abi: AbiDefinition) => abi.type === ABI_TYPE_CONSTRUCTOR) as ConstructorAbi; - if (_.isUndefined(ctor)) { + if (ctor === undefined) { ctor = utils.getEmptyConstructor(); // The constructor exists, but it's implicit in JSON's ABI definition } diff --git a/packages/assert/CHANGELOG.json b/packages/assert/CHANGELOG.json index 84d233ab9f..6299c81ad8 100644 --- a/packages/assert/CHANGELOG.json +++ b/packages/assert/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.0.9", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "2.0.8", diff --git a/packages/assert/CHANGELOG.md b/packages/assert/CHANGELOG.md index 1201cb0f65..5f522c296f 100644 --- a/packages/assert/CHANGELOG.md +++ b/packages/assert/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.9 - _April 11, 2019_ + + * Dependencies updated + ## v2.0.8 - _March 21, 2019_ * Dependencies updated diff --git a/packages/assert/package.json b/packages/assert/package.json index c78c409c57..e08bcab186 100644 --- a/packages/assert/package.json +++ b/packages/assert/package.json @@ -1,6 +1,6 @@ { "name": "@0x/assert", - "version": "2.0.8", + "version": "2.0.9", "engines": { "node": ">=6.12" }, @@ -12,6 +12,7 @@ "build:ci": "yarn build", "clean": "shx rm -rf lib test_temp", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "run_mocha": "mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js --exit", "test": "yarn run_mocha", "rebuild_and_test": "run-s clean build test", @@ -29,7 +30,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/assert/README.md", "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", "@types/valid-url": "^1.0.2", @@ -44,9 +45,9 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/json-schemas": "^3.0.8", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", + "@0x/json-schemas": "^3.0.9", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", "lodash": "^4.17.11", "valid-url": "^1.0.9" }, diff --git a/packages/assert/src/index.ts b/packages/assert/src/index.ts index 24004d37aa..257ac8da58 100644 --- a/packages/assert/src/index.ts +++ b/packages/assert/src/index.ts @@ -65,11 +65,11 @@ export const assert = { assert.assert(isWeb3Provider, assert.typeAssertionMessage(variableName, 'Provider', value)); }, doesConformToSchema(variableName: string, value: any, schema: Schema, subSchemas?: Schema[]): void { - if (_.isUndefined(value)) { + if (value === undefined) { throw new Error(`${variableName} can't be undefined`); } const schemaValidator = new SchemaValidator(); - if (!_.isUndefined(subSchemas)) { + if (subSchemas !== undefined) { _.map(subSchemas, schemaValidator.addSchema.bind(schemaValidator)); } const validationResult = schemaValidator.validate(value, schema); @@ -80,11 +80,11 @@ Validation errors: ${validationResult.errors.join(', ')}`; assert.assert(!hasValidationErrors, msg); }, isWebUri(variableName: string, value: any): void { - const isValidUrl = !_.isUndefined(validUrl.isWebUri(value)); + const isValidUrl = validUrl.isWebUri(value) !== undefined; assert.assert(isValidUrl, assert.typeAssertionMessage(variableName, 'web uri', value)); }, isUri(variableName: string, value: any): void { - const isValidUri = !_.isUndefined(validUrl.isUri(value)); + const isValidUri = validUrl.isUri(value) !== undefined; assert.assert(isValidUri, assert.typeAssertionMessage(variableName, 'uri', value)); }, assert(condition: boolean, message: string): void { diff --git a/packages/asset-buyer/CHANGELOG.json b/packages/asset-buyer/CHANGELOG.json index a688bb8eb1..b2b7526bec 100644 --- a/packages/asset-buyer/CHANGELOG.json +++ b/packages/asset-buyer/CHANGELOG.json @@ -6,7 +6,8 @@ "note": "Moved order_utils into `@0x/order-utils` package as `orderCalculationUtils`", "pr": 1714 } - ] + ], + "timestamp": 1554997931 }, { "timestamp": 1553183790, diff --git a/packages/asset-buyer/CHANGELOG.md b/packages/asset-buyer/CHANGELOG.md index 8fb898609e..d60024e990 100644 --- a/packages/asset-buyer/CHANGELOG.md +++ b/packages/asset-buyer/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v6.1.0 - _April 11, 2019_ + + * Moved order_utils into `@0x/order-utils` package as `orderCalculationUtils` (#1714) + ## v6.0.5 - _March 21, 2019_ * Dependencies updated diff --git a/packages/asset-buyer/package.json b/packages/asset-buyer/package.json index 6b26434eff..8590893ebf 100644 --- a/packages/asset-buyer/package.json +++ b/packages/asset-buyer/package.json @@ -1,6 +1,6 @@ { "name": "@0x/asset-buyer", - "version": "6.0.5", + "version": "6.1.0", "engines": { "node": ">=6.12" }, @@ -11,6 +11,7 @@ "build": "yarn tsc -b", "build:ci": "yarn build", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "test": "yarn run_mocha", "rebuild_and_test": "run-s clean build test", "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", @@ -36,21 +37,21 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/asset-buyer/README.md", "dependencies": { - "@0x/assert": "^2.0.8", - "@0x/connect": "^5.0.4", - "@0x/contract-wrappers": "^8.0.5", - "@0x/json-schemas": "^3.0.8", - "@0x/order-utils": "^7.1.1", - "@0x/subproviders": "^4.0.4", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", - "ethereum-types": "^2.1.1", + "@0x/assert": "^2.0.9", + "@0x/connect": "^5.0.5", + "@0x/contract-wrappers": "^9.0.0", + "@0x/json-schemas": "^3.0.9", + "@0x/order-utils": "^7.2.0", + "@0x/subproviders": "^4.0.5", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", + "ethereum-types": "^2.1.2", "lodash": "^4.17.11" }, "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", "@types/node": "*", diff --git a/packages/asset-buyer/src/asset_buyer.ts b/packages/asset-buyer/src/asset_buyer.ts index a5799eec15..eb9c1f2036 100644 --- a/packages/asset-buyer/src/asset_buyer.ts +++ b/packages/asset-buyer/src/asset_buyer.ts @@ -234,29 +234,29 @@ export class AssetBuyer { options, ); assert.isValidBuyQuote('buyQuote', buyQuote); - if (!_.isUndefined(ethAmount)) { + if (ethAmount !== undefined) { assert.isBigNumber('ethAmount', ethAmount); } - if (!_.isUndefined(takerAddress)) { + if (takerAddress !== undefined) { assert.isETHAddressHex('takerAddress', takerAddress); } assert.isETHAddressHex('feeRecipient', feeRecipient); - if (!_.isUndefined(gasLimit)) { + if (gasLimit !== undefined) { assert.isNumber('gasLimit', gasLimit); } - if (!_.isUndefined(gasPrice)) { + if (gasPrice !== undefined) { assert.isBigNumber('gasPrice', gasPrice); } const { orders, feeOrders, feePercentage, assetBuyAmount, worstCaseQuoteInfo } = buyQuote; // if no takerAddress is provided, try to get one from the provider let finalTakerAddress; - if (!_.isUndefined(takerAddress)) { + if (takerAddress !== undefined) { finalTakerAddress = takerAddress; } else { const web3Wrapper = new Web3Wrapper(this.provider); const availableAddresses = await web3Wrapper.getAvailableAddressesAsync(); const firstAvailableAddress = _.head(availableAddresses); - if (!_.isUndefined(firstAvailableAddress)) { + if (firstAvailableAddress !== undefined) { finalTakerAddress = firstAvailableAddress; } else { throw new Error(AssetBuyerError.NoAddressAvailable); @@ -314,7 +314,7 @@ export class AssetBuyer { // we are forced to OR // we have some last refresh time AND that time was sufficiently long ago const shouldRefresh = - _.isUndefined(ordersEntryIfExists) || + ordersEntryIfExists === undefined || shouldForceOrderRefresh || // tslint:disable:restrict-plus-operands ordersEntryIfExists.lastRefreshTime + this.orderRefreshIntervalMs < Date.now(); diff --git a/packages/asset-buyer/src/utils/assert.ts b/packages/asset-buyer/src/utils/assert.ts index fcf9b0d0e3..464ecdc3fb 100644 --- a/packages/asset-buyer/src/utils/assert.ts +++ b/packages/asset-buyer/src/utils/assert.ts @@ -1,6 +1,5 @@ import { assert as sharedAssert } from '@0x/assert'; import { schemas } from '@0x/json-schemas'; -import * as _ from 'lodash'; import { BuyQuote, BuyQuoteInfo, OrderProvider, OrderProviderRequest } from '../types'; @@ -13,7 +12,7 @@ export const assert = { assert.isValidBuyQuoteInfo(`${variableName}.bestCaseQuoteInfo`, buyQuote.bestCaseQuoteInfo); assert.isValidBuyQuoteInfo(`${variableName}.worstCaseQuoteInfo`, buyQuote.worstCaseQuoteInfo); sharedAssert.isBigNumber(`${variableName}.assetBuyAmount`, buyQuote.assetBuyAmount); - if (!_.isUndefined(buyQuote.feePercentage)) { + if (buyQuote.feePercentage !== undefined) { sharedAssert.isNumber(`${variableName}.feePercentage`, buyQuote.feePercentage); } }, diff --git a/packages/asset-buyer/src/utils/order_provider_response_processor.ts b/packages/asset-buyer/src/utils/order_provider_response_processor.ts index 2dd0484990..cb25f98701 100644 --- a/packages/asset-buyer/src/utils/order_provider_response_processor.ts +++ b/packages/asset-buyer/src/utils/order_provider_response_processor.ts @@ -41,7 +41,7 @@ export const orderProviderResponseProcessor = { // set the orders to be sorted equal to the filtered orders let unsortedOrders = filteredOrders; // if an orderValidator is provided, use on chain information to calculate remaining fillable makerAsset amounts - if (!_.isUndefined(orderValidator)) { + if (orderValidator !== undefined) { const takerAddresses = _.map(filteredOrders, () => constants.NULL_ADDRESS); try { const ordersAndTradersInfo = await orderValidator.getOrdersAndTradersInfoAsync( diff --git a/packages/base-contract/CHANGELOG.json b/packages/base-contract/CHANGELOG.json index cdebb7a06a..12c9afce85 100644 --- a/packages/base-contract/CHANGELOG.json +++ b/packages/base-contract/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "5.0.5", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "5.0.4", diff --git a/packages/base-contract/CHANGELOG.md b/packages/base-contract/CHANGELOG.md index 37db8b8f0e..71ec85ade3 100644 --- a/packages/base-contract/CHANGELOG.md +++ b/packages/base-contract/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v5.0.5 - _April 11, 2019_ + + * Dependencies updated + ## v5.0.4 - _March 21, 2019_ * Dependencies updated diff --git a/packages/base-contract/package.json b/packages/base-contract/package.json index 9d54c8faec..cec227f670 100644 --- a/packages/base-contract/package.json +++ b/packages/base-contract/package.json @@ -1,6 +1,6 @@ { "name": "@0x/base-contract", - "version": "5.0.4", + "version": "5.0.5", "engines": { "node": ">=6.12" }, @@ -17,7 +17,8 @@ "run_mocha": "mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js --bail --exit", "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", - "lint": "tslint --format stylish --project ." + "lint": "tslint --format stylish --project .", + "fix": "tslint --format stylish --fix --project ." }, "license": "Apache-2.0", "repository": { @@ -29,7 +30,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/base-contract/README.md", "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "chai": "^4.0.1", "make-promises-safe": "^1.1.0", @@ -40,10 +41,10 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", - "ethereum-types": "^2.1.1", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", + "ethereum-types": "^2.1.2", "ethers": "~4.0.4", "lodash": "^4.17.11" }, diff --git a/packages/base-contract/src/index.ts b/packages/base-contract/src/index.ts index a8bdaa4078..9eb6cdcb2f 100644 --- a/packages/base-contract/src/index.ts +++ b/packages/base-contract/src/index.ts @@ -51,7 +51,7 @@ export class BaseContract { (abiDefinition: AbiDefinition) => abiDefinition.type === AbiType.Constructor, // tslint:disable-next-line:no-unnecessary-type-assertion ) as ConstructorAbi | undefined; - if (!_.isUndefined(constructorAbiIfExists)) { + if (constructorAbiIfExists !== undefined) { return constructorAbiIfExists; } else { // If the constructor is not explicitly defined, it won't be included in the ABI. It is @@ -79,7 +79,7 @@ export class BaseContract { ...removeUndefinedProperties(txDefaults), ...removeUndefinedProperties(txData), }; - if (_.isUndefined(txDataWithDefaults.gas) && !_.isUndefined(estimateGasAsync)) { + if (txDataWithDefaults.gas === undefined && estimateGasAsync !== undefined) { txDataWithDefaults.gas = await estimateGasAsync(txDataWithDefaults); } return txDataWithDefaults; @@ -122,7 +122,7 @@ export class BaseContract { } protected _lookupAbiEncoder(functionSignature: string): AbiEncoder.Method { const abiEncoder = this._abiEncoderByFunctionSignature[functionSignature]; - if (_.isUndefined(abiEncoder)) { + if (abiEncoder === undefined) { throw new Error(`Failed to lookup method with function signature '${functionSignature}'`); } return abiEncoder; diff --git a/packages/connect/CHANGELOG.json b/packages/connect/CHANGELOG.json index 694a3dfb16..a2e68e132c 100644 --- a/packages/connect/CHANGELOG.json +++ b/packages/connect/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "5.0.5", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "5.0.4", diff --git a/packages/connect/CHANGELOG.md b/packages/connect/CHANGELOG.md index 7d6b718eaa..60b1ee4e09 100644 --- a/packages/connect/CHANGELOG.md +++ b/packages/connect/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v5.0.5 - _April 11, 2019_ + + * Dependencies updated + ## v5.0.4 - _March 21, 2019_ * Dependencies updated diff --git a/packages/connect/package.json b/packages/connect/package.json index 5c170209a7..45ca5f1992 100644 --- a/packages/connect/package.json +++ b/packages/connect/package.json @@ -1,6 +1,6 @@ { "name": "@0x/connect", - "version": "5.0.4", + "version": "5.0.5", "engines": { "node": ">=6.12" }, @@ -20,6 +20,7 @@ "clean": "shx rm -rf lib test_temp generated_docs", "copy_test_fixtures": "copyfiles -u 2 './test/fixtures/**/*.json' ./lib/test/fixtures", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "run_mocha": "mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js --exit", "test": "run-s copy_test_fixtures run_mocha", "rebuild_and_test": "run-s clean build test", @@ -44,12 +45,12 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/connect/README.md", "dependencies": { - "@0x/assert": "^2.0.8", - "@0x/json-schemas": "^3.0.8", - "@0x/order-utils": "^7.1.1", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", + "@0x/assert": "^2.0.9", + "@0x/json-schemas": "^3.0.9", + "@0x/order-utils": "^7.2.0", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", "lodash": "^4.17.11", "query-string": "^6.0.0", "sinon": "^4.0.0", @@ -57,7 +58,7 @@ "websocket": "^1.0.26" }, "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/fetch-mock": "^6.0.3", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", diff --git a/packages/connect/src/http_client.ts b/packages/connect/src/http_client.ts index c52425431b..2a2d2b3072 100644 --- a/packages/connect/src/http_client.ts +++ b/packages/connect/src/http_client.ts @@ -35,7 +35,7 @@ export class HttpClient implements Client { */ private static _buildQueryStringFromHttpParams(params?: object): string { // if params are undefined or empty, return an empty string - if (_.isUndefined(params) || _.isEmpty(params)) { + if (params === undefined || _.isEmpty(params)) { return ''; } // stringify the formatted object @@ -59,7 +59,7 @@ export class HttpClient implements Client { public async getAssetPairsAsync( requestOpts?: RequestOpts & AssetPairsRequestOpts & PagedRequestOpts, ): Promise { - if (!_.isUndefined(requestOpts)) { + if (requestOpts !== undefined) { assert.doesConformToSchema('requestOpts', requestOpts, schemas.assetPairsRequestOptsSchema); assert.doesConformToSchema('requestOpts', requestOpts, schemas.pagedRequestOptsSchema); assert.doesConformToSchema('requestOpts', requestOpts, schemas.requestOptsSchema); @@ -79,7 +79,7 @@ export class HttpClient implements Client { public async getOrdersAsync( requestOpts?: RequestOpts & OrdersRequestOpts & PagedRequestOpts, ): Promise { - if (!_.isUndefined(requestOpts)) { + if (requestOpts !== undefined) { assert.doesConformToSchema('requestOpts', requestOpts, schemas.ordersRequestOptsSchema); assert.doesConformToSchema('requestOpts', requestOpts, schemas.pagedRequestOptsSchema); assert.doesConformToSchema('requestOpts', requestOpts, schemas.requestOptsSchema); @@ -97,7 +97,7 @@ export class HttpClient implements Client { * @return The APIOrder that matches the supplied orderHash */ public async getOrderAsync(orderHash: string, requestOpts?: RequestOpts): Promise { - if (!_.isUndefined(requestOpts)) { + if (requestOpts !== undefined) { assert.doesConformToSchema('requestOpts', requestOpts, schemas.requestOptsSchema); } assert.doesConformToSchema('orderHash', orderHash, schemas.orderHashSchema); @@ -119,7 +119,7 @@ export class HttpClient implements Client { requestOpts?: RequestOpts & PagedRequestOpts, ): Promise { assert.doesConformToSchema('request', request, schemas.orderBookRequestSchema); - if (!_.isUndefined(requestOpts)) { + if (requestOpts !== undefined) { assert.doesConformToSchema('requestOpts', requestOpts, schemas.pagedRequestOptsSchema); assert.doesConformToSchema('requestOpts', requestOpts, schemas.requestOptsSchema); } @@ -140,7 +140,7 @@ export class HttpClient implements Client { request: OrderConfigRequest, requestOpts?: RequestOpts, ): Promise { - if (!_.isUndefined(requestOpts)) { + if (requestOpts !== undefined) { assert.doesConformToSchema('requestOpts', requestOpts, schemas.requestOptsSchema); } assert.doesConformToSchema('request', request, schemas.orderConfigRequestSchema); @@ -158,7 +158,7 @@ export class HttpClient implements Client { * @return The resulting FeeRecipientsResponse */ public async getFeeRecipientsAsync(requestOpts?: RequestOpts & PagedRequestOpts): Promise { - if (!_.isUndefined(requestOpts)) { + if (requestOpts !== undefined) { assert.doesConformToSchema('requestOpts', requestOpts, schemas.pagedRequestOptsSchema); assert.doesConformToSchema('requestOpts', requestOpts, schemas.requestOptsSchema); } diff --git a/packages/connect/src/utils/orders_channel_message_parser.ts b/packages/connect/src/utils/orders_channel_message_parser.ts index 1306a74b19..9d66f7e728 100644 --- a/packages/connect/src/utils/orders_channel_message_parser.ts +++ b/packages/connect/src/utils/orders_channel_message_parser.ts @@ -12,11 +12,11 @@ export const ordersChannelMessageParser = { const messageObj = JSON.parse(utf8Data); // ensure we have a type parameter to switch on const type: string = _.get(messageObj, 'type'); - assert.assert(!_.isUndefined(type), `Message is missing a type parameter: ${utf8Data}`); + assert.assert(type !== undefined, `Message is missing a type parameter: ${utf8Data}`); assert.isString('type', type); // ensure we have a request id for the resulting message const requestId: string = _.get(messageObj, 'requestId'); - assert.assert(!_.isUndefined(requestId), `Message is missing a requestId parameter: ${utf8Data}`); + assert.assert(requestId !== undefined, `Message is missing a requestId parameter: ${utf8Data}`); assert.isString('requestId', requestId); switch (type) { case OrdersChannelMessageTypes.Update: { diff --git a/packages/connect/src/ws_orders_channel.ts b/packages/connect/src/ws_orders_channel.ts index 70a357c618..10e546d701 100644 --- a/packages/connect/src/ws_orders_channel.ts +++ b/packages/connect/src/ws_orders_channel.ts @@ -67,7 +67,7 @@ export class WebSocketOrdersChannel implements OrdersChannel { this._client.close(); } private _handleWebSocketMessage(message: any): void { - if (_.isUndefined(message.data)) { + if (message.data === undefined) { this._handler.onError(this, new Error(`Message does not contain data. Url: ${this._client.url}`)); return; } @@ -75,7 +75,7 @@ export class WebSocketOrdersChannel implements OrdersChannel { const data = message.data; const parserResult = ordersChannelMessageParser.parse(data); const subscriptionOpts = this._subscriptionOptsMap[parserResult.requestId]; - if (_.isUndefined(subscriptionOpts)) { + if (subscriptionOpts === undefined) { this._handler.onError( this, new Error(`Message has unknown requestId. Url: ${this._client.url} Message: ${data}`), diff --git a/packages/contract-addresses/CHANGELOG.json b/packages/contract-addresses/CHANGELOG.json index f5dc2d5445..de77f8eef7 100644 --- a/packages/contract-addresses/CHANGELOG.json +++ b/packages/contract-addresses/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.3.1", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "version": "2.3.0", "changes": [ diff --git a/packages/contract-addresses/CHANGELOG.md b/packages/contract-addresses/CHANGELOG.md index 3f27fb526a..beae2f6105 100644 --- a/packages/contract-addresses/CHANGELOG.md +++ b/packages/contract-addresses/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.3.1 - _April 11, 2019_ + + * Dependencies updated + ## v2.3.0 - _March 21, 2019_ * Add addresses for coordinator extension contract and coordinator registry (#1689) diff --git a/packages/contract-addresses/package.json b/packages/contract-addresses/package.json index 1c0932580f..4423045491 100644 --- a/packages/contract-addresses/package.json +++ b/packages/contract-addresses/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contract-addresses", - "version": "2.3.0", + "version": "2.3.1", "engines": { "node": ">=6.12" }, diff --git a/packages/contract-addresses/src/index.ts b/packages/contract-addresses/src/index.ts index b5318c38d8..7715f8cdc4 100644 --- a/packages/contract-addresses/src/index.ts +++ b/packages/contract-addresses/src/index.ts @@ -102,7 +102,7 @@ const networkToAddresses: { [networkId: number]: ContractAddresses } = { * given networkId. */ export function getContractAddressesForNetworkOrThrow(networkId: NetworkId): ContractAddresses { - if (_.isUndefined(networkToAddresses[networkId])) { + if (networkToAddresses[networkId] === undefined) { throw new Error(`Unknown network id (${networkId}). No known 0x contracts have been deployed on this network.`); } return networkToAddresses[networkId]; diff --git a/packages/contract-artifacts/CHANGELOG.json b/packages/contract-artifacts/CHANGELOG.json index e3c83aa8d9..eb813dee75 100644 --- a/packages/contract-artifacts/CHANGELOG.json +++ b/packages/contract-artifacts/CHANGELOG.json @@ -6,7 +6,8 @@ "note": "Added artifact for `IAssetProxy`", "pr": 1714 } - ] + ], + "timestamp": 1554997931 }, { "version": "1.4.0", diff --git a/packages/contract-artifacts/CHANGELOG.md b/packages/contract-artifacts/CHANGELOG.md index 0896220555..72329f31ab 100644 --- a/packages/contract-artifacts/CHANGELOG.md +++ b/packages/contract-artifacts/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v1.5.0 - _April 11, 2019_ + + * Added artifact for `IAssetProxy` (#1714) + ## v1.4.0 - _March 21, 2019_ * Added artifact for `Coordinaotr` and `CoordinatorRegistry` contracts (#1689) diff --git a/packages/contract-artifacts/package.json b/packages/contract-artifacts/package.json index 3ffb4af542..2a5a2617be 100644 --- a/packages/contract-artifacts/package.json +++ b/packages/contract-artifacts/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contract-artifacts", - "version": "1.4.0", + "version": "1.5.0", "engines": { "node": ">=6.12" }, @@ -27,11 +27,11 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/contract-artifacts/README.md", "devDependencies": { - "shx": "^0.2.2", - "typescript": "3.0.1", "chai": "^4.0.1", + "lodash": "^4.17.11", "mocha": "^4.1.0", - "lodash": "^4.17.11" + "shx": "^0.2.2", + "typescript": "3.0.1" }, "publishConfig": { "access": "public" diff --git a/packages/contract-wrappers/CHANGELOG.json b/packages/contract-wrappers/CHANGELOG.json index 179e897b41..d50ece68f3 100644 --- a/packages/contract-wrappers/CHANGELOG.json +++ b/packages/contract-wrappers/CHANGELOG.json @@ -10,7 +10,8 @@ "note": "Added additional properties to `ValidateOrderFillableOpts`. An order can now be validated to fill a non-zero amount by specifying `validateRemainingOrderAmountIsFillable` as `false`. The default `true` will continue to validate the entire remaining balance is fillable.", "pr": 1714 } - ] + ], + "timestamp": 1554997931 }, { "timestamp": 1553183790, diff --git a/packages/contract-wrappers/CHANGELOG.md b/packages/contract-wrappers/CHANGELOG.md index b0f730b42a..5dc3c438d5 100644 --- a/packages/contract-wrappers/CHANGELOG.md +++ b/packages/contract-wrappers/CHANGELOG.md @@ -5,6 +5,11 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v9.0.0 - _April 11, 2019_ + + * Added a simulation to transfer from maker to taker during `exchange.validateOrderFillableOrThrowAsync` (#1714) + * Added additional properties to `ValidateOrderFillableOpts`. An order can now be validated to fill a non-zero amount by specifying `validateRemainingOrderAmountIsFillable` as `false`. The default `true` will continue to validate the entire remaining balance is fillable. (#1714) + ## v8.0.5 - _March 21, 2019_ * Dependencies updated diff --git a/packages/contract-wrappers/package.json b/packages/contract-wrappers/package.json index 88ceb51658..83f0869e48 100644 --- a/packages/contract-wrappers/package.json +++ b/packages/contract-wrappers/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contract-wrappers", - "version": "8.0.5", + "version": "9.0.0", "description": "Smart TS wrappers for 0x smart contracts", "keywords": [ "0xproject", @@ -14,6 +14,7 @@ "build": "tsc -b", "build:ci": "yarn build", "lint": "tslint --format stylish --project . --exclude **/lib/**/*", + "fix": "tslint --fix --format stylish --project . --exclude **/lib/**/*", "test:circleci": "run-s test:coverage", "test": "yarn run_mocha", "rebuild_and_test": "run-s build test", @@ -37,12 +38,12 @@ "node": ">=6.0.0" }, "devDependencies": { - "@0x/contracts-test-utils": "^3.1.1", - "@0x/dev-utils": "^2.2.0", - "@0x/fill-scenarios": "^3.0.4", - "@0x/migrations": "^4.1.0", - "@0x/subproviders": "^4.0.4", - "@0x/tslint-config": "^3.0.0", + "@0x/contracts-test-utils": "^3.1.2", + "@0x/dev-utils": "^2.2.1", + "@0x/fill-scenarios": "^3.0.5", + "@0x/migrations": "^4.1.1", + "@0x/subproviders": "^4.0.5", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", "@types/node": "*", @@ -67,17 +68,17 @@ "web3-provider-engine": "14.0.6" }, "dependencies": { - "@0x/abi-gen-wrappers": "^4.1.0", - "@0x/assert": "^2.0.8", - "@0x/contract-addresses": "^2.3.0", - "@0x/contract-artifacts": "^1.4.0", - "@0x/json-schemas": "^3.0.8", - "@0x/order-utils": "^7.1.1", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", - "ethereum-types": "^2.1.1", + "@0x/abi-gen-wrappers": "^4.2.0", + "@0x/assert": "^2.0.9", + "@0x/contract-addresses": "^2.3.1", + "@0x/contract-artifacts": "^1.5.0", + "@0x/json-schemas": "^3.0.9", + "@0x/order-utils": "^7.2.0", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", + "ethereum-types": "^2.1.2", "ethereumjs-abi": "0.6.5", "ethereumjs-blockstream": "6.0.0", "ethereumjs-util": "^5.1.1", diff --git a/packages/contract-wrappers/src/contract_wrappers.ts b/packages/contract-wrappers/src/contract_wrappers.ts index f43ed2a5b3..c8731551be 100644 --- a/packages/contract-wrappers/src/contract_wrappers.ts +++ b/packages/contract-wrappers/src/contract_wrappers.ts @@ -101,12 +101,14 @@ export class ContractWrappers { _.forEach(artifactsArray, artifact => { this._web3Wrapper.abiDecoder.addABI(artifact.compilerOutput.abi, artifact.contractName); }); - const blockPollingIntervalMs = _.isUndefined(config.blockPollingIntervalMs) - ? constants.DEFAULT_BLOCK_POLLING_INTERVAL - : config.blockPollingIntervalMs; - const contractAddresses = _.isUndefined(config.contractAddresses) - ? _getDefaultContractAddresses(config.networkId) - : config.contractAddresses; + const blockPollingIntervalMs = + config.blockPollingIntervalMs === undefined + ? constants.DEFAULT_BLOCK_POLLING_INTERVAL + : config.blockPollingIntervalMs; + const contractAddresses = + config.contractAddresses === undefined + ? _getDefaultContractAddresses(config.networkId) + : config.contractAddresses; this.erc20Proxy = new ERC20ProxyWrapper(this._web3Wrapper, config.networkId, contractAddresses.erc20Proxy); this.erc721Proxy = new ERC721ProxyWrapper(this._web3Wrapper, config.networkId, contractAddresses.erc721Proxy); this.erc20Token = new ERC20TokenWrapper( diff --git a/packages/contract-wrappers/src/contract_wrappers/contract_wrapper.ts b/packages/contract-wrappers/src/contract_wrappers/contract_wrapper.ts index 749aaae105..de4112bc41 100644 --- a/packages/contract-wrappers/src/contract_wrappers/contract_wrapper.ts +++ b/packages/contract-wrappers/src/contract_wrappers/contract_wrapper.ts @@ -46,9 +46,8 @@ export abstract class ContractWrapper { constructor(web3Wrapper: Web3Wrapper, networkId: number, blockPollingIntervalMs?: number) { this._web3Wrapper = web3Wrapper; this._networkId = networkId; - this._blockPollingIntervalMs = _.isUndefined(blockPollingIntervalMs) - ? constants.DEFAULT_BLOCK_POLLING_INTERVAL - : blockPollingIntervalMs; + this._blockPollingIntervalMs = + blockPollingIntervalMs === undefined ? constants.DEFAULT_BLOCK_POLLING_INTERVAL : blockPollingIntervalMs; this._filters = {}; this._filterCallbacks = {}; this._blockAndLogStreamerIfExists = undefined; @@ -62,10 +61,10 @@ export abstract class ContractWrapper { }); } protected _unsubscribe(filterToken: string, err?: Error): void { - if (_.isUndefined(this._filters[filterToken])) { + if (this._filters[filterToken] === undefined) { throw new Error(ContractWrappersError.SubscriptionNotFound); } - if (!_.isUndefined(err)) { + if (err !== undefined) { const callback = this._filterCallbacks[filterToken]; callback(err, undefined); } @@ -84,7 +83,7 @@ export abstract class ContractWrapper { isVerbose: boolean = false, ): string { const filter = filterUtils.getFilter(address, eventName, indexFilterValues, abi); - if (_.isUndefined(this._blockAndLogStreamerIfExists)) { + if (this._blockAndLogStreamerIfExists === undefined) { this._startBlockAndLogStream(isVerbose); } const filterToken = filterUtils.generateUUID(); @@ -125,7 +124,7 @@ export abstract class ContractWrapper { }); } private _startBlockAndLogStream(isVerbose: boolean): void { - if (!_.isUndefined(this._blockAndLogStreamerIfExists)) { + if (this._blockAndLogStreamerIfExists !== undefined) { throw new Error(ContractWrappersError.SubscriptionAlreadyPresent); } this._blockAndLogStreamerIfExists = new BlockAndLogStreamer( @@ -176,7 +175,7 @@ export abstract class ContractWrapper { return logs as RawLogEntry[]; } private _stopBlockAndLogStream(): void { - if (_.isUndefined(this._blockAndLogStreamerIfExists)) { + if (this._blockAndLogStreamerIfExists === undefined) { throw new Error(ContractWrappersError.SubscriptionNotFound); } this._blockAndLogStreamerIfExists.unsubscribeFromOnLogAdded(this._onLogAddedSubscriptionToken as string); @@ -186,11 +185,11 @@ export abstract class ContractWrapper { } private async _reconcileBlockAsync(): Promise { const latestBlockOrNull = await this._blockstreamGetLatestBlockOrNullAsync(); - if (_.isNull(latestBlockOrNull)) { + if (latestBlockOrNull === null) { return; // noop } // We need to coerce to Block type cause Web3.Block includes types for mempool blocks - if (!_.isUndefined(this._blockAndLogStreamerIfExists)) { + if (this._blockAndLogStreamerIfExists !== undefined) { // If we clear the interval while fetching the block - this._blockAndLogStreamer will be undefined await this._blockAndLogStreamerIfExists.reconcileNewBlock(latestBlockOrNull); } diff --git a/packages/contract-wrappers/src/contract_wrappers/dutch_auction_wrapper.ts b/packages/contract-wrappers/src/contract_wrappers/dutch_auction_wrapper.ts index c1aceff470..a3e1d0ca7d 100644 --- a/packages/contract-wrappers/src/contract_wrappers/dutch_auction_wrapper.ts +++ b/packages/contract-wrappers/src/contract_wrappers/dutch_auction_wrapper.ts @@ -88,7 +88,7 @@ export class DutchAuctionWrapper extends ContractWrapper { */ public constructor(web3Wrapper: Web3Wrapper, networkId: number, address?: string) { super(web3Wrapper, networkId); - this.address = _.isUndefined(address) ? _getDefaultContractAddresses(networkId).dutchAuction : address; + this.address = address === undefined ? _getDefaultContractAddresses(networkId).dutchAuction : address; } /** * Matches the buy and sell orders at an amount given the following: the current block time, the auction @@ -167,7 +167,7 @@ export class DutchAuctionWrapper extends ContractWrapper { return auctionDetails; } private async _getDutchAuctionContractAsync(): Promise { - if (!_.isUndefined(this._dutchAuctionContractIfExists)) { + if (this._dutchAuctionContractIfExists !== undefined) { return this._dutchAuctionContractIfExists; } const contractInstance = new DutchAuctionContract( diff --git a/packages/contract-wrappers/src/contract_wrappers/erc20_proxy_wrapper.ts b/packages/contract-wrappers/src/contract_wrappers/erc20_proxy_wrapper.ts index 45460bd6d2..a0fd7a33d4 100644 --- a/packages/contract-wrappers/src/contract_wrappers/erc20_proxy_wrapper.ts +++ b/packages/contract-wrappers/src/contract_wrappers/erc20_proxy_wrapper.ts @@ -26,7 +26,7 @@ export class ERC20ProxyWrapper extends ContractWrapper { */ constructor(web3Wrapper: Web3Wrapper, networkId: number, address?: string) { super(web3Wrapper, networkId); - this.address = _.isUndefined(address) ? _getDefaultContractAddresses(networkId).erc20Proxy : address; + this.address = address === undefined ? _getDefaultContractAddresses(networkId).erc20Proxy : address; } /** * Get the 4 bytes ID of this asset proxy @@ -62,7 +62,7 @@ export class ERC20ProxyWrapper extends ContractWrapper { return authorizedAddresses; } private _getERC20ProxyContract(): ERC20ProxyContract { - if (!_.isUndefined(this._erc20ProxyContractIfExists)) { + if (this._erc20ProxyContractIfExists !== undefined) { return this._erc20ProxyContractIfExists; } const contractInstance = new ERC20ProxyContract( diff --git a/packages/contract-wrappers/src/contract_wrappers/erc20_token_wrapper.ts b/packages/contract-wrappers/src/contract_wrappers/erc20_token_wrapper.ts index cd79a0e5d3..9fcc8f70f6 100644 --- a/packages/contract-wrappers/src/contract_wrappers/erc20_token_wrapper.ts +++ b/packages/contract-wrappers/src/contract_wrappers/erc20_token_wrapper.ts @@ -427,7 +427,7 @@ export class ERC20TokenWrapper extends ContractWrapper { private async _getTokenContractAsync(tokenAddress: string): Promise { const normalizedTokenAddress = tokenAddress.toLowerCase(); let tokenContract = this._tokenContractsByAddress[normalizedTokenAddress]; - if (!_.isUndefined(tokenContract)) { + if (tokenContract !== undefined) { return tokenContract; } const contractInstance = new ERC20TokenContract( diff --git a/packages/contract-wrappers/src/contract_wrappers/erc721_proxy_wrapper.ts b/packages/contract-wrappers/src/contract_wrappers/erc721_proxy_wrapper.ts index 12758e1912..9948293950 100644 --- a/packages/contract-wrappers/src/contract_wrappers/erc721_proxy_wrapper.ts +++ b/packages/contract-wrappers/src/contract_wrappers/erc721_proxy_wrapper.ts @@ -26,7 +26,7 @@ export class ERC721ProxyWrapper extends ContractWrapper { */ constructor(web3Wrapper: Web3Wrapper, networkId: number, address?: string) { super(web3Wrapper, networkId); - this.address = _.isUndefined(address) ? _getDefaultContractAddresses(networkId).erc721Proxy : address; + this.address = address === undefined ? _getDefaultContractAddresses(networkId).erc721Proxy : address; } /** * Get the 4 bytes ID of this asset proxy @@ -62,7 +62,7 @@ export class ERC721ProxyWrapper extends ContractWrapper { return authorizedAddresses; } private _getERC721ProxyContract(): ERC721ProxyContract { - if (!_.isUndefined(this._erc721ProxyContractIfExists)) { + if (this._erc721ProxyContractIfExists !== undefined) { return this._erc721ProxyContractIfExists; } const contractInstance = new ERC721ProxyContract( diff --git a/packages/contract-wrappers/src/contract_wrappers/erc721_token_wrapper.ts b/packages/contract-wrappers/src/contract_wrappers/erc721_token_wrapper.ts index 3bc7dc8e72..4347b02633 100644 --- a/packages/contract-wrappers/src/contract_wrappers/erc721_token_wrapper.ts +++ b/packages/contract-wrappers/src/contract_wrappers/erc721_token_wrapper.ts @@ -454,7 +454,7 @@ export class ERC721TokenWrapper extends ContractWrapper { private async _getTokenContractAsync(tokenAddress: string): Promise { const normalizedTokenAddress = tokenAddress.toLowerCase(); let tokenContract = this._tokenContractsByAddress[normalizedTokenAddress]; - if (!_.isUndefined(tokenContract)) { + if (tokenContract !== undefined) { return tokenContract; } const contractInstance = new ERC721TokenContract( diff --git a/packages/contract-wrappers/src/contract_wrappers/ether_token_wrapper.ts b/packages/contract-wrappers/src/contract_wrappers/ether_token_wrapper.ts index 6093f0f956..1ce4ac5c0f 100644 --- a/packages/contract-wrappers/src/contract_wrappers/ether_token_wrapper.ts +++ b/packages/contract-wrappers/src/contract_wrappers/ether_token_wrapper.ts @@ -195,7 +195,7 @@ export class EtherTokenWrapper extends ContractWrapper { } private async _getEtherTokenContractAsync(etherTokenAddress: string): Promise { let etherTokenContract = this._etherTokenContractsByAddress[etherTokenAddress]; - if (!_.isUndefined(etherTokenContract)) { + if (etherTokenContract !== undefined) { return etherTokenContract; } const contractInstance = new WETH9Contract( diff --git a/packages/contract-wrappers/src/contract_wrappers/exchange_wrapper.ts b/packages/contract-wrappers/src/contract_wrappers/exchange_wrapper.ts index d001e08602..5122d5ebf5 100644 --- a/packages/contract-wrappers/src/contract_wrappers/exchange_wrapper.ts +++ b/packages/contract-wrappers/src/contract_wrappers/exchange_wrapper.ts @@ -77,10 +77,9 @@ export class ExchangeWrapper extends ContractWrapper { super(web3Wrapper, networkId, blockPollingIntervalMs); this._erc20TokenWrapper = erc20TokenWrapper; this._erc721TokenWrapper = erc721TokenWrapper; - this.address = _.isUndefined(address) ? _getDefaultContractAddresses(networkId).exchange : address; - this.zrxTokenAddress = _.isUndefined(zrxTokenAddress) - ? _getDefaultContractAddresses(networkId).zrxToken - : zrxTokenAddress; + this.address = address === undefined ? _getDefaultContractAddresses(networkId).exchange : address; + this.zrxTokenAddress = + zrxTokenAddress === undefined ? _getDefaultContractAddresses(networkId).zrxToken : zrxTokenAddress; } /** * Retrieve the address of an asset proxy by signature. @@ -862,7 +861,7 @@ export class ExchangeWrapper extends ContractWrapper { ): Promise { assert.isETHAddressHex('signerAddress', signerAddress); assert.isETHAddressHex('validatorAddress', validatorAddress); - if (!_.isUndefined(methodOpts)) { + if (methodOpts !== undefined) { assert.doesConformToSchema('methodOpts', methodOpts, methodOptsSchema); } const normalizedSignerAddress = signerAddress.toLowerCase(); @@ -888,7 +887,7 @@ export class ExchangeWrapper extends ContractWrapper { public async isPreSignedAsync(hash: string, signerAddress: string, methodOpts: MethodOpts = {}): Promise { assert.isHexString('hash', hash); assert.isETHAddressHex('signerAddress', signerAddress); - if (!_.isUndefined(methodOpts)) { + if (methodOpts !== undefined) { assert.doesConformToSchema('methodOpts', methodOpts, methodOptsSchema); } const exchangeInstance = await this._getExchangeContractAsync(); @@ -912,7 +911,7 @@ export class ExchangeWrapper extends ContractWrapper { @decorators.asyncZeroExErrorHandler public async isTransactionExecutedAsync(transactionHash: string, methodOpts: MethodOpts = {}): Promise { assert.isHexString('transactionHash', transactionHash); - if (!_.isUndefined(methodOpts)) { + if (methodOpts !== undefined) { assert.doesConformToSchema('methodOpts', methodOpts, methodOptsSchema); } const exchangeInstance = await this._getExchangeContractAsync(); @@ -933,7 +932,7 @@ export class ExchangeWrapper extends ContractWrapper { @decorators.asyncZeroExErrorHandler public async getOrderInfoAsync(order: Order | SignedOrder, methodOpts: MethodOpts = {}): Promise { assert.doesConformToSchema('order', order, schemas.orderSchema); - if (!_.isUndefined(methodOpts)) { + if (methodOpts !== undefined) { assert.doesConformToSchema('methodOpts', methodOpts, methodOptsSchema); } const exchangeInstance = await this._getExchangeContractAsync(); @@ -953,7 +952,7 @@ export class ExchangeWrapper extends ContractWrapper { methodOpts: MethodOpts = {}, ): Promise { assert.doesConformToSchema('orders', orders, schemas.ordersSchema); - if (!_.isUndefined(methodOpts)) { + if (methodOpts !== undefined) { assert.doesConformToSchema('methodOpts', methodOpts, methodOptsSchema); } const exchangeInstance = await this._getExchangeContractAsync(); @@ -1162,9 +1161,10 @@ export class ExchangeWrapper extends ContractWrapper { const filledCancelledFetcher = new OrderFilledCancelledFetcher(this, BlockParamLiteral.Latest); let fillableTakerAssetAmount; - const shouldValidateRemainingOrderAmountIsFillable = _.isUndefined(opts.validateRemainingOrderAmountIsFillable) - ? true - : opts.validateRemainingOrderAmountIsFillable; + const shouldValidateRemainingOrderAmountIsFillable = + opts.validateRemainingOrderAmountIsFillable === undefined + ? true + : opts.validateRemainingOrderAmountIsFillable; if (opts.expectedFillTakerTokenAmount) { // If the caller has specified a taker fill amount, we use this for all validation fillableTakerAssetAmount = opts.expectedFillTakerTokenAmount; @@ -1207,7 +1207,7 @@ export class ExchangeWrapper extends ContractWrapper { makerAssetAmount: BigNumber, takerAddress?: string, ): Promise { - const toAddress = _.isUndefined(takerAddress) ? signedOrder.takerAddress : takerAddress; + const toAddress = takerAddress === undefined ? signedOrder.takerAddress : takerAddress; const exchangeInstance = await this._getExchangeContractAsync(); const makerAssetData = signedOrder.makerAssetData; const makerAssetDataProxyId = assetDataUtils.decodeAssetProxyId(signedOrder.makerAssetData); @@ -1281,7 +1281,7 @@ export class ExchangeWrapper extends ContractWrapper { } // tslint:enable:no-unused-variable private async _getExchangeContractAsync(): Promise { - if (!_.isUndefined(this._exchangeContractIfExists)) { + if (this._exchangeContractIfExists !== undefined) { return this._exchangeContractIfExists; } const contractInstance = new ExchangeContract( diff --git a/packages/contract-wrappers/src/contract_wrappers/forwarder_wrapper.ts b/packages/contract-wrappers/src/contract_wrappers/forwarder_wrapper.ts index 5497f92b57..a0d741f8c5 100644 --- a/packages/contract-wrappers/src/contract_wrappers/forwarder_wrapper.ts +++ b/packages/contract-wrappers/src/contract_wrappers/forwarder_wrapper.ts @@ -50,13 +50,11 @@ export class ForwarderWrapper extends ContractWrapper { etherTokenAddress?: string, ) { super(web3Wrapper, networkId); - this.address = _.isUndefined(address) ? _getDefaultContractAddresses(networkId).exchange : address; - this.zrxTokenAddress = _.isUndefined(zrxTokenAddress) - ? _getDefaultContractAddresses(networkId).zrxToken - : zrxTokenAddress; - this.etherTokenAddress = _.isUndefined(etherTokenAddress) - ? _getDefaultContractAddresses(networkId).etherToken - : etherTokenAddress; + this.address = address === undefined ? _getDefaultContractAddresses(networkId).exchange : address; + this.zrxTokenAddress = + zrxTokenAddress === undefined ? _getDefaultContractAddresses(networkId).zrxToken : zrxTokenAddress; + this.etherTokenAddress = + etherTokenAddress === undefined ? _getDefaultContractAddresses(networkId).etherToken : etherTokenAddress; } /** * Purchases as much of orders' makerAssets as possible by selling up to 95% of transaction's ETH value. @@ -239,7 +237,7 @@ export class ForwarderWrapper extends ContractWrapper { return txHash; } private async _getForwarderContractAsync(): Promise { - if (!_.isUndefined(this._forwarderContractIfExists)) { + if (this._forwarderContractIfExists !== undefined) { return this._forwarderContractIfExists; } const contractInstance = new ForwarderContract( diff --git a/packages/contract-wrappers/src/contract_wrappers/order_validator_wrapper.ts b/packages/contract-wrappers/src/contract_wrappers/order_validator_wrapper.ts index f398142ce1..22f0b4577b 100644 --- a/packages/contract-wrappers/src/contract_wrappers/order_validator_wrapper.ts +++ b/packages/contract-wrappers/src/contract_wrappers/order_validator_wrapper.ts @@ -29,7 +29,7 @@ export class OrderValidatorWrapper extends ContractWrapper { */ constructor(web3Wrapper: Web3Wrapper, networkId: number, address?: string) { super(web3Wrapper, networkId); - this.address = _.isUndefined(address) ? _getDefaultContractAddresses(networkId).orderValidator : address; + this.address = address === undefined ? _getDefaultContractAddresses(networkId).orderValidator : address; } /** * Get an object conforming to OrderAndTraderInfo containing on-chain information of the provided order and address @@ -170,7 +170,7 @@ export class OrderValidatorWrapper extends ContractWrapper { return result; } private async _getOrderValidatorContractAsync(): Promise { - if (!_.isUndefined(this._orderValidatorContractIfExists)) { + if (this._orderValidatorContractIfExists !== undefined) { return this._orderValidatorContractIfExists; } const contractInstance = new OrderValidatorContract( diff --git a/packages/contract-wrappers/src/fetchers/asset_balance_and_proxy_allowance_fetcher.ts b/packages/contract-wrappers/src/fetchers/asset_balance_and_proxy_allowance_fetcher.ts index c35b246641..e5ff03862d 100644 --- a/packages/contract-wrappers/src/fetchers/asset_balance_and_proxy_allowance_fetcher.ts +++ b/packages/contract-wrappers/src/fetchers/asset_balance_and_proxy_allowance_fetcher.ts @@ -39,7 +39,7 @@ export class AssetBalanceAndProxyAllowanceFetcher implements AbstractBalanceAndP nestedAssetDataElement, userAddress, )).dividedToIntegerBy(nestedAmountElement); - if (_.isUndefined(balance) || nestedAssetBalance.isLessThan(balance)) { + if (balance === undefined || nestedAssetBalance.isLessThan(balance)) { balance = nestedAssetBalance; } } @@ -81,7 +81,7 @@ export class AssetBalanceAndProxyAllowanceFetcher implements AbstractBalanceAndP nestedAssetDataElement, userAddress, )).dividedToIntegerBy(nestedAmountElement); - if (_.isUndefined(proxyAllowance) || nestedAssetAllowance.isLessThan(proxyAllowance)) { + if (proxyAllowance === undefined || nestedAssetAllowance.isLessThan(proxyAllowance)) { proxyAllowance = nestedAssetAllowance; } } diff --git a/packages/contract-wrappers/src/utils/assert.ts b/packages/contract-wrappers/src/utils/assert.ts index 9d421dae3a..c4214542c6 100644 --- a/packages/contract-wrappers/src/utils/assert.ts +++ b/packages/contract-wrappers/src/utils/assert.ts @@ -84,7 +84,7 @@ export const assert = { allValues, )}`, ); - if (!_.isUndefined(value)) { + if (value !== undefined) { const firstValue = _.head(allValues); sharedAssert.assert( firstValue === value, diff --git a/packages/contract-wrappers/src/utils/filter_utils.ts b/packages/contract-wrappers/src/utils/filter_utils.ts index c05be062cc..f16c1975bc 100644 --- a/packages/contract-wrappers/src/utils/filter_utils.ts +++ b/packages/contract-wrappers/src/utils/filter_utils.ts @@ -28,7 +28,7 @@ export const filterUtils = { address, topics, }; - if (!_.isUndefined(blockRange)) { + if (blockRange !== undefined) { filter = { ...blockRange, ...filter, @@ -47,7 +47,7 @@ export const filterUtils = { if (!eventInput.indexed) { continue; } - if (_.isUndefined(indexFilterValues[eventInput.name])) { + if (indexFilterValues[eventInput.name] === undefined) { // Null is a wildcard topic in a JSON-RPC call topics.push(null); } else { @@ -61,10 +61,10 @@ export const filterUtils = { return topics; }, matchesFilter(log: LogEntry, filter: FilterObject): boolean { - if (!_.isUndefined(filter.address) && log.address !== filter.address) { + if (filter.address !== undefined && log.address !== filter.address) { return false; } - if (!_.isUndefined(filter.topics)) { + if (filter.topics !== undefined) { return filterUtils.doesMatchTopics(log.topics, filter.topics); } return true; diff --git a/packages/contracts-gen/CHANGELOG.json b/packages/contracts-gen/CHANGELOG.json index 50e8b378aa..6268ca778d 100644 --- a/packages/contracts-gen/CHANGELOG.json +++ b/packages/contracts-gen/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "1.0.8", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "1.0.7", diff --git a/packages/contracts-gen/CHANGELOG.md b/packages/contracts-gen/CHANGELOG.md index 3a84e36e34..5c8c7a605d 100644 --- a/packages/contracts-gen/CHANGELOG.md +++ b/packages/contracts-gen/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v1.0.8 - _April 11, 2019_ + + * Dependencies updated + ## v1.0.7 - _March 21, 2019_ * Dependencies updated diff --git a/packages/contracts-gen/package.json b/packages/contracts-gen/package.json index 090ed71e0a..b94e2845a9 100644 --- a/packages/contracts-gen/package.json +++ b/packages/contracts-gen/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-gen", - "version": "1.0.7", + "version": "1.0.8", "engines": { "node": ">=6.12" }, @@ -9,6 +9,7 @@ "types": "lib/src/index.d.ts", "scripts": { "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "clean": "shx rm -rf lib", "build": "tsc -b", "build:ci": "yarn build" @@ -26,17 +27,17 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/contracts-gen/README.md", "dependencies": { - "@0x/sol-resolver": "^2.0.6", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "ethereum-types": "^2.1.1", + "@0x/sol-resolver": "^2.0.7", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "ethereum-types": "^2.1.2", "lodash": "^4.17.11", "prettier": "^1.16.3", "to-snake-case": "^1.0.0" }, "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/node": "*", "@types/prettier": "^1.15.2", "shx": "^0.2.2", diff --git a/packages/dev-tools-pages/package.json b/packages/dev-tools-pages/package.json index b735af6806..755d6b93b6 100644 --- a/packages/dev-tools-pages/package.json +++ b/packages/dev-tools-pages/package.json @@ -1,6 +1,6 @@ { "name": "@0x/dev-tools-pages", - "version": "0.0.24", + "version": "0.0.25", "engines": { "node": ">=6.12" }, @@ -12,6 +12,7 @@ "build:dev": "../../node_modules/.bin/webpack --mode development", "clean": "shx rm -f public/bundle*", "lint": "tslint --format stylish --project . 'ts/**/*.ts' 'ts/**/*.tsx'", + "fix": "tslint --fix --format stylish --project . 'ts/**/*.ts' 'ts/**/*.tsx'", "dev": "webpack-dev-server --mode development --content-base public", "deploy:all": "npm run build; npm run deploy:compiler; npm run deploy:compiler:index; npm run deploy:coverage; npm run deploy:coverage:index; npm run deploy:profiler; npm run deploy:profiler:index; npm run deploy:trace; npm run deploy:trace:index;", "deploy:compiler": "DIR_NAME=./public/. BUCKET=s3://sol-compiler.com yarn s3:sync --exclude 'bundle-cov*' --exclude 'bundle-trace*' --exclude 'bundle-profiler*'", @@ -26,7 +27,7 @@ }, "license": "Apache-2.0", "dependencies": { - "@0x/react-shared": "^2.0.9", + "@0x/react-shared": "^2.0.10", "basscss": "^8.0.3", "bowser": "^1.9.4", "highlight.js": "^9.13.1", diff --git a/packages/dev-tools-pages/ts/components/code.tsx b/packages/dev-tools-pages/ts/components/code.tsx index 0f7d6a0cd6..92adcefbd4 100644 --- a/packages/dev-tools-pages/ts/components/code.tsx +++ b/packages/dev-tools-pages/ts/components/code.tsx @@ -1,4 +1,3 @@ -import * as _ from 'lodash'; import * as React from 'react'; import styled from 'styled-components'; @@ -47,10 +46,10 @@ const Container = styled.div` const Base = styled.div` font-size: 0.875rem; - color: ${props => (_.isUndefined(props.language) ? colors.white : 'inherit')}; + color: ${props => (props.language === undefined ? colors.white : 'inherit')}; background-color: ${props => - props.isLight ? 'rgba(255,255,255,.15)' : _.isUndefined(props.language) ? colors.black : '#F1F4F5'}; - white-space: ${props => (_.isUndefined(props.language) ? 'nowrap' : '')}; + props.isLight ? 'rgba(255,255,255,.15)' : props.language === undefined ? colors.black : '#F1F4F5'}; + white-space: ${props => (props.language === undefined ? 'nowrap' : '')}; position: relative; ${props => @@ -143,7 +142,7 @@ class Code extends React.Component { - {_.isUndefined(hlCode) ? ( + {hlCode === undefined ? ( {children} ) : ( = props => { return ( {props.title} - {_.isUndefined(children) ? null : {children}} + {children === undefined ? null : {children}} ); }; diff --git a/packages/dev-utils/CHANGELOG.json b/packages/dev-utils/CHANGELOG.json index e6ec03c134..26421ebde8 100644 --- a/packages/dev-utils/CHANGELOG.json +++ b/packages/dev-utils/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.2.1", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "version": "2.2.0", "changes": [ diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 2a0bdf9de2..172594253e 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.2.1 - _April 11, 2019_ + + * Dependencies updated + ## v2.2.0 - _March 21, 2019_ * Added `startProviderEngine` to `providerUtils`. Preventing excess block polling (#1695) diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index b61ab4b58c..62f3684e48 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/dev-utils", - "version": "2.2.0", + "version": "2.2.1", "engines": { "node": ">=6.12" }, @@ -17,7 +17,8 @@ "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", "clean": "shx rm -rf lib", - "lint": "tslint --format stylish --project ." + "lint": "tslint --format stylish --project .", + "fix": "tslint --format stylish --fix --project ." }, "license": "Apache-2.0", "repository": { @@ -29,7 +30,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/dev-utils/README.md", "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", "make-promises-safe": "^1.1.0", @@ -41,14 +42,14 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/subproviders": "^4.0.4", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", + "@0x/subproviders": "^4.0.5", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", "@types/web3-provider-engine": "^14.0.0", "chai": "^4.0.1", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/packages/dev-utils/src/blockchain_lifecycle.ts b/packages/dev-utils/src/blockchain_lifecycle.ts index e9687787fe..600f8b36bc 100644 --- a/packages/dev-utils/src/blockchain_lifecycle.ts +++ b/packages/dev-utils/src/blockchain_lifecycle.ts @@ -72,7 +72,7 @@ export class BlockchainLifecycle { logUtils.warn('Done mining the minimum number of blocks.'); } private async _getNodeTypeAsync(): Promise { - if (_.isUndefined(this._nodeType)) { + if (this._nodeType === undefined) { this._nodeType = await this._web3Wrapper.getNodeTypeAsync(); } return this._nodeType; diff --git a/packages/dev-utils/src/callback_error_reporter.ts b/packages/dev-utils/src/callback_error_reporter.ts index b993bf22a3..251ab05095 100644 --- a/packages/dev-utils/src/callback_error_reporter.ts +++ b/packages/dev-utils/src/callback_error_reporter.ts @@ -12,7 +12,7 @@ export const callbackErrorReporter = { ): (f?: ((value: T) => void) | undefined) => (value: T) => void { const callback = (f?: (value: T) => void) => { const wrapped = (value: T) => { - if (_.isUndefined(f)) { + if (f === undefined) { done(); return; } @@ -35,10 +35,10 @@ export const callbackErrorReporter = { ): (f?: ((value: T) => void) | undefined) => (error: Error | null, value: T | undefined) => void { const callback = (f?: (value: T) => void) => { const wrapped = (error: Error | null, value: T | undefined) => { - if (!_.isNull(error)) { + if (error !== null) { done(error); } else { - if (_.isUndefined(f)) { + if (f === undefined) { done(); return; } @@ -61,7 +61,7 @@ export const callbackErrorReporter = { errMsg: string, ): (error: Error | null, value: T | undefined) => void { const wrapped = (error: Error | null, _value: T | undefined) => { - if (_.isNull(error)) { + if (error === null) { done(new Error('Expected callback to receive an error')); } else { try { diff --git a/packages/dev-utils/src/env.ts b/packages/dev-utils/src/env.ts index 024162c2fb..29e144be5e 100644 --- a/packages/dev-utils/src/env.ts +++ b/packages/dev-utils/src/env.ts @@ -14,7 +14,7 @@ export const env = { const envVarValue = process.env[key]; if (envVarValue === 'true') { isTrue = true; - } else if (envVarValue === 'false' || _.isUndefined(envVarValue)) { + } else if (envVarValue === 'false' || envVarValue === undefined) { isTrue = false; } else { throw new Error( diff --git a/packages/dev-utils/src/web3_factory.ts b/packages/dev-utils/src/web3_factory.ts index fcfac24b3d..ccb9511871 100644 --- a/packages/dev-utils/src/web3_factory.ts +++ b/packages/dev-utils/src/web3_factory.ts @@ -24,9 +24,9 @@ export interface Web3Config { export const web3Factory = { getRpcProvider(config: Web3Config = {}): Web3ProviderEngine { const provider = new Web3ProviderEngine(); - const hasAddresses = _.isUndefined(config.hasAddresses) || config.hasAddresses; + const hasAddresses = config.hasAddresses === undefined || config.hasAddresses; config.shouldUseFakeGasEstimate = - _.isUndefined(config.shouldUseFakeGasEstimate) || config.shouldUseFakeGasEstimate; + config.shouldUseFakeGasEstimate === undefined || config.shouldUseFakeGasEstimate; if (!hasAddresses) { provider.addProvider(new EmptyWalletSubprovider()); } @@ -41,13 +41,13 @@ export const web3Factory = { }; const shouldUseInProcessGanache = !!config.shouldUseInProcessGanache; if (shouldUseInProcessGanache) { - if (!_.isUndefined(config.rpcUrl)) { + if (config.rpcUrl !== undefined) { throw new Error('Cannot use both GanacheSubrovider and RPCSubprovider'); } const shouldThrowErrorsOnGanacheRPCResponse = - _.isUndefined(config.shouldThrowErrorsOnGanacheRPCResponse) || + config.shouldThrowErrorsOnGanacheRPCResponse === undefined || config.shouldThrowErrorsOnGanacheRPCResponse; - if (!_.isUndefined(config.ganacheDatabasePath)) { + if (config.ganacheDatabasePath !== undefined) { const doesDatabaseAlreadyExist = fs.existsSync(config.ganacheDatabasePath); if (!doesDatabaseAlreadyExist) { // Working with local DB snapshot. Ganache requires this directory to exist diff --git a/packages/ethereum-types/CHANGELOG.json b/packages/ethereum-types/CHANGELOG.json index 5654d582c8..2d5e6a8f3f 100644 --- a/packages/ethereum-types/CHANGELOG.json +++ b/packages/ethereum-types/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.1.2", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553091633, "version": "2.1.1", diff --git a/packages/ethereum-types/CHANGELOG.md b/packages/ethereum-types/CHANGELOG.md index 72b4041d36..24573df094 100644 --- a/packages/ethereum-types/CHANGELOG.md +++ b/packages/ethereum-types/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.1.2 - _April 11, 2019_ + + * Dependencies updated + ## v2.1.1 - _March 20, 2019_ * Dependencies updated diff --git a/packages/ethereum-types/package.json b/packages/ethereum-types/package.json index 4f13f3b903..c0065911e9 100644 --- a/packages/ethereum-types/package.json +++ b/packages/ethereum-types/package.json @@ -1,6 +1,6 @@ { "name": "ethereum-types", - "version": "2.1.1", + "version": "2.1.2", "engines": { "node": ">=6.12" }, @@ -12,6 +12,7 @@ "build:ci": "yarn build", "clean": "shx rm -rf lib generated_docs", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --tsconfig typedoc-tsconfig.json --json $JSON_FILE_PATH $PROJECT_FILES" }, "config": { @@ -29,7 +30,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/ethereum-types/README.md", "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "make-promises-safe": "^1.1.0", "shx": "^0.2.2", "tslint": "5.11.0", diff --git a/packages/fill-scenarios/CHANGELOG.json b/packages/fill-scenarios/CHANGELOG.json index 5359e6d18a..e9578c37f0 100644 --- a/packages/fill-scenarios/CHANGELOG.json +++ b/packages/fill-scenarios/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "3.0.5", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "3.0.4", diff --git a/packages/fill-scenarios/CHANGELOG.md b/packages/fill-scenarios/CHANGELOG.md index dbf649ca4a..f043ffabd6 100644 --- a/packages/fill-scenarios/CHANGELOG.md +++ b/packages/fill-scenarios/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.5 - _April 11, 2019_ + + * Dependencies updated + ## v3.0.4 - _March 21, 2019_ * Dependencies updated diff --git a/packages/fill-scenarios/package.json b/packages/fill-scenarios/package.json index 4f4dc0d082..27b3ae0306 100644 --- a/packages/fill-scenarios/package.json +++ b/packages/fill-scenarios/package.json @@ -1,6 +1,6 @@ { "name": "@0x/fill-scenarios", - "version": "3.0.4", + "version": "3.0.5", "description": "0x order fill scenario generator", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -8,7 +8,8 @@ "build": "yarn tsc -b", "build:ci": "yarn build", "clean": "shx rm -rf lib src/generated_contract_wrappers", - "lint": "tslint --format stylish --project ." + "lint": "tslint --format stylish --project .", + "fix": "tslint --format stylish --fix --project ." }, "license": "Apache-2.0", "repository": { @@ -20,7 +21,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/fill-scenarios/README.md", "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "make-promises-safe": "^1.1.0", "shx": "^0.2.2", @@ -28,15 +29,15 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/abi-gen-wrappers": "^4.1.0", - "@0x/base-contract": "^5.0.4", - "@0x/contract-artifacts": "^1.4.0", - "@0x/order-utils": "^7.1.1", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", - "ethereum-types": "^2.1.1", + "@0x/abi-gen-wrappers": "^4.2.0", + "@0x/base-contract": "^5.0.5", + "@0x/contract-artifacts": "^1.5.0", + "@0x/order-utils": "^7.2.0", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", + "ethereum-types": "^2.1.2", "ethers": "~4.0.4", "lodash": "^4.17.11" }, diff --git a/packages/instant/package.json b/packages/instant/package.json index 983e761a1c..f6ffca20af 100644 --- a/packages/instant/package.json +++ b/packages/instant/package.json @@ -1,6 +1,6 @@ { "name": "@0x/instant", - "version": "1.0.19", + "version": "1.0.20", "engines": { "node": ">=6.12" }, @@ -13,6 +13,7 @@ "build:ci": "yarn build", "dev": "dotenv webpack-dev-server -- --mode development", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "test": "jest", "test:coverage": "jest --coverage", "rebuild_and_test": "run-s clean build test", @@ -42,19 +43,19 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/instant/README.md", "dependencies": { - "@0x/assert": "^2.0.8", - "@0x/asset-buyer": "^6.0.5", - "@0x/json-schemas": "^3.0.8", - "@0x/order-utils": "^7.1.1", - "@0x/subproviders": "^4.0.4", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", + "@0x/assert": "^2.0.9", + "@0x/asset-buyer": "^6.1.0", + "@0x/json-schemas": "^3.0.9", + "@0x/order-utils": "^7.2.0", + "@0x/subproviders": "^4.0.5", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", "babel-runtime": "^6.26.0", "bowser": "^1.9.4", "copy-to-clipboard": "^3.0.8", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "lodash": "^4.17.11", "polished": "^1.9.2", "react": "^16.5.2", @@ -67,7 +68,7 @@ "ts-optchain": "^0.1.1" }, "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@static/discharge": "https://github.com/0xProject/discharge.git", "@types/enzyme": "^3.1.14", "@types/enzyme-adapter-react-16": "^1.0.3", diff --git a/packages/instant/src/components/buy_button.tsx b/packages/instant/src/components/buy_button.tsx index 551e857a5b..e58a890374 100644 --- a/packages/instant/src/components/buy_button.tsx +++ b/packages/instant/src/components/buy_button.tsx @@ -40,9 +40,9 @@ export class BuyButton extends React.PureComponent { }; public render(): React.ReactNode { const { buyQuote, accountAddress, selectedAsset } = this.props; - const shouldDisableButton = _.isUndefined(buyQuote) || _.isUndefined(accountAddress); + const shouldDisableButton = buyQuote === undefined || accountAddress === undefined; const buttonText = - !_.isUndefined(selectedAsset) && selectedAsset.metaData.assetProxyId === AssetProxyId.ERC20 + selectedAsset !== undefined && selectedAsset.metaData.assetProxyId === AssetProxyId.ERC20 ? `Buy ${selectedAsset.metaData.symbol.toUpperCase()}` : 'Buy Now'; return ( @@ -59,13 +59,13 @@ export class BuyButton extends React.PureComponent { private readonly _handleClick = async () => { // The button is disabled when there is no buy quote anyway. const { buyQuote, assetBuyer, affiliateInfo, accountAddress, accountEthBalanceInWei, web3Wrapper } = this.props; - if (_.isUndefined(buyQuote) || _.isUndefined(accountAddress)) { + if (buyQuote === undefined || accountAddress === undefined) { return; } this.props.onValidationPending(buyQuote); const ethNeededForBuy = buyQuote.worstCaseQuoteInfo.totalEthAmount; // if we don't have a balance for the user, let the transaction through, it will be handled by the wallet - const hasSufficientEth = _.isUndefined(accountEthBalanceInWei) || accountEthBalanceInWei.gte(ethNeededForBuy); + const hasSufficientEth = accountEthBalanceInWei === undefined || accountEthBalanceInWei.gte(ethNeededForBuy); if (!hasSufficientEth) { analytics.trackBuyNotEnoughEth(buyQuote); this.props.onValidationFail(buyQuote, ZeroExInstantError.InsufficientETH); diff --git a/packages/instant/src/components/erc20_asset_amount_input.tsx b/packages/instant/src/components/erc20_asset_amount_input.tsx index 7e09f777a7..ec65198af6 100644 --- a/packages/instant/src/components/erc20_asset_amount_input.tsx +++ b/packages/instant/src/components/erc20_asset_amount_input.tsx @@ -46,7 +46,7 @@ export class ERC20AssetAmountInput extends React.PureComponent - {_.isUndefined(asset) ? this._renderTokenSelectionContent() : this._renderContentForAsset(asset)} + {asset === undefined ? this._renderTokenSelectionContent() : this._renderContentForAsset(asset)} ); } @@ -92,7 +92,7 @@ export class ERC20AssetAmountInput extends React.PureComponent { const { numberOfAssetsAvailable } = this.props; let text = 'Select Token'; - if (_.isUndefined(numberOfAssetsAvailable)) { + if (numberOfAssetsAvailable === undefined) { text = 'Loading...'; } else if (numberOfAssetsAvailable === 0) { text = 'Tokens Unavailable'; @@ -134,14 +134,14 @@ export class ERC20AssetAmountInput extends React.PureComponent { const { numberOfAssetsAvailable } = this.props; - return !_.isUndefined(numberOfAssetsAvailable) && numberOfAssetsAvailable > 0; + return numberOfAssetsAvailable !== undefined && numberOfAssetsAvailable > 0; }; private readonly _handleSelectAssetClick = (): void => { if (this.props.onSelectAssetClick) { @@ -151,7 +151,7 @@ export class ERC20AssetAmountInput extends React.PureComponent { - if (_.isUndefined(asset)) { + if (asset === undefined) { return 3; } const symbol = asset.metaData.symbol; diff --git a/packages/instant/src/components/erc20_token_selector.tsx b/packages/instant/src/components/erc20_token_selector.tsx index a26fb5cf51..e50d68aee4 100644 --- a/packages/instant/src/components/erc20_token_selector.tsx +++ b/packages/instant/src/components/erc20_token_selector.tsx @@ -161,9 +161,9 @@ class TokenSelectorRowIcon extends React.PureComponent; - } else if (!_.isUndefined(TokenIcon)) { + } else if (TokenIcon !== undefined) { return ; } else { return ( diff --git a/packages/instant/src/components/instant_heading.tsx b/packages/instant/src/components/instant_heading.tsx index a88e01ecea..a8627b70b9 100644 --- a/packages/instant/src/components/instant_heading.tsx +++ b/packages/instant/src/components/instant_heading.tsx @@ -104,7 +104,7 @@ export class InstantHeading extends React.PureComponent private _renderAmountsSection(): React.ReactNode { if ( - _.isUndefined(this.props.totalEthBaseUnitAmount) && + this.props.totalEthBaseUnitAmount === undefined && this.props.quoteRequestState !== AsyncProcessState.Pending ) { return null; @@ -148,7 +148,7 @@ export class InstantHeading extends React.PureComponent if (this.props.quoteRequestState === AsyncProcessState.Pending) { return ; } - if (_.isUndefined(this.props.selectedAssetUnitAmount)) { + if (this.props.selectedAssetUnitAmount === undefined) { return ; } return amountFunction(); diff --git a/packages/instant/src/components/order_details.tsx b/packages/instant/src/components/order_details.tsx index 3ded50652a..c215db9723 100644 --- a/packages/instant/src/components/order_details.tsx +++ b/packages/instant/src/components/order_details.tsx @@ -97,7 +97,7 @@ export class OrderDetails extends React.PureComponent { private _displayAmountOrPlaceholder(weiAmount?: BigNumber): React.ReactNode { const { baseCurrency, isLoading } = this.props; - if (_.isUndefined(weiAmount)) { + if (weiAmount === undefined) { return ( @@ -123,10 +123,10 @@ export class OrderDetails extends React.PureComponent { // Display as 0 if we have a selected asset const displayNumTokens = - assetName && assetName !== DEFAULT_UNKOWN_ASSET_NAME && _.isUndefined(numTokens) + assetName && assetName !== DEFAULT_UNKOWN_ASSET_NAME && numTokens === undefined ? new BigNumber(0) : numTokens; - if (!_.isUndefined(displayNumTokens)) { + if (displayNumTokens !== undefined) { let numTokensWithSymbol: React.ReactNode = displayNumTokens.toString(); if (assetName) { numTokensWithSymbol += ` ${assetName}`; @@ -153,8 +153,8 @@ export class OrderDetails extends React.PureComponent { const buyQuoteAccessor = oc(this.props.buyQuoteInfo); const assetTotalInWei = buyQuoteAccessor.assetEthAmount(); const selectedAssetUnitAmount = this.props.selectedAssetUnitAmount; - return !_.isUndefined(assetTotalInWei) && - !_.isUndefined(selectedAssetUnitAmount) && + return assetTotalInWei !== undefined && + selectedAssetUnitAmount !== undefined && !selectedAssetUnitAmount.eq(BIG_NUMBER_ZERO) ? assetTotalInWei.div(selectedAssetUnitAmount).integerValue(BigNumber.ROUND_CEIL) : undefined; diff --git a/packages/instant/src/components/scaling_amount_input.tsx b/packages/instant/src/components/scaling_amount_input.tsx index 7dc1fdc0c0..d8abfe5022 100644 --- a/packages/instant/src/components/scaling_amount_input.tsx +++ b/packages/instant/src/components/scaling_amount_input.tsx @@ -36,7 +36,7 @@ export class ScalingAmountInput extends React.PureComponent { value.split(''), (sum, char) => { const widthOverride = scalingSettings.characterWidthOverrides[char]; - if (!_.isUndefined(widthOverride)) { + if (widthOverride !== undefined) { // tslint is confused // tslint:disable-next-line:restrict-plus-operands return sum + widthOverride; @@ -157,7 +157,7 @@ export class ScalingInput extends React.PureComponent { private readonly _handleChange = (event: React.ChangeEvent): void => { const value = event.target.value; const { maxLength } = this.props; - if (!_.isUndefined(value) && !_.isUndefined(maxLength) && value.length > maxLength) { + if (value !== undefined && maxLength !== undefined && value.length > maxLength) { return; } this.props.onChange(event); diff --git a/packages/instant/src/components/ui/icon.tsx b/packages/instant/src/components/ui/icon.tsx index 811142b5b3..e251acf5e2 100644 --- a/packages/instant/src/components/ui/icon.tsx +++ b/packages/instant/src/components/ui/icon.tsx @@ -79,8 +79,8 @@ export interface IconProps { } const PlainIcon: React.StatelessComponent = props => { const iconInfo = ICONS[props.icon]; - const colorValue = _.isUndefined(props.color) ? undefined : props.theme[props.color]; - const strokeValue = _.isUndefined(props.stroke) ? undefined : props.theme[props.stroke]; + const colorValue = props.color === undefined ? undefined : props.theme[props.color]; + const strokeValue = props.stroke === undefined ? undefined : props.theme[props.stroke]; return (
= props => { export const Icon = withTheme(styled(PlainIcon)` && { display: inline-block; - ${props => (!_.isUndefined(props.onClick) ? 'cursor: pointer' : '')}; + ${props => (props.onClick !== undefined ? 'cursor: pointer' : '')}; transition: opacity 0.5s ease; padding: ${props => props.padding}; - opacity: ${props => (!_.isUndefined(props.onClick) ? 0.7 : 1)}; + opacity: ${props => (props.onClick !== undefined ? 0.7 : 1)}; &:hover { opacity: 1; } diff --git a/packages/instant/src/components/zero_ex_instant_provider.tsx b/packages/instant/src/components/zero_ex_instant_provider.tsx index 1c88fcd4d0..b4b31e1f27 100644 --- a/packages/instant/src/components/zero_ex_instant_provider.tsx +++ b/packages/instant/src/components/zero_ex_instant_provider.tsx @@ -71,7 +71,7 @@ export class ZeroExInstantProvider extends React.PureComponent { - if (!_.isUndefined(asset) && !_.isUndefined(asset.metaData.primaryColor)) { + if (asset !== undefined && asset.metaData.primaryColor !== undefined) { return { ...defaultTheme, primaryColor: asset.metaData.primaryColor, diff --git a/packages/instant/src/containers/selected_erc20_asset_amount_input.ts b/packages/instant/src/containers/selected_erc20_asset_amount_input.ts index 4b99933328..bb174b97fd 100644 --- a/packages/instant/src/containers/selected_erc20_asset_amount_input.ts +++ b/packages/instant/src/containers/selected_erc20_asset_amount_input.ts @@ -47,10 +47,10 @@ const mapStateToProps = (state: State, _ownProps: SelectedERC20AssetAmountInputP const isInputEnabled = processState === OrderProcessState.None || processState === OrderProcessState.Failure; const isInputDisabled = !isInputEnabled; const selectedAsset = - !_.isUndefined(state.selectedAsset) && state.selectedAsset.metaData.assetProxyId === AssetProxyId.ERC20 + state.selectedAsset !== undefined && state.selectedAsset.metaData.assetProxyId === AssetProxyId.ERC20 ? (state.selectedAsset as ERC20Asset) : undefined; - const numberOfAssetsAvailable = _.isUndefined(state.availableAssets) ? undefined : state.availableAssets.length; + const numberOfAssetsAvailable = state.availableAssets === undefined ? undefined : state.availableAssets.length; const canSelectOtherAsset = numberOfAssetsAvailable && numberOfAssetsAvailable > 1 ? isInputEnabled || processState === OrderProcessState.Success @@ -84,7 +84,7 @@ const mapDispatchToProps = ( // reset our buy state dispatch(actions.setBuyOrderStateNone()); - if (!_.isUndefined(value) && value.isGreaterThan(0) && !_.isUndefined(asset)) { + if (value !== undefined && value.isGreaterThan(0) && asset !== undefined) { // even if it's debounced, give them the illusion it's loading dispatch(actions.setQuoteRequestStatePending()); // tslint:disable-next-line:no-floating-promises diff --git a/packages/instant/src/index.umd.ts b/packages/instant/src/index.umd.ts index 099544a085..955a3c1ab6 100644 --- a/packages/instant/src/index.umd.ts +++ b/packages/instant/src/index.umd.ts @@ -26,40 +26,40 @@ const isInstantRendered = (): boolean => !!document.getElementById(INJECTED_DIV_ const validateInstantRenderConfig = (config: ZeroExInstantConfig, selector: string) => { assert.isValidOrderSource('orderSource', config.orderSource); - if (!_.isUndefined(config.defaultSelectedAssetData)) { + if (config.defaultSelectedAssetData !== undefined) { assert.isHexString('defaultSelectedAssetData', config.defaultSelectedAssetData); } - if (!_.isUndefined(config.additionalAssetMetaDataMap)) { + if (config.additionalAssetMetaDataMap !== undefined) { assert.isValidAssetMetaDataMap('additionalAssetMetaDataMap', config.additionalAssetMetaDataMap); } - if (!_.isUndefined(config.defaultAssetBuyAmount)) { + if (config.defaultAssetBuyAmount !== undefined) { assert.isNumber('defaultAssetBuyAmount', config.defaultAssetBuyAmount); } - if (!_.isUndefined(config.networkId)) { + if (config.networkId !== undefined) { assert.isNumber('networkId', config.networkId); } - if (!_.isUndefined(config.availableAssetDatas)) { + if (config.availableAssetDatas !== undefined) { assert.areValidAssetDatas('availableAssetDatas', config.availableAssetDatas); } - if (!_.isUndefined(config.onClose)) { + if (config.onClose !== undefined) { assert.isFunction('onClose', config.onClose); } - if (!_.isUndefined(config.zIndex)) { + if (config.zIndex !== undefined) { assert.isNumber('zIndex', config.zIndex); } - if (!_.isUndefined(config.affiliateInfo)) { + if (config.affiliateInfo !== undefined) { assert.isValidAffiliateInfo('affiliateInfo', config.affiliateInfo); } - if (!_.isUndefined(config.provider)) { + if (config.provider !== undefined) { providerUtils.standardizeOrThrow(config.provider); } - if (!_.isUndefined(config.walletDisplayName)) { + if (config.walletDisplayName !== undefined) { assert.isString('walletDisplayName', config.walletDisplayName); } - if (!_.isUndefined(config.shouldDisablePushToHistory)) { + if (config.shouldDisablePushToHistory !== undefined) { assert.isBoolean('shouldDisablePushToHistory', config.shouldDisablePushToHistory); } - if (!_.isUndefined(config.shouldDisableAnalyticsTracking)) { + if (config.shouldDisableAnalyticsTracking !== undefined) { assert.isBoolean('shouldDisableAnalyticsTracking', config.shouldDisableAnalyticsTracking); } assert.isString('selector', selector); @@ -81,7 +81,7 @@ export const unrender = () => { // Render instant and return a callback that allows you to remove it from the DOM. const renderInstant = (config: ZeroExInstantConfig, selector: string) => { const appendToIfExists = document.querySelector(selector); - assert.assert(!_.isNull(appendToIfExists), `Could not find div with selector: ${selector}`); + assert.assert(appendToIfExists !== null, `Could not find div with selector: ${selector}`); parentElement = appendToIfExists as Element; injectedDiv = document.createElement('div'); injectedDiv.setAttribute('id', INJECTED_DIV_ID); @@ -89,7 +89,7 @@ const renderInstant = (config: ZeroExInstantConfig, selector: string) => { parentElement.appendChild(injectedDiv); const closeInstant = () => { analytics.trackInstantClosed(); - if (!_.isUndefined(config.onClose)) { + if (config.onClose !== undefined) { config.onClose(); } unrender(); diff --git a/packages/instant/src/redux/actions.ts b/packages/instant/src/redux/actions.ts index ca0be543b3..013527f752 100644 --- a/packages/instant/src/redux/actions.ts +++ b/packages/instant/src/redux/actions.ts @@ -1,6 +1,5 @@ import { BuyQuote } from '@0x/asset-buyer'; import { BigNumber } from '@0x/utils'; -import * as _ from 'lodash'; import { ActionsUnion, AddressAndEthBalanceInWei, Asset, BaseCurrency, StandardSlidingPanelContent } from '../types'; @@ -17,7 +16,7 @@ export type Action = ActionsUnion; function createAction(type: T): PlainAction; function createAction(type: T, data: P): ActionWithPayload; function createAction(type: T, data?: P): PlainAction | ActionWithPayload { - return _.isUndefined(data) ? { type } : { type, data }; + return data === undefined ? { type } : { type, data }; } export enum ActionTypes { diff --git a/packages/instant/src/redux/async_data.ts b/packages/instant/src/redux/async_data.ts index 0e9bb1e118..9f434e4269 100644 --- a/packages/instant/src/redux/async_data.ts +++ b/packages/instant/src/redux/async_data.ts @@ -59,7 +59,7 @@ export const asyncData = { let availableAddresses: string[]; try { // TODO(bmillman): Add support at the web3Wrapper level for calling `eth_requestAccounts` instead of calling enable here - const isPrivacyModeEnabled = !_.isUndefined((provider as any).enable); + const isPrivacyModeEnabled = (provider as any).enable !== undefined; availableAddresses = isPrivacyModeEnabled && shouldAttemptUnlock ? await (provider as any).enable() @@ -97,8 +97,8 @@ export const asyncData = { const { buyOrderState, providerState, selectedAsset, selectedAssetUnitAmount, affiliateInfo } = state; const assetBuyer = providerState.assetBuyer; if ( - !_.isUndefined(selectedAssetUnitAmount) && - !_.isUndefined(selectedAsset) && + selectedAssetUnitAmount !== undefined && + selectedAsset !== undefined && selectedAssetUnitAmount.isGreaterThan(BIG_NUMBER_ZERO) && buyOrderState.processState === OrderProcessState.None ) { diff --git a/packages/instant/src/redux/reducer.ts b/packages/instant/src/redux/reducer.ts index 0d8bb4b05d..86963c7917 100644 --- a/packages/instant/src/redux/reducer.ts +++ b/packages/instant/src/redux/reducer.ts @@ -117,7 +117,7 @@ export const createReducer = (initialState: State) => { case ActionTypes.UpdateLatestBuyQuote: const newBuyQuoteIfExists = action.data; const shouldUpdate = - _.isUndefined(newBuyQuoteIfExists) || doesBuyQuoteMatchState(newBuyQuoteIfExists, state); + newBuyQuoteIfExists === undefined || doesBuyQuoteMatchState(newBuyQuoteIfExists, state); if (shouldUpdate) { return { ...state, @@ -274,7 +274,7 @@ const doesBuyQuoteMatchState = (buyQuote: BuyQuote, state: State): boolean => { const selectedAssetIfExists = state.selectedAsset; const selectedAssetUnitAmountIfExists = state.selectedAssetUnitAmount; // if no selectedAsset or selectedAssetAmount exists on the current state, return false - if (_.isUndefined(selectedAssetIfExists) || _.isUndefined(selectedAssetUnitAmountIfExists)) { + if (selectedAssetIfExists === undefined || selectedAssetUnitAmountIfExists === undefined) { return false; } // if buyQuote's assetData does not match that of the current selected asset, return false diff --git a/packages/instant/src/style/util.ts b/packages/instant/src/style/util.ts index 3e38c4a7de..ed03d73246 100644 --- a/packages/instant/src/style/util.ts +++ b/packages/instant/src/style/util.ts @@ -4,7 +4,7 @@ import * as _ from 'lodash'; export const cssRuleIfExists = (props: ObjectMap, rule: string): string => { const camelCaseRule = _.camelCase(rule); const ruleValueIfExists = props[camelCaseRule]; - if (!_.isUndefined(ruleValueIfExists)) { + if (ruleValueIfExists !== undefined) { return `${rule}: ${ruleValueIfExists};`; } return ''; diff --git a/packages/instant/src/util/analytics.ts b/packages/instant/src/util/analytics.ts index fa8a72a2c2..06e84cecbb 100644 --- a/packages/instant/src/util/analytics.ts +++ b/packages/instant/src/util/analytics.ts @@ -87,7 +87,7 @@ const buyQuoteEventProperties = (buyQuote: BuyQuote) => { const assetEthAmount = buyQuote.worstCaseQuoteInfo.assetEthAmount.toString(); const feeEthAmount = buyQuote.worstCaseQuoteInfo.feeEthAmount.toString(); const totalEthAmount = buyQuote.worstCaseQuoteInfo.totalEthAmount.toString(); - const feePercentage = !_.isUndefined(buyQuote.feePercentage) ? buyQuote.feePercentage.toString() : 0; + const feePercentage = buyQuote.feePercentage !== undefined ? buyQuote.feePercentage.toString() : 0; const hasFeeOrders = !_.isEmpty(buyQuote.feeOrders) ? 'true' : 'false'; return { assetBuyAmount, diff --git a/packages/instant/src/util/assert.ts b/packages/instant/src/util/assert.ts index 971c1eb962..ee21c31f97 100644 --- a/packages/instant/src/util/assert.ts +++ b/packages/instant/src/util/assert.ts @@ -33,7 +33,7 @@ export const assert = { }, isValidAssetMetaData(variableName: string, metaData: AssetMetaData): void { assert.isHexString(`${variableName}.assetProxyId`, metaData.assetProxyId); - if (!_.isUndefined(metaData.primaryColor)) { + if (metaData.primaryColor !== undefined) { assert.isString(`${variableName}.primaryColor`, metaData.primaryColor); } if (metaData.assetProxyId === AssetProxyId.ERC20) { diff --git a/packages/instant/src/util/asset.ts b/packages/instant/src/util/asset.ts index 8eafec530e..13d991f6e5 100644 --- a/packages/instant/src/util/asset.ts +++ b/packages/instant/src/util/asset.ts @@ -25,7 +25,7 @@ export const assetUtils = { network: Network, ): Asset | undefined => { const metaData = assetUtils.getMetaDataIfExists(assetData, assetMetaDataMap, network); - if (_.isUndefined(metaData)) { + if (metaData === undefined) { return; } return { @@ -45,7 +45,7 @@ export const assetUtils = { }, getMetaDataOrThrow: (assetData: string, metaDataMap: ObjectMap, network: Network): AssetMetaData => { const metaDataIfExists = assetUtils.getMetaDataIfExists(assetData, metaDataMap, network); - if (_.isUndefined(metaDataIfExists)) { + if (metaDataIfExists === undefined) { throw new Error(ZeroExInstantError.AssetMetaDataNotAvailable); } return metaDataIfExists; @@ -65,17 +65,17 @@ export const assetUtils = { // but pass in a valid mainnet assetData. mainnetAssetData = mainnetAssetDataIfExists || assetData; } - if (_.isUndefined(mainnetAssetData)) { + if (mainnetAssetData === undefined) { return; } const metaData = metaDataMap[mainnetAssetData.toLowerCase()]; - if (_.isUndefined(metaData)) { + if (metaData === undefined) { return; } return metaData; }, bestNameForAsset: (asset?: Asset, defaultName: string = DEFAULT_UNKOWN_ASSET_NAME): string => { - if (_.isUndefined(asset)) { + if (asset === undefined) { return defaultName; } const metaData = asset.metaData; @@ -87,7 +87,7 @@ export const assetUtils = { } }, formattedSymbolForAsset: (asset?: ERC20Asset, defaultName: string = '???'): string => { - if (_.isUndefined(asset)) { + if (asset === undefined) { return defaultName; } const symbol = asset.metaData.symbol; @@ -98,7 +98,7 @@ export const assetUtils = { }, getAssociatedAssetDataIfExists: (assetData: string, network: Network): string | undefined => { const assetDataGroupIfExists = _.find(assetDataNetworkMapping, value => value[network] === assetData); - if (_.isUndefined(assetDataGroupIfExists)) { + if (assetDataGroupIfExists === undefined) { return; } return assetDataGroupIfExists[Network.Mainnet]; diff --git a/packages/instant/src/util/env.ts b/packages/instant/src/util/env.ts index 7322da25e3..600017fb97 100644 --- a/packages/instant/src/util/env.ts +++ b/packages/instant/src/util/env.ts @@ -51,9 +51,9 @@ export const envUtil = { return ProviderType.Parity; } else if (anyProvider.isMetaMask) { return ProviderType.MetaMask; - } else if (!_.isUndefined(_.get(window, 'SOFA'))) { + } else if (_.get(window, 'SOFA') !== undefined) { return ProviderType.CoinbaseWallet; - } else if (!_.isUndefined(_.get(window, '__CIPHER__'))) { + } else if (_.get(window, '__CIPHER__') !== undefined) { return ProviderType.Cipher; } else if (envUtil.getBrowser() === Browser.Opera && !anyProvider.isMetaMask) { return ProviderType.Opera; @@ -62,14 +62,14 @@ export const envUtil = { }, getProviderName(provider: ZeroExProvider): string { const providerTypeIfExists = envUtil.getProviderType(provider); - if (_.isUndefined(providerTypeIfExists)) { + if (providerTypeIfExists === undefined) { return provider.constructor.name; } return PROVIDER_TYPE_TO_NAME[providerTypeIfExists]; }, getProviderDisplayName(provider: ZeroExProvider): string { const providerTypeIfExists = envUtil.getProviderType(provider); - if (_.isUndefined(providerTypeIfExists)) { + if (providerTypeIfExists === undefined) { return 'Wallet'; } return PROVIDER_TYPE_TO_NAME[providerTypeIfExists]; diff --git a/packages/instant/src/util/error_reporter.ts b/packages/instant/src/util/error_reporter.ts index 8d74816849..a419f36c51 100644 --- a/packages/instant/src/util/error_reporter.ts +++ b/packages/instant/src/util/error_reporter.ts @@ -27,7 +27,7 @@ const getRollbarHostDomains = (): string[] => { let rollbar: any; // Configures rollbar and sets up error catching export const setupRollbar = (): any => { - if (_.isUndefined(rollbar) && ROLLBAR_CLIENT_TOKEN && ROLLBAR_ENABLED) { + if (rollbar === undefined && ROLLBAR_CLIENT_TOKEN && ROLLBAR_ENABLED) { const hostDomains = getRollbarHostDomains(); rollbar = new Rollbar({ accessToken: ROLLBAR_CLIENT_TOKEN, diff --git a/packages/instant/src/util/etherscan.ts b/packages/instant/src/util/etherscan.ts index f9bf828272..b22bd0043b 100644 --- a/packages/instant/src/util/etherscan.ts +++ b/packages/instant/src/util/etherscan.ts @@ -15,14 +15,14 @@ const etherscanPrefix = (networkId: number): string | undefined => { export const etherscanUtil = { getEtherScanTxnAddressIfExists: (txHash: string, networkId: number) => { const prefix = etherscanPrefix(networkId); - if (_.isUndefined(prefix)) { + if (prefix === undefined) { return; } return `https://${prefix}etherscan.io/tx/${txHash}`; }, getEtherScanEthAddressIfExists: (ethAddress: string, networkId: number) => { const prefix = etherscanPrefix(networkId); - if (_.isUndefined(prefix)) { + if (prefix === undefined) { return; } return `https://${prefix}etherscan.io/address/${ethAddress}`; diff --git a/packages/instant/src/util/format.ts b/packages/instant/src/util/format.ts index 61aeb839fc..f48f358b25 100644 --- a/packages/instant/src/util/format.ts +++ b/packages/instant/src/util/format.ts @@ -10,7 +10,7 @@ export const format = { decimalPlaces: number = 4, defaultText: React.ReactNode = '0 ETH', ): React.ReactNode => { - if (_.isUndefined(ethBaseUnitAmount)) { + if (ethBaseUnitAmount === undefined) { return defaultText; } const ethUnitAmount = Web3Wrapper.toUnitAmount(ethBaseUnitAmount, ETH_DECIMALS); @@ -22,7 +22,7 @@ export const format = { defaultText: React.ReactNode = '0 ETH', minUnitAmountToDisplay: BigNumber = new BigNumber('0.00001'), ): React.ReactNode => { - if (_.isUndefined(ethUnitAmount)) { + if (ethUnitAmount === undefined) { return defaultText; } let roundedAmount = ethUnitAmount.decimalPlaces(decimalPlaces).precision(decimalPlaces); @@ -47,7 +47,7 @@ export const format = { defaultText: React.ReactNode = '$0.00', minUnitAmountToDisplay: BigNumber = new BigNumber('0.00001'), ): React.ReactNode => { - if (_.isUndefined(ethBaseUnitAmount) || _.isUndefined(ethUsdPrice)) { + if (ethBaseUnitAmount === undefined || ethUsdPrice === undefined) { return defaultText; } const ethUnitAmount = Web3Wrapper.toUnitAmount(ethBaseUnitAmount, ETH_DECIMALS); @@ -59,7 +59,7 @@ export const format = { decimalPlaces: number = 2, defaultText: React.ReactNode = '$0.00', ): React.ReactNode => { - if (_.isUndefined(ethUnitAmount) || _.isUndefined(ethUsdPrice)) { + if (ethUnitAmount === undefined || ethUsdPrice === undefined) { return defaultText; } const rawUsdPrice = ethUnitAmount.multipliedBy(ethUsdPrice); diff --git a/packages/instant/src/util/heap.ts b/packages/instant/src/util/heap.ts index 279ff3059a..63d96e63b5 100644 --- a/packages/instant/src/util/heap.ts +++ b/packages/instant/src/util/heap.ts @@ -29,7 +29,7 @@ const getWindow = (): ModifiedWindow => { }; const setupZeroExInstantHeap = () => { - if (_.isUndefined(HEAP_ANALYTICS_ID)) { + if (HEAP_ANALYTICS_ID === undefined) { return; } @@ -94,7 +94,7 @@ export const heapUtil = { return setupZeroExInstantHeap(); }, evaluateHeapCall: (heapFunctionCall: (heap: HeapAnalytics) => void): void => { - if (_.isUndefined(HEAP_ANALYTICS_ID)) { + if (HEAP_ANALYTICS_ID === undefined) { return; } diff --git a/packages/instant/src/util/heartbeater.ts b/packages/instant/src/util/heartbeater.ts index e700d489ea..9c4c7e06dd 100644 --- a/packages/instant/src/util/heartbeater.ts +++ b/packages/instant/src/util/heartbeater.ts @@ -13,7 +13,7 @@ export class Heartbeater { } public start(intervalTimeMs: number): void { - if (!_.isUndefined(this._intervalId)) { + if (this._intervalId !== undefined) { throw new Error('Heartbeat is running, please stop before restarting'); } diff --git a/packages/instant/src/util/maybe_big_number.ts b/packages/instant/src/util/maybe_big_number.ts index 95fbd86952..6b246f6a43 100644 --- a/packages/instant/src/util/maybe_big_number.ts +++ b/packages/instant/src/util/maybe_big_number.ts @@ -17,10 +17,10 @@ export const maybeBigNumberUtil = { return validBigNumber.isNaN() ? undefined : validBigNumber; }, areMaybeBigNumbersEqual: (val1: Maybe, val2: Maybe): boolean => { - if (!_.isUndefined(val1) && !_.isUndefined(val2)) { + if (val1 !== undefined && val2 !== undefined) { return val1.isEqualTo(val2); } - return _.isUndefined(val1) && _.isUndefined(val2); + return val1 === undefined && val2 === undefined; }, // converts a BigNumber or String to the BigNumber used by 0x libraries toMaybeBigNumber: (value: any): Maybe => { diff --git a/packages/instant/src/util/order_coercion.ts b/packages/instant/src/util/order_coercion.ts index a1b468bafc..d56dcc77d7 100644 --- a/packages/instant/src/util/order_coercion.ts +++ b/packages/instant/src/util/order_coercion.ts @@ -15,7 +15,7 @@ export const orderCoercionUtil = { const result = _.assign({}, obj); _.each(fields, field => { _.update(result, field, (value: string) => { - if (_.isUndefined(value)) { + if (value === undefined) { throw new Error(`Could not find field '${field}' while converting fields to BigNumber.`); } return coerceBigNumberOrString(value); diff --git a/packages/instant/src/util/provider_factory.ts b/packages/instant/src/util/provider_factory.ts index e84cecd9a0..cde241527d 100644 --- a/packages/instant/src/util/provider_factory.ts +++ b/packages/instant/src/util/provider_factory.ts @@ -9,12 +9,12 @@ import { Maybe, Network } from '../types'; export const providerFactory = { getInjectedProviderIfExists: (): Maybe => { const injectedProviderIfExists = (window as any).ethereum; - if (!_.isUndefined(injectedProviderIfExists)) { + if (injectedProviderIfExists !== undefined) { const provider = providerUtils.standardizeOrThrow(injectedProviderIfExists); return provider; } const injectedWeb3IfExists = (window as any).web3; - if (!_.isUndefined(injectedWeb3IfExists) && !_.isUndefined(injectedWeb3IfExists.currentProvider)) { + if (injectedWeb3IfExists !== undefined && injectedWeb3IfExists.currentProvider !== undefined) { const currentProvider = injectedWeb3IfExists.currentProvider; const provider = providerUtils.standardizeOrThrow(currentProvider); return provider; diff --git a/packages/instant/src/util/provider_state_factory.ts b/packages/instant/src/util/provider_state_factory.ts index f57546e920..1c35dc688b 100644 --- a/packages/instant/src/util/provider_state_factory.ts +++ b/packages/instant/src/util/provider_state_factory.ts @@ -17,7 +17,7 @@ export const providerStateFactory = { supportedProvider?: SupportedProvider, walletDisplayName?: string, ): ProviderState => { - if (!_.isUndefined(supportedProvider)) { + if (supportedProvider !== undefined) { const provider = providerUtils.standardizeOrThrow(supportedProvider); return providerStateFactory.getInitialProviderStateFromProvider( orderSource, @@ -59,7 +59,7 @@ export const providerStateFactory = { walletDisplayName?: string, ): Maybe => { const injectedProviderIfExists = providerFactory.getInjectedProviderIfExists(); - if (!_.isUndefined(injectedProviderIfExists)) { + if (injectedProviderIfExists !== undefined) { const providerState: ProviderState = { name: envUtil.getProviderName(injectedProviderIfExists), displayName: walletDisplayName || envUtil.getProviderDisplayName(injectedProviderIfExists), diff --git a/packages/json-schemas/CHANGELOG.json b/packages/json-schemas/CHANGELOG.json index d98ab42de3..e5bf33f484 100644 --- a/packages/json-schemas/CHANGELOG.json +++ b/packages/json-schemas/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "3.0.9", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "3.0.8", diff --git a/packages/json-schemas/CHANGELOG.md b/packages/json-schemas/CHANGELOG.md index 0feeef64dc..6637f18f44 100644 --- a/packages/json-schemas/CHANGELOG.md +++ b/packages/json-schemas/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.9 - _April 11, 2019_ + + * Dependencies updated + ## v3.0.8 - _March 21, 2019_ * Dependencies updated diff --git a/packages/json-schemas/package.json b/packages/json-schemas/package.json index 8b62ef1749..20b63c82de 100644 --- a/packages/json-schemas/package.json +++ b/packages/json-schemas/package.json @@ -1,6 +1,6 @@ { "name": "@0x/json-schemas", - "version": "3.0.8", + "version": "3.0.9", "engines": { "node": ">=6.12" }, @@ -11,6 +11,7 @@ "build": "tsc -b", "build:ci": "yarn build", "lint": "tslint --format stylish --project . --exclude **/schemas/**/*", + "fix": "tslint --fix --format stylish --project . --exclude **/schemas/**/*", "test": "yarn run_mocha", "rebuild_and_test": "run-s clean build test", "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", @@ -39,14 +40,14 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/json-schemas/README.md", "dependencies": { - "@0x/typescript-typings": "^4.2.1", + "@0x/typescript-typings": "^4.2.2", "@types/node": "*", "jsonschema": "^1.2.0", "lodash.values": "^4.3.0" }, "devDependencies": { - "@0x/tslint-config": "^3.0.0", - "@0x/utils": "^4.3.0", + "@0x/tslint-config": "^3.0.1", + "@0x/utils": "^4.3.1", "@types/lodash.foreach": "^4.5.3", "@types/lodash.values": "^4.3.3", "@types/mocha": "^2.2.42", diff --git a/packages/metacoin/package.json b/packages/metacoin/package.json index c6c1a25f7b..48eb22c4b8 100644 --- a/packages/metacoin/package.json +++ b/packages/metacoin/package.json @@ -1,6 +1,6 @@ { "name": "@0x/metacoin", - "version": "0.0.46", + "version": "0.0.47", "engines": { "node": ">=6.12" }, @@ -8,6 +8,7 @@ "description": "Example solidity project using 0x dev tools", "scripts": { "lint": "tslint --format stylish --project . --exclude **/src/contract_wrappers/**/*", + "fix": "tslint --fix --format stylish --project . --exclude **/src/contract_wrappers/**/*", "build": "yarn pre_build && tsc -b", "build:ci": "yarn build", "pre_build": "run-s compile generate_contract_wrappers copy_artifacts", @@ -30,29 +31,29 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "@0x/abi-gen": "^2.0.8", - "@0x/abi-gen-templates": "^2.0.1", - "@0x/base-contract": "^5.0.4", - "@0x/sol-coverage": "^3.0.2", - "@0x/sol-profiler": "^3.1.4", - "@0x/sol-trace": "^2.0.10", - "@0x/subproviders": "^4.0.4", - "@0x/tslint-config": "^3.0.0", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", + "@0x/abi-gen": "^2.0.9", + "@0x/abi-gen-templates": "^2.0.2", + "@0x/base-contract": "^5.0.5", + "@0x/sol-coverage": "^3.0.3", + "@0x/sol-profiler": "^3.1.5", + "@0x/sol-trace": "^2.0.11", + "@0x/subproviders": "^4.0.5", + "@0x/tslint-config": "^3.0.1", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", "@types/mocha": "^2.2.42", "copyfiles": "^2.0.0", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "ethers": "~4.0.4", "lodash": "^4.17.11", "run-s": "^0.0.0" }, "devDependencies": { - "@0x/contracts-test-utils": "^3.1.1", - "@0x/dev-utils": "^2.2.0", - "@0x/sol-compiler": "^3.1.5", + "@0x/contracts-test-utils": "^3.1.2", + "@0x/dev-utils": "^2.2.1", + "@0x/sol-compiler": "^3.1.6", "chai": "^4.0.1", "chai-as-promised": "^7.1.0", "chai-bignumber": "^3.0.0", diff --git a/packages/migrations/CHANGELOG.json b/packages/migrations/CHANGELOG.json index e594d8da85..9e921b8530 100644 --- a/packages/migrations/CHANGELOG.json +++ b/packages/migrations/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "4.1.1", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "version": "4.1.0", "changes": [ diff --git a/packages/migrations/CHANGELOG.md b/packages/migrations/CHANGELOG.md index 40b4422657..2bb0f0bf3c 100644 --- a/packages/migrations/CHANGELOG.md +++ b/packages/migrations/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.1.1 - _April 11, 2019_ + + * Dependencies updated + ## v4.1.0 - _March 21, 2019_ * Add deployment of `Coordinator` and `CoordinatorRegistry` contracts to migration script (#1689) diff --git a/packages/migrations/package.json b/packages/migrations/package.json index 6494c51536..03be177892 100644 --- a/packages/migrations/package.json +++ b/packages/migrations/package.json @@ -1,6 +1,6 @@ { "name": "@0x/migrations", - "version": "4.1.0", + "version": "4.1.1", "engines": { "node": ">=6.12" }, @@ -12,6 +12,7 @@ "build:ci": "yarn build", "clean": "shx rm -rf lib ${npm_package_config_snapshot_name} ${npm_package_config_snapshot_name}-*.zip", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "migrate:v2": "run-s build script:migrate:v2", "migrate:v2:snapshot": "run-s build script:migrate:v2:snapshot", "script:migrate:v2": "node ./lib/migrate.js", @@ -35,9 +36,9 @@ }, "license": "Apache-2.0", "devDependencies": { - "@0x/dev-utils": "^2.2.0", - "@0x/tslint-config": "^3.0.0", - "@0x/types": "^2.2.1", + "@0x/dev-utils": "^2.2.1", + "@0x/tslint-config": "^3.0.1", + "@0x/types": "^2.2.2", "@types/yargs": "^11.0.0", "make-promises-safe": "^1.1.0", "npm-run-all": "^4.1.2", @@ -49,19 +50,19 @@ "yargs": "^10.0.3" }, "dependencies": { - "@0x/abi-gen-wrappers": "^4.1.0", - "@0x/base-contract": "^5.0.4", - "@0x/contract-addresses": "^2.3.0", - "@0x/contract-artifacts": "^1.4.0", - "@0x/order-utils": "^7.1.1", - "@0x/sol-compiler": "^3.1.5", - "@0x/subproviders": "^4.0.4", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", + "@0x/abi-gen-wrappers": "^4.2.0", + "@0x/base-contract": "^5.0.5", + "@0x/contract-addresses": "^2.3.1", + "@0x/contract-artifacts": "^1.5.0", + "@0x/order-utils": "^7.2.0", + "@0x/sol-compiler": "^3.1.6", + "@0x/subproviders": "^4.0.5", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", "@ledgerhq/hw-app-eth": "^4.3.0", "@types/web3-provider-engine": "^14.0.0", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "ethers": "~4.0.4", "lodash": "^4.17.11" }, diff --git a/packages/migrations/src/migrate_snapshot.ts b/packages/migrations/src/migrate_snapshot.ts index faf371f582..2392d47ecd 100644 --- a/packages/migrations/src/migrate_snapshot.ts +++ b/packages/migrations/src/migrate_snapshot.ts @@ -15,7 +15,7 @@ import { runMigrationsAsync } from './migration'; const packageJsonPath = path.join(__dirname, '..', 'package.json'); const packageJsonString = fs.readFileSync(packageJsonPath, 'utf8'); const packageJson = JSON.parse(packageJsonString); - if (_.isUndefined(packageJson.config) || _.isUndefined(packageJson.config.snapshot_name)) { + if (packageJson.config === undefined || packageJson.config.snapshot_name === undefined) { throw new Error(`Did not find 'snapshot_name' key in package.json config`); } diff --git a/packages/migrations/src/migration.ts b/packages/migrations/src/migration.ts index 54b76997a8..ecb9fb5b17 100644 --- a/packages/migrations/src/migration.ts +++ b/packages/migrations/src/migration.ts @@ -229,7 +229,7 @@ export async function runMigrationsOnceAsync( provider: Web3ProviderEngine, txDefaults: TxData, ): Promise { - if (!_.isUndefined(_cachedContractAddresses)) { + if (_cachedContractAddresses !== undefined) { return _cachedContractAddresses; } _cachedContractAddresses = await runMigrationsAsync(provider, txDefaults); diff --git a/packages/monorepo-scripts/package.json b/packages/monorepo-scripts/package.json index f1d2c7f56e..6eb5d2cddb 100644 --- a/packages/monorepo-scripts/package.json +++ b/packages/monorepo-scripts/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@0x/monorepo-scripts", - "version": "1.0.29", + "version": "1.0.30", "engines": { "node": ">=6.12" }, @@ -12,6 +12,7 @@ "build": "tsc -b", "build:ci": "yarn build", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "clean": "shx rm -rf lib", "test:publish": "run-s build script:publish", "find_unused_deps": "run-s build script:find_unused_deps", @@ -47,8 +48,8 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/types": "^2.2.1", - "@0x/utils": "^4.3.0", + "@0x/types": "^2.2.2", + "@0x/utils": "^4.3.1", "@lerna/batch-packages": "^3.0.0-beta.18", "@types/depcheck": "^0.6.0", "async-child-process": "^1.1.1", diff --git a/packages/monorepo-scripts/src/prepublish_checks.ts b/packages/monorepo-scripts/src/prepublish_checks.ts index 021e572266..ec6251fb93 100644 --- a/packages/monorepo-scripts/src/prepublish_checks.ts +++ b/packages/monorepo-scripts/src/prepublish_checks.ts @@ -64,7 +64,7 @@ async function checkCurrentVersionMatchesLatestPublishedNPMPackageAsync( const packageName = pkg.packageJson.name; const packageVersion = pkg.packageJson.version; const packageRegistryJsonIfExists = await npmUtils.getPackageRegistryJsonIfExistsAsync(packageName); - if (_.isUndefined(packageRegistryJsonIfExists)) { + if (packageRegistryJsonIfExists === undefined) { continue; // noop for packages not yet published to NPM } const allVersionsIncludingUnpublished = npmUtils.getPreviouslyPublishedVersions(packageRegistryJsonIfExists); @@ -101,7 +101,7 @@ async function checkChangelogFormatAsync(updatedPublicPackages: Package[]): Prom const currentVersion = pkg.packageJson.version; if (!_.isEmpty(changelog)) { const lastEntry = changelog[0]; - const doesLastEntryHaveTimestamp = !_.isUndefined(lastEntry.timestamp); + const doesLastEntryHaveTimestamp = lastEntry.timestamp !== undefined; if (semver.lt(lastEntry.version, currentVersion)) { changeLogInconsistencies.push({ packageJsonVersion: currentVersion, @@ -142,14 +142,14 @@ async function checkPublishRequiredSetupAsync(): Promise { } // Check to see if Git personal token setup - if (_.isUndefined(constants.githubPersonalAccessToken)) { + if (constants.githubPersonalAccessToken === undefined) { throw new Error( 'You must have a Github personal access token set to an envVar named `GITHUB_PERSONAL_ACCESS_TOKEN_0X_JS`. Add it then try again.', ); } // Check to see if discord URL is set up - if (_.isUndefined(constants.discordAlertWebhookUrl)) { + if (constants.discordAlertWebhookUrl === undefined) { throw new Error( 'You must have a discord webhook URL set to an envVar named `DISCORD_GITHUB_RELEASE_WEBHOOK_URL`. Add it then try again.', ); diff --git a/packages/monorepo-scripts/src/publish.ts b/packages/monorepo-scripts/src/publish.ts index ddb2811f24..ce772efce2 100644 --- a/packages/monorepo-scripts/src/publish.ts +++ b/packages/monorepo-scripts/src/publish.ts @@ -61,7 +61,7 @@ async function confirmAsync(message: string): Promise { const currentVersion = pkg.packageJson.version; const packageName = pkg.packageJson.name; const nextPatchVersionIfValid = semver.inc(currentVersion, 'patch'); - if (!_.isNull(nextPatchVersionIfValid)) { + if (nextPatchVersionIfValid !== null) { packageToNextVersion[packageName] = nextPatchVersionIfValid; } else { throw new Error(`Encountered invalid semver version: ${currentVersion} for package: ${packageName}`); @@ -110,9 +110,9 @@ async function publishImagesToDockerHubAsync(allUpdatedPackages: Package[]): Pro for (const pkg of allUpdatedPackages) { const packageJSON = pkg.packageJson; const shouldPublishDockerImage = - !_.isUndefined(packageJSON.config) && - !_.isUndefined(packageJSON.config.postpublish) && - !_.isUndefined(packageJSON.config.postpublish.dockerHubRepo); + packageJSON.config !== undefined && + packageJSON.config.postpublish !== undefined && + packageJSON.config.postpublish.dockerHubRepo !== undefined; if (!shouldPublishDockerImage) { continue; } @@ -143,7 +143,7 @@ function getPackagesWithDocs(allUpdatedPackages: Package[]): Package[] { const rootPackageJsonPath = `${constants.monorepoRootPath}/package.json`; const rootPackageJSON = utils.readJSONFile(rootPackageJsonPath); const packagesWithDocPagesStringIfExist = _.get(rootPackageJSON, 'config.packagesWithDocPages', undefined); - if (_.isUndefined(packagesWithDocPagesStringIfExist)) { + if (packagesWithDocPagesStringIfExist === undefined) { return []; // None to generate & publish } const packagesWithDocPages = packagesWithDocPagesStringIfExist.split(' '); @@ -214,7 +214,7 @@ async function updateChangeLogsAsync(updatedPublicPackages: Package[]): Promise< if (shouldAddNewEntry) { // Create a new entry for a patch version with generic changelog entry. const nextPatchVersionIfValid = semver.inc(currentVersion, 'patch'); - if (_.isNull(nextPatchVersionIfValid)) { + if (nextPatchVersionIfValid === null) { throw new Error(`Encountered invalid semver version: ${currentVersion} for package: ${packageName}`); } const newChangelogEntry: VersionChangelog = { @@ -231,7 +231,7 @@ async function updateChangeLogsAsync(updatedPublicPackages: Package[]): Promise< } else { // Update existing entry with timestamp const lastEntry = changelog[0]; - if (_.isUndefined(lastEntry.timestamp)) { + if (lastEntry.timestamp === undefined) { lastEntry.timestamp = TODAYS_TIMESTAMP; } // Check version number is correct. @@ -269,7 +269,7 @@ async function lernaPublishAsync(packageToNextVersion: { [name: string]: string function updateVersionNumberIfNeeded(currentVersion: string, proposedNextVersion: string): string { const updatedVersionIfValid = semver.inc(currentVersion, 'patch'); - if (_.isNull(updatedVersionIfValid)) { + if (updatedVersionIfValid === null) { throw new Error(`Encountered invalid semver: ${currentVersion}`); } if (proposedNextVersion === currentVersion) { diff --git a/packages/monorepo-scripts/src/publish_release_notes.ts b/packages/monorepo-scripts/src/publish_release_notes.ts index d2082521cd..2d03249e6b 100644 --- a/packages/monorepo-scripts/src/publish_release_notes.ts +++ b/packages/monorepo-scripts/src/publish_release_notes.ts @@ -20,7 +20,7 @@ const args = yargs (async () => { const isDryRun = args.isDryRun; let packages; - if (_.isUndefined(args.packages)) { + if (args.packages === undefined) { const shouldIncludePrivate = false; packages = await utils.getPackagesToPublishAsync(shouldIncludePrivate); } else { diff --git a/packages/monorepo-scripts/src/test_installation.ts b/packages/monorepo-scripts/src/test_installation.ts index ec145cd326..64d60e0103 100644 --- a/packages/monorepo-scripts/src/test_installation.ts +++ b/packages/monorepo-scripts/src/test_installation.ts @@ -36,7 +36,7 @@ function findPackageIndex(packages: Package[], packageName: string): number { } function logIfDefined(x: any): void { - if (!_.isUndefined(x)) { + if (x !== undefined) { utils.log(x); } } @@ -53,7 +53,7 @@ function logIfDefined(x: any): void { const packages = utils.getTopologicallySortedPackages(monorepoRootPath); const installablePackages = _.filter( packages, - pkg => !pkg.packageJson.private && !_.isUndefined(pkg.packageJson.main) && pkg.packageJson.main.endsWith('.js'), + pkg => !pkg.packageJson.private && pkg.packageJson.main !== undefined && pkg.packageJson.main.endsWith('.js'), ); const CHUNK_SIZE = 15; const chunkedInstallablePackages = _.chunk(installablePackages, CHUNK_SIZE); diff --git a/packages/monorepo-scripts/src/utils/changelog_utils.ts b/packages/monorepo-scripts/src/utils/changelog_utils.ts index 0b46bf670d..0373c05c0e 100644 --- a/packages/monorepo-scripts/src/utils/changelog_utils.ts +++ b/packages/monorepo-scripts/src/utils/changelog_utils.ts @@ -26,7 +26,7 @@ export const changelogUtils = { }, getChangelogMdChange(change: Change): string { let line = ` * ${change.note}`; - if (!_.isUndefined(change.pr)) { + if (change.pr !== undefined) { line += ` (#${change.pr})`; } return line; @@ -71,7 +71,7 @@ export const changelogUtils = { getChangelogOrCreateIfMissing(packageName: string, packageLocation: string): Changelog { const changelogJSONPath = path.join(packageLocation, 'CHANGELOG.json'); let changelogJsonIfExists = changelogUtils.getChangelogJSONIfExists(changelogJSONPath); - if (_.isUndefined(changelogJsonIfExists)) { + if (changelogJsonIfExists === undefined) { // If none exists, create new, empty one. changelogJsonIfExists = '[]'; fs.writeFileSync(changelogJSONPath, changelogJsonIfExists); diff --git a/packages/monorepo-scripts/src/utils/doc_generate_and_upload_utils.ts b/packages/monorepo-scripts/src/utils/doc_generate_and_upload_utils.ts index c0e86ad448..ac9be149dd 100644 --- a/packages/monorepo-scripts/src/utils/doc_generate_and_upload_utils.ts +++ b/packages/monorepo-scripts/src/utils/doc_generate_and_upload_utils.ts @@ -59,7 +59,7 @@ export class DocGenerateAndUploadUtils { const SUB_TYPE_PROPERTY_NAMES = ['inheritedFrom', 'overwrites', 'extendedTypes', 'implementationOf']; const TS_MAPPED_TYPES = ['Partial', 'Promise', 'Readonly', 'Pick', 'Record']; if ( - !_.isUndefined(node.type) && + node.type !== undefined && _.isString(node.type) && node.type === 'reference' && !_.includes(TS_MAPPED_TYPES, node.name) && @@ -96,7 +96,7 @@ export class DocGenerateAndUploadUtils { ); const exportPathToExportedItems: ExportPathToExportedItems = {}; const exportPathOrder: string[] = []; - const exportsToOmit = _.isUndefined(omitExports) ? [] : omitExports; + const exportsToOmit = omitExports === undefined ? [] : omitExports; processNode(sourceFile); @@ -104,19 +104,20 @@ export class DocGenerateAndUploadUtils { switch (node.kind) { case ts.SyntaxKind.ExportDeclaration: { const exportClause = (node as any).exportClause; - if (_.isUndefined(exportClause)) { + if (exportClause === undefined) { return; } const exportPath = exportClause.parent.moduleSpecifier.text; _.each(exportClause.elements, element => { const exportItem = element.name.escapedText; if (!_.includes(exportsToOmit, exportItem)) { - exportPathToExportedItems[exportPath] = _.isUndefined(exportPathToExportedItems[exportPath]) - ? [exportItem] - : [...exportPathToExportedItems[exportPath], exportItem]; + exportPathToExportedItems[exportPath] = + exportPathToExportedItems[exportPath] === undefined + ? [exportItem] + : [...exportPathToExportedItems[exportPath], exportItem]; } }); - if (!_.isUndefined(exportPathToExportedItems[exportPath])) { + if (exportPathToExportedItems[exportPath] !== undefined) { exportPathOrder.push(exportPath); } break; @@ -127,21 +128,21 @@ export class DocGenerateAndUploadUtils { let exportPath = './index'; if (foundNode.parent && foundNode.parent.name) { const exportItem = foundNode.parent.name.escapedText; - const isExportImportRequireStatement = !_.isUndefined( - _.get(foundNode, 'parent.moduleReference.expression.text'), - ); + const isExportImportRequireStatement = + _.get(foundNode, 'parent.moduleReference.expression.text') !== undefined; if (isExportImportRequireStatement) { exportPath = foundNode.parent.moduleReference.expression.text; } if (!_.includes(exportsToOmit, exportItem)) { - exportPathToExportedItems[exportPath] = _.isUndefined(exportPathToExportedItems[exportPath]) - ? [exportItem] - : [...exportPathToExportedItems[exportPath], exportItem]; + exportPathToExportedItems[exportPath] = + exportPathToExportedItems[exportPath] === undefined + ? [exportItem] + : [...exportPathToExportedItems[exportPath], exportItem]; } } if ( !_.includes(exportPathOrder, exportPath) && - !_.isUndefined(exportPathToExportedItems[exportPath]) + exportPathToExportedItems[exportPath] !== undefined ) { exportPathOrder.push(exportPath); } @@ -173,7 +174,7 @@ export class DocGenerateAndUploadUtils { const pkg = _.find(monorepoPackages, monorepoPackage => { return _.includes(monorepoPackage.packageJson.name, packageName); }); - if (_.isUndefined(pkg)) { + if (pkg === undefined) { throw new Error(`Couldn't find a package.json for ${packageName}`); } this._packageJson = pkg.packageJson; @@ -232,7 +233,7 @@ export class DocGenerateAndUploadUtils { const externalExports: string[] = this._getAllExternalExports(); _.each(externalExports, externalExport => { const linkIfExists = docGenConfigs.EXTERNAL_EXPORT_TO_LINK[externalExport]; - if (_.isUndefined(linkIfExists)) { + if (linkIfExists === undefined) { externalExportsWithoutLinks.push(externalExport); return; } @@ -251,9 +252,10 @@ export class DocGenerateAndUploadUtils { const exportPathToTypedocNames: ExportNameToTypedocNames = {}; _.each(modifiedTypedocOutput.children, file => { const exportPath = this._findExportPathGivenTypedocName(file.name); - exportPathToTypedocNames[exportPath] = _.isUndefined(exportPathToTypedocNames[exportPath]) - ? [file.name] - : [...exportPathToTypedocNames[exportPath], file.name]; + exportPathToTypedocNames[exportPath] = + exportPathToTypedocNames[exportPath] === undefined + ? [file.name] + : [...exportPathToTypedocNames[exportPath], file.name]; }); // Since we need additional metadata included in the doc JSON, we nest the TypeDoc JSON @@ -305,7 +307,7 @@ export class DocGenerateAndUploadUtils { _.each(referenceNames, referenceName => { if ( !_.includes(allExportedItems, referenceName) && - _.isUndefined(docGenConfigs.EXTERNAL_TYPE_TO_LINK[referenceName]) + docGenConfigs.EXTERNAL_TYPE_TO_LINK[referenceName] === undefined ) { missingReferences.push(referenceName); } @@ -421,7 +423,7 @@ export class DocGenerateAndUploadUtils { const matchingSanitizedExportPathIfExists = _.find(sanitizedExportPathsSortedByLength, p => { return _.startsWith(typeDocNameWithoutQuotes, p); }); - if (_.isUndefined(matchingSanitizedExportPathIfExists)) { + if (matchingSanitizedExportPathIfExists === undefined) { throw new Error(`Didn't find an exportPath for ${typeDocNameWithoutQuotes}`); } const matchingExportPath = sanitizedExportPathToExportPath[matchingSanitizedExportPathIfExists]; @@ -431,7 +433,7 @@ export class DocGenerateAndUploadUtils { const externalExports: string[] = []; _.each(this._exportPathToExportedItems, (exportedItems, exportPath) => { const pathIfExists = this._monoRepoPkgNameToPath[exportPath]; - if (_.isUndefined(pathIfExists) && !_.startsWith(exportPath, './')) { + if (pathIfExists === undefined && !_.startsWith(exportPath, './')) { _.each(exportedItems, exportedItem => { externalExports.push(exportedItem); }); @@ -451,7 +453,7 @@ export class DocGenerateAndUploadUtils { } const pathIfExists = this._monoRepoPkgNameToPath[exportPath]; - if (_.isUndefined(pathIfExists)) { + if (pathIfExists === undefined) { return; // It's an external package } diff --git a/packages/monorepo-scripts/src/utils/github_release_utils.ts b/packages/monorepo-scripts/src/utils/github_release_utils.ts index 48704f3aad..228f32ea92 100644 --- a/packages/monorepo-scripts/src/utils/github_release_utils.ts +++ b/packages/monorepo-scripts/src/utils/github_release_utils.ts @@ -47,7 +47,7 @@ export async function publishReleaseNotesAsync( aggregateNotes += getReleaseNotesForPackage(pkg.location, pkg.packageJson.name); const packageAssets = _.get(pkg.packageJson, 'config.postpublish.assets'); - if (!_.isUndefined(packageAssets)) { + if (packageAssets !== undefined) { assets = [...assets, ...packageAssets]; } }); diff --git a/packages/monorepo-scripts/src/utils/utils.ts b/packages/monorepo-scripts/src/utils/utils.ts index 20a6932c3b..c2969a3ba4 100644 --- a/packages/monorepo-scripts/src/utils/utils.ts +++ b/packages/monorepo-scripts/src/utils/utils.ts @@ -30,7 +30,7 @@ export const utils = { }, getPackages(rootDir: string): Package[] { const rootPackageJson = utils.readJSONFile(`${rootDir}/package.json`); - if (_.isUndefined(rootPackageJson.workspaces)) { + if (rootPackageJson.workspaces === undefined) { throw new Error(`Did not find 'workspaces' key in root package.json`); } const packages = []; @@ -104,7 +104,7 @@ export const utils = { nextVersionIfValid = semver.eq(lastEntry.version, currentVersion) ? semver.inc(currentVersion, 'patch') : lastEntry.version; - if (_.isNull(nextVersionIfValid)) { + if (nextVersionIfValid === null) { throw new Error(`Encountered invalid semver: ${currentVersion} associated with ${packageName}`); } return nextVersionIfValid; @@ -144,7 +144,7 @@ export const utils = { const packageNameIfExists = _.find(packageNames, name => { return _.includes(tag, `${name}@`); }); - if (_.isUndefined(packageNameIfExists)) { + if (packageNameIfExists === undefined) { return; // ignore tags not related to a package we care about. } const splitTag = tag.split(`${packageNameIfExists}@`); diff --git a/packages/order-utils/CHANGELOG.json b/packages/order-utils/CHANGELOG.json index ab85d41574..fe19ba8c23 100644 --- a/packages/order-utils/CHANGELOG.json +++ b/packages/order-utils/CHANGELOG.json @@ -6,7 +6,8 @@ "note": "Added `orderCalculationUtils`", "pr": 1714 } - ] + ], + "timestamp": 1554997931 }, { "timestamp": 1553183790, diff --git a/packages/order-utils/CHANGELOG.md b/packages/order-utils/CHANGELOG.md index e771b82e33..de023c48bc 100644 --- a/packages/order-utils/CHANGELOG.md +++ b/packages/order-utils/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v7.2.0 - _April 11, 2019_ + + * Added `orderCalculationUtils` (#1714) + ## v7.1.1 - _March 21, 2019_ * Dependencies updated diff --git a/packages/order-utils/package.json b/packages/order-utils/package.json index 5452ea7a3a..f8e7984ce6 100644 --- a/packages/order-utils/package.json +++ b/packages/order-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/order-utils", - "version": "7.1.1", + "version": "7.2.0", "engines": { "node": ">=6.12" }, @@ -18,6 +18,7 @@ "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", "clean": "shx rm -rf lib generated_docs", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --tsconfig typedoc-tsconfig.json --json $JSON_FILE_PATH $PROJECT_FILES" }, "config": { @@ -35,8 +36,8 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/order-utils/README.md", "devDependencies": { - "@0x/dev-utils": "^2.2.0", - "@0x/tslint-config": "^3.0.0", + "@0x/dev-utils": "^2.2.1", + "@0x/tslint-config": "^3.0.1", "@types/bn.js": "^4.11.0", "@types/lodash": "4.14.104", "@types/web3-provider-engine": "^14.0.0", @@ -55,19 +56,19 @@ "web3-provider-engine": "14.0.6" }, "dependencies": { - "@0x/abi-gen-wrappers": "^4.1.0", - "@0x/assert": "^2.0.8", - "@0x/base-contract": "^5.0.4", - "@0x/contract-addresses": "^2.3.0", - "@0x/contract-artifacts": "^1.4.0", - "@0x/json-schemas": "^3.0.8", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", + "@0x/abi-gen-wrappers": "^4.2.0", + "@0x/assert": "^2.0.9", + "@0x/base-contract": "^5.0.5", + "@0x/contract-addresses": "^2.3.1", + "@0x/contract-artifacts": "^1.5.0", + "@0x/json-schemas": "^3.0.9", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", "@types/node": "*", "bn.js": "^4.11.8", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "ethereumjs-abi": "0.6.5", "ethereumjs-util": "^5.1.1", "ethers": "~4.0.4", diff --git a/packages/order-utils/src/eip712_utils.ts b/packages/order-utils/src/eip712_utils.ts index f249ba3060..286bd0f0d8 100644 --- a/packages/order-utils/src/eip712_utils.ts +++ b/packages/order-utils/src/eip712_utils.ts @@ -38,8 +38,8 @@ export const eip712Utils = { ...types, }, domain: { - name: _.isUndefined(domain.name) ? constants.EXCHANGE_DOMAIN_NAME : domain.name, - version: _.isUndefined(domain.version) ? constants.EXCHANGE_DOMAIN_VERSION : domain.version, + name: domain.name === undefined ? constants.EXCHANGE_DOMAIN_NAME : domain.name, + version: domain.version === undefined ? constants.EXCHANGE_DOMAIN_VERSION : domain.version, verifyingContract: domain.verifyingContractAddress, }, message, diff --git a/packages/order-utils/src/order_state_utils.ts b/packages/order-utils/src/order_state_utils.ts index 430178b5d8..ad8b65cc78 100644 --- a/packages/order-utils/src/order_state_utils.ts +++ b/packages/order-utils/src/order_state_utils.ts @@ -310,9 +310,8 @@ export class OrderStateUtils { if (assetDataUtils.isERC20AssetData(decodedAssetData) || assetDataUtils.isERC721AssetData(decodedAssetData)) { const balance = await this._balanceAndProxyAllowanceFetcher.getBalanceAsync(assetData, traderAddress); const tokenAddress = decodedAssetData.tokenAddress; - balances[tokenAddress] = _.isUndefined(initialBalances[tokenAddress]) - ? balance - : balances[tokenAddress].plus(balance); + balances[tokenAddress] = + initialBalances[tokenAddress] === undefined ? balance : balances[tokenAddress].plus(balance); } else if (assetDataUtils.isMultiAssetData(decodedAssetData)) { for (const assetDataElement of decodedAssetData.nestedAssetData) { balances = await this._getAssetBalancesAsync(assetDataElement, traderAddress, balances); @@ -333,9 +332,8 @@ export class OrderStateUtils { traderAddress, ); const tokenAddress = decodedAssetData.tokenAddress; - allowances[tokenAddress] = _.isUndefined(initialAllowances[tokenAddress]) - ? allowance - : allowances[tokenAddress].plus(allowance); + allowances[tokenAddress] = + initialAllowances[tokenAddress] === undefined ? allowance : allowances[tokenAddress].plus(allowance); } else if (assetDataUtils.isMultiAssetData(decodedAssetData)) { for (const assetDataElement of decodedAssetData.nestedAssetData) { allowances = await this._getAssetBalancesAsync(assetDataElement, traderAddress, allowances); diff --git a/packages/order-utils/src/order_validation_utils.ts b/packages/order-utils/src/order_validation_utils.ts index 68628b6af4..51ab62141d 100644 --- a/packages/order-utils/src/order_validation_utils.ts +++ b/packages/order-utils/src/order_validation_utils.ts @@ -168,7 +168,7 @@ export class OrderValidationUtils { throw new Error('EXPIRED'); } let fillTakerAssetAmount = signedOrder.takerAssetAmount.minus(filledTakerTokenAmount); - if (!_.isUndefined(expectedFillTakerTokenAmount)) { + if (expectedFillTakerTokenAmount !== undefined) { fillTakerAssetAmount = expectedFillTakerTokenAmount; } await OrderValidationUtils.validateFillOrderBalancesAllowancesThrowIfInvalidAsync( diff --git a/packages/order-utils/src/parsing_utils.ts b/packages/order-utils/src/parsing_utils.ts index 98c6899fef..4659467404 100644 --- a/packages/order-utils/src/parsing_utils.ts +++ b/packages/order-utils/src/parsing_utils.ts @@ -6,7 +6,7 @@ export const orderParsingUtils = { const result = _.assign({}, obj); _.each(fields, field => { _.update(result, field, (value: string) => { - if (_.isUndefined(value)) { + if (value === undefined) { throw new Error(`Could not find field '${field}' while converting string fields to BigNumber.`); } return new BigNumber(value); diff --git a/packages/order-utils/src/signature_utils.ts b/packages/order-utils/src/signature_utils.ts index 8a5fb711c8..6301236d45 100644 --- a/packages/order-utils/src/signature_utils.ts +++ b/packages/order-utils/src/signature_utils.ts @@ -36,7 +36,7 @@ export const signatureUtils = { assert.isHexString('signature', signature); assert.isETHAddressHex('signerAddress', signerAddress); const signatureTypeIndexIfExists = utils.getSignatureTypeIndexIfExists(signature); - if (_.isUndefined(signatureTypeIndexIfExists)) { + if (signatureTypeIndexIfExists === undefined) { throw new Error(`Unrecognized signatureType in signature: ${signature}`); } diff --git a/packages/order-utils/src/store/balance_and_proxy_allowance_lazy_store.ts b/packages/order-utils/src/store/balance_and_proxy_allowance_lazy_store.ts index ae3e362383..00974e28f7 100644 --- a/packages/order-utils/src/store/balance_and_proxy_allowance_lazy_store.ts +++ b/packages/order-utils/src/store/balance_and_proxy_allowance_lazy_store.ts @@ -37,7 +37,7 @@ export class BalanceAndProxyAllowanceLazyStore implements AbstractBalanceAndProx * @param userAddress Ethereum address of interest */ public async getBalanceAsync(assetData: string, userAddress: string): Promise { - if (_.isUndefined(this._balance[assetData]) || _.isUndefined(this._balance[assetData][userAddress])) { + if (this._balance[assetData] === undefined || this._balance[assetData][userAddress] === undefined) { const balance = await this._balanceAndProxyAllowanceFetcher.getBalanceAsync(assetData, userAddress); this.setBalance(assetData, userAddress, balance); } @@ -50,7 +50,7 @@ export class BalanceAndProxyAllowanceLazyStore implements AbstractBalanceAndProx * @param userAddress Ethereum address of interest */ public setBalance(assetData: string, userAddress: string, balance: BigNumber): void { - if (_.isUndefined(this._balance[assetData])) { + if (this._balance[assetData] === undefined) { this._balance[assetData] = {}; } this._balance[assetData][userAddress] = balance; @@ -61,7 +61,7 @@ export class BalanceAndProxyAllowanceLazyStore implements AbstractBalanceAndProx * @param userAddress Ethereum address of interest */ public deleteBalance(assetData: string, userAddress: string): void { - if (!_.isUndefined(this._balance[assetData])) { + if (this._balance[assetData] !== undefined) { delete this._balance[assetData][userAddress]; if (_.isEmpty(this._balance[assetData])) { delete this._balance[assetData]; @@ -75,8 +75,8 @@ export class BalanceAndProxyAllowanceLazyStore implements AbstractBalanceAndProx */ public async getProxyAllowanceAsync(assetData: string, userAddress: string): Promise { if ( - _.isUndefined(this._proxyAllowance[assetData]) || - _.isUndefined(this._proxyAllowance[assetData][userAddress]) + this._proxyAllowance[assetData] === undefined || + this._proxyAllowance[assetData][userAddress] === undefined ) { const proxyAllowance = await this._balanceAndProxyAllowanceFetcher.getProxyAllowanceAsync( assetData, @@ -93,7 +93,7 @@ export class BalanceAndProxyAllowanceLazyStore implements AbstractBalanceAndProx * @param userAddress Ethereum address of interest */ public setProxyAllowance(assetData: string, userAddress: string, proxyAllowance: BigNumber): void { - if (_.isUndefined(this._proxyAllowance[assetData])) { + if (this._proxyAllowance[assetData] === undefined) { this._proxyAllowance[assetData] = {}; } this._proxyAllowance[assetData][userAddress] = proxyAllowance; @@ -104,7 +104,7 @@ export class BalanceAndProxyAllowanceLazyStore implements AbstractBalanceAndProx * @param userAddress Ethereum address of interest */ public deleteProxyAllowance(assetData: string, userAddress: string): void { - if (!_.isUndefined(this._proxyAllowance[assetData])) { + if (this._proxyAllowance[assetData] !== undefined) { delete this._proxyAllowance[assetData][userAddress]; if (_.isEmpty(this._proxyAllowance[assetData])) { delete this._proxyAllowance[assetData]; @@ -123,7 +123,7 @@ export class BalanceAndProxyAllowanceLazyStore implements AbstractBalanceAndProx if ( decodedAssetData.assetProxyId === AssetProxyId.ERC721 && decodedAssetData.tokenAddress === tokenAddress && - !_.isUndefined(this._proxyAllowance[assetData][userAddress]) + this._proxyAllowance[assetData][userAddress] !== undefined ) { delete this._proxyAllowance[assetData][userAddress]; } diff --git a/packages/order-utils/src/store/order_filled_cancelled_lazy_store.ts b/packages/order-utils/src/store/order_filled_cancelled_lazy_store.ts index afd6f11081..cf4b195874 100644 --- a/packages/order-utils/src/store/order_filled_cancelled_lazy_store.ts +++ b/packages/order-utils/src/store/order_filled_cancelled_lazy_store.ts @@ -33,7 +33,7 @@ export class OrderFilledCancelledLazyStore implements AbstractOrderFilledCancell * @return filledTakerAssetAmount */ public async getFilledTakerAmountAsync(orderHash: string): Promise { - if (_.isUndefined(this._filledTakerAmount[orderHash])) { + if (this._filledTakerAmount[orderHash] === undefined) { const filledTakerAmount = await this._orderFilledCancelledFetcher.getFilledTakerAmountAsync(orderHash); this.setFilledTakerAmount(orderHash, filledTakerAmount); } @@ -62,7 +62,7 @@ export class OrderFilledCancelledLazyStore implements AbstractOrderFilledCancell */ public async getIsCancelledAsync(signedOrder: SignedOrder): Promise { const orderHash = orderHashUtils.getOrderHashHex(signedOrder); - if (_.isUndefined(this._isCancelled[orderHash])) { + if (this._isCancelled[orderHash] === undefined) { const isCancelled = await this._orderFilledCancelledFetcher.isOrderCancelledAsync(signedOrder); this.setIsCancelled(orderHash, isCancelled); } diff --git a/packages/order-watcher/CHANGELOG.json b/packages/order-watcher/CHANGELOG.json index 9b73257c8b..da94a99cb9 100644 --- a/packages/order-watcher/CHANGELOG.json +++ b/packages/order-watcher/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "4.0.6", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "4.0.5", diff --git a/packages/order-watcher/CHANGELOG.md b/packages/order-watcher/CHANGELOG.md index ebbf8189d0..c8ef5d1c3b 100644 --- a/packages/order-watcher/CHANGELOG.md +++ b/packages/order-watcher/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.0.6 - _April 11, 2019_ + + * Dependencies updated + ## v4.0.5 - _March 21, 2019_ * Dependencies updated diff --git a/packages/order-watcher/package.json b/packages/order-watcher/package.json index 4443ad1f3c..3e3d2d8a8a 100644 --- a/packages/order-watcher/package.json +++ b/packages/order-watcher/package.json @@ -1,6 +1,6 @@ { "name": "@0x/order-watcher", - "version": "4.0.5", + "version": "4.0.6", "description": "An order watcher daemon that watches for order validity", "keywords": [ "0x", @@ -15,8 +15,9 @@ "build": "yarn tsc -b", "build:ci": "yarn build", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "test:circleci": "run-s test:coverage", - "test": "yarn run_mocha", + "test": "", "rebuild_and_test": "run-s build test", "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", @@ -38,10 +39,10 @@ "node": ">=6.0.0" }, "devDependencies": { - "@0x/dev-utils": "^2.2.0", - "@0x/migrations": "^4.1.0", - "@0x/subproviders": "^4.0.4", - "@0x/tslint-config": "^3.0.0", + "@0x/dev-utils": "^2.2.1", + "@0x/migrations": "^4.1.1", + "@0x/subproviders": "^4.0.5", + "@0x/tslint-config": "^3.0.1", "@types/bintrees": "^1.0.2", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", @@ -63,21 +64,21 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/abi-gen-wrappers": "^4.1.0", - "@0x/assert": "^2.0.8", - "@0x/base-contract": "^5.0.4", - "@0x/contract-addresses": "^2.3.0", - "@0x/contract-artifacts": "^1.4.0", - "@0x/contract-wrappers": "^8.0.5", - "@0x/fill-scenarios": "^3.0.4", - "@0x/json-schemas": "^3.0.8", - "@0x/order-utils": "^7.1.1", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", + "@0x/abi-gen-wrappers": "^4.2.0", + "@0x/assert": "^2.0.9", + "@0x/base-contract": "^5.0.5", + "@0x/contract-addresses": "^2.3.1", + "@0x/contract-artifacts": "^1.5.0", + "@0x/contract-wrappers": "^9.0.0", + "@0x/fill-scenarios": "^3.0.5", + "@0x/json-schemas": "^3.0.9", + "@0x/order-utils": "^7.2.0", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", "bintrees": "^1.0.2", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "ethereumjs-blockstream": "6.0.0", "ethers": "~4.0.4", "lodash": "^4.17.11", diff --git a/packages/order-watcher/src/order_watcher/dependent_order_hashes_tracker.ts b/packages/order-watcher/src/order_watcher/dependent_order_hashes_tracker.ts index 4a2580fdd2..2f6476dcb3 100644 --- a/packages/order-watcher/src/order_watcher/dependent_order_hashes_tracker.ts +++ b/packages/order-watcher/src/order_watcher/dependent_order_hashes_tracker.ts @@ -38,8 +38,8 @@ export class DependentOrderHashesTracker { } public getDependentOrderHashesByERC721ByMaker(makerAddress: string, tokenAddress: string): string[] { if ( - _.isUndefined(this._orderHashesByERC721AddressByTokenIdByMakerAddress[makerAddress]) || - _.isUndefined(this._orderHashesByERC721AddressByTokenIdByMakerAddress[makerAddress][tokenAddress]) + this._orderHashesByERC721AddressByTokenIdByMakerAddress[makerAddress] === undefined || + this._orderHashesByERC721AddressByTokenIdByMakerAddress[makerAddress][tokenAddress] === undefined ) { return []; } @@ -87,8 +87,8 @@ export class DependentOrderHashesTracker { const tokenAddress = assetDataUtils.decodeERC20AssetData(erc20AssetData).tokenAddress; let dependentOrderHashes: string[] = []; if ( - !_.isUndefined(this._orderHashesByERC20ByMakerAddress[makerAddress]) && - !_.isUndefined(this._orderHashesByERC20ByMakerAddress[makerAddress][tokenAddress]) + this._orderHashesByERC20ByMakerAddress[makerAddress] !== undefined && + this._orderHashesByERC20ByMakerAddress[makerAddress][tokenAddress] !== undefined ) { dependentOrderHashes = Array.from(this._orderHashesByERC20ByMakerAddress[makerAddress][tokenAddress]); } @@ -99,11 +99,10 @@ export class DependentOrderHashesTracker { const tokenId = assetDataUtils.decodeERC721AssetData(erc721AssetData).tokenId; let dependentOrderHashes: string[] = []; if ( - !_.isUndefined(this._orderHashesByERC721AddressByTokenIdByMakerAddress[makerAddress]) && - !_.isUndefined(this._orderHashesByERC721AddressByTokenIdByMakerAddress[makerAddress][tokenAddress]) && - !_.isUndefined( - this._orderHashesByERC721AddressByTokenIdByMakerAddress[makerAddress][tokenAddress][tokenId.toString()], - ) + this._orderHashesByERC721AddressByTokenIdByMakerAddress[makerAddress] !== undefined && + this._orderHashesByERC721AddressByTokenIdByMakerAddress[makerAddress][tokenAddress] !== undefined && + this._orderHashesByERC721AddressByTokenIdByMakerAddress[makerAddress][tokenAddress][tokenId.toString()] !== + undefined ) { dependentOrderHashes = Array.from( this._orderHashesByERC721AddressByTokenIdByMakerAddress[makerAddress][tokenAddress][tokenId.toString()], @@ -113,10 +112,10 @@ export class DependentOrderHashesTracker { } private _addToERC20DependentOrderHashes(signedOrder: SignedOrder, erc20TokenAddress: string): void { const orderHash = orderHashUtils.getOrderHashHex(signedOrder); - if (_.isUndefined(this._orderHashesByERC20ByMakerAddress[signedOrder.makerAddress])) { + if (this._orderHashesByERC20ByMakerAddress[signedOrder.makerAddress] === undefined) { this._orderHashesByERC20ByMakerAddress[signedOrder.makerAddress] = {}; } - if (_.isUndefined(this._orderHashesByERC20ByMakerAddress[signedOrder.makerAddress][erc20TokenAddress])) { + if (this._orderHashesByERC20ByMakerAddress[signedOrder.makerAddress][erc20TokenAddress] === undefined) { this._orderHashesByERC20ByMakerAddress[signedOrder.makerAddress][erc20TokenAddress] = new Set(); } this._orderHashesByERC20ByMakerAddress[signedOrder.makerAddress][erc20TokenAddress].add(orderHash); @@ -127,24 +126,21 @@ export class DependentOrderHashesTracker { tokenId: BigNumber, ): void { const orderHash = orderHashUtils.getOrderHashHex(signedOrder); - if (_.isUndefined(this._orderHashesByERC721AddressByTokenIdByMakerAddress[signedOrder.makerAddress])) { + if (this._orderHashesByERC721AddressByTokenIdByMakerAddress[signedOrder.makerAddress] === undefined) { this._orderHashesByERC721AddressByTokenIdByMakerAddress[signedOrder.makerAddress] = {}; } if ( - _.isUndefined( - this._orderHashesByERC721AddressByTokenIdByMakerAddress[signedOrder.makerAddress][erc721TokenAddress], - ) + this._orderHashesByERC721AddressByTokenIdByMakerAddress[signedOrder.makerAddress][erc721TokenAddress] === + undefined ) { this._orderHashesByERC721AddressByTokenIdByMakerAddress[signedOrder.makerAddress][erc721TokenAddress] = {}; } if ( - _.isUndefined( - this._orderHashesByERC721AddressByTokenIdByMakerAddress[signedOrder.makerAddress][erc721TokenAddress][ - tokenId.toString() - ], - ) + this._orderHashesByERC721AddressByTokenIdByMakerAddress[signedOrder.makerAddress][erc721TokenAddress][ + tokenId.toString() + ] === undefined ) { this._orderHashesByERC721AddressByTokenIdByMakerAddress[signedOrder.makerAddress][erc721TokenAddress][ tokenId.toString() @@ -169,7 +165,7 @@ export class DependentOrderHashesTracker { } private _addToMakerDependentOrderHashes(signedOrder: SignedOrder): void { const orderHash = orderHashUtils.getOrderHashHex(signedOrder); - if (_.isUndefined(this._orderHashesByMakerAddress[signedOrder.makerAddress])) { + if (this._orderHashesByMakerAddress[signedOrder.makerAddress] === undefined) { this._orderHashesByMakerAddress[signedOrder.makerAddress] = new Set(); } this._orderHashesByMakerAddress[signedOrder.makerAddress].add(orderHash); diff --git a/packages/order-watcher/src/order_watcher/event_watcher.ts b/packages/order-watcher/src/order_watcher/event_watcher.ts index 3b75df45ad..91f18fd187 100644 --- a/packages/order-watcher/src/order_watcher/event_watcher.ts +++ b/packages/order-watcher/src/order_watcher/event_watcher.ts @@ -33,9 +33,8 @@ export class EventWatcher { ) { this._isVerbose = isVerbose; this._web3Wrapper = new Web3Wrapper(supportedProvider); - this._pollingIntervalMs = _.isUndefined(pollingIntervalIfExistsMs) - ? DEFAULT_EVENT_POLLING_INTERVAL_MS - : pollingIntervalIfExistsMs; + this._pollingIntervalMs = + pollingIntervalIfExistsMs === undefined ? DEFAULT_EVENT_POLLING_INTERVAL_MS : pollingIntervalIfExistsMs; this._blockAndLogStreamerIfExists = undefined; this._blockAndLogStreamIntervalIfExists = undefined; this._onLogAddedSubscriptionToken = undefined; @@ -43,19 +42,19 @@ export class EventWatcher { } public subscribe(callback: EventWatcherCallback): void { assert.isFunction('callback', callback); - if (!_.isUndefined(this._blockAndLogStreamIntervalIfExists)) { + if (this._blockAndLogStreamIntervalIfExists !== undefined) { throw new Error(OrderWatcherError.SubscriptionAlreadyPresent); } this._startBlockAndLogStream(callback); } public unsubscribe(): void { - if (_.isUndefined(this._blockAndLogStreamIntervalIfExists)) { + if (this._blockAndLogStreamIntervalIfExists === undefined) { throw new Error(OrderWatcherError.SubscriptionNotFound); } this._stopBlockAndLogStream(); } private _startBlockAndLogStream(callback: EventWatcherCallback): void { - if (!_.isUndefined(this._blockAndLogStreamerIfExists)) { + if (this._blockAndLogStreamerIfExists !== undefined) { throw new Error(OrderWatcherError.SubscriptionAlreadyPresent); } this._blockAndLogStreamerIfExists = new BlockAndLogStreamer( @@ -106,7 +105,7 @@ export class EventWatcher { return logs as RawLogEntry[]; } private _stopBlockAndLogStream(): void { - if (_.isUndefined(this._blockAndLogStreamerIfExists)) { + if (this._blockAndLogStreamerIfExists === undefined) { throw new Error(OrderWatcherError.SubscriptionNotFound); } this._blockAndLogStreamerIfExists.unsubscribeFromOnLogAdded(this._onLogAddedSubscriptionToken as string); @@ -125,11 +124,11 @@ export class EventWatcher { } private async _reconcileBlockAsync(): Promise { const latestBlockOrNull = await this._blockstreamGetLatestBlockOrNullAsync(); - if (_.isNull(latestBlockOrNull)) { + if (latestBlockOrNull === null) { return; // noop } // We need to coerce to Block type cause Web3.Block includes types for mempool blocks - if (!_.isUndefined(this._blockAndLogStreamerIfExists)) { + if (this._blockAndLogStreamerIfExists !== undefined) { // If we clear the interval while fetching the block - this._blockAndLogStreamer will be undefined await this._blockAndLogStreamerIfExists.reconcileNewBlock(latestBlockOrNull); } @@ -143,7 +142,7 @@ export class EventWatcher { removed: logEventState === LogEventState.Removed, ...log, }; - if (!_.isUndefined(this._blockAndLogStreamIntervalIfExists)) { + if (this._blockAndLogStreamIntervalIfExists !== undefined) { callback(null, logEvent); } } diff --git a/packages/order-watcher/src/order_watcher/expiration_watcher.ts b/packages/order-watcher/src/order_watcher/expiration_watcher.ts index 82590efdec..fd66d628ff 100644 --- a/packages/order-watcher/src/order_watcher/expiration_watcher.ts +++ b/packages/order-watcher/src/order_watcher/expiration_watcher.ts @@ -38,7 +38,7 @@ export class ExpirationWatcher { this._orderHashByExpirationRBTree = new RBTree(comparator); } public subscribe(callback: (orderHash: string) => void): void { - if (!_.isUndefined(this._orderExpirationCheckingIntervalIdIfExists)) { + if (this._orderExpirationCheckingIntervalIdIfExists !== undefined) { throw new Error(OrderWatcherError.SubscriptionAlreadyPresent); } this._orderExpirationCheckingIntervalIdIfExists = intervalUtils.setInterval( @@ -48,7 +48,7 @@ export class ExpirationWatcher { ); } public unsubscribe(): void { - if (_.isUndefined(this._orderExpirationCheckingIntervalIdIfExists)) { + if (this._orderExpirationCheckingIntervalIdIfExists === undefined) { throw new Error(OrderWatcherError.SubscriptionNotFound); } intervalUtils.clearInterval(this._orderExpirationCheckingIntervalIdIfExists); @@ -59,7 +59,7 @@ export class ExpirationWatcher { this._orderHashByExpirationRBTree.insert(orderHash); } public removeOrder(orderHash: string): void { - if (_.isUndefined(this._expiration[orderHash])) { + if (this._expiration[orderHash] === undefined) { return; // noop since order already removed } this._orderHashByExpirationRBTree.remove(orderHash); @@ -76,7 +76,7 @@ export class ExpirationWatcher { const hasNoExpiredOrders = this._expiration[nextOrderHashToExpire].isGreaterThan( currentUnixTimestampMs.plus(this._expirationMarginMs), ); - const isSubscriptionActive = _.isUndefined(this._orderExpirationCheckingIntervalIdIfExists); + const isSubscriptionActive = this._orderExpirationCheckingIntervalIdIfExists === undefined; if (hasNoExpiredOrders || isSubscriptionActive) { break; } diff --git a/packages/order-watcher/src/order_watcher/order_watcher.ts b/packages/order-watcher/src/order_watcher/order_watcher.ts index 5ee01c42c0..7550f5c3ab 100644 --- a/packages/order-watcher/src/order_watcher/order_watcher.ts +++ b/packages/order-watcher/src/order_watcher/order_watcher.ts @@ -142,7 +142,7 @@ export class OrderWatcher { const orderFilledCancelledFetcher = new OrderFilledCancelledFetcher(contractWrappers.exchange, STATE_LAYER); this._orderFilledCancelledLazyStore = new OrderFilledCancelledLazyStore(orderFilledCancelledFetcher); this._orderStateUtils = new OrderStateUtils(balanceAndProxyAllowanceFetcher, orderFilledCancelledFetcher); - const expirationMarginIfExistsMs = _.isUndefined(config) ? undefined : config.expirationMarginMs; + const expirationMarginIfExistsMs = config === undefined ? undefined : config.expirationMarginMs; this._expirationWatcher = new ExpirationWatcher( expirationMarginIfExistsMs, config.orderExpirationCheckingIntervalMs, @@ -178,7 +178,7 @@ export class OrderWatcher { public removeOrder(orderHash: string): void { assert.doesConformToSchema('orderHash', orderHash, schemas.orderHashSchema); const signedOrder = this._orderByOrderHash[orderHash]; - if (_.isUndefined(signedOrder)) { + if (signedOrder === undefined) { return; // noop } this._dependentOrderHashesTracker.removeFromDependentOrderHashes(signedOrder); @@ -194,7 +194,7 @@ export class OrderWatcher { */ public subscribe(callback: OnOrderStateChangeCallback): void { assert.isFunction('callback', callback); - if (!_.isUndefined(this._callbackIfExists)) { + if (this._callbackIfExists !== undefined) { throw new Error(OrderWatcherError.SubscriptionAlreadyPresent); } this._callbackIfExists = callback; @@ -215,7 +215,7 @@ export class OrderWatcher { * Ends an orderWatcher subscription. */ public unsubscribe(): void { - if (_.isUndefined(this._callbackIfExists) || _.isUndefined(this._cleanupJobIntervalIdIfExists)) { + if (this._callbackIfExists === undefined || this._cleanupJobIntervalIdIfExists === undefined) { throw new Error(OrderWatcherError.SubscriptionNotFound); } this._balanceAndProxyAllowanceLazyStore.deleteAll(); @@ -323,16 +323,16 @@ export class OrderWatcher { orderHash, error: ExchangeContractErrs.OrderFillExpired, }; - if (!_.isUndefined(this._orderByOrderHash[orderHash])) { + if (this._orderByOrderHash[orderHash] !== undefined) { this.removeOrder(orderHash); - if (!_.isUndefined(this._callbackIfExists)) { + if (this._callbackIfExists !== undefined) { this._callbackIfExists(null, orderState); } } } private async _onEventWatcherCallbackAsync(err: Error | null, logIfExists?: LogEntryEvent): Promise { - if (!_.isNull(err)) { - if (!_.isUndefined(this._callbackIfExists)) { + if (err !== null) { + if (this._callbackIfExists !== undefined) { this._callbackIfExists(err); } return; @@ -341,7 +341,7 @@ export class OrderWatcher { // At this moment we are sure that no error occured and log is defined. logIfExists as LogEntryEvent, ); - const isLogDecoded = !_.isUndefined(((maybeDecodedLog as any) as LogWithDecodedArgs).event); + const isLogDecoded = ((maybeDecodedLog as any) as LogWithDecodedArgs).event !== undefined; if (!isLogDecoded) { return; // noop } @@ -351,7 +351,7 @@ export class OrderWatcher { case ERC20TokenEvents.Approval: case ERC721TokenEvents.Approval: { // ERC20 and ERC721 Transfer events have the same name so we need to distinguish them by args - if (!_.isUndefined(decodedLog.args._value)) { + if (decodedLog.args._value !== undefined) { // ERC20 // Invalidate cache const args = decodedLog.args as ERC20TokenApprovalEventArgs; @@ -382,7 +382,7 @@ export class OrderWatcher { case ERC20TokenEvents.Transfer: case ERC721TokenEvents.Transfer: { // ERC20 and ERC721 Transfer events have the same name so we need to distinguish them by args - if (!_.isUndefined(decodedLog.args._value)) { + if (decodedLog.args._value !== undefined) { // ERC20 // Invalidate cache const args = decodedLog.args as ERC20TokenTransferEventArgs; @@ -457,7 +457,7 @@ export class OrderWatcher { this._orderFilledCancelledLazyStore.deleteFilledTakerAmount(args.orderHash); // Revalidate orders const orderHash = args.orderHash; - const isOrderWatched = !_.isUndefined(this._orderByOrderHash[orderHash]); + const isOrderWatched = this._orderByOrderHash[orderHash] !== undefined; if (isOrderWatched) { await this._emitRevalidateOrdersAsync([orderHash], transactionHash); } @@ -469,7 +469,7 @@ export class OrderWatcher { this._orderFilledCancelledLazyStore.deleteIsCancelled(args.orderHash); // Revalidate orders const orderHash = args.orderHash; - const isOrderWatched = !_.isUndefined(this._orderByOrderHash[orderHash]); + const isOrderWatched = this._orderByOrderHash[orderHash] !== undefined; if (isOrderWatched) { await this._emitRevalidateOrdersAsync([orderHash], transactionHash); } @@ -496,7 +496,7 @@ export class OrderWatcher { // Most of these calls will never reach the network because the data is fetched from stores // and only updated when cache is invalidated const orderState = await this._orderStateUtils.getOpenOrderStateAsync(signedOrder, transactionHash); - if (_.isUndefined(this._callbackIfExists)) { + if (this._callbackIfExists === undefined) { break; // Unsubscribe was called } if (_.isEqual(orderState, this._orderStateByOrderHashCache[orderHash])) { diff --git a/packages/pipeline/package.json b/packages/pipeline/package.json index 23af57fd9f..5e9188588b 100644 --- a/packages/pipeline/package.json +++ b/packages/pipeline/package.json @@ -1,6 +1,6 @@ { "name": "@0x/pipeline", - "version": "1.0.16", + "version": "1.0.17", "private": true, "description": "Data pipeline for offline analysis", "scripts": { @@ -17,6 +17,7 @@ "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", "clean": "shx rm -rf lib", "lint": "tslint --project . --format stylish --exclude ./migrations/**/* --exclude ./test/fixtures/**/**/*.json", + "fix": "tslint --fix --project . --format stylish --exclude ./migrations/**/* --exclude ./test/fixtures/**/**/*.json", "migrate:run": "yarn typeorm migration:run --config ./lib/src/ormconfig", "migrate:revert": "yarn typeorm migration:revert --config ./lib/src/ormconfig", "migrate:create": "yarn typeorm migration:create --config ./lib/src/ormconfig --dir migrations" @@ -27,7 +28,7 @@ }, "license": "Apache-2.0", "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/axios": "^0.14.0", "@types/ramda": "^0.25.38", "chai": "^4.0.1", @@ -39,16 +40,16 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/connect": "^5.0.4", - "@0x/contract-addresses": "^2.3.0", - "@0x/contract-artifacts": "^1.4.0", - "@0x/contract-wrappers": "^8.0.5", - "@0x/dev-utils": "^2.2.0", - "@0x/order-utils": "^7.1.1", - "@0x/subproviders": "^4.0.4", - "@0x/types": "^2.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", + "@0x/connect": "^5.0.5", + "@0x/contract-addresses": "^2.3.1", + "@0x/contract-artifacts": "^1.5.0", + "@0x/contract-wrappers": "^9.0.0", + "@0x/dev-utils": "^2.2.1", + "@0x/order-utils": "^7.2.0", + "@0x/subproviders": "^4.0.5", + "@0x/types": "^2.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", "@radarrelay/types": "^1.2.1", "@types/dockerode": "^2.5.9", "@types/p-limit": "^2.0.0", @@ -56,7 +57,7 @@ "axios": "^0.18.0", "bottleneck": "^2.13.2", "dockerode": "^2.5.7", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "pg": "^7.5.0", "prettier": "^1.16.3", "ramda": "^0.25.0", diff --git a/packages/react-docs/CHANGELOG.json b/packages/react-docs/CHANGELOG.json index 96622338ec..76e778cc00 100644 --- a/packages/react-docs/CHANGELOG.json +++ b/packages/react-docs/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.0.10", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "2.0.9", diff --git a/packages/react-docs/CHANGELOG.md b/packages/react-docs/CHANGELOG.md index 1bde9f1cca..2ad6c006d3 100644 --- a/packages/react-docs/CHANGELOG.md +++ b/packages/react-docs/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.10 - _April 11, 2019_ + + * Dependencies updated + ## v2.0.9 - _March 21, 2019_ * Dependencies updated diff --git a/packages/react-docs/package.json b/packages/react-docs/package.json index b2f748326f..0e05d9939f 100644 --- a/packages/react-docs/package.json +++ b/packages/react-docs/package.json @@ -1,6 +1,6 @@ { "name": "@0x/react-docs", - "version": "2.0.9", + "version": "2.0.10", "engines": { "node": ">=6.12" }, @@ -9,6 +9,7 @@ "types": "lib/index.d.ts", "scripts": { "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "build": "tsc -b", "build:ci": "yarn build", "clean": "shx rm -rf lib" @@ -24,8 +25,8 @@ "url": "https://github.com/0xProject/0x-monorepo.git" }, "devDependencies": { - "@0x/dev-utils": "^2.2.0", - "@0x/tslint-config": "^3.0.0", + "@0x/dev-utils": "^2.2.1", + "@0x/tslint-config": "^3.0.1", "@types/compare-versions": "^3.0.0", "@types/styled-components": "4.0.0", "make-promises-safe": "^1.1.0", @@ -34,9 +35,9 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/react-shared": "^2.0.9", - "@0x/types": "^2.2.1", - "@0x/utils": "^4.3.0", + "@0x/react-shared": "^2.0.10", + "@0x/types": "^2.2.2", + "@0x/utils": "^4.3.1", "@types/lodash": "4.14.104", "@types/material-ui": "^0.20.0", "@types/node": "*", diff --git a/packages/react-docs/src/components/doc_reference.tsx b/packages/react-docs/src/components/doc_reference.tsx index 424fe9ecfb..0b1842b40c 100644 --- a/packages/react-docs/src/components/doc_reference.tsx +++ b/packages/react-docs/src/components/doc_reference.tsx @@ -87,7 +87,7 @@ export class DocReference extends React.Component{functionDefs}
)} - {!_.isUndefined(docSection.events) && docSection.events.length > 0 && ( + {docSection.events !== undefined && docSection.events.length > 0 && (

Events

{eventDefs}
)} - {!_.isUndefined(docSection.externalExportToLink) && + {docSection.externalExportToLink !== undefined && this._renderExternalExports(docSection.externalExportToLink)} - {!_.isUndefined(typeDefs) && typeDefs.length > 0 && ( + {typeDefs !== undefined && typeDefs.length > 0 && (
{typeDefs}
@@ -247,7 +247,7 @@ export class DocReference extends React.Component { const contractAddress = addressByContractName[sectionName]; - if (_.isUndefined(contractAddress)) { + if (contractAddress === undefined) { return null; } const linkIfExists = sharedUtils.getEtherScanLinkIfExists( diff --git a/packages/react-docs/src/components/enum.tsx b/packages/react-docs/src/components/enum.tsx index dee8667903..f8fdefcfbc 100644 --- a/packages/react-docs/src/components/enum.tsx +++ b/packages/react-docs/src/components/enum.tsx @@ -9,7 +9,7 @@ export interface EnumProps { export const Enum = (props: EnumProps) => { const values = _.map(props.values, value => { - const defaultValueIfAny = !_.isUndefined(value.defaultValue) ? ` = ${value.defaultValue}` : ''; + const defaultValueIfAny = value.defaultValue !== undefined ? ` = ${value.defaultValue}` : ''; return `\n\t${value.name}${defaultValueIfAny},`; }); return ( diff --git a/packages/react-docs/src/components/interface.tsx b/packages/react-docs/src/components/interface.tsx index 06896159f0..b823a62e15 100644 --- a/packages/react-docs/src/components/interface.tsx +++ b/packages/react-docs/src/components/interface.tsx @@ -24,7 +24,7 @@ export const Interface: React.SFC = (props: InterfaceProps): any return ( {property.name}:{' '} - {property.type && !_.isUndefined(property.type.method) ? ( + {property.type && property.type.method !== undefined ? ( = (props: InterfaceProps): any ); }); - const hasIndexSignature = !_.isUndefined(type.indexSignature); + const hasIndexSignature = type.indexSignature !== undefined; if (hasIndexSignature) { const is = type.indexSignature; const param = ( diff --git a/packages/react-docs/src/components/signature.tsx b/packages/react-docs/src/components/signature.tsx index c229999b12..db55976a11 100644 --- a/packages/react-docs/src/components/signature.tsx +++ b/packages/react-docs/src/components/signature.tsx @@ -66,15 +66,16 @@ export const Signature: React.SFC = (props: SignatureProps) => { paramStringArray.pop(); } const methodName = props.shouldHideMethodName ? '' : props.name; - const typeParameterIfExists = _.isUndefined(props.typeParameter) - ? undefined - : renderTypeParameter( - props.typeParameter, - props.docsInfo, - sectionName, - props.isInPopover, - props.typeDefinitionByName, - ); + const typeParameterIfExists = + props.typeParameter === undefined + ? undefined + : renderTypeParameter( + props.typeParameter, + props.docsInfo, + sectionName, + props.isInPopover, + props.typeDefinitionByName, + ); return ( {props.callPath} @@ -109,7 +110,7 @@ function renderParameters( ): React.ReactNode[] { const params = _.map(parameters, (p: Parameter, i: number) => { const isOptional = p.isOptional; - const hasDefaultValue = !_.isUndefined(p.defaultValue); + const hasDefaultValue = p.defaultValue !== undefined; const type = ( {`<${typeParameter.name}`} - {!_.isUndefined(typeParameter.type) && ( + {typeParameter.type !== undefined && ( {' extends '} !_.isEmpty(p.name))); + const hasExclusivelyNamedParams = _.find(method.parameters, p => !_.isEmpty(p.name)) !== undefined; return (
= (props: TypeProps): any => { break; case TypeDocTypes.Reflection: - if (!_.isUndefined(type.method)) { + if (type.method !== undefined) { typeName = ( = (props: TypeProps): any => { isInPopover={props.isInPopover} /> ); - } else if (!_.isUndefined(type.indexSignature)) { + } else if (type.indexSignature !== undefined) { const is = type.indexSignature; const param = ( @@ -204,8 +204,8 @@ export const Type: React.SFC = (props: TypeProps): any => { }); const isExportedClassReference = !!props.type.isExportedClassReference; - const typeNameUrlIfExists = !_.isUndefined(props.type.externalLink) ? props.type.externalLink : undefined; - if (!_.isUndefined(typeNameUrlIfExists)) { + const typeNameUrlIfExists = props.type.externalLink !== undefined ? props.type.externalLink : undefined; + if (typeNameUrlIfExists !== undefined) { typeName = props.isInPopover ? ( {typeName} ) : ( diff --git a/packages/react-docs/src/docs_info.ts b/packages/react-docs/src/docs_info.ts index 76f7784bae..70fdb42350 100644 --- a/packages/react-docs/src/docs_info.ts +++ b/packages/react-docs/src/docs_info.ts @@ -36,7 +36,7 @@ export class DocsInfo { this.contractsByVersionByNetworkId = config.contractsByVersionByNetworkId; } public getTypeDefinitionsByName(docAgnosticFormat: DocAgnosticFormat): ObjectMap { - if (_.isUndefined(docAgnosticFormat[this.typeSectionName])) { + if (docAgnosticFormat[this.typeSectionName] === undefined) { return {}; } @@ -58,14 +58,14 @@ export class DocsInfo { }); }); - if (_.isUndefined(docAgnosticFormat)) { + if (docAgnosticFormat === undefined) { return sectionNameToLinks; } const docSections = _.keys(this.sections); _.each(docSections, sectionName => { const docSection = docAgnosticFormat[sectionName]; - if (_.isUndefined(docSection) || sectionName === constants.EXTERNAL_EXPORTS_SECTION_NAME) { + if (docSection === undefined || sectionName === constants.EXTERNAL_EXPORTS_SECTION_NAME) { return; // no-op } @@ -91,7 +91,7 @@ export class DocsInfo { // Noop so that we don't have the method listed underneath itself. } else { let eventNames: string[] = []; - if (!_.isUndefined(docSection.events)) { + if (docSection.events !== undefined) { const sortedEventNames = _.sortBy(docSection.events, 'name'); eventNames = _.map(sortedEventNames, m => m.name); } diff --git a/packages/react-docs/src/utils/typedoc_utils.ts b/packages/react-docs/src/utils/typedoc_utils.ts index f74ec3e281..0557a470fb 100644 --- a/packages/react-docs/src/utils/typedoc_utils.ts +++ b/packages/react-docs/src/utils/typedoc_utils.ts @@ -124,7 +124,7 @@ export class TypeDocUtils { this._docsInfo.markdownMenu[sectionName] = [sectionName]; const entities = child.children; const commentObj = child.comment; - const sectionComment = !_.isUndefined(commentObj) ? commentObj.shortText : ''; + const sectionComment = commentObj !== undefined ? commentObj.shortText : ''; const isClassOrObjectLiteral = true; const docSection = this._convertEntitiesToDocSection( entities, @@ -141,7 +141,7 @@ export class TypeDocUtils { this._docsInfo.markdownMenu[sectionName] = [sectionName]; const entities = [child]; const commentObj = child.comment; - const SectionComment = !_.isUndefined(commentObj) ? commentObj.shortText : ''; + const SectionComment = commentObj !== undefined ? commentObj.shortText : ''; const docSection = this._convertEntitiesToDocSection(entities, sectionName); docSection.comment = SectionComment; docAgnosticFormat[sectionName] = docSection; @@ -257,41 +257,42 @@ export class TypeDocUtils { return docSection; } private _convertCustomType(entity: TypeDocNode, sectionName: string): CustomType { - const typeIfExists = !_.isUndefined(entity.type) ? this._convertType(entity.type, sectionName) : undefined; + const typeIfExists = entity.type !== undefined ? this._convertType(entity.type, sectionName) : undefined; const isConstructor = false; - const methodIfExists = !_.isUndefined(entity.declaration) - ? this._convertMethod(entity.declaration, isConstructor, sectionName) - : undefined; - const doesIndexSignatureExist = !_.isUndefined(entity.indexSignature); + const methodIfExists = + entity.declaration !== undefined + ? this._convertMethod(entity.declaration, isConstructor, sectionName) + : undefined; + const doesIndexSignatureExist = entity.indexSignature !== undefined; const indexSignature = entity.indexSignature; const indexSignatureIfExists = doesIndexSignatureExist ? this._convertIndexSignature(indexSignature, sectionName) : undefined; const commentIfExists = - !_.isUndefined(entity.comment) && !_.isUndefined(entity.comment.shortText) + entity.comment !== undefined && entity.comment.shortText !== undefined ? entity.comment.shortText : undefined; - const childrenIfExist = !_.isUndefined(entity.children) - ? _.map(entity.children, (child: TypeDocNode) => { - let childTypeIfExists = !_.isUndefined(child.type) - ? this._convertType(child.type, sectionName) - : undefined; - if (child.kindString === KindString.Method) { - childTypeIfExists = { + const childrenIfExist = + entity.children !== undefined + ? _.map(entity.children, (child: TypeDocNode) => { + let childTypeIfExists = + child.type !== undefined ? this._convertType(child.type, sectionName) : undefined; + if (child.kindString === KindString.Method) { + childTypeIfExists = { + name: child.name, + typeDocType: TypeDocTypes.Reflection, + method: this._convertMethod(child, isConstructor, sectionName), + }; + } + const c: CustomTypeChild = { name: child.name, - typeDocType: TypeDocTypes.Reflection, - method: this._convertMethod(child, isConstructor, sectionName), + type: childTypeIfExists, + defaultValue: child.defaultValue, }; - } - const c: CustomTypeChild = { - name: child.name, - type: childTypeIfExists, - defaultValue: child.defaultValue, - }; - return c; - }) - : undefined; + return c; + }) + : undefined; const customType = { name: entity.name, @@ -316,9 +317,9 @@ export class TypeDocUtils { } private _convertProperty(entity: TypeDocNode, sectionName: string): Property { const source = entity.sources[0]; - const commentIfExists = !_.isUndefined(entity.comment) ? entity.comment.shortText : undefined; + const commentIfExists = entity.comment !== undefined ? entity.comment.shortText : undefined; const isConstructor = false; - const isStatic = _.isUndefined(entity.flags.isStatic) ? false : entity.flags.isStatic; + const isStatic = entity.flags.isStatic === undefined ? false : entity.flags.isStatic; const callPath = this._getCallPath(sectionName, isStatic, isConstructor, entity.name); const property = { name: entity.name, @@ -335,16 +336,17 @@ export class TypeDocUtils { private _convertMethod(entity: TypeDocNode, isConstructor: boolean, sectionName: string): TypescriptMethod { const signature = entity.signatures[0]; const source = entity.sources[0]; - const hasComment = !_.isUndefined(signature.comment); - const isStatic = _.isUndefined(entity.flags.isStatic) ? false : entity.flags.isStatic; + const hasComment = signature.comment !== undefined; + const isStatic = entity.flags.isStatic === undefined ? false : entity.flags.isStatic; const parameters = _.map(signature.parameters, param => { return this._convertParameter(param, sectionName); }); const returnType = this._convertType(signature.type, sectionName); - const typeParameter = _.isUndefined(signature.typeParameter) - ? undefined - : this._convertTypeParameter(signature.typeParameter[0], sectionName); + const typeParameter = + signature.typeParameter === undefined + ? undefined + : this._convertTypeParameter(signature.typeParameter[0], sectionName); const callPath = this._getCallPath(sectionName, isStatic, isConstructor, entity.name); const method = { @@ -389,15 +391,16 @@ export class TypeDocUtils { private _convertFunction(entity: TypeDocNode, sectionName: string, isObjectLiteral: boolean): TypescriptFunction { const signature = entity.signatures[0]; const source = entity.sources[0]; - const hasComment = !_.isUndefined(signature.comment); + const hasComment = signature.comment !== undefined; const parameters = _.map(signature.parameters, param => { return this._convertParameter(param, sectionName); }); const returnType = this._convertType(signature.type, sectionName); - const typeParameter = _.isUndefined(signature.typeParameter) - ? undefined - : this._convertTypeParameter(signature.typeParameter[0], sectionName); + const typeParameter = + signature.typeParameter === undefined + ? undefined + : this._convertTypeParameter(signature.typeParameter[0], sectionName); let callPath = ''; if (isObjectLiteral) { @@ -422,7 +425,7 @@ export class TypeDocUtils { } private _convertTypeParameter(entity: TypeDocNode, sectionName: string): TypeParameter { let type; - if (!_.isUndefined(entity.type)) { + if (entity.type !== undefined) { type = this._convertType(entity.type, sectionName); } const parameter = { @@ -439,7 +442,7 @@ export class TypeDocUtils { comment = entity.comment.text; } - const isOptional = !_.isUndefined(entity.flags.isOptional) ? entity.flags.isOptional : false; + const isOptional = entity.flags.isOptional !== undefined ? entity.flags.isOptional : false; const type = this._convertType(entity.type, sectionName); @@ -464,11 +467,11 @@ export class TypeDocUtils { let methodIfExists; let tupleElementsIfExists; const doesIndexSignatureExist = - !_.isUndefined(entity.declaration) && !_.isUndefined(entity.declaration.indexSignature); + entity.declaration !== undefined && entity.declaration.indexSignature !== undefined; if (doesIndexSignatureExist) { const indexSignature = entity.declaration.indexSignature; indexSignatureIfExists = this._convertIndexSignature(indexSignature, sectionName); - } else if (!_.isUndefined(entity.declaration)) { + } else if (entity.declaration !== undefined) { const isConstructor = false; methodIfExists = this._convertMethod(entity.declaration, isConstructor, sectionName); } else if (entity.type === TypeDocTypes.Tuple) { @@ -479,12 +482,13 @@ export class TypeDocUtils { }); } - const elementTypeIfExists = !_.isUndefined(entity.elementType) - ? { - name: entity.elementType.name, - typeDocType: entity.elementType.type, - } - : undefined; + const elementTypeIfExists = + entity.elementType !== undefined + ? { + name: entity.elementType.name, + typeDocType: entity.elementType.type, + } + : undefined; const type: Type = { name: entity.name, @@ -499,7 +503,7 @@ export class TypeDocUtils { tupleElements: tupleElementsIfExists, }; const externalLinkIfExists = this._externalTypeToLink[entity.name]; - if (!_.isUndefined(externalLinkIfExists)) { + if (externalLinkIfExists !== undefined) { type.externalLink = externalLinkIfExists; } return type; diff --git a/packages/react-shared/CHANGELOG.json b/packages/react-shared/CHANGELOG.json index f129fab3b1..57632eaadf 100644 --- a/packages/react-shared/CHANGELOG.json +++ b/packages/react-shared/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.0.10", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "2.0.9", diff --git a/packages/react-shared/CHANGELOG.md b/packages/react-shared/CHANGELOG.md index ab883be997..a8595a3115 100644 --- a/packages/react-shared/CHANGELOG.md +++ b/packages/react-shared/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.10 - _April 11, 2019_ + + * Dependencies updated + ## v2.0.9 - _March 21, 2019_ * Dependencies updated diff --git a/packages/react-shared/package.json b/packages/react-shared/package.json index b0c510ab5a..72ad0f42c7 100644 --- a/packages/react-shared/package.json +++ b/packages/react-shared/package.json @@ -1,6 +1,6 @@ { "name": "@0x/react-shared", - "version": "2.0.9", + "version": "2.0.10", "engines": { "node": ">=6.12" }, @@ -9,6 +9,7 @@ "types": "lib/index.d.ts", "scripts": { "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "build": "tsc", "build:ci": "yarn build", "watch_without_deps": "tsc -w", @@ -25,15 +26,15 @@ "url": "https://github.com/0xProject/0x-monorepo.git" }, "devDependencies": { - "@0x/dev-utils": "^2.2.0", - "@0x/tslint-config": "^3.0.0", + "@0x/dev-utils": "^2.2.1", + "@0x/tslint-config": "^3.0.1", "make-promises-safe": "^1.1.0", "shx": "^0.2.2", "tslint": "5.11.0", "typescript": "3.0.1" }, "dependencies": { - "@0x/types": "^2.2.1", + "@0x/types": "^2.2.2", "@material-ui/core": "^3.0.1", "@types/is-mobile": "0.3.0", "@types/lodash": "4.14.104", diff --git a/packages/react-shared/src/components/link.tsx b/packages/react-shared/src/components/link.tsx index 2fb19ac113..f07a7b7297 100644 --- a/packages/react-shared/src/components/link.tsx +++ b/packages/react-shared/src/components/link.tsx @@ -143,7 +143,7 @@ export class Link extends React.Component { // is within a dropdown we want to close upon being clicked). Because of this, we register the // click event of an inner span, and pass it around the react-scroll link to an outer span. private _onClickPropagateClickEventAroundScrollLink(): void { - if (!_.isNull(this._outerReactScrollSpan)) { + if (this._outerReactScrollSpan !== null) { this._outerReactScrollSpan.click(); } } diff --git a/packages/react-shared/src/components/markdown_section.tsx b/packages/react-shared/src/components/markdown_section.tsx index 42c910c11c..2ab26dfa32 100644 --- a/packages/react-shared/src/components/markdown_section.tsx +++ b/packages/react-shared/src/components/markdown_section.tsx @@ -46,9 +46,10 @@ export class MarkdownSection extends React.Component
- {!_.isUndefined(githubLink) && ( + {githubLink !== undefined && (
Edit on Github diff --git a/packages/react-shared/src/utils/utils.ts b/packages/react-shared/src/utils/utils.ts index 142aea85da..16e7930ede 100644 --- a/packages/react-shared/src/utils/utils.ts +++ b/packages/react-shared/src/utils/utils.ts @@ -43,7 +43,7 @@ export const utils = { suffix: EtherscanLinkSuffixes, ): string | undefined { const networkName = constants.NETWORK_NAME_BY_ID[networkId]; - if (_.isUndefined(networkName)) { + if (networkName === undefined) { return undefined; } const etherScanPrefix = networkName === Networks.Mainnet ? '' : `${networkName.toLowerCase()}.`; diff --git a/packages/sol-compiler/CHANGELOG.json b/packages/sol-compiler/CHANGELOG.json index f04f7f254a..5dd107d624 100644 --- a/packages/sol-compiler/CHANGELOG.json +++ b/packages/sol-compiler/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "3.1.6", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "3.1.5", diff --git a/packages/sol-compiler/CHANGELOG.md b/packages/sol-compiler/CHANGELOG.md index 928498cdae..ad2f6504b8 100644 --- a/packages/sol-compiler/CHANGELOG.md +++ b/packages/sol-compiler/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.1.6 - _April 11, 2019_ + + * Dependencies updated + ## v3.1.5 - _March 21, 2019_ * Dependencies updated diff --git a/packages/sol-compiler/package.json b/packages/sol-compiler/package.json index 0a49c25e55..0117be8c9a 100644 --- a/packages/sol-compiler/package.json +++ b/packages/sol-compiler/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-compiler", - "version": "3.1.5", + "version": "3.1.6", "engines": { "node": ">=6.12" }, @@ -20,6 +20,7 @@ "clean": "shx rm -rf lib generated_docs", "migrate": "npm run build; node lib/src/cli.js migrate", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "test:circleci": "yarn test:coverage", "docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --tsconfig typedoc-tsconfig.json --json $JSON_FILE_PATH $PROJECT_FILES" }, @@ -42,8 +43,8 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-compiler/README.md", "devDependencies": { - "@0x/dev-utils": "^2.2.0", - "@0x/tslint-config": "^3.0.0", + "@0x/dev-utils": "^2.2.1", + "@0x/tslint-config": "^3.0.1", "@types/chokidar": "^1.7.5", "@types/mkdirp": "^0.5.2", "@types/pluralize": "^0.0.29", @@ -69,17 +70,17 @@ "zeppelin-solidity": "1.8.0" }, "dependencies": { - "@0x/assert": "^2.0.8", - "@0x/json-schemas": "^3.0.8", - "@0x/sol-resolver": "^2.0.6", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", + "@0x/assert": "^2.0.9", + "@0x/json-schemas": "^3.0.9", + "@0x/sol-resolver": "^2.0.7", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", "@types/yargs": "^11.0.0", "chalk": "^2.3.0", "chokidar": "^2.0.4", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "ethereumjs-util": "^5.1.1", "lodash": "^4.17.11", "mkdirp": "^0.5.1", diff --git a/packages/sol-compiler/src/cli.ts b/packages/sol-compiler/src/cli.ts index db0c09581f..aa71246542 100644 --- a/packages/sol-compiler/src/cli.ts +++ b/packages/sol-compiler/src/cli.ts @@ -30,11 +30,12 @@ const SEPARATOR = ','; default: false, }) .help().argv; - const contracts = _.isUndefined(argv.contracts) - ? undefined - : argv.contracts === DEFAULT_CONTRACTS_LIST - ? DEFAULT_CONTRACTS_LIST - : argv.contracts.split(SEPARATOR); + const contracts = + argv.contracts === undefined + ? undefined + : argv.contracts === DEFAULT_CONTRACTS_LIST + ? DEFAULT_CONTRACTS_LIST + : argv.contracts.split(SEPARATOR); const opts = { contractsDir: argv.contractsDir, artifactsDir: argv.artifactsDir, diff --git a/packages/sol-compiler/src/compiler.ts b/packages/sol-compiler/src/compiler.ts index ef2334c3ac..1d716c0547 100644 --- a/packages/sol-compiler/src/compiler.ts +++ b/packages/sol-compiler/src/compiler.ts @@ -233,17 +233,18 @@ export class Compiler { continue; } contractPathToData[contractSource.path] = contractData; - const solcVersion = _.isUndefined(this._solcVersionIfExists) - ? semver.maxSatisfying(_.keys(solcJSReleases), parseSolidityVersionRange(contractSource.source)) - : this._solcVersionIfExists; - if (_.isNull(solcVersion)) { + const solcVersion = + this._solcVersionIfExists === undefined + ? semver.maxSatisfying(_.keys(solcJSReleases), parseSolidityVersionRange(contractSource.source)) + : this._solcVersionIfExists; + if (solcVersion === null) { throw new Error( `Couldn't find any solidity version satisfying the constraint ${parseSolidityVersionRange( contractSource.source, )}`, ); } - const isFirstContractWithThisVersion = _.isUndefined(versionToInputs[solcVersion]); + const isFirstContractWithThisVersion = versionToInputs[solcVersion] === undefined; if (isFirstContractWithThisVersion) { versionToInputs[solcVersion] = { standardInput: { @@ -290,7 +291,7 @@ export class Compiler { fullSolcVersion = solcJSReleases[solcVersion]; compilerOutput = await compileSolcJSAsync(solcVersion, input.standardInput, this._isOfflineMode); } - if (!_.isUndefined(compilerOutput.errors)) { + if (compilerOutput.errors !== undefined) { printCompilationErrorsAndWarnings(compilerOutput.errors); } compilerOutput.sources = makeContractPathsRelative( @@ -308,7 +309,7 @@ export class Compiler { const contractName = contractPathToData[contractPath].contractName; const compiledContract = compilerOutput.contracts[contractPath][contractName]; - if (_.isUndefined(compiledContract)) { + if (compiledContract === undefined) { throw new Error( `Contract ${contractName} not found in ${contractPath}. Please make sure your contract has the same name as it's file name`, ); @@ -334,7 +335,7 @@ export class Compiler { return compilerOutputs; } private _shouldCompile(contractData: ContractData): boolean { - if (_.isUndefined(contractData.currentArtifactIfExists)) { + if (contractData.currentArtifactIfExists === undefined) { return true; } else { const currentArtifact = contractData.currentArtifactIfExists as ContractArtifact; @@ -380,7 +381,7 @@ export class Compiler { }; let newArtifact: ContractArtifact; - if (!_.isUndefined(currentArtifactIfExists)) { + if (currentArtifactIfExists !== undefined) { const currentArtifact = currentArtifactIfExists as ContractArtifact; newArtifact = { ...currentArtifact, diff --git a/packages/sol-compiler/src/utils/compiler.ts b/packages/sol-compiler/src/utils/compiler.ts index 7b02586cae..085e1a55f2 100644 --- a/packages/sol-compiler/src/utils/compiler.ts +++ b/packages/sol-compiler/src/utils/compiler.ts @@ -59,7 +59,7 @@ export async function createDirIfDoesNotExistAsync(dirPath: string): Promise { - if (!_.isNull(line.match(IMPORT_REGEX))) { + if (line.match(IMPORT_REGEX) !== null) { const dependencyMatch = line.match(DEPENDENCY_PATH_REGEX); - if (!_.isNull(dependencyMatch)) { + if (dependencyMatch !== null) { let dependencyPath = dependencyMatch[1]; if (dependencyPath.startsWith('.')) { dependencyPath = path.join(path.dirname(contractSource.path), dependencyPath); @@ -126,7 +126,7 @@ export async function getSolcJSReleasesAsync(isOfflineMode: boolean): Promise { const solcJSReleases = await getSolcJSReleasesAsync(isOfflineMode); const fullSolcVersion = solcJSReleases[solcVersion]; - if (_.isUndefined(fullSolcVersion)) { + if (fullSolcVersion === undefined) { throw new Error(`${solcVersion} is not a known compiler version`); } const compilerBinFilename = path.join(constants.SOLC_BIN_DIR, fullSolcVersion); @@ -369,13 +369,13 @@ export async function getSolcJSAsync(solcVersion: string, isOfflineMode: boolean * @param compiledContract The standard JSON output section for a contract. Geth modified in place. */ export function addHexPrefixToContractBytecode(compiledContract: solc.StandardContractOutput): void { - if (!_.isUndefined(compiledContract.evm)) { - if (!_.isUndefined(compiledContract.evm.bytecode) && !_.isUndefined(compiledContract.evm.bytecode.object)) { + if (compiledContract.evm !== undefined) { + if (compiledContract.evm.bytecode !== undefined && compiledContract.evm.bytecode.object !== undefined) { compiledContract.evm.bytecode.object = ethUtil.addHexPrefix(compiledContract.evm.bytecode.object); } if ( - !_.isUndefined(compiledContract.evm.deployedBytecode) && - !_.isUndefined(compiledContract.evm.deployedBytecode.object) + compiledContract.evm.deployedBytecode !== undefined && + compiledContract.evm.deployedBytecode.object !== undefined ) { compiledContract.evm.deployedBytecode.object = ethUtil.addHexPrefix( compiledContract.evm.deployedBytecode.object, diff --git a/packages/sol-coverage/CHANGELOG.json b/packages/sol-coverage/CHANGELOG.json index 680c6af1b5..6643adae4a 100644 --- a/packages/sol-coverage/CHANGELOG.json +++ b/packages/sol-coverage/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "3.0.3", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "3.0.2", diff --git a/packages/sol-coverage/CHANGELOG.md b/packages/sol-coverage/CHANGELOG.md index 7063bb297b..8ab9c1ec9f 100644 --- a/packages/sol-coverage/CHANGELOG.md +++ b/packages/sol-coverage/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.3 - _April 11, 2019_ + + * Dependencies updated + ## v3.0.2 - _March 21, 2019_ * Dependencies updated diff --git a/packages/sol-coverage/package.json b/packages/sol-coverage/package.json index 17b979dd8e..5371270b12 100644 --- a/packages/sol-coverage/package.json +++ b/packages/sol-coverage/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-coverage", - "version": "3.0.2", + "version": "3.0.3", "engines": { "node": ">=6.12" }, @@ -11,6 +11,7 @@ "build": "tsc -b", "build:ci": "yarn build", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "clean": "shx rm -rf lib src/artifacts generated_docs", "docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --tsconfig typedoc-tsconfig.json --json $JSON_FILE_PATH $PROJECT_FILES" }, @@ -29,17 +30,17 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-coverage/README.md", "dependencies": { - "@0x/sol-tracing-utils": "^6.0.9", - "@0x/subproviders": "^4.0.4", - "@0x/typescript-typings": "^4.2.1", + "@0x/sol-tracing-utils": "^6.0.10", + "@0x/subproviders": "^4.0.5", + "@0x/typescript-typings": "^4.2.2", "@types/minimatch": "^3.0.3", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "lodash": "^4.17.11", "minimatch": "^3.0.4", "web3-provider-engine": "14.0.6" }, "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/node": "*", "@types/web3-provider-engine": "^14.0.0", "npm-run-all": "^4.1.2", diff --git a/packages/sol-coverage/src/coverage_subprovider.ts b/packages/sol-coverage/src/coverage_subprovider.ts index da79621133..fe7780f32e 100644 --- a/packages/sol-coverage/src/coverage_subprovider.ts +++ b/packages/sol-coverage/src/coverage_subprovider.ts @@ -107,7 +107,7 @@ export class CoverageSubprovider extends TraceInfoSubprovider { const coverageEntriesDescription = collectCoverageEntries(contractData.sourceCodes[fileIndex], IGNORE_REGEXP); // if the source wasn't provided for the fileIndex, we can't cover the file - if (_.isUndefined(coverageEntriesDescription)) { + if (coverageEntriesDescription === undefined) { return {}; } diff --git a/packages/sol-doc/CHANGELOG.json b/packages/sol-doc/CHANGELOG.json index 51b985d04e..7ef55490c6 100644 --- a/packages/sol-doc/CHANGELOG.json +++ b/packages/sol-doc/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.0.10", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "2.0.9", diff --git a/packages/sol-doc/CHANGELOG.md b/packages/sol-doc/CHANGELOG.md index bf9b45d804..0a8fe7cabc 100644 --- a/packages/sol-doc/CHANGELOG.md +++ b/packages/sol-doc/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.10 - _April 11, 2019_ + + * Dependencies updated + ## v2.0.9 - _March 21, 2019_ * Dependencies updated diff --git a/packages/sol-doc/package.json b/packages/sol-doc/package.json index 607c1e3972..355ad9a4ab 100644 --- a/packages/sol-doc/package.json +++ b/packages/sol-doc/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-doc", - "version": "2.0.9", + "version": "2.0.10", "description": "Solidity documentation generator", "main": "lib/src/index.js", "types": "lib/src/index.d.js", @@ -12,6 +12,7 @@ "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "clean": "shx rm -rf lib", "generate-v1-protocol-docs": "(cd ../contracts/src/1.0.0; node ../../../../node_modules/.bin/sol-doc --contracts-dir . --contracts Exchange/Exchange_v1.sol TokenRegistry/TokenRegistry.sol TokenTransferProxy/TokenTransferProxy_v1.sol) > v1.0.0.json", "generate-v2-protocol-docs": "(cd ../contracts/src/2.0.0; node ../../../../node_modules/.bin/sol-doc --contracts-dir . --contracts Exchange/Exchange.sol AssetProxy/ERC20Proxy.sol AssetProxy/ERC721Proxy.sol OrderValidator/OrderValidator.sol Forwarder/Forwarder.sol AssetProxyOwner/AssetProxyOwner.sol) > v2.0.0.json", @@ -25,16 +26,16 @@ "author": "F. Eugene Aumson", "license": "Apache-2.0", "dependencies": { - "@0x/sol-compiler": "^3.1.5", - "@0x/types": "^2.2.1", - "@0x/utils": "^4.3.0", - "ethereum-types": "^2.1.1", + "@0x/sol-compiler": "^3.1.6", + "@0x/types": "^2.2.2", + "@0x/utils": "^4.3.1", + "ethereum-types": "^2.1.2", "ethereumjs-util": "^5.1.1", "lodash": "^4.17.11", "yargs": "^10.0.3" }, "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "chai": "^4.0.1", "chai-as-promised": "^7.1.0", "chai-bignumber": "^3.0.0", diff --git a/packages/sol-doc/src/sol_doc.ts b/packages/sol-doc/src/sol_doc.ts index e2cfb39e28..8e414d5616 100644 --- a/packages/sol-doc/src/sol_doc.ts +++ b/packages/sol-doc/src/sol_doc.ts @@ -43,18 +43,15 @@ export class SolDoc { devdocIfExists: DevdocOutput | undefined, ): string | undefined { let details; - if (!_.isUndefined(devdocIfExists)) { - const devdocMethodsIfExist = devdocIfExists.methods; - if (!_.isUndefined(devdocMethodsIfExist)) { - const devdocMethodIfExists = devdocMethodsIfExist[methodSignature]; - if (!_.isUndefined(devdocMethodIfExists)) { - const devdocMethodDetailsIfExist = devdocMethodIfExists.details; - if (!_.isUndefined(devdocMethodDetailsIfExist)) { - details = devdocMethodDetailsIfExist; - } - } - } + if ( + devdocIfExists !== undefined && + devdocIfExists.methods !== undefined && + devdocIfExists.methods[methodSignature] !== undefined && + devdocIfExists.methods[methodSignature].details !== undefined + ) { + details = devdocIfExists.methods[methodSignature].details; } + return details; } private static _genFallbackDoc( @@ -65,7 +62,7 @@ export class SolDoc { const comment = SolDoc._devdocMethodDetailsIfExist(methodSignature, devdocIfExists); const returnComment = - _.isUndefined(devdocIfExists) || _.isUndefined(devdocIfExists.methods[methodSignature]) + devdocIfExists === undefined || devdocIfExists.methods[methodSignature] === undefined ? undefined : devdocIfExists.methods[methodSignature].return; @@ -141,8 +138,7 @@ export class SolDoc { }, }; - const shouldOverrideCatchAllContractsConfig = - !_.isUndefined(contractsToCompile) && contractsToCompile.length > 0; + const shouldOverrideCatchAllContractsConfig = contractsToCompile !== undefined && contractsToCompile.length > 0; if (shouldOverrideCatchAllContractsConfig) { compilerOptions.contracts = contractsToCompile; } @@ -175,7 +171,7 @@ export class SolDoc { const contractNames = _.keys(contractNameToOutput); for (const contractName of contractNames) { const compiledContract = contractNameToOutput[contractName]; - if (_.isUndefined(compiledContract.abi)) { + if (compiledContract.abi === undefined) { throw new Error('compiled contract did not contain ABI output'); } docWithDependencies[contractName] = this._genDocSection(compiledContract, contractName); @@ -187,7 +183,7 @@ export class SolDoc { structs = this._overwriteStructNames(structs); let doc: DocAgnosticFormat = {}; - if (_.isUndefined(contractsToDocument) || contractsToDocument.length === 0) { + if (contractsToDocument === undefined || contractsToDocument.length === 0) { doc = docWithDependencies; } else { for (const contractToDocument of contractsToDocument) { @@ -235,22 +231,22 @@ export class SolDoc { return customType; } private _getNameFromDataItemIfExists(dataItem: DataItem): string | undefined { - if (_.isUndefined(dataItem.components)) { + if (dataItem.components === undefined) { return undefined; } const customType = this._getCustomTypeFromDataItem(dataItem); const hash = SolDoc._generateCustomTypeHash(customType); - if (_.isUndefined(this._customTypeHashToName) || _.isUndefined(this._customTypeHashToName[hash])) { + if (this._customTypeHashToName === undefined || this._customTypeHashToName[hash] === undefined) { return undefined; } return this._customTypeHashToName[hash]; } private _getTypeFromDataItem(dataItem: DataItem): Type { - const typeDocType = !_.isUndefined(dataItem.components) ? TypeDocTypes.Reference : TypeDocTypes.Intrinsic; + const typeDocType = dataItem.components !== undefined ? TypeDocTypes.Reference : TypeDocTypes.Intrinsic; let typeName: string; if (typeDocType === TypeDocTypes.Reference) { const nameIfExists = this._getNameFromDataItemIfExists(dataItem); - typeName = _.isUndefined(nameIfExists) ? SolDoc._capitalize(dataItem.name) : nameIfExists; + typeName = nameIfExists === undefined ? SolDoc._capitalize(dataItem.name) : nameIfExists; } else { typeName = dataItem.type; } @@ -271,13 +267,13 @@ export class SolDoc { return type; } private _overwriteStructNames(customTypes: CustomType[]): CustomType[] { - if (_.isUndefined(this._customTypeHashToName)) { + if (this._customTypeHashToName === undefined) { return customTypes; } const localCustomTypes = _.cloneDeep(customTypes); _.each(localCustomTypes, (customType, i) => { const hash = SolDoc._generateCustomTypeHash(customType); - if (!_.isUndefined(this._customTypeHashToName) && !_.isUndefined(this._customTypeHashToName[hash])) { + if (this._customTypeHashToName !== undefined && this._customTypeHashToName[hash] !== undefined) { localCustomTypes[i].name = this._customTypeHashToName[hash]; } }); @@ -311,7 +307,7 @@ export class SolDoc { } private _genDocSection(compiledContract: StandardContractOutput, contractName: string): DocSection { const docSection: DocSection = { - comment: _.isUndefined(compiledContract.devdoc) ? '' : compiledContract.devdoc.title, + comment: compiledContract.devdoc === undefined ? '' : compiledContract.devdoc.title, constructors: [], methods: [], properties: [], @@ -381,11 +377,11 @@ export class SolDoc { const devDocComment = SolDoc._devdocMethodDetailsIfExist(methodSignature, devdocIfExists); const returnType = this._genMethodReturnTypeDoc(abiDefinition.outputs); const returnComment = - _.isUndefined(devdocIfExists) || _.isUndefined(devdocIfExists.methods[methodSignature]) + devdocIfExists === undefined || devdocIfExists.methods[methodSignature] === undefined ? undefined : devdocIfExists.methods[methodSignature].return; - const hasNoNamedParameters = _.isUndefined(_.find(parameters, p => !_.isEmpty(p.name))); + const hasNoNamedParameters = _.find(parameters, p => !_.isEmpty(p.name)) === undefined; const isGeneratedGetter = hasNoNamedParameters; const comment = _.isEmpty(devDocComment) && isGeneratedGetter @@ -440,11 +436,11 @@ export class SolDoc { }) .join(',')})`; - if (!_.isUndefined(devdocIfExists)) { + if (devdocIfExists !== undefined) { const devdocMethodIfExists = devdocIfExists.methods[methodSignature]; - if (!_.isUndefined(devdocMethodIfExists)) { + if (devdocMethodIfExists !== undefined) { const devdocParamsIfExist = devdocMethodIfExists.params; - if (!_.isUndefined(devdocParamsIfExist)) { + if (devdocParamsIfExist !== undefined) { for (const parameter of parameters) { parameter.comment = devdocParamsIfExist[parameter.name]; } @@ -482,19 +478,19 @@ export class SolDoc { const customTypes: CustomType[] = []; // We cast to `any` here because we do not know yet if this type of abiDefinition contains // an `input` key - if (!_.isUndefined((abiDefinition as any).inputs)) { + if ((abiDefinition as any).inputs !== undefined) { const methodOrConstructorAbi = abiDefinition as MethodAbi | ConstructorAbi; _.each(methodOrConstructorAbi.inputs, input => { - if (!_.isUndefined(input.components)) { + if (!input.components === undefined) { const customType = this._getCustomTypeFromDataItem(input); customTypes.push(customType); } }); } - if (!_.isUndefined((abiDefinition as any).outputs)) { + if ((abiDefinition as any).outputs !== undefined) { const methodAbi = abiDefinition as MethodAbi; // tslint:disable-line:no-unnecessary-type-assertion _.each(methodAbi.outputs, output => { - if (!_.isUndefined(output.components)) { + if (output.components !== undefined) { const customType = this._getCustomTypeFromDataItem(output); customTypes.push(customType); } diff --git a/packages/sol-doc/test/solidity_doc_generator_test.ts b/packages/sol-doc/test/solidity_doc_generator_test.ts index a49f29d02c..99b39e722c 100644 --- a/packages/sol-doc/test/solidity_doc_generator_test.ts +++ b/packages/sol-doc/test/solidity_doc_generator_test.ts @@ -71,7 +71,7 @@ describe('#SolidityDocGenerator', () => { methodDoc = doc.NatspecEverything.methods.find(method => { return method.name === 'publicMethod'; }) as SolidityMethod; - if (_.isUndefined(methodDoc)) { + if (methodDoc === undefined) { throw new Error('publicMethod not found'); } }); @@ -101,7 +101,7 @@ describe('#SolidityDocGenerator', () => { methodDoc = doc.NatspecEverything.methods.find(method => { return method.name === 'externalMethod'; }) as SolidityMethod; - if (_.isUndefined(methodDoc)) { + if (methodDoc === undefined) { throw new Error('externalMethod not found'); } }); @@ -129,7 +129,7 @@ describe('#SolidityDocGenerator', () => { const methodDoc: SolidityMethod = doc.NatspecEverything.methods.find(method => { return method.name === 'methodWithLongDevdoc'; }) as SolidityMethod; - if (_.isUndefined(methodDoc)) { + if (methodDoc === undefined) { throw new Error('methodWithLongDevdoc not found'); } expect(methodDoc.comment).to.equal( @@ -153,7 +153,7 @@ describe('#SolidityDocGenerator', () => { const methodDoc: SolidityMethod = doc.NatspecEverything.methods.find(method => { return method.name === 'methodWithSolhintDirective'; }) as SolidityMethod; - if (_.isUndefined(methodDoc)) { + if (methodDoc === undefined) { throw new Error('methodWithSolhintDirective not found'); } expect(methodDoc.comment).to.equal('methodWithSolhintDirective @dev'); @@ -171,12 +171,12 @@ describe('#SolidityDocGenerator', () => { methodWithMultipleReturnValues = method; } } - if (_.isUndefined(methodWithMultipleReturnValues)) { + if (methodWithMultipleReturnValues === undefined) { throw new Error('method should not be undefined'); } const returnType = methodWithMultipleReturnValues.returnType; expect(returnType.typeDocType).to.equal('tuple'); - if (_.isUndefined(returnType.tupleElements)) { + if (returnType.tupleElements === undefined) { throw new Error('returnType.tupleElements should not be undefined'); } expect(returnType.tupleElements.length).to.equal(2); @@ -193,7 +193,7 @@ describe('#SolidityDocGenerator', () => { methodWithStructParamAndReturn = method; } } - if (_.isUndefined(methodWithStructParamAndReturn)) { + if (methodWithStructParamAndReturn === undefined) { throw new Error('method should not be undefined'); } /** @@ -225,7 +225,7 @@ function verifyTokenTransferProxyABIIsDocumented(doc: DocAgnosticFormat, contrac expect(doc[contractName].constructors.length).to.equal(tokenTransferProxyConstructorCount); expect(doc[contractName].methods.length).to.equal(tokenTransferProxyMethodCount); const events = doc[contractName].events; - if (_.isUndefined(events)) { + if (events === undefined) { throw new Error('events should never be undefined'); } expect(events.length).to.equal(tokenTransferProxyEventCount); @@ -242,7 +242,7 @@ function verifyTokenTransferProxyAndDepsABIsAreDocumented(doc: DocAgnosticFormat const erc20EventCount = 2; expect(doc.ERC20.constructors.length).to.equal(erc20ConstructorCount); expect(doc.ERC20.methods.length).to.equal(erc20MethodCount); - if (_.isUndefined(doc.ERC20.events)) { + if (doc.ERC20.events === undefined) { throw new Error('events should never be undefined'); } expect(doc.ERC20.events.length).to.equal(erc20EventCount); @@ -255,7 +255,7 @@ function verifyTokenTransferProxyAndDepsABIsAreDocumented(doc: DocAgnosticFormat const erc20BasicEventCount = 1; expect(doc.ERC20Basic.constructors.length).to.equal(erc20BasicConstructorCount); expect(doc.ERC20Basic.methods.length).to.equal(erc20BasicMethodCount); - if (_.isUndefined(doc.ERC20Basic.events)) { + if (doc.ERC20Basic.events === undefined) { throw new Error('events should never be undefined'); } expect(doc.ERC20Basic.events.length).to.equal(erc20BasicEventCount); diff --git a/packages/sol-profiler/CHANGELOG.json b/packages/sol-profiler/CHANGELOG.json index 9ddf717579..84e0eeeca9 100644 --- a/packages/sol-profiler/CHANGELOG.json +++ b/packages/sol-profiler/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "3.1.5", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "3.1.4", diff --git a/packages/sol-profiler/CHANGELOG.md b/packages/sol-profiler/CHANGELOG.md index 20ffb28a69..c9d9cbd119 100644 --- a/packages/sol-profiler/CHANGELOG.md +++ b/packages/sol-profiler/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.1.5 - _April 11, 2019_ + + * Dependencies updated + ## v3.1.4 - _March 21, 2019_ * Dependencies updated diff --git a/packages/sol-profiler/package.json b/packages/sol-profiler/package.json index 556d42cacb..ba4a6a744e 100644 --- a/packages/sol-profiler/package.json +++ b/packages/sol-profiler/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-profiler", - "version": "3.1.4", + "version": "3.1.5", "engines": { "node": ">=6.12" }, @@ -11,6 +11,7 @@ "build": "tsc -b", "build:ci": "yarn build", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "clean": "shx rm -rf lib src/artifacts generated_docs", "docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --tsconfig typedoc-tsconfig.json --json $JSON_FILE_PATH $PROJECT_FILES" }, @@ -29,17 +30,17 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-profiler/README.md", "dependencies": { - "@0x/sol-tracing-utils": "^6.0.9", - "@0x/subproviders": "^4.0.4", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "ethereum-types": "^2.1.1", + "@0x/sol-tracing-utils": "^6.0.10", + "@0x/subproviders": "^4.0.5", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "ethereum-types": "^2.1.2", "ethereumjs-util": "^5.1.1", "lodash": "^4.17.11", "web3-provider-engine": "14.0.6" }, "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/node": "*", "@types/web3-provider-engine": "^14.0.0", "npm-run-all": "^4.1.2", diff --git a/packages/sol-profiler/src/cost_utils.ts b/packages/sol-profiler/src/cost_utils.ts index 652b039e5d..75ebcdb4f0 100644 --- a/packages/sol-profiler/src/cost_utils.ts +++ b/packages/sol-profiler/src/cost_utils.ts @@ -14,7 +14,7 @@ const G_COPY = 3; export const costUtils = { reportCallDataCost(traceInfo: TraceInfo): number { - if (_.isUndefined(traceInfo.dataIfExists)) { + if (traceInfo.dataIfExists === undefined) { // No call data to report return 0; } @@ -81,7 +81,7 @@ export const costUtils = { return gasCost; }, _printMemoryCost(highestMemoryLocationAccessed?: number): number { - if (_.isUndefined(highestMemoryLocationAccessed)) { + if (highestMemoryLocationAccessed === undefined) { return 0; } const memoryWordsUsed = Math.ceil((highestMemoryLocationAccessed + WORD_SIZE) / WORD_SIZE); diff --git a/packages/sol-profiler/src/profiler_subprovider.ts b/packages/sol-profiler/src/profiler_subprovider.ts index eed744812f..9367f05e73 100644 --- a/packages/sol-profiler/src/profiler_subprovider.ts +++ b/packages/sol-profiler/src/profiler_subprovider.ts @@ -49,7 +49,7 @@ export class ProfilerSubprovider extends TraceInfoSubprovider { // tslint:disable prefer-function-over-method protected async _handleTraceInfoAsync(traceInfo: TraceInfo): Promise { const receipt = await this._web3Wrapper.getTransactionReceiptIfExistsAsync(traceInfo.txHash); - if (_.isUndefined(receipt)) { + if (receipt === undefined) { return; } if (receipt.gasUsed === BASE_COST) { @@ -131,7 +131,7 @@ export const profilerHandler: SingleFileSubtraceHandler = ( // TODO(logvinov): Optimize the loop below. const interestingStructLogs = _.filter(subtrace, structLog => { const sourceRange = pcToSourceRange[structLog.pc]; - if (_.isUndefined(sourceRange)) { + if (sourceRange === undefined) { return false; } return sourceRange.fileName === absoluteFileName; diff --git a/packages/sol-resolver/CHANGELOG.json b/packages/sol-resolver/CHANGELOG.json index ffaac2c451..e8689e85ca 100644 --- a/packages/sol-resolver/CHANGELOG.json +++ b/packages/sol-resolver/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.0.7", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "2.0.6", diff --git a/packages/sol-resolver/CHANGELOG.md b/packages/sol-resolver/CHANGELOG.md index 54534253ff..6c25a3308b 100644 --- a/packages/sol-resolver/CHANGELOG.md +++ b/packages/sol-resolver/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.7 - _April 11, 2019_ + + * Dependencies updated + ## v2.0.6 - _March 21, 2019_ * Dependencies updated diff --git a/packages/sol-resolver/package.json b/packages/sol-resolver/package.json index 2b0cad70fd..ee4e3154fe 100644 --- a/packages/sol-resolver/package.json +++ b/packages/sol-resolver/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-resolver", - "version": "2.0.6", + "version": "2.0.7", "engines": { "node": ">=6.12" }, @@ -11,7 +11,8 @@ "build": "tsc -b", "build:ci": "yarn build", "clean": "shx rm -rf lib", - "lint": "tslint --format stylish --project ." + "lint": "tslint --format stylish --project .", + "fix": "tslint --format stylish --fix --project ." }, "repository": { "type": "git", @@ -23,15 +24,15 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/resolver/README.md", "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "make-promises-safe": "^1.1.0", "shx": "^0.2.2", "tslint": "5.11.0", "typescript": "3.0.1" }, "dependencies": { - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/packages/sol-resolver/src/resolvers/fallthrough_resolver.ts b/packages/sol-resolver/src/resolvers/fallthrough_resolver.ts index 338f334f41..ed2ff88460 100644 --- a/packages/sol-resolver/src/resolvers/fallthrough_resolver.ts +++ b/packages/sol-resolver/src/resolvers/fallthrough_resolver.ts @@ -1,5 +1,3 @@ -import * as _ from 'lodash'; - import { ContractSource } from '../types'; import { Resolver } from './resolver'; @@ -12,7 +10,7 @@ export class FallthroughResolver extends Resolver { public resolveIfExists(importPath: string): ContractSource | undefined { for (const resolver of this._resolvers) { const contractSourceIfExists = resolver.resolveIfExists(importPath); - if (!_.isUndefined(contractSourceIfExists)) { + if (contractSourceIfExists !== undefined) { return contractSourceIfExists; } } diff --git a/packages/sol-resolver/src/resolvers/npm_resolver.ts b/packages/sol-resolver/src/resolvers/npm_resolver.ts index 3c1d095573..3be61f7215 100644 --- a/packages/sol-resolver/src/resolvers/npm_resolver.ts +++ b/packages/sol-resolver/src/resolvers/npm_resolver.ts @@ -26,9 +26,8 @@ export class NPMResolver extends Resolver { let currentPath = this._packagePath; const ROOT_PATH = '/'; while (currentPath !== ROOT_PATH) { - const packagePath = _.isUndefined(packageScopeIfExists) - ? packageName - : path.join(packageScopeIfExists, packageName); + const packagePath = + packageScopeIfExists === undefined ? packageName : path.join(packageScopeIfExists, packageName); const lookupPath = path.join(currentPath, 'node_modules', packagePath, pathWithinPackage); if (fs.existsSync(lookupPath) && fs.lstatSync(lookupPath).isFile()) { const fileContent = fs.readFileSync(lookupPath).toString(); diff --git a/packages/sol-resolver/src/resolvers/resolver.ts b/packages/sol-resolver/src/resolvers/resolver.ts index 7edc9a85d4..efbfb405a7 100644 --- a/packages/sol-resolver/src/resolvers/resolver.ts +++ b/packages/sol-resolver/src/resolvers/resolver.ts @@ -1,12 +1,10 @@ -import * as _ from 'lodash'; - import { ContractSource } from '../types'; export abstract class Resolver { public abstract resolveIfExists(importPath: string): ContractSource | undefined; public resolve(importPath: string): ContractSource { const contractSourceIfExists = this.resolveIfExists(importPath); - if (_.isUndefined(contractSourceIfExists)) { + if (contractSourceIfExists === undefined) { throw new Error(`Failed to resolve ${importPath}`); } return contractSourceIfExists; diff --git a/packages/sol-resolver/src/resolvers/spy_resolver.ts b/packages/sol-resolver/src/resolvers/spy_resolver.ts index 5582d771a3..b596c7ada3 100644 --- a/packages/sol-resolver/src/resolvers/spy_resolver.ts +++ b/packages/sol-resolver/src/resolvers/spy_resolver.ts @@ -1,5 +1,3 @@ -import * as _ from 'lodash'; - import { ContractSource } from '../types'; import { Resolver } from './resolver'; @@ -17,7 +15,7 @@ export class SpyResolver extends Resolver { } public resolveIfExists(importPath: string): ContractSource | undefined { const contractSourceIfExists = this._resolver.resolveIfExists(importPath); - if (!_.isUndefined(contractSourceIfExists)) { + if (contractSourceIfExists !== undefined) { this.resolvedContractSources.push(contractSourceIfExists); } return contractSourceIfExists; diff --git a/packages/sol-trace/CHANGELOG.json b/packages/sol-trace/CHANGELOG.json index 9f381d3d36..bd0b59bcca 100644 --- a/packages/sol-trace/CHANGELOG.json +++ b/packages/sol-trace/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.0.11", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "2.0.10", diff --git a/packages/sol-trace/CHANGELOG.md b/packages/sol-trace/CHANGELOG.md index b7e81c7e66..7f7d45a3b8 100644 --- a/packages/sol-trace/CHANGELOG.md +++ b/packages/sol-trace/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.11 - _April 11, 2019_ + + * Dependencies updated + ## v2.0.10 - _March 21, 2019_ * Dependencies updated diff --git a/packages/sol-trace/package.json b/packages/sol-trace/package.json index b5b2e104ea..f510f5b03a 100644 --- a/packages/sol-trace/package.json +++ b/packages/sol-trace/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-trace", - "version": "2.0.10", + "version": "2.0.11", "engines": { "node": ">=6.12" }, @@ -11,6 +11,7 @@ "build": "tsc -b", "build:ci": "yarn build", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "clean": "shx rm -rf lib src/artifacts generated_docs", "docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --tsconfig typedoc-tsconfig.json --json $JSON_FILE_PATH $PROJECT_FILES" }, @@ -29,18 +30,18 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-trace/README.md", "dependencies": { - "@0x/sol-tracing-utils": "^6.0.9", - "@0x/subproviders": "^4.0.4", - "@0x/typescript-typings": "^4.2.1", + "@0x/sol-tracing-utils": "^6.0.10", + "@0x/subproviders": "^4.0.5", + "@0x/typescript-typings": "^4.2.2", "chalk": "^2.3.0", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "ethereumjs-util": "^5.1.1", "lodash": "^4.17.11", "loglevel": "^1.6.1", "web3-provider-engine": "14.0.6" }, "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/loglevel": "^1.5.3", "@types/node": "*", "@types/web3-provider-engine": "^14.0.0", diff --git a/packages/sol-trace/src/revert_trace_subprovider.ts b/packages/sol-trace/src/revert_trace_subprovider.ts index ea2b684a59..5e2bebea94 100644 --- a/packages/sol-trace/src/revert_trace_subprovider.ts +++ b/packages/sol-trace/src/revert_trace_subprovider.ts @@ -60,7 +60,7 @@ export class RevertTraceSubprovider extends TraceCollectionSubprovider { } private async _printStackTraceAsync(evmCallStack: EvmCallStack): Promise { const sourceSnippets: SourceSnippet[] = []; - if (_.isUndefined(this._contractsData)) { + if (this._contractsData === undefined) { this._contractsData = await this._artifactAdapter.collectContractsDataAsync(); } for (const evmCallStackEntry of evmCallStack) { @@ -71,7 +71,7 @@ export class RevertTraceSubprovider extends TraceCollectionSubprovider { } const bytecode = await this._web3Wrapper.getContractCodeAsync(evmCallStackEntry.address); const contractData = utils.getContractDataIfExists(this._contractsData, bytecode); - if (_.isUndefined(contractData)) { + if (contractData === undefined) { const shortenHex = (hex: string) => { /** * Length choosen so that both error messages are of the same length @@ -106,11 +106,11 @@ export class RevertTraceSubprovider extends TraceCollectionSubprovider { // actually happens in assembly). In that case, we want to keep // searching backwards by decrementing the pc until we find a // mapped source range. - while (_.isUndefined(sourceRange) && pc > 0) { + while (sourceRange === undefined && pc > 0) { sourceRange = pcToSourceRange[pc]; pc -= 1; } - if (_.isUndefined(sourceRange)) { + if (sourceRange === undefined) { this._logger.warn( `could not find matching sourceRange for structLog: ${JSON.stringify( _.omit(evmCallStackEntry.structLog, 'stack'), diff --git a/packages/sol-tracing-utils/CHANGELOG.json b/packages/sol-tracing-utils/CHANGELOG.json index 2cf2b0bed5..12b3928eb0 100644 --- a/packages/sol-tracing-utils/CHANGELOG.json +++ b/packages/sol-tracing-utils/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "6.0.10", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "6.0.9", diff --git a/packages/sol-tracing-utils/CHANGELOG.md b/packages/sol-tracing-utils/CHANGELOG.md index e5823c4bf7..15eebc5238 100644 --- a/packages/sol-tracing-utils/CHANGELOG.md +++ b/packages/sol-tracing-utils/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v6.0.10 - _April 11, 2019_ + + * Dependencies updated + ## v6.0.9 - _March 21, 2019_ * Dependencies updated diff --git a/packages/sol-tracing-utils/package.json b/packages/sol-tracing-utils/package.json index 87f25d8f7e..cb13255808 100644 --- a/packages/sol-tracing-utils/package.json +++ b/packages/sol-tracing-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-tracing-utils", - "version": "6.0.9", + "version": "6.0.10", "engines": { "node": ">=6.12" }, @@ -12,6 +12,7 @@ "build:ci": "yarn build", "pre_build": "run-s copy_test_fixtures", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "test": "run-s compile_test run_mocha", "rebuild_and_test": "run-s clean build test", "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", @@ -42,16 +43,16 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-tracing-utils/README.md", "dependencies": { - "@0x/dev-utils": "^2.2.0", - "@0x/sol-compiler": "^3.1.5", - "@0x/sol-resolver": "^2.0.6", - "@0x/subproviders": "^4.0.4", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", + "@0x/dev-utils": "^2.2.1", + "@0x/sol-compiler": "^3.1.6", + "@0x/sol-resolver": "^2.0.7", + "@0x/subproviders": "^4.0.5", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", "@types/solidity-parser-antlr": "^0.2.3", "chalk": "^2.3.0", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "ethereumjs-util": "^5.1.1", "ethers": "~4.0.4", "glob": "^7.1.2", @@ -65,7 +66,7 @@ "solidity-parser-antlr": "^0.4.2" }, "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/istanbul": "^0.4.30", "@types/loglevel": "^1.5.3", "@types/mkdirp": "^0.5.2", diff --git a/packages/sol-tracing-utils/src/artifact_adapters/sol_compiler_artifact_adapter.ts b/packages/sol-tracing-utils/src/artifact_adapters/sol_compiler_artifact_adapter.ts index e436f5be08..3fb38f8e89 100644 --- a/packages/sol-tracing-utils/src/artifact_adapters/sol_compiler_artifact_adapter.ts +++ b/packages/sol-tracing-utils/src/artifact_adapters/sol_compiler_artifact_adapter.ts @@ -26,11 +26,11 @@ export class SolCompilerArtifactAdapter extends AbstractArtifactAdapter { const config: CompilerOptions = fs.existsSync(CONFIG_FILE) ? JSON.parse(fs.readFileSync(CONFIG_FILE).toString()) : {}; - if (_.isUndefined(artifactsPath) && _.isUndefined(config.artifactsDir)) { + if (artifactsPath === undefined && config.artifactsDir === undefined) { throw new Error(`artifactsDir not found in ${CONFIG_FILE}`); } this._artifactsPath = (artifactsPath || config.artifactsDir) as string; - if (_.isUndefined(sourcesPath) && _.isUndefined(config.contractsDir)) { + if (sourcesPath === undefined && config.contractsDir === undefined) { throw new Error(`contractsDir not found in ${CONFIG_FILE}`); } this._sourcesPath = (sourcesPath || config.contractsDir) as string; @@ -47,7 +47,7 @@ export class SolCompilerArtifactAdapter extends AbstractArtifactAdapter { const contractsData: ContractData[] = []; for (const artifactFileName of artifactFileNames) { const artifact: ContractArtifact = JSON.parse(fs.readFileSync(artifactFileName).toString()); - if (_.isUndefined(artifact.compilerOutput.evm)) { + if (artifact.compilerOutput.evm === undefined) { logUtils.warn(`${artifactFileName} doesn't contain bytecode. Skipping...`); continue; } diff --git a/packages/sol-tracing-utils/src/artifact_adapters/truffle_artifact_adapter.ts b/packages/sol-tracing-utils/src/artifact_adapters/truffle_artifact_adapter.ts index 5c01f52bbc..4c6505699f 100644 --- a/packages/sol-tracing-utils/src/artifact_adapters/truffle_artifact_adapter.ts +++ b/packages/sol-tracing-utils/src/artifact_adapters/truffle_artifact_adapter.ts @@ -81,10 +81,10 @@ export class TruffleArtifactAdapter extends AbstractArtifactAdapter { } private _getTruffleSolcSettings(): Partial { const truffleConfig = this._getTruffleConfig(); - if (!_.isUndefined(truffleConfig.solc)) { + if (truffleConfig.solc !== undefined) { // Truffle < 5.0 return (truffleConfig as any).solc; - } else if (!_.isUndefined((truffleConfig as any).compilers.solc)) { + } else if ((truffleConfig as any).compilers.solc !== undefined) { // Truffle >= 5.0 return (truffleConfig as any).compilers.solc.settings; } else { diff --git a/packages/sol-tracing-utils/src/ast_visitor.ts b/packages/sol-tracing-utils/src/ast_visitor.ts index 4187eb589a..637ef528d9 100644 --- a/packages/sol-tracing-utils/src/ast_visitor.ts +++ b/packages/sol-tracing-utils/src/ast_visitor.ts @@ -83,7 +83,7 @@ export class ASTVisitor { this._visitStatement(ast); } public ExpressionStatement(ast: Parser.ExpressionStatement): void { - if (!_.isNull(ast.expression)) { + if (ast.expression !== null) { this._visitStatement(ast.expression); } } diff --git a/packages/sol-tracing-utils/src/collect_coverage_entries.ts b/packages/sol-tracing-utils/src/collect_coverage_entries.ts index d5045b106d..b7413613eb 100644 --- a/packages/sol-tracing-utils/src/collect_coverage_entries.ts +++ b/packages/sol-tracing-utils/src/collect_coverage_entries.ts @@ -10,12 +10,11 @@ const sourceHashToCoverageEntries: { [sourceHash: string]: CoverageEntriesDescri export const collectCoverageEntries = (contractSource: string, ignoreRegexp?: RegExp) => { const sourceHash = ethUtil.sha3(contractSource).toString('hex'); - if (_.isUndefined(sourceHashToCoverageEntries[sourceHash]) && !_.isUndefined(contractSource)) { + if (sourceHashToCoverageEntries[sourceHash] === undefined && contractSource !== undefined) { const ast = parser.parse(contractSource, { range: true }); const offsetToLocation = getOffsetToLocation(contractSource); - const ignoreRangesBeginningAt = _.isUndefined(ignoreRegexp) - ? [] - : gatherRangesToIgnore(contractSource, ignoreRegexp); + const ignoreRangesBeginningAt = + ignoreRegexp === undefined ? [] : gatherRangesToIgnore(contractSource, ignoreRegexp); const visitor = new ASTVisitor(offsetToLocation, ignoreRangesBeginningAt); parser.visit(ast, visitor); sourceHashToCoverageEntries[sourceHash] = visitor.getCollectedCoverageEntries(); diff --git a/packages/sol-tracing-utils/src/revert_trace.ts b/packages/sol-tracing-utils/src/revert_trace.ts index 4ebb8a672a..a7c3b96223 100644 --- a/packages/sol-tracing-utils/src/revert_trace.ts +++ b/packages/sol-tracing-utils/src/revert_trace.ts @@ -48,7 +48,7 @@ export function getRevertTrace(structLogs: StructLog[], startAddress: string): E } else if (utils.isEndOpcode(structLog.op) && structLog.op !== OpCode.Revert) { // Just like with calls, sometimes returns/stops don't change the execution context (current address). const nextStructLog = structLogs[i + 1]; - if (_.isUndefined(nextStructLog) || nextStructLog.depth !== structLog.depth) { + if (nextStructLog === undefined || nextStructLog.depth !== structLog.depth) { evmCallStack.pop(); addressStack.pop(); } diff --git a/packages/sol-tracing-utils/src/source_maps.ts b/packages/sol-tracing-utils/src/source_maps.ts index 8c17652d95..7f80fc589a 100644 --- a/packages/sol-tracing-utils/src/source_maps.ts +++ b/packages/sol-tracing-utils/src/source_maps.ts @@ -48,7 +48,7 @@ export function parseSourceMap( const pcToInstructionIndex: { [programCounter: number]: number } = getPcToInstructionIndexMapping(bytecode); const fileIndexToOffsetToLocation: { [fileIndex: number]: OffsetToLocation } = {}; _.map(sourceCodes, (sourceCode: string, fileIndex: number) => { - fileIndexToOffsetToLocation[fileIndex] = _.isUndefined(sourceCode) ? {} : getOffsetToLocation(sourceCode); + fileIndexToOffsetToLocation[fileIndex] = sourceCode === undefined ? {} : getOffsetToLocation(sourceCode); }); const entries = srcMap.split(';'); let lastParsedEntry: SourceLocation = {} as any; @@ -69,7 +69,7 @@ export function parseSourceMap( length, fileIndex, }; - if (parsedEntry.fileIndex !== -1 && !_.isUndefined(fileIndexToOffsetToLocation[parsedEntry.fileIndex])) { + if (parsedEntry.fileIndex !== -1 && fileIndexToOffsetToLocation[parsedEntry.fileIndex] !== undefined) { const offsetToLocation = fileIndexToOffsetToLocation[parsedEntry.fileIndex]; const sourceRange = { location: { diff --git a/packages/sol-tracing-utils/src/trace_collection_subprovider.ts b/packages/sol-tracing-utils/src/trace_collection_subprovider.ts index 3dc10b33bf..0665fc2e3b 100644 --- a/packages/sol-tracing-utils/src/trace_collection_subprovider.ts +++ b/packages/sol-tracing-utils/src/trace_collection_subprovider.ts @@ -163,16 +163,16 @@ export abstract class TraceCollectionSubprovider extends Subprovider { await this._lock.acquire(); } const NULL_ADDRESS = '0x0'; - if (_.isNull(err)) { + if (err === null) { const toAddress = - _.isUndefined(txData.to) || txData.to === NULL_ADDRESS ? constants.NEW_CONTRACT : txData.to; + txData.to === undefined || txData.to === NULL_ADDRESS ? constants.NEW_CONTRACT : txData.to; await this._recordTxTraceAsync(toAddress, txData.data, txHash as string); } else { const latestBlock = await this._web3Wrapper.getBlockWithTransactionDataAsync(BlockParamLiteral.Latest); const transactions = latestBlock.transactions; for (const transaction of transactions) { const toAddress = - _.isUndefined(txData.to) || txData.to === NULL_ADDRESS ? constants.NEW_CONTRACT : txData.to; + txData.to === undefined || txData.to === NULL_ADDRESS ? constants.NEW_CONTRACT : txData.to; await this._recordTxTraceAsync(toAddress, transaction.input, transaction.hash); } } diff --git a/packages/sol-tracing-utils/src/trace_collector.ts b/packages/sol-tracing-utils/src/trace_collector.ts index ec9ea34b78..68261de847 100644 --- a/packages/sol-tracing-utils/src/trace_collector.ts +++ b/packages/sol-tracing-utils/src/trace_collector.ts @@ -67,11 +67,11 @@ export class TraceCollector { bytecode: string, isContractCreation: boolean, ): Promise { - if (_.isUndefined(this._contractsData)) { + if (this._contractsData === undefined) { this._contractsData = await this._artifactAdapter.collectContractsDataAsync(); } const contractData = utils.getContractDataIfExists(this._contractsData, bytecode); - if (_.isUndefined(contractData)) { + if (contractData === undefined) { /** * Length chooses so that both error messages are of the same length * and it's enough data to figure out which artifact has a problem. @@ -98,7 +98,7 @@ export class TraceCollector { bytecode, isContractCreation, ); - if (_.isUndefined(contractData)) { + if (contractData === undefined) { return; } const bytecodeHex = stripHexPrefix(bytecode); diff --git a/packages/sol-tracing-utils/src/utils.ts b/packages/sol-tracing-utils/src/utils.ts index eeae51b5c5..b1c793a01e 100644 --- a/packages/sol-tracing-utils/src/utils.ts +++ b/packages/sol-tracing-utils/src/utils.ts @@ -55,7 +55,7 @@ export const utils = { const runtimeBytecodeRegex = utils.bytecodeToBytecodeRegex(contractDataCandidate.runtimeBytecode); // We use that function to find by bytecode or runtimeBytecode. Those are quasi-random strings so // collisions are practically impossible and it allows us to reuse that code - return !_.isNull(bytecode.match(bytecodeRegex)) || !_.isNull(bytecode.match(runtimeBytecodeRegex)); + return bytecode.match(bytecodeRegex) !== null || bytecode.match(runtimeBytecodeRegex) !== null; }); if (contractDataCandidates.length > 1) { const candidates = contractDataCandidates.map( diff --git a/packages/sol-tracing-utils/test/sol_compiler_artifact_adapter_test.ts b/packages/sol-tracing-utils/test/sol_compiler_artifact_adapter_test.ts index 9c58d2cef8..07d3bf84b6 100644 --- a/packages/sol-tracing-utils/test/sol_compiler_artifact_adapter_test.ts +++ b/packages/sol-tracing-utils/test/sol_compiler_artifact_adapter_test.ts @@ -16,6 +16,7 @@ describe('SolCompilerArtifactAdapter', () => { const contractsData = await zeroExArtifactsAdapter.collectContractsDataAsync(); _.forEach(contractsData, contractData => { expect(contractData).to.have.keys([ + 'name', 'sourceCodes', 'sources', 'sourceMap', diff --git a/packages/sol-tracing-utils/test/source_maps_test.ts b/packages/sol-tracing-utils/test/source_maps_test.ts index 330a6a3e1e..b874ea4374 100644 --- a/packages/sol-tracing-utils/test/source_maps_test.ts +++ b/packages/sol-tracing-utils/test/source_maps_test.ts @@ -62,7 +62,7 @@ describe('source maps', () => { _.forEach(pcToSourceRange, sourceRange => { // Solidity source maps are too short and we map some instructions to undefined // Source: https://github.com/ethereum/solidity/issues/3741 - if (!_.isUndefined(sourceRange)) { + if (sourceRange !== undefined) { expect(sourceRange).to.be.deep.equal(expectedSourceRange); } }); diff --git a/packages/sra-spec/CHANGELOG.json b/packages/sra-spec/CHANGELOG.json index e6f49c3bc6..921ddfa186 100644 --- a/packages/sra-spec/CHANGELOG.json +++ b/packages/sra-spec/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.0.9", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "2.0.8", diff --git a/packages/sra-spec/CHANGELOG.md b/packages/sra-spec/CHANGELOG.md index 0c4ec80f7d..b400379739 100644 --- a/packages/sra-spec/CHANGELOG.md +++ b/packages/sra-spec/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.9 - _April 11, 2019_ + + * Dependencies updated + ## v2.0.8 - _March 21, 2019_ * Dependencies updated diff --git a/packages/sra-spec/package.json b/packages/sra-spec/package.json index afd5f3373c..5e9f316933 100644 --- a/packages/sra-spec/package.json +++ b/packages/sra-spec/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sra-spec", - "version": "2.0.8", + "version": "2.0.9", "engines": { "node": ">=6.12" }, @@ -11,6 +11,7 @@ "serve": "redoc-cli serve lib/api.json --watch", "watch_without_deps": "run-p build:watch serve", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "test": "swagger-cli validate lib/api.json", "rebuild_and_test": "run-s clean build test", "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", @@ -35,11 +36,11 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sra-spec/README.md", "dependencies": { - "@0x/json-schemas": "^3.0.8", + "@0x/json-schemas": "^3.0.9", "@loopback/openapi-v3-types": "^0.8.2" }, "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/mocha": "^2.2.42", "@types/node": "*", "chai": "^4.0.1", diff --git a/packages/subproviders/CHANGELOG.json b/packages/subproviders/CHANGELOG.json index 3d265d164a..568cf785cb 100644 --- a/packages/subproviders/CHANGELOG.json +++ b/packages/subproviders/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "4.0.5", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "4.0.4", diff --git a/packages/subproviders/CHANGELOG.md b/packages/subproviders/CHANGELOG.md index b6087c7498..1449766fe0 100644 --- a/packages/subproviders/CHANGELOG.md +++ b/packages/subproviders/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.0.5 - _April 11, 2019_ + + * Dependencies updated + ## v4.0.4 - _March 21, 2019_ * Dependencies updated diff --git a/packages/subproviders/package.json b/packages/subproviders/package.json index acc19a975a..5efcc6937e 100644 --- a/packages/subproviders/package.json +++ b/packages/subproviders/package.json @@ -1,6 +1,6 @@ { "name": "@0x/subproviders", - "version": "4.0.4", + "version": "4.0.5", "engines": { "node": ">=6.12" }, @@ -12,6 +12,7 @@ "build:ci": "yarn build", "clean": "shx rm -rf lib generated_docs", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "run_mocha_unit": "mocha --require source-map-support/register --require make-promises-safe lib/test/unit/**/*_test.js --timeout 10000 --bail --exit", "run_mocha_integration": "mocha --require source-map-support/register --require make-promises-safe lib/test/integration/**/*_test.js --timeout 10000 --bail --exit", "test": "npm run test:unit", @@ -29,11 +30,11 @@ } }, "dependencies": { - "@0x/assert": "^2.0.8", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", + "@0x/assert": "^2.0.9", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", "@ledgerhq/hw-app-eth": "^4.3.0", "@ledgerhq/hw-transport-u2f": "4.24.0", "@types/eth-lightwallet": "^3.0.0", @@ -42,7 +43,7 @@ "bip39": "^2.5.0", "bn.js": "^4.11.8", "eth-lightwallet": "^3.0.1", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "ethereumjs-tx": "^1.3.5", "ethereumjs-util": "^5.1.1", "ganache-core": "^2.5.3", @@ -53,7 +54,7 @@ "web3-provider-engine": "14.0.6" }, "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/bip39": "^2.4.0", "@types/bn.js": "^4.11.0", "@types/ethereumjs-tx": "^1.0.0", diff --git a/packages/subproviders/src/subproviders/base_wallet_subprovider.ts b/packages/subproviders/src/subproviders/base_wallet_subprovider.ts index e9d1040748..89b5958dcf 100644 --- a/packages/subproviders/src/subproviders/base_wallet_subprovider.ts +++ b/packages/subproviders/src/subproviders/base_wallet_subprovider.ts @@ -9,13 +9,13 @@ import { Subprovider } from './subprovider'; export abstract class BaseWalletSubprovider extends Subprovider { protected static _validateTxParams(txParams: PartialTxParams): void { - if (!_.isUndefined(txParams.to)) { + if (txParams.to !== undefined) { assert.isETHAddressHex('to', txParams.to); } assert.isHexString('nonce', txParams.nonce); } private static _validateSender(sender: string): void { - if (_.isUndefined(sender) || !addressUtils.isAddress(sender)) { + if (sender === undefined || !addressUtils.isAddress(sender)) { throw new Error(WalletSubproviderErrors.SenderInvalidOrNotSupplied); } } @@ -122,7 +122,7 @@ export abstract class BaseWalletSubprovider extends Subprovider { } private async _populateMissingTxParamsAsync(partialTxParams: PartialTxParams): Promise { let txParams = partialTxParams; - if (_.isUndefined(partialTxParams.gasPrice)) { + if (partialTxParams.gasPrice === undefined) { const gasPriceResult = await this.emitPayloadAsync({ method: 'eth_gasPrice', params: [], @@ -130,7 +130,7 @@ export abstract class BaseWalletSubprovider extends Subprovider { const gasPrice = gasPriceResult.result.toString(); txParams = { ...txParams, gasPrice }; } - if (_.isUndefined(partialTxParams.nonce)) { + if (partialTxParams.nonce === undefined) { const nonceResult = await this.emitPayloadAsync({ method: 'eth_getTransactionCount', params: [partialTxParams.from, 'pending'], @@ -138,7 +138,7 @@ export abstract class BaseWalletSubprovider extends Subprovider { const nonce = nonceResult.result; txParams = { ...txParams, nonce }; } - if (_.isUndefined(partialTxParams.gas)) { + if (partialTxParams.gas === undefined) { const gasResult = await this.emitPayloadAsync({ method: 'eth_estimateGas', params: [partialTxParams], diff --git a/packages/subproviders/src/subproviders/ledger.ts b/packages/subproviders/src/subproviders/ledger.ts index b5ca10ce13..caa3ecb71f 100644 --- a/packages/subproviders/src/subproviders/ledger.ts +++ b/packages/subproviders/src/subproviders/ledger.ts @@ -51,13 +51,13 @@ export class LedgerSubprovider extends BaseWalletSubprovider { this._ledgerEthereumClientFactoryAsync = config.ledgerEthereumClientFactoryAsync; this._baseDerivationPath = config.baseDerivationPath || DEFAULT_BASE_DERIVATION_PATH; this._shouldAlwaysAskForConfirmation = - !_.isUndefined(config.accountFetchingConfigs) && - !_.isUndefined(config.accountFetchingConfigs.shouldAskForOnDeviceConfirmation) + config.accountFetchingConfigs !== undefined && + config.accountFetchingConfigs.shouldAskForOnDeviceConfirmation !== undefined ? config.accountFetchingConfigs.shouldAskForOnDeviceConfirmation : ASK_FOR_ON_DEVICE_CONFIRMATION; this._addressSearchLimit = - !_.isUndefined(config.accountFetchingConfigs) && - !_.isUndefined(config.accountFetchingConfigs.addressSearchLimit) + config.accountFetchingConfigs !== undefined && + config.accountFetchingConfigs.addressSearchLimit !== undefined ? config.accountFetchingConfigs.addressSearchLimit : DEFAULT_ADDRESS_SEARCH_LIMIT; } @@ -100,7 +100,7 @@ export class LedgerSubprovider extends BaseWalletSubprovider { */ public async signTransactionAsync(txParams: PartialTxParams): Promise { LedgerSubprovider._validateTxParams(txParams); - if (_.isUndefined(txParams.from) || !addressUtils.isAddress(txParams.from)) { + if (txParams.from === undefined || !addressUtils.isAddress(txParams.from)) { throw new Error(WalletSubproviderErrors.FromAddressMissingOrInvalid); } const initialDerivedKeyInfo = await this._initialDerivedKeyInfoAsync(); @@ -156,7 +156,7 @@ export class LedgerSubprovider extends BaseWalletSubprovider { * @return Signature hex string (order: rsv) */ public async signPersonalMessageAsync(data: string, address: string): Promise { - if (_.isUndefined(data)) { + if (data === undefined) { throw new Error(WalletSubproviderErrors.DataMissingForSignPersonalMessage); } assert.isHexString('data', data); @@ -198,7 +198,7 @@ export class LedgerSubprovider extends BaseWalletSubprovider { } private async _createLedgerClientAsync(): Promise { await this._connectionLock.acquire(); - if (!_.isUndefined(this._ledgerClientIfExists)) { + if (this._ledgerClientIfExists !== undefined) { this._connectionLock.release(); throw new Error(LedgerSubproviderErrors.MultipleOpenConnectionsDisallowed); } @@ -208,7 +208,7 @@ export class LedgerSubprovider extends BaseWalletSubprovider { } private async _destroyLedgerClientAsync(): Promise { await this._connectionLock.acquire(); - if (_.isUndefined(this._ledgerClientIfExists)) { + if (this._ledgerClientIfExists === undefined) { this._connectionLock.release(); return; } @@ -248,7 +248,7 @@ export class LedgerSubprovider extends BaseWalletSubprovider { initalHDKey, this._addressSearchLimit, ); - if (_.isUndefined(matchedDerivedKeyInfo)) { + if (matchedDerivedKeyInfo === undefined) { throw new Error(`${WalletSubproviderErrors.AddressNotFound}: ${address}`); } return matchedDerivedKeyInfo; diff --git a/packages/subproviders/src/subproviders/mnemonic_wallet.ts b/packages/subproviders/src/subproviders/mnemonic_wallet.ts index 140e3d5153..ef01948e83 100644 --- a/packages/subproviders/src/subproviders/mnemonic_wallet.ts +++ b/packages/subproviders/src/subproviders/mnemonic_wallet.ts @@ -82,7 +82,7 @@ export class MnemonicWalletSubprovider extends BaseWalletSubprovider { * @return Signed transaction hex string */ public async signTransactionAsync(txParams: PartialTxParams): Promise { - if (_.isUndefined(txParams.from) || !addressUtils.isAddress(txParams.from)) { + if (txParams.from === undefined || !addressUtils.isAddress(txParams.from)) { throw new Error(WalletSubproviderErrors.FromAddressMissingOrInvalid); } const privateKeyWallet = this._privateKeyWalletForAddress(txParams.from); @@ -100,7 +100,7 @@ export class MnemonicWalletSubprovider extends BaseWalletSubprovider { * @return Signature hex string (order: rsv) */ public async signPersonalMessageAsync(data: string, address: string): Promise { - if (_.isUndefined(data)) { + if (data === undefined) { throw new Error(WalletSubproviderErrors.DataMissingForSignPersonalMessage); } assert.isHexString('data', data); @@ -120,7 +120,7 @@ export class MnemonicWalletSubprovider extends BaseWalletSubprovider { * @return Signature hex string (order: rsv) */ public async signTypedDataAsync(address: string, typedData: EIP712TypedData): Promise { - if (_.isUndefined(typedData)) { + if (typedData === undefined) { throw new Error(WalletSubproviderErrors.DataMissingForSignPersonalMessage); } assert.isETHAddressHex('address', address); @@ -140,7 +140,7 @@ export class MnemonicWalletSubprovider extends BaseWalletSubprovider { this._derivedKeyInfo, this._addressSearchLimit, ); - if (_.isUndefined(matchedDerivedKeyInfo)) { + if (matchedDerivedKeyInfo === undefined) { throw new Error(`${WalletSubproviderErrors.AddressNotFound}: ${address}`); } return matchedDerivedKeyInfo; diff --git a/packages/subproviders/src/subproviders/nonce_tracker.ts b/packages/subproviders/src/subproviders/nonce_tracker.ts index eea722aee8..82ff7b6fb3 100644 --- a/packages/subproviders/src/subproviders/nonce_tracker.ts +++ b/packages/subproviders/src/subproviders/nonce_tracker.ts @@ -20,7 +20,7 @@ export class NonceTrackerSubprovider extends Subprovider { private readonly _nonceCache: { [address: string]: string } = {}; private static _reconstructTransaction(payload: JSONRPCRequestPayload): EthereumTx { const raw = payload.params[0]; - if (_.isUndefined(raw)) { + if (raw === undefined) { throw new Error(NonceSubproviderErrors.EmptyParametersFound); } const rawData = ethUtil.toBuffer(raw); @@ -61,11 +61,11 @@ export class NonceTrackerSubprovider extends Subprovider { if (requestDefaultBlock === BlockParamLiteral.Pending) { const address = NonceTrackerSubprovider._determineAddress(payload); const cachedResult = this._nonceCache[address]; - if (!_.isUndefined(cachedResult)) { + if (cachedResult !== undefined) { return end(null, cachedResult); } else { return next((requestError: Error | null, requestResult: any, cb: Callback) => { - if (_.isNull(requestError)) { + if (requestError === null) { this._nonceCache[address] = requestResult as string; } cb(); @@ -76,7 +76,7 @@ export class NonceTrackerSubprovider extends Subprovider { } case 'eth_sendRawTransaction': return next((sendTransactionError: Error | null, _txResult: any, cb: Callback) => { - if (_.isNull(sendTransactionError)) { + if (sendTransactionError === null) { this._handleSuccessfulTransaction(payload); } else { this._handleSendTransactionError(payload, sendTransactionError); diff --git a/packages/subproviders/src/subproviders/private_key_wallet.ts b/packages/subproviders/src/subproviders/private_key_wallet.ts index dca7e6810b..98bc8963eb 100644 --- a/packages/subproviders/src/subproviders/private_key_wallet.ts +++ b/packages/subproviders/src/subproviders/private_key_wallet.ts @@ -47,7 +47,7 @@ export class PrivateKeyWalletSubprovider extends BaseWalletSubprovider { */ public async signTransactionAsync(txParams: PartialTxParams): Promise { PrivateKeyWalletSubprovider._validateTxParams(txParams); - if (!_.isUndefined(txParams.from) && txParams.from !== this._address) { + if (txParams.from !== undefined && txParams.from !== this._address) { throw new Error( `Requested to sign transaction with address: ${txParams.from}, instantiated with address: ${ this._address @@ -70,7 +70,7 @@ export class PrivateKeyWalletSubprovider extends BaseWalletSubprovider { * @return Signature hex string (order: rsv) */ public async signPersonalMessageAsync(data: string, address: string): Promise { - if (_.isUndefined(data)) { + if (data === undefined) { throw new Error(WalletSubproviderErrors.DataMissingForSignPersonalMessage); } assert.isHexString('data', data); @@ -97,7 +97,7 @@ export class PrivateKeyWalletSubprovider extends BaseWalletSubprovider { * @return Signature hex string (order: rsv) */ public async signTypedDataAsync(address: string, typedData: EIP712TypedData): Promise { - if (_.isUndefined(typedData)) { + if (typedData === undefined) { throw new Error(WalletSubproviderErrors.DataMissingForSignTypedData); } assert.isETHAddressHex('address', address); diff --git a/packages/subproviders/src/subproviders/redundant_subprovider.ts b/packages/subproviders/src/subproviders/redundant_subprovider.ts index 58312f2037..d9d2d97c22 100644 --- a/packages/subproviders/src/subproviders/redundant_subprovider.ts +++ b/packages/subproviders/src/subproviders/redundant_subprovider.ts @@ -1,6 +1,5 @@ import { promisify } from '@0x/utils'; import { JSONRPCRequestPayload } from 'ethereum-types'; -import * as _ from 'lodash'; import { Callback } from '../types'; @@ -28,7 +27,7 @@ export class RedundantSubprovider extends Subprovider { continue; } } - if (!_.isUndefined(lastErr)) { + if (lastErr !== undefined) { throw lastErr; } } diff --git a/packages/testnet-faucets/package.json b/packages/testnet-faucets/package.json index c31ec834ea..15e3f4be84 100644 --- a/packages/testnet-faucets/package.json +++ b/packages/testnet-faucets/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@0x/testnet-faucets", - "version": "1.0.75", + "version": "1.0.76", "engines": { "node": ">=6.12" }, @@ -13,18 +13,19 @@ "dev": "node ../../node_modules/gulp/bin/gulp.js run", "start": "node ./server/server.js", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "clean": "shx rm -rf server" }, "author": "Fabio Berger", "license": "Apache-2.0", "dependencies": { - "0x.js": "^6.0.5", - "@0x/subproviders": "^4.0.4", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", + "0x.js": "^6.0.6", + "@0x/subproviders": "^4.0.5", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", "body-parser": "^1.17.1", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "ethereumjs-tx": "^1.3.5", "ethereumjs-util": "^5.1.1", "express": "^4.15.2", @@ -32,7 +33,7 @@ "rollbar": "^2.5.0" }, "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/body-parser": "^1.16.1", "@types/express": "^4.0.35", "@types/lodash": "4.14.104", diff --git a/packages/testnet-faucets/src/ts/dispatch_queue.ts b/packages/testnet-faucets/src/ts/dispatch_queue.ts index 3d0958fbfc..02def5fbf8 100644 --- a/packages/testnet-faucets/src/ts/dispatch_queue.ts +++ b/packages/testnet-faucets/src/ts/dispatch_queue.ts @@ -1,5 +1,4 @@ import { intervalUtils, logUtils } from '@0x/utils'; -import * as _ from 'lodash'; import { errorReporter } from './error_reporter'; @@ -29,7 +28,7 @@ export class DispatchQueue { return this.size() >= MAX_QUEUE_SIZE; } public stop(): void { - if (!_.isUndefined(this._queueIntervalIdIfExists)) { + if (this._queueIntervalIdIfExists !== undefined) { intervalUtils.clearAsyncExcludingInterval(this._queueIntervalIdIfExists); } } @@ -37,7 +36,7 @@ export class DispatchQueue { this._queueIntervalIdIfExists = intervalUtils.setAsyncExcludingInterval( async () => { const taskAsync = this._queue.shift(); - if (_.isUndefined(taskAsync)) { + if (taskAsync === undefined) { return Promise.resolve(); } await taskAsync(); diff --git a/packages/testnet-faucets/src/ts/dispense_asset_tasks.ts b/packages/testnet-faucets/src/ts/dispense_asset_tasks.ts index 58caeeeaac..23dfc0db99 100644 --- a/packages/testnet-faucets/src/ts/dispense_asset_tasks.ts +++ b/packages/testnet-faucets/src/ts/dispense_asset_tasks.ts @@ -43,7 +43,7 @@ export const dispenseAssetTasks = { logUtils.log(`Processing ${tokenSymbol} ${recipientAddress}`); const amountToDispense = new BigNumber(DISPENSE_AMOUNT_TOKEN); const tokenIfExists = _.get(TOKENS_BY_NETWORK, [networkId, tokenSymbol]); - if (_.isUndefined(tokenIfExists)) { + if (tokenIfExists === undefined) { throw new Error(`Unsupported asset type: ${tokenSymbol}`); } const baseUnitAmount = Web3Wrapper.toBaseUnitAmount(amountToDispense, tokenIfExists.decimals); diff --git a/packages/testnet-faucets/src/ts/handler.ts b/packages/testnet-faucets/src/ts/handler.ts index d524fd5a26..08f3270d22 100644 --- a/packages/testnet-faucets/src/ts/handler.ts +++ b/packages/testnet-faucets/src/ts/handler.ts @@ -48,7 +48,7 @@ const ASSET_AMOUNT = new BigNumber(0.1); export class Handler { private readonly _networkConfigByNetworkId: ItemByNetworkId = {}; private static _createProviderEngine(rpcUrl: string): Web3ProviderEngine { - if (_.isUndefined(configs.DISPENSER_PRIVATE_KEY)) { + if (configs.DISPENSER_PRIVATE_KEY === undefined) { throw new Error('Dispenser Private key not found'); } const engine = new Web3ProviderEngine(); @@ -109,7 +109,7 @@ export class Handler { const networkId = req.params.networkId; const recipient = req.params.recipient; const networkConfig = _.get(this._networkConfigByNetworkId, networkId); - if (_.isUndefined(networkConfig)) { + if (networkConfig === undefined) { res.status(constants.BAD_REQUEST_STATUS).send('UNSUPPORTED_NETWORK_ID'); return; } @@ -144,19 +144,19 @@ export class Handler { requestedAssetType: RequestedAssetType, ): Promise { const networkConfig = _.get(this._networkConfigByNetworkId, req.params.networkId); - if (_.isUndefined(networkConfig)) { + if (networkConfig === undefined) { res.status(constants.BAD_REQUEST_STATUS).send('UNSUPPORTED_NETWORK_ID'); return; } res.setHeader('Content-Type', 'application/json'); const makerTokenIfExists = _.get(TOKENS_BY_NETWORK, [networkConfig.networkId, requestedAssetType]); - if (_.isUndefined(makerTokenIfExists)) { + if (makerTokenIfExists === undefined) { throw new Error(`Unsupported asset type: ${requestedAssetType}`); } const takerTokenSymbol = requestedAssetType === RequestedAssetType.WETH ? RequestedAssetType.ZRX : RequestedAssetType.WETH; const takerTokenIfExists = _.get(TOKENS_BY_NETWORK, [networkConfig.networkId, takerTokenSymbol]); - if (_.isUndefined(takerTokenIfExists)) { + if (takerTokenIfExists === undefined) { throw new Error(`Unsupported asset type: ${takerTokenSymbol}`); } diff --git a/packages/testnet-faucets/src/ts/parameter_transformer.ts b/packages/testnet-faucets/src/ts/parameter_transformer.ts index bed8eb99e1..a08145797e 100644 --- a/packages/testnet-faucets/src/ts/parameter_transformer.ts +++ b/packages/testnet-faucets/src/ts/parameter_transformer.ts @@ -10,7 +10,7 @@ const DEFAULT_NETWORK_ID = 42; // kovan export const parameterTransformer = { transform(req: Request, res: Response, next: NextFunction): void { const recipientAddress = req.params.recipient; - if (_.isUndefined(recipientAddress) || !addressUtils.isAddress(recipientAddress)) { + if (recipientAddress === undefined || !addressUtils.isAddress(recipientAddress)) { res.status(constants.BAD_REQUEST_STATUS).send('INVALID_RECIPIENT_ADDRESS'); return; } @@ -18,7 +18,7 @@ export const parameterTransformer = { req.params.recipient = lowerCaseRecipientAddress; const networkId = _.get(req.query, 'networkId', DEFAULT_NETWORK_ID); const rpcUrlIfExists = _.get(rpcUrls, networkId); - if (_.isUndefined(rpcUrlIfExists)) { + if (rpcUrlIfExists === undefined) { res.status(constants.BAD_REQUEST_STATUS).send('UNSUPPORTED_NETWORK_ID'); return; } diff --git a/packages/tslint-config/CHANGELOG.json b/packages/tslint-config/CHANGELOG.json index 884a5b46fc..ca8e72f988 100644 --- a/packages/tslint-config/CHANGELOG.json +++ b/packages/tslint-config/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "3.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "version": "3.0.0", "changes": [ diff --git a/packages/tslint-config/CHANGELOG.md b/packages/tslint-config/CHANGELOG.md index 5719f28a6c..6d7c95b599 100644 --- a/packages/tslint-config/CHANGELOG.md +++ b/packages/tslint-config/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.1 - _April 11, 2019_ + + * Dependencies updated + ## v3.0.0 - _February 5, 2019_ * Upgrade the bignumber.js to v8.0.2 (#1517) diff --git a/packages/tslint-config/package.json b/packages/tslint-config/package.json index b5846a5aa3..4210c533c8 100644 --- a/packages/tslint-config/package.json +++ b/packages/tslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@0x/tslint-config", - "version": "3.0.0", + "version": "3.0.1", "engines": { "node": ">=6.12" }, diff --git a/packages/tslint-config/rules/booleanNamingRule.ts b/packages/tslint-config/rules/booleanNamingRule.ts index 6590f689b4..238d6223f5 100644 --- a/packages/tslint-config/rules/booleanNamingRule.ts +++ b/packages/tslint-config/rules/booleanNamingRule.ts @@ -56,11 +56,10 @@ function handleBooleanNaming( const typeNode = tc.getTypeAtLocation(node); const typeName = (typeNode as any).intrinsicName; if (typeName === 'boolean') { - const hasProperName = !_.isUndefined( + const hasProperName = _.find(VALID_BOOLEAN_PREFIXES, prefix => { return _.startsWith(lowercasedName, prefix); - }), - ); + }) !== undefined; if (!hasProperName) { ctx.addFailureAtNode(node, Rule.FAILURE_STRING); } diff --git a/packages/tslint-config/rules/noLodashIsnullRule.ts b/packages/tslint-config/rules/noLodashIsnullRule.ts new file mode 100644 index 0000000000..cda0ecca14 --- /dev/null +++ b/packages/tslint-config/rules/noLodashIsnullRule.ts @@ -0,0 +1,49 @@ +import * as Lint from 'tslint'; +import * as ts from 'typescript'; + +export class Rule extends Lint.Rules.AbstractRule { + public static FAILURE_STRING = `Use built-in equivalent`; + + public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] { + return this.applyWithFunction(sourceFile, walk); + } +} + +function walk(ctx: Lint.WalkContext): void { + // Recursively walk the AST starting with root node, `ctx.sourceFile`. + // Call the function `cb` (defined below) for each child. + return ts.forEachChild(ctx.sourceFile, cb); + + function cb(node: ts.Node): void { + if (node.kind === ts.SyntaxKind.CallExpression) { + const firstChild = node.getChildAt(0, ctx.sourceFile); + if ( + firstChild.kind === ts.SyntaxKind.PropertyAccessExpression && + firstChild.getText(ctx.sourceFile) === '_.isNull' + ) { + return ctx.addFailureAtNode(node, Rule.FAILURE_STRING, getFix(node)); + } + } + // Continue recursion into the AST by calling function `cb` for every child of the current node. + return ts.forEachChild(node, cb); + } + + function getFix(node: ts.Node): Lint.Replacement { + const isNegated = + node.parent.kind === ts.SyntaxKind.PrefixUnaryExpression && node.parent.getText(ctx.sourceFile)[0] === '!'; + const args = node.getChildAt(2, ctx.sourceFile).getText(ctx.sourceFile); + if (isNegated) { + return new Lint.Replacement( + node.parent.getStart(ctx.sourceFile), + node.parent.getWidth(ctx.sourceFile), + `${args} !== null`, + ); + } else { + return new Lint.Replacement( + node.getStart(ctx.sourceFile), + node.getWidth(ctx.sourceFile), + `${args} === null`, + ); + } + } +} diff --git a/packages/tslint-config/rules/noLodashIsundefinedRule.ts b/packages/tslint-config/rules/noLodashIsundefinedRule.ts new file mode 100644 index 0000000000..6da70b21aa --- /dev/null +++ b/packages/tslint-config/rules/noLodashIsundefinedRule.ts @@ -0,0 +1,49 @@ +import * as Lint from 'tslint'; +import * as ts from 'typescript'; + +export class Rule extends Lint.Rules.AbstractRule { + public static FAILURE_STRING = `Use built-in equivalent`; + + public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] { + return this.applyWithFunction(sourceFile, walk); + } +} + +function walk(ctx: Lint.WalkContext): void { + // Recursively walk the AST starting with root node, `ctx.sourceFile`. + // Call the function `cb` (defined below) for each child. + return ts.forEachChild(ctx.sourceFile, cb); + + function cb(node: ts.Node): void { + if (node.kind === ts.SyntaxKind.CallExpression) { + const firstChild = node.getChildAt(0, ctx.sourceFile); + if ( + firstChild.kind === ts.SyntaxKind.PropertyAccessExpression && + firstChild.getText(ctx.sourceFile) === '_.isUndefined' + ) { + return ctx.addFailureAtNode(node, Rule.FAILURE_STRING, getFix(node)); + } + } + // Continue recursion into the AST by calling function `cb` for every child of the current node. + return ts.forEachChild(node, cb); + } + + function getFix(node: ts.Node): Lint.Replacement { + const isNegated = + node.parent.kind === ts.SyntaxKind.PrefixUnaryExpression && node.parent.getText(ctx.sourceFile)[0] === '!'; + const args = node.getChildAt(2, ctx.sourceFile).getText(ctx.sourceFile); + if (isNegated) { + return new Lint.Replacement( + node.parent.getStart(ctx.sourceFile), + node.parent.getWidth(ctx.sourceFile), + `${args} !== undefined`, + ); + } else { + return new Lint.Replacement( + node.getStart(ctx.sourceFile), + node.getWidth(ctx.sourceFile), + `${args} === undefined`, + ); + } + } +} diff --git a/packages/tslint-config/rules/walkers/async_suffix.ts b/packages/tslint-config/rules/walkers/async_suffix.ts index 4e12152e8c..0218517611 100644 --- a/packages/tslint-config/rules/walkers/async_suffix.ts +++ b/packages/tslint-config/rules/walkers/async_suffix.ts @@ -1,4 +1,3 @@ -import * as _ from 'lodash'; import * as Lint from 'tslint'; import * as ts from 'typescript'; @@ -14,9 +13,9 @@ export class AsyncSuffixWalker extends Lint.RuleWalker { } private _visitFunctionOrMethodDeclaration(node: ts.MethodDeclaration | ts.FunctionDeclaration): void { const nameNode = node.name; - if (!_.isUndefined(nameNode)) { + if (nameNode !== undefined) { const name = nameNode.getText(); - if (!_.isUndefined(node.type)) { + if (node.type !== undefined) { if (node.type.kind === ts.SyntaxKind.TypeReference) { // tslint:disable-next-line:no-unnecessary-type-assertion const returnTypeName = (node.type as ts.TypeReferenceNode).typeName.getText(); diff --git a/packages/tslint-config/test/noLodashIsundefined.spec.ts b/packages/tslint-config/test/noLodashIsundefined.spec.ts new file mode 100644 index 0000000000..5234166451 --- /dev/null +++ b/packages/tslint-config/test/noLodashIsundefined.spec.ts @@ -0,0 +1,96 @@ +import * as assert from 'assert'; + +import { Rule } from '../rules/noLodashIsundefinedRule'; + +import { getFixedResult, helper } from './lintrunner'; +const rule = 'no-lodash-isundefined'; + +describe('noLodashIsundefinedRule', () => { + it(`should not fail built-in`, () => { + const src = `if (someObj === undefined) { // do stuff }`; + const result = helper(src, rule); + assert.equal(result.errorCount, 0); + }); + it(`should not fail custom isUndefined`, () => { + const src = `if (isUndefined(someObj)) { // do stuff }`; + const result = helper(src, rule); + assert.equal(result.errorCount, 0); + }); + it(`should fail _.isUndefined with simple identifier`, () => { + const src = `if (_.isUndefined(obj)) { // do stuff }`; + const result = helper(src, rule); + assert.equal(result.errorCount, 1); + }); + it(`should fail _.isUndefined with property access expression`, () => { + const src = `if (_.isUndefined(this.property)) { // do stuff }`; + const result = helper(src, rule); + assert.equal(result.errorCount, 1); + }); + it(`should fail _.isUndefined with element access expression`, () => { + const src = `if (_.isUndefined(someArray[nested])) { // do stuff }`; + const result = helper(src, rule); + assert.equal(result.errorCount, 1); + }); + it(`should fail _.isUndefined with property and element access expression`, () => { + const src = `if (_.isUndefined(someObj.someArray[nested])) { // do stuff }`; + const result = helper(src, rule); + assert.equal(result.errorCount, 1); + }); + + it(`should fail with the right message`, () => { + const src = `if (_.isUndefined(obj)) { // do stuff }`; + const failure = helper(src, rule).failures[0]; + + assert.equal(failure.getFailure(), Rule.FAILURE_STRING); + }); +}); +describe('noLodashIsundefined fixer', () => { + it('should fix simple identifier', () => { + const src = `if (_.isUndefined(obj)) { // do stuff }`; + const expected = `if (obj === undefined) { // do stuff }`; + const actual = getFixedResult(src, rule); + const result = helper(src, rule); + assert.equal(result.errorCount, 1); + assert.equal(actual, expected); + }); + it('should fix property access expression', () => { + const src = `if (_.isUndefined(this.property)) { // do stuff }`; + const expected = `if (this.property === undefined) { // do stuff }`; + const actual = getFixedResult(src, rule); + const result = helper(src, rule); + assert.equal(result.errorCount, 1); + assert.equal(actual, expected); + }); + it('should fix element access expression', () => { + const src = `if (_.isUndefined(someArray[nested])) { // do stuff }`; + const expected = `if (someArray[nested] === undefined) { // do stuff }`; + const actual = getFixedResult(src, rule); + const result = helper(src, rule); + assert.equal(result.errorCount, 1); + assert.equal(actual, expected); + }); + it('should fix property and element access expression', () => { + const src = `if (_.isUndefined(someObj.someArray[nested])) { // do stuff }`; + const expected = `if (someObj.someArray[nested] === undefined) { // do stuff }`; + const actual = getFixedResult(src, rule); + const result = helper(src, rule); + assert.equal(result.errorCount, 1); + assert.equal(actual, expected); + }); + it('should fix negation', () => { + const src = `if (!_.isUndefined(someObj)) { // do stuff }`; + const expected = `if (someObj !== undefined) { // do stuff }`; + const actual = getFixedResult(src, rule); + const result = helper(src, rule); + assert.equal(result.errorCount, 1); + assert.equal(actual, expected); + }); + it('should fix negation with property and element access expression', () => { + const src = `if (!_.isUndefined(someObj.someArray[nested])) { // do stuff }`; + const expected = `if (someObj.someArray[nested] !== undefined) { // do stuff }`; + const actual = getFixedResult(src, rule); + const result = helper(src, rule); + assert.equal(result.errorCount, 1); + assert.equal(actual, expected); + }); +}); diff --git a/packages/tslint-config/tslint.json b/packages/tslint-config/tslint.json index a5fa6962c0..f90d31b49b 100644 --- a/packages/tslint-config/tslint.json +++ b/packages/tslint-config/tslint.json @@ -62,6 +62,8 @@ "no-inferred-empty-object-type": true, "no-invalid-template-strings": true, "no-invalid-this": true, + "no-lodash-isnull": true, + "no-lodash-isundefined": true, "no-misused-new": true, "no-non-null-assertion": true, "no-parameter-reassignment": true, diff --git a/packages/types/CHANGELOG.json b/packages/types/CHANGELOG.json index 298c0bdcc5..f328508616 100644 --- a/packages/types/CHANGELOG.json +++ b/packages/types/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "2.2.2", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "2.2.1", diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 670684a746..cae05f4e52 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.2.2 - _April 11, 2019_ + + * Dependencies updated + ## v2.2.1 - _March 21, 2019_ * Dependencies updated diff --git a/packages/types/package.json b/packages/types/package.json index 8542ac208c..a639d88fc2 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@0x/types", - "version": "2.2.1", + "version": "2.2.2", "engines": { "node": ">=6.12" }, @@ -23,7 +23,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/types/README.md", "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "make-promises-safe": "^1.1.0", "shx": "^0.2.2", "tslint": "5.11.0", @@ -32,7 +32,7 @@ "dependencies": { "@types/node": "*", "bignumber.js": "~8.0.2", - "ethereum-types": "^2.1.1" + "ethereum-types": "^2.1.2" }, "publishConfig": { "access": "public" diff --git a/packages/typescript-typings/CHANGELOG.json b/packages/typescript-typings/CHANGELOG.json index 657041d2b3..5e4b376ec6 100644 --- a/packages/typescript-typings/CHANGELOG.json +++ b/packages/typescript-typings/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "4.2.2", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "4.2.1", diff --git a/packages/typescript-typings/CHANGELOG.md b/packages/typescript-typings/CHANGELOG.md index 3aeeffaad3..ded48ee678 100644 --- a/packages/typescript-typings/CHANGELOG.md +++ b/packages/typescript-typings/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.2.2 - _April 11, 2019_ + + * Dependencies updated + ## v4.2.1 - _March 21, 2019_ * Dependencies updated diff --git a/packages/typescript-typings/package.json b/packages/typescript-typings/package.json index bd8cee1cd0..c3670df51a 100644 --- a/packages/typescript-typings/package.json +++ b/packages/typescript-typings/package.json @@ -1,6 +1,6 @@ { "name": "@0x/typescript-typings", - "version": "4.2.1", + "version": "4.2.2", "engines": { "node": ">=6.12" }, @@ -27,7 +27,7 @@ "@types/bn.js": "^4.11.0", "@types/react": "*", "bignumber.js": "~8.0.2", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "popper.js": "1.14.3" }, "devDependencies": { diff --git a/packages/utils/CHANGELOG.json b/packages/utils/CHANGELOG.json index 003246910e..1780a5ac66 100644 --- a/packages/utils/CHANGELOG.json +++ b/packages/utils/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "4.3.1", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "version": "4.3.0", "changes": [ diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index 23d18de605..3b0137d9c3 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.3.1 - _April 11, 2019_ + + * Dependencies updated + ## v4.3.0 - _March 21, 2019_ * Added `startProviderEngine` to `providerUtils`. Preventing excess block polling (#1695) diff --git a/packages/utils/package.json b/packages/utils/package.json index 6540a50e8f..6de0202600 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/utils", - "version": "4.3.0", + "version": "4.3.1", "engines": { "node": ">=6.12" }, @@ -12,6 +12,7 @@ "build:ci": "yarn build", "clean": "shx rm -rf lib", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "test": "yarn run_mocha", "test:circleci": "yarn test:coverage", "run_mocha": "mocha --require source-map-support/register --require make-promises-safe 'lib/test/**/*_test.js' 'lib/test/*_test.js' --bail --exit", @@ -28,7 +29,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/utils/README.md", "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/detect-node": "2.0.0", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", @@ -44,14 +45,14 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", "@types/node": "*", "abortcontroller-polyfill": "^1.1.9", "bignumber.js": "~8.0.2", "chalk": "^2.3.0", "detect-node": "2.0.3", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "ethereumjs-util": "^5.1.1", "ethers": "~4.0.4", "isomorphic-fetch": "2.2.1", diff --git a/packages/utils/src/abi_decoder.ts b/packages/utils/src/abi_decoder.ts index b764e45b87..04a81c3ee4 100644 --- a/packages/utils/src/abi_decoder.ts +++ b/packages/utils/src/abi_decoder.ts @@ -58,7 +58,7 @@ export class AbiDecoder { public tryToDecodeLogOrNoop(log: LogEntry): LogWithDecodedArgs | RawLog { const eventId = log.topics[0]; const numIndexedArgs = log.topics.length - 1; - if (_.isUndefined(this._eventIds[eventId]) || _.isUndefined(this._eventIds[eventId][numIndexedArgs])) { + if (this._eventIds[eventId] === undefined || this._eventIds[eventId][numIndexedArgs] === undefined) { return log; } const event = this._eventIds[eventId][numIndexedArgs]; @@ -84,7 +84,7 @@ export class AbiDecoder { _.forEach(event.inputs, (param: EventParameter, i: number) => { // Indexed parameters are stored in topics. Non-indexed ones in decodedData let value: BigNumber | string | number = param.indexed ? log.topics[topicsIndex++] : decodedData[i]; - if (_.isUndefined(value)) { + if (value === undefined) { didFailToDecode = true; return; } @@ -118,19 +118,19 @@ export class AbiDecoder { public decodeCalldataOrThrow(calldata: string, contractName?: string): DecodedCalldata { const functionSelector = AbiDecoder._getFunctionSelector(calldata); const candidateFunctionInfos = this._selectorToFunctionInfo[functionSelector]; - if (_.isUndefined(candidateFunctionInfos)) { + if (candidateFunctionInfos === undefined) { throw new Error(`No functions registered for selector '${functionSelector}'`); } const functionInfo = _.find(candidateFunctionInfos, candidateFunctionInfo => { return ( - _.isUndefined(contractName) || _.toLower(contractName) === _.toLower(candidateFunctionInfo.contractName) + contractName === undefined || _.toLower(contractName) === _.toLower(candidateFunctionInfo.contractName) ); }); - if (_.isUndefined(functionInfo)) { + if (functionInfo === undefined) { throw new Error( `No function registered with selector ${functionSelector} and contract name ${contractName}.`, ); - } else if (_.isUndefined(functionInfo.abiEncoder)) { + } else if (functionInfo.abiEncoder === undefined) { throw new Error( `Function ABI Encoder is not defined, for function registered with selector ${functionSelector} and contract name ${contractName}.`, ); @@ -156,7 +156,7 @@ export class AbiDecoder { * the same signature but different parameter names. */ public addABI(abiArray: AbiDefinition[], contractName?: string): void { - if (_.isUndefined(abiArray)) { + if (abiArray === undefined) { return; } const ethersInterface = new ethers.utils.Interface(abiArray); diff --git a/packages/utils/src/abi_encoder/abstract_data_types/data_type.ts b/packages/utils/src/abi_encoder/abstract_data_types/data_type.ts index db4f02b890..ac2ce061e6 100644 --- a/packages/utils/src/abi_encoder/abstract_data_types/data_type.ts +++ b/packages/utils/src/abi_encoder/abstract_data_types/data_type.ts @@ -27,9 +27,9 @@ export abstract class DataType { } public encode(value: any, rules?: EncodingRules, selector?: string): string { - const rules_ = _.isUndefined(rules) ? constants.DEFAULT_ENCODING_RULES : rules; + const rules_ = rules === undefined ? constants.DEFAULT_ENCODING_RULES : rules; const calldata = new Calldata(rules_); - if (!_.isUndefined(selector)) { + if (selector !== undefined) { calldata.setSelector(selector); } const block = this.generateCalldataBlock(value); @@ -39,14 +39,14 @@ export abstract class DataType { } public decode(calldata: string, rules?: DecodingRules, selector?: string): any { - if (!_.isUndefined(selector) && !_.startsWith(calldata, selector)) { + if (selector !== undefined && !_.startsWith(calldata, selector)) { throw new Error( `Tried to decode calldata, but it was missing the function selector. Expected prefix '${selector}'. Got '${calldata}'.`, ); } - const hasSelector = !_.isUndefined(selector); + const hasSelector = selector !== undefined; const rawCalldata = new RawCalldata(calldata, hasSelector); - const rules_ = _.isUndefined(rules) ? constants.DEFAULT_DECODING_RULES : rules; + const rules_ = rules === undefined ? constants.DEFAULT_DECODING_RULES : rules; const value = rawCalldata.getSizeInBytes() > 0 ? this.generateValue(rawCalldata, rules_) : this.getDefaultValue(rules_); return value; @@ -64,7 +64,7 @@ export abstract class DataType { } const name = this.getDataItem().name; const lastIndexOfScopeDelimiter = name.lastIndexOf('.'); - const isScopedName = !_.isUndefined(lastIndexOfScopeDelimiter) && lastIndexOfScopeDelimiter > 0; + const isScopedName = lastIndexOfScopeDelimiter !== undefined && lastIndexOfScopeDelimiter > 0; const shortName = isScopedName ? name.substr((lastIndexOfScopeDelimiter as number) + 1) : name; const detailedSignature = `${shortName} ${this.getSignatureType()}`; return detailedSignature; diff --git a/packages/utils/src/abi_encoder/abstract_data_types/types/blob.ts b/packages/utils/src/abi_encoder/abstract_data_types/types/blob.ts index a091e55b9d..4c22212fd0 100644 --- a/packages/utils/src/abi_encoder/abstract_data_types/types/blob.ts +++ b/packages/utils/src/abi_encoder/abstract_data_types/types/blob.ts @@ -21,7 +21,7 @@ export abstract class AbstractBlobDataType extends DataType { const encodedValue = this.encodeValue(value); const name = this.getDataItem().name; const signature = this.getSignature(); - const parentName = _.isUndefined(parentBlock) ? '' : parentBlock.getName(); + const parentName = parentBlock === undefined ? '' : parentBlock.getName(); const block = new BlobCalldataBlock(name, signature, parentName, encodedValue); return block; } diff --git a/packages/utils/src/abi_encoder/abstract_data_types/types/pointer.ts b/packages/utils/src/abi_encoder/abstract_data_types/types/pointer.ts index 0f3c55280c..59036dc619 100644 --- a/packages/utils/src/abi_encoder/abstract_data_types/types/pointer.ts +++ b/packages/utils/src/abi_encoder/abstract_data_types/types/pointer.ts @@ -22,7 +22,7 @@ export abstract class AbstractPointerDataType extends DataType { } public generateCalldataBlock(value: any, parentBlock?: CalldataBlock): PointerCalldataBlock { - if (_.isUndefined(parentBlock)) { + if (parentBlock === undefined) { throw new Error(`DependentDataType requires a parent block to generate its block`); } const destinationBlock = this._destination.generateCalldataBlock(value, parentBlock); diff --git a/packages/utils/src/abi_encoder/abstract_data_types/types/set.ts b/packages/utils/src/abi_encoder/abstract_data_types/types/set.ts index d45088482d..5279811336 100644 --- a/packages/utils/src/abi_encoder/abstract_data_types/types/set.ts +++ b/packages/utils/src/abi_encoder/abstract_data_types/types/set.ts @@ -35,7 +35,7 @@ export abstract class AbstractSetDataType extends DataType { this._isArray = isArray; this._arrayLength = arrayLength; this._arrayElementType = arrayElementType; - if (isArray && !_.isUndefined(arrayLength)) { + if (isArray && arrayLength !== undefined) { [this._members, this._memberIndexByName] = this._createMembersWithLength(dataItem, arrayLength); } else if (!isArray) { [this._members, this._memberIndexByName] = this._createMembersWithKeys(dataItem); @@ -54,7 +54,7 @@ export abstract class AbstractSetDataType extends DataType { let members = this._members; // Case 1: This is an array of undefined length, which means that `this._members` was not // populated in the constructor. So we must construct the set of members now. - if (this._isArray && _.isUndefined(this._arrayLength)) { + if (this._isArray && this._arrayLength === undefined) { const arrayLengthBuf = calldata.popWord(); const arrayLengthHex = ethUtil.bufferToHex(arrayLengthBuf); const arrayLength = new BigNumber(arrayLengthHex, constants.HEX_BASE); @@ -86,22 +86,22 @@ export abstract class AbstractSetDataType extends DataType { public isStatic(): boolean { // An array with an undefined length is never static. - if (this._isArray && _.isUndefined(this._arrayLength)) { + if (this._isArray && this._arrayLength === undefined) { return false; } // If any member of the set is a pointer then the set is not static. const dependentMember = _.find(this._members, (member: DataType) => { return member instanceof AbstractPointerDataType; }); - const isStatic = _.isUndefined(dependentMember); + const isStatic = dependentMember === undefined; return isStatic; } public getDefaultValue(rules?: DecodingRules): any[] | object { let defaultValue: any[] | object; - if (this._isArray && _.isUndefined(this._arrayLength)) { + if (this._isArray && this._arrayLength === undefined) { defaultValue = []; - } else if (!_.isUndefined(rules) && rules.shouldConvertStructsToObjects && !this._isArray) { + } else if (rules !== undefined && rules.shouldConvertStructsToObjects && !this._isArray) { defaultValue = {}; _.each(this._memberIndexByName, (idx: number, key: string) => { const member = this._members[idx]; @@ -120,7 +120,7 @@ export abstract class AbstractSetDataType extends DataType { protected _generateCalldataBlockFromArray(value: any[], parentBlock?: CalldataBlock): SetCalldataBlock { // Sanity check: if the set has a defined length then `value` must have the same length. - if (!_.isUndefined(this._arrayLength) && value.length !== this._arrayLength) { + if (this._arrayLength !== undefined && value.length !== this._arrayLength) { throw new Error( `Expected array of ${JSON.stringify( this._arrayLength, @@ -128,11 +128,11 @@ export abstract class AbstractSetDataType extends DataType { ); } // Create a new calldata block for this set. - const parentName = _.isUndefined(parentBlock) ? '' : parentBlock.getName(); + const parentName = parentBlock === undefined ? '' : parentBlock.getName(); const block = new SetCalldataBlock(this.getDataItem().name, this.getSignature(), parentName); // If this set has an undefined length then set its header to be the number of elements. let members = this._members; - if (this._isArray && _.isUndefined(this._arrayLength)) { + if (this._isArray && this._arrayLength === undefined) { [members] = this._createMembersWithLength(this.getDataItem(), value.length); const lenBuf = ethUtil.setLengthLeft( ethUtil.toBuffer(`0x${value.length.toString(constants.HEX_BASE)}`), @@ -152,7 +152,7 @@ export abstract class AbstractSetDataType extends DataType { protected _generateCalldataBlockFromObject(obj: object, parentBlock?: CalldataBlock): SetCalldataBlock { // Create a new calldata block for this set. - const parentName = _.isUndefined(parentBlock) ? '' : parentBlock.getName(); + const parentName = parentBlock === undefined ? '' : parentBlock.getName(); const block = new SetCalldataBlock(this.getDataItem().name, this.getSignature(), parentName); // Create blocks for members of set. const memberCalldataBlocks: CalldataBlock[] = []; @@ -186,7 +186,7 @@ export abstract class AbstractSetDataType extends DataType { private _createMembersWithKeys(dataItem: DataItem): [DataType[], MemberIndexByName] { // Sanity check - if (_.isUndefined(dataItem.components)) { + if (dataItem.components === undefined) { throw new Error( `Tried to create a set using key/value pairs, but no components were defined by the input DataItem '${ dataItem.name @@ -212,7 +212,7 @@ export abstract class AbstractSetDataType extends DataType { name: `${dataItem.name}.${memberName}`, }; const components = memberItem.components; - if (!_.isUndefined(components)) { + if (components !== undefined) { childDataItem.components = components; } const child = this.getFactory().create(childDataItem, this); @@ -229,11 +229,11 @@ export abstract class AbstractSetDataType extends DataType { const range = _.range(length); _.each(range, (idx: number) => { const memberDataItem: DataItem = { - type: _.isUndefined(this._arrayElementType) ? '' : this._arrayElementType, + type: this._arrayElementType === undefined ? '' : this._arrayElementType, name: `${dataItem.name}[${idx.toString(constants.DEC_BASE)}]`, }; const components = dataItem.components; - if (!_.isUndefined(components)) { + if (components !== undefined) { memberDataItem.components = components; } const memberType = this.getFactory().create(memberDataItem, this); diff --git a/packages/utils/src/abi_encoder/calldata/blocks/pointer.ts b/packages/utils/src/abi_encoder/calldata/blocks/pointer.ts index 72d6a31730..c1d66569eb 100644 --- a/packages/utils/src/abi_encoder/calldata/blocks/pointer.ts +++ b/packages/utils/src/abi_encoder/calldata/blocks/pointer.ts @@ -24,9 +24,8 @@ export class PointerCalldataBlock extends CalldataBlock { } public toBuffer(): Buffer { - const destinationOffset = !_.isUndefined(this._aliasFor) - ? this._aliasFor.getOffsetInBytes() - : this._dependency.getOffsetInBytes(); + const destinationOffset = + this._aliasFor !== undefined ? this._aliasFor.getOffsetInBytes() : this._dependency.getOffsetInBytes(); const parentOffset = this._parent.getOffsetInBytes(); const parentHeaderSize = this._parent.getHeaderSizeInBytes(); const pointer: number = destinationOffset - (parentOffset + parentHeaderSize); diff --git a/packages/utils/src/abi_encoder/calldata/blocks/set.ts b/packages/utils/src/abi_encoder/calldata/blocks/set.ts index d1abc4986e..297dec252d 100644 --- a/packages/utils/src/abi_encoder/calldata/blocks/set.ts +++ b/packages/utils/src/abi_encoder/calldata/blocks/set.ts @@ -14,7 +14,7 @@ export class SetCalldataBlock extends CalldataBlock { public getRawData(): Buffer { const rawDataComponents: Buffer[] = []; - if (!_.isUndefined(this._header)) { + if (this._header !== undefined) { rawDataComponents.push(this._header); } _.each(this._members, (member: CalldataBlock) => { @@ -35,7 +35,7 @@ export class SetCalldataBlock extends CalldataBlock { } public toBuffer(): Buffer { - if (!_.isUndefined(this._header)) { + if (this._header !== undefined) { return this._header; } return new Buffer(''); diff --git a/packages/utils/src/abi_encoder/calldata/calldata.ts b/packages/utils/src/abi_encoder/calldata/calldata.ts index b08fb71ce3..72d103c9bc 100644 --- a/packages/utils/src/abi_encoder/calldata/calldata.ts +++ b/packages/utils/src/abi_encoder/calldata/calldata.ts @@ -45,7 +45,7 @@ export class Calldata { */ public toString(): string { // Sanity check: root block must be set - if (_.isUndefined(this._root)) { + if (this._root === undefined) { throw new Error('expected root'); } // Optimize, if flag set @@ -106,7 +106,7 @@ export class Calldata { */ private _optimize(): void { // Step 1/1 Create a reverse iterator (starts from the end of the calldata to the beginning) - if (_.isUndefined(this._root)) { + if (this._root === undefined) { throw new Error('expected root'); } const iterator = new ReverseCalldataIterator(this._root); @@ -136,7 +136,7 @@ export class Calldata { } private _toEvmCompatibeCallDataHex(): string { // Sanity check: must have a root block. - if (_.isUndefined(this._root)) { + if (this._root === undefined) { throw new Error('expected root'); } // Construct an array of buffers (one buffer for each block). @@ -175,7 +175,7 @@ export class Calldata { */ private _toHumanReadableCallData(): string { // Sanity check: must have a root block. - if (_.isUndefined(this._root)) { + if (this._root === undefined) { throw new Error('expected root'); } // Constants for constructing annotated string diff --git a/packages/utils/src/abi_encoder/calldata/iterator.ts b/packages/utils/src/abi_encoder/calldata/iterator.ts index 333b32b4fc..41b9cf14bc 100644 --- a/packages/utils/src/abi_encoder/calldata/iterator.ts +++ b/packages/utils/src/abi_encoder/calldata/iterator.ts @@ -57,7 +57,7 @@ abstract class BaseIterator implements Iterable { _.each(set.getMembers(), (member: CalldataBlock) => { // Traverse child if it is a unique pointer. // A pointer that is an alias for another pointer is ignored. - if (member instanceof PointerCalldataBlock && _.isUndefined(member.getAlias())) { + if (member instanceof PointerCalldataBlock && member.getAlias() === undefined) { const dependency = member.getDependency(); queue.mergeBack(BaseIterator._createQueue(dependency)); } @@ -76,7 +76,7 @@ abstract class BaseIterator implements Iterable { return { next: () => { const nextBlock = this.nextBlock(); - if (!_.isUndefined(nextBlock)) { + if (nextBlock !== undefined) { return { value: nextBlock, done: false, diff --git a/packages/utils/src/abi_encoder/calldata/raw_calldata.ts b/packages/utils/src/abi_encoder/calldata/raw_calldata.ts index dbc9d49426..3b90a71741 100644 --- a/packages/utils/src/abi_encoder/calldata/raw_calldata.ts +++ b/packages/utils/src/abi_encoder/calldata/raw_calldata.ts @@ -69,7 +69,7 @@ export class RawCalldata { public toAbsoluteOffset(relativeOffset: number): number { const scopeOffset = this._scopes.peekFront(); - if (_.isUndefined(scopeOffset)) { + if (scopeOffset === undefined) { throw new Error(`Tried to access undefined scope.`); } const absoluteOffset = relativeOffset + scopeOffset; diff --git a/packages/utils/src/abi_encoder/evm_data_type_factory.ts b/packages/utils/src/abi_encoder/evm_data_type_factory.ts index 8e477f8569..b68be3ea04 100644 --- a/packages/utils/src/abi_encoder/evm_data_type_factory.ts +++ b/packages/utils/src/abi_encoder/evm_data_type_factory.ts @@ -119,9 +119,9 @@ export class EvmDataTypeFactory implements DataTypeFactory { dataType = new String(dataItem); } // @TODO: DataTypeement Fixed/UFixed types - if (_.isUndefined(dataType)) { + if (dataType === undefined) { throw new Error(`Unrecognized data type: '${dataItem.type}'`); - } else if (!_.isUndefined(parentDataType) && !dataType.isStatic()) { + } else if (parentDataType !== undefined && !dataType.isStatic()) { const pointerToDataType = new Pointer(dataType, parentDataType); return pointerToDataType; } @@ -176,8 +176,8 @@ export function createMethod( input?: DataItem | DataItem[] | string | string[], output?: DataItem | DataItem[] | string | string[], ): Method { - const methodInput = _.isUndefined(input) ? [] : consolidateDataItemsIntoArray(input); - const methodOutput = _.isUndefined(output) ? [] : consolidateDataItemsIntoArray(output); + const methodInput = input === undefined ? [] : consolidateDataItemsIntoArray(input); + const methodOutput = output === undefined ? [] : consolidateDataItemsIntoArray(output); const methodAbi: MethodAbi = { name: methodName, inputs: methodInput, diff --git a/packages/utils/src/abi_encoder/evm_data_types/array.ts b/packages/utils/src/abi_encoder/evm_data_types/array.ts index d9607f47e9..58a7e3f4c8 100644 --- a/packages/utils/src/abi_encoder/evm_data_types/array.ts +++ b/packages/utils/src/abi_encoder/evm_data_types/array.ts @@ -15,11 +15,11 @@ export class ArrayDataType extends AbstractSetDataType { private static _decodeElementTypeAndLengthFromType(type: string): [string, undefined | number] { const matches = ArrayDataType._MATCHER.exec(type); - if (_.isNull(matches) || matches.length !== 3) { + if (matches === null || matches.length !== 3) { throw new Error(`Could not parse array: ${type}`); - } else if (_.isUndefined(matches[1])) { + } else if (matches[1] === undefined) { throw new Error(`Could not parse array type: ${type}`); - } else if (_.isUndefined(matches[2])) { + } else if (matches[2] === undefined) { throw new Error(`Could not parse array length: ${type}`); } const arrayElementType = matches[1]; @@ -46,7 +46,7 @@ export class ArrayDataType extends AbstractSetDataType { } const name = this.getDataItem().name; const lastIndexOfScopeDelimiter = name.lastIndexOf('.'); - const isScopedName = !_.isUndefined(lastIndexOfScopeDelimiter) && lastIndexOfScopeDelimiter > 0; + const isScopedName = lastIndexOfScopeDelimiter !== undefined && lastIndexOfScopeDelimiter > 0; const shortName = isScopedName ? name.substr((lastIndexOfScopeDelimiter as number) + 1) : name; const detailedSignature = `${shortName} ${this._computeSignature(isDetailed)}`; return detailedSignature; @@ -59,13 +59,13 @@ export class ArrayDataType extends AbstractSetDataType { name: '', }; const elementComponents = this.getDataItem().components; - if (!_.isUndefined(elementComponents)) { + if (elementComponents !== undefined) { elementDataItem.components = elementComponents; } const elementDataType = this.getFactory().create(elementDataItem); const elementSignature = elementDataType.getSignature(isDetailed); // Construct signature for array of type `element` - if (_.isUndefined(this._arrayLength)) { + if (this._arrayLength === undefined) { return `${elementSignature}[]`; } else { return `${elementSignature}[${this._arrayLength}]`; diff --git a/packages/utils/src/abi_encoder/evm_data_types/int.ts b/packages/utils/src/abi_encoder/evm_data_types/int.ts index 02278f666f..ff7d71552f 100644 --- a/packages/utils/src/abi_encoder/evm_data_types/int.ts +++ b/packages/utils/src/abi_encoder/evm_data_types/int.ts @@ -27,7 +27,7 @@ export class IntDataType extends AbstractBlobDataType { private static _decodeWidthFromType(type: string): number { const matches = IntDataType._MATCHER.exec(type); const width = - !_.isNull(matches) && matches.length === 2 && !_.isUndefined(matches[1]) + matches !== null && matches.length === 2 && matches[1] !== undefined ? parseInt(matches[1], constants.DEC_BASE) : IntDataType._DEFAULT_WIDTH; return width; diff --git a/packages/utils/src/abi_encoder/evm_data_types/static_bytes.ts b/packages/utils/src/abi_encoder/evm_data_types/static_bytes.ts index a965f6796b..5db3940acf 100644 --- a/packages/utils/src/abi_encoder/evm_data_types/static_bytes.ts +++ b/packages/utils/src/abi_encoder/evm_data_types/static_bytes.ts @@ -22,7 +22,7 @@ export class StaticBytesDataType extends AbstractBlobDataType { private static _decodeWidthFromType(type: string): number { const matches = StaticBytesDataType._MATCHER.exec(type); const width = - !_.isNull(matches) && matches.length === 3 && !_.isUndefined(matches[2]) + matches !== null && matches.length === 3 && matches[2] !== undefined ? parseInt(matches[2], constants.DEC_BASE) : StaticBytesDataType._DEFAULT_WIDTH; return width; diff --git a/packages/utils/src/abi_encoder/evm_data_types/tuple.ts b/packages/utils/src/abi_encoder/evm_data_types/tuple.ts index 5000c85e8a..6325c8fa48 100644 --- a/packages/utils/src/abi_encoder/evm_data_types/tuple.ts +++ b/packages/utils/src/abi_encoder/evm_data_types/tuple.ts @@ -26,7 +26,7 @@ export class TupleDataType extends AbstractSetDataType { } const name = this.getDataItem().name; const lastIndexOfScopeDelimiter = name.lastIndexOf('.'); - const isScopedName = !_.isUndefined(lastIndexOfScopeDelimiter) && lastIndexOfScopeDelimiter > 0; + const isScopedName = lastIndexOfScopeDelimiter !== undefined && lastIndexOfScopeDelimiter > 0; const shortName = isScopedName ? name.substr((lastIndexOfScopeDelimiter as number) + 1) : name; const detailedSignature = `${shortName} ${this._computeSignatureOfMembers(isDetailed)}`; return detailedSignature; diff --git a/packages/utils/src/abi_encoder/evm_data_types/uint.ts b/packages/utils/src/abi_encoder/evm_data_types/uint.ts index d530606b99..1e447075c8 100644 --- a/packages/utils/src/abi_encoder/evm_data_types/uint.ts +++ b/packages/utils/src/abi_encoder/evm_data_types/uint.ts @@ -27,7 +27,7 @@ export class UIntDataType extends AbstractBlobDataType { private static _decodeWidthFromType(type: string): number { const matches = UIntDataType._MATCHER.exec(type); const width = - !_.isNull(matches) && matches.length === 2 && !_.isUndefined(matches[1]) + matches !== null && matches.length === 2 && matches[1] !== undefined ? parseInt(matches[1], constants.DEC_BASE) : UIntDataType._DEFAULT_WIDTH; return width; diff --git a/packages/utils/src/abi_utils.ts b/packages/utils/src/abi_utils.ts index 3e6fc96654..15f51c20ed 100644 --- a/packages/utils/src/abi_utils.ts +++ b/packages/utils/src/abi_utils.ts @@ -43,11 +43,11 @@ function parseEthersParams(params: DataItem[]): { names: ParamName[]; types: str // type conversion and data massaging for x and y, depending on type. name and // type should typically be derived from parseEthersParams. function isAbiDataEqual(name: ParamName, type: string, x: any, y: any): boolean { - if (_.isUndefined(x) && _.isUndefined(y)) { + if (x === undefined && y === undefined) { return true; - } else if (_.isUndefined(x) && !_.isUndefined(y)) { + } else if (x === undefined && y !== undefined) { return false; - } else if (!_.isUndefined(x) && _.isUndefined(y)) { + } else if (x !== undefined && y === undefined) { return false; } if (_.endsWith(type, '[]')) { @@ -68,7 +68,7 @@ function isAbiDataEqual(name: ParamName, type: string, x: any, y: any): boolean if (_.startsWith(type, 'tuple(')) { if (_.isString(name)) { throw new Error('Internal error: type was tuple but names was a string'); - } else if (_.isNull(name)) { + } else if (name === null) { throw new Error('Internal error: type was tuple but names was null'); } // For tuples, we iterate through the underlying values and check each diff --git a/packages/utils/src/promisify.ts b/packages/utils/src/promisify.ts index e82251a0f2..c460fce19e 100644 --- a/packages/utils/src/promisify.ts +++ b/packages/utils/src/promisify.ts @@ -10,7 +10,7 @@ export function promisify(originalFn: (...args: any[]) => void, thisArg?: any const promisifiedFunction = async (...callArgs: any[]): Promise => { return new Promise((resolve, reject) => { const callback = (err: Error | null, data?: T) => { - _.isNull(err) || _.isUndefined(err) ? resolve(data) : reject(err); + err === null || err === undefined ? resolve(data) : reject(err); }; originalFn.apply(thisArg, [...callArgs, callback]); }); diff --git a/packages/utils/src/provider_utils.ts b/packages/utils/src/provider_utils.ts index a7b82fbdf9..7ed74b8899 100644 --- a/packages/utils/src/provider_utils.ts +++ b/packages/utils/src/provider_utils.ts @@ -62,11 +62,11 @@ export const providerUtils = { }; return provider; // Case 3: The provider has a `sendAsync` method, so we use it. - } else if (!_.isUndefined((supportedProvider as any).sendAsync)) { + } else if ((supportedProvider as any).sendAsync !== undefined) { provider.sendAsync = (supportedProvider as any).sendAsync.bind(supportedProvider); return provider; // Case 4: The provider does not have a `sendAsync` method but does have a `send` method - } else if (!_.isUndefined((supportedProvider as any).send)) { + } else if ((supportedProvider as any).send !== undefined) { // HACK(fabio): Detect if the `send` method has the old interface `send(payload, cb)` such // as in versions < Web3.js@1.0.0-beta.37. If so, do a simple re-mapping if (_.includes((supportedProvider as any).send.toString(), 'function (payload, callback)')) { diff --git a/packages/web3-wrapper/CHANGELOG.json b/packages/web3-wrapper/CHANGELOG.json index 2e8251b823..3e661d64cb 100644 --- a/packages/web3-wrapper/CHANGELOG.json +++ b/packages/web3-wrapper/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "6.0.5", + "changes": [ + { + "note": "Dependencies updated" + } + ], + "timestamp": 1554997931 + }, { "timestamp": 1553183790, "version": "6.0.4", diff --git a/packages/web3-wrapper/CHANGELOG.md b/packages/web3-wrapper/CHANGELOG.md index 7d673f633f..f530d0e1bd 100644 --- a/packages/web3-wrapper/CHANGELOG.md +++ b/packages/web3-wrapper/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v6.0.5 - _April 11, 2019_ + + * Dependencies updated + ## v6.0.4 - _March 21, 2019_ * Dependencies updated diff --git a/packages/web3-wrapper/package.json b/packages/web3-wrapper/package.json index c6c79a30ae..9cafb18c7c 100644 --- a/packages/web3-wrapper/package.json +++ b/packages/web3-wrapper/package.json @@ -1,6 +1,6 @@ { "name": "@0x/web3-wrapper", - "version": "6.0.4", + "version": "6.0.5", "engines": { "node": ">=6.12" }, @@ -13,6 +13,7 @@ "watch_without_deps": "tsc -w", "clean": "shx rm -rf lib generated_docs", "lint": "tslint --format stylish --project .", + "fix": "tslint --fix --format stylish --project .", "test": "yarn run_mocha", "rebuild_and_test": "run-s clean build test", "test:circleci": "yarn test:coverage", @@ -36,7 +37,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/web3-wrapper/README.md", "devDependencies": { - "@0x/tslint-config": "^3.0.0", + "@0x/tslint-config": "^3.0.1", "@types/lodash": "4.14.104", "chai": "^4.0.1", "chai-as-promised": "^7.1.0", @@ -53,11 +54,11 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/assert": "^2.0.8", - "@0x/json-schemas": "^3.0.8", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "ethereum-types": "^2.1.1", + "@0x/assert": "^2.0.9", + "@0x/json-schemas": "^3.0.9", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "ethereum-types": "^2.1.2", "ethereumjs-util": "^5.1.1", "ethers": "~4.0.4", "lodash": "^4.17.11" diff --git a/packages/web3-wrapper/src/marshaller.ts b/packages/web3-wrapper/src/marshaller.ts index 4230f8eabd..e9fbeb29ec 100644 --- a/packages/web3-wrapper/src/marshaller.ts +++ b/packages/web3-wrapper/src/marshaller.ts @@ -45,7 +45,7 @@ export const marshaller = { gasUsed: utils.convertHexToNumber(blockWithHexValues.gasUsed), size: utils.convertHexToNumber(blockWithHexValues.size), timestamp: utils.convertHexToNumber(blockWithHexValues.timestamp), - number: _.isNull(blockWithHexValues.number) ? null : utils.convertHexToNumber(blockWithHexValues.number), + number: blockWithHexValues.number === null ? null : utils.convertHexToNumber(blockWithHexValues.number), difficulty: utils.convertAmountToBigNumber(blockWithHexValues.difficulty), totalDifficulty: utils.convertAmountToBigNumber(blockWithHexValues.totalDifficulty), }; @@ -63,7 +63,7 @@ export const marshaller = { gasUsed: utils.convertHexToNumber(blockWithHexValues.gasUsed), size: utils.convertHexToNumber(blockWithHexValues.size), timestamp: utils.convertHexToNumber(blockWithHexValues.timestamp), - number: _.isNull(blockWithHexValues.number) ? null : utils.convertHexToNumber(blockWithHexValues.number), + number: blockWithHexValues.number === null ? null : utils.convertHexToNumber(blockWithHexValues.number), difficulty: utils.convertAmountToBigNumber(blockWithHexValues.difficulty), totalDifficulty: utils.convertAmountToBigNumber(blockWithHexValues.totalDifficulty), transactions: [] as Transaction[], @@ -82,10 +82,8 @@ export const marshaller = { unmarshalTransaction(txRpc: TransactionRPC): Transaction { const tx = { ...txRpc, - blockNumber: !_.isNull(txRpc.blockNumber) ? utils.convertHexToNumber(txRpc.blockNumber) : null, - transactionIndex: !_.isNull(txRpc.transactionIndex) - ? utils.convertHexToNumber(txRpc.transactionIndex) - : null, + blockNumber: txRpc.blockNumber !== null ? utils.convertHexToNumber(txRpc.blockNumber) : null, + transactionIndex: txRpc.transactionIndex !== null ? utils.convertHexToNumber(txRpc.transactionIndex) : null, nonce: utils.convertHexToNumber(txRpc.nonce), gas: utils.convertHexToNumber(txRpc.gas), gasPrice: utils.convertAmountToBigNumber(txRpc.gasPrice), @@ -115,17 +113,15 @@ export const marshaller = { * @return unmarshalled transaction data */ unmarshalTxData(txDataRpc: TxDataRPC): TxData { - if (_.isUndefined(txDataRpc.from)) { + if (txDataRpc.from === undefined) { throw new Error(`txData must include valid 'from' value.`); } const txData = { ...txDataRpc, - value: !_.isUndefined(txDataRpc.value) ? utils.convertAmountToBigNumber(txDataRpc.value) : undefined, - gas: !_.isUndefined(txDataRpc.gas) ? utils.convertHexToNumber(txDataRpc.gas) : undefined, - gasPrice: !_.isUndefined(txDataRpc.gasPrice) - ? utils.convertAmountToBigNumber(txDataRpc.gasPrice) - : undefined, - nonce: !_.isUndefined(txDataRpc.nonce) ? utils.convertHexToNumber(txDataRpc.nonce) : undefined, + value: txDataRpc.value !== undefined ? utils.convertAmountToBigNumber(txDataRpc.value) : undefined, + gas: txDataRpc.gas !== undefined ? utils.convertHexToNumber(txDataRpc.gas) : undefined, + gasPrice: txDataRpc.gasPrice !== undefined ? utils.convertAmountToBigNumber(txDataRpc.gasPrice) : undefined, + nonce: txDataRpc.nonce !== undefined ? utils.convertHexToNumber(txDataRpc.nonce) : undefined, }; return txData; }, @@ -135,7 +131,7 @@ export const marshaller = { * @return marshalled transaction data */ marshalTxData(txData: Partial): Partial { - if (_.isUndefined(txData.from)) { + if (txData.from === undefined) { throw new Error(`txData must include valid 'from' value.`); } const callTxDataBase = { @@ -149,7 +145,7 @@ export const marshaller = { }; const prunableIfUndefined = ['gasPrice', 'gas', 'value', 'nonce']; _.each(txDataRPC, (value: any, key: string) => { - if (_.isUndefined(value) && _.includes(prunableIfUndefined, key)) { + if (value === undefined && _.includes(prunableIfUndefined, key)) { delete (txDataRPC as any)[key]; } }); @@ -168,7 +164,7 @@ export const marshaller = { const callTxDataBaseRPC = marshaller._marshalCallTxDataBase(callTxDataBase); const callDataRPC = { ...callTxDataBaseRPC, - from: _.isUndefined(callData.from) ? undefined : marshaller.marshalAddress(callData.from), + from: callData.from === undefined ? undefined : marshaller.marshalAddress(callData.from), }; return callDataRPC; }, @@ -189,7 +185,7 @@ export const marshaller = { * @return marshalled block param */ marshalBlockParam(blockParam: BlockParam | string | number | undefined): string | undefined { - if (_.isUndefined(blockParam)) { + if (blockParam === undefined) { return BlockParamLiteral.Latest; } const encodedBlockParam = _.isNumber(blockParam) ? utils.numberToHex(blockParam) : blockParam; @@ -212,17 +208,14 @@ export const marshaller = { _marshalCallTxDataBase(callTxDataBase: Partial): Partial { const callTxDataBaseRPC = { ...callTxDataBase, - to: _.isUndefined(callTxDataBase.to) ? undefined : marshaller.marshalAddress(callTxDataBase.to), - gasPrice: _.isUndefined(callTxDataBase.gasPrice) - ? undefined - : utils.encodeAmountAsHexString(callTxDataBase.gasPrice), - gas: _.isUndefined(callTxDataBase.gas) ? undefined : utils.encodeAmountAsHexString(callTxDataBase.gas), - value: _.isUndefined(callTxDataBase.value) - ? undefined - : utils.encodeAmountAsHexString(callTxDataBase.value), - nonce: _.isUndefined(callTxDataBase.nonce) - ? undefined - : utils.encodeAmountAsHexString(callTxDataBase.nonce), + to: callTxDataBase.to === undefined ? undefined : marshaller.marshalAddress(callTxDataBase.to), + gasPrice: + callTxDataBase.gasPrice === undefined + ? undefined + : utils.encodeAmountAsHexString(callTxDataBase.gasPrice), + gas: callTxDataBase.gas === undefined ? undefined : utils.encodeAmountAsHexString(callTxDataBase.gas), + value: callTxDataBase.value === undefined ? undefined : utils.encodeAmountAsHexString(callTxDataBase.value), + nonce: callTxDataBase.nonce === undefined ? undefined : utils.encodeAmountAsHexString(callTxDataBase.nonce), }; return callTxDataBaseRPC; diff --git a/packages/web3-wrapper/src/utils.ts b/packages/web3-wrapper/src/utils.ts index 1aba3c75a3..d0962ceab7 100644 --- a/packages/web3-wrapper/src/utils.ts +++ b/packages/web3-wrapper/src/utils.ts @@ -8,7 +8,7 @@ export const utils = { return valueNumber; }, convertHexToNumberOrNull(hex: string | null): number | null { - if (_.isNull(hex)) { + if (hex === null) { return null; } const decimal = utils.convertHexToNumber(hex); diff --git a/packages/web3-wrapper/src/web3_wrapper.ts b/packages/web3-wrapper/src/web3_wrapper.ts index 8a8190ec93..c45807b637 100644 --- a/packages/web3-wrapper/src/web3_wrapper.ts +++ b/packages/web3-wrapper/src/web3_wrapper.ts @@ -137,7 +137,7 @@ export class Web3Wrapper { // hex - Geth if (_.isString(status)) { return utils.convertHexToNumber(status) as 0 | 1; - } else if (_.isUndefined(status)) { + } else if (status === undefined) { return null; } else { return status; @@ -223,7 +223,7 @@ export class Web3Wrapper { // HACK Parity can return a pending transaction receipt. We check for a non null // block number before continuing with returning a fully realised receipt. // ref: https://github.com/paritytech/parity-ethereum/issues/1180 - if (!_.isNull(transactionReceiptRpc) && !_.isNull(transactionReceiptRpc.blockNumber)) { + if (transactionReceiptRpc !== null && transactionReceiptRpc.blockNumber !== null) { transactionReceiptRpc.status = Web3Wrapper._normalizeTxReceiptStatus(transactionReceiptRpc.status); const transactionReceipt = marshaller.unmarshalTransactionReceipt(transactionReceiptRpc); return transactionReceipt; @@ -253,7 +253,7 @@ export class Web3Wrapper { */ public async getBalanceInWeiAsync(owner: string, defaultBlock?: BlockParam): Promise { assert.isETHAddressHex('owner', owner); - if (!_.isUndefined(defaultBlock)) { + if (defaultBlock !== undefined) { Web3Wrapper._assertBlockParam(defaultBlock); } const marshalledDefaultBlock = marshaller.marshalBlockParam(defaultBlock); @@ -285,7 +285,7 @@ export class Web3Wrapper { */ public async getContractCodeAsync(address: string, defaultBlock?: BlockParam): Promise { assert.isETHAddressHex('address', address); - if (!_.isUndefined(defaultBlock)) { + if (defaultBlock !== undefined) { Web3Wrapper._assertBlockParam(defaultBlock); } const marshalledDefaultBlock = marshaller.marshalBlockParam(defaultBlock); @@ -372,7 +372,7 @@ export class Web3Wrapper { params: [encodedBlockParam, shouldIncludeTransactionData], }); let blockWithoutTransactionDataIfExists; - if (!_.isNull(blockWithoutTransactionDataWithHexValuesOrNull)) { + if (blockWithoutTransactionDataWithHexValuesOrNull !== null) { blockWithoutTransactionDataIfExists = marshaller.unmarshalIntoBlockWithoutTransactionData( blockWithoutTransactionDataWithHexValuesOrNull, ); @@ -409,7 +409,7 @@ export class Web3Wrapper { public async getBlockTimestampAsync(blockParam: string | BlockParam): Promise { Web3Wrapper._assertBlockParamOrString(blockParam); const blockIfExists = await this.getBlockIfExistsAsync(blockParam); - if (_.isUndefined(blockIfExists)) { + if (blockIfExists === undefined) { throw new Error(`Failed to fetch block with blockParam: ${JSON.stringify(blockParam)}`); } return blockIfExists.timestamp; @@ -473,7 +473,7 @@ export class Web3Wrapper { * @returns The corresponding log entries */ public async getLogsAsync(filter: FilterObject): Promise { - if (!_.isUndefined(filter.blockHash) && (!_.isUndefined(filter.fromBlock) || !_.isUndefined(filter.toBlock))) { + if (filter.blockHash !== undefined && (filter.fromBlock !== undefined || filter.toBlock !== undefined)) { throw new Error( `Cannot specify 'blockHash' as well as 'fromBlock'/'toBlock' in the filter supplied to 'getLogsAsync'`, ); @@ -528,7 +528,7 @@ export class Web3Wrapper { schemas.numberSchema, schemas.jsNumber, ]); - if (!_.isUndefined(defaultBlock)) { + if (defaultBlock !== undefined) { Web3Wrapper._assertBlockParam(defaultBlock); } const marshalledDefaultBlock = marshaller.marshalBlockParam(defaultBlock); @@ -572,12 +572,12 @@ export class Web3Wrapper { ): Promise { assert.isHexString('txHash', txHash); assert.isNumber('pollingIntervalMs', pollingIntervalMs); - if (!_.isUndefined(timeoutMs)) { + if (timeoutMs !== undefined) { assert.isNumber('timeoutMs', timeoutMs); } // Immediately check if the transaction has already been mined. let transactionReceipt = await this.getTransactionReceiptIfExistsAsync(txHash); - if (!_.isUndefined(transactionReceipt)) { + if (transactionReceipt !== undefined) { const logsWithDecodedArgs = _.map( transactionReceipt.logs, this.abiDecoder.tryToDecodeLogOrNoop.bind(this.abiDecoder), @@ -605,7 +605,7 @@ export class Web3Wrapper { } transactionReceipt = await this.getTransactionReceiptIfExistsAsync(txHash); - if (!_.isUndefined(transactionReceipt)) { + if (transactionReceipt !== undefined) { intervalUtils.clearAsyncExcludingInterval(intervalId); const logsWithDecodedArgs = _.map( transactionReceipt.logs, diff --git a/packages/web3-wrapper/test/web3_wrapper_test.ts b/packages/web3-wrapper/test/web3_wrapper_test.ts index 54f77d75b6..45bee95e07 100644 --- a/packages/web3-wrapper/test/web3_wrapper_test.ts +++ b/packages/web3-wrapper/test/web3_wrapper_test.ts @@ -114,7 +114,7 @@ describe('Web3Wrapper tests', () => { it('gets block when supplied a valid BlockParamLiteral value', async () => { const blockParamLiteral = BlockParamLiteral.Earliest; const blockIfExists = await web3Wrapper.getBlockIfExistsAsync(blockParamLiteral); - if (_.isUndefined(blockIfExists)) { + if (blockIfExists === undefined) { throw new Error('Expected block to exist'); } expect(blockIfExists.number).to.be.equal(0); @@ -124,7 +124,7 @@ describe('Web3Wrapper tests', () => { it('gets block when supplied a block number', async () => { const blockParamLiteral = 0; const blockIfExists = await web3Wrapper.getBlockIfExistsAsync(blockParamLiteral); - if (_.isUndefined(blockIfExists)) { + if (blockIfExists === undefined) { throw new Error('Expected block to exist'); } expect(blockIfExists.number).to.be.equal(0); @@ -132,11 +132,11 @@ describe('Web3Wrapper tests', () => { it('gets block when supplied a block hash', async () => { const blockParamLiteral = 0; const blockIfExists = await web3Wrapper.getBlockIfExistsAsync(blockParamLiteral); - if (_.isUndefined(blockIfExists)) { + if (blockIfExists === undefined) { throw new Error('Expected block to exist'); } const sameBlockIfExists = await web3Wrapper.getBlockIfExistsAsync(blockIfExists.hash as string); - if (_.isUndefined(sameBlockIfExists)) { + if (sameBlockIfExists === undefined) { throw new Error('Expected block to exist'); } expect(sameBlockIfExists.number).to.be.equal(0); diff --git a/packages/website/package.json b/packages/website/package.json index 4cb38416dc..8f8684c481 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "@0x/website", - "version": "0.0.78", + "version": "0.0.79", "engines": { "node": ">=6.12" }, @@ -12,6 +12,7 @@ "build:dev": "../../node_modules/.bin/webpack --mode development", "clean": "shx rm -f public/bundle*", "lint": "tslint --format stylish --project . 'ts/**/*.ts' 'ts/**/*.tsx'", + "fix": "tslint --fix --format stylish --project . 'ts/**/*.ts' 'ts/**/*.tsx'", "dev": "webpack-dev-server --mode development --content-base public --https", "deploy_dogfood": "npm run build:prod; aws s3 sync ./public/. s3://dogfood.0xproject.com --profile 0xproject --region us-east-1 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers", "deploy_staging": "npm run build:prod; aws s3 sync ./public/. s3://staging-0xproject --profile 0xproject --region us-east-1 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers", @@ -20,18 +21,18 @@ "author": "Fabio Berger", "license": "Apache-2.0", "dependencies": { - "@0x/asset-buyer": "^6.0.5", - "@0x/contract-addresses": "^2.3.0", - "@0x/contract-wrappers": "^8.0.5", - "@0x/json-schemas": "^3.0.8", - "@0x/order-utils": "^7.1.1", - "@0x/react-docs": "^2.0.9", - "@0x/react-shared": "^2.0.9", - "@0x/subproviders": "^4.0.4", - "@0x/types": "^2.2.1", - "@0x/typescript-typings": "^4.2.1", - "@0x/utils": "^4.3.0", - "@0x/web3-wrapper": "^6.0.4", + "@0x/asset-buyer": "^6.1.0", + "@0x/contract-addresses": "^2.3.1", + "@0x/contract-wrappers": "^9.0.0", + "@0x/json-schemas": "^3.0.9", + "@0x/order-utils": "^7.2.0", + "@0x/react-docs": "^2.0.10", + "@0x/react-shared": "^2.0.10", + "@0x/subproviders": "^4.0.5", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.1", + "@0x/web3-wrapper": "^6.0.5", "@reach/dialog": "^0.1.2", "@types/react-lazyload": "^2.3.1", "@types/react-loadable": "^5.4.2", @@ -42,7 +43,7 @@ "blockies": "^0.0.2", "bowser": "^1.9.4", "deep-equal": "^1.0.1", - "ethereum-types": "^2.1.1", + "ethereum-types": "^2.1.2", "ethereumjs-util": "^5.1.1", "find-versions": "^2.0.0", "jsonschema": "^1.2.0", diff --git a/packages/website/public/images/team/brento.jpg b/packages/website/public/images/team/brento.jpg new file mode 100644 index 0000000000..d7b859eebd Binary files /dev/null and b/packages/website/public/images/team/brento.jpg differ diff --git a/packages/website/public/images/team/chrisk.jpg b/packages/website/public/images/team/chrisk.jpg old mode 100755 new mode 100644 index cf900faeab..94a95f3885 Binary files a/packages/website/public/images/team/chrisk.jpg and b/packages/website/public/images/team/chrisk.jpg differ diff --git a/packages/website/public/images/team/clayr.jpg b/packages/website/public/images/team/clayr.jpg old mode 100755 new mode 100644 index 3fa5507278..3a9ecd522c Binary files a/packages/website/public/images/team/clayr.jpg and b/packages/website/public/images/team/clayr.jpg differ diff --git a/packages/website/public/images/team/fabiob.jpg b/packages/website/public/images/team/fabiob.jpg old mode 100755 new mode 100644 index c06a06c9f1..6b8d348c98 Binary files a/packages/website/public/images/team/fabiob.jpg and b/packages/website/public/images/team/fabiob.jpg differ diff --git a/packages/website/public/images/team/jacobe.jpg b/packages/website/public/images/team/jacobe.jpg old mode 100755 new mode 100644 index 29eed406dd..e87bc6f919 Binary files a/packages/website/public/images/team/jacobe.jpg and b/packages/website/public/images/team/jacobe.jpg differ diff --git a/packages/website/public/images/team/jasons.jpg b/packages/website/public/images/team/jasons.jpg old mode 100755 new mode 100644 index b0a40edba6..2cefcac053 Binary files a/packages/website/public/images/team/jasons.jpg and b/packages/website/public/images/team/jasons.jpg differ diff --git a/packages/website/public/images/team/leol.jpg b/packages/website/public/images/team/leol.jpg new file mode 100644 index 0000000000..2e7c983ed6 Binary files /dev/null and b/packages/website/public/images/team/leol.jpg differ diff --git a/packages/website/public/images/team/leonidL.jpg b/packages/website/public/images/team/leonidL.jpg deleted file mode 100755 index e3dfd6a7d7..0000000000 Binary files a/packages/website/public/images/team/leonidL.jpg and /dev/null differ diff --git a/packages/website/public/images/team/marcs.jpg b/packages/website/public/images/team/marcs.jpg index fefc24156c..1a38e43690 100644 Binary files a/packages/website/public/images/team/marcs.jpg and b/packages/website/public/images/team/marcs.jpg differ diff --git a/packages/website/public/images/team/oshirob.png b/packages/website/public/images/team/oshirob.png deleted file mode 100644 index 094bab79b6..0000000000 Binary files a/packages/website/public/images/team/oshirob.png and /dev/null differ diff --git a/packages/website/public/images/team/paulv.jpg b/packages/website/public/images/team/paulv.jpg new file mode 100644 index 0000000000..b76b400bba Binary files /dev/null and b/packages/website/public/images/team/paulv.jpg differ diff --git a/packages/website/public/images/team/remcoB.jpg b/packages/website/public/images/team/remcoB.jpg old mode 100755 new mode 100644 index bc997a18e7..821f06bfe3 Binary files a/packages/website/public/images/team/remcoB.jpg and b/packages/website/public/images/team/remcoB.jpg differ diff --git a/packages/website/public/images/team/steve.jpg b/packages/website/public/images/team/steve.jpg new file mode 100644 index 0000000000..4ddcbb3f31 Binary files /dev/null and b/packages/website/public/images/team/steve.jpg differ diff --git a/packages/website/public/images/team/steveK.jpg b/packages/website/public/images/team/steveK.jpg deleted file mode 100755 index aeede8bc5e..0000000000 Binary files a/packages/website/public/images/team/steveK.jpg and /dev/null differ diff --git a/packages/website/public/images/team/xianny.jpg b/packages/website/public/images/team/xianny.jpg deleted file mode 100755 index 4e6a3bb8ce..0000000000 Binary files a/packages/website/public/images/team/xianny.jpg and /dev/null differ diff --git a/packages/website/public/images/team/xiannyn.jpg b/packages/website/public/images/team/xiannyn.jpg new file mode 100644 index 0000000000..e5494d3297 Binary files /dev/null and b/packages/website/public/images/team/xiannyn.jpg differ diff --git a/packages/website/public/index.html b/packages/website/public/index.html index b760443739..bfc5188c98 100644 --- a/packages/website/public/index.html +++ b/packages/website/public/index.html @@ -8,10 +8,10 @@ + - diff --git a/packages/website/ts/blockchain.ts b/packages/website/ts/blockchain.ts index e5eba7d2d1..de7f38a8b5 100644 --- a/packages/website/ts/blockchain.ts +++ b/packages/website/ts/blockchain.ts @@ -92,7 +92,7 @@ export class Blockchain { private static _getNameGivenProvider(provider: ZeroExProvider): string { const providerType = utils.getProviderType(provider); const providerNameIfExists = providerToName[providerType]; - if (_.isUndefined(providerNameIfExists)) { + if (providerNameIfExists === undefined) { return constants.PROVIDER_NAME_GENERIC; } return providerNameIfExists; @@ -102,10 +102,10 @@ export class Blockchain { networkIdIfExists?: number, shouldUserLedgerProvider: boolean = false, ): Promise<[Provider, LedgerSubprovider | undefined]> { - const doesInjectedProviderExist = !_.isUndefined(injectedProviderIfExists); - const isNetworkIdAvailable = !_.isUndefined(networkIdIfExists); + const doesInjectedProviderExist = injectedProviderIfExists !== undefined; + const isNetworkIdAvailable = networkIdIfExists !== undefined; const publicNodeUrlsIfExistsForNetworkId = configs.PUBLIC_NODE_URLS_BY_NETWORK_ID[networkIdIfExists]; - const isPublicNodeAvailableForNetworkId = !_.isUndefined(publicNodeUrlsIfExistsForNetworkId); + const isPublicNodeAvailableForNetworkId = publicNodeUrlsIfExistsForNetworkId !== undefined; if (shouldUserLedgerProvider && isNetworkIdAvailable) { const isU2FSupported = await utils.isU2FSupportedAsync(); @@ -169,7 +169,7 @@ export class Blockchain { this._onPageLoadInitFireAndForgetAsync(); } public async networkIdUpdatedFireAndForgetAsync(newNetworkId: number): Promise { - const isConnected = !_.isUndefined(newNetworkId); + const isConnected = newNetworkId !== undefined; if (!isConnected) { this.networkId = newNetworkId; this._dispatcher.encounteredBlockchainError(BlockchainErrs.DisconnectedFromEthereumNode); @@ -200,20 +200,20 @@ export class Blockchain { // HACK: Override token addresses on testnets const tokenSymbolToAddressOverrides = tokenAddressOverrides[this.networkId]; let isTokenAddressInOverrides = false; - if (!_.isUndefined(tokenSymbolToAddressOverrides)) { + if (tokenSymbolToAddressOverrides !== undefined) { isTokenAddressInOverrides = _.values(tokenSymbolToAddressOverrides).includes(tokenAddress); } - return !_.isUndefined(tokenIfExists) || isTokenAddressInOverrides; + return tokenIfExists !== undefined || isTokenAddressInOverrides; } public getLedgerDerivationPathIfExists(): string { - if (_.isUndefined(this._ledgerSubprovider)) { + if (this._ledgerSubprovider === undefined) { return undefined; } const path = this._ledgerSubprovider.getPath(); return path; } public updateLedgerDerivationPathIfExists(path: string): void { - if (_.isUndefined(this._ledgerSubprovider)) { + if (this._ledgerSubprovider === undefined) { return; // noop } this._ledgerSubprovider.setPath(path); @@ -234,7 +234,7 @@ export class Blockchain { public async setProxyAllowanceAsync(token: Token, amountInBaseUnits: BigNumber): Promise { utils.assert(this.isValidAddress(token.address), BlockchainCallErrs.TokenAddressIsInvalid); utils.assert(this._doesUserAddressExist(), BlockchainCallErrs.UserHasNoAssociatedAddresses); - utils.assert(!_.isUndefined(this._contractWrappers), 'Contract Wrappers must be instantiated.'); + utils.assert(this._contractWrappers !== undefined, 'Contract Wrappers must be instantiated.'); this._showFlashMessageIfLedger(); const txHash = await this._contractWrappers.erc20Token.setProxyAllowanceAsync( @@ -274,7 +274,7 @@ export class Blockchain { ); } public async transferAsync(token: Token, toAddress: string, amountInBaseUnits: BigNumber): Promise { - utils.assert(!_.isUndefined(this._contractWrappers), 'ContractWrappers must be instantiated.'); + utils.assert(this._contractWrappers !== undefined, 'ContractWrappers must be instantiated.'); utils.assert(this._doesUserAddressExist(), BlockchainCallErrs.UserHasNoAssociatedAddresses); this._showFlashMessageIfLedger(); @@ -304,7 +304,7 @@ export class Blockchain { ); } public async fillOrderAsync(signedOrder: SignedOrder, fillTakerTokenAmount: BigNumber): Promise { - utils.assert(!_.isUndefined(this._contractWrappers), 'ContractWrappers must be instantiated.'); + utils.assert(this._contractWrappers !== undefined, 'ContractWrappers must be instantiated.'); utils.assert(this._doesUserAddressExist(), BlockchainCallErrs.UserHasNoAssociatedAddresses); this._showFlashMessageIfLedger(); const txHash = await this._contractWrappers.exchange.fillOrderAsync( @@ -336,7 +336,7 @@ export class Blockchain { } public async getUnavailableTakerAmountAsync(orderHash: string): Promise { utils.assert(orderHashUtils.isValidOrderHash(orderHash), 'Must be valid orderHash'); - utils.assert(!_.isUndefined(this._contractWrappers), 'ContractWrappers must be instantiated.'); + utils.assert(this._contractWrappers !== undefined, 'ContractWrappers must be instantiated.'); const unavailableTakerAmount = await this._contractWrappers.exchange.getFilledTakerAssetAmountAsync(orderHash); return unavailableTakerAmount; } @@ -396,11 +396,11 @@ export class Blockchain { return newTokenBalancePromise; } public async signOrderHashAsync(orderHash: string): Promise { - utils.assert(!_.isUndefined(this._contractWrappers), 'ContractWrappers must be instantiated.'); + utils.assert(this._contractWrappers !== undefined, 'ContractWrappers must be instantiated.'); const makerAddress = this._userAddressIfExists; // If makerAddress is undefined, this means they have a web3 instance injected into their browser // but no account addresses associated with it. - if (_.isUndefined(makerAddress)) { + if (makerAddress === undefined) { throw new Error('Tried to send a sign request but user has no associated addresses'); } this._showFlashMessageIfLedger(); @@ -424,7 +424,7 @@ export class Blockchain { return balanceInWei; } public async convertEthToWrappedEthTokensAsync(etherTokenAddress: string, amount: BigNumber): Promise { - utils.assert(!_.isUndefined(this._contractWrappers), 'ContractWrappers must be instantiated.'); + utils.assert(this._contractWrappers !== undefined, 'ContractWrappers must be instantiated.'); utils.assert(this._doesUserAddressExist(), BlockchainCallErrs.UserHasNoAssociatedAddresses); this._showFlashMessageIfLedger(); @@ -439,7 +439,7 @@ export class Blockchain { await this._showEtherScanLinkAndAwaitTransactionMinedAsync(txHash); } public async convertWrappedEthTokensToEthAsync(etherTokenAddress: string, amount: BigNumber): Promise { - utils.assert(!_.isUndefined(this._contractWrappers), 'ContractWrappers must be instantiated.'); + utils.assert(this._contractWrappers !== undefined, 'ContractWrappers must be instantiated.'); utils.assert(this._doesUserAddressExist(), BlockchainCallErrs.UserHasNoAssociatedAddresses); this._showFlashMessageIfLedger(); @@ -470,9 +470,9 @@ export class Blockchain { ownerAddressIfExists: string, tokenAddress: string, ): Promise<[BigNumber, BigNumber]> { - utils.assert(!_.isUndefined(this._contractWrappers), 'ContractWrappers must be instantiated.'); + utils.assert(this._contractWrappers !== undefined, 'ContractWrappers must be instantiated.'); - if (_.isUndefined(ownerAddressIfExists)) { + if (ownerAddressIfExists === undefined) { const zero = new BigNumber(0); return [zero, zero]; } @@ -487,7 +487,7 @@ export class Blockchain { return [balance, allowance]; } public async getUserAccountsAsync(): Promise { - utils.assert(!_.isUndefined(this._contractWrappers), 'ContractWrappers must be instantiated.'); + utils.assert(this._contractWrappers !== undefined, 'ContractWrappers must be instantiated.'); const provider = this._contractWrappers.getProvider(); const web3Wrapper = new Web3Wrapper(provider); const userAccountsIfExists = await web3Wrapper.getAvailableAddressesAsync(); @@ -509,7 +509,7 @@ export class Blockchain { } public async fetchTokenInformationAsync(): Promise { utils.assert( - !_.isUndefined(this.networkId), + this.networkId !== undefined, 'Cannot call fetchTokenInformationAsync if disconnected from Ethereum node', ); @@ -517,9 +517,10 @@ export class Blockchain { const tokenRegistryTokensByAddress = await this._getTokenRegistryTokensByAddressAsync(); - const trackedTokensByAddress = _.isUndefined(this._userAddressIfExists) - ? {} - : trackedTokenStorage.getTrackedTokensByAddress(this._userAddressIfExists, this.networkId); + const trackedTokensByAddress = + this._userAddressIfExists === undefined + ? {} + : trackedTokenStorage.getTrackedTokensByAddress(this._userAddressIfExists, this.networkId); const tokenRegistryTokens = _.values(tokenRegistryTokensByAddress); const tokenRegistryTokenSymbols = _.map(tokenRegistryTokens, t => t.symbol); const defaultTrackedTokensInRegistry = _.intersection( @@ -544,7 +545,7 @@ export class Blockchain { token.trackedTimestamp = currentTimestamp; trackedTokensByAddress[token.address] = token; }); - if (!_.isUndefined(this._userAddressIfExists)) { + if (this._userAddressIfExists !== undefined) { _.each(trackedTokensByAddress, (token: Token) => { trackedTokenStorage.addTrackedTokenToUser(this._userAddressIfExists, this.networkId, token); }); @@ -552,7 +553,7 @@ export class Blockchain { } else { // Properly set all tokenRegistry tokens `trackedTimestamp` if they are in the existing trackedTokens array _.each(trackedTokensByAddress, (trackedToken: Token, address: string) => { - if (!_.isUndefined(tokenRegistryTokensByAddress[address])) { + if (tokenRegistryTokensByAddress[address] !== undefined) { tokenRegistryTokensByAddress[address].trackedTimestamp = trackedToken.trackedTimestamp; } }); @@ -579,12 +580,12 @@ export class Blockchain { this._dispatcher.updateBlockchainIsLoaded(true); } private async _getInjectedProviderIfExistsAsync(): Promise { - if (!_.isUndefined(this._injectedProviderIfExists)) { + if (this._injectedProviderIfExists !== undefined) { return this._injectedProviderIfExists; } let injectedProviderIfExists = (window as any).ethereum; - if (!_.isUndefined(injectedProviderIfExists)) { - if (!_.isUndefined(injectedProviderIfExists.enable)) { + if (injectedProviderIfExists !== undefined) { + if (injectedProviderIfExists.enable !== undefined) { try { await injectedProviderIfExists.enable(); } catch (err) { @@ -593,7 +594,7 @@ export class Blockchain { } } else { const injectedWeb3IfExists = (window as any).web3; - if (!_.isUndefined(injectedWeb3IfExists) && !_.isUndefined(injectedWeb3IfExists.currentProvider)) { + if (injectedWeb3IfExists !== undefined && injectedWeb3IfExists.currentProvider !== undefined) { injectedProviderIfExists = injectedWeb3IfExists.currentProvider; } else { return undefined; @@ -608,7 +609,7 @@ export class Blockchain { // Ethereum node, this call will throw. We need to handle this case gracefully const injectedProviderIfExists = await this._getInjectedProviderIfExistsAsync(); let networkIdIfExists: number; - if (!_.isUndefined(injectedProviderIfExists)) { + if (injectedProviderIfExists !== undefined) { try { const injectedWeb3Wrapper = new Web3Wrapper(injectedProviderIfExists); networkIdIfExists = await injectedWeb3Wrapper.getNetworkIdAsync(); @@ -639,10 +640,10 @@ export class Blockchain { return receipt; } private _doesUserAddressExist(): boolean { - return !_.isUndefined(this._userAddressIfExists); + return this._userAddressIfExists !== undefined; } private async _handleInjectedProviderUpdateAsync(update: InjectedProviderUpdate): Promise { - if (update.networkVersion === 'loading' || !_.isUndefined(this._ledgerSubprovider)) { + if (update.networkVersion === 'loading' || this._ledgerSubprovider !== undefined) { return; } const updatedNetworkId = _.parseInt(update.networkVersion); @@ -661,7 +662,7 @@ export class Blockchain { return; // short-circuit } - if (!_.isUndefined(this._contractWrappers)) { + if (this._contractWrappers !== undefined) { // Since we do not have an index on the `taker` address and want to show // transactions where an account is either the `maker` or `taker`, we loop // through all fill events, and filter/cache them client-side. @@ -670,7 +671,7 @@ export class Blockchain { } } private async _startListeningForExchangeLogFillEventsAsync(indexFilterValues: IndexedFilterValues): Promise { - utils.assert(!_.isUndefined(this._contractWrappers), 'ContractWrappers must be instantiated.'); + utils.assert(this._contractWrappers !== undefined, 'ContractWrappers must be instantiated.'); utils.assert(this._doesUserAddressExist(), BlockchainCallErrs.UserHasNoAssociatedAddresses); // Fetch historical logs @@ -754,7 +755,7 @@ export class Blockchain { private _updateLatestFillsBlockIfNeeded(blockNumber: number): void { utils.assert(this._doesUserAddressExist(), BlockchainCallErrs.UserHasNoAssociatedAddresses); - const isBlockPending = _.isNull(blockNumber); + const isBlockPending = blockNumber === null; if (!isBlockPending) { // Hack: I've observed the behavior where a client won't register certain fill events // and lowering the cache blockNumber fixes the issue. As a quick fix for now, simply @@ -777,11 +778,11 @@ export class Blockchain { } else { tokenRegistryTokens = fakeTokenRegistry[this.networkId]; const tokenSymbolToAddressOverrides = tokenAddressOverrides[this.networkId]; - if (!_.isUndefined(tokenAddressOverrides)) { + if (tokenAddressOverrides !== undefined) { // HACK: Override token addresses on testnets tokenRegistryTokens = _.map(tokenRegistryTokens, (token: ZeroExToken) => { const overrideIfExists = tokenSymbolToAddressOverrides[token.symbol]; - if (!_.isUndefined(overrideIfExists)) { + if (overrideIfExists !== undefined) { return { ...token, address: overrideIfExists, @@ -812,11 +813,11 @@ export class Blockchain { private async _onPageLoadInitFireAndForgetAsync(): Promise { await utils.onPageLoadPromise; // wait for page to load const networkIdIfExists = await this._getInjectedProviderNetworkIdIfExistsAsync(); - this.networkId = !_.isUndefined(networkIdIfExists) ? networkIdIfExists : constants.NETWORK_ID_MAINNET; + this.networkId = networkIdIfExists !== undefined ? networkIdIfExists : constants.NETWORK_ID_MAINNET; const injectedProviderIfExists = await this._getInjectedProviderIfExistsAsync(); - if (!_.isUndefined(injectedProviderIfExists)) { + if (injectedProviderIfExists !== undefined) { const injectedProviderObservable = injectedProviderIfExists.publicConfigStore; - if (!_.isUndefined(injectedProviderObservable) && _.isUndefined(this._injectedProviderObservable)) { + if (injectedProviderObservable !== undefined && this._injectedProviderObservable === undefined) { this._injectedProviderObservable = injectedProviderObservable; this._injectedProviderObservable.subscribe(this._injectedProviderUpdateHandler); } @@ -828,7 +829,7 @@ export class Blockchain { await this._resetOrInitializeAsync(this.networkId, shouldPollUserAddress, shouldUseLedgerProvider); } private _startWatchingGasPrice(): void { - if (!_.isUndefined(this._watchGasPriceIntervalId)) { + if (this._watchGasPriceIntervalId !== undefined) { return; // we are already watching } const oneMinuteInMs = 60000; @@ -844,7 +845,7 @@ export class Blockchain { ); } private _stopWatchingGasPrice(): void { - if (!_.isUndefined(this._watchGasPriceIntervalId)) { + if (this._watchGasPriceIntervalId !== undefined) { intervalUtils.clearAsyncExcludingInterval(this._watchGasPriceIntervalId); } } @@ -866,18 +867,18 @@ export class Blockchain { ); this._web3Wrapper = new Web3Wrapper(provider); this.networkId = await this._web3Wrapper.getNetworkIdAsync(); - if (!_.isUndefined(this._contractWrappers)) { + if (this._contractWrappers !== undefined) { this._contractWrappers.unsubscribeAll(); } const contractWrappersConfig = { networkId, }; this._contractWrappers = new ContractWrappers(provider, contractWrappersConfig); - if (!_.isUndefined(this._blockchainWatcher)) { + if (this._blockchainWatcher !== undefined) { this._blockchainWatcher.destroy(); } this._blockchainWatcher = new BlockchainWatcher(this._dispatcher, this._web3Wrapper, shouldPollUserAddress); - if (shouldUserLedgerProvider && !_.isUndefined(ledgerSubproviderIfExists)) { + if (shouldUserLedgerProvider && ledgerSubproviderIfExists !== undefined) { delete this._userAddressIfExists; this._ledgerSubprovider = ledgerSubproviderIfExists; this._dispatcher.updateUserAddress(undefined); @@ -887,7 +888,7 @@ export class Blockchain { const userAddresses = await this._web3Wrapper.getAvailableAddressesAsync(); this._userAddressIfExists = userAddresses[0]; this._dispatcher.updateUserAddress(this._userAddressIfExists); - if (!_.isUndefined(injectedProviderIfExists)) { + if (injectedProviderIfExists !== undefined) { this._dispatcher.updateProviderType(ProviderType.Injected); } await this.fetchTokenInformationAsync(); @@ -897,7 +898,7 @@ export class Blockchain { await this._rehydrateStoreWithContractEventsAsync(); } private _updateProviderName(injectedProviderIfExists?: InjectedProvider): void { - const doesInjectedProviderExist = !_.isUndefined(injectedProviderIfExists); + const doesInjectedProviderExist = injectedProviderIfExists !== undefined; const providerName = doesInjectedProviderExist ? Blockchain._getNameGivenProvider(injectedProviderIfExists) : constants.PROVIDER_NAME_PUBLIC; @@ -910,13 +911,13 @@ export class Blockchain { const artifactNetworkConfigs = artifact.networks[this.networkId]; let contractAddress; - if (!_.isUndefined(address)) { + if (address !== undefined) { contractAddress = address; - } else if (!_.isUndefined(artifactNetworkConfigs)) { + } else if (artifactNetworkConfigs !== undefined) { contractAddress = artifactNetworkConfigs.address; } - if (!_.isUndefined(contractAddress)) { + if (contractAddress !== undefined) { const doesContractExist = await this.doesContractExistAtAddressAsync(contractAddress); if (!doesContractExist) { logUtils.log(`Contract does not exist: ${artifact.contract_name} at ${contractAddress}`); @@ -925,7 +926,7 @@ export class Blockchain { } try { - const contractInstance = _.isUndefined(address) ? await c.deployed() : await c.at(address); + const contractInstance = address === undefined ? await c.deployed() : await c.at(address); return contractInstance; } catch (err) { const errMsg = `${err}`; @@ -939,7 +940,7 @@ export class Blockchain { } } private _showFlashMessageIfLedger(): void { - if (!_.isUndefined(this._ledgerSubprovider)) { + if (this._ledgerSubprovider !== undefined) { this._dispatcher.showFlashMessage('Confirm the transaction on your Ledger Nano S'); } } diff --git a/packages/website/ts/blockchain_watcher.ts b/packages/website/ts/blockchain_watcher.ts index 835932dcd7..eebad1368b 100644 --- a/packages/website/ts/blockchain_watcher.ts +++ b/packages/website/ts/blockchain_watcher.ts @@ -20,7 +20,7 @@ export class BlockchainWatcher { this._stopEmittingUserBalanceState(); // HACK: stop() is only available on providerEngine instances const provider = this._web3Wrapper.getProvider(); - if (!_.isUndefined((provider as any).stop)) { + if ((provider as any).stop !== undefined) { (provider as any).stop(); } } @@ -29,7 +29,7 @@ export class BlockchainWatcher { this._prevUserAddressIfExists = userAddress; } public async startEmittingUserBalanceStateAsync(): Promise { - if (!_.isUndefined(this._watchBalanceIntervalId)) { + if (this._watchBalanceIntervalId !== undefined) { return; // we are already emitting the state } this._prevUserEtherBalanceInWei = undefined; @@ -60,26 +60,26 @@ export class BlockchainWatcher { } // Check for user ether balance changes - if (!_.isUndefined(userAddressIfExists)) { + if (userAddressIfExists !== undefined) { await this._updateUserWeiBalanceAsync(userAddressIfExists); } } else { // This logic is primarily for the Ledger, since we don't regularly poll for the address // we simply update the balance for the last fetched address. - if (!_.isUndefined(this._prevUserAddressIfExists)) { + if (this._prevUserAddressIfExists !== undefined) { await this._updateUserWeiBalanceAsync(this._prevUserAddressIfExists); } } } private async _updateUserWeiBalanceAsync(userAddress: string): Promise { const balanceInWei = await this._web3Wrapper.getBalanceInWeiAsync(userAddress); - if (_.isUndefined(this._prevUserEtherBalanceInWei) || !balanceInWei.eq(this._prevUserEtherBalanceInWei)) { + if (this._prevUserEtherBalanceInWei === undefined || !balanceInWei.eq(this._prevUserEtherBalanceInWei)) { this._prevUserEtherBalanceInWei = balanceInWei; this._dispatcher.updateUserWeiBalance(balanceInWei); } } private _stopEmittingUserBalanceState(): void { - if (!_.isUndefined(this._watchBalanceIntervalId)) { + if (this._watchBalanceIntervalId !== undefined) { intervalUtils.clearAsyncExcludingInterval(this._watchBalanceIntervalId); } } diff --git a/packages/website/ts/components/aboutPageLayout.tsx b/packages/website/ts/components/aboutPageLayout.tsx index bf1ede6fc0..6825268246 100644 --- a/packages/website/ts/components/aboutPageLayout.tsx +++ b/packages/website/ts/components/aboutPageLayout.tsx @@ -40,7 +40,7 @@ export const AboutPageLayout = (props: Props) => ( diff --git a/packages/website/ts/components/card.tsx b/packages/website/ts/components/card.tsx index ff3577c235..8d80177aa4 100644 --- a/packages/website/ts/components/card.tsx +++ b/packages/website/ts/components/card.tsx @@ -38,7 +38,7 @@ export const Card: React.StatelessComponent = (props: CardProps) => { {_.map(links, (link, index) => (
)}
- {!_.isUndefined(this.state.parsedOrder) && + {this.state.parsedOrder !== undefined && this.state.didOrderValidationRun && this.state.areAllInvolvedTokensTracked && this._renderVisualOrder()} @@ -173,7 +173,7 @@ export class FillOrder extends React.Component { private _renderOrderJsonNotices(): React.ReactNode { return (
- {!_.isUndefined(this.props.initialOrder) && !this.state.didOrderValidationRun && ( + {this.props.initialOrder !== undefined && !this.state.didOrderValidationRun && (
@@ -215,7 +215,7 @@ export class FillOrder extends React.Component { const parsedOrderExpiration = this.state.parsedOrder.signedOrder.expirationTimeSeconds; let orderReceiveAmount = 0; - if (!_.isUndefined(this.props.orderFillAmount)) { + if (this.props.orderFillAmount !== undefined) { const orderReceiveAmountBigNumber = orderMakerAmount .times(this.props.orderFillAmount) .dividedBy(orderTakerAmount) @@ -223,7 +223,7 @@ export class FillOrder extends React.Component { orderReceiveAmount = this._formatCurrencyAmount(orderReceiveAmountBigNumber, makerToken.decimals); } const isUserMaker = - !_.isUndefined(this.state.parsedOrder) && + this.state.parsedOrder !== undefined && this.state.parsedOrder.signedOrder.makerAddress === this.props.userAddress; const expiryDate = utils.convertToReadableDateTimeFromUnixTimestamp(parsedOrderExpiration); return ( @@ -376,8 +376,8 @@ export class FillOrder extends React.Component { const makerTokenIfExists = this.props.tokenByAddress[makerTokenAddress]; const takerTokenIfExists = this.props.tokenByAddress[takerTokenAddress]; const tokensToTrack: Token[] = []; - const isUnseenMakerToken = _.isUndefined(makerTokenIfExists); - const isMakerTokenTracked = !_.isUndefined(makerTokenIfExists) && utils.isTokenTracked(makerTokenIfExists); + const isUnseenMakerToken = makerTokenIfExists === undefined; + const isMakerTokenTracked = makerTokenIfExists !== undefined && utils.isTokenTracked(makerTokenIfExists); if (isUnseenMakerToken) { tokensToTrack.push({ ...this.state.parsedOrder.metadata.makerToken, @@ -389,8 +389,8 @@ export class FillOrder extends React.Component { } else if (!isMakerTokenTracked) { tokensToTrack.push(makerTokenIfExists); } - const isUnseenTakerToken = _.isUndefined(takerTokenIfExists); - const isTakerTokenTracked = !_.isUndefined(takerTokenIfExists) && utils.isTokenTracked(takerTokenIfExists); + const isUnseenTakerToken = takerTokenIfExists === undefined; + const isTakerTokenTracked = takerTokenIfExists !== undefined && utils.isTokenTracked(takerTokenIfExists); if (isUnseenTakerToken) { tokensToTrack.push({ ...this.state.parsedOrder.metadata.takerToken, @@ -512,7 +512,7 @@ export class FillOrder extends React.Component { const parsedOrder = this.state.parsedOrder; const takerFillAmount = this.props.orderFillAmount; - if (_.isUndefined(this.props.userAddress)) { + if (this.props.userAddress === undefined) { this.props.dispatcher.updateShouldBlockchainErrDialogBeOpen(true); this.setState({ isFilling: false, @@ -521,7 +521,7 @@ export class FillOrder extends React.Component { } let globalErrMsg = ''; - if (_.isUndefined(takerFillAmount)) { + if (takerFillAmount === undefined) { globalErrMsg = 'You must specify a fill amount'; } @@ -591,7 +591,7 @@ export class FillOrder extends React.Component { const parsedOrder = this.state.parsedOrder; const takerAddress = this.props.userAddress; - if (_.isUndefined(takerAddress)) { + if (takerAddress === undefined) { this.props.dispatcher.updateShouldBlockchainErrDialogBeOpen(true); this.setState({ isFilling: false, diff --git a/packages/website/ts/components/flash_messages/asset_send_completed.tsx b/packages/website/ts/components/flash_messages/asset_send_completed.tsx index b895126dcd..3c2c0d69d2 100644 --- a/packages/website/ts/components/flash_messages/asset_send_completed.tsx +++ b/packages/website/ts/components/flash_messages/asset_send_completed.tsx @@ -17,7 +17,7 @@ interface AssetSendCompletedState {} export class AssetSendCompleted extends React.Component { public render(): React.ReactNode { - const etherScanLink = !_.isUndefined(this.props.etherScanLinkIfExists) && ( + const etherScanLink = this.props.etherScanLinkIfExists !== undefined && ( Verify on Etherscan diff --git a/packages/website/ts/components/flash_messages/transaction_submitted.tsx b/packages/website/ts/components/flash_messages/transaction_submitted.tsx index b1d909baa1..a8a234f8c3 100644 --- a/packages/website/ts/components/flash_messages/transaction_submitted.tsx +++ b/packages/website/ts/components/flash_messages/transaction_submitted.tsx @@ -10,7 +10,7 @@ interface TransactionSubmittedState {} export class TransactionSubmitted extends React.Component { public render(): React.ReactNode { - if (_.isUndefined(this.props.etherScanLinkIfExists)) { + if (this.props.etherScanLinkIfExists === undefined) { return
Transaction submitted to the network
; } else { return ( diff --git a/packages/website/ts/components/generate_order/asset_picker.tsx b/packages/website/ts/components/generate_order/asset_picker.tsx index d3f11f9620..ac85400ea0 100644 --- a/packages/website/ts/components/generate_order/asset_picker.tsx +++ b/packages/website/ts/components/generate_order/asset_picker.tsx @@ -267,7 +267,7 @@ export class AssetPicker extends React.Component { - + Trade on 0x @@ -117,13 +117,14 @@ export const Header = withTheme(HeaderBase); const NavItem = (props: { link: NavItemProps; key: string }) => { const { link } = props; const Subnav = link.dropdownComponent; - const linkElement = _.isUndefined(link.url) ? ( - {link.text} - ) : ( - - {link.text} - - ); + const linkElement = + link.url === undefined ? ( + {link.text} + ) : ( + + {link.text} + + ); return ( {linkElement} diff --git a/packages/website/ts/components/inputs/address_input.tsx b/packages/website/ts/components/inputs/address_input.tsx index 1a71f80817..8bf85a8506 100644 --- a/packages/website/ts/components/inputs/address_input.tsx +++ b/packages/website/ts/components/inputs/address_input.tsx @@ -44,7 +44,7 @@ export class AddressInput extends React.Component ; } return ( @@ -102,7 +102,7 @@ export class BalanceBoundedInput extends React.Component { - const isValid = _.isUndefined(this._validate(amountString, this.props.balance)); + const isValid = this._validate(amountString, this.props.balance) === undefined; const isPositiveNumber = utils.isNumeric(amountString) && !_.includes(amountString, '-'); if (isPositiveNumber) { this.props.onChange(isValid, new BigNumber(amountString)); @@ -122,7 +122,7 @@ export class BalanceBoundedInput extends React.ComponentInsufficient balance.; } - const errMsg = _.isUndefined(this.props.validate) ? undefined : this.props.validate(amount); + const errMsg = this.props.validate === undefined ? undefined : this.props.validate(amount); return errMsg; } private _setAmountState(amount: string, balance: BigNumber, callback: () => void = _.noop.bind(_)): void { diff --git a/packages/website/ts/components/inputs/eth_amount_input.tsx b/packages/website/ts/components/inputs/eth_amount_input.tsx index 6799e54bf0..f9890e200c 100644 --- a/packages/website/ts/components/inputs/eth_amount_input.tsx +++ b/packages/website/ts/components/inputs/eth_amount_input.tsx @@ -54,12 +54,11 @@ export class EthAmountInput extends React.Component { className="text-decoration-none" >
- {!_.isUndefined(iconIfExists) ? ( + {iconIfExists !== undefined ? (
{this._renderIcon(iconIfExists)}
{link.title}
diff --git a/packages/website/ts/components/onboarding/onboarding_card.tsx b/packages/website/ts/components/onboarding/onboarding_card.tsx index 384bf71540..56330c3e7c 100644 --- a/packages/website/ts/components/onboarding/onboarding_card.tsx +++ b/packages/website/ts/components/onboarding/onboarding_card.tsx @@ -74,7 +74,7 @@ export const OnboardingCard: React.StatelessComponent = ({ {continueButtonDisplay && (
- {!_.isUndefined(weeklyTxnVolume) && ( + {weeklyTxnVolume !== undefined && (
{props.relayerInfo.weeklyTxnVolume}
)}
diff --git a/packages/website/ts/components/relayer_index/relayer_index.tsx b/packages/website/ts/components/relayer_index/relayer_index.tsx index e88c20d7e9..e607388b0c 100644 --- a/packages/website/ts/components/relayer_index/relayer_index.tsx +++ b/packages/website/ts/components/relayer_index/relayer_index.tsx @@ -49,13 +49,13 @@ export class RelayerIndex extends React.Component - {_.isUndefined(this.state.error) ? ( + {this.state.error === undefined ? ( ) : ( diff --git a/packages/website/ts/components/token_balances.tsx b/packages/website/ts/components/token_balances.tsx index e8f2a64615..37272e4fe2 100644 --- a/packages/website/ts/components/token_balances.tsx +++ b/packages/website/ts/components/token_balances.tsx @@ -289,7 +289,7 @@ export class TokenBalances extends React.Component {this._renderErrorDialogBody()} @@ -342,7 +342,7 @@ export class TokenBalances extends React.Component - {_.isUndefined(tokenLink) ? ( + {tokenLink === undefined ? ( this._renderTokenName(token) ) : ( diff --git a/packages/website/ts/components/top_bar/provider_display.tsx b/packages/website/ts/components/top_bar/provider_display.tsx index c88c29b8e0..02b853a3f5 100644 --- a/packages/website/ts/components/top_bar/provider_display.tsx +++ b/packages/website/ts/components/top_bar/provider_display.tsx @@ -141,7 +141,7 @@ export class ProviderDisplay extends React.Component{this.props.title} ) : ( diff --git a/packages/website/ts/components/trade_history/trade_history.tsx b/packages/website/ts/components/trade_history/trade_history.tsx index 84c0f70a82..cf8c1e0036 100644 --- a/packages/website/ts/components/trade_history/trade_history.tsx +++ b/packages/website/ts/components/trade_history/trade_history.tsx @@ -104,7 +104,7 @@ export class TradeHistory extends React.Component { const transactionTooltipId = `${props.addressOrTxHash}-etherscan-icon-tooltip`; return (
- {!_.isUndefined(etherscanLinkIfExists) ? ( + {etherscanLinkIfExists !== undefined ? ( {renderIcon()} diff --git a/packages/website/ts/components/ui/flash_message.tsx b/packages/website/ts/components/ui/flash_message.tsx index 2b866676df..4b4b731299 100644 --- a/packages/website/ts/components/ui/flash_message.tsx +++ b/packages/website/ts/components/ui/flash_message.tsx @@ -20,7 +20,7 @@ export class FlashMessage extends React.Component { } public render(): React.ReactNode { const src = - this.state.imageLoadFailed || _.isUndefined(this.props.src) ? this.props.fallbackSrc : this.props.src; + this.state.imageLoadFailed || this.props.src === undefined ? this.props.fallbackSrc : this.props.src; return ( { renderItemContent={item.renderItemContent} backgroundColor={backgroundColor} onClick={item.onClick} - isSelected={_.isUndefined(selectedValues) || _.includes(selectedValues, item.value)} + isSelected={selectedValues === undefined || _.includes(selectedValues, item.value)} /> ))} diff --git a/packages/website/ts/components/ui/party.tsx b/packages/website/ts/components/ui/party.tsx index a14b94d8ae..4090634178 100644 --- a/packages/website/ts/components/ui/party.tsx +++ b/packages/website/ts/components/ui/party.tsx @@ -56,7 +56,7 @@ export class Party extends React.Component {
) : ( - {isRegistered && !_.isUndefined(this.props.alternativeImage) ? ( + {isRegistered && this.props.alternativeImage !== undefined ? ( ) : (
@@ -73,7 +73,7 @@ export class Party extends React.Component {
- {!_.isUndefined(this.props.isInTokenRegistry) && ( + {this.props.isInTokenRegistry !== undefined && (
{
)} - {!_.isUndefined(this.props.hasUniqueNameAndSymbol) && !this.props.hasUniqueNameAndSymbol && ( + {this.props.hasUniqueNameAndSymbol !== undefined && !this.props.hasUniqueNameAndSymbol && (
{ const token = this.props.token; const diameter = this.props.diameter; const icon = - token.isRegistered && !_.isUndefined(token.iconUrl) ? ( + token.isRegistered && token.iconUrl !== undefined ? ( ) : ( diff --git a/packages/website/ts/components/wallet/body_overlay.tsx b/packages/website/ts/components/wallet/body_overlay.tsx index 3795f0eaa3..3d14413ab5 100644 --- a/packages/website/ts/components/wallet/body_overlay.tsx +++ b/packages/website/ts/components/wallet/body_overlay.tsx @@ -42,7 +42,7 @@ export class BodyOverlay extends React.Component { // check if there is only one different token, and if that token is a member of the current tracked tokens // this means that the token was added, not removed if ( - !_.isUndefined(firstDifferentTrackedToken) && + firstDifferentTrackedToken !== undefined && _.size(differentTrackedTokens) === 1 && _.includes(currentTrackedTokens, firstDifferentTrackedToken) ) { @@ -293,7 +293,7 @@ export class Wallet extends React.Component { this.props.userEtherBalanceInWei || new BigNumber(0), constants.DECIMAL_PLACES_ETH, constants.ETHER_SYMBOL, - _.isUndefined(this.props.userEtherBalanceInWei), + this.props.userEtherBalanceInWei === undefined, ); const etherToken = this._getEthToken(); const etherTokenState = this.props.trackedTokenStateByAddress[etherToken.address]; @@ -302,7 +302,7 @@ export class Wallet extends React.Component { this.props.userEtherBalanceInWei || new BigNumber(0), constants.DECIMAL_PLACES_ETH, etherPrice, - _.isUndefined(this.props.userEtherBalanceInWei) || !etherTokenState.isLoaded, + this.props.userEtherBalanceInWei === undefined || !etherTokenState.isLoaded, ); const accessoryItemConfig = { wrappedEtherDirection: Side.Deposit, @@ -321,7 +321,7 @@ export class Wallet extends React.Component { } private _renderTokenRow(token: Token): React.ReactNode { const tokenState = this.props.trackedTokenStateByAddress[token.address]; - if (_.isUndefined(tokenState)) { + if (tokenState === undefined) { return null; } const tokenLink = sharedUtils.getEtherScanLinkIfExists( @@ -358,9 +358,9 @@ export class Wallet extends React.Component { className?: string, ): React.ReactNode { const shouldShowWrapEtherItem = - !_.isUndefined(this.state.wrappedEtherDirection) && + this.state.wrappedEtherDirection !== undefined && this.state.wrappedEtherDirection === accessoryItemConfig.wrappedEtherDirection && - !_.isUndefined(this.props.userEtherBalanceInWei); + this.props.userEtherBalanceInWei !== undefined; const etherToken = this._getEthToken(); const wrapEtherItem = shouldShowWrapEtherItem ? ( { ); } private _renderAccessoryItems(config: AccessoryItemConfig): React.ReactElement<{}> { - const shouldShowWrappedEtherAction = !_.isUndefined(config.wrappedEtherDirection); - const shouldShowToggle = !_.isUndefined(config.allowanceStateToggleConfig); + const shouldShowWrappedEtherAction = config.wrappedEtherDirection !== undefined; + const shouldShowToggle = config.allowanceStateToggleConfig !== undefined; // if we don't have a toggle, we still want some space to the right of the "wrap" button so that it aligns with // the "unwrap" button in the row below const isWrapEtherRow = shouldShowWrappedEtherAction && config.wrappedEtherDirection === Side.Deposit; @@ -452,7 +452,7 @@ export class Wallet extends React.Component { isLoading: boolean = false, ): React.ReactNode { const result = !isLoading - ? _.isUndefined(price) + ? price === undefined ? '--' : utils.getUsdValueFormattedAmount(amount, decimals, price) : '$0.00'; @@ -512,7 +512,7 @@ export class Wallet extends React.Component { return utils.getEthToken(this.props.tokenByAddress); } private _isBlockchainReady(): boolean { - return this.props.blockchainIsLoaded && !_.isUndefined(this.props.blockchain); + return this.props.blockchainIsLoaded && this.props.blockchain !== undefined; } private _getAccountState(): AccountState { return utils.getAccountState( diff --git a/packages/website/ts/containers/portal.ts b/packages/website/ts/containers/portal.ts index db41a3ec35..e0e62db230 100644 --- a/packages/website/ts/containers/portal.ts +++ b/packages/website/ts/containers/portal.ts @@ -39,14 +39,10 @@ interface ConnectedDispatch { const mapStateToProps = (state: State, _ownProps: PortalComponentProps): ConnectedState => { const receiveAssetToken = state.sideToAssetToken[Side.Receive]; const depositAssetToken = state.sideToAssetToken[Side.Deposit]; - const receiveAddress = !_.isUndefined(receiveAssetToken.address) - ? receiveAssetToken.address - : constants.NULL_ADDRESS; - const depositAddress = !_.isUndefined(depositAssetToken.address) - ? depositAssetToken.address - : constants.NULL_ADDRESS; - const receiveAmount = !_.isUndefined(receiveAssetToken.amount) ? receiveAssetToken.amount : new BigNumber(0); - const depositAmount = !_.isUndefined(depositAssetToken.amount) ? depositAssetToken.amount : new BigNumber(0); + const receiveAddress = receiveAssetToken.address !== undefined ? receiveAssetToken.address : constants.NULL_ADDRESS; + const depositAddress = depositAssetToken.address !== undefined ? depositAssetToken.address : constants.NULL_ADDRESS; + const receiveAmount = receiveAssetToken.amount !== undefined ? receiveAssetToken.amount : new BigNumber(0); + const depositAmount = depositAssetToken.amount !== undefined ? depositAssetToken.amount : new BigNumber(0); const hashData = { depositAmount, depositTokenContractAddr: depositAddress, diff --git a/packages/website/ts/lazy_component.tsx b/packages/website/ts/lazy_component.tsx index 9d3b9944a6..48fd63117b 100644 --- a/packages/website/ts/lazy_component.tsx +++ b/packages/website/ts/lazy_component.tsx @@ -32,7 +32,7 @@ export class LazyComponent extends React.Component Pro const reactComponentPromise = (async (): Promise> => { const mod = await lazyImport(); const component = mod[componentName]; - if (_.isUndefined(component)) { + if (component === undefined) { throw new Error(`Did not find exported component: ${componentName}`); } return component; diff --git a/packages/website/ts/local_storage/local_storage.ts b/packages/website/ts/local_storage/local_storage.ts index 13d9ca401d..52f3daf17b 100644 --- a/packages/website/ts/local_storage/local_storage.ts +++ b/packages/website/ts/local_storage/local_storage.ts @@ -9,13 +9,13 @@ export const localStorage = { return undefined; } const item = window.localStorage.getItem(key); - if (_.isNull(item) || item === 'undefined') { + if (item === null || item === 'undefined') { return ''; } return item; }, setItem(key: string, value: string): void { - if (!localStorage.doesExist || _.isUndefined(value)) { + if (!localStorage.doesExist || value === undefined) { return; } window.localStorage.setItem(key, value); diff --git a/packages/website/ts/local_storage/tracked_token_storage.ts b/packages/website/ts/local_storage/tracked_token_storage.ts index b1b579aef8..113fe485b5 100644 --- a/packages/website/ts/local_storage/tracked_token_storage.ts +++ b/packages/website/ts/local_storage/tracked_token_storage.ts @@ -19,12 +19,11 @@ export const trackedTokenStorage = { addTrackedTokenToUser(userAddress: string, networkId: number, token: Token): void { const trackedTokensByUserAddress = trackedTokenStorage.getTrackedTokensByUserAddress(); let trackedTokensByNetworkId = trackedTokensByUserAddress[userAddress]; - if (_.isUndefined(trackedTokensByNetworkId)) { + if (trackedTokensByNetworkId === undefined) { trackedTokensByNetworkId = {}; } - const trackedTokens = !_.isUndefined(trackedTokensByNetworkId[networkId]) - ? trackedTokensByNetworkId[networkId] - : []; + const trackedTokens = + trackedTokensByNetworkId[networkId] !== undefined ? trackedTokensByNetworkId[networkId] : []; trackedTokens.push(token); trackedTokensByNetworkId[networkId] = trackedTokens; trackedTokensByUserAddress[userAddress] = trackedTokensByNetworkId; @@ -47,7 +46,7 @@ export const trackedTokenStorage = { } const trackedTokensByUserAddress = JSON.parse(trackedTokensJSONString); const trackedTokensByNetworkId = trackedTokensByUserAddress[userAddress]; - if (_.isUndefined(trackedTokensByNetworkId)) { + if (trackedTokensByNetworkId === undefined) { return trackedTokensByAddress; } const trackedTokens = trackedTokensByNetworkId[networkId]; diff --git a/packages/website/ts/local_storage/trade_history_storage.tsx b/packages/website/ts/local_storage/trade_history_storage.tsx index ef6a0a1aad..edae271686 100644 --- a/packages/website/ts/local_storage/trade_history_storage.tsx +++ b/packages/website/ts/local_storage/trade_history_storage.tsx @@ -29,7 +29,7 @@ export const tradeHistoryStorage = { addFillToUser(userAddress: string, networkId: number, fill: Fill): void { const fillsByHash = tradeHistoryStorage.getUserFillsByHash(userAddress, networkId); const fillHash = tradeHistoryStorage._getFillHash(fill); - const doesFillExist = !_.isUndefined(fillsByHash[fillHash]); + const doesFillExist = fillsByHash[fillHash] !== undefined; if (doesFillExist) { return; // noop } @@ -41,7 +41,7 @@ export const tradeHistoryStorage = { removeFillFromUser(userAddress: string, networkId: number, fill: Fill): void { const fillsByHash = tradeHistoryStorage.getUserFillsByHash(userAddress, networkId); const fillHash = tradeHistoryStorage._getFillHash(fill); - const doesFillExist = !_.isUndefined(fillsByHash[fillHash]); + const doesFillExist = fillsByHash[fillHash] !== undefined; if (!doesFillExist) { return; // noop } diff --git a/packages/website/ts/pages/about/team.tsx b/packages/website/ts/pages/about/team.tsx index 371e947371..99d3c07467 100644 --- a/packages/website/ts/pages/about/team.tsx +++ b/packages/website/ts/pages/about/team.tsx @@ -21,7 +21,7 @@ const team: TeamMember[] = [ { imageUrl: '/images/team/willw.jpg', name: 'Will Warren', - title: 'co-founder & CEO', + title: 'Co-founder & CEO', }, { imageUrl: '/images/team/amirb.jpg', @@ -31,142 +31,147 @@ const team: TeamMember[] = [ { imageUrl: '/images/team/fabiob.jpg', name: 'Fabio Berger', - title: 'engineering manager', + title: 'Engineering Manager', }, { imageUrl: '/images/team/alexv.jpg', name: 'Alex Xu', - title: 'Director of operations', + title: 'Director of Operations', }, { - imageUrl: '/images/team/leonidL.jpg', + imageUrl: '/images/team/leol.jpg', name: 'Leonid Logvinov', - title: 'engineer', + title: 'Engineer', }, { imageUrl: '/images/team/benb.jpg', name: 'Ben Burns', - title: 'designer', + title: 'Designer', }, { imageUrl: '/images/team/brandonm.jpg', name: 'Brandon Millman', - title: 'senior engineer', + title: 'Senior Engineer', }, { imageUrl: '/images/team/toms.jpg', name: 'Tom Schmidt', - title: 'product lead', + title: 'Product Lead', }, { imageUrl: '/images/team/jacobe.jpg', name: 'Jacob Evans', - title: 'ecosystem engineer', + title: 'Ecosystem Engineer', }, { imageUrl: '/images/team/blake.jpg', name: 'Blake Henderson', - title: 'ecosystem programs lead', + title: 'Ecosystem Programs Lead', }, { imageUrl: '/images/team/zack.jpg', name: 'Zack Skelly', - title: 'lead recruiter', + title: 'Lead Recruiter', }, { imageUrl: '/images/team/greg.jpg', name: 'Greg Hysen', - title: 'blockchain engineer', + title: 'Blockchain Engineer', }, { imageUrl: '/images/team/remcoB.jpg', name: 'Remco Bloemen', - title: 'technical fellow', + title: 'Technical Fellow', }, { imageUrl: '/images/team/francesco.jpg', name: 'Francesco Agosti', - title: 'engineer', + title: 'Engineer', }, { imageUrl: '/images/team/melo.jpg', name: 'Mel Oberto', - title: 'people operations specialist', - }, - { - imageUrl: '/images/team/alexb.jpg', - name: 'Alex Browne', - title: 'senior engineer', - }, - { - imageUrl: '/images/team/peterz.jpg', - name: 'Peter Zeitz', - title: 'research fellow', + title: 'People Operations Specialist', }, { imageUrl: '/images/team/chrisk.jpg', name: 'Chris Kalani', - title: 'director of design', + title: 'Director of Design', + }, + { + imageUrl: '/images/team/alexb.jpg', + name: 'Alex Browne', + title: 'Senior Engineer', + }, + { + imageUrl: '/images/team/peterz.jpg', + name: 'Peter Zeitz', + title: 'Research Fellow', }, { imageUrl: '/images/team/clayr.jpg', name: 'Clay Robbins', - title: 'ecosystem development lead', + title: 'Ecosystem Development Lead', }, { imageUrl: '/images/team/mattt.jpg', name: 'Matt Taylor', - title: 'marketing lead', + title: 'Marketing Lead', }, { imageUrl: '/images/team/eugenea.jpg', name: 'Eugene Aumson', - title: 'engineer', + title: 'Engineer', }, { imageUrl: '/images/team/weijew.jpg', name: 'Weijie Wu', - title: 'research fellow', + title: 'Research Fellow', }, { imageUrl: '/images/team/rahuls.jpg', name: 'Rahul Singireddy', - title: 'relayer success manager', + title: 'Relayer Success Manager', }, { imageUrl: '/images/team/jasons.jpg', name: 'Jason Somensatto', - title: 'strategic legal counsel', + title: 'Strategic Legal Counsel', }, { - imageUrl: '/images/team/steveK.jpg', + imageUrl: '/images/team/steve.jpg', name: 'Steve Klebanoff', - title: 'senior engineer', + title: 'Senior Engineer', }, { - imageUrl: '/images/team/xianny.jpg', + imageUrl: '/images/team/xiannyn.jpg', name: 'Xianny Ng', - title: 'engineer', + title: 'Engineer', }, { - imageUrl: '/images/team/oshirob.png', + imageUrl: '/images/team/brento.jpg', name: 'Brent Oshiro', - title: 'community engagement lead', + title: 'Community Engagement Lead', }, { imageUrl: '/images/team/marcs.jpg', name: 'Marc Savino', - title: 'technical sourcer', + title: 'Technical Sourcer', }, { imageUrl: '/images/team/danielp.png', name: 'Daniel Pyrathon', - title: 'engineer', + title: 'Engineer', }, { imageUrl: '/images/team/lawrencef.jpg', name: 'Lawrence Forman', - title: 'engineer', + title: 'Engineer', + }, + { + imageUrl: '/images/team/paulv.jpg', + name: 'Paul Vienhage', + title: 'Research Engineer', }, ]; @@ -254,7 +259,7 @@ const Member = ({ name, title, imageUrl }: TeamMember) => ( {name} {name} - + {title} diff --git a/packages/website/ts/pages/documentation/doc_page.tsx b/packages/website/ts/pages/documentation/doc_page.tsx index 14bad7329a..7430f7fb10 100644 --- a/packages/website/ts/pages/documentation/doc_page.tsx +++ b/packages/website/ts/pages/documentation/doc_page.tsx @@ -80,29 +80,32 @@ export class DocPage extends React.Component { } public render(): React.ReactNode { const sourceUrl = this._getSourceUrl(); - const sectionNameToLinks = _.isUndefined(this.state.docAgnosticFormat) - ? {} - : this.props.docsInfo.getSectionNameToLinks(this.state.docAgnosticFormat); - const mainContent = _.isUndefined(this.state.docAgnosticFormat) ? ( -
{this._renderLoading()}
- ) : ( - - ); - const sidebar = _.isUndefined(this.state.docAgnosticFormat) ? ( -
- ) : ( - - ); + const sectionNameToLinks = + this.state.docAgnosticFormat === undefined + ? {} + : this.props.docsInfo.getSectionNameToLinks(this.state.docAgnosticFormat); + const mainContent = + this.state.docAgnosticFormat === undefined ? ( +
{this._renderLoading()}
+ ) : ( + + ); + const sidebar = + this.state.docAgnosticFormat === undefined ? ( +
+ ) : ( + + ); return ( { const latestVersion = sortedVersions[0]; let versionToFetch = latestVersion; - if (!_.isUndefined(preferredVersionIfExists)) { + if (preferredVersionIfExists !== undefined) { const preferredVersionFileNameIfExists = versionToFilePath[preferredVersionIfExists]; - if (!_.isUndefined(preferredVersionFileNameIfExists)) { + if (preferredVersionFileNameIfExists !== undefined) { versionToFetch = preferredVersionIfExists; } } diff --git a/packages/website/ts/pages/explore.tsx b/packages/website/ts/pages/explore.tsx index 9d8eabbc27..d667429815 100644 --- a/packages/website/ts/pages/explore.tsx +++ b/packages/website/ts/pages/explore.tsx @@ -8,6 +8,7 @@ import { Section } from 'ts/components/newLayout'; import { SiteWrap } from 'ts/components/siteWrap'; import { Heading } from 'ts/components/text'; import { Input as SearchInput } from 'ts/components/ui/search_textfield'; +import { addFadeInAnimation } from 'ts/constants/animations'; import { EDITORIAL, FILTERS, ORDERINGS, PROJECTS } from 'ts/pages/explore/explore_content'; import { ExploreSettingsDropdown } from 'ts/pages/explore/explore_dropdown'; import { ExploreGrid } from 'ts/pages/explore/explore_grid'; @@ -294,6 +295,7 @@ const ExploreHeroContentWrapper = styled.div` align-items: center; justify-content: space-between; padding: 100px 0; + ${addFadeInAnimation('0.5s')} @media (max-width: 36rem) { display: block; padding: 50px 0; @@ -338,6 +340,9 @@ const ExploreHero = (props: ExploreHeroProps) => { const ExploreToolBarWrapper = styled.div` display: flex; justify-content: space-between; + z-index: 1; + position: relative; + ${addFadeInAnimation('0.5s', '0.15s')} @media (max-width: 36rem) { display: block; } diff --git a/packages/website/ts/pages/explore/explore_grid.tsx b/packages/website/ts/pages/explore/explore_grid.tsx index 7121c39c4c..d0ec8e6204 100644 --- a/packages/website/ts/pages/explore/explore_grid.tsx +++ b/packages/website/ts/pages/explore/explore_grid.tsx @@ -2,6 +2,7 @@ import * as _ from 'lodash'; import * as React from 'react'; import styled from 'styled-components'; +import { addFadeInAnimation } from 'ts/constants/animations'; import { ExploreGridTile } from 'ts/pages/explore/explore_grid_tile'; import { ExploreTile, ExploreTileGridWidth, ExploreTileVisibility, ExploreTileWidth } from 'ts/types'; @@ -123,6 +124,9 @@ const ExploreGridList = styled.div` grid-template-columns: repeat(${ExploreTileGridWidth.ThreeColumn}, 1fr); grid-column-gap: 1.5rem; grid-row-gap: 1.5rem; + z-index: 0; + position: relative; + ${addFadeInAnimation('0.5s', '0.25s')} & > * { align-self: stretch; } diff --git a/packages/website/ts/pages/governance/connect_form.tsx b/packages/website/ts/pages/governance/connect_form.tsx index 129224d07f..ac056a75ee 100644 --- a/packages/website/ts/pages/governance/connect_form.tsx +++ b/packages/website/ts/pages/governance/connect_form.tsx @@ -114,9 +114,8 @@ export class ConnectForm extends React.Component { errors: {}, userAddresses: [], addressBalances: [], - derivationPath: _.isUndefined(derivationPathIfExists) - ? configs.DEFAULT_DERIVATION_PATH - : derivationPathIfExists, + derivationPath: + derivationPathIfExists === undefined ? configs.DEFAULT_DERIVATION_PATH : derivationPathIfExists, derivationErrMsg: '', }; } @@ -151,7 +150,7 @@ export class ConnectForm extends React.Component { Connect Wallet Connect Ledger - {!_.isUndefined(errors.connectionError) && ( + {errors.connectionError !== undefined && ( {errors.connectionError} @@ -172,7 +171,7 @@ export class ConnectForm extends React.Component { networkId={this.networkId} onSelectAddress={this._onSelectAddressIndex.bind(this)} /> - {!_.isUndefined(errors.connectionError) && {errors.connectionError}} + {errors.connectionError !== undefined && {errors.connectionError}} { ); } public async getUserAccountsAsync(): Promise { - utils.assert(!_.isUndefined(this._contractWrappers), 'ContractWrappers must be instantiated.'); + utils.assert(this._contractWrappers !== undefined, 'ContractWrappers must be instantiated.'); const provider = this._contractWrappers.getProvider(); const web3Wrapper = new Web3Wrapper(provider); const userAccountsIfExists = await web3Wrapper.getAvailableAddressesAsync(); return userAccountsIfExists; } public getLedgerDerivationPathIfExists(): string | undefined { - if (_.isUndefined(this._ledgerSubprovider)) { + if (this._ledgerSubprovider === undefined) { return undefined; } const path = this._ledgerSubprovider.getPath(); return path; } public updateLedgerDerivationPathIfExists(path: string): void { - if (_.isUndefined(this._ledgerSubprovider)) { + if (this._ledgerSubprovider === undefined) { return; // noop } this._ledgerSubprovider.setPath(path); } public async getZrxBalanceAsync(owner: string): Promise { - utils.assert(!_.isUndefined(this._contractWrappers), 'ContractWrappers must be instantiated.'); + utils.assert(this._contractWrappers !== undefined, 'ContractWrappers must be instantiated.'); const contractAddresses = getContractAddressesForNetworkOrThrow(this.networkId); const tokenAddress: string = contractAddresses.zrxToken; try { @@ -232,7 +231,7 @@ export class ConnectForm extends React.Component { private async _onConnectWalletClickAsync(): Promise { const shouldUseLedgerProvider = false; const networkIdIfExists = await this._getInjectedProviderNetworkIdIfExistsAsync(); - this.networkId = !_.isUndefined(networkIdIfExists) ? networkIdIfExists : constants.NETWORK_ID_MAINNET; + this.networkId = networkIdIfExists !== undefined ? networkIdIfExists : constants.NETWORK_ID_MAINNET; await this._resetOrInitializeAsync(this.networkId, shouldUseLedgerProvider); @@ -340,7 +339,7 @@ export class ConnectForm extends React.Component { private async _updateSelectedAddressAsync(index: number): Promise { const { userAddresses, addressBalances, isLedgerConnected } = this.state; const injectedProviderIfExists = await this._getInjectedProviderIfExistsAsync(); - if (this.props.onWalletConnected && !_.isUndefined(userAddresses[index])) { + if (this.props.onWalletConnected && userAddresses[index] !== undefined) { const walletInfo: WalletConnectedProps = { contractWrappers: this._contractWrappers, injectedProviderIfExists, @@ -362,7 +361,7 @@ export class ConnectForm extends React.Component { private _getNameGivenProvider(provider: ZeroExProvider): string { const providerType = utils.getProviderType(provider); const providerNameIfExists = providerToName[providerType]; - if (_.isUndefined(providerNameIfExists)) { + if (providerNameIfExists === undefined) { return constants.PROVIDER_NAME_GENERIC; } return providerNameIfExists; @@ -374,10 +373,10 @@ export class ConnectForm extends React.Component { ): Promise<[ZeroExProvider, LedgerSubprovider | undefined]> { // This code is based off of the Blockchain.ts code. // TODO refactor to re-use this utility outside of Blockchain.ts - const doesInjectedProviderExist = !_.isUndefined(injectedProviderIfExists); - const isNetworkIdAvailable = !_.isUndefined(networkIdIfExists); + const doesInjectedProviderExist = injectedProviderIfExists !== undefined; + const isNetworkIdAvailable = networkIdIfExists !== undefined; const publicNodeUrlsIfExistsForNetworkId = configs.PUBLIC_NODE_URLS_BY_NETWORK_ID[networkIdIfExists]; - const isPublicNodeAvailableForNetworkId = !_.isUndefined(publicNodeUrlsIfExistsForNetworkId); + const isPublicNodeAvailableForNetworkId = publicNodeUrlsIfExistsForNetworkId !== undefined; const provider = new Web3ProviderEngine(); const rpcSubproviders = _.map(configs.PUBLIC_NODE_URLS_BY_NETWORK_ID[networkIdIfExists], publicNodeUrl => { return new RPCSubprovider(publicNodeUrl); @@ -427,17 +426,17 @@ export class ConnectForm extends React.Component { } } private async _getInjectedProviderIfExistsAsync(): Promise { - if (!_.isUndefined(this._injectedProviderIfExists)) { + if (this._injectedProviderIfExists !== undefined) { return this._injectedProviderIfExists; } let injectedProviderIfExists = (window as any).ethereum; - if (!_.isUndefined(injectedProviderIfExists)) { - if (!_.isUndefined(injectedProviderIfExists.enable)) { + if (injectedProviderIfExists !== undefined) { + if (injectedProviderIfExists.enable !== undefined) { await injectedProviderIfExists.enable(); } } else { const injectedWeb3IfExists = (window as any).web3; - if (!_.isUndefined(injectedWeb3IfExists) && !_.isUndefined(injectedWeb3IfExists.currentProvider)) { + if (injectedWeb3IfExists !== undefined && injectedWeb3IfExists.currentProvider !== undefined) { injectedProviderIfExists = injectedWeb3IfExists.currentProvider; } else { return undefined; @@ -451,7 +450,7 @@ export class ConnectForm extends React.Component { // Ethereum node, this call will throw. We need to handle this case gracefully const injectedProviderIfExists = await this._getInjectedProviderIfExistsAsync(); let networkIdIfExists: number; - if (!_.isUndefined(injectedProviderIfExists)) { + if (injectedProviderIfExists !== undefined) { try { const injectedWeb3Wrapper = new Web3Wrapper(injectedProviderIfExists); networkIdIfExists = await injectedWeb3Wrapper.getNetworkIdAsync(); @@ -473,14 +472,14 @@ export class ConnectForm extends React.Component { this._providerEngine = provider; this.networkId = await this._web3Wrapper.getNetworkIdAsync(); this._providerName = this._getNameGivenProvider(provider); - if (!_.isUndefined(this._contractWrappers)) { + if (this._contractWrappers !== undefined) { this._contractWrappers.unsubscribeAll(); } const contractWrappersConfig = { networkId, }; this._contractWrappers = new ContractWrappers(provider, contractWrappersConfig); - if (shouldUserLedgerProvider && !_.isUndefined(ledgerSubproviderIfExists)) { + if (shouldUserLedgerProvider && ledgerSubproviderIfExists !== undefined) { delete this._userAddressIfExists; this._ledgerSubprovider = ledgerSubproviderIfExists; } else { diff --git a/packages/website/ts/pages/governance/governance.tsx b/packages/website/ts/pages/governance/governance.tsx index 30521b7ebc..25af727d03 100644 --- a/packages/website/ts/pages/governance/governance.tsx +++ b/packages/website/ts/pages/governance/governance.tsx @@ -118,7 +118,7 @@ export class Governance extends React.Component { {proposalData.summary}