summaryrefslogtreecommitdiff
path: root/cli/npm/managed/resolvers/common.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-07-09 12:15:03 -0400
committerGitHub <noreply@github.com>2024-07-09 12:15:03 -0400
commit839caf6fafdf9ca1cdec6cd9cef38296be41145f (patch)
tree691dba21b45e9c5640275304308aa5d8a5d4a7ba /cli/npm/managed/resolvers/common.rs
parent07613a6bf26d9112d47fda9e502425395bd78105 (diff)
refactor: use concrete error types for node resolution (#24470)
This will help clean up some of the code in the CLI because we'll be able to tell how the resolution failed (not part of this PR).
Diffstat (limited to 'cli/npm/managed/resolvers/common.rs')
-rw-r--r--cli/npm/managed/resolvers/common.rs14
1 files changed, 12 insertions, 2 deletions
diff --git a/cli/npm/managed/resolvers/common.rs b/cli/npm/managed/resolvers/common.rs
index 35f368cb5..dffa1b75c 100644
--- a/cli/npm/managed/resolvers/common.rs
+++ b/cli/npm/managed/resolvers/common.rs
@@ -18,6 +18,7 @@ use deno_npm::NpmPackageCacheFolderId;
use deno_npm::NpmPackageId;
use deno_npm::NpmResolutionPackage;
use deno_runtime::deno_fs::FileSystem;
+use deno_runtime::deno_node::errors::PackageFolderResolveError;
use deno_runtime::deno_node::NodePermissions;
use crate::npm::managed::cache::TarballCache;
@@ -31,16 +32,25 @@ pub trait NpmPackageFsResolver: Send + Sync {
/// The local node_modules folder if it is applicable to the implementation.
fn node_modules_path(&self) -> Option<&PathBuf>;
+ fn maybe_package_folder(&self, package_id: &NpmPackageId) -> Option<PathBuf>;
+
fn package_folder(
&self,
package_id: &NpmPackageId,
- ) -> Result<PathBuf, AnyError>;
+ ) -> Result<PathBuf, AnyError> {
+ self.maybe_package_folder(package_id).ok_or_else(|| {
+ deno_core::anyhow::anyhow!(
+ "Package folder not found for '{}'",
+ package_id.as_serialized()
+ )
+ })
+ }
fn resolve_package_folder_from_package(
&self,
name: &str,
referrer: &ModuleSpecifier,
- ) -> Result<PathBuf, AnyError>;
+ ) -> Result<PathBuf, PackageFolderResolveError>;
fn resolve_package_cache_folder_id_from_specifier(
&self,