summaryrefslogtreecommitdiff
path: root/cli/npm/resolvers
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2023-04-06 21:41:19 -0400
committerGitHub <noreply@github.com>2023-04-06 21:41:19 -0400
commit5c7f76c570bc099c4e60b38443194c1890808a7f (patch)
tree99d5ebed160929d6812346f60ec902284e8f83af /cli/npm/resolvers
parent0dca0c5196249c5f947de9ced572967872c0ad6e (diff)
fix(npm): reload an npm package's dependency's information when version not found (#18622)
This reloads an npm package's dependency's information when a version/version req/tag is not found. This PR applies only to dependencies of npm packages. It does NOT yet cause npm specifiers to have their dependency information cache busted. That requires a different solution, but this should help cache bust in more scenarios. Part of #16901, but doesn't close it yet
Diffstat (limited to 'cli/npm/resolvers')
-rw-r--r--cli/npm/resolvers/global.rs3
-rw-r--r--cli/npm/resolvers/mod.rs11
2 files changed, 7 insertions, 7 deletions
diff --git a/cli/npm/resolvers/global.rs b/cli/npm/resolvers/global.rs
index 518a9110a..810548e98 100644
--- a/cli/npm/resolvers/global.rs
+++ b/cli/npm/resolvers/global.rs
@@ -9,6 +9,7 @@ use async_trait::async_trait;
use deno_ast::ModuleSpecifier;
use deno_core::error::AnyError;
use deno_core::url::Url;
+use deno_npm::resolution::PackageNotFoundFromReferrerError;
use deno_npm::NpmPackageCacheFolderId;
use deno_npm::NpmPackageId;
use deno_npm::NpmResolutionPackage;
@@ -58,7 +59,7 @@ impl GlobalNpmPackageResolver {
&self,
package_name: &str,
referrer_pkg_id: &NpmPackageCacheFolderId,
- ) -> Result<NpmResolutionPackage, AnyError> {
+ ) -> Result<NpmResolutionPackage, Box<PackageNotFoundFromReferrerError>> {
let types_name = types_package_name(package_name);
self
.resolution
diff --git a/cli/npm/resolvers/mod.rs b/cli/npm/resolvers/mod.rs
index c958743dc..a490dbf3f 100644
--- a/cli/npm/resolvers/mod.rs
+++ b/cli/npm/resolvers/mod.rs
@@ -15,6 +15,7 @@ use deno_core::parking_lot::Mutex;
use deno_core::serde_json;
use deno_core::url::Url;
use deno_npm::resolution::NpmResolutionSnapshot;
+use deno_npm::resolution::PackageReqNotFoundError;
use deno_npm::NpmPackageId;
use deno_runtime::deno_node::NodePermissions;
use deno_runtime::deno_node::NodeResolutionMode;
@@ -82,14 +83,14 @@ impl NpmPackageResolver {
pub fn resolve_pkg_id_from_pkg_req(
&self,
req: &NpmPackageReq,
- ) -> Result<NpmPackageId, AnyError> {
+ ) -> Result<NpmPackageId, PackageReqNotFoundError> {
self.resolution.resolve_pkg_id_from_pkg_req(req)
}
pub fn pkg_req_ref_to_nv_ref(
&self,
req_ref: NpmPackageReqReference,
- ) -> Result<NpmPackageNvReference, AnyError> {
+ ) -> Result<NpmPackageNvReference, PackageReqNotFoundError> {
self.resolution.pkg_req_ref_to_nv_ref(req_ref)
}
@@ -225,10 +226,8 @@ impl NpmPackageResolver {
&self,
) -> Result<(), AnyError> {
// add and ensure this isn't added to the lockfile
- self
- .resolution
- .add_package_reqs(vec![NpmPackageReq::from_str("@types/node").unwrap()])
- .await?;
+ let package_reqs = vec![NpmPackageReq::from_str("@types/node").unwrap()];
+ self.resolution.add_package_reqs(package_reqs).await?;
self.fs_resolver.cache_packages().await?;
Ok(())