use swc_ecma_ast::Module;
use swc_ecma_codegen::{Emitter, text_writer::JsWriter};
use crate::core::ast::parser::{ParseFileError, ParsedModule};
pub fn print_module(parsed: &ParsedModule, module: &Module) -> Result<String, ParseFileError> {
let mut output = Vec::new();
let mut emitter = Emitter {
cfg: Default::default(),
comments: Some(&parsed.comments),
cm: parsed.source_map.clone(),
wr: JsWriter::new(parsed.source_map.clone(), "\n", &mut output, None),
};
emitter.emit_module(module).map_err(|error| {
ParseFileError::new(&parsed.path, format!("failed to print module: {error}"))
})?;
String::from_utf8(output).map_err(|error| {
ParseFileError::new(
&parsed.path,
format!("generated output was not valid UTF-8: {error}"),
)
})
}