renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
72 lines (71 loc) • 2.64 kB
JavaScript
import { regEx } from "../../../util/regex.js";
import { coerceString } from "../../../util/string.js";
import * as semver$1 from "semver";
//#region lib/modules/versioning/conan/common.ts
function makeVersion(version, options) {
const splitVersion = version.split(".");
const prerelease = semver$1.prerelease(version, options);
if (prerelease && !options.includePrerelease) {
if (!Number.isNaN(parseInt(prerelease.toString()[0], 10))) {
const stringVersion = `${splitVersion[0]}.${splitVersion[1]}.${splitVersion[2]}`;
return semver$1.valid(stringVersion, options);
}
return false;
}
if (options.loose && !semver$1.valid(version, options) && splitVersion.length !== 3) return semver$1.valid(semver$1.coerce(version, options), options);
return semver$1.valid(version, options);
}
function cleanVersion(version) {
if (version) return version.replace(regEx(/,|\[|\]|"|include_prerelease=|include_prerelease|loose=|True|False/g), "").trim();
return version;
}
function getOptions(input) {
let includePrerelease = false;
let loose = true;
if (input) {
includePrerelease = input.includes("include_prerelease") && !input.includes("include_prerelease=False");
loose = input.includes("loose=True") || !input.includes("loose=False");
}
return {
loose,
includePrerelease
};
}
function containsOperators(input) {
return regEx("[<=>^~]").test(input);
}
function matchesWithOptions(version, cleanRange, options) {
let cleanedVersion = version;
if (cleanedVersion && semver$1.prerelease(cleanedVersion) && options.includePrerelease) {
const coercedVersion = semver$1.coerce(cleanedVersion)?.raw;
cleanedVersion = coerceString(coercedVersion);
}
return semver$1.satisfies(cleanedVersion, cleanRange, options);
}
function findSatisfyingVersion(versions, range, compareRt) {
const options = getOptions(range);
let cur = null;
let curSV = null;
let index = 0;
let curIndex = -1;
for (const v of versions) {
const versionFromList = makeVersion(v, options);
if (typeof versionFromList === "string") {
const cleanedVersion = cleanVersion(versionFromList);
const options = getOptions(range);
if (matchesWithOptions(cleanedVersion, cleanVersion(range), options)) {
if (!cur || semver$1.compare(curSV, versionFromList, options) === compareRt) {
cur = versionFromList;
curIndex = index;
curSV = new semver$1.SemVer(cur, options);
}
}
}
index += 1;
}
if (curIndex >= 0) return versions[curIndex];
return null;
}
//#endregion
export { cleanVersion, containsOperators, findSatisfyingVersion, getOptions, makeVersion, matchesWithOptions };
//# sourceMappingURL=common.js.map