ut-tools
Version:
Build and Release management automation package.
51 lines • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeRulesets = void 0;
function getExtension(extension) {
return Array.isArray(extension) ? extension[0] : extension;
}
function getExtensions(extensions) {
return (Array.isArray(extensions) ? extensions : [extensions]).map(getExtension);
}
function mergeRulesets(left, right, isOverride) {
const ruleset = {
...left,
...right,
};
if ('extends' in ruleset && 'extends' in ruleset) {
const rightExtensions = getExtensions(ruleset.extends);
ruleset.extends = [
...(Array.isArray(ruleset.extends) ? ruleset.extends : [ruleset.extends]).filter(ext => !rightExtensions.includes(getExtension(ext))),
...(Array.isArray(ruleset.extends) ? ruleset.extends : [ruleset.extends]),
];
}
if ('aliases' in left && 'aliases' in right) {
ruleset.aliases = {
...left.aliases,
...right.aliases,
};
}
if (!('rules' in left) || !('rules' in right))
return ruleset;
if (isOverride) {
ruleset.rules = {
...left.rules,
...right.rules,
};
}
else {
const r = ruleset;
if (!('extends' in r)) {
r.extends = left;
}
else if (Array.isArray(r.extends)) {
r.extends = [...r.extends, left];
}
else {
r.extends = [r.extends, left];
}
}
return ruleset;
}
exports.mergeRulesets = mergeRulesets;
//# sourceMappingURL=rulesets.js.map