From 390e1b85108c56514210a5259552e8f18ab2a570 Mon Sep 17 00:00:00 2001 From: Ido Kleinman Date: Fri, 23 Sep 2022 12:39:17 -0700 Subject: [PATCH] chore: Replace TSLint with ESLint in contracts/zeroex (#587) * replace tslint with eslint * config file * fix linting errors * changelog * prettier --- contracts/zero-ex/.eslintrc | 23 +++++++++++++++++++ contracts/zero-ex/CHANGELOG.json | 9 ++++++++ contracts/zero-ex/package.json | 10 ++++---- contracts/zero-ex/scripts/rollback.ts | 2 +- .../zero-ex/test/features/multiplex_test.ts | 4 ++-- contracts/zero-ex/test/utils/orders.ts | 10 ++++---- yarn.lock | 22 +----------------- 7 files changed, 47 insertions(+), 33 deletions(-) create mode 100644 contracts/zero-ex/.eslintrc diff --git a/contracts/zero-ex/.eslintrc b/contracts/zero-ex/.eslintrc new file mode 100644 index 0000000000..3c26a685d6 --- /dev/null +++ b/contracts/zero-ex/.eslintrc @@ -0,0 +1,23 @@ +{ + "env": { + "es2021": true, + "node": true + }, + "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier"], + "overrides": [], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "./tsconfig.json", + "ecmaVersion": "latest", + "sourceType": "module" + }, + "plugins": ["@typescript-eslint"], + "ignorePatterns": [ + "lib/**/*", + "generated-wrappers/**/*", + "generated-artifacts/**/*", + "test/generated-wrappers/**/*", + "test/generated-artifacts/**/*" + ], + "rules": {} +} \ No newline at end of file diff --git a/contracts/zero-ex/CHANGELOG.json b/contracts/zero-ex/CHANGELOG.json index 89cf3f4cdc..174fdccb53 100644 --- a/contracts/zero-ex/CHANGELOG.json +++ b/contracts/zero-ex/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "0.37.5", + "changes": [ + { + "note": "Migrate from TSLint to ESLint and fix linting errors", + "pr": 587 + } + ] + }, { "timestamp": 1663786955, "version": "0.37.4", diff --git a/contracts/zero-ex/package.json b/contracts/zero-ex/package.json index 36bd7160d9..fb87afaee0 100644 --- a/contracts/zero-ex/package.json +++ b/contracts/zero-ex/package.json @@ -24,8 +24,8 @@ "watch": "sol-compiler -w", "clean": "shx rm -rf lib test/generated-artifacts test/generated-wrappers generated-artifacts generated-wrappers", "generate_contract_wrappers": "abi-gen --debug --abis ${npm_package_config_abis} --output test/generated-wrappers --backend ethers", - "lint": "tslint --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./test/generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude ./test/generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", - "fix": "tslint --fix --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude ./test/generated-wrappers/**/* --exclude ./test/generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", + "lint": "eslint src test scripts && yarn lint-contracts", + "fix": "eslint --fix src scripts test && 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", @@ -65,7 +65,10 @@ "@0x/order-utils": "^10.4.28", "@0x/sol-compiler": "^4.8.2", "@0x/ts-doc-gen": "^0.0.28", - "@0x/tslint-config": "^4.1.4", + "@typescript-eslint/eslint-plugin": "^5.38.0", + "@typescript-eslint/parser": "^5.38.0", + "eslint": "^8.23.1", + "eslint-config-prettier": "^8.5.0", "@typechain/ethers-v5": "^10.0.0", "@types/isomorphic-fetch": "^0.0.35", "@types/lodash": "4.14.104", @@ -79,7 +82,6 @@ "shx": "^0.2.2", "solhint": "^1.4.1", "truffle": "^5.0.32", - "tslint": "5.11.0", "typechain": "^8.0.0", "typedoc": "~0.16.11", "typescript": "4.6.3" diff --git a/contracts/zero-ex/scripts/rollback.ts b/contracts/zero-ex/scripts/rollback.ts index 0e5a9a8cd2..eb83c0c817 100644 --- a/contracts/zero-ex/scripts/rollback.ts +++ b/contracts/zero-ex/scripts/rollback.ts @@ -386,7 +386,7 @@ async function getMainnetContractAsync(): Promise { const proxyFunctions = await querySubgraphAsync(); const deployments = reconstructDeployments(proxyFunctions); - while (true) { + for (;;) { const { action } = await prompts({ type: 'select', name: 'action', diff --git a/contracts/zero-ex/test/features/multiplex_test.ts b/contracts/zero-ex/test/features/multiplex_test.ts index 70a9c56f82..e601f0e6d1 100644 --- a/contracts/zero-ex/test/features/multiplex_test.ts +++ b/contracts/zero-ex/test/features/multiplex_test.ts @@ -294,7 +294,7 @@ blockchainTests.resets('MultiplexFeature', env => { }; } - function getUniswapV2MultiHopSubcall(tokens: string[], isSushi: boolean = false): MultiHopSellSubcall { + function getUniswapV2MultiHopSubcall(tokens: string[], isSushi = false): MultiHopSellSubcall { const uniswapDataEncoder = AbiEncoder.create([ { name: 'tokens', type: 'address[]' }, { name: 'isSushi', type: 'bool' }, @@ -307,7 +307,7 @@ blockchainTests.resets('MultiplexFeature', env => { function getUniswapV2BatchSubcall( tokens: string[], sellAmount: BigNumber = getRandomInteger(1, toBaseUnitAmount(1)), - isSushi: boolean = false, + isSushi = false, ): BatchSellSubcall { return { ...getUniswapV2MultiHopSubcall(tokens, isSushi), diff --git a/contracts/zero-ex/test/utils/orders.ts b/contracts/zero-ex/test/utils/orders.ts index 6a6d55f941..13f89eef14 100644 --- a/contracts/zero-ex/test/utils/orders.ts +++ b/contracts/zero-ex/test/utils/orders.ts @@ -34,7 +34,7 @@ interface RfqOrderFilledAmounts { makerTokenFilledAmount: BigNumber; takerTokenFilledAmount: BigNumber; } -interface OtcOrderFilledAmounts extends RfqOrderFilledAmounts {} +type OtcOrderFilledAmounts = RfqOrderFilledAmounts; interface LimitOrderFilledAmounts { makerTokenFilledAmount: BigNumber; @@ -52,7 +52,7 @@ export class NativeOrdersTestEnvironment { public static async createAsync( env: BlockchainTestsEnvironment, gasPrice: BigNumber = new BigNumber('123e9'), - protocolFeeMultiplier: number = 70e3, + protocolFeeMultiplier = 70e3, ): Promise { const [owner, maker, taker] = await env.getAccountAddressesAsync(); const [makerToken, takerToken] = await Promise.all( @@ -153,7 +153,7 @@ export class NativeOrdersTestEnvironment { order: OtcOrder, fillAmount: BigNumber | number = order.takerAmount, taker: string = this.taker, - unwrapWeth: boolean = false, + unwrapWeth = false, ): Promise { await this.prepareBalancesForOrdersAsync([order], taker); if (unwrapWeth) { @@ -179,7 +179,7 @@ export class NativeOrdersTestEnvironment { order: OtcOrder, origin: string = order.txOrigin, taker: string = order.taker, - unwrapWeth: boolean = false, + unwrapWeth = false, ): Promise { await this.prepareBalancesForOrdersAsync([order], taker); if (unwrapWeth) { @@ -354,7 +354,7 @@ export function assertOrderInfoEquals(actual: OrderInfo, expected: OrderInfo): v /** * Creates an order expiry field. */ -export function createExpiry(deltaSeconds: number = 60): BigNumber { +export function createExpiry(deltaSeconds = 60): BigNumber { return new BigNumber(Math.floor(Date.now() / 1000) + deltaSeconds); } diff --git a/yarn.lock b/yarn.lock index bae489b700..530b00ded2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5359,26 +5359,11 @@ bigi@1.4.2, bigi@^1.1.0: resolved "https://registry.yarnpkg.com/bigi/-/bigi-1.4.2.tgz#9c665a95f88b8b08fc05cfd731f561859d725825" integrity sha512-ddkU+dFIuEIW8lE7ZwdIAf2UPoM90eaprg5m3YXAVVTmKlqV/9BX4A2M8BOK2yOq6/VgZFVhK6QAxJebhlbhzw== -bignumber.js@7.2.1: - version "7.2.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" - integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== - -bignumber.js@^9.0.0, bignumber.js@^9.0.1: +bignumber.js@7.2.1, bignumber.js@^9.0.0, bignumber.js@^9.0.1, bignumber.js@^9.0.2, bignumber.js@~4.1.0, bignumber.js@~9.0.0, bignumber.js@~9.0.2: version "9.1.0" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.0.tgz#8d340146107fe3a6cb8d40699643c302e8773b62" integrity sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A== -bignumber.js@~4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-4.1.0.tgz#db6f14067c140bd46624815a7916c92d9b6c24b1" - integrity sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA== - -bignumber.js@~9.0.0, bignumber.js@~9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" - integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== - binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -16941,11 +16926,6 @@ typescript-tuple@^2.2.1: dependencies: typescript-compare "^0.0.2" -typescript@*: - version "4.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" - integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== - typescript@3.7.x: version "3.7.7" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.7.tgz#c931733e2ec10dda56b855b379cc488a72a81199"