UNPKG

@elsikora/eslint-config

Version:

ESLint configuration vision of ElsiKora

47 lines (44 loc) 1.71 kB
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