Skip to content

Commit 40ff399

Browse files
committed
chore: preserve local eslint rule overrides
1 parent 11a341a commit 40ff399

1 file changed

Lines changed: 15 additions & 6 deletions

File tree

eslint.config.mjs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,23 @@ 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)
20-
? recommendedTsRulesConfig.reduce(
21-
(rules, config) => ({ ...rules, ...(config.rules || {}) }),
22-
{},
23-
)
21+
? recommendedTsRulesConfig.reduce((rules, config) => ({ ...rules, ...(config.rules || {}) }), {})
2422
: recommendedTsRulesConfig?.rules || {};
2523
const recommendedTsRules = new Set(Object.keys(recommendedTsRulesObject));
24+
25+
function hasCurrentTsRule(ruleName) {
26+
const tsRuleName = ruleName.replace('@typescript-eslint/', '');
27+
return Boolean(tsEslintPlugin.rules[tsRuleName]);
28+
}
29+
const localTsRules = new Set(
30+
Object.keys(legacyConfig.rules || {}).filter(
31+
(ruleName) => ruleName.startsWith('@typescript-eslint/') && hasCurrentTsRule(ruleName),
32+
),
33+
);
34+
2635
const noopRule = {
2736
meta: { type: 'problem', docs: {}, schema: [] },
2837
create: () => ({}),
@@ -42,7 +51,7 @@ function normalizeConfig(config) {
4251
if (!ruleName.startsWith('@typescript-eslint/')) {
4352
return true;
4453
}
45-
return recommendedTsRules.has(ruleName);
54+
return recommendedTsRules.has(ruleName) || localTsRules.has(ruleName);
4655
}),
4756
);
4857
}
@@ -77,7 +86,7 @@ export default [
7786
},
7887
},
7988
},
80-
...compat.config(require('./.eslintrc.js')).map(normalizeConfig),
89+
...compat.config(legacyConfig).map(normalizeConfig),
8190
{
8291
rules: {
8392
'@typescript-eslint/no-empty-object-type': 'off',

0 commit comments

Comments
 (0)