diff options
Diffstat (limited to 'cli/npm/managed/resolvers/common.rs')
-rw-r--r-- | cli/npm/managed/resolvers/common.rs | 14 |
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, |