"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
  for (var name in all)
    __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  // If the importer is in node compatibility mode or this is not an ESM
  // file that has been converted to a CommonJS file using a Babel-
  // compatible transform (i.e. "__esModule" has not been set), then set
  // "default" to the CommonJS "module.exports" for node compatibility.
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var versioning_utils_exports = {};
__export(versioning_utils_exports, {
  versioningUtils: () => versioningUtils
});
module.exports = __toCommonJS(versioning_utils_exports);
var import_lodash = __toESM(require("lodash"));
var import_next_schema = require("./../../ricos-schema/next-schema/index.js");
const toVersion = (versionString) => {
  return versionString.split(".").map((literal) => {
    const numeric = parseInt(literal, 10);
    return import_lodash.default.isNaN(numeric) ? 0 : numeric;
  }).slice(0, 3);
};
const compareVersions = (left, right) => {
  const leftVersion = toVersion(left);
  const rightVersion = toVersion(right);
  const diff = leftVersion.map((left2, idx) => Math.sign(left2 - rightVersion[idx]));
  return diff.find((num) => num !== 0) || 0;
};
const evaluations = {
  "<": (left, right) => compareVersions(left, right) < 0,
  ">": (left, right) => compareVersions(left, right) > 0,
  "=": (left, right) => compareVersions(left, right) === 0,
  "<=": (left, right) => compareVersions(left, right) <= 0,
  ">=": (left, right) => compareVersions(left, right) >= 0
};
const evaluateVersion = (tested, semver) => {
  const [, operator, version] = /([<>=]{0,2})(.*)/gm.exec(semver);
  return evaluations[operator || "="](tested, version);
};
const versioningUtils = {
  lessThan: (left, right) => compareVersions(left, right) < 0,
  greaterThan: (left, right) => compareVersions(left, right) > 0,
  equal: (left, right) => compareVersions(left, right) === 0,
  compare: compareVersions,
  currentVersion: import_next_schema.RICOS_VERSION,
  evaluate: evaluateVersion
};
//# sourceMappingURL=versioning-utils.js.map
