'use strict';

Object.defineProperty(exports, '__esModule', { value: true });

/**
 * 版本比较
 * @param {string} v1 第一个版本
 * @param {string} v2 第二个版本
 * @returns 比较结果，1 前者大，-1 后者大，0 二者相同
 * @example
 * ```ts
 * compareVersion('1.1.1', '1.2.1')
 * // -1
 * ```
 */
function compareVersion() {
  var v1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
  var v2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
  var trimmedV1 = trimVersion(v1);
  var trimmedV2 = trimVersion(v2);
  // 处理空字符串的情况
  if (!trimmedV1 && !trimmedV2) return 0;
  if (!trimmedV1) return -1;
  if (!trimmedV2) return 1;
  var v1List = trimmedV1.split('.');
  var v2List = trimmedV2.split('.');
  var len = Math.max(v1List.length, v2List.length);
  while (v1List.length < len) {
    v1List.push('0');
  }
  while (v2List.length < len) {
    v2List.push('0');
  }
  for (var i = 0; i < len; i++) {
    var num1 = parseInt(v1List[i], 10);
    var num2 = parseInt(v2List[i], 10);
    if (num1 > num2) {
      return 1;
    }
    if (num1 < num2) {
      return -1;
    }
  }
  return 0;
}
function trimVersion() {
  var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
  return str.replace(/^[\^|~]/, '');
}

exports.compareVersion = compareVersion;
