@n3okill/utils
Version:
Many javascript helpers
61 lines • 2.22 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.versionCompare = versionCompare;
const isUndefined_1 = require("../type/isUndefined");
const convertToNumber_1 = require("./convertToNumber");
/**
* @internal
* @param flag
* @param version
* @returns
*/
function split(flag, version) {
if (flag) {
const splited = version.split("-");
const tail = splited[1].split(".");
const _version = splited[0].split(".");
return _version.concat(tail);
}
return version.split(".");
}
/**
* Compare versions
* @param v1
* @param v2
* @returns
*/
function versionCompare(v1, v2) {
const flag1 = v1.indexOf("-") > -1;
const flag2 = v2.indexOf("-") > -1;
const arr1 = (0, convertToNumber_1.convertToNumber)(split(flag1, v1));
const arr2 = (0, convertToNumber_1.convertToNumber)(split(flag2, v2));
const length = Math.max(arr1.length, arr2.length);
for (let i = 0; i < length; i++) {
// eslint-disable-next-line security/detect-object-injection
if (i === 3 && ((0, isUndefined_1.isUndefined)(arr1[i]) || (0, isUndefined_1.isUndefined)(arr2[i]))) {
// eslint-disable-next-line security/detect-object-injection
if ((0, isUndefined_1.isUndefined)(arr1[i]) && isNaN(arr2[i])) {
return 1;
// eslint-disable-next-line security/detect-object-injection
}
else if (isNaN(arr1[i]) && (0, isUndefined_1.isUndefined)(arr2[i])) {
return -1;
}
}
// eslint-disable-next-line security/detect-object-injection
if ((0, isUndefined_1.isUndefined)(arr1[i]) || (0, isUndefined_1.isUndefined)(arr2[i])) {
// eslint-disable-next-line security/detect-object-injection
return (0, isUndefined_1.isUndefined)(arr1[i]) ? -1 : 1;
}
// eslint-disable-next-line security/detect-object-injection
if (arr1[i] > arr2[i]) {
return 1;
// eslint-disable-next-line security/detect-object-injection
}
else if (arr1[i] < arr2[i]) {
return -1;
}
}
return 0;
}
//# sourceMappingURL=versionCompare.js.map
;