diff --git a/lib/versioning/semver/range.js b/lib/versioning/semver/range.js index ff86c0fcab56f47b02a99bedf2dffcb28bc4adf8..dade1bda79c0a4704bab1e47e2c168022dac6dbe 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 dc256e65aa06d996383b56283ba4e87159b649da..a9fb1f0fb5d1ba23c353eb392b89251b60d41f67 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'