Turbopack: move references() to specific traits (#52822)

### What?

refactoring

see https://github.com/vercel/turbo/pull/5555

### Turbopack Changes

* https://github.com/vercel/turbo/pull/5544 <!-- Tobias Koppers - add
direct cycle detection -->
* https://github.com/vercel/turbo/pull/5547 <!-- Alex Kirszenberg - Add
missing feature to syn -->
* https://github.com/vercel/turbo/pull/5555 <!-- Tobias Koppers - move
references() to specific traits -->
This commit is contained in:
Tobias Koppers 2023-07-18 15:32:00 +02:00 committed by GitHub
parent 6705c80302
commit 3f1b9178cc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 177 additions and 166 deletions

70
Cargo.lock generated
View file

@ -412,7 +412,7 @@ dependencies = [
[[package]]
name = "auto-hash-map"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"serde",
]
@ -3602,7 +3602,7 @@ dependencies = [
[[package]]
name = "node-file-trace"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"serde",
@ -7262,7 +7262,7 @@ dependencies = [
[[package]]
name = "turbo-tasks"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"async-trait",
@ -7294,7 +7294,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-build"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"cargo-lock",
@ -7306,7 +7306,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-bytes"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"bytes",
@ -7321,7 +7321,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-env"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"dotenvs",
@ -7335,7 +7335,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-fetch"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"indexmap",
@ -7352,7 +7352,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-fs"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"auto-hash-map",
@ -7382,7 +7382,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-hash"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"base16",
"hex",
@ -7394,7 +7394,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-macros"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"convert_case 0.6.0",
@ -7408,7 +7408,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-macros-shared"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"proc-macro2",
"quote",
@ -7418,7 +7418,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-malloc"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"mimalloc",
]
@ -7426,7 +7426,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-memory"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"auto-hash-map",
@ -7449,7 +7449,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-testing"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"auto-hash-map",
@ -7462,7 +7462,7 @@ dependencies = [
[[package]]
name = "turbopack"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"async-recursion",
@ -7492,7 +7492,7 @@ dependencies = [
[[package]]
name = "turbopack-bench"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"chromiumoxide",
@ -7522,7 +7522,7 @@ dependencies = [
[[package]]
name = "turbopack-binding"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"auto-hash-map",
"mdxjs",
@ -7564,7 +7564,7 @@ dependencies = [
[[package]]
name = "turbopack-build"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"indexmap",
@ -7584,7 +7584,7 @@ dependencies = [
[[package]]
name = "turbopack-cli-utils"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"clap 4.1.11",
@ -7608,7 +7608,7 @@ dependencies = [
[[package]]
name = "turbopack-core"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"async-trait",
@ -7636,7 +7636,7 @@ dependencies = [
[[package]]
name = "turbopack-create-test-app"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"clap 4.1.11",
@ -7649,7 +7649,7 @@ dependencies = [
[[package]]
name = "turbopack-css"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"async-trait",
@ -7671,7 +7671,7 @@ dependencies = [
[[package]]
name = "turbopack-dev"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"indexmap",
@ -7695,7 +7695,7 @@ dependencies = [
[[package]]
name = "turbopack-dev-server"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"async-compression",
@ -7731,7 +7731,7 @@ dependencies = [
[[package]]
name = "turbopack-ecmascript"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"async-trait",
@ -7764,7 +7764,7 @@ dependencies = [
[[package]]
name = "turbopack-ecmascript-plugins"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"async-trait",
@ -7787,7 +7787,7 @@ dependencies = [
[[package]]
name = "turbopack-ecmascript-runtime"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"indoc",
@ -7804,7 +7804,7 @@ dependencies = [
[[package]]
name = "turbopack-env"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"indexmap",
@ -7820,7 +7820,7 @@ dependencies = [
[[package]]
name = "turbopack-image"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"base64 0.21.0",
@ -7840,7 +7840,7 @@ dependencies = [
[[package]]
name = "turbopack-json"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"serde",
@ -7855,7 +7855,7 @@ dependencies = [
[[package]]
name = "turbopack-mdx"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"mdxjs",
@ -7870,7 +7870,7 @@ dependencies = [
[[package]]
name = "turbopack-node"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"async-stream",
@ -7905,7 +7905,7 @@ dependencies = [
[[package]]
name = "turbopack-static"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"serde",
@ -7921,7 +7921,7 @@ dependencies = [
[[package]]
name = "turbopack-swc-utils"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"swc_core",
"turbo-tasks",
@ -7932,7 +7932,7 @@ dependencies = [
[[package]]
name = "turbopack-test-utils"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230717.3#02f55d947ac2b33d1c8789f6a682e1bdd30c5976"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230718.2#46bb9b755ec1661d3dea5986572576f7db9280c8"
dependencies = [
"anyhow",
"once_cell",

View file

@ -44,11 +44,11 @@ swc_core = { version = "0.79.13" }
testing = { version = "0.33.20" }
# Turbo crates
turbopack-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230717.3" }
turbopack-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230718.2" }
# [TODO]: need to refactor embed_directory! macro usages, as well as resolving turbo_tasks::function, macros..
turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230717.3" }
turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230718.2" }
# [TODO]: need to refactor embed_directory! macro usage in next-core
turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230717.3" }
turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230718.2" }
# General Deps

View file

@ -10,8 +10,8 @@
"check": "tsc --noEmit"
},
"dependencies": {
"@vercel/turbopack-ecmascript-runtime": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230717.3",
"@vercel/turbopack-node": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?turbopack-230717.3",
"@vercel/turbopack-ecmascript-runtime": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230718.2",
"@vercel/turbopack-node": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?turbopack-230718.2",
"anser": "^2.1.1",
"css.escape": "^1.5.1",
"next": "*",

View file

@ -31,6 +31,11 @@ impl Module for InChunkingContextAsset {
fn ident(&self) -> Vc<AssetIdent> {
self.asset.ident().with_modifier(modifier())
}
#[turbo_tasks::function]
fn references(&self) -> Vc<AssetReferences> {
self.asset.references()
}
}
#[turbo_tasks::value_impl]
@ -39,11 +44,6 @@ impl Asset for InChunkingContextAsset {
fn content(&self) -> Vc<AssetContent> {
self.asset.content()
}
#[turbo_tasks::function]
fn references(&self) -> Vc<AssetReferences> {
self.asset.references()
}
}
#[turbo_tasks::value_impl]

View file

@ -80,14 +80,6 @@ impl Module for WithChunksAsset {
fn ident(&self) -> Vc<AssetIdent> {
self.asset.ident().with_modifier(modifier())
}
}
#[turbo_tasks::value_impl]
impl Asset for WithChunksAsset {
#[turbo_tasks::function]
fn content(&self) -> Vc<AssetContent> {
unimplemented!()
}
#[turbo_tasks::function]
async fn references(self: Vc<Self>) -> Result<Vc<AssetReferences>> {
@ -101,6 +93,14 @@ impl Asset for WithChunksAsset {
}
}
#[turbo_tasks::value_impl]
impl Asset for WithChunksAsset {
#[turbo_tasks::function]
fn content(&self) -> Vc<AssetContent> {
unimplemented!()
}
}
#[turbo_tasks::value_impl]
impl ChunkableModule for WithChunksAsset {
#[turbo_tasks::function]

View file

@ -31,6 +31,11 @@ impl Module for WithChunkingContextScopeAsset {
fn ident(&self) -> Vc<AssetIdent> {
self.asset.ident().with_modifier(modifier())
}
#[turbo_tasks::function]
fn references(&self) -> Vc<AssetReferences> {
self.asset.references()
}
}
#[turbo_tasks::value_impl]
@ -39,11 +44,6 @@ impl Asset for WithChunkingContextScopeAsset {
fn content(&self) -> Vc<AssetContent> {
self.asset.content()
}
#[turbo_tasks::function]
fn references(&self) -> Vc<AssetReferences> {
self.asset.references()
}
}
#[turbo_tasks::value_impl]

View file

@ -46,14 +46,6 @@ impl Module for WithClientChunksAsset {
fn ident(&self) -> Vc<AssetIdent> {
self.asset.ident().with_modifier(modifier())
}
}
#[turbo_tasks::value_impl]
impl Asset for WithClientChunksAsset {
#[turbo_tasks::function]
fn content(&self) -> Vc<AssetContent> {
unimplemented!()
}
#[turbo_tasks::function]
fn references(&self) -> Vc<AssetReferences> {
@ -66,6 +58,14 @@ impl Asset for WithClientChunksAsset {
}
}
#[turbo_tasks::value_impl]
impl Asset for WithClientChunksAsset {
#[turbo_tasks::function]
fn content(&self) -> Vc<AssetContent> {
unimplemented!()
}
}
#[turbo_tasks::value_impl]
impl ChunkableModule for WithClientChunksAsset {
#[turbo_tasks::function]

View file

@ -40,6 +40,11 @@ impl Module for CssClientReferenceModule {
.ident()
.with_modifier(css_client_reference_modifier())
}
#[turbo_tasks::function]
fn references(self: Vc<Self>) -> Vc<AssetReferences> {
AssetReferences::empty()
}
}
#[turbo_tasks::value_impl]
@ -49,11 +54,6 @@ impl Asset for CssClientReferenceModule {
// The client reference asset only serves as a marker asset.
bail!("CssClientReferenceModule has no content")
}
#[turbo_tasks::function]
fn references(self: Vc<Self>) -> Vc<AssetReferences> {
AssetReferences::empty()
}
}
#[turbo_tasks::value_impl]

View file

@ -57,6 +57,11 @@ impl Module for EcmascriptClientReferenceModule {
self.server_ident
.with_modifier(ecmascript_client_reference_modifier())
}
#[turbo_tasks::function]
fn references(self: Vc<Self>) -> Vc<AssetReferences> {
AssetReferences::empty()
}
}
#[turbo_tasks::value_impl]
@ -66,9 +71,4 @@ impl Asset for EcmascriptClientReferenceModule {
// The ES client reference asset only serves as a marker asset.
bail!("EcmascriptClientReferenceModule has no content")
}
#[turbo_tasks::function]
fn references(self: Vc<Self>) -> Vc<AssetReferences> {
AssetReferences::empty()
}
}

View file

@ -123,14 +123,6 @@ impl Module for EcmascriptClientReferenceProxyModule {
self.server_module_ident
.with_modifier(client_proxy_modifier())
}
}
#[turbo_tasks::value_impl]
impl Asset for EcmascriptClientReferenceProxyModule {
#[turbo_tasks::function]
fn content(&self) -> Result<Vc<AssetContent>> {
bail!("proxy module asset has no content")
}
#[turbo_tasks::function]
async fn references(self: Vc<Self>) -> Result<Vc<AssetReferences>> {
@ -161,6 +153,14 @@ impl Asset for EcmascriptClientReferenceProxyModule {
}
}
#[turbo_tasks::value_impl]
impl Asset for EcmascriptClientReferenceProxyModule {
#[turbo_tasks::function]
fn content(&self) -> Result<Vc<AssetContent>> {
bail!("proxy module asset has no content")
}
}
#[turbo_tasks::value_impl]
impl ChunkableModule for EcmascriptClientReferenceProxyModule {
#[turbo_tasks::function]

View file

@ -10,7 +10,7 @@ use turbo_tasks::{
TryJoinIterExt, Vc,
};
use turbopack_binding::turbopack::core::{
asset::{Asset, Assets},
module::{convert_asset_to_module, Module, Modules},
reference::AssetReference,
};
@ -60,7 +60,7 @@ pub struct ClientReferenceGraph {
#[turbo_tasks::value_impl]
impl ClientReferenceGraph {
#[turbo_tasks::function]
pub async fn new(entries: Vc<Assets>) -> Result<Vc<Self>> {
pub async fn new(entries: Vc<Modules>) -> Result<Vc<Self>> {
let entries = entries.await?;
let graph = AdjacencyMap::new()
@ -69,9 +69,9 @@ impl ClientReferenceGraph {
entries
.iter()
.copied()
.map(|asset| VisitClientReferenceNode {
.map(|module| VisitClientReferenceNode {
server_component: None,
ty: VisitClientReferenceNodeType::Internal(asset),
ty: VisitClientReferenceNodeType::Internal(module),
})
.collect::<Vec<_>>(),
VisitClientReference,
@ -104,7 +104,7 @@ impl ClientReferenceGraph {
}
#[turbo_tasks::function]
pub async fn entry(self: Vc<Self>, entry: Vc<Box<dyn Asset>>) -> Result<Vc<ClientReferences>> {
pub async fn entry(self: Vc<Self>, entry: Vc<Box<dyn Module>>) -> Result<Vc<ClientReferences>> {
let this = self.await?;
let mut entry_client_references = vec![];
@ -145,7 +145,7 @@ struct VisitClientReferenceNode {
)]
enum VisitClientReferenceNodeType {
ClientReference(ClientReference),
Internal(Vc<Box<dyn Asset>>),
Internal(Vc<Box<dyn Module>>),
}
impl Visit<VisitClientReferenceNode> for VisitClientReference {
@ -167,24 +167,29 @@ impl Visit<VisitClientReferenceNode> for VisitClientReference {
// This should never occur since we always skip visiting these
// nodes' edges.
VisitClientReferenceNodeType::ClientReference(_) => Ok(vec![]),
VisitClientReferenceNodeType::Internal(asset) => {
let references = asset.references().await?;
VisitClientReferenceNodeType::Internal(module) => {
let references = module.references().await?;
let referenced_assets = references
let referenced_modules = references
.iter()
.copied()
.map(|reference| async move {
let resolve_result = reference.resolve_reference();
let assets = resolve_result.primary_assets().await?;
Ok(assets.iter().copied().collect::<Vec<_>>())
Ok(assets
.iter()
.copied()
.map(convert_asset_to_module)
.collect::<Vec<_>>())
})
.try_join()
.await?;
let referenced_assets = referenced_assets.into_iter().flatten();
let referenced_modules = referenced_modules.into_iter().flatten();
let referenced_assets = referenced_assets.map(|asset| async move {
if let Some(client_reference_asset) =
Vc::try_resolve_downcast_type::<EcmascriptClientReferenceModule>(asset)
let referenced_modules = referenced_modules.map(|module| async move {
let module = module.resolve().await?;
if let Some(client_reference_module) =
Vc::try_resolve_downcast_type::<EcmascriptClientReferenceModule>(module)
.await?
{
return Ok(VisitClientReferenceNode {
@ -193,7 +198,7 @@ impl Visit<VisitClientReferenceNode> for VisitClientReference {
ClientReference {
server_component: node.server_component,
ty: ClientReferenceType::EcmascriptClientReference(
client_reference_asset,
client_reference_module,
),
},
),
@ -201,7 +206,8 @@ impl Visit<VisitClientReferenceNode> for VisitClientReference {
}
if let Some(css_client_reference_asset) =
Vc::try_resolve_downcast_type::<CssClientReferenceModule>(asset).await?
Vc::try_resolve_downcast_type::<CssClientReferenceModule>(module)
.await?
{
return Ok(VisitClientReferenceNode {
server_component: node.server_component,
@ -217,22 +223,22 @@ impl Visit<VisitClientReferenceNode> for VisitClientReference {
}
if let Some(server_component_asset) =
Vc::try_resolve_downcast_type::<NextServerComponentModule>(asset)
Vc::try_resolve_downcast_type::<NextServerComponentModule>(module)
.await?
{
return Ok(VisitClientReferenceNode {
server_component: Some(server_component_asset),
ty: VisitClientReferenceNodeType::Internal(asset),
ty: VisitClientReferenceNodeType::Internal(module),
});
}
Ok(VisitClientReferenceNode {
server_component: node.server_component,
ty: VisitClientReferenceNodeType::Internal(asset),
ty: VisitClientReferenceNodeType::Internal(module),
})
});
let assets = referenced_assets.try_join().await?;
let assets = referenced_modules.try_join().await?;
Ok(assets)
}

View file

@ -8,7 +8,7 @@ use turbopack_binding::{
turbo::{tasks_env::EnvMap, tasks_fs::FileSystemPath},
turbopack::{
core::{
changed::any_content_changed,
changed::any_content_changed_of_module,
chunk::ChunkingContext,
context::AssetContext,
file_source::FileSource,
@ -722,7 +722,7 @@ async fn load_next_config_and_custom_routes_internal(
Vc::upcast(config_asset),
Value::new(ReferenceType::Internal(InnerAssets::empty())),
);
any_content_changed(Vc::upcast(config_asset))
any_content_changed_of_module(config_asset)
});
let load_next_config_asset = context.process(
next_asset("entry/config/next.js".to_string()),

View file

@ -59,6 +59,11 @@ impl Module for NextDynamicEntryModule {
.ident()
.with_modifier(dynamic_modifier())
}
#[turbo_tasks::function]
fn references(self: Vc<Self>) -> Vc<AssetReferences> {
AssetReferences::empty()
}
}
#[turbo_tasks::value_impl]
@ -68,9 +73,4 @@ impl Asset for NextDynamicEntryModule {
// The client reference asset only serves as a marker asset.
bail!("NextDynamicEntryModule has no content")
}
#[turbo_tasks::function]
fn references(self: Vc<Self>) -> Vc<AssetReferences> {
AssetReferences::empty()
}
}

View file

@ -6,7 +6,7 @@ use turbo_tasks::{
TryJoinIterExt, Vc,
};
use turbopack_binding::turbopack::core::{
asset::{Asset, Assets},
module::{convert_asset_to_module, Module, Modules},
reference::AssetReference,
};
@ -18,7 +18,7 @@ pub struct NextDynamicEntries(Vec<Vc<NextDynamicEntryModule>>);
#[turbo_tasks::value_impl]
impl NextDynamicEntries {
#[turbo_tasks::function]
pub async fn from_entries(entries: Vc<Assets>) -> Result<Vc<NextDynamicEntries>> {
pub async fn from_entries(entries: Vc<Modules>) -> Result<Vc<NextDynamicEntries>> {
let nodes: Vec<_> = AdjacencyMap::new()
.skip_duplicates()
.visit(
@ -59,7 +59,7 @@ struct VisitDynamic;
#[derive(Clone, Eq, PartialEq, Hash)]
enum VisitDynamicNode {
Dynamic(Vc<NextDynamicEntryModule>),
Internal(Vc<Box<dyn Asset>>),
Internal(Vc<Box<dyn Module>>),
}
impl Visit<VisitDynamicNode> for VisitDynamic {
@ -76,38 +76,43 @@ impl Visit<VisitDynamicNode> for VisitDynamic {
fn edges(&mut self, node: &VisitDynamicNode) -> Self::EdgesFuture {
let node = node.clone();
async move {
let asset = match node {
VisitDynamicNode::Dynamic(dynamic_asset) => Vc::upcast(dynamic_asset),
VisitDynamicNode::Internal(asset) => asset,
let module = match node {
VisitDynamicNode::Dynamic(dynamic_module) => Vc::upcast(dynamic_module),
VisitDynamicNode::Internal(module) => module,
};
let references = asset.references().await?;
let references = module.references().await?;
let referenced_assets = references
let referenced_modules = references
.iter()
.copied()
.map(|reference| async move {
let resolve_result = reference.resolve_reference();
let assets = resolve_result.primary_assets().await?;
Ok(assets.iter().copied().collect::<Vec<_>>())
Ok(assets
.iter()
.copied()
.map(convert_asset_to_module)
.collect::<Vec<_>>())
})
.try_join()
.await?;
let referenced_assets = referenced_assets.into_iter().flatten();
let referenced_modules = referenced_modules.into_iter().flatten();
let referenced_assets = referenced_assets.map(|asset| async move {
if let Some(next_dynamic_asset) =
Vc::try_resolve_downcast_type::<NextDynamicEntryModule>(asset).await?
let referenced_modules = referenced_modules.map(|module| async move {
let module = module.resolve().await?;
if let Some(next_dynamic_module) =
Vc::try_resolve_downcast_type::<NextDynamicEntryModule>(module).await?
{
return Ok(VisitDynamicNode::Dynamic(next_dynamic_asset));
return Ok(VisitDynamicNode::Dynamic(next_dynamic_module));
}
Ok(VisitDynamicNode::Internal(asset))
Ok(VisitDynamicNode::Internal(module))
});
let assets = referenced_assets.try_join().await?;
let nodes = referenced_modules.try_join().await?;
Ok(assets)
Ok(nodes)
}
}
}

View file

@ -54,14 +54,6 @@ impl Module for NextServerComponentModule {
fn ident(&self) -> Vc<AssetIdent> {
self.module.ident().with_modifier(modifier())
}
}
#[turbo_tasks::value_impl]
impl Asset for NextServerComponentModule {
#[turbo_tasks::function]
fn content(&self) -> Result<Vc<AssetContent>> {
bail!("Next.js server component module has no content")
}
#[turbo_tasks::function]
fn references(&self) -> Vc<AssetReferences> {
@ -72,6 +64,14 @@ impl Asset for NextServerComponentModule {
}
}
#[turbo_tasks::value_impl]
impl Asset for NextServerComponentModule {
#[turbo_tasks::function]
fn content(&self) -> Result<Vc<AssetContent>> {
bail!("Next.js server component module has no content")
}
}
#[turbo_tasks::value_impl]
impl ChunkableModule for NextServerComponentModule {
#[turbo_tasks::function]

View file

@ -144,6 +144,25 @@ impl OutputAsset for PageLoaderAsset {
get_asset_path_from_pathname(&self.pathname.await?, ".js")
))))
}
#[turbo_tasks::function]
async fn references(self: Vc<Self>) -> Result<Vc<AssetReferences>> {
let chunks = self.get_page_chunks().await?;
let mut references = Vec::with_capacity(chunks.len());
for &chunk in chunks.iter() {
references.push(Vc::upcast(SingleAssetReference::new(
Vc::upcast(chunk),
page_loader_chunk_reference_description(),
)));
}
for chunk_data in &*self.chunks_data().await? {
references.extend(chunk_data.references().await?.iter().copied());
}
Ok(Vc::cell(references))
}
}
#[turbo_tasks::value_impl]
@ -167,23 +186,4 @@ impl Asset for PageLoaderAsset {
Ok(AssetContent::file(File::from(content).into()))
}
#[turbo_tasks::function]
async fn references(self: Vc<Self>) -> Result<Vc<AssetReferences>> {
let chunks = self.get_page_chunks().await?;
let mut references = Vec::with_capacity(chunks.len());
for &chunk in chunks.iter() {
references.push(Vc::upcast(SingleAssetReference::new(
Vc::upcast(chunk),
page_loader_chunk_reference_description(),
)));
}
for chunk_data in &*self.chunks_data().await? {
references.extend(chunk_data.references().await?.iter().copied());
}
Ok(Vc::cell(references))
}
}

View file

@ -13,7 +13,7 @@ use turbopack_binding::{
turbopack::{
core::{
asset::AssetContent,
changed::any_content_changed,
changed::any_content_changed_of_module,
chunk::ChunkingContext,
context::AssetContext,
environment::{ServerAddr, ServerInfo},
@ -144,7 +144,7 @@ async fn next_config_changed(
Vc::upcast(FileSource::new(config_path)),
Value::new(ReferenceType::Internal(InnerAssets::empty())),
);
any_content_changed(Vc::upcast(module))
any_content_changed_of_module(module)
}
FindContextFileResult::NotFound(_) => Completion::immutable(),
})

View file

@ -992,8 +992,8 @@ importers:
'@types/react': 18.2.7
'@types/react-dom': 18.2.4
'@vercel/ncc': ^0.36.0
'@vercel/turbopack-ecmascript-runtime': https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230717.3
'@vercel/turbopack-node': https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?turbopack-230717.3
'@vercel/turbopack-ecmascript-runtime': https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230718.2
'@vercel/turbopack-node': https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?turbopack-230718.2
anser: ^2.1.1
css.escape: ^1.5.1
find-up: ^6.3.0
@ -1005,8 +1005,8 @@ importers:
stacktrace-parser: ^0.1.10
strip-ansi: ^7.0.1
dependencies:
'@vercel/turbopack-ecmascript-runtime': '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230717.3_react-refresh@0.12.0'
'@vercel/turbopack-node': '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?turbopack-230717.3'
'@vercel/turbopack-ecmascript-runtime': '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230718.2_react-refresh@0.12.0'
'@vercel/turbopack-node': '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?turbopack-230718.2'
anser: 2.1.1
css.escape: 1.5.1
next: link:../../../../next
@ -25498,9 +25498,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-230717.3_react-refresh@0.12.0':
resolution: {tarball: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230717.3}
id: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230717.3'
'@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230718.2_react-refresh@0.12.0':
resolution: {tarball: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230718.2}
id: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230718.2'
name: '@vercel/turbopack-ecmascript-runtime'
version: 0.0.0
dependencies:
@ -25511,8 +25511,8 @@ packages:
- webpack
dev: false
'@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?turbopack-230717.3':
resolution: {tarball: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?turbopack-230717.3}
'@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?turbopack-230718.2':
resolution: {tarball: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-node/js?turbopack-230718.2}
name: '@vercel/turbopack-node'
version: 0.0.0
dependencies: