From efa67edf655490739bc0cc2bc2815a858506763a Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Sat, 6 Oct 2018 09:13:58 +0200
Subject: [PATCH] fix(semver): handle ~>

---
 lib/versioning/semver/range.js | 6 ++++++
 test/versioning/semver.spec.js | 5 +++++
 2 files changed, 11 insertions(+)

diff --git a/lib/versioning/semver/range.js b/lib/versioning/semver/range.js
index ff86c0fcab..dade1bda79 100644
--- a/lib/versioning/semver/range.js
+++ b/lib/versioning/semver/range.js
@@ -17,6 +17,9 @@ function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) {
     return toVersion;
   }
   const parsedRange = parseRange(currentValue);
+  if (currentValue.startsWith('~>')) {
+    parsedRange[0].operator = '~>';
+  }
   const element = parsedRange[parsedRange.length - 1];
   if (rangeStrategy === 'widen') {
     const newValue = getNewValue(
@@ -96,6 +99,9 @@ function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) {
     );
     return null;
   }
+  if (element.operator === '~>') {
+    return `~> ${toVersionMajor}.${toVersionMinor}.0`;
+  }
   if (element.operator === '^') {
     if (suffix.length || !fromVersion) {
       return `^${toVersionMajor}.${toVersionMinor}.${toVersionPatch}${suffix}`;
diff --git a/test/versioning/semver.spec.js b/test/versioning/semver.spec.js
index dc256e65aa..a9fb1f0fb5 100644
--- a/test/versioning/semver.spec.js
+++ b/test/versioning/semver.spec.js
@@ -60,6 +60,11 @@ describe('semver.getNewValue()', () => {
       '^1.0.7'
     );
   });
+  it('supports tilde greater than', () => {
+    expect(semver.getNewValue('~> 1.0.0', 'replace', '1.0.0', '1.1.7')).toEqual(
+      '~> 1.1.0'
+    );
+  });
   it('bumps short caret to new', () => {
     expect(semver.getNewValue('^1.0', 'bump', '1.0.0', '1.1.7')).toEqual(
       '^1.1'
-- 
GitLab