From 87f4189e931211c3255f5e35b315f8da3b80708a Mon Sep 17 00:00:00 2001 From: Ido Kleinman Date: Fri, 23 Sep 2022 12:39:27 -0700 Subject: [PATCH] chore: Replace TSLint with ESLint in contracts/utils,treasury,test-utils,erc20 (#589) * replace TSLint with ESLint in contracts-utils * also contracts/treasury * also do test-utils * yarn fix * fix stuff yarn fix could not fix * eslint erc20 contracts folder too * changelogs * actually zeroex was a different pr * PR #589 in changelogs * whitespace * prettier --- contracts/erc20/.eslintrc | 25 +++++++++++++++++++ contracts/erc20/CHANGELOG.json | 9 +++++++ contracts/erc20/package.json | 10 +++++--- contracts/test-utils/.eslintrc | 25 +++++++++++++++++++ contracts/test-utils/CHANGELOG.json | 9 +++++++ contracts/test-utils/package.json | 10 +++++--- contracts/test-utils/src/assertions.ts | 2 +- contracts/test-utils/src/lang_utils.ts | 9 +++++-- contracts/test-utils/src/number_utils.ts | 11 +++----- contracts/test-utils/src/web3_wrapper.ts | 2 +- contracts/test-utils/test/mocha_blockchain.ts | 3 ++- contracts/treasury/.eslintrc | 25 +++++++++++++++++++ contracts/treasury/CHANGELOG.json | 9 +++++++ contracts/treasury/package.json | 10 +++++--- contracts/utils/.eslintrc | 25 +++++++++++++++++++ contracts/utils/CHANGELOG.json | 9 +++++++ contracts/utils/package.json | 10 +++++--- 17 files changed, 174 insertions(+), 29 deletions(-) create mode 100644 contracts/erc20/.eslintrc create mode 100644 contracts/test-utils/.eslintrc create mode 100644 contracts/treasury/.eslintrc create mode 100644 contracts/utils/.eslintrc diff --git a/contracts/erc20/.eslintrc b/contracts/erc20/.eslintrc new file mode 100644 index 0000000000..a1d8ef286c --- /dev/null +++ b/contracts/erc20/.eslintrc @@ -0,0 +1,25 @@ +{ + "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/**/*", + "contracts/**/*", + "generated-wrappers/**/*", + "generated-artifacts/**/*", + "test/generated-wrappers/**/*", + "test/generated-artifacts/**/*" + + ], + "rules": {} +} \ No newline at end of file diff --git a/contracts/erc20/CHANGELOG.json b/contracts/erc20/CHANGELOG.json index 1a4a014ee2..9a2d96f3f5 100644 --- a/contracts/erc20/CHANGELOG.json +++ b/contracts/erc20/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "3.3.45", + "changes": [ + { + "note": "Migrate from TSLint to ESLint and fix linting errors", + "pr": 589 + } + ] + }, { "timestamp": 1663786955, "version": "3.3.44", diff --git a/contracts/erc20/package.json b/contracts/erc20/package.json index f6fb980215..69d21448c9 100644 --- a/contracts/erc20/package.json +++ b/contracts/erc20/package.json @@ -23,8 +23,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 ./test/generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude ./test/generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", + "lint": "eslint src test && yarn lint-contracts", + "fix": "eslint --fix src 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", @@ -58,7 +58,6 @@ "@0x/dev-utils": "^5.0.0", "@0x/sol-compiler": "^4.8.2", "@0x/ts-doc-gen": "^0.0.28", - "@0x/tslint-config": "^4.1.4", "@0x/types": "^3.3.6", "@0x/typescript-typings": "^5.3.1", "@0x/utils": "^7.0.0", @@ -77,7 +76,10 @@ "npm-run-all": "^4.1.2", "shx": "^0.2.2", "solhint": "^1.4.1", - "tslint": "5.11.0", + "@typescript-eslint/eslint-plugin": "^5.38.0", + "@typescript-eslint/parser": "^5.38.0", + "eslint": "^8.23.1", + "eslint-config-prettier": "^8.5.0", "typedoc": "~0.16.11", "typescript": "4.6.3" }, diff --git a/contracts/test-utils/.eslintrc b/contracts/test-utils/.eslintrc new file mode 100644 index 0000000000..a1d8ef286c --- /dev/null +++ b/contracts/test-utils/.eslintrc @@ -0,0 +1,25 @@ +{ + "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/**/*", + "contracts/**/*", + "generated-wrappers/**/*", + "generated-artifacts/**/*", + "test/generated-wrappers/**/*", + "test/generated-artifacts/**/*" + + ], + "rules": {} +} \ No newline at end of file diff --git a/contracts/test-utils/CHANGELOG.json b/contracts/test-utils/CHANGELOG.json index f1afb89dc3..7372c6c5a6 100644 --- a/contracts/test-utils/CHANGELOG.json +++ b/contracts/test-utils/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "5.4.36", + "changes": [ + { + "note": "Migrate from TSLint to ESLint and fix linting errors", + "pr": 589 + } + ] + }, { "timestamp": 1663786955, "version": "5.4.35", diff --git a/contracts/test-utils/package.json b/contracts/test-utils/package.json index d1260a411a..7aced8d27a 100644 --- a/contracts/test-utils/package.json +++ b/contracts/test-utils/package.json @@ -16,8 +16,8 @@ "test:coverage": "run-s build run_mocha coverage:report:text coverage:report:lcov", "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", + "lint": "eslint src test", + "fix": "eslint --fix src test", "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", @@ -35,10 +35,12 @@ "homepage": "https://github.com/0xProject/protocol/tree/main/contracts/test-utils", "devDependencies": { "@0x/sol-compiler": "^4.8.2", - "@0x/tslint-config": "^4.1.4", "npm-run-all": "^4.1.2", "shx": "^0.2.2", - "tslint": "5.11.0", + "@typescript-eslint/eslint-plugin": "^5.38.0", + "@typescript-eslint/parser": "^5.38.0", + "eslint": "^8.23.1", + "eslint-config-prettier": "^8.5.0", "typescript": "4.6.3" }, "dependencies": { diff --git a/contracts/test-utils/src/assertions.ts b/contracts/test-utils/src/assertions.ts index 539c19b797..e87a9936ab 100644 --- a/contracts/test-utils/src/assertions.ts +++ b/contracts/test-utils/src/assertions.ts @@ -102,9 +102,9 @@ export async function expectTransactionFailedAsync(p: sendTransactionResult, rea if (nodeType === undefined) { nodeType = await web3Wrapper.getNodeTypeAsync(); } + const rejectionMessageRegex = new RegExp(`^VM Exception while processing transaction: revert ${reason}$`); switch (nodeType) { case NodeType.Ganache: - const rejectionMessageRegex = new RegExp(`^VM Exception while processing transaction: revert ${reason}$`); return expect(p).to.be.rejectedWith(rejectionMessageRegex); case NodeType.Geth: logUtils.warn( diff --git a/contracts/test-utils/src/lang_utils.ts b/contracts/test-utils/src/lang_utils.ts index 37fc3102ba..c2d70176a8 100644 --- a/contracts/test-utils/src/lang_utils.ts +++ b/contracts/test-utils/src/lang_utils.ts @@ -11,9 +11,14 @@ export function shortZip(a: T1[], b: T2[]): Array<[T1, T2]> { /** * Replaces the keys in a deeply nested object. Adapted from https://stackoverflow.com/a/39126851 */ -export function replaceKeysDeep(obj: {}, mapKeys: (key: string) => string | void): _.Dictionary<{}> { +export function replaceKeysDeep( + obj: Record, + mapKeys: (key: string) => string | void, +): _.Dictionary> { return _.transform(obj, (result, value, key) => { const currentKey = mapKeys(key) || key; - result[currentKey] = _.isObject(value) ? replaceKeysDeep(value as {}, mapKeys) : (value as {}); + result[currentKey] = _.isObject(value) + ? replaceKeysDeep(value as Record, mapKeys) + : (value as Record); }); } diff --git a/contracts/test-utils/src/number_utils.ts b/contracts/test-utils/src/number_utils.ts index 52df32cbb8..ecf3469c4c 100644 --- a/contracts/test-utils/src/number_utils.ts +++ b/contracts/test-utils/src/number_utils.ts @@ -66,7 +66,7 @@ export function fromFixed(n: Numberish): BigNumber { * Converts two decimal numbers to integers with `precision` digits, then returns * the absolute difference. */ -export function getNumericalDivergence(a: Numberish, b: Numberish, precision: number = 18): number { +export function getNumericalDivergence(a: Numberish, b: Numberish, precision = 18): number { const _a = new BigNumber(a); const _b = new BigNumber(b); const maxIntegerDigits = Math.max( @@ -86,7 +86,7 @@ export function getNumericalDivergence(a: Numberish, b: Numberish, precision: nu /** * Asserts that two numbers are equal up to `precision` digits. */ -export function assertRoughlyEquals(actual: Numberish, expected: Numberish, precision: number = 18): void { +export function assertRoughlyEquals(actual: Numberish, expected: Numberish, precision = 18): void { if (getNumericalDivergence(actual, expected, precision) <= 1) { return; } @@ -96,12 +96,7 @@ export function assertRoughlyEquals(actual: Numberish, expected: Numberish, prec /** * Asserts that two numbers are equal with up to `maxError` difference between them. */ -export function assertIntegerRoughlyEquals( - actual: Numberish, - expected: Numberish, - maxError: number = 1, - msg?: string, -): void { +export function assertIntegerRoughlyEquals(actual: Numberish, expected: Numberish, maxError = 1, msg?: string): void { const diff = new BigNumber(actual) .minus(expected) .abs() diff --git a/contracts/test-utils/src/web3_wrapper.ts b/contracts/test-utils/src/web3_wrapper.ts index ee8999074b..122b7d26d9 100644 --- a/contracts/test-utils/src/web3_wrapper.ts +++ b/contracts/test-utils/src/web3_wrapper.ts @@ -15,7 +15,7 @@ export const txDefaults = { gasPrice: constants.DEFAULT_GAS_PRICE, }; -export let providerConfigs: Web3Config = { +export const providerConfigs: Web3Config = { total_accounts: constants.NUM_TEST_ACCOUNTS, shouldUseInProcessGanache: true, shouldAllowUnlimitedContractSize: true, diff --git a/contracts/test-utils/test/mocha_blockchain.ts b/contracts/test-utils/test/mocha_blockchain.ts index 9e84f28524..071a1c7255 100644 --- a/contracts/test-utils/test/mocha_blockchain.ts +++ b/contracts/test-utils/test/mocha_blockchain.ts @@ -4,6 +4,7 @@ import * as process from 'process'; import { expect } from '../src/chai_setup'; import { constants } from '../src/constants'; import { blockchainTests, describe } from '../src/mocha_blockchain'; +import { append } from './subtests/mocha_blockchain_1'; blockchainTests('mocha blockchain extensions', env => { describe('blockchainTests()', () => { @@ -78,7 +79,7 @@ blockchainTests('mocha blockchain extensions', env => { }); describe('subtests', () => { - require('./subtests/mocha_blockchain_1').append(env); + append(env); }); }); diff --git a/contracts/treasury/.eslintrc b/contracts/treasury/.eslintrc new file mode 100644 index 0000000000..a1d8ef286c --- /dev/null +++ b/contracts/treasury/.eslintrc @@ -0,0 +1,25 @@ +{ + "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/**/*", + "contracts/**/*", + "generated-wrappers/**/*", + "generated-artifacts/**/*", + "test/generated-wrappers/**/*", + "test/generated-artifacts/**/*" + + ], + "rules": {} +} \ No newline at end of file diff --git a/contracts/treasury/CHANGELOG.json b/contracts/treasury/CHANGELOG.json index 9860581329..1568464078 100644 --- a/contracts/treasury/CHANGELOG.json +++ b/contracts/treasury/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "1.4.28", + "changes": [ + { + "note": "Migrate from TSLint to ESLint and fix linting errors", + "pr": 589 + } + ] + }, { "timestamp": 1663786955, "version": "1.4.27", diff --git a/contracts/treasury/package.json b/contracts/treasury/package.json index aa41a39217..d66b809230 100644 --- a/contracts/treasury/package.json +++ b/contracts/treasury/package.json @@ -21,8 +21,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 && yarn lint-contracts", + "fix": "eslint --fix src test && yarn lint-contracts", "test:circleci": "yarn test", "contracts:gen": "contracts-gen generate", "contracts:copy": "contracts-gen copy", @@ -55,7 +55,6 @@ "@0x/contracts-test-utils": "^5.4.35", "@0x/sol-compiler": "^4.8.2", "@0x/ts-doc-gen": "^0.0.28", - "@0x/tslint-config": "^4.1.4", "@types/isomorphic-fetch": "^0.0.35", "@types/lodash": "4.14.104", "@types/mocha": "^5.2.7", @@ -67,7 +66,10 @@ "prompts": "^2.4.0", "shx": "^0.2.2", "solhint": "^1.4.1", - "tslint": "5.11.0", + "@typescript-eslint/eslint-plugin": "^5.38.0", + "@typescript-eslint/parser": "^5.38.0", + "eslint": "^8.23.1", + "eslint-config-prettier": "^8.5.0", "typedoc": "~0.16.11", "typescript": "4.6.3" }, diff --git a/contracts/utils/.eslintrc b/contracts/utils/.eslintrc new file mode 100644 index 0000000000..a1d8ef286c --- /dev/null +++ b/contracts/utils/.eslintrc @@ -0,0 +1,25 @@ +{ + "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/**/*", + "contracts/**/*", + "generated-wrappers/**/*", + "generated-artifacts/**/*", + "test/generated-wrappers/**/*", + "test/generated-artifacts/**/*" + + ], + "rules": {} +} \ No newline at end of file diff --git a/contracts/utils/CHANGELOG.json b/contracts/utils/CHANGELOG.json index ca1928a5b3..ace7dd566b 100644 --- a/contracts/utils/CHANGELOG.json +++ b/contracts/utils/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "4.8.26", + "changes": [ + { + "note": "Migrate from TSLint to ESLint and fix linting errors", + "pr": 589 + } + ] + }, { "timestamp": 1663786955, "version": "4.8.25", diff --git a/contracts/utils/package.json b/contracts/utils/package.json index 56468b5837..fef704a0d4 100644 --- a/contracts/utils/package.json +++ b/contracts/utils/package.json @@ -23,8 +23,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 ./test/generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude ./test/generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", + "lint": "eslint src test && yarn lint-contracts", + "fix": "eslint --fix src 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", @@ -56,7 +56,10 @@ "@0x/dev-utils": "^5.0.0", "@0x/order-utils": "^10.4.28", "@0x/sol-compiler": "^4.8.2", - "@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", "@0x/types": "^3.3.6", "@0x/web3-wrapper": "^8.0.0", "@types/bn.js": "^4.11.0", @@ -75,7 +78,6 @@ "shx": "^0.2.2", "solhint": "^1.4.1", "truffle": "^5.0.32", - "tslint": "5.11.0", "typescript": "4.6.3" }, "dependencies": {