side effects optimization (#58972)
### What? Code update for refactoring in https://github.com/vercel/turbo/pull/6590 Closes PACK-2043
This commit is contained in:
parent
06cf74a66a
commit
0082d54893
32 changed files with 426 additions and 298 deletions
69
Cargo.lock
generated
69
Cargo.lock
generated
|
@ -322,7 +322,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "auto-hash-map"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"smallvec",
|
||||
|
@ -3549,7 +3549,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "node-file-trace"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"serde",
|
||||
|
@ -7678,7 +7678,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
|
@ -7710,7 +7710,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-build"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"cargo-lock",
|
||||
|
@ -7722,7 +7722,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-bytes"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"bytes",
|
||||
|
@ -7737,7 +7737,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-env"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"dotenvs",
|
||||
|
@ -7751,7 +7751,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-fetch"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"indexmap 1.9.3",
|
||||
|
@ -7768,7 +7768,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-fs"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"auto-hash-map",
|
||||
|
@ -7799,7 +7799,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-hash"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"base16",
|
||||
"hex",
|
||||
|
@ -7811,7 +7811,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-macros"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"convert_case 0.6.0",
|
||||
|
@ -7825,7 +7825,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-macros-shared"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -7835,7 +7835,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-malloc"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"mimalloc",
|
||||
]
|
||||
|
@ -7843,7 +7843,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbo-tasks-memory"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"auto-hash-map",
|
||||
|
@ -7868,7 +7868,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-recursion",
|
||||
|
@ -7900,7 +7900,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-binding"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"auto-hash-map",
|
||||
"mdxjs",
|
||||
|
@ -7941,7 +7941,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-build"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"indexmap 1.9.3",
|
||||
|
@ -7965,7 +7965,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-cli-utils"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"clap 4.4.2",
|
||||
|
@ -7983,7 +7983,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-core"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-recursion",
|
||||
|
@ -8013,7 +8013,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-css"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
|
@ -8027,6 +8027,7 @@ dependencies = [
|
|||
"serde",
|
||||
"smallvec",
|
||||
"swc_core",
|
||||
"tracing",
|
||||
"turbo-tasks",
|
||||
"turbo-tasks-build",
|
||||
"turbo-tasks-fs",
|
||||
|
@ -8039,7 +8040,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-dev"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"indexmap 1.9.3",
|
||||
|
@ -8063,7 +8064,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-dev-server"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-compression",
|
||||
|
@ -8100,7 +8101,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-ecmascript"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
|
@ -8134,7 +8135,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-ecmascript-hmr-protocol"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"serde_json",
|
||||
|
@ -8145,7 +8146,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-ecmascript-plugins"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
|
@ -8168,7 +8169,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-ecmascript-runtime"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"indoc",
|
||||
|
@ -8185,7 +8186,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-env"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"indexmap 1.9.3",
|
||||
|
@ -8201,7 +8202,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-image"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"base64 0.21.4",
|
||||
|
@ -8221,7 +8222,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-json"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"serde",
|
||||
|
@ -8236,7 +8237,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-mdx"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"mdxjs",
|
||||
|
@ -8251,7 +8252,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-node"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-stream",
|
||||
|
@ -8286,7 +8287,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-static"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"serde",
|
||||
|
@ -8302,7 +8303,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-swc-utils"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"swc_core",
|
||||
"turbo-tasks",
|
||||
|
@ -8313,7 +8314,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-trace-utils"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"crossbeam-channel",
|
||||
|
@ -8328,7 +8329,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "turbopack-wasm"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231205.2#8cb1c34181948ea6e85584d05eb9f69e86e11859"
|
||||
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231206.2#16bbf81a2a45b85737e569312b1ee76eec6c388c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"indexmap 1.9.3",
|
||||
|
|
|
@ -43,11 +43,11 @@ swc_core = { version = "0.86.81", features = [
|
|||
testing = { version = "0.35.11" }
|
||||
|
||||
# Turbo crates
|
||||
turbopack-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231205.2" }
|
||||
turbopack-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231206.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-231205.2" }
|
||||
turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231206.2" }
|
||||
# [TODO]: need to refactor embed_directory! macro usage in next-core
|
||||
turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231205.2" }
|
||||
turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231206.2" }
|
||||
|
||||
# General Deps
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use anyhow::{bail, Context, Result};
|
||||
use anyhow::{Context, Result};
|
||||
use indexmap::IndexSet;
|
||||
use next_core::{
|
||||
all_assets_from_entries,
|
||||
|
@ -822,9 +822,9 @@ impl AppEndpoint {
|
|||
.edge_rsc_runtime_entries()
|
||||
.await?
|
||||
.clone_value();
|
||||
let Some(evaluatable) = Vc::try_resolve_sidecast(app_entry.rsc_entry).await? else {
|
||||
bail!("Entry module must be evaluatable");
|
||||
};
|
||||
let evaluatable = Vc::try_resolve_sidecast(app_entry.rsc_entry)
|
||||
.await?
|
||||
.context("Entry module must be evaluatable")?;
|
||||
evaluatable_assets.push(evaluatable);
|
||||
|
||||
let (loader, manifest) = create_server_actions_manifest(
|
||||
|
|
|
@ -17,6 +17,8 @@ use turbopack_binding::{
|
|||
context::AssetContext,
|
||||
module::Module,
|
||||
output::{OutputAsset, OutputAssets},
|
||||
reference_type::{EntryReferenceSubType, ReferenceType},
|
||||
source::Source,
|
||||
virtual_output::VirtualOutputAsset,
|
||||
},
|
||||
ecmascript::chunk::EcmascriptChunkPlaceable,
|
||||
|
@ -34,7 +36,7 @@ use crate::{
|
|||
pub struct InstrumentationEndpoint {
|
||||
project: Vc<Project>,
|
||||
context: Vc<Box<dyn AssetContext>>,
|
||||
userland_module: Vc<Box<dyn Module>>,
|
||||
source: Vc<Box<dyn Source>>,
|
||||
is_edge: bool,
|
||||
}
|
||||
|
||||
|
@ -44,13 +46,13 @@ impl InstrumentationEndpoint {
|
|||
pub fn new(
|
||||
project: Vc<Project>,
|
||||
context: Vc<Box<dyn AssetContext>>,
|
||||
userland_module: Vc<Box<dyn Module>>,
|
||||
source: Vc<Box<dyn Source>>,
|
||||
is_edge: bool,
|
||||
) -> Vc<Self> {
|
||||
Self {
|
||||
project,
|
||||
context,
|
||||
userland_module,
|
||||
source,
|
||||
is_edge,
|
||||
}
|
||||
.cell()
|
||||
|
@ -58,10 +60,18 @@ impl InstrumentationEndpoint {
|
|||
|
||||
#[turbo_tasks::function]
|
||||
async fn edge_files(&self) -> Result<Vc<OutputAssets>> {
|
||||
let userland_module = self
|
||||
.context
|
||||
.process(
|
||||
self.source,
|
||||
Value::new(ReferenceType::Entry(EntryReferenceSubType::Instrumentation)),
|
||||
)
|
||||
.module();
|
||||
|
||||
let module = wrap_edge_entry(
|
||||
self.context,
|
||||
self.project.project_path(),
|
||||
self.userland_module,
|
||||
userland_module,
|
||||
"instrumentation".to_string(),
|
||||
);
|
||||
|
||||
|
@ -102,7 +112,15 @@ impl InstrumentationEndpoint {
|
|||
self.project.server_compile_time_info().environment(),
|
||||
);
|
||||
|
||||
let Some(module) = Vc::try_resolve_downcast(self.userland_module).await? else {
|
||||
let userland_module = self
|
||||
.context
|
||||
.process(
|
||||
self.source,
|
||||
Value::new(ReferenceType::Entry(EntryReferenceSubType::Instrumentation)),
|
||||
)
|
||||
.module();
|
||||
|
||||
let Some(module) = Vc::try_resolve_downcast(userland_module).await? else {
|
||||
bail!("Entry module must be evaluatable");
|
||||
};
|
||||
|
||||
|
|
|
@ -21,6 +21,8 @@ use turbopack_binding::{
|
|||
context::AssetContext,
|
||||
module::Module,
|
||||
output::{OutputAsset, OutputAssets},
|
||||
reference_type::{EntryReferenceSubType, ReferenceType},
|
||||
source::Source,
|
||||
virtual_output::VirtualOutputAsset,
|
||||
},
|
||||
ecmascript::chunk::EcmascriptChunkPlaceable,
|
||||
|
@ -37,7 +39,7 @@ use crate::{
|
|||
pub struct MiddlewareEndpoint {
|
||||
project: Vc<Project>,
|
||||
context: Vc<Box<dyn AssetContext>>,
|
||||
userland_module: Vc<Box<dyn Module>>,
|
||||
source: Vc<Box<dyn Source>>,
|
||||
}
|
||||
|
||||
#[turbo_tasks::value_impl]
|
||||
|
@ -46,23 +48,28 @@ impl MiddlewareEndpoint {
|
|||
pub fn new(
|
||||
project: Vc<Project>,
|
||||
context: Vc<Box<dyn AssetContext>>,
|
||||
userland_module: Vc<Box<dyn Module>>,
|
||||
source: Vc<Box<dyn Source>>,
|
||||
) -> Vc<Self> {
|
||||
Self {
|
||||
project,
|
||||
context,
|
||||
userland_module,
|
||||
source,
|
||||
}
|
||||
.cell()
|
||||
}
|
||||
|
||||
#[turbo_tasks::function]
|
||||
async fn edge_files(&self) -> Result<Vc<OutputAssets>> {
|
||||
let module = get_middleware_module(
|
||||
self.context,
|
||||
self.project.project_path(),
|
||||
self.userland_module,
|
||||
);
|
||||
let userland_module = self
|
||||
.context
|
||||
.process(
|
||||
self.source,
|
||||
Value::new(ReferenceType::Entry(EntryReferenceSubType::Middleware)),
|
||||
)
|
||||
.module();
|
||||
|
||||
let module =
|
||||
get_middleware_module(self.context, self.project.project_path(), userland_module);
|
||||
|
||||
let module = wrap_edge_entry(
|
||||
self.context,
|
||||
|
@ -85,9 +92,9 @@ impl MiddlewareEndpoint {
|
|||
bail!("Entry module must be evaluatable");
|
||||
};
|
||||
|
||||
let Some(evaluatable) = Vc::try_resolve_sidecast(module).await? else {
|
||||
bail!("Entry module must be evaluatable");
|
||||
};
|
||||
let evaluatable = Vc::try_resolve_sidecast(module)
|
||||
.await?
|
||||
.context("Entry module must be evaluatable")?;
|
||||
evaluatable_assets.push(evaluatable);
|
||||
|
||||
let edge_chunking_context = self.project.edge_chunking_context();
|
||||
|
@ -102,7 +109,15 @@ impl MiddlewareEndpoint {
|
|||
async fn output_assets(self: Vc<Self>) -> Result<Vc<OutputAssets>> {
|
||||
let this = self.await?;
|
||||
|
||||
let config = parse_config_from_source(this.userland_module);
|
||||
let userland_module = this
|
||||
.context
|
||||
.process(
|
||||
this.source,
|
||||
Value::new(ReferenceType::Entry(EntryReferenceSubType::Middleware)),
|
||||
)
|
||||
.module();
|
||||
|
||||
let config = parse_config_from_source(userland_module);
|
||||
|
||||
let edge_files = self.edge_files();
|
||||
let mut output_assets = edge_files.await?.clone_value();
|
||||
|
|
|
@ -645,7 +645,9 @@ impl PageEndpoint {
|
|||
async move {
|
||||
let this = self.await?;
|
||||
|
||||
let ssr_module = module_context.process(self.source(), reference_type.clone());
|
||||
let ssr_module = module_context
|
||||
.process(self.source(), reference_type.clone())
|
||||
.module();
|
||||
|
||||
let config = parse_config_from_source(ssr_module).await?;
|
||||
let is_edge = matches!(config.runtime, NextRuntime::Edge);
|
||||
|
@ -663,9 +665,9 @@ impl PageEndpoint {
|
|||
);
|
||||
|
||||
let mut evaluatable_assets = edge_runtime_entries.await?.clone_value();
|
||||
let Some(evaluatable) = Vc::try_resolve_sidecast(ssr_module).await? else {
|
||||
bail!("Entry module must be evaluatable");
|
||||
};
|
||||
let evaluatable = Vc::try_resolve_sidecast(ssr_module)
|
||||
.await?
|
||||
.context("could not process page loader entry module")?;
|
||||
evaluatable_assets.push(evaluatable);
|
||||
|
||||
let edge_files = edge_chunking_context.evaluated_chunk_group(
|
||||
|
|
|
@ -42,7 +42,6 @@ use turbopack_binding::{
|
|||
environment::ServerAddr,
|
||||
file_source::FileSource,
|
||||
output::{OutputAsset, OutputAssets},
|
||||
reference_type::{EntryReferenceSubType, ReferenceType},
|
||||
resolve::{find_context_file, FindContextFileResult},
|
||||
source::Source,
|
||||
version::{Update, Version, VersionState, VersionedContent},
|
||||
|
@ -729,15 +728,13 @@ impl Project {
|
|||
}
|
||||
|
||||
#[turbo_tasks::function]
|
||||
fn middleware_endpoint(self: Vc<Self>, source: Vc<Box<dyn Source>>) -> Vc<MiddlewareEndpoint> {
|
||||
async fn middleware_endpoint(
|
||||
self: Vc<Self>,
|
||||
source: Vc<Box<dyn Source>>,
|
||||
) -> Result<Vc<MiddlewareEndpoint>> {
|
||||
let context = self.middleware_context();
|
||||
|
||||
let module = context.process(
|
||||
source,
|
||||
Value::new(ReferenceType::Entry(EntryReferenceSubType::Middleware)),
|
||||
);
|
||||
|
||||
MiddlewareEndpoint::new(self, context, module)
|
||||
Ok(MiddlewareEndpoint::new(self, context, source))
|
||||
}
|
||||
|
||||
#[turbo_tasks::function]
|
||||
|
@ -775,12 +772,7 @@ impl Project {
|
|||
self.node_instrumentation_context()
|
||||
};
|
||||
|
||||
let module = context.process(
|
||||
source,
|
||||
Value::new(ReferenceType::Entry(EntryReferenceSubType::Undefined)),
|
||||
);
|
||||
|
||||
InstrumentationEndpoint::new(self, context, module, is_edge)
|
||||
InstrumentationEndpoint::new(self, context, source, is_edge)
|
||||
}
|
||||
|
||||
#[turbo_tasks::function]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use std::{io::Write, iter::once};
|
||||
|
||||
use anyhow::{bail, Result};
|
||||
use anyhow::{bail, Context, Result};
|
||||
use indexmap::{map::Entry, IndexMap};
|
||||
use next_core::{
|
||||
next_manifests::{ActionLayer, ActionManifestWorkerEntry, ServerReferenceManifest},
|
||||
|
@ -57,10 +57,9 @@ pub(crate) async fn create_server_actions_manifest(
|
|||
let actions = get_actions(rsc_entry, server_reference_modules, asset_context);
|
||||
let loader =
|
||||
build_server_actions_loader(project_path, page_name, actions, asset_context).await?;
|
||||
let Some(evaluable) = Vc::try_resolve_sidecast::<Box<dyn EvaluatableAsset>>(loader).await?
|
||||
else {
|
||||
bail!("loader module must be evaluatable");
|
||||
};
|
||||
let evaluable = Vc::try_resolve_sidecast::<Box<dyn EvaluatableAsset>>(loader)
|
||||
.await?
|
||||
.context("loader module must be evaluatable")?;
|
||||
|
||||
let loader_id = loader
|
||||
.as_chunk_item(Vc::upcast(chunking_context))
|
||||
|
@ -108,10 +107,12 @@ async fn build_server_actions_loader(
|
|||
let file = File::from(contents.build());
|
||||
let source = VirtualSource::new(output_path, AssetContent::file(file.into()));
|
||||
let import_map = import_map.into_iter().map(|(k, v)| (v, k)).collect();
|
||||
let module = asset_context.process(
|
||||
Vc::upcast(source),
|
||||
Value::new(ReferenceType::Internal(Vc::cell(import_map))),
|
||||
);
|
||||
let module = asset_context
|
||||
.process(
|
||||
Vc::upcast(source),
|
||||
Value::new(ReferenceType::Internal(Vc::cell(import_map))),
|
||||
)
|
||||
.module();
|
||||
|
||||
let Some(placeable) =
|
||||
Vc::try_resolve_sidecast::<Box<dyn EcmascriptChunkPlaceable>>(module).await?
|
||||
|
@ -249,7 +250,10 @@ async fn to_rsc_context(
|
|||
} else {
|
||||
ReferenceType::TypeScript(TypeScriptReferenceSubType::Undefined)
|
||||
};
|
||||
Ok(asset_context.process(Vc::upcast(source), Value::new(ty)))
|
||||
let module = asset_context
|
||||
.process(Vc::upcast(source), Value::new(ty))
|
||||
.module();
|
||||
Ok(module)
|
||||
}
|
||||
|
||||
/// Our graph traversal visitor, which finds the primary modules directly
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use anyhow::{bail, Result};
|
||||
use anyhow::{bail, Context, Result};
|
||||
use indexmap::IndexMap;
|
||||
use turbo_tasks::{Value, ValueToString, Vc};
|
||||
use turbo_tasks_fs::{File, FileSystemPath};
|
||||
|
@ -77,35 +77,39 @@ pub async fn bootstrap(
|
|||
config.insert("PAGE".to_string(), path.to_string());
|
||||
config.insert("PATHNAME".to_string(), pathname);
|
||||
|
||||
let config_asset = context.process(
|
||||
Vc::upcast(VirtualSource::new(
|
||||
asset.ident().path().join("bootstrap-config.ts".to_string()),
|
||||
AssetContent::file(
|
||||
File::from(
|
||||
config
|
||||
.iter()
|
||||
.map(|(k, v)| format!("export const {} = {};\n", k, StringifyJs(v)))
|
||||
.collect::<Vec<_>>()
|
||||
.join(""),
|
||||
)
|
||||
.into(),
|
||||
),
|
||||
)),
|
||||
Value::new(ReferenceType::Internal(InnerAssets::empty())),
|
||||
);
|
||||
let config_asset = context
|
||||
.process(
|
||||
Vc::upcast(VirtualSource::new(
|
||||
asset.ident().path().join("bootstrap-config.ts".to_string()),
|
||||
AssetContent::file(
|
||||
File::from(
|
||||
config
|
||||
.iter()
|
||||
.map(|(k, v)| format!("export const {} = {};\n", k, StringifyJs(v)))
|
||||
.collect::<Vec<_>>()
|
||||
.join(""),
|
||||
)
|
||||
.into(),
|
||||
),
|
||||
)),
|
||||
Value::new(ReferenceType::Internal(InnerAssets::empty())),
|
||||
)
|
||||
.module();
|
||||
|
||||
let mut inner_assets = inner_assets.await?.clone_value();
|
||||
inner_assets.insert("ENTRY".to_string(), asset);
|
||||
inner_assets.insert("BOOTSTRAP_CONFIG".to_string(), config_asset);
|
||||
|
||||
let asset = context.process(
|
||||
bootstrap_asset,
|
||||
Value::new(ReferenceType::Internal(Vc::cell(inner_assets))),
|
||||
);
|
||||
let asset = context
|
||||
.process(
|
||||
bootstrap_asset,
|
||||
Value::new(ReferenceType::Internal(Vc::cell(inner_assets))),
|
||||
)
|
||||
.module();
|
||||
|
||||
let Some(asset) = Vc::try_resolve_sidecast::<Box<dyn EvaluatableAsset>>(asset).await? else {
|
||||
bail!("internal module must be evaluatable");
|
||||
};
|
||||
let asset = Vc::try_resolve_sidecast::<Box<dyn EvaluatableAsset>>(asset)
|
||||
.await?
|
||||
.context("internal module must be evaluatable")?;
|
||||
|
||||
Ok(asset)
|
||||
}
|
||||
|
|
|
@ -146,9 +146,10 @@ impl LoaderTreeBuilder {
|
|||
EcmaScriptModulesReferenceSubType::Undefined,
|
||||
));
|
||||
|
||||
let module =
|
||||
self.server_component_transition
|
||||
.process(source, self.context, reference_ty);
|
||||
let module = self
|
||||
.server_component_transition
|
||||
.process(source, self.context, reference_ty)
|
||||
.module();
|
||||
|
||||
self.inner_assets.insert(format!("COMPONENT_{i}"), module);
|
||||
}
|
||||
|
@ -268,15 +269,16 @@ impl LoaderTreeBuilder {
|
|||
app_page.clone(),
|
||||
);
|
||||
|
||||
self.inner_assets.insert(
|
||||
inner_module_id,
|
||||
self.context.process(
|
||||
let module = self
|
||||
.context
|
||||
.process(
|
||||
source,
|
||||
Value::new(ReferenceType::EcmaScriptModules(
|
||||
EcmaScriptModulesReferenceSubType::Undefined,
|
||||
)),
|
||||
),
|
||||
);
|
||||
)
|
||||
.module();
|
||||
self.inner_assets.insert(inner_module_id, module);
|
||||
|
||||
let s = " ";
|
||||
writeln!(self.loader_tree_code, "{s}{identifier},")?;
|
||||
|
@ -346,15 +348,16 @@ impl LoaderTreeBuilder {
|
|||
let inner_module_id = format!("METADATA_ALT_{i}");
|
||||
self.imports
|
||||
.push(format!("import {identifier} from \"{inner_module_id}\";"));
|
||||
self.inner_assets.insert(
|
||||
inner_module_id,
|
||||
self.context.process(
|
||||
let module = self
|
||||
.context
|
||||
.process(
|
||||
Vc::upcast(TextContentFileSource::new(Vc::upcast(FileSource::new(
|
||||
alt_path,
|
||||
)))),
|
||||
Value::new(ReferenceType::Internal(InnerAssets::empty())),
|
||||
),
|
||||
);
|
||||
)
|
||||
.module();
|
||||
self.inner_assets.insert(inner_module_id, module);
|
||||
|
||||
writeln!(self.loader_tree_code, "{s} alt: {identifier},")?;
|
||||
}
|
||||
|
|
|
@ -47,10 +47,12 @@ pub async fn get_middleware_module(
|
|||
INNER.to_string() => userland_module
|
||||
};
|
||||
|
||||
let module = context.process(
|
||||
source,
|
||||
Value::new(ReferenceType::Internal(Vc::cell(inner_assets))),
|
||||
);
|
||||
let module = context
|
||||
.process(
|
||||
source,
|
||||
Value::new(ReferenceType::Internal(Vc::cell(inner_assets))),
|
||||
)
|
||||
.module();
|
||||
|
||||
Ok(module)
|
||||
}
|
||||
|
|
|
@ -106,10 +106,12 @@ pub async fn get_app_page_entry(
|
|||
let file = File::from(result.build());
|
||||
let source = VirtualSource::new(source.ident().path(), AssetContent::file(file.into()));
|
||||
|
||||
let mut rsc_entry = context.process(
|
||||
Vc::upcast(source),
|
||||
Value::new(ReferenceType::Internal(Vc::cell(inner_assets))),
|
||||
);
|
||||
let mut rsc_entry = context
|
||||
.process(
|
||||
Vc::upcast(source),
|
||||
Value::new(ReferenceType::Internal(Vc::cell(inner_assets))),
|
||||
)
|
||||
.module();
|
||||
|
||||
if is_edge {
|
||||
rsc_entry = wrap_edge_page(
|
||||
|
@ -190,10 +192,12 @@ async fn wrap_edge_page(
|
|||
INNER.to_string() => entry
|
||||
};
|
||||
|
||||
let wrapped = context.process(
|
||||
Vc::upcast(source),
|
||||
Value::new(ReferenceType::Internal(Vc::cell(inner_assets))),
|
||||
);
|
||||
let wrapped = context
|
||||
.process(
|
||||
Vc::upcast(source),
|
||||
Value::new(ReferenceType::Internal(Vc::cell(inner_assets))),
|
||||
)
|
||||
.module();
|
||||
|
||||
Ok(wrap_edge_entry(
|
||||
context,
|
||||
|
|
|
@ -67,19 +67,23 @@ pub async fn get_app_route_entry(
|
|||
)
|
||||
.await?;
|
||||
|
||||
let userland_module = context.process(
|
||||
source,
|
||||
Value::new(ReferenceType::Entry(EntryReferenceSubType::AppRoute)),
|
||||
);
|
||||
let userland_module = context
|
||||
.process(
|
||||
source,
|
||||
Value::new(ReferenceType::Entry(EntryReferenceSubType::AppRoute)),
|
||||
)
|
||||
.module();
|
||||
|
||||
let inner_assets = indexmap! {
|
||||
INNER.to_string() => userland_module
|
||||
};
|
||||
|
||||
let mut rsc_entry = context.process(
|
||||
Vc::upcast(virtual_source),
|
||||
Value::new(ReferenceType::Internal(Vc::cell(inner_assets))),
|
||||
);
|
||||
let mut rsc_entry = context
|
||||
.process(
|
||||
Vc::upcast(virtual_source),
|
||||
Value::new(ReferenceType::Internal(Vc::cell(inner_assets))),
|
||||
)
|
||||
.module();
|
||||
|
||||
if is_edge {
|
||||
rsc_entry = wrap_edge_route(
|
||||
|
@ -129,10 +133,12 @@ async fn wrap_edge_route(
|
|||
INNER.to_string() => entry
|
||||
};
|
||||
|
||||
let wrapped = context.process(
|
||||
Vc::upcast(source),
|
||||
Value::new(ReferenceType::Internal(Vc::cell(inner_assets))),
|
||||
);
|
||||
let wrapped = context
|
||||
.process(
|
||||
Vc::upcast(source),
|
||||
Value::new(ReferenceType::Internal(Vc::cell(inner_assets))),
|
||||
)
|
||||
.module();
|
||||
|
||||
Ok(wrap_edge_entry(context, project_root, wrapped, pathname))
|
||||
}
|
||||
|
|
|
@ -63,13 +63,15 @@ pub async fn dynamic_image_metadata_source(
|
|||
};
|
||||
|
||||
let source = Vc::upcast(FileSource::new(path));
|
||||
let exports = &*collect_direct_exports(asset_context.process(
|
||||
source,
|
||||
turbo_tasks::Value::new(ReferenceType::EcmaScriptModules(
|
||||
EcmaScriptModulesReferenceSubType::Undefined,
|
||||
)),
|
||||
))
|
||||
.await?;
|
||||
let module = asset_context
|
||||
.process(
|
||||
source,
|
||||
turbo_tasks::Value::new(ReferenceType::EcmaScriptModules(
|
||||
EcmaScriptModulesReferenceSubType::Undefined,
|
||||
)),
|
||||
)
|
||||
.module();
|
||||
let exports = &*collect_direct_exports(module).await?;
|
||||
let exported_fields_excluding_default = exports
|
||||
.iter()
|
||||
.filter(|e| *e != "default")
|
||||
|
|
|
@ -17,7 +17,7 @@ use turbopack_binding::{
|
|||
resolve::{parse::Request, pattern::Pattern},
|
||||
},
|
||||
dev::{react_refresh::assert_can_resolve_react_refresh, DevChunkingContext},
|
||||
ecmascript::chunk::EcmascriptChunkingContext,
|
||||
ecmascript::{chunk::EcmascriptChunkingContext, TreeShakingMode},
|
||||
node::execution_context::ExecutionContext,
|
||||
turbopack::{
|
||||
condition::ContextCondition,
|
||||
|
@ -267,6 +267,7 @@ pub async fn get_client_module_options_context(
|
|||
preset_env_versions: Some(env),
|
||||
execution_context: Some(execution_context),
|
||||
custom_ecma_transform_plugins,
|
||||
tree_shaking_mode: Some(TreeShakingMode::ReexportsOnly),
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use anyhow::{bail, Result};
|
||||
use anyhow::{bail, Context, Result};
|
||||
use turbo_tasks::Vc;
|
||||
use turbopack_binding::turbopack::{
|
||||
core::{
|
||||
|
@ -72,10 +72,9 @@ impl ParseCss for CssClientReferenceModule {
|
|||
impl ProcessCss for CssClientReferenceModule {
|
||||
#[turbo_tasks::function]
|
||||
async fn get_css_with_placeholder(&self) -> Result<Vc<CssWithPlaceholderResult>> {
|
||||
let Some(imp) = Vc::try_resolve_sidecast::<Box<dyn ProcessCss>>(self.client_module).await?
|
||||
else {
|
||||
bail!("CSS client reference client module must be CSS processable");
|
||||
};
|
||||
let imp = Vc::try_resolve_sidecast::<Box<dyn ProcessCss>>(self.client_module)
|
||||
.await?
|
||||
.context("CSS client reference client module must be CSS processable")?;
|
||||
|
||||
Ok(imp.get_css_with_placeholder())
|
||||
}
|
||||
|
@ -85,10 +84,9 @@ impl ProcessCss for CssClientReferenceModule {
|
|||
&self,
|
||||
chunking_context: Vc<Box<dyn ChunkingContext>>,
|
||||
) -> Result<Vc<FinalCssResult>> {
|
||||
let Some(imp) = Vc::try_resolve_sidecast::<Box<dyn ProcessCss>>(self.client_module).await?
|
||||
else {
|
||||
bail!("CSS client reference client module must be CSS processable");
|
||||
};
|
||||
let imp = Vc::try_resolve_sidecast::<Box<dyn ProcessCss>>(self.client_module)
|
||||
.await?
|
||||
.context("CSS client reference client module must be CSS processable")?;
|
||||
|
||||
Ok(imp.finalize_css(chunking_context))
|
||||
}
|
||||
|
|
|
@ -39,11 +39,14 @@ impl CustomModuleType for CssClientReferenceModuleType {
|
|||
context: Vc<ModuleAssetContext>,
|
||||
_part: Option<Vc<ModulePart>>,
|
||||
) -> Result<Vc<Box<dyn Module>>> {
|
||||
let client_module = self.client_transition.process(
|
||||
source,
|
||||
context,
|
||||
Value::new(ReferenceType::Css(CssReferenceSubType::Internal)),
|
||||
);
|
||||
let client_module = self
|
||||
.client_transition
|
||||
.process(
|
||||
source,
|
||||
context,
|
||||
Value::new(ReferenceType::Css(CssReferenceSubType::Internal)),
|
||||
)
|
||||
.module();
|
||||
|
||||
let Some(client_module) =
|
||||
Vc::try_resolve_sidecast::<Box<dyn CssChunkPlaceable>>(client_module).await?
|
||||
|
|
|
@ -99,10 +99,13 @@ impl EcmascriptClientReferenceProxyModule {
|
|||
proxy_module_content,
|
||||
);
|
||||
|
||||
let proxy_module = this.server_asset_context.process(
|
||||
Vc::upcast(proxy_source),
|
||||
Value::new(ReferenceType::Undefined),
|
||||
);
|
||||
let proxy_module = this
|
||||
.server_asset_context
|
||||
.process(
|
||||
Vc::upcast(proxy_source),
|
||||
Value::new(ReferenceType::Undefined),
|
||||
)
|
||||
.module();
|
||||
|
||||
let Some(proxy_module) =
|
||||
Vc::try_resolve_downcast_type::<EcmascriptModuleAsset>(proxy_module).await?
|
||||
|
|
|
@ -2,8 +2,8 @@ use anyhow::{bail, Result};
|
|||
use turbo_tasks::{Value, Vc};
|
||||
use turbopack_binding::turbopack::{
|
||||
core::{
|
||||
context::ProcessResult,
|
||||
file_source::FileSource,
|
||||
module::Module,
|
||||
reference_type::{EntryReferenceSubType, ReferenceType},
|
||||
source::Source,
|
||||
},
|
||||
|
@ -50,7 +50,7 @@ impl Transition for NextEcmascriptClientReferenceTransition {
|
|||
source: Vc<Box<dyn Source>>,
|
||||
context: Vc<ModuleAssetContext>,
|
||||
_reference_type: Value<ReferenceType>,
|
||||
) -> Result<Vc<Box<dyn Module>>> {
|
||||
) -> Result<Vc<ProcessResult>> {
|
||||
let context = self.process_context(context);
|
||||
|
||||
let this = self.await?;
|
||||
|
@ -66,21 +66,27 @@ impl Transition for NextEcmascriptClientReferenceTransition {
|
|||
} else {
|
||||
source
|
||||
};
|
||||
let client_module = this.client_transition.process(
|
||||
client_source,
|
||||
context,
|
||||
Value::new(ReferenceType::Entry(
|
||||
EntryReferenceSubType::AppClientComponent,
|
||||
)),
|
||||
);
|
||||
let client_module = this
|
||||
.client_transition
|
||||
.process(
|
||||
client_source,
|
||||
context,
|
||||
Value::new(ReferenceType::Entry(
|
||||
EntryReferenceSubType::AppClientComponent,
|
||||
)),
|
||||
)
|
||||
.module();
|
||||
|
||||
let ssr_module = this.ssr_transition.process(
|
||||
source,
|
||||
context,
|
||||
Value::new(ReferenceType::Entry(
|
||||
EntryReferenceSubType::AppClientComponent,
|
||||
)),
|
||||
);
|
||||
let ssr_module = this
|
||||
.ssr_transition
|
||||
.process(
|
||||
source,
|
||||
context,
|
||||
Value::new(ReferenceType::Entry(
|
||||
EntryReferenceSubType::AppClientComponent,
|
||||
)),
|
||||
)
|
||||
.module();
|
||||
|
||||
let Some(client_module) =
|
||||
Vc::try_resolve_sidecast::<Box<dyn EcmascriptChunkPlaceable>>(client_module).await?
|
||||
|
@ -105,11 +111,14 @@ impl Transition for NextEcmascriptClientReferenceTransition {
|
|||
context.layer,
|
||||
);
|
||||
|
||||
Ok(Vc::upcast(EcmascriptClientReferenceProxyModule::new(
|
||||
source.ident(),
|
||||
Vc::upcast(server_context),
|
||||
client_module,
|
||||
ssr_module,
|
||||
)))
|
||||
Ok(
|
||||
ProcessResult::Module(Vc::upcast(EcmascriptClientReferenceProxyModule::new(
|
||||
source.ident(),
|
||||
Vc::upcast(server_context),
|
||||
client_module,
|
||||
ssr_module,
|
||||
)))
|
||||
.cell(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ use turbopack_binding::{
|
|||
turbopack::{
|
||||
core::{
|
||||
changed::any_content_changed_of_module,
|
||||
context::AssetContext,
|
||||
context::{AssetContext, ProcessResult},
|
||||
file_source::FileSource,
|
||||
ident::AssetIdent,
|
||||
issue::{
|
||||
|
@ -849,19 +849,28 @@ async fn load_next_config_and_custom_routes_internal(
|
|||
);
|
||||
let config_asset = config_file.map(FileSource::new);
|
||||
|
||||
let config_changed = config_asset.map_or_else(Completion::immutable, |config_asset| {
|
||||
let config_changed = if let Some(config_asset) = config_asset {
|
||||
// This invalidates the execution when anything referenced by the config file
|
||||
// changes
|
||||
let config_asset = context.process(
|
||||
Vc::upcast(config_asset),
|
||||
Value::new(ReferenceType::Internal(InnerAssets::empty())),
|
||||
);
|
||||
any_content_changed_of_module(config_asset)
|
||||
});
|
||||
let load_next_config_asset = context.process(
|
||||
next_asset("entry/config/next.js".to_string()),
|
||||
Value::new(ReferenceType::Entry(EntryReferenceSubType::Undefined)),
|
||||
);
|
||||
match *context
|
||||
.process(
|
||||
Vc::upcast(config_asset),
|
||||
Value::new(ReferenceType::Internal(InnerAssets::empty())),
|
||||
)
|
||||
.await?
|
||||
{
|
||||
ProcessResult::Module(module) => any_content_changed_of_module(module),
|
||||
ProcessResult::Ignore => Completion::immutable(),
|
||||
}
|
||||
} else {
|
||||
Completion::immutable()
|
||||
};
|
||||
let load_next_config_asset = context
|
||||
.process(
|
||||
next_asset("entry/config/next.js".to_string()),
|
||||
Value::new(ReferenceType::Entry(EntryReferenceSubType::Undefined)),
|
||||
)
|
||||
.module();
|
||||
let config_value = evaluate(
|
||||
load_next_config_asset,
|
||||
project_path,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use anyhow::Result;
|
||||
use turbo_tasks::{Value, Vc};
|
||||
use turbopack_binding::turbopack::{
|
||||
core::{module::Module, reference_type::ReferenceType, source::Source},
|
||||
core::{context::ProcessResult, reference_type::ReferenceType, source::Source},
|
||||
turbopack::{
|
||||
transition::{ContextTransition, Transition},
|
||||
ModuleAssetContext,
|
||||
|
@ -39,15 +39,21 @@ impl Transition for NextDynamicTransition {
|
|||
source: Vc<Box<dyn Source>>,
|
||||
context: Vc<ModuleAssetContext>,
|
||||
_reference_type: Value<ReferenceType>,
|
||||
) -> Result<Vc<Box<dyn Module>>> {
|
||||
) -> Result<Vc<ProcessResult>> {
|
||||
let context = self.process_context(context);
|
||||
|
||||
let this = self.await?;
|
||||
|
||||
let client_module =
|
||||
this.client_transition
|
||||
.process(source, context, Value::new(ReferenceType::Undefined));
|
||||
|
||||
Ok(Vc::upcast(NextDynamicEntryModule::new(client_module)))
|
||||
Ok(match *this
|
||||
.client_transition
|
||||
.process(source, context, Value::new(ReferenceType::Undefined))
|
||||
.await?
|
||||
{
|
||||
ProcessResult::Module(client_module) => {
|
||||
ProcessResult::Module(Vc::upcast(NextDynamicEntryModule::new(client_module)))
|
||||
}
|
||||
ProcessResult::Ignore => ProcessResult::Ignore,
|
||||
}
|
||||
.cell())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,8 +39,11 @@ pub async fn wrap_edge_entry(
|
|||
"MODULE".to_string() => entry
|
||||
};
|
||||
|
||||
Ok(context.process(
|
||||
Vc::upcast(virtual_source),
|
||||
Value::new(ReferenceType::Internal(Vc::cell(inner_assets))),
|
||||
))
|
||||
let module = context
|
||||
.process(
|
||||
Vc::upcast(virtual_source),
|
||||
Value::new(ReferenceType::Internal(Vc::cell(inner_assets))),
|
||||
)
|
||||
.module();
|
||||
Ok(module)
|
||||
}
|
||||
|
|
|
@ -446,22 +446,25 @@ async fn get_mock_stylesheet(
|
|||
let context =
|
||||
node_evaluate_asset_context(execution_context, None, None, "next_font".to_string());
|
||||
let loader_path = mock_fs.root().join("loader.js".to_string());
|
||||
let mocked_response_asset = context.process(
|
||||
Vc::upcast(VirtualSource::new(
|
||||
loader_path,
|
||||
AssetContent::file(
|
||||
File::from(format!(
|
||||
"import data from './{}'; export default function load() {{ return data; }};",
|
||||
response_path
|
||||
.file_name()
|
||||
.context("Must exist")?
|
||||
.to_string_lossy(),
|
||||
))
|
||||
.into(),
|
||||
),
|
||||
)),
|
||||
Value::new(ReferenceType::Internal(InnerAssets::empty())),
|
||||
);
|
||||
let mocked_response_asset = context
|
||||
.process(
|
||||
Vc::upcast(VirtualSource::new(
|
||||
loader_path,
|
||||
AssetContent::file(
|
||||
File::from(format!(
|
||||
"import data from './{}'; export default function load() {{ return data; \
|
||||
}};",
|
||||
response_path
|
||||
.file_name()
|
||||
.context("Must exist")?
|
||||
.to_string_lossy(),
|
||||
))
|
||||
.into(),
|
||||
),
|
||||
)),
|
||||
Value::new(ReferenceType::Internal(InnerAssets::empty())),
|
||||
)
|
||||
.module();
|
||||
|
||||
let root = mock_fs.root();
|
||||
let val = evaluate(
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
use anyhow::Result;
|
||||
use indexmap::indexmap;
|
||||
use turbo_tasks::Vc;
|
||||
use turbo_tasks::{TaskInput, Vc};
|
||||
use turbopack_binding::{
|
||||
turbo::tasks::Value,
|
||||
turbopack::{
|
||||
|
@ -15,7 +16,7 @@ use turbopack_binding::{
|
|||
use super::source_asset::StructuredImageFileSource;
|
||||
|
||||
#[turbo_tasks::value(serialization = "auto_for_input")]
|
||||
#[derive(Clone, Copy, Debug, PartialOrd, Ord, Hash)]
|
||||
#[derive(Clone, Copy, Debug, PartialOrd, Ord, Hash, TaskInput)]
|
||||
pub enum BlurPlaceholderMode {
|
||||
/// Do not generate a blur placeholder at all.
|
||||
None,
|
||||
|
@ -37,30 +38,32 @@ pub struct StructuredImageModuleType {
|
|||
pub blur_placeholder_mode: BlurPlaceholderMode,
|
||||
}
|
||||
|
||||
#[turbo_tasks::value_impl]
|
||||
impl StructuredImageModuleType {
|
||||
pub(crate) fn create_module(
|
||||
#[turbo_tasks::function]
|
||||
pub(crate) async fn create_module(
|
||||
source: Vc<Box<dyn Source>>,
|
||||
blur_placeholder_mode: BlurPlaceholderMode,
|
||||
context: Vc<ModuleAssetContext>,
|
||||
) -> Vc<Box<dyn Module>> {
|
||||
) -> Result<Vc<Box<dyn Module>>> {
|
||||
let static_asset = StaticModuleAsset::new(source, Vc::upcast(context));
|
||||
context.process(
|
||||
Vc::upcast(
|
||||
StructuredImageFileSource {
|
||||
image: source,
|
||||
blur_placeholder_mode,
|
||||
}
|
||||
.cell(),
|
||||
),
|
||||
Value::new(ReferenceType::Internal(Vc::cell(indexmap!(
|
||||
"IMAGE".to_string() => Vc::upcast(static_asset)
|
||||
)))),
|
||||
)
|
||||
let module = context
|
||||
.process(
|
||||
Vc::upcast(
|
||||
StructuredImageFileSource {
|
||||
image: source,
|
||||
blur_placeholder_mode,
|
||||
}
|
||||
.cell(),
|
||||
),
|
||||
Value::new(ReferenceType::Internal(Vc::cell(indexmap!(
|
||||
"IMAGE".to_string() => Vc::upcast(static_asset)
|
||||
)))),
|
||||
)
|
||||
.module();
|
||||
Ok(module)
|
||||
}
|
||||
}
|
||||
|
||||
#[turbo_tasks::value_impl]
|
||||
impl StructuredImageModuleType {
|
||||
#[turbo_tasks::function]
|
||||
pub fn new(blur_placeholder_mode: Value<BlurPlaceholderMode>) -> Vc<Self> {
|
||||
StructuredImageModuleType::cell(StructuredImageModuleType {
|
||||
|
|
|
@ -43,7 +43,9 @@ pub async fn create_page_ssr_entry_module(
|
|||
let definition_page = &*next_original_name.await?;
|
||||
let definition_pathname = &*pathname.await?;
|
||||
|
||||
let ssr_module = ssr_module_context.process(source, reference_type.clone());
|
||||
let ssr_module = ssr_module_context
|
||||
.process(source, reference_type.clone())
|
||||
.module();
|
||||
|
||||
let reference_type = reference_type.into_value();
|
||||
|
||||
|
@ -116,12 +118,14 @@ pub async fn create_page_ssr_entry_module(
|
|||
));
|
||||
}
|
||||
|
||||
let mut ssr_module = ssr_module_context.process(
|
||||
source,
|
||||
Value::new(ReferenceType::Internal(Vc::cell(indexmap! {
|
||||
INNER.to_string() => ssr_module,
|
||||
}))),
|
||||
);
|
||||
let mut ssr_module = ssr_module_context
|
||||
.process(
|
||||
source,
|
||||
Value::new(ReferenceType::Internal(Vc::cell(indexmap! {
|
||||
INNER.to_string() => ssr_module,
|
||||
}))),
|
||||
)
|
||||
.module();
|
||||
|
||||
if matches!(runtime, NextRuntime::Edge) {
|
||||
if reference_type == ReferenceType::Entry(EntryReferenceSubType::Page) {
|
||||
|
@ -209,10 +213,12 @@ async fn wrap_edge_page(
|
|||
INNER.to_string() => entry
|
||||
};
|
||||
|
||||
let wrapped = context.process(
|
||||
Vc::upcast(source),
|
||||
Value::new(ReferenceType::Internal(Vc::cell(inner_assets))),
|
||||
);
|
||||
let wrapped = context
|
||||
.process(
|
||||
Vc::upcast(source),
|
||||
Value::new(ReferenceType::Internal(Vc::cell(inner_assets))),
|
||||
)
|
||||
.module();
|
||||
|
||||
Ok(wrap_edge_entry(
|
||||
context,
|
||||
|
|
|
@ -17,7 +17,7 @@ use turbopack_binding::{
|
|||
free_var_references,
|
||||
resolve::{parse::Request, pattern::Pattern},
|
||||
},
|
||||
ecmascript::{references::esm::UrlRewriteBehavior, TransformPlugin},
|
||||
ecmascript::{references::esm::UrlRewriteBehavior, TransformPlugin, TreeShakingMode},
|
||||
ecmascript_plugin::transform::directives::client::ClientDirectiveTransformer,
|
||||
node::execution_context::ExecutionContext,
|
||||
turbopack::{
|
||||
|
@ -389,6 +389,7 @@ pub async fn get_server_module_options_context(
|
|||
execution_context: Some(execution_context),
|
||||
esm_url_rewrite_behavior: url_rewrite_behavior,
|
||||
use_lightningcss,
|
||||
tree_shaking_mode: Some(TreeShakingMode::ReexportsOnly),
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
|
@ -458,6 +459,7 @@ pub async fn get_server_module_options_context(
|
|||
custom_ecma_transform_plugins: base_ecma_transform_plugins,
|
||||
execution_context: Some(execution_context),
|
||||
use_lightningcss,
|
||||
tree_shaking_mode: Some(TreeShakingMode::ReexportsOnly),
|
||||
..Default::default()
|
||||
};
|
||||
let foreign_code_module_options_context = ModuleOptionsContext {
|
||||
|
@ -543,6 +545,7 @@ pub async fn get_server_module_options_context(
|
|||
custom_ecma_transform_plugins: base_ecma_transform_plugins,
|
||||
execution_context: Some(execution_context),
|
||||
use_lightningcss,
|
||||
tree_shaking_mode: Some(TreeShakingMode::ReexportsOnly),
|
||||
..Default::default()
|
||||
};
|
||||
let foreign_code_module_options_context = ModuleOptionsContext {
|
||||
|
@ -582,6 +585,7 @@ pub async fn get_server_module_options_context(
|
|||
ServerContextType::AppRoute { .. } => {
|
||||
let module_options_context = ModuleOptionsContext {
|
||||
execution_context: Some(execution_context),
|
||||
tree_shaking_mode: Some(TreeShakingMode::ReexportsOnly),
|
||||
..Default::default()
|
||||
};
|
||||
let internal_module_options_context = ModuleOptionsContext {
|
||||
|
@ -630,6 +634,7 @@ pub async fn get_server_module_options_context(
|
|||
|
||||
let module_options_context = ModuleOptionsContext {
|
||||
execution_context: Some(execution_context),
|
||||
tree_shaking_mode: Some(TreeShakingMode::ReexportsOnly),
|
||||
..Default::default()
|
||||
};
|
||||
let internal_module_options_context = ModuleOptionsContext {
|
||||
|
@ -669,6 +674,7 @@ pub async fn get_server_module_options_context(
|
|||
pub fn get_build_module_options_context() -> Vc<ModuleOptionsContext> {
|
||||
ModuleOptionsContext {
|
||||
enable_typescript_transform: Some(Default::default()),
|
||||
tree_shaking_mode: Some(TreeShakingMode::ReexportsOnly),
|
||||
..Default::default()
|
||||
}
|
||||
.cell()
|
||||
|
|
|
@ -187,17 +187,19 @@ impl ResolvePlugin for ExternalCjsModulesResolvePlugin {
|
|||
// unsupported file type, bundle it
|
||||
Ok(ResolveResultOption::none())
|
||||
}
|
||||
(FileType::CommonJs, _) => {
|
||||
// mark as external
|
||||
Ok(ResolveResultOption::some(
|
||||
ResolveResult::primary(ResolveResultItem::OriginalReferenceExternal).cell(),
|
||||
))
|
||||
}
|
||||
(FileType::EcmaScriptModule, true) => {
|
||||
// mark as external
|
||||
Ok(ResolveResultOption::some(
|
||||
ResolveResult::primary(ResolveResultItem::OriginalReferenceExternal).cell(),
|
||||
))
|
||||
(FileType::CommonJs, _) | (FileType::EcmaScriptModule, true) => {
|
||||
if let Some(request) = request.await?.request() {
|
||||
// mark as external
|
||||
Ok(ResolveResultOption::some(
|
||||
ResolveResult::primary(ResolveResultItem::OriginalReferenceTypeExternal(
|
||||
request,
|
||||
))
|
||||
.cell(),
|
||||
))
|
||||
} else {
|
||||
// unsupported request, bundle it
|
||||
Ok(ResolveResultOption::none())
|
||||
}
|
||||
}
|
||||
(FileType::EcmaScriptModule, false) => {
|
||||
// even with require() this resolves to a ESM,
|
||||
|
|
|
@ -33,7 +33,7 @@ pub async fn get_swc_ecma_transform_plugin_impl(
|
|||
project_path: Vc<FileSystemPath>,
|
||||
plugin_configs: &[(String, serde_json::Value)],
|
||||
) -> Result<Vc<OptionTransformPlugin>> {
|
||||
use anyhow::bail;
|
||||
use anyhow::{bail, Context};
|
||||
use turbo_tasks::Value;
|
||||
use turbo_tasks_fs::FileContent;
|
||||
use turbopack_binding::turbopack::{
|
||||
|
@ -83,9 +83,10 @@ pub async fn get_swc_ecma_transform_plugin_impl(
|
|||
None,
|
||||
)
|
||||
.await?;
|
||||
let Some(plugin_module) = *plugin_wasm_module_resolve_result.first_module().await? else {
|
||||
bail!("Expected to find module");
|
||||
};
|
||||
let plugin_module = plugin_wasm_module_resolve_result
|
||||
.first_module()
|
||||
.await?
|
||||
.context("Expected to find module")?;
|
||||
|
||||
let content = &*plugin_module.content().file_content().await?;
|
||||
|
||||
|
|
|
@ -53,15 +53,22 @@ pub async fn create_page_loader_entry_module(
|
|||
AssetContent::file(file.into()),
|
||||
));
|
||||
|
||||
Ok(client_context.process(
|
||||
virtual_source,
|
||||
Value::new(ReferenceType::Internal(Vc::cell(indexmap! {
|
||||
"PAGE".to_string() => client_context.process(
|
||||
entry_asset,
|
||||
Value::new(ReferenceType::Entry(EntryReferenceSubType::Page))
|
||||
),
|
||||
}))),
|
||||
))
|
||||
let module = client_context
|
||||
.process(
|
||||
entry_asset,
|
||||
Value::new(ReferenceType::Entry(EntryReferenceSubType::Page)),
|
||||
)
|
||||
.module();
|
||||
|
||||
let module = client_context
|
||||
.process(
|
||||
virtual_source,
|
||||
Value::new(ReferenceType::Internal(Vc::cell(indexmap! {
|
||||
"PAGE".to_string() => module,
|
||||
}))),
|
||||
)
|
||||
.module();
|
||||
Ok(module)
|
||||
}
|
||||
|
||||
#[turbo_tasks::value(shared)]
|
||||
|
|
|
@ -195,7 +195,7 @@
|
|||
"@types/ws": "8.2.0",
|
||||
"@vercel/ncc": "0.34.0",
|
||||
"@vercel/nft": "0.24.4",
|
||||
"@vercel/turbopack-ecmascript-runtime": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231205.2",
|
||||
"@vercel/turbopack-ecmascript-runtime": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231206.2",
|
||||
"acorn": "8.5.0",
|
||||
"amphtml-validator": "1.0.35",
|
||||
"anser": "1.4.9",
|
||||
|
|
|
@ -73,7 +73,12 @@ function registerExportsForReactRefresh(
|
|||
if (isSafeExport(key)) {
|
||||
continue
|
||||
}
|
||||
var exportValue = moduleExports[key]
|
||||
try {
|
||||
var exportValue = moduleExports[key]
|
||||
} catch {
|
||||
// This might fail due to circular dependencies
|
||||
continue
|
||||
}
|
||||
var typeID = moduleID + ' %exports% ' + key
|
||||
RefreshRuntime.register(exportValue, typeID)
|
||||
}
|
||||
|
@ -91,7 +96,12 @@ function getRefreshBoundarySignature(moduleExports: unknown): Array<unknown> {
|
|||
if (isSafeExport(key)) {
|
||||
continue
|
||||
}
|
||||
var exportValue = moduleExports[key]
|
||||
try {
|
||||
var exportValue = moduleExports[key]
|
||||
} catch {
|
||||
// This might fail due to circular dependencies
|
||||
continue
|
||||
}
|
||||
signature.push(key)
|
||||
signature.push(RefreshRuntime.getFamilyByType(exportValue))
|
||||
}
|
||||
|
@ -113,7 +123,12 @@ function isReactRefreshBoundary(moduleExports: unknown): boolean {
|
|||
if (isSafeExport(key)) {
|
||||
continue
|
||||
}
|
||||
var exportValue = moduleExports[key]
|
||||
try {
|
||||
var exportValue = moduleExports[key]
|
||||
} catch {
|
||||
// This might fail due to circular dependencies
|
||||
return false
|
||||
}
|
||||
if (!RefreshRuntime.isLikelyComponentType(exportValue)) {
|
||||
areAllExportsComponents = false
|
||||
}
|
||||
|
|
|
@ -1077,8 +1077,8 @@ importers:
|
|||
specifier: 0.24.4
|
||||
version: 0.24.4
|
||||
'@vercel/turbopack-ecmascript-runtime':
|
||||
specifier: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231205.2
|
||||
version: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231205.2(react-refresh@0.12.0)(webpack@5.86.0)'
|
||||
specifier: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231206.2
|
||||
version: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231206.2(react-refresh@0.12.0)(webpack@5.86.0)'
|
||||
acorn:
|
||||
specifier: 8.5.0
|
||||
version: 8.5.0
|
||||
|
@ -24647,9 +24647,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-231205.2(react-refresh@0.12.0)(webpack@5.86.0)':
|
||||
resolution: {registry: https://registry.npmjs.org/, tarball: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231205.2}
|
||||
id: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231205.2'
|
||||
'@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231206.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-231206.2}
|
||||
id: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231206.2'
|
||||
name: '@vercel/turbopack-ecmascript-runtime'
|
||||
version: 0.0.0
|
||||
dependencies:
|
||||
|
|
Loading…
Reference in a new issue