diff --git a/Cargo.lock b/Cargo.lock index e54ef08..e17ff7d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -226,7 +226,6 @@ dependencies = [ name = "deno_ast" version = "0.41.3" dependencies = [ - "anyhow", "base64", "deno_media_type", "deno_terminal", @@ -236,6 +235,7 @@ dependencies = [ "pretty_assertions", "serde", "serde_json", + "sourcemap", "swc_atoms", "swc_bundler", "swc_common", diff --git a/Cargo.toml b/Cargo.toml index 32ccb71..670791c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ react = ["transforms", "swc_ecma_transforms_react", "swc_ecma_transforms_macros" scopes = ["view", "utils", "visit"] sourcemap = ["dprint-swc-ext/sourcemap"] transforms = ["swc_ecma_loader", "swc_ecma_transforms_base"] -emit = ["anyhow", "base64", "codegen", "sourcemap"] +emit = ["base64", "codegen", "sourcemap", "dep:sourcemap"] transpiling = ["emit", "proposal", "react", "transforms", "typescript", "utils", "visit"] typescript = ["transforms", "swc_ecma_transforms_typescript"] utils = ["swc_ecma_utils"] @@ -31,7 +31,6 @@ view = ["dprint-swc-ext/view"] visit = ["swc_ecma_visit", "swc_visit", "swc_visit_macros", "swc_macros_common"] [dependencies] -anyhow = { version = "1.0.64", optional = true } base64 = { version = "0.21.6", optional = true } deno_media_type = "0.1.4" deno_terminal = "0.1.1" @@ -75,6 +74,8 @@ swc_macros_common = { version = "=0.3.13", optional = true } swc_trace_macro = { version = "=0.1.3", optional = true } swc_visit = { version = "=0.6.1", optional = true } swc_visit_macros = { version = "=0.5.13", optional = true } +# just for error handling +sourcemap = { version = "9.0.0", optional = true } thiserror = "1.0.58" [dev-dependencies] diff --git a/src/emit.rs b/src/emit.rs index 3d9ef94..31bca96 100644 --- a/src/emit.rs +++ b/src/emit.rs @@ -2,7 +2,6 @@ use std::string::FromUtf8Error; -use anyhow::Result; use base64::Engine; use thiserror::Error; @@ -83,9 +82,11 @@ pub struct EmittedSourceText { #[derive(Debug, Error)] pub enum EmitError { #[error(transparent)] - SwcEmit(anyhow::Error), + SwcEmit(std::io::Error), #[error(transparent)] - SourceMap(anyhow::Error), + SourceMap(sourcemap::Error), + #[error(transparent)] + SourceMapEncode(base64::EncodeSliceError), } /// Emits the program as a string of JavaScript code, possibly with the passed @@ -120,7 +121,7 @@ pub fn emit( }; program .emit_with(&mut emitter) - .map_err(|e| EmitError::SwcEmit(e.into()))?; + .map_err(EmitError::SwcEmit)?; } let mut map: Option> = None; @@ -141,14 +142,14 @@ pub fn emit( } source_map .to_writer(&mut map_buf) - .map_err(|e| EmitError::SourceMap(e.into()))?; + .map_err(EmitError::SourceMap)?; if emit_options.source_map == SourceMapOption::Inline { // length is from the base64 crate examples let mut inline_buf = vec![0; map_buf.len() * 4 / 3 + 4]; let size = base64::prelude::BASE64_STANDARD .encode_slice(map_buf, &mut inline_buf) - .map_err(|err| EmitError::SourceMap(err.into()))?; + .map_err(EmitError::SourceMapEncode)?; let inline_buf = &inline_buf[..size]; let prelude_text = "//# sourceMappingURL=data:application/json;base64,"; let src_has_trailing_newline = src_buf.ends_with(&[b'\n']); diff --git a/src/transpiling/mod.rs b/src/transpiling/mod.rs index 1fc3e75..a0bcbdf 100644 --- a/src/transpiling/mod.rs +++ b/src/transpiling/mod.rs @@ -4,7 +4,6 @@ use std::borrow::Cow; use std::rc::Rc; use std::sync::Arc; -use anyhow::Result; use deno_media_type::MediaType; use swc_ecma_visit::as_folder; use thiserror::Error;