@code-pushup/eslint-plugin
Version:
Code PushUp plugin for detecting problems in source code using ESLint.📋
40 lines • 1.56 kB
JavaScript
import ansis from 'ansis';
import { logger, pluralize, pluralizeToken, toArray } from '@code-pushup/utils';
import { formatMetaLog } from './format.js';
import { jsonHash } from './hash.js';
import { detectConfigVersion, selectRulesLoader } from './versions/index.js';
export async function listRules(targets) {
const version = await detectConfigVersion();
const loadRulesMap = selectRulesLoader(version);
logger.debug(formatMetaLog(`Detected ${version} config format`));
const rulesMap = await targets.reduce(async (acc, target) => {
const map = await acc;
const rules = await loadRulesMap(target);
logger.debug(formatMetaLog(`Found ${pluralizeToken('rule', rules.length)} for ${formatTarget(target)}`));
return rules.reduce(mergeRuleIntoMap, map);
}, Promise.resolve({}));
return Object.values(rulesMap).flatMap(Object.values);
}
function mergeRuleIntoMap(map, rule) {
return {
...map,
[rule.id]: {
...map[rule.id],
[jsonHash(rule.options)]: rule,
},
};
}
function formatTarget(target) {
const patterns = toArray(target.patterns);
return [
`${pluralize('pattern', patterns.length)} ${ansis.bold(patterns.join(' '))}`,
target.eslintrc && `using config ${ansis.bold(target.eslintrc)}`,
]
.filter(Boolean)
.join(' ');
}
export function expandWildcardRules(wildcard, rules) {
const prefix = wildcard.slice(0, -1);
return rules.filter(rule => rule.startsWith(prefix));
}
//# sourceMappingURL=rules.js.map