Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
mischnic committed Feb 7, 2025
1 parent 029c3e3 commit b24caae
Show file tree
Hide file tree
Showing 18 changed files with 82 additions and 72 deletions.
2 changes: 1 addition & 1 deletion crates/napi/src/next_api/project.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ use turbopack_core::{
diagnostics::PlainDiagnostic,
error::PrettyPrintError,
issue::PlainIssue,
source_map::{OptionSourceMap, OptionStringifiedSourceMap, SourceMap, Token},
source_map::{SourceMap, Token},
version::{PartialUpdate, TotalUpdate, Update, VersionState},
SOURCE_MAP_PREFIX,
};
Expand Down
2 changes: 1 addition & 1 deletion crates/next-api/src/project.rs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ use turbopack_core::{
module_graph::{ModuleGraph, SingleModuleGraph, VisitedModules},
output::{OutputAsset, OutputAssets},
resolve::{find_context_file, FindContextFileResult},
source_map::{OptionSourceMap, OptionStringifiedSourceMap},
source_map::OptionStringifiedSourceMap,
version::{
NotFoundVersion, OptionVersionedContent, Update, Version, VersionState, VersionedContent,
},
Expand Down
2 changes: 1 addition & 1 deletion crates/next-api/src/versioned_content_map.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ use turbo_tasks_fs::FileSystemPath;
use turbopack_core::{
asset::Asset,
output::{OptionOutputAsset, OutputAsset, OutputAssets},
source_map::{GenerateSourceMap, OptionSourceMap, OptionStringifiedSourceMap},
source_map::{GenerateSourceMap, OptionStringifiedSourceMap},
version::OptionVersionedContent,
};

Expand Down
2 changes: 1 addition & 1 deletion turbopack/crates/turbopack-browser/src/ecmascript/chunk.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use turbopack_core::{
chunk::{Chunk, ChunkingContext, OutputChunk, OutputChunkRuntimeInfo},
introspect::{Introspectable, IntrospectableChildren},
output::{OutputAsset, OutputAssets},
source_map::{GenerateSourceMap, OptionSourceMap, OptionStringifiedSourceMap, SourceMapAsset},
source_map::{GenerateSourceMap, OptionStringifiedSourceMap, SourceMapAsset},
version::VersionedContent,
};
use turbopack_ecmascript::chunk::EcmascriptChunk;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use turbopack_core::{
chunk::{ChunkingContext, MinifyType, ModuleId},
code_builder::{Code, CodeBuilder},
output::OutputAsset,
source_map::{GenerateSourceMap, OptionSourceMap, OptionStringifiedSourceMap},
source_map::{GenerateSourceMap, OptionStringifiedSourceMap},
version::{MergeableVersionedContent, Version, VersionedContent, VersionedContentMerger},
};
use turbopack_ecmascript::{chunk::EcmascriptChunkContent, minify::minify, utils::StringifyJs};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ use turbopack_core::{
module::Module,
module_graph::ModuleGraph,
output::{OutputAsset, OutputAssets},
source_map::{GenerateSourceMap, OptionSourceMap, OptionStringifiedSourceMap, SourceMapAsset},
source_map::{GenerateSourceMap, OptionStringifiedSourceMap, SourceMapAsset},
};
use turbopack_ecmascript::{
chunk::{EcmascriptChunkData, EcmascriptChunkPlaceable},
Expand Down
105 changes: 61 additions & 44 deletions turbopack/crates/turbopack-core/src/code_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use std::{
};

use anyhow::{Context, Result};
use indexmap::IndexMap;
use serde::{Deserialize, Serialize};
use turbo_tasks::Vc;
use turbo_tasks_fs::{
rope::{Rope, RopeBuilder},
Expand All @@ -15,9 +15,7 @@ use turbo_tasks_fs::{
use turbo_tasks_hash::hash_xxh3_hash64;

use crate::{
source_map::{
GenerateSourceMap, OptionSourceMap, OptionStringifiedSourceMap, SourceMap, SourceMapSection,
},
source_map::{GenerateSourceMap, OptionStringifiedSourceMap, SourceMap, SourceMapSection},
source_pos::SourcePos,
SOURCE_MAP_PREFIX,
};
Expand Down Expand Up @@ -213,45 +211,64 @@ impl Code {
/// `file://` uris. This is useful for debugging environments.
pub async fn fileify_source_map(
map: Option<&Rope>,
_context_path: Vc<FileSystemPath>,
context_path: Vc<FileSystemPath>,
) -> Result<Option<Rope>> {
Ok(map.cloned())

// let Some(map) = &*map.await? else {
// return Ok(OptionSourceMap::none());
// };

// let flattened = map.to_source_map().await?;
// let flattened = flattened.as_regular_source_map();

// let Some(flattened) = flattened else {
// return Ok(OptionSourceMap::none());
// };

// let context_fs = context_path.fs();
// let context_fs = &*Vc::try_resolve_downcast_type::<DiskFileSystem>(context_fs)
// .await?
// .context("Expected the chunking context to have a DiskFileSystem")?
// .await?;
// let prefix = format!("{}[{}]/", SOURCE_MAP_PREFIX, context_fs.name());

// let mut transformed = flattened.into_owned();
// let mut updates = IndexMap::new();
// for (src_id, src) in transformed.sources().enumerate() {
// let src = {
// match src.strip_prefix(&prefix) {
// Some(src) => uri_from_file(context_path, Some(src)).await?,
// None => src.to_string(),
// }
// };
// updates.insert(src_id, src);
// }

// for (src_id, src) in updates {
// transformed.set_source(src_id as _, &src);
// }

// Ok(Vc::cell(Some(SourceMap::new_decoded(
// sourcemap::DecodedMap::Regular(transformed),
// ))))
#[derive(Serialize, Deserialize)]
struct SourceMapSectionOffsetJson {
line: u32,
offset: u32,
}
#[derive(Serialize, Deserialize)]
struct SourceMapSectionJson {
offset: SourceMapSectionOffsetJson,
map: SourceMapJson,
}
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
struct SourceMapJson {
version: u32,
file: Option<String>,
source_root: Option<String>,
sources: Vec<String>,
sources_content: Vec<Option<String>>,
names: Vec<String>,
mappings: String,
ignore_list: Vec<u32>,
sections: Option<Vec<SourceMapSectionJson>>,
}

let Some(map) = map else {
return Ok(None);
};

let context_fs = context_path.fs();
let context_fs = &*Vc::try_resolve_downcast_type::<DiskFileSystem>(context_fs)
.await?
.context("Expected the chunking context to have a DiskFileSystem")?
.await?;
let prefix = format!("{}[{}]/", SOURCE_MAP_PREFIX, context_fs.name());

// TODO this could be made (much) more efficient by not even de- and serializing other fields
// (apart from `sources`) and just keep storing them as strings.
let mut map: SourceMapJson = serde_json::from_reader(map.read())?;

let transform_source = async |src: &mut String| {
if let Some(src_rest) = src.strip_prefix(&prefix) {
*src = uri_from_file(context_path, Some(src_rest)).await?;
}
anyhow::Ok(())
};

for src in map.sources.iter_mut() {
transform_source(src).await?;
}
for section in map.sections.iter_mut().flatten() {
for src in section.map.sources.iter_mut() {
transform_source(src).await?;
}
}

let map = Rope::from(serde_json::to_vec(&map)?);

Ok(Some(map))
}
4 changes: 2 additions & 2 deletions turbopack/crates/turbopack-css/src/chunk/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ use turbopack_core::{
output::{OutputAsset, OutputAssets},
reference_type::ImportContext,
server_fs::ServerFileSystem,
source_map::{GenerateSourceMap, OptionSourceMap, OptionStringifiedSourceMap},
source_map::{GenerateSourceMap, OptionStringifiedSourceMap},
};

use self::{single_item_chunk::chunk::SingleItemCssChunk, source_map::CssChunkSourceMapAsset};
use crate::{process::ParseCssResultSourceMap, util::stringify_js, ImportAssetReference};
use crate::{util::stringify_js, ImportAssetReference};

#[turbo_tasks::value]
pub struct CssChunk {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use turbopack_core::{
ident::AssetIdent,
introspect::Introspectable,
output::{OutputAsset, OutputAssets},
source_map::{GenerateSourceMap, OptionSourceMap, OptionStringifiedSourceMap},
source_map::{GenerateSourceMap, OptionStringifiedSourceMap},
};

use super::source_map::SingleItemCssChunkSourceMapAsset;
Expand Down
2 changes: 1 addition & 1 deletion turbopack/crates/turbopack-css/src/module_asset.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ use turbopack_core::{
reference_type::{CssReferenceSubType, ReferenceType},
resolve::{origin::ResolveOrigin, parse::Request},
source::Source,
source_map::{OptionSourceMap, OptionStringifiedSourceMap},
source_map::OptionStringifiedSourceMap,
};
use turbopack_ecmascript::{
chunk::{
Expand Down
5 changes: 1 addition & 4 deletions turbopack/crates/turbopack-css/src/process.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,7 @@ use turbopack_core::{
reference_type::ImportContext,
resolve::origin::ResolveOrigin,
source::Source,
source_map::{
utils::add_default_ignore_list, GenerateSourceMap, OptionSourceMap,
OptionStringifiedSourceMap,
},
source_map::{utils::add_default_ignore_list, OptionStringifiedSourceMap},
source_pos::SourcePos,
SOURCE_MAP_PREFIX,
};
Expand Down
1 change: 0 additions & 1 deletion turbopack/crates/turbopack-ecmascript/src/chunk/item.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ use turbopack_core::{
code_builder::{fileify_source_map, Code, CodeBuilder},
error::PrettyPrintError,
issue::{code_gen::CodeGenerationIssue, IssueExt, IssueSeverity, StyledString},
source_map::{GenerateSourceMap, OptionStringifiedSourceMap},
};

use crate::{
Expand Down
3 changes: 1 addition & 2 deletions turbopack/crates/turbopack-ecmascript/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ use turbopack_core::{
FindContextFileResult,
},
source::Source,
source_map::{OptionSourceMap, OptionStringifiedSourceMap},
source_map::OptionStringifiedSourceMap,
};
// TODO remove this
pub use turbopack_resolve::ecmascript as resolve;
Expand All @@ -91,7 +91,6 @@ use self::chunk::{EcmascriptChunkItemContent, EcmascriptChunkType, EcmascriptExp
use crate::{
chunk::EcmascriptChunkPlaceable,
code_gen::CodeGens,
parse::InlineSourcesContentConfig,
references::{analyse_ecmascript_module, async_module::OptionAsyncModule},
transform::remove_shebang,
};
Expand Down
12 changes: 5 additions & 7 deletions turbopack/crates/turbopack-ecmascript/src/references/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ use parking_lot::Mutex;
use regex::Regex;
use rustc_hash::FxHashMap;
use serde::{Deserialize, Serialize};
use sourcemap::decode_data_url;
use swc_core::{
atoms::JsWord,
common::{
Expand Down Expand Up @@ -74,10 +73,7 @@ use turbopack_core::{
resolve, FindContextFileResult, ModulePart,
},
source::Source,
source_map::{
convert_to_turbopack_source_map, GenerateSourceMap, OptionSourceMap,
OptionStringifiedSourceMap, SourceMap,
},
source_map::{GenerateSourceMap, OptionStringifiedSourceMap},
};
use turbopack_resolve::{
ecmascript::{apply_cjs_specific_options, cjs_resolve_source},
Expand Down Expand Up @@ -567,7 +563,8 @@ pub(crate) async fn analyse_ecmascript_module_internal(
analysis.set_source_map(source_map.to_resolved().await?);
source_map_from_comment = true;
} else if path.starts_with("data:application/json;base64,") {
let source_map_origin = origin_path;
// TODO what about the origin here?
// let source_map_origin = origin_path;
let source_map = maybe_decode_data_url(path.into());
analysis.set_source_map(ResolvedVc::cell(source_map));
source_map_from_comment = true;
Expand All @@ -577,7 +574,8 @@ pub(crate) async fn analyse_ecmascript_module_internal(
if let Some(generate_source_map) =
ResolvedVc::try_sidecast::<Box<dyn GenerateSourceMap>>(source)
{
let source_map_origin = source.ident().path();
// TODO what about the origin here?
// let source_map_origin = source.ident().path();
let x = generate_source_map.generate_source_map();
analysis.set_source_map(x.to_resolved().await?);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use turbopack_core::{
chunk::{Chunk, ChunkingContext},
introspect::{Introspectable, IntrospectableChildren},
output::{OutputAsset, OutputAssets},
source_map::{GenerateSourceMap, OptionSourceMap, OptionStringifiedSourceMap, SourceMapAsset},
source_map::{GenerateSourceMap, OptionStringifiedSourceMap, SourceMapAsset},
version::VersionedContent,
};
use turbopack_ecmascript::chunk::EcmascriptChunk;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use turbopack_core::{
chunk::{ChunkItemExt, ChunkingContext, MinifyType, ModuleId},
code_builder::{Code, CodeBuilder},
output::OutputAsset,
source_map::{GenerateSourceMap, OptionSourceMap, OptionStringifiedSourceMap},
source_map::{GenerateSourceMap, OptionStringifiedSourceMap},
version::{Version, VersionedContent},
};
use turbopack_ecmascript::{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use turbopack_core::{
code_builder::{Code, CodeBuilder},
module_graph::ModuleGraph,
output::{OutputAsset, OutputAssets},
source_map::{GenerateSourceMap, OptionSourceMap, OptionStringifiedSourceMap, SourceMapAsset},
source_map::{GenerateSourceMap, OptionStringifiedSourceMap, SourceMapAsset},
};
use turbopack_ecmascript::{chunk::EcmascriptChunkPlaceable, utils::StringifyJs};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use turbopack_core::{
code_builder::{Code, CodeBuilder},
ident::AssetIdent,
output::{OutputAsset, OutputAssets},
source_map::{GenerateSourceMap, OptionSourceMap, OptionStringifiedSourceMap, SourceMapAsset},
source_map::{GenerateSourceMap, OptionStringifiedSourceMap, SourceMapAsset},
};
use turbopack_ecmascript::utils::StringifyJs;
use turbopack_ecmascript_runtime::RuntimeType;
Expand Down

0 comments on commit b24caae

Please sign in to comment.