From 8a994a90d7334c0d987fe9166bdec2c343545de1 Mon Sep 17 00:00:00 2001 From: Chris Blossom Date: Mon, 22 Jul 2019 09:44:14 -0700 Subject: [PATCH 1/3] chore(eslint-plugin): spelling fixes --- packages/eslint-plugin/src/configs/eslint-recommended.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin/src/configs/eslint-recommended.ts b/packages/eslint-plugin/src/configs/eslint-recommended.ts index 283cd46aa2f2..2682746c7bf9 100644 --- a/packages/eslint-plugin/src/configs/eslint-recommended.ts +++ b/packages/eslint-plugin/src/configs/eslint-recommended.ts @@ -37,12 +37,12 @@ export default { // This is already checked by Typescript. 'no-redeclare': 'off', /** - * 2. Enable more ideomatic code + * 2. Enable more idiomatic code */ // Typescript allows const and let instead of var. 'no-var': 'error', 'prefer-const': 'error', - // The spread operator/rest parameters should be prefered in Typescript. + // The spread operator/rest parameters should be preferred in Typescript. 'prefer-rest-params': 'error', 'prefer-spread': 'error', }, From 668206edfcedffd0c817770b8885a40a7ca2b736 Mon Sep 17 00:00:00 2001 From: Chris Blossom Date: Mon, 22 Jul 2019 09:49:48 -0700 Subject: [PATCH 2/3] fix(eslint-plugin): [eslint-recommended] include dot files See: https://github.com/eslint/eslint/issues/11201 https://github.com/eslint/eslint/pull/11225 --- packages/eslint-plugin/src/configs/eslint-recommended.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/eslint-plugin/src/configs/eslint-recommended.ts b/packages/eslint-plugin/src/configs/eslint-recommended.ts index 2682746c7bf9..c2435a01ab91 100644 --- a/packages/eslint-plugin/src/configs/eslint-recommended.ts +++ b/packages/eslint-plugin/src/configs/eslint-recommended.ts @@ -9,7 +9,7 @@ export default { overrides: [ { - files: ['*.ts', '*.tsx'], + files: ['*.ts', '*.tsx', '.*.ts', '.*.tsx'], rules: { /** * 1. Disable things that are checked by Typescript From 5abba83468831e81954a82b99a0f8d5376b4de0e Mon Sep 17 00:00:00 2001 From: Chris Blossom Date: Mon, 22 Jul 2019 10:00:11 -0700 Subject: [PATCH 3/3] fix(eslint-plugin): [rules] Only enable rules on typescript files --- packages/eslint-plugin/src/configs/all.json | 149 +++++++++--------- packages/eslint-plugin/src/configs/base.json | 15 +- .../src/configs/recommended.json | 73 +++++---- .../eslint-plugin/tests/configs/all.test.ts | 2 +- .../tools/validate-configs/checkConfigAll.ts | 2 +- .../checkConfigRecommended.ts | 2 +- 6 files changed, 129 insertions(+), 114 deletions(-) diff --git a/packages/eslint-plugin/src/configs/all.json b/packages/eslint-plugin/src/configs/all.json index cf3f61c69cd6..107ade0d77e4 100644 --- a/packages/eslint-plugin/src/configs/all.json +++ b/packages/eslint-plugin/src/configs/all.json @@ -1,75 +1,80 @@ { "extends": "./configs/base.json", - "rules": { - "@typescript-eslint/adjacent-overload-signatures": "error", - "@typescript-eslint/array-type": "error", - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/ban-ts-ignore": "error", - "@typescript-eslint/ban-types": "error", - "camelcase": "off", - "@typescript-eslint/camelcase": "error", - "@typescript-eslint/class-name-casing": "error", - "@typescript-eslint/consistent-type-definitions": "error", - "@typescript-eslint/explicit-function-return-type": "error", - "@typescript-eslint/explicit-member-accessibility": "error", - "func-call-spacing": "off", - "@typescript-eslint/func-call-spacing": "error", - "@typescript-eslint/generic-type-naming": "error", - "indent": "off", - "@typescript-eslint/indent": "error", - "@typescript-eslint/interface-name-prefix": "error", - "@typescript-eslint/member-delimiter-style": "error", - "@typescript-eslint/member-naming": "error", - "@typescript-eslint/member-ordering": "error", - "@typescript-eslint/no-angle-bracket-type-assertion": "error", - "no-array-constructor": "off", - "@typescript-eslint/no-array-constructor": "error", - "@typescript-eslint/no-empty-function": "error", - "@typescript-eslint/no-empty-interface": "error", - "@typescript-eslint/no-explicit-any": "error", - "no-extra-parens": "off", - "@typescript-eslint/no-extra-parens": "error", - "@typescript-eslint/no-extraneous-class": "error", - "@typescript-eslint/no-floating-promises": "error", - "@typescript-eslint/no-for-in-array": "error", - "@typescript-eslint/no-inferrable-types": "error", - "no-magic-numbers": "off", - "@typescript-eslint/no-magic-numbers": "error", - "@typescript-eslint/no-misused-new": "error", - "@typescript-eslint/no-misused-promises": "error", - "@typescript-eslint/no-namespace": "error", - "@typescript-eslint/no-non-null-assertion": "error", - "@typescript-eslint/no-object-literal-type-assertion": "error", - "@typescript-eslint/no-parameter-properties": "error", - "@typescript-eslint/no-require-imports": "error", - "@typescript-eslint/no-this-alias": "error", - "@typescript-eslint/no-type-alias": "error", - "@typescript-eslint/no-unnecessary-qualifier": "error", - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "no-unused-vars": "off", - "@typescript-eslint/no-unused-vars": "error", - "no-use-before-define": "off", - "@typescript-eslint/no-use-before-define": "error", - "no-useless-constructor": "off", - "@typescript-eslint/no-useless-constructor": "error", - "@typescript-eslint/no-var-requires": "error", - "@typescript-eslint/prefer-for-of": "error", - "@typescript-eslint/prefer-function-type": "error", - "@typescript-eslint/prefer-includes": "error", - "@typescript-eslint/prefer-namespace-keyword": "error", - "@typescript-eslint/prefer-readonly": "error", - "@typescript-eslint/prefer-regexp-exec": "error", - "@typescript-eslint/prefer-string-starts-ends-with": "error", - "@typescript-eslint/promise-function-async": "error", - "@typescript-eslint/require-array-sort-compare": "error", - "@typescript-eslint/require-await": "error", - "@typescript-eslint/restrict-plus-operands": "error", - "semi": "off", - "@typescript-eslint/semi": "error", - "@typescript-eslint/strict-boolean-expressions": "error", - "@typescript-eslint/triple-slash-reference": "error", - "@typescript-eslint/type-annotation-spacing": "error", - "@typescript-eslint/unbound-method": "error", - "@typescript-eslint/unified-signatures": "error" - } + "overrides": [ + { + "files": ["*.ts", "*.tsx", ".*.ts", ".*.tsx"], + "rules": { + "@typescript-eslint/adjacent-overload-signatures": "error", + "@typescript-eslint/array-type": "error", + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/ban-ts-ignore": "error", + "@typescript-eslint/ban-types": "error", + "camelcase": "off", + "@typescript-eslint/camelcase": "error", + "@typescript-eslint/class-name-casing": "error", + "@typescript-eslint/consistent-type-definitions": "error", + "@typescript-eslint/explicit-function-return-type": "error", + "@typescript-eslint/explicit-member-accessibility": "error", + "func-call-spacing": "off", + "@typescript-eslint/func-call-spacing": "error", + "@typescript-eslint/generic-type-naming": "error", + "indent": "off", + "@typescript-eslint/indent": "error", + "@typescript-eslint/interface-name-prefix": "error", + "@typescript-eslint/member-delimiter-style": "error", + "@typescript-eslint/member-naming": "error", + "@typescript-eslint/member-ordering": "error", + "@typescript-eslint/no-angle-bracket-type-assertion": "error", + "no-array-constructor": "off", + "@typescript-eslint/no-array-constructor": "error", + "@typescript-eslint/no-empty-function": "error", + "@typescript-eslint/no-empty-interface": "error", + "@typescript-eslint/no-explicit-any": "error", + "no-extra-parens": "off", + "@typescript-eslint/no-extra-parens": "error", + "@typescript-eslint/no-extraneous-class": "error", + "@typescript-eslint/no-floating-promises": "error", + "@typescript-eslint/no-for-in-array": "error", + "@typescript-eslint/no-inferrable-types": "error", + "no-magic-numbers": "off", + "@typescript-eslint/no-magic-numbers": "error", + "@typescript-eslint/no-misused-new": "error", + "@typescript-eslint/no-misused-promises": "error", + "@typescript-eslint/no-namespace": "error", + "@typescript-eslint/no-non-null-assertion": "error", + "@typescript-eslint/no-object-literal-type-assertion": "error", + "@typescript-eslint/no-parameter-properties": "error", + "@typescript-eslint/no-require-imports": "error", + "@typescript-eslint/no-this-alias": "error", + "@typescript-eslint/no-type-alias": "error", + "@typescript-eslint/no-unnecessary-qualifier": "error", + "@typescript-eslint/no-unnecessary-type-assertion": "error", + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": "error", + "no-use-before-define": "off", + "@typescript-eslint/no-use-before-define": "error", + "no-useless-constructor": "off", + "@typescript-eslint/no-useless-constructor": "error", + "@typescript-eslint/no-var-requires": "error", + "@typescript-eslint/prefer-for-of": "error", + "@typescript-eslint/prefer-function-type": "error", + "@typescript-eslint/prefer-includes": "error", + "@typescript-eslint/prefer-namespace-keyword": "error", + "@typescript-eslint/prefer-readonly": "error", + "@typescript-eslint/prefer-regexp-exec": "error", + "@typescript-eslint/prefer-string-starts-ends-with": "error", + "@typescript-eslint/promise-function-async": "error", + "@typescript-eslint/require-array-sort-compare": "error", + "@typescript-eslint/require-await": "error", + "@typescript-eslint/restrict-plus-operands": "error", + "semi": "off", + "@typescript-eslint/semi": "error", + "@typescript-eslint/strict-boolean-expressions": "error", + "@typescript-eslint/triple-slash-reference": "error", + "@typescript-eslint/type-annotation-spacing": "error", + "@typescript-eslint/unbound-method": "error", + "@typescript-eslint/unified-signatures": "error" + } + } + ] } diff --git a/packages/eslint-plugin/src/configs/base.json b/packages/eslint-plugin/src/configs/base.json index 9b6931ad616d..3b984da2ae8c 100644 --- a/packages/eslint-plugin/src/configs/base.json +++ b/packages/eslint-plugin/src/configs/base.json @@ -1,7 +1,12 @@ { - "parser": "@typescript-eslint/parser", - "parserOptions": { - "sourceType": "module" - }, - "plugins": ["@typescript-eslint"] + "overrides": [ + { + "files": ["*.ts", "*.tsx", ".*.ts", ".*.tsx"], + "plugins": ["@typescript-eslint"], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "sourceType": "module" + } + } + ] } diff --git a/packages/eslint-plugin/src/configs/recommended.json b/packages/eslint-plugin/src/configs/recommended.json index d26fd25d01c1..d51c7537006b 100644 --- a/packages/eslint-plugin/src/configs/recommended.json +++ b/packages/eslint-plugin/src/configs/recommended.json @@ -1,37 +1,42 @@ { "extends": "./configs/base.json", - "rules": { - "@typescript-eslint/adjacent-overload-signatures": "error", - "@typescript-eslint/array-type": "error", - "@typescript-eslint/ban-types": "error", - "camelcase": "off", - "@typescript-eslint/camelcase": "error", - "@typescript-eslint/class-name-casing": "error", - "@typescript-eslint/explicit-function-return-type": "warn", - "@typescript-eslint/explicit-member-accessibility": "error", - "indent": "off", - "@typescript-eslint/indent": "error", - "@typescript-eslint/interface-name-prefix": "error", - "@typescript-eslint/member-delimiter-style": "error", - "@typescript-eslint/no-angle-bracket-type-assertion": "error", - "no-array-constructor": "off", - "@typescript-eslint/no-array-constructor": "error", - "@typescript-eslint/no-empty-interface": "error", - "@typescript-eslint/no-explicit-any": "warn", - "@typescript-eslint/no-inferrable-types": "error", - "@typescript-eslint/no-misused-new": "error", - "@typescript-eslint/no-namespace": "error", - "@typescript-eslint/no-non-null-assertion": "error", - "@typescript-eslint/no-object-literal-type-assertion": "error", - "@typescript-eslint/no-parameter-properties": "error", - "@typescript-eslint/no-triple-slash-reference": "error", - "no-unused-vars": "off", - "@typescript-eslint/no-unused-vars": "warn", - "no-use-before-define": "off", - "@typescript-eslint/no-use-before-define": "error", - "@typescript-eslint/no-var-requires": "error", - "@typescript-eslint/prefer-interface": "error", - "@typescript-eslint/prefer-namespace-keyword": "error", - "@typescript-eslint/type-annotation-spacing": "error" - } + "overrides": [ + { + "files": ["*.ts", "*.tsx", ".*.ts", ".*.tsx"], + "rules": { + "@typescript-eslint/adjacent-overload-signatures": "error", + "@typescript-eslint/array-type": "error", + "@typescript-eslint/ban-types": "error", + "camelcase": "off", + "@typescript-eslint/camelcase": "error", + "@typescript-eslint/class-name-casing": "error", + "@typescript-eslint/explicit-function-return-type": "warn", + "@typescript-eslint/explicit-member-accessibility": "error", + "indent": "off", + "@typescript-eslint/indent": "error", + "@typescript-eslint/interface-name-prefix": "error", + "@typescript-eslint/member-delimiter-style": "error", + "@typescript-eslint/no-angle-bracket-type-assertion": "error", + "no-array-constructor": "off", + "@typescript-eslint/no-array-constructor": "error", + "@typescript-eslint/no-empty-interface": "error", + "@typescript-eslint/no-explicit-any": "warn", + "@typescript-eslint/no-inferrable-types": "error", + "@typescript-eslint/no-misused-new": "error", + "@typescript-eslint/no-namespace": "error", + "@typescript-eslint/no-non-null-assertion": "error", + "@typescript-eslint/no-object-literal-type-assertion": "error", + "@typescript-eslint/no-parameter-properties": "error", + "@typescript-eslint/no-triple-slash-reference": "error", + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": "warn", + "no-use-before-define": "off", + "@typescript-eslint/no-use-before-define": "error", + "@typescript-eslint/no-var-requires": "error", + "@typescript-eslint/prefer-interface": "error", + "@typescript-eslint/prefer-namespace-keyword": "error", + "@typescript-eslint/type-annotation-spacing": "error" + } + } + ] } diff --git a/packages/eslint-plugin/tests/configs/all.test.ts b/packages/eslint-plugin/tests/configs/all.test.ts index 871576f2543a..88ca13d28f37 100644 --- a/packages/eslint-plugin/tests/configs/all.test.ts +++ b/packages/eslint-plugin/tests/configs/all.test.ts @@ -20,7 +20,7 @@ describe('all.json config', () => { ); // with end of Node.js 6 support, we can use Object.entries(allConfig.rules) here - const configRules: JsonRules = allConfig.rules; + const configRules: JsonRules = allConfig.overrides[0].rules; const typescriptEslintConfigRules = Object.keys(configRules).filter(name => name.startsWith(RULE_NAME_PREFIX), ); diff --git a/packages/eslint-plugin/tools/validate-configs/checkConfigAll.ts b/packages/eslint-plugin/tools/validate-configs/checkConfigAll.ts index 84981b8816e7..8340aeef0a20 100644 --- a/packages/eslint-plugin/tools/validate-configs/checkConfigAll.ts +++ b/packages/eslint-plugin/tools/validate-configs/checkConfigAll.ts @@ -6,7 +6,7 @@ const prefix = '@typescript-eslint/'; function checkConfigAll() { const { rules } = plugin; - const all = plugin.configs.all.rules; + const all = plugin.configs.all.overrides[0].rules; const allNames = new Set(Object.keys(all)); return Object.entries(rules).reduce((acc, [ruleName, rule]) => { diff --git a/packages/eslint-plugin/tools/validate-configs/checkConfigRecommended.ts b/packages/eslint-plugin/tools/validate-configs/checkConfigRecommended.ts index 21f2faa876dc..6c0f1cd137f0 100644 --- a/packages/eslint-plugin/tools/validate-configs/checkConfigRecommended.ts +++ b/packages/eslint-plugin/tools/validate-configs/checkConfigRecommended.ts @@ -6,7 +6,7 @@ const prefix = '@typescript-eslint/'; function checkConfigRecommended() { const { rules } = plugin; - const recommended = plugin.configs.recommended.rules; + const recommended = plugin.configs.recommended.overrides[0].rules; const recommendedNames = new Set(Object.keys(recommended)); return Object.entries(rules).reduce((acc, [ruleName, rule]) => {