{"version":3,"file":"compare.cjs","names":[],"sources":["../../../src/utils/semver/compare.ts"],"sourcesContent":["// fork from https://github.com/originjs/vite-plugin-federation/blob/v1.1.12/packages/lib/src/utils/semver/index.ts\n// Copyright (c)\n// vite-plugin-federation is licensed under Mulan PSL v2.\n// You can use this software according to the terms and conditions of the Mulan PSL v2.\n// You may obtain a copy of Mulan PSL v2 at:\n//      http://license.coscl.org.cn/MulanPSL2\n// THIS SOFTWARE IS PROVIDED ON AN \"AS IS\" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.\n// See the Mulan PSL v2 for more details.\n\nexport interface CompareAtom {\n  operator: string;\n  version: string;\n  major: string;\n  minor: string;\n  patch: string;\n  preRelease?: string[];\n}\n\nfunction compareAtom(\n  rangeAtom: string | number,\n  versionAtom: string | number,\n): number {\n  rangeAtom = Number(rangeAtom) || rangeAtom;\n  versionAtom = Number(versionAtom) || versionAtom;\n\n  if (rangeAtom > versionAtom) {\n    return 1;\n  }\n\n  if (rangeAtom === versionAtom) {\n    return 0;\n  }\n\n  return -1;\n}\n\nfunction comparePreRelease(\n  rangeAtom: CompareAtom,\n  versionAtom: CompareAtom,\n): number {\n  const { preRelease: rangePreRelease } = rangeAtom;\n  const { preRelease: versionPreRelease } = versionAtom;\n\n  if (rangePreRelease === undefined && Boolean(versionPreRelease)) {\n    return 1;\n  }\n\n  if (Boolean(rangePreRelease) && versionPreRelease === undefined) {\n    return -1;\n  }\n\n  if (rangePreRelease === undefined && versionPreRelease === undefined) {\n    return 0;\n  }\n\n  for (let i = 0, n = rangePreRelease!.length; i <= n; i++) {\n    const rangeElement = rangePreRelease![i];\n    const versionElement = versionPreRelease![i];\n\n    if (rangeElement === versionElement) {\n      continue;\n    }\n\n    if (rangeElement === undefined && versionElement === undefined) {\n      return 0;\n    }\n\n    if (!rangeElement) {\n      return 1;\n    }\n\n    if (!versionElement) {\n      return -1;\n    }\n\n    return compareAtom(rangeElement, versionElement);\n  }\n\n  return 0;\n}\n\nfunction compareVersion(\n  rangeAtom: CompareAtom,\n  versionAtom: CompareAtom,\n): number {\n  return (\n    compareAtom(rangeAtom.major, versionAtom.major) ||\n    compareAtom(rangeAtom.minor, versionAtom.minor) ||\n    compareAtom(rangeAtom.patch, versionAtom.patch) ||\n    comparePreRelease(rangeAtom, versionAtom)\n  );\n}\n\nfunction eq(rangeAtom: CompareAtom, versionAtom: CompareAtom): boolean {\n  return rangeAtom.version === versionAtom.version;\n}\n\nexport function compare(\n  rangeAtom: CompareAtom,\n  versionAtom: CompareAtom,\n): boolean {\n  switch (rangeAtom.operator) {\n    case '':\n    case '=':\n      return eq(rangeAtom, versionAtom);\n    case '>':\n      return compareVersion(rangeAtom, versionAtom) < 0;\n    case '>=':\n      return (\n        eq(rangeAtom, versionAtom) || compareVersion(rangeAtom, versionAtom) < 0\n      );\n    case '<':\n      return compareVersion(rangeAtom, versionAtom) > 0;\n    case '<=':\n      return (\n        eq(rangeAtom, versionAtom) || compareVersion(rangeAtom, versionAtom) > 0\n      );\n    case undefined: {\n      // mean * or x -> all versions\n      return true;\n    }\n    default:\n      return false;\n  }\n}\n"],"mappings":";;AAkBA,SAAS,YACP,WACA,aACQ;AACR,aAAY,OAAO,UAAU,IAAI;AACjC,eAAc,OAAO,YAAY,IAAI;AAErC,KAAI,YAAY,YACd,QAAO;AAGT,KAAI,cAAc,YAChB,QAAO;AAGT,QAAO;;AAGT,SAAS,kBACP,WACA,aACQ;CACR,MAAM,EAAE,YAAY,oBAAoB;CACxC,MAAM,EAAE,YAAY,sBAAsB;AAE1C,KAAI,oBAAoB,UAAa,QAAQ,kBAAkB,CAC7D,QAAO;AAGT,KAAI,QAAQ,gBAAgB,IAAI,sBAAsB,OACpD,QAAO;AAGT,KAAI,oBAAoB,UAAa,sBAAsB,OACzD,QAAO;AAGT,MAAK,IAAI,IAAI,GAAG,IAAI,gBAAiB,QAAQ,KAAK,GAAG,KAAK;EACxD,MAAM,eAAe,gBAAiB;EACtC,MAAM,iBAAiB,kBAAmB;AAE1C,MAAI,iBAAiB,eACnB;AAGF,MAAI,iBAAiB,UAAa,mBAAmB,OACnD,QAAO;AAGT,MAAI,CAAC,aACH,QAAO;AAGT,MAAI,CAAC,eACH,QAAO;AAGT,SAAO,YAAY,cAAc,eAAe;;AAGlD,QAAO;;AAGT,SAAS,eACP,WACA,aACQ;AACR,QACE,YAAY,UAAU,OAAO,YAAY,MAAM,IAC/C,YAAY,UAAU,OAAO,YAAY,MAAM,IAC/C,YAAY,UAAU,OAAO,YAAY,MAAM,IAC/C,kBAAkB,WAAW,YAAY;;AAI7C,SAAS,GAAG,WAAwB,aAAmC;AACrE,QAAO,UAAU,YAAY,YAAY;;AAG3C,SAAgB,QACd,WACA,aACS;AACT,SAAQ,UAAU,UAAlB;EACE,KAAK;EACL,KAAK,IACH,QAAO,GAAG,WAAW,YAAY;EACnC,KAAK,IACH,QAAO,eAAe,WAAW,YAAY,GAAG;EAClD,KAAK,KACH,QACE,GAAG,WAAW,YAAY,IAAI,eAAe,WAAW,YAAY,GAAG;EAE3E,KAAK,IACH,QAAO,eAAe,WAAW,YAAY,GAAG;EAClD,KAAK,KACH,QACE,GAAG,WAAW,YAAY,IAAI,eAAe,WAAW,YAAY,GAAG;EAE3E,KAAK,OAEH,QAAO;EAET,QACE,QAAO"}