3046ed93b5f941409d8fcb1f433b6eb467b57a191d6755e2bf52fc78c21da9c8.json 47 KB

1
  1. {"ast":null,"code":"const SPACE_CHARACTERS = /\\s+/g;\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor(range, options) {\n options = parseOptions(options);\n if (range instanceof Range) {\n if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {\n return range;\n } else {\n return new Range(range.raw, options);\n }\n }\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value;\n this.set = [[range]];\n this.formatted = undefined;\n return this;\n }\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ');\n\n // First, split on ||\n this.set = this.raw.split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length);\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`);\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0];\n this.set = this.set.filter(c => !isNullSet(c[0]));\n if (this.set.length === 0) {\n this.set = [first];\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c];\n break;\n }\n }\n }\n }\n this.formatted = undefined;\n }\n get range() {\n if (this.formatted === undefined) {\n this.formatted = '';\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||';\n }\n const comps = this.set[i];\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' ';\n }\n this.formatted += comps[k].toString().trim();\n }\n }\n }\n return this.formatted;\n }\n format() {\n return this.range;\n }\n toString() {\n return this.range;\n }\n parseRange(range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);\n const memoKey = memoOpts + ':' + range;\n const cached = cache.get(memoKey);\n if (cached) {\n return cached;\n }\n const loose = this.options.loose;\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease));\n debug('hyphen replace', range);\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);\n debug('comparator trim', range);\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace);\n debug('tilde trim', range);\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace);\n debug('caret trim', range);\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range.split(' ').map(comp => parseComparator(comp, this.options)).join(' ').split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options));\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options);\n return !!comp.match(re[t.COMPARATORLOOSE]);\n });\n }\n debug('range list', rangeList);\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map();\n const comparators = rangeList.map(comp => new Comparator(comp, this.options));\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp];\n }\n rangeMap.set(comp.value, comp);\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('');\n }\n const result = [...rangeMap.values()];\n cache.set(memoKey, result);\n return result;\n }\n intersects(range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required');\n }\n return this.set.some(thisComparators => {\n return isSatisfiable(thisComparators, options) && range.set.some(rangeComparators => {\n return isSatisfiable(rangeComparators, options) && thisComparators.every(thisComparator => {\n return rangeComparators.every(rangeComparator => {\n return thisComparator.intersects(rangeComparator, options);\n });\n });\n });\n });\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test(version) {\n if (!version) {\n return false;\n }\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options);\n } catch (er) {\n return false;\n }\n }\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true;\n }\n }\n return false;\n }\n}\nmodule.exports = Range;\nconst LRU = require('../internal/lrucache');\nconst cache = new LRU();\nconst parseOptions = require('../internal/parse-options');\nconst Comparator = require('./comparator');\nconst debug = require('../internal/debug');\nconst SemVer = require('./semver');\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace\n} = require('../internal/re');\nconst {\n FLAG_INCLUDE_PRERELEASE,\n FLAG_LOOSE\n} = require('../internal/constants');\nconst isNullSet = c => c.value === '<0.0.0-0';\nconst isAny = c => c.value === '';\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true;\n const remainingComparators = comparators.slice();\n let testComparator = remainingComparators.pop();\n while (result && remainingComparators.length) {\n result = remainingComparators.every(otherComparator => {\n return testComparator.intersects(otherComparator, options);\n });\n testComparator = remainingComparators.pop();\n }\n return result;\n};\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options);\n comp = replaceCarets(comp, options);\n debug('caret', comp);\n comp = replaceTildes(comp, options);\n debug('tildes', comp);\n comp = replaceXRanges(comp, options);\n debug('xrange', comp);\n comp = replaceStars(comp, options);\n debug('stars', comp);\n return comp;\n};\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*';\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp.trim().split(/\\s+/).map(c => replaceTilde(c, options)).join(' ');\n};\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr);\n let ret;\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n } else if (pr) {\n debug('replaceTilde pr', pr);\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n }\n debug('tilde return', ret);\n return ret;\n });\n};\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp.trim().split(/\\s+/).map(c => replaceCaret(c, options)).join(' ');\n};\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options);\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];\n const z = options.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr);\n let ret;\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n }\n } else if (pr) {\n debug('replaceCaret pr', pr);\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n }\n } else {\n debug('no pr');\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n }\n }\n debug('caret return', ret);\n return ret;\n });\n};\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options);\n return comp.split(/\\s+/).map(c => replaceXRange(c, options)).join(' ');\n};\nconst replaceXRange = (comp, options) => {\n comp = comp.trim();\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr);\n const xM = isX(M);\n const xm = xM || isX(m);\n const xp = xm || isX(p);\n const anyX = xp;\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : '';\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n } else {\n // nothing is forbidden\n ret = '*';\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0;\n }\n p = 0;\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n } else {\n m = +m + 1;\n p = 0;\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (xm) {\n M = +M + 1;\n } else {\n m = +m + 1;\n }\n }\n if (gtlt === '<') {\n pr = '-0';\n }\n ret = `${gtlt + M}.${m}.${p}${pr}`;\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n }\n debug('xRange return', ret);\n return ret;\n });\n};\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options);\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '');\n};\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options);\n return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '');\n};\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`;\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`;\n } else if (fpr) {\n from = `>=${from}`;\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`;\n }\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`;\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`;\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`;\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`;\n } else {\n to = `<=${to}`;\n }\n return `${from} ${to}`.trim();\n};\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false;\n }\n }\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver);\n if (set[i].semver === Comparator.ANY) {\n continue;\n }\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver;\n if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {\n return true;\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false;\n }\n return true;\n};","map":{"version":3,"names":["SPACE_CHARACTERS","Range","constructor","range","options","parseOptions","loose","includePrerelease","raw","Comparator","value","set","formatted","undefined","trim","replace","split","map","r","parseRange","filter","c","length","TypeError","first","isNullSet","isAny","i","comps","k","toString","format","memoOpts","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","memoKey","cached","cache","get","hr","re","t","HYPHENRANGELOOSE","HYPHENRANGE","hyphenReplace","debug","COMPARATORTRIM","comparatorTrimReplace","TILDETRIM","tildeTrimReplace","CARETTRIM","caretTrimReplace","rangeList","comp","parseComparator","join","replaceGTE0","match","COMPARATORLOOSE","rangeMap","Map","comparators","size","has","delete","result","values","intersects","some","thisComparators","isSatisfiable","rangeComparators","every","thisComparator","rangeComparator","test","version","SemVer","er","testSet","module","exports","LRU","require","safeRe","remainingComparators","slice","testComparator","pop","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","isX","id","toLowerCase","replaceTilde","TILDELOOSE","TILDE","_","M","m","p","pr","ret","replaceCaret","CARETLOOSE","CARET","z","replaceXRange","XRANGELOOSE","XRANGE","gtlt","xM","xm","xp","anyX","STAR","GTE0PRE","GTE0","incPr","$0","from","fM","fm","fp","fpr","fb","to","tM","tm","tp","tpr","prerelease","semver","ANY","allowed","major","minor","patch"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/semver/classes/range.js"],"sourcesContent":["const SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}