cmp.js
 1  const eq = require('./eq')
 2  const neq = require('./neq')
 3  const gt = require('./gt')
 4  const gte = require('./gte')
 5  const lt = require('./lt')
 6  const lte = require('./lte')
 7  
 8  const cmp = (a, op, b, loose) => {
 9    switch (op) {
10      case '===':
11        if (typeof a === 'object')
12          a = a.version
13        if (typeof b === 'object')
14          b = b.version
15        return a === b
16  
17      case '!==':
18        if (typeof a === 'object')
19          a = a.version
20        if (typeof b === 'object')
21          b = b.version
22        return a !== b
23  
24      case '':
25      case '=':
26      case '==':
27        return eq(a, b, loose)
28  
29      case '!=':
30        return neq(a, b, loose)
31  
32      case '>':
33        return gt(a, b, loose)
34  
35      case '>=':
36        return gte(a, b, loose)
37  
38      case '<':
39        return lt(a, b, loose)
40  
41      case '<=':
42        return lte(a, b, loose)
43  
44      default:
45        throw new TypeError(`Invalid operator: ${op}`)
46    }
47  }
48  module.exports = cmp