| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | const SemVer = require('../classes/semver')const Range = require('../classes/range')const gt = require('../functions/gt')const minVersion = (range, loose) => {  range = new Range(range, loose)  let minver = new SemVer('0.0.0')  if (range.test(minver)) {    return minver  }  minver = new SemVer('0.0.0-0')  if (range.test(minver)) {    return minver  }  minver = null  for (let i = 0; i < range.set.length; ++i) {    const comparators = range.set[i]    let setMin = null    comparators.forEach((comparator) => {      // Clone to avoid manipulating the comparator's semver object.      const compver = new SemVer(comparator.semver.version)      switch (comparator.operator) {        case '>':          if (compver.prerelease.length === 0) {            compver.patch++          } else {            compver.prerelease.push(0)          }          compver.raw = compver.format()          /* fallthrough */        case '':        case '>=':          if (!setMin || gt(compver, setMin)) {            setMin = compver          }          break        case '<':        case '<=':          /* Ignore maximum versions */          break        /* istanbul ignore next */        default:          throw new Error(`Unexpected operation: ${comparator.operator}`)      }    })    if (setMin && (!minver || gt(minver, setMin))) {      minver = setMin    }  }  if (minver && range.test(minver)) {    return minver  }  return null}module.exports = minVersion
 |