summaryrefslogtreecommitdiff
path: root/cli/npm/registry.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2022-09-02 13:06:42 -0400
committerGitHub <noreply@github.com>2022-09-02 13:06:42 -0400
commit5262937285e72419c6576ae1595d43f23e0c7b9d (patch)
tree591e0732e9245a65232255954454682d510eea71 /cli/npm/registry.rs
parent7d622a6643b3dddae4e2ff820f75ec67c8df7224 (diff)
fix(npm): respect `latest` dist tag for getting current version (#15746)
Diffstat (limited to 'cli/npm/registry.rs')
-rw-r--r--cli/npm/registry.rs21
1 files changed, 18 insertions, 3 deletions
diff --git a/cli/npm/registry.rs b/cli/npm/registry.rs
index c70741b01..1fb4b2e0a 100644
--- a/cli/npm/registry.rs
+++ b/cli/npm/registry.rs
@@ -31,6 +31,8 @@ use super::semver::NpmVersionReq;
pub struct NpmPackageInfo {
pub name: String,
pub versions: HashMap<String, NpmPackageVersionInfo>,
+ #[serde(rename = "dist-tags")]
+ pub dist_tags: HashMap<String, String>,
}
pub struct NpmDependencyEntry {
@@ -39,7 +41,7 @@ pub struct NpmDependencyEntry {
pub version_req: NpmVersionReq,
}
-#[derive(Debug, Deserialize, Serialize, Clone)]
+#[derive(Debug, Default, Deserialize, Serialize, Clone)]
pub struct NpmPackageVersionInfo {
pub version: String,
pub dist: NpmPackageVersionDistInfo,
@@ -89,7 +91,7 @@ impl NpmPackageVersionInfo {
}
}
-#[derive(Debug, Deserialize, Serialize, Clone)]
+#[derive(Debug, Default, Deserialize, Serialize, Clone)]
pub struct NpmPackageVersionDistInfo {
/// URL to the tarball.
pub tarball: String,
@@ -231,7 +233,20 @@ impl NpmRegistryApi {
Err(err) if err.kind() == ErrorKind::NotFound => return Ok(None),
Err(err) => return Err(err.into()),
};
- Ok(serde_json::from_str(&file_text)?)
+ match serde_json::from_str(&file_text) {
+ Ok(package_info) => Ok(Some(package_info)),
+ Err(err) => {
+ // This scenario might mean we need to load more data from the
+ // npm registry than before. So, just debug log while in debug
+ // rather than panic.
+ log::debug!(
+ "error deserializing registry.json for '{}'. Reloading. {:?}",
+ name,
+ err
+ );
+ Ok(None)
+ }
+ }
}
fn save_package_info_to_file_cache(