@elsikora/eslint-config
Version:
ESLint configuration vision of ElsiKora
47 lines (44 loc) • 1.71 kB
JavaScript
import { builtinRules } from 'eslint/use-at-your-own-risk';
// eslint-disable-next-line @elsikora/sonar/deprecation
/**
* Creates a virtual ESLint plugin from the provided configurations
* @param {Array<Linter.Config>} configs - The ESLint configurations to use
* @param {string} prefix - The prefix to use for the virtual plugin
* @returns {Array<Linter.Config>} An array of ESLint configurations with the virtual plugin
*/
function createVirtualEslintPlugin(configs, prefix = "@elsikora/javascript") {
const result = [];
const virtualPluginRules = {};
// eslint-disable-next-line @elsikora/sonar/deprecation
for (const [ruleName, rule] of builtinRules) {
virtualPluginRules[ruleName] = rule;
}
const virtualPlugin = {
rules: virtualPluginRules,
};
result.push({
plugins: {
[prefix]: virtualPlugin,
},
});
for (const config of configs) {
const newConfig = { ...config };
if (newConfig.rules) {
const prefixedRules = {};
for (const [ruleName, ruleValue] of Object.entries(newConfig.rules)) {
// eslint-disable-next-line @elsikora/sonar/deprecation
if (!ruleName.includes("/") && [...builtinRules.keys()].includes(ruleName)) {
prefixedRules[`${prefix}/${ruleName}`] = ruleValue;
}
else {
prefixedRules[ruleName] = ruleValue;
}
}
newConfig.rules = prefixedRules;
}
result.push(newConfig);
}
return result;
}
export { createVirtualEslintPlugin };
//# sourceMappingURL=create-virtual-eslint-plugin.utility.js.map