52 lines
		
	
	
	
		
			947 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			947 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const eq = require('./eq')
 | 
						|
const neq = require('./neq')
 | 
						|
const gt = require('./gt')
 | 
						|
const gte = require('./gte')
 | 
						|
const lt = require('./lt')
 | 
						|
const lte = require('./lte')
 | 
						|
 | 
						|
const cmp = (a, op, b, loose) => {
 | 
						|
  switch (op) {
 | 
						|
    case '===':
 | 
						|
      if (typeof a === 'object') {
 | 
						|
        a = a.version
 | 
						|
      }
 | 
						|
      if (typeof b === 'object') {
 | 
						|
        b = b.version
 | 
						|
      }
 | 
						|
      return a === b
 | 
						|
 | 
						|
    case '!==':
 | 
						|
      if (typeof a === 'object') {
 | 
						|
        a = a.version
 | 
						|
      }
 | 
						|
      if (typeof b === 'object') {
 | 
						|
        b = b.version
 | 
						|
      }
 | 
						|
      return a !== b
 | 
						|
 | 
						|
    case '':
 | 
						|
    case '=':
 | 
						|
    case '==':
 | 
						|
      return eq(a, b, loose)
 | 
						|
 | 
						|
    case '!=':
 | 
						|
      return neq(a, b, loose)
 | 
						|
 | 
						|
    case '>':
 | 
						|
      return gt(a, b, loose)
 | 
						|
 | 
						|
    case '>=':
 | 
						|
      return gte(a, b, loose)
 | 
						|
 | 
						|
    case '<':
 | 
						|
      return lt(a, b, loose)
 | 
						|
 | 
						|
    case '<=':
 | 
						|
      return lte(a, b, loose)
 | 
						|
 | 
						|
    default:
 | 
						|
      throw new TypeError(`Invalid operator: ${op}`)
 | 
						|
  }
 | 
						|
}
 | 
						|
module.exports = cmp
 |