renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
295 lines • 9.47 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.api = exports.supportedRangeStrategies = exports.supportsRanges = exports.urls = exports.displayName = exports.id = void 0;
const parser_1 = require("./parser");
const range_1 = require("./range");
const version_1 = require("./version");
exports.id = 'nuget';
exports.displayName = 'NuGet';
exports.urls = [
'https://learn.microsoft.com/nuget/concepts/package-versioning',
'https://nugettools.azurewebsites.net/',
];
exports.supportsRanges = true;
exports.supportedRangeStrategies = ['pin', 'bump'];
class NugetVersioningApi {
isCompatible(version, _current) {
return this.isValid(version);
}
isSingleVersion(version) {
const r = (0, parser_1.parseRange)(version);
if (!r) {
return false;
}
return r.type === 'nuget-exact-range';
}
isStable(version) {
const v = (0, parser_1.parseVersion)(version);
if (v) {
return !v.prerelease;
}
const r = (0, parser_1.parseRange)(version);
if (!r || r.type !== 'nuget-exact-range') {
return false;
}
return !r.version.prerelease;
}
isValid(input) {
const v = (0, parser_1.parseVersion)(input);
if (v) {
return true;
}
const r = (0, parser_1.parseRange)(input);
if (r) {
return true;
}
return false;
}
isVersion(input) {
if (!input) {
return false;
}
const v = (0, parser_1.parseVersion)(input);
if (!v) {
return false;
}
return true;
}
getMajor(version) {
const v = (0, parser_1.parseVersion)(version);
if (!v) {
return null;
}
return v.major;
}
getMinor(version) {
const v = (0, parser_1.parseVersion)(version);
if (!v) {
return null;
}
return v.minor ?? null;
}
getPatch(version) {
const v = (0, parser_1.parseVersion)(version);
if (!v) {
return null;
}
return v.patch ?? null;
}
equals(version, other) {
const x = (0, parser_1.parseVersion)(version);
const y = (0, parser_1.parseVersion)(other);
if (!x || !y) {
return false;
}
return (0, version_1.compare)(x, y) === 0;
}
isGreaterThan(version, other) {
const x = (0, parser_1.parseVersion)(version);
const y = (0, parser_1.parseVersion)(other);
if (!x || !y) {
return false;
}
return (0, version_1.compare)(x, y) > 0;
}
isLessThanRange(version, range) {
const v = (0, parser_1.parseVersion)(version);
if (!v) {
return false;
}
const u = (0, parser_1.parseVersion)(range);
if (u) {
return (0, version_1.compare)(v, u) < 0;
}
const r = (0, parser_1.parseRange)(range);
if (!r) {
return false;
}
if (r.type === 'nuget-exact-range') {
return (0, version_1.compare)(v, r.version) < 0;
}
if (r.type === 'nuget-bracket-range') {
if (!r.min) {
return false;
}
const minBound = r.min.type === 'nuget-version'
? r.min
: (0, range_1.getFloatingRangeLowerBound)(r.min);
const cmp = (0, version_1.compare)(v, minBound);
return r.minInclusive ? cmp < 0 : cmp <= 0;
}
const minBound = (0, range_1.getFloatingRangeLowerBound)(r);
return (0, version_1.compare)(v, minBound) < 0;
}
getSatisfyingVersion(versions, range) {
const r = (0, parser_1.parseRange)(range);
if (r) {
let result = null;
let vMax;
for (const version of versions) {
const v = (0, parser_1.parseVersion)(version);
if (!v) {
continue;
}
if (!(0, range_1.matches)(v, r)) {
continue;
}
if (!vMax || (0, version_1.compare)(v, vMax) > 0) {
vMax = v;
result = version;
}
}
return result;
}
const u = (0, parser_1.parseVersion)(range);
if (u) {
let result = null;
let vMax;
for (const version of versions) {
const v = (0, parser_1.parseVersion)(version);
if (!v) {
continue;
}
if ((0, version_1.compare)(v, u) < 0) {
continue;
}
if (!vMax || (0, version_1.compare)(v, vMax) > 0) {
vMax = v;
result = version;
}
}
return result;
}
return null;
}
minSatisfyingVersion(versions, range) {
const r = (0, parser_1.parseRange)(range);
if (r) {
let result = null;
let vMin;
for (const version of versions) {
const v = (0, parser_1.parseVersion)(version);
if (!v) {
continue;
}
if (!(0, range_1.matches)(v, r)) {
continue;
}
if (!vMin || (0, version_1.compare)(v, vMin) < 0) {
result = version;
vMin = v;
}
}
return result;
}
const u = (0, parser_1.parseVersion)(range);
if (u) {
let result = null;
let vMin;
for (const version of versions) {
const v = (0, parser_1.parseVersion)(version);
if (!v) {
continue;
}
if ((0, version_1.compare)(v, u) < 0) {
continue;
}
if (!vMin || (0, version_1.compare)(v, vMin) < 0) {
result = version;
vMin = v;
}
}
return result;
}
return null;
}
getNewValue({ currentValue, rangeStrategy, currentVersion, newVersion, }) {
const v = (0, parser_1.parseVersion)(newVersion);
if (!v) {
return null;
}
if (rangeStrategy === 'pin') {
return (0, range_1.rangeToString)({ type: 'nuget-exact-range', version: v });
}
if (this.isVersion(currentValue)) {
return newVersion;
}
const r = (0, parser_1.parseRange)(currentValue);
if (!r) {
return null;
}
if (this.isLessThanRange(newVersion, currentValue)) {
return currentValue;
}
if (r.type === 'nuget-exact-range') {
return (0, range_1.rangeToString)({ type: 'nuget-exact-range', version: v });
}
if (r.type === 'nuget-floating-range') {
const floating = r.floating;
if (!floating) {
return (0, version_1.versionToString)(v);
}
const res = { ...r };
if (floating === 'major') {
res.major = (0, range_1.coerceFloatingComponent)(v.major);
return (0, range_1.tryBump)(res, v, currentValue);
}
res.major = v.major;
if (floating === 'minor') {
res.minor = (0, range_1.coerceFloatingComponent)(v.minor);
return (0, range_1.tryBump)(res, v, currentValue);
}
res.minor = v.minor ?? 0;
if (floating === 'patch') {
res.patch = (0, range_1.coerceFloatingComponent)(v.patch);
return (0, range_1.tryBump)(res, v, currentValue);
}
res.patch = v.patch ?? 0;
res.revision = (0, range_1.coerceFloatingComponent)(v.revision);
return (0, range_1.tryBump)(res, v, currentValue);
}
const res = { ...r };
if (!r.max) {
res.min = v;
res.minInclusive = true;
return (0, range_1.rangeToString)(res);
}
if ((0, range_1.matches)(v, r)) {
return currentValue;
}
if (!r.min) {
res.max = v;
res.maxInclusive = true;
return (0, range_1.rangeToString)(res);
}
res.max = v;
res.maxInclusive = true;
return (0, range_1.rangeToString)(res);
}
sortVersions(version, other) {
const x = (0, parser_1.parseVersion)(version);
const y = (0, parser_1.parseVersion)(other);
if (!x || !y) {
return 0;
}
return (0, version_1.compare)(x, y);
}
matches(version, range) {
const v = (0, parser_1.parseVersion)(version);
if (!v) {
return false;
}
const u = (0, parser_1.parseVersion)(range);
if (u) {
return (0, version_1.compare)(v, u) >= 0;
}
const r = (0, parser_1.parseRange)(range);
if (!r) {
return false;
}
return (0, range_1.matches)(v, r);
}
}
exports.api = new NugetVersioningApi();
exports.default = exports.api;
//# sourceMappingURL=index.js.map