Fixes performance problems due to TaskScopes (#55721)

### What?

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

### Turobopack changes

* https://github.com/vercel/turbo/pull/6009 <!-- OJ Kwon - ci(workflow):
update test filter -->
* https://github.com/vercel/turbo/pull/6026 <!-- Will Binns-Smith -
Remove next-dev references and benchmarks -->
* https://github.com/vercel/turbo/pull/6038 <!-- Tim Neutkens - Remove
test-prod action -->
* https://github.com/vercel/turbo/pull/6039 <!-- Tim Neutkens - Fix
action dependency -->
* ~https://github.com/vercel/turbo/pull/6036~ <!-- Will Binns-Smith -
Turbopack: add support for an asset prefix (and basePath in Next.js) -->
* https://github.com/vercel/turbo/pull/5992 <!-- Tobias Koppers -
refactor TaskScopes to use an aggregation tree -->


Closes WEB-1622
This commit is contained in:
Tobias Koppers 2023-09-28 09:40:21 +02:00 committed by GitHub
parent b689f84600
commit cd70065bad
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 444 additions and 313 deletions

167
Cargo.lock generated
View file

@ -321,7 +321,7 @@ dependencies = [
[[package]]
name = "auto-hash-map"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"serde",
]
@ -886,16 +886,6 @@ version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15"
[[package]]
name = "codespan-reporting"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"
dependencies = [
"termcolor",
"unicode-width",
]
[[package]]
name = "color_quant"
version = "1.1.0"
@ -1004,9 +994,9 @@ checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935"
[[package]]
name = "const_fn_assert"
version = "0.1.3+deprecated"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c773f3d54b8826857668aafa3bfe14bd179911a5b571b241e192cac1ec1c0b5"
checksum = "27d614f23f34f7b5165a77dc1591f497e2518f9cec4b4f4b92bfc4dc6cf7a190"
[[package]]
name = "const_format"
@ -1345,50 +1335,6 @@ dependencies = [
"syn 2.0.32",
]
[[package]]
name = "cxx"
version = "1.0.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93"
dependencies = [
"cc",
"cxxbridge-flags",
"cxxbridge-macro",
"link-cplusplus",
]
[[package]]
name = "cxx-build"
version = "1.0.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b"
dependencies = [
"cc",
"codespan-reporting",
"once_cell",
"proc-macro2",
"quote",
"scratch",
"syn 2.0.32",
]
[[package]]
name = "cxxbridge-flags"
version = "1.0.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb"
[[package]]
name = "cxxbridge-macro"
version = "1.0.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.32",
]
[[package]]
name = "darling"
version = "0.14.4"
@ -2425,12 +2371,11 @@ dependencies = [
[[package]]
name = "iana-time-zone-haiku"
version = "0.1.1"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca"
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
dependencies = [
"cxx",
"cxx-build",
"cc",
]
[[package]]
@ -2934,15 +2879,6 @@ dependencies = [
"syn 1.0.109",
]
[[package]]
name = "link-cplusplus"
version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5"
dependencies = [
"cc",
]
[[package]]
name = "linked-hash-map"
version = "0.5.6"
@ -3574,7 +3510,7 @@ dependencies = [
[[package]]
name = "node-file-trace"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"serde",
@ -4521,6 +4457,26 @@ dependencies = [
"thiserror",
]
[[package]]
name = "ref-cast"
version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "acde58d073e9c79da00f2b5b84eed919c8326832648a5b109b3fce1bb1175280"
dependencies = [
"ref-cast-impl",
]
[[package]]
name = "ref-cast-impl"
version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f7473c2cfcf90008193dd0e3e16599455cb601a9fce322b5bb55de799664925"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.32",
]
[[package]]
name = "regalloc2"
version = "0.5.1"
@ -4859,12 +4815,6 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "scratch"
version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1"
[[package]]
name = "sct"
version = "0.7.0"
@ -7381,7 +7331,7 @@ dependencies = [
[[package]]
name = "turbo-tasks"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"async-trait",
@ -7413,7 +7363,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-build"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"cargo-lock",
@ -7425,7 +7375,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-bytes"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"bytes",
@ -7440,7 +7390,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-env"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"dotenvs",
@ -7454,7 +7404,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-fetch"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"indexmap 1.9.3",
@ -7471,7 +7421,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-fs"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"auto-hash-map",
@ -7501,7 +7451,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-hash"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"base16",
"hex",
@ -7513,7 +7463,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-macros"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"convert_case 0.6.0",
@ -7527,7 +7477,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-macros-shared"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"proc-macro2",
"quote",
@ -7537,7 +7487,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-malloc"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"mimalloc",
]
@ -7545,7 +7495,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-memory"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"auto-hash-map",
@ -7556,6 +7506,7 @@ dependencies = [
"once_cell",
"parking_lot",
"priority-queue",
"ref-cast",
"rustc-hash",
"tokio",
"tracing",
@ -7568,7 +7519,7 @@ dependencies = [
[[package]]
name = "turbopack"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"async-recursion",
@ -7599,7 +7550,7 @@ dependencies = [
[[package]]
name = "turbopack-binding"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"auto-hash-map",
"mdxjs",
@ -7639,7 +7590,7 @@ dependencies = [
[[package]]
name = "turbopack-build"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"indexmap 1.9.3",
@ -7661,7 +7612,7 @@ dependencies = [
[[package]]
name = "turbopack-cli-utils"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"clap 4.4.2",
@ -7685,7 +7636,7 @@ dependencies = [
[[package]]
name = "turbopack-core"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"async-recursion",
@ -7714,7 +7665,7 @@ dependencies = [
[[package]]
name = "turbopack-css"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"async-trait",
@ -7736,7 +7687,7 @@ dependencies = [
[[package]]
name = "turbopack-dev"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"indexmap 1.9.3",
@ -7760,7 +7711,7 @@ dependencies = [
[[package]]
name = "turbopack-dev-server"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"async-compression",
@ -7797,7 +7748,7 @@ dependencies = [
[[package]]
name = "turbopack-ecmascript"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"async-trait",
@ -7831,7 +7782,7 @@ dependencies = [
[[package]]
name = "turbopack-ecmascript-hmr-protocol"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"serde",
"serde_json",
@ -7842,7 +7793,7 @@ dependencies = [
[[package]]
name = "turbopack-ecmascript-plugins"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"async-trait",
@ -7865,7 +7816,7 @@ dependencies = [
[[package]]
name = "turbopack-ecmascript-runtime"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"indoc",
@ -7882,7 +7833,7 @@ dependencies = [
[[package]]
name = "turbopack-env"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"indexmap 1.9.3",
@ -7898,7 +7849,7 @@ dependencies = [
[[package]]
name = "turbopack-image"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"base64 0.21.4",
@ -7918,7 +7869,7 @@ dependencies = [
[[package]]
name = "turbopack-json"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"serde",
@ -7933,7 +7884,7 @@ dependencies = [
[[package]]
name = "turbopack-mdx"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"mdxjs",
@ -7948,7 +7899,7 @@ dependencies = [
[[package]]
name = "turbopack-node"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"async-stream",
@ -7983,7 +7934,7 @@ dependencies = [
[[package]]
name = "turbopack-static"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"serde",
@ -7999,7 +7950,7 @@ dependencies = [
[[package]]
name = "turbopack-swc-utils"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"swc_core",
"turbo-tasks",
@ -8010,7 +7961,7 @@ dependencies = [
[[package]]
name = "turbopack-wasm"
version = "0.1.0"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230922.3#ad585d32fed92986a4458fd47db2f50f1a3cba75"
source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230928.3#60636fb4555f215abfbbfcb022f46f2907a7c979"
dependencies = [
"anyhow",
"indexmap 1.9.3",

View file

@ -39,11 +39,11 @@ swc_core = { version = "0.83.12", features = [
testing = { version = "0.34.1" }
# Turbo crates
turbopack-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230922.3" }
turbopack-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230928.3" }
# [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-230922.3" }
turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230928.3" }
# [TODO]: need to refactor embed_directory! macro usage in next-core
turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230922.3" }
turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230928.3" }
# General Deps
@ -121,7 +121,7 @@ shadow-rs = { version = "0.23.0", default-features = false, features = [
] }
syn = "1.0.107"
tempfile = "3.3.0"
thiserror = "1.0.38"
thiserror = "1.0.48"
tiny-gradient = "0.1.0"
tokio = "1.25.0"
tokio-util = { version = "0.7.7", features = ["io"] }

View file

@ -77,9 +77,9 @@ pub async fn endpoint_write_to_disk(
let (written, issues, diags) = turbo_tasks
.run_once(async move {
let write_to_disk = endpoint.write_to_disk();
let written = write_to_disk.strongly_consistent().await?;
let issues = get_issues(write_to_disk).await?;
let diags = get_diagnostics(write_to_disk).await?;
let written = write_to_disk.strongly_consistent().await?;
Ok((written, issues, diags))
})
.await
@ -104,17 +104,16 @@ pub fn endpoint_server_changed_subscribe(
func,
move || async move {
let changed = endpoint.server_changed();
let issues = get_issues(changed).await?;
let diags = get_diagnostics(changed).await?;
// We don't capture issues and diagonistics here since we don't want to be
// notified when they change
changed.strongly_consistent().await?;
Ok((issues, diags))
Ok(())
},
|ctx| {
let (issues, diags) = ctx.value;
|_| {
Ok(vec![TurbopackResult {
result: (),
issues: issues.iter().map(|i| NapiIssue::from(&**i)).collect(),
diagnostics: diags.iter().map(|d| NapiDiagnostic::from(d)).collect(),
issues: vec![],
diagnostics: vec![],
}])
},
)
@ -132,17 +131,16 @@ pub fn endpoint_client_changed_subscribe(
func,
move || async move {
let changed = endpoint.client_changed();
let issues = get_issues(changed).await?;
let diags = get_diagnostics(changed).await?;
// We don't capture issues and diagonistics here since we don't want to be
// notified when they change
changed.strongly_consistent().await?;
Ok((issues, diags))
Ok(())
},
|ctx| {
let (issues, diags) = ctx.value;
|_| {
Ok(vec![TurbopackResult {
result: (),
issues: issues.iter().map(|i| NapiIssue::from(&**i)).collect(),
diagnostics: diags.iter().map(|d| NapiDiagnostic::from(d)).collect(),
issues: vec![],
diagnostics: vec![],
}])
},
)

View file

@ -313,11 +313,11 @@ pub fn project_entrypoints_subscribe(
turbo_tasks.clone(),
func,
move || async move {
let entrypoints = container.entrypoints();
let issues = get_issues(entrypoints).await?;
let diags = get_diagnostics(entrypoints).await?;
let entrypoints_operation = container.entrypoints();
let entrypoints = entrypoints_operation.strongly_consistent().await?;
let entrypoints = entrypoints.strongly_consistent().await?;
let issues = get_issues(entrypoints_operation).await?;
let diags = get_diagnostics(entrypoints_operation).await?;
Ok((entrypoints, issues, diags))
},
@ -383,10 +383,10 @@ pub fn project_hmr_events(
let state = project
.project()
.hmr_version_state(identifier.clone(), session);
let update = project.project().hmr_update(identifier, state);
let issues = get_issues(update).await?;
let diags = get_diagnostics(update).await?;
let update = update.strongly_consistent().await?;
let update_operation = project.project().hmr_update(identifier, state);
let update = update_operation.strongly_consistent().await?;
let issues = get_issues(update_operation).await?;
let diags = get_diagnostics(update_operation).await?;
match &*update {
Update::None => {}
Update::Total(TotalUpdate { to }) => {
@ -451,11 +451,11 @@ pub fn project_hmr_identifiers_subscribe(
turbo_tasks.clone(),
func,
move || async move {
let hmr_identifiers = container.hmr_identifiers();
let issues = get_issues(hmr_identifiers).await?;
let diags = get_diagnostics(hmr_identifiers).await?;
let hmr_identifiers_operation = container.hmr_identifiers();
let hmr_identifiers = hmr_identifiers_operation.strongly_consistent().await?;
let hmr_identifiers = hmr_identifiers.strongly_consistent().await?;
let issues = get_issues(hmr_identifiers_operation).await?;
let diags = get_diagnostics(hmr_identifiers_operation).await?;
Ok((hmr_identifiers, issues, diags))
},

View file

@ -69,30 +69,23 @@ impl Drop for RootTask {
#[napi]
pub fn root_task_dispose(
#[napi(ts_arg_type = "{ __napiType: \"RootTask\" }")] _root_task: External<RootTask>,
#[napi(ts_arg_type = "{ __napiType: \"RootTask\" }")] mut root_task: External<RootTask>,
) -> napi::Result<()> {
// TODO(alexkirsz) Implement. Not panicking here to avoid crashing the process
// when testing.
if let Some(task) = root_task.task_id.take() {
root_task.turbo_tasks.dispose_root_task(task);
}
Ok(())
}
pub async fn get_issues<T: Send>(source: Vc<T>) -> Result<Vec<ReadRef<PlainIssue>>> {
let issues = source
.peek_issues_with_path()
.await?
.strongly_consistent()
.await?;
let issues = source.peek_issues_with_path().await?;
issues.get_plain_issues().await
}
/// Collect [turbopack::core::diagnostics::Diagnostic] from given source,
/// returns [turbopack::core::diagnostics::PlainDiagnostic]
pub async fn get_diagnostics<T: Send>(source: Vc<T>) -> Result<Vec<ReadRef<PlainDiagnostic>>> {
let captured_diags = source
.peek_diagnostics()
.await?
.strongly_consistent()
.await?;
let captured_diags = source.peek_diagnostics().await?;
captured_diags
.diagnostics

View file

@ -22,8 +22,8 @@ use turbo_tasks::{
debug::ValueDebugFormat,
graph::{AdjacencyMap, GraphTraversal},
trace::TraceRawVcs,
Completion, Completions, IntoTraitRef, State, TaskInput, TransientInstance, TryFlatJoinIterExt,
Value, ValueToString, Vc,
Completion, Completions, IntoTraitRef, State, TaskInput, TraitRef, TransientInstance,
TryFlatJoinIterExt, Value, ValueToString, Vc,
};
use turbopack_binding::{
turbo::{
@ -562,6 +562,21 @@ impl Project {
}
}
let pages_document_endpoint = TraitRef::cell(
self.pages_project()
.document_endpoint()
.into_trait_ref()
.await?,
);
let pages_app_endpoint =
TraitRef::cell(self.pages_project().app_endpoint().into_trait_ref().await?);
let pages_error_endpoint = TraitRef::cell(
self.pages_project()
.error_endpoint()
.into_trait_ref()
.await?,
);
let middleware = find_context_file(
self.project_path(),
middleware_files(self.next_config().page_extensions()),
@ -569,7 +584,11 @@ impl Project {
let middleware = if let FindContextFileResult::Found(fs_path, _) = *middleware.await? {
let source = Vc::upcast(FileSource::new(fs_path));
Some(Middleware {
endpoint: Vc::upcast(self.middleware_endpoint(source)),
endpoint: TraitRef::cell(
Vc::upcast::<Box<dyn Endpoint>>(self.middleware_endpoint(source))
.into_trait_ref()
.await?,
),
})
} else {
None
@ -578,9 +597,9 @@ impl Project {
Ok(Entrypoints {
routes,
middleware,
pages_document_endpoint: self.pages_project().document_endpoint(),
pages_app_endpoint: self.pages_project().app_endpoint(),
pages_error_endpoint: self.pages_project().error_endpoint(),
pages_document_endpoint,
pages_app_endpoint,
pages_error_endpoint,
}
.cell())
}

View file

@ -2,7 +2,11 @@ use std::collections::HashMap;
use anyhow::{bail, Result};
use next_core::emit_client_assets;
use turbo_tasks::{State, TryFlatJoinIterExt, TryJoinIterExt, ValueDefault, ValueToString, Vc};
use serde::{Deserialize, Serialize};
use turbo_tasks::{
debug::ValueDebugFormat, trace::TraceRawVcs, State, TryFlatJoinIterExt, TryJoinIterExt,
ValueDefault, ValueToString, Vc,
};
use turbopack_binding::{
turbo::tasks_fs::FileSystemPath,
turbopack::core::{
@ -18,8 +22,17 @@ use turbopack_binding::{
#[turbo_tasks::value(transparent)]
pub struct OutputAssetsOperation(Vc<OutputAssets>);
type VersionedContentMapInner =
HashMap<Vc<FileSystemPath>, (Vc<Box<dyn VersionedContent>>, Vc<OutputAssets>)>;
#[derive(
Clone, Copy, TraceRawVcs, PartialEq, Eq, ValueDebugFormat, Serialize, Deserialize, Debug,
)]
struct MapEntry {
assets_operation: Vc<OutputAssets>,
}
#[turbo_tasks::value(transparent)]
struct OptionMapEntry(Option<MapEntry>);
type VersionedContentMapInner = HashMap<Vc<FileSystemPath>, MapEntry>;
#[turbo_tasks::value]
pub struct VersionedContentMap {
@ -55,12 +68,9 @@ impl VersionedContentMap {
let entries: Vec<_> = assets
.iter()
.map(|&asset| async move {
// NOTE(alexkirsz) `.versioned_content()` should not be resolved, to ensure that
// it always points to the task that computes the versioned
// content.
Ok((
asset.ident().path().resolve().await?,
(asset.versioned_content(), assets_operation),
MapEntry { assets_operation },
))
})
.try_join()
@ -73,14 +83,17 @@ impl VersionedContentMap {
}
#[turbo_tasks::function]
pub async fn get(&self, path: Vc<FileSystemPath>) -> Result<Vc<Box<dyn VersionedContent>>> {
pub async fn get(
self: Vc<Self>,
path: Vc<FileSystemPath>,
) -> Result<Vc<Box<dyn VersionedContent>>> {
let (content, _) = self.get_internal(path).await?;
Ok(content)
}
#[turbo_tasks::function]
pub async fn get_and_write(
&self,
self: Vc<Self>,
path: Vc<FileSystemPath>,
client_relative_path: Vc<FileSystemPath>,
client_output_path: Vc<FileSystemPath>,
@ -105,28 +118,34 @@ impl VersionedContentMap {
.await?;
Ok(Vc::cell(keys))
}
#[turbo_tasks::function]
async fn raw_get(&self, path: Vc<FileSystemPath>) -> Result<Vc<OptionMapEntry>> {
let result = {
let map = self.map.get();
map.get(&path).copied()
};
Ok(Vc::cell(result))
}
}
impl VersionedContentMap {
async fn get_internal(
&self,
self: Vc<Self>,
path: Vc<FileSystemPath>,
) -> Result<(Vc<Box<dyn VersionedContent>>, Vc<OutputAssets>)> {
let result = {
// NOTE(alexkirsz) This is to avoid Rust marking this method as !Send because a
// StateRef to the map is captured across an await boundary below, even though
// it does not look like it would.
// I think this is a similar issue as https://fasterthanli.me/articles/a-rust-match-made-in-hell
let map = self.map.get();
map.get(&path).copied()
};
let Some((content, assets_operation)) = result else {
let path = path.to_string().await?;
bail!("could not find versioned content for path {}", path);
};
// NOTE(alexkirsz) This is necessary to mark the task as active again.
Vc::connect(assets_operation);
Vc::connect(content);
Ok((content, assets_operation))
let result = self.raw_get(path).await?;
if let Some(MapEntry { assets_operation }) = *result {
// NOTE(alexkirsz) This is necessary to mark the task as active again.
Vc::connect(assets_operation);
for asset in assets_operation.await?.iter() {
if asset.ident().path().resolve().await? == path {
let content = asset.versioned_content();
return Ok((content, assets_operation));
}
}
}
let path = path.to_string().await?;
bail!("could not find versioned content for path {}", path);
}
}

View file

@ -193,7 +193,7 @@
"@types/ws": "8.2.0",
"@vercel/ncc": "0.34.0",
"@vercel/nft": "0.22.6",
"@vercel/turbopack-ecmascript-runtime": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230922.2",
"@vercel/turbopack-ecmascript-runtime": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230928.3",
"acorn": "8.5.0",
"ajv": "8.11.0",
"amphtml-validator": "1.0.35",

View file

@ -122,6 +122,8 @@ function handleSuccess() {
if (isHotUpdate) {
tryApplyUpdates(onBeforeFastRefresh, onFastRefresh)
}
} else {
onBuildOk()
}
}

View file

@ -1,10 +1,13 @@
import connect from './error-overlay/hot-dev-client'
import { sendMessage } from './error-overlay/websocket'
let reloading = false
export default (mode: 'webpack' | 'turbopack') => {
const devClient = connect(mode)
devClient.subscribeToHmrEvent((obj: any) => {
if (reloading) return
// if we're on an error/404 page, we can't reliably tell if the newly added/removed page
// matches the current path. In that case, assume any added/removed entries should trigger a reload of the current page
const isOnErrorPage =
@ -19,6 +22,7 @@ export default (mode: 'webpack' | 'turbopack') => {
clientId: window.__nextDevClientId,
})
)
reloading = true
return window.location.reload()
}
case 'removedPage': {

View file

@ -25,7 +25,10 @@ export function pageBootrap(assetPrefix: string) {
}, process.env.__NEXT_BUILD_INDICATOR_POSITION)
}
let reloading = false
addMessageListener((payload) => {
if (reloading) return
if ('action' in payload) {
if (payload.action === HMR_ACTIONS_SENT_TO_BROWSER.SERVER_ERROR) {
const { stack, message } = JSON.parse(payload.errorJSON)
@ -33,6 +36,7 @@ export function pageBootrap(assetPrefix: string) {
error.stack = stack
throw error
} else if (payload.action === HMR_ACTIONS_SENT_TO_BROWSER.RELOAD_PAGE) {
reloading = true
window.location.reload()
} else if (
payload.action ===

File diff suppressed because one or more lines are too long

View file

@ -109,6 +109,7 @@ import {
deleteCache,
} from '../../../build/webpack/plugins/nextjs-require-cache-hot-reloader'
import { normalizeMetadataRoute } from '../../../lib/metadata/get-metadata-route'
import { clearModuleContext } from '../render-server'
const wsServer = new ws.Server({ noServer: true })
@ -339,6 +340,7 @@ async function startWatcher(opts: SetupOpts) {
}
for (const file of result.serverPaths.map((p) => path.join(distDir, p))) {
clearModuleContext(file)
deleteCache(file)
}
@ -507,7 +509,7 @@ async function startWatcher(opts: SetupOpts) {
makePayload: (
page: string,
change: TurbopackResult<ServerClientChange>
) => HMR_ACTION_TYPES | void
) => Promise<HMR_ACTION_TYPES> | HMR_ACTION_TYPES | void
) {
if (!endpoint || changeSubscriptions.has(page)) return
@ -525,7 +527,7 @@ async function startWatcher(opts: SetupOpts) {
)
processIssues(page, page, change)
const payload = makePayload(page, change)
const payload = await makePayload(page, change)
if (payload) sendHmr('endpoint-change', page, payload)
}
}
@ -539,108 +541,6 @@ async function startWatcher(opts: SetupOpts) {
issues.delete(page)
}
try {
async function handleEntries() {
for await (const entrypoints of iter) {
if (!currentEntriesHandlingResolve) {
currentEntriesHandling = new Promise(
// eslint-disable-next-line no-loop-func
(resolve) => (currentEntriesHandlingResolve = resolve)
)
}
globalEntries.app = entrypoints.pagesAppEndpoint
globalEntries.document = entrypoints.pagesDocumentEndpoint
globalEntries.error = entrypoints.pagesErrorEndpoint
curEntries.clear()
for (const [pathname, route] of entrypoints.routes) {
switch (route.type) {
case 'page':
case 'page-api':
case 'app-page':
case 'app-route': {
curEntries.set(pathname, route)
break
}
default:
Log.info(`skipping ${pathname} (${route.type})`)
break
}
}
for (const [pathname, subscriptionPromise] of changeSubscriptions) {
if (pathname === '') {
// middleware is handled below
continue
}
if (!curEntries.has(pathname)) {
const subscription = await subscriptionPromise
subscription.return?.()
changeSubscriptions.delete(pathname)
}
}
const { middleware } = entrypoints
// We check for explicit true/false, since it's initialized to
// undefined during the first loop (middlewareChanges event is
// unnecessary during the first serve)
if (prevMiddleware === true && !middleware) {
// Went from middleware to no middleware
await clearChangeSubscription('middleware')
sendHmr('entrypoint-change', 'middleware', {
event: HMR_ACTIONS_SENT_TO_BROWSER.MIDDLEWARE_CHANGES,
})
} else if (prevMiddleware === false && middleware) {
// Went from no middleware to middleware
sendHmr('endpoint-change', 'middleware', {
event: HMR_ACTIONS_SENT_TO_BROWSER.MIDDLEWARE_CHANGES,
})
}
if (middleware) {
const writtenEndpoint = await processResult(
await middleware.endpoint.writeToDisk()
)
processIssues('middleware', 'middleware', writtenEndpoint)
await loadMiddlewareManifest('middleware', 'middleware')
serverFields.actualMiddlewareFile = 'middleware'
serverFields.middleware = {
match: null as any,
page: '/',
matchers:
middlewareManifests.get('middleware')?.middleware['/'].matchers,
}
changeSubscription('middleware', middleware.endpoint, () => {
return { event: HMR_ACTIONS_SENT_TO_BROWSER.MIDDLEWARE_CHANGES }
})
prevMiddleware = true
} else {
middlewareManifests.delete('middleware')
serverFields.actualMiddlewareFile = undefined
serverFields.middleware = undefined
prevMiddleware = false
}
await propagateServerField(
'actualMiddlewareFile',
serverFields.actualMiddlewareFile
)
await propagateServerField('middleware', serverFields.middleware)
currentEntriesHandlingResolve!()
currentEntriesHandlingResolve = undefined
}
}
handleEntries().catch((err) => {
console.error(err)
process.exit(1)
})
} catch (e) {
console.error(e)
}
function mergeBuildManifests(manifests: Iterable<BuildManifest>) {
const manifest: Partial<BuildManifest> & Pick<BuildManifest, 'pages'> = {
pages: {
@ -877,8 +777,13 @@ async function startWatcher(opts: SetupOpts) {
// computation. This is not a change, so swallow it.
try {
await subscription.next()
for await (const data of subscription) {
processIssues('hmr', id, data)
sendTurbopackMessage(data)
}
} catch (e) {
// The client is using an HMR session from a previous server, tell them
// The client might be using an HMR session from a previous server, tell them
// to fully reload the page to resolve the issue. We can't use
// `hotReloader.send` since that would force very connected client to
// reload, only this client is out of date.
@ -889,11 +794,6 @@ async function startWatcher(opts: SetupOpts) {
client.close()
return
}
for await (const data of subscription) {
processIssues('hmr', id, data)
sendTurbopackMessage(data)
}
}
function unsubscribeToHmrEvents(id: string, client: ws) {
@ -902,6 +802,121 @@ async function startWatcher(opts: SetupOpts) {
subscription?.return!()
}
try {
async function handleEntries() {
for await (const entrypoints of iter) {
if (!currentEntriesHandlingResolve) {
currentEntriesHandling = new Promise(
// eslint-disable-next-line no-loop-func
(resolve) => (currentEntriesHandlingResolve = resolve)
)
}
globalEntries.app = entrypoints.pagesAppEndpoint
globalEntries.document = entrypoints.pagesDocumentEndpoint
globalEntries.error = entrypoints.pagesErrorEndpoint
curEntries.clear()
for (const [pathname, route] of entrypoints.routes) {
switch (route.type) {
case 'page':
case 'page-api':
case 'app-page':
case 'app-route': {
curEntries.set(pathname, route)
break
}
default:
Log.info(`skipping ${pathname} (${route.type})`)
break
}
}
for (const [pathname, subscriptionPromise] of changeSubscriptions) {
if (pathname === '') {
// middleware is handled below
continue
}
if (!curEntries.has(pathname)) {
const subscription = await subscriptionPromise
subscription.return?.()
changeSubscriptions.delete(pathname)
}
}
const { middleware } = entrypoints
// We check for explicit true/false, since it's initialized to
// undefined during the first loop (middlewareChanges event is
// unnecessary during the first serve)
if (prevMiddleware === true && !middleware) {
// Went from middleware to no middleware
await clearChangeSubscription('middleware')
sendHmr('entrypoint-change', 'middleware', {
event: HMR_ACTIONS_SENT_TO_BROWSER.MIDDLEWARE_CHANGES,
})
} else if (prevMiddleware === false && middleware) {
// Went from no middleware to middleware
sendHmr('endpoint-change', 'middleware', {
event: HMR_ACTIONS_SENT_TO_BROWSER.MIDDLEWARE_CHANGES,
})
}
if (middleware) {
const processMiddleware = async () => {
const writtenEndpoint = await processResult(
await middleware.endpoint.writeToDisk()
)
processIssues('middleware', 'middleware', writtenEndpoint)
await loadMiddlewareManifest('middleware', 'middleware')
serverFields.actualMiddlewareFile = 'middleware'
serverFields.middleware = {
match: null as any,
page: '/',
matchers:
middlewareManifests.get('middleware')?.middleware['/']
.matchers,
}
}
await processMiddleware()
changeSubscription('middleware', middleware.endpoint, async () => {
await processMiddleware()
await propagateServerField(
'actualMiddlewareFile',
serverFields.actualMiddlewareFile
)
await propagateServerField('middleware', serverFields.middleware)
await writeMiddlewareManifest()
console.log('middleware changes')
return { event: HMR_ACTIONS_SENT_TO_BROWSER.MIDDLEWARE_CHANGES }
})
prevMiddleware = true
} else {
middlewareManifests.delete('middleware')
serverFields.actualMiddlewareFile = undefined
serverFields.middleware = undefined
prevMiddleware = false
}
await propagateServerField(
'actualMiddlewareFile',
serverFields.actualMiddlewareFile
)
await propagateServerField('middleware', serverFields.middleware)
currentEntriesHandlingResolve!()
currentEntriesHandlingResolve = undefined
}
}
handleEntries().catch((err) => {
console.error(err)
process.exit(1)
})
} catch (e) {
console.error(e)
}
// Write empty manifests
await mkdir(path.join(distDir, 'server'), { recursive: true })
await mkdir(path.join(distDir, 'static/development'), { recursive: true })

View file

@ -1058,8 +1058,8 @@ importers:
specifier: 0.22.6
version: 0.22.6
'@vercel/turbopack-ecmascript-runtime':
specifier: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230922.2
version: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230922.2(react-refresh@0.12.0)(webpack@5.86.0)'
specifier: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230928.3
version: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230928.3(react-refresh@0.12.0)(webpack@5.86.0)'
acorn:
specifier: 8.5.0
version: 8.5.0
@ -1320,7 +1320,7 @@ importers:
version: 0.13.4
sass-loader:
specifier: 12.4.0
version: 12.4.0(sass@1.54.0)(webpack@5.86.0)
version: 12.4.0(webpack@5.86.0)
schema-utils2:
specifier: npm:schema-utils@2.7.1
version: /schema-utils@2.7.1
@ -1486,7 +1486,7 @@ importers:
dependencies:
next:
specifier: '*'
version: link:../next
version: 13.5.3(@babel/core@7.18.0)(@opentelemetry/api@1.4.1)(react-dom@18.2.0)(react@18.2.0)(sass@1.54.0)
packages/next-polyfill-module:
devDependencies:
@ -6714,6 +6714,10 @@ packages:
resolution: {integrity: sha512-XQr74QaLeMiqhStEhLn1im9EOMnkypp7MZOwQhGzqp2Weu5eQJbpPxWxixxlYRKWPOmJjsk6qYfYH9kq43yc2w==}
dev: true
/@next/env@13.5.3:
resolution: {integrity: sha512-X4te86vsbjsB7iO4usY9jLPtZ827Mbx+WcwNBGUOIuswuTAKQtzsuoxc/6KLxCMvogKG795MhrR1LDhYgDvasg==}
dev: false
/@next/react-refresh-utils@13.5.3(react-refresh@0.12.0)(webpack@5.86.0):
resolution: {integrity: sha512-Y4wsqtdX+/QZ6W19N3y/YnuxAt/a79l/zYmRc2mwEplP0rIv6W3MBo3ePFUXOMVfmVesnOhfnZanaGiynZcFOg==}
peerDependencies:
@ -6727,6 +6731,87 @@ packages:
webpack: 5.86.0(@swc/core@1.3.85)
dev: true
/@next/swc-darwin-arm64@13.5.3:
resolution: {integrity: sha512-6hiYNJxJmyYvvKGrVThzo4nTcqvqUTA/JvKim7Auaj33NexDqSNwN5YrrQu+QhZJCIpv2tULSHt+lf+rUflLSw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@next/swc-darwin-x64@13.5.3:
resolution: {integrity: sha512-UpBKxu2ob9scbpJyEq/xPgpdrgBgN3aLYlxyGqlYX5/KnwpJpFuIHU2lx8upQQ7L+MEmz+fA1XSgesoK92ppwQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@next/swc-linux-arm64-gnu@13.5.3:
resolution: {integrity: sha512-5AzM7Yx1Ky+oLY6pHs7tjONTF22JirDPd5Jw/3/NazJ73uGB05NqhGhB4SbeCchg7SlVYVBeRMrMSZwJwq/xoA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@next/swc-linux-arm64-musl@13.5.3:
resolution: {integrity: sha512-A/C1shbyUhj7wRtokmn73eBksjTM7fFQoY2v/0rTM5wehpkjQRLOXI8WJsag2uLhnZ4ii5OzR1rFPwoD9cvOgA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@next/swc-linux-x64-gnu@13.5.3:
resolution: {integrity: sha512-FubPuw/Boz8tKkk+5eOuDHOpk36F80rbgxlx4+xty/U71e3wZZxVYHfZXmf0IRToBn1Crb8WvLM9OYj/Ur815g==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@next/swc-linux-x64-musl@13.5.3:
resolution: {integrity: sha512-DPw8nFuM1uEpbX47tM3wiXIR0Qa+atSzs9Q3peY1urkhofx44o7E1svnq+a5Q0r8lAcssLrwiM+OyJJgV/oj7g==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@next/swc-win32-arm64-msvc@13.5.3:
resolution: {integrity: sha512-zBPSP8cHL51Gub/YV8UUePW7AVGukp2D8JU93IHbVDu2qmhFAn9LWXiOOLKplZQKxnIPUkJTQAJDCWBWU4UWUA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@next/swc-win32-ia32-msvc@13.5.3:
resolution: {integrity: sha512-ONcL/lYyGUj4W37D4I2I450SZtSenmFAvapkJQNIJhrPMhzDU/AdfLkW98NvH1D2+7FXwe7yclf3+B7v28uzBQ==}
engines: {node: '>= 10'}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@next/swc-win32-x64-msvc@13.5.3:
resolution: {integrity: sha512-2Vz2tYWaLqJvLcWbbTlJ5k9AN6JD7a5CN2pAeIzpbecK8ZF/yobA39cXtv6e+Z8c5UJuVOmaTldEAIxvsIux/Q==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3:
resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==}
requiresBuild: true
@ -7206,7 +7291,6 @@ packages:
/@opentelemetry/api@1.4.1:
resolution: {integrity: sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==}
engines: {node: '>=8.0.0'}
dev: true
/@opentelemetry/core@1.15.2(@opentelemetry/api@1.4.1):
resolution: {integrity: sha512-+gBv15ta96WqkHZaPpcDHiaz0utiiHZVfm2YOYSqFGrUaJpPkMoSuLBB58YFQGi6Rsb9EHos84X6X5+9JspmLw==}
@ -7236,7 +7320,7 @@ packages:
open: 8.4.0
picocolors: 1.0.0
tiny-glob: 0.2.9
tslib: 2.5.3
tslib: 2.6.2
dev: false
/@playwright/test@1.35.1:
@ -7721,7 +7805,7 @@ packages:
/@swc/helpers@0.4.14:
resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==}
dependencies:
tslib: 2.5.3
tslib: 2.6.2
dev: true
/@swc/helpers@0.5.2:
@ -9517,7 +9601,7 @@ packages:
resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==}
engines: {node: '>=4'}
dependencies:
tslib: 2.5.3
tslib: 2.6.2
/astral-regex@2.0.0:
resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
@ -19350,6 +19434,48 @@ packages:
resolution: {integrity: sha1-yobR/ogoFpsBICCOPchCS524NCw=}
dev: true
/next@13.5.3(@babel/core@7.18.0)(@opentelemetry/api@1.4.1)(react-dom@18.2.0)(react@18.2.0)(sass@1.54.0):
resolution: {integrity: sha512-4Nt4HRLYDW/yRpJ/QR2t1v63UOMS55A38dnWv3UDOWGezuY0ZyFO1ABNbD7mulVzs9qVhgy2+ppjdsANpKP1mg==}
engines: {node: '>=16.14.0'}
hasBin: true
peerDependencies:
'@opentelemetry/api': ^1.1.0
react: ^18.2.0
react-dom: ^18.2.0
sass: ^1.3.0
peerDependenciesMeta:
'@opentelemetry/api':
optional: true
sass:
optional: true
dependencies:
'@next/env': 13.5.3
'@opentelemetry/api': 1.4.1
'@swc/helpers': 0.5.2
busboy: 1.6.0
caniuse-lite: 1.0.30001406
postcss: 8.4.14
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
sass: 1.54.0
styled-jsx: 5.1.1(@babel/core@7.18.0)(react@18.2.0)
watchpack: 2.4.0
zod: 3.21.4
optionalDependencies:
'@next/swc-darwin-arm64': 13.5.3
'@next/swc-darwin-x64': 13.5.3
'@next/swc-linux-arm64-gnu': 13.5.3
'@next/swc-linux-arm64-musl': 13.5.3
'@next/swc-linux-x64-gnu': 13.5.3
'@next/swc-linux-x64-musl': 13.5.3
'@next/swc-win32-arm64-msvc': 13.5.3
'@next/swc-win32-ia32-msvc': 13.5.3
'@next/swc-win32-x64-msvc': 13.5.3
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
dev: false
/nice-try@1.0.5:
resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
dev: true
@ -22765,7 +22891,7 @@ packages:
ast-types: 0.14.2
esprima: 4.0.1
source-map: 0.6.1
tslib: 2.5.3
tslib: 2.6.2
/rechoir@0.6.2:
resolution: {integrity: sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=}
@ -23536,7 +23662,7 @@ packages:
/rxjs@7.8.1:
resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
dependencies:
tslib: 2.5.3
tslib: 2.6.2
dev: false
/sade@1.7.4:
@ -23585,7 +23711,7 @@ packages:
/safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
/sass-loader@12.4.0(sass@1.54.0)(webpack@5.86.0):
/sass-loader@12.4.0(webpack@5.86.0):
resolution: {integrity: sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg==}
engines: {node: '>= 12.13.0'}
peerDependencies:
@ -23603,7 +23729,6 @@ packages:
dependencies:
klona: 2.0.4
neo-async: 2.6.2
sass: 1.54.0
webpack: 5.86.0(@swc/core@1.3.85)
dev: true
@ -24852,7 +24977,7 @@ packages:
engines: {node: ^14.18.0 || >=16.0.0}
dependencies:
'@pkgr/utils': 2.3.1
tslib: 2.5.3
tslib: 2.6.2
dev: false
/table@6.8.0:
@ -25399,6 +25524,7 @@ packages:
/tslib@2.5.3:
resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==}
dev: true
/tslib@2.6.2:
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
@ -26859,9 +26985,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-230922.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-230922.2}
id: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230922.2'
'@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230928.3(react-refresh@0.12.0)(webpack@5.86.0)':
resolution: {tarball: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230928.3}
id: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-230928.3'
name: '@vercel/turbopack-ecmascript-runtime'
version: 0.0.0
dependencies:

View file

@ -115,7 +115,7 @@ describe('jsconfig-path-reloading', () => {
await check(async () => {
const html3 = await browser.eval('document.documentElement.innerHTML')
return html3.includes('id="first-data"') &&
!html3.includes('id="second-data"')
!html3.includes('second-data')
? 'success'
: html3
}, 'success')