You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
947 B
52 lines
947 B
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
|
|
|