summaryrefslogtreecommitdiff
path: root/cli/npm/semver/specifier.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2022-11-15 20:52:27 -0500
committerGitHub <noreply@github.com>2022-11-15 20:52:27 -0500
commit6da6ed89852ed40a984097d2341e43f8c263cee5 (patch)
tree55936261c24246cacc13cb01a35fa518ef94bb68 /cli/npm/semver/specifier.rs
parent300fd07fad3dee74730517ba91b2e7314632fc3f (diff)
fix(npm): support dist tags specified in npm package dependencies (#16652)
Closes #16321
Diffstat (limited to 'cli/npm/semver/specifier.rs')
-rw-r--r--cli/npm/semver/specifier.rs7
1 files changed, 3 insertions, 4 deletions
diff --git a/cli/npm/semver/specifier.rs b/cli/npm/semver/specifier.rs
index dc4fe1010..269846f8c 100644
--- a/cli/npm/semver/specifier.rs
+++ b/cli/npm/semver/specifier.rs
@@ -6,6 +6,7 @@ use monch::*;
use serde::Deserialize;
use serde::Serialize;
+use super::is_valid_npm_tag;
use super::range::Partial;
use super::range::VersionRange;
use super::range::XRange;
@@ -55,7 +56,7 @@ fn parse_npm_specifier(input: &str) -> ParseResult<SpecifierVersionReq> {
map_res(version_range, |result| {
let (new_input, range_result) = match result {
Ok((input, range)) => (input, Ok(range)),
- // use an empty string because we'll consider the tag
+ // use an empty string because we'll consider it a tag
Err(err) => ("", Err(err)),
};
Ok((
@@ -65,9 +66,7 @@ fn parse_npm_specifier(input: &str) -> ParseResult<SpecifierVersionReq> {
inner: match range_result {
Ok(range) => SpecifierVersionReqInner::Range(range),
Err(err) => {
- // npm seems to be extremely lax on what it supports for a dist-tag (any non-valid semver range),
- // so just make any error here be a dist tag unless it starts or ends with whitespace
- if input.trim() != input {
+ if !is_valid_npm_tag(input) {
return Err(err);
} else {
SpecifierVersionReqInner::Tag(input.to_string())