Skip to content

Commit 1b041d2

Browse files
committedJan 17, 2025
fix(eslint): recognize number as severity
close #42
1 parent 4a3a170 commit 1b041d2

File tree

3 files changed

+24
-19
lines changed

3 files changed

+24
-19
lines changed
 

‎packages/eslint/index.ts

+22-17
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,31 @@ export function convertConfig(rulesConfig: ESLintRulesConfig) {
1818
rules: Record<string, ESLint.Rule.RuleModule>;
1919
}> = {};
2020
for (const [rule, severityOrOptions] of Object.entries(rulesConfig)) {
21-
let severity: 'error' | 'warn' | 'suggestion' | 'off';
21+
let rawSeverity: 'error' | 'warn' | 'suggestion' | 'off' | 0 | 1 | 2;
2222
let options: any[];
23-
if (typeof severityOrOptions === 'string') {
24-
severity = severityOrOptions;
25-
options = [];
23+
if (Array.isArray(severityOrOptions)) {
24+
[rawSeverity, ...options] = severityOrOptions;
2625
}
2726
else {
28-
[severity, ...options] = severityOrOptions;
27+
rawSeverity = severityOrOptions;
28+
options = [];
29+
}
30+
let tsSeverity: ts.DiagnosticCategory | undefined;
31+
if (rawSeverity === 'off' || rawSeverity === 0) {
32+
tsSeverity = undefined;
33+
}
34+
else if (rawSeverity === 'warn' || rawSeverity === 1) {
35+
tsSeverity = 0 satisfies ts.DiagnosticCategory.Warning;
36+
}
37+
else if (rawSeverity === 'error' || rawSeverity === 2) {
38+
tsSeverity = 1 satisfies ts.DiagnosticCategory.Error;
39+
}
40+
else if (rawSeverity === 'suggestion') {
41+
tsSeverity = 2 satisfies ts.DiagnosticCategory.Suggestion;
42+
} else {
43+
tsSeverity = 3 satisfies ts.DiagnosticCategory.Message;
2944
}
30-
if (severity === 'off') {
45+
if (tsSeverity === undefined) {
3146
continue;
3247
}
3348
let _rule: TSSLint.Rule | undefined;
@@ -58,17 +73,7 @@ export function convertConfig(rulesConfig: ESLintRulesConfig) {
5873
ruleModule = require(`./node_modules/eslint/lib/rules/${rule}.js`);
5974
}
6075
}
61-
_rule = rules[rule] = convertRule(
62-
ruleModule,
63-
options,
64-
severity === 'error'
65-
? 1 satisfies ts.DiagnosticCategory.Error
66-
: severity === 'warn'
67-
? 0 satisfies ts.DiagnosticCategory.Warning
68-
: severity === 'suggestion'
69-
? 2 satisfies ts.DiagnosticCategory.Suggestion
70-
: 3 satisfies ts.DiagnosticCategory.Message
71-
);
76+
_rule = rules[rule] = convertRule(ruleModule, options, tsSeverity);
7277
}
7378
return _rule(...args);
7479
};

‎packages/eslint/lib/dtsGenerate.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export function generate(nodeModulesDirs: string[]) {
88
let dts = '';
99
let defId = 0;
1010

11-
line(`type S = 'error' | 'warn' | 'suggestion' | 'off';`);
11+
line(`type S = 'error' | 'warn' | 'suggestion' | 'off' | 0 | 1 | 2;`);
1212
line(`type O<T extends any[]> = S | [S, ...options: T];`);
1313
line(``);
1414
line(`export interface ESLintRulesConfig {`);

‎packages/eslint/lib/types.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
type S = 'error' | 'warn' | 'suggestion' | 'off';
1+
type S = 'error' | 'warn' | 'suggestion' | 'off' | 0 | 1 | 2;
22
type O<T extends any[]> = S | [S, ...options: T];
33

44
export interface ESLintRulesConfig {

0 commit comments

Comments
 (0)
Failed to load comments.