diff --git a/crates/turbopack-core/src/chunk/chunking_context.rs b/crates/turbopack-core/src/chunk/chunking_context.rs new file mode 100644 index 0000000000000..8ab901d7ae7ae --- /dev/null +++ b/crates/turbopack-core/src/chunk/chunking_context.rs @@ -0,0 +1,55 @@ +use std::fmt::Debug; + +use anyhow::Result; +use turbo_tasks::primitives::{BoolVc, StringVc}; +use turbo_tasks_fs::FileSystemPathVc; + +use super::{ChunkVc, EvaluatableAssetsVc}; +use crate::{ + asset::{AssetVc, AssetsVc}, + environment::EnvironmentVc, + ident::AssetIdentVc, +}; + +/// A context for the chunking that influences the way chunks are created +#[turbo_tasks::value_trait] +pub trait ChunkingContext { + fn context_path(&self) -> FileSystemPathVc; + fn output_root(&self) -> FileSystemPathVc; + + // TODO remove this, a chunking context should not be bound to a specific + // environment since this can change due to transitions in the module graph + fn environment(&self) -> EnvironmentVc; + + // TODO(alexkirsz) Remove this from the chunking context. This should be at the + // discretion of chunking context implementors. However, we currently use this + // in a couple of places in `turbopack-css`, so we need to remove that + // dependency first. + fn chunk_path(&self, ident: AssetIdentVc, extension: &str) -> FileSystemPathVc; + + // TODO(alexkirsz) Remove this from the chunking context. + /// Reference Source Map Assets for chunks + fn reference_chunk_source_maps(&self, chunk: AssetVc) -> BoolVc; + + fn can_be_in_same_chunk(&self, asset_a: AssetVc, asset_b: AssetVc) -> BoolVc; + + fn asset_path(&self, content_hash: &str, extension: &str) -> FileSystemPathVc; + + fn is_hot_module_replacement_enabled(&self) -> BoolVc { + BoolVc::cell(false) + } + + fn layer(&self) -> StringVc { + StringVc::cell("".to_string()) + } + + fn with_layer(&self, layer: &str) -> ChunkingContextVc; + + fn chunk_group(&self, entry: ChunkVc) -> AssetsVc; + + fn evaluated_chunk_group( + &self, + entry: ChunkVc, + evaluatable_assets: EvaluatableAssetsVc, + ) -> AssetsVc; +} diff --git a/crates/turbopack-core/src/chunk/evaluate.rs b/crates/turbopack-core/src/chunk/evaluate.rs index 2b1da53e63575..aa16ab1836655 100644 --- a/crates/turbopack-core/src/chunk/evaluate.rs +++ b/crates/turbopack-core/src/chunk/evaluate.rs @@ -1,9 +1,9 @@ use anyhow::{bail, Result}; use turbo_tasks::{Value, ValueToString}; -use super::{ChunkVc, ChunkableAsset, ChunkableAssetVc, ChunkingContext, ChunkingContextVc}; +use super::{ChunkableAsset, ChunkableAssetVc}; use crate::{ - asset::{Asset, AssetVc, AssetsVc}, + asset::{Asset, AssetVc}, context::{AssetContext, AssetContextVc}, reference_type::{EntryReferenceSubType, ReferenceType}, }; @@ -52,15 +52,3 @@ impl EvaluatableAssetsVc { Ok(EvaluatableAssets(entries).cell()) } } - -/// Trait for chunking contexts which can generate evaluated chunks. -#[turbo_tasks::value_trait] -pub trait EvaluateChunkingContext: ChunkingContext { - /// Create a chunk that evaluates the given entries. - fn evaluate_chunk( - &self, - entry_chunk: ChunkVc, - other_assets: AssetsVc, - evaluatable_assets: EvaluatableAssetsVc, - ) -> AssetVc; -} diff --git a/crates/turbopack-core/src/chunk/mod.rs b/crates/turbopack-core/src/chunk/mod.rs index 505828b15472f..01a5a10eb45c1 100644 --- a/crates/turbopack-core/src/chunk/mod.rs +++ b/crates/turbopack-core/src/chunk/mod.rs @@ -1,5 +1,6 @@ pub mod availability_info; pub mod available_assets; +pub(crate) mod chunking_context; pub(crate) mod evaluate; pub mod optimize; @@ -14,10 +15,7 @@ use anyhow::{anyhow, Result}; use serde::{Deserialize, Serialize}; use turbo_tasks::{ debug::ValueDebugFormat, - graph::{ - GraphTraversal, GraphTraversalResult, ReverseTopological, SkipDuplicates, Visit, - VisitControlFlow, - }, + graph::{GraphTraversal, GraphTraversalResult, ReverseTopological, Visit, VisitControlFlow}, primitives::{BoolVc, StringVc}, trace::TraceRawVcs, TryJoinIterExt, Value, ValueToString, ValueToStringVc, @@ -25,14 +23,14 @@ use turbo_tasks::{ use turbo_tasks_fs::FileSystemPathVc; use turbo_tasks_hash::DeterministicHash; -pub use self::evaluate::{ - EvaluatableAsset, EvaluatableAssetVc, EvaluatableAssets, EvaluatableAssetsVc, - EvaluateChunkingContext, EvaluateChunkingContextVc, +use self::availability_info::AvailabilityInfo; +pub use self::{ + chunking_context::{ChunkingContext, ChunkingContextVc}, + evaluate::{EvaluatableAsset, EvaluatableAssetVc, EvaluatableAssets, EvaluatableAssetsVc}, + optimize::optimize, }; -use self::{availability_info::AvailabilityInfo, optimize::optimize}; use crate::{ asset::{Asset, AssetVc, AssetsVc}, - environment::EnvironmentVc, ident::AssetIdentVc, reference::{AssetReference, AssetReferenceVc, AssetReferencesVc}, resolve::{PrimaryResolveResult, ResolveResult, ResolveResultVc}, @@ -77,44 +75,6 @@ impl ModuleId { #[turbo_tasks::value(transparent, shared)] pub struct ModuleIds(Vec); -/// A context for the chunking that influences the way chunks are created -#[turbo_tasks::value_trait] -pub trait ChunkingContext { - fn context_path(&self) -> FileSystemPathVc; - fn output_root(&self) -> FileSystemPathVc; - - // TODO remove this, a chunking context should not be bound to a specific - // environment since this can change due to transitions in the module graph - fn environment(&self) -> EnvironmentVc; - - // TODO(alexkirsz) Remove this from the chunking context. This should be at the - // discretion of chunking context implementors. However, we currently use this - // in a couple of places in `turbopack-css`, so we need to remove that - // dependency first. - fn chunk_path(&self, ident: AssetIdentVc, extension: &str) -> FileSystemPathVc; - - // TODO(alexkirsz) Remove this from the chunking context. - /// Reference Source Map Assets for chunks - fn reference_chunk_source_maps(&self, chunk: AssetVc) -> BoolVc; - - fn can_be_in_same_chunk(&self, asset_a: AssetVc, asset_b: AssetVc) -> BoolVc; - - fn asset_path(&self, content_hash: &str, extension: &str) -> FileSystemPathVc; - - fn is_hot_module_replacement_enabled(&self) -> BoolVc { - BoolVc::cell(false) - } - - fn layer(&self) -> StringVc { - StringVc::cell("".to_string()) - } - - fn with_layer(&self, layer: &str) -> ChunkingContextVc; - - /// Generates an output chunk asset from an intermediate chunk asset. - fn generate_chunk(&self, chunk: ChunkVc) -> AssetVc; -} - /// An [Asset] that can be converted into a [Chunk]. #[turbo_tasks::value_trait] pub trait ChunkableAsset: Asset { @@ -134,176 +94,9 @@ pub trait ChunkableAsset: Asset { } } -#[turbo_tasks::value] -pub struct ChunkGroup { - chunking_context: ChunkingContextVc, - entry: ChunkVc, - evaluatable_assets: EvaluatableAssetsVc, -} - #[turbo_tasks::value(transparent)] pub struct Chunks(Vec); -#[turbo_tasks::value_impl] -impl ChunkGroupVc { - /// Creates a chunk group from an asset as entrypoint - #[turbo_tasks::function] - pub fn from_asset( - asset: ChunkableAssetVc, - chunking_context: ChunkingContextVc, - availability_info: Value, - ) -> Self { - Self::from_chunk( - chunking_context, - asset.as_chunk(chunking_context, availability_info), - ) - } - - /// Creates a chunk group from a chunk as entrypoint - #[turbo_tasks::function] - pub fn from_chunk(chunking_context: ChunkingContextVc, entry: ChunkVc) -> Self { - Self::cell(ChunkGroup { - chunking_context, - entry, - evaluatable_assets: EvaluatableAssetsVc::empty(), - }) - } - - /// Creates a chunk group from a chunk as entrypoint, with the given - /// evaluated entries to be appended. - /// - /// `main_entry` will always be evaluated after all entries in - /// `other_entries` are evaluated. - #[turbo_tasks::function] - pub fn evaluated( - chunking_context: ChunkingContextVc, - main_entry: EvaluatableAssetVc, - other_entries: EvaluatableAssetsVc, - ) -> Self { - Self::cell(ChunkGroup { - chunking_context, - entry: main_entry.as_root_chunk(chunking_context), - // The main entry should always be *appended* to other entries, in order to ensure - // it's only evaluated once all other entries are evaluated. - evaluatable_assets: other_entries.with_entry(main_entry), - }) - } - - /// Returns the entry chunk of this chunk group. - #[turbo_tasks::function] - pub async fn entry(self) -> Result { - Ok(self.await?.entry) - } - - /// Lists all chunks that are in this chunk group. - /// These chunks need to be loaded to fulfill that chunk group. - /// All chunks should be loaded in parallel. - #[turbo_tasks::function] - pub async fn chunks(self) -> Result { - let this = self.await?; - let evaluatable_assets = this.evaluatable_assets.await?; - - let mut entry_chunks: HashSet<_> = evaluatable_assets - .iter() - .map({ - let chunking_context = this.chunking_context; - move |evaluatable_asset| async move { - Ok(evaluatable_asset - .as_root_chunk(chunking_context) - .resolve() - .await?) - } - }) - .try_join() - .await? - .into_iter() - .collect(); - - entry_chunks.insert(this.entry.resolve().await?); - - let chunks: Vec<_> = GraphTraversal::, _>>::visit( - entry_chunks.into_iter(), - get_chunk_children, - ) - .await - .completed()? - .into_inner() - .into_iter() - .collect(); - - let chunks = ChunksVc::cell(chunks); - let chunks = optimize(chunks, self); - let mut assets: Vec = chunks - .await? - .iter() - .map(|chunk| this.chunking_context.generate_chunk(*chunk)) - .collect(); - - if !evaluatable_assets.is_empty() { - if let Some(evaluate_chunking_context) = - EvaluateChunkingContextVc::resolve_from(&this.chunking_context).await? - { - assets.push(evaluate_chunking_context.evaluate_chunk( - this.entry, - AssetsVc::cell(assets.clone()), - this.evaluatable_assets, - )); - } - } - - Ok(AssetsVc::cell(assets)) - } -} - -/// Computes the list of all chunk children of a given chunk. -async fn get_chunk_children(parent: ChunkVc) -> Result + Send> { - Ok(parent - .references() - .await? - .iter() - .copied() - .map(reference_to_chunks) - .try_join() - .await? - .into_iter() - .flatten()) -} - -/// Get all parallel chunks from a parallel chunk reference. -async fn reference_to_chunks(r: AssetReferenceVc) -> Result + Send> { - let mut result = Vec::new(); - if let Some(pc) = ParallelChunkReferenceVc::resolve_from(r).await? { - if *pc.is_loaded_in_parallel().await? { - result = r - .resolve_reference() - .await? - .primary - .iter() - .map(|r| async move { - Ok(if let PrimaryResolveResult::Asset(a) = r { - ChunkVc::resolve_from(a).await? - } else { - None - }) - }) - .try_join() - .await?; - } - } - Ok(result.into_iter().flatten()) -} - -#[turbo_tasks::value_impl] -impl ValueToString for ChunkGroup { - #[turbo_tasks::function] - async fn to_string(&self) -> Result { - Ok(StringVc::cell(format!( - "group for {}", - self.entry.path().to_string().await? - ))) - } -} - /// A chunk is one type of asset. /// It usually contains multiple chunk items. /// There is an optional trait [ParallelChunkReference] that @@ -429,14 +222,14 @@ impl ParallelChunkReference for ChunkReference { /// A reference to multiple chunks from a [ChunkGroup] #[turbo_tasks::value] pub struct ChunkGroupReference { - chunk_group: ChunkGroupVc, + chunks: AssetsVc, } #[turbo_tasks::value_impl] impl ChunkGroupReferenceVc { #[turbo_tasks::function] - pub fn new(chunk_group: ChunkGroupVc) -> Self { - Self::cell(ChunkGroupReference { chunk_group }) + pub fn new(chunks: AssetsVc) -> Self { + Self::cell(ChunkGroupReference { chunks }) } } @@ -444,7 +237,7 @@ impl ChunkGroupReferenceVc { impl AssetReference for ChunkGroupReference { #[turbo_tasks::function] async fn resolve_reference(&self) -> Result { - let set = self.chunk_group.chunks().await?.clone_value(); + let set = self.chunks.await?.clone_value(); Ok(ResolveResult::assets(set).into()) } } @@ -454,8 +247,17 @@ impl ValueToString for ChunkGroupReference { #[turbo_tasks::function] async fn to_string(&self) -> Result { Ok(StringVc::cell(format!( - "chunk group {}", - self.chunk_group.to_string().await? + "chunk group ({})", + self.chunks + .await? + .iter() + .map(|chunk| chunk.ident().to_string()) + .try_join() + .await? + .into_iter() + .map(|s| s.clone_value()) + .collect::>() + .join(", ") ))) } } @@ -463,7 +265,7 @@ impl ValueToString for ChunkGroupReference { pub struct ChunkContentResult { pub chunk_items: Vec, pub chunks: Vec, - pub async_chunk_groups: Vec, + pub async_chunk_groups: Vec, pub external_asset_references: Vec, pub availability_info: AvailabilityInfo, } @@ -515,7 +317,7 @@ enum ChunkContentGraphNode { Chunk(ChunkVc), // Chunk groups that are referenced from the current chunk, but // not loaded in parallel - AsyncChunkGroup(ChunkGroupVc), + AsyncChunkGroup(AssetsVc), ExternalAssetReference(AssetReferenceVc), } @@ -640,11 +442,12 @@ where ChunkingType::Separate => { graph_nodes.push(( Some((asset, chunking_type)), - ChunkContentGraphNode::AsyncChunkGroup(ChunkGroupVc::from_asset( - chunkable_asset, - context.chunking_context, - context.availability_info, - )), + ChunkContentGraphNode::AsyncChunkGroup( + context.chunking_context.chunk_group( + chunkable_asset + .as_chunk(context.chunking_context, context.availability_info), + ), + ), )); } ChunkingType::SeparateAsync => { @@ -816,8 +619,8 @@ where ChunkContentGraphNode::Chunk(chunk) => { chunks.push(chunk); } - ChunkContentGraphNode::AsyncChunkGroup(async_chunk_group) => { - async_chunk_groups.push(async_chunk_group); + ChunkContentGraphNode::AsyncChunkGroup(chunks) => { + async_chunk_groups.push(chunks); } ChunkContentGraphNode::ExternalAssetReference(reference) => { external_asset_references.push(reference); diff --git a/crates/turbopack-core/src/chunk/optimize.rs b/crates/turbopack-core/src/chunk/optimize.rs index 6481de931e016..de3019ab95ea7 100644 --- a/crates/turbopack-core/src/chunk/optimize.rs +++ b/crates/turbopack-core/src/chunk/optimize.rs @@ -10,7 +10,7 @@ use indexmap::{IndexMap, IndexSet}; use turbo_tasks::TryJoinIterExt; use turbo_tasks_fs::{FileSystemPathOptionVc, FileSystemPathVc}; -use super::{ChunkGroupVc, ChunkVc, ChunksVc}; +use super::{ChunkVc, ChunksVc}; use crate::{ asset::{Asset, AssetVc}, chunk::Chunk, @@ -19,7 +19,7 @@ use crate::{ /// A functor to optimize a set of chunks. #[turbo_tasks::value_trait] pub trait ChunkOptimizer { - fn optimize(&self, chunks: ChunksVc, chunk_group: ChunkGroupVc) -> ChunksVc; + fn optimize(&self, chunks: ChunksVc) -> ChunksVc; } /// Trait to mark a chunk as optimizable. @@ -30,7 +30,7 @@ pub trait OptimizableChunk: Chunk + Asset { /// Optimize all chunks that implement [OptimizableChunk]. #[turbo_tasks::function] -pub async fn optimize(chunks: ChunksVc, chunk_group: ChunkGroupVc) -> Result { +pub async fn optimize(chunks: ChunksVc) -> Result { let chunks = chunks.await?; let mut by_optimizer = IndexMap::<_, Vec<_>>::new(); for (chunk, optimizer) in chunks @@ -57,7 +57,7 @@ pub async fn optimize(chunks: ChunksVc, chunk_group: ChunkGroupVc) -> Result, pub chunks: Vec, - pub async_chunk_groups: Vec, + pub async_chunk_groups: Vec, pub external_asset_references: Vec, } @@ -231,7 +231,7 @@ async fn css_chunk_content( let mut all_chunk_items = IndexSet::::new(); let mut all_chunks = IndexSet::::new(); - let mut all_async_chunk_groups = IndexSet::::new(); + let mut all_async_chunk_groups = IndexSet::::new(); let mut all_external_asset_references = IndexSet::::new(); for content in contents { diff --git a/crates/turbopack-css/src/chunk/optimize.rs b/crates/turbopack-css/src/chunk/optimize.rs index 123641d82041e..924c0d3d21a91 100644 --- a/crates/turbopack-css/src/chunk/optimize.rs +++ b/crates/turbopack-css/src/chunk/optimize.rs @@ -3,7 +3,7 @@ use indexmap::IndexSet; use turbo_tasks::{TryJoinIterExt, Value}; use turbopack_core::chunk::{ optimize::{ChunkOptimizer, ChunkOptimizerVc}, - ChunkGroupVc, ChunkVc, ChunkingContextVc, ChunksVc, + ChunkVc, ChunkingContextVc, ChunksVc, }; use super::{CssChunkPlaceablesVc, CssChunkVc}; @@ -22,7 +22,7 @@ impl CssChunkOptimizerVc { #[turbo_tasks::value_impl] impl ChunkOptimizer for CssChunkOptimizer { #[turbo_tasks::function] - async fn optimize(&self, chunks: ChunksVc, _chunk_group: ChunkGroupVc) -> Result { + async fn optimize(&self, chunks: ChunksVc) -> Result { // The CSS optimizer works under the constraint that the order in which // CSS chunks are loaded must be preserved, as CSS rules // precedence is determined by the order in which they are diff --git a/crates/turbopack-dev-server/src/html.rs b/crates/turbopack-dev-server/src/html.rs index 376584fedb6bf..d73c89faff61c 100644 --- a/crates/turbopack-dev-server/src/html.rs +++ b/crates/turbopack-dev-server/src/html.rs @@ -4,8 +4,7 @@ use turbo_tasks::primitives::StringVc; use turbo_tasks_fs::{File, FileSystemPathVc}; use turbo_tasks_hash::{encode_hex, Xxh3Hash64Hasher}; use turbopack_core::{ - asset::{Asset, AssetContentVc, AssetVc}, - chunk::ChunkGroupVc, + asset::{Asset, AssetContentVc, AssetVc, AssetsVc}, ident::AssetIdentVc, reference::{AssetReferencesVc, SingleAssetReferenceVc}, version::{Version, VersionVc, VersionedContent, VersionedContentVc}, @@ -18,7 +17,7 @@ use turbopack_core::{ #[derive(Clone)] pub struct DevHtmlAsset { path: FileSystemPathVc, - chunk_groups: Vec, + chunk_groups: Vec, body: Option, } @@ -43,7 +42,7 @@ impl Asset for DevHtmlAsset { async fn references(&self) -> Result { let mut references = Vec::new(); for chunk_group in &self.chunk_groups { - let chunks = chunk_group.chunks().await?; + let chunks = chunk_group.await?; for chunk in chunks.iter() { references.push( SingleAssetReferenceVc::new(*chunk, dev_html_chunk_reference_description()) @@ -62,7 +61,7 @@ impl Asset for DevHtmlAsset { impl DevHtmlAssetVc { /// Create a new dev HTML asset. - pub fn new(path: FileSystemPathVc, chunk_groups: Vec) -> Self { + pub fn new(path: FileSystemPathVc, chunk_groups: Vec) -> Self { DevHtmlAsset { path, chunk_groups, @@ -74,7 +73,7 @@ impl DevHtmlAssetVc { /// Create a new dev HTML asset. pub fn new_with_body( path: FileSystemPathVc, - chunk_groups: Vec, + chunk_groups: Vec, body: String, ) -> Self { DevHtmlAsset { @@ -112,7 +111,7 @@ impl DevHtmlAssetVc { let mut chunk_paths = vec![]; for chunk_group in &this.chunk_groups { - for chunk in chunk_group.chunks().await?.iter() { + for chunk in chunk_group.await?.iter() { let chunk_path = &*chunk.ident().path().await?; if let Some(relative_path) = context_path.get_path_to(chunk_path) { chunk_paths.push(format!("/{relative_path}")); diff --git a/crates/turbopack-dev/js/src/runtime.dom.js b/crates/turbopack-dev/js/src/runtime.dom.js index 18c9e2212aca8..fd185928f92f5 100644 --- a/crates/turbopack-dev/js/src/runtime.dom.js +++ b/crates/turbopack-dev/js/src/runtime.dom.js @@ -16,11 +16,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-dev/js/src/runtime.js b/crates/turbopack-dev/js/src/runtime.js index 330662c499bcf..3549d19d425b5 100644 --- a/crates/turbopack-dev/js/src/runtime.js +++ b/crates/turbopack-dev/js/src/runtime.js @@ -6,6 +6,7 @@ /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -313,7 +314,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1231,39 +1231,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.source === "entry") { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1293,3 +1284,16 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; diff --git a/crates/turbopack-dev/js/types/backend.d.ts b/crates/turbopack-dev/js/types/backend.d.ts index dd1908899a5ed..1bd7a997aa4cd 100644 --- a/crates/turbopack-dev/js/types/backend.d.ts +++ b/crates/turbopack-dev/js/types/backend.d.ts @@ -11,7 +11,6 @@ declare global { declare const RUNTIME_PARAMS: DevRuntimeParams; declare const getFirstModuleChunk: GetFirstModuleChunk; declare const getOrInstantiateRuntimeModule: GetOrInstantiateRuntimeModule; - declare const registerChunkListAndMarkAsRuntime: RegisterChunkListAndMarkAsRuntime; declare const SourceTypeRuntime: SourceType.Runtime; declare const SourceTypeParent: SourceType.Parent; declare const SourceTypeUpdate: SourceType.Update; diff --git a/crates/turbopack-dev/js/types/index.d.ts b/crates/turbopack-dev/js/types/index.d.ts index d03ac461d0c7f..15d65e2039a9d 100644 --- a/crates/turbopack-dev/js/types/index.d.ts +++ b/crates/turbopack-dev/js/types/index.d.ts @@ -22,6 +22,11 @@ export type ChunkRegistration = [ chunkModules: ChunkModule[], DevRuntimeParams | undefined ]; +export type ChunkList = { + path: ChunkPath; + chunks: ChunkPath[]; + source: "entry" | "dynamic"; +}; interface Module { exports: Exports; @@ -127,10 +132,6 @@ export type GetOrInstantiateRuntimeModule = ( moduleId: ModuleId, chunkPath: ChunkPath ) => Module; -export type RegisterChunkListAndMarkAsRuntime = ( - chunkListPath: ChunkPath, - chunkPaths: ChunkPath[] -) => void; export interface Loader { promise: Promise; @@ -159,6 +160,7 @@ declare global { | ChunkUpdateProvider | [ChunkPath, UpdateCallback][] | undefined; + var TURBOPACK_CHUNK_LISTS: ChunkList[]; var $RefreshHelpers$: RefreshRuntimeGlobals["$RefreshHelpers$"]; var $RefreshReg$: RefreshRuntimeGlobals["$RefreshReg$"]; diff --git a/crates/turbopack-dev/js/types/runtime.d.ts b/crates/turbopack-dev/js/types/runtime.d.ts index 123cbc0515fa2..f0c5d9ce2f8a2 100644 --- a/crates/turbopack-dev/js/types/runtime.d.ts +++ b/crates/turbopack-dev/js/types/runtime.d.ts @@ -21,5 +21,4 @@ export type ModuleEffect = export type DevRuntimeParams = { otherChunks: ChunkPath[]; runtimeModuleIds: ModuleId[]; - chunkListPath: ChunkPath; }; diff --git a/crates/turbopack-dev/src/chunking_context.rs b/crates/turbopack-dev/src/chunking_context.rs index c7791cbbc938e..8fc490839afb0 100644 --- a/crates/turbopack-dev/src/chunking_context.rs +++ b/crates/turbopack-dev/src/chunking_context.rs @@ -1,21 +1,25 @@ use std::fmt::Write; use anyhow::Result; +use indexmap::IndexSet; use turbo_tasks::{ + graph::{GraphTraversal, ReverseTopological, SkipDuplicates}, primitives::{BoolVc, StringVc}, - Value, ValueToString, + TryJoinIterExt, Value, ValueToString, }; use turbo_tasks_fs::FileSystemPathVc; use turbo_tasks_hash::{encode_hex, hash_xxh3_hash64, DeterministicHash, Xxh3Hash64Hasher}; use turbopack_core::{ asset::{Asset, AssetVc, AssetsVc}, chunk::{ - availability_info::AvailabilityInfo, ChunkVc, ChunkableAssetVc, ChunkingContext, - ChunkingContextVc, EvaluatableAssetsVc, EvaluateChunkingContext, EvaluateChunkingContextVc, + availability_info::AvailabilityInfo, optimize, ChunkVc, ChunkableAsset, ChunkableAssetVc, + ChunkingContext, ChunkingContextVc, ChunksVc, EvaluatableAssetsVc, ParallelChunkReference, + ParallelChunkReferenceVc, }, environment::EnvironmentVc, ident::{AssetIdent, AssetIdentVc}, - resolve::ModulePart, + reference::{AssetReference, AssetReferenceVc}, + resolve::{ModulePart, PrimaryResolveResult}, }; use turbopack_ecmascript::chunk::{ EcmascriptChunkItemVc, EcmascriptChunkVc, EcmascriptChunkingContext, @@ -25,6 +29,7 @@ use turbopack_ecmascript::chunk::{ use crate::ecmascript::{ chunk::EcmascriptDevChunkVc, evaluate::chunk::EcmascriptDevEvaluateChunkVc, + list::chunk::{ChunkListSource, EcmascriptDevChunkListRegisterChunkVc}, manifest::{chunk_asset::DevManifestChunkAssetVc, loader_item::DevManifestLoaderItemVc}, }; @@ -118,11 +123,6 @@ impl DevChunkingContextVc { } } -#[turbo_tasks::function] -fn chunk_list_modifier() -> StringVc { - StringVc::cell("chunk list".to_string()) -} - #[turbo_tasks::value_impl] impl DevChunkingContextVc { #[turbo_tasks::function] @@ -131,12 +131,39 @@ impl DevChunkingContextVc { } #[turbo_tasks::function] - pub async fn chunk_list_path( - self, - entry_chunk_ident: AssetIdentVc, - ) -> Result { - let ident = entry_chunk_ident.with_modifier(chunk_list_modifier()); - Ok(self.chunk_path(ident, ".json")) + pub(crate) async fn generate_chunk( + self_vc: DevChunkingContextVc, + chunk: ChunkVc, + ) -> Result { + Ok( + if let Some(ecmascript_chunk) = EcmascriptChunkVc::resolve_from(chunk).await? { + EcmascriptDevChunkVc::new(self_vc, ecmascript_chunk).into() + } else { + chunk.into() + }, + ) + } + + #[turbo_tasks::function] + fn generate_evaluate_chunk( + self_vc: DevChunkingContextVc, + entry_chunk: ChunkVc, + other_chunks: AssetsVc, + evaluatable_assets: EvaluatableAssetsVc, + ) -> AssetVc { + EcmascriptDevEvaluateChunkVc::new(self_vc, entry_chunk, other_chunks, evaluatable_assets) + .into() + } + + #[turbo_tasks::function] + fn generate_chunk_list_register_chunk( + self_vc: DevChunkingContextVc, + entry_chunk: ChunkVc, + other_chunks: AssetsVc, + source: Value, + ) -> AssetVc { + EcmascriptDevChunkListRegisterChunkVc::new(self_vc, entry_chunk, other_chunks, source) + .into() } } @@ -343,14 +370,68 @@ impl ChunkingContext for DevChunkingContext { } #[turbo_tasks::function] - async fn generate_chunk(self_vc: DevChunkingContextVc, chunk: ChunkVc) -> Result { - Ok( - if let Some(ecmascript_chunk) = EcmascriptChunkVc::resolve_from(chunk).await? { - EcmascriptDevChunkVc::new(self_vc, ecmascript_chunk).into() - } else { - chunk.into() - }, - ) + async fn chunk_group(self_vc: DevChunkingContextVc, entry_chunk: ChunkVc) -> Result { + let chunks = get_optimized_parallel_chunks([entry_chunk]).await?; + + let mut assets: Vec = chunks + .await? + .iter() + .map(|chunk| self_vc.generate_chunk(*chunk)) + .collect(); + + assets.push(self_vc.generate_chunk_list_register_chunk( + entry_chunk, + AssetsVc::cell(assets.clone()), + Value::new(ChunkListSource::Dynamic), + )); + + Ok(AssetsVc::cell(assets)) + } + + #[turbo_tasks::function] + async fn evaluated_chunk_group( + self_vc: DevChunkingContextVc, + entry_chunk: ChunkVc, + evaluatable_assets: EvaluatableAssetsVc, + ) -> Result { + let evaluatable_assets_ref = evaluatable_assets.await?; + + let mut entry_assets: IndexSet<_> = evaluatable_assets_ref + .iter() + .map({ + move |evaluatable_asset| async move { + Ok(evaluatable_asset + .as_root_chunk(self_vc.into()) + .resolve() + .await?) + } + }) + .try_join() + .await? + .into_iter() + .collect(); + + entry_assets.insert(entry_chunk.resolve().await?); + + let chunks = get_optimized_parallel_chunks(entry_assets).await?; + + let mut assets: Vec = chunks + .await? + .iter() + .map(|chunk| self_vc.generate_chunk(*chunk)) + .collect(); + + let other_assets = AssetsVc::cell(assets.clone()); + + assets.push(self_vc.generate_chunk_list_register_chunk( + entry_chunk, + other_assets, + Value::new(ChunkListSource::Entry), + )); + + assets.push(self_vc.generate_evaluate_chunk(entry_chunk, other_assets, evaluatable_assets)); + + Ok(AssetsVc::cell(assets)) } } @@ -367,16 +448,60 @@ impl EcmascriptChunkingContext for DevChunkingContext { } } -#[turbo_tasks::value_impl] -impl EvaluateChunkingContext for DevChunkingContext { - #[turbo_tasks::function] - fn evaluate_chunk( - self_vc: DevChunkingContextVc, - entry_chunk: ChunkVc, - other_chunks: AssetsVc, - evaluatable_assets: EvaluatableAssetsVc, - ) -> AssetVc { - EcmascriptDevEvaluateChunkVc::new(self_vc, entry_chunk, other_chunks, evaluatable_assets) - .into() +async fn get_optimized_parallel_chunks(entries: I) -> Result +where + I: IntoIterator, +{ + let chunks: Vec<_> = GraphTraversal::, _>>::visit( + entries, + get_chunk_children, + ) + .await + .completed()? + .into_inner() + .into_iter() + .collect(); + + let chunks = ChunksVc::cell(chunks); + let chunks = optimize(chunks); + + Ok(chunks) +} + +/// Computes the list of all chunk children of a given chunk. +async fn get_chunk_children(parent: ChunkVc) -> Result + Send> { + Ok(parent + .references() + .await? + .iter() + .copied() + .map(reference_to_chunks) + .try_join() + .await? + .into_iter() + .flatten()) +} + +/// Get all parallel chunks from a parallel chunk reference. +async fn reference_to_chunks(r: AssetReferenceVc) -> Result + Send> { + let mut result = Vec::new(); + if let Some(pc) = ParallelChunkReferenceVc::resolve_from(r).await? { + if *pc.is_loaded_in_parallel().await? { + result = r + .resolve_reference() + .await? + .primary + .iter() + .map(|r| async move { + Ok(if let PrimaryResolveResult::Asset(a) = r { + ChunkVc::resolve_from(a).await? + } else { + None + }) + }) + .try_join() + .await?; + } } + Ok(result.into_iter().flatten()) } diff --git a/crates/turbopack-dev/src/ecmascript/content.rs b/crates/turbopack-dev/src/ecmascript/content.rs index e97e3456f128c..6df7f43da5007 100644 --- a/crates/turbopack-dev/src/ecmascript/content.rs +++ b/crates/turbopack-dev/src/ecmascript/content.rs @@ -2,11 +2,10 @@ use std::io::Write; use anyhow::{bail, Result}; use indoc::writedoc; -use serde::Serialize; use turbo_tasks_fs::File; use turbopack_core::{ asset::{Asset, AssetContentVc}, - chunk::{ChunkingContext, ModuleId, ModuleIdReadRef}, + chunk::{ChunkingContext, ModuleId}, code_builder::{CodeBuilder, CodeVc}, source_map::{GenerateSourceMap, GenerateSourceMapVc, OptionSourceMapVc}, version::{ @@ -159,18 +158,3 @@ impl GenerateSourceMap for EcmascriptDevChunkContent { Ok(OptionSourceMapVc::cell(None)) } } - -#[derive(Debug, Clone, Default, Serialize)] -#[serde(rename_all = "camelCase")] -struct EcmascriptDevChunkRuntimeParams { - /// Other chunks in the chunk group this chunk belongs to, if any. Does not - /// include the chunk itself. - /// - /// These chunks must be loaed before the runtime modules can be - /// instantiated. - other_chunks: Vec, - /// List of module IDs that this chunk should instantiate when executed. - runtime_module_ids: Vec, - /// Path to the chunk list that this chunk should register itself with. - chunk_list_path: Option, -} diff --git a/crates/turbopack-dev/src/ecmascript/evaluate/chunk.rs b/crates/turbopack-dev/src/ecmascript/evaluate/chunk.rs index 92780d47ffc4d..085797b669cab 100644 --- a/crates/turbopack-dev/src/ecmascript/evaluate/chunk.rs +++ b/crates/turbopack-dev/src/ecmascript/evaluate/chunk.rs @@ -1,6 +1,6 @@ use std::io::Write; -use anyhow::{bail, Context, Result}; +use anyhow::{bail, Result}; use indoc::writedoc; use serde::Serialize; use turbo_tasks::{primitives::StringVc, TryJoinIterExt, Value, ValueToString, ValueToStringVc}; @@ -21,17 +21,17 @@ use turbopack_ecmascript::{ utils::StringifyJs, }; -use crate::{ecmascript::list::reference::ChunkListReferenceVc, DevChunkingContextVc}; +use crate::DevChunkingContextVc; /// An Ecmascript chunk that: /// * Contains the Turbopack dev runtime code; and /// * Evaluates a list of runtime entries. #[turbo_tasks::value(shared)] pub(crate) struct EcmascriptDevEvaluateChunk { - pub(super) chunking_context: DevChunkingContextVc, - pub(super) entry_chunk: ChunkVc, - pub(super) other_chunks: AssetsVc, - pub(super) evaluatable_assets: EvaluatableAssetsVc, + chunking_context: DevChunkingContextVc, + entry_chunk: ChunkVc, + other_chunks: AssetsVc, + evaluatable_assets: EvaluatableAssetsVc, } #[turbo_tasks::value_impl] @@ -104,16 +104,7 @@ impl EcmascriptDevEvaluateChunkVc { .flatten() .collect(); - let chunk_list_path = this - .chunking_context - .chunk_list_path(this.entry_chunk.ident()) - .await?; - let chunk_list_path = output_root - .get_path_to(&*chunk_list_path) - .context("chunk list path is not in output root")?; - let params = EcmascriptDevChunkRuntimeParams { - chunk_list_path, other_chunks: other_chunks_paths, runtime_module_ids, }; @@ -221,13 +212,8 @@ impl Asset for EcmascriptDevEvaluateChunk { } #[turbo_tasks::function] - async fn references(self_vc: EcmascriptDevEvaluateChunkVc) -> Result { - let this = self_vc.await?; - Ok(AssetReferencesVc::cell(vec![ - ChunkListReferenceVc::new(this.chunking_context, this.entry_chunk, this.other_chunks) - .into(), - SourceMapAssetReferenceVc::new(self_vc.into()).into(), - ])) + fn references(self_vc: EcmascriptDevEvaluateChunkVc) -> AssetReferencesVc { + AssetReferencesVc::cell(vec![SourceMapAssetReferenceVc::new(self_vc.into()).into()]) } #[turbo_tasks::function] @@ -247,7 +233,7 @@ impl GenerateSourceMap for EcmascriptDevEvaluateChunk { #[derive(Debug, Clone, Default, Serialize)] #[serde(rename_all = "camelCase")] -struct EcmascriptDevChunkRuntimeParams<'a> { +struct EcmascriptDevChunkRuntimeParams { /// Other chunks in the chunk group this chunk belongs to, if any. Does not /// include the chunk itself. /// @@ -256,6 +242,4 @@ struct EcmascriptDevChunkRuntimeParams<'a> { other_chunks: Vec, /// List of module IDs that this chunk should instantiate when executed. runtime_module_ids: Vec, - /// Path to the chunk list that this chunk should register itself with. - chunk_list_path: &'a str, } diff --git a/crates/turbopack-dev/src/ecmascript/list/asset.rs b/crates/turbopack-dev/src/ecmascript/list/asset.rs index bb6ee83d21c93..40feae0b7abc4 100644 --- a/crates/turbopack-dev/src/ecmascript/list/asset.rs +++ b/crates/turbopack-dev/src/ecmascript/list/asset.rs @@ -1,8 +1,8 @@ use anyhow::Result; -use turbo_tasks::{primitives::StringVc, TryJoinIterExt, ValueToString}; +use turbo_tasks::primitives::StringVc; use turbopack_core::{ asset::{Asset, AssetContentVc, AssetVc, AssetsVc}, - chunk::{Chunk, ChunkVc, ChunkingContext}, + chunk::{ChunkVc, ChunkingContext}, ident::AssetIdentVc, reference::{AssetReferencesVc, SingleAssetReferenceVc}, version::{VersionedContent, VersionedContentVc}, @@ -58,13 +58,21 @@ fn chunk_list_chunk_reference_description() -> StringVc { StringVc::cell("chunk list chunk".to_string()) } +#[turbo_tasks::function] +fn chunk_list_modifier() -> StringVc { + StringVc::cell("chunk list".to_string()) +} + #[turbo_tasks::value_impl] impl Asset for ChunkListAsset { #[turbo_tasks::function] async fn ident(&self) -> Result { + let ident = self + .entry_chunk + .ident() + .with_modifier(chunk_list_modifier()); Ok(AssetIdentVc::from_path( - self.chunking_context - .chunk_list_path(self.entry_chunk.ident()), + self.chunking_context.chunk_path(ident, ".json"), )) } diff --git a/crates/turbopack-dev/src/ecmascript/list/chunk.rs b/crates/turbopack-dev/src/ecmascript/list/chunk.rs new file mode 100644 index 0000000000000..91f9f28f6b9cf --- /dev/null +++ b/crates/turbopack-dev/src/ecmascript/list/chunk.rs @@ -0,0 +1,194 @@ +use std::io::Write; + +use anyhow::{Context, Result}; +use indoc::writedoc; +use serde::Serialize; +use turbo_tasks::{primitives::StringVc, Value, ValueToString, ValueToStringVc}; +use turbo_tasks_fs::File; +use turbopack_core::{ + asset::{Asset, AssetContentVc, AssetVc, AssetsVc}, + chunk::{ChunkVc, ChunkingContext}, + code_builder::{CodeBuilder, CodeVc}, + ident::AssetIdentVc, + reference::AssetReferencesVc, + source_map::{ + GenerateSourceMap, GenerateSourceMapVc, OptionSourceMapVc, SourceMapAssetReferenceVc, + }, +}; +use turbopack_ecmascript::utils::StringifyJs; + +use super::asset::ChunkListAssetVc; +use crate::{ecmascript::list::reference::ChunkListReferenceVc, DevChunkingContextVc}; + +/// An Ecmascript chunk that: +/// * Contains the Turbopack dev runtime code; and +/// * Evaluates a list of runtime entries. +#[turbo_tasks::value(shared)] +pub(crate) struct EcmascriptDevChunkListRegisterChunk { + chunking_context: DevChunkingContextVc, + entry_chunk: ChunkVc, + chunks: AssetsVc, + source: ChunkListSource, +} + +#[turbo_tasks::value_impl] +impl EcmascriptDevChunkListRegisterChunkVc { + /// Creates a new [`EcmascriptDevChunkListRegisterChunkVc`]. + #[turbo_tasks::function] + pub fn new( + chunking_context: DevChunkingContextVc, + entry_chunk: ChunkVc, + chunks: AssetsVc, + source: Value, + ) -> Self { + EcmascriptDevChunkListRegisterChunk { + chunking_context, + entry_chunk, + chunks, + source: source.into_value(), + } + .cell() + } + + #[turbo_tasks::function] + async fn code(self) -> Result { + let this = self.await?; + + let output_root = this.chunking_context.output_root().await?; + + let chunks = this.chunks.await?; + let mut chunks_paths = Vec::with_capacity(chunks.len()); + for other_chunk in &*chunks { + let other_chunk_path = &*other_chunk.ident().path().await?; + if let Some(other_chunk_path) = output_root.get_path_to(other_chunk_path) { + chunks_paths.push(other_chunk_path.to_string()); + } + } + + let chunk_list_path = self.chunk_list_asset().ident().path().await?; + let chunk_list_path = output_root + .get_path_to(&*chunk_list_path) + .context("chunk list path is not in output root")?; + + let params = EcmascriptDevChunkListParams { + path: chunk_list_path, + chunks: chunks_paths, + source: this.source, + }; + + let mut code = CodeBuilder::default(); + + // We still use the `TURBOPACK` global variable to store the chunk here, + // as there may be another runtime already loaded in the page. + // This is the case in integration tests. + writedoc!( + code, + r#" + (globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({:#}); + "#, + StringifyJs(¶ms), + )?; + + if code.has_source_map() { + let chunk_path = self.ident().path().await?; + let filename = chunk_path.file_name(); + write!(code, "\n\n//# sourceMappingURL={}.map", filename)?; + } + + Ok(CodeVc::cell(code.build())) + } + + #[turbo_tasks::function] + async fn chunk_list_reference(self) -> Result { + let this = self.await?; + Ok(ChunkListReferenceVc::new( + this.chunking_context, + this.entry_chunk, + this.chunks, + )) + } + + #[turbo_tasks::function] + fn chunk_list_asset(self) -> ChunkListAssetVc { + self.chunk_list_reference().asset() + } +} + +#[turbo_tasks::value_impl] +impl ValueToString for EcmascriptDevChunkListRegisterChunk { + #[turbo_tasks::function] + async fn to_string(&self) -> Result { + Ok(StringVc::cell( + "Ecmascript Dev Chunk List Register".to_string(), + )) + } +} + +#[turbo_tasks::function] +fn modifier() -> StringVc { + StringVc::cell("ecmascript dev chunk list register".to_string()) +} + +#[turbo_tasks::value_impl] +impl Asset for EcmascriptDevChunkListRegisterChunk { + #[turbo_tasks::function] + async fn ident(&self) -> Result { + let mut ident = self.entry_chunk.ident().await?.clone_value(); + + ident.add_modifier(modifier()); + + for chunk in &*self.chunks.await? { + ident.add_modifier(chunk.ident().to_string()); + } + + let ident = AssetIdentVc::new(Value::new(ident)); + Ok(AssetIdentVc::from_path( + self.chunking_context.chunk_path(ident, ".js"), + )) + } + + #[turbo_tasks::function] + async fn references( + self_vc: EcmascriptDevChunkListRegisterChunkVc, + ) -> Result { + Ok(AssetReferencesVc::cell(vec![ + self_vc.chunk_list_reference().into(), + SourceMapAssetReferenceVc::new(self_vc.into()).into(), + ])) + } + + #[turbo_tasks::function] + async fn content(self_vc: EcmascriptDevChunkListRegisterChunkVc) -> Result { + let code = self_vc.code().await?; + Ok(File::from(code.source_code().clone()).into()) + } +} + +#[turbo_tasks::value_impl] +impl GenerateSourceMap for EcmascriptDevChunkListRegisterChunk { + #[turbo_tasks::function] + fn generate_source_map(self_vc: EcmascriptDevChunkListRegisterChunkVc) -> OptionSourceMapVc { + self_vc.code().generate_source_map() + } +} + +#[derive(Debug, Clone, Serialize)] +#[serde(rename_all = "camelCase")] +struct EcmascriptDevChunkListParams<'a> { + /// Path to the chunk list to register. + path: &'a str, + /// All chunks that belong to the chunk list. + chunks: Vec, + /// Where this chunk list is from. + source: ChunkListSource, +} + +#[derive(Debug, Clone, Copy, Ord, PartialOrd, Hash)] +#[turbo_tasks::value(serialization = "auto_for_input")] +#[serde(rename_all = "camelCase")] +pub enum ChunkListSource { + /// The chunk list is from a runtime entry. + Entry, + /// The chunk list is from a dynamic import. + Dynamic, +} diff --git a/crates/turbopack-dev/src/ecmascript/list/content.rs b/crates/turbopack-dev/src/ecmascript/list/content.rs index f067cd0f1c5f3..da3fcd582bb5a 100644 --- a/crates/turbopack-dev/src/ecmascript/list/content.rs +++ b/crates/turbopack-dev/src/ecmascript/list/content.rs @@ -1,6 +1,6 @@ use anyhow::Result; use indexmap::IndexMap; -use turbo_tasks::{IntoTraitRef, TryJoinIterExt, ValueToString}; +use turbo_tasks::{IntoTraitRef, TryJoinIterExt}; use turbo_tasks_fs::{FileContent, FileSystemPathReadRef, FileSystemPathVc}; use turbopack_core::{ asset::{Asset, AssetContent, AssetContentVc, AssetsVc}, diff --git a/crates/turbopack-dev/src/ecmascript/list/mod.rs b/crates/turbopack-dev/src/ecmascript/list/mod.rs index 829280a02890e..c4119a9cd6849 100644 --- a/crates/turbopack-dev/src/ecmascript/list/mod.rs +++ b/crates/turbopack-dev/src/ecmascript/list/mod.rs @@ -1,4 +1,5 @@ pub(crate) mod asset; +pub(crate) mod chunk; pub(crate) mod content; pub(crate) mod reference; pub(crate) mod update; diff --git a/crates/turbopack-dev/src/ecmascript/list/reference.rs b/crates/turbopack-dev/src/ecmascript/list/reference.rs index 9a6b201409c13..986f9a2f91f15 100644 --- a/crates/turbopack-dev/src/ecmascript/list/reference.rs +++ b/crates/turbopack-dev/src/ecmascript/list/reference.rs @@ -42,18 +42,24 @@ impl ChunkListReferenceVc { } .cell() } + + #[turbo_tasks::function] + pub(super) async fn asset(self) -> Result { + let this = self.await?; + Ok( + ChunkListAssetVc::new(this.chunking_context, this.entry_chunk, this.other_chunks) + .into(), + ) + } } #[turbo_tasks::value_impl] impl ValueToString for ChunkListReference { #[turbo_tasks::function] - async fn to_string(&self) -> Result { + async fn to_string(self_vc: ChunkListReferenceVc) -> Result { Ok(StringVc::cell(format!( "referenced chunk list {}", - self.chunking_context - .chunk_list_path(self.entry_chunk.ident()) - .to_string() - .await? + self_vc.asset().ident().to_string().await? ))) } } @@ -61,12 +67,8 @@ impl ValueToString for ChunkListReference { #[turbo_tasks::value_impl] impl AssetReference for ChunkListReference { #[turbo_tasks::function] - fn resolve_reference(&self) -> ResolveResultVc { - ResolveResult::asset( - ChunkListAssetVc::new(self.chunking_context, self.entry_chunk, self.other_chunks) - .into(), - ) - .cell() + fn resolve_reference(self_vc: ChunkListReferenceVc) -> ResolveResultVc { + ResolveResult::asset(self_vc.asset().into()).cell() } } diff --git a/crates/turbopack-dev/src/ecmascript/manifest/chunk_asset.rs b/crates/turbopack-dev/src/ecmascript/manifest/chunk_asset.rs index 446d0799ea6fa..207aa14ebc83d 100644 --- a/crates/turbopack-dev/src/ecmascript/manifest/chunk_asset.rs +++ b/crates/turbopack-dev/src/ecmascript/manifest/chunk_asset.rs @@ -1,12 +1,10 @@ -use std::iter::once; - use anyhow::{bail, Result}; use turbo_tasks::{primitives::StringVc, Value}; use turbopack_core::{ - asset::{Asset, AssetContentVc, AssetVc}, + asset::{Asset, AssetContentVc, AssetVc, AssetsVc}, chunk::{ - availability_info::AvailabilityInfo, ChunkGroupVc, ChunkVc, ChunkableAsset, - ChunkableAssetVc, ChunkingContext, ChunkingContextVc, + availability_info::AvailabilityInfo, ChunkVc, ChunkableAsset, ChunkableAssetVc, + ChunkingContext, ChunkingContextVc, }, ident::AssetIdentVc, reference::{AssetReferencesVc, SingleAssetReferenceVc}, @@ -17,7 +15,7 @@ use turbopack_ecmascript::chunk::{ }; use super::chunk_item::DevManifestChunkItem; -use crate::{ecmascript::list::reference::ChunkListReferenceVc, DevChunkingContextVc}; +use crate::DevChunkingContextVc; #[turbo_tasks::function] fn modifier() -> StringVc { @@ -57,15 +55,20 @@ impl DevManifestChunkAssetVc { } #[turbo_tasks::function] - pub(super) async fn chunk_group(self) -> Result { + pub(super) async fn entry_chunk(self) -> Result { let this = self.await?; - Ok(ChunkGroupVc::from_asset( - this.asset, + Ok(this.asset.as_chunk( this.chunking_context.into(), Value::new(this.availability_info), )) } + #[turbo_tasks::function] + pub(super) async fn chunks(self) -> Result { + let this = self.await?; + Ok(this.chunking_context.chunk_group(self.entry_chunk())) + } + #[turbo_tasks::function] pub async fn manifest_chunk(self) -> Result { let this = self.await?; @@ -95,9 +98,7 @@ impl Asset for DevManifestChunkAsset { #[turbo_tasks::function] async fn references(self_vc: DevManifestChunkAssetVc) -> Result { - let this = self_vc.await?; - let chunk_group = self_vc.chunk_group(); - let chunks = chunk_group.chunks(); + let chunks = self_vc.chunks(); Ok(AssetReferencesVc::cell( chunks @@ -108,16 +109,6 @@ impl Asset for DevManifestChunkAsset { SingleAssetReferenceVc::new(chunk, dev_manifest_chunk_reference_description()) .into() }) - .chain(once( - // This creates the chunk list corresponding to the manifest chunk's chunk - // group. - ChunkListReferenceVc::new( - this.chunking_context, - chunk_group.entry(), - chunk_group.chunks(), - ) - .into(), - )) .collect(), )) } diff --git a/crates/turbopack-dev/src/ecmascript/manifest/chunk_item.rs b/crates/turbopack-dev/src/ecmascript/manifest/chunk_item.rs index 90aa91b6c8b1d..30be1484e2fcc 100644 --- a/crates/turbopack-dev/src/ecmascript/manifest/chunk_item.rs +++ b/crates/turbopack-dev/src/ecmascript/manifest/chunk_item.rs @@ -1,11 +1,10 @@ -use anyhow::{anyhow, bail, Result}; +use anyhow::{bail, Result}; use indexmap::IndexSet; use indoc::formatdoc; -use serde::Serialize; use turbo_tasks::ValueToString; use turbopack_core::{ asset::Asset, - chunk::{Chunk, ChunkItem, ChunkItemVc, ChunkingContext}, + chunk::{ChunkItem, ChunkItemVc, ChunkingContext}, ident::AssetIdentVc, reference::AssetReferencesVc, }; @@ -38,8 +37,7 @@ impl EcmascriptChunkItem for DevManifestChunkItem { #[turbo_tasks::function] async fn content(&self) -> Result { - let chunk_group = self.manifest.chunk_group(); - let chunks = chunk_group.chunks().await?; + let chunks = self.manifest.chunks().await?; let output_root = self.context.output_root().await?; let mut chunk_server_paths = IndexSet::new(); @@ -61,29 +59,11 @@ impl EcmascriptChunkItem for DevManifestChunkItem { chunk_server_paths.insert(chunk_server_path.to_string()); } - let chunk_list_path = self - .context - .chunk_list_path(chunk_group.entry().ident()) - .await?; - let chunk_list_path = output_root - .get_path_to(&chunk_list_path) - .ok_or(anyhow!("chunk list path is not in output root"))?; - - #[derive(Serialize)] - #[serde(rename_all = "camelCase")] - struct ManifestChunkExport<'a> { - chunks: IndexSet, - list: &'a str, - } - let code = formatdoc! { r#" __turbopack_export_value__({:#}); "#, - StringifyJs(&ManifestChunkExport { - chunks: chunk_server_paths, - list: chunk_list_path, - }) + StringifyJs(&chunks) }; Ok(EcmascriptChunkItemContent { diff --git a/crates/turbopack-dev/src/ecmascript/manifest/loader_item.rs b/crates/turbopack-dev/src/ecmascript/manifest/loader_item.rs index ac010627d3de9..05af7f861b5f7 100644 --- a/crates/turbopack-dev/src/ecmascript/manifest/loader_item.rs +++ b/crates/turbopack-dev/src/ecmascript/manifest/loader_item.rs @@ -136,8 +136,7 @@ impl EcmascriptChunkItem for DevManifestLoaderItem { __turbopack_export_value__((__turbopack_import__) => {{ return __turbopack_load__({chunk_server_path}).then(() => {{ return __turbopack_require__({item_id}); - }}).then(({{ chunks, list }}) => {{ - __turbopack_register_chunk_list__(list, chunks); + }}).then((chunks) => {{ return Promise.all(chunks.map((chunk_path) => __turbopack_load__(chunk_path))); }}).then(() => {{ return __turbopack_import__({dynamic_id}); diff --git a/crates/turbopack-dev/src/ecmascript/module_factory.rs b/crates/turbopack-dev/src/ecmascript/module_factory.rs index d78f7ad74f2d6..843305c2daf31 100644 --- a/crates/turbopack-dev/src/ecmascript/module_factory.rs +++ b/crates/turbopack-dev/src/ecmascript/module_factory.rs @@ -15,7 +15,6 @@ pub(super) async fn module_factory(content: EcmascriptChunkItemContentVc) -> Res "v: __turbopack_export_value__", "c: __turbopack_cache__", "l: __turbopack_load__", - "k: __turbopack_register_chunk_list__", "j: __turbopack_cjs__", "g: global", // HACK diff --git a/crates/turbopack-dev/src/lib.rs b/crates/turbopack-dev/src/lib.rs index 41b0adfd3c525..e4e59970022c9 100644 --- a/crates/turbopack-dev/src/lib.rs +++ b/crates/turbopack-dev/src/lib.rs @@ -5,7 +5,6 @@ pub(crate) mod chunking_context; pub(crate) mod ecmascript; pub use chunking_context::{DevChunkingContext, DevChunkingContextBuilder, DevChunkingContextVc}; -pub use ecmascript::list::reference::{ChunkListReference, ChunkListReferenceVc}; pub fn register() { turbo_tasks::register(); diff --git a/crates/turbopack-ecmascript/src/chunk/content.rs b/crates/turbopack-ecmascript/src/chunk/content.rs index 5bac4d84ff12e..78471c4618ce8 100644 --- a/crates/turbopack-ecmascript/src/chunk/content.rs +++ b/crates/turbopack-ecmascript/src/chunk/content.rs @@ -2,9 +2,10 @@ use anyhow::Result; use indexmap::IndexSet; use turbo_tasks::Value; use turbopack_core::{ + asset::AssetsVc, chunk::{ availability_info::AvailabilityInfo, chunk_content, chunk_content_split, - ChunkContentResult, ChunkGroupVc, ChunkVc, + ChunkContentResult, ChunkVc, }, reference::AssetReferenceVc, }; @@ -19,7 +20,7 @@ use super::{ pub struct EcmascriptChunkContent { pub chunk_items: Vec, pub chunks: Vec, - pub async_chunk_groups: Vec, + pub async_chunk_groups: Vec, pub external_asset_references: Vec, pub availability_info: AvailabilityInfo, } @@ -80,7 +81,7 @@ async fn ecmascript_chunk_content_internal( let mut all_chunk_items = IndexSet::::new(); let mut all_chunks = IndexSet::::new(); - let mut all_async_chunk_groups = IndexSet::::new(); + let mut all_async_chunk_groups = IndexSet::::new(); let mut all_external_asset_references = IndexSet::::new(); for content in contents { diff --git a/crates/turbopack-ecmascript/src/chunk/optimize.rs b/crates/turbopack-ecmascript/src/chunk/optimize.rs index d212c74e9f9eb..d3a2b9f56327e 100644 --- a/crates/turbopack-ecmascript/src/chunk/optimize.rs +++ b/crates/turbopack-ecmascript/src/chunk/optimize.rs @@ -8,7 +8,7 @@ use turbo_tasks::{TryJoinIterExt, Value}; use turbo_tasks_fs::FileSystemPathOptionVc; use turbopack_core::chunk::{ optimize::{optimize_by_common_parent, ChunkOptimizer, ChunkOptimizerVc}, - ChunkGroupVc, ChunkVc, ChunksVc, + ChunkVc, ChunksVc, }; use super::{EcmascriptChunkPlaceablesVc, EcmascriptChunkVc, EcmascriptChunkingContextVc}; @@ -27,9 +27,9 @@ impl EcmascriptChunkOptimizerVc { #[turbo_tasks::value_impl] impl ChunkOptimizer for EcmascriptChunkOptimizer { #[turbo_tasks::function] - async fn optimize(&self, chunks: ChunksVc, chunk_group: ChunkGroupVc) -> Result { + async fn optimize(&self, chunks: ChunksVc) -> Result { optimize_by_common_parent(chunks, get_common_parent, |local, children| { - optimize_ecmascript(local, children, chunk_group) + optimize_ecmascript(local, children) }) .await } @@ -373,11 +373,7 @@ async fn merge_by_size( /// Chunk optimization for ecmascript chunks. #[turbo_tasks::function] -async fn optimize_ecmascript( - local: Option, - children: Vec, - _chunk_group: ChunkGroupVc, -) -> Result { +async fn optimize_ecmascript(local: Option, children: Vec) -> Result { let mut chunks = Vec::<(EcmascriptChunkVc, Option)>::new(); // TODO optimize let mut unoptimized_count = 0; diff --git a/crates/turbopack-ecmascript/src/chunk_group_files_asset.rs b/crates/turbopack-ecmascript/src/chunk_group_files_asset.rs index cffcf6bad3071..8a474712880d6 100644 --- a/crates/turbopack-ecmascript/src/chunk_group_files_asset.rs +++ b/crates/turbopack-ecmascript/src/chunk_group_files_asset.rs @@ -3,10 +3,10 @@ use indexmap::IndexSet; use turbo_tasks::{primitives::StringVc, TryJoinIterExt, Value, ValueToString}; use turbo_tasks_fs::FileSystemPathVc; use turbopack_core::{ - asset::{Asset, AssetContentVc, AssetVc}, + asset::{Asset, AssetContentVc, AssetVc, AssetsVc}, chunk::{ - availability_info::AvailabilityInfo, ChunkGroupVc, ChunkItem, ChunkItemVc, ChunkVc, - ChunkableAsset, ChunkableAssetVc, ChunkingContextVc, EvaluatableAssetsVc, + availability_info::AvailabilityInfo, ChunkItem, ChunkItemVc, ChunkVc, ChunkableAsset, + ChunkableAssetVc, ChunkingContext, ChunkingContextVc, EvaluatableAssetsVc, }, ident::AssetIdentVc, introspect::{ @@ -44,27 +44,22 @@ pub struct ChunkGroupFilesAsset { #[turbo_tasks::value_impl] impl ChunkGroupFilesAssetVc { #[turbo_tasks::function] - async fn chunk_group(self) -> Result { + async fn chunks(self) -> Result { let this = self.await?; - let chunk_group = + Ok( if let Some(ecma) = EcmascriptModuleAssetVc::resolve_from(this.asset).await? { - ChunkGroupVc::evaluated( - this.chunking_context, - ecma.into(), + this.chunking_context.evaluated_chunk_group( + ecma.as_root_chunk(this.chunking_context), this.runtime_entries .clone() - .unwrap_or_else(EvaluatableAssetsVc::empty), + .unwrap_or_else(EvaluatableAssetsVc::empty) + .with_entry(ecma.into()), ) } else { - ChunkGroupVc::from_asset( - this.asset, - this.chunking_context, - Value::new(AvailabilityInfo::Root { - current_availability_root: this.asset.into(), - }), - ) - }; - Ok(chunk_group) + this.chunking_context + .chunk_group(this.asset.as_root_chunk(this.chunking_context)) + }, + ) } } @@ -87,7 +82,7 @@ impl Asset for ChunkGroupFilesAsset { #[turbo_tasks::function] async fn references(self_vc: ChunkGroupFilesAssetVc) -> Result { - let chunks = self_vc.chunk_group().chunks(); + let chunks = self_vc.chunks(); Ok(AssetReferencesVc::cell( chunks @@ -166,7 +161,7 @@ impl EcmascriptChunkItem for ChunkGroupFilesChunkItem { #[turbo_tasks::function] async fn content(&self) -> Result { - let chunks = self.inner.chunk_group().chunks(); + let chunks = self.inner.chunks(); let client_root = self.client_root.await?; let chunks_paths = chunks .await? @@ -224,7 +219,7 @@ impl Introspectable for ChunkGroupFilesAsset { async fn children(self_vc: ChunkGroupFilesAssetVc) -> Result { let mut children = IndexSet::new(); let chunk_ty = StringVc::cell("chunk".to_string()); - for &chunk in self_vc.chunk_group().chunks().await?.iter() { + for &chunk in self_vc.chunks().await?.iter() { children.insert((chunk_ty, IntrospectableAssetVc::new(chunk.into()))); } children.insert(( diff --git a/crates/turbopack-node/src/bootstrap.rs b/crates/turbopack-node/src/bootstrap.rs index dd6054b64d8f7..d164feab80848 100644 --- a/crates/turbopack-node/src/bootstrap.rs +++ b/crates/turbopack-node/src/bootstrap.rs @@ -4,8 +4,7 @@ use anyhow::Result; use turbo_tasks::primitives::StringVc; use turbo_tasks_fs::{File, FileSystemPathVc}; use turbopack_core::{ - asset::{Asset, AssetContentVc, AssetVc}, - chunk::ChunkGroupVc, + asset::{Asset, AssetContentVc, AssetVc, AssetsVc}, ident::AssetIdentVc, reference::{AssetReferencesVc, SingleAssetReferenceVc}, }; @@ -14,7 +13,7 @@ use turbopack_ecmascript::utils::StringifyJs; #[turbo_tasks::value(shared)] pub(super) struct NodeJsBootstrapAsset { pub(super) path: FileSystemPathVc, - pub(super) chunk_group: ChunkGroupVc, + pub(super) chunks: AssetsVc, } #[turbo_tasks::function] @@ -37,7 +36,7 @@ impl Asset for NodeJsBootstrapAsset { // but until then this is a simple hack to make it work for now let mut output = "Error.stackTraceLimit = 100;\nglobal.self = global;\n".to_string(); - for chunk in self.chunk_group.chunks().await?.iter() { + for chunk in self.chunks.await?.iter() { let path = &*chunk.ident().path().await?; if let Some(p) = context_path.get_relative_path_to(path) { if p.ends_with(".js") { @@ -51,7 +50,7 @@ impl Asset for NodeJsBootstrapAsset { #[turbo_tasks::function] async fn references(&self) -> Result { - let chunks = self.chunk_group.chunks().await?; + let chunks = self.chunks.await?; let mut references = Vec::new(); for chunk in chunks.iter() { references.push( diff --git a/crates/turbopack-node/src/evaluate.rs b/crates/turbopack-node/src/evaluate.rs index 5cc3b9df80e16..a18353a19b4f0 100644 --- a/crates/turbopack-node/src/evaluate.rs +++ b/crates/turbopack-node/src/evaluate.rs @@ -24,7 +24,7 @@ use turbo_tasks_fs::{ }; use turbopack_core::{ asset::{Asset, AssetVc}, - chunk::{ChunkGroupVc, ChunkingContext, ChunkingContextVc, EvaluatableAssetsVc}, + chunk::{ChunkableAsset, ChunkingContext, ChunkingContextVc, EvaluatableAssetsVc}, context::{AssetContext, AssetContextVc}, ident::AssetIdentVc, issue::{Issue, IssueSeverity, IssueSeverityVc, IssueVc}, @@ -182,10 +182,9 @@ pub async fn get_evaluate_pool( let bootstrap = NodeJsBootstrapAsset { path, - chunk_group: ChunkGroupVc::evaluated( - chunking_context, - entry_module.into(), - runtime_entries, + chunks: chunking_context.evaluated_chunk_group( + entry_module.as_root_chunk(chunking_context), + runtime_entries.with_entry(entry_module.into()), ), } .cell() diff --git a/crates/turbopack-node/src/lib.rs b/crates/turbopack-node/src/lib.rs index feb80175ac651..cfeba27c8d6ea 100644 --- a/crates/turbopack-node/src/lib.rs +++ b/crates/turbopack-node/src/lib.rs @@ -18,7 +18,7 @@ use turbo_tasks_fs::{to_sys_path, File, FileContent, FileSystemPathVc}; use turbopack_core::{ asset::{Asset, AssetVc, AssetsSetVc}, chunk::{ - ChunkGroupVc, ChunkingContext, ChunkingContextVc, EvaluatableAssetVc, EvaluatableAssetsVc, + ChunkableAsset, ChunkingContext, ChunkingContextVc, EvaluatableAssetVc, EvaluatableAssetsVc, }, reference::primary_referenced_assets, source_map::GenerateSourceMapVc, @@ -264,10 +264,13 @@ pub async fn get_intermediate_asset( main_entry: EvaluatableAssetVc, other_entries: EvaluatableAssetsVc, ) -> Result { - let chunk_group = ChunkGroupVc::evaluated(chunking_context, main_entry, other_entries); + let chunks = chunking_context.evaluated_chunk_group( + main_entry.as_root_chunk(chunking_context), + other_entries.with_entry(main_entry), + ); Ok(NodeJsBootstrapAsset { path: chunking_context.chunk_path(main_entry.ident(), ".js"), - chunk_group, + chunks, } .cell() .into()) diff --git a/crates/turbopack-tests/tests/snapshot.rs b/crates/turbopack-tests/tests/snapshot.rs index 62b71e2922037..09c946bae0ef7 100644 --- a/crates/turbopack-tests/tests/snapshot.rs +++ b/crates/turbopack-tests/tests/snapshot.rs @@ -28,7 +28,7 @@ use turbopack::{ use turbopack_core::{ asset::{Asset, AssetVc}, chunk::{ - ChunkGroupVc, ChunkableAsset, ChunkableAssetVc, EvaluatableAssetVc, EvaluatableAssetsVc, + ChunkableAsset, ChunkableAssetVc, ChunkingContext, EvaluatableAssetVc, EvaluatableAssetsVc, }, compile_time_defines, compile_time_info::CompileTimeInfo, @@ -249,20 +249,18 @@ async fn run_test(resource: &str) -> Result { ) }); - let chunk_groups = modules + let chunks = modules .map(|module| async move { if let Some(ecmascript) = EcmascriptModuleAssetVc::resolve_from(module).await? { // TODO: Load runtime entries from snapshots - Ok(ChunkGroupVc::evaluated( - chunking_context, - ecmascript.into(), - runtime_entries.unwrap_or_else(EvaluatableAssetsVc::empty), + Ok(chunking_context.evaluated_chunk_group( + ecmascript.as_root_chunk(chunking_context), + runtime_entries + .unwrap_or_else(EvaluatableAssetsVc::empty) + .with_entry(ecmascript.into()), )) } else if let Some(chunkable) = ChunkableAssetVc::resolve_from(module).await? { - Ok(ChunkGroupVc::from_chunk( - chunking_context, - chunkable.as_root_chunk(chunking_context), - )) + Ok(chunking_context.chunk_group(chunkable.as_root_chunk(chunking_context))) } else { // TODO convert into a serve-able asset Err(anyhow!( @@ -276,8 +274,8 @@ async fn run_test(resource: &str) -> Result { let mut seen = HashSet::new(); let mut queue = VecDeque::with_capacity(32); - for chunk_group in chunk_groups { - for chunk in &*chunk_group.chunks().await? { + for chunks in chunks { + for chunk in &*chunks.await? { queue.push_back(*chunk); } } diff --git a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/20803_bar_index_c8a3ce.js b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/20803_bar_index_c8a3ce.js index aade09872750d..f0c6edec122ab 100644 --- a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/20803_bar_index_c8a3ce.js +++ b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/20803_bar_index_c8a3ce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/20803_bar_index_c8a3ce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/node_modules/bar/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/node_modules/bar/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_esm__({ "bar": ()=>bar diff --git a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/20803_foo_index_5f9e1e.js b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/20803_foo_index_5f9e1e.js index f73cdb22ff5bd..8c202fb984c26 100644 --- a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/20803_foo_index_5f9e1e.js +++ b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/20803_foo_index_5f9e1e.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/20803_foo_index_5f9e1e.js", { -"[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/node_modules/foo/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/node_modules/foo/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_esm__({ "foo": ()=>foo diff --git a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_571bb9.js b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_571bb9.js index babc99391f570..ea134a375d513 100644 --- a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_571bb9.js +++ b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_571bb9.js @@ -1,14 +1,24 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_571bb9.js", { -"[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/import.js (ecmascript, manifest chunk)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/import.js (ecmascript, manifest chunk)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { -__turbopack_export_value__({ - "chunks": [ - "output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_a29514.js", - "output/20803_foo_index_5f9e1e.js" - ], - "list": "output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import.js_f60aac._.json" -}); +__turbopack_export_value__([ + { + "node": { + "TaskOutput": 1741 + } + }, + { + "node": { + "TaskOutput": 1742 + } + }, + { + "node": { + "TaskOutput": 1743 + } + } +]); })()), }]); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_a29514.js b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_a29514.js index dbc2b4753d0f1..92c03eb16f275 100644 --- a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_a29514.js +++ b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_a29514.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_a29514.js", { -"[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/import.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/import.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$basic$2f$async_chunk$2f$input$2f$node_modules$2f$foo$2f$index$2e$js__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/node_modules/foo/index.js (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$basic$2f$async_chunk$2f$input$2f$node_modules$2f$bar$2f$index$2e$js__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/node_modules/bar/index.js (ecmascript)"); diff --git a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_b840e8.js b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_b840e8.js new file mode 100644 index 0000000000000..45c6128de0c95 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_b840e8.js @@ -0,0 +1,8 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import.js_f60aac._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_a29514.js", + "output/20803_foo_index_5f9e1e.js" + ], + "source": "dynamic" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_b840e8.js.map b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_b840e8.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_b840e8.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_0d348e.js b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_0d348e.js index d2bf5bb87c59b..48c2648c79fd8 100644 --- a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_0d348e.js +++ b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_0d348e.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_0d348e.js", {}, - {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b53fce.js","output/20803_bar_index_c8a3ce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/index.js (ecmascript)"],"chunkListPath":"output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index.js_f5704b._.json"} + {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b53fce.js","output/20803_bar_index_c8a3ce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b1fd81.js b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b1fd81.js new file mode 100644 index 0000000000000..7f4fb8b4435b0 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b1fd81.js @@ -0,0 +1,8 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index.js_f5704b._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b53fce.js", + "output/20803_bar_index_c8a3ce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b1fd81.js.map b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b1fd81.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b1fd81.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b53fce.js index 2a5530ef75c88..6e88edf9567a4 100644 --- a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b53fce.js @@ -1,12 +1,11 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/import.js (ecmascript, manifest chunk, loader)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/import.js (ecmascript, manifest chunk, loader)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_export_value__((__turbopack_import__) => { return __turbopack_load__("output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_import_571bb9.js").then(() => { return __turbopack_require__("[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/import.js (ecmascript, manifest chunk)"); - }).then(({ chunks, list }) => { - __turbopack_register_chunk_list__(list, chunks); + }).then((chunks) => { return Promise.all(chunks.map((chunk_path) => __turbopack_load__(chunk_path))); }).then(() => { return __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/import.js (ecmascript)"); @@ -14,11 +13,11 @@ __turbopack_export_value__((__turbopack_import__) => { }); })()), -"[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/shared.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/shared.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { }.call(this) }), -"[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$basic$2f$async_chunk$2f$input$2f$node_modules$2f$bar$2f$index$2e$js__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/node_modules/bar/index.js (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$basic$2f$async_chunk$2f$input$2f$shared$2e$js__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/shared.js (ecmascript)"); diff --git a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b53fce.js.map b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b53fce.js.map index bd8c3e6f628b7..769c661f5b711 100644 --- a/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b53fce.js.map +++ b/crates/turbopack-tests/tests/snapshot/basic/async_chunk/output/crates_turbopack-tests_tests_snapshot_basic_async_chunk_input_index_b53fce.js.map @@ -1,8 +1,8 @@ { "version": 3, "sections": [ - {"offset": {"line": 18, "column": 0}, "map": {"version":3,"sources":[],"names":[],"mappings":""}}, - {"offset": {"line": 18, "column": 0}, "map": {"version":3,"sources":[],"names":[],"mappings":"A"}}, - {"offset": {"line": 22, "column": 0}, "map": {"version":3,"sources":["/turbopack/[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/index.js"],"sourcesContent":["import { bar } from \"bar\";\nimport \"./shared\";\n\nbar(true);\n\nimport(\"./import\").then(({ foo }) => {\n foo(true);\n});\n"],"names":[],"mappings":";;;;;AAGA,sMAAI,IAAI;AAER,sKAAmB,IAAI,CAAC,CAAC,EAAE,IAAG,EAAE,GAAK;IACnC,IAAI,IAAI;AACV"}}, - {"offset": {"line": 31, "column": 0}, "map": {"version":3,"sources":[],"names":[],"mappings":"A"}}] + {"offset": {"line": 17, "column": 0}, "map": {"version":3,"sources":[],"names":[],"mappings":""}}, + {"offset": {"line": 17, "column": 0}, "map": {"version":3,"sources":[],"names":[],"mappings":"A"}}, + {"offset": {"line": 21, "column": 0}, "map": {"version":3,"sources":["/turbopack/[project]/crates/turbopack-tests/tests/snapshot/basic/async_chunk/input/index.js"],"sourcesContent":["import { bar } from \"bar\";\nimport \"./shared\";\n\nbar(true);\n\nimport(\"./import\").then(({ foo }) => {\n foo(true);\n});\n"],"names":[],"mappings":";;;;;AAGA,sMAAI,IAAI;AAER,sKAAmB,IAAI,CAAC,CAAC,EAAE,IAAG,EAAE,GAAK;IACnC,IAAI,IAAI;AACV"}}, + {"offset": {"line": 30, "column": 0}, "map": {"version":3,"sources":[],"names":[],"mappings":"A"}}] } \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/basic/chunked/output/39e84_foo_index_4427e1.js b/crates/turbopack-tests/tests/snapshot/basic/chunked/output/39e84_foo_index_4427e1.js index 08d3e8bbdcb4f..193c7220aee6a 100644 --- a/crates/turbopack-tests/tests/snapshot/basic/chunked/output/39e84_foo_index_4427e1.js +++ b/crates/turbopack-tests/tests/snapshot/basic/chunked/output/39e84_foo_index_4427e1.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/39e84_foo_index_4427e1.js", { -"[project]/crates/turbopack-tests/tests/snapshot/basic/chunked/input/node_modules/foo/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/basic/chunked/input/node_modules/foo/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_esm__({ "foo": ()=>foo diff --git a/crates/turbopack-tests/tests/snapshot/basic/chunked/output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/basic/chunked/output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_b53fce.js index d5a4fdbde847c..dc97f617a094f 100644 --- a/crates/turbopack-tests/tests/snapshot/basic/chunked/output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/basic/chunked/output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/basic/chunked/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/basic/chunked/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$basic$2f$chunked$2f$input$2f$node_modules$2f$foo$2f$index$2e$js__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/basic/chunked/input/node_modules/foo/index.js (ecmascript)"); "__TURBOPACK__ecmascript__hoisting__location__"; diff --git a/crates/turbopack-tests/tests/snapshot/basic/chunked/output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_e77e9f.js b/crates/turbopack-tests/tests/snapshot/basic/chunked/output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_e77e9f.js index 98138e52eee06..51c7810c14c3b 100644 --- a/crates/turbopack-tests/tests/snapshot/basic/chunked/output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_e77e9f.js +++ b/crates/turbopack-tests/tests/snapshot/basic/chunked/output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_e77e9f.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_e77e9f.js", {}, - {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_b53fce.js","output/39e84_foo_index_4427e1.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/basic/chunked/input/index.js (ecmascript)"],"chunkListPath":"output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index.js_f5704b._.json"} + {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_b53fce.js","output/39e84_foo_index_4427e1.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/basic/chunked/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/basic/chunked/output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_eab64a.js b/crates/turbopack-tests/tests/snapshot/basic/chunked/output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_eab64a.js new file mode 100644 index 0000000000000..2b1bd6a87190a --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/basic/chunked/output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_eab64a.js @@ -0,0 +1,8 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index.js_f5704b._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_b53fce.js", + "output/39e84_foo_index_4427e1.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/basic/chunked/output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_eab64a.js.map b/crates/turbopack-tests/tests/snapshot/basic/chunked/output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_eab64a.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/basic/chunked/output/crates_turbopack-tests_tests_snapshot_basic_chunked_input_index_eab64a.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/basic/shebang/output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_102b6f.js b/crates/turbopack-tests/tests/snapshot/basic/shebang/output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_102b6f.js new file mode 100644 index 0000000000000..8fa03c7c4b315 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/basic/shebang/output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_102b6f.js @@ -0,0 +1,8 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index.js_f5704b._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_b53fce.js", + "output/d1787_foo_index_dd389c.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/basic/shebang/output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_102b6f.js.map b/crates/turbopack-tests/tests/snapshot/basic/shebang/output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_102b6f.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/basic/shebang/output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_102b6f.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/basic/shebang/output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_b1f0c2.js b/crates/turbopack-tests/tests/snapshot/basic/shebang/output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_b1f0c2.js index abb7baee13098..59ac0801504e8 100644 --- a/crates/turbopack-tests/tests/snapshot/basic/shebang/output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_b1f0c2.js +++ b/crates/turbopack-tests/tests/snapshot/basic/shebang/output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_b1f0c2.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_b1f0c2.js", {}, - {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_b53fce.js","output/d1787_foo_index_dd389c.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/basic/shebang/input/index.js (ecmascript)"],"chunkListPath":"output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index.js_f5704b._.json"} + {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_b53fce.js","output/d1787_foo_index_dd389c.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/basic/shebang/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/basic/shebang/output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/basic/shebang/output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_b53fce.js index dafdc96bd4185..dc959c70ed90a 100644 --- a/crates/turbopack-tests/tests/snapshot/basic/shebang/output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/basic/shebang/output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_basic_shebang_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/basic/shebang/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/basic/shebang/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$basic$2f$shebang$2f$input$2f$node_modules$2f$foo$2f$index$2e$js__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/basic/shebang/input/node_modules/foo/index.js (ecmascript)"); "__TURBOPACK__ecmascript__hoisting__location__"; diff --git a/crates/turbopack-tests/tests/snapshot/basic/shebang/output/d1787_foo_index_dd389c.js b/crates/turbopack-tests/tests/snapshot/basic/shebang/output/d1787_foo_index_dd389c.js index 990bdf7f3cc4c..d7988d4c6f10f 100644 --- a/crates/turbopack-tests/tests/snapshot/basic/shebang/output/d1787_foo_index_dd389c.js +++ b/crates/turbopack-tests/tests/snapshot/basic/shebang/output/d1787_foo_index_dd389c.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/d1787_foo_index_dd389c.js", { -"[project]/crates/turbopack-tests/tests/snapshot/basic/shebang/input/node_modules/foo/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/basic/shebang/input/node_modules/foo/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_esm__({ "foo": ()=>foo diff --git a/crates/turbopack-tests/tests/snapshot/comptime/define/output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_6b0d2b.js b/crates/turbopack-tests/tests/snapshot/comptime/define/output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_6b0d2b.js index be0bc8292b9f3..861fbeda98690 100644 --- a/crates/turbopack-tests/tests/snapshot/comptime/define/output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_6b0d2b.js +++ b/crates/turbopack-tests/tests/snapshot/comptime/define/output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_6b0d2b.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_6b0d2b.js", {}, - {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/comptime/define/input/index.js (ecmascript)"],"chunkListPath":"output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index.js_f5704b._.json"} + {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/comptime/define/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/comptime/define/output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/comptime/define/output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_b53fce.js index b06852527f229..57ab598b34692 100644 --- a/crates/turbopack-tests/tests/snapshot/comptime/define/output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/comptime/define/output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/comptime/define/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/comptime/define/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { if ("TURBOPACK compile-time truthy", 1) { console.log('DEFINED_VALUE'); diff --git a/crates/turbopack-tests/tests/snapshot/comptime/define/output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_ce3091.js b/crates/turbopack-tests/tests/snapshot/comptime/define/output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_ce3091.js new file mode 100644 index 0000000000000..5aed8ec78b51f --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/comptime/define/output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_ce3091.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index.js_f5704b._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/comptime/define/output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_ce3091.js.map b/crates/turbopack-tests/tests/snapshot/comptime/define/output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_ce3091.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/comptime/define/output/crates_turbopack-tests_tests_snapshot_comptime_define_input_index_ce3091.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_082e10.js b/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_082e10.js index cab87644afeab..7eb35f03d3bfd 100644 --- a/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_082e10.js +++ b/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_082e10.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_082e10.js", {}, - {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index.css","output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/input/index.js (ecmascript)"],"chunkListPath":"output/79fb1_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index.js_f5704b._.json"} + {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index.css","output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_39ae23.js b/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_39ae23.js new file mode 100644 index 0000000000000..c2ed91cec059c --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_39ae23.js @@ -0,0 +1,8 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/79fb1_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index.js_f5704b._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index.css", + "output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_39ae23.js.map b/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_39ae23.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_39ae23.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_b53fce.js index f628e6be989be..ef3fb890d5d2a 100644 --- a/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_css_absolute-uri-import_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/css/absolute-uri-import/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { ; diff --git a/crates/turbopack-tests/tests/snapshot/css/css/output/8697f_foo_style.module.css_a724a8._.js b/crates/turbopack-tests/tests/snapshot/css/css/output/8697f_foo_style.module.css_a724a8._.js index 14492c7078e3a..f19d6b32ce48d 100644 --- a/crates/turbopack-tests/tests/snapshot/css/css/output/8697f_foo_style.module.css_a724a8._.js +++ b/crates/turbopack-tests/tests/snapshot/css/css/output/8697f_foo_style.module.css_a724a8._.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/8697f_foo_style.module.css_a724a8._.js", { -"[project]/crates/turbopack-tests/tests/snapshot/css/css/input/node_modules/foo/style.module.css (css, css module)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/css/css/input/node_modules/foo/style.module.css (css, css module)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_export_value__({ "foo-module-style": "foo-module-style__style__abf9e738", diff --git a/crates/turbopack-tests/tests/snapshot/css/css/output/crates_turbopack-tests_tests_snapshot_css_css_input_index_2081e1.js b/crates/turbopack-tests/tests/snapshot/css/css/output/crates_turbopack-tests_tests_snapshot_css_css_input_index_2081e1.js index 023537cc7928d..dc4f1276586bb 100644 --- a/crates/turbopack-tests/tests/snapshot/css/css/output/crates_turbopack-tests_tests_snapshot_css_css_input_index_2081e1.js +++ b/crates/turbopack-tests/tests/snapshot/css/css/output/crates_turbopack-tests_tests_snapshot_css_css_input_index_2081e1.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_css_css_input_index_2081e1.js", {}, - {"otherChunks":["output/8697f_foo_style.css","output/crates_turbopack-tests_tests_snapshot_css_css_input_style.css","output/8697f_foo_style.module_b5a149.css","output/crates_turbopack-tests_tests_snapshot_css_css_input_style.module_b5a149.css","output/crates_turbopack-tests_tests_snapshot_css_css_input_index_b53fce.js","output/8697f_foo_style.module.css_a724a8._.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/css/css/input/index.js (ecmascript)"],"chunkListPath":"output/crates_turbopack-tests_tests_snapshot_css_css_input_index.js_f5704b._.json"} + {"otherChunks":["output/8697f_foo_style.css","output/crates_turbopack-tests_tests_snapshot_css_css_input_style.css","output/8697f_foo_style.module_b5a149.css","output/crates_turbopack-tests_tests_snapshot_css_css_input_style.module_b5a149.css","output/crates_turbopack-tests_tests_snapshot_css_css_input_index_b53fce.js","output/8697f_foo_style.module.css_a724a8._.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/css/css/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/css/css/output/crates_turbopack-tests_tests_snapshot_css_css_input_index_36f4a3.js b/crates/turbopack-tests/tests/snapshot/css/css/output/crates_turbopack-tests_tests_snapshot_css_css_input_index_36f4a3.js new file mode 100644 index 0000000000000..7f6c5294d56b0 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/css/css/output/crates_turbopack-tests_tests_snapshot_css_css_input_index_36f4a3.js @@ -0,0 +1,12 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/crates_turbopack-tests_tests_snapshot_css_css_input_index.js_f5704b._.json", + "chunks": [ + "output/8697f_foo_style.css", + "output/crates_turbopack-tests_tests_snapshot_css_css_input_style.css", + "output/8697f_foo_style.module_b5a149.css", + "output/crates_turbopack-tests_tests_snapshot_css_css_input_style.module_b5a149.css", + "output/crates_turbopack-tests_tests_snapshot_css_css_input_index_b53fce.js", + "output/8697f_foo_style.module.css_a724a8._.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/css/css/output/crates_turbopack-tests_tests_snapshot_css_css_input_index_36f4a3.js.map b/crates/turbopack-tests/tests/snapshot/css/css/output/crates_turbopack-tests_tests_snapshot_css_css_input_index_36f4a3.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/css/css/output/crates_turbopack-tests_tests_snapshot_css_css_input_index_36f4a3.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/css/css/output/crates_turbopack-tests_tests_snapshot_css_css_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/css/css/output/crates_turbopack-tests_tests_snapshot_css_css_input_index_b53fce.js index 4214564ac3e16..3ab7afde55eec 100644 --- a/crates/turbopack-tests/tests/snapshot/css/css/output/crates_turbopack-tests_tests_snapshot_css_css_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/css/css/output/crates_turbopack-tests_tests_snapshot_css_css_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_css_css_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/css/css/input/style.module.css (css, css module)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/css/css/input/style.module.css (css, css module)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_export_value__({ "another-composed-module-style": "another-composed-module-style__style__9bcf751c" + " " + __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/css/css/input/node_modules/foo/style.module.css (css, css module)")["foo-module-style"], @@ -10,7 +10,7 @@ __turbopack_export_value__({ }); })()), -"[project]/crates/turbopack-tests/tests/snapshot/css/css/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/css/css/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$css$2f$css$2f$input$2f$node_modules$2f$foo$2f$style$2e$module$2e$css__$28$css$2c$__css__module$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/css/css/input/node_modules/foo/style.module.css (css, css module)"); var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$css$2f$css$2f$input$2f$style$2e$module$2e$css__$28$css$2c$__css__module$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/css/css/input/style.module.css (css, css module)"); diff --git a/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/63a02_@emotion_react_index_a1c0c3.js b/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/63a02_@emotion_react_index_a1c0c3.js index 626f28df2fb2d..4bc6731deedf9 100644 --- a/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/63a02_@emotion_react_index_a1c0c3.js +++ b/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/63a02_@emotion_react_index_a1c0c3.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/63a02_@emotion_react_index_a1c0c3.js", { -"[project]/crates/turbopack-tests/tests/node_modules/@emotion/react/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/node_modules/@emotion/react/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { "purposefully empty stub"; "@emtion/react/index.js"; diff --git a/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/63a02_@emotion_react_jsx-dev-runtime_73b602.js b/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/63a02_@emotion_react_jsx-dev-runtime_73b602.js index 36eae97ff7fa6..2829f2b3fdbbd 100644 --- a/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/63a02_@emotion_react_jsx-dev-runtime_73b602.js +++ b/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/63a02_@emotion_react_jsx-dev-runtime_73b602.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/63a02_@emotion_react_jsx-dev-runtime_73b602.js", { -"[project]/crates/turbopack-tests/tests/node_modules/@emotion/react/jsx-dev-runtime.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/node_modules/@emotion/react/jsx-dev-runtime.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { "purposefully empty stub"; "@emtion/react/jsx-dev-runtime.js"; diff --git a/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/63a02_@emotion_styled_index_fd4de2.js b/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/63a02_@emotion_styled_index_fd4de2.js index 4218a287c0716..6714b3b467c33 100644 --- a/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/63a02_@emotion_styled_index_fd4de2.js +++ b/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/63a02_@emotion_styled_index_fd4de2.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/63a02_@emotion_styled_index_fd4de2.js", { -"[project]/crates/turbopack-tests/tests/node_modules/@emotion/styled/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/node_modules/@emotion/styled/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { "purposefully empty stub"; "@emtion/styled/index.js"; diff --git a/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_b080c4.js b/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_b080c4.js index 65faede597a09..a1b397e9716ff 100644 --- a/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_b080c4.js +++ b/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_b080c4.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_b080c4.js", {}, - {"otherChunks":["output/63a02_@emotion_react_jsx-dev-runtime_73b602.js","output/63a02_@emotion_react_index_a1c0c3.js","output/63a02_@emotion_styled_index_fd4de2.js","output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/emotion/emotion/input/index.js (ecmascript)"],"chunkListPath":"output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index.js_f5704b._.json"} + {"otherChunks":["output/63a02_@emotion_react_jsx-dev-runtime_73b602.js","output/63a02_@emotion_react_index_a1c0c3.js","output/63a02_@emotion_styled_index_fd4de2.js","output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/emotion/emotion/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_b53fce.js index 8b07b8c06bc72..46ab6a63aa546 100644 --- a/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/emotion/emotion/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/emotion/emotion/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$node_modules$2f40$emotion$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/node_modules/@emotion/react/jsx-dev-runtime.js (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$node_modules$2f40$emotion$2f$react$2f$index$2e$js__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/node_modules/@emotion/react/index.js (ecmascript)"); diff --git a/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_d12a41.js b/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_d12a41.js new file mode 100644 index 0000000000000..7f12da9f7d194 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_d12a41.js @@ -0,0 +1,10 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index.js_f5704b._.json", + "chunks": [ + "output/63a02_@emotion_react_jsx-dev-runtime_73b602.js", + "output/63a02_@emotion_react_index_a1c0c3.js", + "output/63a02_@emotion_styled_index_fd4de2.js", + "output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_d12a41.js.map b/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_d12a41.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/emotion/emotion/output/crates_turbopack-tests_tests_snapshot_emotion_emotion_input_index_d12a41.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_.env_.env_b53fce.js b/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_.env_.env_b53fce.js index 40b01a0d2a8aa..d2e8e94954f91 100644 --- a/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_.env_.env_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_.env_.env_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_env_env_input_.env_.env_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/env/env/input/.env/.env.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/env/env/input/.env/.env.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { const env = process.env = { ...process.env diff --git a/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_index_29a23f.js b/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_index_29a23f.js index 60f9fba5dfd76..8fa4a9479af26 100644 --- a/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_index_29a23f.js +++ b/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_index_29a23f.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_env_env_input_index_29a23f.js", {}, - {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_env_env_input_index_b53fce.js","output/crates_turbopack-tests_tests_snapshot_env_env_input_.env_.env_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/env/env/input/.env/.env.js (ecmascript)","[project]/crates/turbopack-tests/tests/snapshot/env/env/input/index.js (ecmascript)"],"chunkListPath":"output/crates_turbopack-tests_tests_snapshot_env_env_input_index.js_f5704b._.json"} + {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_env_env_input_index_b53fce.js","output/crates_turbopack-tests_tests_snapshot_env_env_input_.env_.env_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/env/env/input/.env/.env.js (ecmascript)","[project]/crates/turbopack-tests/tests/snapshot/env/env/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_index_865a50.js b/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_index_865a50.js new file mode 100644 index 0000000000000..5dea561300186 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_index_865a50.js @@ -0,0 +1,8 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/crates_turbopack-tests_tests_snapshot_env_env_input_index.js_f5704b._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_env_env_input_index_b53fce.js", + "output/crates_turbopack-tests_tests_snapshot_env_env_input_.env_.env_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_index_865a50.js.map b/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_index_865a50.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_index_865a50.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_index_b53fce.js index 601f3f623e2b9..84b58cd1bb230 100644 --- a/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/env/env/output/crates_turbopack-tests_tests_snapshot_env_env_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_env_env_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/env/env/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/env/env/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { console.log(process.env.FOOBAR); diff --git a/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_82f9c9.js b/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_82f9c9.js new file mode 100644 index 0000000000000..d3f86036347f5 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_82f9c9.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index.js_f5704b._.json", + "chunks": [ + "output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_82f9c9.js.map b/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_82f9c9.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_82f9c9.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_b53fce.js index 53c2ae385b508..216ef11c92e44 100644 --- a/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { console.log("hello world"); diff --git a/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_f59cc7.js b/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_f59cc7.js index 70a25a193ccf7..591180853c1b4 100644 --- a/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_f59cc7.js +++ b/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_f59cc7.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_f59cc7.js", {}, - {"otherChunks":["output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/input/index.js (ecmascript)"],"chunkListPath":"output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index.js_f5704b._.json"} + {"otherChunks":["output/a587c_tests_snapshot_evaluated_entrry_runtime_entry_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/evaluated_entrry/runtime_entry/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/example/example/output/crates_turbopack-tests_tests_snapshot_example_example_input_index_7713cd.js b/crates/turbopack-tests/tests/snapshot/example/example/output/crates_turbopack-tests_tests_snapshot_example_example_input_index_7713cd.js new file mode 100644 index 0000000000000..905683c7c78b6 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/example/example/output/crates_turbopack-tests_tests_snapshot_example_example_input_index_7713cd.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/crates_turbopack-tests_tests_snapshot_example_example_input_index.js_f5704b._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_example_example_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/example/example/output/crates_turbopack-tests_tests_snapshot_example_example_input_index_7713cd.js.map b/crates/turbopack-tests/tests/snapshot/example/example/output/crates_turbopack-tests_tests_snapshot_example_example_input_index_7713cd.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/example/example/output/crates_turbopack-tests_tests_snapshot_example_example_input_index_7713cd.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/example/example/output/crates_turbopack-tests_tests_snapshot_example_example_input_index_78b6bf.js b/crates/turbopack-tests/tests/snapshot/example/example/output/crates_turbopack-tests_tests_snapshot_example_example_input_index_78b6bf.js index 5cea46fca9470..c3e575ccb07b6 100644 --- a/crates/turbopack-tests/tests/snapshot/example/example/output/crates_turbopack-tests_tests_snapshot_example_example_input_index_78b6bf.js +++ b/crates/turbopack-tests/tests/snapshot/example/example/output/crates_turbopack-tests_tests_snapshot_example_example_input_index_78b6bf.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_example_example_input_index_78b6bf.js", {}, - {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_example_example_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/example/example/input/index.js (ecmascript)"],"chunkListPath":"output/crates_turbopack-tests_tests_snapshot_example_example_input_index.js_f5704b._.json"} + {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_example_example_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/example/example/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/example/example/output/crates_turbopack-tests_tests_snapshot_example_example_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/example/example/output/crates_turbopack-tests_tests_snapshot_example_example_input_index_b53fce.js index b3a159b654d64..bdf1af30cc91a 100644 --- a/crates/turbopack-tests/tests/snapshot/example/example/output/crates_turbopack-tests_tests_snapshot_example_example_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/example/example/output/crates_turbopack-tests_tests_snapshot_example_example_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_example_example_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/example/example/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/example/example/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { console.log("hello world"); diff --git a/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_289ae7.js b/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_289ae7.js index 421c35f4f4f1b..10be62074cc0b 100644 --- a/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_289ae7.js +++ b/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_289ae7.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_289ae7.js", {}, - {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/input/index.js (ecmascript)"],"chunkListPath":"output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index.js_f5704b._.json"} + {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_9d2626.js b/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_9d2626.js new file mode 100644 index 0000000000000..8ff81937bfedc --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_9d2626.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index.js_f5704b._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_9d2626.js.map b/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_9d2626.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_9d2626.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_b53fce.js index 9f050a025aeba..59bea737abd28 100644 --- a/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_b53fce.js @@ -1,11 +1,11 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-2_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/input/commonjs.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/input/commonjs.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { exports.hello = "World"; }.call(this) }), -"[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/input/c.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/input/c.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_esm__({}); var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$export$2d$alls$2f$cjs$2d$2$2f$input$2f$commonjs$2e$js__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/input/commonjs.js (ecmascript)"); @@ -14,7 +14,7 @@ __turbopack_cjs__(__TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turb ; })()), -"[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/input/b.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/input/b.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_esm__({}); var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$export$2d$alls$2f$cjs$2d$2$2f$input$2f$c$2e$js__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/input/c.js (ecmascript)"); @@ -23,7 +23,7 @@ __turbopack_cjs__(__TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turb ; })()), -"[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$export$2d$alls$2f$cjs$2d$2$2f$input$2f$b$2e$js__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-2/input/b.js (ecmascript)"); "__TURBOPACK__ecmascript__hoisting__location__"; diff --git a/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_3e96b7.js b/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_3e96b7.js index a9360f9d42245..b2775dd15239b 100644 --- a/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_3e96b7.js +++ b/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_3e96b7.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_3e96b7.js", {}, - {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/input/index.js (ecmascript)"],"chunkListPath":"output/79fb1_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index.js_f5704b._.json"} + {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_820c99.js b/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_820c99.js new file mode 100644 index 0000000000000..1600d0fb9048d --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_820c99.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/79fb1_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index.js_f5704b._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_820c99.js.map b/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_820c99.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_820c99.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_b53fce.js index 27088a654cd23..1079d951b1c77 100644 --- a/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_export-alls_cjs-script_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/input/exported.cjs (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/input/exported.cjs (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { module.exports = { foo: 1, @@ -8,7 +8,7 @@ module.exports = { }; }.call(this) }), -"[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/input/mod.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/input/mod.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_esm__({}); var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$export$2d$alls$2f$cjs$2d$script$2f$input$2f$exported$2e$cjs__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/input/exported.cjs (ecmascript)"); @@ -18,7 +18,7 @@ __turbopack_cjs__(__TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turb console.log('Hoist test'); })()), -"[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$export$2d$alls$2f$cjs$2d$script$2f$input$2f$mod$2e$js__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/export-alls/cjs-script/input/mod.js (ecmascript)"); "__TURBOPACK__ecmascript__hoisting__location__"; diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/cjs/output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_537553.js b/crates/turbopack-tests/tests/snapshot/import-meta/cjs/output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_537553.js index 6c61c03621785..e363f5f0c1359 100644 --- a/crates/turbopack-tests/tests/snapshot/import-meta/cjs/output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_537553.js +++ b/crates/turbopack-tests/tests/snapshot/import-meta/cjs/output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_537553.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_537553.js", {}, - {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/import-meta/cjs/input/index.js (ecmascript)"],"chunkListPath":"output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index.js_f5704b._.json"} + {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/import-meta/cjs/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/cjs/output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/import-meta/cjs/output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_b53fce.js index 0daf49029c542..452cf1867a76c 100644 --- a/crates/turbopack-tests/tests/snapshot/import-meta/cjs/output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/import-meta/cjs/output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/import-meta/cjs/input/mod.cjs (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/import-meta/cjs/input/mod.cjs (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { const __TURBOPACK__import$2e$meta__ = { url: "file:///ROOT/crates/turbopack-tests/tests/snapshot/import-meta/cjs/input/mod.cjs" @@ -9,7 +9,7 @@ const __TURBOPACK__import$2e$meta__ = { console.log(__TURBOPACK__import$2e$meta__.url); }.call(this) }), -"[project]/crates/turbopack-tests/tests/snapshot/import-meta/cjs/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/import-meta/cjs/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$import$2d$meta$2f$cjs$2f$input$2f$mod$2e$cjs__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/import-meta/cjs/input/mod.cjs (ecmascript)"); "__TURBOPACK__ecmascript__hoisting__location__"; diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/cjs/output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_e54d7a.js b/crates/turbopack-tests/tests/snapshot/import-meta/cjs/output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_e54d7a.js new file mode 100644 index 0000000000000..08b1c21a8a445 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/import-meta/cjs/output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_e54d7a.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index.js_f5704b._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/cjs/output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_e54d7a.js.map b/crates/turbopack-tests/tests/snapshot/import-meta/cjs/output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_e54d7a.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/import-meta/cjs/output/crates_turbopack-tests_tests_snapshot_import-meta_cjs_input_index_e54d7a.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_95b175.js b/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_95b175.js new file mode 100644 index 0000000000000..db6892756e9b1 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_95b175.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index.js_f5704b._.json", + "chunks": [ + "output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_95b175.js.map b/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_95b175.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_95b175.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_b53fce.js index 0e646dfcf0b91..0c039b2bf8709 100644 --- a/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/input/mod.mjs (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/input/mod.mjs (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { const __TURBOPACK__import$2e$meta__ = { url: "file:///ROOT/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/input/mod.mjs" @@ -16,7 +16,7 @@ foo(); bar(); }.call(this) }), -"[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$import$2d$meta$2f$esm$2d$multiple$2f$input$2f$mod$2e$mjs__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/input/mod.mjs (ecmascript)"); "__TURBOPACK__ecmascript__hoisting__location__"; diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_c00392.js b/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_c00392.js index b7610ac860d55..ed53cd7275f7b 100644 --- a/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_c00392.js +++ b/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_c00392.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_c00392.js", {}, - {"otherChunks":["output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/input/index.js (ecmascript)"],"chunkListPath":"output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index.js_f5704b._.json"} + {"otherChunks":["output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-multiple_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-multiple/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_6c9201.js b/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_6c9201.js index e917357a987ee..b1be0cd8e3d45 100644 --- a/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_6c9201.js +++ b/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_6c9201.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_6c9201.js", {}, - {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/input/index.js (ecmascript)"],"chunkListPath":"output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index.js_f5704b._.json"} + {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_a80d1f.js b/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_a80d1f.js new file mode 100644 index 0000000000000..4b01cff4b821d --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_a80d1f.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index.js_f5704b._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_a80d1f.js.map b/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_a80d1f.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_a80d1f.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_b53fce.js index 39417e5c5ade9..1f89daa3367bc 100644 --- a/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_import-meta_esm-mutable_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/input/mod.mjs (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/input/mod.mjs (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { const __TURBOPACK__import$2e$meta__ = { url: "file:///ROOT/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/input/mod.mjs" @@ -9,7 +9,7 @@ const __TURBOPACK__import$2e$meta__ = { __TURBOPACK__import$2e$meta__.foo = 1; }.call(this) }), -"[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$import$2d$meta$2f$esm$2d$mutable$2f$input$2f$mod$2e$mjs__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-mutable/input/mod.mjs (ecmascript)"); "__TURBOPACK__ecmascript__hoisting__location__"; diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_6fcf7d.js b/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_6fcf7d.js index b5815f6c1f04d..88e4151923354 100644 --- a/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_6fcf7d.js +++ b/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_6fcf7d.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_6fcf7d.js", {}, - {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/input/index.js (ecmascript)"],"chunkListPath":"output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index.js_f5704b._.json"} + {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_b53fce.js index 84f5d269b9771..7e25b43123881 100644 --- a/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/input/mod.mjs (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/input/mod.mjs (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { const __TURBOPACK__import$2e$meta__ = { url: "file:///ROOT/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/input/mod.mjs" @@ -9,7 +9,7 @@ const __TURBOPACK__import$2e$meta__ = { console.log(__TURBOPACK__import$2e$meta__); }.call(this) }), -"[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$import$2d$meta$2f$esm$2d$object$2f$input$2f$mod$2e$mjs__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/input/mod.mjs (ecmascript)"); "__TURBOPACK__ecmascript__hoisting__location__"; diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_c2e670.js b/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_c2e670.js new file mode 100644 index 0000000000000..e552f0f7f94b1 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_c2e670.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/79fb1_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index.js_f5704b._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_c2e670.js.map b/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_c2e670.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/import-meta/esm-object/output/crates_turbopack-tests_tests_snapshot_import-meta_esm-object_input_index_c2e670.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/esm/output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_00e5d2.js b/crates/turbopack-tests/tests/snapshot/import-meta/esm/output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_00e5d2.js new file mode 100644 index 0000000000000..cc35f404def1e --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/import-meta/esm/output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_00e5d2.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index.js_f5704b._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/esm/output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_00e5d2.js.map b/crates/turbopack-tests/tests/snapshot/import-meta/esm/output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_00e5d2.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/import-meta/esm/output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_00e5d2.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/esm/output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/import-meta/esm/output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_b53fce.js index 1fe9a06b893a3..463afbd2b4e16 100644 --- a/crates/turbopack-tests/tests/snapshot/import-meta/esm/output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/import-meta/esm/output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm/input/mod.mjs (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm/input/mod.mjs (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { const __TURBOPACK__import$2e$meta__ = { url: "file:///ROOT/crates/turbopack-tests/tests/snapshot/import-meta/esm/input/mod.mjs" @@ -9,7 +9,7 @@ const __TURBOPACK__import$2e$meta__ = { console.log(__TURBOPACK__import$2e$meta__.url); }.call(this) }), -"[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$import$2d$meta$2f$esm$2f$input$2f$mod$2e$mjs__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm/input/mod.mjs (ecmascript)"); "__TURBOPACK__ecmascript__hoisting__location__"; diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/esm/output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_c4c88a.js b/crates/turbopack-tests/tests/snapshot/import-meta/esm/output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_c4c88a.js index c6cffcef2c4b6..71f45ca2a9759 100644 --- a/crates/turbopack-tests/tests/snapshot/import-meta/esm/output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_c4c88a.js +++ b/crates/turbopack-tests/tests/snapshot/import-meta/esm/output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_c4c88a.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_c4c88a.js", {}, - {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm/input/index.js (ecmascript)"],"chunkListPath":"output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index.js_f5704b._.json"} + {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_import-meta_esm_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/import-meta/esm/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/url/output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_478f1e.js b/crates/turbopack-tests/tests/snapshot/import-meta/url/output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_478f1e.js new file mode 100644 index 0000000000000..735a7f8afb538 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/import-meta/url/output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_478f1e.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index.js_f5704b._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/url/output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_478f1e.js.map b/crates/turbopack-tests/tests/snapshot/import-meta/url/output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_478f1e.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/import-meta/url/output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_478f1e.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/url/output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_988b57.js b/crates/turbopack-tests/tests/snapshot/import-meta/url/output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_988b57.js index 242b80d892230..39036496c3918 100644 --- a/crates/turbopack-tests/tests/snapshot/import-meta/url/output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_988b57.js +++ b/crates/turbopack-tests/tests/snapshot/import-meta/url/output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_988b57.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_988b57.js", {}, - {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/import-meta/url/input/index.js (ecmascript)"],"chunkListPath":"output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index.js_f5704b._.json"} + {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/import-meta/url/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/import-meta/url/output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/import-meta/url/output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_b53fce.js index a627fae225845..c38d58e13cce6 100644 --- a/crates/turbopack-tests/tests/snapshot/import-meta/url/output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/import-meta/url/output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_b53fce.js @@ -1,10 +1,10 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_import-meta_url_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/import-meta/url/input/asset.txt (static)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/import-meta/url/input/asset.txt (static)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_export_value__("/crates/turbopack-tests/tests/snapshot/import-meta/url/static/05254cf29a922ae2.txt"); })()), -"[project]/crates/turbopack-tests/tests/snapshot/import-meta/url/input/mod.mjs (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/import-meta/url/input/mod.mjs (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { const __TURBOPACK__import$2e$meta__ = { url: "file:///ROOT/crates/turbopack-tests/tests/snapshot/import-meta/url/input/mod.mjs" @@ -15,7 +15,7 @@ console.log(assetUrl); fetch(assetUrl).then((res)=>res.text()).then(console.log); }.call(this) }), -"[project]/crates/turbopack-tests/tests/snapshot/import-meta/url/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/import-meta/url/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$import$2d$meta$2f$url$2f$input$2f$mod$2e$mjs__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/import-meta/url/input/mod.mjs (ecmascript)"); "__TURBOPACK__ecmascript__hoisting__location__"; diff --git a/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_45c162.js b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_45c162.js index f8daef6758729..90e62628cd7bd 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_45c162.js +++ b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_45c162.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_45c162.js", {}, - {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/imports/dynamic/input/index.js (ecmascript)"],"chunkListPath":"output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index.js_f5704b._.json"} + {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/imports/dynamic/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b3dae5.js b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b3dae5.js new file mode 100644 index 0000000000000..0b208b6e20301 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b3dae5.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index.js_f5704b._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b3dae5.js.map b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b3dae5.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b3dae5.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b53fce.js index eec2658afb875..b9b5e7c727229 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b53fce.js @@ -1,12 +1,11 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/imports/dynamic/input/vercel.mjs (ecmascript, manifest chunk, loader)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/imports/dynamic/input/vercel.mjs (ecmascript, manifest chunk, loader)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_export_value__((__turbopack_import__) => { return __turbopack_load__("output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_4e74d3._.js").then(() => { return __turbopack_require__("[project]/crates/turbopack-tests/tests/snapshot/imports/dynamic/input/vercel.mjs (ecmascript, manifest chunk)"); - }).then(({ chunks, list }) => { - __turbopack_register_chunk_list__(list, chunks); + }).then((chunks) => { return Promise.all(chunks.map((chunk_path) => __turbopack_load__(chunk_path))); }).then(() => { return __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/imports/dynamic/input/vercel.mjs (ecmascript)"); @@ -14,7 +13,7 @@ __turbopack_export_value__((__turbopack_import__) => { }); })()), -"[project]/crates/turbopack-tests/tests/snapshot/imports/dynamic/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/imports/dynamic/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { __turbopack_require__("[project]/crates/turbopack-tests/tests/snapshot/imports/dynamic/input/vercel.mjs (ecmascript, manifest chunk, loader)")(__turbopack_import__).then(console.log); diff --git a/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b53fce.js.map b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b53fce.js.map index ec815f0ecd23f..3d018eebf12bd 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b53fce.js.map +++ b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_index_b53fce.js.map @@ -1,6 +1,6 @@ { "version": 3, "sections": [ - {"offset": {"line": 18, "column": 0}, "map": {"version":3,"sources":["/turbopack/[project]/crates/turbopack-tests/tests/snapshot/imports/dynamic/input/index.js"],"sourcesContent":["import(\"./vercel.mjs\").then(console.log);\n"],"names":[],"mappings":"AAAA,qKAAuB,IAAI,CAAC,QAAQ,GAAG"}}, - {"offset": {"line": 19, "column": 0}, "map": {"version":3,"sources":[],"names":[],"mappings":"A"}}] + {"offset": {"line": 17, "column": 0}, "map": {"version":3,"sources":["/turbopack/[project]/crates/turbopack-tests/tests/snapshot/imports/dynamic/input/index.js"],"sourcesContent":["import(\"./vercel.mjs\").then(console.log);\n"],"names":[],"mappings":"AAAA,qKAAuB,IAAI,CAAC,QAAQ,GAAG"}}, + {"offset": {"line": 18, "column": 0}, "map": {"version":3,"sources":[],"names":[],"mappings":"A"}}] } \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_4e74d3._.js b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_4e74d3._.js index 5f7d0619e5820..3fda7e6439386 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_4e74d3._.js +++ b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_4e74d3._.js @@ -1,13 +1,19 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_4e74d3._.js", { -"[project]/crates/turbopack-tests/tests/snapshot/imports/dynamic/input/vercel.mjs (ecmascript, manifest chunk)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/imports/dynamic/input/vercel.mjs (ecmascript, manifest chunk)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { -__turbopack_export_value__({ - "chunks": [ - "output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_536504._.js" - ], - "list": "output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_17bc56._.json" -}); +__turbopack_export_value__([ + { + "node": { + "TaskOutput": 965 + } + }, + { + "node": { + "TaskOutput": 966 + } + } +]); })()), }]); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_536504._.js b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_536504._.js index c3e2a5a6b53bb..6128657832ec7 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_536504._.js +++ b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_536504._.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_536504._.js", { -"[project]/crates/turbopack-tests/tests/snapshot/imports/dynamic/input/vercel.mjs (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/imports/dynamic/input/vercel.mjs (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_esm__({ "default": ()=>__TURBOPACK__default__export__ diff --git a/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_818cb5._.js b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_818cb5._.js new file mode 100644 index 0000000000000..935090231a016 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_818cb5._.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_17bc56._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_536504._.js" + ], + "source": "dynamic" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_818cb5._.js.map b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_818cb5._.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/imports/dynamic/output/crates_turbopack-tests_tests_snapshot_imports_dynamic_input_vercel.mjs_818cb5._.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/json/output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_961ae2.js b/crates/turbopack-tests/tests/snapshot/imports/json/output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_961ae2.js index 738d3b3aaf8e0..37df4873b049d 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/json/output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_961ae2.js +++ b/crates/turbopack-tests/tests/snapshot/imports/json/output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_961ae2.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_961ae2.js", {}, - {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/imports/json/input/index.js (ecmascript)"],"chunkListPath":"output/crates_turbopack-tests_tests_snapshot_imports_json_input_index.js_f5704b._.json"} + {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/imports/json/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/imports/json/output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/imports/json/output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_b53fce.js index 18dc74c1fdda9..2596e01c0d42e 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/json/output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/imports/json/output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_b53fce.js @@ -5,11 +5,11 @@ throw new Error("An error occurred while generating the chunk item [project]/crates/turbopack-tests/tests/snapshot/imports/json/input/invalid.json (json)\n at Execution of module_factory failed\n at Execution of JsonChunkItem::content failed\n at Unable to make a module from invalid JSON: expected `,` or `}` at line 3 column 26\n at nested.?\n 1 | {\n 2 | \"nested\": {\n | v\n 3 + \"this-is\": \"invalid\" // lint-staged will remove trailing commas, so here's a comment\n | ^\n 4 | }\n 5 | }\n"); }}), -"[project]/crates/turbopack-tests/tests/snapshot/imports/json/input/package.json (json)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/imports/json/input/package.json (json)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_export_value__(JSON.parse("{\"name\":\"json-snapshot\"}")); })()), -"[project]/crates/turbopack-tests/tests/snapshot/imports/json/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/imports/json/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$json$2f$input$2f$package$2e$json__$28$json$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/imports/json/input/package.json (json)"); var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$json$2f$input$2f$invalid$2e$json__$28$json$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/imports/json/input/invalid.json (json)"); diff --git a/crates/turbopack-tests/tests/snapshot/imports/json/output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_d933e1.js b/crates/turbopack-tests/tests/snapshot/imports/json/output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_d933e1.js new file mode 100644 index 0000000000000..7bbd243ba3f21 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/imports/json/output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_d933e1.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/crates_turbopack-tests_tests_snapshot_imports_json_input_index.js_f5704b._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/json/output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_d933e1.js.map b/crates/turbopack-tests/tests/snapshot/imports/json/output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_d933e1.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/imports/json/output/crates_turbopack-tests_tests_snapshot_imports_json_input_index_d933e1.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_2a5f2c.js b/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_2a5f2c.js new file mode 100644 index 0000000000000..d704499110201 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_2a5f2c.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index.js_f5704b._.json", + "chunks": [ + "output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_2a5f2c.js.map b/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_2a5f2c.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_2a5f2c.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_b53fce.js index 2063f21841d7d..460d288ab81b8 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/input/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { const dne = __turbopack_require__((()=>{ const e = new Error("Cannot find module 'does-not-exist/path'"); diff --git a/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_f8412b.js b/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_f8412b.js index 3b98f3c7f0cbf..9b79e6c7cb7b2 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_f8412b.js +++ b/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_f8412b.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_f8412b.js", {}, - {"otherChunks":["output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/input/index.js (ecmascript)"],"chunkListPath":"output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index.js_f5704b._.json"} + {"otherChunks":["output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_cjs_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/imports/resolve_error_cjs/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_0b3e45.js b/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_0b3e45.js index d82cc3f8ca248..215ee0a69a69a 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_0b3e45.js +++ b/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_0b3e45.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_0b3e45.js", {}, - {"otherChunks":["output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/input/index.js (ecmascript)"],"chunkListPath":"output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index.js_f5704b._.json"} + {"otherChunks":["output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_594455.js b/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_594455.js new file mode 100644 index 0000000000000..5aecabcedd42e --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_594455.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index.js_f5704b._.json", + "chunks": [ + "output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_594455.js.map b/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_594455.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_594455.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_b53fce.js index 5e7f546e68a21..2028b5c516b3e 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/79fb1_turbopack-tests_tests_snapshot_imports_resolve_error_esm_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/imports/resolve_error_esm/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { (()=>{ const e = new Error("Cannot find module 'does-not-exist/path'"); diff --git a/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_4ae000.js b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_4ae000.js new file mode 100644 index 0000000000000..19beeb06f74c9 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_4ae000.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index.js_f5704b._.json", + "chunks": [ + "output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_4ae000.js.map b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_4ae000.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_4ae000.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_b53fce.js index 464c8440bf64a..dcb656b6429a8 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_b53fce.js @@ -1,12 +1,11 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/vercel.mjs (ecmascript, manifest chunk, loader)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/vercel.mjs (ecmascript, manifest chunk, loader)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_export_value__((__turbopack_import__) => { return __turbopack_load__("output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_10fe7a._.js").then(() => { return __turbopack_require__("[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/vercel.mjs (ecmascript, manifest chunk)"); - }).then(({ chunks, list }) => { - __turbopack_register_chunk_list__(list, chunks); + }).then((chunks) => { return Promise.all(chunks.map((chunk_path) => __turbopack_load__(chunk_path))); }).then(() => { return __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/vercel.mjs (ecmascript)"); @@ -14,7 +13,7 @@ __turbopack_export_value__((__turbopack_import__) => { }); })()), -"[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/vercel.mjs (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/vercel.mjs (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_esm__({ "default": ()=>__TURBOPACK__default__export__ @@ -22,7 +21,7 @@ __turbopack_esm__({ const __TURBOPACK__default__export__ = "turbopack"; })()), -"[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$static$2d$and$2d$dynamic$2f$input$2f$vercel$2e$mjs__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/vercel.mjs (ecmascript)"); "__TURBOPACK__ecmascript__hoisting__location__"; diff --git a/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_b53fce.js.map b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_b53fce.js.map index 10eaa9afd77d1..5df6e17c5561a 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_b53fce.js.map +++ b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_b53fce.js.map @@ -1,8 +1,8 @@ { "version": 3, "sections": [ - {"offset": {"line": 18, "column": 0}, "map": {"version":3,"sources":["/turbopack/[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/vercel.mjs"],"sourcesContent":["export default \"turbopack\";\n"],"names":[],"mappings":";;;uCAAe"}}, - {"offset": {"line": 22, "column": 0}, "map": {"version":3,"sources":[],"names":[],"mappings":"A"}}, - {"offset": {"line": 26, "column": 0}, "map": {"version":3,"sources":["/turbopack/[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/index.js"],"sourcesContent":["import img from \"./vercel.mjs\";\nconsole.log(img);\n\nimport(\"./vercel.mjs\").then(console.log);\n"],"names":[],"mappings":";;;AACA,QAAQ,GAAG;AAEX,gLAAuB,IAAI,CAAC,QAAQ,GAAG"}}, - {"offset": {"line": 31, "column": 0}, "map": {"version":3,"sources":[],"names":[],"mappings":"A"}}] + {"offset": {"line": 17, "column": 0}, "map": {"version":3,"sources":["/turbopack/[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/vercel.mjs"],"sourcesContent":["export default \"turbopack\";\n"],"names":[],"mappings":";;;uCAAe"}}, + {"offset": {"line": 21, "column": 0}, "map": {"version":3,"sources":[],"names":[],"mappings":"A"}}, + {"offset": {"line": 25, "column": 0}, "map": {"version":3,"sources":["/turbopack/[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/index.js"],"sourcesContent":["import img from \"./vercel.mjs\";\nconsole.log(img);\n\nimport(\"./vercel.mjs\").then(console.log);\n"],"names":[],"mappings":";;;AACA,QAAQ,GAAG;AAEX,gLAAuB,IAAI,CAAC,QAAQ,GAAG"}}, + {"offset": {"line": 30, "column": 0}, "map": {"version":3,"sources":[],"names":[],"mappings":"A"}}] } \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_ec8693.js b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_ec8693.js index b8de2601945d9..d67f92b17d042 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_ec8693.js +++ b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_ec8693.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_ec8693.js", {}, - {"otherChunks":["output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/index.js (ecmascript)"],"chunkListPath":"output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index.js_f5704b._.json"} + {"otherChunks":["output/79fb1_turbopack-tests_tests_snapshot_imports_static-and-dynamic_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_000419._.js b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_000419._.js new file mode 100644 index 0000000000000..4224e5dd15501 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_000419._.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_e8af7f._.json", + "chunks": [ + "output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_26aaf6._.js" + ], + "source": "dynamic" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_000419._.js.map b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_000419._.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_000419._.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_10fe7a._.js b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_10fe7a._.js index 1c48080c76b77..61b50e555c689 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_10fe7a._.js +++ b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_10fe7a._.js @@ -1,13 +1,19 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_10fe7a._.js", { -"[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/vercel.mjs (ecmascript, manifest chunk)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/vercel.mjs (ecmascript, manifest chunk)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { -__turbopack_export_value__({ - "chunks": [ - "output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_26aaf6._.js" - ], - "list": "output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_e8af7f._.json" -}); +__turbopack_export_value__([ + { + "node": { + "TaskOutput": 995 + } + }, + { + "node": { + "TaskOutput": 996 + } + } +]); })()), }]); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_26aaf6._.js b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_26aaf6._.js index d3ea7bf940f79..e02777a0b0d0d 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_26aaf6._.js +++ b/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_26aaf6._.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/a587c_tests_snapshot_imports_static-and-dynamic_input_vercel.mjs_26aaf6._.js", { -"[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/vercel.mjs (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/imports/static-and-dynamic/input/vercel.mjs (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_esm__({ "default": ()=>__TURBOPACK__default__export__ diff --git a/crates/turbopack-tests/tests/snapshot/imports/static/output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_885269.js b/crates/turbopack-tests/tests/snapshot/imports/static/output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_885269.js index 46c9c62d75851..8ac00ce9fa1ed 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/static/output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_885269.js +++ b/crates/turbopack-tests/tests/snapshot/imports/static/output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_885269.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_885269.js", {}, - {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/imports/static/input/index.js (ecmascript)"],"chunkListPath":"output/crates_turbopack-tests_tests_snapshot_imports_static_input_index.js_f5704b._.json"} + {"otherChunks":["output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/imports/static/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/imports/static/output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/imports/static/output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_b53fce.js index 488d2d6260f55..151847d1011fb 100644 --- a/crates/turbopack-tests/tests/snapshot/imports/static/output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/imports/static/output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_b53fce.js @@ -1,10 +1,10 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/imports/static/input/vercel.svg (static)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/imports/static/input/vercel.svg (static)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_export_value__("/crates/turbopack-tests/tests/snapshot/imports/static/static/957b9b162f8447f9.svg"); })()), -"[project]/crates/turbopack-tests/tests/snapshot/imports/static/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/imports/static/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$static$2f$input$2f$vercel$2e$svg__$28$static$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/imports/static/input/vercel.svg (static)"); "__TURBOPACK__ecmascript__hoisting__location__"; diff --git a/crates/turbopack-tests/tests/snapshot/imports/static/output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_c91198.js b/crates/turbopack-tests/tests/snapshot/imports/static/output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_c91198.js new file mode 100644 index 0000000000000..b73d595a36bd4 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/imports/static/output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_c91198.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/crates_turbopack-tests_tests_snapshot_imports_static_input_index.js_f5704b._.json", + "chunks": [ + "output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/imports/static/output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_c91198.js.map b/crates/turbopack-tests/tests/snapshot/imports/static/output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_c91198.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/imports/static/output/crates_turbopack-tests_tests_snapshot_imports_static_input_index_c91198.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_667edf.js b/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_667edf.js index 81b308d11b670..57d9bdf1217a3 100644 --- a/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_667edf.js +++ b/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_667edf.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_667edf.js", {}, - {"otherChunks":["output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/input/index.js (ecmascript)"],"chunkListPath":"output/a587c_tests_snapshot_node_node_protocol_external_input_index.js_f5704b._.json"} + {"otherChunks":["output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_b53fce.js index 974e23471c01a..ac40b59f825c4 100644 --- a/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { var __TURBOPACK__external__node$3a$fs__ = __turbopack_external_require__("node:fs", true); "__TURBOPACK__ecmascript__hoisting__location__"; diff --git a/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_f9c393.js b/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_f9c393.js new file mode 100644 index 0000000000000..e2a6155050a6c --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_f9c393.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/a587c_tests_snapshot_node_node_protocol_external_input_index.js_f5704b._.json", + "chunks": [ + "output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_f9c393.js.map b/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_f9c393.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/node/node_protocol_external/output/79fb1_turbopack-tests_tests_snapshot_node_node_protocol_external_input_index_f9c393.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/63a02_styled-components_index_a35c8c.js b/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/63a02_styled-components_index_a35c8c.js index 0c8f07ed068a1..bd10b0645ab61 100644 --- a/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/63a02_styled-components_index_a35c8c.js +++ b/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/63a02_styled-components_index_a35c8c.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/63a02_styled-components_index_a35c8c.js", { -"[project]/crates/turbopack-tests/tests/node_modules/styled-components/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/node_modules/styled-components/index.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { "purposefully empty stub"; "styled-components/index.js"; diff --git a/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/a587c_tests_snapshot_styled_components_styled_components_input_index_afc482.js b/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/a587c_tests_snapshot_styled_components_styled_components_input_index_afc482.js index 5c063c76b242f..2f6a7db944a03 100644 --- a/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/a587c_tests_snapshot_styled_components_styled_components_input_index_afc482.js +++ b/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/a587c_tests_snapshot_styled_components_styled_components_input_index_afc482.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/a587c_tests_snapshot_styled_components_styled_components_input_index_afc482.js", {}, - {"otherChunks":["output/63a02_styled-components_index_a35c8c.js","output/a587c_tests_snapshot_styled_components_styled_components_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/input/index.js (ecmascript)"],"chunkListPath":"output/a587c_tests_snapshot_styled_components_styled_components_input_index.js_f5704b._.json"} + {"otherChunks":["output/63a02_styled-components_index_a35c8c.js","output/a587c_tests_snapshot_styled_components_styled_components_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/a587c_tests_snapshot_styled_components_styled_components_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/a587c_tests_snapshot_styled_components_styled_components_input_index_b53fce.js index 55b4c3c683866..fefb9949b74f3 100644 --- a/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/a587c_tests_snapshot_styled_components_styled_components_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/a587c_tests_snapshot_styled_components_styled_components_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/a587c_tests_snapshot_styled_components_styled_components_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$node_modules$2f$styled$2d$components$2f$index$2e$js__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/node_modules/styled-components/index.js (ecmascript)"); "__TURBOPACK__ecmascript__hoisting__location__"; diff --git a/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/a587c_tests_snapshot_styled_components_styled_components_input_index_dbe666.js b/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/a587c_tests_snapshot_styled_components_styled_components_input_index_dbe666.js new file mode 100644 index 0000000000000..dc729c6c84988 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/a587c_tests_snapshot_styled_components_styled_components_input_index_dbe666.js @@ -0,0 +1,8 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/a587c_tests_snapshot_styled_components_styled_components_input_index.js_f5704b._.json", + "chunks": [ + "output/63a02_styled-components_index_a35c8c.js", + "output/a587c_tests_snapshot_styled_components_styled_components_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/a587c_tests_snapshot_styled_components_styled_components_input_index_dbe666.js.map b/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/a587c_tests_snapshot_styled_components_styled_components_input_index_dbe666.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/styled_components/styled_components/output/a587c_tests_snapshot_styled_components_styled_components_input_index_dbe666.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/63a02_react_jsx-dev-runtime_7d1be7.js b/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/63a02_react_jsx-dev-runtime_7d1be7.js index 3a702609bf681..0d59b1422c9ab 100644 --- a/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/63a02_react_jsx-dev-runtime_7d1be7.js +++ b/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/63a02_react_jsx-dev-runtime_7d1be7.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/63a02_react_jsx-dev-runtime_7d1be7.js", { -"[project]/crates/turbopack-tests/tests/node_modules/react/jsx-dev-runtime.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/node_modules/react/jsx-dev-runtime.js (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { "purposefully empty stub"; "react/jsx-dev-runtime.js"; diff --git a/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/7b7bf_third_party_component_index_8e9ad8.js b/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/7b7bf_third_party_component_index_8e9ad8.js index ad0ae22242d43..ca28b5afb4ed9 100644 --- a/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/7b7bf_third_party_component_index_8e9ad8.js +++ b/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/7b7bf_third_party_component_index_8e9ad8.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/7b7bf_third_party_component_index_8e9ad8.js", { -"[project]/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/input/node_modules/third_party_component/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/input/node_modules/third_party_component/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_esm__({ "default": ()=>ThirdPartyComponent diff --git a/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/8562f_snapshot_swc_transforms_mono_transforms_input_packages_component_index_b0e6f8.js b/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/8562f_snapshot_swc_transforms_mono_transforms_input_packages_component_index_b0e6f8.js index c17390839bc16..6657801422a89 100644 --- a/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/8562f_snapshot_swc_transforms_mono_transforms_input_packages_component_index_b0e6f8.js +++ b/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/8562f_snapshot_swc_transforms_mono_transforms_input_packages_component_index_b0e6f8.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/8562f_snapshot_swc_transforms_mono_transforms_input_packages_component_index_b0e6f8.js", { -"[project]/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/input/packages/component/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/input/packages/component/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_esm__({ "default": ()=>MyApp diff --git a/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_4a3d65.js b/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_4a3d65.js index 27caefce6e7e7..083cc23586072 100644 --- a/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_4a3d65.js +++ b/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_4a3d65.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_4a3d65.js", {}, - {"otherChunks":["output/63a02_react_jsx-dev-runtime_7d1be7.js","output/8562f_snapshot_swc_transforms_mono_transforms_input_packages_component_index_b0e6f8.js","output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_b53fce.js","output/7b7bf_third_party_component_index_8e9ad8.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/input/packages/app/index.js (ecmascript)"],"chunkListPath":"output/8562f_snapshot_swc_transforms_mono_transforms_input_packages_app_index.js_f5704b._.json"} + {"otherChunks":["output/63a02_react_jsx-dev-runtime_7d1be7.js","output/8562f_snapshot_swc_transforms_mono_transforms_input_packages_component_index_b0e6f8.js","output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_b53fce.js","output/7b7bf_third_party_component_index_8e9ad8.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/input/packages/app/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_b53fce.js index 29a55e057a385..dcec06373730c 100644 --- a/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/input/packages/app/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/input/packages/app/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$swc_transforms$2f$mono_transforms$2f$input$2f$packages$2f$component$2f$index$2e$js__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/input/packages/component/index.js (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$swc_transforms$2f$mono_transforms$2f$input$2f$node_modules$2f$third_party_component$2f$index$2e$js__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/input/node_modules/third_party_component/index.js (ecmascript)"); diff --git a/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_c4155e.js b/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_c4155e.js new file mode 100644 index 0000000000000..8452d12a526e3 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_c4155e.js @@ -0,0 +1,10 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/8562f_snapshot_swc_transforms_mono_transforms_input_packages_app_index.js_f5704b._.json", + "chunks": [ + "output/63a02_react_jsx-dev-runtime_7d1be7.js", + "output/8562f_snapshot_swc_transforms_mono_transforms_input_packages_component_index_b0e6f8.js", + "output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_b53fce.js", + "output/7b7bf_third_party_component_index_8e9ad8.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_c4155e.js.map b/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_c4155e.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/swc_transforms/mono_transforms/output/a587c_tests_snapshot_swc_transforms_mono_transforms_input_packages_app_index_c4155e.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/63a02_@swc_helpers_src__class_call_check.mjs_f682d0._.js b/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/63a02_@swc_helpers_src__class_call_check.mjs_f682d0._.js index b8c1eaa9ca7b5..21d24915430cd 100644 --- a/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/63a02_@swc_helpers_src__class_call_check.mjs_f682d0._.js +++ b/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/63a02_@swc_helpers_src__class_call_check.mjs_f682d0._.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/63a02_@swc_helpers_src__class_call_check.mjs_f682d0._.js", { -"[project]/crates/turbopack-tests/tests/node_modules/@swc/helpers/src/_class_call_check.mjs (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { +"[project]/crates/turbopack-tests/tests/node_modules/@swc/helpers/src/_class_call_check.mjs (ecmascript)": (function({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname, m: module, e: exports }) { !function() { "purposefully empty stub"; "@swc/helpers/src/_class_call_check.mjs"; diff --git a/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_a907cf.js b/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_a907cf.js new file mode 100644 index 0000000000000..bf0d5c77aaedc --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_a907cf.js @@ -0,0 +1,8 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index.js_f5704b._.json", + "chunks": [ + "output/63a02_@swc_helpers_src__class_call_check.mjs_f682d0._.js", + "output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_a907cf.js.map b/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_a907cf.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_a907cf.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_b53fce.js index 58ef4db6d832f..fe1d8975b8cc4 100644 --- a/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$node_modules$2f40$swc$2f$helpers$2f$src$2f$_class_call_check$2e$mjs__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/node_modules/@swc/helpers/src/_class_call_check.mjs (ecmascript)"); "__TURBOPACK__ecmascript__hoisting__location__"; diff --git a/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_e2f660.js b/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_e2f660.js index b37652c064764..42b51d6fb9cad 100644 --- a/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_e2f660.js +++ b/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_e2f660.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_e2f660.js", {}, - {"otherChunks":["output/63a02_@swc_helpers_src__class_call_check.mjs_f682d0._.js","output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/input/index.js (ecmascript)"],"chunkListPath":"output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index.js_f5704b._.json"} + {"otherChunks":["output/63a02_@swc_helpers_src__class_call_check.mjs_f682d0._.js","output/79fb1_turbopack-tests_tests_snapshot_swc_transforms_preset_env_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/swc_transforms/preset_env/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_184a2b.js b/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_184a2b.js new file mode 100644 index 0000000000000..57962acc855f2 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_184a2b.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/a587c_tests_snapshot_typescript_jsconfig-baseurl_input_index.js_f5704b._.json", + "chunks": [ + "output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_b53fce.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_184a2b.js.map b/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_184a2b.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_184a2b.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_8f1e58.js b/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_8f1e58.js index 967ce90ffad01..ce11fa7a2cd1d 100644 --- a/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_8f1e58.js +++ b/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_8f1e58.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_8f1e58.js", {}, - {"otherChunks":["output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/input/index.js (ecmascript)"],"chunkListPath":"output/a587c_tests_snapshot_typescript_jsconfig-baseurl_input_index.js_f5704b._.json"} + {"otherChunks":["output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_b53fce.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/input/index.js (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_b53fce.js b/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_b53fce.js index 081e6f902f552..06d4062ecdf41 100644 --- a/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_b53fce.js +++ b/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_b53fce.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/79fb1_turbopack-tests_tests_snapshot_typescript_jsconfig-baseurl_input_index_b53fce.js", { -"[project]/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/input/prop.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/input/prop.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_esm__({ "prop": ()=>prop @@ -8,7 +8,7 @@ __turbopack_esm__({ const prop = 1; })()), -"[project]/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/input/index.js (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$typescript$2f$jsconfig$2d$baseurl$2f$input$2f$prop$2e$js__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/input/prop.js (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$typescript$2f$jsconfig$2d$baseurl$2f$input$2f$prop$2e$js__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/typescript/jsconfig-baseurl/input/prop.js (ecmascript)"); diff --git a/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_0aa04e._.js b/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_0aa04e._.js index 63d0ca1bf9a69..a1fdae7fa4713 100644 --- a/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_0aa04e._.js +++ b/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_0aa04e._.js @@ -1,7 +1,7 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ "output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_0aa04e._.js", {}, - {"otherChunks":["output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_b53fce._.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/input/index.ts (ecmascript)"],"chunkListPath":"output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_f5704b._.json"} + {"otherChunks":["output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_b53fce._.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/input/index.ts (ecmascript)"]} ]); (() => { if (!Array.isArray(globalThis.TURBOPACK)) { @@ -15,6 +15,7 @@ if (!Array.isArray(globalThis.TURBOPACK)) { /** @typedef {import('../types').ChunkPath} ChunkPath */ /** @typedef {import('../types').ModuleId} ModuleId */ /** @typedef {import('../types').GetFirstModuleChunk} GetFirstModuleChunk */ +/** @typedef {import('../types').ChunkList} ChunkList */ /** @typedef {import('../types').Module} Module */ /** @typedef {import('../types').SourceInfo} SourceInfo */ @@ -322,7 +323,6 @@ function instantiateModule(id, source) { m: module, c: moduleCache, l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }), - k: registerChunkList, g: globalThis, __dirname: module.id.replace(/(^|\/)[\/]+$/, ""), }); @@ -1240,39 +1240,30 @@ function getOrInstantiateRuntimeModule(moduleId, chunkPath) { /** * Subscribes to chunk list updates from the update server and applies them. * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths + * @param {ChunkList} chunkList */ -function registerChunkList(chunkListPath, chunkPaths) { +function registerChunkList(chunkList) { globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS.push([ - chunkListPath, - handleApply.bind(null, chunkListPath), + chunkList.path, + handleApply.bind(null, chunkList.path), ]); // Adding chunks to chunk lists and vice versa. - const chunks = new Set(chunkPaths); - chunkListChunksMap.set(chunkListPath, chunks); + const chunks = new Set(chunkList.chunks); + chunkListChunksMap.set(chunkList.path, chunks); for (const chunkPath of chunks) { let chunkChunkLists = chunkChunkListsMap.get(chunkPath); if (!chunkChunkLists) { - chunkChunkLists = new Set([chunkListPath]); + chunkChunkLists = new Set([chunkList.path]); chunkChunkListsMap.set(chunkPath, chunkChunkLists); } else { - chunkChunkLists.add(chunkListPath); + chunkChunkLists.add(chunkList.path); } } -} -/** - * Registers a chunk list and marks it as a runtime chunk list. This is called - * by the runtime of evaluated chunks. - * - * @param {ChunkPath} chunkListPath - * @param {ChunkPath[]} chunkPaths - */ -function registerChunkListAndMarkAsRuntime(chunkListPath, chunkPaths) { - registerChunkList(chunkListPath, chunkPaths); - markChunkListAsRuntime(chunkListPath); + if (chunkList.isRuntime) { + markChunkListAsRuntime(chunkList.path); + } } /** @@ -1300,6 +1291,19 @@ async function registerChunk([chunkPath, chunkModules, runtimeParams]) { BACKEND.registerChunk(chunkPath, runtimeParams); } +globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; + +const chunkListsToRegister = globalThis.TURBOPACK_CHUNK_LISTS || []; +for (const chunkList of chunkListsToRegister) { + registerChunkList(chunkList); +} +globalThis.TURBOPACK_CHUNK_LISTS = { + push: (chunkList) => { + registerChunkList(chunkList); + }, +}; + globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS || []; /** @typedef {import('../types/backend').RuntimeBackend} RuntimeBackend */ @@ -1320,11 +1324,6 @@ let BACKEND; return; } - registerChunkListAndMarkAsRuntime(params.chunkListPath, [ - chunkPath, - ...params.otherChunks, - ]); - const chunksToWaitFor = []; for (const otherChunkPath of params.otherChunks) { if (otherChunkPath.endsWith(".css")) { diff --git a/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_b53fce._.js b/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_b53fce._.js index 5ac932a4cea19..3ef0d8fa84862 100644 --- a/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_b53fce._.js +++ b/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_b53fce._.js @@ -1,6 +1,6 @@ (globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_b53fce._.js", { -"[project]/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/input/prop.ts (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/input/prop.ts (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { __turbopack_esm__({ "prop": ()=>prop @@ -8,7 +8,7 @@ __turbopack_esm__({ const prop = 1; })()), -"[project]/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/input/index.ts (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, k: __turbopack_register_chunk_list__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { +"[project]/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/input/index.ts (ecmascript)": (({ r: __turbopack_require__, x: __turbopack_external_require__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, c: __turbopack_cache__, l: __turbopack_load__, j: __turbopack_cjs__, g: global, __dirname }) => (() => { var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$typescript$2f$tsconfig$2d$baseurl$2f$input$2f$prop$2e$ts__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/input/prop.ts (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$typescript$2f$tsconfig$2d$baseurl$2f$input$2f$prop$2e$ts__$28$ecmascript$29$__ = __turbopack_import__("[project]/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/input/prop.ts (ecmascript)"); diff --git a/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_ed538f._.js b/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_ed538f._.js new file mode 100644 index 0000000000000..505250c6e70ee --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_ed538f._.js @@ -0,0 +1,7 @@ +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_f5704b._.json", + "chunks": [ + "output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_b53fce._.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_ed538f._.js.map b/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_ed538f._.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/typescript/tsconfig-baseurl/output/a587c_tests_snapshot_typescript_tsconfig-baseurl_input_index.ts_ed538f._.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file