renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
75 lines (74 loc) • 3.08 kB
JavaScript
import { compare, versionToString } from "./version.js";
//#region lib/modules/versioning/nuget/range.ts
function getFloatingRangeLowerBound(range) {
const { major, minor = 0, patch = 0, revision = 0, prerelease } = range;
const res = {
type: "nuget-version",
major,
minor,
patch,
revision
};
if (prerelease) {
const parts = prerelease.split(".");
const lastIdx = parts.length - 1;
const last = parts[lastIdx];
if (last === "*") parts[lastIdx] = "0";
else parts[lastIdx] = last.replace(/\*$/, "");
res.prerelease = parts.join(".");
}
return res;
}
function matches(v, r) {
if (r.type === "nuget-exact-range") return compare(v, r.version) === 0;
if (r.type === "nuget-floating-range") {
if (!r.prerelease && v.prerelease) return false;
return compare(v, getFloatingRangeLowerBound(r)) >= 0;
}
let minBoundMatches = false;
let maxBoundMatches = false;
const { min, minInclusive, max, maxInclusive } = r;
if (min) {
const cmp = compare(v, min.type === "nuget-version" ? min : getFloatingRangeLowerBound(min));
minBoundMatches = minInclusive ? cmp >= 0 : cmp > 0;
} else minBoundMatches = true;
if (max) {
if (!(v.prerelease && !max.prerelease)) {
const cmp = compare(v, max);
maxBoundMatches = maxInclusive ? cmp <= 0 : cmp < 0;
}
} else maxBoundMatches = true;
return minBoundMatches && maxBoundMatches;
}
function floatingComponentToString(component) {
const int = component / 10;
return int === 0 ? "*" : `${int}*`;
}
function coerceFloatingComponent(component) {
return component ? Math.floor(component / 10) * 10 : 0;
}
function rangeToString(range) {
if (range.type === "nuget-exact-range") return `[${versionToString(range.version)}]`;
if (range.type === "nuget-floating-range") {
const { major, minor, patch, revision, floating, prerelease } = range;
let res = "";
if (prerelease) res = `-${prerelease}`;
if (revision !== void 0) res = `.${floating === "revision" ? floatingComponentToString(revision) : `${revision}`}${res}`;
if (patch !== void 0) res = `.${floating === "patch" ? floatingComponentToString(patch) : `${patch}`}${res}`;
if (minor !== void 0) res = `.${floating === "minor" ? floatingComponentToString(minor) : `${minor}`}${res}`;
if (major !== void 0) res = `${floating === "major" ? floatingComponentToString(major) : `${major}`}${res}`;
return res;
}
const { min, max, minInclusive, maxInclusive } = range;
const leftBracket = minInclusive ? "[" : "(";
const rightBracket = maxInclusive ? "]" : ")";
if (min && max) return `${leftBracket}${min.type === "nuget-version" ? versionToString(min) : rangeToString(min)},${versionToString(max)}${rightBracket}`;
if (min) return `${leftBracket}${min.type === "nuget-version" ? versionToString(min) : rangeToString(min)},${rightBracket}`;
return `${leftBracket},${versionToString(max)}${rightBracket}`;
}
function tryBump(r, v, x) {
return matches(v, r) ? rangeToString(r) : x;
}
//#endregion
export { coerceFloatingComponent, getFloatingRangeLowerBound, matches, rangeToString, tryBump };
//# sourceMappingURL=range.js.map