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 |