/
checkConfigRecommended.ts
39 lines (33 loc) · 1.06 KB
/
checkConfigRecommended.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import plugin from '../../src/index';
import { logRule } from '../log';
const prefix = '@typescript-eslint/';
function checkConfigRecommended(): boolean {
const { rules } = plugin;
const recommended = plugin.configs.recommended.rules;
const recommendedNames = new Set(Object.keys(recommended));
return Object.entries(rules).reduce<boolean>((acc, [ruleName, rule]) => {
if (
!rule.meta.deprecated &&
rule.meta.docs.recommended !== false &&
rule.meta.docs.requiresTypeChecking !== true
) {
const prefixed = `${prefix}${ruleName}` as keyof typeof recommended;
if (recommendedNames.has(prefixed)) {
if (recommended[prefixed] !== rule.meta.docs.recommended) {
logRule(
false,
ruleName,
'incorrect setting compared to the rule meta.',
);
return true;
}
} else {
logRule(false, ruleName, 'missing in the config.');
return true;
}
}
logRule(true, ruleName);
return acc;
}, false);
}
export { checkConfigRecommended };