| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | 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
 |