eslint-config-galex
Version:
personal ESLint ruleset of galex
58 lines (57 loc) • 1.98 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.applyFlags = void 0;
const severityLevels = {
off: 0,
warn: 1,
error: 2,
};
const convertRuleToEslintInternalValue = options => {
if (Array.isArray(options)) {
const [ruleLevel, ...rest] = options;
if (typeof ruleLevel === 'number') {
return options;
}
return [severityLevels[ruleLevel], ...rest];
}
return typeof options === 'number' ? options : severityLevels[options];
};
const incrementalAdoptionRuleDowngrade = value => {
const valueToForward = typeof value === 'number' || typeof value === 'string' ? value : value[0];
if (typeof valueToForward === 'string') {
if (valueToForward === 'error') {
return 'warn';
}
return 'off';
}
return valueToForward === 2 ? 1 : 0;
};
const blankSlateDowngrade = () => {
return 'off';
};
const createFlagFilterArray = ({ convertToESLintInternals, incrementalAdoption, blankSlate, }) => {
return [
incrementalAdoption && incrementalAdoptionRuleDowngrade,
blankSlate && blankSlateDowngrade,
convertToESLintInternals && convertRuleToEslintInternalValue,
].filter((fn) => fn !== false);
};
const applyFlags = (rules, flags) => {
const convertToESLintInternals = flags.convertToESLintInternals ?? false;
const incrementalAdoption = flags.incrementalAdoption ?? false;
const blankSlate = flags.blankSlate ?? false;
const hasFlags = convertToESLintInternals || incrementalAdoption || blankSlate;
if (!hasFlags) {
return rules;
}
const fnsToApply = createFlagFilterArray({
blankSlate,
convertToESLintInternals,
incrementalAdoption,
});
return Object.fromEntries(Object.entries(rules).map(([ruleName, options]) => [
ruleName,
fnsToApply.reduce((acc, fn) => fn(acc), options),
]));
};
exports.applyFlags = applyFlags;
;