| 'use strict' |
| |
| const SemVer = require('../classes/semver') |
| const Range = require('../classes/range') |
| const minSatisfying = (versions, range, options) => { |
| let min = null |
| let minSV = 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 (!min || minSV.compare(v) === 1) { |
| // compare(min, v, true) |
| min = v |
| minSV = new SemVer(min, options) |
| } |
| } |
| }) |
| return min |
| } |
| module.exports = minSatisfying |