{"version":3,"file":"parser.cjs","names":["parseRegex","hyphenRange","isXVersion","comparatorTrim","tildeTrim","caretTrim","caret","tilde","xRange","star","gte0"],"sources":["../../../src/utils/semver/parser.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\nimport { isXVersion, parseRegex } from './utils';\nimport {\n  caret,\n  caretTrim,\n  comparatorTrim,\n  gte0,\n  hyphenRange,\n  star,\n  tilde,\n  tildeTrim,\n  xRange,\n} from './constants';\n\nexport function parseHyphen(range: string): string {\n  return range.replace(\n    parseRegex(hyphenRange),\n    (\n      _range,\n      from,\n      fromMajor,\n      fromMinor,\n      fromPatch,\n      _fromPreRelease,\n      _fromBuild,\n      to,\n      toMajor,\n      toMinor,\n      toPatch,\n      toPreRelease,\n    ) => {\n      if (isXVersion(fromMajor)) {\n        from = '';\n      } else if (isXVersion(fromMinor)) {\n        from = `>=${fromMajor}.0.0`;\n      } else if (isXVersion(fromPatch)) {\n        from = `>=${fromMajor}.${fromMinor}.0`;\n      } else {\n        from = `>=${from}`;\n      }\n\n      if (isXVersion(toMajor)) {\n        to = '';\n      } else if (isXVersion(toMinor)) {\n        to = `<${Number(toMajor) + 1}.0.0-0`;\n      } else if (isXVersion(toPatch)) {\n        to = `<${toMajor}.${Number(toMinor) + 1}.0-0`;\n      } else if (toPreRelease) {\n        to = `<=${toMajor}.${toMinor}.${toPatch}-${toPreRelease}`;\n      } else {\n        to = `<=${to}`;\n      }\n\n      return `${from} ${to}`.trim();\n    },\n  );\n}\n\nexport function parseComparatorTrim(range: string): string {\n  return range.replace(parseRegex(comparatorTrim), '$1$2$3');\n}\n\nexport function parseTildeTrim(range: string): string {\n  return range.replace(parseRegex(tildeTrim), '$1~');\n}\n\nexport function parseCaretTrim(range: string): string {\n  return range.replace(parseRegex(caretTrim), '$1^');\n}\n\nexport function parseCarets(range: string): string {\n  return range\n    .trim()\n    .split(/\\s+/)\n    .map((rangeVersion) =>\n      rangeVersion.replace(\n        parseRegex(caret),\n        (_, major, minor, patch, preRelease) => {\n          if (isXVersion(major)) {\n            return '';\n          } else if (isXVersion(minor)) {\n            return `>=${major}.0.0 <${Number(major) + 1}.0.0-0`;\n          } else if (isXVersion(patch)) {\n            if (major === '0') {\n              return `>=${major}.${minor}.0 <${major}.${Number(minor) + 1}.0-0`;\n            } else {\n              return `>=${major}.${minor}.0 <${Number(major) + 1}.0.0-0`;\n            }\n          } else if (preRelease) {\n            if (major === '0') {\n              if (minor === '0') {\n                return `>=${major}.${minor}.${patch}-${preRelease} <${major}.${minor}.${\n                  Number(patch) + 1\n                }-0`;\n              } else {\n                return `>=${major}.${minor}.${patch}-${preRelease} <${major}.${\n                  Number(minor) + 1\n                }.0-0`;\n              }\n            } else {\n              return `>=${major}.${minor}.${patch}-${preRelease} <${\n                Number(major) + 1\n              }.0.0-0`;\n            }\n          } else {\n            if (major === '0') {\n              if (minor === '0') {\n                return `>=${major}.${minor}.${patch} <${major}.${minor}.${\n                  Number(patch) + 1\n                }-0`;\n              } else {\n                return `>=${major}.${minor}.${patch} <${major}.${\n                  Number(minor) + 1\n                }.0-0`;\n              }\n            }\n\n            return `>=${major}.${minor}.${patch} <${Number(major) + 1}.0.0-0`;\n          }\n        },\n      ),\n    )\n    .join(' ');\n}\n\nexport function parseTildes(range: string): string {\n  return range\n    .trim()\n    .split(/\\s+/)\n    .map((rangeVersion) =>\n      rangeVersion.replace(\n        parseRegex(tilde),\n        (_, major, minor, patch, preRelease) => {\n          if (isXVersion(major)) {\n            return '';\n          } else if (isXVersion(minor)) {\n            return `>=${major}.0.0 <${Number(major) + 1}.0.0-0`;\n          } else if (isXVersion(patch)) {\n            return `>=${major}.${minor}.0 <${major}.${Number(minor) + 1}.0-0`;\n          } else if (preRelease) {\n            return `>=${major}.${minor}.${patch}-${preRelease} <${major}.${\n              Number(minor) + 1\n            }.0-0`;\n          }\n\n          return `>=${major}.${minor}.${patch} <${major}.${\n            Number(minor) + 1\n          }.0-0`;\n        },\n      ),\n    )\n    .join(' ');\n}\n\nexport function parseXRanges(range: string): string {\n  return range\n    .split(/\\s+/)\n    .map((rangeVersion) =>\n      rangeVersion\n        .trim()\n        .replace(\n          parseRegex(xRange),\n          (ret, gtlt, major, minor, patch, preRelease) => {\n            const isXMajor = isXVersion(major);\n            const isXMinor = isXMajor || isXVersion(minor);\n            const isXPatch = isXMinor || isXVersion(patch);\n\n            if (gtlt === '=' && isXPatch) {\n              gtlt = '';\n            }\n\n            preRelease = '';\n\n            if (isXMajor) {\n              if (gtlt === '>' || gtlt === '<') {\n                // nothing is allowed\n                return '<0.0.0-0';\n              } else {\n                // nothing is forbidden\n                return '*';\n              }\n            } else if (gtlt && isXPatch) {\n              // replace X with 0\n              if (isXMinor) {\n                minor = 0;\n              }\n\n              patch = 0;\n\n              if (gtlt === '>') {\n                // >1 => >=2.0.0\n                // >1.2 => >=1.3.0\n                gtlt = '>=';\n\n                if (isXMinor) {\n                  major = Number(major) + 1;\n                  minor = 0;\n                  patch = 0;\n                } else {\n                  minor = Number(minor) + 1;\n                  patch = 0;\n                }\n              } else if (gtlt === '<=') {\n                // <=0.7.x is actually <0.8.0, since any 0.7.x should pass\n                // Similarly, <=7.x is actually <8.0.0, etc.\n                gtlt = '<';\n\n                if (isXMinor) {\n                  major = Number(major) + 1;\n                } else {\n                  minor = Number(minor) + 1;\n                }\n              }\n\n              if (gtlt === '<') {\n                preRelease = '-0';\n              }\n\n              return `${gtlt + major}.${minor}.${patch}${preRelease}`;\n            } else if (isXMinor) {\n              return `>=${major}.0.0${preRelease} <${Number(major) + 1}.0.0-0`;\n            } else if (isXPatch) {\n              return `>=${major}.${minor}.0${preRelease} <${major}.${\n                Number(minor) + 1\n              }.0-0`;\n            }\n\n            return ret;\n          },\n        ),\n    )\n    .join(' ');\n}\n\nexport function parseStar(range: string): string {\n  return range.trim().replace(parseRegex(star), '');\n}\n\nexport function parseGTE0(comparatorString: string): string {\n  return comparatorString.trim().replace(parseRegex(gte0), '');\n}\n"],"mappings":";;;;AAsBA,SAAgB,YAAY,OAAuB;AACjD,QAAO,MAAM,QACXA,yBAAWC,8BAAY,GAErB,QACA,MACA,WACA,WACA,WACA,iBACA,YACA,IACA,SACA,SACA,SACA,iBACG;AACH,MAAIC,yBAAW,UAAU,CACvB,QAAO;WACEA,yBAAW,UAAU,CAC9B,QAAO,KAAK,UAAU;WACbA,yBAAW,UAAU,CAC9B,QAAO,KAAK,UAAU,GAAG,UAAU;MAEnC,QAAO,KAAK;AAGd,MAAIA,yBAAW,QAAQ,CACrB,MAAK;WACIA,yBAAW,QAAQ,CAC5B,MAAK,IAAI,OAAO,QAAQ,GAAG,EAAE;WACpBA,yBAAW,QAAQ,CAC5B,MAAK,IAAI,QAAQ,GAAG,OAAO,QAAQ,GAAG,EAAE;WAC/B,aACT,MAAK,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG;MAE3C,MAAK,KAAK;AAGZ,SAAO,GAAG,KAAK,GAAG,KAAK,MAAM;GAEhC;;AAGH,SAAgB,oBAAoB,OAAuB;AACzD,QAAO,MAAM,QAAQF,yBAAWG,iCAAe,EAAE,SAAS;;AAG5D,SAAgB,eAAe,OAAuB;AACpD,QAAO,MAAM,QAAQH,yBAAWI,4BAAU,EAAE,MAAM;;AAGpD,SAAgB,eAAe,OAAuB;AACpD,QAAO,MAAM,QAAQJ,yBAAWK,4BAAU,EAAE,MAAM;;AAGpD,SAAgB,YAAY,OAAuB;AACjD,QAAO,MACJ,MAAM,CACN,MAAM,MAAM,CACZ,KAAK,iBACJ,aAAa,QACXL,yBAAWM,wBAAM,GAChB,GAAG,OAAO,OAAO,OAAO,eAAe;AACtC,MAAIJ,yBAAW,MAAM,CACnB,QAAO;WACEA,yBAAW,MAAM,CAC1B,QAAO,KAAK,MAAM,QAAQ,OAAO,MAAM,GAAG,EAAE;WACnCA,yBAAW,MAAM,CAC1B,KAAI,UAAU,IACZ,QAAO,KAAK,MAAM,GAAG,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,GAAG,EAAE;MAE5D,QAAO,KAAK,MAAM,GAAG,MAAM,MAAM,OAAO,MAAM,GAAG,EAAE;WAE5C,WACT,KAAI,UAAU,IACZ,KAAI,UAAU,IACZ,QAAO,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,IAAI,MAAM,GAAG,MAAM,GACnE,OAAO,MAAM,GAAG,EACjB;MAED,QAAO,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,IAAI,MAAM,GAC1D,OAAO,MAAM,GAAG,EACjB;MAGH,QAAO,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,IAChD,OAAO,MAAM,GAAG,EACjB;OAEE;AACL,OAAI,UAAU,IACZ,KAAI,UAAU,IACZ,QAAO,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,GAAG,MAAM,GACrD,OAAO,MAAM,GAAG,EACjB;OAED,QAAO,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,GAC5C,OAAO,MAAM,GAAG,EACjB;AAIL,UAAO,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,OAAO,MAAM,GAAG,EAAE;;GAG/D,CACF,CACA,KAAK,IAAI;;AAGd,SAAgB,YAAY,OAAuB;AACjD,QAAO,MACJ,MAAM,CACN,MAAM,MAAM,CACZ,KAAK,iBACJ,aAAa,QACXF,yBAAWO,wBAAM,GAChB,GAAG,OAAO,OAAO,OAAO,eAAe;AACtC,MAAIL,yBAAW,MAAM,CACnB,QAAO;WACEA,yBAAW,MAAM,CAC1B,QAAO,KAAK,MAAM,QAAQ,OAAO,MAAM,GAAG,EAAE;WACnCA,yBAAW,MAAM,CAC1B,QAAO,KAAK,MAAM,GAAG,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,GAAG,EAAE;WACnD,WACT,QAAO,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,IAAI,MAAM,GAC1D,OAAO,MAAM,GAAG,EACjB;AAGH,SAAO,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,GAC5C,OAAO,MAAM,GAAG,EACjB;GAEJ,CACF,CACA,KAAK,IAAI;;AAGd,SAAgB,aAAa,OAAuB;AAClD,QAAO,MACJ,MAAM,MAAM,CACZ,KAAK,iBACJ,aACG,MAAM,CACN,QACCF,yBAAWQ,yBAAO,GACjB,KAAK,MAAM,OAAO,OAAO,OAAO,eAAe;EAC9C,MAAM,WAAWN,yBAAW,MAAM;EAClC,MAAM,WAAW,YAAYA,yBAAW,MAAM;EAC9C,MAAM,WAAW,YAAYA,yBAAW,MAAM;AAE9C,MAAI,SAAS,OAAO,SAClB,QAAO;AAGT,eAAa;AAEb,MAAI,SACF,KAAI,SAAS,OAAO,SAAS,IAE3B,QAAO;MAGP,QAAO;WAEA,QAAQ,UAAU;AAE3B,OAAI,SACF,SAAQ;AAGV,WAAQ;AAER,OAAI,SAAS,KAAK;AAGhB,WAAO;AAEP,QAAI,UAAU;AACZ,aAAQ,OAAO,MAAM,GAAG;AACxB,aAAQ;AACR,aAAQ;WACH;AACL,aAAQ,OAAO,MAAM,GAAG;AACxB,aAAQ;;cAED,SAAS,MAAM;AAGxB,WAAO;AAEP,QAAI,SACF,SAAQ,OAAO,MAAM,GAAG;QAExB,SAAQ,OAAO,MAAM,GAAG;;AAI5B,OAAI,SAAS,IACX,cAAa;AAGf,UAAO,GAAG,OAAO,MAAM,GAAG,MAAM,GAAG,QAAQ;aAClC,SACT,QAAO,KAAK,MAAM,MAAM,WAAW,IAAI,OAAO,MAAM,GAAG,EAAE;WAChD,SACT,QAAO,KAAK,MAAM,GAAG,MAAM,IAAI,WAAW,IAAI,MAAM,GAClD,OAAO,MAAM,GAAG,EACjB;AAGH,SAAO;GAEV,CACJ,CACA,KAAK,IAAI;;AAGd,SAAgB,UAAU,OAAuB;AAC/C,QAAO,MAAM,MAAM,CAAC,QAAQF,yBAAWS,uBAAK,EAAE,GAAG;;AAGnD,SAAgB,UAAU,kBAAkC;AAC1D,QAAO,iBAAiB,MAAM,CAAC,QAAQT,yBAAWU,uBAAK,EAAE,GAAG"}