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;