From db9259616cb3b404a56164980b1fbd2e9407eb0b Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Mon, 3 Feb 2020 08:54:38 +0100 Subject: [PATCH 1/6] Remove tslint-immutable linter plugin --- package.json | 1 - packages/faucet/src/actions/start/start.ts | 1 - packages/faucet/src/cashflow.spec.ts | 1 - packages/faucet/src/multichainhelpers.ts | 2 -- tslint.json | 13 +------------ yarn.lock | 21 +++++++-------------- 6 files changed, 8 insertions(+), 31 deletions(-) diff --git a/package.json b/package.json index b0c5d5af..47c73191 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,6 @@ "source-map-support": "^0.5.6", "tslint": "^5.19.0", "tslint-config-prettier": "^1.13.0", - "tslint-immutable": "^5.5.2", "typescript": "~3.7", "webpack": "^4.12.0", "webpack-cli": "^3.3.8" diff --git a/packages/faucet/src/actions/start/start.ts b/packages/faucet/src/actions/start/start.ts index 3d2ff2f3..b98bf0aa 100644 --- a/packages/faucet/src/actions/start/start.ts +++ b/packages/faucet/src/actions/start/start.ts @@ -1,4 +1,3 @@ -// tslint:disable: no-object-mutation import { UserProfile } from "@iov/keycontrol"; import cors = require("@koa/cors"); import Koa from "koa"; diff --git a/packages/faucet/src/cashflow.spec.ts b/packages/faucet/src/cashflow.spec.ts index 6cd56c28..b90f6347 100644 --- a/packages/faucet/src/cashflow.spec.ts +++ b/packages/faucet/src/cashflow.spec.ts @@ -1,4 +1,3 @@ -// tslint:disable: no-object-mutation import { TokenTicker } from "@iov/bcp"; import { creditAmount, refillAmount, refillThreshold, setFractionalDigits } from "./cashflow"; diff --git a/packages/faucet/src/multichainhelpers.ts b/packages/faucet/src/multichainhelpers.ts index a8fc46fe..57e2e554 100644 --- a/packages/faucet/src/multichainhelpers.ts +++ b/packages/faucet/src/multichainhelpers.ts @@ -30,7 +30,6 @@ export async function loadAccounts( const codec = codecImplementation(); const addresses = identitiesOfFirstWallet(profile).map(identity => codec.identityToAddress(identity)); - // tslint:disable-next-line: readonly-array const out: Account[] = []; for (const address of addresses) { const response = await connection.getAccount({ address: address }); @@ -104,7 +103,6 @@ export async function refill(profile: UserProfile, connection: BlockchainConnect const availableTokens = availableTokensFromHolder(holderAccount); console.info("Available tokens:", availableTokens); - // tslint:disable-next-line: readonly-array const jobs: SendJob[] = []; for (const token of availableTokens) { diff --git a/tslint.json b/tslint.json index f1c4bad8..4d803cc3 100644 --- a/tslint.json +++ b/tslint.json @@ -1,6 +1,6 @@ { "defaultSeverity": "error", - "extends": ["tslint:latest", "tslint-immutable", "tslint-config-prettier"], + "extends": ["tslint:latest", "tslint-config-prettier"], "jsRules": {}, "rules": { "array-type": [true, "array"], @@ -10,21 +10,12 @@ "deprecation": true, "interface-name": [true, "never-prefix"], "max-classes-per-file": false, - "no-class": false, "no-conditional-assignment": false, "no-console": [true, "log"], - "no-delete": true, "no-empty": false, "no-empty-interface": false, - "no-expression-statement": false, "no-floating-promises": true, - "no-if-statement": false, "no-implicit-dependencies": false, - "no-let": false, - "no-loop-statement": false, - "no-method-signature": true, - "no-mixed-interface": false, - "no-object-mutation": true, "no-parameter-reassignment": false, "no-unnecessary-class": [true, "allow-static-only"], "no-unnecessary-type-assertion": true, @@ -34,8 +25,6 @@ "ordered-imports": false, "prefer-const": true, "promise-function-async": true, - "readonly-array": true, - "readonly-keyword": true, "typedef": [true, "call-signature"], "variable-name": [true, "check-format", "allow-leading-underscore"] }, diff --git a/yarn.lock b/yarn.lock index 80d687b2..7442bf60 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7524,13 +7524,6 @@ tslint-config-prettier@^1.13.0: resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37" integrity sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg== -tslint-immutable@^5.5.2: - version "5.5.2" - resolved "https://registry.yarnpkg.com/tslint-immutable/-/tslint-immutable-5.5.2.tgz#57331f6100156fa7ac4503e121cd2616df5bab8a" - integrity sha512-+dSMhEeUyRMrBe9XcjfRXT/FmqWKXsSdxttWoDzhUFSNCg8wfXx29M/ClQ78HhmdTaK+DDQsNS3wTGpSIhOv3g== - dependencies: - tsutils "^2.28.0 || ^3.0.0" - tslint@^5.19.0: version "5.20.1" resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.20.1.tgz#e401e8aeda0152bc44dd07e614034f3f80c67b7d" @@ -7555,13 +7548,6 @@ tsscmp@1.0.6: resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== -"tsutils@^2.28.0 || ^3.0.0", tsutils@^3.17.1: - version "3.17.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" - integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== - dependencies: - tslib "^1.8.1" - tsutils@^2.29.0: version "2.29.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" @@ -7569,6 +7555,13 @@ tsutils@^2.29.0: dependencies: tslib "^1.8.1" +tsutils@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + dependencies: + tslib "^1.8.1" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" From 7a8f248fcbdd018488b94cbd73ffa819bf798ff8 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Mon, 3 Feb 2020 09:22:06 +0100 Subject: [PATCH 2/6] Avoid unnecessary cast to any --- packages/faucet/src/actions/start/start.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/faucet/src/actions/start/start.ts b/packages/faucet/src/actions/start/start.ts index b98bf0aa..45cc23c6 100644 --- a/packages/faucet/src/actions/start/start.ts +++ b/packages/faucet/src/actions/start/start.ts @@ -109,7 +109,7 @@ export async function start(args: ReadonlyArray): Promise { } // context.request.body is set by the bodyParser() plugin - const requestBody = (context.request as any).body; + const requestBody = context.request.body; const { address, ticker } = RequestParser.parseCreditBody(requestBody); if (!codecImplementation().isValidAddress(address)) { From 8cde21b15c5d73d856645062b6b9d708765d9bdc Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Mon, 3 Feb 2020 09:23:00 +0100 Subject: [PATCH 3/6] Remove unnecessary await --- packages/bcp/src/cosmwasmconnection.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bcp/src/cosmwasmconnection.ts b/packages/bcp/src/cosmwasmconnection.ts index 68a416b3..dd288a7d 100644 --- a/packages/bcp/src/cosmwasmconnection.ts +++ b/packages/bcp/src/cosmwasmconnection.ts @@ -205,7 +205,7 @@ export class CosmWasmConnection implements BlockchainConnection { ): Promise | FailedTransaction> { try { const response = await this.restClient.txsById(id); - const chainId = await this.chainId(); + const chainId = this.chainId(); return this.parseAndPopulateTxResponse(response, chainId); } catch (error) { if (error.response.status === 404) { From 04e9f64278203a5dc9921ce4d340827f2dc586a8 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Mon, 3 Feb 2020 09:45:14 +0100 Subject: [PATCH 4/6] Convert eslint config to .js to set parserOptions.project/.tsconfigRootDir --- .eslintrc.js | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++ .eslintrc.json | 56 ------------------------------------------------ 2 files changed, 58 insertions(+), 56 deletions(-) create mode 100644 .eslintrc.js delete mode 100644 .eslintrc.json diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..f4150709 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,58 @@ +module.exports = { + env: { + es6: true, + jasmine: true, + node: true, + worker: true, + }, + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaVersion: 2018, + project: "./tsconfig.json", + tsconfigRootDir: __dirname, + }, + plugins: ["@typescript-eslint", "prettier", "simple-import-sort", "import"], + extends: [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "prettier/@typescript-eslint", + "plugin:prettier/recommended", + "plugin:import/typescript", + ], + rules: { + curly: ["warn", "multi-line", "consistent"], + "no-console": ["warn", { allow: ["error", "info", "warn"] }], + "no-param-reassign": "warn", + "no-shadow": "warn", + "prefer-const": "warn", + "spaced-comment": ["warn", "always", { line: { markers: ["/ Date: Mon, 3 Feb 2020 09:45:32 +0100 Subject: [PATCH 5/6] Let eslint take case of prefer-const --- tslint.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tslint.json b/tslint.json index 4d803cc3..f2c54d8c 100644 --- a/tslint.json +++ b/tslint.json @@ -23,7 +23,7 @@ "object-literal-shorthand": [true, "never"], "object-literal-sort-keys": false, "ordered-imports": false, - "prefer-const": true, + "prefer-const": false, "promise-function-async": true, "typedef": [true, "call-signature"], "variable-name": [true, "check-format", "allow-leading-underscore"] From 9d4868ce4c3442a5469b7237d5b36520beaf453f Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Mon, 3 Feb 2020 09:46:35 +0100 Subject: [PATCH 6/6] Enable @typescript-eslint/prefer-readonly --- .eslintrc.js | 1 + 1 file changed, 1 insertion(+) diff --git a/.eslintrc.js b/.eslintrc.js index f4150709..a1dee715 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -34,6 +34,7 @@ module.exports = { "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }], "@typescript-eslint/no-use-before-define": "warn", + "@typescript-eslint/prefer-readonly": "warn", }, overrides: [ {