Skip to content

Commit 456ad5e

Browse files
authored
Implements better support for exact ranges (#870)
* Implements better support for exact ranges * Fixes remaining version issues
1 parent 4fc7ad8 commit 456ad5e

File tree

5 files changed

+17
-4
lines changed

5 files changed

+17
-4
lines changed

.pnp.js

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.yarn/versions/bc1107f7.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
releases:
2+
"@yarnpkg/plugin-interactive-tools": prerelease

packages/plugin-interactive-tools/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
"clipanion": "^2.1.5",
88
"diff": "^4.0.1",
99
"ink": "^2.3.0",
10-
"react": "^16.8.4"
10+
"react": "^16.8.4",
11+
"semver": "^5.6.0"
1112
},
1213
"peerDependencies": {
1314
"@yarnpkg/cli": "^2.0.0-rc.28",
@@ -17,6 +18,7 @@
1718
"devDependencies": {
1819
"@types/diff": "^4.0.2",
1920
"@types/react": "^16.8.0",
21+
"@types/semver": "^6.0.2",
2022
"@yarnpkg/builder": "workspace:^2.0.0-rc.18",
2123
"@yarnpkg/cli": "workspace:^2.0.0-rc.28",
2224
"@yarnpkg/core": "workspace:^2.0.0-rc.22",

packages/plugin-interactive-tools/sources/commands/upgrade-interactive.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ import {Command, Usage}
99
import {diffWords} from 'diff';
1010
import {Box, Color} from 'ink';
1111
import React, {useEffect, useState} from 'react';
12+
import semver from 'semver';
1213

13-
const SIMPLE_SEMVER = /^((?:[\^~]|>=?)?)([0-9+])(\.[0-9]+)(\.[0-9]+)((?:-\S+)?)$/;
14+
const SIMPLE_SEMVER = /^((?:[\^~]|>=?)?)([0-9]+)(\.[0-9]+)(\.[0-9]+)((?:-\S+)?)$/;
1415

1516
// eslint-disable-next-line arca/no-default-export
1617
export default class UpgradeInteractiveCommand extends BaseCommand {
@@ -101,8 +102,12 @@ export default class UpgradeInteractiveCommand extends BaseCommand {
101102
};
102103

103104
const fetchSuggestions = async (descriptor: Descriptor) => {
105+
const referenceRange = semver.valid(descriptor.range)
106+
? `^${descriptor.range}`
107+
: descriptor.range;
108+
104109
const [resolution, dependency] = await Promise.all([
105-
fetchUpdatedDescriptor(descriptor, descriptor.range, descriptor.range),
110+
fetchUpdatedDescriptor(descriptor, descriptor.range, referenceRange),
106111
fetchUpdatedDescriptor(descriptor, descriptor.range, `latest`),
107112
]);
108113

@@ -118,7 +123,7 @@ export default class UpgradeInteractiveCommand extends BaseCommand {
118123
});
119124
}
120125

121-
if (dependency !== resolution) {
126+
if (dependency !== resolution && dependency !== descriptor.range) {
122127
suggestions.push({
123128
value: dependency,
124129
label: colorizeVersionDiff(descriptor.range, dependency),

yarn.lock

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5202,6 +5202,7 @@ __metadata:
52025202
dependencies:
52035203
"@types/diff": ^4.0.2
52045204
"@types/react": ^16.8.0
5205+
"@types/semver": ^6.0.2
52055206
"@yarnpkg/builder": "workspace:^2.0.0-rc.18"
52065207
"@yarnpkg/cli": "workspace:^2.0.0-rc.28"
52075208
"@yarnpkg/core": "workspace:^2.0.0-rc.22"
@@ -5211,6 +5212,7 @@ __metadata:
52115212
diff: ^4.0.1
52125213
ink: ^2.3.0
52135214
react: ^16.8.4
5215+
semver: ^5.6.0
52145216
typescript: ^3.7.4
52155217
peerDependencies:
52165218
"@yarnpkg/cli": ^2.0.0-rc.28

0 commit comments

Comments
 (0)