From 3fe58d5eb735711da0cb614b0839374dc3b49cea Mon Sep 17 00:00:00 2001 From: LongYinan Date: Sun, 14 Jul 2024 21:56:12 +0800 Subject: [PATCH] feat(core): add sourcemap support (#10) --- src/lib.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 05d9bd9..f7e6701 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -507,13 +507,25 @@ fn transform_output(url: String, output: LoadFnOutput) -> Result { }; tracing::debug!(url = ?url, jsx = ?jsx, src_path = ?src_path, source_type = ?source_type, "running oxc transform"); let transform_output = oxc_transform(src_path, output.source.as_ref().unwrap())?; + let output_code = transform_output + .0 + .source_map + .and_then(|sm| sm.to_data_url().ok()) + .map(|sm| { + const SOURCEMAP_PREFIX: &str = "\n//# sourceMappingURL="; + let len = sm.len() + transform_output.0.source_text.len() + 22; + let mut output_code = String::with_capacity(len + 22); + output_code.push_str(&transform_output.0.source_text); + output_code.push_str(SOURCEMAP_PREFIX); + output_code.push_str(sm.as_str()); + output_code + }) + .unwrap_or_else(|| transform_output.0.source_text); tracing::debug!("loaded {} format: {}", url, output.format); Ok(LoadFnOutput { format: output.format, - source: Some(Either4::B(Uint8Array::from_string( - transform_output.0.source_text, - ))), + source: Some(Either4::B(Uint8Array::from_string(output_code))), response_url: Some(url), }) }