From 448e8693baafce0cae24859182df808709381166 Mon Sep 17 00:00:00 2001 From: fisker Date: Wed, 23 Dec 2020 12:27:29 +0800 Subject: [PATCH 1/3] Simplify rule deprecation --- docs/deprecated-rules.md | 9 +++++++++ docs/rules/prefer-exponentiation-operator.md | 1 - docs/rules/regex-shorthand.md | 1 - index.js | 11 +++++++++- readme.md | 3 +-- rules/prefer-exponentiation-operator.js | 19 ------------------ rules/regex-shorthand.js | 19 ------------------ rules/utils/create-deprecated-rules.js | 21 ++++++++++++++++++++ test/package.js | 2 +- test/prefer-exponentiation-operator.js | 7 ------- test/regex-shorthand.js | 7 ------- 11 files changed, 42 insertions(+), 58 deletions(-) create mode 100644 docs/deprecated-rules.md delete mode 100644 docs/rules/prefer-exponentiation-operator.md delete mode 100644 docs/rules/regex-shorthand.md delete mode 100644 rules/prefer-exponentiation-operator.js delete mode 100644 rules/regex-shorthand.js create mode 100644 rules/utils/create-deprecated-rules.js delete mode 100644 test/prefer-exponentiation-operator.js delete mode 100644 test/regex-shorthand.js diff --git a/docs/deprecated-rules.md b/docs/deprecated-rules.md new file mode 100644 index 0000000000..135c70731d --- /dev/null +++ b/docs/deprecated-rules.md @@ -0,0 +1,9 @@ +# Deprecated Rules + +## prefer-exponentiation-operator + +This rule is deprecated in favor of the built-in ESLint [`prefer-exponentiation-operator`](https://eslint.org/docs/rules/prefer-exponentiation-operator) rule. + +## regex-shorthand + +This rule was renamed to [`better-regex`](rules/better-regex.md). diff --git a/docs/rules/prefer-exponentiation-operator.md b/docs/rules/prefer-exponentiation-operator.md deleted file mode 100644 index 7cf150b15d..0000000000 --- a/docs/rules/prefer-exponentiation-operator.md +++ /dev/null @@ -1 +0,0 @@ -This rule is deprecated. Use the built-in ESLint [`prefer-exponentiation-operator`](https://eslint.org/docs/rules/prefer-exponentiation-operator) rule instead. diff --git a/docs/rules/regex-shorthand.md b/docs/rules/regex-shorthand.md deleted file mode 100644 index 88873def46..0000000000 --- a/docs/rules/regex-shorthand.md +++ /dev/null @@ -1 +0,0 @@ -This rule was renamed to [`better-regex`](better-regex.md). diff --git a/index.js b/index.js index f17af92ef5..9ac0e0ae98 100644 --- a/index.js +++ b/index.js @@ -1,9 +1,18 @@ 'use strict'; const path = require('path'); const importModules = require('import-modules'); +const createDeprecatedRules = require('./rules/utils/create-deprecated-rules'); + +const deprecatedRules = createDeprecatedRules({ + 'prefer-exponentiation-operator': 'prefer-exponentiation-operator', + 'regex-shorthand': 'unicorn/better-regex' +}); module.exports = { - rules: importModules(path.resolve(__dirname, 'rules'), {camelize: false}), + rules: { + ...importModules(path.resolve(__dirname, 'rules'), {camelize: false}), + ...deprecatedRules + }, configs: { recommended: { env: { diff --git a/readme.md b/readme.md index 933096126a..f9f8dec62e 100644 --- a/readme.md +++ b/readme.md @@ -170,8 +170,7 @@ Configure it in `package.json`. ## Deprecated Rules -- [prefer-exponentiation-operator](docs/rules/prefer-exponentiation-operator.md) - Use the built-in ESLint [`prefer-exponentiation-operator`](https://eslint.org/docs/rules/prefer-exponentiation-operator) rule instead. -- [regex-shorthand](docs/rules/regex-shorthand.md) - Renamed to [`better-regex`](docs/rules/better-regex.md). +See [docs/deprecated-rules.md](docs/deprecated-rules.md) ## Recommended config diff --git a/rules/prefer-exponentiation-operator.js b/rules/prefer-exponentiation-operator.js deleted file mode 100644 index e410b14a30..0000000000 --- a/rules/prefer-exponentiation-operator.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; -const getDocumentationUrl = require('./utils/get-documentation-url'); - -const create = () => ({}); - -module.exports = { - create, - meta: { - type: 'suggestion', - docs: { - url: getDocumentationUrl(__filename) - }, - fixable: 'code', - deprecated: true, - replacedBy: [ - 'prefer-exponentiation-operator' - ] - } -}; diff --git a/rules/regex-shorthand.js b/rules/regex-shorthand.js deleted file mode 100644 index 7a305acde2..0000000000 --- a/rules/regex-shorthand.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; -const getDocumentationUrl = require('./utils/get-documentation-url'); - -const create = () => ({}); - -module.exports = { - create, - meta: { - type: 'suggestion', - docs: { - url: getDocumentationUrl(__filename) - }, - fixable: 'code', - deprecated: true, - replacedBy: [ - 'unicorn/better-regex' - ] - } -}; diff --git a/rules/utils/create-deprecated-rules.js b/rules/utils/create-deprecated-rules.js new file mode 100644 index 0000000000..49ebe10fa0 --- /dev/null +++ b/rules/utils/create-deprecated-rules.js @@ -0,0 +1,21 @@ +"use strict"; +const packageJson = require('../../package'); +const repoUrl = 'https://github.com/sindresorhus/eslint-plugin-unicorn'; + +function createDeprecatedRules(data) { + const rules = {}; + for (const [ruleId, replacedBy = []] of Object.entries(data)) { + rules[ruleId] = { + create: () => ({}), + meta: { + docs: { + url: `${repoUrl}/blob/v${packageJson.version}/docs/deprecated-rules.md#${ruleId}` + }, + deprecated: true, + replacedBy: Array.isArray(replacedBy) ? replacedBy : [replacedBy] + } + }; + } +} + +module.exports = createDeprecatedRules; diff --git a/test/package.js b/test/package.js index 4020fcd59e..fb9cc66e51 100644 --- a/test/package.js +++ b/test/package.js @@ -49,7 +49,7 @@ test('Every rule is defined in index file in alphabetical order', t => { 'There are more exported rules than rule files.' ); t.is( - Object.keys(index.configs.recommended.rules).length - ignoredRules.length, + Object.keys(index.configs.recommended.rules).length - deprecatedRules.length - ignoredRules.length, ruleFiles.length - deprecatedRules.length, 'There are more exported rules in the recommended config than rule files.' ); diff --git a/test/prefer-exponentiation-operator.js b/test/prefer-exponentiation-operator.js deleted file mode 100644 index 6639f3cbfd..0000000000 --- a/test/prefer-exponentiation-operator.js +++ /dev/null @@ -1,7 +0,0 @@ -import test from 'ava'; -import rule from '../rules/prefer-exponentiation-operator'; - -test('deprecated', t => { - t.true(rule.meta.deprecated); - t.deepEqual(rule.meta.replacedBy, ['prefer-exponentiation-operator']); -}); diff --git a/test/regex-shorthand.js b/test/regex-shorthand.js deleted file mode 100644 index 6b522f0fcd..0000000000 --- a/test/regex-shorthand.js +++ /dev/null @@ -1,7 +0,0 @@ -import test from 'ava'; -import rule from '../rules/regex-shorthand'; - -test('deprecated', t => { - t.true(rule.meta.deprecated); - t.deepEqual(rule.meta.replacedBy, ['unicorn/better-regex']); -}); From 07c2f8e84b040381871d4282bc7cab937f8ae043 Mon Sep 17 00:00:00 2001 From: fisker Date: Wed, 23 Dec 2020 12:32:52 +0800 Subject: [PATCH 2/3] Add comment --- index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/index.js b/index.js index 9ac0e0ae98..5dcd13483b 100644 --- a/index.js +++ b/index.js @@ -4,6 +4,7 @@ const importModules = require('import-modules'); const createDeprecatedRules = require('./rules/utils/create-deprecated-rules'); const deprecatedRules = createDeprecatedRules({ + // {ruleId: ReplacementRuleId | ReplacementRuleId[]}, if no replacement, use `{ruleId: []}` 'prefer-exponentiation-operator': 'prefer-exponentiation-operator', 'regex-shorthand': 'unicorn/better-regex' }); From 522fc5d29cb61c769fdcfb4cdaca10d28b897cdb Mon Sep 17 00:00:00 2001 From: fisker Date: Wed, 23 Dec 2020 13:42:08 +0800 Subject: [PATCH 3/3] Style --- rules/utils/create-deprecated-rules.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rules/utils/create-deprecated-rules.js b/rules/utils/create-deprecated-rules.js index 49ebe10fa0..76406a5fa5 100644 --- a/rules/utils/create-deprecated-rules.js +++ b/rules/utils/create-deprecated-rules.js @@ -1,4 +1,4 @@ -"use strict"; +'use strict'; const packageJson = require('../../package'); const repoUrl = 'https://github.com/sindresorhus/eslint-plugin-unicorn';