diff options
Diffstat (limited to 'resolvers/deno/lib.rs')
-rw-r--r-- | resolvers/deno/lib.rs | 55 |
1 files changed, 17 insertions, 38 deletions
diff --git a/resolvers/deno/lib.rs b/resolvers/deno/lib.rs index a2b6b642f..303a82710 100644 --- a/resolvers/deno/lib.rs +++ b/resolvers/deno/lib.rs @@ -6,6 +6,7 @@ use std::path::PathBuf; use std::sync::Arc; +use boxed_error::Boxed; use deno_config::workspace::MappedResolution; use deno_config::workspace::MappedResolutionDiagnostic; use deno_config::workspace::MappedResolutionError; @@ -26,9 +27,9 @@ use node_resolver::NodeResolver; use npm::MissingPackageNodeModulesFolderError; use npm::NodeModulesOutOfDateError; use npm::NpmReqResolver; -use npm::ResolveIfForNpmPackageError; +use npm::ResolveIfForNpmPackageErrorKind; use npm::ResolvePkgFolderFromDenoReqError; -use npm::ResolveReqWithSubPathError; +use npm::ResolveReqWithSubPathErrorKind; use sloppy_imports::SloppyImportResolverFs; use sloppy_imports::SloppyImportsResolutionMode; use sloppy_imports::SloppyImportsResolver; @@ -47,6 +48,9 @@ pub struct DenoResolution { pub found_package_json_dep: bool, } +#[derive(Debug, Boxed)] +pub struct DenoResolveError(pub Box<DenoResolveErrorKind>); + #[derive(Debug, Error)] pub enum DenoResolveErrorKind { #[error("Importing from the vendor directory is not permitted. Use a remote specifier instead or disable vendoring.")] @@ -71,35 +75,6 @@ pub enum DenoResolveErrorKind { WorkspaceResolvePkgJsonFolder(#[from] WorkspaceResolvePkgJsonFolderError), } -impl DenoResolveErrorKind { - pub fn into_box(self) -> DenoResolveError { - DenoResolveError(Box::new(self)) - } -} - -#[derive(Error, Debug)] -#[error(transparent)] -pub struct DenoResolveError(pub Box<DenoResolveErrorKind>); - -impl DenoResolveError { - pub fn as_kind(&self) -> &DenoResolveErrorKind { - &self.0 - } - - pub fn into_kind(self) -> DenoResolveErrorKind { - *self.0 - } -} - -impl<E> From<E> for DenoResolveError -where - DenoResolveErrorKind: From<E>, -{ - fn from(err: E) -> Self { - DenoResolveError(Box::new(DenoResolveErrorKind::from(err))) - } -} - #[derive(Debug)] pub struct NodeAndNpmReqResolver< Fs: DenoResolverFs, @@ -378,16 +353,18 @@ impl< maybe_diagnostic, found_package_json_dep, }) - .map_err(|err| match err { - ResolveReqWithSubPathError::MissingPackageNodeModulesFolder( + .map_err(|err| { + match err.into_kind() { + ResolveReqWithSubPathErrorKind::MissingPackageNodeModulesFolder( err, ) => err.into(), - ResolveReqWithSubPathError::ResolvePkgFolderFromDenoReq( + ResolveReqWithSubPathErrorKind::ResolvePkgFolderFromDenoReq( err, ) => err.into(), - ResolveReqWithSubPathError::PackageSubpathResolve(err) => { + ResolveReqWithSubPathErrorKind::PackageSubpathResolve(err) => { err.into() } + } }); } } @@ -410,11 +387,13 @@ impl< referrer_kind, mode, ) - .map_err(|e| match e { - ResolveIfForNpmPackageError::NodeResolve(e) => { + .map_err(|e| match e.into_kind() { + ResolveIfForNpmPackageErrorKind::NodeResolve(e) => { DenoResolveErrorKind::Node(e).into_box() } - ResolveIfForNpmPackageError::NodeModulesOutOfDate(e) => e.into(), + ResolveIfForNpmPackageErrorKind::NodeModulesOutOfDate(e) => { + e.into() + } })?; if let Some(res) = maybe_resolution { match res { |