| 'use strict' |
| |
| 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 |