26 lines
579 B
JavaScript
26 lines
579 B
JavaScript
|
const SemVer = require('../classes/semver')
|
||
|
const Range = require('../classes/range')
|
||
|
|
||
|
const maxSatisfying = (versions, range, options) => {
|
||
|
let max = null
|
||
|
let maxSV = null
|
||
|
let rangeObj = null
|
||
|
try {
|
||
|
rangeObj = new Range(range, options)
|
||
|
} catch (er) {
|
||
|
return null
|
||
|
}
|
||
|
versions.forEach((v) => {
|
||
|
if (rangeObj.test(v)) {
|
||
|
// satisfies(v, range, options)
|
||
|
if (!max || maxSV.compare(v) === -1) {
|
||
|
// compare(max, v, true)
|
||
|
max = v
|
||
|
maxSV = new SemVer(max, options)
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
return max
|
||
|
}
|
||
|
module.exports = maxSatisfying
|