CoolFace
Apppublic

strong-tie/inbound-calls

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
min-version.js62 linesDownload Raw Back to ranges
1const SemVer = require('../classes/semver')2const Range = require('../classes/range')3const gt = require('../functions/gt')4 5const minVersion = (range, loose) => {6  range = new Range(range, loose)7 8  let minver = new SemVer('0.0.0')9  if (range.test(minver)) {10    return minver11  }12 13  minver = new SemVer('0.0.0-0')14  if (range.test(minver)) {15    return minver16  }17 18  minver = null19  for (let i = 0; i < range.set.length; ++i) {20    const comparators = range.set[i]21 22    let setMin = null23    comparators.forEach((comparator) => {24      // Clone to avoid manipulating the comparator's semver object.25      const compver = new SemVer(comparator.semver.version)26      switch (comparator.operator) {27        case '>':28          if (compver.prerelease.length === 0) {29            compver.patch++30          } else {31            compver.prerelease.push(0)32          }33          compver.raw = compver.format()34          /* fallthrough */35        case '':36        case '>=':37          if (!setMin || gt(compver, setMin)) {38            setMin = compver39          }40          break41        case '<':42        case '<=':43          /* Ignore maximum versions */44          break45        /* istanbul ignore next */46        default:47          throw new Error(`Unexpected operation: ${comparator.operator}`)48      }49    })50    if (setMin && (!minver || gt(minver, setMin))) {51      minver = setMin52    }53  }54 55  if (minver && range.test(minver)) {56    return minver57  }58 59  return null60}61module.exports = minVersion62