Skip to content

Commit 049752f

Browse files
committed
chore: preserve local eslint rule overrides
1 parent f9a191e commit 049752f

1 file changed

Lines changed: 15 additions & 2 deletions

File tree

eslint.config.mjs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const compat = new FlatCompat({
1515
allConfig: js.configs.all,
1616
});
1717

18+
const legacyConfig = require('./.eslintrc.js');
1819
const recommendedTsRulesConfig = tsEslintPlugin.configs.recommended;
1920
const recommendedTsRulesObject = Array.isArray(recommendedTsRulesConfig)
2021
? recommendedTsRulesConfig.reduce(
@@ -23,6 +24,18 @@ const recommendedTsRulesObject = Array.isArray(recommendedTsRulesConfig)
2324
)
2425
: recommendedTsRulesConfig?.rules || {};
2526
const recommendedTsRules = new Set(Object.keys(recommendedTsRulesObject));
27+
28+
function hasCurrentTsRule(ruleName) {
29+
const tsRuleName = ruleName.replace('@typescript-eslint/', '');
30+
return Boolean(tsEslintPlugin.rules[tsRuleName]);
31+
}
32+
const localTsRules = new Set(
33+
Object.keys(legacyConfig.rules || {}).filter(
34+
ruleName =>
35+
ruleName.startsWith('@typescript-eslint/') && hasCurrentTsRule(ruleName),
36+
),
37+
);
38+
2639
const noopRule = {
2740
meta: { type: 'problem', docs: {}, schema: [] },
2841
create: () => ({}),
@@ -42,7 +55,7 @@ function normalizeConfig(config) {
4255
if (!ruleName.startsWith('@typescript-eslint/')) {
4356
return true;
4457
}
45-
return recommendedTsRules.has(ruleName);
58+
return recommendedTsRules.has(ruleName) || localTsRules.has(ruleName);
4659
}),
4760
);
4861
}
@@ -77,7 +90,7 @@ export default [
7790
},
7891
},
7992
},
80-
...compat.config(require('./.eslintrc.js')).map(normalizeConfig),
93+
...compat.config(legacyConfig).map(normalizeConfig),
8194
{
8295
rules: {
8396
'@typescript-eslint/no-empty-object-type': 'off',

0 commit comments

Comments
 (0)