diff.js 867 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. const parse = require('./parse')
  2. const eq = require('./eq')
  3. const diff = (version1, version2) => {
  4. const v1 = parse(version1)
  5. const v2 = parse(version2)
  6. if (eq(v1, v2)) {
  7. return null
  8. } else {
  9. const hasPre = v1.prerelease.length || v2.prerelease.length
  10. const prefix = hasPre ? 'pre' : ''
  11. const defaultResult = hasPre ? 'prerelease' : ''
  12. if (v1.major !== v2.major) {
  13. return prefix + 'major'
  14. }
  15. if (v1.minor !== v2.minor) {
  16. return prefix + 'minor'
  17. }
  18. if (v1.patch !== v2.patch) {
  19. return prefix + 'patch'
  20. }
  21. if (!v1.prerelease.length || !v2.prerelease.length) {
  22. if (v1.patch) {
  23. return 'patch'
  24. }
  25. if (v1.minor) {
  26. return 'minor'
  27. }
  28. if (v1.major) {
  29. return 'major'
  30. }
  31. }
  32. return defaultResult // may be undefined
  33. }
  34. }
  35. module.exports = diff