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