Skip to content

Commit 617936f

Browse files
authored
chore: add eslint core rules to rule-manifest.json (#404)
1 parent e62592b commit 617936f

File tree

2 files changed

+98
-3
lines changed

2 files changed

+98
-3
lines changed

packages/rslint-test-tools/rule-manifest.json

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@
66
"status": "full",
77
"failing_case": []
88
},
9+
{
10+
"name": "array-callback-return",
11+
"group": "eslint",
12+
"status": "partial-test",
13+
"failing_case": []
14+
},
915
{
1016
"name": "array-type",
1117
"group": "@typescript-eslint",
@@ -87,6 +93,12 @@
8793
"status": "full",
8894
"failing_case": []
8995
},
96+
{
97+
"name": "constructor-super",
98+
"group": "eslint",
99+
"status": "partial-test",
100+
"failing_case": []
101+
},
90102
{
91103
"name": "default-param-last",
92104
"group": "@typescript-eslint",
@@ -99,24 +111,96 @@
99111
"status": "full",
100112
"failing_case": []
101113
},
114+
{
115+
"name": "for-direction",
116+
"group": "eslint",
117+
"status": "partial-test",
118+
"failing_case": []
119+
},
120+
{
121+
"name": "getter-return",
122+
"group": "eslint",
123+
"status": "partial-test",
124+
"failing_case": []
125+
},
102126
{
103127
"name": "no-array-delete",
104128
"group": "@typescript-eslint",
105129
"status": "full",
106130
"failing_case": []
107131
},
132+
{
133+
"name": "no-async-promise-executor",
134+
"group": "eslint",
135+
"status": "partial-test",
136+
"failing_case": []
137+
},
138+
{
139+
"name": "no-await-in-loop",
140+
"group": "eslint",
141+
"status": "partial-test",
142+
"failing_case": []
143+
},
108144
{
109145
"name": "no-base-to-string",
110146
"group": "@typescript-eslint",
111147
"status": "full",
112148
"failing_case": []
113149
},
150+
{
151+
"name": "no-class-assign",
152+
"group": "eslint",
153+
"status": "partial-test",
154+
"failing_case": []
155+
},
156+
{
157+
"name": "no-compare-neg-zero",
158+
"group": "eslint",
159+
"status": "partial-test",
160+
"failing_case": []
161+
},
162+
{
163+
"name": "no-cond-assign",
164+
"group": "eslint",
165+
"status": "partial-test",
166+
"failing_case": []
167+
},
114168
{
115169
"name": "no-confusing-void-expression",
116170
"group": "@typescript-eslint",
117171
"status": "full",
118172
"failing_case": []
119173
},
174+
{
175+
"name": "no-const-assign",
176+
"group": "eslint",
177+
"status": "partial-test",
178+
"failing_case": []
179+
},
180+
{
181+
"name": "no-constant-binary-expression",
182+
"group": "eslint",
183+
"status": "partial-test",
184+
"failing_case": []
185+
},
186+
{
187+
"name": "no-constant-condition",
188+
"group": "eslint",
189+
"status": "partial-test",
190+
"failing_case": []
191+
},
192+
{
193+
"name": "no-constructor-return",
194+
"group": "eslint",
195+
"status": "partial-test",
196+
"failing_case": []
197+
},
198+
{
199+
"name": "no-debugger",
200+
"group": "eslint",
201+
"status": "partial-test",
202+
"failing_case": []
203+
},
120204
{
121205
"name": "no-duplicate-enum-values",
122206
"group": "@typescript-eslint",

scripts/gen-rule-manifest.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const path = require('path');
55

66
// Plugins root directory
77
const PLUGINS_DIR = path.join(__dirname, '../internal/plugins');
8+
const CORE_RULES_DIR = path.join(__dirname, '../internal/rules');
89
const TEST_CONFIG_PATH = path.join(
910
__dirname,
1011
'../packages/rslint-test-tools/rstest.config.mts',
@@ -18,6 +19,16 @@ const MANIFEST_PATH = path.join(
1819
'../packages/rslint-test-tools/rule-manifest.json',
1920
);
2021

22+
function getCoreRuleEntries() {
23+
// Collect rule directories from internal/rules/*
24+
if (!fs.existsSync(CORE_RULES_DIR)) return [];
25+
26+
return fs
27+
.readdirSync(CORE_RULES_DIR, { withFileTypes: true })
28+
.filter(d => d.isDirectory() && !d.name.startsWith('.'))
29+
.map(d => ({ rule: d.name, group: 'eslint' }));
30+
}
31+
2132
function getPluginRuleEntries() {
2233
// Collect rule directories from internal/plugins/{plugin}/rules/*
2334
if (!fs.existsSync(PLUGINS_DIR)) return [];
@@ -137,10 +148,10 @@ function getSkipCases(rule) {
137148

138149
function buildManifest() {
139150
const included = getIncludedRules();
140-
const pluginEntries = getPluginRuleEntries();
141-
const ruleSet = new Set(pluginEntries.map(e => e.rule));
151+
const ruleEntries = [...getPluginRuleEntries(), ...getCoreRuleEntries()];
152+
const ruleSet = new Set(ruleEntries.map(e => e.rule));
142153
const ruleToGroup = new Map();
143-
for (const e of pluginEntries) ruleToGroup.set(e.rule, e.group);
154+
for (const e of ruleEntries) ruleToGroup.set(e.rule, e.group);
144155
const rules = Array.from(ruleSet)
145156
.sort((a, b) => a.localeCompare(b))
146157
.map(rule => {

0 commit comments

Comments
 (0)