28 lines
		
	
	
		
			593 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			593 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'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
 |