summaryrefslogtreecommitdiff
path: root/cli/npm/resolution.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/npm/resolution.rs')
-rw-r--r--cli/npm/resolution.rs21
1 files changed, 11 insertions, 10 deletions
diff --git a/cli/npm/resolution.rs b/cli/npm/resolution.rs
index e102e2fa8..b6d643bb1 100644
--- a/cli/npm/resolution.rs
+++ b/cli/npm/resolution.rs
@@ -15,12 +15,13 @@ use super::registry::NpmPackageInfo;
use super::registry::NpmPackageVersionDistInfo;
use super::registry::NpmPackageVersionInfo;
use super::registry::NpmRegistryApi;
-use super::version_req::SpecifierVersionReq;
+use super::semver::NpmVersion;
+use super::semver::SpecifierVersionReq;
/// The version matcher used for npm schemed urls is more strict than
/// the one used by npm packages.
pub trait NpmVersionMatcher {
- fn matches(&self, version: &semver::Version) -> bool;
+ fn matches(&self, version: &NpmVersion) -> bool;
fn version_text(&self) -> String;
}
@@ -104,7 +105,7 @@ impl std::fmt::Display for NpmPackageReq {
}
impl NpmVersionMatcher for NpmPackageReq {
- fn matches(&self, version: &semver::Version) -> bool {
+ fn matches(&self, version: &NpmVersion) -> bool {
match &self.version_req {
Some(req) => req.matches(version),
None => version.pre.is_empty(),
@@ -123,7 +124,7 @@ impl NpmVersionMatcher for NpmPackageReq {
#[derive(Debug, Clone, PartialOrd, Ord, PartialEq, Eq, Hash)]
pub struct NpmPackageId {
pub name: String,
- pub version: semver::Version,
+ pub version: NpmVersion,
}
impl NpmPackageId {
@@ -154,8 +155,8 @@ pub struct NpmResolutionPackage {
#[derive(Debug, Clone, Default)]
pub struct NpmResolutionSnapshot {
- package_reqs: HashMap<NpmPackageReq, semver::Version>,
- packages_by_name: HashMap<String, Vec<semver::Version>>,
+ package_reqs: HashMap<NpmPackageReq, NpmVersion>,
+ packages_by_name: HashMap<String, Vec<NpmVersion>>,
packages: HashMap<NpmPackageId, NpmResolutionPackage>,
}
@@ -230,8 +231,8 @@ impl NpmResolutionSnapshot {
&self,
name: &str,
version_matcher: &impl NpmVersionMatcher,
- ) -> Option<semver::Version> {
- let mut maybe_best_version: Option<&semver::Version> = None;
+ ) -> Option<NpmVersion> {
+ let mut maybe_best_version: Option<&NpmVersion> = None;
if let Some(versions) = self.packages_by_name.get(name) {
for version in versions {
if version_matcher.matches(version) {
@@ -472,7 +473,7 @@ impl NpmResolution {
#[derive(Clone)]
struct VersionAndInfo {
- version: semver::Version,
+ version: NpmVersion,
info: NpmPackageVersionInfo,
}
@@ -484,7 +485,7 @@ fn get_resolved_package_version_and_info(
) -> Result<VersionAndInfo, AnyError> {
let mut maybe_best_version: Option<VersionAndInfo> = None;
for (_, version_info) in info.versions.into_iter() {
- let version = semver::Version::parse(&version_info.version)?;
+ let version = NpmVersion::parse(&version_info.version)?;
if version_matcher.matches(&version) {
let is_best_version = maybe_best_version
.as_ref()