1 const SemVer = require('../classes/semver')
2 const Range = require('../classes/range')
3 const gt = require('../functions/gt')
5 const minVersion = (range, loose) => {
6 range = new Range(range, loose)
8 let minver = new SemVer('0.0.0')
9 if (range.test(minver)) {
13 minver = new SemVer('0.0.0-0')
14 if (range.test(minver)) {
19 for (let i = 0; i < range.set.length; ++i) {
20 const comparators = range.set[i]
23 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) {
28 if (compver.prerelease.length === 0) {
31 compver.prerelease.push(0)
33 compver.raw = compver.format()
37 if (!setMin || gt(compver, setMin)) {
43 /* Ignore maximum versions */
45 /* istanbul ignore next */
47 throw new Error(`Unexpected operation: ${comparator.operator}`)
50 if (setMin && (!minver || gt(minver, setMin)))
54 if (minver && range.test(minver)) {
60 module.exports = minVersion