@code-pushup/eslint-plugin
Version:
Code PushUp plugin for detecting problems in source code using ESLint.📋
36 lines • 1.53 kB
JavaScript
import { distinct, exists, toArray, ui } from '@code-pushup/utils';
import { setupESLint } from '../../setup.js';
import { isRuleOff, optionsFromRuleEntry } from '../parse.js';
export async function loadRulesForLegacyConfig({ eslintrc, patterns, }) {
const eslint = await setupESLint(eslintrc);
const configs = await toArray(patterns).reduce(async (acc, pattern) => [
...(await acc),
(await eslint.calculateConfigForFile(pattern)),
], Promise.resolve([]));
const rulesIds = distinct(configs.flatMap(config => Object.keys(config.rules ?? {})));
const rulesMeta = eslint.getRulesMetaForResults([
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
{
messages: rulesIds.map(ruleId => ({ ruleId })),
suppressedMessages: [],
},
]);
return configs
.flatMap(config => Object.entries(config.rules ?? {}))
.map(([id, entry]) => {
if (entry == null || isRuleOff(entry)) {
return null;
}
const ruleMeta = rulesMeta[id];
if (!ruleMeta) {
ui().logger.warning(`Metadata not found for ESLint rule ${id}`);
return null;
}
// ignoring meta.defaultOptions to match legacy config handling in calculateConfigForFile
const { defaultOptions: _, ...meta } = ruleMeta;
const options = optionsFromRuleEntry(entry);
return { id, meta, options };
})
.filter(exists);
}
//# sourceMappingURL=legacy.js.map