setup-deno/node_modules/semver/functions/cmp.js

53 lines
947 B
JavaScript
Raw Normal View History

2021-04-10 08:16:12 +08:00
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 '===':
2022-10-17 18:03:20 +08:00
if (typeof a === 'object') {
2021-04-10 08:16:12 +08:00
a = a.version
2022-10-17 18:03:20 +08:00
}
if (typeof b === 'object') {
2021-04-10 08:16:12 +08:00
b = b.version
2022-10-17 18:03:20 +08:00
}
2021-04-10 08:16:12 +08:00
return a === b
case '!==':
2022-10-17 18:03:20 +08:00
if (typeof a === 'object') {
2021-04-10 08:16:12 +08:00
a = a.version
2022-10-17 18:03:20 +08:00
}
if (typeof b === 'object') {
2021-04-10 08:16:12 +08:00
b = b.version
2022-10-17 18:03:20 +08:00
}
2021-04-10 08:16:12 +08:00
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