From b7259e5d6ae1cb9ef0d610629d2239db4110105b Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Tue, 18 Aug 2020 16:38:22 -0230 Subject: [PATCH] Fix radix issues (#9247) See [`radix`](https://eslint.org/docs/rules/radix) for more information. This change enables `radix` and fixes the issues raised by the rule. --- .eslintrc.js | 1 + app/scripts/controllers/preferences.js | 1 + app/scripts/controllers/transactions/index.js | 1 + app/scripts/lib/typed-message-manager.js | 1 + app/scripts/migrations/030.js | 3 +++ app/scripts/platforms/extension.js | 2 +- test/unit/app/controllers/metamask-controller-test.js | 8 ++++---- .../app/controllers/transactions/tx-controller-test.js | 2 +- test/unit/app/typed-message-manager.spec.js | 4 ++-- test/unit/migrations/migrator-test.js | 4 ++-- test/unit/ui/app/actions.spec.js | 6 +++--- ui/app/components/app/menu-droppo.js | 4 ++-- ui/app/pages/send/send.constants.js | 4 ++-- .../networks-tab/network-form/network-form.component.js | 1 + ui/lib/account-link.js | 1 + 15 files changed, 26 insertions(+), 17 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index dd453beb9..fc0add36e 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -72,6 +72,7 @@ module.exports = { 'no-useless-concat': 'error', 'prefer-rest-params': 'error', 'prefer-spread': 'error', + 'radix': 'error', 'require-unicode-regexp': 'error', /* End v2 rules */ 'arrow-parens': 'error', diff --git a/app/scripts/controllers/preferences.js b/app/scripts/controllers/preferences.js index dee126a8b..3a871f473 100644 --- a/app/scripts/controllers/preferences.js +++ b/app/scripts/controllers/preferences.js @@ -529,6 +529,7 @@ export default class PreferencesController { } if (url !== 'http://localhost:8545') { let checkedChainId + // eslint-disable-next-line radix if (!!chainId && !Number.isNaN(parseInt(chainId))) { checkedChainId = chainId } diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js index ece1d47ad..543603f83 100644 --- a/app/scripts/controllers/transactions/index.js +++ b/app/scripts/controllers/transactions/index.js @@ -133,6 +133,7 @@ export default class TransactionController extends EventEmitter { */ getChainId () { const networkState = this.networkStore.getState() + // eslint-disable-next-line radix const integerChainId = parseInt(networkState) if (Number.isNaN(integerChainId)) { return 0 diff --git a/app/scripts/lib/typed-message-manager.js b/app/scripts/lib/typed-message-manager.js index 38762a97a..b582396d3 100644 --- a/app/scripts/lib/typed-message-manager.js +++ b/app/scripts/lib/typed-message-manager.js @@ -165,6 +165,7 @@ export default class TypedMessageManager extends EventEmitter { assert.ok(data.primaryType in data.types, `Primary type of "${data.primaryType}" has no type definition.`) assert.equal(validation.errors.length, 0, 'Signing data must conform to EIP-712 schema. See https://git.io/fNtcx.') const chainId = data.domain.chainId + // eslint-disable-next-line radix const activeChainId = parseInt(this.networkController.getNetworkState()) chainId && assert.equal(chainId, activeChainId, `Provided chainId "${chainId}" must match the active chainId "${activeChainId}"`) break diff --git a/app/scripts/migrations/030.js b/app/scripts/migrations/030.js index 499f8d664..8b6cdeaaa 100644 --- a/app/scripts/migrations/030.js +++ b/app/scripts/migrations/030.js @@ -28,6 +28,7 @@ function transformState (state) { const frequentRpcListDetail = newState.PreferencesController.frequentRpcListDetail if (frequentRpcListDetail) { frequentRpcListDetail.forEach((rpc, index) => { + // eslint-disable-next-line radix if (!!rpc.chainId && Number.isNaN(parseInt(rpc.chainId))) { delete frequentRpcListDetail[index].chainId } @@ -36,10 +37,12 @@ function transformState (state) { } } if (state.NetworkController) { + // eslint-disable-next-line radix if (newState.NetworkController.network && Number.isNaN(parseInt(newState.NetworkController.network))) { delete newState.NetworkController.network } + // eslint-disable-next-line radix if (newState.NetworkController.provider && newState.NetworkController.provider.chainId && Number.isNaN(parseInt(newState.NetworkController.provider.chainId))) { delete newState.NetworkController.provider.chainId } diff --git a/app/scripts/platforms/extension.js b/app/scripts/platforms/extension.js index 11340c8cc..d5b025c02 100644 --- a/app/scripts/platforms/extension.js +++ b/app/scripts/platforms/extension.js @@ -189,7 +189,7 @@ export default class ExtensionPlatform { this._subscribeToNotificationClicked() - const url = explorerLink(txMeta.hash, parseInt(txMeta.metamaskNetworkId)) + const url = explorerLink(txMeta.hash, txMeta.metamaskNetworkId) const nonce = parseInt(txMeta.txParams.nonce, 16) const title = 'Confirmed transaction' diff --git a/test/unit/app/controllers/metamask-controller-test.js b/test/unit/app/controllers/metamask-controller-test.js index 4abd3316e..b69b0c0a9 100644 --- a/test/unit/app/controllers/metamask-controller-test.js +++ b/test/unit/app/controllers/metamask-controller-test.js @@ -694,7 +694,7 @@ describe('MetaMaskController', function () { metamaskMsgs = metamaskController.messageManager.getUnapprovedMsgs() messages = metamaskController.messageManager.messages msgId = Object.keys(metamaskMsgs)[0] - messages[0].msgParams.metamaskId = parseInt(msgId) + messages[0].msgParams.metamaskId = parseInt(msgId, 10) }) it('persists address from msg params', function () { @@ -714,7 +714,7 @@ describe('MetaMaskController', function () { }) it('rejects the message', function () { - const msgIdInt = parseInt(msgId) + const msgIdInt = parseInt(msgId, 10) metamaskController.cancelMessage(msgIdInt, noop) assert.equal(messages[0].status, 'rejected') }) @@ -754,7 +754,7 @@ describe('MetaMaskController', function () { metamaskPersonalMsgs = metamaskController.personalMessageManager.getUnapprovedMsgs() personalMessages = metamaskController.personalMessageManager.messages msgId = Object.keys(metamaskPersonalMsgs)[0] - personalMessages[0].msgParams.metamaskId = parseInt(msgId) + personalMessages[0].msgParams.metamaskId = parseInt(msgId, 10) }) it('errors with no from in msgParams', async function () { @@ -785,7 +785,7 @@ describe('MetaMaskController', function () { }) it('rejects the message', function () { - const msgIdInt = parseInt(msgId) + const msgIdInt = parseInt(msgId, 10) metamaskController.cancelPersonalMessage(msgIdInt, noop) assert.equal(personalMessages[0].status, 'rejected') }) diff --git a/test/unit/app/controllers/transactions/tx-controller-test.js b/test/unit/app/controllers/transactions/tx-controller-test.js index b3649a9b3..01e874ff1 100644 --- a/test/unit/app/controllers/transactions/tx-controller-test.js +++ b/test/unit/app/controllers/transactions/tx-controller-test.js @@ -307,7 +307,7 @@ describe('Transaction Controller', function () { txController.addTx({ id: '1', status: 'unapproved', metamaskNetworkId: currentNetworkId, txParams: {} }, noop) const rawTx = await txController.signTransaction('1') const ethTx = new EthTx(ethUtil.toBuffer(rawTx)) - assert.equal(ethTx.getChainId(), parseInt(currentNetworkId)) + assert.equal(ethTx.getChainId(), 42) }) }) diff --git a/test/unit/app/typed-message-manager.spec.js b/test/unit/app/typed-message-manager.spec.js index c69e407a3..65ba33fbd 100644 --- a/test/unit/app/typed-message-manager.spec.js +++ b/test/unit/app/typed-message-manager.spec.js @@ -68,8 +68,8 @@ describe('Typed Message Manager', function () { typedMsgs = typedMessageManager.getUnapprovedMsgs() messages = typedMessageManager.messages msgId = Object.keys(typedMsgs)[0] - messages[0].msgParams.metamaskId = parseInt(msgId) - numberMsgId = parseInt(msgId) + messages[0].msgParams.metamaskId = parseInt(msgId, 10) + numberMsgId = parseInt(msgId, 10) }) it('supports version 1 of signedTypedData', function () { diff --git a/test/unit/migrations/migrator-test.js b/test/unit/migrations/migrator-test.js index c44ce3df7..3cf08c355 100644 --- a/test/unit/migrations/migrator-test.js +++ b/test/unit/migrations/migrator-test.js @@ -55,7 +55,7 @@ describe('migrations', function () { } return acc }, []) - .map((num) => parseInt(num)) + .map((num) => parseInt(num, 10)) }) it('should include all migrations', function () { @@ -75,7 +75,7 @@ describe('migrations', function () { } return acc }, []) - .map((num) => parseInt(num)) + .map((num) => parseInt(num, 10)) migrationNumbers.forEach((num) => { if (num >= 33) { diff --git a/test/unit/ui/app/actions.spec.js b/test/unit/ui/app/actions.spec.js index af5f56f60..49bc191a5 100644 --- a/test/unit/ui/app/actions.spec.js +++ b/test/unit/ui/app/actions.spec.js @@ -573,7 +573,7 @@ describe('Actions', function () { metamaskMsgs = metamaskController.messageManager.getUnapprovedMsgs() messages = metamaskController.messageManager.messages msgId = Object.keys(metamaskMsgs)[0] - messages[0].msgParams.metamaskId = parseInt(msgId) + messages[0].msgParams.metamaskId = parseInt(msgId, 10) }) afterEach(function () { @@ -626,7 +626,7 @@ describe('Actions', function () { metamaskMsgs = metamaskController.personalMessageManager.getUnapprovedMsgs() personalMessages = metamaskController.personalMessageManager.messages msgId = Object.keys(metamaskMsgs)[0] - personalMessages[0].msgParams.metamaskId = parseInt(msgId) + personalMessages[0].msgParams.metamaskId = parseInt(msgId, 10) }) afterEach(function () { @@ -714,7 +714,7 @@ describe('Actions', function () { messages = metamaskController.typedMessageManager.getUnapprovedMsgs() typedMessages = metamaskController.typedMessageManager.messages msgId = Object.keys(messages)[0] - typedMessages[0].msgParams.metamaskId = parseInt(msgId) + typedMessages[0].msgParams.metamaskId = parseInt(msgId, 10) }) afterEach(function () { diff --git a/ui/app/components/app/menu-droppo.js b/ui/app/components/app/menu-droppo.js index 79c22d8d8..fd26a5208 100644 --- a/ui/app/components/app/menu-droppo.js +++ b/ui/app/components/app/menu-droppo.js @@ -111,8 +111,8 @@ export default class MenuDroppoComponent extends Component { {this.renderPrimary()} diff --git a/ui/app/pages/send/send.constants.js b/ui/app/pages/send/send.constants.js index 7ef707440..c7460fa32 100644 --- a/ui/app/pages/send/send.constants.js +++ b/ui/app/pages/send/send.constants.js @@ -2,9 +2,9 @@ import ethUtil from 'ethereumjs-util' import { conversionUtil, multiplyCurrencies } from '../../helpers/utils/conversion-util' const MIN_GAS_PRICE_DEC = '0' -const MIN_GAS_PRICE_HEX = (parseInt(MIN_GAS_PRICE_DEC)).toString(16) +const MIN_GAS_PRICE_HEX = (parseInt(MIN_GAS_PRICE_DEC, 10)).toString(16) const MIN_GAS_LIMIT_DEC = '21000' -const MIN_GAS_LIMIT_HEX = (parseInt(MIN_GAS_LIMIT_DEC)).toString(16) +const MIN_GAS_LIMIT_HEX = (parseInt(MIN_GAS_LIMIT_DEC, 10)).toString(16) const MIN_GAS_PRICE_GWEI = ethUtil.addHexPrefix(conversionUtil(MIN_GAS_PRICE_HEX, { fromDenomination: 'WEI', diff --git a/ui/app/pages/settings/networks-tab/network-form/network-form.component.js b/ui/app/pages/settings/networks-tab/network-form/network-form.component.js index 8f029771f..3ca23e7f9 100644 --- a/ui/app/pages/settings/networks-tab/network-form/network-form.component.js +++ b/ui/app/pages/settings/networks-tab/network-form/network-form.component.js @@ -206,6 +206,7 @@ export default class NetworkForm extends PureComponent { } validateChainId = (chainId) => { + // eslint-disable-next-line radix this.setErrorTo('chainId', !!chainId && Number.isNaN(parseInt(chainId)) ? `${this.context.t('invalidInput')} chainId` : '', diff --git a/ui/lib/account-link.js b/ui/lib/account-link.js index eadecdd3c..8427d41ad 100644 --- a/ui/lib/account-link.js +++ b/ui/lib/account-link.js @@ -3,6 +3,7 @@ export default function getAccountLink (address, network, rpcPrefs) { return `${rpcPrefs.blockExplorerUrl.replace(/\/+$/u, '')}/address/${address}` } + // eslint-disable-next-line radix const net = parseInt(network) switch (net) { case 1: // main net