| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 | | 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 | 
 |