Skip to content

Commit 72e0390

Browse files
authored
Simplify rule deprecation (#956)
1 parent a1b60ad commit 72e0390

11 files changed

+43
-58
lines changed

docs/deprecated-rules.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Deprecated Rules
2+
3+
## prefer-exponentiation-operator
4+
5+
This rule is deprecated in favor of the built-in ESLint [`prefer-exponentiation-operator`](https://eslint.org/docs/rules/prefer-exponentiation-operator) rule.
6+
7+
## regex-shorthand
8+
9+
This rule was renamed to [`better-regex`](rules/better-regex.md).

docs/rules/prefer-exponentiation-operator.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/rules/regex-shorthand.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

index.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
11
'use strict';
22
const path = require('path');
33
const importModules = require('import-modules');
4+
const createDeprecatedRules = require('./rules/utils/create-deprecated-rules');
5+
6+
const deprecatedRules = createDeprecatedRules({
7+
// {ruleId: ReplacementRuleId | ReplacementRuleId[]}, if no replacement, use `{ruleId: []}`
8+
'prefer-exponentiation-operator': 'prefer-exponentiation-operator',
9+
'regex-shorthand': 'unicorn/better-regex'
10+
});
411

512
module.exports = {
6-
rules: importModules(path.resolve(__dirname, 'rules'), {camelize: false}),
13+
rules: {
14+
...importModules(path.resolve(__dirname, 'rules'), {camelize: false}),
15+
...deprecatedRules
16+
},
717
configs: {
818
recommended: {
919
env: {

readme.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,7 @@ Configure it in `package.json`.
170170

171171
## Deprecated Rules
172172

173-
- [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.
174-
- [regex-shorthand](docs/rules/regex-shorthand.md) - Renamed to [`better-regex`](docs/rules/better-regex.md).
173+
See [docs/deprecated-rules.md](docs/deprecated-rules.md)
175174

176175
## Recommended config
177176

rules/prefer-exponentiation-operator.js

Lines changed: 0 additions & 19 deletions
This file was deleted.

rules/regex-shorthand.js

Lines changed: 0 additions & 19 deletions
This file was deleted.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
'use strict';
2+
const packageJson = require('../../package');
3+
const repoUrl = 'https://github.com/sindresorhus/eslint-plugin-unicorn';
4+
5+
function createDeprecatedRules(data) {
6+
const rules = {};
7+
for (const [ruleId, replacedBy = []] of Object.entries(data)) {
8+
rules[ruleId] = {
9+
create: () => ({}),
10+
meta: {
11+
docs: {
12+
url: `${repoUrl}/blob/v${packageJson.version}/docs/deprecated-rules.md#${ruleId}`
13+
},
14+
deprecated: true,
15+
replacedBy: Array.isArray(replacedBy) ? replacedBy : [replacedBy]
16+
}
17+
};
18+
}
19+
}
20+
21+
module.exports = createDeprecatedRules;

test/package.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ test('Every rule is defined in index file in alphabetical order', t => {
4949
'There are more exported rules than rule files.'
5050
);
5151
t.is(
52-
Object.keys(index.configs.recommended.rules).length - ignoredRules.length,
52+
Object.keys(index.configs.recommended.rules).length - deprecatedRules.length - ignoredRules.length,
5353
ruleFiles.length - deprecatedRules.length,
5454
'There are more exported rules in the recommended config than rule files.'
5555
);

test/prefer-exponentiation-operator.js

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)