Skip to content

Commit 80ff1b7

Browse files
authored
Fix meta.deprecated.replacedBy to use ReplacedByInfo objects per ESLint schema (#2860)
1 parent 4806f7e commit 80ff1b7

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

index.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import packageJson from './package.json' with {type: 'json'};
77
const rules = toEslintRules(rawRules);
88

99
const deprecatedRules = createDeprecatedRules({
10-
// {ruleId: {message: string, replacedBy: string[]}}
1110
'no-instanceof-array': {
1211
message: 'Replaced by `unicorn/no-instanceof-builtins` which covers more cases.',
1312
replacedBy: ['unicorn/no-instanceof-builtins'],

rules/utils/create-deprecated-rules.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import getDocumentationUrl from './get-documentation-url.js';
12
import packageJson from '../../package.json' with {type: 'json'};
23

34
const repoUrl = 'https://github.com/sindresorhus/eslint-plugin-unicorn';
@@ -20,7 +21,12 @@ export default function createDeprecatedRules(rules) {
2021
deprecated: {
2122
message: deprecatedInfo.message,
2223
url,
23-
replacedBy: deprecatedInfo.replacedBy,
24+
replacedBy: deprecatedInfo.replacedBy.map(replacementRuleId => ({
25+
rule: {
26+
name: replacementRuleId,
27+
url: getDocumentationUrl(replacementRuleId),
28+
},
29+
})),
2430
},
2531
},
2632
},

test/package.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,12 @@ test('Every deprecated rules listed in docs/deleted-and-deprecated-rules.md', as
104104
t.deepEqual(rule.create(), {}, `${name} create should return empty object`);
105105
t.is(typeof rule.meta.deprecated.message, 'string', `${name} meta.deprecated.message should be string`);
106106
t.true(Array.isArray(rule.meta.deprecated.replacedBy), `${name} meta.deprecated.replacedBy should be array`);
107+
108+
for (const replacement of rule.meta.deprecated.replacedBy) {
109+
t.is(typeof replacement.rule.name, 'string', `${name} meta.deprecated.replacedBy[].rule.name should be string`);
110+
t.is(typeof replacement.rule.url, 'string', `${name} meta.deprecated.replacedBy[].rule.url should be string`);
111+
}
112+
107113
t.true(content.includes(`\n### ${name}\n`));
108114
t.false(content.includes(`\n### ~${name}~\n`));
109115
}

0 commit comments

Comments
 (0)