UNPKG

renovate

Version:

Automated dependency updates. Flexible so you don't need to be.

83 lines 3.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.massageConfig = massageConfig; const tslib_1 = require("tslib"); const is_1 = tslib_1.__importDefault(require("@sindresorhus/is")); const clone_1 = require("../util/clone"); const options_1 = require("./options"); const options = (0, options_1.getOptions)(); let allowedStrings; // Returns a massaged config function massageConfig(config) { if (!allowedStrings) { allowedStrings = []; options.forEach((option) => { if (option.allowString) { allowedStrings.push(option.name); } }); } const massagedConfig = (0, clone_1.clone)(config); for (const [key, val] of Object.entries(config)) { if (allowedStrings.includes(key) && is_1.default.string(val)) { massagedConfig[key] = [val]; } else if (is_1.default.array(val)) { massagedConfig[key] = []; val.forEach((item) => { if (is_1.default.object(item)) { massagedConfig[key].push(massageConfig(item)); } else { massagedConfig[key].push(item); } }); } else if (is_1.default.object(val) && key !== 'encrypted') { massagedConfig[key] = massageConfig(val); } } if (is_1.default.nonEmptyArray(massagedConfig.packageRules)) { let newRules = []; const updateTypes = [ 'major', 'minor', 'patch', 'pin', 'digest', 'rollback', ]; for (const rule of massagedConfig.packageRules) { newRules.push(rule); for (const [key, val] of Object.entries(rule)) { if (updateTypes.includes(key)) { let newRule = (0, clone_1.clone)(rule); Object.keys(newRule).forEach((newKey) => { if (!(newKey.startsWith(`match`) || newKey.startsWith('exclude'))) { delete newRule[newKey]; } }); newRule.matchUpdateTypes = rule.matchUpdateTypes ?? []; newRule.matchUpdateTypes.push(key); newRule = { ...newRule, ...val }; newRules.push(newRule); } } } for (const rule of newRules) { updateTypes.forEach((updateType) => { delete rule[updateType]; }); } newRules = newRules.filter((rule) => { if (Object.keys(rule).every((key) => key.startsWith('match') || key.startsWith('exclude'))) { // Exclude rules which contain only match or exclude options return false; } return true; }); massagedConfig.packageRules = newRules; } return massagedConfig; } //# sourceMappingURL=massage.js.map