You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
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]
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 (!minver || gt(minver, compver)) { minver = compver } break case '<': case '<=': /* Ignore maximum versions */ break /* istanbul ignore next */ default: throw new Error(`Unexpected operation: ${comparator.operator}`) } }) }
if (minver && range.test(minver)) { return minver }
return null } module.exports = minVersion
|