{"version":3,"file":"compareVersions.mjs","names":[],"sources":["../../../src/utils/compareVersions.ts"],"sourcesContent":["/**\n * Compare two semver-like version strings (e.g. \"15.10.4\" vs \"15.3.5\").\n *\n * @param version1 - first version string\n * @param version2 - second version string\n * @param comparison - type of comparison: 'gt', 'lt', 'eq', 'gte', 'lte'\n * @returns boolean indicating if version1 meets the specified comparison condition vs version2\n */\nexport const compareVersions = (\n  version1: string,\n  comparison: '>' | '<' | '=' | '≥' | '≤',\n  version2: string\n): boolean => {\n  const v1Parts = version1.split('.').map(Number);\n  const v2Parts = version2.split('.').map(Number);\n  const maxLen = Math.max(v1Parts.length, v2Parts.length);\n\n  // Compute a basic -1, 0, or 1 comparison\n  let result = 0;\n  for (let i = 0; i < maxLen; i++) {\n    const part1 = v1Parts[i] || 0;\n    const part2 = v2Parts[i] || 0;\n    if (part1 > part2) {\n      result = 1;\n      break;\n    } else if (part1 < part2) {\n      result = -1;\n      break;\n    }\n  }\n\n  switch (comparison) {\n    case '>':\n      return result === 1;\n    case '<':\n      return result === -1;\n    case '=':\n      return result === 0;\n    case '≥':\n      return result === 0 || result === 1;\n    case '≤':\n      return result === 0 || result === -1;\n  }\n};\n"],"mappings":";;;;;;;;;AAQA,MAAa,mBACX,UACA,YACA,aACY;CACZ,MAAM,UAAU,SAAS,MAAM,IAAI,CAAC,IAAI,OAAO;CAC/C,MAAM,UAAU,SAAS,MAAM,IAAI,CAAC,IAAI,OAAO;CAC/C,MAAM,SAAS,KAAK,IAAI,QAAQ,QAAQ,QAAQ,OAAO;CAGvD,IAAI,SAAS;AACb,MAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,KAAK;EAC/B,MAAM,QAAQ,QAAQ,MAAM;EAC5B,MAAM,QAAQ,QAAQ,MAAM;AAC5B,MAAI,QAAQ,OAAO;AACjB,YAAS;AACT;aACS,QAAQ,OAAO;AACxB,YAAS;AACT;;;AAIJ,SAAQ,YAAR;EACE,KAAK,IACH,QAAO,WAAW;EACpB,KAAK,IACH,QAAO,WAAW;EACpB,KAAK,IACH,QAAO,WAAW;EACpB,KAAK,IACH,QAAO,WAAW,KAAK,WAAW;EACpC,KAAK,IACH,QAAO,WAAW,KAAK,WAAW"}