UNPKG

renovate

Version:

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

93 lines (92 loc) 2.82 kB
import { coerceString } from "../../../util/string.js"; import { QualifierTypes, autoExtendMavenRange, compare, isSingleVersion as isVersion, isValid, parseRange, qualifierType, tokenize } from "./compare.js"; //#region lib/modules/versioning/maven/index.ts const id = "maven"; function equals(a, b) { return compare(a, b) === 0; } function matches(a, b) { if (!b) return false; if (isVersion(b)) return equals(a, b); const ranges = parseRange(b); if (!ranges) return false; return ranges.reduce((result, range) => { if (result) return result; const { leftType, leftValue, rightType, rightValue } = range; let leftResult = true; let rightResult = true; if (leftValue) leftResult = leftType === "EXCLUDING_POINT" ? compare(leftValue, a) === -1 : compare(leftValue, a) !== 1; if (rightValue) rightResult = rightType === "EXCLUDING_POINT" ? compare(a, rightValue) === -1 : compare(a, rightValue) !== 1; return leftResult && rightResult; }, false); } function getMajor(version) { if (isVersion(version)) return +tokenize(version)[0].val; return null; } function getMinor(version) { if (isVersion(version)) { const minorToken = tokenize(version)[1]; if (minorToken?.type === "TYPE_NUMBER") return +minorToken.val; return 0; } return null; } function getPatch(version) { if (isVersion(version)) { const tokens = tokenize(version); const minorToken = tokens[1]; const patchToken = tokens[2]; if (patchToken && minorToken.type === "TYPE_NUMBER" && patchToken.type === "TYPE_NUMBER") return +patchToken.val; return 0; } return null; } function isGreaterThan(a, b) { return compare(a, b) === 1; } function isStable(version) { if (isVersion(version)) { const tokens = tokenize(version); for (const token of tokens) if (token.type === "TYPE_QUALIFIER") { const qualType = qualifierType(token); if (qualType && qualType < QualifierTypes.Release) return false; } return true; } return false; } // istanbul ignore next 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 getNewValue({ currentValue, rangeStrategy, newVersion }) { if (isVersion(currentValue) || rangeStrategy === "pin") return newVersion; return coerceString(autoExtendMavenRange(currentValue, newVersion), currentValue); } const api = { equals, getMajor, getMinor, getPatch, isCompatible: isVersion, isGreaterThan, isSingleVersion: isVersion, isStable, isValid, isVersion, matches, getSatisfyingVersion, minSatisfyingVersion: getSatisfyingVersion, getNewValue, sortVersions: compare }; //#endregion export { api, api as default, id, isValid }; //# sourceMappingURL=index.js.map