From 3f1b9178ccbe86e27a5b151057f945a17c186dd4 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Tue, 18 Jul 2023 15:32:00 +0200 Subject: [PATCH] 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 * https://github.com/vercel/turbo/pull/5547 * https://github.com/vercel/turbo/pull/5555 --- Cargo.lock | 70 +++++++++---------- Cargo.toml | 6 +- .../next-swc/crates/next-core/js/package.json | 4 +- .../in_chunking_context_asset.rs | 10 +-- .../src/next_client_chunks/with_chunks.rs | 16 ++--- .../with_chunking_context_scope_asset.rs | 10 +-- .../with_client_chunks.rs | 16 ++--- .../css_client_reference_module.rs | 10 +-- .../ecmascript_client_reference_module.rs | 10 +-- ...cmascript_client_reference_proxy_module.rs | 16 ++--- .../visit_client_reference.rs | 46 ++++++------ .../crates/next-core/src/next_config.rs | 4 +- .../src/next_dynamic/dynamic_module.rs | 10 +-- .../src/next_dynamic/visit_dynamic.rs | 39 ++++++----- .../server_component_module.rs | 16 ++--- .../crates/next-core/src/page_loader.rs | 38 +++++----- .../next-swc/crates/next-core/src/router.rs | 4 +- pnpm-lock.yaml | 18 ++--- 18 files changed, 177 insertions(+), 166 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bb8c9959bc1d5..6715331bf4282 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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", diff --git a/Cargo.toml b/Cargo.toml index 4fc9d9e396052..5b5c5615b68e9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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 diff --git a/packages/next-swc/crates/next-core/js/package.json b/packages/next-swc/crates/next-core/js/package.json index d9365216ea1aa..7aae6e9987f44 100644 --- a/packages/next-swc/crates/next-core/js/package.json +++ b/packages/next-swc/crates/next-core/js/package.json @@ -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": "*", diff --git a/packages/next-swc/crates/next-core/src/next_client_chunks/in_chunking_context_asset.rs b/packages/next-swc/crates/next-core/src/next_client_chunks/in_chunking_context_asset.rs index 599961f16385b..a26ac909f08a5 100644 --- a/packages/next-swc/crates/next-core/src/next_client_chunks/in_chunking_context_asset.rs +++ b/packages/next-swc/crates/next-core/src/next_client_chunks/in_chunking_context_asset.rs @@ -31,6 +31,11 @@ impl Module for InChunkingContextAsset { fn ident(&self) -> Vc { self.asset.ident().with_modifier(modifier()) } + + #[turbo_tasks::function] + fn references(&self) -> Vc { + self.asset.references() + } } #[turbo_tasks::value_impl] @@ -39,11 +44,6 @@ impl Asset for InChunkingContextAsset { fn content(&self) -> Vc { self.asset.content() } - - #[turbo_tasks::function] - fn references(&self) -> Vc { - self.asset.references() - } } #[turbo_tasks::value_impl] diff --git a/packages/next-swc/crates/next-core/src/next_client_chunks/with_chunks.rs b/packages/next-swc/crates/next-core/src/next_client_chunks/with_chunks.rs index 9e5e188e17681..aec0e0b70be01 100644 --- a/packages/next-swc/crates/next-core/src/next_client_chunks/with_chunks.rs +++ b/packages/next-swc/crates/next-core/src/next_client_chunks/with_chunks.rs @@ -80,14 +80,6 @@ impl Module for WithChunksAsset { fn ident(&self) -> Vc { self.asset.ident().with_modifier(modifier()) } -} - -#[turbo_tasks::value_impl] -impl Asset for WithChunksAsset { - #[turbo_tasks::function] - fn content(&self) -> Vc { - unimplemented!() - } #[turbo_tasks::function] async fn references(self: Vc) -> Result> { @@ -101,6 +93,14 @@ impl Asset for WithChunksAsset { } } +#[turbo_tasks::value_impl] +impl Asset for WithChunksAsset { + #[turbo_tasks::function] + fn content(&self) -> Vc { + unimplemented!() + } +} + #[turbo_tasks::value_impl] impl ChunkableModule for WithChunksAsset { #[turbo_tasks::function] diff --git a/packages/next-swc/crates/next-core/src/next_client_component/with_chunking_context_scope_asset.rs b/packages/next-swc/crates/next-core/src/next_client_component/with_chunking_context_scope_asset.rs index 16bb4a536c970..b27d1a17c49e4 100644 --- a/packages/next-swc/crates/next-core/src/next_client_component/with_chunking_context_scope_asset.rs +++ b/packages/next-swc/crates/next-core/src/next_client_component/with_chunking_context_scope_asset.rs @@ -31,6 +31,11 @@ impl Module for WithChunkingContextScopeAsset { fn ident(&self) -> Vc { self.asset.ident().with_modifier(modifier()) } + + #[turbo_tasks::function] + fn references(&self) -> Vc { + self.asset.references() + } } #[turbo_tasks::value_impl] @@ -39,11 +44,6 @@ impl Asset for WithChunkingContextScopeAsset { fn content(&self) -> Vc { self.asset.content() } - - #[turbo_tasks::function] - fn references(&self) -> Vc { - self.asset.references() - } } #[turbo_tasks::value_impl] diff --git a/packages/next-swc/crates/next-core/src/next_client_component/with_client_chunks.rs b/packages/next-swc/crates/next-core/src/next_client_component/with_client_chunks.rs index aee1a104327b9..30b3c5350b299 100644 --- a/packages/next-swc/crates/next-core/src/next_client_component/with_client_chunks.rs +++ b/packages/next-swc/crates/next-core/src/next_client_component/with_client_chunks.rs @@ -46,14 +46,6 @@ impl Module for WithClientChunksAsset { fn ident(&self) -> Vc { self.asset.ident().with_modifier(modifier()) } -} - -#[turbo_tasks::value_impl] -impl Asset for WithClientChunksAsset { - #[turbo_tasks::function] - fn content(&self) -> Vc { - unimplemented!() - } #[turbo_tasks::function] fn references(&self) -> Vc { @@ -66,6 +58,14 @@ impl Asset for WithClientChunksAsset { } } +#[turbo_tasks::value_impl] +impl Asset for WithClientChunksAsset { + #[turbo_tasks::function] + fn content(&self) -> Vc { + unimplemented!() + } +} + #[turbo_tasks::value_impl] impl ChunkableModule for WithClientChunksAsset { #[turbo_tasks::function] diff --git a/packages/next-swc/crates/next-core/src/next_client_reference/css_client_reference/css_client_reference_module.rs b/packages/next-swc/crates/next-core/src/next_client_reference/css_client_reference/css_client_reference_module.rs index 28ad8523adc91..35e289d19e7bf 100644 --- a/packages/next-swc/crates/next-core/src/next_client_reference/css_client_reference/css_client_reference_module.rs +++ b/packages/next-swc/crates/next-core/src/next_client_reference/css_client_reference/css_client_reference_module.rs @@ -40,6 +40,11 @@ impl Module for CssClientReferenceModule { .ident() .with_modifier(css_client_reference_modifier()) } + + #[turbo_tasks::function] + fn references(self: Vc) -> Vc { + 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) -> Vc { - AssetReferences::empty() - } } #[turbo_tasks::value_impl] diff --git a/packages/next-swc/crates/next-core/src/next_client_reference/ecmascript_client_reference/ecmascript_client_reference_module.rs b/packages/next-swc/crates/next-core/src/next_client_reference/ecmascript_client_reference/ecmascript_client_reference_module.rs index fe2e9e22e785c..9e383e6e327ac 100644 --- a/packages/next-swc/crates/next-core/src/next_client_reference/ecmascript_client_reference/ecmascript_client_reference_module.rs +++ b/packages/next-swc/crates/next-core/src/next_client_reference/ecmascript_client_reference/ecmascript_client_reference_module.rs @@ -57,6 +57,11 @@ impl Module for EcmascriptClientReferenceModule { self.server_ident .with_modifier(ecmascript_client_reference_modifier()) } + + #[turbo_tasks::function] + fn references(self: Vc) -> Vc { + 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) -> Vc { - AssetReferences::empty() - } } diff --git a/packages/next-swc/crates/next-core/src/next_client_reference/ecmascript_client_reference/ecmascript_client_reference_proxy_module.rs b/packages/next-swc/crates/next-core/src/next_client_reference/ecmascript_client_reference/ecmascript_client_reference_proxy_module.rs index 273174e623797..10b2e23d44081 100644 --- a/packages/next-swc/crates/next-core/src/next_client_reference/ecmascript_client_reference/ecmascript_client_reference_proxy_module.rs +++ b/packages/next-swc/crates/next-core/src/next_client_reference/ecmascript_client_reference/ecmascript_client_reference_proxy_module.rs @@ -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> { - bail!("proxy module asset has no content") - } #[turbo_tasks::function] async fn references(self: Vc) -> Result> { @@ -161,6 +153,14 @@ impl Asset for EcmascriptClientReferenceProxyModule { } } +#[turbo_tasks::value_impl] +impl Asset for EcmascriptClientReferenceProxyModule { + #[turbo_tasks::function] + fn content(&self) -> Result> { + bail!("proxy module asset has no content") + } +} + #[turbo_tasks::value_impl] impl ChunkableModule for EcmascriptClientReferenceProxyModule { #[turbo_tasks::function] diff --git a/packages/next-swc/crates/next-core/src/next_client_reference/visit_client_reference.rs b/packages/next-swc/crates/next-core/src/next_client_reference/visit_client_reference.rs index 49a976eb3882a..1d578be147f33 100644 --- a/packages/next-swc/crates/next-core/src/next_client_reference/visit_client_reference.rs +++ b/packages/next-swc/crates/next-core/src/next_client_reference/visit_client_reference.rs @@ -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) -> Result> { + pub async fn new(entries: Vc) -> Result> { 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::>(), VisitClientReference, @@ -104,7 +104,7 @@ impl ClientReferenceGraph { } #[turbo_tasks::function] - pub async fn entry(self: Vc, entry: Vc>) -> Result> { + pub async fn entry(self: Vc, entry: Vc>) -> Result> { let this = self.await?; let mut entry_client_references = vec![]; @@ -145,7 +145,7 @@ struct VisitClientReferenceNode { )] enum VisitClientReferenceNodeType { ClientReference(ClientReference), - Internal(Vc>), + Internal(Vc>), } impl Visit for VisitClientReference { @@ -167,24 +167,29 @@ impl Visit 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::>()) + Ok(assets + .iter() + .copied() + .map(convert_asset_to_module) + .collect::>()) }) .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::(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::(module) .await? { return Ok(VisitClientReferenceNode { @@ -193,7 +198,7 @@ impl Visit for VisitClientReference { ClientReference { server_component: node.server_component, ty: ClientReferenceType::EcmascriptClientReference( - client_reference_asset, + client_reference_module, ), }, ), @@ -201,7 +206,8 @@ impl Visit for VisitClientReference { } if let Some(css_client_reference_asset) = - Vc::try_resolve_downcast_type::(asset).await? + Vc::try_resolve_downcast_type::(module) + .await? { return Ok(VisitClientReferenceNode { server_component: node.server_component, @@ -217,22 +223,22 @@ impl Visit for VisitClientReference { } if let Some(server_component_asset) = - Vc::try_resolve_downcast_type::(asset) + Vc::try_resolve_downcast_type::(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) } diff --git a/packages/next-swc/crates/next-core/src/next_config.rs b/packages/next-swc/crates/next-core/src/next_config.rs index 42d16cd341184..340ea9210fffe 100644 --- a/packages/next-swc/crates/next-core/src/next_config.rs +++ b/packages/next-swc/crates/next-core/src/next_config.rs @@ -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()), diff --git a/packages/next-swc/crates/next-core/src/next_dynamic/dynamic_module.rs b/packages/next-swc/crates/next-core/src/next_dynamic/dynamic_module.rs index e5463904faece..568c0b9ac6f68 100644 --- a/packages/next-swc/crates/next-core/src/next_dynamic/dynamic_module.rs +++ b/packages/next-swc/crates/next-core/src/next_dynamic/dynamic_module.rs @@ -59,6 +59,11 @@ impl Module for NextDynamicEntryModule { .ident() .with_modifier(dynamic_modifier()) } + + #[turbo_tasks::function] + fn references(self: Vc) -> Vc { + 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) -> Vc { - AssetReferences::empty() - } } diff --git a/packages/next-swc/crates/next-core/src/next_dynamic/visit_dynamic.rs b/packages/next-swc/crates/next-core/src/next_dynamic/visit_dynamic.rs index cd9ab85168c92..ba0c661ec1562 100644 --- a/packages/next-swc/crates/next-core/src/next_dynamic/visit_dynamic.rs +++ b/packages/next-swc/crates/next-core/src/next_dynamic/visit_dynamic.rs @@ -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>); #[turbo_tasks::value_impl] impl NextDynamicEntries { #[turbo_tasks::function] - pub async fn from_entries(entries: Vc) -> Result> { + pub async fn from_entries(entries: Vc) -> Result> { let nodes: Vec<_> = AdjacencyMap::new() .skip_duplicates() .visit( @@ -59,7 +59,7 @@ struct VisitDynamic; #[derive(Clone, Eq, PartialEq, Hash)] enum VisitDynamicNode { Dynamic(Vc), - Internal(Vc>), + Internal(Vc>), } impl Visit for VisitDynamic { @@ -76,38 +76,43 @@ impl Visit 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::>()) + Ok(assets + .iter() + .copied() + .map(convert_asset_to_module) + .collect::>()) }) .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::(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::(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) } } } diff --git a/packages/next-swc/crates/next-core/src/next_server_component/server_component_module.rs b/packages/next-swc/crates/next-core/src/next_server_component/server_component_module.rs index 703b99b27abae..c895efcf26a0b 100644 --- a/packages/next-swc/crates/next-core/src/next_server_component/server_component_module.rs +++ b/packages/next-swc/crates/next-core/src/next_server_component/server_component_module.rs @@ -54,14 +54,6 @@ impl Module for NextServerComponentModule { fn ident(&self) -> Vc { self.module.ident().with_modifier(modifier()) } -} - -#[turbo_tasks::value_impl] -impl Asset for NextServerComponentModule { - #[turbo_tasks::function] - fn content(&self) -> Result> { - bail!("Next.js server component module has no content") - } #[turbo_tasks::function] fn references(&self) -> Vc { @@ -72,6 +64,14 @@ impl Asset for NextServerComponentModule { } } +#[turbo_tasks::value_impl] +impl Asset for NextServerComponentModule { + #[turbo_tasks::function] + fn content(&self) -> Result> { + bail!("Next.js server component module has no content") + } +} + #[turbo_tasks::value_impl] impl ChunkableModule for NextServerComponentModule { #[turbo_tasks::function] diff --git a/packages/next-swc/crates/next-core/src/page_loader.rs b/packages/next-swc/crates/next-core/src/page_loader.rs index 6f0a2a93368e7..9493bb13aefe1 100644 --- a/packages/next-swc/crates/next-core/src/page_loader.rs +++ b/packages/next-swc/crates/next-core/src/page_loader.rs @@ -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) -> Result> { + 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) -> Result> { - 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)) - } } diff --git a/packages/next-swc/crates/next-core/src/router.rs b/packages/next-swc/crates/next-core/src/router.rs index 16ab910f28478..87cb4d91dd7f8 100644 --- a/packages/next-swc/crates/next-core/src/router.rs +++ b/packages/next-swc/crates/next-core/src/router.rs @@ -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(), }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 885fef6905912..ccd1eb09d8ea9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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: