53 lines
968 B
JavaScript
53 lines
968 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;
|