Skip to content

Commit

Permalink
Turbopack: Remove EcmascriptChunkingContext (vercel#65716)
Browse files Browse the repository at this point in the history
Depends on vercel/turborepo#8133. See that PR for rationale.
wbinnssmith authored May 15, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent f628aa6 commit 81d5dad
Showing 14 changed files with 93 additions and 145 deletions.
98 changes: 38 additions & 60 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -37,11 +37,11 @@ swc_core = { version = "0.90.33", features = [
testing = { version = "0.35.22" }

# Turbo crates
turbopack-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-240513.1" }
turbopack-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-240514.2" }
# [TODO]: need to refactor embed_directory! macro usages, as well as resolving turbo_tasks::function, macros..
turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-240513.1" }
turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-240514.2" }
# [TODO]: need to refactor embed_directory! macro usage in next-core
turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-240513.1" }
turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-240514.2" }

# General Deps

7 changes: 2 additions & 5 deletions packages/next-swc/crates/next-api/src/dynamic_imports.rs
Original file line number Diff line number Diff line change
@@ -27,10 +27,7 @@ use turbopack_binding::{
reference_type::EcmaScriptModulesReferenceSubType,
resolve::{origin::PlainResolveOrigin, parse::Request, pattern::Pattern},
},
ecmascript::{
chunk::EcmascriptChunkingContext, parse::ParseResult, resolve::esm_resolve,
EcmascriptModuleAsset,
},
ecmascript::{parse::ParseResult, resolve::esm_resolve, EcmascriptModuleAsset},
},
};

@@ -91,7 +88,7 @@ pub(crate) async fn collect_chunk_group(
}

pub(crate) async fn collect_evaluated_chunk_group(
chunking_context: Vc<Box<dyn EcmascriptChunkingContext>>,
chunking_context: Vc<Box<dyn ChunkingContext>>,
dynamic_import_entries: IndexMap<Vc<Box<dyn Module>>, DynamicImportedModules>,
) -> Result<Vc<DynamicImportedChunks>> {
collect_chunk_group_inner(dynamic_import_entries, |module| async move {
11 changes: 6 additions & 5 deletions packages/next-swc/crates/next-api/src/pages.rs
Original file line number Diff line number Diff line change
@@ -34,7 +34,10 @@ use turbopack_binding::{
turbopack::{
core::{
asset::AssetContent,
chunk::{availability_info::AvailabilityInfo, ChunkingContextExt, EvaluatableAssets},
chunk::{
availability_info::AvailabilityInfo, ChunkingContext, ChunkingContextExt,
EvaluatableAssets,
},
context::AssetContext,
file_source::FileSource,
issue::IssueSeverity,
@@ -48,9 +51,7 @@ use turbopack_binding::{
virtual_output::VirtualOutputAsset,
},
ecmascript::{
chunk::{EcmascriptChunkPlaceable, EcmascriptChunkingContext},
resolve::esm_resolve,
EcmascriptModuleAsset,
chunk::EcmascriptChunkPlaceable, resolve::esm_resolve, EcmascriptModuleAsset,
},
nodejs::{EntryChunkGroupResult, NodeJsChunkingContext},
turbopack::{
@@ -705,7 +706,7 @@ impl PageEndpoint {
module_context: Vc<ModuleAssetContext>,
edge_module_context: Vc<ModuleAssetContext>,
chunking_context: Vc<NodeJsChunkingContext>,
edge_chunking_context: Vc<Box<dyn EcmascriptChunkingContext>>,
edge_chunking_context: Vc<Box<dyn ChunkingContext>>,
runtime_entries: Vc<EvaluatableAssets>,
edge_runtime_entries: Vc<EvaluatableAssets>,
) -> Result<Vc<SsrChunk>> {
6 changes: 3 additions & 3 deletions packages/next-swc/crates/next-api/src/project.rs
Original file line number Diff line number Diff line change
@@ -38,6 +38,7 @@ use turbopack_binding::{
browser::BrowserChunkingContext,
core::{
changed::content_changed,
chunk::ChunkingContext,
compile_time_info::CompileTimeInfo,
context::AssetContext,
diagnostics::DiagnosticExt,
@@ -50,7 +51,6 @@ use turbopack_binding::{
version::{Update, Version, VersionState, VersionedContent},
PROJECT_FILESYSTEM_NAME,
},
ecmascript::chunk::EcmascriptChunkingContext,
node::execution_context::ExecutionContext,
nodejs::NodeJsChunkingContext,
turbopack::{evaluate_context::node_build_environment, ModuleAssetContext},
@@ -625,7 +625,7 @@ impl Project {
#[turbo_tasks::function]
pub(super) async fn client_chunking_context(
self: Vc<Self>,
) -> Result<Vc<Box<dyn EcmascriptChunkingContext>>> {
) -> Result<Vc<Box<dyn ChunkingContext>>> {
Ok(get_client_chunking_context(
self.project_path(),
self.client_relative_path(),
@@ -663,7 +663,7 @@ impl Project {
pub(super) fn edge_chunking_context(
self: Vc<Self>,
client_assets: bool,
) -> Vc<Box<dyn EcmascriptChunkingContext>> {
) -> Vc<Box<dyn ChunkingContext>> {
if client_assets {
get_edge_chunking_context_with_client_assets(
self.next_mode(),
9 changes: 4 additions & 5 deletions packages/next-swc/crates/next-api/src/server_actions.rs
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@ use turbopack_binding::{
turbopack::{
core::{
asset::{Asset, AssetContent},
chunk::{ChunkItemExt, ChunkableModule, EvaluatableAsset},
chunk::{ChunkItemExt, ChunkableModule, ChunkingContext, EvaluatableAsset},
context::AssetContext,
module::Module,
output::OutputAsset,
@@ -29,9 +29,8 @@ use turbopack_binding::{
virtual_source::VirtualSource,
},
ecmascript::{
chunk::{EcmascriptChunkPlaceable, EcmascriptChunkingContext},
parse::ParseResult,
EcmascriptModuleAsset, EcmascriptModuleAssetType,
chunk::EcmascriptChunkPlaceable, parse::ParseResult, EcmascriptModuleAsset,
EcmascriptModuleAssetType,
},
},
};
@@ -51,7 +50,7 @@ pub(crate) async fn create_server_actions_manifest(
page_name: &str,
runtime: NextRuntime,
asset_context: Vc<Box<dyn AssetContext>>,
chunking_context: Vc<Box<dyn EcmascriptChunkingContext>>,
chunking_context: Vc<Box<dyn ChunkingContext>>,
) -> Result<(Vc<Box<dyn EvaluatableAsset>>, Vc<Box<dyn OutputAsset>>)> {
let actions = get_actions(rsc_entry, server_reference_modules, asset_context);
let loader =
Original file line number Diff line number Diff line change
@@ -2,13 +2,10 @@ use anyhow::Result;
use indexmap::IndexMap;
use tracing::Instrument;
use turbo_tasks::{TryFlatJoinIterExt, TryJoinIterExt, Value, ValueToString, Vc};
use turbopack_binding::turbopack::{
core::{
chunk::{availability_info::AvailabilityInfo, ChunkingContext, ChunkingContextExt},
module::Module,
output::OutputAssets,
},
ecmascript::chunk::EcmascriptChunkingContext,
use turbopack_binding::turbopack::core::{
chunk::{availability_info::AvailabilityInfo, ChunkingContext, ChunkingContextExt},
module::Module,
output::OutputAssets,
};

use super::include_modules_module::IncludeModulesModule;
@@ -44,9 +41,9 @@ pub struct ClientReferencesChunks {
#[turbo_tasks::function]
pub async fn get_app_client_references_chunks(
app_client_references: Vc<ClientReferenceGraphResult>,
client_chunking_context: Vc<Box<dyn EcmascriptChunkingContext>>,
client_chunking_context: Vc<Box<dyn ChunkingContext>>,
client_availability_info: Value<AvailabilityInfo>,
ssr_chunking_context: Option<Vc<Box<dyn EcmascriptChunkingContext>>>,
ssr_chunking_context: Option<Vc<Box<dyn ChunkingContext>>>,
) -> Result<Vc<ClientReferencesChunks>> {
async move {
// TODO Reconsider this. Maybe it need to be true in production.
Original file line number Diff line number Diff line change
@@ -1,22 +1,18 @@
use anyhow::Result;
use turbo_tasks::{Value, Vc};
use turbopack_binding::turbopack::{
core::{
chunk::{
availability_info::AvailabilityInfo, ChunkGroupResult, ChunkingContext,
EvaluatableAssets,
},
ident::AssetIdent,
output::OutputAssets,
use turbopack_binding::turbopack::core::{
chunk::{
availability_info::AvailabilityInfo, ChunkGroupResult, ChunkingContext, EvaluatableAssets,
},
ecmascript::chunk::EcmascriptChunkingContext,
ident::AssetIdent,
output::OutputAssets,
};

#[turbo_tasks::function]
pub async fn get_app_client_shared_chunk_group(
ident: Vc<AssetIdent>,
app_client_runtime_entries: Vc<EvaluatableAssets>,
client_chunking_context: Vc<Box<dyn EcmascriptChunkingContext>>,
client_chunking_context: Vc<Box<dyn ChunkingContext>>,
) -> Result<Vc<ChunkGroupResult>> {
if app_client_runtime_entries.await?.is_empty() {
return Ok(ChunkGroupResult {
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use anyhow::{Context, Result};
use anyhow::Result;
use turbo_tasks::{TryJoinIterExt, ValueToString, Vc};
use turbo_tasks_fs::glob::Glob;
use turbopack_binding::turbopack::{
@@ -12,7 +12,7 @@ use turbopack_binding::turbopack::{
},
ecmascript::chunk::{
EcmascriptChunkItem, EcmascriptChunkItemContent, EcmascriptChunkPlaceable,
EcmascriptChunkType, EcmascriptChunkingContext, EcmascriptExports,
EcmascriptChunkType, EcmascriptExports,
},
};

@@ -81,13 +81,6 @@ impl ChunkableModule for IncludeModulesModule {
self: Vc<Self>,
chunking_context: Vc<Box<dyn ChunkingContext>>,
) -> Result<Vc<Box<dyn ChunkItem>>> {
let chunking_context =
Vc::try_resolve_downcast::<Box<dyn EcmascriptChunkingContext>>(chunking_context)
.await?
.context(
"chunking context must impl EcmascriptChunkingContext to use \
EcmascriptClientReferenceProxyModule",
)?;
Ok(Vc::upcast(
IncludeModulesChunkItem {
module: self,
@@ -102,7 +95,7 @@ impl ChunkableModule for IncludeModulesModule {
#[turbo_tasks::value]
struct IncludeModulesChunkItem {
module: Vc<IncludeModulesModule>,
chunking_context: Vc<Box<dyn EcmascriptChunkingContext>>,
chunking_context: Vc<Box<dyn ChunkingContext>>,
}

#[turbo_tasks::value_impl]
@@ -135,7 +128,7 @@ impl ChunkItem for IncludeModulesChunkItem {
#[turbo_tasks::value_impl]
impl EcmascriptChunkItem for IncludeModulesChunkItem {
#[turbo_tasks::function]
fn chunking_context(&self) -> Vc<Box<dyn EcmascriptChunkingContext>> {
fn chunking_context(&self) -> Vc<Box<dyn ChunkingContext>> {
self.chunking_context
}

5 changes: 3 additions & 2 deletions packages/next-swc/crates/next-core/src/next_client/context.rs
Original file line number Diff line number Diff line change
@@ -9,6 +9,7 @@ use turbopack_binding::{
turbopack::{
browser::{react_refresh::assert_can_resolve_react_refresh, BrowserChunkingContext},
core::{
chunk::ChunkingContext,
compile_time_info::{
CompileTimeDefineValue, CompileTimeDefines, CompileTimeInfo, FreeVarReference,
FreeVarReferences,
@@ -17,7 +18,7 @@ use turbopack_binding::{
free_var_references,
resolve::{parse::Request, pattern::Pattern},
},
ecmascript::{chunk::EcmascriptChunkingContext, TreeShakingMode},
ecmascript::TreeShakingMode,
node::{
execution_context::ExecutionContext,
transforms::postcss::{PostCssConfigLocation, PostCssTransformOptions},
@@ -324,7 +325,7 @@ pub async fn get_client_chunking_context(
asset_prefix: Vc<Option<String>>,
environment: Vc<Environment>,
mode: Vc<NextMode>,
) -> Result<Vc<Box<dyn EcmascriptChunkingContext>>> {
) -> Result<Vc<Box<dyn ChunkingContext>>> {
let next_mode = mode.await?;
let mut builder = BrowserChunkingContext::builder(
project_path,
Original file line number Diff line number Diff line change
@@ -19,7 +19,7 @@ use turbopack_binding::turbopack::{
ecmascript::{
chunk::{
EcmascriptChunkItem, EcmascriptChunkItemContent, EcmascriptChunkPlaceable,
EcmascriptChunkType, EcmascriptChunkingContext, EcmascriptExports,
EcmascriptChunkType, EcmascriptExports,
},
utils::StringifyJs,
EcmascriptModuleAsset,
@@ -221,13 +221,6 @@ impl ChunkableModule for EcmascriptClientReferenceProxyModule {
let ecmascript_item = Vc::try_resolve_downcast::<Box<dyn EcmascriptChunkItem>>(item)
.await?
.context("EcmascriptModuleAsset must implement EcmascriptChunkItem")?;
let chunking_context =
Vc::try_resolve_downcast::<Box<dyn EcmascriptChunkingContext>>(chunking_context)
.await?
.context(
"chunking context must impl EcmascriptChunkingContext to use \
EcmascriptClientReferenceProxyModule",
)?;

Ok(Vc::upcast(
ProxyModuleChunkItem {
@@ -256,7 +249,7 @@ impl EcmascriptChunkPlaceable for EcmascriptClientReferenceProxyModule {
struct ProxyModuleChunkItem {
client_proxy_asset: Vc<EcmascriptClientReferenceProxyModule>,
inner_proxy_module_chunk_item: Vc<Box<dyn EcmascriptChunkItem>>,
chunking_context: Vc<Box<dyn EcmascriptChunkingContext>>,
chunking_context: Vc<Box<dyn ChunkingContext>>,
}

#[turbo_tasks::function]
@@ -314,7 +307,7 @@ impl EcmascriptChunkItem for ProxyModuleChunkItem {
}

#[turbo_tasks::function]
fn chunking_context(&self) -> Vc<Box<dyn EcmascriptChunkingContext>> {
fn chunking_context(&self) -> Vc<Box<dyn ChunkingContext>> {
EcmascriptChunkItem::chunking_context(self.inner_proxy_module_chunk_item)
}
}
6 changes: 3 additions & 3 deletions packages/next-swc/crates/next-core/src/next_edge/context.rs
Original file line number Diff line number Diff line change
@@ -6,14 +6,14 @@ use turbopack_binding::{
turbopack::{
browser::BrowserChunkingContext,
core::{
chunk::ChunkingContext,
compile_time_info::{
CompileTimeDefineValue, CompileTimeDefines, CompileTimeInfo, FreeVarReference,
FreeVarReferences,
},
environment::{EdgeWorkerEnvironment, Environment, ExecutionEnvironment},
free_var_references,
},
ecmascript::chunk::EcmascriptChunkingContext,
node::execution_context::ExecutionContext,
turbopack::resolve_options_context::ResolveOptionsContext,
},
@@ -173,7 +173,7 @@ pub async fn get_edge_chunking_context_with_client_assets(
client_root: Vc<FileSystemPath>,
asset_prefix: Vc<Option<String>>,
environment: Vc<Environment>,
) -> Result<Vc<Box<dyn EcmascriptChunkingContext>>> {
) -> Result<Vc<Box<dyn ChunkingContext>>> {
let output_root = node_root.join("server/edge".to_string());
let next_mode = mode.await?;
Ok(Vc::upcast(
@@ -198,7 +198,7 @@ pub async fn get_edge_chunking_context(
project_path: Vc<FileSystemPath>,
node_root: Vc<FileSystemPath>,
environment: Vc<Environment>,
) -> Result<Vc<Box<dyn EcmascriptChunkingContext>>> {
) -> Result<Vc<Box<dyn ChunkingContext>>> {
let output_root = node_root.join("server/edge".to_string());
let next_mode = mode.await?;
Ok(Vc::upcast(
Original file line number Diff line number Diff line change
@@ -5,11 +5,11 @@ use turbo_tasks_fs::{File, FileSystemPath};
use turbopack_binding::turbopack::{
core::{
asset::AssetContent,
chunk::{ChunkItemExt, ChunkableModule, ModuleId as TurbopackModuleId},
chunk::{ChunkItemExt, ChunkableModule, ChunkingContext, ModuleId as TurbopackModuleId},
output::OutputAsset,
virtual_output::VirtualOutputAsset,
},
ecmascript::{chunk::EcmascriptChunkingContext, utils::StringifyJs},
ecmascript::utils::StringifyJs,
};

use super::{ClientReferenceManifest, ManifestNode, ManifestNodeEntry, ModuleId};
@@ -29,8 +29,8 @@ impl ClientReferenceManifest {
entry_name: String,
client_references: Vc<ClientReferenceGraphResult>,
client_references_chunks: Vc<ClientReferencesChunks>,
client_chunking_context: Vc<Box<dyn EcmascriptChunkingContext>>,
ssr_chunking_context: Option<Vc<Box<dyn EcmascriptChunkingContext>>>,
client_chunking_context: Vc<Box<dyn ChunkingContext>>,
ssr_chunking_context: Option<Vc<Box<dyn ChunkingContext>>>,
next_config: Vc<NextConfig>,
runtime: NextRuntime,
) -> Result<Vc<Box<dyn OutputAsset>>> {
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use std::collections::BTreeMap;

use anyhow::{bail, Context, Result};
use anyhow::{bail, Result};
use indoc::formatdoc;
use turbo_tasks::Vc;
use turbo_tasks_fs::FileSystemPath;
@@ -19,7 +19,7 @@ use turbopack_binding::turbopack::{
turbopack::ecmascript::{
chunk::{
EcmascriptChunkItem, EcmascriptChunkItemContent, EcmascriptChunkPlaceable,
EcmascriptChunkingContext, EcmascriptExports,
EcmascriptExports,
},
utils::StringifyJs,
},
@@ -81,16 +81,9 @@ impl ChunkableModule for NextServerComponentModule {
self: Vc<Self>,
chunking_context: Vc<Box<dyn ChunkingContext>>,
) -> Result<Vc<Box<dyn turbopack_binding::turbopack::core::chunk::ChunkItem>>> {
let context =
Vc::try_resolve_downcast::<Box<dyn EcmascriptChunkingContext>>(chunking_context)
.await?
.context(
"chunking context must impl EcmascriptChunkingContext to use \
NextServerComponentModule",
)?;
Ok(Vc::upcast(
BuildServerComponentChunkItem {
context,
chunking_context,
inner: self,
}
.cell(),
@@ -122,15 +115,15 @@ impl EcmascriptChunkPlaceable for NextServerComponentModule {

#[turbo_tasks::value]
struct BuildServerComponentChunkItem {
context: Vc<Box<dyn EcmascriptChunkingContext>>,
chunking_context: Vc<Box<dyn ChunkingContext>>,
inner: Vc<NextServerComponentModule>,
}

#[turbo_tasks::value_impl]
impl EcmascriptChunkItem for BuildServerComponentChunkItem {
#[turbo_tasks::function]
fn chunking_context(&self) -> Vc<Box<dyn EcmascriptChunkingContext>> {
self.context
fn chunking_context(&self) -> Vc<Box<dyn ChunkingContext>> {
self.chunking_context
}

#[turbo_tasks::function]
@@ -140,7 +133,7 @@ impl EcmascriptChunkItem for BuildServerComponentChunkItem {

let module_id = inner
.module
.as_chunk_item(Vc::upcast(this.context))
.as_chunk_item(Vc::upcast(this.chunking_context))
.id()
.await?;
Ok(EcmascriptChunkItemContent {
@@ -173,7 +166,7 @@ impl ChunkItem for BuildServerComponentChunkItem {

#[turbo_tasks::function]
async fn chunking_context(&self) -> Vc<Box<dyn ChunkingContext>> {
Vc::upcast(self.context)
self.chunking_context
}

#[turbo_tasks::function]

0 comments on commit 81d5dad

Please sign in to comment.