appcenter-cli
Version:
Command line tool for Visual Studio App Center
53 lines (52 loc) • 1.67 kB
JavaScript
;
// From appcenter testCloud utils
Object.defineProperty(exports, "__esModule", { value: true });
exports.CompareVersionNumbers = void 0;
/**
* Compare version numbers.
*
* @export
* @class CompareVersionNumbers
*/
var CompareVersionNumbers;
(function (CompareVersionNumbers) {
const regExStripAZ = /[^\.0-9]/g;
const regExStrip0 = /(\.0+)+$/;
/**
* Converts a version number string into an array of numbers.
*/
const getSegments = (version) => {
return version.replace(regExStripAZ, "").replace(regExStrip0, "").split(".").map(Number);
};
/**
* Finds the sorting difference between two version number arrays.
*/
const getDiff = (pre, pos) => {
const segmentsA = getSegments(pre);
const segmentsB = getSegments(pos);
let diff;
let i;
const minLength = Math.min(segmentsA.length, segmentsB.length);
for (i = 0; i < minLength; i++) {
diff = segmentsA[i] - segmentsB[i];
if (diff) {
return diff;
}
}
return segmentsA.length - segmentsB.length;
};
/**
* Compares version numbers in descending order.
*/
function compareDesc(versionA, versionB) {
return getDiff(versionB, versionA);
}
CompareVersionNumbers.compareDesc = compareDesc;
/**
* Compares version numbers in ascending order.
*/
function compareAsc(versionA, versionB) {
return getDiff(versionA, versionB);
}
CompareVersionNumbers.compareAsc = compareAsc;
})(CompareVersionNumbers = exports.CompareVersionNumbers || (exports.CompareVersionNumbers = {}));