renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
207 lines • 6.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.api = exports.supportedRangeStrategies = exports.supportsRanges = exports.urls = exports.displayName = exports.id = void 0;
const tslib_1 = require("tslib");
const regex_1 = require("../../../util/regex");
const maven_1 = tslib_1.__importDefault(require("../maven"));
const compare_1 = require("./compare");
exports.id = 'gradle';
exports.displayName = 'Gradle';
exports.urls = [
'https://docs.gradle.org/current/userguide/single_versions.html#version_ordering',
];
exports.supportsRanges = true;
exports.supportedRangeStrategies = ['pin', 'bump'];
const equals = (a, b) => (0, compare_1.compare)(a, b) === 0;
const getMajor = (version) => {
const tokens = (0, compare_1.parse)(version?.replace((0, regex_1.regEx)(/^v/i), ''));
if (tokens) {
const majorToken = tokens?.[0];
if (majorToken && majorToken.type === compare_1.TokenType.Number) {
return majorToken.val;
}
}
return null;
};
const getMinor = (version) => {
const tokens = (0, compare_1.parse)(version?.replace((0, regex_1.regEx)(/^v/i), ''));
if (tokens) {
const majorToken = tokens[0];
const minorToken = tokens[1];
if (majorToken &&
majorToken.type === compare_1.TokenType.Number &&
minorToken &&
minorToken.type === compare_1.TokenType.Number) {
return minorToken.val;
}
return 0;
}
return null;
};
const getPatch = (version) => {
const tokens = (0, compare_1.parse)(version?.replace((0, regex_1.regEx)(/^v/i), ''));
if (tokens) {
const majorToken = tokens[0];
const minorToken = tokens[1];
const patchToken = tokens[2];
if (majorToken &&
majorToken.type === compare_1.TokenType.Number &&
minorToken &&
minorToken.type === compare_1.TokenType.Number &&
patchToken &&
patchToken.type === compare_1.TokenType.Number) {
return patchToken.val;
}
return 0;
}
return null;
};
const isGreaterThan = (a, b) => (0, compare_1.compare)(a, b) === 1;
const unstable = new Set([
'dev',
'a',
'alpha',
'b',
'beta',
'm',
'mt',
'milestone',
'rc',
'cr',
'preview',
'snapshot',
]);
const isStable = (version) => {
const tokens = (0, compare_1.parse)(version);
if (tokens) {
for (const token of tokens) {
if (token.type === compare_1.TokenType.String) {
const val = token.val.toString().toLowerCase();
if (unstable.has(val)) {
return false;
}
}
}
return true;
}
return false;
};
const matches = (a, b) => {
const versionTokens = (0, compare_1.parse)(a);
if (!a || !versionTokens || !b) {
return false;
}
if ((0, compare_1.isVersion)(b)) {
return equals(a, b);
}
const singleVersionRange = (0, compare_1.parseSingleVersionRange)(b);
if (singleVersionRange) {
const { val } = singleVersionRange;
return equals(a, val);
}
const prefixRange = (0, compare_1.parsePrefixRange)(b);
if (prefixRange) {
const tokens = prefixRange.tokens;
if (tokens.length === 0) {
return true;
}
const x = versionTokens
.slice(0, tokens.length)
.map(({ val }) => val)
.join('.');
const y = tokens.map(({ val }) => val).join('.');
return equals(x, y);
}
const mavenBasedRange = (0, compare_1.parseMavenBasedRange)(b);
if (!mavenBasedRange) {
return false;
}
const { leftBound, leftVal, rightBound, rightVal } = mavenBasedRange;
let leftResult = true;
let rightResult = true;
if (leftVal) {
leftResult =
leftBound === 'exclusive'
? (0, compare_1.compare)(leftVal, a) === -1
: (0, compare_1.compare)(leftVal, a) !== 1;
}
if (rightVal) {
rightResult =
rightBound === 'exclusive'
? (0, compare_1.compare)(a, rightVal) === -1
: (0, compare_1.compare)(a, rightVal) !== 1;
}
return leftResult && rightResult;
};
function getSatisfyingVersion(versions, range) {
return versions.reduce((result, version) => {
if (matches(version, range)) {
if (!result) {
return version;
}
if (isGreaterThan(version, result)) {
return version;
}
}
return result;
}, null);
}
function minSatisfyingVersion(versions, range) {
return versions.reduce((result, version) => {
if (matches(version, range)) {
if (!result) {
return version;
}
if ((0, compare_1.compare)(version, result) === -1) {
return version;
}
}
return result;
}, null);
}
function getNewValue({ currentValue, rangeStrategy, newVersion, }) {
if ((0, compare_1.isVersion)(currentValue) || rangeStrategy === 'pin') {
return newVersion;
}
// Check if our version is of the form "1.2.+"
const prefixRange = (0, compare_1.parsePrefixRange)(currentValue);
const parsedNewVersion = (0, compare_1.parse)(newVersion);
if (prefixRange && parsedNewVersion) {
if (prefixRange.tokens.length > 0) {
if (prefixRange.tokens.length <= parsedNewVersion.length) {
const newPrefixed = prefixRange.tokens
.map((_, i) => parsedNewVersion[i].val)
.join('.');
return `${newPrefixed}.+`;
}
else {
// our new version is shorter than our prefix range so drop our prefix range
return newVersion;
}
}
else {
// our version is already "+" which includes ever version
return null;
}
}
return maven_1.default.getNewValue({ currentValue, rangeStrategy, newVersion });
}
exports.api = {
equals,
getMajor,
getMinor,
getPatch,
isCompatible: compare_1.isVersion,
isGreaterThan,
isSingleVersion: compare_1.isVersion,
isStable,
isValid: compare_1.isValid,
isVersion: compare_1.isVersion,
matches,
getSatisfyingVersion,
minSatisfyingVersion,
getNewValue,
sortVersions: compare_1.compare,
};
exports.default = exports.api;
//# sourceMappingURL=index.js.map