UNPKG

@n3okill/utils

Version:
61 lines 2.22 kB
"use strict"; 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