turbopack: Chunking Refactor Step 2 (#56504)
### What? The second step in our chunking refactoring, this removes our use of Module::as_chunk and Module::as_root_chunk. Instead, the only way to generate a chunk is directly from a root ChunkItem. ### Why? In the end we want to avoid creating chunks from modules directly, but enforce everything going through the ChunkingContext to be chunked. This allows us to replace the existing chunking algorithm with a much more efficient one that avoid duplication between chunks in first place and doesn't require a post-chunking optimization. ### How? https://github.com/vercel/turbo/pull/6120 Re: https://github.com/vercel/next.js/pull/56467 Closes WEB-1721 Co-authored-by: Tobias Koppers <1365881+sokra@users.noreply.github.com>
This commit is contained in:
parent
9d150b116d
commit
2af1e784c2
14 changed files with 103 additions and 145 deletions
70
Cargo.lock
generated
70
Cargo.lock
generated
|
@ -289,9 +289,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "async-trait"
|
||||
version = "0.1.68"
|
||||
version = "0.1.73"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842"
|
||||
checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -321,7 +321,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "auto-hash-map"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"smallvec",
|
||||
|
@ -3515,7 +3515,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "node-file-trace"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"serde",
|
||||
|
@ -7368,7 +7368,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
|
@ -7400,7 +7400,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-build"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"cargo-lock",
|
||||
|
@ -7412,7 +7412,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-bytes"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"bytes",
|
||||
|
@ -7427,7 +7427,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-env"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"dotenvs",
|
||||
|
@ -7441,7 +7441,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-fetch"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"indexmap 1.9.3",
|
||||
|
@ -7458,7 +7458,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-fs"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"auto-hash-map",
|
||||
|
@ -7488,7 +7488,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-hash"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"base16",
|
||||
"hex",
|
||||
|
@ -7500,7 +7500,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-macros"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"convert_case 0.6.0",
|
||||
|
@ -7514,7 +7514,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-macros-shared"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -7524,7 +7524,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-malloc"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"mimalloc",
|
||||
]
|
||||
|
@ -7532,7 +7532,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-memory"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"auto-hash-map",
|
||||
|
@ -7557,7 +7557,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-recursion",
|
||||
|
@ -7588,7 +7588,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-binding"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"auto-hash-map",
|
||||
"mdxjs",
|
||||
|
@ -7628,7 +7628,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-build"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"indexmap 1.9.3",
|
||||
|
@ -7650,7 +7650,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-cli-utils"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"clap 4.4.2",
|
||||
|
@ -7674,7 +7674,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-core"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-recursion",
|
||||
|
@ -7703,7 +7703,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-css"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
|
@ -7725,7 +7725,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-dev"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"indexmap 1.9.3",
|
||||
|
@ -7749,7 +7749,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-dev-server"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-compression",
|
||||
|
@ -7786,7 +7786,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-ecmascript"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
|
@ -7820,7 +7820,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-ecmascript-hmr-protocol"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"serde_json",
|
||||
|
@ -7831,7 +7831,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-ecmascript-plugins"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
|
@ -7854,7 +7854,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-ecmascript-runtime"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"indoc",
|
||||
|
@ -7871,7 +7871,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-env"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"indexmap 1.9.3",
|
||||
|
@ -7887,7 +7887,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-image"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"base64 0.21.4",
|
||||
|
@ -7907,7 +7907,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-json"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"serde",
|
||||
|
@ -7922,7 +7922,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-mdx"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"mdxjs",
|
||||
|
@ -7937,7 +7937,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-node"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-stream",
|
||||
|
@ -7972,7 +7972,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-static"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"serde",
|
||||
|
@ -7988,7 +7988,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-swc-utils"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"swc_core",
|
||||
"turbo-tasks",
|
||||
|
@ -7999,7 +7999,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-wasm"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231005.2#2207c3eb716b81c719385e43d25d7399f673fc11"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231006.1#59ac1533324bfac62e75d759dd6cdee0f44a0b96"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"indexmap 1.9.3",
|
||||
|
|
|
@ -40,11 +40,11 @@ swc_core = { version = "0.83.28", features = [
|
|||
testing = { version = "0.34.1" }
|
||||
|
||||
# Turbo crates
|
||||
turbopack-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231005.2" }
|
||||
turbopack-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231006.1" }
|
||||
# [TODO]: need to refactor embed_directory! macro usages, as well as resolving turbo_tasks::function, macros..
|
||||
turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231005.2" }
|
||||
turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231006.1" }
|
||||
# [TODO]: need to refactor embed_directory! macro usage in next-core
|
||||
turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231005.2" }
|
||||
turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231006.1" }
|
||||
|
||||
# General Deps
|
||||
|
||||
|
|
|
@ -39,8 +39,9 @@ use turbopack_binding::{
|
|||
turbopack::{
|
||||
core::{
|
||||
asset::{Asset, AssetContent},
|
||||
chunk::{ChunkableModuleExt, ChunkingContext, EvaluatableAssets},
|
||||
chunk::{ChunkingContext, EvaluatableAssets},
|
||||
file_source::FileSource,
|
||||
module::Module,
|
||||
output::{OutputAsset, OutputAssets},
|
||||
virtual_output::VirtualOutputAsset,
|
||||
},
|
||||
|
@ -507,7 +508,13 @@ impl AppEndpoint {
|
|||
let mut server_assets = vec![];
|
||||
let mut client_assets = vec![];
|
||||
|
||||
let app_entry = app_entry.await?;
|
||||
|
||||
let client_shared_chunks = get_app_client_shared_chunks(
|
||||
app_entry
|
||||
.rsc_entry
|
||||
.ident()
|
||||
.with_modifier(Vc::cell("client_shared_chunks".to_string())),
|
||||
this.app_project.client_runtime_entries(),
|
||||
this.app_project.project().client_chunking_context(),
|
||||
);
|
||||
|
@ -524,7 +531,6 @@ impl AppEndpoint {
|
|||
}
|
||||
}
|
||||
|
||||
let app_entry = app_entry.await?;
|
||||
let rsc_entry = app_entry.rsc_entry;
|
||||
|
||||
let rsc_entry_asset = Vc::upcast(rsc_entry);
|
||||
|
@ -707,9 +713,7 @@ impl AppEndpoint {
|
|||
}
|
||||
|
||||
let files = chunking_context.evaluated_chunk_group(
|
||||
app_entry
|
||||
.rsc_entry
|
||||
.as_root_chunk(Vc::upcast(chunking_context)),
|
||||
app_entry.rsc_entry.ident(),
|
||||
Vc::cell(evaluatable_assets),
|
||||
);
|
||||
server_assets.extend(files.await?.iter().copied());
|
||||
|
|
|
@ -13,7 +13,7 @@ use turbopack_binding::{
|
|||
turbopack::{
|
||||
core::{
|
||||
asset::AssetContent,
|
||||
chunk::{ChunkableModuleExt, ChunkingContext},
|
||||
chunk::ChunkingContext,
|
||||
context::AssetContext,
|
||||
module::Module,
|
||||
output::{OutputAsset, OutputAssets},
|
||||
|
@ -88,10 +88,8 @@ impl MiddlewareEndpoint {
|
|||
|
||||
let edge_chunking_context = self.project.edge_middleware_chunking_context();
|
||||
|
||||
let edge_files = edge_chunking_context.evaluated_chunk_group(
|
||||
module.as_root_chunk(Vc::upcast(edge_chunking_context)),
|
||||
Vc::cell(evaluatable_assets),
|
||||
);
|
||||
let edge_files = edge_chunking_context
|
||||
.evaluated_chunk_group(module.ident(), Vc::cell(evaluatable_assets));
|
||||
|
||||
Ok(edge_files)
|
||||
}
|
||||
|
|
|
@ -37,10 +37,11 @@ use turbopack_binding::{
|
|||
build::BuildChunkingContext,
|
||||
core::{
|
||||
asset::AssetContent,
|
||||
chunk::{ChunkableModuleExt, ChunkingContext, EvaluatableAssets},
|
||||
chunk::{ChunkingContext, EvaluatableAssets},
|
||||
context::AssetContext,
|
||||
file_source::FileSource,
|
||||
issue::{IssueSeverity, OptionIssueSource},
|
||||
module::Module,
|
||||
output::{OutputAsset, OutputAssets},
|
||||
reference_type::{
|
||||
EcmaScriptModulesReferenceSubType, EntryReferenceSubType, ReferenceType,
|
||||
|
@ -549,11 +550,9 @@ impl PageEndpoint {
|
|||
|
||||
let client_chunking_context = this.pages_project.project().client_chunking_context();
|
||||
|
||||
let client_entry_chunk = client_module.as_root_chunk(Vc::upcast(client_chunking_context));
|
||||
|
||||
let mut client_chunks = client_chunking_context
|
||||
.evaluated_chunk_group(
|
||||
client_entry_chunk,
|
||||
client_module.ident(),
|
||||
this.pages_project
|
||||
.client_runtime_entries()
|
||||
.with_entry(Vc::upcast(client_main_module))
|
||||
|
@ -611,10 +610,8 @@ impl PageEndpoint {
|
|||
};
|
||||
evaluatable_assets.push(evaluatable);
|
||||
|
||||
let edge_files = edge_chunking_context.evaluated_chunk_group(
|
||||
ssr_module.as_root_chunk(Vc::upcast(edge_chunking_context)),
|
||||
Vc::cell(evaluatable_assets),
|
||||
);
|
||||
let edge_files = edge_chunking_context
|
||||
.evaluated_chunk_group(ssr_module.ident(), Vc::cell(evaluatable_assets));
|
||||
|
||||
Ok(SsrChunk::Edge { files: edge_files }.cell())
|
||||
} else {
|
||||
|
|
|
@ -27,7 +27,10 @@ use turbopack_binding::{
|
|||
turbopack::{
|
||||
build::BuildChunkingContext,
|
||||
core::{
|
||||
chunk::EvaluatableAssets, compile_time_info::CompileTimeInfo, file_source::FileSource,
|
||||
chunk::{ChunkingContext, EvaluatableAssets},
|
||||
compile_time_info::CompileTimeInfo,
|
||||
file_source::FileSource,
|
||||
ident::AssetIdent,
|
||||
output::OutputAsset,
|
||||
},
|
||||
ecmascript::chunk::EcmascriptChunkingContext,
|
||||
|
@ -256,8 +259,15 @@ pub async fn compute_app_entries_chunks(
|
|||
) -> Result<()> {
|
||||
let client_relative_path_ref = client_relative_path.await?;
|
||||
|
||||
let app_client_shared_chunks =
|
||||
get_app_client_shared_chunks(app_entries.client_runtime_entries, client_chunking_context);
|
||||
let app_client_shared_chunks = get_app_client_shared_chunks(
|
||||
AssetIdent::from_path(
|
||||
client_chunking_context
|
||||
.context_path()
|
||||
.join("client shared chunk group".to_string()),
|
||||
),
|
||||
app_entries.client_runtime_entries,
|
||||
client_chunking_context,
|
||||
);
|
||||
|
||||
let mut app_shared_client_chunks_paths = vec![];
|
||||
for chunk in app_client_shared_chunks.await?.iter().copied() {
|
||||
|
|
|
@ -27,10 +27,11 @@ use turbopack_binding::{
|
|||
turbopack::{
|
||||
build::BuildChunkingContext,
|
||||
core::{
|
||||
chunk::{ChunkableModuleExt, ChunkingContext, EvaluatableAssets},
|
||||
chunk::{ChunkingContext, EvaluatableAssets},
|
||||
compile_time_info::CompileTimeInfo,
|
||||
context::AssetContext,
|
||||
file_source::FileSource,
|
||||
module::Module,
|
||||
output::OutputAsset,
|
||||
reference_type::{EntryReferenceSubType, ReferenceType},
|
||||
source::Source,
|
||||
|
@ -400,12 +401,8 @@ pub async fn compute_page_entries_chunks(
|
|||
.insert(pathname.clone_value(), asset_path.to_string());
|
||||
}
|
||||
|
||||
let client_entry_chunk = page_entry
|
||||
.client_module
|
||||
.as_root_chunk(Vc::upcast(client_chunking_context));
|
||||
|
||||
let client_chunks = client_chunking_context.evaluated_chunk_group(
|
||||
client_entry_chunk,
|
||||
page_entry.client_module.ident(),
|
||||
page_entries
|
||||
.client_runtime_entries
|
||||
.with_entry(Vc::upcast(page_entry.client_module)),
|
||||
|
|
|
@ -4,10 +4,7 @@ use serde::{Deserialize, Serialize};
|
|||
use turbo_tasks::{debug::ValueDebugFormat, trace::TraceRawVcs, TryJoinIterExt, Vc};
|
||||
use turbopack_binding::turbopack::{
|
||||
build::BuildChunkingContext,
|
||||
core::{
|
||||
chunk::{ChunkableModuleExt, ChunkingContext},
|
||||
output::OutputAssets,
|
||||
},
|
||||
core::{chunk::ChunkingContextExt, output::OutputAssets},
|
||||
ecmascript::chunk::EcmascriptChunkingContext,
|
||||
};
|
||||
|
||||
|
@ -46,24 +43,21 @@ pub async fn get_app_client_references_chunks(
|
|||
match client_reference_ty {
|
||||
ClientReferenceType::EcmascriptClientReference(ecmascript_client_reference) => {
|
||||
let ecmascript_client_reference_ref = ecmascript_client_reference.await?;
|
||||
let client_entry_chunk = ecmascript_client_reference_ref
|
||||
.client_module
|
||||
.as_root_chunk(Vc::upcast(client_chunking_context));
|
||||
let ssr_entry_chunk = ecmascript_client_reference_ref
|
||||
.ssr_module
|
||||
.as_root_chunk(Vc::upcast(ssr_chunking_context));
|
||||
ClientReferenceChunks {
|
||||
client_chunks: client_chunking_context.chunk_group(client_entry_chunk),
|
||||
ssr_chunks: ssr_chunking_context.chunk_group(ssr_entry_chunk),
|
||||
client_chunks: client_chunking_context.root_chunk_group(Vc::upcast(
|
||||
ecmascript_client_reference_ref.client_module,
|
||||
)),
|
||||
ssr_chunks: ssr_chunking_context.root_chunk_group(Vc::upcast(
|
||||
ecmascript_client_reference_ref.ssr_module,
|
||||
)),
|
||||
}
|
||||
}
|
||||
ClientReferenceType::CssClientReference(css_client_reference) => {
|
||||
let css_client_reference_ref = css_client_reference.await?;
|
||||
let client_entry_chunk = css_client_reference_ref
|
||||
.client_module
|
||||
.as_root_chunk(Vc::upcast(client_chunking_context));
|
||||
ClientReferenceChunks {
|
||||
client_chunks: client_chunking_context.chunk_group(client_entry_chunk),
|
||||
client_chunks: client_chunking_context.root_chunk_group(Vc::upcast(
|
||||
css_client_reference_ref.client_module,
|
||||
)),
|
||||
ssr_chunks: OutputAssets::empty(),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,41 +1,17 @@
|
|||
use anyhow::Result;
|
||||
use turbo_tasks::{TryJoinIterExt, Value, Vc};
|
||||
use turbo_tasks::Vc;
|
||||
use turbopack_binding::turbopack::{
|
||||
core::{
|
||||
chunk::{availability_info::AvailabilityInfo, ChunkingContext, EvaluatableAssets},
|
||||
chunk::{ChunkingContext, EvaluatableAssets},
|
||||
ident::AssetIdent,
|
||||
output::OutputAssets,
|
||||
},
|
||||
ecmascript::chunk::{EcmascriptChunk, EcmascriptChunkPlaceable, EcmascriptChunkingContext},
|
||||
ecmascript::chunk::EcmascriptChunkingContext,
|
||||
};
|
||||
|
||||
#[turbo_tasks::function]
|
||||
pub async fn get_app_shared_client_chunk(
|
||||
app_client_runtime_entries: Vc<EvaluatableAssets>,
|
||||
client_chunking_context: Vc<Box<dyn EcmascriptChunkingContext>>,
|
||||
) -> Result<Vc<EcmascriptChunk>> {
|
||||
let client_runtime_entries: Vec<_> = app_client_runtime_entries
|
||||
.await?
|
||||
.iter()
|
||||
.map(|entry| async move {
|
||||
Ok(Vc::try_resolve_sidecast::<Box<dyn EcmascriptChunkPlaceable>>(*entry).await?)
|
||||
})
|
||||
.try_join()
|
||||
.await?
|
||||
.into_iter()
|
||||
.flatten()
|
||||
.collect();
|
||||
|
||||
Ok(EcmascriptChunk::new_normalized(
|
||||
client_chunking_context,
|
||||
// TODO(alexkirsz) Should this accept Evaluatable instead?
|
||||
Vc::cell(client_runtime_entries),
|
||||
None,
|
||||
Value::new(AvailabilityInfo::Untracked),
|
||||
))
|
||||
}
|
||||
|
||||
#[turbo_tasks::function]
|
||||
pub async fn get_app_client_shared_chunks(
|
||||
ident: Vc<AssetIdent>,
|
||||
app_client_runtime_entries: Vc<EvaluatableAssets>,
|
||||
client_chunking_context: Vc<Box<dyn EcmascriptChunkingContext>>,
|
||||
) -> Result<Vc<OutputAssets>> {
|
||||
|
@ -43,13 +19,8 @@ pub async fn get_app_client_shared_chunks(
|
|||
return Ok(OutputAssets::empty());
|
||||
}
|
||||
|
||||
let app_client_shared_chunk =
|
||||
get_app_shared_client_chunk(app_client_runtime_entries, client_chunking_context);
|
||||
|
||||
let app_client_shared_chunks = client_chunking_context.evaluated_chunk_group(
|
||||
Vc::upcast(app_client_shared_chunk),
|
||||
app_client_runtime_entries,
|
||||
);
|
||||
let app_client_shared_chunks =
|
||||
client_chunking_context.evaluated_chunk_group(ident, app_client_runtime_entries);
|
||||
|
||||
Ok(app_client_shared_chunks)
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ use turbopack_binding::{
|
|||
asset::{Asset, AssetContent},
|
||||
chunk::{
|
||||
availability_info::AvailabilityInfo, Chunk, ChunkData, ChunkItem, ChunkItemExt,
|
||||
ChunkableModule, ChunkableModuleExt, ChunkableModuleReference, ChunkingContext,
|
||||
ChunkableModule, ChunkableModuleReference, ChunkingContext, ChunkingContextExt,
|
||||
ChunkingType, ChunkingTypeOption, ChunksData,
|
||||
},
|
||||
ident::AssetIdent,
|
||||
|
@ -111,9 +111,7 @@ impl WithClientChunksChunkItem {
|
|||
async fn chunks(self: Vc<Self>) -> Result<Vc<OutputAssets>> {
|
||||
let this = self.await?;
|
||||
let inner = this.inner.await?;
|
||||
Ok(this
|
||||
.context
|
||||
.chunk_group(inner.asset.as_root_chunk(Vc::upcast(this.context))))
|
||||
Ok(this.context.root_chunk_group(Vc::upcast(inner.asset)))
|
||||
}
|
||||
|
||||
#[turbo_tasks::function]
|
||||
|
|
|
@ -2,7 +2,7 @@ use anyhow::{bail, Result};
|
|||
use turbo_tasks::Vc;
|
||||
use turbopack_binding::turbopack::core::{
|
||||
asset::{Asset, AssetContent},
|
||||
chunk::{ChunkableModule, ChunkableModuleExt, ChunkingContext},
|
||||
chunk::{ChunkableModule, ChunkingContext, ChunkingContextExt},
|
||||
ident::AssetIdent,
|
||||
module::Module,
|
||||
output::OutputAssets,
|
||||
|
@ -41,8 +41,7 @@ impl NextDynamicEntryModule {
|
|||
bail!("dynamic client asset must be chunkable");
|
||||
};
|
||||
|
||||
let client_entry_chunk = client_entry_module.as_root_chunk(client_chunking_context);
|
||||
Ok(client_chunking_context.chunk_group(client_entry_chunk))
|
||||
Ok(client_chunking_context.root_chunk_group(client_entry_module))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,10 +9,7 @@ use turbopack_binding::{
|
|||
turbopack::{
|
||||
core::{
|
||||
asset::{Asset, AssetContent},
|
||||
chunk::{
|
||||
ChunkData, ChunkableModuleExt, ChunkingContext, ChunksData, EvaluatableAsset,
|
||||
EvaluatableAssets,
|
||||
},
|
||||
chunk::{ChunkData, ChunkingContext, ChunksData, EvaluatableAsset, EvaluatableAssets},
|
||||
context::AssetContext,
|
||||
ident::AssetIdent,
|
||||
module::Module,
|
||||
|
@ -138,10 +135,9 @@ impl PageLoaderAsset {
|
|||
bail!("internal module must be evaluatable");
|
||||
};
|
||||
|
||||
Ok(this.client_chunking_context.evaluated_chunk_group(
|
||||
module.as_root_chunk(this.client_chunking_context),
|
||||
EvaluatableAssets::one(module),
|
||||
))
|
||||
Ok(this
|
||||
.client_chunking_context
|
||||
.evaluated_chunk_group(module.ident(), EvaluatableAssets::one(module)))
|
||||
}
|
||||
|
||||
#[turbo_tasks::function]
|
||||
|
|
|
@ -191,7 +191,7 @@
|
|||
"@types/ws": "8.2.0",
|
||||
"@vercel/ncc": "0.34.0",
|
||||
"@vercel/nft": "0.22.6",
|
||||
"@vercel/turbopack-ecmascript-runtime": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231005.2",
|
||||
"@vercel/turbopack-ecmascript-runtime": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231006.1",
|
||||
"acorn": "8.5.0",
|
||||
"amphtml-validator": "1.0.35",
|
||||
"anser": "1.4.9",
|
||||
|
|
|
@ -1058,8 +1058,8 @@ importers:
|
|||
specifier: 0.22.6
|
||||
version: 0.22.6
|
||||
'@vercel/turbopack-ecmascript-runtime':
|
||||
specifier: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231005.2
|
||||
version: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231005.2(react-refresh@0.12.0)(webpack@5.86.0)'
|
||||
specifier: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231006.1
|
||||
version: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231006.1(react-refresh@0.12.0)(webpack@5.86.0)'
|
||||
acorn:
|
||||
specifier: 8.5.0
|
||||
version: 8.5.0
|
||||
|
@ -9082,7 +9082,7 @@ packages:
|
|||
fast-deep-equal: 3.1.3
|
||||
json-schema-traverse: 1.0.0
|
||||
require-from-string: 2.0.2
|
||||
uri-js: 4.2.2
|
||||
uri-js: 4.4.1
|
||||
dev: true
|
||||
|
||||
/alex@9.1.0:
|
||||
|
@ -25928,12 +25928,6 @@ packages:
|
|||
tslib: 2.6.2
|
||||
dev: true
|
||||
|
||||
/uri-js@4.2.2:
|
||||
resolution: {integrity: sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==}
|
||||
dependencies:
|
||||
punycode: 2.1.1
|
||||
dev: true
|
||||
|
||||
/uri-js@4.4.1:
|
||||
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
|
||||
dependencies:
|
||||
|
@ -26762,9 +26756,9 @@ packages:
|
|||
/zwitch@2.0.4:
|
||||
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
|
||||
|
||||
'@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231005.2(react-refresh@0.12.0)(webpack@5.86.0)':
|
||||
resolution: {tarball: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231005.2}
|
||||
id: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231005.2'
|
||||
'@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231006.1(react-refresh@0.12.0)(webpack@5.86.0)':
|
||||
resolution: {tarball: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231006.1}
|
||||
id: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231006.1'
|
||||
name: '@vercel/turbopack-ecmascript-runtime'
|
||||
version: 0.0.0
|
||||
dependencies:
|
||||
|
|
Loading…
Reference in a new issue