UNPKG

eslint-config-galex

Version:
67 lines (66 loc) 3.21 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeSortOverrides = exports.dropOverrideType = exports.storybookOverrideType = exports.tsOverrideType = exports.reactOverrideType = exports.jestConfigOverrideType = exports.jestOverrideType = void 0; const lodash_merge_1 = __importDefault(require("lodash.merge")); const createOverrideType = (type) => `eslint-config-galex/${type}`; exports.jestOverrideType = createOverrideType('jest'); exports.jestConfigOverrideType = createOverrideType('jest-config'); exports.reactOverrideType = createOverrideType('react'); exports.tsOverrideType = createOverrideType('typescript'); exports.storybookOverrideType = createOverrideType('storybook'); const dropOverrideType = (override) => { const copy = { ...override }; delete copy.overrideType; return copy; }; exports.dropOverrideType = dropOverrideType; /** * the lower number, the higher the priority of the override is */ const overrideOrder = { [exports.jestOverrideType]: 0, [exports.jestConfigOverrideType]: 0, [exports.storybookOverrideType]: 0, [exports.tsOverrideType]: 1, [exports.reactOverrideType]: 2, }; /** * @param {object[]} overrides */ const mergeSortOverrides = (overrides) => { return [...overrides] .reduce((carry, override) => { const isInternalOverride = !!override.overrideType; if (isInternalOverride) { const previousDefaultOverrideTypeIndex = carry.findIndex(o => o.overrideType === override.overrideType); if (previousDefaultOverrideTypeIndex > -1) { const previousOverride = carry[previousDefaultOverrideTypeIndex]; /* istanbul ignore next previousOverride must be present here */ const previousDefaultOverrideTypeFiles = previousOverride ? [...new Set(previousOverride.files)] : []; const nextDefaultOverrideTypeFiles = new Set(override.files); const hasIdenticalFilesArr = previousDefaultOverrideTypeFiles.every(file => nextDefaultOverrideTypeFiles.has(file)); if (!hasIdenticalFilesArr) { return [...carry, override]; } return carry.map((dataset, index) => index === previousDefaultOverrideTypeIndex ? (0, lodash_merge_1.default)(dataset, override) : dataset); } } return [...carry, override]; }, []) .sort((a, b) => { /* istanbul ignore next dumb conditionals to satisfy TS, don't have to test */ const priorityA = a.overrideType ? overrideOrder[a.overrideType] : -1; /* istanbul ignore next dumb conditionals to satisfy TS, don't have to test */ const priorityB = b.overrideType ? overrideOrder[b.overrideType] : -1; /* istanbul ignore next dumb conditionals to satisfy TS, don't have to test */ return (priorityB ?? -1) - (priorityA ?? -1); }); }; exports.mergeSortOverrides = mergeSortOverrides;