max-satisfying.js 593 B

123456789101112131415161718192021222324252627
  1. 'use strict'
  2. const SemVer = require('../classes/semver')
  3. const Range = require('../classes/range')
  4. const maxSatisfying = (versions, range, options) => {
  5. let max = null
  6. let maxSV = null
  7. let rangeObj = null
  8. try {
  9. rangeObj = new Range(range, options)
  10. } catch (er) {
  11. return null
  12. }
  13. versions.forEach((v) => {
  14. if (rangeObj.test(v)) {
  15. // satisfies(v, range, options)
  16. if (!max || maxSV.compare(v) === -1) {
  17. // compare(max, v, true)
  18. max = v
  19. maxSV = new SemVer(max, options)
  20. }
  21. }
  22. })
  23. return max
  24. }
  25. module.exports = maxSatisfying