Skip to content

Commit 7a43be2

Browse files
committed
chore: preserve local eslint rule overrides
1 parent cb92685 commit 7a43be2

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

eslint.config.mjs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +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)
2021
? recommendedTsRulesConfig.reduce((rules, config) => ({ ...rules, ...(config.rules || {}) }), {})
2122
: recommendedTsRulesConfig?.rules || {};
2223
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+
2335
const noopRule = {
2436
meta: { type: 'problem', docs: {}, schema: [] },
2537
create: () => ({}),
@@ -39,7 +51,7 @@ function normalizeConfig(config) {
3951
if (!ruleName.startsWith('@typescript-eslint/')) {
4052
return true;
4153
}
42-
return recommendedTsRules.has(ruleName);
54+
return recommendedTsRules.has(ruleName) || localTsRules.has(ruleName);
4355
}),
4456
);
4557
}
@@ -74,7 +86,7 @@ export default [
7486
},
7587
},
7688
},
77-
...compat.config(require('./.eslintrc.js')).map(normalizeConfig),
89+
...compat.config(legacyConfig).map(normalizeConfig),
7890
{
7991
rules: {
8092
'@typescript-eslint/no-empty-object-type': 'off',

0 commit comments

Comments
 (0)