Skip to content

Commit 96d73ef

Browse files
committed
Turbopack: decode url encoding and relative paths in source maps
1 parent 5ef2062 commit 96d73ef

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/next-api/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ turbopack-ecmascript = { workspace = true }
3939
turbopack-node = { workspace = true }
4040
turbopack-nodejs = { workspace = true }
4141
turbopack-wasm = { workspace = true }
42+
urlencoding = { workspace = true }
4243

4344
[dev-dependencies]
4445
turbo-tasks-malloc = { workspace = true }

crates/next-api/src/analyze.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::io::Write;
1+
use std::{borrow::Cow, io::Write};
22

33
use anyhow::Result;
44
use byteorder::{BE, WriteBytesExt};
@@ -371,9 +371,16 @@ pub async fn analyze_output_assets(output_assets: Vc<OutputAssets>) -> Result<Vc
371371
let output_file_index = builder.add_output_file(AnalyzeOutputFile { filename });
372372
let chunk_parts = split_output_asset_into_parts(*asset).await?;
373373
for chunk_part in chunk_parts {
374-
let source_index = builder
375-
.ensure_source(chunk_part.source.trim_start_matches(&prefix))
376-
.1;
374+
let decoded_source = urlencoding::decode(&chunk_part.source)?;
375+
let source = if let Some(stripped) = decoded_source.strip_prefix(&prefix) {
376+
Cow::Borrowed(stripped)
377+
} else {
378+
Cow::Owned(format!(
379+
"[project]/{}",
380+
decoded_source.trim_start_matches("../")
381+
))
382+
};
383+
let source_index = builder.ensure_source(&source).1;
377384
let chunk_part_index = builder.add_chunk_part(AnalyzeChunkPart {
378385
source_index,
379386
output_file_index,

0 commit comments

Comments
 (0)