@code-pushup/eslint-plugin
Version:
Code PushUp plugin for detecting problems in source code using ESLint.📋
33 lines • 1.47 kB
JavaScript
import { asyncSequential, 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 asyncSequential(toArray(patterns), pattern => eslint.calculateConfigForFile(pattern));
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