cmp.js 961 B

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