UNPKG

renovate

Version:

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

55 lines (54 loc) 2.58 kB
import { regEx } from "../../../../util/regex.js"; import { checkIsValidDependency } from "../utils.js"; import { createDependency, mergeExtractionTemplate, mergeGroups, regexMatchAll } from "./utils.js"; import { isTruthy } from "@sindresorhus/is"; //#region lib/modules/manager/custom/regex/strategies.ts function handleAny(config, packageFileInfo) { const { content, packageFile } = packageFileInfo; return config.matchStrings.map((matchString) => regEx(matchString, "g")).flatMap((regex) => regexMatchAll(regex, content)).map((matchResult) => createDependency({ groups: matchResult.groups ?? ( /* istanbul ignore next: can this happen? */ {}), replaceString: matchResult[0] }, config, packageFileInfo)).filter(isTruthy).filter((dep) => checkIsValidDependency(dep, packageFile, "regex")); } function handleCombination(config, packageFileInfo) { const { content, packageFile } = packageFileInfo; const matches = config.matchStrings.map((matchString) => regEx(matchString, "g")).flatMap((regex) => regexMatchAll(regex, content)); if (!matches.length) return []; return [createDependency(matches.map((match) => ({ groups: match.groups ?? ( /* istanbul ignore next: can this happen? */ {}), replaceString: match?.groups?.currentValue ?? match?.groups?.currentDigest ? match[0] : void 0 })).reduce((base, addition) => mergeExtractionTemplate(base, addition)), config, packageFileInfo)].filter(isTruthy).filter((dep) => checkIsValidDependency(dep, packageFile, "regex")); } function handleRecursive(config, packageFileInfo) { const { content, packageFile } = packageFileInfo; return processRecursive({ content, packageFileInfo, config, index: 0, combinedGroups: {}, regexes: config.matchStrings.map((matchString) => regEx(matchString, "g")) }).filter(isTruthy).filter((dep) => checkIsValidDependency(dep, packageFile, "regex")); } function processRecursive(parameters) { const { content, index, combinedGroups, regexes, config, packageFileInfo } = parameters; if (regexes.length === index) { const result = createDependency({ groups: combinedGroups, replaceString: content }, config, packageFileInfo); return result ? [result] : /* istanbul ignore next: can this happen? */ []; } return regexMatchAll(regexes[index], content).flatMap((match) => { return processRecursive({ ...parameters, content: match[0], index: index + 1, combinedGroups: mergeGroups(combinedGroups, match.groups ?? {}) }); }); } //#endregion export { handleAny, handleCombination, handleRecursive }; //# sourceMappingURL=strategies.js.map