summaryrefslogtreecommitdiff
path: root/resolvers/deno/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'resolvers/deno/lib.rs')
-rw-r--r--resolvers/deno/lib.rs55
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 {