From 84fabecc9b2786182395b08b4558469399299817 Mon Sep 17 00:00:00 2001
From: denobot <33910674+denobot@users.noreply.github.com>
Date: Fri, 21 Feb 2025 02:35:34 +0100
Subject: [PATCH 001/115] chore: forward v2.2.1 release commit to main (#28213)

This is the release commit being forwarded back to main for 2.2.1

Co-authored-by: bartlomieju <bartlomieju@users.noreply.github.com>
---
 .github/workflows/ci.generate.ts |  2 +-
 .github/workflows/ci.yml         |  8 ++--
 Cargo.lock                       | 72 ++++++++++++++++----------------
 Cargo.toml                       | 68 +++++++++++++++---------------
 Releases.md                      | 17 ++++++++
 bench_util/Cargo.toml            |  2 +-
 cli/Cargo.toml                   |  2 +-
 cli/lib/Cargo.toml               |  2 +-
 cli/lib/version.txt              |  2 +-
 cli/rt/Cargo.toml                |  2 +-
 cli/snapshot/Cargo.toml          |  2 +-
 ext/broadcast_channel/Cargo.toml |  2 +-
 ext/cache/Cargo.toml             |  2 +-
 ext/canvas/Cargo.toml            |  2 +-
 ext/console/Cargo.toml           |  2 +-
 ext/cron/Cargo.toml              |  2 +-
 ext/crypto/Cargo.toml            |  2 +-
 ext/fetch/Cargo.toml             |  2 +-
 ext/ffi/Cargo.toml               |  2 +-
 ext/fs/Cargo.toml                |  2 +-
 ext/http/Cargo.toml              |  2 +-
 ext/io/Cargo.toml                |  2 +-
 ext/kv/Cargo.toml                |  2 +-
 ext/napi/Cargo.toml              |  2 +-
 ext/napi/sym/Cargo.toml          |  2 +-
 ext/net/Cargo.toml               |  2 +-
 ext/node/Cargo.toml              |  2 +-
 ext/os/Cargo.toml                |  2 +-
 ext/process/Cargo.toml           |  2 +-
 ext/telemetry/Cargo.toml         |  2 +-
 ext/tls/Cargo.toml               |  2 +-
 ext/url/Cargo.toml               |  2 +-
 ext/web/Cargo.toml               |  2 +-
 ext/webgpu/Cargo.toml            |  2 +-
 ext/webidl/Cargo.toml            |  2 +-
 ext/websocket/Cargo.toml         |  2 +-
 ext/webstorage/Cargo.toml        |  2 +-
 resolvers/deno/Cargo.toml        |  2 +-
 resolvers/node/Cargo.toml        |  2 +-
 resolvers/npm_cache/Cargo.toml   |  2 +-
 runtime/Cargo.toml               |  2 +-
 runtime/permissions/Cargo.toml   |  2 +-
 42 files changed, 129 insertions(+), 112 deletions(-)

diff --git a/.github/workflows/ci.generate.ts b/.github/workflows/ci.generate.ts
index 358183aa708417..e043d2e23e2f62 100755
--- a/.github/workflows/ci.generate.ts
+++ b/.github/workflows/ci.generate.ts
@@ -5,7 +5,7 @@ import { stringify } from "jsr:@std/yaml@^0.221/stringify";
 // Bump this number when you want to purge the cache.
 // Note: the tools/release/01_bump_crate_versions.ts script will update this version
 // automatically via regex, so ensure that this line maintains this format.
-const cacheVersion = 41;
+const cacheVersion = 42;
 
 const ubuntuX86Runner = "ubuntu-24.04";
 const ubuntuX86XlRunner = "ubuntu-24.04-xl";
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 412d5b43b1643c..ef4512c969ff50 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -184,8 +184,8 @@ jobs:
             ~/.cargo/registry/index
             ~/.cargo/registry/cache
             ~/.cargo/git/db
-          key: '41-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-${{ hashFiles(''Cargo.lock'') }}'
-          restore-keys: '41-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-'
+          key: '42-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-${{ hashFiles(''Cargo.lock'') }}'
+          restore-keys: '42-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-'
         if: '!(matrix.skip)'
       - uses: dsherret/rust-toolchain-file@v1
         if: '!(matrix.skip)'
@@ -381,7 +381,7 @@ jobs:
             !./target/*/*.zip
             !./target/*/*.tar.gz
           key: never_saved
-          restore-keys: '41-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-'
+          restore-keys: '42-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-'
       - name: Apply and update mtime cache
         if: '!(matrix.skip) && (!startsWith(github.ref, ''refs/tags/''))'
         uses: ./.github/mtime_cache
@@ -699,7 +699,7 @@ jobs:
             !./target/*/gn_root
             !./target/*/*.zip
             !./target/*/*.tar.gz
-          key: '41-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-${{ github.sha }}'
+          key: '42-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-${{ github.sha }}'
   wasm:
     name: build wasm32
     needs:
diff --git a/Cargo.lock b/Cargo.lock
index 5a8e7c32961fa1..730cf936c83b5a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1446,7 +1446,7 @@ dependencies = [
 
 [[package]]
 name = "deno"
-version = "2.2.0"
+version = "2.2.1"
 dependencies = [
  "anstream",
  "async-trait",
@@ -1634,7 +1634,7 @@ dependencies = [
 
 [[package]]
 name = "deno_bench_util"
-version = "0.185.0"
+version = "0.186.0"
 dependencies = [
  "bencher",
  "deno_core",
@@ -1643,7 +1643,7 @@ dependencies = [
 
 [[package]]
 name = "deno_broadcast_channel"
-version = "0.185.0"
+version = "0.186.0"
 dependencies = [
  "async-trait",
  "deno_core",
@@ -1655,7 +1655,7 @@ dependencies = [
 
 [[package]]
 name = "deno_cache"
-version = "0.123.0"
+version = "0.124.0"
 dependencies = [
  "anyhow",
  "async-stream",
@@ -1712,7 +1712,7 @@ dependencies = [
 
 [[package]]
 name = "deno_canvas"
-version = "0.60.0"
+version = "0.61.0"
 dependencies = [
  "bytemuck",
  "deno_core",
@@ -1755,7 +1755,7 @@ dependencies = [
 
 [[package]]
 name = "deno_console"
-version = "0.191.0"
+version = "0.192.0"
 dependencies = [
  "deno_core",
 ]
@@ -1807,7 +1807,7 @@ checksum = "fe4dccb6147bb3f3ba0c7a48e993bfeb999d2c2e47a81badee80e2b370c8d695"
 
 [[package]]
 name = "deno_cron"
-version = "0.71.0"
+version = "0.72.0"
 dependencies = [
  "anyhow",
  "async-trait",
@@ -1821,7 +1821,7 @@ dependencies = [
 
 [[package]]
 name = "deno_crypto"
-version = "0.205.0"
+version = "0.206.0"
 dependencies = [
  "aes",
  "aes-gcm",
@@ -1914,7 +1914,7 @@ dependencies = [
 
 [[package]]
 name = "deno_fetch"
-version = "0.215.0"
+version = "0.216.0"
 dependencies = [
  "base64 0.21.7",
  "bytes",
@@ -1952,7 +1952,7 @@ dependencies = [
 
 [[package]]
 name = "deno_ffi"
-version = "0.178.0"
+version = "0.179.0"
 dependencies = [
  "cranelift",
  "cranelift-native",
@@ -1975,7 +1975,7 @@ dependencies = [
 
 [[package]]
 name = "deno_fs"
-version = "0.101.0"
+version = "0.102.0"
 dependencies = [
  "async-trait",
  "base32",
@@ -2033,7 +2033,7 @@ dependencies = [
 
 [[package]]
 name = "deno_http"
-version = "0.189.0"
+version = "0.190.0"
 dependencies = [
  "async-compression",
  "async-trait",
@@ -2074,7 +2074,7 @@ dependencies = [
 
 [[package]]
 name = "deno_io"
-version = "0.101.0"
+version = "0.102.0"
 dependencies = [
  "async-trait",
  "deno_core",
@@ -2096,7 +2096,7 @@ dependencies = [
 
 [[package]]
 name = "deno_kv"
-version = "0.99.0"
+version = "0.100.0"
 dependencies = [
  "anyhow",
  "async-trait",
@@ -2129,7 +2129,7 @@ dependencies = [
 
 [[package]]
 name = "deno_lib"
-version = "0.7.0"
+version = "0.8.0"
 dependencies = [
  "capacity_builder 0.5.0",
  "deno_config",
@@ -2205,7 +2205,7 @@ dependencies = [
 
 [[package]]
 name = "deno_napi"
-version = "0.122.0"
+version = "0.123.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2234,7 +2234,7 @@ dependencies = [
 
 [[package]]
 name = "deno_net"
-version = "0.183.0"
+version = "0.184.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2256,7 +2256,7 @@ dependencies = [
 
 [[package]]
 name = "deno_node"
-version = "0.129.0"
+version = "0.130.0"
 dependencies = [
  "aead-gcm-stream",
  "aes",
@@ -2371,7 +2371,7 @@ dependencies = [
 
 [[package]]
 name = "deno_npm_cache"
-version = "0.10.0"
+version = "0.11.0"
 dependencies = [
  "async-trait",
  "base64 0.21.7",
@@ -2418,7 +2418,7 @@ dependencies = [
 
 [[package]]
 name = "deno_os"
-version = "0.8.0"
+version = "0.9.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2470,7 +2470,7 @@ dependencies = [
 
 [[package]]
 name = "deno_permissions"
-version = "0.50.0"
+version = "0.51.0"
 dependencies = [
  "capacity_builder 0.5.0",
  "deno_core",
@@ -2490,7 +2490,7 @@ dependencies = [
 
 [[package]]
 name = "deno_process"
-version = "0.6.0"
+version = "0.7.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2517,7 +2517,7 @@ dependencies = [
 
 [[package]]
 name = "deno_resolver"
-version = "0.22.0"
+version = "0.23.0"
 dependencies = [
  "anyhow",
  "async-once-cell",
@@ -2551,7 +2551,7 @@ dependencies = [
 
 [[package]]
 name = "deno_runtime"
-version = "0.199.0"
+version = "0.200.0"
 dependencies = [
  "color-print",
  "deno_ast",
@@ -2638,7 +2638,7 @@ dependencies = [
 
 [[package]]
 name = "deno_snapshots"
-version = "0.6.0"
+version = "0.7.0"
 dependencies = [
  "deno_runtime",
 ]
@@ -2663,7 +2663,7 @@ dependencies = [
 
 [[package]]
 name = "deno_telemetry"
-version = "0.13.0"
+version = "0.14.0"
 dependencies = [
  "async-trait",
  "deno_core",
@@ -2708,7 +2708,7 @@ dependencies = [
 
 [[package]]
 name = "deno_tls"
-version = "0.178.0"
+version = "0.179.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2759,7 +2759,7 @@ dependencies = [
 
 [[package]]
 name = "deno_url"
-version = "0.191.0"
+version = "0.192.0"
 dependencies = [
  "deno_bench_util",
  "deno_console",
@@ -2772,7 +2772,7 @@ dependencies = [
 
 [[package]]
 name = "deno_web"
-version = "0.222.0"
+version = "0.223.0"
 dependencies = [
  "async-trait",
  "base64-simd 0.8.0",
@@ -2795,7 +2795,7 @@ dependencies = [
 
 [[package]]
 name = "deno_webgpu"
-version = "0.158.0"
+version = "0.159.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2812,7 +2812,7 @@ dependencies = [
 
 [[package]]
 name = "deno_webidl"
-version = "0.191.0"
+version = "0.192.0"
 dependencies = [
  "deno_bench_util",
  "deno_core",
@@ -2820,7 +2820,7 @@ dependencies = [
 
 [[package]]
 name = "deno_websocket"
-version = "0.196.0"
+version = "0.197.0"
 dependencies = [
  "bytes",
  "deno_core",
@@ -2843,7 +2843,7 @@ dependencies = [
 
 [[package]]
 name = "deno_webstorage"
-version = "0.186.0"
+version = "0.187.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2931,7 +2931,7 @@ dependencies = [
 
 [[package]]
 name = "denort"
-version = "2.2.0"
+version = "2.2.1"
 dependencies = [
  "async-trait",
  "bincode",
@@ -5488,7 +5488,7 @@ dependencies = [
 
 [[package]]
 name = "napi_sym"
-version = "0.121.0"
+version = "0.122.0"
 dependencies = [
  "quote",
  "serde",
@@ -5543,7 +5543,7 @@ dependencies = [
 
 [[package]]
 name = "node_resolver"
-version = "0.29.0"
+version = "0.30.0"
 dependencies = [
  "anyhow",
  "async-trait",
diff --git a/Cargo.toml b/Cargo.toml
index a8e045983588b0..81980a369f0101 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -53,17 +53,17 @@ repository = "https://github.com/denoland/deno"
 deno_ast = { version = "=0.44.0", features = ["transpiling"] }
 deno_core = { version = "0.338.0" }
 
-deno_bench_util = { version = "0.185.0", path = "./bench_util" }
+deno_bench_util = { version = "0.186.0", path = "./bench_util" }
 deno_config = { version = "=0.49.0", features = ["workspace"] }
 deno_lockfile = "=0.24.0"
 deno_media_type = { version = "=0.2.6", features = ["module_specifier"] }
 deno_npm = "=0.27.2"
 deno_path_util = "=0.3.1"
-deno_permissions = { version = "0.50.0", path = "./runtime/permissions" }
-deno_runtime = { version = "0.199.0", path = "./runtime" }
+deno_permissions = { version = "0.51.0", path = "./runtime/permissions" }
+deno_runtime = { version = "0.200.0", path = "./runtime" }
 deno_semver = "=0.7.1"
 deno_terminal = "0.2.0"
-napi_sym = { version = "0.121.0", path = "./ext/napi/sym" }
+napi_sym = { version = "0.122.0", path = "./ext/napi/sym" }
 test_util = { package = "test_server", path = "./tests/util/server" }
 
 denokv_proto = "0.9.0"
@@ -72,38 +72,38 @@ denokv_remote = "0.9.0"
 denokv_sqlite = { default-features = false, version = "0.9.0" }
 
 # exts
-deno_broadcast_channel = { version = "0.185.0", path = "./ext/broadcast_channel" }
-deno_cache = { version = "0.123.0", path = "./ext/cache" }
-deno_canvas = { version = "0.60.0", path = "./ext/canvas" }
-deno_console = { version = "0.191.0", path = "./ext/console" }
-deno_cron = { version = "0.71.0", path = "./ext/cron" }
-deno_crypto = { version = "0.205.0", path = "./ext/crypto" }
-deno_fetch = { version = "0.215.0", path = "./ext/fetch" }
-deno_ffi = { version = "0.178.0", path = "./ext/ffi" }
-deno_fs = { version = "0.101.0", path = "./ext/fs" }
-deno_http = { version = "0.189.0", path = "./ext/http" }
-deno_io = { version = "0.101.0", path = "./ext/io" }
-deno_kv = { version = "0.99.0", path = "./ext/kv" }
-deno_napi = { version = "0.122.0", path = "./ext/napi" }
-deno_net = { version = "0.183.0", path = "./ext/net" }
-deno_node = { version = "0.129.0", path = "./ext/node" }
-deno_os = { version = "0.8.0", path = "./ext/os" }
-deno_process = { version = "0.6.0", path = "./ext/process" }
-deno_telemetry = { version = "0.13.0", path = "./ext/telemetry" }
-deno_tls = { version = "0.178.0", path = "./ext/tls" }
-deno_url = { version = "0.191.0", path = "./ext/url" }
-deno_web = { version = "0.222.0", path = "./ext/web" }
-deno_webgpu = { version = "0.158.0", path = "./ext/webgpu" }
-deno_webidl = { version = "0.191.0", path = "./ext/webidl" }
-deno_websocket = { version = "0.196.0", path = "./ext/websocket" }
-deno_webstorage = { version = "0.186.0", path = "./ext/webstorage" }
+deno_broadcast_channel = { version = "0.186.0", path = "./ext/broadcast_channel" }
+deno_cache = { version = "0.124.0", path = "./ext/cache" }
+deno_canvas = { version = "0.61.0", path = "./ext/canvas" }
+deno_console = { version = "0.192.0", path = "./ext/console" }
+deno_cron = { version = "0.72.0", path = "./ext/cron" }
+deno_crypto = { version = "0.206.0", path = "./ext/crypto" }
+deno_fetch = { version = "0.216.0", path = "./ext/fetch" }
+deno_ffi = { version = "0.179.0", path = "./ext/ffi" }
+deno_fs = { version = "0.102.0", path = "./ext/fs" }
+deno_http = { version = "0.190.0", path = "./ext/http" }
+deno_io = { version = "0.102.0", path = "./ext/io" }
+deno_kv = { version = "0.100.0", path = "./ext/kv" }
+deno_napi = { version = "0.123.0", path = "./ext/napi" }
+deno_net = { version = "0.184.0", path = "./ext/net" }
+deno_node = { version = "0.130.0", path = "./ext/node" }
+deno_os = { version = "0.9.0", path = "./ext/os" }
+deno_process = { version = "0.7.0", path = "./ext/process" }
+deno_telemetry = { version = "0.14.0", path = "./ext/telemetry" }
+deno_tls = { version = "0.179.0", path = "./ext/tls" }
+deno_url = { version = "0.192.0", path = "./ext/url" }
+deno_web = { version = "0.223.0", path = "./ext/web" }
+deno_webgpu = { version = "0.159.0", path = "./ext/webgpu" }
+deno_webidl = { version = "0.192.0", path = "./ext/webidl" }
+deno_websocket = { version = "0.197.0", path = "./ext/websocket" }
+deno_webstorage = { version = "0.187.0", path = "./ext/webstorage" }
 
 # workspace libraries
-deno_lib = { version = "0.7.0", path = "./cli/lib" }
-deno_npm_cache = { version = "0.10.0", path = "./resolvers/npm_cache" }
-deno_resolver = { version = "0.22.0", path = "./resolvers/deno" }
-deno_snapshots = { version = "0.6.0", path = "./cli/snapshot" }
-node_resolver = { version = "0.29.0", path = "./resolvers/node" }
+deno_lib = { version = "0.8.0", path = "./cli/lib" }
+deno_npm_cache = { version = "0.11.0", path = "./resolvers/npm_cache" }
+deno_resolver = { version = "0.23.0", path = "./resolvers/deno" }
+deno_snapshots = { version = "0.7.0", path = "./cli/snapshot" }
+node_resolver = { version = "0.30.0", path = "./resolvers/node" }
 
 aes = "=0.8.3"
 anyhow = "1.0.57"
diff --git a/Releases.md b/Releases.md
index f050c9797c62bb..9ff29113804afb 100644
--- a/Releases.md
+++ b/Releases.md
@@ -6,6 +6,23 @@ https://github.com/denoland/deno/releases
 We also have one-line install commands at:
 https://github.com/denoland/deno_install
 
+### 2.2.1 / 2025.02.20
+
+- fix(check): remove instability in loading lib files (#28202)
+- fix(check/lsp): fall back to `@types/*` packages if npm package doesn't have
+  types (#28185)
+- fix(coverage): exclude scripts with invalid URLs from raw coverage output
+  (#28210)
+- fix(ext/cache): add missing Cargo feature (#28178)
+- fix(ext/node): Fix handling of sqlite large integers (#28193)
+- fix(ext/node): rewrite SQLite named parameter handing (#28197)
+- fix(outdated): hint to use `--latest` if new versions are available in
+  `outdated --update` (#28190)
+- fix(publish): support jsx/tsx (#28188)
+- fix: better jsx workspace config resolution (#28186)
+- fix: don't panic when running with // as a filepath (#28189)
+- fix: move extension file declarations to cli/tsc/dts (#28180)
+
 ### 2.2.0 / 2025.02.18
 
 - feat(bench): add `--permit-no-files` (#27048)
diff --git a/bench_util/Cargo.toml b/bench_util/Cargo.toml
index 46470cd5ed3544..630a0d90c40c1d 100644
--- a/bench_util/Cargo.toml
+++ b/bench_util/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_bench_util"
-version = "0.185.0"
+version = "0.186.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index 140b8dd8b5e1ad..dd2b6b79cde890 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno"
-version = "2.2.0"
+version = "2.2.1"
 authors.workspace = true
 default-run = "deno"
 edition.workspace = true
diff --git a/cli/lib/Cargo.toml b/cli/lib/Cargo.toml
index 08170444dfe0a3..d0cd59e96d67ab 100644
--- a/cli/lib/Cargo.toml
+++ b/cli/lib/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_lib"
-version = "0.7.0"
+version = "0.8.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/cli/lib/version.txt b/cli/lib/version.txt
index e3a4f193364d7a..fae692e41d4f76 100644
--- a/cli/lib/version.txt
+++ b/cli/lib/version.txt
@@ -1 +1 @@
-2.2.0
\ No newline at end of file
+2.2.1
\ No newline at end of file
diff --git a/cli/rt/Cargo.toml b/cli/rt/Cargo.toml
index 39e63750aafb54..475d051e63c621 100644
--- a/cli/rt/Cargo.toml
+++ b/cli/rt/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "denort"
-version = "2.2.0"
+version = "2.2.1"
 authors.workspace = true
 default-run = "denort"
 edition.workspace = true
diff --git a/cli/snapshot/Cargo.toml b/cli/snapshot/Cargo.toml
index f08e699409023d..910447144d15b6 100644
--- a/cli/snapshot/Cargo.toml
+++ b/cli/snapshot/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_snapshots"
-version = "0.6.0"
+version = "0.7.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/broadcast_channel/Cargo.toml b/ext/broadcast_channel/Cargo.toml
index 6fa12eb66ac001..3361e74e31f0e0 100644
--- a/ext/broadcast_channel/Cargo.toml
+++ b/ext/broadcast_channel/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_broadcast_channel"
-version = "0.185.0"
+version = "0.186.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/cache/Cargo.toml b/ext/cache/Cargo.toml
index a4ad20080492a5..b76d6937e26b3d 100644
--- a/ext/cache/Cargo.toml
+++ b/ext/cache/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_cache"
-version = "0.123.0"
+version = "0.124.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/canvas/Cargo.toml b/ext/canvas/Cargo.toml
index 09b640c88174b3..d70877c46b7b63 100644
--- a/ext/canvas/Cargo.toml
+++ b/ext/canvas/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_canvas"
-version = "0.60.0"
+version = "0.61.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/console/Cargo.toml b/ext/console/Cargo.toml
index f20593f8d7c7ec..d791464caa51dc 100644
--- a/ext/console/Cargo.toml
+++ b/ext/console/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_console"
-version = "0.191.0"
+version = "0.192.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/cron/Cargo.toml b/ext/cron/Cargo.toml
index 411ce9afa5e378..3a4d2b46470240 100644
--- a/ext/cron/Cargo.toml
+++ b/ext/cron/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_cron"
-version = "0.71.0"
+version = "0.72.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/crypto/Cargo.toml b/ext/crypto/Cargo.toml
index 193b8ce4a45592..30792821a79134 100644
--- a/ext/crypto/Cargo.toml
+++ b/ext/crypto/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_crypto"
-version = "0.205.0"
+version = "0.206.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/fetch/Cargo.toml b/ext/fetch/Cargo.toml
index 94ade7c68f90aa..669f2cbd68f10a 100644
--- a/ext/fetch/Cargo.toml
+++ b/ext/fetch/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_fetch"
-version = "0.215.0"
+version = "0.216.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/ffi/Cargo.toml b/ext/ffi/Cargo.toml
index 6fa43fd6beb665..ddbad91d2f8b59 100644
--- a/ext/ffi/Cargo.toml
+++ b/ext/ffi/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_ffi"
-version = "0.178.0"
+version = "0.179.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/fs/Cargo.toml b/ext/fs/Cargo.toml
index 3ab1cd46f5cb75..6859edfe2b0b05 100644
--- a/ext/fs/Cargo.toml
+++ b/ext/fs/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_fs"
-version = "0.101.0"
+version = "0.102.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/http/Cargo.toml b/ext/http/Cargo.toml
index 4e76a16337b16e..08cfd8f6b7b94c 100644
--- a/ext/http/Cargo.toml
+++ b/ext/http/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_http"
-version = "0.189.0"
+version = "0.190.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/io/Cargo.toml b/ext/io/Cargo.toml
index eebf52f96df1b2..5213d14e2d29d8 100644
--- a/ext/io/Cargo.toml
+++ b/ext/io/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_io"
-version = "0.101.0"
+version = "0.102.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/kv/Cargo.toml b/ext/kv/Cargo.toml
index ee0b06dcf12828..a38b13a31ee4b1 100644
--- a/ext/kv/Cargo.toml
+++ b/ext/kv/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_kv"
-version = "0.99.0"
+version = "0.100.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/napi/Cargo.toml b/ext/napi/Cargo.toml
index 32388e0119fb9c..a302cc7fd0b490 100644
--- a/ext/napi/Cargo.toml
+++ b/ext/napi/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_napi"
-version = "0.122.0"
+version = "0.123.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/napi/sym/Cargo.toml b/ext/napi/sym/Cargo.toml
index 68d9e2647969c2..ba0aef01920004 100644
--- a/ext/napi/sym/Cargo.toml
+++ b/ext/napi/sym/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "napi_sym"
-version = "0.121.0"
+version = "0.122.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/net/Cargo.toml b/ext/net/Cargo.toml
index 4737fb9228c7f7..4730ee196bf186 100644
--- a/ext/net/Cargo.toml
+++ b/ext/net/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_net"
-version = "0.183.0"
+version = "0.184.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/node/Cargo.toml b/ext/node/Cargo.toml
index 55b1321bd14d92..64990d44ce926c 100644
--- a/ext/node/Cargo.toml
+++ b/ext/node/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_node"
-version = "0.129.0"
+version = "0.130.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/os/Cargo.toml b/ext/os/Cargo.toml
index 095460a8d45b6c..37006f814a797e 100644
--- a/ext/os/Cargo.toml
+++ b/ext/os/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_os"
-version = "0.8.0"
+version = "0.9.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/process/Cargo.toml b/ext/process/Cargo.toml
index 84cf289a6a01f9..127ae4191a5563 100644
--- a/ext/process/Cargo.toml
+++ b/ext/process/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_process"
-version = "0.6.0"
+version = "0.7.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/telemetry/Cargo.toml b/ext/telemetry/Cargo.toml
index 26093360be3208..e26b7f0d96bdb3 100644
--- a/ext/telemetry/Cargo.toml
+++ b/ext/telemetry/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_telemetry"
-version = "0.13.0"
+version = "0.14.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/tls/Cargo.toml b/ext/tls/Cargo.toml
index 699f566672a1ae..54d23958946d76 100644
--- a/ext/tls/Cargo.toml
+++ b/ext/tls/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_tls"
-version = "0.178.0"
+version = "0.179.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/url/Cargo.toml b/ext/url/Cargo.toml
index 17199ce79d2264..968744723e0657 100644
--- a/ext/url/Cargo.toml
+++ b/ext/url/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_url"
-version = "0.191.0"
+version = "0.192.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/web/Cargo.toml b/ext/web/Cargo.toml
index 8f1f92ad1fdbed..d4156a286a8aa1 100644
--- a/ext/web/Cargo.toml
+++ b/ext/web/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_web"
-version = "0.222.0"
+version = "0.223.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/webgpu/Cargo.toml b/ext/webgpu/Cargo.toml
index 480792c8e48307..1f9f1faee30444 100644
--- a/ext/webgpu/Cargo.toml
+++ b/ext/webgpu/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_webgpu"
-version = "0.158.0"
+version = "0.159.0"
 authors = ["the Deno authors"]
 edition.workspace = true
 license = "MIT"
diff --git a/ext/webidl/Cargo.toml b/ext/webidl/Cargo.toml
index dd5aa2e1a94f06..4056f4e802aa99 100644
--- a/ext/webidl/Cargo.toml
+++ b/ext/webidl/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_webidl"
-version = "0.191.0"
+version = "0.192.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/websocket/Cargo.toml b/ext/websocket/Cargo.toml
index 8a5a1c8a033905..a6c3354b67ebc1 100644
--- a/ext/websocket/Cargo.toml
+++ b/ext/websocket/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_websocket"
-version = "0.196.0"
+version = "0.197.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/webstorage/Cargo.toml b/ext/webstorage/Cargo.toml
index a062049ef4d385..ab13f27ac8f3e7 100644
--- a/ext/webstorage/Cargo.toml
+++ b/ext/webstorage/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_webstorage"
-version = "0.186.0"
+version = "0.187.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/resolvers/deno/Cargo.toml b/resolvers/deno/Cargo.toml
index be67b0e96860ba..8d9c3681e13c48 100644
--- a/resolvers/deno/Cargo.toml
+++ b/resolvers/deno/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_resolver"
-version = "0.22.0"
+version = "0.23.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/resolvers/node/Cargo.toml b/resolvers/node/Cargo.toml
index ca31b15fd12b59..a20d4d9e813f6c 100644
--- a/resolvers/node/Cargo.toml
+++ b/resolvers/node/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "node_resolver"
-version = "0.29.0"
+version = "0.30.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/resolvers/npm_cache/Cargo.toml b/resolvers/npm_cache/Cargo.toml
index de784c3cac5291..027c741e89cdc7 100644
--- a/resolvers/npm_cache/Cargo.toml
+++ b/resolvers/npm_cache/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_npm_cache"
-version = "0.10.0"
+version = "0.11.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml
index 81770bef7853d7..28408115348e30 100644
--- a/runtime/Cargo.toml
+++ b/runtime/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_runtime"
-version = "0.199.0"
+version = "0.200.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/runtime/permissions/Cargo.toml b/runtime/permissions/Cargo.toml
index 8f37834397cee6..8d5919af22c190 100644
--- a/runtime/permissions/Cargo.toml
+++ b/runtime/permissions/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_permissions"
-version = "0.50.0"
+version = "0.51.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true

From 648ee8f0e7eaef8ff24d7690ffce9fad44c8f4d5 Mon Sep 17 00:00:00 2001
From: Divy Srivastava <dj.srivastava23@gmail.com>
Date: Fri, 21 Feb 2025 10:18:38 +0530
Subject: [PATCH 002/115] fix(ext/node): decipherIv() range error on invalid
 final block length (#28215)

Fixes https://github.com/denoland/deno/issues/28208
---
 ext/node/ops/crypto/cipher.rs                | 21 ++++++++++++++-----
 tests/unit_node/crypto/crypto_cipher_test.ts | 22 ++++++++++++++++++++
 2 files changed, 38 insertions(+), 5 deletions(-)

diff --git a/ext/node/ops/crypto/cipher.rs b/ext/node/ops/crypto/cipher.rs
index 3d116c68e69449..02e9777d88a6f1 100644
--- a/ext/node/ops/crypto/cipher.rs
+++ b/ext/node/ops/crypto/cipher.rs
@@ -424,6 +424,9 @@ pub enum DecipherError {
   #[class(range)]
   #[error("Invalid key length")]
   InvalidKeyLength,
+  #[class(range)]
+  #[error("Wrong final block length")]
+  InvalidFinalBlockLength,
   #[class(type)]
   #[error("Invalid initialization vector")]
   InvalidInitializationVector,
@@ -444,6 +447,14 @@ pub enum DecipherError {
   UnknownCipher(String),
 }
 
+macro_rules! assert_block_len {
+  ($input:expr, $len:expr) => {
+    if $input != $len {
+      return Err(DecipherError::InvalidFinalBlockLength);
+    }
+  };
+}
+
 impl Decipher {
   fn new(
     algorithm_name: &str,
@@ -604,7 +615,7 @@ impl Decipher {
 
     match (self, auto_pad) {
       (Aes128Cbc(decryptor), true) => {
-        assert!(input.len() == 16);
+        assert_block_len!(input.len(), 16);
         let _ = (*decryptor)
           .decrypt_padded_b2b_mut::<Pkcs7>(input, output)
           .map_err(|_| DecipherError::CannotUnpadInputData)?;
@@ -618,7 +629,7 @@ impl Decipher {
         Ok(())
       }
       (Aes128Ecb(decryptor), true) => {
-        assert!(input.len() == 16);
+        assert_block_len!(input.len(), 16);
         let _ = (*decryptor)
           .decrypt_padded_b2b_mut::<Pkcs7>(input, output)
           .map_err(|_| DecipherError::CannotUnpadInputData)?;
@@ -632,7 +643,7 @@ impl Decipher {
         Ok(())
       }
       (Aes192Ecb(decryptor), true) => {
-        assert!(input.len() == 16);
+        assert_block_len!(input.len(), 16);
         let _ = (*decryptor)
           .decrypt_padded_b2b_mut::<Pkcs7>(input, output)
           .map_err(|_| DecipherError::CannotUnpadInputData)?;
@@ -646,7 +657,7 @@ impl Decipher {
         Ok(())
       }
       (Aes256Ecb(decryptor), true) => {
-        assert!(input.len() == 16);
+        assert_block_len!(input.len(), 16);
         let _ = (*decryptor)
           .decrypt_padded_b2b_mut::<Pkcs7>(input, output)
           .map_err(|_| DecipherError::CannotUnpadInputData)?;
@@ -682,7 +693,7 @@ impl Decipher {
         Err(DecipherError::SetAutoPaddingFalseAes256GcmUnsupported)
       }
       (Aes256Cbc(decryptor), true) => {
-        assert!(input.len() == 16);
+        assert_block_len!(input.len(), 16);
         let _ = (*decryptor)
           .decrypt_padded_b2b_mut::<Pkcs7>(input, output)
           .map_err(|_| DecipherError::CannotUnpadInputData)?;
diff --git a/tests/unit_node/crypto/crypto_cipher_test.ts b/tests/unit_node/crypto/crypto_cipher_test.ts
index 64ff65078ebd4c..2c672fcdd54053 100644
--- a/tests/unit_node/crypto/crypto_cipher_test.ts
+++ b/tests/unit_node/crypto/crypto_cipher_test.ts
@@ -447,3 +447,25 @@ Deno.test({
     }
   },
 });
+
+Deno.test({
+  name: "createDecipheriv - invalid final block len",
+  fn() {
+    const algorithm = "aes-256-cbc";
+    const key = Buffer.from(
+      "84dcdd964968734fdf0de4a2cba471c2e0a753930b841c014b1e77f456b5797b",
+      "hex",
+    );
+    const iv = Buffer.alloc(16, 0);
+
+    const decipher = crypto.createDecipheriv(algorithm, key, iv);
+    decipher.update(Buffer.alloc(12));
+    assertThrows(
+      () => {
+        decipher.final();
+      },
+      RangeError,
+      "Wrong final block length",
+    );
+  },
+});

From f800f5444a165d98ca12aa3efab08a15774f4d4c Mon Sep 17 00:00:00 2001
From: Leo Kettmeir <crowlkats@toaxl.com>
Date: Fri, 21 Feb 2025 11:46:56 +0100
Subject: [PATCH 003/115] chore: remove unused dependencies (#28204)

---
 Cargo.lock                | 39 ---------------------------------------
 cli/Cargo.toml            |  8 --------
 cli/lib/Cargo.toml        |  5 -----
 cli/rt/Cargo.toml         |  3 ---
 ext/cache/Cargo.toml      |  1 -
 ext/canvas/Cargo.toml     |  3 ---
 ext/cron/Cargo.toml       |  1 -
 ext/crypto/Cargo.toml     |  2 --
 ext/kv/Cargo.toml         |  4 ----
 ext/node/Cargo.toml       | 10 +---------
 ext/url/Cargo.toml        |  1 -
 ext/webstorage/Cargo.toml |  1 -
 runtime/Cargo.toml        |  6 ------
 13 files changed, 1 insertion(+), 83 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 730cf936c83b5a..dd7c3bd25173bc 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1454,7 +1454,6 @@ dependencies = [
  "bincode",
  "boxed_error",
  "bytes",
- "cache_control",
  "capacity_builder 0.5.0",
  "chrono",
  "clap",
@@ -1464,7 +1463,6 @@ dependencies = [
  "console_static_text",
  "crossterm",
  "dashmap",
- "data-encoding",
  "deno_ast",
  "deno_bench_util",
  "deno_cache_dir",
@@ -1501,11 +1499,9 @@ dependencies = [
  "flate2",
  "fs3",
  "glibc_version",
- "glob",
  "http 1.1.0",
  "http-body 1.0.0",
  "http-body-util",
- "hyper-util",
  "import_map",
  "indexmap 2.3.0",
  "jsonc-parser",
@@ -1519,7 +1515,6 @@ dependencies = [
  "malva",
  "markup_fmt",
  "memmem",
- "monch",
  "nix",
  "node_resolver",
  "notify",
@@ -1563,15 +1558,12 @@ dependencies = [
  "tracing",
  "tracing-opentelemetry",
  "tracing-subscriber",
- "twox-hash",
  "typed-arena",
  "unicode-width",
  "uuid",
  "walkdir",
- "which",
  "winapi",
  "winres",
- "zeromq",
  "zip",
  "zstd",
 ]
@@ -1657,7 +1649,6 @@ dependencies = [
 name = "deno_cache"
 version = "0.124.0"
 dependencies = [
- "anyhow",
  "async-stream",
  "async-trait",
  "base64 0.21.7",
@@ -1717,12 +1708,9 @@ dependencies = [
  "bytemuck",
  "deno_core",
  "deno_error",
- "deno_terminal 0.2.0",
- "deno_webgpu",
  "image",
  "lcms2",
  "num-traits",
- "serde",
  "thiserror 2.0.3",
 ]
 
@@ -1809,7 +1797,6 @@ checksum = "fe4dccb6147bb3f3ba0c7a48e993bfeb999d2c2e47a81badee80e2b370c8d695"
 name = "deno_cron"
 version = "0.72.0"
 dependencies = [
- "anyhow",
  "async-trait",
  "chrono",
  "deno_core",
@@ -1844,12 +1831,10 @@ dependencies = [
  "rand",
  "ring",
  "rsa",
- "sec1",
  "serde",
  "serde_bytes",
  "sha1",
  "sha2",
- "signature",
  "spki",
  "thiserror 2.0.3",
  "tokio",
@@ -2118,8 +2103,6 @@ dependencies = [
  "http-body-util",
  "log",
  "num-bigint",
- "prost",
- "prost-build",
  "rand",
  "rusqlite",
  "serde",
@@ -2132,7 +2115,6 @@ name = "deno_lib"
 version = "0.8.0"
 dependencies = [
  "capacity_builder 0.5.0",
- "deno_config",
  "deno_error",
  "deno_fs",
  "deno_media_type",
@@ -2154,9 +2136,7 @@ dependencies = [
  "serde",
  "serde_json",
  "sys_traits",
- "test_server",
  "thiserror 2.0.3",
- "tokio",
  "twox-hash",
  "url",
 ]
@@ -2260,7 +2240,6 @@ version = "0.130.0"
 dependencies = [
  "aead-gcm-stream",
  "aes",
- "async-trait",
  "base64 0.21.7",
  "blake2",
  "boxed_error",
@@ -2297,16 +2276,13 @@ dependencies = [
  "hyper 1.6.0",
  "hyper-util",
  "idna",
- "indexmap 2.3.0",
  "ipnetwork",
  "k256",
- "lazy-regex",
  "libc",
  "libsqlite3-sys",
  "libz-sys",
  "md-5",
  "md4",
- "memchr",
  "node_resolver",
  "num-bigint",
  "num-bigint-dig",
@@ -2316,11 +2292,9 @@ dependencies = [
  "p224",
  "p256",
  "p384",
- "path-clean",
  "pbkdf2",
  "pkcs8",
  "rand",
- "regex",
  "ring",
  "ripemd",
  "rsa",
@@ -2332,10 +2306,8 @@ dependencies = [
  "sha2",
  "sha3",
  "signature",
- "simd-json",
  "sm3",
  "spki",
- "stable_deref_trait",
  "sys_traits",
  "thiserror 2.0.3",
  "tokio",
@@ -2586,12 +2558,10 @@ dependencies = [
  "deno_webidl",
  "deno_websocket",
  "deno_webstorage",
- "dlopen2",
  "encoding_rs",
  "fastwebsockets",
  "http 1.1.0",
  "http-body-util",
- "hyper 0.14.28",
  "hyper 1.6.0",
  "hyper-util",
  "libc",
@@ -2601,20 +2571,16 @@ dependencies = [
  "notify",
  "ntapi",
  "once_cell",
- "percent-encoding",
- "regex",
  "rustyline",
  "same-file",
  "serde",
  "sys_traits",
- "tempfile",
  "test_server",
  "thiserror 2.0.3",
  "tokio",
  "tokio-metrics",
  "twox-hash",
  "uuid",
- "which",
  "winapi",
  "windows-sys 0.59.0",
 ]
@@ -2766,7 +2732,6 @@ dependencies = [
  "deno_core",
  "deno_error",
  "deno_webidl",
- "thiserror 2.0.3",
  "urlpattern",
 ]
 
@@ -2847,7 +2812,6 @@ version = "0.187.0"
 dependencies = [
  "deno_core",
  "deno_error",
- "deno_web",
  "rusqlite",
  "thiserror 2.0.3",
 ]
@@ -2954,15 +2918,12 @@ dependencies = [
  "libsui",
  "log",
  "node_resolver",
- "pretty_assertions",
  "serde",
  "serde_json",
  "sys_traits",
  "test_server",
  "thiserror 2.0.3",
  "tokio",
- "tokio-util",
- "twox-hash",
  "url",
 ]
 
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index dd2b6b79cde890..5940ddf9cc8e55 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -98,7 +98,6 @@ base64.workspace = true
 bincode = "=1.3.3"
 boxed_error.workspace = true
 bytes.workspace = true
-cache_control.workspace = true
 capacity_builder.workspace = true
 chrono = { workspace = true, features = ["now"] }
 clap = { version = "=4.5.16", features = ["env", "string", "wrap_help", "error-context"] }
@@ -108,7 +107,6 @@ color-print.workspace = true
 console_static_text.workspace = true
 crossterm = "0.28.1"
 dashmap.workspace = true
-data-encoding.workspace = true
 dhat = { version = "0.3.3", optional = true }
 dissimilar = "=1.0.4"
 dotenvy = "0.15.7"
@@ -121,11 +119,9 @@ faster-hex.workspace = true
 # If you disable the default __vendored_zlib_ng feature above, you _must_ be able to link against `-lz`.
 flate2.workspace = true
 fs3.workspace = true
-glob = "0.3.1"
 http.workspace = true
 http-body.workspace = true
 http-body-util.workspace = true
-hyper-util.workspace = true
 import_map = { version = "=0.21.0", features = ["ext"] }
 indexmap.workspace = true
 jsonc-parser = { workspace = true, features = ["cst", "serde"] }
@@ -138,7 +134,6 @@ lsp-types.workspace = true
 malva = "=0.11.0"
 markup_fmt = "=0.18.0"
 memmem.workspace = true
-monch.workspace = true
 notify.workspace = true
 once_cell.workspace = true
 open = "5.0.1"
@@ -176,13 +171,10 @@ tower-lsp.workspace = true
 tracing = { version = "0.1", features = ["log"], optional = true }
 tracing-opentelemetry = { version = "0.28.0", optional = true }
 tracing-subscriber = { version = "0.3.19", features = ["env-filter"], optional = true }
-twox-hash.workspace = true
 typed-arena = "=2.0.2"
 unicode-width = "0.1.3"
 uuid = { workspace = true, features = ["serde"] }
 walkdir.workspace = true
-which.workspace = true
-zeromq.workspace = true
 zip = { version = "2.1.6", default-features = false, features = ["deflate-flate2"] }
 zstd.workspace = true
 
diff --git a/cli/lib/Cargo.toml b/cli/lib/Cargo.toml
index d0cd59e96d67ab..ba4ce1f4a3a710 100644
--- a/cli/lib/Cargo.toml
+++ b/cli/lib/Cargo.toml
@@ -15,7 +15,6 @@ path = "lib.rs"
 
 [dependencies]
 capacity_builder.workspace = true
-deno_config = { workspace = true, features = ["sync", "workspace"] }
 deno_error.workspace = true
 deno_fs = { workspace = true, features = ["sync_fs"] }
 deno_media_type.workspace = true
@@ -38,9 +37,5 @@ serde = { workspace = true, features = ["derive"] }
 serde_json.workspace = true
 sys_traits = { workspace = true, features = ["getrandom"] }
 thiserror.workspace = true
-tokio.workspace = true
 twox-hash.workspace = true
 url.workspace = true
-
-[dev-dependencies]
-test_util.workspace = true
diff --git a/cli/rt/Cargo.toml b/cli/rt/Cargo.toml
index 475d051e63c621..1e66cd204128d3 100644
--- a/cli/rt/Cargo.toml
+++ b/cli/rt/Cargo.toml
@@ -53,11 +53,8 @@ serde_json.workspace = true
 sys_traits = { workspace = true, features = ["getrandom", "filetime", "libc", "real", "strip_unc", "winapi"] }
 thiserror.workspace = true
 tokio.workspace = true
-tokio-util.workspace = true
-twox-hash.workspace = true
 url.workspace = true
 
 [dev-dependencies]
-pretty_assertions.workspace = true
 sys_traits = { workspace = true, features = ["memory"] }
 test_util.workspace = true
diff --git a/ext/cache/Cargo.toml b/ext/cache/Cargo.toml
index b76d6937e26b3d..bf871ed43e509d 100644
--- a/ext/cache/Cargo.toml
+++ b/ext/cache/Cargo.toml
@@ -14,7 +14,6 @@ description = "Implementation of Cache API for Deno"
 path = "lib.rs"
 
 [dependencies]
-anyhow.workspace = true
 async-stream.workspace = true
 async-trait.workspace = true
 base64.workspace = true
diff --git a/ext/canvas/Cargo.toml b/ext/canvas/Cargo.toml
index d70877c46b7b63..7aa12ec4e81612 100644
--- a/ext/canvas/Cargo.toml
+++ b/ext/canvas/Cargo.toml
@@ -17,8 +17,6 @@ path = "lib.rs"
 bytemuck = "1.17.1"
 deno_core.workspace = true
 deno_error.workspace = true
-deno_terminal.workspace = true
-deno_webgpu.workspace = true
 image = { version = "0.25.4", default-features = false, features = ["png", "jpeg", "bmp", "ico" # NOTE: Temporarily not supported due to build size concerns
   # https://github.com/denoland/deno/pull/25517#issuecomment-2626044644
   # "webp", "gif"
@@ -30,5 +28,4 @@ image = { version = "0.25.4", default-features = false, features = ["png", "jpeg
 # https://github.com/kornelski/rust-lcms2-sys/blob/b8e9c3efcf266b88600318fb519c073b9ebb61b7/README.md#L26
 lcms2 = { version = "6.1.0", features = ["static"] }
 num-traits = { version = "0.2.19" }
-serde = { workspace = true, features = ["derive"] }
 thiserror.workspace = true
diff --git a/ext/cron/Cargo.toml b/ext/cron/Cargo.toml
index 3a4d2b46470240..f6a4a6b4bb2cf9 100644
--- a/ext/cron/Cargo.toml
+++ b/ext/cron/Cargo.toml
@@ -14,7 +14,6 @@ description = "Implementation of the Deno cron API"
 path = "lib.rs"
 
 [dependencies]
-anyhow.workspace = true
 async-trait.workspace = true
 chrono = { workspace = true, features = ["now"] }
 deno_core.workspace = true
diff --git a/ext/crypto/Cargo.toml b/ext/crypto/Cargo.toml
index 30792821a79134..44011ae8dcecb1 100644
--- a/ext/crypto/Cargo.toml
+++ b/ext/crypto/Cargo.toml
@@ -35,12 +35,10 @@ p521 = "0.13.3"
 rand.workspace = true
 ring = { workspace = true, features = ["std"] }
 rsa.workspace = true
-sec1.workspace = true
 serde.workspace = true
 serde_bytes.workspace = true
 sha1.workspace = true
 sha2.workspace = true
-signature.workspace = true
 spki.workspace = true
 thiserror.workspace = true
 tokio.workspace = true
diff --git a/ext/kv/Cargo.toml b/ext/kv/Cargo.toml
index a38b13a31ee4b1..46db1f541f3a58 100644
--- a/ext/kv/Cargo.toml
+++ b/ext/kv/Cargo.toml
@@ -34,12 +34,8 @@ http.workspace = true
 http-body-util.workspace = true
 log.workspace = true
 num-bigint.workspace = true
-prost.workspace = true
 rand.workspace = true
 rusqlite.workspace = true
 serde.workspace = true
 thiserror.workspace = true
 url.workspace = true
-
-[build-dependencies]
-prost-build.workspace = true
diff --git a/ext/node/Cargo.toml b/ext/node/Cargo.toml
index 64990d44ce926c..4c3efe189a1817 100644
--- a/ext/node/Cargo.toml
+++ b/ext/node/Cargo.toml
@@ -19,7 +19,6 @@ sync_fs = ["deno_fs/sync_fs", "deno_package_json/sync", "node_resolver/sync"]
 [dependencies]
 aead-gcm-stream = "0.4"
 aes.workspace = true
-async-trait.workspace = true
 base64.workspace = true
 blake2 = "0.10.6"
 boxed_error.workspace = true
@@ -55,16 +54,13 @@ http-body-util.workspace = true
 hyper.workspace = true
 hyper-util.workspace = true
 idna = "1.0.3"
-indexmap.workspace = true
 ipnetwork = "0.20.0"
 k256 = "0.13.1"
-lazy-regex.workspace = true
 libc.workspace = true
 libsqlite3-sys = "0.30.1"
 libz-sys.workspace = true
 md-5 = { version = "0.10.5", features = ["oid"] }
 md4 = "0.10.2"
-memchr = "2.7.4"
 node_resolver.workspace = true
 num-bigint.workspace = true
 num-bigint-dig = "0.8.2"
@@ -74,26 +70,22 @@ once_cell.workspace = true
 p224.workspace = true
 p256.workspace = true
 p384.workspace = true
-path-clean = "=0.1.0"
 pbkdf2 = "0.12.1"
 pkcs8 = { version = "0.10.2", features = ["std", "pkcs5", "encryption"] }
 rand.workspace = true
-regex.workspace = true
 ring.workspace = true
 ripemd = { version = "0.1.3", features = ["oid"] }
 rsa.workspace = true
 rusqlite.workspace = true
 scrypt = "0.11.0"
 sec1.workspace = true
-serde = "1.0.149"
+serde.workspace = true
 sha1.workspace = true
 sha2.workspace = true
 sha3 = { version = "0.10.8", features = ["oid"] }
 signature.workspace = true
-simd-json = "0.14.0"
 sm3 = "0.4.2"
 spki.workspace = true
-stable_deref_trait = "1.2.0"
 sys_traits = { workspace = true, features = ["real", "winapi", "libc"] }
 thiserror.workspace = true
 tokio.workspace = true
diff --git a/ext/url/Cargo.toml b/ext/url/Cargo.toml
index 968744723e0657..998080e9c3ff05 100644
--- a/ext/url/Cargo.toml
+++ b/ext/url/Cargo.toml
@@ -16,7 +16,6 @@ path = "lib.rs"
 [dependencies]
 deno_core.workspace = true
 deno_error.workspace = true
-thiserror.workspace = true
 urlpattern = "0.3.0"
 
 [dev-dependencies]
diff --git a/ext/webstorage/Cargo.toml b/ext/webstorage/Cargo.toml
index ab13f27ac8f3e7..477a96c3f69d76 100644
--- a/ext/webstorage/Cargo.toml
+++ b/ext/webstorage/Cargo.toml
@@ -16,6 +16,5 @@ path = "lib.rs"
 [dependencies]
 deno_core.workspace = true
 deno_error.workspace = true
-deno_web.workspace = true
 rusqlite.workspace = true
 thiserror.workspace = true
diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml
index 28408115348e30..d0df4fadc6995e 100644
--- a/runtime/Cargo.toml
+++ b/runtime/Cargo.toml
@@ -78,31 +78,25 @@ deno_webstorage.workspace = true
 node_resolver = { workspace = true, features = ["sync"] }
 
 color-print.workspace = true
-dlopen2.workspace = true
 encoding_rs.workspace = true
 fastwebsockets.workspace = true
 http.workspace = true
 http-body-util.workspace = true
 hyper.workspace = true
 hyper-util.workspace = true
-hyper_v014 = { workspace = true, features = ["server", "stream", "http1", "http2", "runtime"] }
 libc.workspace = true
 log.workspace = true
 notify.workspace = true
 once_cell.workspace = true
-percent-encoding.workspace = true
-regex.workspace = true
 rustyline = { workspace = true, features = ["custom-bindings"] }
 same-file = "1.0.6"
 serde.workspace = true
 sys_traits.workspace = true
-tempfile.workspace = true
 thiserror.workspace = true
 tokio.workspace = true
 tokio-metrics.workspace = true
 twox-hash.workspace = true
 uuid.workspace = true
-which.workspace = true
 
 [target.'cfg(windows)'.dependencies]
 winapi = { workspace = true, features = ["commapi", "knownfolders", "mswsock", "objbase", "psapi", "shlobj", "tlhelp32", "winbase", "winerror", "winuser", "winsock2"] }

From 063299353d59e6a7cf7561de4a076f58436280c4 Mon Sep 17 00:00:00 2001
From: Marvin Hagemeister <marvin@deno.com>
Date: Fri, 21 Feb 2025 18:50:26 +0100
Subject: [PATCH 004/115] fix(unstable): lint plugin `:exit` called at wrong
 time (#28229)

The `:exit` selectors were called at the wrong time during visiting.

They need to be called when going upwards and a node and all its
children have been fully visited. Instead we called it when the node +
all its sibling were visited which is wrong.

Fixes https://github.com/denoland/deno/issues/28227
---
 cli/js/40_lint.js              | 10 +++++-----
 tests/unit/lint_plugin_test.ts | 25 +++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/cli/js/40_lint.js b/cli/js/40_lint.js
index 31099edd4077de..3afe0fd4eb4720 100644
--- a/cli/js/40_lint.js
+++ b/cli/js/40_lint.js
@@ -1186,11 +1186,6 @@ function traverse(ctx, visitors, idx, cancellationToken) {
     if (childIdx > AST_IDX_INVALID) {
       traverse(ctx, visitors, childIdx, cancellationToken);
     }
-
-    const nextIdx = readNext(buf, idx);
-    if (nextIdx > AST_IDX_INVALID) {
-      traverse(ctx, visitors, nextIdx, cancellationToken);
-    }
   } finally {
     if (exits !== null) {
       for (let i = 0; i < exits.length; i++) {
@@ -1199,6 +1194,11 @@ function traverse(ctx, visitors, idx, cancellationToken) {
       }
     }
   }
+
+  const nextIdx = readNext(buf, idx);
+  if (nextIdx > AST_IDX_INVALID) {
+    traverse(ctx, visitors, nextIdx, cancellationToken);
+  }
 }
 
 /**
diff --git a/tests/unit/lint_plugin_test.ts b/tests/unit/lint_plugin_test.ts
index 38253fdb74a986..665b580d02785e 100644
--- a/tests/unit/lint_plugin_test.ts
+++ b/tests/unit/lint_plugin_test.ts
@@ -101,6 +101,31 @@ Deno.test("Plugin - visitor enter/exit", () => {
   assertEquals(both.map((t) => t.selector), ["Identifier", "Identifier:exit"]);
 });
 
+// https://github.com/denoland/deno/issues/28227
+Deno.test("Plugin - visitor enter/exit #2", () => {
+  const log: string[] = [];
+
+  testPlugin("{}\nfoo;", {
+    create() {
+      return {
+        "*": (node: Deno.lint.Node) => log.push(`-> ${node.type}`),
+        "*:exit": (node: Deno.lint.Node) => log.push(`<- ${node.type}`),
+      };
+    },
+  });
+
+  assertEquals(log, [
+    "-> Program",
+    "-> BlockStatement",
+    "<- BlockStatement",
+    "-> ExpressionStatement",
+    "-> Identifier",
+    "<- Identifier",
+    "<- ExpressionStatement",
+    "<- Program",
+  ]);
+});
+
 Deno.test("Plugin - visitor descendant", () => {
   let result = testVisit(
     "if (false) foo; if (false) bar()",

From a9f404e479262af62179c38622785968888293d3 Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Fri, 21 Feb 2025 14:09:57 -0500
Subject: [PATCH 005/115] fix(check): regression - implicit jsxImportSource was
 not resolving (#28228)

---
 Cargo.lock                                          |  4 ++--
 Cargo.toml                                          |  2 +-
 cli/tools/registry/module_content.rs                | 13 ++++++++++++-
 .../__test__.jsonc                                  | 10 ++++++++++
 .../check.out                                       |  1 +
 .../deno.json                                       |  5 +++++
 .../main.tsx                                        |  1 +
 .../package.json                                    |  6 ++++++
 8 files changed, 38 insertions(+), 4 deletions(-)
 create mode 100644 tests/specs/check/jsx_automatic_no_explicit_import_source/__test__.jsonc
 create mode 100644 tests/specs/check/jsx_automatic_no_explicit_import_source/check.out
 create mode 100644 tests/specs/check/jsx_automatic_no_explicit_import_source/deno.json
 create mode 100644 tests/specs/check/jsx_automatic_no_explicit_import_source/main.tsx
 create mode 100644 tests/specs/check/jsx_automatic_no_explicit_import_source/package.json

diff --git a/Cargo.lock b/Cargo.lock
index dd7c3bd25173bc..e5f4f82b4e56a8 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1716,9 +1716,9 @@ dependencies = [
 
 [[package]]
 name = "deno_config"
-version = "0.49.0"
+version = "0.49.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2eb717829d8b6071bf54ac6139e4ea53878ad5523c1cbdad4483c09be9b81606"
+checksum = "1bbde052743fd8729836d337de950fbffd79e3edb6fa8d5894e95b7d62dea15b"
 dependencies = [
  "boxed_error",
  "capacity_builder 0.5.0",
diff --git a/Cargo.toml b/Cargo.toml
index 81980a369f0101..b09c1e47bd285d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -54,7 +54,7 @@ deno_ast = { version = "=0.44.0", features = ["transpiling"] }
 deno_core = { version = "0.338.0" }
 
 deno_bench_util = { version = "0.186.0", path = "./bench_util" }
-deno_config = { version = "=0.49.0", features = ["workspace"] }
+deno_config = { version = "=0.49.1", features = ["workspace"] }
 deno_lockfile = "=0.24.0"
 deno_media_type = { version = "=0.2.6", features = ["module_specifier"] }
 deno_npm = "=0.27.2"
diff --git a/cli/tools/registry/module_content.rs b/cli/tools/registry/module_content.rs
index 5024622f6d6e1d..20ad5a377f0fcc 100644
--- a/cli/tools/registry/module_content.rs
+++ b/cli/tools/registry/module_content.rs
@@ -317,12 +317,23 @@ mod test {
     }"#,
         None,
       ),
-      ("/package-b/deno.json", "{}", None),
+      ("/package-b/deno.json", r#"{
+        "compilerOptions": { "jsx": "react-jsx" },
+        "imports": {
+          "react": "npm:react"
+          "@types/react": "npm:@types/react"
+        }
+      }"#, None),
       (
         "/package-a/main.tsx",
         "export const component = <div></div>;",
         Some("/** @jsxRuntime automatic *//** @jsxImportSource npm:react *//** @jsxImportSourceTypes npm:@types/react *//** @jsxFactory React.createElement *//** @jsxFragmentFactory React.Fragment */export const component = <div></div>;"),
       ),
+      (
+        "/package-b/main.tsx",
+        "export const componentB = <div></div>;",
+        Some("/** @jsxRuntime automatic *//** @jsxImportSource npm:react *//** @jsxImportSourceTypes npm:react *//** @jsxFactory React.createElement *//** @jsxFragmentFactory React.Fragment */export const componentB = <div></div>;"),
+      ),
       (
         "/package-a/other.tsx",
         "/** @jsxImportSource npm:preact */
diff --git a/tests/specs/check/jsx_automatic_no_explicit_import_source/__test__.jsonc b/tests/specs/check/jsx_automatic_no_explicit_import_source/__test__.jsonc
new file mode 100644
index 00000000000000..6cc57b8af8bbce
--- /dev/null
+++ b/tests/specs/check/jsx_automatic_no_explicit_import_source/__test__.jsonc
@@ -0,0 +1,10 @@
+{
+  "tempDir": true,
+  "steps": [{
+    "args": "install",
+    "output": "[WILDCARD]"
+  }, {
+    "args": "check main.tsx",
+    "output": "check.out"
+  }]
+}
diff --git a/tests/specs/check/jsx_automatic_no_explicit_import_source/check.out b/tests/specs/check/jsx_automatic_no_explicit_import_source/check.out
new file mode 100644
index 00000000000000..988e0784cf1457
--- /dev/null
+++ b/tests/specs/check/jsx_automatic_no_explicit_import_source/check.out
@@ -0,0 +1 @@
+Check file:///[WILDLINE]/main.tsx
diff --git a/tests/specs/check/jsx_automatic_no_explicit_import_source/deno.json b/tests/specs/check/jsx_automatic_no_explicit_import_source/deno.json
new file mode 100644
index 00000000000000..a224293f4e48ac
--- /dev/null
+++ b/tests/specs/check/jsx_automatic_no_explicit_import_source/deno.json
@@ -0,0 +1,5 @@
+{
+  "compilerOptions": {
+    "jsx": "react-jsx"
+  }
+}
diff --git a/tests/specs/check/jsx_automatic_no_explicit_import_source/main.tsx b/tests/specs/check/jsx_automatic_no_explicit_import_source/main.tsx
new file mode 100644
index 00000000000000..57a122591e383e
--- /dev/null
+++ b/tests/specs/check/jsx_automatic_no_explicit_import_source/main.tsx
@@ -0,0 +1 @@
+const test = <div>Test</div>;
diff --git a/tests/specs/check/jsx_automatic_no_explicit_import_source/package.json b/tests/specs/check/jsx_automatic_no_explicit_import_source/package.json
new file mode 100644
index 00000000000000..dd8506c6081559
--- /dev/null
+++ b/tests/specs/check/jsx_automatic_no_explicit_import_source/package.json
@@ -0,0 +1,6 @@
+{
+  "dependencies": {
+    "@types/react": "*",
+    "react": "*"
+  }
+}

From 876bac445a14d77867605c38c6866ab6a5cad21c Mon Sep 17 00:00:00 2001
From: Nayeem Rahman <nayeemrmn99@gmail.com>
Date: Fri, 21 Feb 2025 20:02:56 +0000
Subject: [PATCH 006/115] fix(lsp): close server on exit notification (#28232)

---
 Cargo.lock                     |  8 ++++----
 Cargo.toml                     |  2 +-
 cli/lsp/language_server.rs     |  5 +----
 cli/lsp/mod.rs                 | 26 +++++---------------------
 cli/lsp/repl.rs                |  6 ++----
 tests/integration/lsp_tests.rs |  1 +
 tests/util/server/src/lsp.rs   |  6 +++++-
 7 files changed, 19 insertions(+), 35 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index e5f4f82b4e56a8..5422fc376e3d93 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1570,9 +1570,9 @@ dependencies = [
 
 [[package]]
 name = "deno-tower-lsp-macros"
-version = "0.10.0"
+version = "0.11.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e017686632f7908cde3e02cd1598e25488f57448600a09211834cfd547b9ec39"
+checksum = "61083feefc9c29a3f45670be6b60001ec209286c861b6830cd30ba4af9a6e9d8"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2691,9 +2691,9 @@ dependencies = [
 
 [[package]]
 name = "deno_tower_lsp"
-version = "0.3.0"
+version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c58d75640e2edffc77929064f2f13c308e549b4b5c42ea6159b0607add856675"
+checksum = "c29dce82d67177bbc36468f64cddd8c25242fc31b99369ef0126fa7fad64c5ec"
 dependencies = [
  "async-trait",
  "auto_impl",
diff --git a/Cargo.toml b/Cargo.toml
index b09c1e47bd285d..3f52c4a9aa9fdf 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -218,7 +218,7 @@ tokio-socks = "0.5.1"
 tokio-util = "0.7.4"
 tower = { version = "0.5.2", default-features = false, features = ["retry", "util"] }
 tower-http = { version = "0.6.1", features = ["decompression-br", "decompression-gzip"] }
-tower-lsp = { package = "deno_tower_lsp", version = "=0.3.0", features = ["proposed"] }
+tower-lsp = { package = "deno_tower_lsp", version = "=0.4.2", features = ["proposed"] }
 tower-service = "0.3.2"
 twox-hash = "=1.6.3"
 url = { version = "2.5", features = ["serde", "expose_internals"] }
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index df7c00d3bdb218..9d253c250ff7c3 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -137,7 +137,6 @@ pub struct LanguageServer {
   /// https://github.com/Microsoft/language-server-protocol/issues/567#issuecomment-2085131917
   init_flag: AsyncFlag,
   performance: Arc<Performance>,
-  shutdown_flag: AsyncFlag,
 }
 
 /// Snapshot of the state used by TSC.
@@ -227,7 +226,7 @@ pub struct Inner {
 }
 
 impl LanguageServer {
-  pub fn new(client: Client, shutdown_flag: AsyncFlag) -> Self {
+  pub fn new(client: Client) -> Self {
     let performance = Arc::new(Performance::default());
     Self {
       client: client.clone(),
@@ -237,7 +236,6 @@ impl LanguageServer {
       ))),
       init_flag: Default::default(),
       performance,
-      shutdown_flag,
     }
   }
 
@@ -3566,7 +3564,6 @@ impl tower_lsp::LanguageServer for LanguageServer {
   }
 
   async fn shutdown(&self) -> LspResult<()> {
-    self.shutdown_flag.raise();
     Ok(())
   }
 
diff --git a/cli/lsp/mod.rs b/cli/lsp/mod.rs
index 5df7da61d449e4..1f09c614f184af 100644
--- a/cli/lsp/mod.rs
+++ b/cli/lsp/mod.rs
@@ -1,7 +1,6 @@
 // Copyright 2018-2025 the Deno authors. MIT license.
 
 use deno_core::error::AnyError;
-use deno_core::unsync::spawn;
 pub use repl::ReplCompletionItem;
 pub use repl::ReplLanguageServer;
 use tower_lsp::LspService;
@@ -9,7 +8,6 @@ use tower_lsp::Server;
 
 use self::diagnostics::should_send_diagnostic_batch_index_notifications;
 use crate::lsp::language_server::LanguageServer;
-use crate::util::sync::AsyncFlag;
 
 mod analysis;
 mod cache;
@@ -44,12 +42,8 @@ pub async fn start() -> Result<(), AnyError> {
   let stdin = tokio::io::stdin();
   let stdout = tokio::io::stdout();
 
-  let shutdown_flag = AsyncFlag::default();
   let builder = LspService::build(|client| {
-    language_server::LanguageServer::new(
-      client::Client::from_tower(client),
-      shutdown_flag.clone(),
-    )
+    language_server::LanguageServer::new(client::Client::from_tower(client))
   })
   .custom_method(
     lsp_custom::PERFORMANCE_REQUEST,
@@ -76,19 +70,9 @@ pub async fn start() -> Result<(), AnyError> {
   };
 
   let (service, socket, pending) = builder.finish();
-
-  // TODO(nayeemrmn): This shutdown flag is a workaround for
-  // https://github.com/denoland/deno/issues/20700. Remove when
-  // https://github.com/ebkalderon/tower-lsp/issues/399 is fixed.
-  // Force end the server 8 seconds after receiving a shutdown request.
-  tokio::select! {
-    biased;
-    _ = Server::new(stdin, stdout, socket, pending).concurrency_level(32).serve(service) => {}
-    _ = spawn(async move {
-      shutdown_flag.wait_raised().await;
-      tokio::time::sleep(std::time::Duration::from_secs(8)).await;
-    }) => {}
-  }
-
+  Server::new(stdin, stdout, socket, pending)
+    .concurrency_level(32)
+    .serve(service)
+    .await;
   Ok(())
 }
diff --git a/cli/lsp/repl.rs b/cli/lsp/repl.rs
index d247822837cdfd..7aec4c06766164 100644
--- a/cli/lsp/repl.rs
+++ b/cli/lsp/repl.rs
@@ -65,10 +65,8 @@ impl ReplLanguageServer {
     super::logging::set_lsp_log_level(log::Level::Debug);
     super::logging::set_lsp_warn_level(log::Level::Debug);
 
-    let language_server = super::language_server::LanguageServer::new(
-      Client::new_for_repl(),
-      Default::default(),
-    );
+    let language_server =
+      super::language_server::LanguageServer::new(Client::new_for_repl());
 
     let cwd_uri = get_cwd_uri()?;
 
diff --git a/tests/integration/lsp_tests.rs b/tests/integration/lsp_tests.rs
index 6cb22406e59eb0..059bb4f1209229 100644
--- a/tests/integration/lsp_tests.rs
+++ b/tests/integration/lsp_tests.rs
@@ -27,6 +27,7 @@ fn lsp_startup_shutdown() {
   let mut client = context.new_lsp_command().build();
   client.initialize_default();
   client.shutdown();
+  assert!(client.wait_exit().unwrap().success());
 }
 
 #[test]
diff --git a/tests/util/server/src/lsp.rs b/tests/util/server/src/lsp.rs
index 1d7a7f8cc3ec7f..86594174724b85 100644
--- a/tests/util/server/src/lsp.rs
+++ b/tests/util/server/src/lsp.rs
@@ -731,7 +731,7 @@ impl Drop for LspClient {
         self.child.kill().unwrap();
         let _ = self.child.wait();
       }
-      Ok(Some(status)) => panic!("deno lsp exited unexpectedly {status}"),
+      Ok(Some(_)) => {}
       Err(e) => panic!("pebble error: {e}"),
     }
   }
@@ -1002,6 +1002,10 @@ impl LspClient {
     self.write_notification("exit", json!(null));
   }
 
+  pub fn wait_exit(&mut self) -> std::io::Result<std::process::ExitStatus> {
+    self.child.wait()
+  }
+
   // it's flaky to assert for a notification because a notification
   // might arrive a little later, so only provide a method for asserting
   // that there is no notification

From d20c6b5b7dfdb7722f9acaf7e22e1995b96effb7 Mon Sep 17 00:00:00 2001
From: Nathan Whitaker <17734409+nathanwhit@users.noreply.github.com>
Date: Fri, 21 Feb 2025 12:20:55 -0800
Subject: [PATCH 007/115] fix(install): don't error on unknown media types in
 install (#28234)

Fixes https://github.com/denoland/deno/issues/28223

This is kind of an ugly fix, but it works, and I think is the easiest
way to handle the fact that when caching the module graph we might
encounter imports that won't actually error at runtime (for instance in
files that will be bundled).
---
 cli/graph_container.rs                        | 22 ++++++---
 cli/graph_util.rs                             | 18 +++++--
 cli/lsp/language_server.rs                    |  1 +
 cli/lsp/testing/execution.rs                  |  5 +-
 cli/module_loader.rs                          | 47 ++++++++++++++-----
 cli/tools/bench/mod.rs                        | 17 ++++++-
 cli/tools/check.rs                            |  2 +-
 cli/tools/doc.rs                              |  1 +
 cli/tools/installer.rs                        |  9 +++-
 cli/tools/registry/pm/cache_deps.rs           |  2 +-
 cli/tools/registry/pm/deps.rs                 | 11 +++--
 cli/tools/test/mod.rs                         | 11 ++++-
 .../install/unknown_media_type/__test__.jsonc |  9 ++++
 .../install/unknown_media_type/deno.json      |  5 ++
 tests/specs/install/unknown_media_type/foo.ts |  1 +
 .../install/unknown_media_type/styles.css     |  0
 16 files changed, 128 insertions(+), 33 deletions(-)
 create mode 100644 tests/specs/install/unknown_media_type/__test__.jsonc
 create mode 100644 tests/specs/install/unknown_media_type/deno.json
 create mode 100644 tests/specs/install/unknown_media_type/foo.ts
 create mode 100644 tests/specs/install/unknown_media_type/styles.css

diff --git a/cli/graph_container.rs b/cli/graph_container.rs
index 1fe30b47ab6387..78d589e86d2ad9 100644
--- a/cli/graph_container.rs
+++ b/cli/graph_container.rs
@@ -13,6 +13,7 @@ use deno_runtime::deno_permissions::PermissionsContainer;
 
 use crate::args::CliOptions;
 use crate::module_loader::ModuleLoadPreparer;
+use crate::module_loader::PrepareModuleLoadOptions;
 use crate::util::fs::collect_specifiers;
 use crate::util::path::is_script_ext;
 
@@ -48,6 +49,12 @@ pub struct MainModuleGraphContainer {
   root_permissions: PermissionsContainer,
 }
 
+#[derive(Default, Debug)]
+pub struct CheckSpecifiersOptions<'a> {
+  pub ext_overwrite: Option<&'a String>,
+  pub allow_unknown_media_types: bool,
+}
+
 impl MainModuleGraphContainer {
   pub fn new(
     cli_options: Arc<CliOptions>,
@@ -68,7 +75,7 @@ impl MainModuleGraphContainer {
   pub async fn check_specifiers(
     &self,
     specifiers: &[ModuleSpecifier],
-    ext_overwrite: Option<&String>,
+    options: CheckSpecifiersOptions<'_>,
   ) -> Result<(), AnyError> {
     let mut graph_permit = self.acquire_update_permit().await;
     let graph = graph_permit.graph_mut();
@@ -77,10 +84,13 @@ impl MainModuleGraphContainer {
       .prepare_module_load(
         graph,
         specifiers,
-        false,
-        self.cli_options.ts_type_lib_window(),
-        self.root_permissions.clone(),
-        ext_overwrite,
+        PrepareModuleLoadOptions {
+          is_dynamic: false,
+          lib: self.cli_options.ts_type_lib_window(),
+          permissions: self.root_permissions.clone(),
+          ext_overwrite: options.ext_overwrite,
+          allow_unknown_media_types: options.allow_unknown_media_types,
+        },
       )
       .await?;
     graph_permit.commit();
@@ -99,7 +109,7 @@ impl MainModuleGraphContainer {
       log::warn!("{} No matching files found.", colors::yellow("Warning"));
     }
 
-    self.check_specifiers(&specifiers, None).await
+    self.check_specifiers(&specifiers, Default::default()).await
   }
 
   pub fn collect_specifiers(
diff --git a/cli/graph_util.rs b/cli/graph_util.rs
index 1f6a9044b63c5c..506bb371a7aa6d 100644
--- a/cli/graph_util.rs
+++ b/cli/graph_util.rs
@@ -78,6 +78,7 @@ pub struct GraphValidOptions<'a> {
   /// lockfile checksum mismatches and JSR integrity failures.
   /// Otherwise, surfaces integrity errors as errors.
   pub exit_integrity_errors: bool,
+  pub allow_unknown_media_types: bool,
 }
 
 /// Check if `roots` and their deps are available. Returns `Ok(())` if
@@ -104,6 +105,7 @@ pub fn graph_valid(
     GraphWalkErrorsOptions {
       check_js: options.check_js,
       kind: options.kind,
+      allow_unknown_media_types: options.allow_unknown_media_types,
     },
   );
   if let Some(error) = errors.next() {
@@ -143,6 +145,7 @@ pub fn fill_graph_from_lockfile(
 pub struct GraphWalkErrorsOptions<'a> {
   pub check_js: CheckJsOption<'a>,
   pub kind: GraphKind,
+  pub allow_unknown_media_types: bool,
 }
 
 /// Walks the errors found in the module graph that should be surfaced to users
@@ -156,9 +159,10 @@ pub fn graph_walk_errors<'a>(
   fn should_ignore_error(
     sys: &CliSys,
     graph_kind: GraphKind,
+    allow_unknown_media_types: bool,
     error: &ModuleGraphError,
   ) -> bool {
-    if graph_kind == GraphKind::TypesOnly
+    if (graph_kind == GraphKind::TypesOnly || allow_unknown_media_types)
       && matches!(
         error,
         ModuleGraphError::ModuleError(ModuleError::UnsupportedMediaType(..))
@@ -183,8 +187,13 @@ pub fn graph_walk_errors<'a>(
       },
     )
     .errors()
-    .flat_map(|error| {
-      if should_ignore_error(sys, graph.graph_kind(), &error) {
+    .flat_map(move |error| {
+      if should_ignore_error(
+        sys,
+        graph.graph_kind(),
+        options.allow_unknown_media_types,
+        &error,
+      ) {
         log::debug!("Ignoring: {}", error);
         return None;
       }
@@ -931,6 +940,7 @@ impl ModuleGraphBuilder {
     self.graph_roots_valid(
       graph,
       &graph.roots.iter().cloned().collect::<Vec<_>>(),
+      false,
     )
   }
 
@@ -938,6 +948,7 @@ impl ModuleGraphBuilder {
     &self,
     graph: &ModuleGraph,
     roots: &[ModuleSpecifier],
+    allow_unknown_media_types: bool,
   ) -> Result<(), JsErrorBox> {
     graph_valid(
       graph,
@@ -951,6 +962,7 @@ impl ModuleGraphBuilder {
         },
         check_js: CheckJsOption::Custom(self.tsconfig_resolver.as_ref()),
         exit_integrity_errors: true,
+        allow_unknown_media_types,
       },
     )
   }
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index 9d253c250ff7c3..2785447ceb9024 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -280,6 +280,7 @@ impl LanguageServer {
           kind: GraphKind::All,
           check_js: CheckJsOption::False,
           exit_integrity_errors: false,
+          allow_unknown_media_types: true,
         },
       )?;
 
diff --git a/cli/lsp/testing/execution.rs b/cli/lsp/testing/execution.rs
index 3d6d6f6b734a5c..c36b34599fcb5a 100644
--- a/cli/lsp/testing/execution.rs
+++ b/cli/lsp/testing/execution.rs
@@ -235,7 +235,10 @@ impl TestRun {
     )?;
     let main_graph_container = factory.main_module_graph_container().await?;
     main_graph_container
-      .check_specifiers(&self.queue.iter().cloned().collect::<Vec<_>>(), None)
+      .check_specifiers(
+        &self.queue.iter().cloned().collect::<Vec<_>>(),
+        Default::default(),
+      )
       .await?;
 
     let (concurrent_jobs, fail_fast) =
diff --git a/cli/module_loader.rs b/cli/module_loader.rs
index fda17d6b5ee669..e49ac14959fe67 100644
--- a/cli/module_loader.rs
+++ b/cli/module_loader.rs
@@ -124,6 +124,14 @@ pub struct ModuleLoadPreparer {
   type_checker: Arc<TypeChecker>,
 }
 
+pub struct PrepareModuleLoadOptions<'a> {
+  pub is_dynamic: bool,
+  pub lib: TsTypeLib,
+  pub permissions: PermissionsContainer,
+  pub ext_overwrite: Option<&'a String>,
+  pub allow_unknown_media_types: bool,
+}
+
 impl ModuleLoadPreparer {
   #[allow(clippy::too_many_arguments)]
   pub fn new(
@@ -146,17 +154,20 @@ impl ModuleLoadPreparer {
   /// module before attempting to `load()` it from a `JsRuntime`. It will
   /// populate the graph data in memory with the necessary source code, write
   /// emits where necessary or report any module graph / type checking errors.
-  #[allow(clippy::too_many_arguments)]
   pub async fn prepare_module_load(
     &self,
     graph: &mut ModuleGraph,
     roots: &[ModuleSpecifier],
-    is_dynamic: bool,
-    lib: TsTypeLib,
-    permissions: PermissionsContainer,
-    ext_overwrite: Option<&String>,
+    options: PrepareModuleLoadOptions<'_>,
   ) -> Result<(), PrepareModuleLoadError> {
     log::debug!("Preparing module load.");
+    let PrepareModuleLoadOptions {
+      is_dynamic,
+      lib,
+      permissions,
+      ext_overwrite,
+      allow_unknown_media_types,
+    } = options;
     let _pb_clear_guard = self.progress_bar.clear_guard();
 
     let mut cache = self.module_graph_builder.create_fetch_cacher(permissions);
@@ -197,7 +208,7 @@ impl ModuleLoadPreparer {
       )
       .await?;
 
-    self.graph_roots_valid(graph, roots)?;
+    self.graph_roots_valid(graph, roots, allow_unknown_media_types)?;
 
     // write the lockfile if there is one
     if let Some(lockfile) = &self.lockfile {
@@ -235,8 +246,13 @@ impl ModuleLoadPreparer {
     &self,
     graph: &ModuleGraph,
     roots: &[ModuleSpecifier],
+    allow_unknown_media_types: bool,
   ) -> Result<(), JsErrorBox> {
-    self.module_graph_builder.graph_roots_valid(graph, roots)
+    self.module_graph_builder.graph_roots_valid(
+      graph,
+      roots,
+      allow_unknown_media_types,
+    )
   }
 }
 
@@ -1067,7 +1083,11 @@ impl<TGraphContainer: ModuleGraphContainer> ModuleLoader
           log::debug!("Skipping prepare module load.");
           // roots are already validated so we can skip those
           if !graph.roots.contains(&specifier) {
-            module_load_preparer.graph_roots_valid(&graph, &[specifier])?;
+            module_load_preparer.graph_roots_valid(
+              &graph,
+              &[specifier],
+              false,
+            )?;
           }
           return Ok(());
         }
@@ -1086,10 +1106,13 @@ impl<TGraphContainer: ModuleGraphContainer> ModuleLoader
         .prepare_module_load(
           graph,
           &[specifier],
-          is_dynamic,
-          lib,
-          permissions,
-          None,
+          PrepareModuleLoadOptions {
+            is_dynamic,
+            lib,
+            permissions,
+            ext_overwrite: None,
+            allow_unknown_media_types: false,
+          },
         )
         .await
         .map_err(JsErrorBox::from_err)?;
diff --git a/cli/tools/bench/mod.rs b/cli/tools/bench/mod.rs
index 0d8fb4750f12a4..91030a61c07cb1 100644
--- a/cli/tools/bench/mod.rs
+++ b/cli/tools/bench/mod.rs
@@ -38,6 +38,7 @@ use crate::args::Flags;
 use crate::colors;
 use crate::display::write_json_to_stdout;
 use crate::factory::CliFactory;
+use crate::graph_container::CheckSpecifiersOptions;
 use crate::graph_util::has_graph_root_local_dependent_changed;
 use crate::ops;
 use crate::sys::CliSys;
@@ -462,7 +463,13 @@ pub async fn run_benchmarks(
 
   let main_graph_container = factory.main_module_graph_container().await?;
   main_graph_container
-    .check_specifiers(&specifiers, cli_options.ext_flag().as_ref())
+    .check_specifiers(
+      &specifiers,
+      CheckSpecifiersOptions {
+        ext_overwrite: cli_options.ext_flag().as_ref(),
+        ..Default::default()
+      },
+    )
     .await?;
 
   if workspace_bench_options.no_run {
@@ -595,7 +602,13 @@ pub async fn run_benchmarks_with_watch(
         factory
           .main_module_graph_container()
           .await?
-          .check_specifiers(&specifiers, cli_options.ext_flag().as_ref())
+          .check_specifiers(
+            &specifiers,
+            CheckSpecifiersOptions {
+              ext_overwrite: cli_options.ext_flag().as_ref(),
+              allow_unknown_media_types: false,
+            },
+          )
           .await?;
 
         if workspace_bench_options.no_run {
diff --git a/cli/tools/check.rs b/cli/tools/check.rs
index 1a5bcb8ccaf708..1d21b1feb03075 100644
--- a/cli/tools/check.rs
+++ b/cli/tools/check.rs
@@ -89,7 +89,7 @@ pub async fn check(
   };
 
   main_graph_container
-    .check_specifiers(&specifiers_for_typecheck, None)
+    .check_specifiers(&specifiers_for_typecheck, Default::default())
     .await
 }
 
diff --git a/cli/tools/doc.rs b/cli/tools/doc.rs
index ef45d08191efa1..26b4af4a7f8d57 100644
--- a/cli/tools/doc.rs
+++ b/cli/tools/doc.rs
@@ -151,6 +151,7 @@ pub async fn doc(
         GraphWalkErrorsOptions {
           check_js: CheckJsOption::False,
           kind: GraphKind::TypesOnly,
+          allow_unknown_media_types: false,
         },
       );
       for error in errors {
diff --git a/cli/tools/installer.rs b/cli/tools/installer.rs
index e4c7c66dda32d1..e0f9917f28c520 100644
--- a/cli/tools/installer.rs
+++ b/cli/tools/installer.rs
@@ -279,8 +279,15 @@ pub(crate) async fn install_from_entrypoints(
   let factory = CliFactory::from_flags(flags.clone());
   let emitter = factory.emitter()?;
   let main_graph_container = factory.main_module_graph_container().await?;
+  let specifiers = main_graph_container.collect_specifiers(entrypoints)?;
   main_graph_container
-    .load_and_type_check_files(entrypoints)
+    .check_specifiers(
+      &specifiers,
+      crate::graph_container::CheckSpecifiersOptions {
+        ext_overwrite: None,
+        allow_unknown_media_types: true,
+      },
+    )
     .await?;
   emitter
     .cache_module_emits(&main_graph_container.graph())
diff --git a/cli/tools/registry/pm/cache_deps.rs b/cli/tools/registry/pm/cache_deps.rs
index 312d1af5625859..a2317cf4981d11 100644
--- a/cli/tools/registry/pm/cache_deps.rs
+++ b/cli/tools/registry/pm/cache_deps.rs
@@ -136,7 +136,7 @@ pub async fn cache_top_level_deps(
         },
       )
       .await?;
-    maybe_graph_error = graph_builder.graph_roots_valid(graph, &roots);
+    maybe_graph_error = graph_builder.graph_roots_valid(graph, &roots, true);
   }
 
   npm_installer.cache_packages(PackageCaching::All).await?;
diff --git a/cli/tools/registry/pm/deps.rs b/cli/tools/registry/pm/deps.rs
index 849e72d3ec1754..6bbe949d0bedb5 100644
--- a/cli/tools/registry/pm/deps.rs
+++ b/cli/tools/registry/pm/deps.rs
@@ -614,10 +614,13 @@ impl DepManager {
       .prepare_module_load(
         graph,
         &roots,
-        false,
-        deno_config::deno_json::TsTypeLib::DenoWindow,
-        self.permissions_container.clone(),
-        None,
+        crate::module_loader::PrepareModuleLoadOptions {
+          is_dynamic: false,
+          lib: deno_config::deno_json::TsTypeLib::DenoWindow,
+          permissions: self.permissions_container.clone(),
+          ext_overwrite: None,
+          allow_unknown_media_types: true,
+        },
       )
       .await?;
 
diff --git a/cli/tools/test/mod.rs b/cli/tools/test/mod.rs
index c3b9d5edc0b6a3..8f687e2f5121a2 100644
--- a/cli/tools/test/mod.rs
+++ b/cli/tools/test/mod.rs
@@ -77,6 +77,7 @@ use crate::colors;
 use crate::display;
 use crate::factory::CliFactory;
 use crate::file_fetcher::CliFileFetcher;
+use crate::graph_container::CheckSpecifiersOptions;
 use crate::graph_util::has_graph_root_local_dependent_changed;
 use crate::ops;
 use crate::sys::CliSys;
@@ -1604,7 +1605,10 @@ pub async fn run_tests(
   main_graph_container
     .check_specifiers(
       &specifiers_for_typecheck_and_test,
-      cli_options.ext_flag().as_ref(),
+      CheckSpecifiersOptions {
+        ext_overwrite: cli_options.ext_flag().as_ref(),
+        ..Default::default()
+      },
     )
     .await?;
 
@@ -1787,7 +1791,10 @@ pub async fn run_tests_with_watch(
         main_graph_container
           .check_specifiers(
             &specifiers_for_typecheck_and_test,
-            cli_options.ext_flag().as_ref(),
+            crate::graph_container::CheckSpecifiersOptions {
+              ext_overwrite: cli_options.ext_flag().as_ref(),
+              ..Default::default()
+            },
           )
           .await?;
 
diff --git a/tests/specs/install/unknown_media_type/__test__.jsonc b/tests/specs/install/unknown_media_type/__test__.jsonc
new file mode 100644
index 00000000000000..cbbc7cc2e1c8a6
--- /dev/null
+++ b/tests/specs/install/unknown_media_type/__test__.jsonc
@@ -0,0 +1,9 @@
+{
+  "tempDir": true,
+  "steps": [
+    {
+      "args": "install",
+      "output": ""
+    }
+  ]
+}
diff --git a/tests/specs/install/unknown_media_type/deno.json b/tests/specs/install/unknown_media_type/deno.json
new file mode 100644
index 00000000000000..e87d16e45d19bf
--- /dev/null
+++ b/tests/specs/install/unknown_media_type/deno.json
@@ -0,0 +1,5 @@
+{
+  "imports": {
+    "foo": "./foo.ts"
+  }
+}
diff --git a/tests/specs/install/unknown_media_type/foo.ts b/tests/specs/install/unknown_media_type/foo.ts
new file mode 100644
index 00000000000000..bef32185782d38
--- /dev/null
+++ b/tests/specs/install/unknown_media_type/foo.ts
@@ -0,0 +1 @@
+import styles from "./styles.css";
diff --git a/tests/specs/install/unknown_media_type/styles.css b/tests/specs/install/unknown_media_type/styles.css
new file mode 100644
index 00000000000000..e69de29bb2d1d6

From 761a9b62ce6beb318528a6bd4b890915897a402a Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Fri, 21 Feb 2025 16:00:29 -0500
Subject: [PATCH 008/115] refactor(cli): extract TypeChecker to separate module
 (#28235)

Extracts it out of tools/check.rs to type_checker.rs which makes more
sense because this is used across sub commands.
---
 cli/factory.rs            |    2 +-
 cli/graph_util.rs         |    8 +-
 cli/main.rs               |    1 +
 cli/module_loader.rs      |    8 +-
 cli/tools/check.rs        | 1056 ------------------------------------
 cli/tools/registry/mod.rs |   13 +-
 cli/type_checker.rs       | 1062 +++++++++++++++++++++++++++++++++++++
 7 files changed, 1078 insertions(+), 1072 deletions(-)
 create mode 100644 cli/type_checker.rs

diff --git a/cli/factory.rs b/cli/factory.rs
index e181e3d16f20d5..660280c4982946 100644
--- a/cli/factory.rs
+++ b/cli/factory.rs
@@ -100,11 +100,11 @@ use crate::resolver::CliResolver;
 use crate::resolver::FoundPackageJsonDepFlag;
 use crate::standalone::binary::DenoCompileBinaryWriter;
 use crate::sys::CliSys;
-use crate::tools::check::TypeChecker;
 use crate::tools::coverage::CoverageCollector;
 use crate::tools::lint::LintRuleProvider;
 use crate::tools::run::hmr::HmrRunner;
 use crate::tsc::TypeCheckingCjsTracker;
+use crate::type_checker::TypeChecker;
 use crate::util::file_watcher::WatcherCommunicator;
 use crate::util::progress_bar::ProgressBar;
 use crate::util::progress_bar::ProgressBarStyle;
diff --git a/cli/graph_util.rs b/cli/graph_util.rs
index 506bb371a7aa6d..2886803b84faab 100644
--- a/cli/graph_util.rs
+++ b/cli/graph_util.rs
@@ -64,9 +64,9 @@ use crate::resolver::CliCjsTracker;
 use crate::resolver::CliNpmGraphResolver;
 use crate::resolver::CliResolver;
 use crate::sys::CliSys;
-use crate::tools::check;
-use crate::tools::check::CheckError;
-use crate::tools::check::TypeChecker;
+use crate::type_checker::CheckError;
+use crate::type_checker::CheckOptions;
+use crate::type_checker::TypeChecker;
 use crate::util::file_watcher::WatcherCommunicator;
 use crate::util::fs::canonicalize_path;
 
@@ -551,7 +551,7 @@ impl ModuleGraphCreator {
       .type_checker
       .check(
         graph,
-        check::CheckOptions {
+        CheckOptions {
           build_fast_check_graph: true,
           lib: self.options.ts_type_lib_window(),
           reload: self.options.reload_flag(),
diff --git a/cli/main.rs b/cli/main.rs
index 732a2eb60bbbe8..017b7704a8bde0 100644
--- a/cli/main.rs
+++ b/cli/main.rs
@@ -20,6 +20,7 @@ mod standalone;
 mod task_runner;
 mod tools;
 mod tsc;
+mod type_checker;
 mod util;
 mod worker;
 
diff --git a/cli/module_loader.rs b/cli/module_loader.rs
index e49ac14959fe67..9839ac5ca6d288 100644
--- a/cli/module_loader.rs
+++ b/cli/module_loader.rs
@@ -81,9 +81,9 @@ use crate::resolver::CliCjsTracker;
 use crate::resolver::CliNpmReqResolver;
 use crate::resolver::CliResolver;
 use crate::sys::CliSys;
-use crate::tools::check;
-use crate::tools::check::CheckError;
-use crate::tools::check::TypeChecker;
+use crate::type_checker::CheckError;
+use crate::type_checker::CheckOptions;
+use crate::type_checker::TypeChecker;
 use crate::util::progress_bar::ProgressBar;
 use crate::util::text_encoding::code_without_source_map;
 use crate::util::text_encoding::source_map_from_code;
@@ -227,7 +227,7 @@ impl ModuleLoadPreparer {
           // the actual graph on the first run and then getting the Arc<ModuleGraph>
           // back from the return value.
           graph.clone(),
-          check::CheckOptions {
+          CheckOptions {
             build_fast_check_graph: true,
             lib,
             reload: self.options.reload_flag(),
diff --git a/cli/tools/check.rs b/cli/tools/check.rs
index 1d21b1feb03075..561a65dd4a49b4 100644
--- a/cli/tools/check.rs
+++ b/cli/tools/check.rs
@@ -1,54 +1,14 @@
 // Copyright 2018-2025 the Deno authors. MIT license.
 
-use std::collections::HashMap;
-use std::collections::HashSet;
-use std::collections::VecDeque;
-use std::rc::Rc;
 use std::sync::Arc;
 
-use deno_ast::MediaType;
-use deno_ast::ModuleSpecifier;
-use deno_config::deno_json;
-use deno_config::deno_json::CompilerOptionTypesDeserializeError;
-use deno_config::workspace::WorkspaceDirectory;
 use deno_core::error::AnyError;
-use deno_core::url::Url;
-use deno_error::JsErrorBox;
-use deno_graph::Module;
-use deno_graph::ModuleGraph;
-use deno_lib::util::hash::FastInsecureHasher;
-use deno_semver::npm::NpmPackageNvReference;
 use deno_terminal::colors;
-use indexmap::IndexMap;
-use once_cell::sync::Lazy;
-use regex::Regex;
 
-use crate::args::deno_json::TsConfigResolver;
 use crate::args::CheckFlags;
-use crate::args::CliOptions;
-use crate::args::DenoSubcommand;
 use crate::args::Flags;
-use crate::args::TsConfig;
-use crate::args::TsTypeLib;
-use crate::args::TypeCheckMode;
-use crate::cache::CacheDBHash;
-use crate::cache::Caches;
-use crate::cache::TypeCheckCache;
 use crate::factory::CliFactory;
-use crate::graph_util::maybe_additional_sloppy_imports_message;
-use crate::graph_util::module_error_for_tsc_diagnostic;
-use crate::graph_util::resolution_error_for_tsc_diagnostic;
-use crate::graph_util::BuildFastCheckGraphOptions;
-use crate::graph_util::ModuleGraphBuilder;
-use crate::node::CliNodeResolver;
-use crate::npm::installer::NpmInstaller;
-use crate::npm::CliNpmResolver;
-use crate::sys::CliSys;
-use crate::tsc;
-use crate::tsc::Diagnostics;
-use crate::tsc::TypeCheckingCjsTracker;
 use crate::util::extract;
-use crate::util::path::to_percent_decoded_str;
 
 pub async fn check(
   flags: Arc<Flags>,
@@ -92,1019 +52,3 @@ pub async fn check(
     .check_specifiers(&specifiers_for_typecheck, Default::default())
     .await
 }
-
-#[derive(Debug, thiserror::Error, deno_error::JsError)]
-#[class(type)]
-#[error("Type checking failed.{}", if self.can_skip {
-  color_print::cstr!(
-    "\n\n  <y>info:</y> The program failed type-checking, but it still might work correctly.\n  <c>hint:</c> Re-run with <u>--no-check</u> to skip type-checking.",
-  )
-} else {
-  ""
-})]
-pub struct FailedTypeCheckingError {
-  can_skip: bool,
-}
-
-#[derive(Debug, thiserror::Error, deno_error::JsError)]
-pub enum CheckError {
-  #[class(inherit)]
-  #[error(transparent)]
-  FailedTypeChecking(#[from] FailedTypeCheckingError),
-  #[class(inherit)]
-  #[error(transparent)]
-  ToMaybeJsxImportSourceConfig(
-    #[from] deno_config::workspace::ToMaybeJsxImportSourceConfigError,
-  ),
-  #[class(inherit)]
-  #[error(transparent)]
-  TscExec(#[from] tsc::ExecError),
-  #[class(inherit)]
-  #[error(transparent)]
-  CompilerOptionTypesDeserialize(#[from] CompilerOptionTypesDeserializeError),
-  #[class(inherit)]
-  #[error(transparent)]
-  CompilerOptionsParse(#[from] deno_json::CompilerOptionsParseError),
-  #[class(inherit)]
-  #[error(transparent)]
-  Other(#[from] JsErrorBox),
-}
-
-/// Options for performing a check of a module graph. Note that the decision to
-/// emit or not is determined by the `ts_config` settings.
-pub struct CheckOptions {
-  /// Whether to build the fast check type graph if necessary.
-  ///
-  /// Note: For perf reasons, the fast check type graph is only
-  /// built if type checking is necessary.
-  pub build_fast_check_graph: bool,
-  /// Default type library to type check with.
-  pub lib: TsTypeLib,
-  /// If true, valid `.tsbuildinfo` files will be ignored and type checking
-  /// will always occur.
-  pub reload: bool,
-  /// Mode to type check with.
-  pub type_check_mode: TypeCheckMode,
-}
-
-pub struct TypeChecker {
-  caches: Arc<Caches>,
-  cjs_tracker: Arc<TypeCheckingCjsTracker>,
-  cli_options: Arc<CliOptions>,
-  module_graph_builder: Arc<ModuleGraphBuilder>,
-  npm_installer: Option<Arc<NpmInstaller>>,
-  node_resolver: Arc<CliNodeResolver>,
-  npm_resolver: CliNpmResolver,
-  sys: CliSys,
-  tsconfig_resolver: Arc<TsConfigResolver>,
-  code_cache: Option<Arc<crate::cache::CodeCache>>,
-}
-
-impl TypeChecker {
-  #[allow(clippy::too_many_arguments)]
-  pub fn new(
-    caches: Arc<Caches>,
-    cjs_tracker: Arc<TypeCheckingCjsTracker>,
-    cli_options: Arc<CliOptions>,
-    module_graph_builder: Arc<ModuleGraphBuilder>,
-    node_resolver: Arc<CliNodeResolver>,
-    npm_installer: Option<Arc<NpmInstaller>>,
-    npm_resolver: CliNpmResolver,
-    sys: CliSys,
-    tsconfig_resolver: Arc<TsConfigResolver>,
-    code_cache: Option<Arc<crate::cache::CodeCache>>,
-  ) -> Self {
-    Self {
-      caches,
-      cjs_tracker,
-      cli_options,
-      module_graph_builder,
-      node_resolver,
-      npm_installer,
-      npm_resolver,
-      sys,
-      tsconfig_resolver,
-      code_cache,
-    }
-  }
-
-  /// Type check the module graph.
-  ///
-  /// It is expected that it is determined if a check and/or emit is validated
-  /// before the function is called.
-  pub async fn check(
-    &self,
-    graph: ModuleGraph,
-    options: CheckOptions,
-  ) -> Result<Arc<ModuleGraph>, CheckError> {
-    let mut diagnostics = self.check_diagnostics(graph, options).await?;
-    let mut failed = false;
-    for result in diagnostics.by_ref() {
-      let mut diagnostics = result?;
-      diagnostics.emit_warnings();
-      if diagnostics.has_diagnostic() {
-        failed = true;
-        log::error!("{}\n", diagnostics);
-      }
-    }
-    if failed {
-      Err(
-        FailedTypeCheckingError {
-          can_skip: !matches!(
-            self.cli_options.sub_command(),
-            DenoSubcommand::Check(_)
-          ),
-        }
-        .into(),
-      )
-    } else {
-      Ok(diagnostics.into_graph())
-    }
-  }
-
-  /// Type check the module graph returning its diagnostics.
-  ///
-  /// It is expected that it is determined if a check and/or emit is validated
-  /// before the function is called.
-  pub async fn check_diagnostics(
-    &self,
-    mut graph: ModuleGraph,
-    options: CheckOptions,
-  ) -> Result<DiagnosticsByFolderIterator, CheckError> {
-    fn check_state_hash(resolver: &CliNpmResolver) -> Option<u64> {
-      match resolver {
-        CliNpmResolver::Byonm(_) => {
-          // not feasible and probably slower to compute
-          None
-        }
-        CliNpmResolver::Managed(resolver) => {
-          // we should probably go further and check all the individual npm packages
-          let mut package_reqs = resolver.resolution().package_reqs();
-          package_reqs.sort_by(|a, b| a.0.cmp(&b.0)); // determinism
-          let mut hasher = FastInsecureHasher::new_without_deno_version();
-          // ensure the cache gets busted when turning nodeModulesDir on or off
-          // as this could cause changes in resolution
-          hasher.write_hashable(resolver.root_node_modules_path().is_some());
-          for (pkg_req, pkg_nv) in package_reqs {
-            hasher.write_hashable(&pkg_req);
-            hasher.write_hashable(&pkg_nv);
-          }
-          Some(hasher.finish())
-        }
-      }
-    }
-
-    if !options.type_check_mode.is_true() || graph.roots.is_empty() {
-      return Ok(DiagnosticsByFolderIterator(
-        DiagnosticsByFolderIteratorInner::Empty(Arc::new(graph)),
-      ));
-    }
-
-    // node built-in specifiers use the @types/node package to determine
-    // types, so inject that now (the caller should do this after the lockfile
-    // has been written)
-    if let Some(npm_installer) = &self.npm_installer {
-      if graph.has_node_specifier {
-        npm_installer.inject_synthetic_types_node_package().await?;
-      }
-    }
-
-    log::debug!("Type checking");
-
-    // add fast check to the graph before getting the roots
-    if options.build_fast_check_graph {
-      self.module_graph_builder.build_fast_check_graph(
-        &mut graph,
-        BuildFastCheckGraphOptions {
-          workspace_fast_check: deno_graph::WorkspaceFastCheckOption::Disabled,
-        },
-      )?;
-    }
-
-    let graph = Arc::new(graph);
-
-    // split the roots by what we can send to the ts compiler all at once
-    let grouped_roots =
-      self.group_roots_by_compiler_options(&graph, options.lib)?;
-
-    Ok(DiagnosticsByFolderIterator(
-      DiagnosticsByFolderIteratorInner::Real(DiagnosticsByFolderRealIterator {
-        graph,
-        sys: &self.sys,
-        cjs_tracker: &self.cjs_tracker,
-        node_resolver: &self.node_resolver,
-        npm_resolver: &self.npm_resolver,
-        tsconfig_resolver: &self.tsconfig_resolver,
-        log_level: self.cli_options.log_level(),
-        npm_check_state_hash: check_state_hash(&self.npm_resolver),
-        type_check_cache: TypeCheckCache::new(
-          self.caches.type_checking_cache_db(),
-        ),
-        grouped_roots,
-        options,
-        seen_diagnotics: Default::default(),
-        code_cache: self.code_cache.clone(),
-      }),
-    ))
-  }
-
-  /// Groups the roots based on the compiler options, which includes the
-  /// resolved TsConfig and resolved compilerOptions.types
-  fn group_roots_by_compiler_options<'a>(
-    &'a self,
-    graph: &ModuleGraph,
-    lib: TsTypeLib,
-  ) -> Result<IndexMap<CheckGroupKey<'a>, CheckGroupInfo>, CheckError> {
-    let mut imports_for_specifier: HashMap<Arc<Url>, Rc<Vec<Url>>> =
-      HashMap::with_capacity(self.tsconfig_resolver.folder_count());
-    let mut roots_by_config: IndexMap<_, CheckGroupInfo> =
-      IndexMap::with_capacity(self.tsconfig_resolver.folder_count());
-    for root in &graph.roots {
-      let folder = self.tsconfig_resolver.folder_for_specifier(root);
-      let imports =
-        match imports_for_specifier.entry(folder.dir.dir_url().clone()) {
-          std::collections::hash_map::Entry::Occupied(entry) => {
-            entry.get().clone()
-          }
-          std::collections::hash_map::Entry::Vacant(vacant_entry) => {
-            let value = Rc::new(resolve_graph_imports_for_workspace_dir(
-              graph,
-              &folder.dir,
-            ));
-            vacant_entry.insert(value.clone());
-            value
-          }
-        };
-      let tsconfig = folder.lib_tsconfig(lib)?;
-      let key = CheckGroupKey {
-        ts_config: tsconfig,
-        imports,
-      };
-      let entry = roots_by_config.entry(key);
-      let entry = match entry {
-        indexmap::map::Entry::Occupied(entry) => entry.into_mut(),
-        indexmap::map::Entry::Vacant(entry) => entry.insert(CheckGroupInfo {
-          roots: Default::default(),
-          // this is slightly hacky. It's used as the referrer for resolving
-          // npm imports in the key
-          referrer: folder
-            .dir
-            .maybe_deno_json()
-            .map(|d| d.specifier.clone())
-            .unwrap_or_else(|| folder.dir.dir_url().as_ref().clone()),
-        }),
-      };
-      entry.roots.push(root.clone());
-    }
-    Ok(roots_by_config)
-  }
-}
-
-fn resolve_graph_imports_for_workspace_dir(
-  graph: &ModuleGraph,
-  dir: &WorkspaceDirectory,
-) -> Vec<Url> {
-  fn resolve_graph_imports_for_referrer<'a>(
-    graph: &'a ModuleGraph,
-    referrer: &'a Url,
-  ) -> Option<impl Iterator<Item = Url> + 'a> {
-    let imports = graph.imports.get(referrer)?;
-    Some(
-      imports
-        .dependencies
-        .values()
-        .filter_map(|dep| dep.get_type().or_else(|| dep.get_code()))
-        .map(|url| graph.resolve(url))
-        .cloned(),
-    )
-  }
-
-  let root_deno_json = dir.workspace.root_deno_json();
-  let member_deno_json = dir.maybe_deno_json().filter(|c| {
-    Some(&c.specifier) != root_deno_json.as_ref().map(|c| &c.specifier)
-  });
-  let mut specifiers = root_deno_json
-    .map(|c| resolve_graph_imports_for_referrer(graph, &c.specifier))
-    .into_iter()
-    .flatten()
-    .flatten()
-    .chain(
-      member_deno_json
-        .map(|c| resolve_graph_imports_for_referrer(graph, &c.specifier))
-        .into_iter()
-        .flatten()
-        .flatten(),
-    )
-    .collect::<Vec<_>>();
-  specifiers.sort();
-  specifiers
-}
-
-/// Key to use to group roots together by config.
-#[derive(Debug, Hash, PartialEq, Eq)]
-struct CheckGroupKey<'a> {
-  ts_config: &'a Arc<TsConfig>,
-  imports: Rc<Vec<Url>>,
-}
-
-struct CheckGroupInfo {
-  roots: Vec<Url>,
-  referrer: Url,
-}
-
-pub struct DiagnosticsByFolderIterator<'a>(
-  DiagnosticsByFolderIteratorInner<'a>,
-);
-
-impl<'a> DiagnosticsByFolderIterator<'a> {
-  pub fn into_graph(self) -> Arc<ModuleGraph> {
-    match self.0 {
-      DiagnosticsByFolderIteratorInner::Empty(module_graph) => module_graph,
-      DiagnosticsByFolderIteratorInner::Real(r) => r.graph,
-    }
-  }
-}
-
-impl<'a> Iterator for DiagnosticsByFolderIterator<'a> {
-  type Item = Result<Diagnostics, CheckError>;
-
-  fn next(&mut self) -> Option<Self::Item> {
-    match &mut self.0 {
-      DiagnosticsByFolderIteratorInner::Empty(_) => None,
-      DiagnosticsByFolderIteratorInner::Real(r) => r.next(),
-    }
-  }
-}
-
-enum DiagnosticsByFolderIteratorInner<'a> {
-  Empty(Arc<ModuleGraph>),
-  Real(DiagnosticsByFolderRealIterator<'a>),
-}
-
-struct DiagnosticsByFolderRealIterator<'a> {
-  graph: Arc<ModuleGraph>,
-  sys: &'a CliSys,
-  cjs_tracker: &'a Arc<TypeCheckingCjsTracker>,
-  node_resolver: &'a Arc<CliNodeResolver>,
-  npm_resolver: &'a CliNpmResolver,
-  tsconfig_resolver: &'a TsConfigResolver,
-  type_check_cache: TypeCheckCache,
-  grouped_roots: IndexMap<CheckGroupKey<'a>, CheckGroupInfo>,
-  log_level: Option<log::Level>,
-  npm_check_state_hash: Option<u64>,
-  seen_diagnotics: HashSet<String>,
-  options: CheckOptions,
-  code_cache: Option<Arc<crate::cache::CodeCache>>,
-}
-
-impl<'a> Iterator for DiagnosticsByFolderRealIterator<'a> {
-  type Item = Result<Diagnostics, CheckError>;
-
-  fn next(&mut self) -> Option<Self::Item> {
-    let (group_key, group_info) = self.grouped_roots.shift_remove_index(0)?;
-    let mut result = self.check_diagnostics_in_folder(&group_key, group_info);
-    if let Ok(diagnostics) = &mut result {
-      diagnostics.retain(|d| {
-        if let (Some(file_name), Some(start)) = (&d.file_name, &d.start) {
-          let data = format!(
-            "{}{}:{}:{}{}",
-            d.code,
-            file_name,
-            start.line,
-            start.character,
-            d.message_text.as_deref().unwrap_or_default()
-          );
-          self.seen_diagnotics.insert(data)
-        } else {
-          // show these for each type of config
-          true
-        }
-      });
-    }
-    Some(result)
-  }
-}
-
-impl<'a> DiagnosticsByFolderRealIterator<'a> {
-  #[allow(clippy::too_many_arguments)]
-  fn check_diagnostics_in_folder(
-    &self,
-    group_key: &'a CheckGroupKey<'a>,
-    group_info: CheckGroupInfo,
-  ) -> Result<Diagnostics, CheckError> {
-    fn log_provided_roots(provided_roots: &[Url]) {
-      for root in provided_roots {
-        log::info!(
-          "{} {}",
-          colors::green("Check"),
-          to_percent_decoded_str(root.as_str())
-        );
-      }
-    }
-
-    // walk the graph
-    let ts_config = group_key.ts_config;
-    let mut graph_walker = GraphWalker::new(
-      &self.graph,
-      self.sys,
-      self.node_resolver,
-      self.npm_resolver,
-      self.tsconfig_resolver,
-      self.npm_check_state_hash,
-      ts_config.as_ref(),
-      self.options.type_check_mode,
-    );
-    let mut provided_roots = group_info.roots;
-    for import in group_key.imports.iter() {
-      graph_walker.add_config_import(import, &group_info.referrer);
-    }
-
-    for root in &provided_roots {
-      graph_walker.add_root(root);
-    }
-
-    let TscRoots {
-      roots: root_names,
-      missing_diagnostics,
-      maybe_check_hash,
-    } = graph_walker.into_tsc_roots();
-
-    let mut missing_diagnostics = missing_diagnostics.filter(|d| {
-      self.should_include_diagnostic(self.options.type_check_mode, d)
-    });
-    missing_diagnostics.apply_fast_check_source_maps(&self.graph);
-
-    if root_names.is_empty() {
-      if missing_diagnostics.has_diagnostic() {
-        log_provided_roots(&provided_roots);
-      }
-      return Ok(missing_diagnostics);
-    }
-
-    if !self.options.reload && !missing_diagnostics.has_diagnostic() {
-      // do not type check if we know this is type checked
-      if let Some(check_hash) = maybe_check_hash {
-        if self.type_check_cache.has_check_hash(check_hash) {
-          log::debug!("Already type checked {}", group_info.referrer);
-          return Ok(Default::default());
-        }
-      }
-    }
-
-    // log out the roots that we're checking
-    log_provided_roots(&provided_roots);
-
-    // the first root will always either be the specifier that the user provided
-    // or the first specifier in a directory
-    let first_root = provided_roots.remove(0);
-
-    // while there might be multiple roots, we can't "merge" the build info, so we
-    // try to retrieve the build info for first root, which is the most common use
-    // case.
-    let maybe_tsbuildinfo = if self.options.reload {
-      None
-    } else {
-      self.type_check_cache.get_tsbuildinfo(&first_root)
-    };
-    // to make tsc build info work, we need to consistently hash modules, so that
-    // tsc can better determine if an emit is still valid or not, so we provide
-    // that data here.
-    let tsconfig_hash_data = FastInsecureHasher::new_deno_versioned()
-      .write_hashable(ts_config)
-      .finish();
-    let code_cache = self.code_cache.as_ref().map(|c| {
-      let c: Arc<dyn deno_runtime::code_cache::CodeCache> = c.clone();
-      c
-    });
-    let response = tsc::exec(
-      tsc::Request {
-        config: ts_config.clone(),
-        debug: self.log_level == Some(log::Level::Debug),
-        graph: self.graph.clone(),
-        hash_data: tsconfig_hash_data,
-        maybe_npm: Some(tsc::RequestNpmState {
-          cjs_tracker: self.cjs_tracker.clone(),
-          node_resolver: self.node_resolver.clone(),
-          npm_resolver: self.npm_resolver.clone(),
-        }),
-        maybe_tsbuildinfo,
-        root_names,
-        check_mode: self.options.type_check_mode,
-      },
-      code_cache,
-    )?;
-
-    let mut response_diagnostics = response.diagnostics.filter(|d| {
-      self.should_include_diagnostic(self.options.type_check_mode, d)
-    });
-    response_diagnostics.apply_fast_check_source_maps(&self.graph);
-    let mut diagnostics = missing_diagnostics;
-    diagnostics.extend(response_diagnostics);
-
-    if let Some(tsbuildinfo) = response.maybe_tsbuildinfo {
-      self
-        .type_check_cache
-        .set_tsbuildinfo(&first_root, &tsbuildinfo);
-    }
-
-    if !diagnostics.has_diagnostic() {
-      if let Some(check_hash) = maybe_check_hash {
-        self.type_check_cache.add_check_hash(check_hash);
-      }
-    }
-
-    log::debug!("{}", response.stats);
-
-    Ok(diagnostics)
-  }
-
-  fn should_include_diagnostic(
-    &self,
-    type_check_mode: TypeCheckMode,
-    d: &tsc::Diagnostic,
-  ) -> bool {
-    // this shouldn't check for duplicate diagnostics across folders because
-    // we don't want to accidentally mark a folder as being successful and save
-    // to the check cache if a previous folder caused a diagnostic
-    if self.is_remote_diagnostic(d) {
-      type_check_mode == TypeCheckMode::All && d.include_when_remote()
-    } else {
-      true
-    }
-  }
-
-  fn is_remote_diagnostic(&self, d: &tsc::Diagnostic) -> bool {
-    let Some(file_name) = &d.file_name else {
-      return false;
-    };
-    if file_name.starts_with("https://") || file_name.starts_with("http://") {
-      return true;
-    }
-    // check if in an npm package
-    let Ok(specifier) = ModuleSpecifier::parse(file_name) else {
-      return false;
-    };
-    self.node_resolver.in_npm_package(&specifier)
-  }
-}
-
-struct TscRoots {
-  roots: Vec<(ModuleSpecifier, MediaType)>,
-  missing_diagnostics: tsc::Diagnostics,
-  maybe_check_hash: Option<CacheDBHash>,
-}
-
-struct GraphWalker<'a> {
-  graph: &'a ModuleGraph,
-  sys: &'a CliSys,
-  node_resolver: &'a CliNodeResolver,
-  npm_resolver: &'a CliNpmResolver,
-  tsconfig_resolver: &'a TsConfigResolver,
-  maybe_hasher: Option<FastInsecureHasher>,
-  seen: HashSet<&'a Url>,
-  pending: VecDeque<(&'a Url, bool)>,
-  has_seen_node_builtin: bool,
-  roots: Vec<(ModuleSpecifier, MediaType)>,
-  missing_diagnostics: tsc::Diagnostics,
-}
-
-impl<'a> GraphWalker<'a> {
-  #[allow(clippy::too_many_arguments)]
-  pub fn new(
-    graph: &'a ModuleGraph,
-    sys: &'a CliSys,
-    node_resolver: &'a CliNodeResolver,
-    npm_resolver: &'a CliNpmResolver,
-    tsconfig_resolver: &'a TsConfigResolver,
-    npm_cache_state_hash: Option<u64>,
-    ts_config: &TsConfig,
-    type_check_mode: TypeCheckMode,
-  ) -> Self {
-    let maybe_hasher = npm_cache_state_hash.map(|npm_cache_state_hash| {
-      let mut hasher = FastInsecureHasher::new_deno_versioned();
-      hasher.write_hashable(npm_cache_state_hash);
-      hasher.write_u8(match type_check_mode {
-        TypeCheckMode::All => 0,
-        TypeCheckMode::Local => 1,
-        TypeCheckMode::None => 2,
-      });
-      hasher.write_hashable(graph.has_node_specifier);
-      hasher.write_hashable(ts_config);
-      hasher
-    });
-    Self {
-      graph,
-      sys,
-      node_resolver,
-      npm_resolver,
-      tsconfig_resolver,
-      maybe_hasher,
-      seen: HashSet::with_capacity(
-        graph.imports.len() + graph.specifiers_count(),
-      ),
-      pending: VecDeque::new(),
-      has_seen_node_builtin: false,
-      roots: Vec::with_capacity(graph.imports.len() + graph.specifiers_count()),
-      missing_diagnostics: Default::default(),
-    }
-  }
-
-  pub fn add_config_import(&mut self, specifier: &'a Url, referrer: &Url) {
-    let specifier = self.graph.resolve(specifier);
-    if self.seen.insert(specifier) {
-      if let Ok(nv_ref) = NpmPackageNvReference::from_specifier(specifier) {
-        match self.resolve_npm_nv_ref(&nv_ref, referrer) {
-          Some(resolved) => {
-            let mt = MediaType::from_specifier(&resolved);
-            self.roots.push((resolved, mt));
-          }
-          None => {
-            self
-              .missing_diagnostics
-              .push(tsc::Diagnostic::from_missing_error(
-                specifier.as_str(),
-                None,
-                maybe_additional_sloppy_imports_message(self.sys, specifier),
-              ));
-          }
-        }
-      } else {
-        self.pending.push_back((specifier, false));
-        self.resolve_pending();
-      }
-    }
-  }
-
-  pub fn add_root(&mut self, root: &'a Url) {
-    let specifier = self.graph.resolve(root);
-    if self.seen.insert(specifier) {
-      self.pending.push_back((specifier, false));
-    }
-
-    self.resolve_pending()
-  }
-
-  /// Transform the graph into root specifiers that we can feed `tsc`. We have to
-  /// provide the media type for root modules because `tsc` does not "resolve" the
-  /// media type like other modules, as well as a root specifier needs any
-  /// redirects resolved. We need to include all the emittable files in
-  /// the roots, so they get type checked and optionally emitted,
-  /// otherwise they would be ignored if only imported into JavaScript.
-  pub fn into_tsc_roots(self) -> TscRoots {
-    TscRoots {
-      roots: self.roots,
-      missing_diagnostics: self.missing_diagnostics,
-      maybe_check_hash: self.maybe_hasher.map(|h| CacheDBHash::new(h.finish())),
-    }
-  }
-
-  fn resolve_pending(&mut self) {
-    while let Some((specifier, is_dynamic)) = self.pending.pop_front() {
-      let module = match self.graph.try_get(specifier) {
-        Ok(Some(module)) => module,
-        Ok(None) => continue,
-        Err(err) => {
-          if !is_dynamic {
-            if let Some(err) = module_error_for_tsc_diagnostic(self.sys, err) {
-              self.missing_diagnostics.push(
-                tsc::Diagnostic::from_missing_error(
-                  err.specifier.as_str(),
-                  err.maybe_range,
-                  maybe_additional_sloppy_imports_message(
-                    self.sys,
-                    err.specifier,
-                  ),
-                ),
-              );
-            }
-          }
-          continue;
-        }
-      };
-      if is_dynamic && !self.seen.insert(specifier) {
-        continue;
-      }
-      if let Some(entry) = self.maybe_get_check_entry(module) {
-        self.roots.push(entry);
-      }
-
-      let mut maybe_module_dependencies = None;
-      let mut maybe_types_dependency = None;
-      match module {
-        Module::Js(module) => {
-          maybe_module_dependencies =
-            Some(module.dependencies_prefer_fast_check());
-          maybe_types_dependency = module
-            .maybe_types_dependency
-            .as_ref()
-            .and_then(|d| d.dependency.ok());
-        }
-        Module::Wasm(module) => {
-          maybe_module_dependencies = Some(&module.dependencies);
-        }
-        Module::Json(_) | Module::Npm(_) | Module::External(_) => {}
-        Module::Node(_) => {
-          if !self.has_seen_node_builtin {
-            self.has_seen_node_builtin = true;
-            // inject a specifier that will resolve node types
-            self.roots.push((
-              ModuleSpecifier::parse("asset:///node_types.d.ts").unwrap(),
-              MediaType::Dts,
-            ));
-          }
-        }
-      }
-
-      if let Some(deps) = maybe_module_dependencies {
-        for dep in deps.values() {
-          // walk both the code and type dependencies
-          for resolution in [&dep.maybe_type, &dep.maybe_code] {
-            match resolution {
-              deno_graph::Resolution::Ok(resolution) => {
-                self.handle_specifier(&resolution.specifier, dep.is_dynamic);
-              }
-              deno_graph::Resolution::Err(resolution_error) => {
-                if let Some(err) =
-                  resolution_error_for_tsc_diagnostic(resolution_error)
-                {
-                  self.missing_diagnostics.push(
-                    tsc::Diagnostic::from_missing_error(
-                      err.specifier,
-                      err.maybe_range,
-                      None,
-                    ),
-                  );
-                }
-              }
-              deno_graph::Resolution::None => {}
-            }
-          }
-        }
-      }
-
-      if let Some(dep) = maybe_types_dependency {
-        self.handle_specifier(&dep.specifier, false);
-      }
-    }
-  }
-
-  fn maybe_get_check_entry(
-    &mut self,
-    module: &deno_graph::Module,
-  ) -> Option<(ModuleSpecifier, MediaType)> {
-    match module {
-      Module::Js(module) => {
-        let result = match module.media_type {
-          MediaType::TypeScript
-          | MediaType::Tsx
-          | MediaType::Mts
-          | MediaType::Cts
-          | MediaType::Dts
-          | MediaType::Dmts
-          | MediaType::Dcts => {
-            Some((module.specifier.clone(), module.media_type))
-          }
-          MediaType::JavaScript
-          | MediaType::Mjs
-          | MediaType::Cjs
-          | MediaType::Jsx => {
-            if self
-              .tsconfig_resolver
-              .check_js_for_specifier(&module.specifier)
-              || has_ts_check(module.media_type, &module.source)
-            {
-              Some((module.specifier.clone(), module.media_type))
-            } else {
-              None
-            }
-          }
-          MediaType::Json
-          | MediaType::Wasm
-          | MediaType::Css
-          | MediaType::SourceMap
-          | MediaType::Unknown => None,
-        };
-        if result.is_some() {
-          if let Some(hasher) = &mut self.maybe_hasher {
-            hasher.write_str(module.specifier.as_str());
-            hasher.write_str(
-              // the fast check module will only be set when publishing
-              module
-                .fast_check_module()
-                .map(|s| s.source.as_ref())
-                .unwrap_or(&module.source),
-            );
-          }
-        }
-        result
-      }
-      Module::Node(_) => {
-        // the @types/node package will be in the resolved
-        // snapshot so don't bother including it in the hash
-        None
-      }
-      Module::Npm(_) => {
-        // don't bother adding this specifier to the hash
-        // because what matters is the resolved npm snapshot,
-        // which is hashed below
-        None
-      }
-      Module::Json(module) => {
-        if let Some(hasher) = &mut self.maybe_hasher {
-          hasher.write_str(module.specifier.as_str());
-          hasher.write_str(&module.source);
-        }
-        None
-      }
-      Module::Wasm(module) => {
-        if let Some(hasher) = &mut self.maybe_hasher {
-          hasher.write_str(module.specifier.as_str());
-          hasher.write_str(&module.source_dts);
-        }
-        Some((module.specifier.clone(), MediaType::Dmts))
-      }
-      Module::External(module) => {
-        if let Some(hasher) = &mut self.maybe_hasher {
-          hasher.write_str(module.specifier.as_str());
-        }
-
-        None
-      }
-    }
-  }
-
-  fn handle_specifier(
-    &mut self,
-    specifier: &'a ModuleSpecifier,
-    is_dynamic: bool,
-  ) {
-    let specifier = self.graph.resolve(specifier);
-    if is_dynamic {
-      if !self.seen.contains(specifier) {
-        self.pending.push_back((specifier, true));
-      }
-    } else if self.seen.insert(specifier) {
-      self.pending.push_back((specifier, false));
-    }
-  }
-
-  fn resolve_npm_nv_ref(
-    &self,
-    nv_ref: &NpmPackageNvReference,
-    referrer: &ModuleSpecifier,
-  ) -> Option<ModuleSpecifier> {
-    let pkg_dir = self
-      .npm_resolver
-      .as_managed()
-      .unwrap()
-      .resolve_pkg_folder_from_deno_module(nv_ref.nv())
-      .ok()?;
-    let resolved = self
-      .node_resolver
-      .resolve_package_subpath_from_deno_module(
-        &pkg_dir,
-        nv_ref.sub_path(),
-        Some(referrer),
-        node_resolver::ResolutionMode::Import,
-        node_resolver::NodeResolutionKind::Types,
-      )
-      .ok()?;
-    resolved.into_url().ok()
-  }
-}
-
-/// Matches the `@ts-check` pragma.
-static TS_CHECK_RE: Lazy<Regex> =
-  lazy_regex::lazy_regex!(r#"(?i)^\s*@ts-check(?:\s+|$)"#);
-
-fn has_ts_check(media_type: MediaType, file_text: &str) -> bool {
-  match &media_type {
-    MediaType::JavaScript
-    | MediaType::Mjs
-    | MediaType::Cjs
-    | MediaType::Jsx => get_leading_comments(file_text)
-      .iter()
-      .any(|text| TS_CHECK_RE.is_match(text)),
-    MediaType::TypeScript
-    | MediaType::Mts
-    | MediaType::Cts
-    | MediaType::Dts
-    | MediaType::Dcts
-    | MediaType::Dmts
-    | MediaType::Tsx
-    | MediaType::Json
-    | MediaType::Wasm
-    | MediaType::Css
-    | MediaType::SourceMap
-    | MediaType::Unknown => false,
-  }
-}
-
-fn get_leading_comments(file_text: &str) -> Vec<String> {
-  let mut chars = file_text.chars().peekable();
-
-  // skip over the shebang
-  if file_text.starts_with("#!") {
-    // skip until the end of the line
-    for c in chars.by_ref() {
-      if c == '\n' {
-        break;
-      }
-    }
-  }
-
-  let mut results = Vec::new();
-  // now handle the comments
-  while chars.peek().is_some() {
-    // skip over any whitespace
-    while chars
-      .peek()
-      .map(|c| char::is_whitespace(*c))
-      .unwrap_or(false)
-    {
-      chars.next();
-    }
-
-    if chars.next() != Some('/') {
-      break;
-    }
-    match chars.next() {
-      Some('/') => {
-        let mut text = String::new();
-        for c in chars.by_ref() {
-          if c == '\n' {
-            break;
-          } else {
-            text.push(c);
-          }
-        }
-        results.push(text);
-      }
-      Some('*') => {
-        let mut text = String::new();
-        while let Some(c) = chars.next() {
-          if c == '*' && chars.peek() == Some(&'/') {
-            chars.next();
-            break;
-          } else {
-            text.push(c);
-          }
-        }
-        results.push(text);
-      }
-      _ => break,
-    }
-  }
-  results
-}
-
-#[cfg(test)]
-mod test {
-  use deno_ast::MediaType;
-
-  use super::get_leading_comments;
-  use super::has_ts_check;
-
-  #[test]
-  fn get_leading_comments_test() {
-    assert_eq!(
-      get_leading_comments(
-        "#!/usr/bin/env deno\r\n// test\n/* 1 *//*2*///3\n//\n /**/  /*4 */"
-      ),
-      vec![
-        " test".to_string(),
-        " 1 ".to_string(),
-        "2".to_string(),
-        "3".to_string(),
-        "".to_string(),
-        "".to_string(),
-        "4 ".to_string(),
-      ]
-    );
-    assert_eq!(
-      get_leading_comments("//1 /* */ \na;"),
-      vec!["1 /* */ ".to_string(),]
-    );
-    assert_eq!(get_leading_comments("//"), vec!["".to_string()]);
-  }
-
-  #[test]
-  fn has_ts_check_test() {
-    assert!(has_ts_check(
-      MediaType::JavaScript,
-      "// @ts-check\nconsole.log(5);"
-    ));
-    assert!(has_ts_check(
-      MediaType::JavaScript,
-      "// deno-lint-ignore\n// @ts-check\n"
-    ));
-    assert!(!has_ts_check(
-      MediaType::JavaScript,
-      "test;\n// @ts-check\n"
-    ));
-    assert!(!has_ts_check(
-      MediaType::JavaScript,
-      "// ts-check\nconsole.log(5);"
-    ));
-  }
-}
diff --git a/cli/tools/registry/mod.rs b/cli/tools/registry/mod.rs
index d9edd6739a30aa..8a0ab1903af537 100644
--- a/cli/tools/registry/mod.rs
+++ b/cli/tools/registry/mod.rs
@@ -34,6 +34,10 @@ use serde::Serialize;
 use sha2::Digest;
 use tokio::process::Command;
 
+use self::graph::GraphDiagnosticsCollector;
+use self::module_content::ModuleContentProvider;
+use self::paths::CollectedPublishPath;
+use self::tar::PublishableTarball;
 use crate::args::jsr_api_url;
 use crate::args::jsr_url;
 use crate::args::CliOptions;
@@ -42,10 +46,11 @@ use crate::args::PublishFlags;
 use crate::factory::CliFactory;
 use crate::graph_util::ModuleGraphCreator;
 use crate::http_util::HttpClient;
-use crate::tools::check::CheckOptions;
 use crate::tools::lint::collect_no_slow_type_diagnostics;
 use crate::tools::registry::diagnostics::PublishDiagnostic;
 use crate::tools::registry::diagnostics::PublishDiagnosticsCollector;
+use crate::type_checker::CheckOptions;
+use crate::type_checker::TypeChecker;
 use crate::util::display::human_size;
 
 mod api;
@@ -72,12 +77,6 @@ pub use pm::AddRmPackageReq;
 use publish_order::PublishOrderGraph;
 use unfurl::SpecifierUnfurler;
 
-use self::graph::GraphDiagnosticsCollector;
-use self::module_content::ModuleContentProvider;
-use self::paths::CollectedPublishPath;
-use self::tar::PublishableTarball;
-use super::check::TypeChecker;
-
 pub async fn publish(
   flags: Arc<Flags>,
   publish_flags: PublishFlags,
diff --git a/cli/type_checker.rs b/cli/type_checker.rs
new file mode 100644
index 00000000000000..dbb50d3fb40749
--- /dev/null
+++ b/cli/type_checker.rs
@@ -0,0 +1,1062 @@
+// Copyright 2018-2025 the Deno authors. MIT license.
+
+use std::collections::HashMap;
+use std::collections::HashSet;
+use std::collections::VecDeque;
+use std::rc::Rc;
+use std::sync::Arc;
+
+use deno_ast::MediaType;
+use deno_ast::ModuleSpecifier;
+use deno_config::deno_json;
+use deno_config::deno_json::CompilerOptionTypesDeserializeError;
+use deno_config::workspace::WorkspaceDirectory;
+use deno_core::url::Url;
+use deno_error::JsErrorBox;
+use deno_graph::Module;
+use deno_graph::ModuleGraph;
+use deno_lib::util::hash::FastInsecureHasher;
+use deno_semver::npm::NpmPackageNvReference;
+use deno_terminal::colors;
+use indexmap::IndexMap;
+use once_cell::sync::Lazy;
+use regex::Regex;
+
+use crate::args::deno_json::TsConfigResolver;
+use crate::args::CliOptions;
+use crate::args::DenoSubcommand;
+use crate::args::TsConfig;
+use crate::args::TsTypeLib;
+use crate::args::TypeCheckMode;
+use crate::cache::CacheDBHash;
+use crate::cache::Caches;
+use crate::cache::TypeCheckCache;
+use crate::graph_util::maybe_additional_sloppy_imports_message;
+use crate::graph_util::module_error_for_tsc_diagnostic;
+use crate::graph_util::resolution_error_for_tsc_diagnostic;
+use crate::graph_util::BuildFastCheckGraphOptions;
+use crate::graph_util::ModuleGraphBuilder;
+use crate::node::CliNodeResolver;
+use crate::npm::installer::NpmInstaller;
+use crate::npm::CliNpmResolver;
+use crate::sys::CliSys;
+use crate::tsc;
+use crate::tsc::Diagnostics;
+use crate::tsc::TypeCheckingCjsTracker;
+use crate::util::path::to_percent_decoded_str;
+
+#[derive(Debug, thiserror::Error, deno_error::JsError)]
+#[class(type)]
+#[error("Type checking failed.{}", if self.can_skip {
+  color_print::cstr!(
+    "\n\n  <y>info:</y> The program failed type-checking, but it still might work correctly.\n  <c>hint:</c> Re-run with <u>--no-check</u> to skip type-checking.",
+  )
+} else {
+  ""
+})]
+pub struct FailedTypeCheckingError {
+  can_skip: bool,
+}
+
+#[derive(Debug, thiserror::Error, deno_error::JsError)]
+pub enum CheckError {
+  #[class(inherit)]
+  #[error(transparent)]
+  FailedTypeChecking(#[from] FailedTypeCheckingError),
+  #[class(inherit)]
+  #[error(transparent)]
+  ToMaybeJsxImportSourceConfig(
+    #[from] deno_config::workspace::ToMaybeJsxImportSourceConfigError,
+  ),
+  #[class(inherit)]
+  #[error(transparent)]
+  TscExec(#[from] tsc::ExecError),
+  #[class(inherit)]
+  #[error(transparent)]
+  CompilerOptionTypesDeserialize(#[from] CompilerOptionTypesDeserializeError),
+  #[class(inherit)]
+  #[error(transparent)]
+  CompilerOptionsParse(#[from] deno_json::CompilerOptionsParseError),
+  #[class(inherit)]
+  #[error(transparent)]
+  Other(#[from] JsErrorBox),
+}
+
+/// Options for performing a check of a module graph. Note that the decision to
+/// emit or not is determined by the `ts_config` settings.
+pub struct CheckOptions {
+  /// Whether to build the fast check type graph if necessary.
+  ///
+  /// Note: For perf reasons, the fast check type graph is only
+  /// built if type checking is necessary.
+  pub build_fast_check_graph: bool,
+  /// Default type library to type check with.
+  pub lib: TsTypeLib,
+  /// If true, valid `.tsbuildinfo` files will be ignored and type checking
+  /// will always occur.
+  pub reload: bool,
+  /// Mode to type check with.
+  pub type_check_mode: TypeCheckMode,
+}
+
+pub struct TypeChecker {
+  caches: Arc<Caches>,
+  cjs_tracker: Arc<TypeCheckingCjsTracker>,
+  cli_options: Arc<CliOptions>,
+  module_graph_builder: Arc<ModuleGraphBuilder>,
+  npm_installer: Option<Arc<NpmInstaller>>,
+  node_resolver: Arc<CliNodeResolver>,
+  npm_resolver: CliNpmResolver,
+  sys: CliSys,
+  tsconfig_resolver: Arc<TsConfigResolver>,
+  code_cache: Option<Arc<crate::cache::CodeCache>>,
+}
+
+impl TypeChecker {
+  #[allow(clippy::too_many_arguments)]
+  pub fn new(
+    caches: Arc<Caches>,
+    cjs_tracker: Arc<TypeCheckingCjsTracker>,
+    cli_options: Arc<CliOptions>,
+    module_graph_builder: Arc<ModuleGraphBuilder>,
+    node_resolver: Arc<CliNodeResolver>,
+    npm_installer: Option<Arc<NpmInstaller>>,
+    npm_resolver: CliNpmResolver,
+    sys: CliSys,
+    tsconfig_resolver: Arc<TsConfigResolver>,
+    code_cache: Option<Arc<crate::cache::CodeCache>>,
+  ) -> Self {
+    Self {
+      caches,
+      cjs_tracker,
+      cli_options,
+      module_graph_builder,
+      node_resolver,
+      npm_installer,
+      npm_resolver,
+      sys,
+      tsconfig_resolver,
+      code_cache,
+    }
+  }
+
+  /// Type check the module graph.
+  ///
+  /// It is expected that it is determined if a check and/or emit is validated
+  /// before the function is called.
+  pub async fn check(
+    &self,
+    graph: ModuleGraph,
+    options: CheckOptions,
+  ) -> Result<Arc<ModuleGraph>, CheckError> {
+    let mut diagnostics = self.check_diagnostics(graph, options).await?;
+    let mut failed = false;
+    for result in diagnostics.by_ref() {
+      let mut diagnostics = result?;
+      diagnostics.emit_warnings();
+      if diagnostics.has_diagnostic() {
+        failed = true;
+        log::error!("{}\n", diagnostics);
+      }
+    }
+    if failed {
+      Err(
+        FailedTypeCheckingError {
+          can_skip: !matches!(
+            self.cli_options.sub_command(),
+            DenoSubcommand::Check(_)
+          ),
+        }
+        .into(),
+      )
+    } else {
+      Ok(diagnostics.into_graph())
+    }
+  }
+
+  /// Type check the module graph returning its diagnostics.
+  ///
+  /// It is expected that it is determined if a check and/or emit is validated
+  /// before the function is called.
+  pub async fn check_diagnostics(
+    &self,
+    mut graph: ModuleGraph,
+    options: CheckOptions,
+  ) -> Result<DiagnosticsByFolderIterator, CheckError> {
+    fn check_state_hash(resolver: &CliNpmResolver) -> Option<u64> {
+      match resolver {
+        CliNpmResolver::Byonm(_) => {
+          // not feasible and probably slower to compute
+          None
+        }
+        CliNpmResolver::Managed(resolver) => {
+          // we should probably go further and check all the individual npm packages
+          let mut package_reqs = resolver.resolution().package_reqs();
+          package_reqs.sort_by(|a, b| a.0.cmp(&b.0)); // determinism
+          let mut hasher = FastInsecureHasher::new_without_deno_version();
+          // ensure the cache gets busted when turning nodeModulesDir on or off
+          // as this could cause changes in resolution
+          hasher.write_hashable(resolver.root_node_modules_path().is_some());
+          for (pkg_req, pkg_nv) in package_reqs {
+            hasher.write_hashable(&pkg_req);
+            hasher.write_hashable(&pkg_nv);
+          }
+          Some(hasher.finish())
+        }
+      }
+    }
+
+    if !options.type_check_mode.is_true() || graph.roots.is_empty() {
+      return Ok(DiagnosticsByFolderIterator(
+        DiagnosticsByFolderIteratorInner::Empty(Arc::new(graph)),
+      ));
+    }
+
+    // node built-in specifiers use the @types/node package to determine
+    // types, so inject that now (the caller should do this after the lockfile
+    // has been written)
+    if let Some(npm_installer) = &self.npm_installer {
+      if graph.has_node_specifier {
+        npm_installer.inject_synthetic_types_node_package().await?;
+      }
+    }
+
+    log::debug!("Type checking");
+
+    // add fast check to the graph before getting the roots
+    if options.build_fast_check_graph {
+      self.module_graph_builder.build_fast_check_graph(
+        &mut graph,
+        BuildFastCheckGraphOptions {
+          workspace_fast_check: deno_graph::WorkspaceFastCheckOption::Disabled,
+        },
+      )?;
+    }
+
+    let graph = Arc::new(graph);
+
+    // split the roots by what we can send to the ts compiler all at once
+    let grouped_roots =
+      self.group_roots_by_compiler_options(&graph, options.lib)?;
+
+    Ok(DiagnosticsByFolderIterator(
+      DiagnosticsByFolderIteratorInner::Real(DiagnosticsByFolderRealIterator {
+        graph,
+        sys: &self.sys,
+        cjs_tracker: &self.cjs_tracker,
+        node_resolver: &self.node_resolver,
+        npm_resolver: &self.npm_resolver,
+        tsconfig_resolver: &self.tsconfig_resolver,
+        log_level: self.cli_options.log_level(),
+        npm_check_state_hash: check_state_hash(&self.npm_resolver),
+        type_check_cache: TypeCheckCache::new(
+          self.caches.type_checking_cache_db(),
+        ),
+        grouped_roots,
+        options,
+        seen_diagnotics: Default::default(),
+        code_cache: self.code_cache.clone(),
+      }),
+    ))
+  }
+
+  /// Groups the roots based on the compiler options, which includes the
+  /// resolved TsConfig and resolved compilerOptions.types
+  fn group_roots_by_compiler_options<'a>(
+    &'a self,
+    graph: &ModuleGraph,
+    lib: TsTypeLib,
+  ) -> Result<IndexMap<CheckGroupKey<'a>, CheckGroupInfo>, CheckError> {
+    let mut imports_for_specifier: HashMap<Arc<Url>, Rc<Vec<Url>>> =
+      HashMap::with_capacity(self.tsconfig_resolver.folder_count());
+    let mut roots_by_config: IndexMap<_, CheckGroupInfo> =
+      IndexMap::with_capacity(self.tsconfig_resolver.folder_count());
+    for root in &graph.roots {
+      let folder = self.tsconfig_resolver.folder_for_specifier(root);
+      let imports =
+        match imports_for_specifier.entry(folder.dir.dir_url().clone()) {
+          std::collections::hash_map::Entry::Occupied(entry) => {
+            entry.get().clone()
+          }
+          std::collections::hash_map::Entry::Vacant(vacant_entry) => {
+            let value = Rc::new(resolve_graph_imports_for_workspace_dir(
+              graph,
+              &folder.dir,
+            ));
+            vacant_entry.insert(value.clone());
+            value
+          }
+        };
+      let tsconfig = folder.lib_tsconfig(lib)?;
+      let key = CheckGroupKey {
+        ts_config: tsconfig,
+        imports,
+      };
+      let entry = roots_by_config.entry(key);
+      let entry = match entry {
+        indexmap::map::Entry::Occupied(entry) => entry.into_mut(),
+        indexmap::map::Entry::Vacant(entry) => entry.insert(CheckGroupInfo {
+          roots: Default::default(),
+          // this is slightly hacky. It's used as the referrer for resolving
+          // npm imports in the key
+          referrer: folder
+            .dir
+            .maybe_deno_json()
+            .map(|d| d.specifier.clone())
+            .unwrap_or_else(|| folder.dir.dir_url().as_ref().clone()),
+        }),
+      };
+      entry.roots.push(root.clone());
+    }
+    Ok(roots_by_config)
+  }
+}
+
+fn resolve_graph_imports_for_workspace_dir(
+  graph: &ModuleGraph,
+  dir: &WorkspaceDirectory,
+) -> Vec<Url> {
+  fn resolve_graph_imports_for_referrer<'a>(
+    graph: &'a ModuleGraph,
+    referrer: &'a Url,
+  ) -> Option<impl Iterator<Item = Url> + 'a> {
+    let imports = graph.imports.get(referrer)?;
+    Some(
+      imports
+        .dependencies
+        .values()
+        .filter_map(|dep| dep.get_type().or_else(|| dep.get_code()))
+        .map(|url| graph.resolve(url))
+        .cloned(),
+    )
+  }
+
+  let root_deno_json = dir.workspace.root_deno_json();
+  let member_deno_json = dir.maybe_deno_json().filter(|c| {
+    Some(&c.specifier) != root_deno_json.as_ref().map(|c| &c.specifier)
+  });
+  let mut specifiers = root_deno_json
+    .map(|c| resolve_graph_imports_for_referrer(graph, &c.specifier))
+    .into_iter()
+    .flatten()
+    .flatten()
+    .chain(
+      member_deno_json
+        .map(|c| resolve_graph_imports_for_referrer(graph, &c.specifier))
+        .into_iter()
+        .flatten()
+        .flatten(),
+    )
+    .collect::<Vec<_>>();
+  specifiers.sort();
+  specifiers
+}
+
+/// Key to use to group roots together by config.
+#[derive(Debug, Hash, PartialEq, Eq)]
+struct CheckGroupKey<'a> {
+  ts_config: &'a Arc<TsConfig>,
+  imports: Rc<Vec<Url>>,
+}
+
+struct CheckGroupInfo {
+  roots: Vec<Url>,
+  referrer: Url,
+}
+
+pub struct DiagnosticsByFolderIterator<'a>(
+  DiagnosticsByFolderIteratorInner<'a>,
+);
+
+impl<'a> DiagnosticsByFolderIterator<'a> {
+  pub fn into_graph(self) -> Arc<ModuleGraph> {
+    match self.0 {
+      DiagnosticsByFolderIteratorInner::Empty(module_graph) => module_graph,
+      DiagnosticsByFolderIteratorInner::Real(r) => r.graph,
+    }
+  }
+}
+
+impl<'a> Iterator for DiagnosticsByFolderIterator<'a> {
+  type Item = Result<Diagnostics, CheckError>;
+
+  fn next(&mut self) -> Option<Self::Item> {
+    match &mut self.0 {
+      DiagnosticsByFolderIteratorInner::Empty(_) => None,
+      DiagnosticsByFolderIteratorInner::Real(r) => r.next(),
+    }
+  }
+}
+
+enum DiagnosticsByFolderIteratorInner<'a> {
+  Empty(Arc<ModuleGraph>),
+  Real(DiagnosticsByFolderRealIterator<'a>),
+}
+
+struct DiagnosticsByFolderRealIterator<'a> {
+  graph: Arc<ModuleGraph>,
+  sys: &'a CliSys,
+  cjs_tracker: &'a Arc<TypeCheckingCjsTracker>,
+  node_resolver: &'a Arc<CliNodeResolver>,
+  npm_resolver: &'a CliNpmResolver,
+  tsconfig_resolver: &'a TsConfigResolver,
+  type_check_cache: TypeCheckCache,
+  grouped_roots: IndexMap<CheckGroupKey<'a>, CheckGroupInfo>,
+  log_level: Option<log::Level>,
+  npm_check_state_hash: Option<u64>,
+  seen_diagnotics: HashSet<String>,
+  options: CheckOptions,
+  code_cache: Option<Arc<crate::cache::CodeCache>>,
+}
+
+impl<'a> Iterator for DiagnosticsByFolderRealIterator<'a> {
+  type Item = Result<Diagnostics, CheckError>;
+
+  fn next(&mut self) -> Option<Self::Item> {
+    let (group_key, group_info) = self.grouped_roots.shift_remove_index(0)?;
+    let mut result = self.check_diagnostics_in_folder(&group_key, group_info);
+    if let Ok(diagnostics) = &mut result {
+      diagnostics.retain(|d| {
+        if let (Some(file_name), Some(start)) = (&d.file_name, &d.start) {
+          let data = format!(
+            "{}{}:{}:{}{}",
+            d.code,
+            file_name,
+            start.line,
+            start.character,
+            d.message_text.as_deref().unwrap_or_default()
+          );
+          self.seen_diagnotics.insert(data)
+        } else {
+          // show these for each type of config
+          true
+        }
+      });
+    }
+    Some(result)
+  }
+}
+
+impl<'a> DiagnosticsByFolderRealIterator<'a> {
+  #[allow(clippy::too_many_arguments)]
+  fn check_diagnostics_in_folder(
+    &self,
+    group_key: &'a CheckGroupKey<'a>,
+    group_info: CheckGroupInfo,
+  ) -> Result<Diagnostics, CheckError> {
+    fn log_provided_roots(provided_roots: &[Url]) {
+      for root in provided_roots {
+        log::info!(
+          "{} {}",
+          colors::green("Check"),
+          to_percent_decoded_str(root.as_str())
+        );
+      }
+    }
+
+    // walk the graph
+    let ts_config = group_key.ts_config;
+    let mut graph_walker = GraphWalker::new(
+      &self.graph,
+      self.sys,
+      self.node_resolver,
+      self.npm_resolver,
+      self.tsconfig_resolver,
+      self.npm_check_state_hash,
+      ts_config.as_ref(),
+      self.options.type_check_mode,
+    );
+    let mut provided_roots = group_info.roots;
+    for import in group_key.imports.iter() {
+      graph_walker.add_config_import(import, &group_info.referrer);
+    }
+
+    for root in &provided_roots {
+      graph_walker.add_root(root);
+    }
+
+    let TscRoots {
+      roots: root_names,
+      missing_diagnostics,
+      maybe_check_hash,
+    } = graph_walker.into_tsc_roots();
+
+    let mut missing_diagnostics = missing_diagnostics.filter(|d| {
+      self.should_include_diagnostic(self.options.type_check_mode, d)
+    });
+    missing_diagnostics.apply_fast_check_source_maps(&self.graph);
+
+    if root_names.is_empty() {
+      if missing_diagnostics.has_diagnostic() {
+        log_provided_roots(&provided_roots);
+      }
+      return Ok(missing_diagnostics);
+    }
+
+    if !self.options.reload && !missing_diagnostics.has_diagnostic() {
+      // do not type check if we know this is type checked
+      if let Some(check_hash) = maybe_check_hash {
+        if self.type_check_cache.has_check_hash(check_hash) {
+          log::debug!("Already type checked {}", group_info.referrer);
+          return Ok(Default::default());
+        }
+      }
+    }
+
+    // log out the roots that we're checking
+    log_provided_roots(&provided_roots);
+
+    // the first root will always either be the specifier that the user provided
+    // or the first specifier in a directory
+    let first_root = provided_roots.remove(0);
+
+    // while there might be multiple roots, we can't "merge" the build info, so we
+    // try to retrieve the build info for first root, which is the most common use
+    // case.
+    let maybe_tsbuildinfo = if self.options.reload {
+      None
+    } else {
+      self.type_check_cache.get_tsbuildinfo(&first_root)
+    };
+    // to make tsc build info work, we need to consistently hash modules, so that
+    // tsc can better determine if an emit is still valid or not, so we provide
+    // that data here.
+    let tsconfig_hash_data = FastInsecureHasher::new_deno_versioned()
+      .write_hashable(ts_config)
+      .finish();
+    let code_cache = self.code_cache.as_ref().map(|c| {
+      let c: Arc<dyn deno_runtime::code_cache::CodeCache> = c.clone();
+      c
+    });
+    let response = tsc::exec(
+      tsc::Request {
+        config: ts_config.clone(),
+        debug: self.log_level == Some(log::Level::Debug),
+        graph: self.graph.clone(),
+        hash_data: tsconfig_hash_data,
+        maybe_npm: Some(tsc::RequestNpmState {
+          cjs_tracker: self.cjs_tracker.clone(),
+          node_resolver: self.node_resolver.clone(),
+          npm_resolver: self.npm_resolver.clone(),
+        }),
+        maybe_tsbuildinfo,
+        root_names,
+        check_mode: self.options.type_check_mode,
+      },
+      code_cache,
+    )?;
+
+    let mut response_diagnostics = response.diagnostics.filter(|d| {
+      self.should_include_diagnostic(self.options.type_check_mode, d)
+    });
+    response_diagnostics.apply_fast_check_source_maps(&self.graph);
+    let mut diagnostics = missing_diagnostics;
+    diagnostics.extend(response_diagnostics);
+
+    if let Some(tsbuildinfo) = response.maybe_tsbuildinfo {
+      self
+        .type_check_cache
+        .set_tsbuildinfo(&first_root, &tsbuildinfo);
+    }
+
+    if !diagnostics.has_diagnostic() {
+      if let Some(check_hash) = maybe_check_hash {
+        self.type_check_cache.add_check_hash(check_hash);
+      }
+    }
+
+    log::debug!("{}", response.stats);
+
+    Ok(diagnostics)
+  }
+
+  fn should_include_diagnostic(
+    &self,
+    type_check_mode: TypeCheckMode,
+    d: &tsc::Diagnostic,
+  ) -> bool {
+    // this shouldn't check for duplicate diagnostics across folders because
+    // we don't want to accidentally mark a folder as being successful and save
+    // to the check cache if a previous folder caused a diagnostic
+    if self.is_remote_diagnostic(d) {
+      type_check_mode == TypeCheckMode::All && d.include_when_remote()
+    } else {
+      true
+    }
+  }
+
+  fn is_remote_diagnostic(&self, d: &tsc::Diagnostic) -> bool {
+    let Some(file_name) = &d.file_name else {
+      return false;
+    };
+    if file_name.starts_with("https://") || file_name.starts_with("http://") {
+      return true;
+    }
+    // check if in an npm package
+    let Ok(specifier) = ModuleSpecifier::parse(file_name) else {
+      return false;
+    };
+    self.node_resolver.in_npm_package(&specifier)
+  }
+}
+
+struct TscRoots {
+  roots: Vec<(ModuleSpecifier, MediaType)>,
+  missing_diagnostics: tsc::Diagnostics,
+  maybe_check_hash: Option<CacheDBHash>,
+}
+
+struct GraphWalker<'a> {
+  graph: &'a ModuleGraph,
+  sys: &'a CliSys,
+  node_resolver: &'a CliNodeResolver,
+  npm_resolver: &'a CliNpmResolver,
+  tsconfig_resolver: &'a TsConfigResolver,
+  maybe_hasher: Option<FastInsecureHasher>,
+  seen: HashSet<&'a Url>,
+  pending: VecDeque<(&'a Url, bool)>,
+  has_seen_node_builtin: bool,
+  roots: Vec<(ModuleSpecifier, MediaType)>,
+  missing_diagnostics: tsc::Diagnostics,
+}
+
+impl<'a> GraphWalker<'a> {
+  #[allow(clippy::too_many_arguments)]
+  pub fn new(
+    graph: &'a ModuleGraph,
+    sys: &'a CliSys,
+    node_resolver: &'a CliNodeResolver,
+    npm_resolver: &'a CliNpmResolver,
+    tsconfig_resolver: &'a TsConfigResolver,
+    npm_cache_state_hash: Option<u64>,
+    ts_config: &TsConfig,
+    type_check_mode: TypeCheckMode,
+  ) -> Self {
+    let maybe_hasher = npm_cache_state_hash.map(|npm_cache_state_hash| {
+      let mut hasher = FastInsecureHasher::new_deno_versioned();
+      hasher.write_hashable(npm_cache_state_hash);
+      hasher.write_u8(match type_check_mode {
+        TypeCheckMode::All => 0,
+        TypeCheckMode::Local => 1,
+        TypeCheckMode::None => 2,
+      });
+      hasher.write_hashable(graph.has_node_specifier);
+      hasher.write_hashable(ts_config);
+      hasher
+    });
+    Self {
+      graph,
+      sys,
+      node_resolver,
+      npm_resolver,
+      tsconfig_resolver,
+      maybe_hasher,
+      seen: HashSet::with_capacity(
+        graph.imports.len() + graph.specifiers_count(),
+      ),
+      pending: VecDeque::new(),
+      has_seen_node_builtin: false,
+      roots: Vec::with_capacity(graph.imports.len() + graph.specifiers_count()),
+      missing_diagnostics: Default::default(),
+    }
+  }
+
+  pub fn add_config_import(&mut self, specifier: &'a Url, referrer: &Url) {
+    let specifier = self.graph.resolve(specifier);
+    if self.seen.insert(specifier) {
+      if let Ok(nv_ref) = NpmPackageNvReference::from_specifier(specifier) {
+        match self.resolve_npm_nv_ref(&nv_ref, referrer) {
+          Some(resolved) => {
+            let mt = MediaType::from_specifier(&resolved);
+            self.roots.push((resolved, mt));
+          }
+          None => {
+            self
+              .missing_diagnostics
+              .push(tsc::Diagnostic::from_missing_error(
+                specifier.as_str(),
+                None,
+                maybe_additional_sloppy_imports_message(self.sys, specifier),
+              ));
+          }
+        }
+      } else {
+        self.pending.push_back((specifier, false));
+        self.resolve_pending();
+      }
+    }
+  }
+
+  pub fn add_root(&mut self, root: &'a Url) {
+    let specifier = self.graph.resolve(root);
+    if self.seen.insert(specifier) {
+      self.pending.push_back((specifier, false));
+    }
+
+    self.resolve_pending()
+  }
+
+  /// Transform the graph into root specifiers that we can feed `tsc`. We have to
+  /// provide the media type for root modules because `tsc` does not "resolve" the
+  /// media type like other modules, as well as a root specifier needs any
+  /// redirects resolved. We need to include all the emittable files in
+  /// the roots, so they get type checked and optionally emitted,
+  /// otherwise they would be ignored if only imported into JavaScript.
+  pub fn into_tsc_roots(self) -> TscRoots {
+    TscRoots {
+      roots: self.roots,
+      missing_diagnostics: self.missing_diagnostics,
+      maybe_check_hash: self.maybe_hasher.map(|h| CacheDBHash::new(h.finish())),
+    }
+  }
+
+  fn resolve_pending(&mut self) {
+    while let Some((specifier, is_dynamic)) = self.pending.pop_front() {
+      let module = match self.graph.try_get(specifier) {
+        Ok(Some(module)) => module,
+        Ok(None) => continue,
+        Err(err) => {
+          if !is_dynamic {
+            if let Some(err) = module_error_for_tsc_diagnostic(self.sys, err) {
+              self.missing_diagnostics.push(
+                tsc::Diagnostic::from_missing_error(
+                  err.specifier.as_str(),
+                  err.maybe_range,
+                  maybe_additional_sloppy_imports_message(
+                    self.sys,
+                    err.specifier,
+                  ),
+                ),
+              );
+            }
+          }
+          continue;
+        }
+      };
+      if is_dynamic && !self.seen.insert(specifier) {
+        continue;
+      }
+      if let Some(entry) = self.maybe_get_check_entry(module) {
+        self.roots.push(entry);
+      }
+
+      let mut maybe_module_dependencies = None;
+      let mut maybe_types_dependency = None;
+      match module {
+        Module::Js(module) => {
+          maybe_module_dependencies =
+            Some(module.dependencies_prefer_fast_check());
+          maybe_types_dependency = module
+            .maybe_types_dependency
+            .as_ref()
+            .and_then(|d| d.dependency.ok());
+        }
+        Module::Wasm(module) => {
+          maybe_module_dependencies = Some(&module.dependencies);
+        }
+        Module::Json(_) | Module::Npm(_) | Module::External(_) => {}
+        Module::Node(_) => {
+          if !self.has_seen_node_builtin {
+            self.has_seen_node_builtin = true;
+            // inject a specifier that will resolve node types
+            self.roots.push((
+              ModuleSpecifier::parse("asset:///node_types.d.ts").unwrap(),
+              MediaType::Dts,
+            ));
+          }
+        }
+      }
+
+      if let Some(deps) = maybe_module_dependencies {
+        for dep in deps.values() {
+          // walk both the code and type dependencies
+          for resolution in [&dep.maybe_type, &dep.maybe_code] {
+            match resolution {
+              deno_graph::Resolution::Ok(resolution) => {
+                self.handle_specifier(&resolution.specifier, dep.is_dynamic);
+              }
+              deno_graph::Resolution::Err(resolution_error) => {
+                if let Some(err) =
+                  resolution_error_for_tsc_diagnostic(resolution_error)
+                {
+                  self.missing_diagnostics.push(
+                    tsc::Diagnostic::from_missing_error(
+                      err.specifier,
+                      err.maybe_range,
+                      None,
+                    ),
+                  );
+                }
+              }
+              deno_graph::Resolution::None => {}
+            }
+          }
+        }
+      }
+
+      if let Some(dep) = maybe_types_dependency {
+        self.handle_specifier(&dep.specifier, false);
+      }
+    }
+  }
+
+  fn maybe_get_check_entry(
+    &mut self,
+    module: &deno_graph::Module,
+  ) -> Option<(ModuleSpecifier, MediaType)> {
+    match module {
+      Module::Js(module) => {
+        let result = match module.media_type {
+          MediaType::TypeScript
+          | MediaType::Tsx
+          | MediaType::Mts
+          | MediaType::Cts
+          | MediaType::Dts
+          | MediaType::Dmts
+          | MediaType::Dcts => {
+            Some((module.specifier.clone(), module.media_type))
+          }
+          MediaType::JavaScript
+          | MediaType::Mjs
+          | MediaType::Cjs
+          | MediaType::Jsx => {
+            if self
+              .tsconfig_resolver
+              .check_js_for_specifier(&module.specifier)
+              || has_ts_check(module.media_type, &module.source)
+            {
+              Some((module.specifier.clone(), module.media_type))
+            } else {
+              None
+            }
+          }
+          MediaType::Json
+          | MediaType::Wasm
+          | MediaType::Css
+          | MediaType::SourceMap
+          | MediaType::Unknown => None,
+        };
+        if result.is_some() {
+          if let Some(hasher) = &mut self.maybe_hasher {
+            hasher.write_str(module.specifier.as_str());
+            hasher.write_str(
+              // the fast check module will only be set when publishing
+              module
+                .fast_check_module()
+                .map(|s| s.source.as_ref())
+                .unwrap_or(&module.source),
+            );
+          }
+        }
+        result
+      }
+      Module::Node(_) => {
+        // the @types/node package will be in the resolved
+        // snapshot so don't bother including it in the hash
+        None
+      }
+      Module::Npm(_) => {
+        // don't bother adding this specifier to the hash
+        // because what matters is the resolved npm snapshot,
+        // which is hashed below
+        None
+      }
+      Module::Json(module) => {
+        if let Some(hasher) = &mut self.maybe_hasher {
+          hasher.write_str(module.specifier.as_str());
+          hasher.write_str(&module.source);
+        }
+        None
+      }
+      Module::Wasm(module) => {
+        if let Some(hasher) = &mut self.maybe_hasher {
+          hasher.write_str(module.specifier.as_str());
+          hasher.write_str(&module.source_dts);
+        }
+        Some((module.specifier.clone(), MediaType::Dmts))
+      }
+      Module::External(module) => {
+        if let Some(hasher) = &mut self.maybe_hasher {
+          hasher.write_str(module.specifier.as_str());
+        }
+
+        None
+      }
+    }
+  }
+
+  fn handle_specifier(
+    &mut self,
+    specifier: &'a ModuleSpecifier,
+    is_dynamic: bool,
+  ) {
+    let specifier = self.graph.resolve(specifier);
+    if is_dynamic {
+      if !self.seen.contains(specifier) {
+        self.pending.push_back((specifier, true));
+      }
+    } else if self.seen.insert(specifier) {
+      self.pending.push_back((specifier, false));
+    }
+  }
+
+  fn resolve_npm_nv_ref(
+    &self,
+    nv_ref: &NpmPackageNvReference,
+    referrer: &ModuleSpecifier,
+  ) -> Option<ModuleSpecifier> {
+    let pkg_dir = self
+      .npm_resolver
+      .as_managed()
+      .unwrap()
+      .resolve_pkg_folder_from_deno_module(nv_ref.nv())
+      .ok()?;
+    let resolved = self
+      .node_resolver
+      .resolve_package_subpath_from_deno_module(
+        &pkg_dir,
+        nv_ref.sub_path(),
+        Some(referrer),
+        node_resolver::ResolutionMode::Import,
+        node_resolver::NodeResolutionKind::Types,
+      )
+      .ok()?;
+    resolved.into_url().ok()
+  }
+}
+
+/// Matches the `@ts-check` pragma.
+static TS_CHECK_RE: Lazy<Regex> =
+  lazy_regex::lazy_regex!(r#"(?i)^\s*@ts-check(?:\s+|$)"#);
+
+fn has_ts_check(media_type: MediaType, file_text: &str) -> bool {
+  match &media_type {
+    MediaType::JavaScript
+    | MediaType::Mjs
+    | MediaType::Cjs
+    | MediaType::Jsx => get_leading_comments(file_text)
+      .iter()
+      .any(|text| TS_CHECK_RE.is_match(text)),
+    MediaType::TypeScript
+    | MediaType::Mts
+    | MediaType::Cts
+    | MediaType::Dts
+    | MediaType::Dcts
+    | MediaType::Dmts
+    | MediaType::Tsx
+    | MediaType::Json
+    | MediaType::Wasm
+    | MediaType::Css
+    | MediaType::SourceMap
+    | MediaType::Unknown => false,
+  }
+}
+
+fn get_leading_comments(file_text: &str) -> Vec<String> {
+  let mut chars = file_text.chars().peekable();
+
+  // skip over the shebang
+  if file_text.starts_with("#!") {
+    // skip until the end of the line
+    for c in chars.by_ref() {
+      if c == '\n' {
+        break;
+      }
+    }
+  }
+
+  let mut results = Vec::new();
+  // now handle the comments
+  while chars.peek().is_some() {
+    // skip over any whitespace
+    while chars
+      .peek()
+      .map(|c| char::is_whitespace(*c))
+      .unwrap_or(false)
+    {
+      chars.next();
+    }
+
+    if chars.next() != Some('/') {
+      break;
+    }
+    match chars.next() {
+      Some('/') => {
+        let mut text = String::new();
+        for c in chars.by_ref() {
+          if c == '\n' {
+            break;
+          } else {
+            text.push(c);
+          }
+        }
+        results.push(text);
+      }
+      Some('*') => {
+        let mut text = String::new();
+        while let Some(c) = chars.next() {
+          if c == '*' && chars.peek() == Some(&'/') {
+            chars.next();
+            break;
+          } else {
+            text.push(c);
+          }
+        }
+        results.push(text);
+      }
+      _ => break,
+    }
+  }
+  results
+}
+
+#[cfg(test)]
+mod test {
+  use deno_ast::MediaType;
+
+  use super::get_leading_comments;
+  use super::has_ts_check;
+
+  #[test]
+  fn get_leading_comments_test() {
+    assert_eq!(
+      get_leading_comments(
+        "#!/usr/bin/env deno\r\n// test\n/* 1 *//*2*///3\n//\n /**/  /*4 */"
+      ),
+      vec![
+        " test".to_string(),
+        " 1 ".to_string(),
+        "2".to_string(),
+        "3".to_string(),
+        "".to_string(),
+        "".to_string(),
+        "4 ".to_string(),
+      ]
+    );
+    assert_eq!(
+      get_leading_comments("//1 /* */ \na;"),
+      vec!["1 /* */ ".to_string(),]
+    );
+    assert_eq!(get_leading_comments("//"), vec!["".to_string()]);
+  }
+
+  #[test]
+  fn has_ts_check_test() {
+    assert!(has_ts_check(
+      MediaType::JavaScript,
+      "// @ts-check\nconsole.log(5);"
+    ));
+    assert!(has_ts_check(
+      MediaType::JavaScript,
+      "// deno-lint-ignore\n// @ts-check\n"
+    ));
+    assert!(!has_ts_check(
+      MediaType::JavaScript,
+      "test;\n// @ts-check\n"
+    ));
+    assert!(!has_ts_check(
+      MediaType::JavaScript,
+      "// ts-check\nconsole.log(5);"
+    ));
+  }
+}

From 29c4661d0b219ddb4ec372fbd4e770a185bd8f7c Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Fri, 21 Feb 2025 17:02:33 -0500
Subject: [PATCH 009/115] refactor: separate publish from pm subcommands
 (#28237)

---
 cli/main.rs                                   |  9 ++--
 cli/{tools/registry/api.rs => registry.rs}    |  0
 cli/tools/installer.rs                        | 14 ++----
 cli/tools/mod.rs                              |  3 +-
 cli/tools/{registry => }/pm/cache_deps.rs     |  0
 cli/tools/{registry => }/pm/deps.rs           |  0
 cli/tools/{registry/pm.rs => pm/mod.rs}       |  0
 .../{registry => }/pm/outdated/interactive.rs |  4 +-
 .../pm/outdated.rs => pm/outdated/mod.rs}     |  2 +-
 cli/tools/{registry => publish}/auth.rs       |  0
 .../{registry => publish}/diagnostics.rs      |  2 +-
 cli/tools/{registry => publish}/graph.rs      |  0
 cli/tools/{registry => publish}/mod.rs        | 46 +++++++++----------
 .../{registry => publish}/module_content.rs   |  2 +-
 cli/tools/{registry => publish}/paths.rs      |  0
 cli/tools/{registry => publish}/provenance.rs |  2 +-
 .../{registry => publish}/publish_order.rs    |  0
 cli/tools/{registry => publish}/tar.rs        |  0
 cli/tools/{registry => publish}/unfurl.rs     |  0
 19 files changed, 38 insertions(+), 46 deletions(-)
 rename cli/{tools/registry/api.rs => registry.rs} (100%)
 rename cli/tools/{registry => }/pm/cache_deps.rs (100%)
 rename cli/tools/{registry => }/pm/deps.rs (100%)
 rename cli/tools/{registry/pm.rs => pm/mod.rs} (100%)
 rename cli/tools/{registry => }/pm/outdated/interactive.rs (99%)
 rename cli/tools/{registry/pm/outdated.rs => pm/outdated/mod.rs} (99%)
 rename cli/tools/{registry => publish}/auth.rs (100%)
 rename cli/tools/{registry => publish}/diagnostics.rs (99%)
 rename cli/tools/{registry => publish}/graph.rs (100%)
 rename cli/tools/{registry => publish}/mod.rs (97%)
 rename cli/tools/{registry => publish}/module_content.rs (99%)
 rename cli/tools/{registry => publish}/paths.rs (100%)
 rename cli/tools/{registry => publish}/provenance.rs (99%)
 rename cli/tools/{registry => publish}/publish_order.rs (100%)
 rename cli/tools/{registry => publish}/tar.rs (100%)
 rename cli/tools/{registry => publish}/unfurl.rs (100%)

diff --git a/cli/main.rs b/cli/main.rs
index 017b7704a8bde0..fa3e28e9a48ee5 100644
--- a/cli/main.rs
+++ b/cli/main.rs
@@ -15,6 +15,7 @@ mod module_loader;
 mod node;
 mod npm;
 mod ops;
+mod registry;
 mod resolver;
 mod standalone;
 mod task_runner;
@@ -108,10 +109,10 @@ fn spawn_subcommand<F: Future<Output = T> + 'static, T: SubcommandOutput>(
 async fn run_subcommand(flags: Arc<Flags>) -> Result<i32, AnyError> {
   let handle = match flags.subcommand.clone() {
     DenoSubcommand::Add(add_flags) => spawn_subcommand(async {
-      tools::registry::add(flags, add_flags, tools::registry::AddCommandName::Add).await
+      tools::pm::add(flags, add_flags, tools::pm::AddCommandName::Add).await
     }),
     DenoSubcommand::Remove(remove_flags) => spawn_subcommand(async {
-      tools::registry::remove(flags, remove_flags).await
+      tools::pm::remove(flags, remove_flags).await
     }),
     DenoSubcommand::Bench(bench_flags) => spawn_subcommand(async {
       if bench_flags.watch.is_some() {
@@ -193,7 +194,7 @@ async fn run_subcommand(flags: Arc<Flags>) -> Result<i32, AnyError> {
     }),
     DenoSubcommand::Outdated(update_flags) => {
       spawn_subcommand(async move {
-        tools::registry::outdated(flags, update_flags).await
+        tools::pm::outdated(flags, update_flags).await
       })
     }
     DenoSubcommand::Repl(repl_flags) => {
@@ -316,7 +317,7 @@ async fn run_subcommand(flags: Arc<Flags>) -> Result<i32, AnyError> {
     ),
     DenoSubcommand::Vendor => exit_with_message("⚠️ `deno vendor` was removed in Deno 2.\n\nSee the Deno 1.x to 2.x Migration Guide for migration instructions: https://docs.deno.com/runtime/manual/advanced/migrate_deprecations", 1),
     DenoSubcommand::Publish(publish_flags) => spawn_subcommand(async {
-      tools::registry::publish(flags, publish_flags).await
+      tools::publish::publish(flags, publish_flags).await
     }),
     DenoSubcommand::Help(help_flags) => spawn_subcommand(async move {
       use std::io::Write;
diff --git a/cli/tools/registry/api.rs b/cli/registry.rs
similarity index 100%
rename from cli/tools/registry/api.rs
rename to cli/registry.rs
diff --git a/cli/tools/installer.rs b/cli/tools/installer.rs
index e0f9917f28c520..959660f6f90262 100644
--- a/cli/tools/installer.rs
+++ b/cli/tools/installer.rs
@@ -212,7 +212,7 @@ pub async fn uninstall(
   let uninstall_flags = match uninstall_flags.kind {
     UninstallKind::Global(flags) => flags,
     UninstallKind::Local(remove_flags) => {
-      return super::registry::remove(flags, remove_flags).await;
+      return super::pm::remove(flags, remove_flags).await;
     }
   };
 
@@ -300,12 +300,7 @@ async fn install_local(
 ) -> Result<(), AnyError> {
   match install_flags {
     InstallFlagsLocal::Add(add_flags) => {
-      super::registry::add(
-        flags,
-        add_flags,
-        super::registry::AddCommandName::Install,
-      )
-      .await
+      super::pm::add(flags, add_flags, super::pm::AddCommandName::Install).await
     }
     InstallFlagsLocal::Entrypoints(entrypoints) => {
       install_from_entrypoints(flags, &entrypoints).await
@@ -314,7 +309,7 @@ async fn install_local(
       let factory = CliFactory::from_flags(flags);
       // surface any errors in the package.json
       factory.npm_installer()?.ensure_no_pkg_json_dep_errors()?;
-      crate::tools::registry::cache_top_level_deps(&factory, None).await?;
+      crate::tools::pm::cache_top_level_deps(&factory, None).await?;
 
       if let Some(lockfile) = factory.cli_options()?.maybe_lockfile() {
         lockfile.write_if_changed()?;
@@ -393,8 +388,7 @@ async fn install_global(
   let entry_text = install_flags_global.module_url.as_str();
   if !cli_options.initial_cwd().join(entry_text).exists() {
     // check for package requirement missing prefix
-    if let Ok(Err(package_req)) =
-      super::registry::AddRmPackageReq::parse(entry_text)
+    if let Ok(Err(package_req)) = super::pm::AddRmPackageReq::parse(entry_text)
     {
       if jsr_resolver.req_to_nv(&package_req).await.is_some() {
         bail!(
diff --git a/cli/tools/mod.rs b/cli/tools/mod.rs
index 35de8ab9faafe6..a2874c57a564a6 100644
--- a/cli/tools/mod.rs
+++ b/cli/tools/mod.rs
@@ -12,7 +12,8 @@ pub mod init;
 pub mod installer;
 pub mod jupyter;
 pub mod lint;
-pub mod registry;
+pub mod pm;
+pub mod publish;
 pub mod repl;
 pub mod run;
 pub mod serve;
diff --git a/cli/tools/registry/pm/cache_deps.rs b/cli/tools/pm/cache_deps.rs
similarity index 100%
rename from cli/tools/registry/pm/cache_deps.rs
rename to cli/tools/pm/cache_deps.rs
diff --git a/cli/tools/registry/pm/deps.rs b/cli/tools/pm/deps.rs
similarity index 100%
rename from cli/tools/registry/pm/deps.rs
rename to cli/tools/pm/deps.rs
diff --git a/cli/tools/registry/pm.rs b/cli/tools/pm/mod.rs
similarity index 100%
rename from cli/tools/registry/pm.rs
rename to cli/tools/pm/mod.rs
diff --git a/cli/tools/registry/pm/outdated/interactive.rs b/cli/tools/pm/outdated/interactive.rs
similarity index 99%
rename from cli/tools/registry/pm/outdated/interactive.rs
rename to cli/tools/pm/outdated/interactive.rs
index fb7bb0c69b89e3..6c8a5d228fc298 100644
--- a/cli/tools/registry/pm/outdated/interactive.rs
+++ b/cli/tools/pm/outdated/interactive.rs
@@ -20,8 +20,8 @@ use deno_semver::VersionReq;
 use deno_terminal::colors;
 use unicode_width::UnicodeWidthStr;
 
-use crate::tools::registry::pm::deps::DepId;
-use crate::tools::registry::pm::deps::DepKind;
+use crate::tools::pm::deps::DepId;
+use crate::tools::pm::deps::DepKind;
 
 #[derive(Debug)]
 pub struct PackageInfo {
diff --git a/cli/tools/registry/pm/outdated.rs b/cli/tools/pm/outdated/mod.rs
similarity index 99%
rename from cli/tools/registry/pm/outdated.rs
rename to cli/tools/pm/outdated/mod.rs
index 59e22fcbbd6de8..04954d4cde2178 100644
--- a/cli/tools/registry/pm/outdated.rs
+++ b/cli/tools/pm/outdated/mod.rs
@@ -16,6 +16,7 @@ use deno_terminal::colors;
 
 use super::deps::Dep;
 use super::deps::DepId;
+use super::deps::DepKind;
 use super::deps::DepManager;
 use super::deps::DepManagerArgs;
 use super::deps::PackageLatestVersion;
@@ -26,7 +27,6 @@ use crate::factory::CliFactory;
 use crate::file_fetcher::CliFileFetcher;
 use crate::jsr::JsrFetchResolver;
 use crate::npm::NpmFetchResolver;
-use crate::tools::registry::pm::deps::DepKind;
 
 #[derive(Debug, PartialEq, Eq, PartialOrd, Ord)]
 struct OutdatedPackage {
diff --git a/cli/tools/registry/auth.rs b/cli/tools/publish/auth.rs
similarity index 100%
rename from cli/tools/registry/auth.rs
rename to cli/tools/publish/auth.rs
diff --git a/cli/tools/registry/diagnostics.rs b/cli/tools/publish/diagnostics.rs
similarity index 99%
rename from cli/tools/registry/diagnostics.rs
rename to cli/tools/publish/diagnostics.rs
index 3c7abe044ecca7..73a45afdc6af56 100644
--- a/cli/tools/registry/diagnostics.rs
+++ b/cli/tools/publish/diagnostics.rs
@@ -379,7 +379,7 @@ impl Diagnostic for PublishDiagnostic {
     use PublishDiagnostic::*;
     match &self {
       InvalidExternalImport { imported, .. } => {
-        match super::api::get_jsr_alternative(imported) {
+        match crate::registry::get_jsr_alternative(imported) {
           Some(replacement) => {
             let replacement = SourceTextInfo::new(replacement.into());
             let start = replacement.line_start(0);
diff --git a/cli/tools/registry/graph.rs b/cli/tools/publish/graph.rs
similarity index 100%
rename from cli/tools/registry/graph.rs
rename to cli/tools/publish/graph.rs
diff --git a/cli/tools/registry/mod.rs b/cli/tools/publish/mod.rs
similarity index 97%
rename from cli/tools/registry/mod.rs
rename to cli/tools/publish/mod.rs
index 8a0ab1903af537..77c13de013481d 100644
--- a/cli/tools/registry/mod.rs
+++ b/cli/tools/publish/mod.rs
@@ -34,6 +34,8 @@ use serde::Serialize;
 use sha2::Digest;
 use tokio::process::Command;
 
+use self::diagnostics::PublishDiagnostic;
+use self::diagnostics::PublishDiagnosticsCollector;
 use self::graph::GraphDiagnosticsCollector;
 use self::module_content::ModuleContentProvider;
 use self::paths::CollectedPublishPath;
@@ -46,21 +48,18 @@ use crate::args::PublishFlags;
 use crate::factory::CliFactory;
 use crate::graph_util::ModuleGraphCreator;
 use crate::http_util::HttpClient;
+use crate::registry;
 use crate::tools::lint::collect_no_slow_type_diagnostics;
-use crate::tools::registry::diagnostics::PublishDiagnostic;
-use crate::tools::registry::diagnostics::PublishDiagnosticsCollector;
 use crate::type_checker::CheckOptions;
 use crate::type_checker::TypeChecker;
 use crate::util::display::human_size;
 
-mod api;
 mod auth;
 
 mod diagnostics;
 mod graph;
 mod module_content;
 mod paths;
-mod pm;
 mod provenance;
 mod publish_order;
 mod tar;
@@ -68,12 +67,6 @@ mod unfurl;
 
 use auth::get_auth_method;
 use auth::AuthMethod;
-pub use pm::add;
-pub use pm::cache_top_level_deps;
-pub use pm::outdated;
-pub use pm::remove;
-pub use pm::AddCommandName;
-pub use pm::AddRmPackageReq;
 use publish_order::PublishOrderGraph;
 use unfurl::SpecifierUnfurler;
 
@@ -558,10 +551,11 @@ async fn get_auth_headers(
         .send()
         .await
         .context("Failed to create interactive authorization")?;
-      let auth =
-        api::parse_response::<api::CreateAuthorizationResponse>(response)
-          .await
-          .context("Failed to create interactive authorization")?;
+      let auth = registry::parse_response::<
+        registry::CreateAuthorizationResponse,
+      >(response)
+      .await
+      .context("Failed to create interactive authorization")?;
 
       let auth_url = format!("{}?code={}", auth.verification_url, auth.code);
       let pkgs_text = if packages.len() > 1 {
@@ -594,9 +588,10 @@ async fn get_auth_headers(
           .send()
           .await
           .context("Failed to exchange authorization")?;
-        let res =
-          api::parse_response::<api::ExchangeAuthorizationResponse>(response)
-            .await;
+        let res = registry::parse_response::<
+          registry::ExchangeAuthorizationResponse,
+        >(response)
+        .await;
         match res {
           Ok(res) => {
             log::info!(
@@ -668,7 +663,7 @@ async fn get_auth_headers(
             text
           );
         }
-        let api::OidcTokenResponse { value } = serde_json::from_str(&text)
+        let registry::OidcTokenResponse { value } = serde_json::from_str(&text)
           .with_context(|| {
             format!(
               "Failed to parse OIDC token: '{}' (status {})",
@@ -702,13 +697,13 @@ async fn check_if_scope_and_package_exist(
   let mut needs_scope = false;
   let mut needs_package = false;
 
-  let response = api::get_scope(client, registry_api_url, scope).await?;
+  let response = registry::get_scope(client, registry_api_url, scope).await?;
   if response.status() == 404 {
     needs_scope = true;
   }
 
   let response =
-    api::get_package(client, registry_api_url, scope, package).await?;
+    registry::get_package(client, registry_api_url, scope, package).await?;
   if response.status() == 404 {
     needs_package = true;
   }
@@ -780,7 +775,7 @@ async fn ensure_scopes_and_packages_exist(
     log::warn!("{}", colors::gray("Waiting..."));
     let _ = open::that_detached(&create_package_url);
 
-    let package_api_url = api::get_package_api_url(
+    let package_api_url = registry::get_package_api_url(
       registry_api_url,
       &package.scope,
       &package.package,
@@ -926,11 +921,12 @@ async fn publish_package(
     .send()
     .await?;
 
-  let res = api::parse_response::<api::PublishingTask>(response).await;
+  let res =
+    registry::parse_response::<registry::PublishingTask>(response).await;
   let mut task = match res {
     Ok(task) => task,
     Err(mut err) if err.code == "duplicateVersionPublish" => {
-      let task = serde_json::from_value::<api::PublishingTask>(
+      let task = serde_json::from_value::<registry::PublishingTask>(
         err.data.get_mut("task").unwrap().take(),
       )
       .unwrap();
@@ -976,7 +972,7 @@ async fn publish_package(
           package.scope, package.package, package.version
         )
       })?;
-    task = api::parse_response::<api::PublishingTask>(resp)
+    task = registry::parse_response::<registry::PublishingTask>(resp)
       .await
       .with_context(|| {
         format!(
@@ -1285,10 +1281,10 @@ mod tests {
 
   use deno_ast::ModuleSpecifier;
 
+  use super::has_license_file;
   use super::tar::PublishableTarball;
   use super::tar::PublishableTarballFile;
   use super::verify_version_manifest;
-  use crate::tools::registry::has_license_file;
 
   #[test]
   fn test_verify_version_manifest() {
diff --git a/cli/tools/registry/module_content.rs b/cli/tools/publish/module_content.rs
similarity index 99%
rename from cli/tools/registry/module_content.rs
rename to cli/tools/publish/module_content.rs
index 20ad5a377f0fcc..24d1dcefe72bba 100644
--- a/cli/tools/registry/module_content.rs
+++ b/cli/tools/publish/module_content.rs
@@ -16,6 +16,7 @@ use lazy_regex::Lazy;
 use sys_traits::FsMetadata;
 use sys_traits::FsRead;
 
+use super::diagnostics::PublishDiagnostic;
 use super::diagnostics::PublishDiagnosticsCollector;
 use super::unfurl::SpecifierUnfurler;
 use super::unfurl::SpecifierUnfurlerDiagnostic;
@@ -23,7 +24,6 @@ use crate::args::deno_json::TsConfigResolver;
 use crate::cache::LazyGraphSourceParser;
 use crate::cache::ParsedSourceCache;
 use crate::sys::CliSys;
-use crate::tools::registry::diagnostics::PublishDiagnostic;
 
 struct JsxFolderOptions<'a> {
   jsx_factory: &'a str,
diff --git a/cli/tools/registry/paths.rs b/cli/tools/publish/paths.rs
similarity index 100%
rename from cli/tools/registry/paths.rs
rename to cli/tools/publish/paths.rs
diff --git a/cli/tools/registry/provenance.rs b/cli/tools/publish/provenance.rs
similarity index 99%
rename from cli/tools/registry/provenance.rs
rename to cli/tools/publish/provenance.rs
index bd5249b5cd6aae..5a4f00bd9caed1 100644
--- a/cli/tools/registry/provenance.rs
+++ b/cli/tools/publish/provenance.rs
@@ -25,11 +25,11 @@ use spki::der::asn1;
 use spki::der::pem::LineEnding;
 use spki::der::EncodePem;
 
-use super::api::OidcTokenResponse;
 use super::auth::gha_oidc_token;
 use super::auth::is_gha;
 use crate::http_util;
 use crate::http_util::HttpClient;
+use crate::registry::OidcTokenResponse;
 
 const PAE_PREFIX: &str = "DSSEv1";
 
diff --git a/cli/tools/registry/publish_order.rs b/cli/tools/publish/publish_order.rs
similarity index 100%
rename from cli/tools/registry/publish_order.rs
rename to cli/tools/publish/publish_order.rs
diff --git a/cli/tools/registry/tar.rs b/cli/tools/publish/tar.rs
similarity index 100%
rename from cli/tools/registry/tar.rs
rename to cli/tools/publish/tar.rs
diff --git a/cli/tools/registry/unfurl.rs b/cli/tools/publish/unfurl.rs
similarity index 100%
rename from cli/tools/registry/unfurl.rs
rename to cli/tools/publish/unfurl.rs

From ebe4055b2d45f48b982e4612907a2068243ec577 Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Fri, 21 Feb 2025 18:27:29 -0500
Subject: [PATCH 010/115] refactor(resolver/node): use
 `deno_path_util::is_relative_specifier` (#28238)

Should be slightly faster too because it no longer heap allocates.
---
 Cargo.lock                   |  4 ++--
 Cargo.toml                   |  2 +-
 resolvers/node/resolution.rs | 20 +-------------------
 3 files changed, 4 insertions(+), 22 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 5422fc376e3d93..8200e6b15608ed 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2429,9 +2429,9 @@ dependencies = [
 
 [[package]]
 name = "deno_path_util"
-version = "0.3.1"
+version = "0.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c87b8996966ae1b13ee9c20219b1d10fc53905b9570faae6adfa34614fd15224"
+checksum = "c238a664a0a6f1ce0ff2b73c6854811526d00f442a12f878cb8555b23fe13aa3"
 dependencies = [
  "deno_error",
  "percent-encoding",
diff --git a/Cargo.toml b/Cargo.toml
index 3f52c4a9aa9fdf..122974739fb5d4 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -58,7 +58,7 @@ deno_config = { version = "=0.49.1", features = ["workspace"] }
 deno_lockfile = "=0.24.0"
 deno_media_type = { version = "=0.2.6", features = ["module_specifier"] }
 deno_npm = "=0.27.2"
-deno_path_util = "=0.3.1"
+deno_path_util = "=0.3.2"
 deno_permissions = { version = "0.51.0", path = "./runtime/permissions" }
 deno_runtime = { version = "0.200.0", path = "./runtime" }
 deno_semver = "=0.7.1"
diff --git a/resolvers/node/resolution.rs b/resolvers/node/resolution.rs
index 07052a51759d67..66ab8b8ac5a2b8 100644
--- a/resolvers/node/resolution.rs
+++ b/resolvers/node/resolution.rs
@@ -1891,25 +1891,7 @@ fn should_be_treated_as_relative_or_absolute_path(specifier: &str) -> bool {
     return true;
   }
 
-  is_relative_specifier(specifier)
-}
-
-// TODO(ry) We very likely have this utility function elsewhere in Deno.
-fn is_relative_specifier(specifier: &str) -> bool {
-  let specifier_len = specifier.len();
-  let specifier_chars: Vec<_> = specifier.chars().take(3).collect();
-
-  if !specifier_chars.is_empty() && specifier_chars[0] == '.' {
-    if specifier_len == 1 || specifier_chars[1] == '/' {
-      return true;
-    }
-    if specifier_chars[1] == '.'
-      && (specifier_len == 2 || specifier_chars[2] == '/')
-    {
-      return true;
-    }
-  }
-  false
+  deno_path_util::is_relative_specifier(specifier)
 }
 
 /// Alternate `PathBuf::with_extension` that will handle known extensions

From 0a1b01d5a2d09021d12c5465c3e136214938db2d Mon Sep 17 00:00:00 2001
From: Yoshiya Hinosawa <stibium121@gmail.com>
Date: Sat, 22 Feb 2025 09:04:57 +0900
Subject: [PATCH 011/115] refactor(coverage): simplify CoverageReporter trait
 (#28219)

---
 cli/tools/coverage/mod.rs      |  6 ++-
 cli/tools/coverage/reporter.rs | 90 +++++++++++++++++-----------------
 2 files changed, 48 insertions(+), 48 deletions(-)

diff --git a/cli/tools/coverage/mod.rs b/cli/tools/coverage/mod.rs
index bf1326adb6ff1f..b8fcd4ec115973 100644
--- a/cli/tools/coverage/mod.rs
+++ b/cli/tools/coverage/mod.rs
@@ -575,6 +575,8 @@ pub fn cover_files(
     )
   };
 
+  let mut file_reports = Vec::with_capacity(script_coverages.len());
+
   for script_coverage in script_coverages {
     let module_specifier = deno_core::resolve_url_or_path(
       &script_coverage.url,
@@ -638,11 +640,11 @@ pub fn cover_files(
     );
 
     if !coverage_report.found_lines.is_empty() {
-      reporter.report(&coverage_report, &original_source)?;
+      file_reports.push((coverage_report, original_source.to_string()));
     }
   }
 
-  reporter.done(&coverage_root);
+  reporter.done(&coverage_root, &file_reports);
 
   Ok(())
 }
diff --git a/cli/tools/coverage/reporter.rs b/cli/tools/coverage/reporter.rs
index 51aa378dd71583..f001d9113c3dd5 100644
--- a/cli/tools/coverage/reporter.rs
+++ b/cli/tools/coverage/reporter.rs
@@ -41,18 +41,16 @@ pub fn create(kind: CoverageType) -> Box<dyn CoverageReporter + Send> {
 }
 
 pub trait CoverageReporter {
-  fn report(
+  fn done(
     &mut self,
-    coverage_report: &CoverageReport,
-    file_text: &str,
-  ) -> Result<(), AnyError>;
-
-  fn done(&mut self, _coverage_root: &Path) {}
+    coverage_root: &Path,
+    file_reports: &[(CoverageReport, String)],
+  );
 
   /// Collects the coverage summary of each file or directory.
   fn collect_summary<'a>(
     &'a self,
-    file_reports: &'a Vec<(CoverageReport, String)>,
+    file_reports: &'a [(CoverageReport, String)],
   ) -> CoverageSummary {
     let urls = file_reports.iter().map(|rep| &rep.0.url).collect();
     let root = match util::find_root(urls)
@@ -107,16 +105,12 @@ pub trait CoverageReporter {
   }
 }
 
-struct SummaryCoverageReporter {
-  file_reports: Vec<(CoverageReport, String)>,
-}
+struct SummaryCoverageReporter {}
 
 #[allow(clippy::print_stdout)]
 impl SummaryCoverageReporter {
   pub fn new() -> SummaryCoverageReporter {
-    SummaryCoverageReporter {
-      file_reports: Vec::new(),
-    }
+    SummaryCoverageReporter {}
   }
 
   fn print_coverage_line(
@@ -177,19 +171,12 @@ impl SummaryCoverageReporter {
 
 #[allow(clippy::print_stdout)]
 impl CoverageReporter for SummaryCoverageReporter {
-  fn report(
+  fn done(
     &mut self,
-    coverage_report: &CoverageReport,
-    file_text: &str,
-  ) -> Result<(), AnyError> {
-    self
-      .file_reports
-      .push((coverage_report.clone(), file_text.to_string()));
-    Ok(())
-  }
-
-  fn done(&mut self, _coverage_root: &Path) {
-    let summary = self.collect_summary(&self.file_reports);
+    _coverage_root: &Path,
+    file_reports: &[(CoverageReport, String)],
+  ) {
+    let summary = self.collect_summary(file_reports);
     let root_stats = summary.get("").unwrap();
 
     let mut entries = summary
@@ -221,13 +208,23 @@ impl CoverageReporter for SummaryCoverageReporter {
 
 struct LcovCoverageReporter {}
 
+impl CoverageReporter for LcovCoverageReporter {
+  fn done(
+    &mut self,
+    _coverage_root: &Path,
+    file_reports: &[(CoverageReport, String)],
+  ) {
+    file_reports.iter().for_each(|(report, file_text)| {
+      self.report(report, file_text).unwrap();
+    });
+  }
+}
+
 impl LcovCoverageReporter {
   pub fn new() -> LcovCoverageReporter {
     LcovCoverageReporter {}
   }
-}
 
-impl CoverageReporter for LcovCoverageReporter {
   fn report(
     &mut self,
     coverage_report: &CoverageReport,
@@ -321,14 +318,24 @@ impl CoverageReporter for LcovCoverageReporter {
 
 struct DetailedCoverageReporter {}
 
+impl CoverageReporter for DetailedCoverageReporter {
+  fn done(
+    &mut self,
+    _coverage_root: &Path,
+    file_reports: &[(CoverageReport, String)],
+  ) {
+    file_reports.iter().for_each(|(report, file_text)| {
+      self.report(report, file_text).unwrap();
+    });
+  }
+}
+
+#[allow(clippy::print_stdout)]
 impl DetailedCoverageReporter {
   pub fn new() -> DetailedCoverageReporter {
     DetailedCoverageReporter {}
   }
-}
 
-#[allow(clippy::print_stdout)]
-impl CoverageReporter for DetailedCoverageReporter {
   fn report(
     &mut self,
     coverage_report: &CoverageReport,
@@ -391,22 +398,15 @@ impl CoverageReporter for DetailedCoverageReporter {
   }
 }
 
-struct HtmlCoverageReporter {
-  file_reports: Vec<(CoverageReport, String)>,
-}
+struct HtmlCoverageReporter {}
 
 impl CoverageReporter for HtmlCoverageReporter {
-  fn report(
+  fn done(
     &mut self,
-    report: &CoverageReport,
-    text: &str,
-  ) -> Result<(), AnyError> {
-    self.file_reports.push((report.clone(), text.to_string()));
-    Ok(())
-  }
-
-  fn done(&mut self, coverage_root: &Path) {
-    let summary = self.collect_summary(&self.file_reports);
+    coverage_root: &Path,
+    file_reports: &[(CoverageReport, String)],
+  ) {
+    let summary = self.collect_summary(file_reports);
     let now = chrono::Utc::now().to_rfc2822();
 
     for (node, stats) in &summary {
@@ -438,9 +438,7 @@ impl CoverageReporter for HtmlCoverageReporter {
 
 impl HtmlCoverageReporter {
   pub fn new() -> HtmlCoverageReporter {
-    HtmlCoverageReporter {
-      file_reports: Vec::new(),
-    }
+    HtmlCoverageReporter {}
   }
 
   /// Gets the report path for a single file

From 02611064145d381d9f671c93df61dbc49ad920e3 Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Fri, 21 Feb 2025 19:48:50 -0500
Subject: [PATCH 012/115] fix(lsp): create cacheable `ExportInfoMap` per
 language service (#28240)

This needs to be created per language service so that it can provide the
current program correctly.
---
 cli/tsc/97_ts_host.js       | 10 ----------
 cli/tsc/98_lsp.js           | 37 ++++++++++++++++++++++++++++++-------
 cli/tsc/dts/typescript.d.ts | 34 ++++++++++++++++++++++++++++++++++
 3 files changed, 64 insertions(+), 17 deletions(-)

diff --git a/cli/tsc/97_ts_host.js b/cli/tsc/97_ts_host.js
index 4705d989ef565c..42ffb0ce3b119e 100644
--- a/cli/tsc/97_ts_host.js
+++ b/cli/tsc/97_ts_host.js
@@ -430,13 +430,6 @@ const hostImpl = {
     return projectVersion;
   },
   // @ts-ignore Undocumented method.
-  getCachedExportInfoMap() {
-    return exportMapCache;
-  },
-  getGlobalTypingsCacheLocation() {
-    return undefined;
-  },
-  // @ts-ignore Undocumented method.
   toPath(fileName) {
     // @ts-ignore Undocumented function.
     return ts.toPath(
@@ -768,9 +761,6 @@ for (const [key, value] of Object.entries(hostImpl)) {
   }
 }
 
-// @ts-ignore Undocumented function.
-const exportMapCache = ts.createCacheableExportInfoMap(host);
-
 // override the npm install @types package diagnostics to be deno specific
 ts.setLocalizedDiagnosticMessages((() => {
   const nodeMessage = "Cannot find name '{0}'."; // don't offer any suggestions
diff --git a/cli/tsc/98_lsp.js b/cli/tsc/98_lsp.js
index 618ac8ce52f2d0..6ca8dfce525e96 100644
--- a/cli/tsc/98_lsp.js
+++ b/cli/tsc/98_lsp.js
@@ -284,6 +284,34 @@ async function pollRequests() {
 
 let hasStarted = false;
 
+function createLs() {
+  let exportInfoMap = undefined;
+  const newHost = {
+    ...host,
+    getCachedExportInfoMap: () => {
+      // this export info map is specific to
+      // the language service instance
+      return exportInfoMap;
+    },
+  };
+  const ls = ts.createLanguageService(
+    newHost,
+    documentRegistry,
+  );
+  exportInfoMap = ts.createCacheableExportInfoMap({
+    getCurrentProgram() {
+      return ls.getProgram();
+    },
+    getGlobalTypingsCacheLocation() {
+      return undefined;
+    },
+    getPackageJsonAutoImportProvider() {
+      return undefined;
+    },
+  });
+  return ls;
+}
+
 /** @param {boolean} enableDebugLogging */
 export async function serverMainLoop(enableDebugLogging) {
   ts.deno.setEnterSpan(ops.op_make_span);
@@ -293,10 +321,7 @@ export async function serverMainLoop(enableDebugLogging) {
   }
   hasStarted = true;
   LANGUAGE_SERVICE_ENTRIES.unscoped = {
-    ls: ts.createLanguageService(
-      host,
-      documentRegistry,
-    ),
+    ls: createLs(),
     compilerOptions: lspTsConfigToCompilerOptions({
       "allowJs": true,
       "esModuleInterop": true,
@@ -398,9 +423,7 @@ function serverRequestInner(id, method, args, scope, maybeChange) {
       for (const [scope, config] of newConfigsByScope) {
         LAST_REQUEST_SCOPE.set(scope);
         const oldEntry = LANGUAGE_SERVICE_ENTRIES.byScope.get(scope);
-        const ls = oldEntry
-          ? oldEntry.ls
-          : ts.createLanguageService(host, documentRegistry);
+        const ls = oldEntry ? oldEntry.ls : createLs();
         const compilerOptions = lspTsConfigToCompilerOptions(config);
         newByScope.set(scope, { ls, compilerOptions });
         LANGUAGE_SERVICE_ENTRIES.byScope.delete(scope);
diff --git a/cli/tsc/dts/typescript.d.ts b/cli/tsc/dts/typescript.d.ts
index b3e728faad8a9f..f4cac603724d99 100644
--- a/cli/tsc/dts/typescript.d.ts
+++ b/cli/tsc/dts/typescript.d.ts
@@ -7753,6 +7753,40 @@ declare namespace ts {
         span: TextSpan;
         preferences: UserPreferences;
     }
+    function createCacheableExportInfoMap(host: CacheableExportInfoMapHost): ExportInfoMap;
+    enum ExportKind {
+        Named = 0,
+        Default = 1,
+        ExportEquals = 2,
+        UMD = 3,
+        Module = 4,
+    }
+    interface SymbolExportInfo {
+        readonly symbol: Symbol;
+        readonly moduleSymbol: Symbol;
+        /** Set if `moduleSymbol` is an external module, not an ambient module */
+        moduleFileName: string | undefined;
+        exportKind: ExportKind;
+        targetFlags: SymbolFlags;
+        /** True if export was only found via the package.json AutoImportProvider (for telemetry). */
+        isFromPackageJson: boolean;
+    }
+    interface ExportInfoMap {
+        isUsableByFile(importingFile: Path): boolean;
+        clear(): void;
+        add(importingFile: Path, symbol: Symbol, key: __String, moduleSymbol: Symbol, moduleFile: SourceFile | undefined, exportKind: ExportKind, isFromPackageJson: boolean, checker: TypeChecker): void;
+        get(importingFile: Path, key: ExportMapInfoKey): readonly SymbolExportInfo[] | undefined;
+        search<T>(importingFile: Path, preferCapitalized: boolean, matches: (name: string, targetFlags: SymbolFlags) => boolean, action: (info: readonly SymbolExportInfo[], symbolName: string, isFromAmbientModule: boolean, key: ExportMapInfoKey) => T | undefined): T | undefined;
+        releaseSymbols(): void;
+        isEmpty(): boolean;
+        /** @returns Whether the change resulted in the cache being cleared */
+        onFileChanged(oldSourceFile: SourceFile, newSourceFile: SourceFile, typeAcquisitionEnabled: boolean): boolean;
+    }
+    interface CacheableExportInfoMapHost {
+        getCurrentProgram(): Program | undefined;
+        getPackageJsonAutoImportProvider(): Program | undefined;
+        getGlobalTypingsCacheLocation(): string | undefined;
+    }
     type ExportMapInfoKey = string & {
         __exportInfoKey: void;
     };

From 62262d611c8b56329e38141d4cf0c87d3ac0584b Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Fri, 21 Feb 2025 19:54:42 -0500
Subject: [PATCH 013/115] chore: mark inspector break tests as flaky (#28239)

---
 tests/integration/inspector_tests.rs | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tests/integration/inspector_tests.rs b/tests/integration/inspector_tests.rs
index 4cbd3e3342cedb..a9276344ec772b 100644
--- a/tests/integration/inspector_tests.rs
+++ b/tests/integration/inspector_tests.rs
@@ -314,7 +314,7 @@ async fn inspector_connect() {
   child.wait().unwrap();
 }
 
-#[tokio::test]
+#[flaky_test::flaky_test(tokio)]
 async fn inspector_break_on_first_line() {
   let script = util::testdata_path().join("inspector/inspector2.js");
   let child = util::deno_cmd()
@@ -807,7 +807,7 @@ async fn inspector_connect_non_ws() {
   child.wait().unwrap();
 }
 
-#[tokio::test]
+#[flaky_test::flaky_test(tokio)]
 async fn inspector_break_on_first_line_in_test() {
   let script = util::testdata_path().join("inspector/inspector_test.js");
   let child = util::deno_cmd()
@@ -1200,7 +1200,7 @@ async fn inspector_profile() {
 // compatibility layer. Can't reproduce this problem locally for either Mac M1
 // or Linux. Ignoring for now to unblock further integration of "ext/node".
 #[ignore]
-#[tokio::test]
+#[flaky_test::flaky_test(tokio)]
 async fn inspector_break_on_first_line_npm_esm() {
   let context = TestContextBuilder::for_npm().build();
   let child = context
@@ -1267,7 +1267,7 @@ async fn inspector_break_on_first_line_npm_esm() {
 // compatibility layer. Can't reproduce this problem locally for either Mac M1
 // or Linux. Ignoring for now to unblock further integration of "ext/node".
 #[ignore]
-#[tokio::test]
+#[flaky_test::flaky_test(tokio)]
 async fn inspector_break_on_first_line_npm_cjs() {
   let context = TestContextBuilder::for_npm().build();
   let child = context

From 37462c0890b2751c9ff6c5edbe5b757c9f759367 Mon Sep 17 00:00:00 2001
From: Nathan Whitaker <17734409+nathanwhit@users.noreply.github.com>
Date: Fri, 21 Feb 2025 17:16:00 -0800
Subject: [PATCH 014/115] perf(install): only read initialized file if we care
 about the tags (#28242)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Speeds up the caching part of this arbitrary `"nodeModulesDir": "auto"`
project by about 22%

We write the tags associated with a given npm package to the
`.initialized` file, so that byonm can correctly resolve tags. When
setting up the node modules dir, we read that file to see if we need to
update the tags.

If we don't have any tags associated with the package though, we can
just check for existence (which is a fair bit faster than trying to
`open` + `read` a file).

```
❯ hyperfine --warmup 3 "deno check src/**/*.ts" "../deno/target/release-lite/deno check src/**/*.ts"
Benchmark 1: deno check src/**/*.ts
  Time (mean ± σ):     369.9 ms ±   5.5 ms    [User: 286.9 ms, System: 128.9 ms]
  Range (min … max):   361.7 ms … 377.7 ms    10 runs

Benchmark 2: ../deno/target/release-lite/deno check src/**/*.ts
  Time (mean ± σ):     303.5 ms ±   5.9 ms    [User: 210.9 ms, System: 124.5 ms]
  Range (min … max):   292.7 ms … 315.0 ms    10 runs

Summary
  ../deno/target/release-lite/deno check src/**/*.ts ran
    1.22 ± 0.03 times faster than deno check src/**/*.ts
```
---
 cli/npm/installer/local.rs | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/cli/npm/installer/local.rs b/cli/npm/installer/local.rs
index 5e14b607f7af97..61b6fb570edbad 100644
--- a/cli/npm/installer/local.rs
+++ b/cli/npm/installer/local.rs
@@ -279,15 +279,23 @@ async fn sync_resolution_with_fs(
       TagsOutdated,
     }
     let initialized_file = folder_path.join(".initialized");
-    let package_state = std::fs::read_to_string(&initialized_file)
-      .map(|s| {
-        if s != tags {
-          PackageFolderState::TagsOutdated
-        } else {
-          PackageFolderState::UpToDate
-        }
-      })
-      .unwrap_or(PackageFolderState::Uninitialized);
+    let package_state = if tags.is_empty() {
+      if initialized_file.exists() {
+        PackageFolderState::UpToDate
+      } else {
+        PackageFolderState::Uninitialized
+      }
+    } else {
+      std::fs::read_to_string(&initialized_file)
+        .map(|s| {
+          if s != tags {
+            PackageFolderState::TagsOutdated
+          } else {
+            PackageFolderState::UpToDate
+          }
+        })
+        .unwrap_or(PackageFolderState::Uninitialized)
+    };
     if !cache
       .cache_setting()
       .should_use_for_npm_package(&package.id.nv.name)

From 2212d7d814914e43f43dfd945ee24197f50fa6fa Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Fri, 21 Feb 2025 20:30:04 -0500
Subject: [PATCH 015/115] chore: mark worker_large_output as flaky (#28241)

---
 tests/specs/test/worker_large_output/__test__.jsonc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tests/specs/test/worker_large_output/__test__.jsonc b/tests/specs/test/worker_large_output/__test__.jsonc
index 9e6533e8c4139f..2ce083a9093d1b 100644
--- a/tests/specs/test/worker_large_output/__test__.jsonc
+++ b/tests/specs/test/worker_large_output/__test__.jsonc
@@ -1,4 +1,5 @@
 {
   "args": "test main.js",
-  "output": "main.out"
+  "output": "main.out",
+  "flaky": true
 }

From f373a20a6f2842cbc48c966278cffdcd334c683c Mon Sep 17 00:00:00 2001
From: Kenta Moriuchi <moriken@kimamass.com>
Date: Mon, 24 Feb 2025 18:49:32 +0900
Subject: [PATCH 016/115] fix(cli): add `compilerOptions.lib` examples to
 config-file.v1.json (#28226)

closes #28222
---
 cli/schemas/config-file.v1.json | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/cli/schemas/config-file.v1.json b/cli/schemas/config-file.v1.json
index cf2ad3cb3ddb84..3bf53b3099769c 100644
--- a/cli/schemas/config-file.v1.json
+++ b/cli/schemas/config-file.v1.json
@@ -111,7 +111,35 @@
           "uniqueItems": true,
           "default": ["deno.window"],
           "items": {
-            "type": "string"
+            "type": "string",
+            "examples": [
+              "deno.ns",
+              "deno.window",
+              "deno.worker",
+              "deno.unstable",
+              "dom",
+              "dom.iterable",
+              "dom.asynciterable",
+              "webworker",
+              "webworker.importscripts",
+              "webworker.iterable",
+              "webworker.asynciterable",
+              "scripthost",
+              "decorators",
+              "decorators.legacy",
+              "es5",
+              "es2015",
+              "es2016",
+              "es2017",
+              "es2018",
+              "es2019",
+              "es2020",
+              "es2021",
+              "es2022",
+              "es2023",
+              "es2024",
+              "esnext"
+            ]
           },
           "markdownDescription": "Specify a set of bundled library declaration files that describe the target runtime environment.\n\nSee more: https://www.typescriptlang.org/tsconfig#lib"
         },

From 55dc6f4b9380d397dba82c79e51a8ec06b7676cd Mon Sep 17 00:00:00 2001
From: Luca Casonato <hello@lcas.dev>
Date: Mon, 24 Feb 2025 02:51:30 -0800
Subject: [PATCH 017/115] fix(lint): don't recurse infinitely for large ASTs
 (#28265)

We previously failed to lint `./cli/tsc/00_typescript.js` with plugins,
because every "next" node would cause a new stack frame to be added.
---
 cli/js/40_lint.js | 76 +++++++++++++++++++++++------------------------
 1 file changed, 37 insertions(+), 39 deletions(-)

diff --git a/cli/js/40_lint.js b/cli/js/40_lint.js
index 3afe0fd4eb4720..0eb2f4a1e0a0a7 100644
--- a/cli/js/40_lint.js
+++ b/cli/js/40_lint.js
@@ -1150,54 +1150,52 @@ export function runPluginsForFile(fileName, serializedAst) {
  * @param {CancellationToken} cancellationToken
  */
 function traverse(ctx, visitors, idx, cancellationToken) {
-  if (idx === AST_IDX_INVALID) return;
-  if (cancellationToken.isCancellationRequested()) return;
-
-  const { buf } = ctx;
-  const nodeType = readType(ctx.buf, idx);
-
-  /** @type {VisitorFn[] | null} */
-  let exits = null;
-
-  // Only visit if it's an actual node
-  if (nodeType !== AST_GROUP_TYPE) {
-    // Loop over visitors and check if any selector matches
-    for (let i = 0; i < visitors.length; i++) {
-      const v = visitors[i];
-      if (v.matcher(ctx.matcher, idx)) {
-        if (v.info.exit !== NOOP) {
-          if (exits === null) {
-            exits = [v.info.exit];
-          } else {
-            exits.push(v.info.exit);
+  while (idx !== AST_IDX_INVALID) {
+    if (cancellationToken.isCancellationRequested()) return;
+
+    const { buf } = ctx;
+    const nodeType = readType(ctx.buf, idx);
+
+    /** @type {VisitorFn[] | null} */
+    let exits = null;
+
+    // Only visit if it's an actual node
+    if (nodeType !== AST_GROUP_TYPE) {
+      // Loop over visitors and check if any selector matches
+      for (let i = 0; i < visitors.length; i++) {
+        const v = visitors[i];
+        if (v.matcher(ctx.matcher, idx)) {
+          if (v.info.exit !== NOOP) {
+            if (exits === null) {
+              exits = [v.info.exit];
+            } else {
+              exits.push(v.info.exit);
+            }
           }
-        }
 
-        if (v.info.enter !== NOOP) {
-          const node = /** @type {*} */ (getNode(ctx, idx));
-          v.info.enter(node);
+          if (v.info.enter !== NOOP) {
+            const node = /** @type {*} */ (getNode(ctx, idx));
+            v.info.enter(node);
+          }
         }
       }
     }
-  }
 
-  try {
-    const childIdx = readChild(buf, idx);
-    if (childIdx > AST_IDX_INVALID) {
-      traverse(ctx, visitors, childIdx, cancellationToken);
-    }
-  } finally {
-    if (exits !== null) {
-      for (let i = 0; i < exits.length; i++) {
-        const node = /** @type {*} */ (getNode(ctx, idx));
-        exits[i](node);
+    try {
+      const childIdx = readChild(buf, idx);
+      if (childIdx > AST_IDX_INVALID) {
+        traverse(ctx, visitors, childIdx, cancellationToken);
+      }
+    } finally {
+      if (exits !== null) {
+        for (let i = 0; i < exits.length; i++) {
+          const node = /** @type {*} */ (getNode(ctx, idx));
+          exits[i](node);
+        }
       }
     }
-  }
 
-  const nextIdx = readNext(buf, idx);
-  if (nextIdx > AST_IDX_INVALID) {
-    traverse(ctx, visitors, nextIdx, cancellationToken);
+    idx = readNext(buf, idx);
   }
 }
 

From 0dc3e87cb73f0019be9b1efc0caeac3e974d8e7d Mon Sep 17 00:00:00 2001
From: Nayeem Rahman <nayeemrmn99@gmail.com>
Date: Mon, 24 Feb 2025 12:09:53 +0000
Subject: [PATCH 018/115] fix(fmt): support "--ext vto" and "--ext njk"
 (#28262)

---
 cli/args/flags.rs                    |  2 +-
 tests/specs/fmt/njk/__test__.jsonc   | 15 ++++++++++++---
 tests/specs/fmt/vento/__test__.jsonc | 15 ++++++++++++---
 3 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index 02d30d055c9713..6aa13860642854 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -2281,7 +2281,7 @@ Ignore formatting a file by adding an ignore comment at the top of the file:
           .value_parser([
             "ts", "tsx", "js", "jsx", "md", "json", "jsonc", "css", "scss",
             "sass", "less", "html", "svelte", "vue", "astro", "yml", "yaml",
-            "ipynb", "sql"
+            "ipynb", "sql", "vto", "njk"
           ])
           .help_heading(FMT_HEADING).requires("files"),
       )
diff --git a/tests/specs/fmt/njk/__test__.jsonc b/tests/specs/fmt/njk/__test__.jsonc
index 8b6bc87d476a0a..9062a360797a74 100644
--- a/tests/specs/fmt/njk/__test__.jsonc
+++ b/tests/specs/fmt/njk/__test__.jsonc
@@ -1,5 +1,14 @@
 {
   "tempDir": true,
-  "args": "fmt --unstable-component",
-  "output": "[WILDLINE]badly_formatted.njk\nChecked 1 file\n"
-}
\ No newline at end of file
+  "steps": [
+    {
+      "args": "fmt --unstable-component",
+      "output": "[WILDLINE]badly_formatted.njk\nChecked 1 file\n"
+    },
+    {
+      "args": "fmt --unstable-component --ext=njk -",
+      "input": "<h1>  {{ \"Hello, world!\" |> toUpperCase }}\n  </h1>\n",
+      "output": "<h1>\n  {{ \"Hello, world!\" |> toUpperCase }}\n</h1>\n"
+    }
+  ]
+}
diff --git a/tests/specs/fmt/vento/__test__.jsonc b/tests/specs/fmt/vento/__test__.jsonc
index c3e3bbf7d1443d..a38036f4554a78 100644
--- a/tests/specs/fmt/vento/__test__.jsonc
+++ b/tests/specs/fmt/vento/__test__.jsonc
@@ -1,5 +1,14 @@
 {
   "tempDir": true,
-  "args": "fmt --unstable-component",
-  "output": "[WILDLINE]badly_formatted.vto\nChecked 1 file\n"
-}
\ No newline at end of file
+  "steps": [
+    {
+      "args": "fmt --unstable-component",
+      "output": "[WILDLINE]badly_formatted.vto\nChecked 1 file\n"
+    },
+    {
+      "args": "fmt --unstable-component --ext=vto -",
+      "input": "<h1>  {{ \"Hello, world!\" |> upper }}\n  </h1>\n",
+      "output": "<h1>\n  {{ \"Hello, world!\" |> upper }}\n</h1>\n"
+    }
+  ]
+}

From 7fa8fc4b266b9f564be68fb63b00d9761bac4aab Mon Sep 17 00:00:00 2001
From: Divy Srivastava <dj.srivastava23@gmail.com>
Date: Mon, 24 Feb 2025 17:55:36 +0530
Subject: [PATCH 019/115] fix(ext/node): descriptive sqlite error messages
 (#28272)

Fixes https://github.com/denoland/deno/issues/28259
---
 ext/node/ops/sqlite/mod.rs       |  6 ++--
 ext/node/ops/sqlite/statement.rs | 61 ++++++++++++++++++++------------
 tests/unit_node/sqlite_test.ts   | 14 ++++++++
 3 files changed, 55 insertions(+), 26 deletions(-)

diff --git a/ext/node/ops/sqlite/mod.rs b/ext/node/ops/sqlite/mod.rs
index 05e2e256b8af16..771dd24c318299 100644
--- a/ext/node/ops/sqlite/mod.rs
+++ b/ext/node/ops/sqlite/mod.rs
@@ -17,12 +17,12 @@ pub enum SqliteError {
   #[error(transparent)]
   SqliteError(#[from] rusqlite::Error),
   #[class(generic)]
+  #[error("{0}")]
+  SqliteSysError(String),
+  #[class(generic)]
   #[error("Database is already in use")]
   InUse,
   #[class(generic)]
-  #[error("Failed to step statement")]
-  FailedStep,
-  #[class(generic)]
   #[error("Failed to bind parameter. {0}")]
   FailedBind(&'static str),
   #[class(generic)]
diff --git a/ext/node/ops/sqlite/statement.rs b/ext/node/ops/sqlite/statement.rs
index 93bfa17c333b7c..ebe759a7dc99d2 100644
--- a/ext/node/ops/sqlite/statement.rs
+++ b/ext/node/ops/sqlite/statement.rs
@@ -85,12 +85,12 @@ impl GarbageCollected for StatementSync {}
 
 impl StatementSync {
   // Clear the prepared statement back to its initial state.
-  fn reset(&self) {
+  fn reset(&self) -> Result<(), SqliteError> {
     // SAFETY: `self.inner` is a valid pointer to a sqlite3_stmt
     // as it lives as long as the StatementSync instance.
-    unsafe {
-      ffi::sqlite3_reset(self.inner);
-    }
+    let r = unsafe { ffi::sqlite3_reset(self.inner) };
+
+    self.check_error_code(r)
   }
 
   // Evaluate the prepared statement.
@@ -104,7 +104,7 @@ impl StatementSync {
         return Ok(true);
       }
       if r != ffi::SQLITE_ROW {
-        return Err(SqliteError::FailedStep);
+        self.check_error_code(r)?;
       }
     }
 
@@ -217,14 +217,12 @@ impl StatementSync {
     index: i32,
   ) -> Result<(), SqliteError> {
     let raw = self.inner;
-    if value.is_number() {
+    let r = if value.is_number() {
       let value = value.number_value(scope).unwrap();
 
       // SAFETY: `self.inner` is a valid pointer to a sqlite3_stmt
       // as it lives as long as the StatementSync instance.
-      unsafe {
-        ffi::sqlite3_bind_double(raw, index, value);
-      }
+      unsafe { ffi::sqlite3_bind_double(raw, index, value) }
     } else if value.is_string() {
       let value = value.to_rust_string_lossy(scope);
 
@@ -239,14 +237,12 @@ impl StatementSync {
           value.as_ptr() as *const _,
           value.len() as i32,
           ffi::SQLITE_TRANSIENT(),
-        );
+        )
       }
     } else if value.is_null() {
       // SAFETY: `self.inner` is a valid pointer to a sqlite3_stmt
       // as it lives as long as the StatementSync instance.
-      unsafe {
-        ffi::sqlite3_bind_null(raw, index);
-      }
+      unsafe { ffi::sqlite3_bind_null(raw, index) }
     } else if value.is_array_buffer_view() {
       let value: v8::Local<v8::ArrayBufferView> = value.try_into().unwrap();
       let data = value.data();
@@ -263,7 +259,7 @@ impl StatementSync {
           data,
           size as i32,
           ffi::SQLITE_TRANSIENT(),
-        );
+        )
       }
     } else if value.is_big_int() {
       let value: v8::Local<v8::BigInt> = value.try_into().unwrap();
@@ -276,11 +272,30 @@ impl StatementSync {
 
       // SAFETY: `self.inner` is a valid pointer to a sqlite3_stmt
       // as it lives as long as the StatementSync instance.
-      unsafe {
-        ffi::sqlite3_bind_int64(raw, index, as_int);
-      }
+      unsafe { ffi::sqlite3_bind_int64(raw, index, as_int) }
     } else {
       return Err(SqliteError::FailedBind("Unsupported type"));
+    };
+
+    self.check_error_code(r)
+  }
+
+  fn check_error_code(&self, r: i32) -> Result<(), SqliteError> {
+    if r != ffi::SQLITE_OK {
+      let db = self.db.borrow();
+      let db = db.as_ref().ok_or(SqliteError::InUse)?;
+
+      // SAFETY: lifetime of the connection is guaranteed by reference
+      // counting.
+      let err_str = unsafe { ffi::sqlite3_errmsg(db.handle()) };
+
+      if !err_str.is_null() {
+        // SAFETY: `err_str` is a valid pointer to a null-terminated string.
+        let err_str = unsafe { std::ffi::CStr::from_ptr(err_str) }
+          .to_string_lossy()
+          .into_owned();
+        return Err(SqliteError::SqliteSysError(err_str));
+      }
     }
 
     Ok(())
@@ -397,7 +412,7 @@ impl StatementSync {
     scope: &mut v8::HandleScope<'a>,
     #[varargs] params: Option<&v8::FunctionCallbackArguments>,
   ) -> Result<v8::Local<'a, v8::Value>, SqliteError> {
-    self.reset();
+    self.reset()?;
 
     self.bind_params(scope, params)?;
 
@@ -425,7 +440,7 @@ impl StatementSync {
     self.bind_params(scope, params)?;
     self.step()?;
 
-    self.reset();
+    self.reset()?;
 
     Ok(RunStatementResult {
       last_insert_rowid: db.last_insert_rowid(),
@@ -449,7 +464,7 @@ impl StatementSync {
       arr.push(result.into());
     }
 
-    self.reset();
+    self.reset()?;
 
     let arr = v8::Array::new_with_elements(scope, &arr);
     Ok(arr)
@@ -477,7 +492,7 @@ impl StatementSync {
       VALUE = "value",
     }
 
-    self.reset();
+    self.reset()?;
 
     self.bind_params(scope, params)?;
 
@@ -507,7 +522,7 @@ impl StatementSync {
       }
 
       let Ok(Some(row)) = statement.read_row(scope) else {
-        statement.reset();
+        let _ = statement.reset();
         statement.is_iter_finished = true;
 
         let values = &[
@@ -537,7 +552,7 @@ impl StatementSync {
       let statement = unsafe { &mut *(context.value() as *mut StatementSync) };
 
       statement.is_iter_finished = true;
-      statement.reset();
+      let _ = statement.reset();
 
       let names = &[
         DONE.v8_string(scope).unwrap().into(),
diff --git a/tests/unit_node/sqlite_test.ts b/tests/unit_node/sqlite_test.ts
index a267f2c9131d71..0ece60a0805cd4 100644
--- a/tests/unit_node/sqlite_test.ts
+++ b/tests/unit_node/sqlite_test.ts
@@ -258,3 +258,17 @@ Deno.test("[node/sqlite] StatementSync for large integers", () => {
   assertEquals(result, { "2147483648": 2147483648, __proto__: null });
   db.close();
 });
+
+Deno.test("[node/sqlite] error message", () => {
+  const db = new DatabaseSync(":memory:");
+  db.exec("CREATE TABLE foo (a text, b text NOT NULL, c text)");
+
+  assertThrows(
+    () => {
+      db.prepare("INSERT INTO foo(a, b, c) VALUES (NULL, NULL, NULL)")
+        .run();
+    },
+    Error,
+    "NOT NULL constraint failed: foo.b",
+  );
+});

From bc71eb9541567bd7aa8629ea0b83e45ddb1ad807 Mon Sep 17 00:00:00 2001
From: Kenta Moriuchi <moriken@kimamass.com>
Date: Tue, 25 Feb 2025 00:11:06 +0900
Subject: [PATCH 020/115] refactor(cli): update JSON schemas versions (#28252)

---
 cli/schemas/config-file.v1.json               |  4 +-
 .../kv-metadata-exchange-response.v1.json     | 25 ++++---
 cli/schemas/lint-rules.v1.json                |  3 +-
 cli/schemas/lint-tags.v1.json                 |  3 +-
 cli/schemas/module-graph.json                 | 70 +++++++++----------
 cli/schemas/registry-completions.v1.json      | 58 +++++++--------
 cli/schemas/registry-completions.v2.json      | 58 +++++++--------
 7 files changed, 116 insertions(+), 105 deletions(-)

diff --git a/cli/schemas/config-file.v1.json b/cli/schemas/config-file.v1.json
index 3bf53b3099769c..69e20f88c1867b 100644
--- a/cli/schemas/config-file.v1.json
+++ b/cli/schemas/config-file.v1.json
@@ -1,10 +1,10 @@
 {
   "$id": "https://deno.land/x/deno/cli/schemas/config-file.v1.json",
   "$schema": "https://json-schema.org/draft/2020-12/schema",
-  "description": "A JSON representation of a Deno configuration file.",
-  "required": [],
   "title": "Deno configuration file Schema",
+  "description": "A JSON representation of a Deno configuration file.",
   "type": "object",
+  "required": [],
   "properties": {
     "compilerOptions": {
       "type": "object",
diff --git a/cli/schemas/kv-metadata-exchange-response.v1.json b/cli/schemas/kv-metadata-exchange-response.v1.json
index aa29242fbfbc81..7cac5b4f86d6df 100644
--- a/cli/schemas/kv-metadata-exchange-response.v1.json
+++ b/cli/schemas/kv-metadata-exchange-response.v1.json
@@ -1,7 +1,7 @@
 {
   "$id": "https://deno.land/x/deno/cli/schemas/kv-metadata-exchange-response.v1.json",
-  "$schema": "http://json-schema.org/draft-07/schema#",
-  "definitions": {
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$defs": {
     "Uuid": {
       "type": "string",
       "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
@@ -12,6 +12,10 @@
     },
     "EndpointInfo": {
       "type": "object",
+      "required": [
+        "url",
+        "consistency"
+      ],
       "properties": {
         "url": {
           "type": "string"
@@ -20,35 +24,40 @@
           "type": "string"
         }
       },
-      "required": ["url", "consistency"],
       "additionalProperties": false
     },
     "DatabaseMetadata": {
       "type": "object",
+      "required": [
+        "version",
+        "databaseId",
+        "endpoints",
+        "token",
+        "expiresAt"
+      ],
       "properties": {
         "version": {
           "type": "integer",
           "minimum": 0
         },
         "databaseId": {
-          "$ref": "#/definitions/Uuid"
+          "$ref": "#/$defs/Uuid"
         },
         "endpoints": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/EndpointInfo"
+            "$ref": "#/$defs/EndpointInfo"
           }
         },
         "token": {
           "type": "string"
         },
         "expiresAt": {
-          "$ref": "#/definitions/DateTime"
+          "$ref": "#/$defs/DateTime"
         }
       },
-      "required": ["version", "databaseId", "endpoints", "token", "expiresAt"],
       "additionalProperties": false
     }
   },
-  "$ref": "#/definitions/DatabaseMetadata"
+  "$ref": "#/$defs/DatabaseMetadata"
 }
diff --git a/cli/schemas/lint-rules.v1.json b/cli/schemas/lint-rules.v1.json
index 90c1230b410602..91eaff28d17374 100644
--- a/cli/schemas/lint-rules.v1.json
+++ b/cli/schemas/lint-rules.v1.json
@@ -1,5 +1,6 @@
 {
-  "$schema": "http://json-schema.org/draft-07/schema#",
+  "$id": "https://deno.land/x/deno/cli/schemas/lint-rules.v1.json",
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
   "oneOf": [
     {
       "type": "string",
diff --git a/cli/schemas/lint-tags.v1.json b/cli/schemas/lint-tags.v1.json
index 4b4f0e48db400a..e90688615f7b5c 100644
--- a/cli/schemas/lint-tags.v1.json
+++ b/cli/schemas/lint-tags.v1.json
@@ -1,4 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-07/schema#",
+  "$id": "https://deno.land/x/deno/cli/schemas/lint-tags.v1.json",
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
   "enum": ["fresh", "jsr", "jsx", "react", "recommended"]
 }
diff --git a/cli/schemas/module-graph.json b/cli/schemas/module-graph.json
index ea32d843be28f5..4a4fd8170f5a8b 100644
--- a/cli/schemas/module-graph.json
+++ b/cli/schemas/module-graph.json
@@ -1,38 +1,7 @@
 {
   "$id": "https://deno.land/x/deno/cli/schemas/module-graph.json",
-  "$schema": "http://json-schema.org/draft-07/schema",
-  "description": "A JSON representation of a Deno module dependency graph.",
-  "required": [
-    "root",
-    "modules",
-    "size"
-  ],
-  "title": "Deno Dependency Graph Schema",
-  "type": "object",
-  "properties": {
-    "root": {
-      "default": "",
-      "description": "The root specifier for the graph.",
-      "examples": [
-        "https://deno.land/x/mod.ts"
-      ],
-      "type": "string"
-    },
-    "modules": {
-      "default": [],
-      "description": "The modules that are part of the graph.",
-      "type": "array",
-      "items": {
-        "$ref": "#/definitions/module"
-      }
-    },
-    "size": {
-      "type": "integer",
-      "description": "The total size of all the unique dependencies in the graph in bytes.",
-      "default": 0
-    }
-  },
-  "definitions": {
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$defs": {
     "module": {
       "type": "object",
       "required": [
@@ -48,11 +17,11 @@
           "type": "array",
           "description": "An array of dependencies of the module.",
           "items": {
-            "$ref": "#/definitions/dependency"
+            "$ref": "#/$defs/dependency"
           }
         },
         "typeDependency": {
-          "$ref": "#/definitions/dependency",
+          "$ref": "#/$defs/dependency",
           "description": "The type dependency for the module. This is set when the file contains a reference to its types or the module was supplied with a types header."
         },
         "size": {
@@ -113,5 +82,36 @@
         }
       }
     }
+  },
+  "title": "Deno Dependency Graph Schema",
+  "description": "A JSON representation of a Deno module dependency graph.",
+  "type": "object",
+  "required": [
+    "root",
+    "modules",
+    "size"
+  ],
+  "properties": {
+    "root": {
+      "default": "",
+      "description": "The root specifier for the graph.",
+      "examples": [
+        "https://deno.land/x/mod.ts"
+      ],
+      "type": "string"
+    },
+    "modules": {
+      "default": [],
+      "description": "The modules that are part of the graph.",
+      "type": "array",
+      "items": {
+        "$ref": "#/$defs/module"
+      }
+    },
+    "size": {
+      "type": "integer",
+      "description": "The total size of all the unique dependencies in the graph in bytes.",
+      "default": 0
+    }
   }
 }
diff --git a/cli/schemas/registry-completions.v1.json b/cli/schemas/registry-completions.v1.json
index 2c14d450e3177b..6e49d76f743886 100644
--- a/cli/schemas/registry-completions.v1.json
+++ b/cli/schemas/registry-completions.v1.json
@@ -1,33 +1,7 @@
 {
-  "$schema": "http://json-schema.org/draft-07/schema#",
   "$id": "https://deno.land/x/deno/cli/schemas/registry-completions.v1.json",
-  "title": "Deno Registry Completion Schema",
-  "description": "A definition of meta data that allows a Deno language server form auto completion suggestions for modules within a module registry.",
-  "required": [
-    "version",
-    "registries"
-  ],
-  "type": "object",
-  "properties": {
-    "version": {
-      "description": "The version of the schema document.",
-      "type": "integer",
-      "minimum": 1,
-      "maximum": 1,
-      "examples": [
-        1
-      ]
-    },
-    "registries": {
-      "default": [],
-      "description": "The registries that exist for this origin.",
-      "type": "array",
-      "items": {
-        "$ref": "#/definitions/registry"
-      }
-    }
-  },
-  "definitions": {
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$defs": {
     "registry": {
       "type": "object",
       "required": [
@@ -48,7 +22,7 @@
           "description": "The variables that are contained in the schema string.",
           "type": "array",
           "items": {
-            "$ref": "#/definitions/variable"
+            "$ref": "#/$defs/variable"
           }
         }
       }
@@ -80,5 +54,31 @@
         }
       }
     }
+  },
+  "title": "Deno Registry Completion Schema",
+  "description": "A definition of meta data that allows a Deno language server form auto completion suggestions for modules within a module registry.",
+  "type": "object",
+  "required": [
+    "version",
+    "registries"
+  ],
+  "properties": {
+    "version": {
+      "description": "The version of the schema document.",
+      "type": "integer",
+      "minimum": 1,
+      "maximum": 1,
+      "examples": [
+        1
+      ]
+    },
+    "registries": {
+      "default": [],
+      "description": "The registries that exist for this origin.",
+      "type": "array",
+      "items": {
+        "$ref": "#/$defs/registry"
+      }
+    }
   }
 }
diff --git a/cli/schemas/registry-completions.v2.json b/cli/schemas/registry-completions.v2.json
index d60859c7cfba0e..6845f797a3084d 100644
--- a/cli/schemas/registry-completions.v2.json
+++ b/cli/schemas/registry-completions.v2.json
@@ -1,33 +1,7 @@
 {
-  "$schema": "http://json-schema.org/draft-07/schema#",
   "$id": "https://deno.land/x/deno/cli/schemas/registry-completions.v2.json",
-  "title": "Deno Registry Completion Schema",
-  "description": "A definition of meta data that allows a Deno language server form auto completion suggestions for modules within a module registry.",
-  "required": [
-    "version",
-    "registries"
-  ],
-  "type": "object",
-  "properties": {
-    "version": {
-      "description": "The version of the schema document.",
-      "type": "integer",
-      "minimum": 1,
-      "maximum": 2,
-      "examples": [
-        2
-      ]
-    },
-    "registries": {
-      "default": [],
-      "description": "The registries that exist for this origin.",
-      "type": "array",
-      "items": {
-        "$ref": "#/definitions/registry"
-      }
-    }
-  },
-  "definitions": {
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$defs": {
     "registry": {
       "type": "object",
       "required": [
@@ -48,7 +22,7 @@
           "description": "The variables that are contained in the schema string.",
           "type": "array",
           "items": {
-            "$ref": "#/definitions/variable"
+            "$ref": "#/$defs/variable"
           }
         }
       }
@@ -89,5 +63,31 @@
         }
       }
     }
+  },
+  "title": "Deno Registry Completion Schema",
+  "description": "A definition of meta data that allows a Deno language server form auto completion suggestions for modules within a module registry.",
+  "type": "object",
+  "required": [
+    "version",
+    "registries"
+  ],
+  "properties": {
+    "version": {
+      "description": "The version of the schema document.",
+      "type": "integer",
+      "minimum": 1,
+      "maximum": 2,
+      "examples": [
+        2
+      ]
+    },
+    "registries": {
+      "default": [],
+      "description": "The registries that exist for this origin.",
+      "type": "array",
+      "items": {
+        "$ref": "#/$defs/registry"
+      }
+    }
   }
 }

From 0fbab02d0f07ccbf43d1ba878e6582fc93a78eb5 Mon Sep 17 00:00:00 2001
From: Leo Kettmeir <crowlkats@toaxl.com>
Date: Mon, 24 Feb 2025 17:20:59 +0100
Subject: [PATCH 021/115] fix: add info suggestion for
 `unsafely-ignore-certificate-errors` and add `--help=full` (#28203)

For #27865
---
 Cargo.lock                                 | 22 +++---
 cli/Cargo.toml                             |  4 +-
 cli/args/flags.rs                          | 84 ++++++++++++----------
 runtime/fmt_errors.rs                      |  6 ++
 tests/specs/bundle/removed/bundle_help.out |  7 +-
 tests/specs/vendor/removed/vendor_help.out |  7 +-
 6 files changed, 72 insertions(+), 58 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 8200e6b15608ed..ca50ffaf00094a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -856,18 +856,18 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.5.16"
+version = "4.5.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019"
+checksum = "92b7b18d71fad5313a1e320fa9897994228ce274b60faa4d694fe0ea89cd9e6d"
 dependencies = [
  "clap_builder",
 ]
 
 [[package]]
 name = "clap_builder"
-version = "4.5.15"
+version = "4.5.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6"
+checksum = "a35db2071778a7344791a4fb4f95308b5673d219dee3ae348b86642574ecc90c"
 dependencies = [
  "anstream",
  "anstyle",
@@ -878,9 +878,9 @@ dependencies = [
 
 [[package]]
 name = "clap_complete"
-version = "4.5.24"
+version = "4.5.45"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d7db6eca8c205649e8d3ccd05aa5042b1800a784e56bc7c43524fde8abbfa9b"
+checksum = "1e3040c8291884ddf39445dc033c70abc2bc44a42f0a3a00571a0f483a83f0cd"
 dependencies = [
  "clap",
 ]
@@ -897,9 +897,9 @@ dependencies = [
 
 [[package]]
 name = "clap_lex"
-version = "0.7.2"
+version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97"
+checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6"
 
 [[package]]
 name = "cli_tests"
@@ -8268,12 +8268,12 @@ dependencies = [
 
 [[package]]
 name = "terminal_size"
-version = "0.3.0"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7"
+checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9"
 dependencies = [
  "rustix",
- "windows-sys 0.48.0",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index 5940ddf9cc8e55..e160eff54ffdf1 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -100,8 +100,8 @@ boxed_error.workspace = true
 bytes.workspace = true
 capacity_builder.workspace = true
 chrono = { workspace = true, features = ["now"] }
-clap = { version = "=4.5.16", features = ["env", "string", "wrap_help", "error-context"] }
-clap_complete = "=4.5.24"
+clap = { version = "=4.5.30", features = ["env", "string", "wrap_help", "error-context"] }
+clap_complete = "=4.5.45"
 clap_complete_fig = "=4.5.2"
 color-print.workspace = true
 console_static_text.workspace = true
diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index 6aa13860642854..d94d9cf480f793 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -1257,7 +1257,9 @@ pub fn flags_from_vec(args: Vec<OsString>) -> clap::error::Result<Flags> {
       app
     };
 
-    if help_expansion == "unstable"
+    if help_expansion == "full" {
+      subcommand = enable_full(subcommand);
+    } else if help_expansion == "unstable"
       && subcommand
         .get_arguments()
         .any(|arg| arg.get_id().as_str() == "unstable")
@@ -1423,6 +1425,17 @@ fn enable_unstable(command: Command) -> Command {
     })
 }
 
+fn enable_full(command: Command) -> Command {
+  command.mut_args(|arg| {
+    let long_help = arg.get_long_help();
+    if !long_help.is_some_and(|s| s.to_string() == "false") {
+      arg.hide(false)
+    } else {
+      arg
+    }
+  })
+}
+
 macro_rules! heading {
     ($($name:ident = $title:expr),+; $total:literal) => {
       $(const $name: &str = $title;)+
@@ -1547,11 +1560,11 @@ pub fn clap_root() -> Command {
       Arg::new("help")
         .short('h')
         .long("help")
-        .hide(true)
         .action(ArgAction::Append)
         .num_args(0..=1)
         .require_equals(true)
-        .value_parser(["unstable"])
+        .value_name("CONTEXT")
+        .value_parser(["unstable", "full"])
         .global(true),
     )
     .arg(
@@ -3464,7 +3477,7 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
           .action(ArgAction::Append)
           .require_equals(true)
           .value_name("PATH")
-          .help("Allow file system read access. Optionally specify allowed paths")
+          .long_help("false")
           .value_hint(ValueHint::AnyPath)
           .hide(true);
         if let Some(requires) = requires {
@@ -3481,7 +3494,7 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
           .action(ArgAction::Append)
           .require_equals(true)
           .value_name("PATH")
-          .help("Deny file system read access. Optionally specify denied paths")
+          .long_help("false")
           .value_hint(ValueHint::AnyPath)
           .hide(true);
         if let Some(requires) = requires {
@@ -3499,7 +3512,7 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
           .action(ArgAction::Append)
           .require_equals(true)
           .value_name("PATH")
-          .help("Allow file system write access. Optionally specify allowed paths")
+          .long_help("false")
           .value_hint(ValueHint::AnyPath)
           .hide(true);
         if let Some(requires) = requires {
@@ -3516,7 +3529,7 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
           .action(ArgAction::Append)
           .require_equals(true)
           .value_name("PATH")
-          .help("Deny file system write access. Optionally specify denied paths")
+          .long_help("false")
           .value_hint(ValueHint::AnyPath)
           .hide(true);
         if let Some(requires) = requires {
@@ -3534,7 +3547,7 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
           .use_value_delimiter(true)
           .require_equals(true)
           .value_name("IP_OR_HOSTNAME")
-          .help("Allow network access. Optionally specify allowed IP addresses and host names, with ports as necessary")
+          .long_help("false")
           .value_parser(flags_net::validator)
           .hide(true);
         if let Some(requires) = requires {
@@ -3551,10 +3564,9 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
           .use_value_delimiter(true)
           .require_equals(true)
           .value_name("IP_OR_HOSTNAME")
-          .help("Deny network access. Optionally specify denied IP addresses and host names, with ports as necessary")
+          .long_help("false")
           .value_parser(flags_net::validator)
-          .hide(true)
-          ;
+          .hide(true);
         if let Some(requires) = requires {
           arg = arg.requires(requires)
         }
@@ -3570,7 +3582,7 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
           .use_value_delimiter(true)
           .require_equals(true)
           .value_name("VARIABLE_NAME")
-          .help("Allow access to system environment information. Optionally specify accessible environment variables")
+          .long_help("false")
           .value_parser(|key: &str| {
             if key.is_empty() || key.contains(&['=', '\0'] as &[char]) {
               return Err(format!("invalid key \"{key}\""));
@@ -3582,8 +3594,7 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
               key.to_string()
             })
           })
-          .hide(true)
-          ;
+          .hide(true);
         if let Some(requires) = requires {
           arg = arg.requires(requires)
         }
@@ -3598,7 +3609,7 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
           .use_value_delimiter(true)
           .require_equals(true)
           .value_name("VARIABLE_NAME")
-          .help("Deny access to system environment information. Optionally specify accessible environment variables")
+          .long_help("false")
           .value_parser(|key: &str| {
             if key.is_empty() || key.contains(&['=', '\0'] as &[char]) {
               return Err(format!("invalid key \"{key}\""));
@@ -3610,8 +3621,7 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
               key.to_string()
             })
           })
-          .hide(true)
-          ;
+          .hide(true);
         if let Some(requires) = requires {
           arg = arg.requires(requires)
         }
@@ -3627,10 +3637,9 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
           .use_value_delimiter(true)
           .require_equals(true)
           .value_name("API_NAME")
-          .help("Allow access to OS information. Optionally allow specific APIs by function name")
+          .long_help("false")
           .value_parser(|key: &str| SysDescriptor::parse(key.to_string()).map(|s| s.into_string()))
-          .hide(true)
-          ;
+          .hide(true);
         if let Some(requires) = requires {
           arg = arg.requires(requires)
         }
@@ -3645,10 +3654,9 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
           .use_value_delimiter(true)
           .require_equals(true)
           .value_name("API_NAME")
-          .help("Deny access to OS information. Optionally deny specific APIs by function name")
+          .long_help("false")
           .value_parser(|key: &str| SysDescriptor::parse(key.to_string()).map(|s| s.into_string()))
-          .hide(true)
-          ;
+          .hide(true);
         if let Some(requires) = requires {
           arg = arg.requires(requires)
         }
@@ -3663,9 +3671,8 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
           .use_value_delimiter(true)
           .require_equals(true)
           .value_name("PROGRAM_NAME")
-          .help("Allow running subprocesses. Optionally specify allowed runnable program names")
-          .hide(true)
-          ;
+          .long_help("false")
+          .hide(true);
         if let Some(requires) = requires {
           arg = arg.requires(requires)
         }
@@ -3680,9 +3687,8 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
           .use_value_delimiter(true)
           .require_equals(true)
           .value_name("PROGRAM_NAME")
-          .help("Deny running subprocesses. Optionally specify denied runnable program names")
-          .hide(true)
-          ;
+          .long_help("false")
+          .hide(true);
         if let Some(requires) = requires {
           arg = arg.requires(requires)
         }
@@ -3698,7 +3704,7 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
           .action(ArgAction::Append)
           .require_equals(true)
           .value_name("PATH")
-          .help("(Unstable) Allow loading dynamic libraries. Optionally specify allowed directories or files")
+          .long_help("false")
           .value_hint(ValueHint::AnyPath)
           .hide(true);
         if let Some(requires) = requires {
@@ -3715,7 +3721,7 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
           .action(ArgAction::Append)
           .require_equals(true)
           .value_name("PATH")
-          .help("(Unstable) Deny loading dynamic libraries. Optionally specify denied directories or files")
+          .long_help("false")
           .value_hint(ValueHint::AnyPath)
           .hide(true);
         if let Some(requires) = requires {
@@ -3729,7 +3735,7 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
         let mut arg = Arg::new("allow-hrtime")
           .long("allow-hrtime")
           .action(ArgAction::SetTrue)
-          .help("REMOVED in Deno 2.0")
+          .long_help("false")
           .hide(true);
         if let Some(requires) = requires {
           arg = arg.requires(requires)
@@ -3742,7 +3748,7 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
         let mut arg = Arg::new("deny-hrtime")
           .long("deny-hrtime")
           .action(ArgAction::SetTrue)
-          .help("REMOVED in Deno 2.0")
+          .long_help("false")
           .hide(true);
         if let Some(requires) = requires {
           arg = arg.requires(requires)
@@ -3756,7 +3762,7 @@ fn permission_args(app: Command, requires: Option<&'static str>) -> Command {
           .long("no-prompt")
           .action(ArgAction::SetTrue)
           .hide(true)
-          .help("Always throw if required permission wasn't passed");
+          .long_help("false");
         if let Some(requires) = requires {
           arg = arg.requires(requires)
         }
@@ -4623,11 +4629,11 @@ fn completions_parse(
   matches: &mut ArgMatches,
   mut app: Command,
 ) {
-  use clap_complete::generate;
-  use clap_complete::shells::Bash;
-  use clap_complete::shells::Fish;
-  use clap_complete::shells::PowerShell;
-  use clap_complete::shells::Zsh;
+  use clap_complete::aot::generate;
+  use clap_complete::aot::Bash;
+  use clap_complete::aot::Fish;
+  use clap_complete::aot::PowerShell;
+  use clap_complete::aot::Zsh;
   use clap_complete_fig::Fig;
 
   let mut buf: Vec<u8> = vec![];
diff --git a/runtime/fmt_errors.rs b/runtime/fmt_errors.rs
index 6aa47658299622..3bde37bbe2eeb2 100644
--- a/runtime/fmt_errors.rs
+++ b/runtime/fmt_errors.rs
@@ -437,6 +437,12 @@ fn get_suggestions_for_terminal_errors(e: &JsError) -> Vec<FixSuggestion> {
           "Run again with `--unstable-net` flag to enable this API.",
         ),
       ];
+    } else if msg.contains("client error (Connect): invalid peer certificate") {
+      return vec![
+        FixSuggestion::hint(
+          "Run again with the `--unsafely-ignore-certificate-errors` flag to bypass certificate errors.",
+        ),
+      ];
     // Try to capture errors like:
     // ```
     // Uncaught Error: Cannot find module '../build/Release/canvas.node'
diff --git a/tests/specs/bundle/removed/bundle_help.out b/tests/specs/bundle/removed/bundle_help.out
index e1f43dfea61891..c8068a6d6f5ee7 100644
--- a/tests/specs/bundle/removed/bundle_help.out
+++ b/tests/specs/bundle/removed/bundle_help.out
@@ -5,6 +5,7 @@ See the Deno 1.x to 2.x Migration Guide for migration instructions: https://docs
 Usage: deno bundle [OPTIONS]
 
 Options:
-  -q, --quiet     Suppress diagnostic output
-      --unstable  The `--unstable` flag has been deprecated. Use granular `--unstable-*` flags instead
-                    To view the list of individual unstable feature flags, run this command again with --help=unstable
+  -h, --help[=<CONTEXT>]  [possible values: unstable, full]
+  -q, --quiet             Suppress diagnostic output
+      --unstable          The `--unstable` flag has been deprecated. Use granular `--unstable-*` flags instead
+                            To view the list of individual unstable feature flags, run this command again with --help=unstable
diff --git a/tests/specs/vendor/removed/vendor_help.out b/tests/specs/vendor/removed/vendor_help.out
index 98aca359d76ced..1d8bc2f3696da5 100644
--- a/tests/specs/vendor/removed/vendor_help.out
+++ b/tests/specs/vendor/removed/vendor_help.out
@@ -5,6 +5,7 @@ See the Deno 1.x to 2.x Migration Guide for migration instructions: https://docs
 Usage: deno vendor [OPTIONS]
 
 Options:
-  -q, --quiet     Suppress diagnostic output
-      --unstable  The `--unstable` flag has been deprecated. Use granular `--unstable-*` flags instead
-                    To view the list of individual unstable feature flags, run this command again with --help=unstable
+  -h, --help[=<CONTEXT>]  [possible values: unstable, full]
+  -q, --quiet             Suppress diagnostic output
+      --unstable          The `--unstable` flag has been deprecated. Use granular `--unstable-*` flags instead
+                            To view the list of individual unstable feature flags, run this command again with --help=unstable

From 93a1bb738a0d554fb0a4bd31a41fa6667ea233c1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= <biwanczuk@gmail.com>
Date: Mon, 24 Feb 2025 17:21:16 +0100
Subject: [PATCH 022/115] fix(lint): give access to SourceCode in 'deno test'
 (#28278)

Closes https://github.com/denoland/deno/issues/28273
---
 cli/js/40_lint.js                             |  7 +++++-
 .../lint_plugin_runtime_api/__test__.jsonc    |  4 ++++
 .../lint_plugin_runtime_api/main_test.out     |  6 +++++
 .../lint/lint_plugin_runtime_api/main_test.ts | 22 +++++++++++++++++++
 4 files changed, 38 insertions(+), 1 deletion(-)
 create mode 100644 tests/specs/lint/lint_plugin_runtime_api/main_test.out
 create mode 100644 tests/specs/lint/lint_plugin_runtime_api/main_test.ts

diff --git a/cli/js/40_lint.js b/cli/js/40_lint.js
index 0eb2f4a1e0a0a7..af4ba6ba1e28fe 100644
--- a/cli/js/40_lint.js
+++ b/cli/js/40_lint.js
@@ -17,6 +17,7 @@ const {
 } = core.ops;
 
 let doReport = op_lint_report;
+let doGetSource = op_lint_get_source;
 
 // Keep these in sync with Rust
 const AST_IDX_INVALID = 0;
@@ -264,7 +265,7 @@ export class SourceCode {
    */
   #getSource() {
     if (this.#source === null) {
-      this.#source = op_lint_get_source();
+      this.#source = doGetSource();
     }
     return /** @type {string} */ (this.#source);
   }
@@ -1365,6 +1366,9 @@ function runLintPlugin(plugin, fileName, sourceText) {
       fix,
     });
   };
+  doGetSource = () => {
+    return sourceText;
+  };
   try {
     const serializedAst = op_lint_create_serialized_ast(fileName, sourceText);
 
@@ -1373,6 +1377,7 @@ function runLintPlugin(plugin, fileName, sourceText) {
     resetState();
   }
   doReport = op_lint_report;
+  doGetSource = op_lint_get_source;
   return diagnostics;
 }
 
diff --git a/tests/specs/lint/lint_plugin_runtime_api/__test__.jsonc b/tests/specs/lint/lint_plugin_runtime_api/__test__.jsonc
index ef871830cdb53d..4e9dcc65cd1d12 100644
--- a/tests/specs/lint/lint_plugin_runtime_api/__test__.jsonc
+++ b/tests/specs/lint/lint_plugin_runtime_api/__test__.jsonc
@@ -8,6 +8,10 @@
     {
       "args": "test main.ts",
       "output": "test.out"
+    },
+    {
+      "args": "test main_test.ts",
+      "output": "main_test.out"
     }
   ]
 }
diff --git a/tests/specs/lint/lint_plugin_runtime_api/main_test.out b/tests/specs/lint/lint_plugin_runtime_api/main_test.out
new file mode 100644
index 00000000000000..81c9f7efea1025
--- /dev/null
+++ b/tests/specs/lint/lint_plugin_runtime_api/main_test.out
@@ -0,0 +1,6 @@
+Check [WILDCARD]main_test.ts
+running 1 test from ./main_test.ts
+SourceCode.text ... ok ([WILDCARD])
+
+ok | 1 passed | 0 failed ([WILDCARD])
+
diff --git a/tests/specs/lint/lint_plugin_runtime_api/main_test.ts b/tests/specs/lint/lint_plugin_runtime_api/main_test.ts
new file mode 100644
index 00000000000000..5a5410d4739ec5
--- /dev/null
+++ b/tests/specs/lint/lint_plugin_runtime_api/main_test.ts
@@ -0,0 +1,22 @@
+Deno.test("SourceCode.text", () => {
+  const plugin: Deno.lint.Plugin = {
+    name: "sample",
+    rules: {
+      "test": {
+        create: (ctx) => {
+          ctx.sourceCode.text;
+          return {};
+        },
+      },
+    },
+  };
+  Deno.lint.runPlugin(
+    plugin,
+    "./test.js",
+    `function add(a, b) {
+  return a + b;
+}
+
+add(1, 2);`,
+  );
+});

From 6ac6e933dcc26bba5fde7f66489b17a8e64c31e9 Mon Sep 17 00:00:00 2001
From: Marvin Hagemeister <marvin@deno.com>
Date: Mon, 24 Feb 2025 18:05:17 +0100
Subject: [PATCH 023/115] fix(lint): update deno_lint (#28271)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Bartek Iwańczuk <biwanczuk@gmail.com>
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
Co-authored-by: David Sherret <dsherret@users.noreply.github.com>
---
 Cargo.lock       | 30 ++++++++++++++++++++----------
 Cargo.toml       |  2 +-
 cli/Cargo.toml   |  8 ++++----
 cli/tools/doc.rs |  4 +++-
 4 files changed, 28 insertions(+), 16 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index ca50ffaf00094a..67aa684f55cbd6 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1581,9 +1581,9 @@ dependencies = [
 
 [[package]]
 name = "deno_ast"
-version = "0.44.0"
+version = "0.45.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eebc7aaabfdb3ddcad32aee1b62d250149dc8b35dfbdccbb125df2bdc62da952"
+checksum = "4063ccc7a20c4bf23b36d1856a53c56d0d949e6ea4aa83d751674a5dfce6a365"
 dependencies = [
  "base64 0.21.7",
  "deno_error",
@@ -1594,6 +1594,7 @@ dependencies = [
  "percent-encoding",
  "serde",
  "sourcemap 9.0.0",
+ "string_capacity",
  "swc_atoms",
  "swc_bundler",
  "swc_common",
@@ -1844,9 +1845,9 @@ dependencies = [
 
 [[package]]
 name = "deno_doc"
-version = "0.164.0"
+version = "0.168.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad1edb02603c7e8a4003c84af2482a05e5eda3a14f1af275434fda89223f054d"
+checksum = "1ffe4164ec8ceefb414b3b99671818d79b31923c57f39cb350eb13ad327a6992"
 dependencies = [
  "anyhow",
  "cfg-if",
@@ -1984,9 +1985,9 @@ dependencies = [
 
 [[package]]
 name = "deno_graph"
-version = "0.87.3"
+version = "0.88.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f1d2f0aa5832b72abdc67e904649aa80ec707f0a5f8cc7825859221b56abd31"
+checksum = "8514a537cc6746ee7958b02f62273eff615ada6fa30bf8f5b38eaa68180992a7"
 dependencies = [
  "async-trait",
  "capacity_builder 0.5.0",
@@ -2143,9 +2144,9 @@ dependencies = [
 
 [[package]]
 name = "deno_lint"
-version = "0.72.1"
+version = "0.73.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef5020c50214ba5b42d84b623b58573095e800a81c6060e9589e7e4ea1206f8d"
+checksum = "16d3df8a46c79ec6b1ab18639b8dd0f2ff035712885ac89b9123b5d6533b6869"
 dependencies = [
  "anyhow",
  "deno_ast",
@@ -3213,9 +3214,9 @@ dependencies = [
 
 [[package]]
 name = "dprint-plugin-typescript"
-version = "0.93.3"
+version = "0.93.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5804d1809f6191a9261f423c41cd51a50e49567d61caa5a8f6224eea94ae0d12"
+checksum = "faae542025e642470671e0cf64a0b86f324d06166663d0d07cfc5e811680ce93"
 dependencies = [
  "anyhow",
  "deno_ast",
@@ -7621,6 +7622,15 @@ version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
 
+[[package]]
+name = "string_capacity"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcd14cb3a5abda6d2626370785f5f788b22e95476f597159faa4a2cc2966961a"
+dependencies = [
+ "itoa",
+]
+
 [[package]]
 name = "string_enum"
 version = "0.4.4"
diff --git a/Cargo.toml b/Cargo.toml
index 122974739fb5d4..6e97305f9eb7b3 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -50,7 +50,7 @@ license = "MIT"
 repository = "https://github.com/denoland/deno"
 
 [workspace.dependencies]
-deno_ast = { version = "=0.44.0", features = ["transpiling"] }
+deno_ast = { version = "=0.45.1", features = ["transpiling"] }
 deno_core = { version = "0.338.0" }
 
 deno_bench_util = { version = "0.186.0", path = "./bench_util" }
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index e160eff54ffdf1..d1e8fb71ea307d 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -71,11 +71,11 @@ deno_ast = { workspace = true, features = ["bundler", "cjs", "codegen", "proposa
 deno_cache_dir = { workspace = true, features = ["sync"] }
 deno_config = { workspace = true, features = ["sync", "workspace"] }
 deno_core = { workspace = true, features = ["include_js_files_for_snapshotting"] }
-deno_doc = { version = "=0.164.0", features = ["rust", "comrak"] }
+deno_doc = { version = "=0.168.0", features = ["rust", "comrak"] }
 deno_error.workspace = true
-deno_graph = { version = "=0.87.3" }
+deno_graph = { version = "=0.88.0" }
 deno_lib.workspace = true
-deno_lint = { version = "0.72.1" }
+deno_lint = { version = "0.73.1" }
 deno_lockfile.workspace = true
 deno_media_type = { workspace = true, features = ["data_url", "decoding", "module_specifier"] }
 deno_npm.workspace = true
@@ -113,7 +113,7 @@ dotenvy = "0.15.7"
 dprint-plugin-json = "=0.19.4"
 dprint-plugin-jupyter = "=0.1.5"
 dprint-plugin-markdown = "=0.17.8"
-dprint-plugin-typescript = "=0.93.3"
+dprint-plugin-typescript = "=0.93.4"
 fancy-regex = "=0.10.0"
 faster-hex.workspace = true
 # If you disable the default __vendored_zlib_ng feature above, you _must_ be able to link against `-lz`.
diff --git a/cli/tools/doc.rs b/cli/tools/doc.rs
index 26b4af4a7f8d57..7f088f1526216b 100644
--- a/cli/tools/doc.rs
+++ b/cli/tools/doc.rs
@@ -516,7 +516,9 @@ fn print_docs_to_stdout(
   doc_flags: DocFlags,
   mut doc_nodes: Vec<deno_doc::DocNode>,
 ) -> Result<(), AnyError> {
-  doc_nodes.retain(|doc_node| doc_node.kind() != doc::DocNodeKind::Import);
+  doc_nodes.retain(|doc_node| {
+    !matches!(doc_node.def, doc::node::DocNodeDef::Import { .. })
+  });
   let details = if let Some(filter) = doc_flags.filter {
     let nodes = doc::find_nodes_by_name_recursively(doc_nodes, &filter);
     if nodes.is_empty() {

From 234deac8561eb6a8c9ef3dbfee40407db5bec409 Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Mon, 24 Feb 2025 12:33:01 -0500
Subject: [PATCH 024/115] fix(config): allow specifying absolute path for patch
 and fix panic with exports in package.json (#28279)

Closes #28250
Closes #26031
---
 Cargo.lock                   |  8 ++++----
 Cargo.toml                   |  4 ++--
 cli/rt/run.rs                |  6 +++---
 cli/tools/publish/unfurl.rs  | 15 ++++++++++-----
 resolvers/deno/workspace.rs  |  2 +-
 resolvers/node/resolution.rs |  2 +-
 6 files changed, 21 insertions(+), 16 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 67aa684f55cbd6..35b3c8f575c11b 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1717,9 +1717,9 @@ dependencies = [
 
 [[package]]
 name = "deno_config"
-version = "0.49.1"
+version = "0.50.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1bbde052743fd8729836d337de950fbffd79e3edb6fa8d5894e95b7d62dea15b"
+checksum = "56792005d20f0b38f2e190b15918362440bebc0065b825af59d6022be465f764"
 dependencies = [
  "boxed_error",
  "capacity_builder 0.5.0",
@@ -2412,9 +2412,9 @@ dependencies = [
 
 [[package]]
 name = "deno_package_json"
-version = "0.4.2"
+version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d07d26dbfcc01e636aef86f9baff7faf5338398e74d283d8fe01e39068f48049"
+checksum = "fb8582ef20e0c5ed9bc43e93f593a461b63bd106311117feb3baf9ce8ea03d95"
 dependencies = [
  "boxed_error",
  "deno_error",
diff --git a/Cargo.toml b/Cargo.toml
index 6e97305f9eb7b3..09f344c88442c5 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -54,7 +54,7 @@ deno_ast = { version = "=0.45.1", features = ["transpiling"] }
 deno_core = { version = "0.338.0" }
 
 deno_bench_util = { version = "0.186.0", path = "./bench_util" }
-deno_config = { version = "=0.49.1", features = ["workspace"] }
+deno_config = { version = "=0.50.0", features = ["workspace"] }
 deno_lockfile = "=0.24.0"
 deno_media_type = { version = "=0.2.6", features = ["module_specifier"] }
 deno_npm = "=0.27.2"
@@ -130,7 +130,7 @@ data-encoding = "2.3.3"
 data-url = "=0.3.1"
 deno_cache_dir = "=0.18.0"
 deno_error = "=0.5.5"
-deno_package_json = { version = "=0.4.2", default-features = false }
+deno_package_json = { version = "=0.5.0", default-features = false }
 deno_unsync = "0.4.2"
 dlopen2 = "0.6.1"
 ecb = "=0.1.2"
diff --git a/cli/rt/run.rs b/cli/rt/run.rs
index 1eca838cba643b..3dd26122d00c0d 100644
--- a/cli/rt/run.rs
+++ b/cli/rt/run.rs
@@ -841,10 +841,10 @@ pub async fn run(
           .to_file_path()
           .unwrap();
         let pkg_json =
-          deno_package_json::PackageJson::load_from_value(path, json);
-        Arc::new(pkg_json)
+          deno_package_json::PackageJson::load_from_value(path, json)?;
+        Ok(Arc::new(pkg_json))
       })
-      .collect();
+      .collect::<Result<Vec<_>, AnyError>>()?;
     WorkspaceResolver::new_raw(
       root_dir_url.clone(),
       import_map,
diff --git a/cli/tools/publish/unfurl.rs b/cli/tools/publish/unfurl.rs
index 815a98438df593..510270882bbacf 100644
--- a/cli/tools/publish/unfurl.rs
+++ b/cli/tools/publish/unfurl.rs
@@ -731,7 +731,8 @@ mod tests {
           "chalk": 5
         }
       }),
-    );
+    )
+    .unwrap();
     let workspace_resolver = WorkspaceResolver::new_raw(
       Arc::new(ModuleSpecifier::from_directory_path(&cwd).unwrap()),
       Some(import_map),
@@ -867,11 +868,13 @@ export type * from "./c.d.ts";
     let pkg_json_add = PackageJson::load_from_value(
       cwd.join("add/package.json"),
       json!({ "name": "add", "version": "0.1.0", }),
-    );
+    )
+    .unwrap();
     let pkg_json_subtract = PackageJson::load_from_value(
       cwd.join("subtract/package.json"),
       json!({ "name": "subtract", "version": "0.2.0", }),
-    );
+    )
+    .unwrap();
     let pkg_json_publishing = PackageJson::load_from_value(
       cwd.join("publish/package.json"),
       json!({
@@ -883,11 +886,13 @@ export type * from "./c.d.ts";
           "non-existent": "workspace:~",
         }
       }),
-    );
+    )
+    .unwrap();
     let root_pkg_json = PackageJson::load_from_value(
       cwd.join("package.json"),
       json!({ "workspaces": ["./publish", "./subtract", "./add"] }),
-    );
+    )
+    .unwrap();
     let sys = CliSys::default();
     let workspace_resolver = WorkspaceResolver::new_raw(
       Arc::new(ModuleSpecifier::from_directory_path(&cwd).unwrap()),
diff --git a/resolvers/deno/workspace.rs b/resolvers/deno/workspace.rs
index b7169497222435..c51a13f9956e95 100644
--- a/resolvers/deno/workspace.rs
+++ b/resolvers/deno/workspace.rs
@@ -1174,7 +1174,7 @@ impl<TSys: FsMetadata + FsRead> WorkspaceResolver<TSys> {
           url_to_file_path(&root_dir_url.join(&relative_path).unwrap())
             .unwrap();
         let pkg_json =
-          deno_package_json::PackageJson::load_from_value(path, json);
+          deno_package_json::PackageJson::load_from_value(path, json).unwrap();
         PackageJsonRc::new(pkg_json)
       })
       .collect();
diff --git a/resolvers/node/resolution.rs b/resolvers/node/resolution.rs
index 66ab8b8ac5a2b8..cc2299d3a93835 100644
--- a/resolvers/node/resolution.rs
+++ b/resolvers/node/resolution.rs
@@ -2112,7 +2112,7 @@ mod tests {
   use super::*;
 
   fn build_package_json(json: Value) -> PackageJson {
-    PackageJson::load_from_value(PathBuf::from("/package.json"), json)
+    PackageJson::load_from_value(PathBuf::from("/package.json"), json).unwrap()
   }
 
   #[test]

From f9166797d25e058ad6ac0e93e01d121d9b76f877 Mon Sep 17 00:00:00 2001
From: Marvin Hagemeister <marvin@deno.com>
Date: Mon, 24 Feb 2025 23:35:49 +0100
Subject: [PATCH 025/115] fix(lint): plugins ignored when no rust rule active
 (#28269)

When all Rust-based rules where filtered out we were bailing out early
instead of checking if there are plugin rules we need to run. This meant
we errored out with a "No lint rules to run" message, even though plugin
rules were active.

Fixes https://github.com/denoland/deno/issues/28267
---
 cli/tools/lint/mod.rs                              |  8 ++++++--
 .../lint/lint_plugin_empty_tags/__test__.jsonc     |  9 +++++++++
 tests/specs/lint/lint_plugin_empty_tags/deno.json  |  9 +++++++++
 tests/specs/lint/lint_plugin_empty_tags/log.out    |  2 ++
 tests/specs/lint/lint_plugin_empty_tags/main.ts    |  1 +
 tests/specs/lint/lint_plugin_empty_tags/plugin.ts  | 14 ++++++++++++++
 6 files changed, 41 insertions(+), 2 deletions(-)
 create mode 100644 tests/specs/lint/lint_plugin_empty_tags/__test__.jsonc
 create mode 100644 tests/specs/lint/lint_plugin_empty_tags/deno.json
 create mode 100644 tests/specs/lint/lint_plugin_empty_tags/log.out
 create mode 100644 tests/specs/lint/lint_plugin_empty_tags/main.ts
 create mode 100644 tests/specs/lint/lint_plugin_empty_tags/plugin.ts

diff --git a/cli/tools/lint/mod.rs b/cli/tools/lint/mod.rs
index be6d65139786a1..468ba6a34297f1 100644
--- a/cli/tools/lint/mod.rs
+++ b/cli/tools/lint/mod.rs
@@ -18,6 +18,7 @@ use deno_config::glob::FileCollector;
 use deno_config::glob::FilePatterns;
 use deno_config::workspace::WorkspaceDirectory;
 use deno_core::anyhow::anyhow;
+use deno_core::anyhow::bail;
 use deno_core::error::AnyError;
 use deno_core::futures::future::LocalBoxFuture;
 use deno_core::futures::FutureExt;
@@ -289,10 +290,11 @@ impl WorkspaceLinter {
     let exclude = lint_options.rules.exclude.clone();
 
     let plugin_specifiers = lint_options.plugins.clone();
-    let lint_rules = self.lint_rule_provider.resolve_lint_rules_err_empty(
+    let lint_rules = self.lint_rule_provider.resolve_lint_rules(
       lint_options.rules,
       member_dir.maybe_deno_json().map(|c| c.as_ref()),
-    )?;
+    );
+
     let mut maybe_incremental_cache = None;
 
     // TODO(bartlomieju): for now we don't support incremental caching if plugins are being used.
@@ -332,6 +334,8 @@ impl WorkspaceLinter {
       )
       .await?;
       plugin_runner = Some(Arc::new(runner));
+    } else if lint_rules.rules.is_empty() {
+      bail!("No rules have been configured")
     }
 
     let linter = Arc::new(CliLinter::new(CliLinterOptions {
diff --git a/tests/specs/lint/lint_plugin_empty_tags/__test__.jsonc b/tests/specs/lint/lint_plugin_empty_tags/__test__.jsonc
new file mode 100644
index 00000000000000..ebb353da1e2a6b
--- /dev/null
+++ b/tests/specs/lint/lint_plugin_empty_tags/__test__.jsonc
@@ -0,0 +1,9 @@
+{
+  "tempDir": true,
+  "steps": [
+    {
+      "args": "lint main.ts",
+      "output": "log.out"
+    }
+  ]
+}
diff --git a/tests/specs/lint/lint_plugin_empty_tags/deno.json b/tests/specs/lint/lint_plugin_empty_tags/deno.json
new file mode 100644
index 00000000000000..9e67dd403b3a83
--- /dev/null
+++ b/tests/specs/lint/lint_plugin_empty_tags/deno.json
@@ -0,0 +1,9 @@
+{
+  "lint": {
+    "rules": {
+      "tags": [],
+      "include": ["test-plugin/my-rule"]
+    },
+    "plugins": ["./plugin.ts"]
+  }
+}
diff --git a/tests/specs/lint/lint_plugin_empty_tags/log.out b/tests/specs/lint/lint_plugin_empty_tags/log.out
new file mode 100644
index 00000000000000..2918e10591e29f
--- /dev/null
+++ b/tests/specs/lint/lint_plugin_empty_tags/log.out
@@ -0,0 +1,2 @@
+Plugin: Identifier
+Checked 1 file
diff --git a/tests/specs/lint/lint_plugin_empty_tags/main.ts b/tests/specs/lint/lint_plugin_empty_tags/main.ts
new file mode 100644
index 00000000000000..a76d1b4ed43a8b
--- /dev/null
+++ b/tests/specs/lint/lint_plugin_empty_tags/main.ts
@@ -0,0 +1 @@
+const foo = 42;
diff --git a/tests/specs/lint/lint_plugin_empty_tags/plugin.ts b/tests/specs/lint/lint_plugin_empty_tags/plugin.ts
new file mode 100644
index 00000000000000..4d68a0aefc04a4
--- /dev/null
+++ b/tests/specs/lint/lint_plugin_empty_tags/plugin.ts
@@ -0,0 +1,14 @@
+export default {
+  name: "test-plugin",
+  rules: {
+    "my-rule": {
+      create(_context) {
+        return {
+          Identifier(node) {
+            console.log("Plugin:", node.type);
+          },
+        };
+      },
+    },
+  },
+} satisfies Deno.lint.Plugin;

From 4ba166b2078a56819a9425c16a13860cc019fd07 Mon Sep 17 00:00:00 2001
From: Leo Kettmeir <crowlkats@toaxl.com>
Date: Tue, 25 Feb 2025 05:27:35 +0100
Subject: [PATCH 026/115] fix(http): generate `OtelInfo` only when otel metrics
 are enabled (#28286)

---
 cli/main.rs          |  5 ++++-
 cli/rt/main.rs       |  2 +-
 ext/http/lib.rs      | 49 ++++++++++++++++++++++++--------------------
 ext/http/service.rs  |  6 +++++-
 ext/telemetry/lib.rs | 14 ++++++++++++-
 5 files changed, 50 insertions(+), 26 deletions(-)

diff --git a/cli/main.rs b/cli/main.rs
index fa3e28e9a48ee5..9a0e4fcde6c11c 100644
--- a/cli/main.rs
+++ b/cli/main.rs
@@ -458,7 +458,10 @@ fn resolve_flags_and_init(
   };
 
   let otel_config = flags.otel_config();
-  deno_telemetry::init(deno_lib::version::otel_runtime_config(), &otel_config)?;
+  deno_telemetry::init(
+    deno_lib::version::otel_runtime_config(),
+    otel_config.clone(),
+  )?;
   init_logging(flags.log_level, Some(otel_config));
 
   // TODO(bartlomieju): remove in Deno v2.5 and hard error then.
diff --git a/cli/rt/main.rs b/cli/rt/main.rs
index 60b5a2fb961e15..076e1665b77918 100644
--- a/cli/rt/main.rs
+++ b/cli/rt/main.rs
@@ -74,7 +74,7 @@ fn main() {
       Ok(Some(data)) => {
         deno_runtime::deno_telemetry::init(
           otel_runtime_config(),
-          &data.metadata.otel_config,
+          data.metadata.otel_config.clone(),
         )?;
         init_logging(
           data.metadata.log_level,
diff --git a/ext/http/lib.rs b/ext/http/lib.rs
index 165abe17cfc80d..b3ab569baef14a 100644
--- a/ext/http/lib.rs
+++ b/ext/http/lib.rs
@@ -382,11 +382,11 @@ impl OtelInfoAttributes {
 
 impl OtelInfo {
   fn new(
+    otel: &deno_telemetry::OtelGlobals,
     instant: std::time::Instant,
     request_size: u64,
     attributes: OtelInfoAttributes,
   ) -> Self {
-    let otel = OTEL_GLOBALS.get().unwrap();
     let collectors = OTEL_COLLECTORS.get_or_init(|| {
       let meter = otel
         .meter_provider
@@ -596,7 +596,10 @@ impl HttpConnResource {
       let (request_tx, request_rx) = oneshot::channel();
       let (response_tx, response_rx) = oneshot::channel();
 
-      let otel_instant = OTEL_GLOBALS.get().map(|_| std::time::Instant::now());
+      let otel_instant = OTEL_GLOBALS
+        .get()
+        .filter(|o| o.has_metrics())
+        .map(|_| std::time::Instant::now());
 
       let acceptor = HttpAcceptor::new(request_tx, response_rx);
       self.acceptors_tx.unbounded_send(acceptor).ok()?;
@@ -615,26 +618,28 @@ impl HttpConnResource {
           .unwrap_or(Encoding::Identity)
       };
 
-      let otel_info = OTEL_GLOBALS.get().map(|_| {
-        let size_hint = request.size_hint();
-        Rc::new(RefCell::new(Some(OtelInfo::new(
-          otel_instant.unwrap(),
-          size_hint.upper().unwrap_or(size_hint.lower()),
-          OtelInfoAttributes {
-            http_request_method: OtelInfoAttributes::method_v02(
-              request.method(),
-            ),
-            url_scheme: Cow::Borrowed(self.scheme),
-            network_protocol_version: OtelInfoAttributes::version_v02(
-              request.version(),
-            ),
-            server_address: request.uri().host().map(|host| host.to_string()),
-            server_port: request.uri().port_u16().map(|port| port as i64),
-            error_type: Default::default(),
-            http_response_status_code: Default::default(),
-          },
-        ))))
-      });
+      let otel_info =
+        OTEL_GLOBALS.get().filter(|o| o.has_metrics()).map(|otel| {
+          let size_hint = request.size_hint();
+          Rc::new(RefCell::new(Some(OtelInfo::new(
+            otel,
+            otel_instant.unwrap(),
+            size_hint.upper().unwrap_or(size_hint.lower()),
+            OtelInfoAttributes {
+              http_request_method: OtelInfoAttributes::method_v02(
+                request.method(),
+              ),
+              url_scheme: Cow::Borrowed(self.scheme),
+              network_protocol_version: OtelInfoAttributes::version_v02(
+                request.version(),
+              ),
+              server_address: request.uri().host().map(|host| host.to_string()),
+              server_port: request.uri().port_u16().map(|port| port as i64),
+              error_type: Default::default(),
+              http_response_status_code: Default::default(),
+            },
+          ))))
+        });
 
       let method = request.method().to_string();
       let url = req_url(&request, self.scheme, &self.addr);
diff --git a/ext/http/service.rs b/ext/http/service.rs
index 56ed7d566e2966..be7cbcd9384638 100644
--- a/ext/http/service.rs
+++ b/ext/http/service.rs
@@ -188,10 +188,14 @@ pub(crate) async fn handle_request(
   server_state: SignallingRc<HttpServerState>, // Keep server alive for duration of this future.
   tx: tokio::sync::mpsc::Sender<Rc<HttpRecord>>,
 ) -> Result<Response, hyper_v014::Error> {
-  let otel_info = if deno_telemetry::OTEL_GLOBALS.get().is_some() {
+  let otel_info = if let Some(otel) = deno_telemetry::OTEL_GLOBALS
+    .get()
+    .filter(|o| o.has_metrics())
+  {
     let instant = std::time::Instant::now();
     let size_hint = request.size_hint();
     Some(OtelInfo::new(
+      otel,
       instant,
       size_hint.upper().unwrap_or(size_hint.lower()),
       OtelInfoAttributes {
diff --git a/ext/telemetry/lib.rs b/ext/telemetry/lib.rs
index 8b864c224e0faf..10dc8cfdd756c1 100644
--- a/ext/telemetry/lib.rs
+++ b/ext/telemetry/lib.rs
@@ -595,13 +595,24 @@ pub struct OtelGlobals {
   pub id_generator: DenoIdGenerator,
   pub meter_provider: SdkMeterProvider,
   pub builtin_instrumentation_scope: InstrumentationScope,
+  pub config: OtelConfig,
+}
+
+impl OtelGlobals {
+  pub fn has_tracing(&self) -> bool {
+    self.config.tracing_enabled
+  }
+
+  pub fn has_metrics(&self) -> bool {
+    self.config.metrics_enabled
+  }
 }
 
 pub static OTEL_GLOBALS: OnceCell<OtelGlobals> = OnceCell::new();
 
 pub fn init(
   rt_config: OtelRuntimeConfig,
-  config: &OtelConfig,
+  config: OtelConfig,
 ) -> deno_core::anyhow::Result<()> {
   // Parse the `OTEL_EXPORTER_OTLP_PROTOCOL` variable. The opentelemetry_*
   // crates don't do this automatically.
@@ -726,6 +737,7 @@ pub fn init(
       id_generator,
       meter_provider,
       builtin_instrumentation_scope,
+      config,
     })
     .map_err(|_| deno_core::anyhow::anyhow!("failed to set otel globals"))?;
 

From b9cffda7c9eb3d7a2564cbaf9411b69f8901e979 Mon Sep 17 00:00:00 2001
From: denobot <33910674+denobot@users.noreply.github.com>
Date: Tue, 25 Feb 2025 04:06:11 -0500
Subject: [PATCH 027/115] chore: forward v2.2.2 release commit to main (#28292)

This is the release commit being forwarded back to main for 2.2.2

Co-authored-by: littledivy <littledivy@users.noreply.github.com>
---
 .github/workflows/ci.generate.ts |  2 +-
 .github/workflows/ci.yml         |  8 ++--
 Cargo.lock                       | 72 ++++++++++++++++----------------
 Cargo.toml                       | 68 +++++++++++++++---------------
 Releases.md                      | 22 ++++++++++
 bench_util/Cargo.toml            |  2 +-
 cli/Cargo.toml                   |  2 +-
 cli/lib/Cargo.toml               |  2 +-
 cli/lib/version.txt              |  2 +-
 cli/rt/Cargo.toml                |  2 +-
 cli/snapshot/Cargo.toml          |  2 +-
 ext/broadcast_channel/Cargo.toml |  2 +-
 ext/cache/Cargo.toml             |  2 +-
 ext/canvas/Cargo.toml            |  2 +-
 ext/console/Cargo.toml           |  2 +-
 ext/cron/Cargo.toml              |  2 +-
 ext/crypto/Cargo.toml            |  2 +-
 ext/fetch/Cargo.toml             |  2 +-
 ext/ffi/Cargo.toml               |  2 +-
 ext/fs/Cargo.toml                |  2 +-
 ext/http/Cargo.toml              |  2 +-
 ext/io/Cargo.toml                |  2 +-
 ext/kv/Cargo.toml                |  2 +-
 ext/napi/Cargo.toml              |  2 +-
 ext/napi/sym/Cargo.toml          |  2 +-
 ext/net/Cargo.toml               |  2 +-
 ext/node/Cargo.toml              |  2 +-
 ext/os/Cargo.toml                |  2 +-
 ext/process/Cargo.toml           |  2 +-
 ext/telemetry/Cargo.toml         |  2 +-
 ext/tls/Cargo.toml               |  2 +-
 ext/url/Cargo.toml               |  2 +-
 ext/web/Cargo.toml               |  2 +-
 ext/webgpu/Cargo.toml            |  2 +-
 ext/webidl/Cargo.toml            |  2 +-
 ext/websocket/Cargo.toml         |  2 +-
 ext/webstorage/Cargo.toml        |  2 +-
 resolvers/deno/Cargo.toml        |  2 +-
 resolvers/node/Cargo.toml        |  2 +-
 resolvers/npm_cache/Cargo.toml   |  2 +-
 runtime/Cargo.toml               |  2 +-
 runtime/permissions/Cargo.toml   |  2 +-
 42 files changed, 134 insertions(+), 112 deletions(-)

diff --git a/.github/workflows/ci.generate.ts b/.github/workflows/ci.generate.ts
index e043d2e23e2f62..381e8739d74c23 100755
--- a/.github/workflows/ci.generate.ts
+++ b/.github/workflows/ci.generate.ts
@@ -5,7 +5,7 @@ import { stringify } from "jsr:@std/yaml@^0.221/stringify";
 // Bump this number when you want to purge the cache.
 // Note: the tools/release/01_bump_crate_versions.ts script will update this version
 // automatically via regex, so ensure that this line maintains this format.
-const cacheVersion = 42;
+const cacheVersion = 43;
 
 const ubuntuX86Runner = "ubuntu-24.04";
 const ubuntuX86XlRunner = "ubuntu-24.04-xl";
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index ef4512c969ff50..8082c606f24f7b 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -184,8 +184,8 @@ jobs:
             ~/.cargo/registry/index
             ~/.cargo/registry/cache
             ~/.cargo/git/db
-          key: '42-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-${{ hashFiles(''Cargo.lock'') }}'
-          restore-keys: '42-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-'
+          key: '43-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-${{ hashFiles(''Cargo.lock'') }}'
+          restore-keys: '43-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-'
         if: '!(matrix.skip)'
       - uses: dsherret/rust-toolchain-file@v1
         if: '!(matrix.skip)'
@@ -381,7 +381,7 @@ jobs:
             !./target/*/*.zip
             !./target/*/*.tar.gz
           key: never_saved
-          restore-keys: '42-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-'
+          restore-keys: '43-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-'
       - name: Apply and update mtime cache
         if: '!(matrix.skip) && (!startsWith(github.ref, ''refs/tags/''))'
         uses: ./.github/mtime_cache
@@ -699,7 +699,7 @@ jobs:
             !./target/*/gn_root
             !./target/*/*.zip
             !./target/*/*.tar.gz
-          key: '42-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-${{ github.sha }}'
+          key: '43-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-${{ github.sha }}'
   wasm:
     name: build wasm32
     needs:
diff --git a/Cargo.lock b/Cargo.lock
index 35b3c8f575c11b..8b897f06be5205 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1446,7 +1446,7 @@ dependencies = [
 
 [[package]]
 name = "deno"
-version = "2.2.1"
+version = "2.2.2"
 dependencies = [
  "anstream",
  "async-trait",
@@ -1627,7 +1627,7 @@ dependencies = [
 
 [[package]]
 name = "deno_bench_util"
-version = "0.186.0"
+version = "0.187.0"
 dependencies = [
  "bencher",
  "deno_core",
@@ -1636,7 +1636,7 @@ dependencies = [
 
 [[package]]
 name = "deno_broadcast_channel"
-version = "0.186.0"
+version = "0.187.0"
 dependencies = [
  "async-trait",
  "deno_core",
@@ -1648,7 +1648,7 @@ dependencies = [
 
 [[package]]
 name = "deno_cache"
-version = "0.124.0"
+version = "0.125.0"
 dependencies = [
  "async-stream",
  "async-trait",
@@ -1704,7 +1704,7 @@ dependencies = [
 
 [[package]]
 name = "deno_canvas"
-version = "0.61.0"
+version = "0.62.0"
 dependencies = [
  "bytemuck",
  "deno_core",
@@ -1744,7 +1744,7 @@ dependencies = [
 
 [[package]]
 name = "deno_console"
-version = "0.192.0"
+version = "0.193.0"
 dependencies = [
  "deno_core",
 ]
@@ -1796,7 +1796,7 @@ checksum = "fe4dccb6147bb3f3ba0c7a48e993bfeb999d2c2e47a81badee80e2b370c8d695"
 
 [[package]]
 name = "deno_cron"
-version = "0.72.0"
+version = "0.73.0"
 dependencies = [
  "async-trait",
  "chrono",
@@ -1809,7 +1809,7 @@ dependencies = [
 
 [[package]]
 name = "deno_crypto"
-version = "0.206.0"
+version = "0.207.0"
 dependencies = [
  "aes",
  "aes-gcm",
@@ -1900,7 +1900,7 @@ dependencies = [
 
 [[package]]
 name = "deno_fetch"
-version = "0.216.0"
+version = "0.217.0"
 dependencies = [
  "base64 0.21.7",
  "bytes",
@@ -1938,7 +1938,7 @@ dependencies = [
 
 [[package]]
 name = "deno_ffi"
-version = "0.179.0"
+version = "0.180.0"
 dependencies = [
  "cranelift",
  "cranelift-native",
@@ -1961,7 +1961,7 @@ dependencies = [
 
 [[package]]
 name = "deno_fs"
-version = "0.102.0"
+version = "0.103.0"
 dependencies = [
  "async-trait",
  "base32",
@@ -2019,7 +2019,7 @@ dependencies = [
 
 [[package]]
 name = "deno_http"
-version = "0.190.0"
+version = "0.191.0"
 dependencies = [
  "async-compression",
  "async-trait",
@@ -2060,7 +2060,7 @@ dependencies = [
 
 [[package]]
 name = "deno_io"
-version = "0.102.0"
+version = "0.103.0"
 dependencies = [
  "async-trait",
  "deno_core",
@@ -2082,7 +2082,7 @@ dependencies = [
 
 [[package]]
 name = "deno_kv"
-version = "0.100.0"
+version = "0.101.0"
 dependencies = [
  "anyhow",
  "async-trait",
@@ -2113,7 +2113,7 @@ dependencies = [
 
 [[package]]
 name = "deno_lib"
-version = "0.8.0"
+version = "0.9.0"
 dependencies = [
  "capacity_builder 0.5.0",
  "deno_error",
@@ -2186,7 +2186,7 @@ dependencies = [
 
 [[package]]
 name = "deno_napi"
-version = "0.123.0"
+version = "0.124.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2215,7 +2215,7 @@ dependencies = [
 
 [[package]]
 name = "deno_net"
-version = "0.184.0"
+version = "0.185.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2237,7 +2237,7 @@ dependencies = [
 
 [[package]]
 name = "deno_node"
-version = "0.130.0"
+version = "0.131.0"
 dependencies = [
  "aead-gcm-stream",
  "aes",
@@ -2344,7 +2344,7 @@ dependencies = [
 
 [[package]]
 name = "deno_npm_cache"
-version = "0.11.0"
+version = "0.12.0"
 dependencies = [
  "async-trait",
  "base64 0.21.7",
@@ -2391,7 +2391,7 @@ dependencies = [
 
 [[package]]
 name = "deno_os"
-version = "0.9.0"
+version = "0.10.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2443,7 +2443,7 @@ dependencies = [
 
 [[package]]
 name = "deno_permissions"
-version = "0.51.0"
+version = "0.52.0"
 dependencies = [
  "capacity_builder 0.5.0",
  "deno_core",
@@ -2463,7 +2463,7 @@ dependencies = [
 
 [[package]]
 name = "deno_process"
-version = "0.7.0"
+version = "0.8.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2490,7 +2490,7 @@ dependencies = [
 
 [[package]]
 name = "deno_resolver"
-version = "0.23.0"
+version = "0.24.0"
 dependencies = [
  "anyhow",
  "async-once-cell",
@@ -2524,7 +2524,7 @@ dependencies = [
 
 [[package]]
 name = "deno_runtime"
-version = "0.200.0"
+version = "0.201.0"
 dependencies = [
  "color-print",
  "deno_ast",
@@ -2605,7 +2605,7 @@ dependencies = [
 
 [[package]]
 name = "deno_snapshots"
-version = "0.7.0"
+version = "0.8.0"
 dependencies = [
  "deno_runtime",
 ]
@@ -2630,7 +2630,7 @@ dependencies = [
 
 [[package]]
 name = "deno_telemetry"
-version = "0.14.0"
+version = "0.15.0"
 dependencies = [
  "async-trait",
  "deno_core",
@@ -2675,7 +2675,7 @@ dependencies = [
 
 [[package]]
 name = "deno_tls"
-version = "0.179.0"
+version = "0.180.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2726,7 +2726,7 @@ dependencies = [
 
 [[package]]
 name = "deno_url"
-version = "0.192.0"
+version = "0.193.0"
 dependencies = [
  "deno_bench_util",
  "deno_console",
@@ -2738,7 +2738,7 @@ dependencies = [
 
 [[package]]
 name = "deno_web"
-version = "0.223.0"
+version = "0.224.0"
 dependencies = [
  "async-trait",
  "base64-simd 0.8.0",
@@ -2761,7 +2761,7 @@ dependencies = [
 
 [[package]]
 name = "deno_webgpu"
-version = "0.159.0"
+version = "0.160.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2778,7 +2778,7 @@ dependencies = [
 
 [[package]]
 name = "deno_webidl"
-version = "0.192.0"
+version = "0.193.0"
 dependencies = [
  "deno_bench_util",
  "deno_core",
@@ -2786,7 +2786,7 @@ dependencies = [
 
 [[package]]
 name = "deno_websocket"
-version = "0.197.0"
+version = "0.198.0"
 dependencies = [
  "bytes",
  "deno_core",
@@ -2809,7 +2809,7 @@ dependencies = [
 
 [[package]]
 name = "deno_webstorage"
-version = "0.187.0"
+version = "0.188.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2896,7 +2896,7 @@ dependencies = [
 
 [[package]]
 name = "denort"
-version = "2.2.1"
+version = "2.2.2"
 dependencies = [
  "async-trait",
  "bincode",
@@ -5450,7 +5450,7 @@ dependencies = [
 
 [[package]]
 name = "napi_sym"
-version = "0.122.0"
+version = "0.123.0"
 dependencies = [
  "quote",
  "serde",
@@ -5505,7 +5505,7 @@ dependencies = [
 
 [[package]]
 name = "node_resolver"
-version = "0.30.0"
+version = "0.31.0"
 dependencies = [
  "anyhow",
  "async-trait",
diff --git a/Cargo.toml b/Cargo.toml
index 09f344c88442c5..9948e193b783a9 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -53,17 +53,17 @@ repository = "https://github.com/denoland/deno"
 deno_ast = { version = "=0.45.1", features = ["transpiling"] }
 deno_core = { version = "0.338.0" }
 
-deno_bench_util = { version = "0.186.0", path = "./bench_util" }
+deno_bench_util = { version = "0.187.0", path = "./bench_util" }
 deno_config = { version = "=0.50.0", features = ["workspace"] }
 deno_lockfile = "=0.24.0"
 deno_media_type = { version = "=0.2.6", features = ["module_specifier"] }
 deno_npm = "=0.27.2"
 deno_path_util = "=0.3.2"
-deno_permissions = { version = "0.51.0", path = "./runtime/permissions" }
-deno_runtime = { version = "0.200.0", path = "./runtime" }
+deno_permissions = { version = "0.52.0", path = "./runtime/permissions" }
+deno_runtime = { version = "0.201.0", path = "./runtime" }
 deno_semver = "=0.7.1"
 deno_terminal = "0.2.0"
-napi_sym = { version = "0.122.0", path = "./ext/napi/sym" }
+napi_sym = { version = "0.123.0", path = "./ext/napi/sym" }
 test_util = { package = "test_server", path = "./tests/util/server" }
 
 denokv_proto = "0.9.0"
@@ -72,38 +72,38 @@ denokv_remote = "0.9.0"
 denokv_sqlite = { default-features = false, version = "0.9.0" }
 
 # exts
-deno_broadcast_channel = { version = "0.186.0", path = "./ext/broadcast_channel" }
-deno_cache = { version = "0.124.0", path = "./ext/cache" }
-deno_canvas = { version = "0.61.0", path = "./ext/canvas" }
-deno_console = { version = "0.192.0", path = "./ext/console" }
-deno_cron = { version = "0.72.0", path = "./ext/cron" }
-deno_crypto = { version = "0.206.0", path = "./ext/crypto" }
-deno_fetch = { version = "0.216.0", path = "./ext/fetch" }
-deno_ffi = { version = "0.179.0", path = "./ext/ffi" }
-deno_fs = { version = "0.102.0", path = "./ext/fs" }
-deno_http = { version = "0.190.0", path = "./ext/http" }
-deno_io = { version = "0.102.0", path = "./ext/io" }
-deno_kv = { version = "0.100.0", path = "./ext/kv" }
-deno_napi = { version = "0.123.0", path = "./ext/napi" }
-deno_net = { version = "0.184.0", path = "./ext/net" }
-deno_node = { version = "0.130.0", path = "./ext/node" }
-deno_os = { version = "0.9.0", path = "./ext/os" }
-deno_process = { version = "0.7.0", path = "./ext/process" }
-deno_telemetry = { version = "0.14.0", path = "./ext/telemetry" }
-deno_tls = { version = "0.179.0", path = "./ext/tls" }
-deno_url = { version = "0.192.0", path = "./ext/url" }
-deno_web = { version = "0.223.0", path = "./ext/web" }
-deno_webgpu = { version = "0.159.0", path = "./ext/webgpu" }
-deno_webidl = { version = "0.192.0", path = "./ext/webidl" }
-deno_websocket = { version = "0.197.0", path = "./ext/websocket" }
-deno_webstorage = { version = "0.187.0", path = "./ext/webstorage" }
+deno_broadcast_channel = { version = "0.187.0", path = "./ext/broadcast_channel" }
+deno_cache = { version = "0.125.0", path = "./ext/cache" }
+deno_canvas = { version = "0.62.0", path = "./ext/canvas" }
+deno_console = { version = "0.193.0", path = "./ext/console" }
+deno_cron = { version = "0.73.0", path = "./ext/cron" }
+deno_crypto = { version = "0.207.0", path = "./ext/crypto" }
+deno_fetch = { version = "0.217.0", path = "./ext/fetch" }
+deno_ffi = { version = "0.180.0", path = "./ext/ffi" }
+deno_fs = { version = "0.103.0", path = "./ext/fs" }
+deno_http = { version = "0.191.0", path = "./ext/http" }
+deno_io = { version = "0.103.0", path = "./ext/io" }
+deno_kv = { version = "0.101.0", path = "./ext/kv" }
+deno_napi = { version = "0.124.0", path = "./ext/napi" }
+deno_net = { version = "0.185.0", path = "./ext/net" }
+deno_node = { version = "0.131.0", path = "./ext/node" }
+deno_os = { version = "0.10.0", path = "./ext/os" }
+deno_process = { version = "0.8.0", path = "./ext/process" }
+deno_telemetry = { version = "0.15.0", path = "./ext/telemetry" }
+deno_tls = { version = "0.180.0", path = "./ext/tls" }
+deno_url = { version = "0.193.0", path = "./ext/url" }
+deno_web = { version = "0.224.0", path = "./ext/web" }
+deno_webgpu = { version = "0.160.0", path = "./ext/webgpu" }
+deno_webidl = { version = "0.193.0", path = "./ext/webidl" }
+deno_websocket = { version = "0.198.0", path = "./ext/websocket" }
+deno_webstorage = { version = "0.188.0", path = "./ext/webstorage" }
 
 # workspace libraries
-deno_lib = { version = "0.8.0", path = "./cli/lib" }
-deno_npm_cache = { version = "0.11.0", path = "./resolvers/npm_cache" }
-deno_resolver = { version = "0.23.0", path = "./resolvers/deno" }
-deno_snapshots = { version = "0.7.0", path = "./cli/snapshot" }
-node_resolver = { version = "0.30.0", path = "./resolvers/node" }
+deno_lib = { version = "0.9.0", path = "./cli/lib" }
+deno_npm_cache = { version = "0.12.0", path = "./resolvers/npm_cache" }
+deno_resolver = { version = "0.24.0", path = "./resolvers/deno" }
+deno_snapshots = { version = "0.8.0", path = "./cli/snapshot" }
+node_resolver = { version = "0.31.0", path = "./resolvers/node" }
 
 aes = "=0.8.3"
 anyhow = "1.0.57"
diff --git a/Releases.md b/Releases.md
index 9ff29113804afb..d6e52a345ffaf9 100644
--- a/Releases.md
+++ b/Releases.md
@@ -6,6 +6,28 @@ https://github.com/denoland/deno/releases
 We also have one-line install commands at:
 https://github.com/denoland/deno_install
 
+### 2.2.2 / 2025.02.25
+
+- fix(check): regression - implicit jsxImportSource was not resolving (#28228)
+- fix(cli): add `compilerOptions.lib` examples to config-file.v1.json (#28226)
+- fix(config): allow specifying absolute path for patch and fix panic with
+  exports in package.json (#28279)
+- fix(ext/node): decipherIv() range error on invalid final block length (#28215)
+- fix(ext/node): descriptive sqlite error messages (#28272)
+- fix(fmt): support "--ext vto" and "--ext njk" (#28262)
+- fix(http): generate `OtelInfo` only when otel metrics are enabled (#28286)
+- fix(install): don't error on unknown media types in install (#28234)
+- fix(lint): don't recurse infinitely for large ASTs (#28265)
+- fix(lint): give access to SourceCode in 'deno test' (#28278)
+- fix(lint): plugins ignored when no rust rule active (#28269)
+- fix(lint): update deno_lint (#28271)
+- fix(lsp): close server on exit notification (#28232)
+- fix(lsp): create cacheable `ExportInfoMap` per language service (#28240)
+- fix(unstable): lint plugin `:exit` called at wrong time (#28229)
+- fix: add info suggestion for `unsafely-ignore-certificate-errors` and add
+  `--help=full` (#28203)
+- perf(install): only read initialized file if we care about the tags (#28242)
+
 ### 2.2.1 / 2025.02.20
 
 - fix(check): remove instability in loading lib files (#28202)
diff --git a/bench_util/Cargo.toml b/bench_util/Cargo.toml
index 630a0d90c40c1d..27dc2f4b3957d7 100644
--- a/bench_util/Cargo.toml
+++ b/bench_util/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_bench_util"
-version = "0.186.0"
+version = "0.187.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index d1e8fb71ea307d..0e67d2bdbdc001 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno"
-version = "2.2.1"
+version = "2.2.2"
 authors.workspace = true
 default-run = "deno"
 edition.workspace = true
diff --git a/cli/lib/Cargo.toml b/cli/lib/Cargo.toml
index ba4ce1f4a3a710..e053b3912013dc 100644
--- a/cli/lib/Cargo.toml
+++ b/cli/lib/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_lib"
-version = "0.8.0"
+version = "0.9.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/cli/lib/version.txt b/cli/lib/version.txt
index fae692e41d4f76..7e541aec69b34f 100644
--- a/cli/lib/version.txt
+++ b/cli/lib/version.txt
@@ -1 +1 @@
-2.2.1
\ No newline at end of file
+2.2.2
\ No newline at end of file
diff --git a/cli/rt/Cargo.toml b/cli/rt/Cargo.toml
index 1e66cd204128d3..55e1eceb6782f9 100644
--- a/cli/rt/Cargo.toml
+++ b/cli/rt/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "denort"
-version = "2.2.1"
+version = "2.2.2"
 authors.workspace = true
 default-run = "denort"
 edition.workspace = true
diff --git a/cli/snapshot/Cargo.toml b/cli/snapshot/Cargo.toml
index 910447144d15b6..d644cbc4bc53aa 100644
--- a/cli/snapshot/Cargo.toml
+++ b/cli/snapshot/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_snapshots"
-version = "0.7.0"
+version = "0.8.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/broadcast_channel/Cargo.toml b/ext/broadcast_channel/Cargo.toml
index 3361e74e31f0e0..7a5bd33404c83b 100644
--- a/ext/broadcast_channel/Cargo.toml
+++ b/ext/broadcast_channel/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_broadcast_channel"
-version = "0.186.0"
+version = "0.187.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/cache/Cargo.toml b/ext/cache/Cargo.toml
index bf871ed43e509d..1142fb33dd1bb8 100644
--- a/ext/cache/Cargo.toml
+++ b/ext/cache/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_cache"
-version = "0.124.0"
+version = "0.125.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/canvas/Cargo.toml b/ext/canvas/Cargo.toml
index 7aa12ec4e81612..76fad0b9feb8f7 100644
--- a/ext/canvas/Cargo.toml
+++ b/ext/canvas/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_canvas"
-version = "0.61.0"
+version = "0.62.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/console/Cargo.toml b/ext/console/Cargo.toml
index d791464caa51dc..aa2386bb077201 100644
--- a/ext/console/Cargo.toml
+++ b/ext/console/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_console"
-version = "0.192.0"
+version = "0.193.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/cron/Cargo.toml b/ext/cron/Cargo.toml
index f6a4a6b4bb2cf9..459682d9c1b0d7 100644
--- a/ext/cron/Cargo.toml
+++ b/ext/cron/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_cron"
-version = "0.72.0"
+version = "0.73.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/crypto/Cargo.toml b/ext/crypto/Cargo.toml
index 44011ae8dcecb1..1e8eaf2de15486 100644
--- a/ext/crypto/Cargo.toml
+++ b/ext/crypto/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_crypto"
-version = "0.206.0"
+version = "0.207.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/fetch/Cargo.toml b/ext/fetch/Cargo.toml
index 669f2cbd68f10a..72d4da049fdc1a 100644
--- a/ext/fetch/Cargo.toml
+++ b/ext/fetch/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_fetch"
-version = "0.216.0"
+version = "0.217.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/ffi/Cargo.toml b/ext/ffi/Cargo.toml
index ddbad91d2f8b59..471afc4359eebe 100644
--- a/ext/ffi/Cargo.toml
+++ b/ext/ffi/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_ffi"
-version = "0.179.0"
+version = "0.180.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/fs/Cargo.toml b/ext/fs/Cargo.toml
index 6859edfe2b0b05..d999e0f5ded1d0 100644
--- a/ext/fs/Cargo.toml
+++ b/ext/fs/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_fs"
-version = "0.102.0"
+version = "0.103.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/http/Cargo.toml b/ext/http/Cargo.toml
index 08cfd8f6b7b94c..803736b4d97b78 100644
--- a/ext/http/Cargo.toml
+++ b/ext/http/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_http"
-version = "0.190.0"
+version = "0.191.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/io/Cargo.toml b/ext/io/Cargo.toml
index 5213d14e2d29d8..84992cfcaa25d8 100644
--- a/ext/io/Cargo.toml
+++ b/ext/io/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_io"
-version = "0.102.0"
+version = "0.103.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/kv/Cargo.toml b/ext/kv/Cargo.toml
index 46db1f541f3a58..e5c69a827bee91 100644
--- a/ext/kv/Cargo.toml
+++ b/ext/kv/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_kv"
-version = "0.100.0"
+version = "0.101.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/napi/Cargo.toml b/ext/napi/Cargo.toml
index a302cc7fd0b490..a57e51457017e5 100644
--- a/ext/napi/Cargo.toml
+++ b/ext/napi/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_napi"
-version = "0.123.0"
+version = "0.124.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/napi/sym/Cargo.toml b/ext/napi/sym/Cargo.toml
index ba0aef01920004..eae76d7f85032a 100644
--- a/ext/napi/sym/Cargo.toml
+++ b/ext/napi/sym/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "napi_sym"
-version = "0.122.0"
+version = "0.123.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/net/Cargo.toml b/ext/net/Cargo.toml
index 4730ee196bf186..ae318a4bea62c4 100644
--- a/ext/net/Cargo.toml
+++ b/ext/net/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_net"
-version = "0.184.0"
+version = "0.185.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/node/Cargo.toml b/ext/node/Cargo.toml
index 4c3efe189a1817..d7e018073ca9cc 100644
--- a/ext/node/Cargo.toml
+++ b/ext/node/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_node"
-version = "0.130.0"
+version = "0.131.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/os/Cargo.toml b/ext/os/Cargo.toml
index 37006f814a797e..4c620c9da4304a 100644
--- a/ext/os/Cargo.toml
+++ b/ext/os/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_os"
-version = "0.9.0"
+version = "0.10.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/process/Cargo.toml b/ext/process/Cargo.toml
index 127ae4191a5563..bffb6915f4dd5a 100644
--- a/ext/process/Cargo.toml
+++ b/ext/process/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_process"
-version = "0.7.0"
+version = "0.8.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/telemetry/Cargo.toml b/ext/telemetry/Cargo.toml
index e26b7f0d96bdb3..a3b8e5640e23e6 100644
--- a/ext/telemetry/Cargo.toml
+++ b/ext/telemetry/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_telemetry"
-version = "0.14.0"
+version = "0.15.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/tls/Cargo.toml b/ext/tls/Cargo.toml
index 54d23958946d76..e9544211f2d63e 100644
--- a/ext/tls/Cargo.toml
+++ b/ext/tls/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_tls"
-version = "0.179.0"
+version = "0.180.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/url/Cargo.toml b/ext/url/Cargo.toml
index 998080e9c3ff05..e9140986526e93 100644
--- a/ext/url/Cargo.toml
+++ b/ext/url/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_url"
-version = "0.192.0"
+version = "0.193.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/web/Cargo.toml b/ext/web/Cargo.toml
index d4156a286a8aa1..72b6eca5b68021 100644
--- a/ext/web/Cargo.toml
+++ b/ext/web/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_web"
-version = "0.223.0"
+version = "0.224.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/webgpu/Cargo.toml b/ext/webgpu/Cargo.toml
index 1f9f1faee30444..817cb59c8a23fe 100644
--- a/ext/webgpu/Cargo.toml
+++ b/ext/webgpu/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_webgpu"
-version = "0.159.0"
+version = "0.160.0"
 authors = ["the Deno authors"]
 edition.workspace = true
 license = "MIT"
diff --git a/ext/webidl/Cargo.toml b/ext/webidl/Cargo.toml
index 4056f4e802aa99..6d221bad7bf1c7 100644
--- a/ext/webidl/Cargo.toml
+++ b/ext/webidl/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_webidl"
-version = "0.192.0"
+version = "0.193.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/websocket/Cargo.toml b/ext/websocket/Cargo.toml
index a6c3354b67ebc1..446167fb6610f1 100644
--- a/ext/websocket/Cargo.toml
+++ b/ext/websocket/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_websocket"
-version = "0.197.0"
+version = "0.198.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/webstorage/Cargo.toml b/ext/webstorage/Cargo.toml
index 477a96c3f69d76..5c7abcd8170562 100644
--- a/ext/webstorage/Cargo.toml
+++ b/ext/webstorage/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_webstorage"
-version = "0.187.0"
+version = "0.188.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/resolvers/deno/Cargo.toml b/resolvers/deno/Cargo.toml
index 8d9c3681e13c48..bd9e9b5f2eae09 100644
--- a/resolvers/deno/Cargo.toml
+++ b/resolvers/deno/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_resolver"
-version = "0.23.0"
+version = "0.24.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/resolvers/node/Cargo.toml b/resolvers/node/Cargo.toml
index a20d4d9e813f6c..8caa88bca0ce8b 100644
--- a/resolvers/node/Cargo.toml
+++ b/resolvers/node/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "node_resolver"
-version = "0.30.0"
+version = "0.31.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/resolvers/npm_cache/Cargo.toml b/resolvers/npm_cache/Cargo.toml
index 027c741e89cdc7..13e61b40690bec 100644
--- a/resolvers/npm_cache/Cargo.toml
+++ b/resolvers/npm_cache/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_npm_cache"
-version = "0.11.0"
+version = "0.12.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml
index d0df4fadc6995e..cc1ed9b3099f92 100644
--- a/runtime/Cargo.toml
+++ b/runtime/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_runtime"
-version = "0.200.0"
+version = "0.201.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/runtime/permissions/Cargo.toml b/runtime/permissions/Cargo.toml
index 8d5919af22c190..8b407bd491fe3d 100644
--- a/runtime/permissions/Cargo.toml
+++ b/runtime/permissions/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_permissions"
-version = "0.51.0"
+version = "0.52.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true

From e66ef32a8f55b0ac8388542c447e383cfb611f23 Mon Sep 17 00:00:00 2001
From: Divy Srivastava <dj.srivastava23@gmail.com>
Date: Tue, 25 Feb 2025 19:27:55 +0530
Subject: [PATCH 028/115] fix(ext/node): SQLite reset guards to prevent
 database locks (#28298)

Fixes https://github.com/denoland/deno/issues/28295
---
 ext/node/ops/sqlite/statement.rs | 19 +++++++++++++++----
 tests/unit_node/sqlite_test.ts   | 14 ++++++++++++++
 2 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/ext/node/ops/sqlite/statement.rs b/ext/node/ops/sqlite/statement.rs
index ebe759a7dc99d2..46198dbafd87bd 100644
--- a/ext/node/ops/sqlite/statement.rs
+++ b/ext/node/ops/sqlite/statement.rs
@@ -391,6 +391,14 @@ impl StatementSync {
   }
 }
 
+struct ResetGuard<'a>(&'a StatementSync);
+
+impl<'a> Drop for ResetGuard<'a> {
+  fn drop(&mut self) {
+    let _ = self.0.reset();
+  }
+}
+
 // Represents a single prepared statement. Cannot be initialized directly via constructor.
 // Instances are created using `DatabaseSync#prepare`.
 //
@@ -416,6 +424,8 @@ impl StatementSync {
 
     self.bind_params(scope, params)?;
 
+    let _reset = ResetGuard(self);
+
     let entry = self.read_row(scope)?;
     let result = entry
       .map(|r| r.into())
@@ -438,9 +448,10 @@ impl StatementSync {
     let db = db.as_ref().ok_or(SqliteError::InUse)?;
 
     self.bind_params(scope, params)?;
-    self.step()?;
 
-    self.reset()?;
+    let _reset = ResetGuard(self);
+
+    self.step()?;
 
     Ok(RunStatementResult {
       last_insert_rowid: db.last_insert_rowid(),
@@ -460,12 +471,12 @@ impl StatementSync {
     let mut arr = vec![];
 
     self.bind_params(scope, params)?;
+
+    let _reset = ResetGuard(self);
     while let Some(result) = self.read_row(scope)? {
       arr.push(result.into());
     }
 
-    self.reset()?;
-
     let arr = v8::Array::new_with_elements(scope, &arr);
     Ok(arr)
   }
diff --git a/tests/unit_node/sqlite_test.ts b/tests/unit_node/sqlite_test.ts
index 0ece60a0805cd4..83996301bb9a54 100644
--- a/tests/unit_node/sqlite_test.ts
+++ b/tests/unit_node/sqlite_test.ts
@@ -272,3 +272,17 @@ Deno.test("[node/sqlite] error message", () => {
     "NOT NULL constraint failed: foo.b",
   );
 });
+
+// https://github.com/denoland/deno/issues/28295
+Deno.test("[node/sqlite] StatementSync reset guards don't lock db", () => {
+  const db = new DatabaseSync(":memory:");
+
+  db.exec("CREATE TABLE foo(a integer, b text)");
+  db.exec("CREATE TABLE bar(a integer, b text)");
+
+  const stmt = db.prepare("SELECT name FROM sqlite_master WHERE type='table' ");
+
+  assertEquals(stmt.get(), { name: "foo", __proto__: null });
+
+  db.exec("DROP TABLE IF EXISTS foo");
+});

From ee4c14a550ff65d1982425922cf116cda0066954 Mon Sep 17 00:00:00 2001
From: Nathan Whitaker <17734409+nathanwhit@users.noreply.github.com>
Date: Tue, 25 Feb 2025 08:50:01 -0800
Subject: [PATCH 029/115] chore: update to rust 1.85 (#28236)

Updates to use rust 1.85. Doesn't move to the 2024 edition, as that's a
fair bit more involved.

A nice side benefit is that the new rustc version seems to lead to a
slight reduction in binary size (at least on mac):

```
    FILE SIZE
 --------------
  +4.3%  +102Ki    __DATA_CONST,__const
  [NEW] +69.3Ki    __TEXT,__literals
  [NEW] +68.5Ki    Rebase Info
  +5.0% +39.9Ki    __TEXT,__unwind_info
   +57% +8.85Ki    [__TEXT]
  [NEW] +8.59Ki    Lazy Binding Info
  [NEW] +5.16Ki    __TEXT,__stub_helper
  [NEW] +3.58Ki    Export Info
  [NEW] +3.42Ki    __DATA,__la_symbol_ptr
  -0.1%    -726    [12 Others]
 -21.4% -3.10Ki    [__DATA_CONST]
 -95.8% -3.39Ki    __DATA_CONST,__got
 -20.9% -3.43Ki    [__DATA]
  -0.5% -4.52Ki    Code Signature
 -100.0% -11.6Ki    [__LINKEDIT]
  -1.0% -43.5Ki    Symbol Table
  -1.6% -44.0Ki    __TEXT,__gcc_except_tab
  -0.2% -48.1Ki    __TEXT,__const
  -3.3% -78.6Ki    __TEXT,__eh_frame
  -0.7%  -320Ki    __TEXT,__text
  -1.5%  -334Ki    String Table
  -0.5%  -586Ki    TOTAL
```
---
 Cargo.lock                                    |  2 +-
 cli/args/flags.rs                             |  2 +-
 cli/args/lockfile.rs                          |  4 +-
 cli/build.rs                                  |  2 +-
 cli/cache/module_info.rs                      |  4 +-
 cli/emit.rs                                   |  2 +-
 cli/graph_container.rs                        |  2 +-
 cli/graph_util.rs                             | 12 ++---
 cli/lsp/documents.rs                          |  4 +-
 cli/lsp/language_server.rs                    |  1 +
 cli/lsp/resolver.rs                           |  2 +-
 cli/lsp/tsc.rs                                |  5 +-
 cli/npm/installer/common/bin_entries.rs       |  2 +-
 cli/npm/installer/global.rs                   |  4 +-
 cli/npm/installer/local.rs                    |  8 +--
 cli/npm/installer/mod.rs                      |  4 +-
 cli/rt/binary.rs                              |  2 +
 cli/standalone/binary.rs                      |  2 +-
 cli/standalone/virtual_fs.rs                  |  6 +--
 cli/tools/bench/mitata.rs                     | 10 ++--
 cli/tools/coverage/merge.rs                   |  4 +-
 cli/tools/coverage/mod.rs                     |  5 +-
 cli/tools/coverage/range_tree.rs              |  2 +-
 cli/tools/coverage/reporter.rs                |  2 +-
 cli/tools/lint/mod.rs                         |  4 +-
 cli/tools/lint/rules/no_sloppy_imports.rs     |  2 +-
 cli/tools/pm/deps.rs                          |  4 +-
 cli/tools/pm/mod.rs                           |  6 +--
 cli/tools/publish/mod.rs                      |  2 +-
 cli/tools/run/hmr.rs                          |  2 +-
 cli/type_checker.rs                           |  6 +--
 cli/util/extract.rs                           |  2 +-
 cli/util/fs.rs                                |  3 +-
 cli/util/path.rs                              |  4 +-
 cli/util/sync/task_queue.rs                   |  4 +-
 cli/worker.rs                                 |  2 +-
 ext/fetch/proxy.rs                            |  2 +-
 ext/ffi/repr.rs                               |  1 +
 ext/fs/std_fs.rs                              |  9 ++--
 ext/http/service.rs                           |  4 +-
 ext/http/websocket_upgrade.rs                 |  2 +-
 ext/io/lib.rs                                 |  8 +--
 ext/napi/lib.rs                               | 16 +++---
 ext/napi/util.rs                              |  2 +-
 ext/node/lib.rs                               |  2 +-
 ext/node/ops/crypto/keys.rs                   |  2 +-
 ext/node/ops/crypto/mod.rs                    |  6 +--
 ext/node/ops/ipc.rs                           |  2 +-
 ext/node/ops/os/cpus.rs                       |  6 +--
 ext/node/ops/v8.rs                            |  4 +-
 ext/os/sys_info.rs                            |  2 +-
 ext/telemetry/lib.rs                          |  3 +-
 ext/web/blob.rs                               |  6 +--
 resolvers/deno/npm/mod.rs                     |  2 +-
 resolvers/node/analyze.rs                     |  1 +
 runtime/permissions/lib.rs                    |  2 +-
 rust-toolchain.toml                           |  2 +-
 tests/ffi/src/lib.rs                          | 51 ++++++++-----------
 .../__test__.jsonc                            |  2 +-
 tests/unit/rename_test.ts                     | 19 +++----
 tests/util/server/src/lib.rs                  |  2 +-
 tests/util/server/src/lsp.rs                  |  7 +--
 tests/util/server/src/pty.rs                  |  1 +
 tests/util/server/src/servers/hyper_utils.rs  |  2 +-
 tests/util/server/src/servers/mod.rs          | 30 +++++------
 tests/util/server/src/servers/npm_registry.rs |  2 +-
 66 files changed, 158 insertions(+), 176 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 8b897f06be5205..13a1f42a7e6a59 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1,6 +1,6 @@
 # This file is automatically @generated by Cargo.
 # It is not intended for manual editing.
-version = 3
+version = 4
 
 [[package]]
 name = "Inflector"
diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index d94d9cf480f793..331117e1565602 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -1428,7 +1428,7 @@ fn enable_unstable(command: Command) -> Command {
 fn enable_full(command: Command) -> Command {
   command.mut_args(|arg| {
     let long_help = arg.get_long_help();
-    if !long_help.is_some_and(|s| s.to_string() == "false") {
+    if long_help.is_none_or(|s| s.to_string() != "false") {
       arg.hide(false)
     } else {
       arg
diff --git a/cli/args/lockfile.rs b/cli/args/lockfile.rs
index 5fa6a49c43a6d2..74d347c1bd826b 100644
--- a/cli/args/lockfile.rs
+++ b/cli/args/lockfile.rs
@@ -46,7 +46,7 @@ pub struct Guard<'a, T> {
   guard: MutexGuard<'a, T>,
 }
 
-impl<'a, T> std::ops::Deref for Guard<'a, T> {
+impl<T> std::ops::Deref for Guard<'_, T> {
   type Target = T;
 
   fn deref(&self) -> &Self::Target {
@@ -54,7 +54,7 @@ impl<'a, T> std::ops::Deref for Guard<'a, T> {
   }
 }
 
-impl<'a, T> std::ops::DerefMut for Guard<'a, T> {
+impl<T> std::ops::DerefMut for Guard<'_, T> {
   fn deref_mut(&mut self) -> &mut Self::Target {
     &mut self.guard
   }
diff --git a/cli/build.rs b/cli/build.rs
index 85b0dbc805122a..9c50e6cdaac89d 100644
--- a/cli/build.rs
+++ b/cli/build.rs
@@ -188,7 +188,7 @@ fn main() {
   let target = env::var("TARGET").unwrap();
   let host = env::var("HOST").unwrap();
   let skip_cross_check =
-    env::var("DENO_SKIP_CROSS_BUILD_CHECK").map_or(false, |v| v == "1");
+    env::var("DENO_SKIP_CROSS_BUILD_CHECK").is_ok_and(|v| v == "1");
   if !skip_cross_check && target != host {
     panic!("Cross compiling with snapshot is not supported.");
   }
diff --git a/cli/cache/module_info.rs b/cli/cache/module_info.rs
index 63f52c06f9d9de..19fd85c293db08 100644
--- a/cli/cache/module_info.rs
+++ b/cli/cache/module_info.rs
@@ -141,7 +141,7 @@ pub struct ModuleInfoCacheModuleAnalyzer<'a> {
   parsed_source_cache: &'a Arc<ParsedSourceCache>,
 }
 
-impl<'a> ModuleInfoCacheModuleAnalyzer<'a> {
+impl ModuleInfoCacheModuleAnalyzer<'_> {
   fn load_cached_module_info(
     &self,
     specifier: &ModuleSpecifier,
@@ -220,7 +220,7 @@ impl<'a> ModuleInfoCacheModuleAnalyzer<'a> {
 }
 
 #[async_trait::async_trait(?Send)]
-impl<'a> deno_graph::ModuleAnalyzer for ModuleInfoCacheModuleAnalyzer<'a> {
+impl deno_graph::ModuleAnalyzer for ModuleInfoCacheModuleAnalyzer<'_> {
   async fn analyze(
     &self,
     specifier: &ModuleSpecifier,
diff --git a/cli/emit.rs b/cli/emit.rs
index 2e5ca33939ff7b..98d5b6478d243e 100644
--- a/cli/emit.rs
+++ b/cli/emit.rs
@@ -332,7 +332,7 @@ pub enum EmitParsedSourceHelperError {
 /// Helper to share code between async and sync emit_parsed_source methods.
 struct EmitParsedSourceHelper<'a>(&'a Emitter);
 
-impl<'a> EmitParsedSourceHelper<'a> {
+impl EmitParsedSourceHelper<'_> {
   pub fn pre_emit_parsed_source(
     &self,
     specifier: &ModuleSpecifier,
diff --git a/cli/graph_container.rs b/cli/graph_container.rs
index 78d589e86d2ad9..942628b52bf3aa 100644
--- a/cli/graph_container.rs
+++ b/cli/graph_container.rs
@@ -159,7 +159,7 @@ pub struct MainModuleGraphUpdatePermit<'a> {
   graph: ModuleGraph,
 }
 
-impl<'a> ModuleGraphUpdatePermit for MainModuleGraphUpdatePermit<'a> {
+impl ModuleGraphUpdatePermit for MainModuleGraphUpdatePermit<'_> {
   fn graph_mut(&mut self) -> &mut ModuleGraph {
     &mut self.graph
   }
diff --git a/cli/graph_util.rs b/cli/graph_util.rs
index 2886803b84faab..005641ec6005e4 100644
--- a/cli/graph_util.rs
+++ b/cli/graph_util.rs
@@ -652,17 +652,17 @@ impl ModuleGraphBuilder {
     }
   }
 
-  pub async fn build_graph_with_npm_resolution<'a>(
+  pub async fn build_graph_with_npm_resolution(
     &self,
     graph: &mut ModuleGraph,
-    options: CreateGraphOptions<'a>,
+    options: CreateGraphOptions<'_>,
   ) -> Result<(), BuildGraphWithNpmResolutionError> {
     enum MutLoaderRef<'a> {
       Borrowed(&'a mut dyn Loader),
       Owned(cache::FetchCacher),
     }
 
-    impl<'a> MutLoaderRef<'a> {
+    impl MutLoaderRef<'_> {
       pub fn as_mut_loader(&mut self) -> &mut dyn Loader {
         match self {
           Self::Borrowed(loader) => *loader,
@@ -673,7 +673,7 @@ impl ModuleGraphBuilder {
 
     struct LockfileLocker<'a>(&'a CliLockfile);
 
-    impl<'a> deno_graph::source::Locker for LockfileLocker<'a> {
+    impl deno_graph::source::Locker for LockfileLocker<'_> {
       fn get_remote_checksum(
         &self,
         specifier: &deno_ast::ModuleSpecifier,
@@ -1357,7 +1357,7 @@ struct CliGraphResolver<'a> {
     BTreeMap<Arc<ModuleSpecifier>, Option<JsxImportSourceConfig>>,
 }
 
-impl<'a> CliGraphResolver<'a> {
+impl CliGraphResolver<'_> {
   fn resolve_jsx_import_source_config(
     &self,
     referrer: &ModuleSpecifier,
@@ -1371,7 +1371,7 @@ impl<'a> CliGraphResolver<'a> {
   }
 }
 
-impl<'a> deno_graph::source::Resolver for CliGraphResolver<'a> {
+impl deno_graph::source::Resolver for CliGraphResolver<'_> {
   fn default_jsx_import_source(
     &self,
     referrer: &ModuleSpecifier,
diff --git a/cli/lsp/documents.rs b/cli/lsp/documents.rs
index 9bea10ef300577..69f8cdd6bb7c55 100644
--- a/cli/lsp/documents.rs
+++ b/cli/lsp/documents.rs
@@ -1699,7 +1699,7 @@ pub struct OpenDocumentsGraphLoader<'a> {
   pub open_docs: &'a HashMap<ModuleSpecifier, Arc<Document>>,
 }
 
-impl<'a> OpenDocumentsGraphLoader<'a> {
+impl OpenDocumentsGraphLoader<'_> {
   fn load_from_docs(
     &self,
     specifier: &ModuleSpecifier,
@@ -1720,7 +1720,7 @@ impl<'a> OpenDocumentsGraphLoader<'a> {
   }
 }
 
-impl<'a> deno_graph::source::Loader for OpenDocumentsGraphLoader<'a> {
+impl deno_graph::source::Loader for OpenDocumentsGraphLoader<'_> {
   fn load(
     &self,
     specifier: &ModuleSpecifier,
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index 2785447ceb9024..1036f468a7d524 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -1457,6 +1457,7 @@ impl Inner {
         .options
         .clone();
       let config_data = self.config.tree.data_for_specifier(&specifier);
+      #[allow(clippy::nonminimal_bool)] // clippy's suggestion is more confusing
       if !config_data.is_some_and(|d| d.maybe_deno_json().is_some()) {
         fmt_options.use_tabs = Some(!params.options.insert_spaces);
         fmt_options.indent_width = Some(params.options.tab_size as u8);
diff --git a/cli/lsp/resolver.rs b/cli/lsp/resolver.rs
index 374e37d039b751..f3b04702634737 100644
--- a/cli/lsp/resolver.rs
+++ b/cli/lsp/resolver.rs
@@ -969,7 +969,7 @@ pub struct SingleReferrerGraphResolver<'a> {
   pub jsx_import_source_config: Option<&'a JsxImportSourceConfig>,
 }
 
-impl<'a> deno_graph::source::Resolver for SingleReferrerGraphResolver<'a> {
+impl deno_graph::source::Resolver for SingleReferrerGraphResolver<'_> {
   fn default_jsx_import_source(
     &self,
     _referrer: &ModuleSpecifier,
diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs
index 29bd0c3ba60c18..15d4cd458ee7fb 100644
--- a/cli/lsp/tsc.rs
+++ b/cli/lsp/tsc.rs
@@ -4365,10 +4365,7 @@ impl TscSpecifierMap {
     let specifier_str = original
       .replace(".d.ts.d.ts", ".d.ts")
       .replace("$node_modules", "node_modules");
-    let specifier = match ModuleSpecifier::parse(&specifier_str) {
-      Ok(s) => s,
-      Err(err) => return Err(err),
-    };
+    let specifier = ModuleSpecifier::parse(&specifier_str)?;
     if specifier.as_str() != original {
       self
         .denormalized_specifiers
diff --git a/cli/npm/installer/common/bin_entries.rs b/cli/npm/installer/common/bin_entries.rs
index 2f7bed285a274b..b03e1f2c18f158 100644
--- a/cli/npm/installer/common/bin_entries.rs
+++ b/cli/npm/installer/common/bin_entries.rs
@@ -421,7 +421,7 @@ pub enum EntrySetupOutcome<'a> {
   Success,
 }
 
-impl<'a> EntrySetupOutcome<'a> {
+impl EntrySetupOutcome<'_> {
   pub fn warn_if_failed(&self) {
     match self {
       EntrySetupOutcome::MissingEntrypoint {
diff --git a/cli/npm/installer/global.rs b/cli/npm/installer/global.rs
index f074c62174abae..bd3603d4731e99 100644
--- a/cli/npm/installer/global.rs
+++ b/cli/npm/installer/global.rs
@@ -137,8 +137,8 @@ impl<'a> GlobalLifecycleScripts<'a> {
   }
 }
 
-impl<'a> super::common::lifecycle_scripts::LifecycleScriptsStrategy
-  for GlobalLifecycleScripts<'a>
+impl super::common::lifecycle_scripts::LifecycleScriptsStrategy
+  for GlobalLifecycleScripts<'_>
 {
   fn can_run_scripts(&self) -> bool {
     false
diff --git a/cli/npm/installer/local.rs b/cli/npm/installer/local.rs
index 61b6fb570edbad..1a93a23ecdb9a1 100644
--- a/cli/npm/installer/local.rs
+++ b/cli/npm/installer/local.rs
@@ -697,7 +697,7 @@ struct LocalLifecycleScripts<'a> {
   deno_local_registry_dir: &'a Path,
 }
 
-impl<'a> LocalLifecycleScripts<'a> {
+impl LocalLifecycleScripts<'_> {
   /// `node_modules/.deno/<package>/.scripts-run`
   fn ran_scripts_file(&self, package: &NpmResolutionPackage) -> PathBuf {
     local_node_modules_package_folder(self.deno_local_registry_dir, package)
@@ -711,8 +711,8 @@ impl<'a> LocalLifecycleScripts<'a> {
   }
 }
 
-impl<'a> super::common::lifecycle_scripts::LifecycleScriptsStrategy
-  for LocalLifecycleScripts<'a>
+impl super::common::lifecycle_scripts::LifecycleScriptsStrategy
+  for LocalLifecycleScripts<'_>
 {
   fn package_path(&self, package: &NpmResolutionPackage) -> PathBuf {
     local_node_modules_package_contents_path(
@@ -784,7 +784,7 @@ struct SetupCacheDep<'a> {
   current: &'a mut BTreeMap<String, String>,
 }
 
-impl<'a> SetupCacheDep<'a> {
+impl SetupCacheDep<'_> {
   pub fn insert(&mut self, name: &str, target_folder_name: &str) -> bool {
     self
       .current
diff --git a/cli/npm/installer/mod.rs b/cli/npm/installer/mod.rs
index 58b9cb1bc764c6..5e399a86d3b4f6 100644
--- a/cli/npm/installer/mod.rs
+++ b/cli/npm/installer/mod.rs
@@ -137,10 +137,10 @@ impl NpmInstaller {
       .dependencies_result
   }
 
-  pub async fn add_package_reqs_raw<'a>(
+  pub async fn add_package_reqs_raw(
     &self,
     packages: &[PackageReq],
-    caching: Option<PackageCaching<'a>>,
+    caching: Option<PackageCaching<'_>>,
   ) -> AddPkgReqsResult {
     if packages.is_empty() {
       return AddPkgReqsResult {
diff --git a/cli/rt/binary.rs b/cli/rt/binary.rs
index 19aad257ca6562..c475edfaa8f56c 100644
--- a/cli/rt/binary.rs
+++ b/cli/rt/binary.rs
@@ -506,6 +506,7 @@ fn deserialize_npm_snapshot(
   }
 
   #[allow(clippy::needless_lifetimes)] // clippy bug
+  #[allow(clippy::type_complexity)]
   fn parse_root_package<'a>(
     id_to_npm_id: &'a impl Fn(usize) -> Result<NpmPackageId, AnyError>,
   ) -> impl Fn(&[u8]) -> Result<(&[u8], (PackageReq, NpmPackageId)), AnyError> + 'a
@@ -519,6 +520,7 @@ fn deserialize_npm_snapshot(
   }
 
   #[allow(clippy::needless_lifetimes)] // clippy bug
+  #[allow(clippy::type_complexity)]
   fn parse_package_dep<'a>(
     id_to_npm_id: &'a impl Fn(usize) -> Result<NpmPackageId, AnyError>,
   ) -> impl Fn(&[u8]) -> Result<(&[u8], (StackString, NpmPackageId)), AnyError> + 'a
diff --git a/cli/standalone/binary.rs b/cli/standalone/binary.rs
index 4d96ec8a85e352..c1eaebe926623b 100644
--- a/cli/standalone/binary.rs
+++ b/cli/standalone/binary.rs
@@ -79,7 +79,7 @@ pub enum StandaloneRelativeFileBaseUrl<'a> {
   Path(&'a Url),
 }
 
-impl<'a> StandaloneRelativeFileBaseUrl<'a> {
+impl StandaloneRelativeFileBaseUrl<'_> {
   /// Gets the module map key of the provided specifier.
   ///
   /// * Descendant file specifiers will be made relative to the base.
diff --git a/cli/standalone/virtual_fs.rs b/cli/standalone/virtual_fs.rs
index a3e023620f98dc..bf589b9bea581f 100644
--- a/cli/standalone/virtual_fs.rs
+++ b/cli/standalone/virtual_fs.rs
@@ -69,7 +69,7 @@ fn vfs_as_display_tree(
     Symlink(&'a VirtualSymlinkParts),
   }
 
-  impl<'a> EntryOutput<'a> {
+  impl EntryOutput<'_> {
     pub fn size(&self) -> Size {
       match self {
         EntryOutput::All(size) => *size,
@@ -85,7 +85,7 @@ fn vfs_as_display_tree(
     }
   }
 
-  impl<'a> EntryOutput<'a> {
+  impl EntryOutput<'_> {
     pub fn as_display_tree(&self, name: String) -> DisplayTreeNode {
       fn format_size(size: Size) -> String {
         if size.unique == size.total {
@@ -136,7 +136,7 @@ fn vfs_as_display_tree(
     output: EntryOutput<'a>,
   }
 
-  impl<'a> DirEntryOutput<'a> {
+  impl DirEntryOutput<'_> {
     /// Collapses leaf nodes so they don't take up so much space when being
     /// displayed.
     ///
diff --git a/cli/tools/bench/mitata.rs b/cli/tools/bench/mitata.rs
index e43ee30fa9007c..1c46177cf32f70 100644
--- a/cli/tools/bench/mitata.rs
+++ b/cli/tools/bench/mitata.rs
@@ -110,7 +110,7 @@ pub mod cpu {
 
     sysctl.arg("-n");
     sysctl.arg("machdep.cpu.brand_string");
-    return std::str::from_utf8(
+    std::str::from_utf8(
       &sysctl
         .output()
         .map(|x| x.stdout)
@@ -118,7 +118,7 @@ pub mod cpu {
     )
     .unwrap()
     .trim()
-    .to_string();
+    .to_string()
   }
 
   pub fn windows() -> String {
@@ -128,14 +128,14 @@ pub mod cpu {
     wmi.arg("get");
     wmi.arg("name");
 
-    return match wmi.output() {
+    match wmi.output() {
       Err(_) => String::from("unknown"),
 
       Ok(x) => {
         let x = String::from_utf8_lossy(&x.stdout);
-        return x.lines().nth(1).unwrap_or("unknown").trim().to_string();
+        x.lines().nth(1).unwrap_or("unknown").trim().to_string()
       }
-    };
+    }
   }
 
   pub fn linux() -> String {
diff --git a/cli/tools/coverage/merge.rs b/cli/tools/coverage/merge.rs
index 9c898e78d3d991..85447cec1d0982 100644
--- a/cli/tools/coverage/merge.rs
+++ b/cli/tools/coverage/merge.rs
@@ -157,7 +157,9 @@ struct StartEvent<'a> {
   trees: Vec<(usize, &'a mut RangeTree<'a>)>,
 }
 
-fn into_start_events<'a>(trees: Vec<&'a mut RangeTree<'a>>) -> Vec<StartEvent> {
+fn into_start_events<'a>(
+  trees: Vec<&'a mut RangeTree<'a>>,
+) -> Vec<StartEvent<'a>> {
   let mut result: BTreeMap<usize, Vec<(usize, &'a mut RangeTree<'a>)>> =
     BTreeMap::new();
   for (parent_index, tree) in trees.into_iter().enumerate() {
diff --git a/cli/tools/coverage/mod.rs b/cli/tools/coverage/mod.rs
index b8fcd4ec115973..96331e5157daa1 100644
--- a/cli/tools/coverage/mod.rs
+++ b/cli/tools/coverage/mod.rs
@@ -583,9 +583,8 @@ pub fn cover_files(
       cli_options.initial_cwd(),
     )?;
 
-    let maybe_file_result = file_fetcher
-      .get_cached_source_or_local(&module_specifier)
-      .map_err(AnyError::from);
+    let maybe_file_result =
+      file_fetcher.get_cached_source_or_local(&module_specifier);
     let file = match maybe_file_result {
       Ok(Some(file)) => TextDecodedFile::decode(file)?,
       Ok(None) => return Err(anyhow!("{}", get_message(&module_specifier))),
diff --git a/cli/tools/coverage/range_tree.rs b/cli/tools/coverage/range_tree.rs
index 08ac914cd2a620..e750d0272347e4 100644
--- a/cli/tools/coverage/range_tree.rs
+++ b/cli/tools/coverage/range_tree.rs
@@ -35,7 +35,7 @@ pub struct RangeTree<'a> {
   pub children: Vec<&'a mut RangeTree<'a>>,
 }
 
-impl<'rt> RangeTree<'rt> {
+impl RangeTree<'_> {
   pub fn new<'a>(
     start: usize,
     end: usize,
diff --git a/cli/tools/coverage/reporter.rs b/cli/tools/coverage/reporter.rs
index f001d9113c3dd5..d83d18e3769292 100644
--- a/cli/tools/coverage/reporter.rs
+++ b/cli/tools/coverage/reporter.rs
@@ -51,7 +51,7 @@ pub trait CoverageReporter {
   fn collect_summary<'a>(
     &'a self,
     file_reports: &'a [(CoverageReport, String)],
-  ) -> CoverageSummary {
+  ) -> CoverageSummary<'a> {
     let urls = file_reports.iter().map(|rep| &rep.0.url).collect();
     let root = match util::find_root(urls)
       .and_then(|root_path| root_path.to_file_path().ok())
diff --git a/cli/tools/lint/mod.rs b/cli/tools/lint/mod.rs
index 468ba6a34297f1..73be8c08d1dda9 100644
--- a/cli/tools/lint/mod.rs
+++ b/cli/tools/lint/mod.rs
@@ -609,9 +609,7 @@ fn lint_stdin(
     maybe_plugin_runner: None,
   });
 
-  let r = linter
-    .lint_file(&file_path, deno_ast::strip_bom(source_code), None)
-    .map_err(AnyError::from);
+  let r = linter.lint_file(&file_path, deno_ast::strip_bom(source_code), None);
 
   let success =
     handle_lint_result(&file_path.to_string_lossy(), r, reporter_lock.clone());
diff --git a/cli/tools/lint/rules/no_sloppy_imports.rs b/cli/tools/lint/rules/no_sloppy_imports.rs
index e511d4d9ce1f23..055f556b7de109 100644
--- a/cli/tools/lint/rules/no_sloppy_imports.rs
+++ b/cli/tools/lint/rules/no_sloppy_imports.rs
@@ -174,7 +174,7 @@ struct SloppyImportCaptureResolver<'a> {
   >,
 }
 
-impl<'a> deno_graph::source::Resolver for SloppyImportCaptureResolver<'a> {
+impl deno_graph::source::Resolver for SloppyImportCaptureResolver<'_> {
   fn resolve(
     &self,
     specifier_text: &str,
diff --git a/cli/tools/pm/deps.rs b/cli/tools/pm/deps.rs
index 6bbe949d0bedb5..837a4fec00f6d4 100644
--- a/cli/tools/pm/deps.rs
+++ b/cli/tools/pm/deps.rs
@@ -85,14 +85,14 @@ impl DepLocation {
 
 struct DebugAdapter<T>(T);
 
-impl<'a> std::fmt::Debug for DebugAdapter<&'a ConfigFileRc> {
+impl std::fmt::Debug for DebugAdapter<&ConfigFileRc> {
   fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
     f.debug_struct("ConfigFile")
       .field("specifier", &self.0.specifier)
       .finish()
   }
 }
-impl<'a> std::fmt::Debug for DebugAdapter<&'a PackageJsonRc> {
+impl std::fmt::Debug for DebugAdapter<&PackageJsonRc> {
   fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
     f.debug_struct("PackageJson")
       .field("path", &self.0.path)
diff --git a/cli/tools/pm/mod.rs b/cli/tools/pm/mod.rs
index 6f02adf8e0f623..13f8a53ab0e4cd 100644
--- a/cli/tools/pm/mod.rs
+++ b/cli/tools/pm/mod.rs
@@ -593,7 +593,7 @@ trait PackageInfoProvider {
   /// The help to return if a package is found by this provider
   const HELP: NotFoundHelp;
   async fn req_to_nv(&self, req: &PackageReq) -> Option<PackageNv>;
-  async fn latest_version<'a>(&self, req: &PackageReq) -> Option<Version>;
+  async fn latest_version(&self, req: &PackageReq) -> Option<Version>;
 }
 
 impl PackageInfoProvider for Arc<JsrFetchResolver> {
@@ -603,7 +603,7 @@ impl PackageInfoProvider for Arc<JsrFetchResolver> {
     (**self).req_to_nv(req).await
   }
 
-  async fn latest_version<'a>(&self, req: &PackageReq) -> Option<Version> {
+  async fn latest_version(&self, req: &PackageReq) -> Option<Version> {
     let info = self.package_info(&req.name).await?;
     best_version(
       info
@@ -623,7 +623,7 @@ impl PackageInfoProvider for Arc<NpmFetchResolver> {
     (**self).req_to_nv(req).await
   }
 
-  async fn latest_version<'a>(&self, req: &PackageReq) -> Option<Version> {
+  async fn latest_version(&self, req: &PackageReq) -> Option<Version> {
     let info = self.package_info(&req.name).await?;
     best_version(info.versions.keys()).cloned()
   }
diff --git a/cli/tools/publish/mod.rs b/cli/tools/publish/mod.rs
index 77c13de013481d..316cd7d9c4ad45 100644
--- a/cli/tools/publish/mod.rs
+++ b/cli/tools/publish/mod.rs
@@ -1168,7 +1168,7 @@ async fn check_if_git_repo_dirty(cwd: &Path) -> Option<String> {
     .stdout(Stdio::null())
     .status()
     .await
-    .map_or(false, |status| status.success());
+    .is_ok_and(|status| status.success());
 
   if !git_exists {
     return None; // Git is not installed
diff --git a/cli/tools/run/hmr.rs b/cli/tools/run/hmr.rs
index 913e119689029b..0409986e0ed03f 100644
--- a/cli/tools/run/hmr.rs
+++ b/cli/tools/run/hmr.rs
@@ -112,7 +112,7 @@ impl crate::worker::HmrRunner for HmrRunner {
             continue;
           };
 
-          let filtered_paths: Vec<PathBuf> = changed_paths.into_iter().filter(|p| p.extension().map_or(false, |ext| {
+          let filtered_paths: Vec<PathBuf> = changed_paths.into_iter().filter(|p| p.extension().is_some_and(|ext| {
             let ext_str = ext.to_str().unwrap();
             matches!(ext_str, "js" | "ts" | "jsx" | "tsx")
           })).collect();
diff --git a/cli/type_checker.rs b/cli/type_checker.rs
index dbb50d3fb40749..13ffdd75010185 100644
--- a/cli/type_checker.rs
+++ b/cli/type_checker.rs
@@ -368,7 +368,7 @@ pub struct DiagnosticsByFolderIterator<'a>(
   DiagnosticsByFolderIteratorInner<'a>,
 );
 
-impl<'a> DiagnosticsByFolderIterator<'a> {
+impl DiagnosticsByFolderIterator<'_> {
   pub fn into_graph(self) -> Arc<ModuleGraph> {
     match self.0 {
       DiagnosticsByFolderIteratorInner::Empty(module_graph) => module_graph,
@@ -377,7 +377,7 @@ impl<'a> DiagnosticsByFolderIterator<'a> {
   }
 }
 
-impl<'a> Iterator for DiagnosticsByFolderIterator<'a> {
+impl Iterator for DiagnosticsByFolderIterator<'_> {
   type Item = Result<Diagnostics, CheckError>;
 
   fn next(&mut self) -> Option<Self::Item> {
@@ -409,7 +409,7 @@ struct DiagnosticsByFolderRealIterator<'a> {
   code_cache: Option<Arc<crate::cache::CodeCache>>,
 }
 
-impl<'a> Iterator for DiagnosticsByFolderRealIterator<'a> {
+impl Iterator for DiagnosticsByFolderRealIterator<'_> {
   type Item = Result<Diagnostics, CheckError>;
 
   fn next(&mut self) -> Option<Self::Item> {
diff --git a/cli/util/extract.rs b/cli/util/extract.rs
index 825e81bb4bb16c..073c77b0c3369a 100644
--- a/cli/util/extract.rs
+++ b/cli/util/extract.rs
@@ -610,7 +610,7 @@ struct Transform<'a> {
   wrap_kind: WrapKind,
 }
 
-impl<'a> VisitMut for Transform<'a> {
+impl VisitMut for Transform<'_> {
   fn visit_mut_program(&mut self, node: &mut ast::Program) {
     let new_module_items = match node {
       ast::Program::Module(module) => {
diff --git a/cli/util/fs.rs b/cli/util/fs.rs
index d9cebe10d51de3..ecd9d41e3dab97 100644
--- a/cli/util/fs.rs
+++ b/cli/util/fs.rs
@@ -348,11 +348,10 @@ struct LaxSingleProcessFsFlagInner {
 
 impl Drop for LaxSingleProcessFsFlagInner {
   fn drop(&mut self) {
-    use fs3::FileExt;
     // kill the poll thread
     self.finished_token.cancel();
     // release the file lock
-    if let Err(err) = self.fs_file.unlock() {
+    if let Err(err) = fs3::FileExt::unlock(&self.fs_file) {
       log::debug!(
         "Failed releasing lock for {}. {:#}",
         self.file_path.display(),
diff --git a/cli/util/path.rs b/cli/util/path.rs
index 90b2df6a3c103b..8784033e416345 100644
--- a/cli/util/path.rs
+++ b/cli/util/path.rs
@@ -45,10 +45,10 @@ pub fn is_importable_ext(path: &Path) -> bool {
 
 /// Get the extension of a file in lowercase.
 pub fn get_extension(file_path: &Path) -> Option<String> {
-  return file_path
+  file_path
     .extension()
     .and_then(|e| e.to_str())
-    .map(|e| e.to_lowercase());
+    .map(|e| e.to_lowercase())
 }
 
 /// TypeScript figures out the type of file based on the extension, but we take
diff --git a/cli/util/sync/task_queue.rs b/cli/util/sync/task_queue.rs
index 4c5abfab3b83b7..4155b67f96ab04 100644
--- a/cli/util/sync/task_queue.rs
+++ b/cli/util/sync/task_queue.rs
@@ -83,7 +83,7 @@ impl TaskQueue {
 /// A permit that when dropped will allow another task to proceed.
 pub struct TaskQueuePermit<'a>(&'a TaskQueue);
 
-impl<'a> Drop for TaskQueuePermit<'a> {
+impl Drop for TaskQueuePermit<'_> {
   fn drop(&mut self) {
     self.0.raise_next();
   }
@@ -116,7 +116,7 @@ impl<'a> TaskQueuePermitAcquireFuture<'a> {
   }
 }
 
-impl<'a> Drop for TaskQueuePermitAcquireFuture<'a> {
+impl Drop for TaskQueuePermitAcquireFuture<'_> {
   fn drop(&mut self) {
     if let Some(task_queue) = self.task_queue.take() {
       if self.item.is_ready.is_raised() {
diff --git a/cli/worker.rs b/cli/worker.rs
index f8adc628213abe..3bc13a1740bee1 100644
--- a/cli/worker.rs
+++ b/cli/worker.rs
@@ -101,7 +101,7 @@ impl CliMainWorker {
         let result;
         select! {
           hmr_result = hmr_future => {
-            result = hmr_result.map_err(Into::into);
+            result = hmr_result;
           },
           event_loop_result = event_loop_future => {
             result = event_loop_result;
diff --git a/ext/fetch/proxy.rs b/ext/fetch/proxy.rs
index 3b371a07b1c390..9d85a21f41e357 100644
--- a/ext/fetch/proxy.rs
+++ b/ext/fetch/proxy.rs
@@ -468,7 +468,7 @@ where
           let connecting = connector.call(proxy_dst);
           let tls = TlsConnector::from(self.tls.clone());
           Box::pin(async move {
-            let mut io = connecting.await.map_err(Into::<BoxError>::into)?;
+            let mut io = connecting.await?;
 
             if is_https {
               tunnel(&mut io, &orig_dst, user_agent, auth).await?;
diff --git a/ext/ffi/repr.rs b/ext/ffi/repr.rs
index bcd80cbf03e7af..90cec9f47796f3 100644
--- a/ext/ffi/repr.rs
+++ b/ext/ffi/repr.rs
@@ -243,6 +243,7 @@ where
   let cstr =
   // SAFETY: Pointer and offset are user provided.
     unsafe { CStr::from_ptr(ptr.offset(offset) as *const c_char) }.to_bytes();
+  #[allow(clippy::unnecessary_lazy_evaluations)]
   let value = v8::String::new_from_utf8(scope, cstr, v8::NewStringType::Normal)
     .ok_or_else(|| ReprError::CStringTooLong)?;
   Ok(value)
diff --git a/ext/fs/std_fs.rs b/ext/fs/std_fs.rs
index 98eb775b9cd80e..208612a48e9f88 100644
--- a/ext/fs/std_fs.rs
+++ b/ext/fs/std_fs.rs
@@ -161,17 +161,17 @@ impl FileSystem for RealFs {
   }
 
   fn stat_sync(&self, path: &Path) -> FsResult<FsStat> {
-    stat(path).map(Into::into)
+    stat(path)
   }
   async fn stat_async(&self, path: PathBuf) -> FsResult<FsStat> {
-    spawn_blocking(move || stat(&path)).await?.map(Into::into)
+    spawn_blocking(move || stat(&path)).await?
   }
 
   fn lstat_sync(&self, path: &Path) -> FsResult<FsStat> {
-    lstat(path).map(Into::into)
+    lstat(path)
   }
   async fn lstat_async(&self, path: PathBuf) -> FsResult<FsStat> {
-    spawn_blocking(move || lstat(&path)).await?.map(Into::into)
+    spawn_blocking(move || lstat(&path)).await?
   }
 
   fn exists_sync(&self, path: &Path) -> bool {
@@ -404,7 +404,6 @@ impl FileSystem for RealFs {
       Ok::<_, FsError>(Cow::Owned(buf))
     })
     .await?
-    .map_err(Into::into)
   }
 }
 
diff --git a/ext/http/service.rs b/ext/http/service.rs
index be7cbcd9384638..9a018005881e53 100644
--- a/ext/http/service.rs
+++ b/ext/http/service.rs
@@ -515,7 +515,7 @@ impl HttpRecord {
   fn response_ready(&self) -> impl Future<Output = ()> + '_ {
     struct HttpRecordReady<'a>(&'a HttpRecord);
 
-    impl<'a> Future for HttpRecordReady<'a> {
+    impl Future for HttpRecordReady<'_> {
       type Output = ();
 
       fn poll(
@@ -540,7 +540,7 @@ impl HttpRecord {
   pub fn response_body_finished(&self) -> impl Future<Output = bool> + '_ {
     struct HttpRecordFinished<'a>(&'a HttpRecord);
 
-    impl<'a> Future for HttpRecordFinished<'a> {
+    impl Future for HttpRecordFinished<'_> {
       type Output = bool;
 
       fn poll(
diff --git a/ext/http/websocket_upgrade.rs b/ext/http/websocket_upgrade.rs
index e030f1c7ae55f5..8a2e524399ee7d 100644
--- a/ext/http/websocket_upgrade.rs
+++ b/ext/http/websocket_upgrade.rs
@@ -238,7 +238,7 @@ mod tests {
     size: usize,
     expected: Result<ExpectedResponseAndHead, WebSocketUpgradeError>,
   ) {
-    let chunk_info = Some((s.as_bytes().len(), size));
+    let chunk_info = Some((s.len(), size));
     let mut upgrade = WebSocketUpgrade::default();
     let mut result = Ok(None);
     for chunk in s.as_bytes().chunks(size) {
diff --git a/ext/io/lib.rs b/ext/io/lib.rs
index 1f92ae5c8b3097..ec79cea2af189d 100644
--- a/ext/io/lib.rs
+++ b/ext/io/lib.rs
@@ -884,7 +884,7 @@ impl crate::fs::File for StdFileResourceInner {
       if exclusive {
         file.lock_exclusive()?;
       } else {
-        file.lock_shared()?;
+        fs3::FileExt::lock_shared(file)?;
       }
       Ok(())
     })
@@ -895,7 +895,7 @@ impl crate::fs::File for StdFileResourceInner {
         if exclusive {
           file.lock_exclusive()?;
         } else {
-          file.lock_shared()?;
+          fs3::FileExt::lock_shared(file)?;
         }
         Ok(())
       })
@@ -903,11 +903,11 @@ impl crate::fs::File for StdFileResourceInner {
   }
 
   fn unlock_sync(self: Rc<Self>) -> FsResult<()> {
-    self.with_sync(|file| Ok(file.unlock()?))
+    self.with_sync(|file| Ok(fs3::FileExt::unlock(file)?))
   }
   async fn unlock_async(self: Rc<Self>) -> FsResult<()> {
     self
-      .with_inner_blocking_task(|file| Ok(file.unlock()?))
+      .with_inner_blocking_task(|file| Ok(fs3::FileExt::unlock(file)?))
       .await
   }
 
diff --git a/ext/napi/lib.rs b/ext/napi/lib.rs
index 1db20ef647d43b..bb3dc7a816e032 100644
--- a/ext/napi/lib.rs
+++ b/ext/napi/lib.rs
@@ -316,7 +316,7 @@ impl Drop for NapiState {
         .env_cleanup_hooks
         .borrow()
         .iter()
-        .any(|pair| pair.0 == hook.0 && pair.1 == hook.1)
+        .any(|pair| std::ptr::fn_addr_eq(pair.0, hook.0) && pair.1 == hook.1)
       {
         continue;
       }
@@ -326,10 +326,9 @@ impl Drop for NapiState {
       }
 
       {
-        self
-          .env_cleanup_hooks
-          .borrow_mut()
-          .retain(|pair| !(pair.0 == hook.0 && pair.1 == hook.1));
+        self.env_cleanup_hooks.borrow_mut().retain(|pair| {
+          !(std::ptr::fn_addr_eq(pair.0, hook.0) && pair.1 == hook.1)
+        });
       }
     }
   }
@@ -473,7 +472,10 @@ impl Env {
     data: *mut c_void,
   ) {
     let mut hooks = self.cleanup_hooks.borrow_mut();
-    if hooks.iter().any(|pair| pair.0 == hook && pair.1 == data) {
+    if hooks
+      .iter()
+      .any(|pair| std::ptr::fn_addr_eq(pair.0, hook) && pair.1 == data)
+    {
       panic!("Cannot register cleanup hook with same data twice");
     }
     hooks.push((hook, data));
@@ -487,7 +489,7 @@ impl Env {
     let mut hooks = self.cleanup_hooks.borrow_mut();
     match hooks
       .iter()
-      .rposition(|&pair| pair.0 == hook && pair.1 == data)
+      .rposition(|&pair| std::ptr::fn_addr_eq(pair.0, hook) && pair.1 == data)
     {
       Some(index) => {
         hooks.remove(index);
diff --git a/ext/napi/util.rs b/ext/napi/util.rs
index a913eade1660e4..3e836e334bb4c7 100644
--- a/ext/napi/util.rs
+++ b/ext/napi/util.rs
@@ -210,7 +210,7 @@ impl<T> Nullable for Option<T> {
   }
 }
 
-impl<'s> Nullable for napi_value<'s> {
+impl Nullable for napi_value<'_> {
   fn is_null(&self) -> bool {
     self.is_none()
   }
diff --git a/ext/node/lib.rs b/ext/node/lib.rs
index fc9ec9e6135a9a..2e9412215da00c 100644
--- a/ext/node/lib.rs
+++ b/ext/node/lib.rs
@@ -851,8 +851,8 @@ pub type NodeResolverRc<TInNpmPackageChecker, TNpmPackageFolderResolver, TSys> =
   deno_fs::sync::MaybeArc<
     NodeResolver<TInNpmPackageChecker, TNpmPackageFolderResolver, TSys>,
   >;
-#[allow(clippy::disallowed_types)]
 
+#[allow(clippy::disallowed_types)]
 pub fn create_host_defined_options<'s>(
   scope: &mut v8::HandleScope<'s>,
 ) -> v8::Local<'s, v8::Data> {
diff --git a/ext/node/ops/crypto/keys.rs b/ext/node/ops/crypto/keys.rs
index db16d9e4ddb06e..47fa3d88b966a3 100644
--- a/ext/node/ops/crypto/keys.rs
+++ b/ext/node/ops/crypto/keys.rs
@@ -340,7 +340,7 @@ impl<'a> TryFrom<rsa::pkcs8::der::asn1::AnyRef<'a>> for RsaPssParameters<'a> {
 
   fn try_from(
     any: rsa::pkcs8::der::asn1::AnyRef<'a>,
-  ) -> rsa::pkcs8::der::Result<RsaPssParameters> {
+  ) -> rsa::pkcs8::der::Result<RsaPssParameters<'a>> {
     any.sequence(|decoder| {
       let hash_algorithm = decoder
         .context_specific::<rsa::pkcs8::AlgorithmIdentifierRef>(
diff --git a/ext/node/ops/crypto/mod.rs b/ext/node/ops/crypto/mod.rs
index abdf14052dc9c1..4b5c5579939387 100644
--- a/ext/node/ops/crypto/mod.rs
+++ b/ext/node/ops/crypto/mod.rs
@@ -276,7 +276,7 @@ pub fn op_node_cipheriv_final(
   let context = state.resource_table.take::<cipher::CipherContext>(rid)?;
   let context = Rc::try_unwrap(context)
     .map_err(|_| cipher::CipherContextError::ContextInUse)?;
-  context.r#final(auto_pad, input, output).map_err(Into::into)
+  context.r#final(auto_pad, input, output)
 }
 
 #[op2]
@@ -344,9 +344,7 @@ pub fn op_node_decipheriv_final(
   let context = state.resource_table.take::<cipher::DecipherContext>(rid)?;
   let context = Rc::try_unwrap(context)
     .map_err(|_| cipher::DecipherContextError::ContextInUse)?;
-  context
-    .r#final(auto_pad, input, output, auth_tag)
-    .map_err(Into::into)
+  context.r#final(auto_pad, input, output, auth_tag)
 }
 
 #[op2]
diff --git a/ext/node/ops/ipc.rs b/ext/node/ops/ipc.rs
index 0213295c5a1a6c..6d0fd7d0ac62b4 100644
--- a/ext/node/ops/ipc.rs
+++ b/ext/node/ops/ipc.rs
@@ -33,7 +33,7 @@ mod impl_ {
     v8::Local<'a, v8::Value>,
   );
 
-  impl<'a, 'b> Serialize for SerializeWrapper<'a, 'b> {
+  impl Serialize for SerializeWrapper<'_, '_> {
     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
     where
       S: Serializer,
diff --git a/ext/node/ops/os/cpus.rs b/ext/node/ops/os/cpus.rs
index 4dd0e59a1743ce..bbf783dd9034e7 100644
--- a/ext/node/ops/os/cpus.rs
+++ b/ext/node/ops/os/cpus.rs
@@ -36,14 +36,14 @@ pub fn cpu_info() -> Option<Vec<CpuInfo>> {
     let ticks = libc::sysconf(libc::_SC_CLK_TCK);
     let multiplier = 1000u64 / ticks as u64;
     if libc::sysctlbyname(
-      "machdep.cpu.brand_string\0".as_ptr() as *const libc::c_char,
+      c"machdep.cpu.brand_string".as_ptr() as *const libc::c_char,
       model.as_mut_ptr() as _,
       &mut size,
       std::ptr::null_mut(),
       0,
     ) != 0
       && libc::sysctlbyname(
-        "hw.model\0".as_ptr() as *const libc::c_char,
+        c"hw.model".as_ptr() as *const libc::c_char,
         model.as_mut_ptr() as _,
         &mut size,
         std::ptr::null_mut(),
@@ -57,7 +57,7 @@ pub fn cpu_info() -> Option<Vec<CpuInfo>> {
     let mut cpu_speed_size = std::mem::size_of_val(&cpu_speed);
 
     libc::sysctlbyname(
-      "hw.cpufrequency\0".as_ptr() as *const libc::c_char,
+      c"hw.cpufrequency".as_ptr() as *const libc::c_char,
       &mut cpu_speed as *mut _ as *mut libc::c_void,
       &mut cpu_speed_size,
       std::ptr::null_mut(),
diff --git a/ext/node/ops/v8.rs b/ext/node/ops/v8.rs
index c268d419258bc8..f4cd39a816d4b6 100644
--- a/ext/node/ops/v8.rs
+++ b/ext/node/ops/v8.rs
@@ -48,7 +48,7 @@ pub struct SerializerDelegate {
   obj: v8::Global<v8::Object>,
 }
 
-impl<'a> v8::cppgc::GarbageCollected for Serializer<'a> {
+impl v8::cppgc::GarbageCollected for Serializer<'_> {
   fn trace(&self, _visitor: &v8::cppgc::Visitor) {}
 }
 
@@ -226,7 +226,7 @@ pub struct Deserializer<'a> {
   inner: v8::ValueDeserializer<'a>,
 }
 
-impl<'a> deno_core::GarbageCollected for Deserializer<'a> {}
+impl deno_core::GarbageCollected for Deserializer<'_> {}
 
 pub struct DeserializerDelegate {
   obj: v8::Global<v8::Object>,
diff --git a/ext/os/sys_info.rs b/ext/os/sys_info.rs
index e6bd16c0f3d46a..fa4bf8fc183eb3 100644
--- a/ext/os/sys_info.rs
+++ b/ext/os/sys_info.rs
@@ -101,7 +101,7 @@ pub fn os_release() -> String {
     }
 
     // without the NUL terminator
-    return String::from_utf8_lossy(&s[..len - 1]).to_string();
+    String::from_utf8_lossy(&s[..len - 1]).to_string()
   }
   #[cfg(target_family = "windows")]
   {
diff --git a/ext/telemetry/lib.rs b/ext/telemetry/lib.rs
index 10dc8cfdd756c1..fba30a91ec2bbf 100644
--- a/ext/telemetry/lib.rs
+++ b/ext/telemetry/lib.rs
@@ -1,6 +1,7 @@
 // Copyright 2018-2025 the Deno authors. MIT license.
 
 #![allow(clippy::too_many_arguments)]
+#![expect(unexpected_cfgs)]
 
 use std::borrow::Cow;
 use std::cell::RefCell;
@@ -789,7 +790,7 @@ pub fn handle_log(record: &log::Record) {
 
   struct Visitor<'s>(&'s mut LogRecord);
 
-  impl<'s, 'kvs> log::kv::VisitSource<'kvs> for Visitor<'s> {
+  impl<'kvs> log::kv::VisitSource<'kvs> for Visitor<'_> {
     fn visit_pair(
       &mut self,
       key: log::kv::Key<'kvs>,
diff --git a/ext/web/blob.rs b/ext/web/blob.rs
index 555e6da1cfd184..d6a5a45931e2b5 100644
--- a/ext/web/blob.rs
+++ b/ext/web/blob.rs
@@ -136,7 +136,7 @@ impl Blob {
 #[async_trait]
 pub trait BlobPart: Debug {
   // TODO(lucacsonato): this should be a stream!
-  async fn read(&self) -> &[u8];
+  async fn read<'a>(&'a self) -> &'a [u8];
   fn size(&self) -> usize;
 }
 
@@ -151,7 +151,7 @@ impl From<Vec<u8>> for InMemoryBlobPart {
 
 #[async_trait]
 impl BlobPart for InMemoryBlobPart {
-  async fn read(&self) -> &[u8] {
+  async fn read<'a>(&'a self) -> &'a [u8] {
     &self.0
   }
 
@@ -169,7 +169,7 @@ pub struct SlicedBlobPart {
 
 #[async_trait]
 impl BlobPart for SlicedBlobPart {
-  async fn read(&self) -> &[u8] {
+  async fn read<'a>(&'a self) -> &'a [u8] {
     let original = self.part.read().await;
     &original[self.start..self.start + self.len]
   }
diff --git a/resolvers/deno/npm/mod.rs b/resolvers/deno/npm/mod.rs
index dabcef996ed23e..c2534815e6641e 100644
--- a/resolvers/deno/npm/mod.rs
+++ b/resolvers/deno/npm/mod.rs
@@ -547,7 +547,7 @@ impl<
 pub fn find_definitely_typed_package<'a>(
   nv: &'a PackageNv,
   packages: impl IntoIterator<Item = (&'a PackageReq, &'a PackageNv)>,
-) -> Option<(&PackageReq, &PackageNv)> {
+) -> Option<(&'a PackageReq, &'a PackageNv)> {
   let types_name = types_package_name(&nv.name);
   let mut best_patch = 0;
   let mut highest: Option<(&PackageReq, &PackageNv)> = None;
diff --git a/resolvers/node/analyze.rs b/resolvers/node/analyze.rs
index 6ad1bf9bd7ced1..f80a15816fdc6f 100644
--- a/resolvers/node/analyze.rs
+++ b/resolvers/node/analyze.rs
@@ -226,6 +226,7 @@ impl<
     Ok(Cow::Owned(translated_source))
   }
 
+  #[allow(clippy::needless_lifetimes)]
   async fn analyze_reexports<'a>(
     &'a self,
     entry_specifier: &url::Url,
diff --git a/runtime/permissions/lib.rs b/runtime/permissions/lib.rs
index a790b08b616c8e..28e57a30fcbe77 100644
--- a/runtime/permissions/lib.rs
+++ b/runtime/permissions/lib.rs
@@ -3388,7 +3388,7 @@ impl<'de> Deserialize<'de> for ChildUnitPermissionArg {
     D: Deserializer<'de>,
   {
     struct ChildUnitPermissionArgVisitor;
-    impl<'de> de::Visitor<'de> for ChildUnitPermissionArgVisitor {
+    impl de::Visitor<'_> for ChildUnitPermissionArgVisitor {
       type Value = ChildUnitPermissionArg;
 
       fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
diff --git a/rust-toolchain.toml b/rust-toolchain.toml
index 3d572e0d698be9..b475f2f916c512 100644
--- a/rust-toolchain.toml
+++ b/rust-toolchain.toml
@@ -1,3 +1,3 @@
 [toolchain]
-channel = "1.82.0"
+channel = "1.85.0"
 components = ["rustfmt", "clippy"]
diff --git a/tests/ffi/src/lib.rs b/tests/ffi/src/lib.rs
index ca416fb9801d1b..0562ca83d995fd 100644
--- a/tests/ffi/src/lib.rs
+++ b/tests/ffi/src/lib.rs
@@ -3,8 +3,10 @@
 #![allow(clippy::print_stdout)]
 #![allow(clippy::print_stderr)]
 #![allow(clippy::undocumented_unsafe_blocks)]
+#![allow(non_upper_case_globals)]
 
 use std::os::raw::c_void;
+use std::sync::Mutex;
 use std::thread::sleep;
 use std::time::Duration;
 
@@ -194,12 +196,13 @@ pub extern "C" fn call_fn_ptr_return_buffer(
   println!("buf: {buf:?}");
 }
 
-static mut STORED_FUNCTION: Option<extern "C" fn()> = None;
-static mut STORED_FUNCTION_2: Option<extern "C" fn(u8) -> u8> = None;
+static STORED_FUNCTION: Mutex<Option<extern "C" fn()>> = Mutex::new(None);
+static STORED_FUNCTION_2: Mutex<Option<extern "C" fn(u8) -> u8>> =
+  Mutex::new(None);
 
 #[no_mangle]
 pub extern "C" fn store_function(func: Option<extern "C" fn()>) {
-  unsafe { STORED_FUNCTION = func };
+  *STORED_FUNCTION.lock().unwrap() = func;
   if func.is_none() {
     println!("STORED_FUNCTION cleared");
   }
@@ -207,7 +210,7 @@ pub extern "C" fn store_function(func: Option<extern "C" fn()>) {
 
 #[no_mangle]
 pub extern "C" fn store_function_2(func: Option<extern "C" fn(u8) -> u8>) {
-  unsafe { STORED_FUNCTION_2 = func };
+  *STORED_FUNCTION_2.lock().unwrap() = func;
   if func.is_none() {
     println!("STORED_FUNCTION_2 cleared");
   }
@@ -215,21 +218,17 @@ pub extern "C" fn store_function_2(func: Option<extern "C" fn(u8) -> u8>) {
 
 #[no_mangle]
 pub extern "C" fn call_stored_function() {
-  unsafe {
-    if STORED_FUNCTION.is_none() {
-      return;
-    }
-    STORED_FUNCTION.unwrap()();
+  let f = *STORED_FUNCTION.lock().unwrap();
+  if let Some(f) = f {
+    f();
   }
 }
 
 #[no_mangle]
 pub extern "C" fn call_stored_function_2(arg: u8) {
-  unsafe {
-    if STORED_FUNCTION_2.is_none() {
-      return;
-    }
-    println!("{}", STORED_FUNCTION_2.unwrap()(arg));
+  let f = *STORED_FUNCTION_2.lock().unwrap();
+  if let Some(f) = f {
+    println!("{}", f(arg));
   }
 }
 
@@ -237,11 +236,9 @@ pub extern "C" fn call_stored_function_2(arg: u8) {
 pub extern "C" fn call_stored_function_thread_safe() {
   std::thread::spawn(move || {
     std::thread::sleep(std::time::Duration::from_millis(1500));
-    unsafe {
-      if STORED_FUNCTION.is_none() {
-        return;
-      }
-      STORED_FUNCTION.unwrap()();
+    let f = *STORED_FUNCTION.lock().unwrap();
+    if let Some(f) = f {
+      f();
     }
   });
 }
@@ -250,11 +247,9 @@ pub extern "C" fn call_stored_function_thread_safe() {
 pub extern "C" fn call_stored_function_thread_safe_and_log() {
   std::thread::spawn(move || {
     std::thread::sleep(std::time::Duration::from_millis(1500));
-    unsafe {
-      if STORED_FUNCTION.is_none() {
-        return;
-      }
-      STORED_FUNCTION.unwrap()();
+    let f = *STORED_FUNCTION.lock().unwrap();
+    if let Some(f) = f {
+      f();
       println!("STORED_FUNCTION called");
     }
   });
@@ -264,12 +259,10 @@ pub extern "C" fn call_stored_function_thread_safe_and_log() {
 pub extern "C" fn call_stored_function_2_thread_safe(arg: u8) {
   std::thread::spawn(move || {
     std::thread::sleep(std::time::Duration::from_millis(1500));
-    unsafe {
-      if STORED_FUNCTION_2.is_none() {
-        return;
-      }
+    let f = *STORED_FUNCTION_2.lock().unwrap();
+    if let Some(f) = f {
       println!("Calling");
-      STORED_FUNCTION_2.unwrap()(arg);
+      f(arg);
     }
   });
 }
diff --git a/tests/specs/test/recursive_permissions_pledge/__test__.jsonc b/tests/specs/test/recursive_permissions_pledge/__test__.jsonc
index 7dfb5b7ff248f2..b40c1acd81205d 100644
--- a/tests/specs/test/recursive_permissions_pledge/__test__.jsonc
+++ b/tests/specs/test/recursive_permissions_pledge/__test__.jsonc
@@ -4,5 +4,5 @@
   "envs": {
     "RUST_BACKTRACE": "0"
   },
-  "output": "\n============================================================\nDeno has panicked. This is a bug in Deno. Please report this\nat https://github.com/denoland/deno/issues/new.\nIf you can reliably reproduce this panic, include the\nreproduction steps and re-run with the RUST_BACKTRACE=1 env\nvar set and include the backtrace in your report.\n\nPlatform: [WILDCARD]\nVersion: [WILDCARD]\nArgs: [[WILDCARD], \"test\", \"main.js\"]\n\nthread 'tokio-runtime-worker' panicked at [WILDCARD]testing.rs:[WILDCARD]:\npledge test permissions called before restoring previous pledge\nnote: run with `RUST_BACKTRACE=1` environment variable to display a backtrace\n"
+  "output": "\n============================================================\nDeno has panicked. This is a bug in Deno. Please report this\nat https://github.com/denoland/deno/issues/new.\nIf you can reliably reproduce this panic, include the\nreproduction steps and re-run with the RUST_BACKTRACE=1 env\nvar set and include the backtrace in your report.\n\nPlatform: [WILDCARD]\nVersion: [WILDCARD]\nArgs: [[WILDCARD], \"test\", \"main.js\"]\n\n\nthread 'tokio-runtime-worker' panicked at [WILDCARD]testing.rs:[WILDCARD]:\npledge test permissions called before restoring previous pledge\nnote: run with `RUST_BACKTRACE=1` environment variable to display a backtrace\n"
 }
diff --git a/tests/unit/rename_test.ts b/tests/unit/rename_test.ts
index bacd54c6759de0..ad1b41824f513e 100644
--- a/tests/unit/rename_test.ts
+++ b/tests/unit/rename_test.ts
@@ -249,26 +249,19 @@ Deno.test(
       () => {
         Deno.renameSync(olddir, fulldir);
       },
-      Deno.errors.PermissionDenied,
-      "Access is denied",
-    );
-    assertThrows(
-      () => {
-        Deno.renameSync(olddir, emptydir);
-      },
-      Deno.errors.PermissionDenied,
-      "Access is denied",
+      Error,
+      "The directory is not empty",
     );
     assertThrows(
       () => {
-        Deno.renameSync(olddir, emptydir);
+        Deno.renameSync(olddir, file);
       },
       Error,
-      `rename '${olddir}' -> '${emptydir}'`,
+      "The directory name is invalid",
     );
 
     // should succeed on Windows
-    Deno.renameSync(olddir, file);
-    assertDirectory(file);
+    Deno.renameSync(olddir, emptydir);
+    assertDirectory(emptydir);
   },
 );
diff --git a/tests/util/server/src/lib.rs b/tests/util/server/src/lib.rs
index 477568ab1b3416..47447ef10c6e39 100644
--- a/tests/util/server/src/lib.rs
+++ b/tests/util/server/src/lib.rs
@@ -636,7 +636,7 @@ pub struct CheckOutputIntegrationTest<'a> {
   pub cwd: Option<&'a str>,
 }
 
-impl<'a> CheckOutputIntegrationTest<'a> {
+impl CheckOutputIntegrationTest<'_> {
   pub fn output(&self) -> TestCommandOutput {
     let mut context_builder = TestContextBuilder::default();
     if self.temp_cwd {
diff --git a/tests/util/server/src/lsp.rs b/tests/util/server/src/lsp.rs
index 86594174724b85..917074cfc79978 100644
--- a/tests/util/server/src/lsp.rs
+++ b/tests/util/server/src/lsp.rs
@@ -1094,11 +1094,8 @@ impl LspClient {
 
   fn write(&mut self, value: Value) {
     let value_str = value.to_string();
-    let msg = format!(
-      "Content-Length: {}\r\n\r\n{}",
-      value_str.as_bytes().len(),
-      value_str
-    );
+    let msg =
+      format!("Content-Length: {}\r\n\r\n{}", value_str.len(), value_str);
     self.writer.write_all(msg.as_bytes()).unwrap();
     self.writer.flush().unwrap();
   }
diff --git a/tests/util/server/src/pty.rs b/tests/util/server/src/pty.rs
index d72617cd5e1083..5de85fbbc30893 100644
--- a/tests/util/server/src/pty.rs
+++ b/tests/util/server/src/pty.rs
@@ -353,6 +353,7 @@ fn create_pty(
 
   // SAFETY: Posix APIs
   unsafe {
+    #[allow(clippy::zombie_processes)]
     let cmd = std::process::Command::new(program)
       .current_dir(cwd)
       .args(args)
diff --git a/tests/util/server/src/servers/hyper_utils.rs b/tests/util/server/src/servers/hyper_utils.rs
index a8b30ac24e53eb..843d0bfec26407 100644
--- a/tests/util/server/src/servers/hyper_utils.rs
+++ b/tests/util/server/src/servers/hyper_utils.rs
@@ -69,7 +69,7 @@ where
   }
 }
 
-pub async fn run_server_with_acceptor<'a, A, F, S>(
+pub async fn run_server_with_acceptor<A, F, S>(
   mut acceptor: Pin<Box<A>>,
   handler: F,
   error_msg: &'static str,
diff --git a/tests/util/server/src/servers/mod.rs b/tests/util/server/src/servers/mod.rs
index 03f327319c25f6..ba3a713102b04e 100644
--- a/tests/util/server/src/servers/mod.rs
+++ b/tests/util/server/src/servers/mod.rs
@@ -450,7 +450,7 @@ async fn absolute_redirect(
 async fn main_server(
   req: Request<hyper::body::Incoming>,
 ) -> Result<Response<UnsyncBoxBody<Bytes, Infallible>>, anyhow::Error> {
-  return match (req.method(), req.uri().path()) {
+  match (req.method(), req.uri().path()) {
     (_, "/echo_server") => {
       let (parts, body) = req.into_parts();
       let mut response = Response::new(UnsyncBoxBody::new(Full::new(
@@ -1098,30 +1098,30 @@ console.log("imported", import.meta.url);
     }
     (&Method::GET, "/upgrade/sleep/release-latest.txt") => {
       tokio::time::sleep(Duration::from_secs(95)).await;
-      return Ok(
+      Ok(
         Response::builder()
           .status(StatusCode::OK)
           .body(string_body("99999.99.99"))
           .unwrap(),
-      );
+      )
     }
     (&Method::GET, "/upgrade/sleep/canary-latest.txt") => {
       tokio::time::sleep(Duration::from_secs(95)).await;
-      return Ok(
+      Ok(
         Response::builder()
           .status(StatusCode::OK)
           .body(string_body("bda3850f84f24b71e02512c1ba2d6bf2e3daa2fd"))
           .unwrap(),
-      );
+      )
     }
     (&Method::GET, "/release-latest.txt") => {
-      return Ok(
+      Ok(
         Response::builder()
           .status(StatusCode::OK)
           // use a deno version that will never happen
           .body(string_body("99999.99.99"))
           .unwrap(),
-      );
+      )
     }
     (
       &Method::GET,
@@ -1133,14 +1133,12 @@ console.log("imported", import.meta.url);
       | "/canary-x86_64-unknown-linux-musl-latest.txt"
       | "/canary-aarch64-unknown-linux-musl-latest.txt"
       | "/canary-x86_64-pc-windows-msvc-latest.txt",
-    ) => {
-      return Ok(
-        Response::builder()
-          .status(StatusCode::OK)
-          .body(string_body("bda3850f84f24b71e02512c1ba2d6bf2e3daa2fd"))
-          .unwrap(),
-      );
-    }
+    ) => Ok(
+      Response::builder()
+        .status(StatusCode::OK)
+        .body(string_body("bda3850f84f24b71e02512c1ba2d6bf2e3daa2fd"))
+        .unwrap(),
+    ),
     _ => {
       let uri_path = req.uri().path();
       let mut file_path = testdata_path().to_path_buf();
@@ -1171,7 +1169,7 @@ console.log("imported", import.meta.url);
         .body(empty_body())
         .map_err(|e| e.into())
     }
-  };
+  }
 }
 
 async fn wrap_redirect_server(port: u16) {
diff --git a/tests/util/server/src/servers/npm_registry.rs b/tests/util/server/src/servers/npm_registry.rs
index df0d3734e3f718..e2c1ceb5e869e1 100644
--- a/tests/util/server/src/servers/npm_registry.rs
+++ b/tests/util/server/src/servers/npm_registry.rs
@@ -69,7 +69,7 @@ fn run_npm_server<F, S>(
   port: u16,
   error_msg: &'static str,
   handler: F,
-) -> Vec<LocalBoxFuture<()>>
+) -> Vec<LocalBoxFuture<'static, ()>>
 where
   F: Fn(Request<hyper::body::Incoming>) -> S + Copy + 'static,
   S: Future<Output = HandlerOutput> + 'static,

From 9a2386c82d0914582714828f1e87e95c7dda91a5 Mon Sep 17 00:00:00 2001
From: Nathan Whitaker <17734409+nathanwhit@users.noreply.github.com>
Date: Tue, 25 Feb 2025 10:11:00 -0800
Subject: [PATCH 030/115] chore: fix linter error on `main` (#28301)

https://github.com/denoland/deno/actions/runs/13526501249/job/37798308222
---
 ext/node/ops/sqlite/statement.rs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ext/node/ops/sqlite/statement.rs b/ext/node/ops/sqlite/statement.rs
index 46198dbafd87bd..03c807e0e1b324 100644
--- a/ext/node/ops/sqlite/statement.rs
+++ b/ext/node/ops/sqlite/statement.rs
@@ -393,7 +393,7 @@ impl StatementSync {
 
 struct ResetGuard<'a>(&'a StatementSync);
 
-impl<'a> Drop for ResetGuard<'a> {
+impl Drop for ResetGuard<'_> {
   fn drop(&mut self) {
     let _ = self.0.reset();
   }

From 0f76f6c211cd0a4017c9ea1fdecddf4703238eed Mon Sep 17 00:00:00 2001
From: Nayeem Rahman <nayeemrmn99@gmail.com>
Date: Tue, 25 Feb 2025 21:56:50 +0000
Subject: [PATCH 031/115] perf(lsp): don't set resolver npm reqs if unchanged
 (#28302)

---
 Cargo.lock                     |  8 ++++----
 Cargo.toml                     |  2 +-
 cli/lsp/resolver.rs            | 29 +++++++++++++++++++++++------
 tests/integration/lsp_tests.rs | 29 +++++++++--------------------
 4 files changed, 37 insertions(+), 31 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 13a1f42a7e6a59..25daf9aa8c4969 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1570,9 +1570,9 @@ dependencies = [
 
 [[package]]
 name = "deno-tower-lsp-macros"
-version = "0.11.2"
+version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61083feefc9c29a3f45670be6b60001ec209286c861b6830cd30ba4af9a6e9d8"
+checksum = "f9221b99f1cc7c395686b9f2d5652c5855666a9282c8d5a68fabd4b1d4994fa9"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2692,9 +2692,9 @@ dependencies = [
 
 [[package]]
 name = "deno_tower_lsp"
-version = "0.4.2"
+version = "0.4.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c29dce82d67177bbc36468f64cddd8c25242fc31b99369ef0126fa7fad64c5ec"
+checksum = "67da3258ce785368c691b206d00d4109f8eead24da0603abc70e04b04871a3df"
 dependencies = [
  "async-trait",
  "auto_impl",
diff --git a/Cargo.toml b/Cargo.toml
index 9948e193b783a9..334b4cf44f3f6f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -218,7 +218,7 @@ tokio-socks = "0.5.1"
 tokio-util = "0.7.4"
 tower = { version = "0.5.2", default-features = false, features = ["retry", "util"] }
 tower-http = { version = "0.6.1", features = ["decompression-br", "decompression-gzip"] }
-tower-lsp = { package = "deno_tower_lsp", version = "=0.4.2", features = ["proposed"] }
+tower-lsp = { package = "deno_tower_lsp", version = "=0.4.3", features = ["proposed"] }
 tower-service = "0.3.2"
 twox-hash = "=1.6.3"
 url = { version = "2.5", features = ["serde", "expose_internals"] }
diff --git a/cli/lsp/resolver.rs b/cli/lsp/resolver.rs
index f3b04702634737..800f30fa29759c 100644
--- a/cli/lsp/resolver.rs
+++ b/cli/lsp/resolver.rs
@@ -5,6 +5,8 @@ use std::collections::BTreeMap;
 use std::collections::BTreeSet;
 use std::collections::HashMap;
 use std::collections::HashSet;
+use std::sync::atomic::AtomicBool;
+use std::sync::atomic::Ordering;
 use std::sync::Arc;
 
 use dashmap::DashMap;
@@ -90,6 +92,7 @@ struct LspScopeResolver {
   jsr_resolver: Option<Arc<JsrCacheResolver>>,
   npm_graph_resolver: Arc<CliNpmGraphResolver>,
   npm_installer: Option<Arc<NpmInstaller>>,
+  npm_installer_dirty: Arc<AtomicBool>,
   npm_resolution: Arc<NpmResolutionCell>,
   npm_resolver: Option<CliNpmResolver>,
   node_resolver: Option<Arc<CliNodeResolver>>,
@@ -112,6 +115,7 @@ impl Default for LspScopeResolver {
       jsr_resolver: None,
       npm_graph_resolver: factory.npm_graph_resolver().clone(),
       npm_installer: None,
+      npm_installer_dirty: Default::default(),
       npm_resolver: None,
       node_resolver: None,
       npm_resolution: factory.services.npm_resolution.clone(),
@@ -232,6 +236,7 @@ impl LspScopeResolver {
       npm_pkg_req_resolver,
       npm_resolver,
       npm_installer,
+      npm_installer_dirty: Default::default(),
       npm_resolution: factory.services.npm_resolution.clone(),
       node_resolver,
       pkg_json_resolver,
@@ -305,6 +310,7 @@ impl LspScopeResolver {
       npm_graph_resolver: factory.npm_graph_resolver().clone(),
       // npm installer isn't necessary for a snapshot
       npm_installer: None,
+      npm_installer_dirty: Default::default(),
       npm_pkg_req_resolver: factory.npm_pkg_req_resolver().cloned(),
       npm_resolution: factory.services.npm_resolution.clone(),
       npm_resolver: factory.npm_resolver().cloned(),
@@ -376,6 +382,7 @@ impl LspResolver {
         .redirect_resolver
         .as_ref()
         .inspect(|r| r.did_cache());
+      resolver.npm_installer_dirty.store(true, Ordering::Relaxed);
     }
   }
 
@@ -389,14 +396,24 @@ impl LspResolver {
       .into_iter()
       .chain(self.by_scope.iter().map(|(s, r)| (Some(s), r)))
     {
-      let dep_info = dep_info_by_scope.get(&scope.cloned());
-      if let Some(dep_info) = dep_info {
-        *resolver.dep_info.lock() = dep_info.clone();
+      let mut npm_installer_dirty =
+        resolver.npm_installer_dirty.swap(false, Ordering::Relaxed);
+      let dep_info = dep_info_by_scope
+        .get(&scope.cloned())
+        .cloned()
+        .unwrap_or_default();
+      {
+        let mut resolver_dep_info = resolver.dep_info.lock();
+        if !npm_installer_dirty {
+          npm_installer_dirty = dep_info.npm_reqs != resolver_dep_info.npm_reqs;
+        }
+        *resolver_dep_info = dep_info.clone();
+      }
+      if !npm_installer_dirty {
+        continue;
       }
       if let Some(npm_installer) = resolver.npm_installer.as_ref() {
-        let reqs = dep_info
-          .map(|i| i.npm_reqs.iter().cloned().collect::<Vec<_>>())
-          .unwrap_or_default();
+        let reqs = dep_info.npm_reqs.iter().cloned().collect::<Vec<_>>();
         if let Err(err) = npm_installer.set_package_reqs(&reqs).await {
           lsp_warn!("Could not set npm package requirements: {:#}", err);
         }
diff --git a/tests/integration/lsp_tests.rs b/tests/integration/lsp_tests.rs
index 059bb4f1209229..4d14397be79a21 100644
--- a/tests/integration/lsp_tests.rs
+++ b/tests/integration/lsp_tests.rs
@@ -10,8 +10,6 @@ use serde_json::json;
 use serde_json::Value;
 use test_util::assert_starts_with;
 use test_util::assertions::assert_json_subset;
-use test_util::deno_cmd_with_deno_dir;
-use test_util::env_vars_for_npm_tests;
 use test_util::lsp::range_of;
 use test_util::lsp::source_file;
 use test_util::lsp::LspClient;
@@ -10019,23 +10017,14 @@ fn lsp_npm_specifier_unopened_file() {
   client.initialize_default();
 
   // cache the other.ts file to the DENO_DIR
-  let deno = deno_cmd_with_deno_dir(client.deno_dir())
-    .current_dir(temp_dir.path())
-    .arg("cache")
-    .arg("--quiet")
-    .arg("other.ts")
-    .envs(env_vars_for_npm_tests())
-    .piped_output()
-    .spawn()
-    .unwrap();
-  let output = deno.wait_with_output().unwrap();
-  assert!(output.status.success());
-  assert_eq!(output.status.code(), Some(0));
-
-  let stdout = String::from_utf8(output.stdout).unwrap();
-  assert_eq!(stdout.as_str(), "");
-  let stderr = String::from_utf8(output.stderr).unwrap();
-  assert_eq!(stderr.as_str(), "");
+  client.write_request(
+    "workspace/executeCommand",
+    json!({
+      "command": "deno.cache",
+      "arguments": [[], temp_dir.url().join("other.ts").unwrap()],
+    }),
+  );
+  client.read_diagnostics();
 
   // open main.ts, which imports other.ts (unopened)
   client.did_open(json!({
@@ -16975,7 +16964,7 @@ fn lsp_uses_lockfile_for_npm_initialization() {
     assert!(!line.contains("Running npm resolution."), "Line: {}", line);
     line.contains("Server ready.")
   });
-  assert_eq!(skipping_count, 2);
+  assert_eq!(skipping_count, 1);
   client.shutdown();
 }
 

From cbdbc75031b5b8992adce36a3423582a813d1415 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= <biwanczuk@gmail.com>
Date: Wed, 26 Feb 2025 00:50:45 +0100
Subject: [PATCH 032/115] fix(add): better help text for --dev arg (#28304)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Bartek Iwańczuk <biwanczuk@gmail.com>
Co-authored-by: Leo Kettmeir <crowlkats@toaxl.com>
---
 cli/args/flags.rs | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index 331117e1565602..238b93b9f494fd 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -1660,8 +1660,7 @@ fn add_dev_arg() -> Arg {
   Arg::new("dev")
     .long("dev")
     .short('D')
-    .help("Add as a dev dependency")
-    .long_help("Add the package as a dev dependency. Note: This only applies when adding to a `package.json` file.")
+    .help("Add the package as a dev dependency. Note: This only applies when adding to a `package.json` file.")
     .action(ArgAction::SetTrue)
 }
 

From bd372dcdc2ecd4cd4345c044949e94f070e3c3f3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= <biwanczuk@gmail.com>
Date: Wed, 26 Feb 2025 04:00:45 +0100
Subject: [PATCH 033/115] refactor: update deno_core to enable pointer
 compression (#28306)

Exposes `deno_core/v8_enable_pointer_compression` feature:

https://github.com/denoland/deno_core/commit/d67efcba0ae01d2714573cfd7784fee3532ba653
---
 Cargo.lock | 16 ++++++++--------
 Cargo.toml |  2 +-
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 25daf9aa8c4969..7158fcf68b49de 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1751,9 +1751,9 @@ dependencies = [
 
 [[package]]
 name = "deno_core"
-version = "0.338.0"
+version = "0.340.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "113f3f08bd5daf99f1a7876c0f99cd8c3c609439fa0b808311ec856a253e95f0"
+checksum = "fe2827cc1215963b5073cca7db7c0ed8d8717a40e5ebad20832ae70e6df2d9d1"
 dependencies = [
  "anyhow",
  "az",
@@ -2374,9 +2374,9 @@ dependencies = [
 
 [[package]]
 name = "deno_ops"
-version = "0.214.0"
+version = "0.216.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ad885bf882be535f7714c713042129acba6f31a8efb5e6b2298f6e40cab9b16"
+checksum = "07cc2bc8f1754c7f66b701a05fb12ca39dc582edf8b4f04a422ae487f0223fa9"
 dependencies = [
  "indexmap 2.3.0",
  "proc-macro-rules",
@@ -7280,9 +7280,9 @@ dependencies = [
 
 [[package]]
 name = "serde_v8"
-version = "0.247.0"
+version = "0.249.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12bbfafb7b707cbed49d1eaf48f4aa41b5ff57f813d1a80f77244e6e2fa4507e"
+checksum = "41bd50e0136873d94207fcbd1a78bd8da0b7bfa4537e1383377c7cf2c1d811b1"
 dependencies = [
  "deno_error",
  "num-bigint",
@@ -9027,9 +9027,9 @@ dependencies = [
 
 [[package]]
 name = "v8"
-version = "134.4.0"
+version = "134.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "224c6c3d1fd3c0356224b2ad355b61c242cdafa9d14cc31b7f161ea177b3b4e9"
+checksum = "21c7a224a7eaf3f98c1bad772fbaee56394dce185ef7b19a2e0ca5e3d274165d"
 dependencies = [
  "bindgen 0.70.1",
  "bitflags 2.8.0",
diff --git a/Cargo.toml b/Cargo.toml
index 334b4cf44f3f6f..837e27afe9924a 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -51,7 +51,7 @@ repository = "https://github.com/denoland/deno"
 
 [workspace.dependencies]
 deno_ast = { version = "=0.45.1", features = ["transpiling"] }
-deno_core = { version = "0.338.0" }
+deno_core = { version = "0.340.0" }
 
 deno_bench_util = { version = "0.187.0", path = "./bench_util" }
 deno_config = { version = "=0.50.0", features = ["workspace"] }

From 1a30b7450b2380228d8b0e3e5278ec352bef01c6 Mon Sep 17 00:00:00 2001
From: Muthuraj Ramalingakumar <muthu90tech@gmail.com>
Date: Tue, 25 Feb 2025 21:52:18 -0800
Subject: [PATCH 034/115] fix(ext/node): node compatibility issue missing fd in
 createServer callback socket object (#27789)

---
 ext/net/01_net.js                             | 17 +++++++++++------
 ext/net/ops.rs                                | 19 +++++++++++++++++--
 .../polyfills/internal_binding/tcp_wrap.ts    |  8 ++++++--
 3 files changed, 34 insertions(+), 10 deletions(-)

diff --git a/ext/net/01_net.js b/ext/net/01_net.js
index 3afbd031e6eede..4d3004737ed9ea 100644
--- a/ext/net/01_net.js
+++ b/ext/net/01_net.js
@@ -5,6 +5,7 @@ const {
   BadResourcePrototype,
   InterruptedPrototype,
   internalRidSymbol,
+  internalFdSymbol,
   createCancelHandle,
 } = core;
 import {
@@ -99,13 +100,17 @@ class Conn {
 
   #readable;
   #writable;
-
-  constructor(rid, remoteAddr, localAddr) {
+  constructor(rid, remoteAddr, localAddr, fd) {
     ObjectDefineProperty(this, internalRidSymbol, {
       __proto__: null,
       enumerable: false,
       value: rid,
     });
+    ObjectDefineProperty(this, internalFdSymbol, {
+      __proto__: null,
+      enumerable: false,
+      value: fd,
+    });
     this.#rid = rid;
     this.#remoteAddr = remoteAddr;
     this.#localAddr = localAddr;
@@ -211,8 +216,8 @@ class UpgradedConn extends Conn {
 class TcpConn extends Conn {
   #rid = 0;
 
-  constructor(rid, remoteAddr, localAddr) {
-    super(rid, remoteAddr, localAddr);
+  constructor(rid, remoteAddr, localAddr, fd) {
+    super(rid, remoteAddr, localAddr, fd);
     ObjectDefineProperty(this, internalRidSymbol, {
       __proto__: null,
       enumerable: false,
@@ -278,12 +283,12 @@ class Listener {
     }
     this.#promise = promise;
     if (this.#unref) core.unrefOpPromise(promise);
-    const { 0: rid, 1: localAddr, 2: remoteAddr } = await promise;
+    const { 0: rid, 1: localAddr, 2: remoteAddr, 3: fd } = await promise;
     this.#promise = null;
     if (this.addr.transport == "tcp") {
       localAddr.transport = "tcp";
       remoteAddr.transport = "tcp";
-      return new TcpConn(rid, remoteAddr, localAddr);
+      return new TcpConn(rid, remoteAddr, localAddr, fd);
     } else if (this.addr.transport == "unix") {
       return new UnixConn(
         rid,
diff --git a/ext/net/ops.rs b/ext/net/ops.rs
index 768dd33135e311..254db58a541ceb 100644
--- a/ext/net/ops.rs
+++ b/ext/net/ops.rs
@@ -46,6 +46,8 @@ use crate::resolve_addr::resolve_addr_sync;
 use crate::tcp::TcpListener;
 use crate::NetPermissions;
 
+pub type Fd = u32;
+
 #[derive(Serialize, Clone, Debug)]
 #[serde(rename_all = "camelCase")]
 pub struct TlsHandshakeInfo {
@@ -165,7 +167,7 @@ pub(crate) fn accept_err(e: std::io::Error) -> NetError {
 pub async fn op_net_accept_tcp(
   state: Rc<RefCell<OpState>>,
   #[smi] rid: ResourceId,
-) -> Result<(ResourceId, IpAddr, IpAddr), NetError> {
+) -> Result<(ResourceId, IpAddr, IpAddr, Option<Fd>), NetError> {
   let resource = state
     .borrow()
     .resource_table
@@ -180,6 +182,14 @@ pub async fn op_net_accept_tcp(
     .try_or_cancel(cancel)
     .await
     .map_err(accept_err)?;
+  let mut _fd_raw: Option<Fd> = None;
+  #[cfg(not(windows))]
+  {
+    use std::os::fd::AsFd;
+    use std::os::fd::AsRawFd;
+    let fd = tcp_stream.as_fd();
+    _fd_raw = Some(fd.as_raw_fd() as u32);
+  }
   let local_addr = tcp_stream.local_addr()?;
   let remote_addr = tcp_stream.peer_addr()?;
 
@@ -187,7 +197,12 @@ pub async fn op_net_accept_tcp(
   let rid = state
     .resource_table
     .add(TcpStreamResource::new(tcp_stream.into_split()));
-  Ok((rid, IpAddr::from(local_addr), IpAddr::from(remote_addr)))
+  Ok((
+    rid,
+    IpAddr::from(local_addr),
+    IpAddr::from(remote_addr),
+    _fd_raw,
+  ))
 }
 
 #[op2(async)]
diff --git a/ext/node/polyfills/internal_binding/tcp_wrap.ts b/ext/node/polyfills/internal_binding/tcp_wrap.ts
index 6c19e2dd29837e..654588c98d2c3f 100644
--- a/ext/node/polyfills/internal_binding/tcp_wrap.ts
+++ b/ext/node/polyfills/internal_binding/tcp_wrap.ts
@@ -27,6 +27,8 @@
 // TODO(petamoriken): enable prefer-primordials for node polyfills
 // deno-lint-ignore-file prefer-primordials
 
+import { core } from "ext:core/mod.js";
+const { internalFdSymbol } = core;
 import { notImplemented } from "ext:deno_node/_utils.ts";
 import { unreachable } from "ext:deno_node/_util/asserts.ts";
 import { ConnectionWrap } from "ext:deno_node/internal_binding/connection_wrap.ts";
@@ -141,6 +143,10 @@ export class TCP extends ConnectionWrap {
     }
   }
 
+  get fd() {
+    return this[kStreamBaseField]?.[internalFdSymbol];
+  }
+
   /**
    * Opens a file descriptor.
    * @param fd The file descriptor to open.
@@ -221,7 +227,6 @@ export class TCP extends ConnectionWrap {
     const address = listener.addr as Deno.NetAddr;
     this.#address = address.hostname;
     this.#port = address.port;
-
     this.#listener = listener;
 
     // TODO(kt3k): Delays the accept() call 2 ticks. Deno.Listener can't be closed
@@ -458,7 +463,6 @@ export class TCP extends ConnectionWrap {
 
     // Reset the backoff delay upon successful accept.
     this.#acceptBackoffDelay = undefined;
-
     const connectionHandle = new TCP(socketType.SOCKET, connection);
     this.#connections++;
 

From 9f877ac5bdfbf9a5699b2248c78f220b3f9cc2a2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= <biwanczuk@gmail.com>
Date: Wed, 26 Feb 2025 15:15:56 +0100
Subject: [PATCH 035/115] fix(lint): run with --no-prompt (#28305)

Ref https://github.com/denoland/deno/issues/28258

This commit forces lint plugins to run with `--no-prompt` flag,
bringing parity between running plugins in the LSP and via
`deno lint`.

There's no agreement how to handle permissions in the lint
plugins yet, so it's better to make both subcommands behave
identically for the time being.
---
 cli/tools/lint/plugins.rs | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/cli/tools/lint/plugins.rs b/cli/tools/lint/plugins.rs
index 10752097d155a4..7808ef64ee60cd 100644
--- a/cli/tools/lint/plugins.rs
+++ b/cli/tools/lint/plugins.rs
@@ -31,6 +31,7 @@ use tokio::sync::oneshot;
 use crate::args::DenoSubcommand;
 use crate::args::Flags;
 use crate::args::LintFlags;
+use crate::args::PermissionFlags;
 use crate::factory::CliFactory;
 use crate::ops::lint::LintPluginContainer;
 use crate::tools::lint::serialize_ast_to_buffer;
@@ -136,6 +137,10 @@ async fn create_plugin_runner_inner(
 ) -> Result<PluginHost, AnyError> {
   let flags = Flags {
     subcommand: DenoSubcommand::Lint(LintFlags::default()),
+    permissions: PermissionFlags {
+      no_prompt: true,
+      ..Default::default()
+    },
     ..Default::default()
   };
   let flags = Arc::new(flags);

From cdf6ea32c4fb8c4863b20c1af40d423cd88bd10c Mon Sep 17 00:00:00 2001
From: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date: Wed, 26 Feb 2025 16:55:47 +0200
Subject: [PATCH 036/115] chore: prefer workspace dependencies in order to
 avoid duplicate crates (#28281)

---
 Cargo.toml                     | 107 +++++++++++++++++++++++++++++++++
 cli/Cargo.toml                 |  72 +++++++++++-----------
 cli/lib/Cargo.toml             |   2 +-
 cli/rt/Cargo.toml              |   4 +-
 ext/canvas/Cargo.toml          |  11 ++--
 ext/crypto/Cargo.toml          |  22 +++----
 ext/fetch/Cargo.toml           |   4 +-
 ext/ffi/Cargo.toml             |  14 ++---
 ext/fs/Cargo.toml              |   2 +-
 ext/http/Cargo.toml            |   6 +-
 ext/napi/Cargo.toml            |   4 +-
 ext/net/Cargo.toml             |   6 +-
 ext/node/Cargo.toml            |  54 ++++++++---------
 ext/os/Cargo.toml              |   2 +-
 ext/process/Cargo.toml         |   6 +-
 ext/tls/Cargo.toml             |   2 +-
 ext/url/Cargo.toml             |   2 +-
 ext/web/Cargo.toml             |   4 +-
 ext/webgpu/Cargo.toml          |   2 +-
 resolvers/node/Cargo.toml      |   2 +-
 resolvers/npm_cache/Cargo.toml |   2 +-
 runtime/Cargo.toml             |   2 +-
 runtime/permissions/Cargo.toml |   4 +-
 tests/Cargo.toml               |  12 ++--
 tests/napi/Cargo.toml          |   6 +-
 tests/util/server/Cargo.toml   |   6 +-
 26 files changed, 232 insertions(+), 128 deletions(-)

diff --git a/Cargo.toml b/Cargo.toml
index 837e27afe9924a..7231391708f936 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -254,10 +254,117 @@ syn = { version = "2", features = ["full", "extra-traits"] }
 nix = "=0.27.1"
 
 # windows deps
+aead-gcm-stream = "0.4"
+aes-gcm = "0.10"
+aes-kw = "0.2.1"
+anstream = "0.6.14"
+async-compression = "0.4"
+base64-simd = "0.8"
+bincode = "=1.3.3"
+blake2 = "0.10.6"
+bytemuck = "1.17.1"
+clap = "=4.5.30"
+clap_complete = "=4.5.45"
+clap_complete_fig = "=4.5.2"
+const-oid = "0.9.5"
+cranelift = "0.116"
+cranelift-native = "0.116"
+crossterm = "0.28.1"
+curve25519-dalek = "4.1.3"
+deno_doc = "=0.168.0"
+deno_graph = "=0.88.0"
+deno_lint = "0.73.1"
+deno_native_certs = "0.3.0"
+deno_task_shell = "=0.20.2"
+deno_whoami = "0.1.0"
+der = "0.7.9"
+dhat = "0.3.3"
+digest = "0.10.5"
+dissimilar = "=1.0.4"
+dotenvy = "0.15.7"
+dprint-plugin-json = "=0.19.4"
+dprint-plugin-jupyter = "=0.1.5"
+dprint-plugin-markdown = "=0.17.8"
+dprint-plugin-typescript = "=0.93.4"
+dsa = "0.6.3"
+dyn-clone = "1"
+ecdsa = "0.16.9"
+ed25519-dalek = "2.1.1"
+ed448-goldilocks = "0.8.3"
+env_logger = "=0.10.0"
+error_reporter = "1"
+fancy-regex = "=0.10.0"
+file_test_runner = "0.7.3"
+flaky_test = "=0.2.2"
+fqdn = "0.3.4"
+hickory-client = "0.25.0-alpha.4"
+hickory-proto = "0.25.0-alpha.4"
+hickory-server = "0.25.0-alpha.4"
+idna = "1.0.3"
+image = { version = "0.25.4", default-features = false }
+ipnetwork = "0.20.0"
+itertools = "0.10"
 junction = "=1.2.0"
+jupyter_runtime = "=0.19.0"
+k256 = "0.13.1"
+lcms2 = "6.1.0"
+libffi = "=3.2.0"
+libffi-sys = "=2.3.0"
+libloading = "0.7"
+libsqlite3-sys = "0.30.1"
+libuv-sys-lite = "=1.48.2"
+malva = "=0.11.0"
+markup_fmt = "=0.18.0"
+md-5 = "0.10.5"
+md4 = "0.10.2"
+memchr = "2.7.4"
+memmap2 = "0.9"
+mime = "0.3.16"
+napi-build = "1"
+napi-sys = { version = "=2.2.2", default-features = false }
+netif = "0.1.6"
+num-bigint-dig = "0.8.2"
+num-integer = "0.1.45"
+num-traits = "0.2.19"
+open = "5.0.1"
+p521 = "0.13.3"
+path-clean = "=0.1.0"
+pathdiff = "0.2.1"
+pbkdf2 = "0.12.1"
+pin-project-lite = "0.2.13"
+pkcs8 = "0.10.2"
+pretty_yaml = "=0.5.0"
+quick-junit = "0.3.5"
+quinn = { version = "0.11.6", default-features = false }
+rayon = "1.8.0"
+ripemd = "0.1.3"
+rustyline-derive = "=0.7.0"
+same-file = "1.0.6"
+scrypt = "0.11.0"
+semver = "=1.0.14"
+serde-value = "0.7"
+sha3 = "0.10.8"
+simd-json = "0.14.0"
+sm3 = "0.4.2"
+sqlformat = "=0.3.2"
+strsim = "0.11.1"
+text-size = "=1.1.0"
+text_lines = "=0.6.0"
+tokio-eld = "0.2"
+tracing = "0.1"
+tracing-opentelemetry = "0.28.0"
+tracing-subscriber = "0.3.19"
+typed-arena = "=2.0.2"
+unicode-width = "0.1.3"
+urlpattern = "0.3.0"
+web-transport-proto = "0.2.3"
+win32job = "2"
 winapi = "=0.3.9"
 windows-sys = { version = "0.59.0", features = ["Win32_Foundation", "Win32_Media", "Win32_Storage_FileSystem", "Win32_System_IO", "Win32_System_WindowsProgramming", "Wdk", "Wdk_System", "Wdk_System_SystemInformation", "Win32_Security", "Win32_System_Pipes", "Wdk_Storage_FileSystem", "Win32_System_Registry", "Win32_System_Kernel", "Win32_System_Threading", "Win32_UI", "Win32_UI_Shell"] }
 winres = "=0.1.12"
+x25519-dalek = "2.0.0"
+x509-parser = "0.15.0"
+zip = { version = "2.1.6", default-features = false }
 
 [profile.release]
 codegen-units = 1
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index 0e67d2bdbdc001..65143a75e5185f 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -73,9 +73,9 @@ deno_config = { workspace = true, features = ["sync", "workspace"] }
 deno_core = { workspace = true, features = ["include_js_files_for_snapshotting"] }
 deno_doc = { version = "=0.168.0", features = ["rust", "comrak"] }
 deno_error.workspace = true
-deno_graph = { version = "=0.88.0" }
+deno_graph.workspace = true
 deno_lib.workspace = true
-deno_lint = { version = "0.73.1" }
+deno_lint.workspace = true
 deno_lockfile.workspace = true
 deno_media_type = { workspace = true, features = ["data_url", "decoding", "module_specifier"] }
 deno_npm.workspace = true
@@ -85,36 +85,36 @@ deno_path_util.workspace = true
 deno_resolver = { workspace = true, features = ["sync"] }
 deno_runtime = { workspace = true, features = ["include_js_files_for_snapshotting"] }
 deno_semver.workspace = true
-deno_snapshots = { workspace = true }
-deno_task_shell = "=0.20.2"
+deno_snapshots.workspace = true
+deno_task_shell.workspace = true
 deno_telemetry.workspace = true
 deno_terminal.workspace = true
 libsui.workspace = true
 node_resolver.workspace = true
 
-anstream = "0.6.14"
+anstream.workspace = true
 async-trait.workspace = true
 base64.workspace = true
-bincode = "=1.3.3"
+bincode.workspace = true
 boxed_error.workspace = true
 bytes.workspace = true
 capacity_builder.workspace = true
 chrono = { workspace = true, features = ["now"] }
-clap = { version = "=4.5.30", features = ["env", "string", "wrap_help", "error-context"] }
-clap_complete = "=4.5.45"
-clap_complete_fig = "=4.5.2"
+clap = { workspace = true, features = ["env", "string", "wrap_help", "error-context"] }
+clap_complete.workspace = true
+clap_complete_fig.workspace = true
 color-print.workspace = true
 console_static_text.workspace = true
-crossterm = "0.28.1"
+crossterm.workspace = true
 dashmap.workspace = true
-dhat = { version = "0.3.3", optional = true }
-dissimilar = "=1.0.4"
-dotenvy = "0.15.7"
-dprint-plugin-json = "=0.19.4"
-dprint-plugin-jupyter = "=0.1.5"
-dprint-plugin-markdown = "=0.17.8"
-dprint-plugin-typescript = "=0.93.4"
-fancy-regex = "=0.10.0"
+dhat = { workspace = true, optional = true }
+dissimilar.workspace = true
+dotenvy.workspace = true
+dprint-plugin-json.workspace = true
+dprint-plugin-jupyter.workspace = true
+dprint-plugin-markdown.workspace = true
+dprint-plugin-typescript.workspace = true
+fancy-regex.workspace = true
 faster-hex.workspace = true
 # If you disable the default __vendored_zlib_ng feature above, you _must_ be able to link against `-lz`.
 flate2.workspace = true
@@ -131,51 +131,51 @@ libc.workspace = true
 libz-sys.workspace = true
 log = { workspace = true, features = ["serde"] }
 lsp-types.workspace = true
-malva = "=0.11.0"
-markup_fmt = "=0.18.0"
+malva.workspace = true
+markup_fmt.workspace = true
 memmem.workspace = true
 notify.workspace = true
 once_cell.workspace = true
-open = "5.0.1"
+open.workspace = true
 opentelemetry.workspace = true
 opentelemetry-otlp.workspace = true
 opentelemetry-semantic-conventions.workspace = true
 opentelemetry_sdk.workspace = true
 p256.workspace = true
-pathdiff = "0.2.1"
+pathdiff.workspace = true
 percent-encoding.workspace = true
 phf.workspace = true
-pretty_yaml = "=0.5.0"
-quick-junit = "^0.3.5"
+pretty_yaml.workspace = true
+quick-junit.workspace = true
 rand = { workspace = true, features = ["small_rng"] }
 regex.workspace = true
 ring.workspace = true
 rustyline.workspace = true
-rustyline-derive = "=0.7.0"
+rustyline-derive.workspace = true
 serde.workspace = true
 serde_repr.workspace = true
 sha2.workspace = true
-spki = { version = "0.7", features = ["pem"] }
-sqlformat = "=0.3.2"
-strsim = "0.11.1"
+spki = { workspace = true, features = ["pem"] }
+sqlformat.workspace = true
+strsim.workspace = true
 sys_traits = { workspace = true, features = ["getrandom", "filetime", "libc", "real", "strip_unc", "winapi"] }
 tar.workspace = true
 tempfile.workspace = true
-text-size = "=1.1.0"
-text_lines = "=0.6.0"
+text-size.workspace = true
+text_lines.workspace = true
 thiserror.workspace = true
 tokio.workspace = true
 tokio-util.workspace = true
 tower.workspace = true
 tower-lsp.workspace = true
-tracing = { version = "0.1", features = ["log"], optional = true }
-tracing-opentelemetry = { version = "0.28.0", optional = true }
-tracing-subscriber = { version = "0.3.19", features = ["env-filter"], optional = true }
-typed-arena = "=2.0.2"
-unicode-width = "0.1.3"
+tracing = { workspace = true, features = ["log"], optional = true }
+tracing-opentelemetry = { workspace = true, optional = true }
+tracing-subscriber = { workspace = true, features = ["env-filter"], optional = true }
+typed-arena.workspace = true
+unicode-width.workspace = true
 uuid = { workspace = true, features = ["serde"] }
 walkdir.workspace = true
-zip = { version = "2.1.6", default-features = false, features = ["deflate-flate2"] }
+zip = { workspace = true, features = ["deflate-flate2"] }
 zstd.workspace = true
 
 [target.'cfg(windows)'.dependencies]
diff --git a/cli/lib/Cargo.toml b/cli/lib/Cargo.toml
index e053b3912013dc..1222af8a0bdd0f 100644
--- a/cli/lib/Cargo.toml
+++ b/cli/lib/Cargo.toml
@@ -25,7 +25,7 @@ deno_resolver = { workspace = true, features = ["sync"] }
 deno_runtime.workspace = true
 deno_semver.workspace = true
 deno_terminal.workspace = true
-env_logger = "=0.10.0"
+env_logger.workspace = true
 faster-hex.workspace = true
 indexmap.workspace = true
 libsui.workspace = true
diff --git a/cli/rt/Cargo.toml b/cli/rt/Cargo.toml
index 55e1eceb6782f9..d32e5324580966 100644
--- a/cli/rt/Cargo.toml
+++ b/cli/rt/Cargo.toml
@@ -40,11 +40,11 @@ deno_runtime = { workspace = true, features = ["include_js_files_for_snapshottin
 deno_semver.workspace = true
 deno_snapshots.workspace = true
 deno_terminal.workspace = true
-libsui = "0.5.0"
+libsui.workspace = true
 node_resolver.workspace = true
 
 async-trait.workspace = true
-bincode = "=1.3.3"
+bincode.workspace = true
 import_map = { version = "=0.21.0", features = ["ext"] }
 indexmap.workspace = true
 log = { workspace = true, features = ["serde"] }
diff --git a/ext/canvas/Cargo.toml b/ext/canvas/Cargo.toml
index 76fad0b9feb8f7..ebc26ecd578f1b 100644
--- a/ext/canvas/Cargo.toml
+++ b/ext/canvas/Cargo.toml
@@ -14,18 +14,15 @@ description = "OffscreenCanvas implementation for Deno"
 path = "lib.rs"
 
 [dependencies]
-bytemuck = "1.17.1"
+bytemuck.workspace = true
 deno_core.workspace = true
 deno_error.workspace = true
-image = { version = "0.25.4", default-features = false, features = ["png", "jpeg", "bmp", "ico" # NOTE: Temporarily not supported due to build size concerns
-  # https://github.com/denoland/deno/pull/25517#issuecomment-2626044644
-  # "webp", "gif"
-] }
+image = { workspace = true, features = ["png", "jpeg", "bmp", "ico"] }
 # NOTE: The qcms is a color space conversion crate which parses ICC profiles that used in Gecko,
 # however it supports only 8-bit color depth currently.
 # https://searchfox.org/mozilla-central/rev/f09e3f9603a08b5b51bf504846091579bc2ff531/gfx/qcms/src/transform.rs#130-137
 # It seems to be failed to build for aarch64-unknown-linux-gnu with pkg-config.
 # https://github.com/kornelski/rust-lcms2-sys/blob/b8e9c3efcf266b88600318fb519c073b9ebb61b7/README.md#L26
-lcms2 = { version = "6.1.0", features = ["static"] }
-num-traits = { version = "0.2.19" }
+lcms2 = { workspace = true, features = ["static"] }
+num-traits.workspace = true
 thiserror.workspace = true
diff --git a/ext/crypto/Cargo.toml b/ext/crypto/Cargo.toml
index 1e8eaf2de15486..fad3cbe80af6fb 100644
--- a/ext/crypto/Cargo.toml
+++ b/ext/crypto/Cargo.toml
@@ -15,23 +15,23 @@ path = "lib.rs"
 
 [dependencies]
 aes.workspace = true
-aes-gcm = "0.10"
-aes-kw = { version = "0.2.1", features = ["alloc"] }
+aes-gcm.workspace = true
+aes-kw = { workspace = true, features = ["alloc"] }
 base64.workspace = true
 cbc.workspace = true
-const-oid = "0.9.0"
+const-oid.workspace = true
 ctr.workspace = true
-curve25519-dalek = "4.1.3"
+curve25519-dalek.workspace = true
 deno_core.workspace = true
 deno_error.workspace = true
 deno_web.workspace = true
-ed448-goldilocks = { version = "0.8.3", features = ["zeroize"] }
-elliptic-curve = { version = "0.13.1", features = ["std", "pem"] }
-num-traits = "0.2.14"
+ed448-goldilocks = { workspace = true, features = ["zeroize"] }
+elliptic-curve = { workspace = true, features = ["std", "pem"] }
+num-traits.workspace = true
 once_cell.workspace = true
-p256 = { version = "0.13.2", features = ["ecdh"] }
-p384 = "0.13.0"
-p521 = "0.13.3"
+p256 = { workspace = true, features = ["ecdh"] }
+p384.workspace = true
+p521.workspace = true
 rand.workspace = true
 ring = { workspace = true, features = ["std"] }
 rsa.workspace = true
@@ -43,4 +43,4 @@ spki.workspace = true
 thiserror.workspace = true
 tokio.workspace = true
 uuid.workspace = true
-x25519-dalek = "2.0.0"
+x25519-dalek.workspace = true
diff --git a/ext/fetch/Cargo.toml b/ext/fetch/Cargo.toml
index 72d4da049fdc1a..df53b712b58ffe 100644
--- a/ext/fetch/Cargo.toml
+++ b/ext/fetch/Cargo.toml
@@ -23,8 +23,8 @@ deno_fs.workspace = true
 deno_path_util.workspace = true
 deno_permissions.workspace = true
 deno_tls.workspace = true
-dyn-clone = "1"
-error_reporter = "1"
+dyn-clone.workspace = true
+error_reporter.workspace = true
 h2.workspace = true
 hickory-resolver.workspace = true
 http.workspace = true
diff --git a/ext/ffi/Cargo.toml b/ext/ffi/Cargo.toml
index 471afc4359eebe..3fd8704e52e246 100644
--- a/ext/ffi/Cargo.toml
+++ b/ext/ffi/Cargo.toml
@@ -14,20 +14,20 @@ description = "Dynamic library ffi for deno"
 path = "lib.rs"
 
 [dependencies]
-cranelift = "0.116"
-cranelift-native = "0.116"
+cranelift.workspace = true
+cranelift-native.workspace = true
 deno_core.workspace = true
 deno_error.workspace = true
 deno_permissions.workspace = true
 dlopen2.workspace = true
-libffi = "=3.2.0"
-libffi-sys = "=2.3.0"
+libffi.workspace = true
+libffi-sys.workspace = true
 log.workspace = true
-memmap2 = "0.9"
+memmap2.workspace = true
 num-bigint.workspace = true
 serde.workspace = true
-serde-value = "0.7"
-serde_json = "1.0"
+serde-value.workspace = true
+serde_json.workspace = true
 thiserror.workspace = true
 tokio.workspace = true
 
diff --git a/ext/fs/Cargo.toml b/ext/fs/Cargo.toml
index d999e0f5ded1d0..70a6984297e0ae 100644
--- a/ext/fs/Cargo.toml
+++ b/ext/fs/Cargo.toml
@@ -28,7 +28,7 @@ deno_permissions.workspace = true
 filetime.workspace = true
 libc.workspace = true
 rand.workspace = true
-rayon = "1.8.0"
+rayon.workspace = true
 serde.workspace = true
 thiserror.workspace = true
 
diff --git a/ext/http/Cargo.toml b/ext/http/Cargo.toml
index 803736b4d97b78..6536afeeefe381 100644
--- a/ext/http/Cargo.toml
+++ b/ext/http/Cargo.toml
@@ -21,7 +21,7 @@ name = "compressible"
 harness = false
 
 [dependencies]
-async-compression = { version = "0.4", features = ["tokio", "brotli", "gzip"] }
+async-compression = { workspace = true, features = ["tokio", "brotli", "gzip"] }
 async-trait.workspace = true
 base64.workspace = true
 brotli.workspace = true
@@ -39,9 +39,9 @@ httparse.workspace = true
 hyper.workspace = true
 hyper-util.workspace = true
 hyper_v014 = { workspace = true, features = ["server", "stream", "http1", "http2", "runtime"] }
-itertools = "0.10"
+itertools.workspace = true
 memmem.workspace = true
-mime = "0.3.16"
+mime.workspace = true
 once_cell.workspace = true
 percent-encoding.workspace = true
 phf.workspace = true
diff --git a/ext/napi/Cargo.toml b/ext/napi/Cargo.toml
index a57e51457017e5..ea97ecc89e3497 100644
--- a/ext/napi/Cargo.toml
+++ b/ext/napi/Cargo.toml
@@ -18,7 +18,7 @@ deno_core.workspace = true
 deno_error.workspace = true
 deno_permissions.workspace = true
 libc.workspace = true
-libloading = { version = "0.7" }
+libloading.workspace = true
 log.workspace = true
 napi_sym.workspace = true
 thiserror.workspace = true
@@ -27,4 +27,4 @@ thiserror.workspace = true
 windows-sys.workspace = true
 
 [dev-dependencies]
-libuv-sys-lite = "=1.48.2"
+libuv-sys-lite.workspace = true
diff --git a/ext/net/Cargo.toml b/ext/net/Cargo.toml
index ae318a4bea62c4..9549629b960282 100644
--- a/ext/net/Cargo.toml
+++ b/ext/net/Cargo.toml
@@ -18,10 +18,10 @@ deno_core.workspace = true
 deno_error.workspace = true
 deno_permissions.workspace = true
 deno_tls.workspace = true
-hickory-proto = "0.25.0-alpha.4"
+hickory-proto.workspace = true
 hickory-resolver.workspace = true
 pin-project.workspace = true
-quinn = { version = "0.11.6", default-features = false, features = ["runtime-tokio", "rustls", "ring"] }
+quinn = { workspace = true, features = ["runtime-tokio", "rustls", "ring"] }
 rustls-tokio-stream.workspace = true
 serde.workspace = true
 sha2.workspace = true
@@ -29,4 +29,4 @@ socket2.workspace = true
 thiserror.workspace = true
 tokio.workspace = true
 url.workspace = true
-web-transport-proto = "0.2.3"
+web-transport-proto.workspace = true
diff --git a/ext/node/Cargo.toml b/ext/node/Cargo.toml
index d7e018073ca9cc..b74bd3f84bb635 100644
--- a/ext/node/Cargo.toml
+++ b/ext/node/Cargo.toml
@@ -17,15 +17,15 @@ path = "lib.rs"
 sync_fs = ["deno_fs/sync_fs", "deno_package_json/sync", "node_resolver/sync"]
 
 [dependencies]
-aead-gcm-stream = "0.4"
+aead-gcm-stream.workspace = true
 aes.workspace = true
 base64.workspace = true
-blake2 = "0.10.6"
+blake2.workspace = true
 boxed_error.workspace = true
 brotli.workspace = true
 bytes.workspace = true
 cbc.workspace = true
-const-oid = "0.9.5"
+const-oid.workspace = true
 ctr.workspace = true
 data-encoding.workspace = true
 deno_core.workspace = true
@@ -38,13 +38,13 @@ deno_package_json.workspace = true
 deno_path_util.workspace = true
 deno_permissions.workspace = true
 deno_process.workspace = true
-deno_whoami = "0.1.0"
-der = { version = "0.7.9", features = ["derive"] }
-digest = { version = "0.10.5", features = ["core-api", "std"] }
-dsa = "0.6.3"
+deno_whoami.workspace = true
+der = { workspace = true, features = ["derive"] }
+digest = { workspace = true, features = ["core-api", "std"] }
+dsa.workspace = true
 ecb.workspace = true
-ecdsa = "0.16.9"
-ed25519-dalek = { version = "2.1.1", features = ["digest", "pkcs8", "rand_core", "signature"] }
+ecdsa.workspace = true
+ed25519-dalek = { workspace = true, features = ["digest", "pkcs8", "rand_core", "signature"] }
 elliptic-curve.workspace = true
 faster-hex.workspace = true
 h2.workspace = true
@@ -53,48 +53,48 @@ http.workspace = true
 http-body-util.workspace = true
 hyper.workspace = true
 hyper-util.workspace = true
-idna = "1.0.3"
-ipnetwork = "0.20.0"
-k256 = "0.13.1"
+idna.workspace = true
+ipnetwork.workspace = true
+k256.workspace = true
 libc.workspace = true
-libsqlite3-sys = "0.30.1"
+libsqlite3-sys.workspace = true
 libz-sys.workspace = true
-md-5 = { version = "0.10.5", features = ["oid"] }
-md4 = "0.10.2"
+md-5 = { workspace = true, features = ["oid"] }
+md4.workspace = true
 node_resolver.workspace = true
 num-bigint.workspace = true
-num-bigint-dig = "0.8.2"
-num-integer = "0.1.45"
-num-traits = "0.2.14"
+num-bigint-dig.workspace = true
+num-integer.workspace = true
+num-traits.workspace = true
 once_cell.workspace = true
 p224.workspace = true
 p256.workspace = true
 p384.workspace = true
-pbkdf2 = "0.12.1"
-pkcs8 = { version = "0.10.2", features = ["std", "pkcs5", "encryption"] }
+pbkdf2.workspace = true
+pkcs8 = { workspace = true, features = ["std", "pkcs5", "encryption"] }
 rand.workspace = true
 ring.workspace = true
-ripemd = { version = "0.1.3", features = ["oid"] }
+ripemd = { workspace = true, features = ["oid"] }
 rsa.workspace = true
 rusqlite.workspace = true
-scrypt = "0.11.0"
+scrypt.workspace = true
 sec1.workspace = true
 serde.workspace = true
 sha1.workspace = true
 sha2.workspace = true
-sha3 = { version = "0.10.8", features = ["oid"] }
+sha3 = { workspace = true, features = ["oid"] }
 signature.workspace = true
-sm3 = "0.4.2"
+sm3.workspace = true
 spki.workspace = true
 sys_traits = { workspace = true, features = ["real", "winapi", "libc"] }
 thiserror.workspace = true
 tokio.workspace = true
-tokio-eld = "0.2"
+tokio-eld.workspace = true
 url.workspace = true
 webpki-root-certs.workspace = true
 winapi.workspace = true
-x25519-dalek = { version = "2.0.0", features = ["static_secrets"] }
-x509-parser = "0.15.0"
+x25519-dalek = { workspace = true, features = ["static_secrets"] }
+x509-parser.workspace = true
 yoke.workspace = true
 
 [target.'cfg(unix)'.dependencies]
diff --git a/ext/os/Cargo.toml b/ext/os/Cargo.toml
index 4c620c9da4304a..e1ab3ac26cc9ac 100644
--- a/ext/os/Cargo.toml
+++ b/ext/os/Cargo.toml
@@ -20,7 +20,7 @@ deno_path_util.workspace = true
 deno_permissions.workspace = true
 deno_telemetry.workspace = true
 libc.workspace = true
-netif = "0.1.6"
+netif.workspace = true
 once_cell.workspace = true
 serde.workspace = true
 thiserror.workspace = true
diff --git a/ext/process/Cargo.toml b/ext/process/Cargo.toml
index bffb6915f4dd5a..0a32f15b5edc5a 100644
--- a/ext/process/Cargo.toml
+++ b/ext/process/Cargo.toml
@@ -23,11 +23,11 @@ deno_path_util.workspace = true
 deno_permissions.workspace = true
 libc.workspace = true
 log.workspace = true
-memchr = "2.7.4"
-pin-project-lite = "0.2.13"
+memchr.workspace = true
+pin-project-lite.workspace = true
 rand.workspace = true
 serde.workspace = true
-simd-json = "0.14.0"
+simd-json.workspace = true
 tempfile.workspace = true
 thiserror.workspace = true
 tokio.workspace = true
diff --git a/ext/tls/Cargo.toml b/ext/tls/Cargo.toml
index e9544211f2d63e..a9765148b67dc7 100644
--- a/ext/tls/Cargo.toml
+++ b/ext/tls/Cargo.toml
@@ -16,7 +16,7 @@ path = "lib.rs"
 [dependencies]
 deno_core.workspace = true
 deno_error.workspace = true
-deno_native_certs = "0.3.0"
+deno_native_certs.workspace = true
 rustls.workspace = true
 rustls-pemfile.workspace = true
 rustls-tokio-stream.workspace = true
diff --git a/ext/url/Cargo.toml b/ext/url/Cargo.toml
index e9140986526e93..921031945ba92a 100644
--- a/ext/url/Cargo.toml
+++ b/ext/url/Cargo.toml
@@ -16,7 +16,7 @@ path = "lib.rs"
 [dependencies]
 deno_core.workspace = true
 deno_error.workspace = true
-urlpattern = "0.3.0"
+urlpattern.workspace = true
 
 [dev-dependencies]
 deno_bench_util.workspace = true
diff --git a/ext/web/Cargo.toml b/ext/web/Cargo.toml
index 72b6eca5b68021..1a16212d3cfe94 100644
--- a/ext/web/Cargo.toml
+++ b/ext/web/Cargo.toml
@@ -15,7 +15,7 @@ path = "lib.rs"
 
 [dependencies]
 async-trait.workspace = true
-base64-simd = "0.8"
+base64-simd.workspace = true
 bytes.workspace = true
 deno_core.workspace = true
 deno_error.workspace = true
@@ -23,7 +23,7 @@ deno_permissions.workspace = true
 encoding_rs.workspace = true
 flate2 = { workspace = true, features = ["default"] }
 futures.workspace = true
-serde = "1.0.149"
+serde.workspace = true
 thiserror.workspace = true
 tokio.workspace = true
 uuid = { workspace = true, features = ["serde"] }
diff --git a/ext/webgpu/Cargo.toml b/ext/webgpu/Cargo.toml
index 817cb59c8a23fe..739d8d42767474 100644
--- a/ext/webgpu/Cargo.toml
+++ b/ext/webgpu/Cargo.toml
@@ -25,7 +25,7 @@ deno_error.workspace = true
 serde = { workspace = true, features = ["derive"] }
 tokio = { workspace = true, features = ["full"] }
 wgpu-types = { workspace = true, features = ["serde"] }
-raw-window-handle = { workspace = true }
+raw-window-handle.workspace = true
 thiserror.workspace = true
 indexmap.workspace = true
 serde_json.workspace = true
diff --git a/resolvers/node/Cargo.toml b/resolvers/node/Cargo.toml
index 8caa88bca0ce8b..6154bbaef7d4cd 100644
--- a/resolvers/node/Cargo.toml
+++ b/resolvers/node/Cargo.toml
@@ -29,7 +29,7 @@ deno_path_util.workspace = true
 futures.workspace = true
 lazy-regex.workspace = true
 once_cell.workspace = true
-path-clean = "=0.1.0"
+path-clean.workspace = true
 regex.workspace = true
 serde.workspace = true
 serde_json.workspace = true
diff --git a/resolvers/npm_cache/Cargo.toml b/resolvers/npm_cache/Cargo.toml
index 13e61b40690bec..8fab644c695ff4 100644
--- a/resolvers/npm_cache/Cargo.toml
+++ b/resolvers/npm_cache/Cargo.toml
@@ -39,4 +39,4 @@ thiserror.workspace = true
 url.workspace = true
 
 [dev-dependencies]
-tempfile = "3.4.0"
+tempfile.workspace = true
diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml
index cc1ed9b3099f92..38c1a9bb23488f 100644
--- a/runtime/Cargo.toml
+++ b/runtime/Cargo.toml
@@ -89,7 +89,7 @@ log.workspace = true
 notify.workspace = true
 once_cell.workspace = true
 rustyline = { workspace = true, features = ["custom-bindings"] }
-same-file = "1.0.6"
+same-file.workspace = true
 serde.workspace = true
 sys_traits.workspace = true
 thiserror.workspace = true
diff --git a/runtime/permissions/Cargo.toml b/runtime/permissions/Cargo.toml
index 8b407bd491fe3d..da34751554f898 100644
--- a/runtime/permissions/Cargo.toml
+++ b/runtime/permissions/Cargo.toml
@@ -19,11 +19,11 @@ deno_core.workspace = true
 deno_error.workspace = true
 deno_path_util.workspace = true
 deno_terminal.workspace = true
-fqdn = "0.3.4"
+fqdn.workspace = true
 libc.workspace = true
 log.workspace = true
 once_cell.workspace = true
-percent-encoding = { version = "2.3.1", features = [] }
+percent-encoding = { workspace = true, features = [] }
 serde.workspace = true
 thiserror.workspace = true
 which.workspace = true
diff --git a/tests/Cargo.toml b/tests/Cargo.toml
index 4ba4c872259f50..e82e0890745a5a 100644
--- a/tests/Cargo.toml
+++ b/tests/Cargo.toml
@@ -33,17 +33,17 @@ anyhow.workspace = true
 bytes.workspace = true
 chrono = { workspace = true, features = ["now"] }
 deno_bench_util.workspace = true
-deno_cache_dir = { workspace = true }
+deno_cache_dir.workspace = true
 deno_lockfile.workspace = true
 deno_semver.workspace = true
 deno_terminal.workspace = true
 deno_unsync.workspace = true
 fastwebsockets = { workspace = true, features = ["upgrade", "unstable-split"] }
-file_test_runner = "0.7.3"
-flaky_test = "=0.2.2"
-hickory-client = "0.25.0-alpha.4"
-hickory-proto = "0.25.0-alpha.4"
-hickory-server = "0.25.0-alpha.4"
+file_test_runner.workspace = true
+flaky_test.workspace = true
+hickory-client.workspace = true
+hickory-proto.workspace = true
+hickory-server.workspace = true
 http.workspace = true
 http-body-util.workspace = true
 hyper.workspace = true
diff --git a/tests/napi/Cargo.toml b/tests/napi/Cargo.toml
index e8a39a0cda825e..d8780e72bb642b 100644
--- a/tests/napi/Cargo.toml
+++ b/tests/napi/Cargo.toml
@@ -13,11 +13,11 @@ repository.workspace = true
 crate-type = ["cdylib"]
 
 [dependencies]
-libuv-sys-lite = "=1.48.2"
-napi-sys = { version = "=2.2.2", default-features = false, features = ["napi7"] }
+libuv-sys-lite.workspace = true
+napi-sys = { workspace = true, features = ["napi7"] }
 
 [dev-dependencies]
 test_util.workspace = true
 
 [build-dependencies]
-napi-build = "1"
+napi-build.workspace = true
diff --git a/tests/util/server/Cargo.toml b/tests/util/server/Cargo.toml
index 44aebf34998325..d7c814356376dd 100644
--- a/tests/util/server/Cargo.toml
+++ b/tests/util/server/Cargo.toml
@@ -20,7 +20,7 @@ harness = false
 
 [dependencies]
 anyhow.workspace = true
-async-stream = "0.3.3"
+async-stream.workspace = true
 base64.workspace = true
 bytes.workspace = true
 console_static_text.workspace = true
@@ -51,7 +51,7 @@ regex.workspace = true
 reqwest.workspace = true
 rustls-pemfile.workspace = true
 rustls-tokio-stream.workspace = true
-semver = "=1.0.14"
+semver.workspace = true
 serde.workspace = true
 serde_json.workspace = true
 sha2.workspace = true
@@ -60,7 +60,7 @@ tempfile.workspace = true
 termcolor.workspace = true
 tokio.workspace = true
 url.workspace = true
-win32job = "2"
+win32job.workspace = true
 
 [target.'cfg(windows)'.dependencies]
 winapi = { workspace = true, features = ["consoleapi", "synchapi", "handleapi", "namedpipeapi", "winbase", "winerror"] }

From 1fe721f1f8fe6e5812492dc73e249587c925c92d Mon Sep 17 00:00:00 2001
From: Nayeem Rahman <nayeemrmn99@gmail.com>
Date: Wed, 26 Feb 2025 16:00:40 +0000
Subject: [PATCH 037/115] fix(lsp): limit languages in semantic tokens provider
 (#28310)

---
 cli/lsp/capabilities.rs | 39 +++++++++++++++++++++++++++++++++------
 1 file changed, 33 insertions(+), 6 deletions(-)

diff --git a/cli/lsp/capabilities.rs b/cli/lsp/capabilities.rs
index 4c81edeea2c780..9519822c660bb1 100644
--- a/cli/lsp/capabilities.rs
+++ b/cli/lsp/capabilities.rs
@@ -127,12 +127,39 @@ pub fn server_capabilities(
     }),
     call_hierarchy_provider: Some(CallHierarchyServerCapability::Simple(true)),
     semantic_tokens_provider: Some(
-      SemanticTokensServerCapabilities::SemanticTokensOptions(
-        SemanticTokensOptions {
-          legend: get_legend(),
-          range: Some(true),
-          full: Some(SemanticTokensFullOptions::Bool(true)),
-          ..Default::default()
+      SemanticTokensServerCapabilities::SemanticTokensRegistrationOptions(
+        SemanticTokensRegistrationOptions {
+          text_document_registration_options: TextDocumentRegistrationOptions {
+            document_selector: Some(vec![
+              DocumentFilter {
+                language: Some("javascript".to_string()),
+                scheme: None,
+                pattern: None,
+              },
+              DocumentFilter {
+                language: Some("javascriptreact".to_string()),
+                scheme: None,
+                pattern: None,
+              },
+              DocumentFilter {
+                language: Some("typescript".to_string()),
+                scheme: None,
+                pattern: None,
+              },
+              DocumentFilter {
+                language: Some("typescriptreact".to_string()),
+                scheme: None,
+                pattern: None,
+              },
+            ]),
+          },
+          semantic_tokens_options: SemanticTokensOptions {
+            legend: get_legend(),
+            range: Some(true),
+            full: Some(SemanticTokensFullOptions::Bool(true)),
+            ..Default::default()
+          },
+          static_registration_options: Default::default(),
         },
       ),
     ),

From aa55efaa133daf8a3ccf7aad0cb06bf2d209abe2 Mon Sep 17 00:00:00 2001
From: Luca Casonato <hello@lcas.dev>
Date: Thu, 27 Feb 2025 18:47:09 +0100
Subject: [PATCH 038/115] fix(otel): don't throw when calling setActiveSpan at
 root (#28323)

When calling `setActiveSpan` at the module root, or with `options.root =
true`, the function would internally throw.
---
 ext/telemetry/telemetry.ts                    |  6 +--
 tests/specs/cli/otel_basic/__test__.jsonc     |  4 ++
 .../cli/otel_basic/start_active_span.out      | 48 +++++++++++++++++++
 .../specs/cli/otel_basic/start_active_span.ts | 12 +++++
 4 files changed, 67 insertions(+), 3 deletions(-)
 create mode 100644 tests/specs/cli/otel_basic/start_active_span.out
 create mode 100644 tests/specs/cli/otel_basic/start_active_span.ts

diff --git a/ext/telemetry/telemetry.ts b/ext/telemetry/telemetry.ts
index 139affbf47e36e..50983def638004 100644
--- a/ext/telemetry/telemetry.ts
+++ b/ext/telemetry/telemetry.ts
@@ -145,7 +145,7 @@ function hrToMs(hr: [number, number]): number {
 
 export function enterSpan(span: Span): Context | undefined {
   if (!span.isRecording()) return undefined;
-  const context = (CURRENT.get() || ROOT_CONTEXT).setValue(SPAN_KEY, span);
+  const context = (CURRENT.get() ?? ROOT_CONTEXT).setValue(SPAN_KEY, span);
   return CURRENT.enter(context);
 }
 
@@ -254,9 +254,9 @@ class Tracer {
       throw new Error("startActiveSpan requires a function argument");
     }
     if (options?.root) {
-      context = undefined;
+      context = ROOT_CONTEXT;
     } else {
-      context = context ?? CURRENT.get();
+      context = context ?? CURRENT.get() ?? ROOT_CONTEXT;
     }
     const span = this.startSpan(name, options, context);
     const ctx = CURRENT.enter(context.setValue(SPAN_KEY, span));
diff --git a/tests/specs/cli/otel_basic/__test__.jsonc b/tests/specs/cli/otel_basic/__test__.jsonc
index d538eac736fccb..18d5e668cef868 100644
--- a/tests/specs/cli/otel_basic/__test__.jsonc
+++ b/tests/specs/cli/otel_basic/__test__.jsonc
@@ -33,6 +33,10 @@
     "links": {
       "args": "run -A main.ts links.ts",
       "output": "links.out"
+    },
+    "start_active_span": {
+      "args": "run -A main.ts start_active_span.ts",
+      "output": "start_active_span.out"
     }
   }
 }
diff --git a/tests/specs/cli/otel_basic/start_active_span.out b/tests/specs/cli/otel_basic/start_active_span.out
new file mode 100644
index 00000000000000..1b19ee5d448bd2
--- /dev/null
+++ b/tests/specs/cli/otel_basic/start_active_span.out
@@ -0,0 +1,48 @@
+{
+  "spans": [
+    {
+      "traceId": "00000000000000000000000000000001",
+      "spanId": "0000000000000001",
+      "traceState": "",
+      "parentSpanId": "",
+      "flags": 1,
+      "name": "top level span",
+      "kind": 1,
+      "startTimeUnixNano": "[WILDCARD]",
+      "endTimeUnixNano": "[WILDCARD]",
+      "attributes": [],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 0
+      }
+    },
+    {
+      "traceId": "00000000000000000000000000000002",
+      "spanId": "0000000000000002",
+      "traceState": "",
+      "parentSpanId": "",
+      "flags": 1,
+      "name": "root span",
+      "kind": 1,
+      "startTimeUnixNano": "[WILDCARD]",
+      "endTimeUnixNano": "[WILDCARD]",
+      "attributes": [],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 0
+      }
+    }
+  ],
+  "logs": [],
+  "metrics": []
+}
diff --git a/tests/specs/cli/otel_basic/start_active_span.ts b/tests/specs/cli/otel_basic/start_active_span.ts
new file mode 100644
index 00000000000000..8dd91df8d00987
--- /dev/null
+++ b/tests/specs/cli/otel_basic/start_active_span.ts
@@ -0,0 +1,12 @@
+// Copyright 2018-2025 the Deno authors. MIT license.
+
+import { trace } from "npm:@opentelemetry/api@1.9.0";
+
+const tracer = trace.getTracer("example-tracer");
+
+tracer.startActiveSpan("top level span", (span) => {
+  span.end();
+});
+tracer.startActiveSpan("root span", { root: true }, (span) => {
+  span.end();
+});

From 69b59b229678559b5761c501e364d70446d768d2 Mon Sep 17 00:00:00 2001
From: Nathan Whitaker <17734409+nathanwhit@users.noreply.github.com>
Date: Thu, 27 Feb 2025 10:07:11 -0800
Subject: [PATCH 039/115] perf(http): instantiate generic functions in
 `deno_http`, increase opt-level for some more hyper deps (#28317)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

results on my machine (Macbook pro w/ M3 Max)

canary (hello world):
```
❯ oha -c 125 -n 4000000 --no-tui --disable-compression http://localhost:8000
Summary:
  Success rate: 100.00%
  Total:        31.0160 secs
  Slowest:      0.0083 secs
  Fastest:      0.0005 secs
  Average:      0.0010 secs
  Requests/sec: 128965.6454

  Total data:   49.59 MiB
  Size/request: 13 B
  Size/sec:     1.60 MiB
```

this PR (hello world):
```
❯ oha -c 125 -n 4000000 --no-tui --disable-compression http://localhost:8000
Summary:
  Success rate: 100.00%
  Total:        28.4050 secs
  Slowest:      0.0085 secs
  Fastest:      0.0001 secs
  Average:      0.0009 secs
  Requests/sec: 140820.2060

  Total data:   49.59 MiB
  Size/request: 13 B
  Size/sec:     1.75 MiB
```

---

Two changes here:
- use `opt-level` 3 for some of hyper's deps, since profile overrides
are not transitive
- As noted in the [cargo
reference](https://doc.rust-lang.org/cargo/reference/profiles.html#overrides-and-generics)
generic functions _may_ be optimized at the opt-level of the
_instantiating_ crate, rather than the defining crate. So currently it's
possible that some of the functions in `deno_http` are being compiled at
a lower optimization level. This PR ensures the generics are
instantiated in `deno_http`, which theoretically should guarantee they
actually use opt-level 3.

To allow embedders to still provide a custom property extractor, I put
this behind a feature flag.
---
 Cargo.toml               | 26 +++++++++++++++++++++
 ext/http/Cargo.toml      |  2 ++
 ext/http/lib.rs          | 49 ++++++++++++++++++++++++++++++++++++++++
 runtime/snapshot.rs      |  5 +---
 runtime/snapshot_info.rs |  5 +---
 runtime/web_worker.rs    |  5 +---
 runtime/worker.rs        | 17 ++++++--------
 7 files changed, 87 insertions(+), 22 deletions(-)

diff --git a/Cargo.toml b/Cargo.toml
index 7231391708f936..97afa499ea0d62 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -437,6 +437,16 @@ opt-level = 3
 opt-level = 3
 [profile.release.package.futures-util]
 opt-level = 3
+[profile.release.package.futures-io]
+opt-level = 3
+[profile.release.package.futures-channel]
+opt-level = 3
+[profile.release.package.futures-sink]
+opt-level = 3
+[profile.release.package.futures-task]
+opt-level = 3
+[profile.release.package.futures-core]
+opt-level = 3
 [profile.release.package.hyper]
 opt-level = 3
 [profile.release.package.miniz_oxide]
@@ -463,3 +473,19 @@ opt-level = 3
 opt-level = 3
 [profile.release.package.zstd-sys]
 opt-level = 3
+[profile.release.package.http]
+opt-level = 3
+[profile.release.package.http-body]
+opt-level = 3
+[profile.release.package.httparse]
+opt-level = 3
+[profile.release.package.mio]
+opt-level = 3
+[profile.release.package.fnv]
+opt-level = 3
+[profile.release.package.hyper-util]
+opt-level = 3
+[profile.release.package.httpdate]
+opt-level = 3
+[profile.release.package.deno_unsync]
+opt-level = 3
diff --git a/ext/http/Cargo.toml b/ext/http/Cargo.toml
index 6536afeeefe381..c6dbbaa571e133 100644
--- a/ext/http/Cargo.toml
+++ b/ext/http/Cargo.toml
@@ -11,7 +11,9 @@ repository.workspace = true
 description = "HTTP server implementation for Deno"
 
 [features]
+default = ["default_property_extractor"]
 "__http_tracing" = []
+default_property_extractor = []
 
 [lib]
 path = "lib.rs"
diff --git a/ext/http/lib.rs b/ext/http/lib.rs
index b3ab569baef14a..d421c2de1544fe 100644
--- a/ext/http/lib.rs
+++ b/ext/http/lib.rs
@@ -133,6 +133,7 @@ pub struct Options {
   pub http1_builder_hook: Option<fn(http1::Builder) -> http1::Builder>,
 }
 
+#[cfg(not(feature = "default_property_extractor"))]
 deno_core::extension!(
   deno_http,
   deps = [deno_web, deno_net, deno_fetch, deno_websocket],
@@ -181,6 +182,54 @@ deno_core::extension!(
   }
 );
 
+#[cfg(feature = "default_property_extractor")]
+deno_core::extension!(
+  deno_http,
+  deps = [deno_web, deno_net, deno_fetch, deno_websocket],
+  ops = [
+    op_http_accept,
+    op_http_headers,
+    op_http_shutdown,
+    op_http_upgrade_websocket,
+    op_http_websocket_accept_header,
+    op_http_write_headers,
+    op_http_write_resource,
+    op_http_write,
+    http_next::op_http_close_after_finish,
+    http_next::op_http_get_request_header,
+    http_next::op_http_get_request_headers,
+    http_next::op_http_request_on_cancel,
+    http_next::op_http_get_request_method_and_url<DefaultHttpPropertyExtractor>,
+    http_next::op_http_get_request_cancelled,
+    http_next::op_http_read_request_body,
+    http_next::op_http_serve_on<DefaultHttpPropertyExtractor>,
+    http_next::op_http_serve<DefaultHttpPropertyExtractor>,
+    http_next::op_http_set_promise_complete,
+    http_next::op_http_set_response_body_bytes,
+    http_next::op_http_set_response_body_resource,
+    http_next::op_http_set_response_body_text,
+    http_next::op_http_set_response_header,
+    http_next::op_http_set_response_headers,
+    http_next::op_http_set_response_trailers,
+    http_next::op_http_upgrade_websocket_next,
+    http_next::op_http_upgrade_raw,
+    http_next::op_raw_write_vectored,
+    http_next::op_can_write_vectored,
+    http_next::op_http_try_wait,
+    http_next::op_http_wait,
+    http_next::op_http_close,
+    http_next::op_http_cancel,
+    http_next::op_http_metric_handle_otel_error,
+  ],
+  esm = ["00_serve.ts", "01_http.js", "02_websocket.ts"],
+  options = {
+    options: Options,
+  },
+  state = |state, options| {
+    state.put::<Options>(options.options);
+  }
+);
+
 #[derive(Debug, thiserror::Error, deno_error::JsError)]
 pub enum HttpError {
   #[class(inherit)]
diff --git a/runtime/snapshot.rs b/runtime/snapshot.rs
index 731385c6d2af8b..cbc214b647f2df 100644
--- a/runtime/snapshot.rs
+++ b/runtime/snapshot.rs
@@ -8,7 +8,6 @@ use std::sync::Arc;
 use deno_core::snapshot::*;
 use deno_core::v8;
 use deno_core::Extension;
-use deno_http::DefaultHttpPropertyExtractor;
 use deno_resolver::npm::DenoInNpmPackageChecker;
 use deno_resolver::npm::NpmResolver;
 
@@ -61,9 +60,7 @@ pub fn create_runtime_snapshot(
       deno_cron::local::LocalCronHandler::new(),
     ),
     deno_napi::deno_napi::init_ops_and_esm::<Permissions>(),
-    deno_http::deno_http::init_ops_and_esm::<DefaultHttpPropertyExtractor>(
-      deno_http::Options::default(),
-    ),
+    deno_http::deno_http::init_ops_and_esm(deno_http::Options::default()),
     deno_io::deno_io::init_ops_and_esm(Default::default()),
     deno_fs::deno_fs::init_ops_and_esm::<Permissions>(fs.clone()),
     deno_os::deno_os::init_ops_and_esm(Default::default()),
diff --git a/runtime/snapshot_info.rs b/runtime/snapshot_info.rs
index 591e10f3a56e87..98a69fc6ac51c6 100644
--- a/runtime/snapshot_info.rs
+++ b/runtime/snapshot_info.rs
@@ -6,7 +6,6 @@ use std::path::PathBuf;
 use std::sync::Arc;
 
 use deno_core::Extension;
-use deno_http::DefaultHttpPropertyExtractor;
 use deno_io::fs::FsError;
 use deno_permissions::PermissionCheckError;
 use deno_resolver::npm::DenoInNpmPackageChecker;
@@ -293,9 +292,7 @@ pub fn get_extensions_in_snapshot() -> Vec<Extension> {
     ),
     deno_cron::deno_cron::init_ops(deno_cron::local::LocalCronHandler::new()),
     deno_napi::deno_napi::init_ops::<Permissions>(),
-    deno_http::deno_http::init_ops::<DefaultHttpPropertyExtractor>(
-      deno_http::Options::default(),
-    ),
+    deno_http::deno_http::init_ops(deno_http::Options::default()),
     deno_io::deno_io::init_ops(Some(Default::default())),
     deno_fs::deno_fs::init_ops::<Permissions>(fs.clone()),
     deno_os::deno_os::init_ops(Default::default()),
diff --git a/runtime/web_worker.rs b/runtime/web_worker.rs
index 418f035abc0a9c..90df0e7cfc5e1f 100644
--- a/runtime/web_worker.rs
+++ b/runtime/web_worker.rs
@@ -39,7 +39,6 @@ use deno_core::RuntimeOptions;
 use deno_core::SharedArrayBufferStore;
 use deno_cron::local::LocalCronHandler;
 use deno_fs::FileSystem;
-use deno_http::DefaultHttpPropertyExtractor;
 use deno_io::Stdio;
 use deno_kv::dynamic::MultiBackendDbHandler;
 use deno_node::ExtNodeSys;
@@ -549,9 +548,7 @@ impl WebWorker {
       ),
       deno_cron::deno_cron::init_ops_and_esm(LocalCronHandler::new()),
       deno_napi::deno_napi::init_ops_and_esm::<PermissionsContainer>(),
-      deno_http::deno_http::init_ops_and_esm::<DefaultHttpPropertyExtractor>(
-        deno_http::Options::default(),
-      ),
+      deno_http::deno_http::init_ops_and_esm(deno_http::Options::default()),
       deno_io::deno_io::init_ops_and_esm(Some(options.stdio)),
       deno_fs::deno_fs::init_ops_and_esm::<PermissionsContainer>(
         services.fs.clone(),
diff --git a/runtime/worker.rs b/runtime/worker.rs
index e733bf3d4db6ec..d38b901fe5ce78 100644
--- a/runtime/worker.rs
+++ b/runtime/worker.rs
@@ -34,7 +34,6 @@ use deno_core::SharedArrayBufferStore;
 use deno_core::SourceCodeCacheInfo;
 use deno_cron::local::LocalCronHandler;
 use deno_fs::FileSystem;
-use deno_http::DefaultHttpPropertyExtractor;
 use deno_io::Stdio;
 use deno_kv::dynamic::MultiBackendDbHandler;
 use deno_node::ExtNodeSys;
@@ -449,9 +448,7 @@ impl MainWorker {
       ),
       deno_cron::deno_cron::init_ops_and_esm(LocalCronHandler::new()),
       deno_napi::deno_napi::init_ops_and_esm::<PermissionsContainer>(),
-      deno_http::deno_http::init_ops_and_esm::<DefaultHttpPropertyExtractor>(
-        deno_http::Options::default(),
-      ),
+      deno_http::deno_http::init_ops_and_esm(deno_http::Options::default()),
       deno_io::deno_io::init_ops_and_esm(Some(options.stdio)),
       deno_fs::deno_fs::init_ops_and_esm::<PermissionsContainer>(
         services.fs.clone(),
@@ -563,12 +560,12 @@ impl MainWorker {
               hasher.finish()
             };
             let data = cache
-              .get_sync(specifier, CodeCacheType::Script, source_hash)
-              .inspect(|_| {
-                // This log line is also used by tests.
-                log::debug!("V8 code cache hit for script: {specifier}, [{source_hash}]");
-              })
-              .map(Cow::Owned);
+            .get_sync(specifier, CodeCacheType::Script, source_hash)
+            .inspect(|_| {
+              // This log line is also used by tests.
+              log::debug!("V8 code cache hit for script: {specifier}, [{source_hash}]");
+            })
+            .map(Cow::Owned);
             Ok(SourceCodeCacheInfo {
               data,
               hash: source_hash,

From ff970bd9fe6c2dbf1147656d9e21c9b340d6d112 Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Thu, 27 Feb 2025 16:28:36 -0500
Subject: [PATCH 040/115] fix: deno_ast 0.46 (#28331)

---
 Cargo.lock                    | 409 +++++++++++++++++++++-------------
 Cargo.toml                    | 215 +++++++++---------
 cli/Cargo.toml                |   3 +-
 cli/lsp/code_lens.rs          |   4 +-
 cli/lsp/documents.rs          |   2 +-
 cli/lsp/testing/collectors.rs |   4 +-
 cli/tools/repl/session.rs     |   6 +-
 cli/util/extract.rs           |  16 +-
 8 files changed, 377 insertions(+), 282 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 7158fcf68b49de..b6df6f9af2119f 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -98,7 +98,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
 dependencies = [
  "cfg-if",
- "getrandom",
  "once_cell",
  "version_check",
  "zerocopy",
@@ -130,9 +129,9 @@ dependencies = [
 
 [[package]]
 name = "allocator-api2"
-version = "0.2.18"
+version = "0.2.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
+checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
 
 [[package]]
 name = "android_system_properties"
@@ -216,6 +215,12 @@ dependencies = [
  "serde",
 ]
 
+[[package]]
+name = "ascii"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16"
+
 [[package]]
 name = "ash"
 version = "0.38.0+1.3.281"
@@ -266,13 +271,13 @@ dependencies = [
 
 [[package]]
 name = "ast_node"
-version = "0.9.8"
+version = "3.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ab31376d309dd3bfc9cfb3c11c93ce0e0741bbe0354b20e7f8c60b044730b79"
+checksum = "91fb5864e2f5bf9fd9797b94b2dfd1554d4c3092b535008b27d7e15c86675a2f"
 dependencies = [
  "proc-macro2",
  "quote",
- "swc_macros_common",
+ "swc_macros_common 1.0.0",
  "syn 2.0.87",
 ]
 
@@ -501,9 +506,9 @@ checksum = "7dfdb4953a096c551ce9ace855a604d702e6e62d77fac690575ae347571717f5"
 
 [[package]]
 name = "better_scoped_tls"
-version = "0.1.1"
+version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "794edcc9b3fb07bb4aecaa11f093fd45663b4feadb782d68303a2268bc2701de"
+checksum = "50fd297a11c709be8348aec039c8b91de16075d2b2bdaee1bd562c0875993664"
 dependencies = [
  "scoped-tls",
 ]
@@ -690,9 +695,9 @@ dependencies = [
 
 [[package]]
 name = "bumpalo"
-version = "3.16.0"
+version = "3.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
+checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
 dependencies = [
  "allocator-api2",
 ]
@@ -782,6 +787,15 @@ dependencies = [
  "unicode-normalization",
 ]
 
+[[package]]
+name = "castaway"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5"
+dependencies = [
+ "rustversion",
+]
+
 [[package]]
 name = "cbc"
 version = "0.1.2"
@@ -971,7 +985,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"
 dependencies = [
  "termcolor",
- "unicode-width",
+ "unicode-width 0.1.13",
 ]
 
 [[package]]
@@ -1001,6 +1015,19 @@ version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
 
+[[package]]
+name = "compact_str"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f86b9c4c00838774a6d902ef931eff7470720c51d90c2e32cfe15dc304737b3f"
+dependencies = [
+ "castaway",
+ "cfg-if",
+ "itoa",
+ "ryu",
+ "static_assertions",
+]
+
 [[package]]
 name = "comrak"
 version = "0.29.0"
@@ -1024,7 +1051,7 @@ version = "0.8.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "55d8a913e62f6444b79e038be3eb09839e9cfc34d55d85f9336460710647d2f6"
 dependencies = [
- "unicode-width",
+ "unicode-width 0.1.13",
  "vte 0.13.1",
 ]
 
@@ -1132,7 +1159,7 @@ dependencies = [
  "hashbrown 0.14.5",
  "log",
  "regalloc2",
- "rustc-hash 2.0.0",
+ "rustc-hash 2.1.1",
  "serde",
  "smallvec",
  "target-lexicon",
@@ -1503,7 +1530,7 @@ dependencies = [
  "http-body 1.0.0",
  "http-body-util",
  "import_map",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "jsonc-parser",
  "junction",
  "lazy-regex",
@@ -1535,6 +1562,7 @@ dependencies = [
  "regex",
  "ring",
  "runtimelib",
+ "rustc-hash 2.1.1",
  "rustyline",
  "rustyline-derive",
  "serde",
@@ -1559,7 +1587,7 @@ dependencies = [
  "tracing-opentelemetry",
  "tracing-subscriber",
  "typed-arena",
- "unicode-width",
+ "unicode-width 0.1.13",
  "uuid",
  "walkdir",
  "winapi",
@@ -1581,9 +1609,9 @@ dependencies = [
 
 [[package]]
 name = "deno_ast"
-version = "0.45.1"
+version = "0.46.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4063ccc7a20c4bf23b36d1856a53c56d0d949e6ea4aa83d751674a5dfce6a365"
+checksum = "1bd3b6e14e5b1235dd613d9f5d955d7a80dec6de0fc00fa34b5d0ef5ca0a9ddb"
 dependencies = [
  "base64 0.21.7",
  "deno_error",
@@ -1616,12 +1644,12 @@ dependencies = [
  "swc_ecma_visit",
  "swc_eq_ignore_macros",
  "swc_graph_analyzer",
- "swc_macros_common",
+ "swc_macros_common 1.0.0",
  "swc_visit",
  "swc_visit_macros",
  "text_lines",
  "thiserror 2.0.3",
- "unicode-width",
+ "unicode-width 0.2.0",
  "url",
 ]
 
@@ -1690,7 +1718,7 @@ dependencies = [
  "deno_media_type",
  "deno_path_util",
  "http 1.1.0",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "log",
  "once_cell",
  "parking_lot",
@@ -1730,7 +1758,7 @@ dependencies = [
  "glob",
  "ignore",
  "import_map",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "jsonc-parser",
  "log",
  "percent-encoding",
@@ -1769,7 +1797,7 @@ dependencies = [
  "deno_path_util",
  "deno_unsync",
  "futures",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "libc",
  "memoffset",
  "parking_lot",
@@ -1845,9 +1873,9 @@ dependencies = [
 
 [[package]]
 name = "deno_doc"
-version = "0.168.0"
+version = "0.169.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ffe4164ec8ceefb414b3b99671818d79b31923c57f39cb350eb13ad327a6992"
+checksum = "5fdbba1beab09de9eff58c54ec8f0abf2340f30de00ac511ad73067ff97883ce"
 dependencies = [
  "anyhow",
  "cfg-if",
@@ -1859,7 +1887,7 @@ dependencies = [
  "handlebars",
  "html-escape",
  "import_map",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "itoa",
  "js-sys",
  "lazy_static",
@@ -1985,9 +2013,9 @@ dependencies = [
 
 [[package]]
 name = "deno_graph"
-version = "0.88.0"
+version = "0.89.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8514a537cc6746ee7958b02f62273eff615ada6fa30bf8f5b38eaa68180992a7"
+checksum = "4ca8039ee1325d0d5dd60765c55177dc16b904f2457185ca815829d1e83eb588"
 dependencies = [
  "async-trait",
  "capacity_builder 0.5.0",
@@ -2001,7 +2029,7 @@ dependencies = [
  "encoding_rs",
  "futures",
  "import_map",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "log",
  "monch",
  "once_cell",
@@ -2128,7 +2156,7 @@ dependencies = [
  "deno_terminal 0.2.0",
  "env_logger",
  "faster-hex",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "libsui",
  "log",
  "node_resolver",
@@ -2144,9 +2172,9 @@ dependencies = [
 
 [[package]]
 name = "deno_lint"
-version = "0.73.1"
+version = "0.74.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "16d3df8a46c79ec6b1ab18639b8dd0f2ff035712885ac89b9123b5d6533b6869"
+checksum = "83275c0785438a3441b64a4c16b0f8355c5258b15db40190a2e1e8f8fd865104"
 dependencies = [
  "anyhow",
  "deno_ast",
@@ -2378,7 +2406,7 @@ version = "0.216.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "07cc2bc8f1754c7f66b701a05fb12ca39dc582edf8b4f04a422ae487f0223fa9"
 dependencies = [
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "proc-macro-rules",
  "proc-macro2",
  "quote",
@@ -2420,7 +2448,7 @@ dependencies = [
  "deno_error",
  "deno_path_util",
  "deno_semver",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "serde",
  "serde_json",
  "sys_traits",
@@ -2509,7 +2537,7 @@ dependencies = [
  "deno_terminal 0.2.0",
  "futures",
  "import_map",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "log",
  "node_resolver",
  "once_cell",
@@ -2766,7 +2794,7 @@ dependencies = [
  "deno_core",
  "deno_error",
  "deno_unsync",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "raw-window-handle",
  "serde",
  "serde_json",
@@ -2915,7 +2943,7 @@ dependencies = [
  "deno_snapshots",
  "deno_terminal 0.2.0",
  "import_map",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "libsui",
  "log",
  "node_resolver",
@@ -3154,10 +3182,25 @@ dependencies = [
  "anyhow",
  "bumpalo",
  "hashbrown 0.14.5",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "rustc-hash 1.1.0",
  "serde",
- "unicode-width",
+ "unicode-width 0.1.13",
+]
+
+[[package]]
+name = "dprint-core"
+version = "0.67.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c1d827947704a9495f705d6aeed270fa21a67f825f22902c28f38dc3af7a9ae"
+dependencies = [
+ "anyhow",
+ "bumpalo",
+ "hashbrown 0.15.2",
+ "indexmap 2.7.1",
+ "rustc-hash 2.1.1",
+ "serde",
+ "unicode-width 0.2.0",
 ]
 
 [[package]]
@@ -3177,7 +3220,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "57f91e594559b450b7c5d6a0ba9f3f9fe951c1ea371168f7c95973da3fdbd85a"
 dependencies = [
  "anyhow",
- "dprint-core",
+ "dprint-core 0.66.2",
  "dprint-core-macros",
  "jsonc-parser",
  "serde",
@@ -3191,7 +3234,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d0d20684e37b3824e2bc917cfcb14e2cdf88398eef507335d839cbd78172bfee"
 dependencies = [
  "anyhow",
- "dprint-core",
+ "dprint-core 0.66.2",
  "jsonc-parser",
  "serde",
  "serde_json",
@@ -3204,39 +3247,39 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "934a8e33f6f373b2fb66c288a468e3dae9a56a6c66bfecd5504fe566131afd3f"
 dependencies = [
  "anyhow",
- "dprint-core",
+ "dprint-core 0.66.2",
  "dprint-core-macros",
  "pulldown-cmark",
  "regex",
  "serde",
- "unicode-width",
+ "unicode-width 0.1.13",
 ]
 
 [[package]]
 name = "dprint-plugin-typescript"
-version = "0.93.4"
+version = "0.94.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "faae542025e642470671e0cf64a0b86f324d06166663d0d07cfc5e811680ce93"
+checksum = "ee224fa90b73185453c9d4609bf1921907fdf3ff4fd620092dff7ef098489442"
 dependencies = [
  "anyhow",
  "deno_ast",
- "dprint-core",
+ "dprint-core 0.67.4",
  "dprint-core-macros",
  "percent-encoding",
- "rustc-hash 1.1.0",
+ "rustc-hash 2.1.1",
  "serde",
 ]
 
 [[package]]
 name = "dprint-swc-ext"
-version = "0.20.0"
+version = "0.22.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ba28c12892aadb751c2ba7001d8460faee4748a04b4edc51c7121cc67ee03db"
+checksum = "1716eda64b75d22f36c641fbb1ba097529259e4c152695e7670b96f9498fc926"
 dependencies = [
  "allocator-api2",
  "bumpalo",
  "num-bigint",
- "rustc-hash 1.1.0",
+ "rustc-hash 2.1.1",
  "swc_atoms",
  "swc_common",
  "swc_ecma_ast",
@@ -3349,7 +3392,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "48cede2bb1b07dd598d269f973792c43e0cd92686d3b452bd6e01d7a8eb01211"
 dependencies = [
  "debug-ignore",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "log",
  "thiserror 1.0.69",
  "zerocopy",
@@ -3660,6 +3703,12 @@ version = "1.0.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
 
+[[package]]
+name = "foldhash"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f"
+
 [[package]]
 name = "foreign-types"
 version = "0.5.0"
@@ -3704,12 +3753,12 @@ checksum = "1bf664d6b0598fea5600b85cddc79e60d4c1f262f42faf75c2d77dc2164c9a8b"
 
 [[package]]
 name = "from_variant"
-version = "0.1.8"
+version = "2.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fdc9cc75639b041067353b9bce2450d6847e547276c6fbe4487d7407980e07db"
+checksum = "8d7ccf961415e7aa17ef93dcb6c2441faaa8e768abe09e659b908089546f74c5"
 dependencies = [
  "proc-macro2",
- "swc_macros_common",
+ "swc_macros_common 1.0.0",
  "syn 2.0.87",
 ]
 
@@ -3892,7 +3941,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
 dependencies = [
  "fallible-iterator",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "stable_deref_trait",
 ]
 
@@ -4039,7 +4088,7 @@ dependencies = [
  "futures-sink",
  "futures-util",
  "http 0.2.12",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "slab",
  "tokio",
  "tokio-util",
@@ -4058,7 +4107,7 @@ dependencies = [
  "futures-core",
  "futures-sink",
  "http 1.1.0",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "slab",
  "tokio",
  "tokio-util",
@@ -4111,6 +4160,11 @@ name = "hashbrown"
 version = "0.15.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
+dependencies = [
+ "allocator-api2",
+ "equivalent",
+ "foldhash",
+]
 
 [[package]]
 name = "hashlink"
@@ -4306,15 +4360,15 @@ dependencies = [
 
 [[package]]
 name = "hstr"
-version = "0.2.12"
+version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dae404c0c5d4e95d4858876ab02eecd6a196bb8caa42050dfa809938833fc412"
+checksum = "71399f53a92ef72ee336a4b30201c6e944827e14e0af23204c291aad9c24cc85"
 dependencies = [
  "hashbrown 0.14.5",
  "new_debug_unreachable",
  "once_cell",
  "phf",
- "rustc-hash 1.1.0",
+ "rustc-hash 2.1.1",
  "triomphe",
 ]
 
@@ -4686,7 +4740,7 @@ checksum = "1215d4d92511fbbdaea50e750e91f2429598ef817f02b579158e92803b52c00a"
 dependencies = [
  "boxed_error",
  "deno_error",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "log",
  "percent-encoding",
  "serde",
@@ -4707,12 +4761,12 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.3.0"
+version = "2.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0"
+checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652"
 dependencies = [
  "equivalent",
- "hashbrown 0.14.5",
+ "hashbrown 0.15.2",
  "serde",
 ]
 
@@ -5422,7 +5476,7 @@ dependencies = [
  "cfg_aliases",
  "codespan-reporting",
  "hexf-parse",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "log",
  "rustc-hash 1.1.0",
  "serde",
@@ -6059,7 +6113,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9"
 dependencies = [
  "fixedbitset",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
 ]
 
 [[package]]
@@ -6390,22 +6444,22 @@ dependencies = [
 
 [[package]]
 name = "ptr_meta"
-version = "0.1.4"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1"
+checksum = "fe9e76f66d3f9606f44e45598d155cb13ecf09f4a28199e48daf8c8fc937ea90"
 dependencies = [
  "ptr_meta_derive",
 ]
 
 [[package]]
 name = "ptr_meta_derive"
-version = "0.1.4"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac"
+checksum = "ca414edb151b4c8d125c12566ab0d74dc9cdba36fb80eb7b848c15f495fd32d1"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.87",
 ]
 
 [[package]]
@@ -6432,7 +6486,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d1a341ae463320e9f8f34adda49c8a85d81d4e8f34cce4397fb0350481552224"
 dependencies = [
  "chrono",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "quick-xml",
  "strip-ansi-escapes",
  "thiserror 1.0.69",
@@ -6458,7 +6512,7 @@ dependencies = [
  "pin-project-lite",
  "quinn-proto",
  "quinn-udp",
- "rustc-hash 2.0.0",
+ "rustc-hash 2.1.1",
  "rustls",
  "socket2",
  "thiserror 2.0.3",
@@ -6476,7 +6530,7 @@ dependencies = [
  "getrandom",
  "rand",
  "ring",
- "rustc-hash 2.0.0",
+ "rustc-hash 2.1.1",
  "rustls",
  "rustls-pki-types",
  "slab",
@@ -6664,7 +6718,7 @@ dependencies = [
  "bumpalo",
  "hashbrown 0.15.2",
  "log",
- "rustc-hash 2.0.0",
+ "rustc-hash 2.1.1",
  "smallvec",
 ]
 
@@ -6907,9 +6961,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
 
 [[package]]
 name = "rustc-hash"
-version = "2.0.0"
+version = "2.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
+checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
 
 [[package]]
 name = "rustc_version"
@@ -7044,7 +7098,7 @@ dependencies = [
  "nix",
  "radix_trie",
  "unicode-segmentation",
- "unicode-width",
+ "unicode-width 0.1.13",
  "utf8parse",
  "winapi",
 ]
@@ -7248,7 +7302,7 @@ version = "1.0.122"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da"
 dependencies = [
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "itoa",
  "memchr",
  "ryu",
@@ -7633,13 +7687,13 @@ dependencies = [
 
 [[package]]
 name = "string_enum"
-version = "0.4.4"
+version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05e383308aebc257e7d7920224fa055c632478d92744eca77f99be8fa1545b90"
+checksum = "c9fe66b8ee349846ce2f9557a26b8f1e74843c4a13fb381f9a3d73617a5f956a"
 dependencies = [
  "proc-macro2",
  "quote",
- "swc_macros_common",
+ "swc_macros_common 1.0.0",
  "syn 2.0.87",
 ]
 
@@ -7716,44 +7770,46 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
 
 [[package]]
 name = "swc_allocator"
-version = "0.1.8"
+version = "4.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "adc8bd3075d1c6964010333fae9ddcd91ad422a4f8eb8b3206a9b2b6afb4209e"
+checksum = "cc6b926f0d94bbb34031fe5449428cfa1268cdc0b31158d6ad9c97e0fc1e79dd"
 dependencies = [
+ "allocator-api2",
  "bumpalo",
  "hashbrown 0.14.5",
  "ptr_meta",
- "rustc-hash 1.1.0",
+ "rustc-hash 2.1.1",
  "triomphe",
 ]
 
 [[package]]
 name = "swc_atoms"
-version = "0.6.7"
+version = "5.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb6567e4e67485b3e7662b486f1565bdae54bd5b9d6b16b2ba1a9babb1e42125"
+checksum = "9d7077ba879f95406459bc0c81f3141c529b34580bc64d7ab7bd15e7118a0391"
 dependencies = [
  "hstr",
  "once_cell",
- "rustc-hash 1.1.0",
+ "rustc-hash 2.1.1",
  "serde",
 ]
 
 [[package]]
 name = "swc_bundler"
-version = "0.237.0"
+version = "11.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c77c112c218a09635d99a45802a81b4f341d6c28c81076aa2c29ba3bcd9151a9"
+checksum = "452694eeb8bcbe98dc55557757ad0385e5126746c499dfe194b9690a80506086"
 dependencies = [
  "anyhow",
  "crc",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "is-macro",
  "once_cell",
  "parking_lot",
  "petgraph",
  "radix_fmt",
  "relative-path",
+ "rustc-hash 2.1.1",
  "swc_atoms",
  "swc_common",
  "swc_ecma_ast",
@@ -7771,23 +7827,23 @@ dependencies = [
 
 [[package]]
 name = "swc_cached"
-version = "0.3.20"
+version = "2.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83406221c501860fce9c27444f44125eafe9e598b8b81be7563d7036784cd05c"
+checksum = "d7133338c3bef796430deced151b0eaa5430710a90e38da19e8e3045e8e36eeb"
 dependencies = [
- "ahash",
  "anyhow",
  "dashmap",
  "once_cell",
  "regex",
+ "rustc-hash 2.1.1",
  "serde",
 ]
 
 [[package]]
 name = "swc_common"
-version = "0.37.5"
+version = "8.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12d0a8eaaf1606c9207077d75828008cb2dfb51b095a766bd2b72ef893576e31"
+checksum = "26fbd21a1179166b5635d4b7a6b5930cf34b803a7361e0297b04f84dc820db04"
 dependencies = [
  "ast_node",
  "better_scoped_tls",
@@ -7797,7 +7853,7 @@ dependencies = [
  "new_debug_unreachable",
  "num-bigint",
  "once_cell",
- "rustc-hash 1.1.0",
+ "rustc-hash 2.1.1",
  "serde",
  "siphasher",
  "sourcemap 9.0.0",
@@ -7806,18 +7862,18 @@ dependencies = [
  "swc_eq_ignore_macros",
  "swc_visit",
  "tracing",
- "unicode-width",
+ "unicode-width 0.1.13",
  "url",
 ]
 
 [[package]]
 name = "swc_config"
-version = "0.1.15"
+version = "2.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4740e53eaf68b101203c1df0937d5161a29f3c13bceed0836ddfe245b72dd000"
+checksum = "eb63364aebd1a8490a80fa8933825c6916d4df55d5472312d5adb62c9fb4e4ba"
 dependencies = [
  "anyhow",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "serde",
  "serde_json",
  "swc_cached",
@@ -7826,21 +7882,21 @@ dependencies = [
 
 [[package]]
 name = "swc_config_macro"
-version = "0.1.4"
+version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c5f56139042c1a95b54f5ca48baa0e0172d369bcc9d3d473dad1de36bae8399"
+checksum = "7f2ebd37ef52a8555c8c9be78b694d64adcb5e3bc16c928f030d82f1d65fac57"
 dependencies = [
  "proc-macro2",
  "quote",
- "swc_macros_common",
+ "swc_macros_common 1.0.0",
  "syn 2.0.87",
 ]
 
 [[package]]
 name = "swc_ecma_ast"
-version = "0.118.2"
+version = "8.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a6f866d12e4d519052b92a0a86d1ac7ff17570da1272ca0c89b3d6f802cd79df"
+checksum = "c66db1e9b31f0f91ee0964aba014b4d2dfdc6c558732d106d762b43bedad2c4a"
 dependencies = [
  "bitflags 2.8.0",
  "is-macro",
@@ -7851,18 +7907,23 @@ dependencies = [
  "string_enum",
  "swc_atoms",
  "swc_common",
+ "swc_visit",
  "unicode-id-start",
 ]
 
 [[package]]
 name = "swc_ecma_codegen"
-version = "0.155.1"
+version = "8.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc7641608ef117cfbef9581a99d02059b522fcca75e5244fa0cbbd8606689c6f"
+checksum = "874889c00e41e5ae487886ff4af2533944584e8b479bc469a3f9708cab7ecdb7"
 dependencies = [
+ "ascii",
+ "compact_str",
  "memchr",
  "num-bigint",
  "once_cell",
+ "regex",
+ "rustc-hash 2.1.1",
  "serde",
  "sourcemap 9.0.0",
  "swc_allocator",
@@ -7875,24 +7936,25 @@ dependencies = [
 
 [[package]]
 name = "swc_ecma_codegen_macros"
-version = "0.7.7"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "859fabde36db38634f3fad548dd5e3410c1aebba1b67a3c63e67018fa57a0bca"
+checksum = "4ac2ff0957329e0dfcde86a1ac465382e189bf42a5989720d3476bea78eaa31a"
 dependencies = [
  "proc-macro2",
  "quote",
- "swc_macros_common",
+ "swc_macros_common 1.0.0",
  "syn 2.0.87",
 ]
 
 [[package]]
 name = "swc_ecma_loader"
-version = "0.49.1"
+version = "8.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55fa3d55045b97894bfb04d38aff6d6302ac8a6a38e3bb3dfb0d20475c4974a9"
+checksum = "a801462c997b71e4add7684ce4953c7d6200c75b5552b8d594783da84ad9564c"
 dependencies = [
  "anyhow",
  "pathdiff",
+ "rustc-hash 2.1.1",
  "serde",
  "swc_atoms",
  "swc_common",
@@ -7901,15 +7963,16 @@ dependencies = [
 
 [[package]]
 name = "swc_ecma_parser"
-version = "0.149.1"
+version = "10.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "683dada14722714588b56481399c699378b35b2ba4deb5c4db2fb627a97fb54b"
+checksum = "f9e336f2b460882df2c132328b3c29ab3e680e1db681a05ec3e406940d98320a"
 dependencies = [
  "either",
  "new_debug_unreachable",
  "num-bigint",
  "num-traits",
  "phf",
+ "rustc-hash 2.1.1",
  "serde",
  "smallvec",
  "smartstring",
@@ -7923,16 +7986,16 @@ dependencies = [
 
 [[package]]
 name = "swc_ecma_transforms_base"
-version = "0.145.0"
+version = "11.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "65f21494e75d0bd8ef42010b47cabab9caaed8f2207570e809f6f4eb51a710d1"
+checksum = "53f823fb2ba61099c06f1557f4d7bc3a957147f2e39f92419204682aa62b46fc"
 dependencies = [
  "better_scoped_tls",
  "bitflags 2.8.0",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "once_cell",
  "phf",
- "rustc-hash 1.1.0",
+ "rustc-hash 2.1.1",
  "serde",
  "smallvec",
  "swc_atoms",
@@ -7941,14 +8004,15 @@ dependencies = [
  "swc_ecma_parser",
  "swc_ecma_utils",
  "swc_ecma_visit",
+ "swc_parallel",
  "tracing",
 ]
 
 [[package]]
 name = "swc_ecma_transforms_classes"
-version = "0.134.0"
+version = "11.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c3d884594385bea9405a2e1721151470d9a14d3ceec5dd773c0ca6894791601"
+checksum = "2111a904b8f3c5dd63f56e7c8048851fcd8f748691a162a5d19a5da49f4a9d35"
 dependencies = [
  "swc_atoms",
  "swc_common",
@@ -7960,27 +8024,27 @@ dependencies = [
 
 [[package]]
 name = "swc_ecma_transforms_macros"
-version = "0.5.5"
+version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "500a1dadad1e0e41e417d633b3d6d5de677c9e0d3159b94ba3348436cdb15aab"
+checksum = "6845dfb88569f3e8cd05901505916a8ebe98be3922f94769ca49f84e8ccec8f7"
 dependencies = [
  "proc-macro2",
  "quote",
- "swc_macros_common",
+ "swc_macros_common 1.0.0",
  "syn 2.0.87",
 ]
 
 [[package]]
 name = "swc_ecma_transforms_optimization"
-version = "0.208.0"
+version = "11.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "98d8447ea20ef76958a8240feef95743702485a84331e6df5bdbe7e383c87838"
+checksum = "93e98cb0e4e10a839c553d610082b4b920a430019a0150067ac415e6049f12b2"
 dependencies = [
  "dashmap",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "once_cell",
  "petgraph",
- "rustc-hash 1.1.0",
+ "rustc-hash 2.1.1",
  "serde_json",
  "swc_atoms",
  "swc_common",
@@ -7996,12 +8060,12 @@ dependencies = [
 
 [[package]]
 name = "swc_ecma_transforms_proposal"
-version = "0.179.0"
+version = "11.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79938ff510fc647febd8c6c3ef4143d099fdad87a223680e632623d056dae2dd"
+checksum = "a3072700bb4401fffed5a152248d0d173a41da94584a4267355fa6772538880b"
 dependencies = [
  "either",
- "rustc-hash 1.1.0",
+ "rustc-hash 2.1.1",
  "serde",
  "smallvec",
  "swc_atoms",
@@ -8016,14 +8080,15 @@ dependencies = [
 
 [[package]]
 name = "swc_ecma_transforms_react"
-version = "0.191.0"
+version = "12.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76c76d8b9792ce51401d38da0fa62158d61f6d80d16d68fe5b03ce4bf5fba383"
+checksum = "311218980029ea376a1f53292418d852d50b461d15d9d39f830abf0d1c3bdd6c"
 dependencies = [
  "base64 0.21.7",
  "dashmap",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "once_cell",
+ "rustc-hash 2.1.1",
  "serde",
  "sha1",
  "string_enum",
@@ -8041,10 +8106,12 @@ dependencies = [
 
 [[package]]
 name = "swc_ecma_transforms_typescript"
-version = "0.198.1"
+version = "12.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15455da4768f97186c40523e83600495210c11825d3a44db43383fd81eace88d"
+checksum = "19c32ebb3dd1942d35142de60c9dc0f3c034d26567de7eb8b3ad6de426f5b0e9"
 dependencies = [
+ "once_cell",
+ "rustc-hash 2.1.1",
  "ryu-js",
  "serde",
  "swc_atoms",
@@ -8058,28 +8125,29 @@ dependencies = [
 
 [[package]]
 name = "swc_ecma_utils"
-version = "0.134.2"
+version = "11.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "029eec7dd485923a75b5a45befd04510288870250270292fc2c1b3a9e7547408"
+checksum = "721dc779e7de200da96ac4002c710bc32c988e3e1ebf62b39d32bf99f14d9765"
 dependencies = [
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "num_cpus",
  "once_cell",
- "rustc-hash 1.1.0",
+ "rustc-hash 2.1.1",
  "ryu-js",
  "swc_atoms",
  "swc_common",
  "swc_ecma_ast",
  "swc_ecma_visit",
+ "swc_parallel",
  "tracing",
  "unicode-id",
 ]
 
 [[package]]
 name = "swc_ecma_visit"
-version = "0.104.8"
+version = "8.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b1c6802e68e51f336e8bc9644e9ff9da75d7da9c1a6247d532f2e908aa33e81"
+checksum = "2f7a65fa06d0c0f709f1df4e820ccdc4eca7b3db7f9d131545e20c2ac2f1cd23"
 dependencies = [
  "new_debug_unreachable",
  "num-bigint",
@@ -8092,9 +8160,9 @@ dependencies = [
 
 [[package]]
 name = "swc_eq_ignore_macros"
-version = "0.1.4"
+version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63db0adcff29d220c3d151c5b25c0eabe7e32dd936212b84cdaa1392e3130497"
+checksum = "e96e15288bf385ab85eb83cff7f9e2d834348da58d0a31b33bdb572e66ee413e"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -8103,24 +8171,25 @@ dependencies = [
 
 [[package]]
 name = "swc_fast_graph"
-version = "0.25.0"
+version = "9.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "357e2c97bb51431d65080f25b436bc4e2fc1a7f64a643bc21a8353e478dc799f"
+checksum = "bd24b9798b0538803d0a69cffa5f5e051087fa2bd0d23e5a2f05d32edf9ab671"
 dependencies = [
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "petgraph",
- "rustc-hash 1.1.0",
+ "rustc-hash 2.1.1",
  "swc_common",
 ]
 
 [[package]]
 name = "swc_graph_analyzer"
-version = "0.26.0"
+version = "8.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f84e1d24a0d6e4066b42cfc00ab9b3109e314465aa199dd3e16849ed9566dce7"
+checksum = "ed1b3b564c8316500be98cd8ba3dbd604070958d30494b31e8333a472d011f0b"
 dependencies = [
  "auto_impl",
  "petgraph",
+ "rustc-hash 2.1.1",
  "swc_common",
  "swc_fast_graph",
  "tracing",
@@ -8137,11 +8206,31 @@ dependencies = [
  "syn 2.0.87",
 ]
 
+[[package]]
+name = "swc_macros_common"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a509f56fca05b39ba6c15f3e58636c3924c78347d63853632ed2ffcb6f5a0ac7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
+[[package]]
+name = "swc_parallel"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5f75f1094d69174ef628e3665fff0f81d58e9f568802e3c90d332c72b0b6026"
+dependencies = [
+ "once_cell",
+]
+
 [[package]]
 name = "swc_visit"
-version = "0.6.2"
+version = "2.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ceb044142ba2719ef9eb3b6b454fce61ab849eb696c34d190f04651955c613d"
+checksum = "9138b6a36bbe76dd6753c4c0794f7e26480ea757bee499738bedbbb3ae3ec5f3"
 dependencies = [
  "either",
  "new_debug_unreachable",
@@ -8156,7 +8245,7 @@ dependencies = [
  "Inflector",
  "proc-macro2",
  "quote",
- "swc_macros_common",
+ "swc_macros_common 0.3.13",
  "syn 2.0.87",
 ]
 
@@ -8463,7 +8552,7 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4b3f46f0549180b9c6f7f76270903f1a06867c43a03998b99dce81aa1760c3b2"
 dependencies = [
- "unicode-width",
+ "unicode-width 0.1.13",
 ]
 
 [[package]]
@@ -8616,7 +8705,7 @@ version = "0.22.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "02a8b472d1a3d7c18e2d61a489aee3453fd9031c33e4f55bd533f4a7adca1bee"
 dependencies = [
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "toml_datetime",
  "winnow 0.7.1",
 ]
@@ -8932,6 +9021,12 @@ version = "0.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
 
+[[package]]
+name = "unicode-width"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd"
+
 [[package]]
 name = "unicode-xid"
 version = "0.2.6"
@@ -9050,7 +9145,7 @@ checksum = "97599c400fc79925922b58303e98fcb8fa88f573379a08ddb652e72cbd2e70f6"
 dependencies = [
  "bitflags 2.8.0",
  "encoding_rs",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "num-bigint",
  "serde",
  "thiserror 1.0.69",
@@ -9310,7 +9405,7 @@ dependencies = [
  "bitflags 2.8.0",
  "cfg_aliases",
  "document-features",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "log",
  "naga",
  "once_cell",
@@ -9973,7 +10068,7 @@ dependencies = [
  "crossbeam-utils",
  "displaydoc",
  "flate2",
- "indexmap 2.3.0",
+ "indexmap 2.7.1",
  "memchr",
  "thiserror 1.0.69",
 ]
diff --git a/Cargo.toml b/Cargo.toml
index 97afa499ea0d62..00c33028d158a9 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -50,11 +50,14 @@ license = "MIT"
 repository = "https://github.com/denoland/deno"
 
 [workspace.dependencies]
-deno_ast = { version = "=0.45.1", features = ["transpiling"] }
+deno_ast = { version = "=0.46.0", features = ["transpiling"] }
 deno_core = { version = "0.340.0" }
 
 deno_bench_util = { version = "0.187.0", path = "./bench_util" }
 deno_config = { version = "=0.50.0", features = ["workspace"] }
+deno_doc = "=0.169.0"
+deno_graph = "=0.89.0"
+deno_lint = "=0.74.0"
 deno_lockfile = "=0.24.0"
 deno_media_type = { version = "=0.2.6", features = ["module_specifier"] }
 deno_npm = "=0.27.2"
@@ -105,16 +108,25 @@ deno_resolver = { version = "0.24.0", path = "./resolvers/deno" }
 deno_snapshots = { version = "0.8.0", path = "./cli/snapshot" }
 node_resolver = { version = "0.31.0", path = "./resolvers/node" }
 
+aead-gcm-stream = "0.4"
 aes = "=0.8.3"
+aes-gcm = "0.10"
+aes-kw = "0.2.1"
+anstream = "0.6.14"
 anyhow = "1.0.57"
+async-compression = "0.4"
 async-once-cell = "0.5.4"
 async-stream = "0.3"
 async-trait = "0.1.73"
 base32 = "=0.5.1"
 base64 = "0.21.7"
+base64-simd = "0.8"
 bencher = "0.1"
+bincode = "=1.3.3"
+blake2 = "0.10.6"
 boxed_error = "0.2.3"
 brotli = "6.0.0"
+bytemuck = "1.17.1"
 bytes = "1.4.0"
 cache_control = "=0.2.0"
 capacity_builder = "0.5.0"
@@ -122,30 +134,64 @@ cbc = { version = "=0.1.2", features = ["alloc"] }
 # Note: Do not use the "clock" feature of chrono, as it links us to CoreFoundation on macOS.
 #       Instead use util::time::utc_now()
 chrono = { version = "0.4", default-features = false, features = ["std", "serde"] }
+clap = "=4.5.30"
+clap_complete = "=4.5.45"
+clap_complete_fig = "=4.5.2"
 color-print = "0.3.5"
 console_static_text = "=0.8.3"
+const-oid = "0.9.5"
+cranelift = "0.116"
+cranelift-native = "0.116"
+crossterm = "0.28.1"
 ctr = { version = "0.9.2", features = ["alloc"] }
+curve25519-dalek = "4.1.3"
 dashmap = "5.5.3"
 data-encoding = "2.3.3"
 data-url = "=0.3.1"
 deno_cache_dir = "=0.18.0"
 deno_error = "=0.5.5"
+deno_native_certs = "0.3.0"
 deno_package_json = { version = "=0.5.0", default-features = false }
+deno_task_shell = "=0.20.2"
 deno_unsync = "0.4.2"
+deno_whoami = "0.1.0"
+der = "0.7.9"
+dhat = "0.3.3"
+digest = "0.10.5"
+dissimilar = "=1.0.4"
 dlopen2 = "0.6.1"
+dotenvy = "0.15.7"
+dprint-plugin-json = "=0.19.4"
+dprint-plugin-jupyter = "=0.1.5"
+dprint-plugin-markdown = "=0.17.8"
+dprint-plugin-typescript = "=0.94.0"
+dsa = "0.6.3"
+dyn-clone = "1"
 ecb = "=0.1.2"
+ecdsa = "0.16.9"
+ed25519-dalek = "2.1.1"
+ed448-goldilocks = "0.8.3"
 elliptic-curve = { version = "0.13.4", features = ["alloc", "arithmetic", "ecdh", "std", "pem", "jwk"] }
 encoding_rs = "=0.8.33"
+env_logger = "=0.10.0"
+error_reporter = "1"
+fancy-regex = "=0.10.0"
 fast-socks5 = "0.9.6"
 faster-hex = "0.9"
 fastwebsockets = { version = "0.8", features = ["upgrade", "unstable-split"] }
+file_test_runner = "0.7.3"
 filetime = "0.2.16"
+flaky_test = "=0.2.2"
 flate2 = { version = "1.0.30", default-features = false }
+fqdn = "0.3.4"
 fs3 = "0.5.0"
 futures = "0.3.21"
 glob = "0.3.1"
 h2 = "0.4.6"
+hickory-client = "0.25.0-alpha.4"
+hickory-proto = "0.25.0-alpha.4"
 hickory-resolver = { version = "0.25.0-alpha.4", features = ["tokio-runtime", "serde"] }
+hickory-server = "0.25.0-alpha.4"
 http = "1.0"
 http-body = "1.0"
 http-body-util = "0.1.2"
@@ -155,63 +201,114 @@ hyper = { version = "1.6.0", features = ["full"] }
 hyper-rustls = { version = "0.27.2", default-features = false, features = ["http1", "http2", "tls12", "ring"] }
 hyper-util = { version = "0.1.10", features = ["tokio", "client", "client-legacy", "server", "server-auto"] }
 hyper_v014 = { package = "hyper", version = "0.14.26", features = ["runtime", "http1"] }
+idna = "1.0.3"
+image = { version = "0.25.4", default-features = false }
 import_map = { version = "0.21.0", features = ["ext"] }
 indexmap = { version = "2", features = ["serde"] }
 ipnet = "2.3"
+ipnetwork = "0.20.0"
+itertools = "0.10"
 jsonc-parser = { version = "=0.26.2", features = ["serde"] }
+jupyter_runtime = "=0.19.0"
+k256 = "0.13.1"
 lazy-regex = "3"
+lcms2 = "6.1.0"
 libc = "0.2.168"
+libffi = "=3.2.0"
+libffi-sys = "=2.3.0"
+libloading = "0.7"
+libsqlite3-sys = "0.30.1"
 libsui = "0.5.0"
+libuv-sys-lite = "=1.48.2"
 libz-sys = { version = "1.1.20", default-features = false }
 log = { version = "0.4.20", features = ["kv"] }
 lsp-types = "=0.97.0" # used by tower-lsp and "proposed" feature is unstable in patch releases
+malva = "=0.11.0"
+markup_fmt = "=0.18.0"
+md-5 = "0.10.5"
+md4 = "0.10.2"
+memchr = "2.7.4"
+memmap2 = "0.9"
 memmem = "0.1.1"
+mime = "0.3.16"
 monch = "=0.5.0"
+napi-build = "1"
+napi-sys = { version = "=2.2.2", default-features = false }
+netif = "0.1.6"
 notify = "=6.1.1"
 ntest_timeout = "0.9.3"
 num-bigint = { version = "0.4", features = ["rand"] }
+num-bigint-dig = "0.8.2"
+num-integer = "0.1.45"
+num-traits = "0.2.19"
 once_cell = "1.17.1"
+open = "5.0.1"
 os_pipe = { version = "=1.1.5", features = ["io_safety"] }
 p224 = { version = "0.13.0", features = ["ecdh"] }
 p256 = { version = "0.13.2", features = ["ecdh", "jwk"] }
 p384 = { version = "0.13.0", features = ["ecdh", "jwk"] }
+p521 = "0.13.3"
 parking_lot = "0.12.0"
+path-clean = "=0.1.0"
+pathdiff = "0.2.1"
+pbkdf2 = "0.12.1"
 percent-encoding = "2.3.0"
 phf = { version = "0.11", features = ["macros"] }
 pin-project = "1.0.11" # don't pin because they yank crates from cargo
+pin-project-lite = "0.2.13"
+pkcs8 = "0.10.2"
 pretty_assertions = "=1.4.0"
+pretty_yaml = "=0.5.0"
 prost = "0.13"
 prost-build = "0.13"
+quick-junit = "0.3.5"
+quinn = { version = "0.11.6", default-features = false }
 rand = "=0.8.5"
+rayon = "1.8.0"
 regex = "^1.7.0"
 reqwest = { version = "=0.12.5", default-features = false, features = ["rustls-tls", "stream", "gzip", "brotli", "socks", "json", "http2"] } # pinned because of https://github.com/seanmonstar/reqwest/pull/1955
 ring = "^0.17.0"
+ripemd = "0.1.3"
 rusqlite = { version = "0.32.0", features = ["unlock_notify", "bundled", "session"] }
+rustc-hash = "2.1.1"
 rustls = { version = "0.23.11", default-features = false, features = ["logging", "std", "tls12", "ring"] }
 rustls-pemfile = "2"
 rustls-tokio-stream = "=0.3.0"
 rustls-webpki = "0.102"
 rustyline = "=13.0.0"
+rustyline-derive = "=0.7.0"
 saffron = "=0.1.0"
+same-file = "1.0.6"
 scopeguard = "1.2.0"
+scrypt = "0.11.0"
 sec1 = "0.7"
+semver = "=1.0.14"
 serde = { version = "1.0.149", features = ["derive"] }
+serde-value = "0.7"
 serde_bytes = "0.11"
 serde_json = "1.0.85"
 serde_repr = "=0.1.16"
 sha1 = { version = "0.10.6", features = ["oid"] }
 sha2 = { version = "0.10.8", features = ["oid"] }
+sha3 = "0.10.8"
 signature = "2.1"
+simd-json = "0.14.0"
 slab = "0.4"
+sm3 = "0.4.2"
 smallvec = "1.8"
 socket2 = { version = "0.5.3", features = ["all"] }
 spki = "0.7.2"
+sqlformat = "=0.3.2"
+strsim = "0.11.1"
 sys_traits = "=0.1.8"
 tar = "=0.4.40"
 tempfile = "3.4.0"
 termcolor = "1.1.3"
+text-size = "=1.1.0"
+text_lines = "=0.6.0"
 thiserror = "2.0.3"
 tokio = { version = "1.36.0", features = ["full"] }
+tokio-eld = "0.2"
 tokio-metrics = { version = "0.3.0", features = ["rt"] }
 tokio-rustls = { version = "0.26.0", default-features = false, features = ["ring", "tls12"] }
 tokio-socks = "0.5.1"
@@ -220,15 +317,25 @@ tower = { version = "0.5.2", default-features = false, features = ["retry", "uti
 tower-http = { version = "0.6.1", features = ["decompression-br", "decompression-gzip"] }
 tower-lsp = { package = "deno_tower_lsp", version = "=0.4.3", features = ["proposed"] }
 tower-service = "0.3.2"
+tracing = "0.1"
+tracing-opentelemetry = "0.28.0"
+tracing-subscriber = "0.3.19"
 twox-hash = "=1.6.3"
+typed-arena = "=2.0.2"
+unicode-width = "0.1.3"
 url = { version = "2.5", features = ["serde", "expose_internals"] }
+urlpattern = "0.3.0"
 uuid = { version = "1.3.0", features = ["v4"] }
 walkdir = "=2.3.2"
+web-transport-proto = "0.2.3"
 webpki-root-certs = "0.26.5"
 webpki-roots = "0.26"
 which = "6"
+x25519-dalek = "2.0.0"
+x509-parser = "0.15.0"
 yoke = { version = "0.7.4", features = ["derive"] }
 zeromq = { version = "=0.4.1", default-features = false, features = ["tcp-transport", "tokio-runtime"] }
+zip = { version = "2.1.6", default-features = false }
 zstd = "=0.12.4"
 
 opentelemetry = "0.27.0"
@@ -254,117 +361,11 @@ syn = { version = "2", features = ["full", "extra-traits"] }
 nix = "=0.27.1"
 
 # windows deps
-aead-gcm-stream = "0.4"
-aes-gcm = "0.10"
-aes-kw = "0.2.1"
-anstream = "0.6.14"
-async-compression = "0.4"
-base64-simd = "0.8"
-bincode = "=1.3.3"
-blake2 = "0.10.6"
-bytemuck = "1.17.1"
-clap = "=4.5.30"
-clap_complete = "=4.5.45"
-clap_complete_fig = "=4.5.2"
-const-oid = "0.9.5"
-cranelift = "0.116"
-cranelift-native = "0.116"
-crossterm = "0.28.1"
-curve25519-dalek = "4.1.3"
-deno_doc = "=0.168.0"
-deno_graph = "=0.88.0"
-deno_lint = "0.73.1"
-deno_native_certs = "0.3.0"
-deno_task_shell = "=0.20.2"
-deno_whoami = "0.1.0"
-der = "0.7.9"
-dhat = "0.3.3"
-digest = "0.10.5"
-dissimilar = "=1.0.4"
-dotenvy = "0.15.7"
-dprint-plugin-json = "=0.19.4"
-dprint-plugin-jupyter = "=0.1.5"
-dprint-plugin-markdown = "=0.17.8"
-dprint-plugin-typescript = "=0.93.4"
-dsa = "0.6.3"
-dyn-clone = "1"
-ecdsa = "0.16.9"
-ed25519-dalek = "2.1.1"
-ed448-goldilocks = "0.8.3"
-env_logger = "=0.10.0"
-error_reporter = "1"
-fancy-regex = "=0.10.0"
-file_test_runner = "0.7.3"
-flaky_test = "=0.2.2"
-fqdn = "0.3.4"
-hickory-client = "0.25.0-alpha.4"
-hickory-proto = "0.25.0-alpha.4"
-hickory-server = "0.25.0-alpha.4"
-idna = "1.0.3"
-image = { version = "0.25.4", default-features = false }
-ipnetwork = "0.20.0"
-itertools = "0.10"
 junction = "=1.2.0"
-jupyter_runtime = "=0.19.0"
-k256 = "0.13.1"
-lcms2 = "6.1.0"
-libffi = "=3.2.0"
-libffi-sys = "=2.3.0"
-libloading = "0.7"
-libsqlite3-sys = "0.30.1"
-libuv-sys-lite = "=1.48.2"
-malva = "=0.11.0"
-markup_fmt = "=0.18.0"
-md-5 = "0.10.5"
-md4 = "0.10.2"
-memchr = "2.7.4"
-memmap2 = "0.9"
-mime = "0.3.16"
-napi-build = "1"
-napi-sys = { version = "=2.2.2", default-features = false }
-netif = "0.1.6"
-num-bigint-dig = "0.8.2"
-num-integer = "0.1.45"
-num-traits = "0.2.19"
-open = "5.0.1"
-p521 = "0.13.3"
-path-clean = "=0.1.0"
-pathdiff = "0.2.1"
-pbkdf2 = "0.12.1"
-pin-project-lite = "0.2.13"
-pkcs8 = "0.10.2"
-pretty_yaml = "=0.5.0"
-quick-junit = "0.3.5"
-quinn = { version = "0.11.6", default-features = false }
-rayon = "1.8.0"
-ripemd = "0.1.3"
-rustyline-derive = "=0.7.0"
-same-file = "1.0.6"
-scrypt = "0.11.0"
-semver = "=1.0.14"
-serde-value = "0.7"
-sha3 = "0.10.8"
-simd-json = "0.14.0"
-sm3 = "0.4.2"
-sqlformat = "=0.3.2"
-strsim = "0.11.1"
-text-size = "=1.1.0"
-text_lines = "=0.6.0"
-tokio-eld = "0.2"
-tracing = "0.1"
-tracing-opentelemetry = "0.28.0"
-tracing-subscriber = "0.3.19"
-typed-arena = "=2.0.2"
-unicode-width = "0.1.3"
-urlpattern = "0.3.0"
-web-transport-proto = "0.2.3"
 win32job = "2"
 winapi = "=0.3.9"
 windows-sys = { version = "0.59.0", features = ["Win32_Foundation", "Win32_Media", "Win32_Storage_FileSystem", "Win32_System_IO", "Win32_System_WindowsProgramming", "Wdk", "Wdk_System", "Wdk_System_SystemInformation", "Win32_Security", "Win32_System_Pipes", "Wdk_Storage_FileSystem", "Win32_System_Registry", "Win32_System_Kernel", "Win32_System_Threading", "Win32_UI", "Win32_UI_Shell"] }
 winres = "=0.1.12"
-x25519-dalek = "2.0.0"
-x509-parser = "0.15.0"
-zip = { version = "2.1.6", default-features = false }
 
 [profile.release]
 codegen-units = 1
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index 65143a75e5185f..5ad5065919cc34 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -71,7 +71,7 @@ deno_ast = { workspace = true, features = ["bundler", "cjs", "codegen", "proposa
 deno_cache_dir = { workspace = true, features = ["sync"] }
 deno_config = { workspace = true, features = ["sync", "workspace"] }
 deno_core = { workspace = true, features = ["include_js_files_for_snapshotting"] }
-deno_doc = { version = "=0.168.0", features = ["rust", "comrak"] }
+deno_doc = { workspace = true, features = ["rust", "comrak"] }
 deno_error.workspace = true
 deno_graph.workspace = true
 deno_lib.workspace = true
@@ -150,6 +150,7 @@ quick-junit.workspace = true
 rand = { workspace = true, features = ["small_rng"] }
 regex.workspace = true
 ring.workspace = true
+rustc-hash.workspace = true
 rustyline.workspace = true
 rustyline-derive.workspace = true
 serde.workspace = true
diff --git a/cli/lsp/code_lens.rs b/cli/lsp/code_lens.rs
index b53380765d685d..777b03918c43d9 100644
--- a/cli/lsp/code_lens.rs
+++ b/cli/lsp/code_lens.rs
@@ -6,8 +6,8 @@ use std::rc::Rc;
 use std::sync::Arc;
 
 use deno_ast::swc::ast;
-use deno_ast::swc::visit::Visit;
-use deno_ast::swc::visit::VisitWith;
+use deno_ast::swc::ecma_visit::Visit;
+use deno_ast::swc::ecma_visit::VisitWith;
 use deno_ast::ParsedSource;
 use deno_ast::SourceRange;
 use deno_ast::SourceRangedForSpanned;
diff --git a/cli/lsp/documents.rs b/cli/lsp/documents.rs
index 69f8cdd6bb7c55..4d326fec854c34 100644
--- a/cli/lsp/documents.rs
+++ b/cli/lsp/documents.rs
@@ -14,7 +14,7 @@ use std::sync::atomic::Ordering;
 use std::sync::Arc;
 
 use dashmap::DashMap;
-use deno_ast::swc::visit::VisitWith;
+use deno_ast::swc::ecma_visit::VisitWith;
 use deno_ast::MediaType;
 use deno_ast::ParsedSource;
 use deno_ast::SourceTextInfo;
diff --git a/cli/lsp/testing/collectors.rs b/cli/lsp/testing/collectors.rs
index 8a36ca1f25bfd3..f6277fa6f7369d 100644
--- a/cli/lsp/testing/collectors.rs
+++ b/cli/lsp/testing/collectors.rs
@@ -4,8 +4,8 @@ use std::collections::HashMap;
 use std::collections::HashSet;
 
 use deno_ast::swc::ast;
-use deno_ast::swc::visit::Visit;
-use deno_ast::swc::visit::VisitWith;
+use deno_ast::swc::ecma_visit::Visit;
+use deno_ast::swc::ecma_visit::VisitWith;
 use deno_ast::SourceRangedForSpanned;
 use deno_ast::SourceTextInfo;
 use deno_core::ModuleSpecifier;
diff --git a/cli/tools/repl/session.rs b/cli/tools/repl/session.rs
index 58f441eff0f951..40714d0f9a6fd6 100644
--- a/cli/tools/repl/session.rs
+++ b/cli/tools/repl/session.rs
@@ -5,9 +5,9 @@ use std::sync::Arc;
 use deno_ast::diagnostics::Diagnostic;
 use deno_ast::swc::ast as swc_ast;
 use deno_ast::swc::common::comments::CommentKind;
-use deno_ast::swc::visit::noop_visit_type;
-use deno_ast::swc::visit::Visit;
-use deno_ast::swc::visit::VisitWith;
+use deno_ast::swc::ecma_visit::noop_visit_type;
+use deno_ast::swc::ecma_visit::Visit;
+use deno_ast::swc::ecma_visit::VisitWith;
 use deno_ast::ImportsNotUsedAsValues;
 use deno_ast::ModuleKind;
 use deno_ast::ModuleSpecifier;
diff --git a/cli/util/extract.rs b/cli/util/extract.rs
index 073c77b0c3369a..c24fb99e5cc16b 100644
--- a/cli/util/extract.rs
+++ b/cli/util/extract.rs
@@ -6,15 +6,13 @@ use std::sync::Arc;
 
 use deno_ast::swc::ast;
 use deno_ast::swc::atoms::Atom;
-use deno_ast::swc::common::collections::AHashSet;
 use deno_ast::swc::common::comments::CommentKind;
 use deno_ast::swc::common::DUMMY_SP;
+use deno_ast::swc::ecma_visit::visit_mut_pass;
+use deno_ast::swc::ecma_visit::Visit;
+use deno_ast::swc::ecma_visit::VisitMut;
+use deno_ast::swc::ecma_visit::VisitWith as _;
 use deno_ast::swc::utils as swc_utils;
-use deno_ast::swc::visit::as_folder;
-use deno_ast::swc::visit::FoldWith as _;
-use deno_ast::swc::visit::Visit;
-use deno_ast::swc::visit::VisitMut;
-use deno_ast::swc::visit::VisitWith as _;
 use deno_ast::MediaType;
 use deno_ast::SourceRangedForSpanned as _;
 use deno_cache_dir::file_fetcher::File;
@@ -251,7 +249,7 @@ struct ExportCollector {
 impl ExportCollector {
   fn to_import_specifiers(
     &self,
-    symbols_to_exclude: &AHashSet<Atom>,
+    symbols_to_exclude: &rustc_hash::FxHashSet<Atom>,
   ) -> Vec<ast::ImportSpecifier> {
     let mut import_specifiers = vec![];
 
@@ -580,7 +578,7 @@ fn generate_pseudo_file(
     parsed
       .program_ref()
       .to_owned()
-      .fold_with(&mut as_folder(Transform {
+      .apply(&mut visit_mut_pass(Transform {
         specifier: &file.specifier,
         base_file_specifier,
         exports_from_base: exports,
@@ -606,7 +604,7 @@ struct Transform<'a> {
   specifier: &'a ModuleSpecifier,
   base_file_specifier: &'a ModuleSpecifier,
   exports_from_base: &'a ExportCollector,
-  atoms_to_be_excluded_from_import: AHashSet<Atom>,
+  atoms_to_be_excluded_from_import: rustc_hash::FxHashSet<Atom>,
   wrap_kind: WrapKind,
 }
 

From eea5eb1c408567041c33fcf3353d5d54233c73e9 Mon Sep 17 00:00:00 2001
From: Nayeem Rahman <nayeemrmn99@gmail.com>
Date: Thu, 27 Feb 2025 21:34:32 +0000
Subject: [PATCH 041/115] fix(lsp): include prefix and suffix for rename edits
 (#28327)

---
 cli/lsp/language_server.rs     |  3 ++
 cli/lsp/tsc.rs                 | 28 +++++++----
 tests/integration/lsp_tests.rs | 87 ++++++++++++++++++++--------------
 3 files changed, 74 insertions(+), 44 deletions(-)

diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index 1036f468a7d524..3c6c20cc50d240 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -3017,12 +3017,15 @@ impl Inner {
     let asset_or_doc = self.get_asset_or_document(&specifier)?;
     let line_index = asset_or_doc.line_index();
 
+    let user_preferences =
+      tsc::UserPreferences::from_config_for_specifier(&self.config, &specifier);
     let maybe_locations = self
       .ts_server
       .find_rename_locations(
         self.snapshot(),
         specifier,
         line_index.offset_tsc(params.text_document_position.position)?,
+        user_preferences,
         token,
       )
       .await
diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs
index 15d4cd458ee7fb..a8bbf08649d56b 100644
--- a/cli/lsp/tsc.rs
+++ b/cli/lsp/tsc.rs
@@ -1174,6 +1174,7 @@ impl TsServer {
     snapshot: Arc<StateSnapshot>,
     specifier: ModuleSpecifier,
     position: u32,
+    user_preferences: UserPreferences,
     token: &CancellationToken,
   ) -> Result<Option<Vec<RenameLocation>>, AnyError> {
     let req = TscRequest::FindRenameLocations((
@@ -1181,7 +1182,7 @@ impl TsServer {
       position,
       false,
       false,
-      false,
+      user_preferences,
     ));
     let mut results = FuturesOrdered::new();
     for scope in snapshot
@@ -1205,7 +1206,10 @@ impl TsServer {
         if token.is_cancelled() {
           return Err(anyhow!("request cancelled"));
         } else {
-          lsp_warn!("Unable to get rename locations from TypeScript: {err}");
+          let err = err.to_string();
+          if !err.contains("Could not find source file") {
+            lsp_warn!("Unable to get rename locations from TypeScript: {err}");
+          }
         }
       }
       let locations = locations.unwrap_or_default();
@@ -2420,9 +2424,8 @@ impl ImplementationLocation {
 pub struct RenameLocation {
   #[serde(flatten)]
   document_span: DocumentSpan,
-  // RenameLocation props
-  // prefix_text: Option<String>,
-  // suffix_text: Option<String>,
+  prefix_text: Option<String>,
+  suffix_text: Option<String>,
 }
 
 impl RenameLocation {
@@ -2481,12 +2484,21 @@ impl RenameLocations {
 
       // push TextEdit for ensured `TextDocumentEdit.edits`.
       let document_edit = text_document_edit_map.get_mut(&uri).unwrap();
+      let new_text = [
+        location.prefix_text.as_deref(),
+        Some(new_name),
+        location.suffix_text.as_deref(),
+      ]
+      .into_iter()
+      .flatten()
+      .collect::<Vec<_>>()
+      .join("");
       document_edit.edits.push(lsp::OneOf::Left(lsp::TextEdit {
         range: location
           .document_span
           .text_span
           .to_range(asset_or_doc.line_index()),
-        new_text: new_name.to_string(),
+        new_text,
       }));
     }
 
@@ -5548,8 +5560,8 @@ pub enum TscRequest {
   ProvideCallHierarchyOutgoingCalls((String, u32)),
   // https://github.com/denoland/deno/blob/v1.37.1/cli/tsc/dts/typescript.d.ts#L6236
   PrepareCallHierarchy((String, u32)),
-  // https://github.com/denoland/deno/blob/v1.37.1/cli/tsc/dts/typescript.d.ts#L6221
-  FindRenameLocations((String, u32, bool, bool, bool)),
+  // https://github.com/denoland/deno/blob/v2.2.2/cli/tsc/dts/typescript.d.ts#L6674
+  FindRenameLocations((String, u32, bool, bool, UserPreferences)),
   // https://github.com/denoland/deno/blob/v1.37.1/cli/tsc/dts/typescript.d.ts#L6224
   GetSmartSelectionRange((String, u32)),
   // https://github.com/denoland/deno/blob/v1.37.1/cli/tsc/dts/typescript.d.ts#L6183
diff --git a/tests/integration/lsp_tests.rs b/tests/integration/lsp_tests.rs
index 4d14397be79a21..717986e48c1ad7 100644
--- a/tests/integration/lsp_tests.rs
+++ b/tests/integration/lsp_tests.rs
@@ -3105,7 +3105,7 @@ fn lsp_rename_synbol_file_scheme_edits_only() {
                 "start": { "line": 1, "character": 17 },
                 "end": { "line": 1, "character": 26 },
               },
-              "newText": "PATH_SEPARATOR",
+              "newText": "SEPARATOR as PATH_SEPARATOR",
             },
             {
               "range": {
@@ -3879,50 +3879,65 @@ fn lsp_rename() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
   client.initialize_default();
-  client.did_open(
-    json!({
-      "textDocument": {
-        "uri": "file:///a/file.ts",
-        "languageId": "typescript",
-        "version": 1,
+  client.did_open(json!({
+    "textDocument": {
+      "uri": "file:///a/file.ts",
+      "languageId": "typescript",
+      "version": 1,
+      "text": r#"
+        const variable = "a";
+        console.log(variable);
+        ({ variable });
+
         // this should not rename in comments and strings
-        "text": "let variable = 'a'; // variable\nconsole.log(variable);\n\"variable\";\n"
-      }
-    }),
-  );
+        // variable
+        "variable";
+      "#,
+    },
+  }));
   let res = client.write_request(
     "textDocument/rename",
     json!({
-      "textDocument": {
-        "uri": "file:///a/file.ts"
-      },
-      "position": { "line": 0, "character": 4 },
-      "newName": "variable_modified"
+      "textDocument": { "uri": "file:///a/file.ts" },
+      "position": { "line": 1, "character": 14 },
+      "newName": "variable_modified",
     }),
   );
   assert_eq!(
     res,
     json!({
-      "documentChanges": [{
-        "textDocument": {
-          "uri": "file:///a/file.ts",
-          "version": 1
-        },
-        "edits": [{
-          "range": {
-            "start": { "line": 0, "character": 4 },
-            "end": { "line": 0, "character": 12 }
-          },
-          "newText": "variable_modified"
-        }, {
-          "range": {
-            "start": { "line": 1, "character": 12 },
-            "end": { "line": 1, "character": 20 }
+      "documentChanges": [
+        {
+          "textDocument": {
+            "uri": "file:///a/file.ts",
+            "version": 1,
           },
-          "newText": "variable_modified"
-        }]
-      }]
-    })
+          "edits": [
+            {
+              "range": {
+                "start": { "line": 1, "character": 14 },
+                "end": { "line": 1, "character": 22 },
+              },
+              "newText": "variable_modified",
+            },
+            {
+              "range": {
+                "start": { "line": 2, "character": 20 },
+                "end": { "line": 2, "character": 28 },
+              },
+              "newText": "variable_modified",
+            },
+            {
+              "range": {
+                "start": { "line": 3, "character": 11 },
+                "end": { "line": 3, "character": 19 },
+              },
+              "newText": "variable: variable_modified",
+            },
+          ],
+        },
+      ],
+    }),
   );
   client.shutdown();
 }
@@ -15353,7 +15368,7 @@ fn lsp_deno_json_scopes_rename_symbol() {
           "edits": [
             {
               "range": file2.range_of("foo"),
-              "newText": "bar",
+              "newText": "bar as foo",
             },
           ],
         },

From 5a0fca9a613e6d157d5ca0cc29df465b06d800ac Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Thu, 27 Feb 2025 17:29:58 -0500
Subject: [PATCH 042/115] fix(fmt/md): handle callout followed by non-text
 (#28333)

---
 .dprint.json | 10 +++++-----
 Cargo.lock   | 35 ++++++++++-------------------------
 Cargo.toml   |  6 +++---
 3 files changed, 18 insertions(+), 33 deletions(-)

diff --git a/.dprint.json b/.dprint.json
index bd1279fd4a0c1d..26fb5f877b0160 100644
--- a/.dprint.json
+++ b/.dprint.json
@@ -74,11 +74,11 @@
     "tests/specs/run/error_syntax_empty_trailing_line/error_syntax_empty_trailing_line.mjs"
   ],
   "plugins": [
-    "https://plugins.dprint.dev/typescript-0.93.2.wasm",
-    "https://plugins.dprint.dev/json-0.19.4.wasm",
-    "https://plugins.dprint.dev/markdown-0.17.8.wasm",
-    "https://plugins.dprint.dev/toml-0.6.3.wasm",
-    "https://plugins.dprint.dev/exec-0.5.0.json@8d9972eee71fa1590e04873540421f3eda7674d0f1aae3d7c788615e7b7413d0",
+    "https://plugins.dprint.dev/typescript-0.94.0.wasm",
+    "https://plugins.dprint.dev/json-0.20.0.wasm",
+    "https://plugins.dprint.dev/markdown-0.18.0.wasm",
+    "https://plugins.dprint.dev/toml-0.7.0.wasm",
+    "https://plugins.dprint.dev/exec-0.5.1.json@492414e39dea4dccc07b4af796d2f4efdb89e84bae2bd4e1e924c0cc050855bf",
     "https://plugins.dprint.dev/g-plane/pretty_yaml-v0.5.0.wasm"
   ]
 }
diff --git a/Cargo.lock b/Cargo.lock
index b6df6f9af2119f..ca7a9209f9e6dc 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3173,21 +3173,6 @@ version = "0.15.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b"
 
-[[package]]
-name = "dprint-core"
-version = "0.66.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3ab0dd2bedc109d25f0d21afb09b7d329f6c6fa83b095daf31d2d967e091548"
-dependencies = [
- "anyhow",
- "bumpalo",
- "hashbrown 0.14.5",
- "indexmap 2.7.1",
- "rustc-hash 1.1.0",
- "serde",
- "unicode-width 0.1.13",
-]
-
 [[package]]
 name = "dprint-core"
 version = "0.67.4"
@@ -3215,12 +3200,12 @@ dependencies = [
 
 [[package]]
 name = "dprint-plugin-json"
-version = "0.19.4"
+version = "0.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57f91e594559b450b7c5d6a0ba9f3f9fe951c1ea371168f7c95973da3fdbd85a"
+checksum = "cb59d5e75ae9fb879a8793fdfc72e25ed9f0c91e62f5dc53e4f8ebb72103f100"
 dependencies = [
  "anyhow",
- "dprint-core 0.66.2",
+ "dprint-core",
  "dprint-core-macros",
  "jsonc-parser",
  "serde",
@@ -3229,12 +3214,12 @@ dependencies = [
 
 [[package]]
 name = "dprint-plugin-jupyter"
-version = "0.1.5"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0d20684e37b3824e2bc917cfcb14e2cdf88398eef507335d839cbd78172bfee"
+checksum = "74f227ccb72afc2ce9089184013c6b7a5b21e29f85f2bf3823de662bc94afccc"
 dependencies = [
  "anyhow",
- "dprint-core 0.66.2",
+ "dprint-core",
  "jsonc-parser",
  "serde",
  "serde_json",
@@ -3242,12 +3227,12 @@ dependencies = [
 
 [[package]]
 name = "dprint-plugin-markdown"
-version = "0.17.8"
+version = "0.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "934a8e33f6f373b2fb66c288a468e3dae9a56a6c66bfecd5504fe566131afd3f"
+checksum = "845fdbe59bf4088f7def60adc1b3383884d432d78d86ea8b30860d4e65f2bc43"
 dependencies = [
  "anyhow",
- "dprint-core 0.66.2",
+ "dprint-core",
  "dprint-core-macros",
  "pulldown-cmark",
  "regex",
@@ -3263,7 +3248,7 @@ checksum = "ee224fa90b73185453c9d4609bf1921907fdf3ff4fd620092dff7ef098489442"
 dependencies = [
  "anyhow",
  "deno_ast",
- "dprint-core 0.67.4",
+ "dprint-core",
  "dprint-core-macros",
  "percent-encoding",
  "rustc-hash 2.1.1",
diff --git a/Cargo.toml b/Cargo.toml
index 00c33028d158a9..c4efe4cb7a89bf 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -161,9 +161,9 @@ digest = "0.10.5"
 dissimilar = "=1.0.4"
 dlopen2 = "0.6.1"
 dotenvy = "0.15.7"
-dprint-plugin-json = "=0.19.4"
-dprint-plugin-jupyter = "=0.1.5"
-dprint-plugin-markdown = "=0.17.8"
+dprint-plugin-json = "=0.20.0"
+dprint-plugin-jupyter = "=0.2.0"
+dprint-plugin-markdown = "=0.18.0"
 dprint-plugin-typescript = "=0.94.0"
 dsa = "0.6.3"
 dyn-clone = "1"

From b4aa3e6d1eb7e1be6c9051b2150111ac4c5d95ff Mon Sep 17 00:00:00 2001
From: Marvin Hagemeister <marvin@deno.com>
Date: Fri, 28 Feb 2025 12:59:41 +0100
Subject: [PATCH 043/115] fix(unstable): lint plugin regex attribute selector
 not working (#28340)

The code to support regex matching on attribute values was already
there. I just forgot to wire it up properly in the selector matching
code.

Fixes https://github.com/denoland/deno/issues/28336
---
 cli/js/40_lint_selector.js     |  8 ++++++--
 tests/unit/lint_plugin_test.ts | 16 ++++++++++++++++
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/cli/js/40_lint_selector.js b/cli/js/40_lint_selector.js
index 362130076a7fb3..f93b78db65a266 100644
--- a/cli/js/40_lint_selector.js
+++ b/cli/js/40_lint_selector.js
@@ -1008,9 +1008,13 @@ function matchAttrBin(attr, next) {
 function matchAttrValue(attr, value) {
   switch (attr.op) {
     case BinOp.Equal:
-      return value === attr.value;
+      return attr.value instanceof RegExp
+        ? attr.value.test(value)
+        : value === attr.value;
     case BinOp.NotEqual:
-      return value !== attr.value;
+      return attr.value instanceof RegExp
+        ? !attr.value.test(value)
+        : value !== attr.value;
     case BinOp.Greater:
       return typeof value === "number" && typeof attr.value === "number" &&
         value > attr.value;
diff --git a/tests/unit/lint_plugin_test.ts b/tests/unit/lint_plugin_test.ts
index 665b580d02785e..6189c130df7af2 100644
--- a/tests/unit/lint_plugin_test.ts
+++ b/tests/unit/lint_plugin_test.ts
@@ -271,6 +271,22 @@ Deno.test("Plugin - visitor attr length special case", () => {
   assertEquals(result[1].node.arguments.length, 2);
 });
 
+Deno.test("Plugin - visitor attr regex", () => {
+  let result = testVisit(
+    "class Foo { get foo() { return 1 } bar() {} }",
+    "MethodDefinition[kind=/(g|s)et/]",
+  );
+  assertEquals(result[0].node.type, "MethodDefinition");
+  assertEquals(result[0].node.kind, "get");
+
+  result = testVisit(
+    "class Foo { get foo() { return 1 } bar() {} }",
+    "MethodDefinition[kind!=/(g|s)et/]",
+  );
+  assertEquals(result[0].node.type, "MethodDefinition");
+  assertEquals(result[0].node.kind, "method");
+});
+
 Deno.test("Plugin - visitor :first-child", () => {
   const result = testVisit(
     "{ foo; bar }",

From 3a1f3455b01ad6b25fe426fda7056c4885069a8e Mon Sep 17 00:00:00 2001
From: Marvin Hagemeister <marvin@deno.com>
Date: Fri, 28 Feb 2025 15:10:02 +0100
Subject: [PATCH 044/115] feat(unstable): lint plugins support field selectors
 (#28324)

This PR adds support for field selectors (`.<field>`) in the lint plugin
API. This is supported in ESLint as well, but was missing in our
implementation.

```css
/* Only search the test expression of an IfStatement */
IfStatement.test
```

Fixes https://github.com/denoland/deno/issues/28314
---
 cli/js/40_lint.js                 | 33 +++++++++++++++++-
 cli/js/40_lint_selector.js        | 58 +++++++++++++++++++++++++++++++
 cli/js/40_lint_types.d.ts         |  7 ++++
 tests/unit/lint_plugin_test.ts    | 23 ++++++++++++
 tests/unit/lint_selectors_test.ts | 41 ++++++++++++++++++++++
 5 files changed, 161 insertions(+), 1 deletion(-)

diff --git a/cli/js/40_lint.js b/cli/js/40_lint.js
index af4ba6ba1e28fe..279d67d3fe74a8 100644
--- a/cli/js/40_lint.js
+++ b/cli/js/40_lint.js
@@ -791,6 +791,37 @@ class MatchCtx {
     return readType(this.ctx.buf, idx);
   }
 
+  /**
+   * @param {number} idx
+   * @param {number} propId
+   * @returns {number}
+   */
+  getField(idx, propId) {
+    if (idx === AST_IDX_INVALID) return -1;
+
+    // Bail out on fields that can never point to another node
+    switch (propId) {
+      case AST_PROP_TYPE:
+      case AST_PROP_PARENT:
+      case AST_PROP_RANGE:
+        return -1;
+    }
+
+    const { buf } = this.ctx;
+    let offset = readPropOffset(this.ctx, idx);
+    offset = findPropOffset(buf, offset, propId);
+
+    if (offset === -1) return -1;
+    const _prop = buf[offset++];
+    const kind = buf[offset++];
+
+    if (kind === PropFlags.Ref) {
+      return readU32(buf, offset);
+    }
+
+    return -1;
+  }
+
   /**
    * @param {number} idx - Node idx
    * @param {number[]} propIds
@@ -798,7 +829,7 @@ class MatchCtx {
    * @returns {unknown}
    */
   getAttrPathValue(idx, propIds, propIdx) {
-    if (idx === 0) throw -1;
+    if (idx === AST_IDX_INVALID) throw -1;
 
     const { buf, strTable, strByType } = this.ctx;
 
diff --git a/cli/js/40_lint_selector.js b/cli/js/40_lint_selector.js
index f93b78db65a266..77b7841855185d 100644
--- a/cli/js/40_lint_selector.js
+++ b/cli/js/40_lint_selector.js
@@ -9,6 +9,7 @@
 /** @typedef {import("./40_lint_types.d.ts").AttrBin} AttrBin */
 /** @typedef {import("./40_lint_types.d.ts").AttrSelector} AttrSelector */
 /** @typedef {import("./40_lint_types.d.ts").ElemSelector} ElemSelector */
+/** @typedef {import("./40_lint_types.d.ts").FieldSelector} FieldSelector */
 /** @typedef {import("./40_lint_types.d.ts").PseudoNthChild} PseudoNthChild */
 /** @typedef {import("./40_lint_types.d.ts").PseudoHas} PseudoHas */
 /** @typedef {import("./40_lint_types.d.ts").PseudoNot} PseudoNot */
@@ -376,6 +377,7 @@ export const PSEUDO_HAS = 6;
 export const PSEUDO_NOT = 7;
 export const PSEUDO_FIRST_CHILD = 8;
 export const PSEUDO_LAST_CHILD = 9;
+export const FIELD_NODE = 10;
 
 /**
  * Parse out all unique selectors of a selector list.
@@ -492,6 +494,26 @@ export function parseSelector(input, toElem, toAttr) {
       lex.expect(Token.BracketClose);
       lex.next();
       continue;
+    } else if (lex.token === Token.Dot) {
+      lex.next();
+      lex.expect(Token.Word);
+
+      const props = [toAttr(lex.value)];
+      lex.next();
+
+      while (lex.token === Token.Dot) {
+        lex.next();
+        lex.expect(Token.Word);
+
+        props.push(toAttr(lex.value));
+        lex.next();
+      }
+
+      current.push({
+        type: FIELD_NODE,
+        props,
+      });
+      continue;
     } else if (lex.token === Token.Colon) {
       lex.next();
       lex.expect(Token.Word);
@@ -710,6 +732,9 @@ export function compileSelector(selector) {
       case ELEM_NODE:
         fn = matchElem(node, fn);
         break;
+      case FIELD_NODE:
+        fn = matchField(node, fn);
+        break;
       case RELATION_NODE:
         switch (node.op) {
           case BinOp.Space:
@@ -960,6 +985,39 @@ function matchElem(part, next) {
   };
 }
 
+/**
+ * @param {FieldSelector} part
+ * @param {MatcherFn} next
+ * @returns {MatcherFn}
+ */
+function matchField(part, next) {
+  return (ctx, id) => {
+    let child = id;
+    let parent = ctx.getParent(id);
+    if (parent === 0) return false;
+
+    // Fields are stored left-ro-right but we need to match
+    // them right-to-left because we're matching selectors
+    // in that direction. Matching right to left is done for
+    // performance and reduces the number of potential mismatches.
+    for (let i = part.props.length - 1; i >= 0; i--) {
+      const prop = part.props[i];
+      const value = ctx.getField(parent, prop);
+
+      if (value === -1) return false;
+      if (value !== child) return false;
+
+      if (i > 0) {
+        child = parent;
+        parent = ctx.getParent(parent);
+        if (parent === 0) return false;
+      }
+    }
+
+    return next(ctx, parent);
+  };
+}
+
 /**
  * @param {AttrExists} attr
  * @param {MatcherFn} next
diff --git a/cli/js/40_lint_types.d.ts b/cli/js/40_lint_types.d.ts
index 662cfc930f7889..f0e1cee0c9d57a 100644
--- a/cli/js/40_lint_types.d.ts
+++ b/cli/js/40_lint_types.d.ts
@@ -50,6 +50,11 @@ export interface ElemSelector {
   elem: number;
 }
 
+export interface FieldSelector {
+  type: 10;
+  props: number[];
+}
+
 export interface PseudoNthChild {
   type: 5;
   op: string | null;
@@ -81,6 +86,7 @@ export interface Relation {
 
 export type Selector = Array<
   | ElemSelector
+  | FieldSelector
   | Relation
   | AttrExists
   | AttrBin
@@ -101,6 +107,7 @@ export interface MatchContext {
   getLastChild(id: number): number;
   getSiblings(id: number): number[];
   getParent(id: number): number;
+  getField(id: number, prop: number): number;
   getType(id: number): number;
   getAttrPathValue(id: number, propIds: number[], idx: number): unknown;
 }
diff --git a/tests/unit/lint_plugin_test.ts b/tests/unit/lint_plugin_test.ts
index 6189c130df7af2..e7249571ed9865 100644
--- a/tests/unit/lint_plugin_test.ts
+++ b/tests/unit/lint_plugin_test.ts
@@ -177,6 +177,29 @@ Deno.test("Plugin - visitor subsequent sibling", () => {
   assertEquals(result.map((r) => r.node.name), ["bar", "baz"]);
 });
 
+Deno.test("Plugin - visitor field", () => {
+  let result = testVisit(
+    "if (foo()) {}",
+    "IfStatement.test.callee",
+  );
+  assertEquals(result[0].node.type, "Identifier");
+  assertEquals(result[0].node.name, "foo");
+
+  result = testVisit(
+    "if (foo()) {}",
+    "IfStatement .test .callee",
+  );
+  assertEquals(result[0].node.type, "Identifier");
+  assertEquals(result[0].node.name, "foo");
+
+  result = testVisit(
+    "if (foo(bar())) {}",
+    "IfStatement.test CallExpression.callee",
+  );
+  assertEquals(result[0].node.type, "Identifier");
+  assertEquals(result[0].node.name, "bar");
+});
+
 Deno.test("Plugin - visitor attr", () => {
   let result = testVisit(
     "for (const a of b) {}",
diff --git a/tests/unit/lint_selectors_test.ts b/tests/unit/lint_selectors_test.ts
index e9e4dacb4e1a57..9828343a79b0dd 100644
--- a/tests/unit/lint_selectors_test.ts
+++ b/tests/unit/lint_selectors_test.ts
@@ -6,6 +6,7 @@ import {
   ATTR_EXISTS_NODE,
   BinOp,
   ELEM_NODE,
+  FIELD_NODE,
   Lexer,
   parseSelector,
   PSEUDO_FIRST_CHILD,
@@ -255,6 +256,19 @@ Deno.test("Lexer - Pseudo", () => {
   ]);
 });
 
+Deno.test("Lexer - field", () => {
+  assertEquals(testLexer(".bar"), [
+    { token: Token.Dot, value: "" },
+    { token: Token.Word, value: "bar" },
+  ]);
+  assertEquals(testLexer(".bar.baz"), [
+    { token: Token.Dot, value: "" },
+    { token: Token.Word, value: "bar" },
+    { token: Token.Dot, value: "" },
+    { token: Token.Word, value: "baz" },
+  ]);
+});
+
 Deno.test("Parser - Elem", () => {
   assertEquals(testParse("Foo"), [[
     {
@@ -337,6 +351,33 @@ Deno.test("Parser - Relation", () => {
   ]]);
 });
 
+Deno.test("Parser - Field", () => {
+  assertEquals(testParse("Foo.bar"), [[
+    {
+      type: ELEM_NODE,
+      elem: 1,
+      wildcard: false,
+    },
+    { type: FIELD_NODE, props: [2] },
+  ]]);
+  assertEquals(testParse("Foo .bar"), [[
+    {
+      type: ELEM_NODE,
+      elem: 1,
+      wildcard: false,
+    },
+    { type: FIELD_NODE, props: [2] },
+  ]]);
+  assertEquals(testParse("Foo .foo.bar"), [[
+    {
+      type: ELEM_NODE,
+      elem: 1,
+      wildcard: false,
+    },
+    { type: FIELD_NODE, props: [1, 2] },
+  ]]);
+});
+
 Deno.test("Parser - Attr", () => {
   assertEquals(testParse("[foo]"), [[
     {

From 2a803fe2debd2854260d6f409211cd30a4cebc82 Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Fri, 28 Feb 2025 10:06:20 -0500
Subject: [PATCH 045/115] fix(check/npm): move not found errors inside npm
 packages to tsc diagnostics (#28337)

---
 cli/tsc/97_ts_host.js                         | 19 ++++++++----
 cli/tsc/mod.rs                                | 29 ++++++++++++-------
 .../__test__.jsonc                            |  0
 .../check.out                                 |  0
 .../main.ts                                   |  0
 .../node_modules/package/index.js             |  0
 .../node_modules/package/package.json         |  0
 .../package.json                              |  0
 .../__test__.jsonc                            |  5 ++++
 .../check.out                                 |  7 +++++
 .../module_not_found_npm_pkg_internal/main.ts |  3 ++
 .../node_modules/package/index.d.ts           |  4 +++
 .../node_modules/package/index.js             |  0
 .../node_modules/package/package.json         |  8 +++++
 .../package.json                              |  5 ++++
 15 files changed, 64 insertions(+), 16 deletions(-)
 rename tests/specs/check/{module_not_found_in_npm_pkg => module_not_found_npm_pkg_entrypoint}/__test__.jsonc (100%)
 rename tests/specs/check/{module_not_found_in_npm_pkg => module_not_found_npm_pkg_entrypoint}/check.out (100%)
 rename tests/specs/check/{module_not_found_in_npm_pkg => module_not_found_npm_pkg_entrypoint}/main.ts (100%)
 rename tests/specs/check/{module_not_found_in_npm_pkg => module_not_found_npm_pkg_entrypoint}/node_modules/package/index.js (100%)
 rename tests/specs/check/{module_not_found_in_npm_pkg => module_not_found_npm_pkg_entrypoint}/node_modules/package/package.json (100%)
 rename tests/specs/check/{module_not_found_in_npm_pkg => module_not_found_npm_pkg_entrypoint}/package.json (100%)
 create mode 100644 tests/specs/check/module_not_found_npm_pkg_internal/__test__.jsonc
 create mode 100644 tests/specs/check/module_not_found_npm_pkg_internal/check.out
 create mode 100644 tests/specs/check/module_not_found_npm_pkg_internal/main.ts
 create mode 100644 tests/specs/check/module_not_found_npm_pkg_internal/node_modules/package/index.d.ts
 create mode 100644 tests/specs/check/module_not_found_npm_pkg_internal/node_modules/package/index.js
 create mode 100644 tests/specs/check/module_not_found_npm_pkg_internal/node_modules/package/package.json
 create mode 100644 tests/specs/check/module_not_found_npm_pkg_internal/package.json

diff --git a/cli/tsc/97_ts_host.js b/cli/tsc/97_ts_host.js
index 42ffb0ce3b119e..4501a36cc82a53 100644
--- a/cli/tsc/97_ts_host.js
+++ b/cli/tsc/97_ts_host.js
@@ -174,7 +174,8 @@ export const LAST_REQUEST_SCOPE = {
   },
 };
 
-ts.deno.setIsNodeSourceFileCallback((sourceFile) => {
+/** @param sourceFile {ts.SourceFile} */
+function isNodeSourceFile(sourceFile) {
   const fileName = sourceFile.fileName;
   let isNodeSourceFile = IS_NODE_SOURCE_FILE_CACHE.get(fileName);
   if (isNodeSourceFile == null) {
@@ -183,7 +184,9 @@ ts.deno.setIsNodeSourceFileCallback((sourceFile) => {
     IS_NODE_SOURCE_FILE_CACHE.set(fileName, isNodeSourceFile);
   }
   return isNodeSourceFile;
-});
+}
+
+ts.deno.setIsNodeSourceFileCallback(isNodeSourceFile);
 
 /**
  * @param msg {string}
@@ -344,8 +347,6 @@ const IGNORED_DIAGNOSTICS = [
   // Microsoft/TypeScript#26825 but that doesn't seem to be working here,
   // so we will ignore complaints about this compiler setting.
   5070,
-  // TS6053: File '{0}' not found.
-  6053,
   // TS7016: Could not find a declaration file for module '...'. '...'
   // implicitly has an 'any' type.  This is due to `allowJs` being off by
   // default but importing of a JavaScript module.
@@ -785,7 +786,15 @@ export function filterMapDiagnostic(diagnostic) {
   if (IGNORED_DIAGNOSTICS.includes(diagnostic.code)) {
     return false;
   }
-
+  // surface not found diagnostics inside npm packages
+  // because we don't analyze it with deno_graph
+  if (
+    // TS6053: File '{0}' not found.
+    diagnostic.code === 6053 &&
+    (diagnostic.file == null || !isNodeSourceFile(diagnostic.file))
+  ) {
+    return false;
+  }
   // make the diagnostic for using an `export =` in an es module a warning
   if (diagnostic.code === 1203) {
     diagnostic.category = ts.DiagnosticCategory.Warning;
diff --git a/cli/tsc/mod.rs b/cli/tsc/mod.rs
index d6fb26b24c9af3..61e6e3f79a18c3 100644
--- a/cli/tsc/mod.rs
+++ b/cli/tsc/mod.rs
@@ -3,6 +3,7 @@
 use std::borrow::Cow;
 use std::collections::HashMap;
 use std::fmt;
+use std::io::ErrorKind;
 use std::path::PathBuf;
 use std::rc::Rc;
 use std::sync::Arc;
@@ -656,22 +657,28 @@ fn op_load_inner(
     npm_state: Option<&RequestNpmState>,
     media_type: &mut MediaType,
     is_cjs: &mut bool,
-  ) -> Result<FastString, LoadError> {
+  ) -> Result<Option<FastString>, LoadError> {
     *media_type = MediaType::from_specifier(specifier);
     let file_path = specifier.to_file_path().unwrap();
-    let code = std::fs::read_to_string(&file_path).map_err(|err| {
-      LoadError::LoadFromNodeModule {
-        path: file_path.display().to_string(),
-        error: err,
+    let code = match std::fs::read_to_string(&file_path) {
+      Ok(code) => code,
+      Err(err) if err.kind() == ErrorKind::NotFound => {
+        return Ok(None);
       }
-    })?;
+      Err(err) => {
+        return Err(LoadError::LoadFromNodeModule {
+          path: file_path.display().to_string(),
+          error: err,
+        })
+      }
+    };
     let code: Arc<str> = code.into();
     *is_cjs = npm_state
       .map(|npm_state| {
         npm_state.cjs_tracker.is_cjs(specifier, *media_type, &code)
       })
       .unwrap_or(false);
-    Ok(code.into())
+    Ok(Some(code.into()))
   }
 
   let state = state.borrow_mut::<State>();
@@ -755,12 +762,12 @@ fn op_load_inner(
               &CliSys::default(),
               &module.specifier,
             );
-            Some(load_from_node_modules(
+            load_from_node_modules(
               &specifier,
               state.maybe_npm.as_ref(),
               &mut media_type,
               &mut is_cjs,
-            )?)
+            )?
           }
         }
       }
@@ -769,12 +776,12 @@ fn op_load_inner(
       .as_ref()
       .filter(|npm| npm.node_resolver.in_npm_package(specifier))
     {
-      Some(load_from_node_modules(
+      load_from_node_modules(
         specifier,
         Some(npm),
         &mut media_type,
         &mut is_cjs,
-      )?)
+      )?
     } else {
       None
     };
diff --git a/tests/specs/check/module_not_found_in_npm_pkg/__test__.jsonc b/tests/specs/check/module_not_found_npm_pkg_entrypoint/__test__.jsonc
similarity index 100%
rename from tests/specs/check/module_not_found_in_npm_pkg/__test__.jsonc
rename to tests/specs/check/module_not_found_npm_pkg_entrypoint/__test__.jsonc
diff --git a/tests/specs/check/module_not_found_in_npm_pkg/check.out b/tests/specs/check/module_not_found_npm_pkg_entrypoint/check.out
similarity index 100%
rename from tests/specs/check/module_not_found_in_npm_pkg/check.out
rename to tests/specs/check/module_not_found_npm_pkg_entrypoint/check.out
diff --git a/tests/specs/check/module_not_found_in_npm_pkg/main.ts b/tests/specs/check/module_not_found_npm_pkg_entrypoint/main.ts
similarity index 100%
rename from tests/specs/check/module_not_found_in_npm_pkg/main.ts
rename to tests/specs/check/module_not_found_npm_pkg_entrypoint/main.ts
diff --git a/tests/specs/check/module_not_found_in_npm_pkg/node_modules/package/index.js b/tests/specs/check/module_not_found_npm_pkg_entrypoint/node_modules/package/index.js
similarity index 100%
rename from tests/specs/check/module_not_found_in_npm_pkg/node_modules/package/index.js
rename to tests/specs/check/module_not_found_npm_pkg_entrypoint/node_modules/package/index.js
diff --git a/tests/specs/check/module_not_found_in_npm_pkg/node_modules/package/package.json b/tests/specs/check/module_not_found_npm_pkg_entrypoint/node_modules/package/package.json
similarity index 100%
rename from tests/specs/check/module_not_found_in_npm_pkg/node_modules/package/package.json
rename to tests/specs/check/module_not_found_npm_pkg_entrypoint/node_modules/package/package.json
diff --git a/tests/specs/check/module_not_found_in_npm_pkg/package.json b/tests/specs/check/module_not_found_npm_pkg_entrypoint/package.json
similarity index 100%
rename from tests/specs/check/module_not_found_in_npm_pkg/package.json
rename to tests/specs/check/module_not_found_npm_pkg_entrypoint/package.json
diff --git a/tests/specs/check/module_not_found_npm_pkg_internal/__test__.jsonc b/tests/specs/check/module_not_found_npm_pkg_internal/__test__.jsonc
new file mode 100644
index 00000000000000..7a5a4fb74a3dc1
--- /dev/null
+++ b/tests/specs/check/module_not_found_npm_pkg_internal/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+  "args": "check --all main.ts",
+  "output": "check.out",
+  "exitCode": 1
+}
diff --git a/tests/specs/check/module_not_found_npm_pkg_internal/check.out b/tests/specs/check/module_not_found_npm_pkg_internal/check.out
new file mode 100644
index 00000000000000..0c283475acc4c3
--- /dev/null
+++ b/tests/specs/check/module_not_found_npm_pkg_internal/check.out
@@ -0,0 +1,7 @@
+Check file:///[WILDLINE]/main.ts
+TS6053 [ERROR]: File 'file:///[WILDLINE]/non-existent.d.ts' not found.
+/// <reference path="./non-existent.d.ts" />
+                     ~~~~~~~~~~~~~~~~~~~
+    at file:///[WILDLINE]/index.d.ts:1:22
+
+error: Type checking failed.
diff --git a/tests/specs/check/module_not_found_npm_pkg_internal/main.ts b/tests/specs/check/module_not_found_npm_pkg_internal/main.ts
new file mode 100644
index 00000000000000..100591a8bcaee0
--- /dev/null
+++ b/tests/specs/check/module_not_found_npm_pkg_internal/main.ts
@@ -0,0 +1,3 @@
+import { Test } from "package";
+
+console.log(Test);
diff --git a/tests/specs/check/module_not_found_npm_pkg_internal/node_modules/package/index.d.ts b/tests/specs/check/module_not_found_npm_pkg_internal/node_modules/package/index.d.ts
new file mode 100644
index 00000000000000..d957fdd43efddd
--- /dev/null
+++ b/tests/specs/check/module_not_found_npm_pkg_internal/node_modules/package/index.d.ts
@@ -0,0 +1,4 @@
+/// <reference path="./non-existent.d.ts" />
+
+export class Test {
+}
\ No newline at end of file
diff --git a/tests/specs/check/module_not_found_npm_pkg_internal/node_modules/package/index.js b/tests/specs/check/module_not_found_npm_pkg_internal/node_modules/package/index.js
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/tests/specs/check/module_not_found_npm_pkg_internal/node_modules/package/package.json b/tests/specs/check/module_not_found_npm_pkg_internal/node_modules/package/package.json
new file mode 100644
index 00000000000000..c2469ffa50f2ec
--- /dev/null
+++ b/tests/specs/check/module_not_found_npm_pkg_internal/node_modules/package/package.json
@@ -0,0 +1,8 @@
+{
+  "exports": {
+    ".": {
+      "types": "./index.d.ts",
+      "default": "./index.js"
+    }
+  }
+}
diff --git a/tests/specs/check/module_not_found_npm_pkg_internal/package.json b/tests/specs/check/module_not_found_npm_pkg_internal/package.json
new file mode 100644
index 00000000000000..f0b3ee21dd5975
--- /dev/null
+++ b/tests/specs/check/module_not_found_npm_pkg_internal/package.json
@@ -0,0 +1,5 @@
+{
+  "dependencies": {
+    "package": "*"
+  }
+}

From b6b5c7d7d99f4f763fad87ee0f253d523ad49fc3 Mon Sep 17 00:00:00 2001
From: Marvin Hagemeister <marvin@deno.com>
Date: Fri, 28 Feb 2025 16:20:23 +0100
Subject: [PATCH 046/115] fix(unstable/lint): remove duplicated `Fix` vs
 `FixData` interface (#28344)

Noticed that we have two interfaces describing the same thing: `Fix` and
`FixData`. This PR removes the `FixData` one.
---
 cli/js/40_lint.js                  |  7 +++++--
 cli/tsc/dts/lib.deno.unstable.d.ts | 31 +++++++++++-------------------
 2 files changed, 16 insertions(+), 22 deletions(-)

diff --git a/cli/js/40_lint.js b/cli/js/40_lint.js
index 279d67d3fe74a8..a64820c6d7d51f 100644
--- a/cli/js/40_lint.js
+++ b/cli/js/40_lint.js
@@ -16,7 +16,9 @@ const {
   op_is_cancelled,
 } = core.ops;
 
+/** @type {(id: string, message: string, hint: string | undefined, start: number, end: number, fix: Deno.lint.Fix[]) => void} */
 let doReport = op_lint_report;
+/** @type {() => string} */
 let doGetSource = op_lint_get_source;
 
 // Keep these in sync with Rust
@@ -315,7 +317,7 @@ export class Context {
     const start = range[0];
     const end = range[1];
 
-    /** @type {Deno.lint.FixData[]} */
+    /** @type {Deno.lint.Fix[]} */
     const fixes = [];
 
     if (typeof data.fix === "function") {
@@ -1380,13 +1382,14 @@ internals.runPluginsForFile = runPluginsForFile;
 internals.resetState = resetState;
 
 /**
- * @param {LintPlugin} plugin
+ * @param {Deno.lint.Plugin} plugin
  * @param {string} fileName
  * @param {string} sourceText
  */
 function runLintPlugin(plugin, fileName, sourceText) {
   installPlugin(plugin);
 
+  /** @type {Deno.lint.Diagnostic[]} */
   const diagnostics = [];
   doReport = (id, message, hint, start, end, fix) => {
     diagnostics.push({
diff --git a/cli/tsc/dts/lib.deno.unstable.d.ts b/cli/tsc/dts/lib.deno.unstable.d.ts
index 6634635dce6b0a..b819776a7ad730 100644
--- a/cli/tsc/dts/lib.deno.unstable.d.ts
+++ b/cli/tsc/dts/lib.deno.unstable.d.ts
@@ -1359,7 +1359,7 @@ declare namespace Deno {
      * @category Linter
      * @experimental
      */
-    export interface FixData {
+    export interface Fix {
       range: Range;
       text?: string;
     }
@@ -1369,14 +1369,14 @@ declare namespace Deno {
      * @experimental
      */
     export interface Fixer {
-      insertTextAfter(node: Node, text: string): FixData;
-      insertTextAfterRange(range: Range, text: string): FixData;
-      insertTextBefore(node: Node, text: string): FixData;
-      insertTextBeforeRange(range: Range, text: string): FixData;
-      remove(node: Node): FixData;
-      removeRange(range: Range): FixData;
-      replaceText(node: Node, text: string): FixData;
-      replaceTextRange(range: Range, text: string): FixData;
+      insertTextAfter(node: Node, text: string): Fix;
+      insertTextAfterRange(range: Range, text: string): Fix;
+      insertTextBefore(node: Node, text: string): Fix;
+      insertTextBeforeRange(range: Range, text: string): Fix;
+      remove(node: Node): Fix;
+      removeRange(range: Range): Fix;
+      replaceText(node: Node, text: string): Fix;
+      replaceTextRange(range: Range, text: string): Fix;
     }
 
     /**
@@ -1388,7 +1388,7 @@ declare namespace Deno {
       range?: Range;
       message: string;
       hint?: string;
-      fix?(fixer: Fixer): FixData | Iterable<FixData>;
+      fix?(fixer: Fixer): Fix | Iterable<Fix>;
     }
 
     /**
@@ -1498,15 +1498,6 @@ declare namespace Deno {
       rules: Record<string, Rule>;
     }
 
-    /**
-     * @category Linter
-     * @experimental
-     */
-    export interface Fix {
-      range: Range;
-      text?: string;
-    }
-
     /**
      * @category Linter
      * @experimental
@@ -1516,7 +1507,7 @@ declare namespace Deno {
       message: string;
       hint?: string;
       range: Range;
-      fix?: Fix;
+      fix?: Fix[];
     }
 
     /**

From 53339ceb8d63ebe88bd6128662b716090420bf2a Mon Sep 17 00:00:00 2001
From: KnorpelSenf <shtrog@gmail.com>
Date: Sun, 2 Mar 2025 04:47:38 +0100
Subject: [PATCH 047/115] chore(devcontainer): add clang to cargo build
 (#28345)

---
 .devcontainer/Dockerfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
index 4e7a8d761891c9..142a3c286efb31 100644
--- a/.devcontainer/Dockerfile
+++ b/.devcontainer/Dockerfile
@@ -2,7 +2,7 @@ FROM mcr.microsoft.com/vscode/devcontainers/rust:1-bullseye
 
 # Install cmake
 RUN apt-get update \
-  && apt-get install -y cmake \
+  && apt-get install -y cmake clang \
   && rm -rf /var/lib/apt/lists/*
 
 # Install Deno

From 287bde1f721825aa18b8c6bc81d80bbb362865f3 Mon Sep 17 00:00:00 2001
From: Marvin Hagemeister <marvin@deno.com>
Date: Mon, 3 Mar 2025 11:02:52 +0100
Subject: [PATCH 048/115] fix(unstable): lint plugin `ObjectPattern`
 inconsistencies (#28359)

Fixes inconsistencies with `ObjectPattern` node to match TSESTree.

Fixes one issue reported in
https://github.com/denoland/deno/issues/28355
---
 cli/tools/lint/ast_buffer/swc.rs              |   14 +-
 .../__snapshots__/lint_plugin_test.ts.snap    | 2131 ++++++++++++-----
 tests/unit/lint_plugin_test.ts                |   35 +
 3 files changed, 1565 insertions(+), 615 deletions(-)

diff --git a/cli/tools/lint/ast_buffer/swc.rs b/cli/tools/lint/ast_buffer/swc.rs
index 285b89943419f5..93187e2beabeb8 100644
--- a/cli/tools/lint/ast_buffer/swc.rs
+++ b/cli/tools/lint/ast_buffer/swc.rs
@@ -1896,14 +1896,18 @@ fn serialize_pat(ctx: &mut TsEsTreeBuilder, pat: &Pat) -> NodeRef {
           ObjectPatProp::Assign(assign_pat_prop) => {
             let ident = serialize_binding_ident(ctx, &assign_pat_prop.key);
 
-            let value = assign_pat_prop
-              .value
-              .as_ref()
-              .map_or(NodeRef(0), |value| serialize_expr(ctx, value));
+            let shorthand = assign_pat_prop.value.is_none();
+            let value = assign_pat_prop.value.as_ref().map_or(
+              // SWC has value as optional with shorthand properties,
+              // but TSESTree expects the value to be a duplicate of
+              // the binding ident.
+              serialize_binding_ident(ctx, &assign_pat_prop.key),
+              |value| serialize_expr(ctx, value),
+            );
 
             ctx.write_property(
               &assign_pat_prop.span,
-              false,
+              shorthand,
               false,
               false,
               PropertyKind::Init,
diff --git a/tests/unit/__snapshots__/lint_plugin_test.ts.snap b/tests/unit/__snapshots__/lint_plugin_test.ts.snap
index 223f3f39e0d3c7..b09e07c3f725e6 100644
--- a/tests/unit/__snapshots__/lint_plugin_test.ts.snap
+++ b/tests/unit/__snapshots__/lint_plugin_test.ts.snap
@@ -12,398 +12,675 @@ snapshot[`Plugin - Program 1`] = `
 }
 `;
 
-snapshot[`Plugin - ImportDeclaration 1`] = `
+snapshot[`Plugin - FunctionDeclaration 1`] = `
 {
-  attributes: [],
-  importKind: "value",
-  range: [
-    0,
-    13,
-  ],
-  source: {
+  async: false,
+  body: {
+    body: [],
     range: [
-      7,
-      12,
+      15,
+      17,
     ],
-    raw: '"foo"',
-    type: "Literal",
-    value: "foo",
+    type: "BlockStatement",
   },
-  specifiers: [],
-  type: "ImportDeclaration",
-}
-`;
-
-snapshot[`Plugin - ImportDeclaration 2`] = `
-{
-  attributes: [],
-  importKind: "value",
-  range: [
-    0,
-    22,
-  ],
-  source: {
+  declare: false,
+  generator: false,
+  id: {
+    name: "foo",
+    optional: false,
     range: [
-      16,
-      21,
+      9,
+      12,
     ],
-    raw: '"foo"',
-    type: "Literal",
-    value: "foo",
+    type: "Identifier",
+    typeAnnotation: undefined,
   },
-  specifiers: [
-    {
-      local: {
-        name: "foo",
-        optional: false,
-        range: [
-          7,
-          10,
-        ],
-        type: "Identifier",
-        typeAnnotation: undefined,
-      },
-      range: [
-        7,
-        10,
-      ],
-      type: "ImportDefaultSpecifier",
-    },
+  params: [],
+  range: [
+    0,
+    17,
   ],
-  type: "ImportDeclaration",
+  returnType: undefined,
+  type: "FunctionDeclaration",
+  typeParameters: undefined,
 }
 `;
 
-snapshot[`Plugin - ImportDeclaration 3`] = `
+snapshot[`Plugin - FunctionDeclaration 2`] = `
 {
-  attributes: [],
-  importKind: "value",
-  range: [
-    0,
-    27,
-  ],
-  source: {
+  async: false,
+  body: {
+    body: [],
     range: [
-      21,
-      26,
+      22,
+      24,
     ],
-    raw: '"foo"',
-    type: "Literal",
-    value: "foo",
+    type: "BlockStatement",
   },
-  specifiers: [
-    {
-      local: {
-        name: "foo",
-        optional: false,
-        range: [
-          12,
-          15,
-        ],
-        type: "Identifier",
-        typeAnnotation: undefined,
-      },
-      range: [
-        7,
-        15,
-      ],
-      type: "ImportNamespaceSpecifier",
-    },
-  ],
-  type: "ImportDeclaration",
-}
-`;
-
-snapshot[`Plugin - ImportDeclaration 4`] = `
-{
-  attributes: [],
-  importKind: "value",
-  range: [
-    0,
-    38,
-  ],
-  source: {
+  declare: false,
+  generator: false,
+  id: {
+    name: "foo",
+    optional: false,
     range: [
-      32,
-      37,
+      9,
+      12,
     ],
-    raw: '"foo"',
-    type: "Literal",
-    value: "foo",
+    type: "Identifier",
+    typeAnnotation: undefined,
   },
-  specifiers: [
+  params: [
     {
-      importKind: "value",
-      imported: {
-        name: "foo",
-        optional: false,
-        range: [
-          9,
-          12,
-        ],
-        type: "Identifier",
-        typeAnnotation: undefined,
-      },
-      local: {
-        name: "foo",
-        optional: false,
-        range: [
-          9,
-          12,
-        ],
-        type: "Identifier",
-        typeAnnotation: undefined,
-      },
+      name: "a",
+      optional: false,
       range: [
-        9,
-        12,
+        13,
+        14,
       ],
-      type: "ImportSpecifier",
+      type: "Identifier",
+      typeAnnotation: undefined,
     },
     {
-      importKind: "value",
-      imported: {
-        name: "bar",
-        optional: false,
-        range: [
-          14,
-          17,
-        ],
-        type: "Identifier",
-        typeAnnotation: undefined,
-      },
-      local: {
-        name: "baz",
+      argument: {
+        name: "b",
         optional: false,
         range: [
-          21,
-          24,
+          19,
+          20,
         ],
         type: "Identifier",
         typeAnnotation: undefined,
       },
       range: [
-        14,
-        24,
+        16,
+        20,
       ],
-      type: "ImportSpecifier",
+      type: "RestElement",
+      typeAnnotation: undefined,
     },
   ],
-  type: "ImportDeclaration",
+  range: [
+    0,
+    24,
+  ],
+  returnType: undefined,
+  type: "FunctionDeclaration",
+  typeParameters: undefined,
 }
 `;
 
-snapshot[`Plugin - ImportDeclaration 5`] = `
+snapshot[`Plugin - FunctionDeclaration 3`] = `
 {
-  attributes: [
+  async: false,
+  body: {
+    body: [],
+    range: [
+      56,
+      58,
+    ],
+    type: "BlockStatement",
+  },
+  declare: false,
+  generator: false,
+  id: {
+    name: "foo",
+    optional: false,
+    range: [
+      9,
+      12,
+    ],
+    type: "Identifier",
+    typeAnnotation: undefined,
+  },
+  params: [
     {
-      key: {
-        name: "type",
+      left: {
+        name: "a",
         optional: false,
         range: [
-          29,
-          33,
+          13,
+          14,
         ],
         type: "Identifier",
         typeAnnotation: undefined,
       },
       range: [
-        29,
-        41,
+        13,
+        18,
       ],
-      type: "ImportAttribute",
-      value: {
+      right: {
         range: [
-          35,
-          41,
+          17,
+          18,
         ],
-        raw: '"json"',
+        raw: "1",
         type: "Literal",
-        value: "json",
+        value: 1,
       },
+      type: "AssignmentPattern",
     },
-  ],
-  importKind: "value",
-  range: [
-    0,
-    44,
-  ],
-  source: {
-    range: [
-      16,
-      21,
-    ],
-    raw: '"foo"',
-    type: "Literal",
-    value: "foo",
-  },
-  specifiers: [
     {
-      local: {
-        name: "foo",
+      optional: false,
+      properties: [
+        {
+          computed: false,
+          key: {
+            name: "a",
+            optional: false,
+            range: [
+              22,
+              23,
+            ],
+            type: "Identifier",
+            typeAnnotation: undefined,
+          },
+          kind: "init",
+          method: false,
+          range: [
+            22,
+            27,
+          ],
+          shorthand: false,
+          type: "Property",
+          value: {
+            range: [
+              26,
+              27,
+            ],
+            raw: "2",
+            type: "Literal",
+            value: 2,
+          },
+        },
+        {
+          computed: false,
+          key: {
+            name: "b",
+            optional: false,
+            range: [
+              29,
+              30,
+            ],
+            type: "Identifier",
+            typeAnnotation: undefined,
+          },
+          kind: "init",
+          method: false,
+          range: [
+            29,
+            30,
+          ],
+          shorthand: true,
+          type: "Property",
+          value: {
+            name: "b",
+            optional: false,
+            range: [
+              29,
+              30,
+            ],
+            type: "Identifier",
+            typeAnnotation: undefined,
+          },
+        },
+        {
+          argument: {
+            name: "c",
+            optional: false,
+            range: [
+              35,
+              36,
+            ],
+            type: "Identifier",
+            typeAnnotation: undefined,
+          },
+          range: [
+            32,
+            36,
+          ],
+          type: "RestElement",
+          typeAnnotation: undefined,
+        },
+      ],
+      range: [
+        20,
+        38,
+      ],
+      type: "ObjectPattern",
+      typeAnnotation: undefined,
+    },
+    {
+      elements: [
+        {
+          name: "d",
+          optional: false,
+          range: [
+            41,
+            42,
+          ],
+          type: "Identifier",
+          typeAnnotation: undefined,
+        },
+        {
+          argument: {
+            name: "e",
+            optional: false,
+            range: [
+              46,
+              47,
+            ],
+            type: "Identifier",
+            typeAnnotation: undefined,
+          },
+          range: [
+            43,
+            47,
+          ],
+          type: "RestElement",
+          typeAnnotation: undefined,
+        },
+      ],
+      optional: false,
+      range: [
+        40,
+        48,
+      ],
+      type: "ArrayPattern",
+      typeAnnotation: undefined,
+    },
+    {
+      argument: {
+        name: "f",
         optional: false,
         range: [
-          7,
-          10,
+          53,
+          54,
         ],
         type: "Identifier",
         typeAnnotation: undefined,
       },
       range: [
-        7,
-        10,
+        50,
+        54,
       ],
-      type: "ImportDefaultSpecifier",
+      type: "RestElement",
+      typeAnnotation: undefined,
     },
   ],
-  type: "ImportDeclaration",
+  range: [
+    0,
+    58,
+  ],
+  returnType: undefined,
+  type: "FunctionDeclaration",
+  typeParameters: undefined,
 }
 `;
 
-snapshot[`Plugin - ExportNamedDeclaration 1`] = `
+snapshot[`Plugin - FunctionDeclaration 4`] = `
 {
-  attributes: [],
-  declaration: null,
-  exportKind: "value",
+  async: true,
+  body: {
+    body: [],
+    range: [
+      21,
+      23,
+    ],
+    type: "BlockStatement",
+  },
+  declare: false,
+  generator: false,
+  id: {
+    name: "foo",
+    optional: false,
+    range: [
+      15,
+      18,
+    ],
+    type: "Identifier",
+    typeAnnotation: undefined,
+  },
+  params: [],
   range: [
     0,
-    26,
+    23,
   ],
-  source: {
+  returnType: undefined,
+  type: "FunctionDeclaration",
+  typeParameters: undefined,
+}
+`;
+
+snapshot[`Plugin - FunctionDeclaration 5`] = `
+{
+  async: true,
+  body: {
+    body: [],
     range: [
-      20,
-      25,
+      22,
+      24,
     ],
-    raw: '"foo"',
-    type: "Literal",
-    value: "foo",
+    type: "BlockStatement",
   },
-  specifiers: [
-    {
-      exportKind: "value",
-      exported: {
-        name: "foo",
-        optional: false,
-        range: [
-          9,
-          12,
-        ],
-        type: "Identifier",
-        typeAnnotation: undefined,
-      },
-      local: {
-        name: "foo",
-        optional: false,
-        range: [
-          9,
-          12,
-        ],
-        type: "Identifier",
-        typeAnnotation: undefined,
-      },
-      range: [
-        9,
-        12,
-      ],
-      type: "ExportSpecifier",
-    },
+  declare: false,
+  generator: true,
+  id: {
+    name: "foo",
+    optional: false,
+    range: [
+      16,
+      19,
+    ],
+    type: "Identifier",
+    typeAnnotation: undefined,
+  },
+  params: [],
+  range: [
+    0,
+    24,
   ],
-  type: "ExportNamedDeclaration",
+  returnType: undefined,
+  type: "FunctionDeclaration",
+  typeParameters: undefined,
 }
 `;
 
-snapshot[`Plugin - ExportNamedDeclaration 2`] = `
+snapshot[`Plugin - FunctionDeclaration 6`] = `
 {
-  attributes: [],
-  declaration: null,
-  exportKind: "value",
+  async: false,
+  body: {
+    body: [],
+    range: [
+      16,
+      18,
+    ],
+    type: "BlockStatement",
+  },
+  declare: false,
+  generator: true,
+  id: {
+    name: "foo",
+    optional: false,
+    range: [
+      10,
+      13,
+    ],
+    type: "Identifier",
+    typeAnnotation: undefined,
+  },
+  params: [],
   range: [
     0,
-    33,
+    18,
   ],
-  source: {
+  returnType: undefined,
+  type: "FunctionDeclaration",
+  typeParameters: undefined,
+}
+`;
+
+snapshot[`Plugin - FunctionDeclaration 7`] = `
+{
+  async: false,
+  body: {
+    body: [],
     range: [
-      27,
-      32,
+      41,
+      43,
     ],
-    raw: '"foo"',
-    type: "Literal",
-    value: "foo",
+    type: "BlockStatement",
   },
-  specifiers: [
+  declare: false,
+  generator: false,
+  id: {
+    name: "foo",
+    optional: false,
+    range: [
+      9,
+      12,
+    ],
+    type: "Identifier",
+    typeAnnotation: undefined,
+  },
+  params: [
     {
-      exportKind: "value",
-      exported: {
-        name: "baz",
+      name: "a",
+      optional: true,
+      range: [
+        16,
+        17,
+      ],
+      type: "Identifier",
+      typeAnnotation: {
+        range: [
+          18,
+          21,
+        ],
+        type: "TSTypeAnnotation",
+        typeAnnotation: {
+          literal: {
+            range: [
+              20,
+              21,
+            ],
+            raw: "2",
+            type: "Literal",
+            value: 2,
+          },
+          range: [
+            20,
+            21,
+          ],
+          type: "TSLiteralType",
+        },
+      },
+    },
+    {
+      argument: {
+        name: "b",
         optional: false,
         range: [
-          16,
-          19,
+          26,
+          27,
         ],
         type: "Identifier",
         typeAnnotation: undefined,
       },
+      range: [
+        23,
+        34,
+      ],
+      type: "RestElement",
+      typeAnnotation: {
+        range: [
+          27,
+          34,
+        ],
+        type: "TSTypeAnnotation",
+        typeAnnotation: {
+          elementType: {
+            range: [
+              29,
+              32,
+            ],
+            type: "TSAnyKeyword",
+          },
+          range: [
+            29,
+            34,
+          ],
+          type: "TSArrayType",
+        },
+      },
+    },
+  ],
+  range: [
+    0,
+    43,
+  ],
+  returnType: {
+    range: [
+      35,
+      40,
+    ],
+    type: "TSTypeAnnotation",
+    typeAnnotation: {
+      range: [
+        37,
+        40,
+      ],
+      type: "TSAnyKeyword",
+    },
+  },
+  type: "FunctionDeclaration",
+  typeParameters: {
+    params: [
+      {
+        const: false,
+        constraint: null,
+        default: null,
+        in: false,
+        name: {
+          name: "T",
+          optional: false,
+          range: [
+            13,
+            14,
+          ],
+          type: "Identifier",
+          typeAnnotation: undefined,
+        },
+        out: false,
+        range: [
+          13,
+          14,
+        ],
+        type: "TSTypeParameter",
+      },
+    ],
+    range: [
+      12,
+      15,
+    ],
+    type: "TSTypeParameterDeclaration",
+  },
+}
+`;
+
+snapshot[`Plugin - ImportDeclaration 1`] = `
+{
+  attributes: [],
+  importKind: "value",
+  range: [
+    0,
+    13,
+  ],
+  source: {
+    range: [
+      7,
+      12,
+    ],
+    raw: '"foo"',
+    type: "Literal",
+    value: "foo",
+  },
+  specifiers: [],
+  type: "ImportDeclaration",
+}
+`;
+
+snapshot[`Plugin - ImportDeclaration 2`] = `
+{
+  attributes: [],
+  importKind: "value",
+  range: [
+    0,
+    22,
+  ],
+  source: {
+    range: [
+      16,
+      21,
+    ],
+    raw: '"foo"',
+    type: "Literal",
+    value: "foo",
+  },
+  specifiers: [
+    {
       local: {
-        name: "bar",
+        name: "foo",
         optional: false,
         range: [
-          9,
-          12,
+          7,
+          10,
         ],
         type: "Identifier",
         typeAnnotation: undefined,
       },
       range: [
-        9,
-        19,
+        7,
+        10,
       ],
-      type: "ExportSpecifier",
+      type: "ImportDefaultSpecifier",
     },
   ],
-  type: "ExportNamedDeclaration",
+  type: "ImportDeclaration",
 }
 `;
 
-snapshot[`Plugin - ExportNamedDeclaration 3`] = `
+snapshot[`Plugin - ImportDeclaration 3`] = `
 {
-  attributes: [
+  attributes: [],
+  importKind: "value",
+  range: [
+    0,
+    27,
+  ],
+  source: {
+    range: [
+      21,
+      26,
+    ],
+    raw: '"foo"',
+    type: "Literal",
+    value: "foo",
+  },
+  specifiers: [
     {
-      key: {
-        name: "type",
+      local: {
+        name: "foo",
         optional: false,
         range: [
-          33,
-          37,
+          12,
+          15,
         ],
         type: "Identifier",
         typeAnnotation: undefined,
       },
       range: [
-        33,
-        45,
+        7,
+        15,
       ],
-      type: "ImportAttribute",
-      value: {
-        range: [
-          39,
-          45,
-        ],
-        raw: '"json"',
-        type: "Literal",
-        value: "json",
-      },
+      type: "ImportNamespaceSpecifier",
     },
   ],
-  declaration: null,
-  exportKind: "value",
+  type: "ImportDeclaration",
+}
+`;
+
+snapshot[`Plugin - ImportDeclaration 4`] = `
+{
+  attributes: [],
+  importKind: "value",
   range: [
     0,
-    48,
+    38,
   ],
   source: {
     range: [
-      20,
-      25,
+      32,
+      37,
     ],
     raw: '"foo"',
     type: "Literal",
@@ -411,8 +688,8 @@ snapshot[`Plugin - ExportNamedDeclaration 3`] = `
   },
   specifiers: [
     {
-      exportKind: "value",
-      exported: {
+      importKind: "value",
+      imported: {
         name: "foo",
         optional: false,
         range: [
@@ -436,273 +713,213 @@ snapshot[`Plugin - ExportNamedDeclaration 3`] = `
         9,
         12,
       ],
-      type: "ExportSpecifier",
-    },
-  ],
-  type: "ExportNamedDeclaration",
-}
-`;
-
-snapshot[`Plugin - ExportDefaultDeclaration 1`] = `
-{
-  declaration: {
-    async: false,
-    body: {
-      body: [],
-      range: [
-        30,
-        32,
-      ],
-      type: "BlockStatement",
+      type: "ImportSpecifier",
     },
-    declare: false,
-    generator: false,
-    id: {
-      name: "foo",
-      optional: false,
+    {
+      importKind: "value",
+      imported: {
+        name: "bar",
+        optional: false,
+        range: [
+          14,
+          17,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      local: {
+        name: "baz",
+        optional: false,
+        range: [
+          21,
+          24,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
       range: [
+        14,
         24,
-        27,
       ],
-      type: "Identifier",
-      typeAnnotation: undefined,
+      type: "ImportSpecifier",
     },
-    params: [],
-    range: [
-      15,
-      32,
-    ],
-    returnType: undefined,
-    type: "FunctionDeclaration",
-    typeParameters: undefined,
-  },
-  exportKind: "value",
-  range: [
-    0,
-    32,
   ],
-  type: "ExportDefaultDeclaration",
+  type: "ImportDeclaration",
 }
 `;
 
-snapshot[`Plugin - ExportDefaultDeclaration 2`] = `
+snapshot[`Plugin - ImportDeclaration 5`] = `
 {
-  declaration: {
-    async: false,
-    body: {
-      body: [],
+  attributes: [
+    {
+      key: {
+        name: "type",
+        optional: false,
+        range: [
+          29,
+          33,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
       range: [
-        27,
         29,
+        41,
       ],
-      type: "BlockStatement",
+      type: "ImportAttribute",
+      value: {
+        range: [
+          35,
+          41,
+        ],
+        raw: '"json"',
+        type: "Literal",
+        value: "json",
+      },
     },
-    declare: false,
-    generator: false,
-    id: null,
-    params: [],
+  ],
+  importKind: "value",
+  range: [
+    0,
+    44,
+  ],
+  source: {
     range: [
-      15,
-      29,
+      16,
+      21,
     ],
-    returnType: undefined,
-    type: "FunctionDeclaration",
-    typeParameters: undefined,
+    raw: '"foo"',
+    type: "Literal",
+    value: "foo",
   },
-  exportKind: "value",
-  range: [
-    0,
-    29,
+  specifiers: [
+    {
+      local: {
+        name: "foo",
+        optional: false,
+        range: [
+          7,
+          10,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      range: [
+        7,
+        10,
+      ],
+      type: "ImportDefaultSpecifier",
+    },
   ],
-  type: "ExportDefaultDeclaration",
+  type: "ImportDeclaration",
 }
 `;
 
-snapshot[`Plugin - ExportDefaultDeclaration 3`] = `
+snapshot[`Plugin - ExportNamedDeclaration 1`] = `
 {
-  declaration: {
-    abstract: false,
-    body: {
-      body: [],
-      range: [
-        15,
-        27,
-      ],
-      type: "ClassBody",
-    },
-    declare: false,
-    id: {
-      name: "Foo",
-      optional: false,
-      range: [
-        21,
-        24,
-      ],
-      type: "Identifier",
-      typeAnnotation: undefined,
-    },
-    implements: [],
-    range: [
-      15,
-      27,
-    ],
-    superClass: null,
-    type: "ClassDeclaration",
-  },
+  attributes: [],
+  declaration: null,
   exportKind: "value",
   range: [
     0,
-    27,
+    26,
   ],
-  type: "ExportDefaultDeclaration",
-}
-`;
-
-snapshot[`Plugin - ExportDefaultDeclaration 4`] = `
-{
-  declaration: {
-    abstract: false,
-    body: {
-      body: [],
-      range: [
-        15,
-        23,
-      ],
-      type: "ClassBody",
-    },
-    declare: false,
-    id: null,
-    implements: [],
+  source: {
     range: [
-      15,
-      23,
+      20,
+      25,
     ],
-    superClass: null,
-    type: "ClassDeclaration",
+    raw: '"foo"',
+    type: "Literal",
+    value: "foo",
   },
-  exportKind: "value",
-  range: [
-    0,
-    23,
+  specifiers: [
+    {
+      exportKind: "value",
+      exported: {
+        name: "foo",
+        optional: false,
+        range: [
+          9,
+          12,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      local: {
+        name: "foo",
+        optional: false,
+        range: [
+          9,
+          12,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      range: [
+        9,
+        12,
+      ],
+      type: "ExportSpecifier",
+    },
   ],
-  type: "ExportDefaultDeclaration",
+  type: "ExportNamedDeclaration",
 }
 `;
 
-snapshot[`Plugin - ExportDefaultDeclaration 5`] = `
+snapshot[`Plugin - ExportNamedDeclaration 2`] = `
 {
-  declaration: {
-    name: "bar",
-    optional: false,
-    range: [
-      15,
-      18,
-    ],
-    type: "Identifier",
-    typeAnnotation: undefined,
-  },
+  attributes: [],
+  declaration: null,
   exportKind: "value",
   range: [
     0,
-    19,
-  ],
-  type: "ExportDefaultDeclaration",
-}
-`;
-
-snapshot[`Plugin - ExportDefaultDeclaration 6`] = `
-{
-  declaration: {
-    body: {
-      body: [],
-      range: [
-        29,
-        31,
-      ],
-      type: "TSInterfaceBody",
-    },
-    declare: false,
-    extends: [],
-    id: {
-      name: "Foo",
-      optional: false,
-      range: [
-        25,
-        28,
-      ],
-      type: "Identifier",
-      typeAnnotation: undefined,
-    },
-    range: [
-      15,
-      31,
-    ],
-    type: "TSInterfaceDeclaration",
-    typeParameters: undefined,
-  },
-  exportKind: "type",
-  range: [
-    0,
-    31,
-  ],
-  type: "ExportDefaultDeclaration",
-}
-`;
-
-snapshot[`Plugin - ExportAllDeclaration 1`] = `
-{
-  attributes: [],
-  exportKind: "value",
-  exported: null,
-  range: [
-    0,
-    20,
+    33,
   ],
   source: {
     range: [
-      14,
-      19,
-    ],
-    raw: '"foo"',
-    type: "Literal",
-    value: "foo",
-  },
-  type: "ExportAllDeclaration",
-}
-`;
-
-snapshot[`Plugin - ExportAllDeclaration 2`] = `
-{
-  attributes: [],
-  exportKind: "value",
-  exported: {
-    range: [
-      21,
-      26,
+      27,
+      32,
     ],
     raw: '"foo"',
     type: "Literal",
     value: "foo",
   },
-  range: [
-    0,
-    27,
+  specifiers: [
+    {
+      exportKind: "value",
+      exported: {
+        name: "baz",
+        optional: false,
+        range: [
+          16,
+          19,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      local: {
+        name: "bar",
+        optional: false,
+        range: [
+          9,
+          12,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      range: [
+        9,
+        19,
+      ],
+      type: "ExportSpecifier",
+    },
   ],
-  source: {
-    name: "foo",
-    optional: false,
-    range: [
-      12,
-      15,
-    ],
-    type: "Identifier",
-    typeAnnotation: undefined,
-  },
-  type: "ExportAllDeclaration",
+  type: "ExportNamedDeclaration",
 }
 `;
 
-snapshot[`Plugin - ExportAllDeclaration 3`] = `
+snapshot[`Plugin - ExportNamedDeclaration 3`] = `
 {
   attributes: [
     {
@@ -710,21 +927,21 @@ snapshot[`Plugin - ExportAllDeclaration 3`] = `
         name: "type",
         optional: false,
         range: [
-          27,
-          31,
+          33,
+          37,
         ],
         type: "Identifier",
         typeAnnotation: undefined,
       },
       range: [
-        27,
-        39,
+        33,
+        45,
       ],
       type: "ImportAttribute",
       value: {
         range: [
-          33,
           39,
+          45,
         ],
         raw: '"json"',
         type: "Literal",
@@ -732,207 +949,366 @@ snapshot[`Plugin - ExportAllDeclaration 3`] = `
       },
     },
   ],
+  declaration: null,
   exportKind: "value",
-  exported: null,
   range: [
     0,
-    42,
+    48,
   ],
   source: {
     range: [
-      14,
-      19,
+      20,
+      25,
     ],
     raw: '"foo"',
     type: "Literal",
     value: "foo",
   },
-  type: "ExportAllDeclaration",
+  specifiers: [
+    {
+      exportKind: "value",
+      exported: {
+        name: "foo",
+        optional: false,
+        range: [
+          9,
+          12,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      local: {
+        name: "foo",
+        optional: false,
+        range: [
+          9,
+          12,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      range: [
+        9,
+        12,
+      ],
+      type: "ExportSpecifier",
+    },
+  ],
+  type: "ExportNamedDeclaration",
 }
 `;
 
-snapshot[`Plugin - TSExportAssignment 1`] = `
+snapshot[`Plugin - ExportDefaultDeclaration 1`] = `
 {
-  expression: {
-    name: "foo",
-    optional: false,
+  declaration: {
+    async: false,
+    body: {
+      body: [],
+      range: [
+        30,
+        32,
+      ],
+      type: "BlockStatement",
+    },
+    declare: false,
+    generator: false,
+    id: {
+      name: "foo",
+      optional: false,
+      range: [
+        24,
+        27,
+      ],
+      type: "Identifier",
+      typeAnnotation: undefined,
+    },
+    params: [],
     range: [
-      9,
-      12,
+      15,
+      32,
     ],
-    type: "Identifier",
-    typeAnnotation: undefined,
+    returnType: undefined,
+    type: "FunctionDeclaration",
+    typeParameters: undefined,
   },
+  exportKind: "value",
   range: [
     0,
-    13,
+    32,
   ],
-  type: "TSExportAssignment",
+  type: "ExportDefaultDeclaration",
 }
 `;
 
-snapshot[`Plugin - TSNamespaceExportDeclaration 1`] = `
+snapshot[`Plugin - ExportDefaultDeclaration 2`] = `
 {
-  id: {
-    name: "A",
-    optional: false,
+  declaration: {
+    async: false,
+    body: {
+      body: [],
+      range: [
+        27,
+        29,
+      ],
+      type: "BlockStatement",
+    },
+    declare: false,
+    generator: false,
+    id: null,
+    params: [],
     range: [
-      20,
-      21,
+      15,
+      29,
     ],
-    type: "Identifier",
-    typeAnnotation: undefined,
+    returnType: undefined,
+    type: "FunctionDeclaration",
+    typeParameters: undefined,
   },
+  exportKind: "value",
   range: [
     0,
-    22,
+    29,
   ],
-  type: "TSNamespaceExportDeclaration",
+  type: "ExportDefaultDeclaration",
 }
 `;
 
-snapshot[`Plugin - TSImportEqualsDeclaration 1`] = `
+snapshot[`Plugin - ExportDefaultDeclaration 3`] = `
 {
-  id: {
-    name: "a",
-    optional: false,
-    range: [
-      7,
-      8,
-    ],
-    type: "Identifier",
-    typeAnnotation: undefined,
+  declaration: {
+    abstract: false,
+    body: {
+      body: [],
+      range: [
+        15,
+        27,
+      ],
+      type: "ClassBody",
+    },
+    declare: false,
+    id: {
+      name: "Foo",
+      optional: false,
+      range: [
+        21,
+        24,
+      ],
+      type: "Identifier",
+      typeAnnotation: undefined,
+    },
+    implements: [],
+    range: [
+      15,
+      27,
+    ],
+    superClass: null,
+    type: "ClassDeclaration",
   },
-  importKind: "value",
-  moduleReference: {
-    name: "b",
-    optional: false,
+  exportKind: "value",
+  range: [
+    0,
+    27,
+  ],
+  type: "ExportDefaultDeclaration",
+}
+`;
+
+snapshot[`Plugin - ExportDefaultDeclaration 4`] = `
+{
+  declaration: {
+    abstract: false,
+    body: {
+      body: [],
+      range: [
+        15,
+        23,
+      ],
+      type: "ClassBody",
+    },
+    declare: false,
+    id: null,
+    implements: [],
     range: [
-      11,
-      12,
+      15,
+      23,
     ],
-    type: "Identifier",
-    typeAnnotation: undefined,
+    superClass: null,
+    type: "ClassDeclaration",
   },
+  exportKind: "value",
   range: [
     0,
-    12,
+    23,
   ],
-  type: "TSImportEqualsDeclaration",
+  type: "ExportDefaultDeclaration",
 }
 `;
 
-snapshot[`Plugin - TSImportEqualsDeclaration 2`] = `
+snapshot[`Plugin - ExportDefaultDeclaration 5`] = `
 {
-  id: {
-    name: "a",
+  declaration: {
+    name: "bar",
     optional: false,
     range: [
-      7,
-      8,
+      15,
+      18,
     ],
     type: "Identifier",
     typeAnnotation: undefined,
   },
-  importKind: "value",
-  moduleReference: {
-    expression: {
-      range: [
-        19,
-        24,
-      ],
-      raw: '"foo"',
-      type: "Literal",
-      value: "foo",
-    },
-    range: [
-      11,
-      25,
-    ],
-    type: "TSExternalModuleReference",
-  },
+  exportKind: "value",
   range: [
     0,
-    25,
+    19,
   ],
-  type: "TSImportEqualsDeclaration",
+  type: "ExportDefaultDeclaration",
 }
 `;
 
-snapshot[`Plugin - BlockStatement 1`] = `
+snapshot[`Plugin - ExportDefaultDeclaration 6`] = `
 {
-  body: [
-    {
-      expression: {
-        name: "foo",
-        optional: false,
-        range: [
-          2,
-          5,
-        ],
-        type: "Identifier",
-        typeAnnotation: undefined,
-      },
+  declaration: {
+    body: {
+      body: [],
       range: [
-        2,
-        6,
+        29,
+        31,
       ],
-      type: "ExpressionStatement",
+      type: "TSInterfaceBody",
     },
-  ],
+    declare: false,
+    extends: [],
+    id: {
+      name: "Foo",
+      optional: false,
+      range: [
+        25,
+        28,
+      ],
+      type: "Identifier",
+      typeAnnotation: undefined,
+    },
+    range: [
+      15,
+      31,
+    ],
+    type: "TSInterfaceDeclaration",
+    typeParameters: undefined,
+  },
+  exportKind: "type",
   range: [
     0,
-    8,
+    31,
   ],
-  type: "BlockStatement",
+  type: "ExportDefaultDeclaration",
 }
 `;
 
-snapshot[`Plugin - BreakStatement 1`] = `
+snapshot[`Plugin - ExportAllDeclaration 1`] = `
 {
-  label: null,
+  attributes: [],
+  exportKind: "value",
+  exported: null,
   range: [
-    14,
+    0,
     20,
   ],
-  type: "BreakStatement",
+  source: {
+    range: [
+      14,
+      19,
+    ],
+    raw: '"foo"',
+    type: "Literal",
+    value: "foo",
+  },
+  type: "ExportAllDeclaration",
 }
 `;
 
-snapshot[`Plugin - BreakStatement 2`] = `
+snapshot[`Plugin - ExportAllDeclaration 2`] = `
 {
-  label: {
+  attributes: [],
+  exportKind: "value",
+  exported: {
+    range: [
+      21,
+      26,
+    ],
+    raw: '"foo"',
+    type: "Literal",
+    value: "foo",
+  },
+  range: [
+    0,
+    27,
+  ],
+  source: {
     name: "foo",
     optional: false,
     range: [
-      25,
-      28,
+      12,
+      15,
     ],
     type: "Identifier",
     typeAnnotation: undefined,
   },
-  range: [
-    19,
-    29,
-  ],
-  type: "BreakStatement",
+  type: "ExportAllDeclaration",
 }
 `;
 
-snapshot[`Plugin - ContinueStatement 1`] = `
+snapshot[`Plugin - ExportAllDeclaration 3`] = `
 {
-  label: null,
+  attributes: [
+    {
+      key: {
+        name: "type",
+        optional: false,
+        range: [
+          27,
+          31,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      range: [
+        27,
+        39,
+      ],
+      type: "ImportAttribute",
+      value: {
+        range: [
+          33,
+          39,
+        ],
+        raw: '"json"',
+        type: "Literal",
+        value: "json",
+      },
+    },
+  ],
+  exportKind: "value",
+  exported: null,
   range: [
     0,
-    9,
+    42,
   ],
-  type: "ContinueStatement",
+  source: {
+    range: [
+      14,
+      19,
+    ],
+    raw: '"foo"',
+    type: "Literal",
+    value: "foo",
+  },
+  type: "ExportAllDeclaration",
 }
 `;
 
-snapshot[`Plugin - ContinueStatement 2`] = `
+snapshot[`Plugin - TSExportAssignment 1`] = `
 {
-  label: {
+  expression: {
     name: "foo",
     optional: false,
     range: [
@@ -946,17 +1322,196 @@ snapshot[`Plugin - ContinueStatement 2`] = `
     0,
     13,
   ],
-  type: "ContinueStatement",
+  type: "TSExportAssignment",
 }
 `;
 
-snapshot[`Plugin - DebuggerStatement 1`] = `
+snapshot[`Plugin - TSNamespaceExportDeclaration 1`] = `
 {
-  range: [
-    0,
-    9,
-  ],
-  type: "DebuggerStatement",
+  id: {
+    name: "A",
+    optional: false,
+    range: [
+      20,
+      21,
+    ],
+    type: "Identifier",
+    typeAnnotation: undefined,
+  },
+  range: [
+    0,
+    22,
+  ],
+  type: "TSNamespaceExportDeclaration",
+}
+`;
+
+snapshot[`Plugin - TSImportEqualsDeclaration 1`] = `
+{
+  id: {
+    name: "a",
+    optional: false,
+    range: [
+      7,
+      8,
+    ],
+    type: "Identifier",
+    typeAnnotation: undefined,
+  },
+  importKind: "value",
+  moduleReference: {
+    name: "b",
+    optional: false,
+    range: [
+      11,
+      12,
+    ],
+    type: "Identifier",
+    typeAnnotation: undefined,
+  },
+  range: [
+    0,
+    12,
+  ],
+  type: "TSImportEqualsDeclaration",
+}
+`;
+
+snapshot[`Plugin - TSImportEqualsDeclaration 2`] = `
+{
+  id: {
+    name: "a",
+    optional: false,
+    range: [
+      7,
+      8,
+    ],
+    type: "Identifier",
+    typeAnnotation: undefined,
+  },
+  importKind: "value",
+  moduleReference: {
+    expression: {
+      range: [
+        19,
+        24,
+      ],
+      raw: '"foo"',
+      type: "Literal",
+      value: "foo",
+    },
+    range: [
+      11,
+      25,
+    ],
+    type: "TSExternalModuleReference",
+  },
+  range: [
+    0,
+    25,
+  ],
+  type: "TSImportEqualsDeclaration",
+}
+`;
+
+snapshot[`Plugin - BlockStatement 1`] = `
+{
+  body: [
+    {
+      expression: {
+        name: "foo",
+        optional: false,
+        range: [
+          2,
+          5,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      range: [
+        2,
+        6,
+      ],
+      type: "ExpressionStatement",
+    },
+  ],
+  range: [
+    0,
+    8,
+  ],
+  type: "BlockStatement",
+}
+`;
+
+snapshot[`Plugin - BreakStatement 1`] = `
+{
+  label: null,
+  range: [
+    14,
+    20,
+  ],
+  type: "BreakStatement",
+}
+`;
+
+snapshot[`Plugin - BreakStatement 2`] = `
+{
+  label: {
+    name: "foo",
+    optional: false,
+    range: [
+      25,
+      28,
+    ],
+    type: "Identifier",
+    typeAnnotation: undefined,
+  },
+  range: [
+    19,
+    29,
+  ],
+  type: "BreakStatement",
+}
+`;
+
+snapshot[`Plugin - ContinueStatement 1`] = `
+{
+  label: null,
+  range: [
+    0,
+    9,
+  ],
+  type: "ContinueStatement",
+}
+`;
+
+snapshot[`Plugin - ContinueStatement 2`] = `
+{
+  label: {
+    name: "foo",
+    optional: false,
+    range: [
+      9,
+      12,
+    ],
+    type: "Identifier",
+    typeAnnotation: undefined,
+  },
+  range: [
+    0,
+    13,
+  ],
+  type: "ContinueStatement",
+}
+`;
+
+snapshot[`Plugin - DebuggerStatement 1`] = `
+{
+  range: [
+    0,
+    9,
+  ],
+  type: "DebuggerStatement",
 }
 `;
 
@@ -4877,6 +5432,362 @@ snapshot[`Plugin - YieldExpression 1`] = `
 }
 `;
 
+snapshot[`Plugin - ObjectPattern 1`] = `
+{
+  optional: false,
+  properties: [
+    {
+      computed: false,
+      key: {
+        name: "prop",
+        optional: false,
+        range: [
+          8,
+          12,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      kind: "init",
+      method: false,
+      range: [
+        8,
+        12,
+      ],
+      shorthand: true,
+      type: "Property",
+      value: {
+        name: "prop",
+        optional: false,
+        range: [
+          8,
+          12,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+    },
+  ],
+  range: [
+    6,
+    14,
+  ],
+  type: "ObjectPattern",
+  typeAnnotation: undefined,
+}
+`;
+
+snapshot[`Plugin - ObjectPattern 2`] = `
+{
+  optional: false,
+  properties: [
+    {
+      computed: false,
+      key: {
+        name: "prop",
+        optional: false,
+        range: [
+          8,
+          12,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      kind: "init",
+      method: false,
+      range: [
+        8,
+        15,
+      ],
+      shorthand: false,
+      type: "Property",
+      value: {
+        name: "A",
+        optional: false,
+        range: [
+          14,
+          15,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+    },
+  ],
+  range: [
+    6,
+    17,
+  ],
+  type: "ObjectPattern",
+  typeAnnotation: undefined,
+}
+`;
+
+snapshot[`Plugin - ObjectPattern 3`] = `
+{
+  optional: false,
+  properties: [
+    {
+      computed: false,
+      key: {
+        range: [
+          8,
+          13,
+        ],
+        raw: "'a.b'",
+        type: "Literal",
+        value: "a.b",
+      },
+      kind: "init",
+      method: false,
+      range: [
+        8,
+        16,
+      ],
+      shorthand: false,
+      type: "Property",
+      value: {
+        name: "A",
+        optional: false,
+        range: [
+          15,
+          16,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+    },
+  ],
+  range: [
+    6,
+    18,
+  ],
+  type: "ObjectPattern",
+  typeAnnotation: undefined,
+}
+`;
+
+snapshot[`Plugin - ObjectPattern 4`] = `
+{
+  optional: false,
+  properties: [
+    {
+      computed: false,
+      key: {
+        name: "prop",
+        optional: false,
+        range: [
+          8,
+          12,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      kind: "init",
+      method: false,
+      range: [
+        8,
+        16,
+      ],
+      shorthand: false,
+      type: "Property",
+      value: {
+        range: [
+          15,
+          16,
+        ],
+        raw: "2",
+        type: "Literal",
+        value: 2,
+      },
+    },
+  ],
+  range: [
+    6,
+    18,
+  ],
+  type: "ObjectPattern",
+  typeAnnotation: undefined,
+}
+`;
+
+snapshot[`Plugin - ObjectPattern 5`] = `
+{
+  optional: false,
+  properties: [
+    {
+      computed: false,
+      key: {
+        name: "prop",
+        optional: false,
+        range: [
+          8,
+          12,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      kind: "init",
+      method: false,
+      range: [
+        8,
+        16,
+      ],
+      shorthand: false,
+      type: "Property",
+      value: {
+        range: [
+          15,
+          16,
+        ],
+        raw: "2",
+        type: "Literal",
+        value: 2,
+      },
+    },
+    {
+      argument: {
+        name: "c",
+        optional: false,
+        range: [
+          21,
+          22,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      range: [
+        18,
+        22,
+      ],
+      type: "RestElement",
+      typeAnnotation: undefined,
+    },
+  ],
+  range: [
+    6,
+    24,
+  ],
+  type: "ObjectPattern",
+  typeAnnotation: undefined,
+}
+`;
+
+snapshot[`Plugin - ArrayPattern 1`] = `
+{
+  elements: [
+    {
+      name: "a",
+      optional: false,
+      range: [
+        7,
+        8,
+      ],
+      type: "Identifier",
+      typeAnnotation: undefined,
+    },
+    {
+      name: "b",
+      optional: false,
+      range: [
+        10,
+        11,
+      ],
+      type: "Identifier",
+      typeAnnotation: undefined,
+    },
+  ],
+  optional: false,
+  range: [
+    6,
+    12,
+  ],
+  type: "ArrayPattern",
+  typeAnnotation: undefined,
+}
+`;
+
+snapshot[`Plugin - ArrayPattern 2`] = `
+{
+  elements: [
+    {
+      left: {
+        name: "a",
+        optional: false,
+        range: [
+          7,
+          8,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      range: [
+        7,
+        12,
+      ],
+      right: {
+        range: [
+          11,
+          12,
+        ],
+        raw: "2",
+        type: "Literal",
+        value: 2,
+      },
+      type: "AssignmentPattern",
+    },
+  ],
+  optional: false,
+  range: [
+    6,
+    13,
+  ],
+  type: "ArrayPattern",
+  typeAnnotation: undefined,
+}
+`;
+
+snapshot[`Plugin - ArrayPattern 3`] = `
+{
+  elements: [
+    {
+      name: "a",
+      optional: false,
+      range: [
+        7,
+        8,
+      ],
+      type: "Identifier",
+      typeAnnotation: undefined,
+    },
+    {
+      argument: {
+        name: "b",
+        optional: false,
+        range: [
+          13,
+          14,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      range: [
+        10,
+        14,
+      ],
+      type: "RestElement",
+      typeAnnotation: undefined,
+    },
+  ],
+  optional: false,
+  range: [
+    6,
+    15,
+  ],
+  type: "ArrayPattern",
+  typeAnnotation: undefined,
+}
+`;
+
 snapshot[`Plugin - Literal 1`] = `
 {
   range: [
diff --git a/tests/unit/lint_plugin_test.ts b/tests/unit/lint_plugin_test.ts
index e7249571ed9865..faa2b888495665 100644
--- a/tests/unit/lint_plugin_test.ts
+++ b/tests/unit/lint_plugin_test.ts
@@ -359,6 +359,27 @@ Deno.test("Plugin - Program", async (t) => {
   await testSnapshot(t, "", "Program");
 });
 
+Deno.test("Plugin - FunctionDeclaration", async (t) => {
+  await testSnapshot(t, "function foo() {}", "FunctionDeclaration");
+  await testSnapshot(t, "function foo(a, ...b) {}", "FunctionDeclaration");
+  await testSnapshot(
+    t,
+    "function foo(a = 1, { a = 2, b, ...c }, [d,...e], ...f) {}",
+    "FunctionDeclaration",
+  );
+
+  await testSnapshot(t, "async function foo() {}", "FunctionDeclaration");
+  await testSnapshot(t, "async function* foo() {}", "FunctionDeclaration");
+  await testSnapshot(t, "function* foo() {}", "FunctionDeclaration");
+
+  // TypeScript
+  await testSnapshot(
+    t,
+    "function foo<T>(a?: 2, ...b: any[]): any {}",
+    "FunctionDeclaration",
+  );
+});
+
 Deno.test("Plugin - ImportDeclaration", async (t) => {
   await testSnapshot(t, 'import "foo";', "ImportDeclaration");
   await testSnapshot(t, 'import foo from "foo";', "ImportDeclaration");
@@ -739,6 +760,20 @@ Deno.test("Plugin - YieldExpression", async (t) => {
   await testSnapshot(t, "function* foo() { yield bar; }", "YieldExpression");
 });
 
+Deno.test("Plugin - ObjectPattern", async (t) => {
+  await testSnapshot(t, "const { prop } = {}", "ObjectPattern");
+  await testSnapshot(t, "const { prop: A } = {}", "ObjectPattern");
+  await testSnapshot(t, "const { 'a.b': A } = {}", "ObjectPattern");
+  await testSnapshot(t, "const { prop = 2 } = {}", "ObjectPattern");
+  await testSnapshot(t, "const { prop = 2, ...c } = {}", "ObjectPattern");
+});
+
+Deno.test("Plugin - ArrayPattern", async (t) => {
+  await testSnapshot(t, "const [a, b] = []", "ArrayPattern");
+  await testSnapshot(t, "const [a = 2] = []", "ArrayPattern");
+  await testSnapshot(t, "const [a, ...b] = []", "ArrayPattern");
+});
+
 Deno.test("Plugin - Literal", async (t) => {
   await testSnapshot(t, "1", "Literal");
   await testSnapshot(t, "'foo'", "Literal");

From 62bc07884b5649395f7d4125b68395e37ebaf168 Mon Sep 17 00:00:00 2001
From: Marvin Hagemeister <marvin@deno.com>
Date: Mon, 3 Mar 2025 11:03:06 +0100
Subject: [PATCH 049/115] fix(unstable): Missing `PrivateIdentifier` type for
 `PropertyDefinition` key (#28358)

The `PropertyDefinition` node also allows `PrivateIdentifier` as a type
for the `key`. Example:

```ts
class Foo {
  #foo = 2;
}
```

Fixes one issue reported in
https://github.com/denoland/deno/issues/28355
---
 cli/tsc/dts/lib.deno.unstable.d.ts | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/cli/tsc/dts/lib.deno.unstable.d.ts b/cli/tsc/dts/lib.deno.unstable.d.ts
index b819776a7ad730..c853f327e37178 100644
--- a/cli/tsc/dts/lib.deno.unstable.d.ts
+++ b/cli/tsc/dts/lib.deno.unstable.d.ts
@@ -1946,7 +1946,12 @@ declare namespace Deno {
       static: boolean;
       accessibility: Accessibility | undefined;
       decorators: Decorator[];
-      key: Expression | Identifier | NumberLiteral | StringLiteral;
+      key:
+        | Expression
+        | Identifier
+        | NumberLiteral
+        | StringLiteral
+        | PrivateIdentifier;
       value: Expression | null;
       typeAnnotation: TSTypeAnnotation | undefined;
     }

From 9bcbef6d2fa66c05eb22f343ba45fb7406317aca Mon Sep 17 00:00:00 2001
From: Marvin Hagemeister <marvin@deno.com>
Date: Mon, 3 Mar 2025 11:03:29 +0100
Subject: [PATCH 050/115] fix(unstable): lint plugin swapped exported and
 source for ExportAllDeclaration (#28357)

The `source` and `exported` property were swapped for the
`ExportAllDeclaration` node.

Fixes one issue reported at
https://github.com/denoland/deno/issues/28355
---
 cli/tools/lint/ast_buffer/swc.rs              |  8 +++++--
 .../__snapshots__/lint_plugin_test.ts.snap    | 22 +++++++++----------
 2 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/cli/tools/lint/ast_buffer/swc.rs b/cli/tools/lint/ast_buffer/swc.rs
index 93187e2beabeb8..4bb7d540ae4448 100644
--- a/cli/tools/lint/ast_buffer/swc.rs
+++ b/cli/tools/lint/ast_buffer/swc.rs
@@ -213,8 +213,12 @@ fn serialize_module_decl(
         ctx.write_export_all_decl(
           &node.span,
           node.type_only,
-          exported,
-          source,
+          // Namespaced export must always have a source, so this
+          // scenario where it's optional can't happen. I think
+          // it's just the way SWC stores things internally, since they
+          // don't have a dedicated node for namespace exports.
+          source.unwrap_or(NodeRef(0)),
+          Some(exported),
           attrs,
         )
       } else {
diff --git a/tests/unit/__snapshots__/lint_plugin_test.ts.snap b/tests/unit/__snapshots__/lint_plugin_test.ts.snap
index b09e07c3f725e6..a46160e91965f3 100644
--- a/tests/unit/__snapshots__/lint_plugin_test.ts.snap
+++ b/tests/unit/__snapshots__/lint_plugin_test.ts.snap
@@ -1231,27 +1231,27 @@ snapshot[`Plugin - ExportAllDeclaration 2`] = `
   attributes: [],
   exportKind: "value",
   exported: {
+    name: "foo",
+    optional: false,
     range: [
-      21,
-      26,
+      12,
+      15,
     ],
-    raw: '"foo"',
-    type: "Literal",
-    value: "foo",
+    type: "Identifier",
+    typeAnnotation: undefined,
   },
   range: [
     0,
     27,
   ],
   source: {
-    name: "foo",
-    optional: false,
     range: [
-      12,
-      15,
+      21,
+      26,
     ],
-    type: "Identifier",
-    typeAnnotation: undefined,
+    raw: '"foo"',
+    type: "Literal",
+    value: "foo",
   },
   type: "ExportAllDeclaration",
 }

From a566d8bd103338722a007c5b611aae5a0146eb0a Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Mon, 3 Mar 2025 11:47:39 -0500
Subject: [PATCH 051/115] fix: add "module.exports" export to ESM CJS wrapper
 module (#28373)

---
 resolvers/node/analyze.rs                     |  3 +-
 .../verify.out                                |  3 +-
 .../cjs_key_escaped_whitespace/output.out     |  3 +-
 .../main.out                                  |  1 +
 .../cjs_invalid_name_exports/__test__.jsonc   |  4 +-
 .../{cjs-invalid-name-exports => }/main.out   |  7 ++
 .../{cjs-invalid-name-exports => }/main.ts    |  0
 .../npm/cjs_local_global_decls/__test__.jsonc |  4 +-
 .../{cjs_local_global_decls => }/main.out     |  0
 .../{cjs_local_global_decls => }/main.ts      |  0
 .../__test__.jsonc                            |  4 +-
 .../main.out                                  |  3 +-
 .../main.ts                                   |  0
 .../__test__.jsonc                            |  4 +-
 .../main.out                                  |  3 -
 .../main.out                                  |  3 +
 .../main.ts                                   |  0
 .../specs/npm/cjs_require_esm/__test__.jsonc  |  4 +-
 .../main.out                                  |  3 +-
 .../{cjs_require_esm => }/main.ts             |  0
 .../npm/cjs_require_esm_mjs/__test__.jsonc    |  4 +-
 .../main.out                                  |  3 +-
 .../{cjs_require_esm_mjs => }/main.ts         |  0
 .../specs/npm/esm_import_cjs_default/main.out | 11 +++
 .../npm/reserved_word_exports/__test__.jsonc  |  4 +-
 .../{reserved_word_exports => }/main.out      | 74 +++++++++++++++++++
 .../{reserved_word_exports => }/main.ts       |  2 +
 .../reserved_word_exports/module_exports.cjs  |  1 +
 28 files changed, 125 insertions(+), 23 deletions(-)
 rename tests/specs/npm/cjs_invalid_name_exports/{cjs-invalid-name-exports => }/main.out (63%)
 rename tests/specs/npm/cjs_invalid_name_exports/{cjs-invalid-name-exports => }/main.ts (100%)
 rename tests/specs/npm/cjs_local_global_decls/{cjs_local_global_decls => }/main.out (100%)
 rename tests/specs/npm/cjs_local_global_decls/{cjs_local_global_decls => }/main.ts (100%)
 rename tests/specs/npm/cjs_module_export_assignment/{cjs_module_export_assignment => }/main.out (57%)
 rename tests/specs/npm/cjs_module_export_assignment/{cjs_module_export_assignment => }/main.ts (100%)
 delete mode 100644 tests/specs/npm/cjs_module_export_assignment_number/cjs_module_export_assignment_number/main.out
 create mode 100644 tests/specs/npm/cjs_module_export_assignment_number/main.out
 rename tests/specs/npm/cjs_module_export_assignment_number/{cjs_module_export_assignment_number => }/main.ts (100%)
 rename tests/specs/npm/{cjs_require_esm_mjs/cjs_require_esm_mjs => cjs_require_esm}/main.out (64%)
 rename tests/specs/npm/cjs_require_esm/{cjs_require_esm => }/main.ts (100%)
 rename tests/specs/npm/{cjs_require_esm/cjs_require_esm => cjs_require_esm_mjs}/main.out (64%)
 rename tests/specs/npm/cjs_require_esm_mjs/{cjs_require_esm_mjs => }/main.ts (100%)
 rename tests/specs/npm/reserved_word_exports/{reserved_word_exports => }/main.out (64%)
 rename tests/specs/npm/reserved_word_exports/{reserved_word_exports => }/main.ts (51%)
 create mode 100644 tests/specs/npm/reserved_word_exports/module_exports.cjs

diff --git a/resolvers/node/analyze.rs b/resolvers/node/analyze.rs
index f80a15816fdc6f..79d442ffd26fe9 100644
--- a/resolvers/node/analyze.rs
+++ b/resolvers/node/analyze.rs
@@ -210,7 +210,7 @@ impl<
     ));
 
     for export in &all_exports {
-      if export.as_str() != "default" {
+      if !matches!(export.as_str(), "default" | "module.exports") {
         add_export(
           &mut source,
           export,
@@ -221,6 +221,7 @@ impl<
     }
 
     source.push("export default mod;".to_string());
+    add_export(&mut source, "module.exports", "mod", &mut temp_var_count);
 
     let translated_source = source.join("\n");
     Ok(Cow::Owned(translated_source))
diff --git a/tests/specs/install/alias_pkg_json_and_deno_json_npm_pkg/verify.out b/tests/specs/install/alias_pkg_json_and_deno_json_npm_pkg/verify.out
index 8c989abd4a607b..b61b22ef43b42d 100644
--- a/tests/specs/install/alias_pkg_json_and_deno_json_npm_pkg/verify.out
+++ b/tests/specs/install/alias_pkg_json_and_deno_json_npm_pkg/verify.out
@@ -1,5 +1,6 @@
 @denotest/esm-basic
 [Module: null prototype] {
   add: [Function (anonymous)],
-  default: { add: [Function (anonymous)] }
+  default: { add: [Function (anonymous)] },
+  "module.exports": { add: [Function (anonymous)] }
 }
diff --git a/tests/specs/node/cjs_key_escaped_whitespace/output.out b/tests/specs/node/cjs_key_escaped_whitespace/output.out
index 49e92abdec5879..605f57e260e5e4 100644
--- a/tests/specs/node/cjs_key_escaped_whitespace/output.out
+++ b/tests/specs/node/cjs_key_escaped_whitespace/output.out
@@ -3,5 +3,6 @@ imported: [Module: null prototype] {
   "\nx": "test",
   "\rz": "test",
   '"a': "test",
-  default: { "\nx": "test", "\ty": "test", "\rz": "test", '"a': "test" }
+  default: { "\nx": "test", "\ty": "test", "\rz": "test", '"a': "test" },
+  "module.exports": { "\nx": "test", "\ty": "test", "\rz": "test", '"a': "test" }
 }
diff --git a/tests/specs/node/cjs_reexport_same_specifier_in_sub_folder/main.out b/tests/specs/node/cjs_reexport_same_specifier_in_sub_folder/main.out
index c50f064d7f6d33..2a2c2f6cecd945 100644
--- a/tests/specs/node/cjs_reexport_same_specifier_in_sub_folder/main.out
+++ b/tests/specs/node/cjs_reexport_same_specifier_in_sub_folder/main.out
@@ -3,5 +3,6 @@ Download http://localhost:4260/@denotest/cjs-reexport-same-specifier-in-sub-fold
 [Module: null prototype] {
   default: { main: [Getter], sub: [Getter] },
   main: 1,
+  "module.exports": { main: [Getter], sub: [Getter] },
   sub: 2
 }
diff --git a/tests/specs/npm/cjs_invalid_name_exports/__test__.jsonc b/tests/specs/npm/cjs_invalid_name_exports/__test__.jsonc
index 1d66adbd2349a3..a71173ce37b911 100644
--- a/tests/specs/npm/cjs_invalid_name_exports/__test__.jsonc
+++ b/tests/specs/npm/cjs_invalid_name_exports/__test__.jsonc
@@ -1,4 +1,4 @@
 {
-  "args": "run --allow-read --quiet cjs-invalid-name-exports/main.ts",
-  "output": "cjs-invalid-name-exports/main.out"
+  "args": "run --allow-read --quiet main.ts",
+  "output": "main.out"
 }
diff --git a/tests/specs/npm/cjs_invalid_name_exports/cjs-invalid-name-exports/main.out b/tests/specs/npm/cjs_invalid_name_exports/main.out
similarity index 63%
rename from tests/specs/npm/cjs_invalid_name_exports/cjs-invalid-name-exports/main.out
rename to tests/specs/npm/cjs_invalid_name_exports/main.out
index 45ec15d0e29f1f..b7125ada8f146d 100644
--- a/tests/specs/npm/cjs_invalid_name_exports/cjs-invalid-name-exports/main.out
+++ b/tests/specs/npm/cjs_invalid_name_exports/main.out
@@ -9,5 +9,12 @@
     "foo - bar": "foo - bar"
   },
   "foo - bar": "foo - bar",
+  "module.exports": {
+    'wow "double quotes"': "double quotes",
+    "another 'case'": "example",
+    "a \\ b": "a \\ b",
+    "name variable": "a",
+    "foo - bar": "foo - bar"
+  },
   'wow "double quotes"': "double quotes"
 }
diff --git a/tests/specs/npm/cjs_invalid_name_exports/cjs-invalid-name-exports/main.ts b/tests/specs/npm/cjs_invalid_name_exports/main.ts
similarity index 100%
rename from tests/specs/npm/cjs_invalid_name_exports/cjs-invalid-name-exports/main.ts
rename to tests/specs/npm/cjs_invalid_name_exports/main.ts
diff --git a/tests/specs/npm/cjs_local_global_decls/__test__.jsonc b/tests/specs/npm/cjs_local_global_decls/__test__.jsonc
index 6a42f26e6d54b6..70840dee2b585a 100644
--- a/tests/specs/npm/cjs_local_global_decls/__test__.jsonc
+++ b/tests/specs/npm/cjs_local_global_decls/__test__.jsonc
@@ -1,4 +1,4 @@
 {
-  "args": "run --allow-read cjs_local_global_decls/main.ts",
-  "output": "cjs_local_global_decls/main.out"
+  "args": "run --allow-read main.ts",
+  "output": "main.out"
 }
diff --git a/tests/specs/npm/cjs_local_global_decls/cjs_local_global_decls/main.out b/tests/specs/npm/cjs_local_global_decls/main.out
similarity index 100%
rename from tests/specs/npm/cjs_local_global_decls/cjs_local_global_decls/main.out
rename to tests/specs/npm/cjs_local_global_decls/main.out
diff --git a/tests/specs/npm/cjs_local_global_decls/cjs_local_global_decls/main.ts b/tests/specs/npm/cjs_local_global_decls/main.ts
similarity index 100%
rename from tests/specs/npm/cjs_local_global_decls/cjs_local_global_decls/main.ts
rename to tests/specs/npm/cjs_local_global_decls/main.ts
diff --git a/tests/specs/npm/cjs_module_export_assignment/__test__.jsonc b/tests/specs/npm/cjs_module_export_assignment/__test__.jsonc
index 3a8c104aba9e44..ec213f308ccbbc 100644
--- a/tests/specs/npm/cjs_module_export_assignment/__test__.jsonc
+++ b/tests/specs/npm/cjs_module_export_assignment/__test__.jsonc
@@ -1,4 +1,4 @@
 {
-  "args": "run -A --quiet --check=all cjs_module_export_assignment/main.ts",
-  "output": "cjs_module_export_assignment/main.out"
+  "args": "run -A --quiet --check=all main.ts",
+  "output": "main.out"
 }
diff --git a/tests/specs/npm/cjs_module_export_assignment/cjs_module_export_assignment/main.out b/tests/specs/npm/cjs_module_export_assignment/main.out
similarity index 57%
rename from tests/specs/npm/cjs_module_export_assignment/cjs_module_export_assignment/main.out
rename to tests/specs/npm/cjs_module_export_assignment/main.out
index dea185e38f5fa5..b4d7dee0a4fe23 100644
--- a/tests/specs/npm/cjs_module_export_assignment/cjs_module_export_assignment/main.out
+++ b/tests/specs/npm/cjs_module_export_assignment/main.out
@@ -1,6 +1,7 @@
 { func: [Function: func] }
 [Module: null prototype] {
   default: { func: [Function: func] },
-  func: [Function: func]
+  func: [Function: func],
+  "module.exports": { func: [Function: func] }
 }
 5
diff --git a/tests/specs/npm/cjs_module_export_assignment/cjs_module_export_assignment/main.ts b/tests/specs/npm/cjs_module_export_assignment/main.ts
similarity index 100%
rename from tests/specs/npm/cjs_module_export_assignment/cjs_module_export_assignment/main.ts
rename to tests/specs/npm/cjs_module_export_assignment/main.ts
diff --git a/tests/specs/npm/cjs_module_export_assignment_number/__test__.jsonc b/tests/specs/npm/cjs_module_export_assignment_number/__test__.jsonc
index 1b44f98c377631..ec213f308ccbbc 100644
--- a/tests/specs/npm/cjs_module_export_assignment_number/__test__.jsonc
+++ b/tests/specs/npm/cjs_module_export_assignment_number/__test__.jsonc
@@ -1,4 +1,4 @@
 {
-  "args": "run -A --quiet --check=all cjs_module_export_assignment_number/main.ts",
-  "output": "cjs_module_export_assignment_number/main.out"
+  "args": "run -A --quiet --check=all main.ts",
+  "output": "main.out"
 }
diff --git a/tests/specs/npm/cjs_module_export_assignment_number/cjs_module_export_assignment_number/main.out b/tests/specs/npm/cjs_module_export_assignment_number/cjs_module_export_assignment_number/main.out
deleted file mode 100644
index e559775cf9940d..00000000000000
--- a/tests/specs/npm/cjs_module_export_assignment_number/cjs_module_export_assignment_number/main.out
+++ /dev/null
@@ -1,3 +0,0 @@
-5
-5
-[Module: null prototype] { default: 5 }
diff --git a/tests/specs/npm/cjs_module_export_assignment_number/main.out b/tests/specs/npm/cjs_module_export_assignment_number/main.out
new file mode 100644
index 00000000000000..61a66742fb6437
--- /dev/null
+++ b/tests/specs/npm/cjs_module_export_assignment_number/main.out
@@ -0,0 +1,3 @@
+5
+5
+[Module: null prototype] { default: 5, "module.exports": 5 }
diff --git a/tests/specs/npm/cjs_module_export_assignment_number/cjs_module_export_assignment_number/main.ts b/tests/specs/npm/cjs_module_export_assignment_number/main.ts
similarity index 100%
rename from tests/specs/npm/cjs_module_export_assignment_number/cjs_module_export_assignment_number/main.ts
rename to tests/specs/npm/cjs_module_export_assignment_number/main.ts
diff --git a/tests/specs/npm/cjs_require_esm/__test__.jsonc b/tests/specs/npm/cjs_require_esm/__test__.jsonc
index b4e03afa3b7f71..a71173ce37b911 100644
--- a/tests/specs/npm/cjs_require_esm/__test__.jsonc
+++ b/tests/specs/npm/cjs_require_esm/__test__.jsonc
@@ -1,4 +1,4 @@
 {
-  "args": "run --allow-read --quiet cjs_require_esm/main.ts",
-  "output": "cjs_require_esm/main.out"
+  "args": "run --allow-read --quiet main.ts",
+  "output": "main.out"
 }
diff --git a/tests/specs/npm/cjs_require_esm_mjs/cjs_require_esm_mjs/main.out b/tests/specs/npm/cjs_require_esm/main.out
similarity index 64%
rename from tests/specs/npm/cjs_require_esm_mjs/cjs_require_esm_mjs/main.out
rename to tests/specs/npm/cjs_require_esm/main.out
index 4afceccc951504..842700f7982ad1 100644
--- a/tests/specs/npm/cjs_require_esm_mjs/cjs_require_esm_mjs/main.out
+++ b/tests/specs/npm/cjs_require_esm/main.out
@@ -1,4 +1,5 @@
 [Module: null prototype] {
   Test: [Module: null prototype] { Test: [class Test] },
-  default: { Test: [Module: null prototype] { Test: [class Test] } }
+  default: { Test: [Module: null prototype] { Test: [class Test] } },
+  "module.exports": { Test: [Module: null prototype] { Test: [class Test] } }
 }
diff --git a/tests/specs/npm/cjs_require_esm/cjs_require_esm/main.ts b/tests/specs/npm/cjs_require_esm/main.ts
similarity index 100%
rename from tests/specs/npm/cjs_require_esm/cjs_require_esm/main.ts
rename to tests/specs/npm/cjs_require_esm/main.ts
diff --git a/tests/specs/npm/cjs_require_esm_mjs/__test__.jsonc b/tests/specs/npm/cjs_require_esm_mjs/__test__.jsonc
index 6bcb382e8da57b..a71173ce37b911 100644
--- a/tests/specs/npm/cjs_require_esm_mjs/__test__.jsonc
+++ b/tests/specs/npm/cjs_require_esm_mjs/__test__.jsonc
@@ -1,4 +1,4 @@
 {
-  "args": "run --allow-read --quiet cjs_require_esm_mjs/main.ts",
-  "output": "cjs_require_esm_mjs/main.out"
+  "args": "run --allow-read --quiet main.ts",
+  "output": "main.out"
 }
diff --git a/tests/specs/npm/cjs_require_esm/cjs_require_esm/main.out b/tests/specs/npm/cjs_require_esm_mjs/main.out
similarity index 64%
rename from tests/specs/npm/cjs_require_esm/cjs_require_esm/main.out
rename to tests/specs/npm/cjs_require_esm_mjs/main.out
index 4afceccc951504..842700f7982ad1 100644
--- a/tests/specs/npm/cjs_require_esm/cjs_require_esm/main.out
+++ b/tests/specs/npm/cjs_require_esm_mjs/main.out
@@ -1,4 +1,5 @@
 [Module: null prototype] {
   Test: [Module: null prototype] { Test: [class Test] },
-  default: { Test: [Module: null prototype] { Test: [class Test] } }
+  default: { Test: [Module: null prototype] { Test: [class Test] } },
+  "module.exports": { Test: [Module: null prototype] { Test: [class Test] } }
 }
diff --git a/tests/specs/npm/cjs_require_esm_mjs/cjs_require_esm_mjs/main.ts b/tests/specs/npm/cjs_require_esm_mjs/main.ts
similarity index 100%
rename from tests/specs/npm/cjs_require_esm_mjs/cjs_require_esm_mjs/main.ts
rename to tests/specs/npm/cjs_require_esm_mjs/main.ts
diff --git a/tests/specs/npm/esm_import_cjs_default/main.out b/tests/specs/npm/esm_import_cjs_default/main.out
index 6528a68d7c2c0e..d6f1e65227c74e 100644
--- a/tests/specs/npm/esm_import_cjs_default/main.out
+++ b/tests/specs/npm/esm_import_cjs_default/main.out
@@ -21,11 +21,17 @@ Node esm importing node cjs
     named: [Function (anonymous)],
     MyClass: [class MyClass]
   },
+  "module.exports": {
+    default: [Function (anonymous)],
+    named: [Function (anonymous)],
+    MyClass: [class MyClass]
+  },
   named: [Function (anonymous)]
 }
 [Module: null prototype] {
   __esModule: true,
   default: { default: [Function (anonymous)], named: [Function (anonymous)] },
+  "module.exports": { default: [Function (anonymous)], named: [Function (anonymous)] },
   named: [Function (anonymous)]
 }
 ===========================
@@ -45,6 +51,11 @@ Deno esm importing node cjs
     named: [Function (anonymous)],
     MyClass: [class MyClass]
   },
+  "module.exports": {
+    default: [Function (anonymous)],
+    named: [Function (anonymous)],
+    MyClass: [class MyClass]
+  },
   named: [Function (anonymous)]
 }
 ===========================
diff --git a/tests/specs/npm/reserved_word_exports/__test__.jsonc b/tests/specs/npm/reserved_word_exports/__test__.jsonc
index 01d5974c38077c..5517e693d6ed29 100644
--- a/tests/specs/npm/reserved_word_exports/__test__.jsonc
+++ b/tests/specs/npm/reserved_word_exports/__test__.jsonc
@@ -1,4 +1,4 @@
 {
-  "args": "run reserved_word_exports/main.ts",
-  "output": "reserved_word_exports/main.out"
+  "args": "run main.ts",
+  "output": "main.out"
 }
diff --git a/tests/specs/npm/reserved_word_exports/reserved_word_exports/main.out b/tests/specs/npm/reserved_word_exports/main.out
similarity index 64%
rename from tests/specs/npm/reserved_word_exports/reserved_word_exports/main.out
rename to tests/specs/npm/reserved_word_exports/main.out
index 2a82194e37578d..b203c268e917e9 100644
--- a/tests/specs/npm/reserved_word_exports/reserved_word_exports/main.out
+++ b/tests/specs/npm/reserved_word_exports/main.out
@@ -111,6 +111,76 @@ Download http://localhost:4260/@denotest/reserved-word-exports/1.0.0.tgz
   let: "let",
   long: "long",
   mod: "mod",
+  "module.exports": {
+    abstract: "abstract",
+    arguments: "arguments",
+    async: "async",
+    await: "await",
+    boolean: "boolean",
+    break: "break",
+    byte: "byte",
+    case: "case",
+    catch: "catch",
+    char: "char",
+    class: "class",
+    const: "const",
+    continue: "continue",
+    debugger: "debugger",
+    default: "default",
+    delete: "delete",
+    do: "do",
+    double: "double",
+    else: "else",
+    enum: "enum",
+    eval: "eval",
+    export: "export",
+    extends: "extends",
+    false: "false",
+    final: "final",
+    finally: "finally",
+    float: "float",
+    for: "for",
+    function: "function",
+    get: "get",
+    goto: "goto",
+    if: "if",
+    implements: "implements",
+    import: "import",
+    in: "in",
+    instanceof: "instanceof",
+    int: "int",
+    interface: "interface",
+    let: "let",
+    long: "long",
+    mod: "mod",
+    native: "native",
+    new: "new",
+    null: "null",
+    package: "package",
+    private: "private",
+    protected: "protected",
+    public: "public",
+    return: "return",
+    set: "set",
+    short: "short",
+    static: "static",
+    super: "super",
+    switch: "switch",
+    synchronized: "synchronized",
+    this: "this",
+    throw: "throw",
+    throws: "throws",
+    transient: "transient",
+    true: "true",
+    try: "try",
+    typeof: "typeof",
+    var: "var",
+    void: "void",
+    volatile: "volatile",
+    while: "while",
+    with: "with",
+    yield: "yield"
+  },
   native: "native",
   new: "new",
   null: "null",
@@ -139,3 +209,7 @@ Download http://localhost:4260/@denotest/reserved-word-exports/1.0.0.tgz
   with: "with",
   yield: "yield"
 }
+[Module: null prototype] {
+  default: { "module.exports": 6 },
+  "module.exports": { "module.exports": 6 }
+}
diff --git a/tests/specs/npm/reserved_word_exports/reserved_word_exports/main.ts b/tests/specs/npm/reserved_word_exports/main.ts
similarity index 51%
rename from tests/specs/npm/reserved_word_exports/reserved_word_exports/main.ts
rename to tests/specs/npm/reserved_word_exports/main.ts
index 33cf183d366fed..2f3f2ffdb4c941 100644
--- a/tests/specs/npm/reserved_word_exports/reserved_word_exports/main.ts
+++ b/tests/specs/npm/reserved_word_exports/main.ts
@@ -1,3 +1,5 @@
 import * as exports from "npm:@denotest/reserved-word-exports";
+import * as moduleExports from "./module_exports.cjs";
 
 console.log(exports);
+console.log(moduleExports);
diff --git a/tests/specs/npm/reserved_word_exports/module_exports.cjs b/tests/specs/npm/reserved_word_exports/module_exports.cjs
new file mode 100644
index 00000000000000..fafb645f116abf
--- /dev/null
+++ b/tests/specs/npm/reserved_word_exports/module_exports.cjs
@@ -0,0 +1 @@
+module.exports["module.exports"] = 6;

From 69990482781c6702b66d7cea8e7048f5b96eb795 Mon Sep 17 00:00:00 2001
From: Nayeem Rahman <nayeemrmn99@gmail.com>
Date: Mon, 3 Mar 2025 16:57:25 +0000
Subject: [PATCH 052/115] fix: respect lockfile for multiple available jsr
 versions (#28375)

---
 Cargo.lock | 4 ++--
 Cargo.toml | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index ca7a9209f9e6dc..2d8a5b4a46e4dd 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2013,9 +2013,9 @@ dependencies = [
 
 [[package]]
 name = "deno_graph"
-version = "0.89.0"
+version = "0.89.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ca8039ee1325d0d5dd60765c55177dc16b904f2457185ca815829d1e83eb588"
+checksum = "0c38c64a94e1e7792aa6eab7b013a075d88b3e04387d2c1291ecc2934c930095"
 dependencies = [
  "async-trait",
  "capacity_builder 0.5.0",
diff --git a/Cargo.toml b/Cargo.toml
index c4efe4cb7a89bf..075b1ad4f63f14 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -56,7 +56,7 @@ deno_core = { version = "0.340.0" }
 deno_bench_util = { version = "0.187.0", path = "./bench_util" }
 deno_config = { version = "=0.50.0", features = ["workspace"] }
 deno_doc = "=0.169.0"
-deno_graph = "=0.89.0"
+deno_graph = "=0.89.1"
 deno_lint = "=0.74.0"
 deno_lockfile = "=0.24.0"
 deno_media_type = { version = "=0.2.6", features = ["module_specifier"] }

From bf060427b9dad39fdf0c549a756d892527c8d5b5 Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Mon, 3 Mar 2025 15:03:12 -0500
Subject: [PATCH 053/115] fix(node): require esm should prefer `module.exports`
 export (#28376)

---
 ext/node/polyfills/01_require.js                           | 7 +++++--
 tests/specs/node/require_esm_module_exports/__test__.jsonc | 4 ++++
 tests/specs/node/require_esm_module_exports/main.cjs       | 2 ++
 tests/specs/node/require_esm_module_exports/main.out       | 2 ++
 tests/specs/node/require_esm_module_exports/string.mjs     | 2 ++
 tests/specs/node/require_esm_module_exports/undefined.mjs  | 2 ++
 6 files changed, 17 insertions(+), 2 deletions(-)
 create mode 100644 tests/specs/node/require_esm_module_exports/__test__.jsonc
 create mode 100644 tests/specs/node/require_esm_module_exports/main.cjs
 create mode 100644 tests/specs/node/require_esm_module_exports/main.out
 create mode 100644 tests/specs/node/require_esm_module_exports/string.mjs
 create mode 100644 tests/specs/node/require_esm_module_exports/undefined.mjs

diff --git a/ext/node/polyfills/01_require.js b/ext/node/polyfills/01_require.js
index 3f7b806eeace8a..baaab0217b5b0d 100644
--- a/ext/node/polyfills/01_require.js
+++ b/ext/node/polyfills/01_require.js
@@ -1101,8 +1101,11 @@ function loadESMFromCJS(module, filename, code) {
     url.pathToFileURL(filename).toString(),
     code,
   );
-
-  module.exports = namespace;
+  if (ObjectHasOwn(namespace, "module.exports")) {
+    module.exports = namespace["module.exports"];
+  } else {
+    module.exports = namespace;
+  }
 }
 
 function stripBOM(content) {
diff --git a/tests/specs/node/require_esm_module_exports/__test__.jsonc b/tests/specs/node/require_esm_module_exports/__test__.jsonc
new file mode 100644
index 00000000000000..b04e77362d7650
--- /dev/null
+++ b/tests/specs/node/require_esm_module_exports/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+  "args": "run -A main.cjs",
+  "output": "main.out"
+}
diff --git a/tests/specs/node/require_esm_module_exports/main.cjs b/tests/specs/node/require_esm_module_exports/main.cjs
new file mode 100644
index 00000000000000..0be73dccc71dc0
--- /dev/null
+++ b/tests/specs/node/require_esm_module_exports/main.cjs
@@ -0,0 +1,2 @@
+console.log(require("./undefined.mjs"));
+console.log(require("./string.mjs"));
diff --git a/tests/specs/node/require_esm_module_exports/main.out b/tests/specs/node/require_esm_module_exports/main.out
new file mode 100644
index 00000000000000..0b976ef2748f71
--- /dev/null
+++ b/tests/specs/node/require_esm_module_exports/main.out
@@ -0,0 +1,2 @@
+undefined
+value
diff --git a/tests/specs/node/require_esm_module_exports/string.mjs b/tests/specs/node/require_esm_module_exports/string.mjs
new file mode 100644
index 00000000000000..86309e224aa27b
--- /dev/null
+++ b/tests/specs/node/require_esm_module_exports/string.mjs
@@ -0,0 +1,2 @@
+const value = "value";
+export { value as "module.exports" };
diff --git a/tests/specs/node/require_esm_module_exports/undefined.mjs b/tests/specs/node/require_esm_module_exports/undefined.mjs
new file mode 100644
index 00000000000000..6a654d94f1d699
--- /dev/null
+++ b/tests/specs/node/require_esm_module_exports/undefined.mjs
@@ -0,0 +1,2 @@
+const value = undefined;
+export { value as "module.exports" };

From 842a906295b8f015b12654ee226b39c4777c228f Mon Sep 17 00:00:00 2001
From: Marvin Hagemeister <marvin@deno.com>
Date: Mon, 3 Mar 2025 21:44:04 +0100
Subject: [PATCH 054/115] fix(unstable): lint plugin child combinator not
 working with groups (#28360)

Internally, we use a group node for array-like children, which is hidden
from the user. When we're asking for a parent of a node we need to take
group nodes into account and walk over them.

Fixes one issue reported in
https://github.com/denoland/deno/issues/28355
---
 cli/js/40_lint.js              | 9 ++++++++-
 cli/js/40_lint_selector.js     | 2 +-
 tests/unit/lint_plugin_test.ts | 6 ++++++
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/cli/js/40_lint.js b/cli/js/40_lint.js
index a64820c6d7d51f..98358eee3070fb 100644
--- a/cli/js/40_lint.js
+++ b/cli/js/40_lint.js
@@ -782,7 +782,14 @@ class MatchCtx {
    * @returns {number}
    */
   getParent(idx) {
-    return readParent(this.ctx.buf, idx);
+    const parent = readParent(this.ctx.buf, idx);
+
+    const parentType = readType(this.ctx.buf, parent);
+    if (parentType === AST_GROUP_TYPE) {
+      return readParent(this.ctx.buf, parent);
+    }
+
+    return parent;
   }
 
   /**
diff --git a/cli/js/40_lint_selector.js b/cli/js/40_lint_selector.js
index 77b7841855185d..d24440a72e5c3f 100644
--- a/cli/js/40_lint_selector.js
+++ b/cli/js/40_lint_selector.js
@@ -919,7 +919,7 @@ function matchDescendant(next) {
 function matchChild(next) {
   return (ctx, id) => {
     const parent = ctx.getParent(id);
-    if (parent < 0) return false;
+    if (parent === 0) return false;
 
     return next(ctx, parent);
   };
diff --git a/tests/unit/lint_plugin_test.ts b/tests/unit/lint_plugin_test.ts
index faa2b888495665..5dab1f20711222 100644
--- a/tests/unit/lint_plugin_test.ts
+++ b/tests/unit/lint_plugin_test.ts
@@ -154,6 +154,12 @@ Deno.test("Plugin - visitor child combinator", () => {
   );
   assertEquals(result[0].node.name, "foo");
 
+  result = testVisit(
+    "class Foo { foo = 2 }",
+    "ClassBody > PropertyDefinition",
+  );
+  assertEquals(result[0].node.type, "PropertyDefinition");
+
   result = testVisit(
     "if (false) foo; foo()",
     "IfStatement IfStatement",

From 1f6f56197995cd39cae7172b97d0ac4990eb9ee6 Mon Sep 17 00:00:00 2001
From: Marvin Hagemeister <marvin@deno.com>
Date: Tue, 4 Mar 2025 16:04:39 +0100
Subject: [PATCH 055/115] fix(unstable): lint plugin fix `:has()`,
 `:is/where/matches` and `:not()` selectors (#28348)

This PR adds support for `:has/:is/:where()` and `:not()`. The latter
was already present, but found a bunch of issues with it and I'd say
that it didn't really work before this PR.


Fixes https://github.com/denoland/deno/issues/28335
---
 cli/js/40_lint.js                 |  84 ++++++++++++++--
 cli/js/40_lint_selector.js        | 158 ++++++++++++++++++++++++++----
 cli/js/40_lint_types.d.ts         |  10 +-
 tests/unit/lint_plugin_test.ts    |  83 ++++++++++++++++
 tests/unit/lint_selectors_test.ts |  60 ++++++++++--
 5 files changed, 361 insertions(+), 34 deletions(-)

diff --git a/cli/js/40_lint.js b/cli/js/40_lint.js
index 98358eee3070fb..943b726f531ef3 100644
--- a/cli/js/40_lint.js
+++ b/cli/js/40_lint.js
@@ -82,6 +82,7 @@ const PropFlags = {
 /** @typedef {import("./40_lint_types.d.ts").LintState} LintState */
 /** @typedef {import("./40_lint_types.d.ts").TransformFn} TransformFn */
 /** @typedef {import("./40_lint_types.d.ts").MatchContext} MatchContext */
+/** @typedef {import("./40_lint_types.d.ts").MatcherFn} MatcherFn */
 
 /** @type {LintState} */
 const state = {
@@ -770,11 +771,15 @@ function getString(strTable, id) {
 
 /** @implements {MatchContext} */
 class MatchCtx {
+  parentLimitIdx = 0;
+
   /**
    * @param {AstContext} ctx
+   * @param {CancellationToken} cancellationToken
    */
-  constructor(ctx) {
+  constructor(ctx, cancellationToken) {
     this.ctx = ctx;
+    this.cancellationToken = cancellationToken;
   }
 
   /**
@@ -782,6 +787,7 @@ class MatchCtx {
    * @returns {number}
    */
   getParent(idx) {
+    if (idx === this.parentLimitIdx) return AST_IDX_INVALID;
     const parent = readParent(this.ctx.buf, idx);
 
     const parentType = readType(this.ctx.buf, parent);
@@ -953,13 +959,31 @@ class MatchCtx {
 
     return out;
   }
+
+  /**
+   * Used for `:has()` and `:not()`
+   * @param {MatcherFn[]} selectors
+   * @param {number} idx
+   * @returns {boolean}
+   */
+  subSelect(selectors, idx) {
+    const prevLimit = this.parentLimitIdx;
+    this.parentLimitIdx = idx;
+
+    try {
+      return subTraverse(this.ctx, selectors, idx, idx, this.cancellationToken);
+    } finally {
+      this.parentLimitIdx = prevLimit;
+    }
+  }
 }
 
 /**
  * @param {Uint8Array} buf
+ * @param {CancellationToken} token
  * @returns {AstContext}
  */
-function createAstContext(buf) {
+function createAstContext(buf, token) {
   /** @type {Map<number, string>} */
   const strTable = new Map();
 
@@ -1039,7 +1063,7 @@ function createAstContext(buf) {
     propByStr,
     matcher: /** @type {*} */ (null),
   };
-  ctx.matcher = new MatchCtx(ctx);
+  ctx.matcher = new MatchCtx(ctx, token);
 
   setNodeGetters(ctx);
 
@@ -1060,7 +1084,8 @@ const NOOP = (_node) => {};
  * @param {Uint8Array} serializedAst
  */
 export function runPluginsForFile(fileName, serializedAst) {
-  const ctx = createAstContext(serializedAst);
+  const token = new CancellationToken();
+  const ctx = createAstContext(serializedAst, token);
 
   /** @type {Map<string, CompiledVisitor["info"]>}>} */
   const bySelector = new Map();
@@ -1169,7 +1194,6 @@ export function runPluginsForFile(fileName, serializedAst) {
     visitors.push({ info, matcher });
   }
 
-  const token = new CancellationToken();
   // Traverse ast with all visitors at the same time to avoid traversing
   // multiple times.
   try {
@@ -1191,11 +1215,12 @@ export function runPluginsForFile(fileName, serializedAst) {
  * @param {CancellationToken} cancellationToken
  */
 function traverse(ctx, visitors, idx, cancellationToken) {
+  const { buf } = ctx;
+
   while (idx !== AST_IDX_INVALID) {
     if (cancellationToken.isCancellationRequested()) return;
 
-    const { buf } = ctx;
-    const nodeType = readType(ctx.buf, idx);
+    const nodeType = readType(buf, idx);
 
     /** @type {VisitorFn[] | null} */
     let exits = null;
@@ -1240,6 +1265,51 @@ function traverse(ctx, visitors, idx, cancellationToken) {
   }
 }
 
+/**
+ * Used for subqueries in `:has()` and `:not()`
+ * @param {AstContext} ctx
+ * @param {MatcherFn[]} selectors
+ * @param {number} rootIdx
+ * @param {number} idx
+ * @param {CancellationToken} cancellationToken
+ * @returns {boolean}
+ */
+function subTraverse(ctx, selectors, rootIdx, idx, cancellationToken) {
+  const { buf } = ctx;
+
+  while (idx > AST_IDX_INVALID) {
+    if (cancellationToken.isCancellationRequested()) return false;
+
+    const nodeType = readType(buf, idx);
+
+    if (nodeType !== AST_GROUP_TYPE) {
+      for (let i = 0; i < selectors.length; i++) {
+        const sel = selectors[i];
+
+        if (sel(ctx.matcher, idx)) {
+          return true;
+        }
+      }
+    }
+
+    const childIdx = readChild(buf, idx);
+    if (
+      childIdx > AST_IDX_INVALID &&
+      subTraverse(ctx, selectors, rootIdx, childIdx, cancellationToken)
+    ) {
+      return true;
+    }
+
+    if (idx === rootIdx) {
+      break;
+    }
+
+    idx = readNext(buf, idx);
+  }
+
+  return false;
+}
+
 /**
  * This is useful debugging helper to display the buffer's contents.
  * @param {AstContext} ctx
diff --git a/cli/js/40_lint_selector.js b/cli/js/40_lint_selector.js
index d24440a72e5c3f..b39ee2435a0a99 100644
--- a/cli/js/40_lint_selector.js
+++ b/cli/js/40_lint_selector.js
@@ -16,7 +16,6 @@
 /** @typedef {import("./40_lint_types.d.ts").Relation} SRelation */
 /** @typedef {import("./40_lint_types.d.ts").Selector} Selector */
 /** @typedef {import("./40_lint_types.d.ts").SelectorParseCtx} SelectorParseCtx */
-/** @typedef {import("./40_lint_types.d.ts").NextFn} NextFn */
 /** @typedef {import("./40_lint_types.d.ts").MatcherFn} MatcherFn */
 /** @typedef {import("./40_lint_types.d.ts").TransformFn} Transformer */
 
@@ -173,6 +172,31 @@ export class Lexer {
     }
   }
 
+  peek() {
+    const value = this.value;
+    const start = this.start;
+    const end = this.end;
+    const i = this.i;
+    const ch = this.ch;
+    const token = this.token;
+
+    this.next();
+
+    const result = {
+      token: this.token,
+      value: this.value,
+    };
+
+    this.vaue = value;
+    this.start = start;
+    this.end = end;
+    this.i = i;
+    this.ch = ch;
+    this.token = token;
+
+    return result;
+  }
+
   next() {
     this.value = "";
 
@@ -378,6 +402,7 @@ export const PSEUDO_NOT = 7;
 export const PSEUDO_FIRST_CHILD = 8;
 export const PSEUDO_LAST_CHILD = 9;
 export const FIELD_NODE = 10;
+export const PSEUDO_IS = 11;
 
 /**
  * Parse out all unique selectors of a selector list.
@@ -459,6 +484,19 @@ export function parseSelector(input, toElem, toAttr) {
           type: RELATION_NODE,
           op: BinOp.Space,
         });
+      } else if (lex.token === Token.Colon) {
+        const peeked = lex.peek();
+
+        if (
+          peeked.token === Token.Word &&
+          (peeked.value === "is" || peeked.value === "where" ||
+            peeked.value === "matches")
+        ) {
+          current.push({
+            type: RELATION_NODE,
+            op: BinOp.Space,
+          });
+        }
       }
 
       continue;
@@ -617,14 +655,26 @@ export function parseSelector(input, toElem, toAttr) {
 
           continue;
         }
-
-        case "has":
         case "where":
+        case "matches":
         case "is": {
           lex.next();
           lex.expect(Token.BraceOpen);
           lex.next();
 
+          current.push({
+            type: PSEUDO_IS,
+            selectors: [],
+          });
+          stack.push([]);
+
+          continue;
+        }
+        case "has": {
+          lex.next();
+          lex.expect(Token.BraceOpen);
+          lex.next();
+
           current.push({
             type: PSEUDO_HAS,
             selectors: [],
@@ -705,7 +755,10 @@ function popSelector(result, stack) {
 
     if (node.type === PSEUDO_NTH_CHILD) {
       node.of = sel;
-    } else if (node.type === PSEUDO_HAS || node.type === PSEUDO_NOT) {
+    } else if (
+      node.type === PSEUDO_HAS || node.type === PSEUDO_IS ||
+      node.type === PSEUDO_NOT
+    ) {
       node.selectors.push(sel);
     } else {
       throw new Error(`Multiple selectors not allowed here`);
@@ -769,8 +822,11 @@ export function compileSelector(selector) {
         fn = matchNthChild(node, fn);
         break;
       case PSEUDO_HAS:
-        // TODO(@marvinhagemeister)
-        throw new Error("TODO: :has");
+        fn = matchHas(node.selectors, fn);
+        break;
+      case PSEUDO_IS:
+        fn = matchIs(node.selectors, fn);
+        break;
       case PSEUDO_NOT:
         fn = matchNot(node.selectors, fn);
         break;
@@ -786,7 +842,7 @@ export function compileSelector(selector) {
 }
 
 /**
- * @param {NextFn} next
+ * @param {MatcherFn} next
  * @returns {MatcherFn}
  */
 function matchFirstChild(next) {
@@ -797,7 +853,7 @@ function matchFirstChild(next) {
 }
 
 /**
- * @param {NextFn} next
+ * @param {MatcherFn} next
  * @returns {MatcherFn}
  */
 function matchLastChild(next) {
@@ -829,7 +885,7 @@ function getNthAnB(node, i) {
 
 /**
  * @param {PseudoNthChild} node
- * @param {NextFn} next
+ * @param {MatcherFn} next
  * @returns {MatcherFn}
  */
 function matchNthChild(node, next) {
@@ -868,10 +924,10 @@ function matchNthChild(node, next) {
 
 /**
  * @param {Selector[]} selectors
- * @param {NextFn} next
+ * @param {MatcherFn} next
  * @returns {MatcherFn}
  */
-function matchNot(selectors, next) {
+function matchIs(selectors, next) {
   /** @type {MatcherFn[]} */
   const compiled = [];
 
@@ -882,18 +938,82 @@ function matchNot(selectors, next) {
 
   return (ctx, id) => {
     for (let i = 0; i < compiled.length; i++) {
-      const fn = compiled[i];
-      if (fn(ctx, id)) {
-        return false;
+      const sel = compiled[i];
+      if (sel(ctx, id)) return next(ctx, id);
+    }
+
+    return false;
+  };
+}
+
+/**
+ * @param {Selector[]} selectors
+ * @param {MatcherFn} next
+ * @returns {MatcherFn}
+ */
+function matchHas(selectors, next) {
+  /** @type {MatcherFn[]} */
+  const compiled = [];
+
+  for (let i = 0; i < selectors.length; i++) {
+    const sel = selectors[i];
+    compiled.push(compileSelector(sel));
+  }
+
+  /** @type {Map<number, boolean>} */
+  const cache = new Map();
+
+  return (ctx, id) => {
+    if (next(ctx, id)) {
+      const cached = cache.get(id);
+      if (cached !== undefined) return cached;
+
+      const match = ctx.subSelect(compiled, id);
+      cache.set(id, match);
+      if (match) {
+        return true;
       }
     }
 
-    return next(ctx, id);
+    return false;
+  };
+}
+
+/**
+ * @param {Selector[]} selectors
+ * @param {MatcherFn} next
+ * @returns {MatcherFn}
+ */
+function matchNot(selectors, next) {
+  /** @type {MatcherFn[]} */
+  const compiled = [];
+
+  for (let i = 0; i < selectors.length; i++) {
+    const sel = selectors[i];
+    compiled.push(compileSelector(sel));
+  }
+
+  /** @type {Map<number, boolean>} */
+  const cache = new Map();
+
+  return (ctx, id) => {
+    if (next(ctx, id)) {
+      const cached = cache.get(id);
+      if (cached !== undefined) return cached;
+
+      const match = ctx.subSelect(compiled, id);
+      cache.set(id, !match);
+      if (!match) {
+        return true;
+      }
+    }
+
+    return false;
   };
 }
 
 /**
- * @param {NextFn} next
+ * @param {MatcherFn} next
  * @returns {MatcherFn}
  */
 function matchDescendant(next) {
@@ -913,7 +1033,7 @@ function matchDescendant(next) {
 }
 
 /**
- * @param {NextFn} next
+ * @param {MatcherFn} next
  * @returns {MatcherFn}
  */
 function matchChild(next) {
@@ -926,7 +1046,7 @@ function matchChild(next) {
 }
 
 /**
- * @param {NextFn} next
+ * @param {MatcherFn} next
  * @returns {MatcherFn}
  */
 function matchAdjacent(next) {
@@ -942,7 +1062,7 @@ function matchAdjacent(next) {
 }
 
 /**
- * @param {NextFn} next
+ * @param {MatcherFn} next
  * @returns {MatcherFn}
  */
 function matchFollowing(next) {
diff --git a/cli/js/40_lint_types.d.ts b/cli/js/40_lint_types.d.ts
index f0e1cee0c9d57a..3d55773175a787 100644
--- a/cli/js/40_lint_types.d.ts
+++ b/cli/js/40_lint_types.d.ts
@@ -25,7 +25,7 @@ export interface LintState {
 export type VisitorFn = (node: unknown) => void;
 
 export interface CompiledVisitor {
-  matcher: (ctx: MatchContext, offset: number) => boolean;
+  matcher: MatcherFn;
   info: { enter: VisitorFn; exit: VisitorFn };
 }
 
@@ -68,6 +68,10 @@ export interface PseudoHas {
   type: 6;
   selectors: Selector[];
 }
+export interface PseudoIs {
+  type: 11;
+  selectors: Selector[];
+}
 export interface PseudoNot {
   type: 7;
   selectors: Selector[];
@@ -93,6 +97,7 @@ export type Selector = Array<
   | PseudoNthChild
   | PseudoNot
   | PseudoHas
+  | PseudoIs
   | PseudoFirstChild
   | PseudoLastChild
 >;
@@ -103,6 +108,8 @@ export interface SelectorParseCtx {
 }
 
 export interface MatchContext {
+  /** Used for `:has()` and `:not()` */
+  subSelect(selectors: MatcherFn[], idx: number): boolean;
   getFirstChild(id: number): number;
   getLastChild(id: number): number;
   getSiblings(id: number): number[];
@@ -112,7 +119,6 @@ export interface MatchContext {
   getAttrPathValue(id: number, propIds: number[], idx: number): unknown;
 }
 
-export type NextFn = (ctx: MatchContext, id: number) => boolean;
 export type MatcherFn = (ctx: MatchContext, id: number) => boolean;
 export type TransformFn = (value: string) => number;
 
diff --git a/tests/unit/lint_plugin_test.ts b/tests/unit/lint_plugin_test.ts
index 5dab1f20711222..399f1d51276f3c 100644
--- a/tests/unit/lint_plugin_test.ts
+++ b/tests/unit/lint_plugin_test.ts
@@ -361,6 +361,89 @@ Deno.test("Plugin - visitor :nth-child", () => {
   assertEquals(result[1].node.name, "foobar");
 });
 
+Deno.test("Plugin - visitor :has()", () => {
+  let result = testVisit(
+    "{ foo, bar }",
+    "BlockStatement:has(Identifier[name='bar'])",
+  );
+  assertEquals(result[0].node.type, "BlockStatement");
+
+  // Multiple sub queries
+  result = testVisit(
+    "{ foo, bar }",
+    "BlockStatement:has(CallExpression, Identifier[name='bar'])",
+  );
+  assertEquals(result[0].node.type, "BlockStatement");
+
+  // This should not match
+  result = testVisit(
+    "{ foo, bar }",
+    "BlockStatement:has(CallExpression, Identifier[name='baz'])",
+  );
+  assertEquals(result, []);
+
+  // Attr match
+  result = testVisit(
+    "{ foo, bar }",
+    "Identifier:has([name='bar'])",
+  );
+  assertEquals(result[0].node.type, "Identifier");
+  assertEquals(result[0].node.name, "bar");
+});
+
+Deno.test("Plugin - visitor :is()/:where()/:matches()", () => {
+  let result = testVisit(
+    "{ foo, bar }",
+    "BlockStatement :is(Identifier[name='bar'])",
+  );
+  assertEquals(result[0].node.type, "Identifier");
+  assertEquals(result[0].node.name, "bar");
+
+  result = testVisit(
+    "{ foo, bar }",
+    "BlockStatement :where(Identifier[name='bar'])",
+  );
+  assertEquals(result[0].node.type, "Identifier");
+  assertEquals(result[0].node.name, "bar");
+
+  result = testVisit(
+    "{ foo, bar }",
+    "BlockStatement :matches(Identifier[name='bar'])",
+  );
+  assertEquals(result[0].node.type, "Identifier");
+  assertEquals(result[0].node.name, "bar");
+});
+
+Deno.test("Plugin - visitor :not", () => {
+  let result = testVisit(
+    "{ foo, bar }",
+    "BlockStatement:not(Identifier[name='baz'])",
+  );
+  assertEquals(result[0].node.type, "BlockStatement");
+
+  // Multiple sub queries
+  result = testVisit(
+    "{ foo, bar }",
+    "BlockStatement:not(Identifier[name='baz'], CallExpression)",
+  );
+  assertEquals(result[0].node.type, "BlockStatement");
+
+  // This should not match
+  result = testVisit(
+    "{ foo, bar }",
+    "BlockStatement:not(CallExpression, Identifier)",
+  );
+  assertEquals(result, []);
+
+  // Attr match
+  result = testVisit(
+    "{ foo, bar }",
+    "Identifier:not([name='foo'])",
+  );
+  assertEquals(result[0].node.type, "Identifier");
+  assertEquals(result[0].node.name, "bar");
+});
+
 Deno.test("Plugin - Program", async (t) => {
   await testSnapshot(t, "", "Program");
 });
diff --git a/tests/unit/lint_selectors_test.ts b/tests/unit/lint_selectors_test.ts
index 9828343a79b0dd..566ee81e309fbe 100644
--- a/tests/unit/lint_selectors_test.ts
+++ b/tests/unit/lint_selectors_test.ts
@@ -11,6 +11,7 @@ import {
   parseSelector,
   PSEUDO_FIRST_CHILD,
   PSEUDO_HAS,
+  PSEUDO_IS,
   PSEUDO_LAST_CHILD,
   PSEUDO_NOT,
   PSEUDO_NTH_CHILD,
@@ -554,7 +555,7 @@ Deno.test("Parser - Pseudo nth-child", () => {
   assertThrows(() => testParse(":nth-child(2n - 1 foo)"));
 });
 
-Deno.test("Parser - Pseudo has/is/where", () => {
+Deno.test("Parser - Pseudo :has()", () => {
   assertEquals(testParse(":has(Foo:has(Foo), Bar)"), [[
     {
       type: PSEUDO_HAS,
@@ -574,14 +575,36 @@ Deno.test("Parser - Pseudo has/is/where", () => {
       ],
     },
   ]]);
+});
+
+Deno.test("Parser - Pseudo :is()/:where()/:matches()", () => {
+  assertEquals(testParse(":is(Foo:is(Foo), Bar)"), [[
+    {
+      type: PSEUDO_IS,
+      selectors: [
+        [
+          { type: ELEM_NODE, elem: 1, wildcard: false },
+          {
+            type: PSEUDO_IS,
+            selectors: [
+              [{ type: ELEM_NODE, elem: 1, wildcard: false }],
+            ],
+          },
+        ],
+        [
+          { type: ELEM_NODE, elem: 2, wildcard: false },
+        ],
+      ],
+    },
+  ]]);
   assertEquals(testParse(":where(Foo:where(Foo), Bar)"), [[
     {
-      type: PSEUDO_HAS,
+      type: PSEUDO_IS,
       selectors: [
         [
           { type: ELEM_NODE, elem: 1, wildcard: false },
           {
-            type: PSEUDO_HAS,
+            type: PSEUDO_IS,
             selectors: [
               [{ type: ELEM_NODE, elem: 1, wildcard: false }],
             ],
@@ -593,14 +616,14 @@ Deno.test("Parser - Pseudo has/is/where", () => {
       ],
     },
   ]]);
-  assertEquals(testParse(":is(Foo:is(Foo), Bar)"), [[
+  assertEquals(testParse(":matches(Foo:matches(Foo), Bar)"), [[
     {
-      type: PSEUDO_HAS,
+      type: PSEUDO_IS,
       selectors: [
         [
           { type: ELEM_NODE, elem: 1, wildcard: false },
           {
-            type: PSEUDO_HAS,
+            type: PSEUDO_IS,
             selectors: [
               [{ type: ELEM_NODE, elem: 1, wildcard: false }],
             ],
@@ -612,6 +635,31 @@ Deno.test("Parser - Pseudo has/is/where", () => {
       ],
     },
   ]]);
+
+  assertEquals(testParse("Foo:is(Bar)"), [[
+    { type: ELEM_NODE, elem: 1, wildcard: false },
+    {
+      type: PSEUDO_IS,
+      selectors: [
+        [
+          { type: ELEM_NODE, elem: 2, wildcard: false },
+        ],
+      ],
+    },
+  ]]);
+
+  assertEquals(testParse("Foo :is(Bar)"), [[
+    { type: ELEM_NODE, elem: 1, wildcard: false },
+    { type: RELATION_NODE, op: BinOp.Space },
+    {
+      type: PSEUDO_IS,
+      selectors: [
+        [
+          { type: ELEM_NODE, elem: 2, wildcard: false },
+        ],
+      ],
+    },
+  ]]);
 });
 
 Deno.test("Parser - Pseudo not", () => {

From 25a9d1c74f435244cc8b5e4d046a551e13583b10 Mon Sep 17 00:00:00 2001
From: Nayeem Rahman <nayeemrmn99@gmail.com>
Date: Tue, 4 Mar 2025 16:28:19 +0000
Subject: [PATCH 056/115] perf(lsp): register semantic tokens provider upon
 opening enabled doc (#28384)

---
 cli/lsp/capabilities.rs    | 89 ++++++++++++++++++++++----------------
 cli/lsp/language_server.rs | 60 ++++++++++++++++++++++++-
 2 files changed, 111 insertions(+), 38 deletions(-)

diff --git a/cli/lsp/capabilities.rs b/cli/lsp/capabilities.rs
index 9519822c660bb1..9755ea033236f4 100644
--- a/cli/lsp/capabilities.rs
+++ b/cli/lsp/capabilities.rs
@@ -37,6 +37,43 @@ fn code_action_capabilities(
     .unwrap_or(CodeActionProviderCapability::Simple(true))
 }
 
+pub fn semantic_tokens_registration_options(
+) -> SemanticTokensRegistrationOptions {
+  SemanticTokensRegistrationOptions {
+    text_document_registration_options: TextDocumentRegistrationOptions {
+      document_selector: Some(vec![
+        DocumentFilter {
+          language: Some("javascript".to_string()),
+          scheme: None,
+          pattern: None,
+        },
+        DocumentFilter {
+          language: Some("javascriptreact".to_string()),
+          scheme: None,
+          pattern: None,
+        },
+        DocumentFilter {
+          language: Some("typescript".to_string()),
+          scheme: None,
+          pattern: None,
+        },
+        DocumentFilter {
+          language: Some("typescriptreact".to_string()),
+          scheme: None,
+          pattern: None,
+        },
+      ]),
+    },
+    semantic_tokens_options: SemanticTokensOptions {
+      legend: get_legend(),
+      range: Some(true),
+      full: Some(SemanticTokensFullOptions::Bool(true)),
+      ..Default::default()
+    },
+    static_registration_options: Default::default(),
+  }
+}
+
 pub fn server_capabilities(
   client_capabilities: &ClientCapabilities,
 ) -> ServerCapabilities {
@@ -126,43 +163,21 @@ pub fn server_capabilities(
       ..Default::default()
     }),
     call_hierarchy_provider: Some(CallHierarchyServerCapability::Simple(true)),
-    semantic_tokens_provider: Some(
-      SemanticTokensServerCapabilities::SemanticTokensRegistrationOptions(
-        SemanticTokensRegistrationOptions {
-          text_document_registration_options: TextDocumentRegistrationOptions {
-            document_selector: Some(vec![
-              DocumentFilter {
-                language: Some("javascript".to_string()),
-                scheme: None,
-                pattern: None,
-              },
-              DocumentFilter {
-                language: Some("javascriptreact".to_string()),
-                scheme: None,
-                pattern: None,
-              },
-              DocumentFilter {
-                language: Some("typescript".to_string()),
-                scheme: None,
-                pattern: None,
-              },
-              DocumentFilter {
-                language: Some("typescriptreact".to_string()),
-                scheme: None,
-                pattern: None,
-              },
-            ]),
-          },
-          semantic_tokens_options: SemanticTokensOptions {
-            legend: get_legend(),
-            range: Some(true),
-            full: Some(SemanticTokensFullOptions::Bool(true)),
-            ..Default::default()
-          },
-          static_registration_options: Default::default(),
-        },
-      ),
-    ),
+    semantic_tokens_provider: if client_capabilities
+      .text_document
+      .as_ref()
+      .and_then(|t| t.semantic_tokens.as_ref())
+      .and_then(|s| s.dynamic_registration)
+      .unwrap_or_default()
+    {
+      None
+    } else {
+      Some(
+        SemanticTokensServerCapabilities::SemanticTokensRegistrationOptions(
+          semantic_tokens_registration_options(),
+        ),
+      )
+    },
     workspace: Some(WorkspaceServerCapabilities {
       workspace_folders: Some(WorkspaceFoldersServerCapabilities {
         supported: Some(true),
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index 3c6c20cc50d240..d39049f654f04d 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -57,6 +57,7 @@ use super::analysis::CodeActionData;
 use super::analysis::TsResponseImportMapper;
 use super::cache::LspCache;
 use super::capabilities;
+use super::capabilities::semantic_tokens_registration_options;
 use super::client::Client;
 use super::code_lens;
 use super::completions;
@@ -209,6 +210,7 @@ pub struct Inner {
   project_version: usize,
   /// A collection of measurements which instrument that performance of the LSP.
   performance: Arc<Performance>,
+  registered_semantic_tokens_capabilities: bool,
   pub resolver: Arc<LspResolver>,
   task_queue: LanguageServerTaskQueue,
   /// A memoized version of fixable diagnostic codes retrieved from TypeScript.
@@ -512,6 +514,7 @@ impl Inner {
       module_registry,
       npm_search_api,
       performance,
+      registered_semantic_tokens_capabilities: false,
       resolver: Default::default(),
       ts_fixable_diagnostics: Default::default(),
       ts_server,
@@ -721,6 +724,55 @@ impl Inner {
     let internal_debug = self.config.workspace_settings().internal_debug;
     super::logging::set_lsp_debug_flag(internal_debug)
   }
+
+  pub fn check_semantic_tokens_capabilities(&mut self) {
+    if self.registered_semantic_tokens_capabilities {
+      return;
+    }
+    if !self
+      .config
+      .client_capabilities
+      .text_document
+      .as_ref()
+      .and_then(|t| t.semantic_tokens.as_ref())
+      .and_then(|s| s.dynamic_registration)
+      .unwrap_or_default()
+    {
+      return;
+    }
+    let exists_enabled_document = self
+      .documents
+      .documents(DocumentsFilter::OpenDiagnosable)
+      .into_iter()
+      .any(|doc| {
+        doc.maybe_language_id().is_some_and(|l| {
+          matches!(
+            l,
+            LanguageId::JavaScript
+              | LanguageId::Jsx
+              | LanguageId::TypeScript
+              | LanguageId::Tsx
+          )
+        }) && self.config.specifier_enabled(doc.specifier())
+      });
+    if !exists_enabled_document {
+      return;
+    }
+    self.task_queue.queue_task(Box::new(|ls| {
+      spawn(async move {
+        let register_options =
+          serde_json::to_value(semantic_tokens_registration_options()).unwrap();
+        ls.client.when_outside_lsp_lock().register_capability(vec![Registration {
+          id: "textDocument/semanticTokens".to_string(),
+          method: "textDocument/semanticTokens".to_string(),
+          register_options: Some(register_options.clone()),
+        }]).await.inspect_err(|err| {
+          lsp_warn!("Couldn't register capability for \"textDocument/semanticTokens\": {err}");
+        }).ok();
+      });
+    }));
+    self.registered_semantic_tokens_capabilities = true;
+  }
 }
 
 // lspower::LanguageServer methods. This file's LanguageServer delegates to us.
@@ -830,6 +882,10 @@ impl Inner {
       self.ts_fixable_diagnostics = fixable_diagnostics;
     }
 
+    if capabilities.semantic_tokens_provider.is_some() {
+      self.registered_semantic_tokens_capabilities = true;
+    }
+
     self.performance.measure(mark);
     Ok(InitializeResult {
       capabilities,
@@ -1123,6 +1179,7 @@ impl Inner {
       file_referrer,
     );
     if document.is_diagnosable() {
+      self.check_semantic_tokens_capabilities();
       self.project_changed([(document.specifier(), ChangeKind::Opened)], false);
       self.refresh_dep_info().await;
       self.diagnostics_server.invalidate(&[specifier]);
@@ -1256,6 +1313,7 @@ impl Inner {
     };
     // TODO(nathanwhit): allow updating after startup, needs work to set thread local collector on tsc thread
     // self.update_tracing();
+    self.check_semantic_tokens_capabilities();
     self.update_debug_flag();
     self.update_global_cache().await;
     self.refresh_workspace_files();
@@ -4438,7 +4496,7 @@ impl Inner {
 "#,
         serde_json::to_string_pretty(&workspace_settings)
           .inspect_err(|e| {
-            dbg!(e);
+            lsp_warn!("{e}");
           })
           .unwrap(),
         documents_specifiers.len(),

From d91402ae2073d10698e0b82df22fdf3d5c5ab09f Mon Sep 17 00:00:00 2001
From: denobot <33910674+denobot@users.noreply.github.com>
Date: Wed, 5 Mar 2025 00:57:04 -0500
Subject: [PATCH 057/115] chore: forward v2.2.3 release commit to main (#28391)

This is the release commit being forwarded back to main for 2.2.3

Co-authored-by: littledivy <littledivy@users.noreply.github.com>
---
 .github/workflows/ci.generate.ts |  2 +-
 .github/workflows/ci.yml         |  8 ++--
 Cargo.lock                       | 72 ++++++++++++++++----------------
 Cargo.toml                       | 68 +++++++++++++++---------------
 Releases.md                      | 33 +++++++++++++++
 bench_util/Cargo.toml            |  2 +-
 cli/Cargo.toml                   |  2 +-
 cli/lib/Cargo.toml               |  2 +-
 cli/lib/version.txt              |  2 +-
 cli/rt/Cargo.toml                |  2 +-
 cli/snapshot/Cargo.toml          |  2 +-
 ext/broadcast_channel/Cargo.toml |  2 +-
 ext/cache/Cargo.toml             |  2 +-
 ext/canvas/Cargo.toml            |  2 +-
 ext/console/Cargo.toml           |  2 +-
 ext/cron/Cargo.toml              |  2 +-
 ext/crypto/Cargo.toml            |  2 +-
 ext/fetch/Cargo.toml             |  2 +-
 ext/ffi/Cargo.toml               |  2 +-
 ext/fs/Cargo.toml                |  2 +-
 ext/http/Cargo.toml              |  2 +-
 ext/io/Cargo.toml                |  2 +-
 ext/kv/Cargo.toml                |  2 +-
 ext/napi/Cargo.toml              |  2 +-
 ext/napi/sym/Cargo.toml          |  2 +-
 ext/net/Cargo.toml               |  2 +-
 ext/node/Cargo.toml              |  2 +-
 ext/os/Cargo.toml                |  2 +-
 ext/process/Cargo.toml           |  2 +-
 ext/telemetry/Cargo.toml         |  2 +-
 ext/tls/Cargo.toml               |  2 +-
 ext/url/Cargo.toml               |  2 +-
 ext/web/Cargo.toml               |  2 +-
 ext/webgpu/Cargo.toml            |  2 +-
 ext/webidl/Cargo.toml            |  2 +-
 ext/websocket/Cargo.toml         |  2 +-
 ext/webstorage/Cargo.toml        |  2 +-
 resolvers/deno/Cargo.toml        |  2 +-
 resolvers/node/Cargo.toml        |  2 +-
 resolvers/npm_cache/Cargo.toml   |  2 +-
 runtime/Cargo.toml               |  2 +-
 runtime/permissions/Cargo.toml   |  2 +-
 42 files changed, 145 insertions(+), 112 deletions(-)

diff --git a/.github/workflows/ci.generate.ts b/.github/workflows/ci.generate.ts
index 381e8739d74c23..72a0489ce5b44b 100755
--- a/.github/workflows/ci.generate.ts
+++ b/.github/workflows/ci.generate.ts
@@ -5,7 +5,7 @@ import { stringify } from "jsr:@std/yaml@^0.221/stringify";
 // Bump this number when you want to purge the cache.
 // Note: the tools/release/01_bump_crate_versions.ts script will update this version
 // automatically via regex, so ensure that this line maintains this format.
-const cacheVersion = 43;
+const cacheVersion = 44;
 
 const ubuntuX86Runner = "ubuntu-24.04";
 const ubuntuX86XlRunner = "ubuntu-24.04-xl";
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 8082c606f24f7b..d369ef45da0421 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -184,8 +184,8 @@ jobs:
             ~/.cargo/registry/index
             ~/.cargo/registry/cache
             ~/.cargo/git/db
-          key: '43-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-${{ hashFiles(''Cargo.lock'') }}'
-          restore-keys: '43-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-'
+          key: '44-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-${{ hashFiles(''Cargo.lock'') }}'
+          restore-keys: '44-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-'
         if: '!(matrix.skip)'
       - uses: dsherret/rust-toolchain-file@v1
         if: '!(matrix.skip)'
@@ -381,7 +381,7 @@ jobs:
             !./target/*/*.zip
             !./target/*/*.tar.gz
           key: never_saved
-          restore-keys: '43-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-'
+          restore-keys: '44-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-'
       - name: Apply and update mtime cache
         if: '!(matrix.skip) && (!startsWith(github.ref, ''refs/tags/''))'
         uses: ./.github/mtime_cache
@@ -699,7 +699,7 @@ jobs:
             !./target/*/gn_root
             !./target/*/*.zip
             !./target/*/*.tar.gz
-          key: '43-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-${{ github.sha }}'
+          key: '44-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-${{ github.sha }}'
   wasm:
     name: build wasm32
     needs:
diff --git a/Cargo.lock b/Cargo.lock
index 2d8a5b4a46e4dd..946a26108d39fd 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1473,7 +1473,7 @@ dependencies = [
 
 [[package]]
 name = "deno"
-version = "2.2.2"
+version = "2.2.3"
 dependencies = [
  "anstream",
  "async-trait",
@@ -1655,7 +1655,7 @@ dependencies = [
 
 [[package]]
 name = "deno_bench_util"
-version = "0.187.0"
+version = "0.188.0"
 dependencies = [
  "bencher",
  "deno_core",
@@ -1664,7 +1664,7 @@ dependencies = [
 
 [[package]]
 name = "deno_broadcast_channel"
-version = "0.187.0"
+version = "0.188.0"
 dependencies = [
  "async-trait",
  "deno_core",
@@ -1676,7 +1676,7 @@ dependencies = [
 
 [[package]]
 name = "deno_cache"
-version = "0.125.0"
+version = "0.126.0"
 dependencies = [
  "async-stream",
  "async-trait",
@@ -1732,7 +1732,7 @@ dependencies = [
 
 [[package]]
 name = "deno_canvas"
-version = "0.62.0"
+version = "0.63.0"
 dependencies = [
  "bytemuck",
  "deno_core",
@@ -1772,7 +1772,7 @@ dependencies = [
 
 [[package]]
 name = "deno_console"
-version = "0.193.0"
+version = "0.194.0"
 dependencies = [
  "deno_core",
 ]
@@ -1824,7 +1824,7 @@ checksum = "fe4dccb6147bb3f3ba0c7a48e993bfeb999d2c2e47a81badee80e2b370c8d695"
 
 [[package]]
 name = "deno_cron"
-version = "0.73.0"
+version = "0.74.0"
 dependencies = [
  "async-trait",
  "chrono",
@@ -1837,7 +1837,7 @@ dependencies = [
 
 [[package]]
 name = "deno_crypto"
-version = "0.207.0"
+version = "0.208.0"
 dependencies = [
  "aes",
  "aes-gcm",
@@ -1928,7 +1928,7 @@ dependencies = [
 
 [[package]]
 name = "deno_fetch"
-version = "0.217.0"
+version = "0.218.0"
 dependencies = [
  "base64 0.21.7",
  "bytes",
@@ -1966,7 +1966,7 @@ dependencies = [
 
 [[package]]
 name = "deno_ffi"
-version = "0.180.0"
+version = "0.181.0"
 dependencies = [
  "cranelift",
  "cranelift-native",
@@ -1989,7 +1989,7 @@ dependencies = [
 
 [[package]]
 name = "deno_fs"
-version = "0.103.0"
+version = "0.104.0"
 dependencies = [
  "async-trait",
  "base32",
@@ -2047,7 +2047,7 @@ dependencies = [
 
 [[package]]
 name = "deno_http"
-version = "0.191.0"
+version = "0.192.0"
 dependencies = [
  "async-compression",
  "async-trait",
@@ -2088,7 +2088,7 @@ dependencies = [
 
 [[package]]
 name = "deno_io"
-version = "0.103.0"
+version = "0.104.0"
 dependencies = [
  "async-trait",
  "deno_core",
@@ -2110,7 +2110,7 @@ dependencies = [
 
 [[package]]
 name = "deno_kv"
-version = "0.101.0"
+version = "0.102.0"
 dependencies = [
  "anyhow",
  "async-trait",
@@ -2141,7 +2141,7 @@ dependencies = [
 
 [[package]]
 name = "deno_lib"
-version = "0.9.0"
+version = "0.10.0"
 dependencies = [
  "capacity_builder 0.5.0",
  "deno_error",
@@ -2214,7 +2214,7 @@ dependencies = [
 
 [[package]]
 name = "deno_napi"
-version = "0.124.0"
+version = "0.125.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2243,7 +2243,7 @@ dependencies = [
 
 [[package]]
 name = "deno_net"
-version = "0.185.0"
+version = "0.186.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2265,7 +2265,7 @@ dependencies = [
 
 [[package]]
 name = "deno_node"
-version = "0.131.0"
+version = "0.132.0"
 dependencies = [
  "aead-gcm-stream",
  "aes",
@@ -2372,7 +2372,7 @@ dependencies = [
 
 [[package]]
 name = "deno_npm_cache"
-version = "0.12.0"
+version = "0.13.0"
 dependencies = [
  "async-trait",
  "base64 0.21.7",
@@ -2419,7 +2419,7 @@ dependencies = [
 
 [[package]]
 name = "deno_os"
-version = "0.10.0"
+version = "0.11.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2471,7 +2471,7 @@ dependencies = [
 
 [[package]]
 name = "deno_permissions"
-version = "0.52.0"
+version = "0.53.0"
 dependencies = [
  "capacity_builder 0.5.0",
  "deno_core",
@@ -2491,7 +2491,7 @@ dependencies = [
 
 [[package]]
 name = "deno_process"
-version = "0.8.0"
+version = "0.9.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2518,7 +2518,7 @@ dependencies = [
 
 [[package]]
 name = "deno_resolver"
-version = "0.24.0"
+version = "0.25.0"
 dependencies = [
  "anyhow",
  "async-once-cell",
@@ -2552,7 +2552,7 @@ dependencies = [
 
 [[package]]
 name = "deno_runtime"
-version = "0.201.0"
+version = "0.202.0"
 dependencies = [
  "color-print",
  "deno_ast",
@@ -2633,7 +2633,7 @@ dependencies = [
 
 [[package]]
 name = "deno_snapshots"
-version = "0.8.0"
+version = "0.9.0"
 dependencies = [
  "deno_runtime",
 ]
@@ -2658,7 +2658,7 @@ dependencies = [
 
 [[package]]
 name = "deno_telemetry"
-version = "0.15.0"
+version = "0.16.0"
 dependencies = [
  "async-trait",
  "deno_core",
@@ -2703,7 +2703,7 @@ dependencies = [
 
 [[package]]
 name = "deno_tls"
-version = "0.180.0"
+version = "0.181.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2754,7 +2754,7 @@ dependencies = [
 
 [[package]]
 name = "deno_url"
-version = "0.193.0"
+version = "0.194.0"
 dependencies = [
  "deno_bench_util",
  "deno_console",
@@ -2766,7 +2766,7 @@ dependencies = [
 
 [[package]]
 name = "deno_web"
-version = "0.224.0"
+version = "0.225.0"
 dependencies = [
  "async-trait",
  "base64-simd 0.8.0",
@@ -2789,7 +2789,7 @@ dependencies = [
 
 [[package]]
 name = "deno_webgpu"
-version = "0.160.0"
+version = "0.161.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2806,7 +2806,7 @@ dependencies = [
 
 [[package]]
 name = "deno_webidl"
-version = "0.193.0"
+version = "0.194.0"
 dependencies = [
  "deno_bench_util",
  "deno_core",
@@ -2814,7 +2814,7 @@ dependencies = [
 
 [[package]]
 name = "deno_websocket"
-version = "0.198.0"
+version = "0.199.0"
 dependencies = [
  "bytes",
  "deno_core",
@@ -2837,7 +2837,7 @@ dependencies = [
 
 [[package]]
 name = "deno_webstorage"
-version = "0.188.0"
+version = "0.189.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2924,7 +2924,7 @@ dependencies = [
 
 [[package]]
 name = "denort"
-version = "2.2.2"
+version = "2.2.3"
 dependencies = [
  "async-trait",
  "bincode",
@@ -5489,7 +5489,7 @@ dependencies = [
 
 [[package]]
 name = "napi_sym"
-version = "0.123.0"
+version = "0.124.0"
 dependencies = [
  "quote",
  "serde",
@@ -5544,7 +5544,7 @@ dependencies = [
 
 [[package]]
 name = "node_resolver"
-version = "0.31.0"
+version = "0.32.0"
 dependencies = [
  "anyhow",
  "async-trait",
diff --git a/Cargo.toml b/Cargo.toml
index 075b1ad4f63f14..96b0af96aa4865 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -53,7 +53,7 @@ repository = "https://github.com/denoland/deno"
 deno_ast = { version = "=0.46.0", features = ["transpiling"] }
 deno_core = { version = "0.340.0" }
 
-deno_bench_util = { version = "0.187.0", path = "./bench_util" }
+deno_bench_util = { version = "0.188.0", path = "./bench_util" }
 deno_config = { version = "=0.50.0", features = ["workspace"] }
 deno_doc = "=0.169.0"
 deno_graph = "=0.89.1"
@@ -62,11 +62,11 @@ deno_lockfile = "=0.24.0"
 deno_media_type = { version = "=0.2.6", features = ["module_specifier"] }
 deno_npm = "=0.27.2"
 deno_path_util = "=0.3.2"
-deno_permissions = { version = "0.52.0", path = "./runtime/permissions" }
-deno_runtime = { version = "0.201.0", path = "./runtime" }
+deno_permissions = { version = "0.53.0", path = "./runtime/permissions" }
+deno_runtime = { version = "0.202.0", path = "./runtime" }
 deno_semver = "=0.7.1"
 deno_terminal = "0.2.0"
-napi_sym = { version = "0.123.0", path = "./ext/napi/sym" }
+napi_sym = { version = "0.124.0", path = "./ext/napi/sym" }
 test_util = { package = "test_server", path = "./tests/util/server" }
 
 denokv_proto = "0.9.0"
@@ -75,38 +75,38 @@ denokv_remote = "0.9.0"
 denokv_sqlite = { default-features = false, version = "0.9.0" }
 
 # exts
-deno_broadcast_channel = { version = "0.187.0", path = "./ext/broadcast_channel" }
-deno_cache = { version = "0.125.0", path = "./ext/cache" }
-deno_canvas = { version = "0.62.0", path = "./ext/canvas" }
-deno_console = { version = "0.193.0", path = "./ext/console" }
-deno_cron = { version = "0.73.0", path = "./ext/cron" }
-deno_crypto = { version = "0.207.0", path = "./ext/crypto" }
-deno_fetch = { version = "0.217.0", path = "./ext/fetch" }
-deno_ffi = { version = "0.180.0", path = "./ext/ffi" }
-deno_fs = { version = "0.103.0", path = "./ext/fs" }
-deno_http = { version = "0.191.0", path = "./ext/http" }
-deno_io = { version = "0.103.0", path = "./ext/io" }
-deno_kv = { version = "0.101.0", path = "./ext/kv" }
-deno_napi = { version = "0.124.0", path = "./ext/napi" }
-deno_net = { version = "0.185.0", path = "./ext/net" }
-deno_node = { version = "0.131.0", path = "./ext/node" }
-deno_os = { version = "0.10.0", path = "./ext/os" }
-deno_process = { version = "0.8.0", path = "./ext/process" }
-deno_telemetry = { version = "0.15.0", path = "./ext/telemetry" }
-deno_tls = { version = "0.180.0", path = "./ext/tls" }
-deno_url = { version = "0.193.0", path = "./ext/url" }
-deno_web = { version = "0.224.0", path = "./ext/web" }
-deno_webgpu = { version = "0.160.0", path = "./ext/webgpu" }
-deno_webidl = { version = "0.193.0", path = "./ext/webidl" }
-deno_websocket = { version = "0.198.0", path = "./ext/websocket" }
-deno_webstorage = { version = "0.188.0", path = "./ext/webstorage" }
+deno_broadcast_channel = { version = "0.188.0", path = "./ext/broadcast_channel" }
+deno_cache = { version = "0.126.0", path = "./ext/cache" }
+deno_canvas = { version = "0.63.0", path = "./ext/canvas" }
+deno_console = { version = "0.194.0", path = "./ext/console" }
+deno_cron = { version = "0.74.0", path = "./ext/cron" }
+deno_crypto = { version = "0.208.0", path = "./ext/crypto" }
+deno_fetch = { version = "0.218.0", path = "./ext/fetch" }
+deno_ffi = { version = "0.181.0", path = "./ext/ffi" }
+deno_fs = { version = "0.104.0", path = "./ext/fs" }
+deno_http = { version = "0.192.0", path = "./ext/http" }
+deno_io = { version = "0.104.0", path = "./ext/io" }
+deno_kv = { version = "0.102.0", path = "./ext/kv" }
+deno_napi = { version = "0.125.0", path = "./ext/napi" }
+deno_net = { version = "0.186.0", path = "./ext/net" }
+deno_node = { version = "0.132.0", path = "./ext/node" }
+deno_os = { version = "0.11.0", path = "./ext/os" }
+deno_process = { version = "0.9.0", path = "./ext/process" }
+deno_telemetry = { version = "0.16.0", path = "./ext/telemetry" }
+deno_tls = { version = "0.181.0", path = "./ext/tls" }
+deno_url = { version = "0.194.0", path = "./ext/url" }
+deno_web = { version = "0.225.0", path = "./ext/web" }
+deno_webgpu = { version = "0.161.0", path = "./ext/webgpu" }
+deno_webidl = { version = "0.194.0", path = "./ext/webidl" }
+deno_websocket = { version = "0.199.0", path = "./ext/websocket" }
+deno_webstorage = { version = "0.189.0", path = "./ext/webstorage" }
 
 # workspace libraries
-deno_lib = { version = "0.9.0", path = "./cli/lib" }
-deno_npm_cache = { version = "0.12.0", path = "./resolvers/npm_cache" }
-deno_resolver = { version = "0.24.0", path = "./resolvers/deno" }
-deno_snapshots = { version = "0.8.0", path = "./cli/snapshot" }
-node_resolver = { version = "0.31.0", path = "./resolvers/node" }
+deno_lib = { version = "0.10.0", path = "./cli/lib" }
+deno_npm_cache = { version = "0.13.0", path = "./resolvers/npm_cache" }
+deno_resolver = { version = "0.25.0", path = "./resolvers/deno" }
+deno_snapshots = { version = "0.9.0", path = "./cli/snapshot" }
+node_resolver = { version = "0.32.0", path = "./resolvers/node" }
 
 aead-gcm-stream = "0.4"
 aes = "=0.8.3"
diff --git a/Releases.md b/Releases.md
index d6e52a345ffaf9..ee309d4419901e 100644
--- a/Releases.md
+++ b/Releases.md
@@ -6,6 +6,39 @@ https://github.com/denoland/deno/releases
 We also have one-line install commands at:
 https://github.com/denoland/deno_install
 
+### 2.2.3 / 2025.03.05
+
+- feat(unstable): lint plugins support field selectors (#28324)
+- fix(add): better help text for --dev arg (#28304)
+- fix(check/npm): move not found errors inside npm packages to tsc diagnostics
+  (#28337)
+- fix(ext/node): SQLite reset guards to prevent database locks (#28298)
+- fix(ext/node): node compatibility issue missing fd in createServer callback
+  socket object (#27789)
+- fix(fmt/md): handle callout followed by non-text (#28333)
+- fix(lint): run with --no-prompt (#28305)
+- fix(lsp): include prefix and suffix for rename edits (#28327)
+- fix(lsp): limit languages in semantic tokens provider (#28310)
+- fix(node): require esm should prefer `module.exports` export (#28376)
+- fix(otel): don't throw when calling setActiveSpan at root (#28323)
+- fix(unstable): Missing `PrivateIdentifier` type for `PropertyDefinition` key
+  (#28358)
+- fix(unstable): lint plugin `ObjectPattern` inconsistencies (#28359)
+- fix(unstable): lint plugin child combinator not working with groups (#28360)
+- fix(unstable): lint plugin fix `:has()`, `:is/where/matches` and `:not()`
+  selectors (#28348)
+- fix(unstable): lint plugin regex attribute selector not working (#28340)
+- fix(unstable): lint plugin swapped exported and source for
+  ExportAllDeclaration (#28357)
+- fix(unstable/lint): remove duplicated `Fix` vs `FixData` interface (#28344)
+- fix: add "module.exports" export to ESM CJS wrapper module (#28373)
+- fix: deno_ast 0.46 (#28331)
+- fix: respect lockfile for multiple available jsr versions (#28375)
+- perf(http): instantiate generic functions in `deno_http`, increase opt-level
+  for some more hyper deps (#28317)
+- perf(lsp): don't set resolver npm reqs if unchanged (#28302)
+- perf(lsp): register semantic tokens provider upon opening enabled doc (#28384)
+
 ### 2.2.2 / 2025.02.25
 
 - fix(check): regression - implicit jsxImportSource was not resolving (#28228)
diff --git a/bench_util/Cargo.toml b/bench_util/Cargo.toml
index 27dc2f4b3957d7..607007eb6eee82 100644
--- a/bench_util/Cargo.toml
+++ b/bench_util/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_bench_util"
-version = "0.187.0"
+version = "0.188.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index 5ad5065919cc34..f96127a262fafe 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno"
-version = "2.2.2"
+version = "2.2.3"
 authors.workspace = true
 default-run = "deno"
 edition.workspace = true
diff --git a/cli/lib/Cargo.toml b/cli/lib/Cargo.toml
index 1222af8a0bdd0f..cb934ba4587301 100644
--- a/cli/lib/Cargo.toml
+++ b/cli/lib/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_lib"
-version = "0.9.0"
+version = "0.10.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/cli/lib/version.txt b/cli/lib/version.txt
index 7e541aec69b34f..6b4d1577382586 100644
--- a/cli/lib/version.txt
+++ b/cli/lib/version.txt
@@ -1 +1 @@
-2.2.2
\ No newline at end of file
+2.2.3
\ No newline at end of file
diff --git a/cli/rt/Cargo.toml b/cli/rt/Cargo.toml
index d32e5324580966..5e82fdcafd74e9 100644
--- a/cli/rt/Cargo.toml
+++ b/cli/rt/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "denort"
-version = "2.2.2"
+version = "2.2.3"
 authors.workspace = true
 default-run = "denort"
 edition.workspace = true
diff --git a/cli/snapshot/Cargo.toml b/cli/snapshot/Cargo.toml
index d644cbc4bc53aa..fbb89ee6f70fde 100644
--- a/cli/snapshot/Cargo.toml
+++ b/cli/snapshot/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_snapshots"
-version = "0.8.0"
+version = "0.9.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/broadcast_channel/Cargo.toml b/ext/broadcast_channel/Cargo.toml
index 7a5bd33404c83b..a831524aa6d534 100644
--- a/ext/broadcast_channel/Cargo.toml
+++ b/ext/broadcast_channel/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_broadcast_channel"
-version = "0.187.0"
+version = "0.188.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/cache/Cargo.toml b/ext/cache/Cargo.toml
index 1142fb33dd1bb8..f35dcd2e71358f 100644
--- a/ext/cache/Cargo.toml
+++ b/ext/cache/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_cache"
-version = "0.125.0"
+version = "0.126.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/canvas/Cargo.toml b/ext/canvas/Cargo.toml
index ebc26ecd578f1b..aeb1776395ef58 100644
--- a/ext/canvas/Cargo.toml
+++ b/ext/canvas/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_canvas"
-version = "0.62.0"
+version = "0.63.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/console/Cargo.toml b/ext/console/Cargo.toml
index aa2386bb077201..6772cca10c75ff 100644
--- a/ext/console/Cargo.toml
+++ b/ext/console/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_console"
-version = "0.193.0"
+version = "0.194.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/cron/Cargo.toml b/ext/cron/Cargo.toml
index 459682d9c1b0d7..95371a86593b2f 100644
--- a/ext/cron/Cargo.toml
+++ b/ext/cron/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_cron"
-version = "0.73.0"
+version = "0.74.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/crypto/Cargo.toml b/ext/crypto/Cargo.toml
index fad3cbe80af6fb..27a3a01ea29630 100644
--- a/ext/crypto/Cargo.toml
+++ b/ext/crypto/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_crypto"
-version = "0.207.0"
+version = "0.208.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/fetch/Cargo.toml b/ext/fetch/Cargo.toml
index df53b712b58ffe..574e15bdb2a2bd 100644
--- a/ext/fetch/Cargo.toml
+++ b/ext/fetch/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_fetch"
-version = "0.217.0"
+version = "0.218.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/ffi/Cargo.toml b/ext/ffi/Cargo.toml
index 3fd8704e52e246..5700e41a215df7 100644
--- a/ext/ffi/Cargo.toml
+++ b/ext/ffi/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_ffi"
-version = "0.180.0"
+version = "0.181.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/fs/Cargo.toml b/ext/fs/Cargo.toml
index 70a6984297e0ae..a2ee909843dd2e 100644
--- a/ext/fs/Cargo.toml
+++ b/ext/fs/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_fs"
-version = "0.103.0"
+version = "0.104.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/http/Cargo.toml b/ext/http/Cargo.toml
index c6dbbaa571e133..6a3a6d08a9f5af 100644
--- a/ext/http/Cargo.toml
+++ b/ext/http/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_http"
-version = "0.191.0"
+version = "0.192.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/io/Cargo.toml b/ext/io/Cargo.toml
index 84992cfcaa25d8..b7a41cfb7602f8 100644
--- a/ext/io/Cargo.toml
+++ b/ext/io/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_io"
-version = "0.103.0"
+version = "0.104.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/kv/Cargo.toml b/ext/kv/Cargo.toml
index e5c69a827bee91..11a1938f57da40 100644
--- a/ext/kv/Cargo.toml
+++ b/ext/kv/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_kv"
-version = "0.101.0"
+version = "0.102.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/napi/Cargo.toml b/ext/napi/Cargo.toml
index ea97ecc89e3497..a47965bec4b98e 100644
--- a/ext/napi/Cargo.toml
+++ b/ext/napi/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_napi"
-version = "0.124.0"
+version = "0.125.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/napi/sym/Cargo.toml b/ext/napi/sym/Cargo.toml
index eae76d7f85032a..349bed1ad28c99 100644
--- a/ext/napi/sym/Cargo.toml
+++ b/ext/napi/sym/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "napi_sym"
-version = "0.123.0"
+version = "0.124.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/net/Cargo.toml b/ext/net/Cargo.toml
index 9549629b960282..a826f4ab19d57c 100644
--- a/ext/net/Cargo.toml
+++ b/ext/net/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_net"
-version = "0.185.0"
+version = "0.186.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/node/Cargo.toml b/ext/node/Cargo.toml
index b74bd3f84bb635..760cd54376030d 100644
--- a/ext/node/Cargo.toml
+++ b/ext/node/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_node"
-version = "0.131.0"
+version = "0.132.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/os/Cargo.toml b/ext/os/Cargo.toml
index e1ab3ac26cc9ac..fbb862681beb17 100644
--- a/ext/os/Cargo.toml
+++ b/ext/os/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_os"
-version = "0.10.0"
+version = "0.11.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/process/Cargo.toml b/ext/process/Cargo.toml
index 0a32f15b5edc5a..9a969129c9afbc 100644
--- a/ext/process/Cargo.toml
+++ b/ext/process/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_process"
-version = "0.8.0"
+version = "0.9.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/telemetry/Cargo.toml b/ext/telemetry/Cargo.toml
index a3b8e5640e23e6..5cfde1aea92a20 100644
--- a/ext/telemetry/Cargo.toml
+++ b/ext/telemetry/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_telemetry"
-version = "0.15.0"
+version = "0.16.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/tls/Cargo.toml b/ext/tls/Cargo.toml
index a9765148b67dc7..d99f42882943b4 100644
--- a/ext/tls/Cargo.toml
+++ b/ext/tls/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_tls"
-version = "0.180.0"
+version = "0.181.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/url/Cargo.toml b/ext/url/Cargo.toml
index 921031945ba92a..a896f50ef37f33 100644
--- a/ext/url/Cargo.toml
+++ b/ext/url/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_url"
-version = "0.193.0"
+version = "0.194.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/web/Cargo.toml b/ext/web/Cargo.toml
index 1a16212d3cfe94..44e2f65afcf021 100644
--- a/ext/web/Cargo.toml
+++ b/ext/web/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_web"
-version = "0.224.0"
+version = "0.225.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/webgpu/Cargo.toml b/ext/webgpu/Cargo.toml
index 739d8d42767474..65244e8bd2c909 100644
--- a/ext/webgpu/Cargo.toml
+++ b/ext/webgpu/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_webgpu"
-version = "0.160.0"
+version = "0.161.0"
 authors = ["the Deno authors"]
 edition.workspace = true
 license = "MIT"
diff --git a/ext/webidl/Cargo.toml b/ext/webidl/Cargo.toml
index 6d221bad7bf1c7..7f7f3b9eb3f377 100644
--- a/ext/webidl/Cargo.toml
+++ b/ext/webidl/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_webidl"
-version = "0.193.0"
+version = "0.194.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/websocket/Cargo.toml b/ext/websocket/Cargo.toml
index 446167fb6610f1..d8bba25a6d8163 100644
--- a/ext/websocket/Cargo.toml
+++ b/ext/websocket/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_websocket"
-version = "0.198.0"
+version = "0.199.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/webstorage/Cargo.toml b/ext/webstorage/Cargo.toml
index 5c7abcd8170562..575cca184c422f 100644
--- a/ext/webstorage/Cargo.toml
+++ b/ext/webstorage/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_webstorage"
-version = "0.188.0"
+version = "0.189.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/resolvers/deno/Cargo.toml b/resolvers/deno/Cargo.toml
index bd9e9b5f2eae09..977799e84d7ff4 100644
--- a/resolvers/deno/Cargo.toml
+++ b/resolvers/deno/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_resolver"
-version = "0.24.0"
+version = "0.25.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/resolvers/node/Cargo.toml b/resolvers/node/Cargo.toml
index 6154bbaef7d4cd..925c0372679b3e 100644
--- a/resolvers/node/Cargo.toml
+++ b/resolvers/node/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "node_resolver"
-version = "0.31.0"
+version = "0.32.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/resolvers/npm_cache/Cargo.toml b/resolvers/npm_cache/Cargo.toml
index 8fab644c695ff4..8120b3fc903a05 100644
--- a/resolvers/npm_cache/Cargo.toml
+++ b/resolvers/npm_cache/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_npm_cache"
-version = "0.12.0"
+version = "0.13.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml
index 38c1a9bb23488f..bebe4c3351792e 100644
--- a/runtime/Cargo.toml
+++ b/runtime/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_runtime"
-version = "0.201.0"
+version = "0.202.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/runtime/permissions/Cargo.toml b/runtime/permissions/Cargo.toml
index da34751554f898..6f10c13a82dd1f 100644
--- a/runtime/permissions/Cargo.toml
+++ b/runtime/permissions/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_permissions"
-version = "0.52.0"
+version = "0.53.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true

From abfd45f8d274f78bb429bf2668cb2f5321024c69 Mon Sep 17 00:00:00 2001
From: Luca Casonato <hello@lcas.dev>
Date: Wed, 5 Mar 2025 13:05:40 +0100
Subject: [PATCH 058/115] fix(cli): warn when an otel env var has an invalid
 value (#28394)

---
 cli/args/flags.rs | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index 238b93b9f494fd..7f7318d735b472 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -930,7 +930,10 @@ impl Flags {
     let otel_var = |name| match std::env::var(name) {
       Ok(s) if s.to_lowercase() == "true" => Some(true),
       Ok(s) if s.to_lowercase() == "false" => Some(false),
-      _ => None,
+      _ => {
+        log::warn!("'{name}' env var value not recognized, only 'true' and 'false' are accepted");
+        None
+      }
     };
 
     let disabled =
@@ -947,7 +950,10 @@ impl Flags {
         Ok("ignore") => OtelConsoleConfig::Ignore,
         Ok("capture") => OtelConsoleConfig::Capture,
         Ok("replace") => OtelConsoleConfig::Replace,
-        _ => {
+        res => {
+          if res.is_ok() {
+            log::warn!("'OTEL_DENO_CONSOLE' env var value not recognized, only 'ignore', 'capture', or 'replace' are accepted");
+          }
           if default {
             OtelConsoleConfig::Capture
           } else {

From 865ec7c4f4fc8ecadd38848affff861352624731 Mon Sep 17 00:00:00 2001
From: Mohammad Sulaiman <mohammad.sulaiman@exalt.ps>
Date: Wed, 5 Mar 2025 19:29:41 +0200
Subject: [PATCH 059/115] fix(run): skip the cjs suggestion for mjs/mts modules
  (#26698)

Co-authored-by: David Sherret <dsherret@gmail.com>
---
 runtime/fmt_errors.rs                                     | 7 +++++++
 tests/specs/run/no_cjs_suggestion_mts_file/__test__.jsonc | 5 +++++
 tests/specs/run/no_cjs_suggestion_mts_file/a.cts          | 6 ++++++
 tests/specs/run/no_cjs_suggestion_mts_file/main.mts       | 5 +++++
 tests/specs/run/no_cjs_suggestion_mts_file/main.out       | 5 +++++
 5 files changed, 28 insertions(+)
 create mode 100644 tests/specs/run/no_cjs_suggestion_mts_file/__test__.jsonc
 create mode 100644 tests/specs/run/no_cjs_suggestion_mts_file/a.cts
 create mode 100644 tests/specs/run/no_cjs_suggestion_mts_file/main.mts
 create mode 100644 tests/specs/run/no_cjs_suggestion_mts_file/main.out

diff --git a/runtime/fmt_errors.rs b/runtime/fmt_errors.rs
index 3bde37bbe2eeb2..e7294ca3f60d7e 100644
--- a/runtime/fmt_errors.rs
+++ b/runtime/fmt_errors.rs
@@ -309,6 +309,13 @@ fn get_suggestions_for_terminal_errors(e: &JsError) -> Vec<FixSuggestion> {
       || msg.contains("exports is not defined")
       || msg.contains("require is not defined")
     {
+      if let Some(file_name) =
+        e.frames.first().and_then(|f| f.file_name.as_ref())
+      {
+        if file_name.ends_with(".mjs") || file_name.ends_with(".mts") {
+          return vec![];
+        }
+      }
       return vec![
         FixSuggestion::info_multiline(&[
           cstr!("Deno supports CommonJS modules in <u>.cjs</> files, or when the closest"),
diff --git a/tests/specs/run/no_cjs_suggestion_mts_file/__test__.jsonc b/tests/specs/run/no_cjs_suggestion_mts_file/__test__.jsonc
new file mode 100644
index 00000000000000..e4f44474c4f447
--- /dev/null
+++ b/tests/specs/run/no_cjs_suggestion_mts_file/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+  "args": "run --allow-read main.mts",
+  "exitCode": 1,
+  "output": "main.out"
+}
diff --git a/tests/specs/run/no_cjs_suggestion_mts_file/a.cts b/tests/specs/run/no_cjs_suggestion_mts_file/a.cts
new file mode 100644
index 00000000000000..636d99af3a699b
--- /dev/null
+++ b/tests/specs/run/no_cjs_suggestion_mts_file/a.cts
@@ -0,0 +1,6 @@
+function add(num1, num2) {
+  const result = num1 + num2;
+  return result;
+}
+
+module.exports = { add };
diff --git a/tests/specs/run/no_cjs_suggestion_mts_file/main.mts b/tests/specs/run/no_cjs_suggestion_mts_file/main.mts
new file mode 100644
index 00000000000000..cf256e315accc0
--- /dev/null
+++ b/tests/specs/run/no_cjs_suggestion_mts_file/main.mts
@@ -0,0 +1,5 @@
+import * as a from "./a.cts";
+
+console.log(a.add(1, 2));
+
+module.isPreloading = true;
diff --git a/tests/specs/run/no_cjs_suggestion_mts_file/main.out b/tests/specs/run/no_cjs_suggestion_mts_file/main.out
new file mode 100644
index 00000000000000..d775a4b8002a36
--- /dev/null
+++ b/tests/specs/run/no_cjs_suggestion_mts_file/main.out
@@ -0,0 +1,5 @@
+3
+error: Uncaught (in promise) ReferenceError: module is not defined
+module.isPreloading = true;
+^
+    at file:///[WILDLINE]/main.mts:5:1

From 731a238d349f0dadb4dd81f25f0a5bd2e17088d9 Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Wed, 5 Mar 2025 14:08:05 -0500
Subject: [PATCH 060/115] fix(install): support "file:" dependencies in local
 package.json (#28396)

This adds support for installing `file:` dependencies in a local
package.json.

In order to use these, you must not set `--node-modules-dir=...` when
using a package.json and it should use the default of
`--node-modules-dir=manual`.

Closes https://github.com/denoland/deno/issues/18701
---
 Cargo.lock                                    |   4 +-
 Cargo.toml                                    |   2 +-
 cli/args/lockfile.rs                          |   4 +
 cli/args/package_json.rs                      |  30 +++--
 cli/npm/installer/local.rs                    |  12 +-
 cli/rt/run.rs                                 |   8 ++
 cli/tools/info.rs                             |   8 ++
 cli/tools/pm/deps.rs                          |   3 +
 cli/tools/publish/unfurl.rs                   | 114 +++++++++++++++---
 resolvers/deno/lib.rs                         |  13 ++
 resolvers/deno/npm/byonm.rs                   |   3 +
 tests/specs/npm/file_specifier/__test__.jsonc |  33 +++++
 tests/specs/npm/file_specifier/compile.out    |  10 ++
 .../npm/file_specifier/node_modules_dir.out   |   2 +
 tests/specs/npm/file_specifier/output.out     |   9 ++
 .../npm/file_specifier/package-a/index.mjs    |   3 +
 .../npm/file_specifier/package-a/package.json |   6 +
 .../npm/file_specifier/package-b/index.js     |   7 ++
 .../npm/file_specifier/package-b/package.json |   7 ++
 .../publish/npm_file_specifier/__test__.jsonc |  17 +++
 .../npm_file_specifier/package-a/index.mts    |   5 +
 .../npm_file_specifier/package-a/jsr.json     |   6 +
 .../npm_file_specifier/package-a/package.json |   6 +
 .../npm_file_specifier/package-b/index.d.ts   |   1 +
 .../npm_file_specifier/package-b/index.js     |   7 ++
 .../npm_file_specifier/package-b/package.json |   7 ++
 .../publish/npm_file_specifier/publish.out    |  12 ++
 27 files changed, 297 insertions(+), 42 deletions(-)
 create mode 100644 tests/specs/npm/file_specifier/__test__.jsonc
 create mode 100644 tests/specs/npm/file_specifier/compile.out
 create mode 100644 tests/specs/npm/file_specifier/node_modules_dir.out
 create mode 100644 tests/specs/npm/file_specifier/output.out
 create mode 100644 tests/specs/npm/file_specifier/package-a/index.mjs
 create mode 100644 tests/specs/npm/file_specifier/package-a/package.json
 create mode 100644 tests/specs/npm/file_specifier/package-b/index.js
 create mode 100644 tests/specs/npm/file_specifier/package-b/package.json
 create mode 100644 tests/specs/publish/npm_file_specifier/__test__.jsonc
 create mode 100644 tests/specs/publish/npm_file_specifier/package-a/index.mts
 create mode 100644 tests/specs/publish/npm_file_specifier/package-a/jsr.json
 create mode 100644 tests/specs/publish/npm_file_specifier/package-a/package.json
 create mode 100644 tests/specs/publish/npm_file_specifier/package-b/index.d.ts
 create mode 100644 tests/specs/publish/npm_file_specifier/package-b/index.js
 create mode 100644 tests/specs/publish/npm_file_specifier/package-b/package.json
 create mode 100644 tests/specs/publish/npm_file_specifier/publish.out

diff --git a/Cargo.lock b/Cargo.lock
index 946a26108d39fd..75a302af65f81c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2440,9 +2440,9 @@ dependencies = [
 
 [[package]]
 name = "deno_package_json"
-version = "0.5.0"
+version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb8582ef20e0c5ed9bc43e93f593a461b63bd106311117feb3baf9ce8ea03d95"
+checksum = "9809d81d43f1805533e71d88adbe14343ada394abb236a754c8429ddd071ec65"
 dependencies = [
  "boxed_error",
  "deno_error",
diff --git a/Cargo.toml b/Cargo.toml
index 96b0af96aa4865..3b7a05aec5e5f3 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -151,7 +151,7 @@ data-url = "=0.3.1"
 deno_cache_dir = "=0.18.0"
 deno_error = "=0.5.5"
 deno_native_certs = "0.3.0"
-deno_package_json = { version = "=0.5.0", default-features = false }
+deno_package_json = { version = "=0.5.1", default-features = false }
 deno_task_shell = "=0.20.2"
 deno_unsync = "0.4.2"
 deno_whoami = "0.1.0"
diff --git a/cli/args/lockfile.rs b/cli/args/lockfile.rs
index 74d347c1bd826b..7c75eaabdf9d33 100644
--- a/cli/args/lockfile.rs
+++ b/cli/args/lockfile.rs
@@ -136,6 +136,10 @@ impl CliLockfile {
         .chain(deps.dev_dependencies.values())
         .filter_map(|dep| dep.as_ref().ok())
         .filter_map(|dep| match dep {
+          PackageJsonDepValue::File(_) => {
+            // ignored because this will have its own separate lockfile
+            None
+          }
           PackageJsonDepValue::Req(req) => {
             Some(JsrDepPackageReq::npm(req.clone()))
           }
diff --git a/cli/args/package_json.rs b/cli/args/package_json.rs
index efa5d469662d0a..8e07bab59ec5e9 100644
--- a/cli/args/package_json.rs
+++ b/cli/args/package_json.rs
@@ -23,7 +23,7 @@ pub struct InstallNpmRemotePkg {
 }
 
 #[derive(Debug)]
-pub struct InstallNpmWorkspacePkg {
+pub struct InstallLocalPkg {
   pub alias: Option<StackString>,
   pub target_dir: PathBuf,
 }
@@ -40,7 +40,7 @@ pub struct PackageJsonDepValueParseWithLocationError {
 #[derive(Debug, Default)]
 pub struct NpmInstallDepsProvider {
   remote_pkgs: Vec<InstallNpmRemotePkg>,
-  workspace_pkgs: Vec<InstallNpmWorkspacePkg>,
+  local_pkgs: Vec<InstallLocalPkg>,
   pkg_json_dep_errors: Vec<PackageJsonDepValueParseWithLocationError>,
 }
 
@@ -51,7 +51,7 @@ impl NpmInstallDepsProvider {
 
   pub fn from_workspace(workspace: &Arc<Workspace>) -> Self {
     // todo(dsherret): estimate capacity?
-    let mut workspace_pkgs = Vec::new();
+    let mut local_pkgs = Vec::new();
     let mut remote_pkgs = Vec::new();
     let mut pkg_json_dep_errors = Vec::new();
     let workspace_npm_pkgs = workspace.npm_packages();
@@ -77,7 +77,7 @@ impl NpmInstallDepsProvider {
               .find(|pkg| pkg.matches_req(&pkg_req));
 
             if let Some(pkg) = workspace_pkg {
-              workspace_pkgs.push(InstallNpmWorkspacePkg {
+              local_pkgs.push(InstallLocalPkg {
                 alias: None,
                 target_dir: pkg.pkg_json.dir_path().to_path_buf(),
               });
@@ -118,15 +118,21 @@ impl NpmInstallDepsProvider {
             }
           };
           match dep {
+            PackageJsonDepValue::File(specifier) => {
+              local_pkgs.push(InstallLocalPkg {
+                alias: Some(alias.clone()),
+                target_dir: pkg_json.dir_path().join(specifier),
+              })
+            }
             PackageJsonDepValue::Req(pkg_req) => {
               let workspace_pkg = workspace_npm_pkgs.iter().find(|pkg| {
                 pkg.matches_req(pkg_req)
-              // do not resolve to the current package
-              && pkg.pkg_json.path != pkg_json.path
+                // do not resolve to the current package
+                && pkg.pkg_json.path != pkg_json.path
               });
 
               if let Some(pkg) = workspace_pkg {
-                workspace_pkgs.push(InstallNpmWorkspacePkg {
+                local_pkgs.push(InstallLocalPkg {
                   alias: Some(alias.clone()),
                   target_dir: pkg.pkg_json.dir_path().to_path_buf(),
                 });
@@ -151,7 +157,7 @@ impl NpmInstallDepsProvider {
               if let Some(pkg) = workspace_npm_pkgs.iter().find(|pkg| {
                 pkg.matches_name_and_version_req(alias, &version_req)
               }) {
-                workspace_pkgs.push(InstallNpmWorkspacePkg {
+                local_pkgs.push(InstallLocalPkg {
                   alias: Some(alias.clone()),
                   target_dir: pkg.pkg_json.dir_path().to_path_buf(),
                 });
@@ -167,10 +173,10 @@ impl NpmInstallDepsProvider {
     }
 
     remote_pkgs.shrink_to_fit();
-    workspace_pkgs.shrink_to_fit();
+    local_pkgs.shrink_to_fit();
     Self {
       remote_pkgs,
-      workspace_pkgs,
+      local_pkgs,
       pkg_json_dep_errors,
     }
   }
@@ -179,8 +185,8 @@ impl NpmInstallDepsProvider {
     &self.remote_pkgs
   }
 
-  pub fn workspace_pkgs(&self) -> &[InstallNpmWorkspacePkg] {
-    &self.workspace_pkgs
+  pub fn local_pkgs(&self) -> &[InstallLocalPkg] {
+    &self.local_pkgs
   }
 
   pub fn pkg_json_dep_errors(
diff --git a/cli/npm/installer/local.rs b/cli/npm/installer/local.rs
index 1a93a23ecdb9a1..e3cb17299f956b 100644
--- a/cli/npm/installer/local.rs
+++ b/cli/npm/installer/local.rs
@@ -176,9 +176,7 @@ async fn sync_resolution_with_fs(
   system_info: &NpmSystemInfo,
   lifecycle_scripts: &LifecycleScriptsConfig,
 ) -> Result<(), SyncResolutionWithFsError> {
-  if snapshot.is_empty()
-    && npm_install_deps_provider.workspace_pkgs().is_empty()
-  {
+  if snapshot.is_empty() && npm_install_deps_provider.local_pkgs().is_empty() {
     return Ok(()); // don't create the directory
   }
 
@@ -629,13 +627,13 @@ async fn sync_resolution_with_fs(
     // todo(dsherret): this is not exactly correct because it should
     // install correctly for a workspace (potentially in sub directories),
     // but this is good enough for a first pass
-    for workspace in npm_install_deps_provider.workspace_pkgs() {
-      let Some(workspace_alias) = &workspace.alias else {
+    for pkg in npm_install_deps_provider.local_pkgs() {
+      let Some(pkg_alias) = &pkg.alias else {
         continue;
       };
       symlink_package_dir(
-        &workspace.target_dir,
-        &root_node_modules_dir_path.join(workspace_alias),
+        &pkg.target_dir,
+        &root_node_modules_dir_path.join(pkg_alias),
       )?;
     }
   }
diff --git a/cli/rt/run.rs b/cli/rt/run.rs
index 3dd26122d00c0d..e78851caafb3ea 100644
--- a/cli/rt/run.rs
+++ b/cli/rt/run.rs
@@ -60,6 +60,7 @@ use deno_resolver::npm::NpmResolverCreateOptions;
 use deno_resolver::workspace::MappedResolution;
 use deno_resolver::workspace::SloppyImportsOptions;
 use deno_resolver::workspace::WorkspaceResolver;
+use deno_resolver::DenoResolveErrorKind;
 use deno_runtime::code_cache::CodeCache;
 use deno_runtime::deno_fs::FileSystem;
 use deno_runtime::deno_node::create_host_defined_options;
@@ -242,6 +243,13 @@ impl ModuleLoader for EmbeddedModuleLoader {
         .as_ref()
         .map_err(|e| JsErrorBox::from_err(e.clone()))?
       {
+        PackageJsonDepValue::File(_) => Err(
+          JsErrorBox::from_err(
+            DenoResolveErrorKind::UnsupportedPackageJsonFileSpecifier
+              .into_box(),
+          )
+          .into(),
+        ),
         PackageJsonDepValue::Req(req) => Ok(
           self
             .shared
diff --git a/cli/tools/info.rs b/cli/tools/info.rs
index f7368f90af224c..f93f657d5aad37 100644
--- a/cli/tools/info.rs
+++ b/cli/tools/info.rs
@@ -23,6 +23,7 @@ use deno_npm::npm_rc::ResolvedNpmRc;
 use deno_npm::resolution::NpmResolutionSnapshot;
 use deno_npm::NpmPackageId;
 use deno_npm::NpmResolutionPackage;
+use deno_resolver::DenoResolveErrorKind;
 use deno_semver::npm::NpmPackageNvReference;
 use deno_semver::npm::NpmPackageReqReference;
 use deno_semver::package::PackageNv;
@@ -91,6 +92,13 @@ pub async fn info(
           dep_result,
           ..
         } => match dep_result.as_ref().map_err(|e| e.clone())? {
+          deno_package_json::PackageJsonDepValue::File(_) => {
+            return Err(
+              DenoResolveErrorKind::UnsupportedPackageJsonFileSpecifier
+                .into_box()
+                .into(),
+            );
+          }
           deno_package_json::PackageJsonDepValue::Workspace(version_req) => {
             let pkg_folder = resolver
               .resolve_workspace_pkg_json_folder_for_pkg_json_dep(
diff --git a/cli/tools/pm/deps.rs b/cli/tools/pm/deps.rs
index 837a4fec00f6d4..ad15a1d44413db 100644
--- a/cli/tools/pm/deps.rs
+++ b/cli/tools/pm/deps.rs
@@ -351,6 +351,9 @@ fn add_deps_from_package_json(
         }
       };
       match v {
+        deno_package_json::PackageJsonDepValue::File(_) => {
+          // ignore
+        }
         deno_package_json::PackageJsonDepValue::Req(req) => {
           let alias = k.as_str();
           let alias = (alias != req.name).then(|| alias.to_string());
diff --git a/cli/tools/publish/unfurl.rs b/cli/tools/publish/unfurl.rs
index 510270882bbacf..2f2525790e3f0d 100644
--- a/cli/tools/publish/unfurl.rs
+++ b/cli/tools/publish/unfurl.rs
@@ -49,6 +49,12 @@ pub enum SpecifierUnfurlerDiagnostic {
     range: SourceRange,
     reason: String,
   },
+  UnsupportedPkgJsonFileSpecifier {
+    specifier: ModuleSpecifier,
+    text_info: SourceTextInfo,
+    range: SourceRange,
+    package_name: String,
+  },
 }
 
 impl Diagnostic for SpecifierUnfurlerDiagnostic {
@@ -60,6 +66,9 @@ impl Diagnostic for SpecifierUnfurlerDiagnostic {
       SpecifierUnfurlerDiagnostic::ResolvingNpmWorkspacePackage { .. } => {
         DiagnosticLevel::Error
       }
+      SpecifierUnfurlerDiagnostic::UnsupportedPkgJsonFileSpecifier {
+        ..
+      } => DiagnosticLevel::Error,
     }
   }
 
@@ -67,6 +76,9 @@ impl Diagnostic for SpecifierUnfurlerDiagnostic {
     match self {
       Self::UnanalyzableDynamicImport { .. } => "unanalyzable-dynamic-import",
       Self::ResolvingNpmWorkspacePackage { .. } => "npm-workspace-package",
+      Self::UnsupportedPkgJsonFileSpecifier { .. } => {
+        "unsupported-file-specifier"
+      }
     }
     .into()
   }
@@ -85,6 +97,11 @@ impl Diagnostic for SpecifierUnfurlerDiagnostic {
         package_name, reason
       )
       .into(),
+      Self::UnsupportedPkgJsonFileSpecifier { package_name, .. } => format!(
+        "unsupported package.json file specifier for '{}'",
+        package_name
+      )
+      .into(),
     }
   }
 
@@ -109,6 +126,16 @@ impl Diagnostic for SpecifierUnfurlerDiagnostic {
         text_info: Cow::Borrowed(text_info),
         source_pos: DiagnosticSourcePos::SourcePos(range.start),
       },
+      SpecifierUnfurlerDiagnostic::UnsupportedPkgJsonFileSpecifier {
+        specifier,
+        text_info,
+        range,
+        ..
+      } => DiagnosticLocation::ModulePosition {
+        specifier: Cow::Borrowed(specifier),
+        text_info: Cow::Borrowed(text_info),
+        source_pos: DiagnosticSourcePos::SourcePos(range.start),
+      },
     }
   }
 
@@ -144,6 +171,21 @@ impl Diagnostic for SpecifierUnfurlerDiagnostic {
           description: Some("the unresolved import".into()),
         }],
       }),
+      SpecifierUnfurlerDiagnostic::UnsupportedPkgJsonFileSpecifier {
+        text_info,
+        range,
+        ..
+      } => Some(DiagnosticSnippet {
+        source: Cow::Borrowed(text_info),
+        highlights: vec![DiagnosticSnippetHighlight {
+          style: DiagnosticSnippetHighlightStyle::Warning,
+          range: DiagnosticSourceRange {
+            start: DiagnosticSourcePos::SourcePos(range.start),
+            end: DiagnosticSourcePos::SourcePos(range.end),
+          },
+          description: Some("the import".into()),
+        }],
+      }),
     }
   }
 
@@ -155,6 +197,9 @@ impl Diagnostic for SpecifierUnfurlerDiagnostic {
       SpecifierUnfurlerDiagnostic::ResolvingNpmWorkspacePackage { .. } => Some(
         "make sure the npm workspace package is resolvable and has a version field in its package.json".into()
       ),
+      SpecifierUnfurlerDiagnostic::UnsupportedPkgJsonFileSpecifier { .. } => Some(
+        "change the package dependency to point to something on npm instead".into()
+      ),
     }
   }
 
@@ -174,6 +219,9 @@ impl Diagnostic for SpecifierUnfurlerDiagnostic {
       SpecifierUnfurlerDiagnostic::ResolvingNpmWorkspacePackage { .. } => {
         Cow::Borrowed(&[])
       },
+      SpecifierUnfurlerDiagnostic::UnsupportedPkgJsonFileSpecifier { .. } => {
+        Cow::Borrowed(&[])
+      },
     }
   }
 
@@ -183,6 +231,9 @@ impl Diagnostic for SpecifierUnfurlerDiagnostic {
 }
 
 enum UnfurlSpecifierError {
+  UnsupportedPkgJsonFileSpecifier {
+    package_name: String,
+  },
   Workspace {
     package_name: String,
     reason: String,
@@ -220,27 +271,43 @@ impl<TSys: FsMetadata + FsRead> SpecifierUnfurler<TSys> {
   ) -> Option<String> {
     match self.unfurl_specifier(referrer, specifier, resolution_kind) {
       Ok(maybe_unfurled) => maybe_unfurled,
-      Err(diagnostic) => match diagnostic {
-        UnfurlSpecifierError::Workspace {
-          package_name,
-          reason,
-        } => {
-          let range = to_range(text_info, range);
-          diagnostic_reporter(
-            SpecifierUnfurlerDiagnostic::ResolvingNpmWorkspacePackage {
-              specifier: referrer.clone(),
-              package_name,
-              text_info: text_info.clone(),
-              range: SourceRange::new(
-                text_info.start_pos() + range.start,
-                text_info.start_pos() + range.end,
-              ),
-              reason,
-            },
-          );
-          None
+      Err(diagnostic) => {
+        let range = to_range(text_info, range);
+        let range = SourceRange::new(
+          text_info.start_pos() + range.start,
+          text_info.start_pos() + range.end,
+        );
+        match diagnostic {
+          UnfurlSpecifierError::UnsupportedPkgJsonFileSpecifier {
+            package_name,
+          } => {
+            diagnostic_reporter(
+              SpecifierUnfurlerDiagnostic::UnsupportedPkgJsonFileSpecifier {
+                specifier: referrer.clone(),
+                package_name,
+                text_info: text_info.clone(),
+                range,
+              },
+            );
+            None
+          }
+          UnfurlSpecifierError::Workspace {
+            package_name,
+            reason,
+          } => {
+            diagnostic_reporter(
+              SpecifierUnfurlerDiagnostic::ResolvingNpmWorkspacePackage {
+                specifier: referrer.clone(),
+                package_name,
+                text_info: text_info.clone(),
+                range,
+                reason,
+              },
+            );
+            None
+          }
         }
-      },
+      }
     }
   }
 
@@ -288,6 +355,13 @@ impl<TSys: FsMetadata + FsRead> SpecifierUnfurler<TSys> {
           ..
         } => match dep_result {
           Ok(dep) => match dep {
+            PackageJsonDepValue::File(_) => {
+              return Err(
+                UnfurlSpecifierError::UnsupportedPkgJsonFileSpecifier {
+                  package_name: alias.to_string(),
+                },
+              );
+            }
             PackageJsonDepValue::Req(pkg_req) => {
               // todo(#24612): consider warning or error when this is an npm workspace
               // member that's also a jsr package?
diff --git a/resolvers/deno/lib.rs b/resolvers/deno/lib.rs
index 4ecc222ba6f8d7..f466083e18073b 100644
--- a/resolvers/deno/lib.rs
+++ b/resolvers/deno/lib.rs
@@ -68,6 +68,9 @@ pub enum DenoResolveErrorKind {
   #[class(type)]
   #[error("Importing from the vendor directory is not permitted. Use a remote specifier instead or disable vendoring.")]
   InvalidVendorFolderImport,
+  #[class(type)]
+  #[error("Importing npm packages via a file: specifier is only supported with --node-modules-dir=manual")]
+  UnsupportedPackageJsonFileSpecifier,
   #[class(inherit)]
   #[error(transparent)]
   MappedResolution(#[from] MappedResolutionError),
@@ -305,6 +308,16 @@ impl<
                 .into_box()
             })
             .and_then(|dep| match dep {
+              PackageJsonDepValue::File(_) => {
+                // We don't support --node-modules-dir=auto/none because it's too
+                // much work to get this to work with a lockfile properly and for
+                // multiple managed node_modules directories to work. If someone wants
+                // to do this, then they need to use the default (manual)
+                Err(
+                  DenoResolveErrorKind::UnsupportedPackageJsonFileSpecifier
+                    .into_box(),
+                )
+              }
               // todo(dsherret): it seems bad that we're converting this
               // to a url because the req might not be a valid url.
               PackageJsonDepValue::Req(req) => Url::parse(&format!(
diff --git a/resolvers/deno/npm/byonm.rs b/resolvers/deno/npm/byonm.rs
index 5decc4d82a6ee5..a287ee488c89a3 100644
--- a/resolvers/deno/npm/byonm.rs
+++ b/resolvers/deno/npm/byonm.rs
@@ -197,6 +197,9 @@ impl<TSys: FsCanonicalize + FsRead + FsMetadata + FsReadDir>
       {
         if let Ok(value) = value {
           match value {
+            PackageJsonDepValue::File(_) => {
+              // skip
+            }
             PackageJsonDepValue::Req(dep_req) => {
               if dep_req.name == req.name
                 && dep_req.version_req.intersects(&req.version_req)
diff --git a/tests/specs/npm/file_specifier/__test__.jsonc b/tests/specs/npm/file_specifier/__test__.jsonc
new file mode 100644
index 00000000000000..d930d8085c0776
--- /dev/null
+++ b/tests/specs/npm/file_specifier/__test__.jsonc
@@ -0,0 +1,33 @@
+{
+  "tempDir": true,
+  "steps": [{
+    "args": "install",
+    "cwd": "package-a",
+    "output": "[WILDCARD]"
+  }, {
+    "args": "install",
+    "cwd": "package-b",
+    "output": "[WILDCARD]"
+  }, {
+    "args": "run --allow-read index.mjs",
+    "cwd": "package-a",
+    "output": "output.out"
+  }, {
+    "args": "run --allow-read --node-modules-dir=auto index.mjs",
+    "cwd": "package-a",
+    "exitCode": 1,
+    "output": "node_modules_dir.out"
+  }, {
+    "args": "run --allow-read --node-modules-dir=none index.mjs",
+    "cwd": "package-a",
+    "exitCode": 1,
+    "output": "node_modules_dir.out"
+  }, {
+    "args": "compile --allow-read --output exec package-a/index.mjs",
+    "output": "compile.out"
+  }, {
+    "commandName": "./exec",
+    "args": [],
+    "output": "output.out"
+  }]
+}
diff --git a/tests/specs/npm/file_specifier/compile.out b/tests/specs/npm/file_specifier/compile.out
new file mode 100644
index 00000000000000..05a8e39a6bbd1a
--- /dev/null
+++ b/tests/specs/npm/file_specifier/compile.out
@@ -0,0 +1,10 @@
+Compile [WILDLINE]/index.mjs to [WILDLINE]
+
+Embedded Files
+
+[WILDCARD]
+
+Files: [WILDLINE]
+Metadata: [WILDLINE]
+Remote modules: [WILDLINE]
+
diff --git a/tests/specs/npm/file_specifier/node_modules_dir.out b/tests/specs/npm/file_specifier/node_modules_dir.out
new file mode 100644
index 00000000000000..098918132c1b9b
--- /dev/null
+++ b/tests/specs/npm/file_specifier/node_modules_dir.out
@@ -0,0 +1,2 @@
+error: Importing npm packages via a file: specifier is only supported with --node-modules-dir=manual
+    at file:///[WILDLINE]index.mjs:1:21
diff --git a/tests/specs/npm/file_specifier/output.out b/tests/specs/npm/file_specifier/output.out
new file mode 100644
index 00000000000000..09b076d70397e3
--- /dev/null
+++ b/tests/specs/npm/file_specifier/output.out
@@ -0,0 +1,9 @@
+ ______
+< Moo! >
+ ------
+        \   ^__^
+         \  (oo)\_______
+            (__)\       )\/\
+                ||----w |
+                ||     ||
+3
diff --git a/tests/specs/npm/file_specifier/package-a/index.mjs b/tests/specs/npm/file_specifier/package-a/index.mjs
new file mode 100644
index 00000000000000..35a2722aaaac82
--- /dev/null
+++ b/tests/specs/npm/file_specifier/package-a/index.mjs
@@ -0,0 +1,3 @@
+import { add } from "package-b";
+
+console.log(add(1, 2));
diff --git a/tests/specs/npm/file_specifier/package-a/package.json b/tests/specs/npm/file_specifier/package-a/package.json
new file mode 100644
index 00000000000000..517966dee7f488
--- /dev/null
+++ b/tests/specs/npm/file_specifier/package-a/package.json
@@ -0,0 +1,6 @@
+{
+  "name": "package-a",
+  "dependencies": {
+    "package-b": "file:../package-b"
+  }
+}
diff --git a/tests/specs/npm/file_specifier/package-b/index.js b/tests/specs/npm/file_specifier/package-b/index.js
new file mode 100644
index 00000000000000..3117c4727a9dd3
--- /dev/null
+++ b/tests/specs/npm/file_specifier/package-b/index.js
@@ -0,0 +1,7 @@
+import * as cowsay from "cowsay";
+
+console.log(cowsay.say({ text: "Moo!" }));
+
+export function add(a, b) {
+  return a + b;
+}
diff --git a/tests/specs/npm/file_specifier/package-b/package.json b/tests/specs/npm/file_specifier/package-b/package.json
new file mode 100644
index 00000000000000..b60e19b9714d88
--- /dev/null
+++ b/tests/specs/npm/file_specifier/package-b/package.json
@@ -0,0 +1,7 @@
+{
+  "name": "package-b",
+  "type": "module",
+  "dependencies": {
+    "cowsay": "*"
+  }
+}
diff --git a/tests/specs/publish/npm_file_specifier/__test__.jsonc b/tests/specs/publish/npm_file_specifier/__test__.jsonc
new file mode 100644
index 00000000000000..d9a8903938e1a4
--- /dev/null
+++ b/tests/specs/publish/npm_file_specifier/__test__.jsonc
@@ -0,0 +1,17 @@
+{
+  "tempDir": true,
+  "steps": [{
+    "args": "install",
+    "cwd": "package-a",
+    "output": "[WILDCARD]"
+  }, {
+    "args": "install",
+    "cwd": "package-b",
+    "output": "[WILDCARD]"
+  }, {
+    "args": "publish --token test",
+    "cwd": "package-a",
+    "exitCode": 1,
+    "output": "publish.out"
+  }]
+}
diff --git a/tests/specs/publish/npm_file_specifier/package-a/index.mts b/tests/specs/publish/npm_file_specifier/package-a/index.mts
new file mode 100644
index 00000000000000..ea3bb5840fdd4f
--- /dev/null
+++ b/tests/specs/publish/npm_file_specifier/package-a/index.mts
@@ -0,0 +1,5 @@
+import * as packageB from "package-b";
+
+export function add(a: number, b: number): number {
+  return packageB.add(a, b);
+}
diff --git a/tests/specs/publish/npm_file_specifier/package-a/jsr.json b/tests/specs/publish/npm_file_specifier/package-a/jsr.json
new file mode 100644
index 00000000000000..41d40f933a0158
--- /dev/null
+++ b/tests/specs/publish/npm_file_specifier/package-a/jsr.json
@@ -0,0 +1,6 @@
+{
+  "name": "@example/pkg",
+  "version": "1.0.0",
+  "exports": "./index.mts",
+  "license": "MIT"
+}
diff --git a/tests/specs/publish/npm_file_specifier/package-a/package.json b/tests/specs/publish/npm_file_specifier/package-a/package.json
new file mode 100644
index 00000000000000..517966dee7f488
--- /dev/null
+++ b/tests/specs/publish/npm_file_specifier/package-a/package.json
@@ -0,0 +1,6 @@
+{
+  "name": "package-a",
+  "dependencies": {
+    "package-b": "file:../package-b"
+  }
+}
diff --git a/tests/specs/publish/npm_file_specifier/package-b/index.d.ts b/tests/specs/publish/npm_file_specifier/package-b/index.d.ts
new file mode 100644
index 00000000000000..9b197eb1e4df1f
--- /dev/null
+++ b/tests/specs/publish/npm_file_specifier/package-b/index.d.ts
@@ -0,0 +1 @@
+export function add(a: number, b: number): number;
diff --git a/tests/specs/publish/npm_file_specifier/package-b/index.js b/tests/specs/publish/npm_file_specifier/package-b/index.js
new file mode 100644
index 00000000000000..3117c4727a9dd3
--- /dev/null
+++ b/tests/specs/publish/npm_file_specifier/package-b/index.js
@@ -0,0 +1,7 @@
+import * as cowsay from "cowsay";
+
+console.log(cowsay.say({ text: "Moo!" }));
+
+export function add(a, b) {
+  return a + b;
+}
diff --git a/tests/specs/publish/npm_file_specifier/package-b/package.json b/tests/specs/publish/npm_file_specifier/package-b/package.json
new file mode 100644
index 00000000000000..b60e19b9714d88
--- /dev/null
+++ b/tests/specs/publish/npm_file_specifier/package-b/package.json
@@ -0,0 +1,7 @@
+{
+  "name": "package-b",
+  "type": "module",
+  "dependencies": {
+    "cowsay": "*"
+  }
+}
diff --git a/tests/specs/publish/npm_file_specifier/publish.out b/tests/specs/publish/npm_file_specifier/publish.out
new file mode 100644
index 00000000000000..ecbd01cfe87908
--- /dev/null
+++ b/tests/specs/publish/npm_file_specifier/publish.out
@@ -0,0 +1,12 @@
+Check file:///[WILDLINE]/index.mts
+Checking for slow types in the public API...
+Check file:///[WILDLINE]/index.mts
+error[unsupported-file-specifier]: unsupported package.json file specifier for 'package-b'
+ --> [WILDLINE]index.mts:1:28
+  | 
+1 | import * as packageB from "package-b";
+  |                            ^^^^^^^^^ the import
+  | 
+  = hint: change the package dependency to point to something on npm instead
+
+error: Found 1 problem

From 7f7b51c414d239317e2870b364c20f7a634b9db3 Mon Sep 17 00:00:00 2001
From: Marvin Hagemeister <marvin@deno.com>
Date: Wed, 5 Mar 2025 21:12:19 +0100
Subject: [PATCH 061/115] fix(unstable): wrong node with shorthand
 ObjectPattern + AssignPattern (#28402)

We did not serialize the `AssignmentPattern` node inside `ObjectPattern`
properties.

```ts
({ a = b } = {})
```

This is a bit different in SWC and looks like I got confused with the
different AST formats.

Fixes https://github.com/denoland/deno/issues/28399
---
 cli/tools/lint/ast_buffer/swc.rs              |  19 +--
 .../__snapshots__/lint_plugin_test.ts.snap    | 157 +++++++++++++++---
 tests/unit/lint_plugin_test.ts                |   1 +
 3 files changed, 145 insertions(+), 32 deletions(-)

diff --git a/cli/tools/lint/ast_buffer/swc.rs b/cli/tools/lint/ast_buffer/swc.rs
index 4bb7d540ae4448..692efb20ef4e64 100644
--- a/cli/tools/lint/ast_buffer/swc.rs
+++ b/cli/tools/lint/ast_buffer/swc.rs
@@ -1898,24 +1898,23 @@ fn serialize_pat(ctx: &mut TsEsTreeBuilder, pat: &Pat) -> NodeRef {
             )
           }
           ObjectPatProp::Assign(assign_pat_prop) => {
-            let ident = serialize_binding_ident(ctx, &assign_pat_prop.key);
+            let key = serialize_binding_ident(ctx, &assign_pat_prop.key);
+            let mut value = serialize_binding_ident(ctx, &assign_pat_prop.key);
 
             let shorthand = assign_pat_prop.value.is_none();
-            let value = assign_pat_prop.value.as_ref().map_or(
-              // SWC has value as optional with shorthand properties,
-              // but TSESTree expects the value to be a duplicate of
-              // the binding ident.
-              serialize_binding_ident(ctx, &assign_pat_prop.key),
-              |value| serialize_expr(ctx, value),
-            );
+
+            if let Some(assign) = &assign_pat_prop.value {
+              let expr = serialize_expr(ctx, assign);
+              value = ctx.write_assign_pat(&assign_pat_prop.span, value, expr);
+            }
 
             ctx.write_property(
-              &assign_pat_prop.span,
+              &node.span,
               shorthand,
               false,
               false,
               PropertyKind::Init,
-              ident,
+              key,
               value,
             )
           }
diff --git a/tests/unit/__snapshots__/lint_plugin_test.ts.snap b/tests/unit/__snapshots__/lint_plugin_test.ts.snap
index a46160e91965f3..11c9ef5e8e155e 100644
--- a/tests/unit/__snapshots__/lint_plugin_test.ts.snap
+++ b/tests/unit/__snapshots__/lint_plugin_test.ts.snap
@@ -177,19 +177,36 @@ snapshot[`Plugin - FunctionDeclaration 3`] = `
           kind: "init",
           method: false,
           range: [
-            22,
-            27,
+            20,
+            38,
           ],
           shorthand: false,
           type: "Property",
           value: {
+            left: {
+              name: "a",
+              optional: false,
+              range: [
+                22,
+                23,
+              ],
+              type: "Identifier",
+              typeAnnotation: undefined,
+            },
             range: [
-              26,
+              22,
               27,
             ],
-            raw: "2",
-            type: "Literal",
-            value: 2,
+            right: {
+              range: [
+                26,
+                27,
+              ],
+              raw: "2",
+              type: "Literal",
+              value: 2,
+            },
+            type: "AssignmentPattern",
           },
         },
         {
@@ -207,8 +224,8 @@ snapshot[`Plugin - FunctionDeclaration 3`] = `
           kind: "init",
           method: false,
           range: [
-            29,
-            30,
+            20,
+            38,
           ],
           shorthand: true,
           type: "Property",
@@ -5451,8 +5468,8 @@ snapshot[`Plugin - ObjectPattern 1`] = `
       kind: "init",
       method: false,
       range: [
-        8,
-        12,
+        6,
+        14,
       ],
       shorthand: true,
       type: "Property",
@@ -5585,19 +5602,36 @@ snapshot[`Plugin - ObjectPattern 4`] = `
       kind: "init",
       method: false,
       range: [
-        8,
-        16,
+        6,
+        18,
       ],
       shorthand: false,
       type: "Property",
       value: {
+        left: {
+          name: "prop",
+          optional: false,
+          range: [
+            8,
+            12,
+          ],
+          type: "Identifier",
+          typeAnnotation: undefined,
+        },
         range: [
-          15,
+          8,
           16,
         ],
-        raw: "2",
-        type: "Literal",
-        value: 2,
+        right: {
+          range: [
+            15,
+            16,
+          ],
+          raw: "2",
+          type: "Literal",
+          value: 2,
+        },
+        type: "AssignmentPattern",
       },
     },
   ],
@@ -5629,19 +5663,36 @@ snapshot[`Plugin - ObjectPattern 5`] = `
       kind: "init",
       method: false,
       range: [
-        8,
-        16,
+        6,
+        24,
       ],
       shorthand: false,
       type: "Property",
       value: {
+        left: {
+          name: "prop",
+          optional: false,
+          range: [
+            8,
+            12,
+          ],
+          type: "Identifier",
+          typeAnnotation: undefined,
+        },
         range: [
-          15,
+          8,
           16,
         ],
-        raw: "2",
-        type: "Literal",
-        value: 2,
+        right: {
+          range: [
+            15,
+            16,
+          ],
+          raw: "2",
+          type: "Literal",
+          value: 2,
+        },
+        type: "AssignmentPattern",
       },
     },
     {
@@ -5672,6 +5723,68 @@ snapshot[`Plugin - ObjectPattern 5`] = `
 }
 `;
 
+snapshot[`Plugin - ObjectPattern 6`] = `
+{
+  optional: false,
+  properties: [
+    {
+      computed: false,
+      key: {
+        name: "a",
+        optional: false,
+        range: [
+          3,
+          4,
+        ],
+        type: "Identifier",
+        typeAnnotation: undefined,
+      },
+      kind: "init",
+      method: false,
+      range: [
+        1,
+        10,
+      ],
+      shorthand: false,
+      type: "Property",
+      value: {
+        left: {
+          name: "a",
+          optional: false,
+          range: [
+            3,
+            4,
+          ],
+          type: "Identifier",
+          typeAnnotation: undefined,
+        },
+        range: [
+          3,
+          8,
+        ],
+        right: {
+          name: "b",
+          optional: false,
+          range: [
+            7,
+            8,
+          ],
+          type: "Identifier",
+          typeAnnotation: undefined,
+        },
+        type: "AssignmentPattern",
+      },
+    },
+  ],
+  range: [
+    1,
+    10,
+  ],
+  type: "ObjectPattern",
+  typeAnnotation: undefined,
+}
+`;
+
 snapshot[`Plugin - ArrayPattern 1`] = `
 {
   elements: [
diff --git a/tests/unit/lint_plugin_test.ts b/tests/unit/lint_plugin_test.ts
index 399f1d51276f3c..79f2646a4c6049 100644
--- a/tests/unit/lint_plugin_test.ts
+++ b/tests/unit/lint_plugin_test.ts
@@ -855,6 +855,7 @@ Deno.test("Plugin - ObjectPattern", async (t) => {
   await testSnapshot(t, "const { 'a.b': A } = {}", "ObjectPattern");
   await testSnapshot(t, "const { prop = 2 } = {}", "ObjectPattern");
   await testSnapshot(t, "const { prop = 2, ...c } = {}", "ObjectPattern");
+  await testSnapshot(t, "({ a = b } = {})", "ObjectPattern");
 });
 
 Deno.test("Plugin - ArrayPattern", async (t) => {

From be73f11f831d3cb3a752d6ea343c15e422ccbd69 Mon Sep 17 00:00:00 2001
From: Marvin Hagemeister <marvin@deno.com>
Date: Wed, 5 Mar 2025 21:14:50 +0100
Subject: [PATCH 062/115] fix(unstable): lint plugin `!==` wrongly parsed as
 `!=` (#28403)

That's an emberassing typo. The `!==` operator was wrongly converted to
`!=`.

Fixes https://github.com/denoland/deno/issues/28397
---
 cli/tools/lint/ast_buffer/swc.rs                  | 2 +-
 tests/unit/__snapshots__/lint_plugin_test.ts.snap | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/cli/tools/lint/ast_buffer/swc.rs b/cli/tools/lint/ast_buffer/swc.rs
index 692efb20ef4e64..77f253e62a7ec4 100644
--- a/cli/tools/lint/ast_buffer/swc.rs
+++ b/cli/tools/lint/ast_buffer/swc.rs
@@ -716,7 +716,7 @@ fn serialize_expr(ctx: &mut TsEsTreeBuilder, expr: &Expr) -> NodeRef {
         BinaryOp::EqEq => (AstNode::BinaryExpression, "=="),
         BinaryOp::NotEq => (AstNode::BinaryExpression, "!="),
         BinaryOp::EqEqEq => (AstNode::BinaryExpression, "==="),
-        BinaryOp::NotEqEq => (AstNode::BinaryExpression, "!="),
+        BinaryOp::NotEqEq => (AstNode::BinaryExpression, "!=="),
         BinaryOp::Lt => (AstNode::BinaryExpression, "<"),
         BinaryOp::LtEq => (AstNode::BinaryExpression, "<="),
         BinaryOp::Gt => (AstNode::BinaryExpression, ">"),
diff --git a/tests/unit/__snapshots__/lint_plugin_test.ts.snap b/tests/unit/__snapshots__/lint_plugin_test.ts.snap
index 11c9ef5e8e155e..da6955d0d2e3ca 100644
--- a/tests/unit/__snapshots__/lint_plugin_test.ts.snap
+++ b/tests/unit/__snapshots__/lint_plugin_test.ts.snap
@@ -2647,7 +2647,7 @@ snapshot[`Plugin - BinaryExpression 8`] = `
     type: "Identifier",
     typeAnnotation: undefined,
   },
-  operator: "!=",
+  operator: "!==",
   range: [
     0,
     7,

From 0c0757fe66caf9de99f44d959254d3ba2f13709f Mon Sep 17 00:00:00 2001
From: Nathan Whitaker <17734409+nathanwhit@users.noreply.github.com>
Date: Wed, 5 Mar 2025 12:41:05 -0800
Subject: [PATCH 063/115] fix(install): exclude npm workspace packages from
 graph roots in `install` (#28401)

Fixes #28374.
---
 cli/tools/pm/cache_deps.rs                    | 38 ++++++++++++++++++-
 .../npm_workspace_package/__test__.jsonc      | 26 +++++++++++++
 .../install/npm_workspace_package/a/foo.js    |  0
 .../install/npm_workspace_package/a/mod.js    |  0
 .../npm_workspace_package/a/package.json      |  8 ++++
 .../install/npm_workspace_package/b/deno.json | 10 +++++
 .../install/npm_workspace_package/b/mod.ts    |  0
 .../install/npm_workspace_package/deno.json   |  3 ++
 .../npm_workspace_package/edit-import.ts      |  6 +++
 9 files changed, 89 insertions(+), 2 deletions(-)
 create mode 100644 tests/specs/install/npm_workspace_package/__test__.jsonc
 create mode 100644 tests/specs/install/npm_workspace_package/a/foo.js
 create mode 100644 tests/specs/install/npm_workspace_package/a/mod.js
 create mode 100644 tests/specs/install/npm_workspace_package/a/package.json
 create mode 100644 tests/specs/install/npm_workspace_package/b/deno.json
 create mode 100644 tests/specs/install/npm_workspace_package/b/mod.ts
 create mode 100644 tests/specs/install/npm_workspace_package/deno.json
 create mode 100644 tests/specs/install/npm_workspace_package/edit-import.ts

diff --git a/cli/tools/pm/cache_deps.rs b/cli/tools/pm/cache_deps.rs
index a2317cf4981d11..972718bb1d50a0 100644
--- a/cli/tools/pm/cache_deps.rs
+++ b/cli/tools/pm/cache_deps.rs
@@ -1,12 +1,16 @@
 // Copyright 2018-2025 the Deno authors. MIT license.
 
 use std::borrow::Cow;
+use std::collections::HashMap;
+use std::collections::HashSet;
 use std::sync::Arc;
 
 use deno_core::error::AnyError;
 use deno_core::futures::stream::FuturesUnordered;
 use deno_core::futures::StreamExt;
 use deno_semver::jsr::JsrPackageReqReference;
+use deno_semver::npm::NpmPackageReqReference;
+use deno_semver::Version;
 
 use crate::factory::CliFactory;
 use crate::graph_container::ModuleGraphContainer;
@@ -54,7 +58,17 @@ pub async fn cache_top_level_deps(
 
     let mut info_futures = FuturesUnordered::new();
 
-    let mut seen_reqs = std::collections::HashSet::new();
+    let mut seen_reqs = HashSet::new();
+
+    let workspace_npm_packages = resolver
+      .package_jsons()
+      .filter_map(|pkg_json| {
+        pkg_json
+          .name
+          .as_deref()
+          .and_then(|name| Some((name, pkg_json.version.as_deref()?)))
+      })
+      .collect::<HashMap<_, _>>();
 
     for entry in import_map.imports().entries().chain(
       import_map
@@ -94,7 +108,27 @@ pub async fn cache_top_level_deps(
             });
           }
         }
-        "npm" => roots.push(specifier.clone()),
+        "npm" => {
+          let Ok(req_ref) =
+            NpmPackageReqReference::from_str(specifier.as_str())
+          else {
+            continue;
+          };
+          let version = workspace_npm_packages.get(&*req_ref.req().name);
+          if let Some(version) = version {
+            let Ok(version) = Version::parse_from_npm(version) else {
+              continue;
+            };
+            let version_req = &req_ref.req().version_req;
+            if version_req.tag().is_none() && version_req.matches(&version) {
+              // if version req matches the workspace package's version, use that
+              // (so it doesn't need to be installed)
+              continue;
+            }
+          }
+
+          roots.push(specifier.clone())
+        }
         _ => {
           if entry.key.ends_with('/') && specifier.as_str().ends_with('/') {
             continue;
diff --git a/tests/specs/install/npm_workspace_package/__test__.jsonc b/tests/specs/install/npm_workspace_package/__test__.jsonc
new file mode 100644
index 00000000000000..a5a7e88f4a8b73
--- /dev/null
+++ b/tests/specs/install/npm_workspace_package/__test__.jsonc
@@ -0,0 +1,26 @@
+{
+  "tempDir": true,
+  "tests": {
+    "use_workspace": {
+      "steps": [
+        {
+          "args": "install",
+          "output": ""
+        }
+      ]
+    },
+    "dont_use_workspace": {
+      "steps": [
+        {
+          "args": "run -A edit-import.ts ./b/deno.json @test/a2 npm:@test/a@2.0.0",
+          "output": ""
+        },
+        {
+          "args": "install",
+          "output": "Download http://localhost:4260/@test%2fa\nerror: npm package '@test/a' does not exist.\n",
+          "exitCode": 1
+        }
+      ]
+    }
+  }
+}
diff --git a/tests/specs/install/npm_workspace_package/a/foo.js b/tests/specs/install/npm_workspace_package/a/foo.js
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/tests/specs/install/npm_workspace_package/a/mod.js b/tests/specs/install/npm_workspace_package/a/mod.js
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/tests/specs/install/npm_workspace_package/a/package.json b/tests/specs/install/npm_workspace_package/a/package.json
new file mode 100644
index 00000000000000..6587f1af6ec4e8
--- /dev/null
+++ b/tests/specs/install/npm_workspace_package/a/package.json
@@ -0,0 +1,8 @@
+{
+  "name": "@test/a",
+  "exports": {
+    ".": "./mod.js",
+    "./foo": "./foo.js"
+  },
+  "version": "0.1.0"
+}
diff --git a/tests/specs/install/npm_workspace_package/b/deno.json b/tests/specs/install/npm_workspace_package/b/deno.json
new file mode 100644
index 00000000000000..6d83af73c4440d
--- /dev/null
+++ b/tests/specs/install/npm_workspace_package/b/deno.json
@@ -0,0 +1,10 @@
+{
+  "name": "@test/b",
+  "exports": "./mod.ts",
+  "version": "0.1.0",
+  "imports": {
+    "@test/a": "npm:@test/a",
+    "foo": "npm:@test/a/foo",
+    "@test/a2": "npm:@test/a@0.1.0"
+  }
+}
diff --git a/tests/specs/install/npm_workspace_package/b/mod.ts b/tests/specs/install/npm_workspace_package/b/mod.ts
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/tests/specs/install/npm_workspace_package/deno.json b/tests/specs/install/npm_workspace_package/deno.json
new file mode 100644
index 00000000000000..0b8197b803e0b8
--- /dev/null
+++ b/tests/specs/install/npm_workspace_package/deno.json
@@ -0,0 +1,3 @@
+{
+  "workspace": ["./a", "./b"]
+}
diff --git a/tests/specs/install/npm_workspace_package/edit-import.ts b/tests/specs/install/npm_workspace_package/edit-import.ts
new file mode 100644
index 00000000000000..06251a8c618a7d
--- /dev/null
+++ b/tests/specs/install/npm_workspace_package/edit-import.ts
@@ -0,0 +1,6 @@
+const file = Deno.args[0].trim();
+const importKey = Deno.args[1].trim();
+const newValue = Deno.args[2].trim();
+const json = JSON.parse(Deno.readTextFileSync(file));
+json["imports"][importKey] = newValue;
+Deno.writeTextFileSync(file, JSON.stringify(json));

From 2292eb1c92c61a245bc82409a7bf2598debde4c0 Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Wed, 5 Mar 2025 16:37:46 -0500
Subject: [PATCH 064/115] fix(node): support re-exported esm modules in cjs
 export analysis (#28379)

Adds support for re-exporting an ES module from a CJS one and then
importing the CJS module from ESM. Also fixes a bug where require esm
wasn't working in deno compile.
---
 Cargo.lock                                    |   4 +-
 Cargo.toml                                    |   2 +-
 cli/Cargo.toml                                |   2 +-
 cli/cache/node.rs                             |   6 +-
 cli/factory.rs                                |  27 +-
 cli/lib/standalone/binary.rs                  |   4 +-
 cli/node.rs                                   |  79 ++++--
 cli/rt/node.rs                                |  18 +-
 cli/rt/run.rs                                 |  16 +-
 cli/standalone/binary.rs                      |  43 ++-
 resolvers/node/analyze.rs                     | 261 ++++++++++++------
 .../require_esm_reexport_esm/__test__.jsonc   |  19 ++
 .../node/require_esm_reexport_esm/add.mjs     |   3 +
 .../node/require_esm_reexport_esm/main.mjs    |   4 +
 .../node/require_esm_reexport_esm/mod1.cjs    |   1 +
 .../node/require_esm_reexport_esm/mod2.cjs    |   1 +
 .../node/require_esm_reexport_esm/run.out     |   3 +
 .../__test__.jsonc                            |  19 ++
 .../add.mjs                                   |   5 +
 .../main.mjs                                  |   2 +
 .../mod1.cjs                                  |   1 +
 .../mod2.cjs                                  |   1 +
 .../run.out                                   |   1 +
 23 files changed, 361 insertions(+), 161 deletions(-)
 create mode 100644 tests/specs/node/require_esm_reexport_esm/__test__.jsonc
 create mode 100644 tests/specs/node/require_esm_reexport_esm/add.mjs
 create mode 100644 tests/specs/node/require_esm_reexport_esm/main.mjs
 create mode 100644 tests/specs/node/require_esm_reexport_esm/mod1.cjs
 create mode 100644 tests/specs/node/require_esm_reexport_esm/mod2.cjs
 create mode 100644 tests/specs/node/require_esm_reexport_esm/run.out
 create mode 100644 tests/specs/node/require_esm_reexport_esm_module_exports/__test__.jsonc
 create mode 100644 tests/specs/node/require_esm_reexport_esm_module_exports/add.mjs
 create mode 100644 tests/specs/node/require_esm_reexport_esm_module_exports/main.mjs
 create mode 100644 tests/specs/node/require_esm_reexport_esm_module_exports/mod1.cjs
 create mode 100644 tests/specs/node/require_esm_reexport_esm_module_exports/mod2.cjs
 create mode 100644 tests/specs/node/require_esm_reexport_esm_module_exports/run.out

diff --git a/Cargo.lock b/Cargo.lock
index 75a302af65f81c..4e90ccd5ac1857 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1609,9 +1609,9 @@ dependencies = [
 
 [[package]]
 name = "deno_ast"
-version = "0.46.0"
+version = "0.46.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1bd3b6e14e5b1235dd613d9f5d955d7a80dec6de0fc00fa34b5d0ef5ca0a9ddb"
+checksum = "88393f34aaba238da6a3694aef7e046eec4d261c3bf98dc6669d397f1c274e5e"
 dependencies = [
  "base64 0.21.7",
  "deno_error",
diff --git a/Cargo.toml b/Cargo.toml
index 3b7a05aec5e5f3..834a8f4d04059b 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -50,7 +50,7 @@ license = "MIT"
 repository = "https://github.com/denoland/deno"
 
 [workspace.dependencies]
-deno_ast = { version = "=0.46.0", features = ["transpiling"] }
+deno_ast = { version = "=0.46.1", features = ["transpiling"] }
 deno_core = { version = "0.340.0" }
 
 deno_bench_util = { version = "0.188.0", path = "./bench_util" }
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index f96127a262fafe..778fe1888eba72 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -67,7 +67,7 @@ winapi.workspace = true
 winres.workspace = true
 
 [dependencies]
-deno_ast = { workspace = true, features = ["bundler", "cjs", "codegen", "proposal", "react", "sourcemap", "transforms", "typescript", "view", "visit"] }
+deno_ast = { workspace = true, features = ["bundler", "cjs", "codegen", "proposal", "react", "sourcemap", "transforms", "typescript", "view", "visit", "utils"] }
 deno_cache_dir = { workspace = true, features = ["sync"] }
 deno_config = { workspace = true, features = ["sync", "workspace"] }
 deno_core = { workspace = true, features = ["include_js_files_for_snapshotting"] }
diff --git a/cli/cache/node.rs b/cli/cache/node.rs
index 89e372de43b654..d5d132649dc2c5 100644
--- a/cli/cache/node.rs
+++ b/cli/cache/node.rs
@@ -137,6 +137,8 @@ impl NodeAnalysisCacheInner {
 
 #[cfg(test)]
 mod test {
+  use deno_ast::ModuleExportsAndReExports;
+
   use super::*;
 
   #[test]
@@ -148,10 +150,10 @@ mod test {
       .get_cjs_analysis("file.js", CacheDBHash::new(2))
       .unwrap()
       .is_none());
-    let cjs_analysis = CliCjsAnalysis::Cjs {
+    let cjs_analysis = CliCjsAnalysis::Cjs(ModuleExportsAndReExports {
       exports: vec!["export1".to_string()],
       reexports: vec!["re-export1".to_string()],
-    };
+    });
     cache
       .set_cjs_analysis("file.js", CacheDBHash::new(2), &cjs_analysis)
       .unwrap();
diff --git a/cli/factory.rs b/cli/factory.rs
index 660280c4982946..f8248ef8284f63 100644
--- a/cli/factory.rs
+++ b/cli/factory.rs
@@ -80,6 +80,7 @@ use crate::http_util::HttpClientProvider;
 use crate::module_loader::CliModuleLoaderFactory;
 use crate::module_loader::ModuleLoadPreparer;
 use crate::node::CliCjsCodeAnalyzer;
+use crate::node::CliCjsModuleExportAnalyzer;
 use crate::node::CliNodeCodeTranslator;
 use crate::node::CliNodeResolver;
 use crate::node::CliPackageJsonResolver;
@@ -261,6 +262,7 @@ impl<T> Deferred<T> {
 struct CliFactoryServices {
   blob_store: Deferred<Arc<BlobStore>>,
   caches: Deferred<Arc<Caches>>,
+  cjs_module_export_analyzer: Deferred<Arc<CliCjsModuleExportAnalyzer>>,
   cjs_tracker: Deferred<Arc<CliCjsTracker>>,
   cli_options: Deferred<Arc<CliOptions>>,
   code_cache: Deferred<Arc<CodeCache>>,
@@ -804,17 +806,17 @@ impl CliFactory {
     Ok(())
   }
 
-  pub async fn node_code_translator(
+  pub async fn cjs_module_export_analyzer(
     &self,
-  ) -> Result<&Arc<CliNodeCodeTranslator>, AnyError> {
+  ) -> Result<&Arc<CliCjsModuleExportAnalyzer>, AnyError> {
     self
       .services
-      .node_code_translator
+      .cjs_module_export_analyzer
       .get_or_try_init_async(async {
         let node_resolver = self.node_resolver().await?.clone();
         let cjs_code_analyzer = self.create_cjs_code_analyzer()?;
 
-        Ok(Arc::new(NodeCodeTranslator::new(
+        Ok(Arc::new(CliCjsModuleExportAnalyzer::new(
           cjs_code_analyzer,
           self.in_npm_pkg_checker()?.clone(),
           node_resolver,
@@ -826,6 +828,21 @@ impl CliFactory {
       .await
   }
 
+  pub async fn node_code_translator(
+    &self,
+  ) -> Result<&Arc<CliNodeCodeTranslator>, AnyError> {
+    self
+      .services
+      .node_code_translator
+      .get_or_try_init_async(async {
+        let module_export_analyzer = self.cjs_module_export_analyzer().await?;
+        Ok(Arc::new(NodeCodeTranslator::new(
+          module_export_analyzer.clone(),
+        )))
+      })
+      .await
+  }
+
   fn create_cjs_code_analyzer(&self) -> Result<CliCjsCodeAnalyzer, AnyError> {
     let caches = self.caches()?;
     let node_analysis_cache = NodeAnalysisCache::new(caches.node_analysis_db());
@@ -1025,7 +1042,7 @@ impl CliFactory {
   ) -> Result<DenoCompileBinaryWriter, AnyError> {
     let cli_options = self.cli_options()?;
     Ok(DenoCompileBinaryWriter::new(
-      self.create_cjs_code_analyzer()?,
+      self.cjs_module_export_analyzer().await?,
       self.cjs_tracker()?,
       self.cli_options()?,
       self.deno_dir()?,
diff --git a/cli/lib/standalone/binary.rs b/cli/lib/standalone/binary.rs
index 516d120a2001a2..aa72a881b05ba9 100644
--- a/cli/lib/standalone/binary.rs
+++ b/cli/lib/standalone/binary.rs
@@ -9,7 +9,6 @@ use deno_runtime::deno_permissions::PermissionsOptions;
 use deno_runtime::deno_telemetry::OtelConfig;
 use deno_semver::Version;
 use indexmap::IndexMap;
-use node_resolver::analyze::CjsAnalysisExports;
 use serde::Deserialize;
 use serde::Serialize;
 use url::Url;
@@ -130,7 +129,8 @@ impl<'a> DenoRtDeserializable<'a> for SpecifierId {
 #[derive(Deserialize, Serialize)]
 pub enum CjsExportAnalysisEntry {
   Esm,
-  Cjs(CjsAnalysisExports),
+  Cjs(Vec<String>),
+  Error(String),
 }
 
 const HAS_TRANSPILED_FLAG: u8 = 1 << 0;
diff --git a/cli/node.rs b/cli/node.rs
index 2e87035cae04c2..eb864f2dcb2256 100644
--- a/cli/node.rs
+++ b/cli/node.rs
@@ -4,6 +4,7 @@ use std::borrow::Cow;
 use std::sync::Arc;
 
 use deno_ast::MediaType;
+use deno_ast::ModuleExportsAndReExports;
 use deno_ast::ModuleSpecifier;
 use deno_error::JsErrorBox;
 use deno_graph::ParsedSourceStore;
@@ -12,6 +13,8 @@ use deno_runtime::deno_fs;
 use node_resolver::analyze::CjsAnalysis as ExtNodeCjsAnalysis;
 use node_resolver::analyze::CjsAnalysisExports;
 use node_resolver::analyze::CjsCodeAnalyzer;
+use node_resolver::analyze::CjsModuleExportAnalyzer;
+use node_resolver::analyze::EsmAnalysisMode;
 use node_resolver::analyze::NodeCodeTranslator;
 use node_resolver::DenoIsBuiltInNodeModuleChecker;
 use serde::Deserialize;
@@ -24,6 +27,13 @@ use crate::npm::CliNpmResolver;
 use crate::resolver::CliCjsTracker;
 use crate::sys::CliSys;
 
+pub type CliCjsModuleExportAnalyzer = CjsModuleExportAnalyzer<
+  CliCjsCodeAnalyzer,
+  DenoInNpmPackageChecker,
+  DenoIsBuiltInNodeModuleChecker,
+  CliNpmResolver,
+  CliSys,
+>;
 pub type CliNodeCodeTranslator = NodeCodeTranslator<
   CliCjsCodeAnalyzer,
   DenoInNpmPackageChecker,
@@ -42,11 +52,11 @@ pub type CliPackageJsonResolver = node_resolver::PackageJsonResolver<CliSys>;
 pub enum CliCjsAnalysis {
   /// The module was found to be an ES module.
   Esm,
+  /// The module was found to be an ES module and
+  /// it was analyzed for imports and exports.
+  EsmAnalysis(ModuleExportsAndReExports),
   /// The module was CJS.
-  Cjs {
-    exports: Vec<String>,
-    reexports: Vec<String>,
-  },
+  Cjs(ModuleExportsAndReExports),
 }
 
 pub struct CliCjsCodeAnalyzer {
@@ -75,6 +85,7 @@ impl CliCjsCodeAnalyzer {
     &self,
     specifier: &ModuleSpecifier,
     source: &str,
+    esm_analysis_mode: EsmAnalysisMode,
   ) -> Result<CliCjsAnalysis, JsErrorBox> {
     let source_hash = CacheDBHash::from_hashable(source);
     if let Some(analysis) =
@@ -85,17 +96,16 @@ impl CliCjsCodeAnalyzer {
 
     let media_type = MediaType::from_specifier(specifier);
     if media_type == MediaType::Json {
-      return Ok(CliCjsAnalysis::Cjs {
-        exports: vec![],
-        reexports: vec![],
-      });
+      return Ok(CliCjsAnalysis::Cjs(Default::default()));
     }
 
     let cjs_tracker = self.cjs_tracker.clone();
     let is_maybe_cjs = cjs_tracker
       .is_maybe_cjs(specifier, media_type)
       .map_err(JsErrorBox::from_err)?;
-    let analysis = if is_maybe_cjs {
+    let analysis = if is_maybe_cjs
+      || esm_analysis_mode == EsmAnalysisMode::SourceImportsAndExports
+    {
       let maybe_parsed_source = self
         .parsed_source_cache
         .as_ref()
@@ -118,22 +128,27 @@ impl CliCjsCodeAnalyzer {
               })
             })
             .map_err(JsErrorBox::from_err)?;
-          let is_script = parsed_source.compute_is_script();
-          let is_cjs = cjs_tracker
-            .is_cjs_with_known_is_script(
-              parsed_source.specifier(),
-              media_type,
-              is_script,
-            )
-            .map_err(JsErrorBox::from_err)?;
+          let is_script = is_maybe_cjs && parsed_source.compute_is_script();
+          let is_cjs = is_maybe_cjs
+            && cjs_tracker
+              .is_cjs_with_known_is_script(
+                parsed_source.specifier(),
+                media_type,
+                is_script,
+              )
+              .map_err(JsErrorBox::from_err)?;
           if is_cjs {
             let analysis = parsed_source.analyze_cjs();
-            Ok(CliCjsAnalysis::Cjs {
-              exports: analysis.exports,
-              reexports: analysis.reexports,
-            })
+            Ok(CliCjsAnalysis::Cjs(analysis))
           } else {
-            Ok(CliCjsAnalysis::Esm)
+            match esm_analysis_mode {
+              EsmAnalysisMode::SourceOnly => Ok(CliCjsAnalysis::Esm),
+              EsmAnalysisMode::SourceImportsAndExports => {
+                Ok(CliCjsAnalysis::EsmAnalysis(
+                  parsed_source.analyze_es_runtime_exports(),
+                ))
+              }
+            }
           }
         }
       })
@@ -157,6 +172,7 @@ impl CjsCodeAnalyzer for CliCjsCodeAnalyzer {
     &self,
     specifier: &ModuleSpecifier,
     source: Option<Cow<'a, str>>,
+    esm_analysis_mode: EsmAnalysisMode,
   ) -> Result<ExtNodeCjsAnalysis<'a>, JsErrorBox> {
     let source = match source {
       Some(source) => source,
@@ -180,13 +196,22 @@ impl CjsCodeAnalyzer for CliCjsCodeAnalyzer {
         }
       }
     };
-    let analysis = self.inner_cjs_analysis(specifier, &source).await?;
+    let analysis = self
+      .inner_cjs_analysis(specifier, &source, esm_analysis_mode)
+      .await?;
     match analysis {
-      CliCjsAnalysis::Esm => Ok(ExtNodeCjsAnalysis::Esm(source)),
-      CliCjsAnalysis::Cjs { exports, reexports } => {
+      CliCjsAnalysis::Esm => Ok(ExtNodeCjsAnalysis::Esm(source, None)),
+      CliCjsAnalysis::EsmAnalysis(analysis) => Ok(ExtNodeCjsAnalysis::Esm(
+        source,
+        Some(CjsAnalysisExports {
+          exports: analysis.exports,
+          reexports: analysis.reexports,
+        }),
+      )),
+      CliCjsAnalysis::Cjs(analysis) => {
         Ok(ExtNodeCjsAnalysis::Cjs(CjsAnalysisExports {
-          exports,
-          reexports,
+          exports: analysis.exports,
+          reexports: analysis.reexports,
         }))
       }
     }
diff --git a/cli/rt/node.rs b/cli/rt/node.rs
index 5d2ba5c4e8035f..dca6cbfab4d0a2 100644
--- a/cli/rt/node.rs
+++ b/cli/rt/node.rs
@@ -13,6 +13,7 @@ use deno_resolver::npm::NpmReqResolver;
 use deno_runtime::deno_fs::FileSystem;
 use node_resolver::analyze::CjsAnalysis;
 use node_resolver::analyze::CjsAnalysisExports;
+use node_resolver::analyze::EsmAnalysisMode;
 use node_resolver::analyze::NodeCodeTranslator;
 use node_resolver::DenoIsBuiltInNodeModuleChecker;
 
@@ -96,11 +97,17 @@ impl CjsCodeAnalyzer {
           match data {
             CjsExportAnalysisEntry::Esm => {
               cjs_tracker.set_is_known_script(specifier, false);
-              CjsAnalysis::Esm(source)
+              CjsAnalysis::Esm(source, None)
             }
-            CjsExportAnalysisEntry::Cjs(analysis) => {
+            CjsExportAnalysisEntry::Cjs(exports) => {
               cjs_tracker.set_is_known_script(specifier, true);
-              CjsAnalysis::Cjs(analysis)
+              CjsAnalysis::Cjs(CjsAnalysisExports {
+                exports,
+                reexports: Vec::new(), // already resolved
+              })
+            }
+            CjsExportAnalysisEntry::Error(err) => {
+              return Err(JsErrorBox::generic(err));
             }
           }
         }
@@ -119,11 +126,11 @@ impl CjsCodeAnalyzer {
             }
           }
           // assume ESM as we don't have access to swc here
-          CjsAnalysis::Esm(source)
+          CjsAnalysis::Esm(source, None)
         }
       }
     } else {
-      CjsAnalysis::Esm(source)
+      CjsAnalysis::Esm(source, None)
     };
 
     Ok(analysis)
@@ -136,6 +143,7 @@ impl node_resolver::analyze::CjsCodeAnalyzer for CjsCodeAnalyzer {
     &self,
     specifier: &Url,
     source: Option<Cow<'a, str>>,
+    _esm_analysis_mode: EsmAnalysisMode,
   ) -> Result<CjsAnalysis<'a>, JsErrorBox> {
     let source = match source {
       Some(source) => source,
diff --git a/cli/rt/run.rs b/cli/rt/run.rs
index e78851caafb3ea..9c7091fa769a0b 100644
--- a/cli/rt/run.rs
+++ b/cli/rt/run.rs
@@ -74,6 +74,7 @@ use deno_runtime::permissions::RuntimePermissionDescriptorParser;
 use deno_runtime::WorkerExecutionMode;
 use deno_runtime::WorkerLogLevel;
 use deno_semver::npm::NpmPackageReqReference;
+use node_resolver::analyze::CjsModuleExportAnalyzer;
 use node_resolver::analyze::NodeCodeTranslator;
 use node_resolver::cache::NodeResolutionSys;
 use node_resolver::errors::ClosestPkgJsonError;
@@ -154,18 +155,9 @@ impl ModuleLoader for EmbeddedModuleLoader {
     &self,
     raw_specifier: &str,
     referrer: &str,
-    kind: ResolutionKind,
+    _kind: ResolutionKind,
   ) -> Result<Url, ModuleLoaderError> {
     let referrer = if referrer == "." {
-      if kind != ResolutionKind::MainModule {
-        return Err(
-          JsErrorBox::generic(format!(
-            "Expected to resolve main module, got {:?} instead.",
-            kind
-          ))
-          .into(),
-        );
-      }
       let current_dir = std::env::current_dir().unwrap();
       deno_core::resolve_path(".", &current_dir)
         .map_err(JsErrorBox::from_err)?
@@ -815,7 +807,7 @@ pub async fn run(
   }));
   let cjs_esm_code_analyzer =
     CjsCodeAnalyzer::new(cjs_tracker.clone(), modules.clone(), sys.clone());
-  let node_code_translator = Arc::new(NodeCodeTranslator::new(
+  let cjs_module_export_analyzer = Arc::new(CjsModuleExportAnalyzer::new(
     cjs_esm_code_analyzer,
     in_npm_pkg_checker,
     node_resolver.clone(),
@@ -823,6 +815,8 @@ pub async fn run(
     pkg_json_resolver.clone(),
     sys.clone(),
   ));
+  let node_code_translator =
+    Arc::new(NodeCodeTranslator::new(cjs_module_export_analyzer));
   let workspace_resolver = {
     let import_map = match metadata.workspace_resolver.import_map {
       Some(import_map) => Some(
diff --git a/cli/standalone/binary.rs b/cli/standalone/binary.rs
index c1eaebe926623b..4d730b96449675 100644
--- a/cli/standalone/binary.rs
+++ b/cli/standalone/binary.rs
@@ -52,8 +52,7 @@ use deno_path_util::url_from_directory_path;
 use deno_path_util::url_to_file_path;
 use deno_resolver::workspace::WorkspaceResolver;
 use indexmap::IndexMap;
-use node_resolver::analyze::CjsAnalysis;
-use node_resolver::analyze::CjsCodeAnalyzer;
+use node_resolver::analyze::ResolvedCjsAnalysis;
 
 use super::virtual_fs::output_vfs;
 use crate::args::CliOptions;
@@ -61,7 +60,7 @@ use crate::args::CompileFlags;
 use crate::cache::DenoDir;
 use crate::emit::Emitter;
 use crate::http_util::HttpClientProvider;
-use crate::node::CliCjsCodeAnalyzer;
+use crate::node::CliCjsModuleExportAnalyzer;
 use crate::npm::CliNpmResolver;
 use crate::resolver::CliCjsTracker;
 use crate::sys::CliSys;
@@ -190,7 +189,7 @@ pub struct WriteBinOptions<'a> {
 }
 
 pub struct DenoCompileBinaryWriter<'a> {
-  cjs_code_analyzer: CliCjsCodeAnalyzer,
+  cjs_module_export_analyzer: &'a CliCjsModuleExportAnalyzer,
   cjs_tracker: &'a CliCjsTracker,
   cli_options: &'a CliOptions,
   deno_dir: &'a DenoDir,
@@ -204,7 +203,7 @@ pub struct DenoCompileBinaryWriter<'a> {
 impl<'a> DenoCompileBinaryWriter<'a> {
   #[allow(clippy::too_many_arguments)]
   pub fn new(
-    cjs_code_analyzer: CliCjsCodeAnalyzer,
+    cjs_module_export_analyzer: &'a CliCjsModuleExportAnalyzer,
     cjs_tracker: &'a CliCjsTracker,
     cli_options: &'a CliOptions,
     deno_dir: &'a DenoDir,
@@ -215,7 +214,7 @@ impl<'a> DenoCompileBinaryWriter<'a> {
     npm_system_info: NpmSystemInfo,
   ) -> Self {
     Self {
-      cjs_code_analyzer,
+      cjs_module_export_analyzer,
       cjs_tracker,
       cli_options,
       deno_dir,
@@ -423,16 +422,18 @@ impl<'a> DenoCompileBinaryWriter<'a> {
               m.is_script,
             )? {
               let cjs_analysis = self
-                .cjs_code_analyzer
-                .analyze_cjs(
+                .cjs_module_export_analyzer
+                .analyze_all_exports(
                   module.specifier(),
                   Some(Cow::Borrowed(m.source.as_ref())),
                 )
                 .await?;
               maybe_cjs_analysis = Some(match cjs_analysis {
-                CjsAnalysis::Esm(_) => CjsExportAnalysisEntry::Esm,
-                CjsAnalysis::Cjs(exports) => {
-                  CjsExportAnalysisEntry::Cjs(exports)
+                ResolvedCjsAnalysis::Esm(_) => CjsExportAnalysisEntry::Esm,
+                ResolvedCjsAnalysis::Cjs(exports) => {
+                  CjsExportAnalysisEntry::Cjs(
+                    exports.into_iter().collect::<Vec<_>>(),
+                  )
                 }
               });
             } else {
@@ -544,26 +545,24 @@ impl<'a> DenoCompileBinaryWriter<'a> {
           .file_bytes(file.offset)
           .map(|text| String::from_utf8_lossy(text));
         let cjs_analysis_result = self
-          .cjs_code_analyzer
-          .analyze_cjs(&specifier, maybe_source)
+          .cjs_module_export_analyzer
+          .analyze_all_exports(&specifier, maybe_source)
           .await;
-        let maybe_analysis = match cjs_analysis_result {
-          Ok(CjsAnalysis::Esm(_)) => Some(CjsExportAnalysisEntry::Esm),
-          Ok(CjsAnalysis::Cjs(exports)) => {
-            Some(CjsExportAnalysisEntry::Cjs(exports))
+        let analysis = match cjs_analysis_result {
+          Ok(ResolvedCjsAnalysis::Esm(_)) => CjsExportAnalysisEntry::Esm,
+          Ok(ResolvedCjsAnalysis::Cjs(exports)) => {
+            CjsExportAnalysisEntry::Cjs(exports.into_iter().collect::<Vec<_>>())
           }
           Err(err) => {
             log::debug!(
-              "Ignoring cjs export analysis for '{}': {}",
+              "Had cjs export analysis error for '{}': {}",
               specifier,
               err
             );
-            None
+            CjsExportAnalysisEntry::Error(err.to_string())
           }
         };
-        if let Some(analysis) = &maybe_analysis {
-          to_add.push((file_path, bincode::serialize(analysis)?));
-        }
+        to_add.push((file_path, bincode::serialize(&analysis)?));
       }
     }
     for (file_path, analysis) in to_add {
diff --git a/resolvers/node/analyze.rs b/resolvers/node/analyze.rs
index 79d442ffd26fe9..5c402fbb3cf0c0 100644
--- a/resolvers/node/analyze.rs
+++ b/resolvers/node/analyze.rs
@@ -36,7 +36,7 @@ use crate::UrlOrPathRef;
 pub enum CjsAnalysis<'a> {
   /// File was found to be an ES module and the translator should
   /// load the code as ESM.
-  Esm(Cow<'a, str>),
+  Esm(Cow<'a, str>, Option<CjsAnalysisExports>),
   Cjs(CjsAnalysisExports),
 }
 
@@ -46,6 +46,13 @@ pub struct CjsAnalysisExports {
   pub reexports: Vec<String>,
 }
 
+/// What parts of an ES module should be analyzed.
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub enum EsmAnalysisMode {
+  SourceOnly,
+  SourceImportsAndExports,
+}
+
 /// Code analyzer for CJS and ESM files.
 #[async_trait::async_trait(?Send)]
 pub trait CjsCodeAnalyzer {
@@ -60,31 +67,33 @@ pub trait CjsCodeAnalyzer {
     &self,
     specifier: &Url,
     maybe_source: Option<Cow<'a, str>>,
+    esm_analysis_mode: EsmAnalysisMode,
   ) -> Result<CjsAnalysis<'a>, JsErrorBox>;
 }
 
-#[derive(Debug, thiserror::Error, deno_error::JsError)]
-pub enum TranslateCjsToEsmError {
-  #[class(inherit)]
-  #[error(transparent)]
-  CjsCodeAnalysis(JsErrorBox),
-  #[class(inherit)]
-  #[error(transparent)]
-  ExportAnalysis(JsErrorBox),
+pub enum ResolvedCjsAnalysis<'a> {
+  Esm(Cow<'a, str>),
+  Cjs(BTreeSet<String>),
 }
 
-#[derive(Debug, thiserror::Error, deno_error::JsError)]
-#[class(generic)]
-#[error("Could not load '{reexport}' ({reexport_specifier}) referenced from {referrer}")]
-pub struct CjsAnalysisCouldNotLoadError {
-  reexport: String,
-  reexport_specifier: Url,
-  referrer: Url,
-  #[source]
-  source: JsErrorBox,
-}
+#[allow(clippy::disallowed_types)]
+pub type CjsModuleExportAnalyzerRc<
+  TCjsCodeAnalyzer,
+  TInNpmPackageChecker,
+  TIsBuiltInNodeModuleChecker,
+  TNpmPackageFolderResolver,
+  TSys,
+> = crate::sync::MaybeArc<
+  CjsModuleExportAnalyzer<
+    TCjsCodeAnalyzer,
+    TInNpmPackageChecker,
+    TIsBuiltInNodeModuleChecker,
+    TNpmPackageFolderResolver,
+    TSys,
+  >,
+>;
 
-pub struct NodeCodeTranslator<
+pub struct CjsModuleExportAnalyzer<
   TCjsCodeAnalyzer: CjsCodeAnalyzer,
   TInNpmPackageChecker: InNpmPackageChecker,
   TIsBuiltInNodeModuleChecker: IsBuiltInNodeModuleChecker,
@@ -111,7 +120,7 @@ impl<
     TNpmPackageFolderResolver: NpmPackageFolderResolver,
     TSys: FsCanonicalize + FsMetadata + FsRead,
   >
-  NodeCodeTranslator<
+  CjsModuleExportAnalyzer<
     TCjsCodeAnalyzer,
     TInNpmPackageChecker,
     TIsBuiltInNodeModuleChecker,
@@ -142,36 +151,24 @@ impl<
     }
   }
 
-  /// Translates given CJS module into ESM. This function will perform static
-  /// analysis on the file to find defined exports and reexports.
-  ///
-  /// For all discovered reexports the analysis will be performed recursively.
-  ///
-  /// If successful a source code for equivalent ES module is returned.
-  pub async fn translate_cjs_to_esm<'a>(
+  pub async fn analyze_all_exports<'a>(
     &self,
     entry_specifier: &Url,
     source: Option<Cow<'a, str>>,
-  ) -> Result<Cow<'a, str>, TranslateCjsToEsmError> {
-    let mut temp_var_count = 0;
-
+  ) -> Result<ResolvedCjsAnalysis<'a>, TranslateCjsToEsmError> {
     let analysis = self
       .cjs_code_analyzer
-      .analyze_cjs(entry_specifier, source)
+      .analyze_cjs(entry_specifier, source, EsmAnalysisMode::SourceOnly)
       .await
       .map_err(TranslateCjsToEsmError::CjsCodeAnalysis)?;
 
     let analysis = match analysis {
-      CjsAnalysis::Esm(source) => return Ok(source),
+      CjsAnalysis::Esm(source, _) => {
+        return Ok(ResolvedCjsAnalysis::Esm(source))
+      }
       CjsAnalysis::Cjs(analysis) => analysis,
     };
 
-    let mut source = vec![
-      r#"import {createRequire as __internalCreateRequire, Module as __internalModule } from "node:module";
-      const require = __internalCreateRequire(import.meta.url);"#
-        .to_string(),
-    ];
-
     // use a BTreeSet to make the output deterministic for v8's code cache
     let mut all_exports = analysis.exports.into_iter().collect::<BTreeSet<_>>();
 
@@ -193,38 +190,7 @@ impl<
       }
     }
 
-    source.push(format!(
-      r#"let mod;
-      if (import.meta.main) {{
-        mod = __internalModule._load("{0}", null, true)
-      }} else {{
-        mod = require("{0}");
-      }}"#,
-      url_to_file_path(entry_specifier)
-        .unwrap()
-        .to_str()
-        .unwrap()
-        .replace('\\', "\\\\")
-        .replace('\'', "\\\'")
-        .replace('\"', "\\\"")
-    ));
-
-    for export in &all_exports {
-      if !matches!(export.as_str(), "default" | "module.exports") {
-        add_export(
-          &mut source,
-          export,
-          &format!("mod[{}]", to_double_quote_string(export)),
-          &mut temp_var_count,
-        );
-      }
-    }
-
-    source.push("export default mod;".to_string());
-    add_export(&mut source, "module.exports", "mod", &mut temp_var_count);
-
-    let translated_source = source.join("\n");
-    Ok(Cow::Owned(translated_source))
+    Ok(ResolvedCjsAnalysis::Cjs(all_exports))
   }
 
   #[allow(clippy::needless_lifetimes)]
@@ -239,7 +205,6 @@ impl<
   ) {
     struct Analysis {
       reexport_specifier: url::Url,
-      referrer: url::Url,
       analysis: CjsAnalysis<'static>,
     }
 
@@ -288,7 +253,11 @@ impl<
           let referrer = referrer.clone();
           let future = async move {
             let analysis = cjs_code_analyzer
-              .analyze_cjs(&reexport_specifier, None)
+              .analyze_cjs(
+                &reexport_specifier,
+                None,
+                EsmAnalysisMode::SourceImportsAndExports,
+              )
               .await
               .map_err(|source| {
                 JsErrorBox::from_err(CjsAnalysisCouldNotLoadError {
@@ -301,7 +270,6 @@ impl<
 
             Ok(Analysis {
               reexport_specifier,
-              referrer,
               analysis,
             })
           }
@@ -321,7 +289,6 @@ impl<
       // 2. Look at the analysis result and resolve its exports and re-exports
       let Analysis {
         reexport_specifier,
-        referrer,
         analysis,
       } = match analysis_result {
         Ok(analysis) => analysis,
@@ -331,14 +298,7 @@ impl<
         }
       };
       match analysis {
-        CjsAnalysis::Esm(_) => {
-          // todo(dsherret): support this once supporting requiring ES modules
-          errors.push(JsErrorBox::generic(format!(
-            "Cannot require ES module '{}' from '{}'",
-            reexport_specifier, referrer,
-          )));
-        }
-        CjsAnalysis::Cjs(analysis) => {
+        CjsAnalysis::Cjs(analysis) | CjsAnalysis::Esm(_, Some(analysis)) => {
           if !analysis.reexports.is_empty() {
             handle_reexports(
               reexport_specifier.clone(),
@@ -355,6 +315,10 @@ impl<
               .filter(|e| e.as_str() != "default"),
           );
         }
+        CjsAnalysis::Esm(_, None) => {
+          // should not hit this due to EsmAnalysisMode::SourceImportsAndExports
+          debug_assert!(false);
+        }
       }
     }
   }
@@ -526,6 +490,137 @@ impl<
   }
 }
 
+#[derive(Debug, thiserror::Error, deno_error::JsError)]
+pub enum TranslateCjsToEsmError {
+  #[class(inherit)]
+  #[error(transparent)]
+  CjsCodeAnalysis(JsErrorBox),
+  #[class(inherit)]
+  #[error(transparent)]
+  ExportAnalysis(JsErrorBox),
+}
+
+#[derive(Debug, thiserror::Error, deno_error::JsError)]
+#[class(generic)]
+#[error("Could not load '{reexport}' ({reexport_specifier}) referenced from {referrer}")]
+pub struct CjsAnalysisCouldNotLoadError {
+  reexport: String,
+  reexport_specifier: Url,
+  referrer: Url,
+  #[source]
+  source: JsErrorBox,
+}
+
+pub struct NodeCodeTranslator<
+  TCjsCodeAnalyzer: CjsCodeAnalyzer,
+  TInNpmPackageChecker: InNpmPackageChecker,
+  TIsBuiltInNodeModuleChecker: IsBuiltInNodeModuleChecker,
+  TNpmPackageFolderResolver: NpmPackageFolderResolver,
+  TSys: FsCanonicalize + FsMetadata + FsRead,
+> {
+  module_export_analyzer: CjsModuleExportAnalyzerRc<
+    TCjsCodeAnalyzer,
+    TInNpmPackageChecker,
+    TIsBuiltInNodeModuleChecker,
+    TNpmPackageFolderResolver,
+    TSys,
+  >,
+}
+
+impl<
+    TCjsCodeAnalyzer: CjsCodeAnalyzer,
+    TInNpmPackageChecker: InNpmPackageChecker,
+    TIsBuiltInNodeModuleChecker: IsBuiltInNodeModuleChecker,
+    TNpmPackageFolderResolver: NpmPackageFolderResolver,
+    TSys: FsCanonicalize + FsMetadata + FsRead,
+  >
+  NodeCodeTranslator<
+    TCjsCodeAnalyzer,
+    TInNpmPackageChecker,
+    TIsBuiltInNodeModuleChecker,
+    TNpmPackageFolderResolver,
+    TSys,
+  >
+{
+  pub fn new(
+    module_export_analyzer: CjsModuleExportAnalyzerRc<
+      TCjsCodeAnalyzer,
+      TInNpmPackageChecker,
+      TIsBuiltInNodeModuleChecker,
+      TNpmPackageFolderResolver,
+      TSys,
+    >,
+  ) -> Self {
+    Self {
+      module_export_analyzer,
+    }
+  }
+
+  /// Translates given CJS module into ESM. This function will perform static
+  /// analysis on the file to find defined exports and reexports.
+  ///
+  /// For all discovered reexports the analysis will be performed recursively.
+  ///
+  /// If successful a source code for equivalent ES module is returned.
+  pub async fn translate_cjs_to_esm<'a>(
+    &self,
+    entry_specifier: &Url,
+    source: Option<Cow<'a, str>>,
+  ) -> Result<Cow<'a, str>, TranslateCjsToEsmError> {
+    let analysis = self
+      .module_export_analyzer
+      .analyze_all_exports(entry_specifier, source)
+      .await?;
+
+    let all_exports = match analysis {
+      ResolvedCjsAnalysis::Esm(source) => return Ok(source),
+      ResolvedCjsAnalysis::Cjs(all_exports) => all_exports,
+    };
+
+    // todo(dsherret): use capacity_builder here to remove all these heap
+    // allocations and make the string writing faster
+    let mut temp_var_count = 0;
+    let mut source = vec![
+      r#"import {createRequire as __internalCreateRequire, Module as __internalModule } from "node:module";
+      const require = __internalCreateRequire(import.meta.url);"#
+        .to_string(),
+    ];
+
+    source.push(format!(
+      r#"let mod;
+      if (import.meta.main) {{
+        mod = __internalModule._load("{0}", null, true)
+      }} else {{
+        mod = require("{0}");
+      }}"#,
+      url_to_file_path(entry_specifier)
+        .unwrap()
+        .to_str()
+        .unwrap()
+        .replace('\\', "\\\\")
+        .replace('\'', "\\\'")
+        .replace('\"', "\\\"")
+    ));
+
+    for export in &all_exports {
+      if !matches!(export.as_str(), "default" | "module.exports") {
+        add_export(
+          &mut source,
+          export,
+          &format!("mod[{}]", to_double_quote_string(export)),
+          &mut temp_var_count,
+        );
+      }
+    }
+
+    source.push("export default mod;".to_string());
+    add_export(&mut source, "module.exports", "mod", &mut temp_var_count);
+
+    let translated_source = source.join("\n");
+    Ok(Cow::Owned(translated_source))
+  }
+}
+
 static RESERVED_WORDS: Lazy<HashSet<&str>> = Lazy::new(|| {
   HashSet::from([
     "abstract",
diff --git a/tests/specs/node/require_esm_reexport_esm/__test__.jsonc b/tests/specs/node/require_esm_reexport_esm/__test__.jsonc
new file mode 100644
index 00000000000000..c16ec25c0a5ec9
--- /dev/null
+++ b/tests/specs/node/require_esm_reexport_esm/__test__.jsonc
@@ -0,0 +1,19 @@
+{
+  "tests": {
+    "run": {
+      "args": "run -A main.mjs",
+      "output": "run.out"
+    },
+    "compile": {
+      "tempDir": true,
+      "steps": [{
+        "args": "compile -A --output out main.mjs",
+        "output": "[WILDCARD]"
+      }, {
+        "commandName": "./out",
+        "args": [],
+        "output": "run.out"
+      }]
+    }
+  }
+}
diff --git a/tests/specs/node/require_esm_reexport_esm/add.mjs b/tests/specs/node/require_esm_reexport_esm/add.mjs
new file mode 100644
index 00000000000000..7d658310b0d95f
--- /dev/null
+++ b/tests/specs/node/require_esm_reexport_esm/add.mjs
@@ -0,0 +1,3 @@
+export function add(a, b) {
+  return a + b;
+}
diff --git a/tests/specs/node/require_esm_reexport_esm/main.mjs b/tests/specs/node/require_esm_reexport_esm/main.mjs
new file mode 100644
index 00000000000000..8388eb5a47c658
--- /dev/null
+++ b/tests/specs/node/require_esm_reexport_esm/main.mjs
@@ -0,0 +1,4 @@
+import mod, { add } from "./mod1.cjs";
+console.log(mod);
+console.log(mod.add(1, 2));
+console.log(add(1, 2));
diff --git a/tests/specs/node/require_esm_reexport_esm/mod1.cjs b/tests/specs/node/require_esm_reexport_esm/mod1.cjs
new file mode 100644
index 00000000000000..b3ef3e24dd2cbb
--- /dev/null
+++ b/tests/specs/node/require_esm_reexport_esm/mod1.cjs
@@ -0,0 +1 @@
+module.exports = require("./mod2.cjs");
diff --git a/tests/specs/node/require_esm_reexport_esm/mod2.cjs b/tests/specs/node/require_esm_reexport_esm/mod2.cjs
new file mode 100644
index 00000000000000..e9346a862d56cf
--- /dev/null
+++ b/tests/specs/node/require_esm_reexport_esm/mod2.cjs
@@ -0,0 +1 @@
+module.exports = require("./add.mjs");
diff --git a/tests/specs/node/require_esm_reexport_esm/run.out b/tests/specs/node/require_esm_reexport_esm/run.out
new file mode 100644
index 00000000000000..b846dfdaa300bb
--- /dev/null
+++ b/tests/specs/node/require_esm_reexport_esm/run.out
@@ -0,0 +1,3 @@
+[Module: null prototype] { add: [Function: add] }
+3
+3
diff --git a/tests/specs/node/require_esm_reexport_esm_module_exports/__test__.jsonc b/tests/specs/node/require_esm_reexport_esm_module_exports/__test__.jsonc
new file mode 100644
index 00000000000000..c16ec25c0a5ec9
--- /dev/null
+++ b/tests/specs/node/require_esm_reexport_esm_module_exports/__test__.jsonc
@@ -0,0 +1,19 @@
+{
+  "tests": {
+    "run": {
+      "args": "run -A main.mjs",
+      "output": "run.out"
+    },
+    "compile": {
+      "tempDir": true,
+      "steps": [{
+        "args": "compile -A --output out main.mjs",
+        "output": "[WILDCARD]"
+      }, {
+        "commandName": "./out",
+        "args": [],
+        "output": "run.out"
+      }]
+    }
+  }
+}
diff --git a/tests/specs/node/require_esm_reexport_esm_module_exports/add.mjs b/tests/specs/node/require_esm_reexport_esm_module_exports/add.mjs
new file mode 100644
index 00000000000000..ce7c8bbfbe1be0
--- /dev/null
+++ b/tests/specs/node/require_esm_reexport_esm_module_exports/add.mjs
@@ -0,0 +1,5 @@
+function add(a, b) {
+  return a + b;
+}
+
+export { add as "module.exports" };
diff --git a/tests/specs/node/require_esm_reexport_esm_module_exports/main.mjs b/tests/specs/node/require_esm_reexport_esm_module_exports/main.mjs
new file mode 100644
index 00000000000000..3237d7030a0c08
--- /dev/null
+++ b/tests/specs/node/require_esm_reexport_esm_module_exports/main.mjs
@@ -0,0 +1,2 @@
+import add from "./mod1.cjs";
+console.log(add(1, 2));
diff --git a/tests/specs/node/require_esm_reexport_esm_module_exports/mod1.cjs b/tests/specs/node/require_esm_reexport_esm_module_exports/mod1.cjs
new file mode 100644
index 00000000000000..b3ef3e24dd2cbb
--- /dev/null
+++ b/tests/specs/node/require_esm_reexport_esm_module_exports/mod1.cjs
@@ -0,0 +1 @@
+module.exports = require("./mod2.cjs");
diff --git a/tests/specs/node/require_esm_reexport_esm_module_exports/mod2.cjs b/tests/specs/node/require_esm_reexport_esm_module_exports/mod2.cjs
new file mode 100644
index 00000000000000..e9346a862d56cf
--- /dev/null
+++ b/tests/specs/node/require_esm_reexport_esm_module_exports/mod2.cjs
@@ -0,0 +1 @@
+module.exports = require("./add.mjs");
diff --git a/tests/specs/node/require_esm_reexport_esm_module_exports/run.out b/tests/specs/node/require_esm_reexport_esm_module_exports/run.out
new file mode 100644
index 00000000000000..00750edc07d641
--- /dev/null
+++ b/tests/specs/node/require_esm_reexport_esm_module_exports/run.out
@@ -0,0 +1 @@
+3

From e6637ab6f14e9010a4e99ef65872cf1bb8f2174e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= <biwanczuk@gmail.com>
Date: Wed, 5 Mar 2025 22:25:56 +0000
Subject: [PATCH 065/115] chore(internal): reland eszip changes (#28294)

Co-authored-by: David Sherret <dsherret@gmail.com>
---
 Cargo.lock                                 |  44 +++++++-
 Cargo.toml                                 |   3 +-
 cli/Cargo.toml                             |   1 +
 cli/args/flags.rs                          |  25 ++++-
 cli/args/mod.rs                            |   4 +
 cli/factory.rs                             |  73 +++++++++++--
 cli/main.rs                                |  13 ++-
 cli/module_loader.rs                       | 105 ++++++++++++++++++
 cli/tools/compile.rs                       | 119 +++++++++++++++++++++
 cli/tools/run/mod.rs                       |  68 ++++++++++++
 tests/specs/run/eszip/__test__.jsonc       |   5 +
 tests/specs/run/eszip/a.eszip              | Bin 0 -> 358 bytes
 tests/specs/run/eszip/b.eszip              | Bin 0 -> 113 bytes
 tests/specs/run/eszip/main.out             |   2 +
 tests/specs/run/eszip2/__test__.jsonc      |  15 +++
 tests/specs/run/eszip2/a.out               |   4 +
 tests/specs/run/eszip2/src/a.js            |   7 ++
 tests/specs/run/eszip2/src/b.js            |   6 ++
 tests/specs/run/eszip2/src/c.js            |   3 +
 tests/specs/run/eszip2/src/d.js            |   3 +
 tests/specs/run/eszip2/src/import_map.json |   7 ++
 21 files changed, 488 insertions(+), 19 deletions(-)
 create mode 100644 tests/specs/run/eszip/__test__.jsonc
 create mode 100644 tests/specs/run/eszip/a.eszip
 create mode 100644 tests/specs/run/eszip/b.eszip
 create mode 100644 tests/specs/run/eszip/main.out
 create mode 100644 tests/specs/run/eszip2/__test__.jsonc
 create mode 100644 tests/specs/run/eszip2/a.out
 create mode 100644 tests/specs/run/eszip2/src/a.js
 create mode 100644 tests/specs/run/eszip2/src/b.js
 create mode 100644 tests/specs/run/eszip2/src/c.js
 create mode 100644 tests/specs/run/eszip2/src/d.js
 create mode 100644 tests/specs/run/eszip2/src/import_map.json

diff --git a/Cargo.lock b/Cargo.lock
index 4e90ccd5ac1857..26c212e86d1480 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1521,6 +1521,7 @@ dependencies = [
  "dprint-plugin-jupyter",
  "dprint-plugin-markdown",
  "dprint-plugin-typescript",
+ "eszip",
  "fancy-regex",
  "faster-hex",
  "flate2",
@@ -1903,9 +1904,9 @@ dependencies = [
 
 [[package]]
 name = "deno_error"
-version = "0.5.5"
+version = "0.5.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c23dbc46d5804814b08b4675838f9884e3a52916987ec5105af36d42f9911b5"
+checksum = "19fae9fe305307b5ef3ee4e8244c79cffcca421ab0ce8634dea0c6b1342f220f"
 dependencies = [
  "deno_error_macro",
  "libc",
@@ -1917,9 +1918,9 @@ dependencies = [
 
 [[package]]
 name = "deno_error_macro"
-version = "0.5.5"
+version = "0.5.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "babccedee31ce7e57c3e6dff2cb3ab8d68c49d0df8222fe0d11d628e65192790"
+checksum = "5abb2556e91848b66f562451fcbcdee2a3b7c88281828908dcf7cca355f5d997"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3487,6 +3488,30 @@ version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "31ae425815400e5ed474178a7a22e275a9687086a12ca63ec793ff292d8fdae8"
 
+[[package]]
+name = "eszip"
+version = "0.83.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39f4ac1d111015e1740ec02306e01801156d8a7832785ef0b73ea217ddc65769"
+dependencies = [
+ "anyhow",
+ "async-trait",
+ "base64 0.21.7",
+ "deno_ast",
+ "deno_error",
+ "deno_graph",
+ "deno_npm",
+ "deno_semver",
+ "futures",
+ "hashlink 0.8.4",
+ "indexmap 2.7.1",
+ "serde",
+ "serde_json",
+ "sha2",
+ "thiserror 2.0.3",
+ "url",
+]
+
 [[package]]
 name = "fallible-iterator"
 version = "0.3.0"
@@ -4151,6 +4176,15 @@ dependencies = [
  "foldhash",
 ]
 
+[[package]]
+name = "hashlink"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7"
+dependencies = [
+ "hashbrown 0.14.5",
+]
+
 [[package]]
 name = "hashlink"
 version = "0.9.1"
@@ -6927,7 +6961,7 @@ dependencies = [
  "bitflags 2.8.0",
  "fallible-iterator",
  "fallible-streaming-iterator",
- "hashlink",
+ "hashlink 0.9.1",
  "libsqlite3-sys",
  "smallvec",
 ]
diff --git a/Cargo.toml b/Cargo.toml
index 834a8f4d04059b..40e56347f14062 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -66,6 +66,7 @@ deno_permissions = { version = "0.53.0", path = "./runtime/permissions" }
 deno_runtime = { version = "0.202.0", path = "./runtime" }
 deno_semver = "=0.7.1"
 deno_terminal = "0.2.0"
+eszip = "0.83.0"
 napi_sym = { version = "0.124.0", path = "./ext/napi/sym" }
 test_util = { package = "test_server", path = "./tests/util/server" }
 
@@ -149,7 +150,7 @@ dashmap = "5.5.3"
 data-encoding = "2.3.3"
 data-url = "=0.3.1"
 deno_cache_dir = "=0.18.0"
-deno_error = "=0.5.5"
+deno_error = "=0.5.6"
 deno_native_certs = "0.3.0"
 deno_package_json = { version = "=0.5.1", default-features = false }
 deno_task_shell = "=0.20.2"
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index 778fe1888eba72..af6a847cf76f45 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -89,6 +89,7 @@ deno_snapshots.workspace = true
 deno_task_shell.workspace = true
 deno_telemetry.workspace = true
 deno_terminal.workspace = true
+eszip.workspace = true
 libsui.workspace = true
 node_resolver.workspace = true
 
diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index 7f7318d735b472..33033593621588 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -127,6 +127,7 @@ pub struct CompileFlags {
   pub no_terminal: bool,
   pub icon: Option<String>,
   pub include: Vec<String>,
+  pub eszip: bool,
 }
 
 impl CompileFlags {
@@ -676,6 +677,7 @@ pub struct Flags {
   pub code_cache_enabled: bool,
   pub permissions: PermissionFlags,
   pub allow_scripts: PackagesAllowedScripts,
+  pub eszip: bool,
 }
 
 #[derive(Clone, Debug, Eq, PartialEq, Default, Serialize, Deserialize)]
@@ -3838,6 +3840,14 @@ fn runtime_misc_args(app: Command) -> Command {
     .arg(seed_arg())
     .arg(enable_testing_features_arg())
     .arg(strace_ops_arg())
+    .arg(eszip_arg())
+}
+
+fn eszip_arg() -> Arg {
+  Arg::new("eszip-internal-do-not-use")
+    .hide(true)
+    .long("eszip-internal-do-not-use")
+    .action(ArgAction::SetTrue)
 }
 
 fn allow_import_arg() -> Arg {
@@ -4608,6 +4618,7 @@ fn compile_parse(
   let target = matches.remove_one::<String>("target");
   let icon = matches.remove_one::<String>("icon");
   let no_terminal = matches.get_flag("no-terminal");
+  let eszip = matches.get_flag("eszip-internal-do-not-use");
   let include = match matches.remove_many::<String>("include") {
     Some(f) => f.collect(),
     None => vec![],
@@ -4624,6 +4635,7 @@ fn compile_parse(
     no_terminal,
     icon,
     include,
+    eszip,
   });
 
   Ok(())
@@ -5721,9 +5733,16 @@ fn runtime_args_parse(
   enable_testing_features_arg_parse(flags, matches);
   env_file_arg_parse(flags, matches);
   strace_ops_parse(flags, matches);
+  eszip_arg_parse(flags, matches);
   Ok(())
 }
 
+fn eszip_arg_parse(flags: &mut Flags, matches: &mut ArgMatches) {
+  if matches.get_flag("eszip-internal-do-not-use") {
+    flags.eszip = true;
+  }
+}
+
 fn inspect_arg_parse(flags: &mut Flags, matches: &mut ArgMatches) {
   flags.inspect = matches.remove_one::<SocketAddr>("inspect");
   flags.inspect_brk = matches.remove_one::<SocketAddr>("inspect-brk");
@@ -10308,7 +10327,8 @@ mod tests {
           target: None,
           no_terminal: false,
           icon: None,
-          include: vec![]
+          include: vec![],
+          eszip: false,
         }),
         type_check_mode: TypeCheckMode::Local,
         code_cache_enabled: true,
@@ -10332,7 +10352,8 @@ mod tests {
           target: None,
           no_terminal: true,
           icon: Some(String::from("favicon.ico")),
-          include: vec![]
+          include: vec![],
+          eszip: false
         }),
         import_map_path: Some("import_map.json".to_string()),
         no_remote: true,
diff --git a/cli/args/mod.rs b/cli/args/mod.rs
index d59a4e4d362c88..682e17de1b7fb1 100644
--- a/cli/args/mod.rs
+++ b/cli/args/mod.rs
@@ -599,6 +599,10 @@ impl CliOptions {
     }
   }
 
+  pub fn eszip(&self) -> bool {
+    self.flags.eszip
+  }
+
   pub fn otel_config(&self) -> OtelConfig {
     self.flags.otel_config()
   }
diff --git a/cli/factory.rs b/cli/factory.rs
index f8248ef8284f63..c88b102605b6e8 100644
--- a/cli/factory.rs
+++ b/cli/factory.rs
@@ -78,6 +78,7 @@ use crate::graph_util::ModuleGraphBuilder;
 use crate::graph_util::ModuleGraphCreator;
 use crate::http_util::HttpClientProvider;
 use crate::module_loader::CliModuleLoaderFactory;
+use crate::module_loader::EszipModuleLoader;
 use crate::module_loader::ModuleLoadPreparer;
 use crate::node::CliCjsCodeAnalyzer;
 use crate::node::CliCjsModuleExportAnalyzer;
@@ -149,10 +150,36 @@ impl RootCertStoreProvider for CliRootCertStoreProvider {
   }
 }
 
+#[derive(Debug)]
+struct EszipModuleLoaderProvider {
+  cli_options: Arc<CliOptions>,
+  deferred: once_cell::sync::OnceCell<Arc<EszipModuleLoader>>,
+}
+
+impl EszipModuleLoaderProvider {
+  pub async fn get(&self) -> Result<Option<&Arc<EszipModuleLoader>>, AnyError> {
+    if self.cli_options.eszip() {
+      if let DenoSubcommand::Run(run_flags) = self.cli_options.sub_command() {
+        if self.deferred.get().is_none() {
+          let eszip_loader = EszipModuleLoader::create(
+            &run_flags.script,
+            self.cli_options.initial_cwd(),
+          )
+          .await?;
+          _ = self.deferred.set(Arc::new(eszip_loader));
+        }
+        return Ok(Some(self.deferred.get().unwrap()));
+      }
+    }
+    Ok(None)
+  }
+}
+
 #[derive(Debug)]
 struct CliSpecifiedImportMapProvider {
   cli_options: Arc<CliOptions>,
   file_fetcher: Arc<CliFileFetcher>,
+  eszip_module_loader_provider: Arc<EszipModuleLoaderProvider>,
   workspace_external_import_map_loader: Arc<WorkspaceExternalImportMapLoader>,
 }
 
@@ -182,14 +209,17 @@ impl SpecifiedImportMapProvider for CliSpecifiedImportMapProvider {
       self.cli_options.resolve_specified_import_map_specifier()?;
     match maybe_import_map_specifier {
       Some(specifier) => {
-        let value = resolve_import_map_value_from_specifier(
-          &specifier,
-          &self.file_fetcher,
-        )
-        .await
-        .with_context(|| {
-          format!("Unable to load '{}' import map", specifier)
-        })?;
+        let value = match self.eszip_module_loader_provider.get().await? {
+          Some(eszip) => eszip.load_import_map_value(&specifier)?,
+          None => resolve_import_map_value_from_specifier(
+            &specifier,
+            &self.file_fetcher,
+          )
+          .await
+          .with_context(|| {
+            format!("Unable to load '{}' import map", specifier)
+          })?,
+        };
         Ok(Some(deno_resolver::workspace::SpecifiedImportMap {
           base_url: specifier,
           value,
@@ -226,6 +256,12 @@ impl<T> Default for Deferred<T> {
   }
 }
 
+impl<T: std::fmt::Debug> std::fmt::Debug for Deferred<T> {
+  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+    f.debug_tuple("Deferred").field(&self.0).finish()
+  }
+}
+
 impl<T> Deferred<T> {
   #[inline(always)]
   pub fn get_or_try_init(
@@ -270,6 +306,7 @@ struct CliFactoryServices {
   deno_dir_provider: Deferred<Arc<DenoDirProvider>>,
   emit_cache: Deferred<Arc<EmitCache>>,
   emitter: Deferred<Arc<Emitter>>,
+  eszip_module_loader_provider: Deferred<Arc<EszipModuleLoaderProvider>>,
   feature_checker: Deferred<Arc<FeatureChecker>>,
   file_fetcher: Deferred<Arc<CliFileFetcher>>,
   found_pkg_json_dep_flag: Arc<FoundPackageJsonDepFlag>,
@@ -455,6 +492,20 @@ impl CliFactory {
     })
   }
 
+  fn eszip_module_loader_provider(
+    &self,
+  ) -> Result<&Arc<EszipModuleLoaderProvider>, AnyError> {
+    self
+      .services
+      .eszip_module_loader_provider
+      .get_or_try_init(|| {
+        Ok(Arc::new(EszipModuleLoaderProvider {
+          cli_options: self.cli_options()?.clone(),
+          deferred: Default::default(),
+        }))
+      })
+  }
+
   pub fn file_fetcher(&self) -> Result<&Arc<CliFileFetcher>, AnyError> {
     self.services.file_fetcher.get_or_try_init(|| {
       let cli_options = self.cli_options()?;
@@ -651,6 +702,9 @@ impl CliFactory {
           npm_system_info: self.flags.subcommand.npm_system_info(),
           specified_import_map: Some(Box::new(CliSpecifiedImportMapProvider {
             cli_options: self.cli_options()?.clone(),
+            eszip_module_loader_provider: self
+              .eszip_module_loader_provider()?
+              .clone(),
             file_fetcher: self.file_fetcher()?.clone(),
             workspace_external_import_map_loader: self
               .workspace_external_import_map_loader()?
@@ -1120,6 +1174,8 @@ impl CliFactory {
       Arc::new(NpmRegistryReadPermissionChecker::new(self.sys(), mode))
     };
 
+    let maybe_eszip_loader =
+      self.eszip_module_loader_provider()?.get().await?.cloned();
     let module_loader_factory = CliModuleLoaderFactory::new(
       cli_options,
       cjs_tracker,
@@ -1145,6 +1201,7 @@ impl CliFactory {
       self.parsed_source_cache().clone(),
       self.resolver().await?.clone(),
       self.sys(),
+      maybe_eszip_loader,
     );
 
     let lib_main_worker_factory = LibMainWorkerFactory::new(
diff --git a/cli/main.rs b/cli/main.rs
index 9a0e4fcde6c11c..1dc4762db8e452 100644
--- a/cli/main.rs
+++ b/cli/main.rs
@@ -116,7 +116,7 @@ async fn run_subcommand(flags: Arc<Flags>) -> Result<i32, AnyError> {
     }),
     DenoSubcommand::Bench(bench_flags) => spawn_subcommand(async {
       if bench_flags.watch.is_some() {
-        tools::bench::run_benchmarks_with_watch(flags, bench_flags).await
+        tools::bench::run_benchmarks_with_watch(flags, bench_flags).boxed_local().await
       } else {
         tools::bench::run_benchmarks(flags, bench_flags).await
       }
@@ -138,7 +138,11 @@ async fn run_subcommand(flags: Arc<Flags>) -> Result<i32, AnyError> {
       tools::clean::clean(flags)
     }),
     DenoSubcommand::Compile(compile_flags) => spawn_subcommand(async {
-      tools::compile::compile(flags, compile_flags).await
+      if compile_flags.eszip {
+        tools::compile::compile_eszip(flags, compile_flags).boxed_local().await
+      } else {
+        tools::compile::compile(flags, compile_flags).await
+      }
     }),
     DenoSubcommand::Coverage(coverage_flags) => spawn_subcommand(async {
       tools::coverage::cover_files(flags, coverage_flags)
@@ -202,7 +206,10 @@ async fn run_subcommand(flags: Arc<Flags>) -> Result<i32, AnyError> {
     }
     DenoSubcommand::Run(run_flags) => spawn_subcommand(async move {
       if run_flags.is_stdin() {
-        tools::run::run_from_stdin(flags.clone()).await
+        // these futures are boxed to prevent stack overflows on Windows
+        tools::run::run_from_stdin(flags.clone()).boxed_local().await
+      } else if flags.eszip {
+        tools::run::run_eszip(flags, run_flags).boxed_local().await
       } else {
         let result = tools::run::run_script(WorkerExecutionMode::Run, flags.clone(), run_flags.watch).await;
         match result {
diff --git a/cli/module_loader.rs b/cli/module_loader.rs
index 9839ac5ca6d288..ea5df880cc948f 100644
--- a/cli/module_loader.rs
+++ b/cli/module_loader.rs
@@ -2,6 +2,7 @@
 
 use std::borrow::Cow;
 use std::cell::RefCell;
+use std::collections::HashMap;
 use std::path::Path;
 use std::path::PathBuf;
 use std::pin::Pin;
@@ -13,12 +14,19 @@ use std::sync::Arc;
 
 use deno_ast::MediaType;
 use deno_ast::ModuleKind;
+use deno_core::anyhow::bail;
+use deno_core::anyhow::Context as _;
 use deno_core::error::AnyError;
 use deno_core::error::ModuleLoaderError;
 use deno_core::futures::future::FutureExt;
+use deno_core::futures::io::BufReader;
+use deno_core::futures::stream::FuturesOrdered;
 use deno_core::futures::Future;
+use deno_core::futures::StreamExt;
 use deno_core::parking_lot::Mutex;
 use deno_core::resolve_url;
+use deno_core::resolve_url_or_path;
+use deno_core::serde_json;
 use deno_core::ModuleCodeString;
 use deno_core::ModuleLoader;
 use deno_core::ModuleSource;
@@ -51,12 +59,14 @@ use deno_runtime::deno_node::ops::require::UnableToGetCwdError;
 use deno_runtime::deno_node::NodeRequireLoader;
 use deno_runtime::deno_permissions::PermissionsContainer;
 use deno_semver::npm::NpmPackageReqReference;
+use eszip::EszipV2;
 use node_resolver::errors::ClosestPkgJsonError;
 use node_resolver::DenoIsBuiltInNodeModuleChecker;
 use node_resolver::InNpmPackageChecker;
 use node_resolver::NodeResolutionKind;
 use node_resolver::ResolutionMode;
 use sys_traits::FsRead;
+use tokio_util::compat::TokioAsyncReadCompatExt;
 
 use crate::args::jsr_url;
 use crate::args::CliLockfile;
@@ -280,6 +290,7 @@ struct SharedCliModuleLoaderState {
   resolver: Arc<CliResolver>,
   sys: CliSys,
   in_flight_loads_tracker: InFlightModuleLoadsTracker,
+  maybe_eszip_loader: Option<Arc<EszipModuleLoader>>,
 }
 
 struct InFlightModuleLoadsTracker {
@@ -342,6 +353,7 @@ impl CliModuleLoaderFactory {
     parsed_source_cache: Arc<ParsedSourceCache>,
     resolver: Arc<CliResolver>,
     sys: CliSys,
+    maybe_eszip_loader: Option<Arc<EszipModuleLoader>>,
   ) -> Self {
     Self {
       shared: Arc::new(SharedCliModuleLoaderState {
@@ -374,6 +386,7 @@ impl CliModuleLoaderFactory {
           cleanup_task_timeout: 10_000,
           cleanup_task_handle: Arc::new(Mutex::new(None)),
         },
+        maybe_eszip_loader,
       }),
     }
   }
@@ -1037,6 +1050,11 @@ impl<TGraphContainer: ModuleGraphContainer> ModuleLoader
     requested_module_type: RequestedModuleType,
   ) -> deno_core::ModuleLoadResponse {
     let inner = self.0.clone();
+
+    if let Some(eszip_loader) = &inner.shared.maybe_eszip_loader {
+      return eszip_loader.load(specifier);
+    }
+
     let specifier = specifier.clone();
     let maybe_referrer = maybe_referrer.cloned();
     deno_core::ModuleLoadResponse::Async(
@@ -1064,6 +1082,10 @@ impl<TGraphContainer: ModuleGraphContainer> ModuleLoader
       return Box::pin(deno_core::futures::future::ready(Ok(())));
     }
 
+    if self.0.shared.maybe_eszip_loader.is_some() {
+      return Box::pin(deno_core::futures::future::ready(Ok(())));
+    }
+
     let specifier = specifier.clone();
     let inner = self.0.clone();
 
@@ -1318,6 +1340,89 @@ impl<TGraphContainer: ModuleGraphContainer> NodeRequireLoader
   }
 }
 
+#[derive(Debug, Default)]
+pub struct EszipModuleLoader {
+  files: HashMap<ModuleSpecifier, Arc<[u8]>>,
+}
+
+impl EszipModuleLoader {
+  pub async fn create(script: &str, cwd: &Path) -> Result<Self, AnyError> {
+    // entrypoint#path1,path2,...
+    let (_entrypoint, files) = script
+      .split_once("#")
+      .with_context(|| "eszip: invalid script string")?;
+
+    // TODO: handle paths that contain ','
+    let files = files.split(",").collect::<Vec<_>>();
+    let mut loaded_eszips = FuturesOrdered::new();
+    for path in files {
+      let file = tokio::fs::File::open(path).await?;
+      let eszip = BufReader::new(file.compat());
+      let path = path.to_string();
+
+      loaded_eszips.push_back(async move {
+        let (eszip, loader) = EszipV2::parse(eszip)
+          .await
+          .with_context(|| format!("Error parsing eszip header at {}", path))?;
+        loader
+          .await
+          .with_context(|| format!("Error loading eszip at {}", path))?;
+        Ok(eszip)
+      });
+    }
+    // At this point all eszips are fully loaded
+    let loaded_eszips: Vec<Result<EszipV2, AnyError>> =
+      loaded_eszips.collect::<Vec<_>>().await;
+
+    let mut loader = Self::default();
+
+    for loaded_eszip_result in loaded_eszips {
+      let loaded_eszip = loaded_eszip_result?;
+      let specifiers = loaded_eszip.specifiers();
+      loader.files.reserve(specifiers.len());
+
+      for specifier in specifiers {
+        let module = loaded_eszip.get_module(&specifier).unwrap();
+        let source = module.take_source().await.unwrap();
+        let resolved_specifier = resolve_url_or_path(&specifier, cwd)?;
+        let prev = loader.files.insert(resolved_specifier, source);
+        assert!(prev.is_none());
+      }
+    }
+
+    Ok(loader)
+  }
+
+  pub fn load_import_map_value(
+    &self,
+    specifier: &ModuleSpecifier,
+  ) -> Result<serde_json::Value, AnyError> {
+    match self.files.get(specifier) {
+      Some(bytes) => Ok(serde_json::from_slice(bytes.as_ref())?),
+      None => bail!("Import map not found in eszip: {}", specifier),
+    }
+  }
+
+  fn load(&self, specifier: &ModuleSpecifier) -> deno_core::ModuleLoadResponse {
+    match self.files.get(specifier) {
+      Some(source) => {
+        let module_source = ModuleSource::new(
+          ModuleType::JavaScript,
+          ModuleSourceCode::Bytes(deno_core::ModuleCodeBytes::Arc(
+            source.clone(),
+          )),
+          specifier,
+          None,
+        );
+        deno_core::ModuleLoadResponse::Sync(Ok(module_source))
+      }
+      None => {
+        deno_core::ModuleLoadResponse::Sync(Err(ModuleLoaderError::NotFound))
+      }
+    }
+  }
+}
+
 #[cfg(test)]
 mod tests {
   use deno_graph::ParsedSourceStore;
diff --git a/cli/tools/compile.rs b/cli/tools/compile.rs
index 6183ceb9126e38..c9260b5ec844ca 100644
--- a/cli/tools/compile.rs
+++ b/cli/tools/compile.rs
@@ -2,6 +2,7 @@
 
 use std::collections::HashSet;
 use std::collections::VecDeque;
+use std::io::Write as _;
 use std::path::Path;
 use std::path::PathBuf;
 use std::sync::Arc;
@@ -146,6 +147,122 @@ pub async fn compile(
   Ok(())
 }
 
+pub async fn compile_eszip(
+  flags: Arc<Flags>,
+  compile_flags: CompileFlags,
+) -> Result<(), AnyError> {
+  let factory = CliFactory::from_flags(flags);
+  let cli_options = factory.cli_options()?;
+  let module_graph_creator = factory.module_graph_creator().await?;
+  let parsed_source_cache = factory.parsed_source_cache();
+  let tsconfig_resolver = factory.tsconfig_resolver()?;
+  let http_client = factory.http_client_provider();
+  let entrypoint = cli_options.resolve_main_module()?;
+  let mut output_path = resolve_compile_executable_output_path(
+    http_client,
+    &compile_flags,
+    cli_options.initial_cwd(),
+  )
+  .await?;
+  output_path.set_extension("eszip");
+
+  let maybe_import_map_specifier =
+    cli_options.resolve_specified_import_map_specifier()?;
+  let (module_roots, _include_files) = get_module_roots_and_include_files(
+    entrypoint,
+    &url_from_file_path(&cli_options.initial_cwd().join(&output_path))?,
+    &compile_flags,
+    cli_options.initial_cwd(),
+  )?;
+
+  let graph = Arc::try_unwrap(
+    module_graph_creator
+      .create_graph_and_maybe_check(module_roots.clone())
+      .await?,
+  )
+  .unwrap();
+  let graph = if cli_options.type_check_mode().is_true() {
+    // In this case, the previous graph creation did type checking, which will
+    // create a module graph with types information in it. We don't want to
+    // store that in the binary so create a code only module graph from scratch.
+    module_graph_creator
+      .create_graph(
+        GraphKind::CodeOnly,
+        module_roots,
+        crate::graph_util::NpmCachingStrategy::Eager,
+      )
+      .await?
+  } else {
+    graph
+  };
+
+  let transpile_and_emit_options = tsconfig_resolver
+    .transpile_and_emit_options(cli_options.workspace().root_dir())?;
+  let transpile_options = transpile_and_emit_options.transpile.clone();
+  let emit_options = transpile_and_emit_options.emit.clone();
+
+  let parser = parsed_source_cache.as_capturing_parser();
+  let root_dir_url = cli_options.workspace().root_dir();
+  log::debug!("Binary root dir: {}", root_dir_url);
+  let relative_file_base = eszip::EszipRelativeFileBaseUrl::new(root_dir_url);
+  let mut eszip = eszip::EszipV2::from_graph(eszip::FromGraphOptions {
+    graph,
+    parser,
+    transpile_options,
+    emit_options,
+    relative_file_base: Some(relative_file_base),
+    npm_packages: None,
+    module_kind_resolver: Default::default(),
+  })?;
+
+  if let Some(import_map_specifier) = maybe_import_map_specifier {
+    let import_map_path = import_map_specifier.to_file_path().unwrap();
+    let import_map_content = std::fs::read_to_string(&import_map_path)
+      .with_context(|| {
+        format!("Failed to read import map: {:?}", import_map_path)
+      })?;
+
+    let import_map_specifier_str = if let Some(relative_import_map_specifier) =
+      root_dir_url.make_relative(&import_map_specifier)
+    {
+      relative_import_map_specifier
+    } else {
+      import_map_specifier.to_string()
+    };
+
+    eszip.add_import_map(
+      eszip::ModuleKind::Json,
+      import_map_specifier_str,
+      import_map_content.as_bytes().to_vec().into(),
+    );
+  }
+
+  log::info!(
+    "{} {} to {}",
+    colors::green("Compile"),
+    entrypoint,
+    output_path.display(),
+  );
+  validate_output_path(&output_path)?;
+
+  let mut file = std::fs::File::create(&output_path).with_context(|| {
+    format!("Opening ESZip file '{}'", output_path.display())
+  })?;
+
+  let write_result = {
+    let r = file.write_all(&eszip.into_bytes());
+    drop(file);
+    r
+  };
+
+  if let Err(err) = write_result {
+    let _ = std::fs::remove_file(output_path);
+    return Err(err.into());
+  }
+
+  Ok(())
+}
+
 /// This function writes out a final binary to specified path. If output path
 /// is not already standalone binary it will return error instead.
 fn validate_output_path(output_path: &Path) -> Result<(), AnyError> {
@@ -357,6 +474,7 @@ mod test {
         no_terminal: false,
         icon: None,
         include: vec![],
+        eszip: true,
       },
       &std::env::current_dir().unwrap(),
     )
@@ -382,6 +500,7 @@ mod test {
         include: vec![],
         icon: None,
         no_terminal: false,
+        eszip: true,
       },
       &std::env::current_dir().unwrap(),
     )
diff --git a/cli/tools/run/mod.rs b/cli/tools/run/mod.rs
index ecf1bd52f3e247..efc63a94fb0c4f 100644
--- a/cli/tools/run/mod.rs
+++ b/cli/tools/run/mod.rs
@@ -5,11 +5,17 @@ use std::sync::Arc;
 
 use deno_cache_dir::file_fetcher::File;
 use deno_config::deno_json::NodeModulesDirMode;
+use deno_core::anyhow::Context;
 use deno_core::error::AnyError;
+use deno_core::resolve_url_or_path;
+use deno_lib::standalone::binary::SerializedWorkspaceResolverImportMap;
 use deno_runtime::WorkerExecutionMode;
+use eszip::EszipV2;
+use jsonc_parser::ParseOptions;
 
 use crate::args::EvalFlags;
 use crate::args::Flags;
+use crate::args::RunFlags;
 use crate::args::WatchFlagsWithPaths;
 use crate::factory::CliFactory;
 use crate::npm::installer::PackageCaching;
@@ -219,3 +225,65 @@ pub async fn maybe_npm_install(factory: &CliFactory) -> Result<(), AnyError> {
   }
   Ok(())
 }
+
+pub async fn run_eszip(
+  flags: Arc<Flags>,
+  run_flags: RunFlags,
+) -> Result<i32, AnyError> {
+  // TODO(bartlomieju): actually I think it will also fail if there's an import
+  // map specified and bare specifier is used on the command line
+  let factory = CliFactory::from_flags(flags.clone());
+  let cli_options = factory.cli_options()?;
+
+  // entrypoint#path1,path2,...
+  let (entrypoint, _files) = run_flags
+    .script
+    .split_once("#")
+    .with_context(|| "eszip: invalid script string")?;
+
+  let mode = WorkerExecutionMode::Run;
+  let main_module = resolve_url_or_path(entrypoint, cli_options.initial_cwd())?;
+  let worker_factory = factory.create_cli_main_worker_factory().await?;
+  let mut worker = worker_factory
+    .create_main_worker(mode, main_module.clone())
+    .await?;
+
+  let exit_code = worker.run().await?;
+  Ok(exit_code)
+}
+
+#[allow(unused)]
+async fn load_import_map(
+  eszips: &[EszipV2],
+  specifier: &str,
+) -> Result<SerializedWorkspaceResolverImportMap, AnyError> {
+  let maybe_module = eszips
+    .iter()
+    .rev()
+    .find_map(|eszip| eszip.get_import_map(specifier));
+  let Some(module) = maybe_module else {
+    return Err(AnyError::msg(format!("import map not found '{specifier}'")));
+  };
+  let base_url = deno_core::url::Url::parse(specifier).map_err(|err| {
+    AnyError::msg(format!(
+      "import map specifier '{specifier}' is not a valid url: {err}"
+    ))
+  })?;
+  let bytes = module
+    .source()
+    .await
+    .ok_or_else(|| AnyError::msg("import map not found '{specifier}'"))?;
+  let text = String::from_utf8_lossy(&bytes);
+  let json_value =
+    jsonc_parser::parse_to_serde_value(&text, &ParseOptions::default())
+      .map_err(|err| {
+        AnyError::msg(format!("import map failed to parse: {err}"))
+      })?
+      .ok_or_else(|| AnyError::msg("import map is not valid JSON"))?;
+  let import_map = import_map::parse_from_value(base_url, json_value)?;
+
+  Ok(SerializedWorkspaceResolverImportMap {
+    specifier: specifier.to_string(),
+    json: import_map.import_map.to_json(),
+  })
+}
diff --git a/tests/specs/run/eszip/__test__.jsonc b/tests/specs/run/eszip/__test__.jsonc
new file mode 100644
index 00000000000000..11cc301faa599a
--- /dev/null
+++ b/tests/specs/run/eszip/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+  "args": "run --eszip-internal-do-not-use src/main.ts#a.eszip,b.eszip",
+  "exitCode": 0,
+  "output": "main.out"
+}
diff --git a/tests/specs/run/eszip/a.eszip b/tests/specs/run/eszip/a.eszip
new file mode 100644
index 0000000000000000000000000000000000000000..2a2eb5724ed155b82f3bbe0e8f0ccf54e6f49a3e
GIT binary patch
literal 358
zcmaKm!D<3A5QZc4R9_;UlZ7;bz3raDQbbg!^k&mTT%)99CrgrTE8>g#G)=mt=%s<l
zpUnLH^F6(+XU`KpA%xrzGDt%1QVoNz$Bi<`W5~UH=Dm>fuabG~FgUBZb^8%4)Iocy
z3TmC&>MadjUF#5bowWzJFK^YSGLf35bv}-Ok8SopZ1{V~)0BBW!iV<3IE3PnL2#W<
z0Z_cc1q{6XO)7^`W6TEql~d{QR7$*rlK)c4v{>R5m%IY&4S6N1<_9G`8`ZW3_X!My
bs03RHv0_sprmRZ;GS!+bg;@4i?!oCBhz)8p

literal 0
HcmV?d00001

diff --git a/tests/specs/run/eszip/b.eszip b/tests/specs/run/eszip/b.eszip
new file mode 100644
index 0000000000000000000000000000000000000000..4916c0bc1ae274bac97e946060398e7a70e0f7e2
GIT binary patch
literal 113
zcmZ<_j`9pJ(lcUUU|?ZjU<6VODnQIvT$HSzlUSKrq?@FdRSXga0bK}%Aa#@T^NRCx
rQuT83(>0WQKpGU1tQ2zc6H`)C6pBlelT(X}(@Jx4DwQ;?xj^~=a^x4G

literal 0
HcmV?d00001

diff --git a/tests/specs/run/eszip/main.out b/tests/specs/run/eszip/main.out
new file mode 100644
index 00000000000000..c75c2398f2d72d
--- /dev/null
+++ b/tests/specs/run/eszip/main.out
@@ -0,0 +1,2 @@
+Layer a: loaded successfully
+Layer b: loaded successfully
diff --git a/tests/specs/run/eszip2/__test__.jsonc b/tests/specs/run/eszip2/__test__.jsonc
new file mode 100644
index 00000000000000..64c483d2490893
--- /dev/null
+++ b/tests/specs/run/eszip2/__test__.jsonc
@@ -0,0 +1,15 @@
+{
+  "tempDir": true,
+  "steps": [
+    {
+      "args": "compile --eszip-internal-do-not-use --import-map ./src/import_map.json ./src/a.js",
+      "exitCode": 0,
+      "output": "[WILDCARD]"
+    },
+    {
+      "args": "run --eszip-internal-do-not-use --import-map import_map.json a.js#a.eszip",
+      "exitCode": 0,
+      "output": "./a.out"
+    }
+  ]
+}
diff --git a/tests/specs/run/eszip2/a.out b/tests/specs/run/eszip2/a.out
new file mode 100644
index 00000000000000..8e924e3ec02a89
--- /dev/null
+++ b/tests/specs/run/eszip2/a.out
@@ -0,0 +1,4 @@
+Hello from a
+Hello from d
+Hello from b
+Hello from c
diff --git a/tests/specs/run/eszip2/src/a.js b/tests/specs/run/eszip2/src/a.js
new file mode 100644
index 00000000000000..b373e65a674c2d
--- /dev/null
+++ b/tests/specs/run/eszip2/src/a.js
@@ -0,0 +1,7 @@
+import { b } from "b";
+
+console.log("Hello from a");
+b();
+
+const { c } = await import("c");
+c();
diff --git a/tests/specs/run/eszip2/src/b.js b/tests/specs/run/eszip2/src/b.js
new file mode 100644
index 00000000000000..6711bc093d49e3
--- /dev/null
+++ b/tests/specs/run/eszip2/src/b.js
@@ -0,0 +1,6 @@
+import { d } from "d";
+
+export function b() {
+  d();
+  console.log("Hello from b");
+}
diff --git a/tests/specs/run/eszip2/src/c.js b/tests/specs/run/eszip2/src/c.js
new file mode 100644
index 00000000000000..9647458fd07d00
--- /dev/null
+++ b/tests/specs/run/eszip2/src/c.js
@@ -0,0 +1,3 @@
+export function c() {
+  console.log("Hello from c");
+}
diff --git a/tests/specs/run/eszip2/src/d.js b/tests/specs/run/eszip2/src/d.js
new file mode 100644
index 00000000000000..891164f0d601a5
--- /dev/null
+++ b/tests/specs/run/eszip2/src/d.js
@@ -0,0 +1,3 @@
+export function d() {
+  console.log("Hello from d");
+}
diff --git a/tests/specs/run/eszip2/src/import_map.json b/tests/specs/run/eszip2/src/import_map.json
new file mode 100644
index 00000000000000..818fb9587a1676
--- /dev/null
+++ b/tests/specs/run/eszip2/src/import_map.json
@@ -0,0 +1,7 @@
+{
+  "imports": {
+    "b": "./b.js",
+    "c": "./c.js",
+    "d": "./d.js"
+  }
+}

From e5794401700430d42bcae42c7e20dce9697864aa Mon Sep 17 00:00:00 2001
From: Nayeem Rahman <nayeemrmn99@gmail.com>
Date: Thu, 6 Mar 2025 18:00:44 +0000
Subject: [PATCH 066/115] fix(lsp): silence errors from "codeAction/resolve"
 (#28400)

---
 cli/lsp/language_server.rs | 48 ++++++++++++++++++++++++--------------
 1 file changed, 30 insertions(+), 18 deletions(-)

diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index d39049f654f04d..781321820ab542 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -2070,7 +2070,7 @@ impl Inner {
         })?;
       let asset_or_doc = self.get_asset_or_document(&action_data.specifier)?;
       let line_index = asset_or_doc.line_index();
-      let mut refactor_edit_info = self
+      let refactor_edit_info = self
         .ts_server
         .get_edits_for_refactor(
           self.snapshot(),
@@ -2083,8 +2083,8 @@ impl Inner {
             .into(),
           line_index.offset_tsc(action_data.range.start)?
             ..line_index.offset_tsc(action_data.range.end)?,
-          action_data.refactor_name,
-          action_data.action_name,
+          action_data.refactor_name.clone(),
+          action_data.action_name.clone(),
           Some(tsc::UserPreferences::from_config_for_specifier(
             &self.config,
             &action_data.specifier,
@@ -2103,22 +2103,34 @@ impl Inner {
             );
             LspError::invalid_request()
           }
-        })?;
-      if kind_suffix == ".rewrite.function.returnType"
-        || kind_suffix == ".move.newFile"
-      {
-        refactor_edit_info.edits =
-          fix_ts_import_changes(&refactor_edit_info.edits, self, token)
-            .map_err(|err| {
-              if token.is_cancelled() {
-                LspError::request_cancelled()
-              } else {
-                error!("Unable to fix import changes: {:#}", err);
-                LspError::internal_error()
-              }
-            })?
+        });
+      match refactor_edit_info {
+        Ok(mut refactor_edit_info) => {
+          if kind_suffix == ".rewrite.function.returnType"
+            || kind_suffix == ".move.newFile"
+          {
+            refactor_edit_info.edits =
+              fix_ts_import_changes(&refactor_edit_info.edits, self, token)
+                .map_err(|err| {
+                  if token.is_cancelled() {
+                    LspError::request_cancelled()
+                  } else {
+                    error!("Unable to fix import changes: {:#}", err);
+                    LspError::internal_error()
+                  }
+                })?
+          }
+          code_action.edit =
+            refactor_edit_info.to_workspace_edit(self, token)?;
+        }
+        Err(err) => {
+          if token.is_cancelled() {
+            return Err(LspError::request_cancelled());
+          } else {
+            lsp_warn!("Unable to get refactor edit info from TypeScript: {:#}\nCode action data: {:#}", err, json!(&action_data));
+          }
+        }
       }
-      code_action.edit = refactor_edit_info.to_workspace_edit(self, token)?;
       code_action
     } else {
       // The code action doesn't need to be resolved

From 0ef3f6ba887d7aed2d94c8b622563d13bfecda2c Mon Sep 17 00:00:00 2001
From: Nayeem Rahman <nayeemrmn99@gmail.com>
Date: Thu, 6 Mar 2025 18:05:25 +0000
Subject: [PATCH 067/115] perf(lsp): lazily start the ts server (#28392)

---
 cli/lsp/diagnostics.rs         |  1 -
 cli/lsp/language_server.rs     | 50 +++++++++++--------
 cli/lsp/tsc.rs                 | 91 +++++++++++++++++++++-------------
 tests/integration/lsp_tests.rs |  4 +-
 4 files changed, 86 insertions(+), 60 deletions(-)

diff --git a/cli/lsp/diagnostics.rs b/cli/lsp/diagnostics.rs
index 29629db47b83b6..a30b269428faee 100644
--- a/cli/lsp/diagnostics.rs
+++ b/cli/lsp/diagnostics.rs
@@ -2022,7 +2022,6 @@ let c: number = "a";
     .await;
     let snapshot = Arc::new(snapshot);
     let ts_server = TsServer::new(Default::default());
-    ts_server.start(None).unwrap();
 
     // test enabled
     {
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index 781321820ab542..12bdd5d3113e70 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -213,9 +213,7 @@ pub struct Inner {
   registered_semantic_tokens_capabilities: bool,
   pub resolver: Arc<LspResolver>,
   task_queue: LanguageServerTaskQueue,
-  /// A memoized version of fixable diagnostic codes retrieved from TypeScript.
-  ts_fixable_diagnostics: Vec<String>,
-  /// An abstraction that handles interactions with TypeScript.
+  ts_fixable_diagnostics: tokio::sync::OnceCell<Vec<String>>,
   pub ts_server: Arc<TsServer>,
   /// A map of specifiers and URLs used to translate over the LSP.
   pub url_map: urls::LspUrlMap,
@@ -621,6 +619,19 @@ impl Inner {
     })
   }
 
+  pub async fn ts_fixable_diagnostics(&self) -> &Vec<String> {
+    self
+      .ts_fixable_diagnostics
+      .get_or_init(|| async {
+        self
+          .ts_server
+          .get_supported_code_fixes(self.snapshot())
+          .await
+          .unwrap()
+      })
+      .await
+  }
+
   pub fn update_tracing(&mut self) {
     let tracing =
       self
@@ -777,7 +788,7 @@ impl Inner {
 
 // lspower::LanguageServer methods. This file's LanguageServer delegates to us.
 impl Inner {
-  async fn initialize(
+  fn initialize(
     &mut self,
     params: InitializeParams,
   ) -> LspResult<InitializeResult> {
@@ -862,26 +873,13 @@ impl Inner {
     }
 
     self.diagnostics_server.start();
-    if let Err(e) = self
+    self
       .ts_server
-      .start(self.config.internal_inspect().to_address())
-    {
-      lsp_warn!("{}", e);
-      self.client.show_message(MessageType::ERROR, e);
-      return Err(tower_lsp::jsonrpc::Error::internal_error());
-    };
+      .set_inspector_server_addr(self.config.internal_inspect().to_address());
 
     self.update_tracing();
     self.update_debug_flag();
 
-    if capabilities.code_action_provider.is_some() {
-      let fixable_diagnostics = self
-        .ts_server
-        .get_supported_code_fixes(self.snapshot())
-        .await?;
-      self.ts_fixable_diagnostics = fixable_diagnostics;
-    }
-
     if capabilities.semantic_tokens_provider.is_some() {
       self.registered_semantic_tokens_capabilities = true;
     }
@@ -1746,6 +1744,7 @@ impl Inner {
     let line_index = asset_or_doc.line_index();
 
     // QuickFix
+    let ts_fixable_diagnosics = self.ts_fixable_diagnostics().await;
     let fixable_diagnostics: Vec<&Diagnostic> = params
       .context
       .diagnostics
@@ -1754,10 +1753,10 @@ impl Inner {
         Some(source) => match source.as_str() {
           "deno-ts" => match &d.code {
             Some(NumberOrString::String(code)) => {
-              self.ts_fixable_diagnostics.contains(code)
+              ts_fixable_diagnosics.contains(code)
             }
             Some(NumberOrString::Number(code)) => {
-              self.ts_fixable_diagnostics.contains(&code.to_string())
+              ts_fixable_diagnosics.contains(&code.to_string())
             }
             _ => false,
           },
@@ -3399,6 +3398,9 @@ impl Inner {
     params: RenameFilesParams,
     token: &CancellationToken,
   ) -> LspResult<Option<WorkspaceEdit>> {
+    if !self.ts_server.is_started() {
+      return Ok(None);
+    }
     let mut changes = vec![];
     for rename in params.files {
       let old_specifier = self.url_map.uri_to_specifier(
@@ -3461,6 +3463,10 @@ impl Inner {
     params: WorkspaceSymbolParams,
     token: &CancellationToken,
   ) -> LspResult<Option<Vec<SymbolInformation>>> {
+    if !self.ts_server.is_started() {
+      return Ok(None);
+    }
+
     let mark = self.performance.mark_with_args("lsp.symbol", &params);
 
     let navigate_to_items = self
@@ -3588,7 +3594,7 @@ impl tower_lsp::LanguageServer for LanguageServer {
     &self,
     params: InitializeParams,
   ) -> LspResult<InitializeResult> {
-    self.inner.write().await.initialize(params).await
+    self.inner.write().await.initialize(params)
   }
 
   async fn initialized(&self, _: InitializedParams) {
diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs
index a8bbf08649d56b..c2c1664b7d8749 100644
--- a/cli/lsp/tsc.rs
+++ b/cli/lsp/tsc.rs
@@ -19,7 +19,6 @@ use std::thread;
 use dashmap::DashMap;
 use deno_ast::MediaType;
 use deno_core::anyhow::anyhow;
-use deno_core::anyhow::Context as _;
 use deno_core::convert::Smi;
 use deno_core::convert::ToV8;
 use deno_core::error::AnyError;
@@ -245,9 +244,11 @@ pub struct TsServer {
   sender: mpsc::UnboundedSender<Request>,
   receiver: Mutex<Option<mpsc::UnboundedReceiver<Request>>>,
   pub specifier_map: Arc<TscSpecifierMap>,
+  inspector_server_addr: Mutex<Option<String>>,
   inspector_server: Mutex<Option<Arc<InspectorServer>>>,
   pending_change: Mutex<Option<PendingChange>>,
   enable_tracing: Arc<AtomicBool>,
+  start_once: std::sync::Once,
 }
 
 impl std::fmt::Debug for TsServer {
@@ -257,7 +258,9 @@ impl std::fmt::Debug for TsServer {
       .field("sender", &self.sender)
       .field("receiver", &self.receiver)
       .field("specifier_map", &self.specifier_map)
+      .field("inspector_server_addr", &self.inspector_server_addr.lock())
       .field("inspector_server", &self.inspector_server.lock().is_some())
+      .field("start_once", &self.start_once)
       .finish()
   }
 }
@@ -404,9 +407,11 @@ impl TsServer {
       sender: tx,
       receiver: Mutex::new(Some(request_rx)),
       specifier_map: Arc::new(TscSpecifierMap::new()),
+      inspector_server_addr: Mutex::new(None),
       inspector_server: Mutex::new(None),
       pending_change: Mutex::new(None),
       enable_tracing: Default::default(),
+      start_once: std::sync::Once::new(),
     }
   }
 
@@ -416,40 +421,53 @@ impl TsServer {
       .store(enabled, std::sync::atomic::Ordering::Relaxed);
   }
 
-  pub fn start(
-    &self,
-    inspector_server_addr: Option<String>,
-  ) -> Result<(), AnyError> {
-    let maybe_inspector_server = match inspector_server_addr {
-      Some(addr) => {
-        let addr: SocketAddr = addr.parse().with_context(|| {
-          format!("Invalid inspector server address \"{}\"", &addr)
-        })?;
-        let server = InspectorServer::new(addr, "deno-lsp-tsc")?;
-        Some(Arc::new(server))
-      }
-      None => None,
-    };
-    self
-      .inspector_server
-      .lock()
-      .clone_from(&maybe_inspector_server);
-    // TODO(bartlomieju): why is the join_handle ignored here? Should we store it
-    // on the `TsServer` struct.
-    let receiver = self.receiver.lock().take().unwrap();
-    let performance = self.performance.clone();
-    let specifier_map = self.specifier_map.clone();
-    let enable_tracing = self.enable_tracing.clone();
-    let _join_handle = thread::spawn(move || {
-      run_tsc_thread(
-        receiver,
-        performance,
-        specifier_map,
-        maybe_inspector_server,
-        enable_tracing,
-      )
+  /// This should be called before `self.ensure_started()`.
+  pub fn set_inspector_server_addr(&self, addr: Option<String>) {
+    *self.inspector_server_addr.lock() = addr;
+  }
+
+  pub fn ensure_started(&self) {
+    self.start_once.call_once(|| {
+      let maybe_inspector_server = self
+        .inspector_server_addr
+        .lock()
+        .as_ref()
+        .and_then(|addr| {
+          addr
+            .parse::<SocketAddr>()
+            .inspect_err(|err| {
+              lsp_warn!("Invalid inspector server address: {:#}", err);
+            })
+            .ok()
+        })
+        .map(|addr| {
+          Arc::new(InspectorServer::new(addr, "deno-lsp-tsc").unwrap())
+        });
+      self
+        .inspector_server
+        .lock()
+        .clone_from(&maybe_inspector_server);
+      // TODO(bartlomieju): why is the join_handle ignored here? Should we store it
+      // on the `TsServer` struct.
+      let receiver = self.receiver.lock().take().unwrap();
+      let performance = self.performance.clone();
+      let specifier_map = self.specifier_map.clone();
+      let enable_tracing = self.enable_tracing.clone();
+      let _join_handle = thread::spawn(move || {
+        run_tsc_thread(
+          receiver,
+          performance,
+          specifier_map,
+          maybe_inspector_server,
+          enable_tracing,
+        )
+      });
+      lsp_log!("TS server started.");
     });
-    Ok(())
+  }
+
+  pub fn is_started(&self) -> bool {
+    self.start_once.is_completed()
   }
 
   pub fn project_changed<'a>(
@@ -549,6 +567,9 @@ impl TsServer {
 
   #[cfg_attr(feature = "lsp-tracing", tracing::instrument(skip_all))]
   pub async fn cleanup_semantic_cache(&self, snapshot: Arc<StateSnapshot>) {
+    if !self.is_started() {
+      return;
+    }
     for scope in snapshot
       .config
       .tree
@@ -1365,6 +1386,7 @@ impl TsServer {
     R: de::DeserializeOwned,
   {
     use super::trace::SpanExt;
+    self.ensure_started();
     let context = super::trace::Span::current().context();
     let mark = self
       .performance
@@ -5772,7 +5794,6 @@ mod tests {
     });
     let performance = Arc::new(Performance::default());
     let ts_server = TsServer::new(performance);
-    ts_server.start(None).unwrap();
     ts_server.project_changed(
       snapshot.clone(),
       [],
diff --git a/tests/integration/lsp_tests.rs b/tests/integration/lsp_tests.rs
index 717986e48c1ad7..ca90a757967824 100644
--- a/tests/integration/lsp_tests.rs
+++ b/tests/integration/lsp_tests.rs
@@ -11488,13 +11488,11 @@ fn lsp_performance() {
       "lsp.update_diagnostics_ts",
       "lsp.update_global_cache",
       "tsc.host.$getDiagnostics",
-      "tsc.host.$getSupportedCodeFixes",
       "tsc.host.getQuickInfoAtPosition",
       "tsc.op.op_is_node_file",
       "tsc.op.op_load",
       "tsc.op.op_script_names",
       "tsc.request.$getDiagnostics",
-      "tsc.request.$getSupportedCodeFixes",
       "tsc.request.getQuickInfoAtPosition",
     ]
   );
@@ -15135,6 +15133,7 @@ fn lsp_deno_json_scopes_file_rename_import_edits() {
   );
   let mut client = context.new_lsp_command().build();
   client.initialize_default();
+  client.did_open_file(&file1);
   let res = client.write_request(
     "workspace/willRenameFiles",
     json!({
@@ -15395,6 +15394,7 @@ fn lsp_deno_json_scopes_search_symbol() {
   );
   let mut client = context.new_lsp_command().build();
   client.initialize_default();
+  client.did_open_file(&file1);
   let res =
     client.write_request("workspace/symbol", json!({ "query": "someSymbol" }));
   assert_eq!(

From 64f810d45c12f72818f87308cb3f82be16a88928 Mon Sep 17 00:00:00 2001
From: Toma <85547207+whtsht@users.noreply.github.com>
Date: Mon, 10 Mar 2025 22:37:20 +0900
Subject: [PATCH 068/115] fix(ext/node): use primordials in
 `ext/node/polyfills/path/_util.ts` (#28432)

Towards https://github.com/denoland/deno/issues/24236
---
 ext/node/polyfills/path/_util.ts | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/ext/node/polyfills/path/_util.ts b/ext/node/polyfills/path/_util.ts
index 1e95faea414f26..3ff0bfc76354f1 100644
--- a/ext/node/polyfills/path/_util.ts
+++ b/ext/node/polyfills/path/_util.ts
@@ -2,9 +2,6 @@
 // Ported from https://github.com/browserify/path-browserify/
 // Copyright 2018-2025 the Deno authors. MIT license.
 
-// TODO(petamoriken): enable prefer-primordials for node polyfills
-// deno-lint-ignore-file prefer-primordials
-
 import type { FormatInputPathObject } from "ext:deno_node/path/_interface.ts";
 import {
   CHAR_BACKWARD_SLASH,
@@ -16,6 +13,12 @@ import {
   CHAR_UPPERCASE_Z,
 } from "ext:deno_node/path/_constants.ts";
 import { ERR_INVALID_ARG_TYPE } from "ext:deno_node/internal/errors.ts";
+import { primordials } from "ext:core/mod.js";
+const {
+  StringPrototypeCharCodeAt,
+  StringPrototypeLastIndexOf,
+  StringPrototypeSlice,
+} = primordials;
 
 export function assertPath(path: string) {
   if (typeof path !== "string") {
@@ -51,7 +54,7 @@ export function normalizeString(
   let dots = 0;
   let code: number | undefined;
   for (let i = 0, len = path.length; i <= len; ++i) {
-    if (i < len) code = path.charCodeAt(i);
+    if (i < len) code = StringPrototypeCharCodeAt(path, i);
     else if (isPathSeparator(code!)) break;
     else code = CHAR_FORWARD_SLASH;
 
@@ -62,17 +65,18 @@ export function normalizeString(
         if (
           res.length < 2 ||
           lastSegmentLength !== 2 ||
-          res.charCodeAt(res.length - 1) !== CHAR_DOT ||
-          res.charCodeAt(res.length - 2) !== CHAR_DOT
+          StringPrototypeCharCodeAt(res, res.length - 1) !== CHAR_DOT ||
+          StringPrototypeCharCodeAt(res, res.length - 2) !== CHAR_DOT
         ) {
           if (res.length > 2) {
-            const lastSlashIndex = res.lastIndexOf(separator);
+            const lastSlashIndex = StringPrototypeLastIndexOf(res, separator);
             if (lastSlashIndex === -1) {
               res = "";
               lastSegmentLength = 0;
             } else {
-              res = res.slice(0, lastSlashIndex);
-              lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);
+              res = StringPrototypeSlice(res, 0, lastSlashIndex);
+              lastSegmentLength = res.length - 1 -
+                StringPrototypeLastIndexOf(res, separator);
             }
             lastSlash = i;
             dots = 0;
@@ -91,8 +95,11 @@ export function normalizeString(
           lastSegmentLength = 2;
         }
       } else {
-        if (res.length > 0) res += separator + path.slice(lastSlash + 1, i);
-        else res = path.slice(lastSlash + 1, i);
+        if (res.length > 0) {
+          res += separator + StringPrototypeSlice(path, lastSlash + 1, i);
+        } else {
+          res = StringPrototypeSlice(path, lastSlash + 1, i);
+        }
         lastSegmentLength = i - lastSlash - 1;
       }
       lastSlash = i;

From 9ea4f8264338bf0ccbf4e9b43640f573813e330d Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Mon, 10 Mar 2025 13:20:48 -0400
Subject: [PATCH 069/115] fix(check): support `types@` export conditions
 (#28450)

---
 Cargo.lock                                    |  1 +
 cli/factory.rs                                | 11 +++++-
 cli/lsp/resolver.rs                           | 11 +++++-
 cli/rt/run.rs                                 |  2 +-
 resolvers/deno/factory.rs                     |  6 ++--
 resolvers/node/Cargo.toml                     |  1 +
 resolvers/node/lib.rs                         |  1 +
 resolvers/node/resolution.rs                  | 34 +++++++++++++++++--
 .../node/types_req_export/__test__.jsonc      |  5 +++
 tests/specs/node/types_req_export/check.out   |  7 ++++
 tests/specs/node/types_req_export/main.ts     |  5 +++
 .../node_modules/package/index.js             |  1 +
 .../node_modules/package/package.json         | 10 ++++++
 .../node_modules/package/types-4.8.d.ts       |  1 +
 .../node_modules/package/types-expected.d.ts  |  1 +
 .../node_modules/package/types-fallback.d.ts  |  1 +
 .../specs/node/types_req_export/package.json  |  5 +++
 17 files changed, 94 insertions(+), 9 deletions(-)
 create mode 100644 tests/specs/node/types_req_export/__test__.jsonc
 create mode 100644 tests/specs/node/types_req_export/check.out
 create mode 100644 tests/specs/node/types_req_export/main.ts
 create mode 100644 tests/specs/node/types_req_export/node_modules/package/index.js
 create mode 100644 tests/specs/node/types_req_export/node_modules/package/package.json
 create mode 100644 tests/specs/node/types_req_export/node_modules/package/types-4.8.d.ts
 create mode 100644 tests/specs/node/types_req_export/node_modules/package/types-expected.d.ts
 create mode 100644 tests/specs/node/types_req_export/node_modules/package/types-fallback.d.ts
 create mode 100644 tests/specs/node/types_req_export/package.json

diff --git a/Cargo.lock b/Cargo.lock
index 26c212e86d1480..7b8d53577f56db 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -5589,6 +5589,7 @@ dependencies = [
  "deno_media_type",
  "deno_package_json",
  "deno_path_util",
+ "deno_semver",
  "futures",
  "lazy-regex",
  "once_cell",
diff --git a/cli/factory.rs b/cli/factory.rs
index c88b102605b6e8..ca79621eff5f7a 100644
--- a/cli/factory.rs
+++ b/cli/factory.rs
@@ -49,6 +49,7 @@ use deno_runtime::inspector_server::InspectorServer;
 use deno_runtime::permissions::RuntimePermissionDescriptorParser;
 use node_resolver::analyze::NodeCodeTranslator;
 use node_resolver::cache::NodeResolutionThreadLocalCache;
+use node_resolver::NodeResolverOptions;
 use once_cell::sync::OnceCell;
 use sys_traits::EnvCurrentDir;
 
@@ -697,7 +698,15 @@ impl CliFactory {
       Ok(Arc::new(CliResolverFactory::new(
         self.workspace_factory()?.clone(),
         ResolverFactoryOptions {
-          conditions_from_resolution_mode: Default::default(),
+          node_resolver_options: NodeResolverOptions {
+            conditions_from_resolution_mode: Default::default(),
+            typescript_version: Some(
+              deno_semver::Version::parse_standard(
+                deno_lib::version::DENO_VERSION_INFO.typescript,
+              )
+              .unwrap(),
+            ),
+          },
           node_resolution_cache: Some(Arc::new(NodeResolutionThreadLocalCache)),
           npm_system_info: self.flags.subcommand.npm_system_info(),
           specified_import_map: Some(Box::new(CliSpecifiedImportMapProvider {
diff --git a/cli/lsp/resolver.rs b/cli/lsp/resolver.rs
index 800f30fa29759c..dbc407f55fb68d 100644
--- a/cli/lsp/resolver.rs
+++ b/cli/lsp/resolver.rs
@@ -42,6 +42,7 @@ use node_resolver::cache::NodeResolutionSys;
 use node_resolver::cache::NodeResolutionThreadLocalCache;
 use node_resolver::DenoIsBuiltInNodeModuleChecker;
 use node_resolver::NodeResolutionKind;
+use node_resolver::NodeResolverOptions;
 use node_resolver::PackageJsonThreadLocalCache;
 use node_resolver::ResolutionMode;
 
@@ -930,7 +931,15 @@ impl<'a> ResolverFactory<'a> {
           npm_resolver.clone(),
           self.pkg_json_resolver.clone(),
           self.node_resolution_sys.clone(),
-          node_resolver::ConditionsFromResolutionMode::default(),
+          NodeResolverOptions {
+            conditions_from_resolution_mode: Default::default(),
+            typescript_version: Some(
+              deno_semver::Version::parse_standard(
+                deno_lib::version::DENO_VERSION_INFO.typescript,
+              )
+              .unwrap(),
+            ),
+          },
         )))
       })
       .as_ref()
diff --git a/cli/rt/run.rs b/cli/rt/run.rs
index 9c7091fa769a0b..a0e9669526a5db 100644
--- a/cli/rt/run.rs
+++ b/cli/rt/run.rs
@@ -786,7 +786,7 @@ pub async fn run(
     npm_resolver.clone(),
     pkg_json_resolver.clone(),
     node_resolution_sys,
-    node_resolver::ConditionsFromResolutionMode::default(),
+    node_resolver::NodeResolverOptions::default(),
   ));
   let cjs_tracker = Arc::new(CjsTracker::new(
     in_npm_pkg_checker.clone(),
diff --git a/resolvers/deno/factory.rs b/resolvers/deno/factory.rs
index 4e1a59788c6129..1f6f83652be2f6 100644
--- a/resolvers/deno/factory.rs
+++ b/resolvers/deno/factory.rs
@@ -23,9 +23,9 @@ use deno_path_util::fs::canonicalize_path_maybe_not_exists;
 use deno_path_util::normalize_path;
 use futures::future::FutureExt;
 use node_resolver::cache::NodeResolutionSys;
-use node_resolver::ConditionsFromResolutionMode;
 use node_resolver::DenoIsBuiltInNodeModuleChecker;
 use node_resolver::NodeResolver;
+use node_resolver::NodeResolverOptions;
 use node_resolver::NodeResolverRc;
 use node_resolver::PackageJsonResolver;
 use node_resolver::PackageJsonResolverRc;
@@ -559,8 +559,8 @@ impl<TSys: WorkspaceFactorySys> WorkspaceFactory<TSys> {
 
 #[derive(Debug, Default)]
 pub struct ResolverFactoryOptions {
-  pub conditions_from_resolution_mode: ConditionsFromResolutionMode,
   pub npm_system_info: NpmSystemInfo,
+  pub node_resolver_options: NodeResolverOptions,
   pub node_resolution_cache: Option<node_resolver::NodeResolutionCacheRc>,
   pub package_json_cache: Option<node_resolver::PackageJsonCacheRc>,
   pub package_json_dep_resolution: Option<PackageJsonDepResolution>,
@@ -691,7 +691,7 @@ impl<TSys: WorkspaceFactorySys> ResolverFactory<TSys> {
         self.npm_resolver()?.clone(),
         self.pkg_json_resolver().clone(),
         self.sys.clone(),
-        self.options.conditions_from_resolution_mode.clone(),
+        self.options.node_resolver_options.clone(),
       )))
     })
   }
diff --git a/resolvers/node/Cargo.toml b/resolvers/node/Cargo.toml
index 925c0372679b3e..eb9ebe815d5af4 100644
--- a/resolvers/node/Cargo.toml
+++ b/resolvers/node/Cargo.toml
@@ -26,6 +26,7 @@ deno_error.workspace = true
 deno_media_type.workspace = true
 deno_package_json.workspace = true
 deno_path_util.workspace = true
+deno_semver.workspace = true
 futures.workspace = true
 lazy-regex.workspace = true
 once_cell.workspace = true
diff --git a/resolvers/node/lib.rs b/resolvers/node/lib.rs
index 697b03dbecb605..eb6b8f63b3b5f5 100644
--- a/resolvers/node/lib.rs
+++ b/resolvers/node/lib.rs
@@ -36,6 +36,7 @@ pub use resolution::ConditionsFromResolutionMode;
 pub use resolution::NodeResolution;
 pub use resolution::NodeResolutionKind;
 pub use resolution::NodeResolver;
+pub use resolution::NodeResolverOptions;
 pub use resolution::NodeResolverRc;
 pub use resolution::ResolutionMode;
 pub use resolution::DEFAULT_CONDITIONS;
diff --git a/resolvers/node/resolution.rs b/resolvers/node/resolution.rs
index cc2299d3a93835..17088fd4b80782 100644
--- a/resolvers/node/resolution.rs
+++ b/resolvers/node/resolution.rs
@@ -10,6 +10,8 @@ use anyhow::Error as AnyError;
 use deno_media_type::MediaType;
 use deno_package_json::PackageJson;
 use deno_path_util::url_to_file_path;
+use deno_semver::Version;
+use deno_semver::VersionReq;
 use serde_json::Map;
 use serde_json::Value;
 use sys_traits::FileType;
@@ -168,6 +170,14 @@ enum ResolvedMethod {
   PackageSubPath,
 }
 
+#[derive(Debug, Default, Clone)]
+pub struct NodeResolverOptions {
+  pub conditions_from_resolution_mode: ConditionsFromResolutionMode,
+  /// TypeScript version to use for typesVersions resolution and
+  /// `types@req` exports resolution.
+  pub typescript_version: Option<Version>,
+}
+
 #[allow(clippy::disallowed_types)]
 pub type NodeResolverRc<
   TInNpmPackageChecker,
@@ -196,6 +206,7 @@ pub struct NodeResolver<
   pkg_json_resolver: PackageJsonResolverRc<TSys>,
   sys: NodeResolutionSys<TSys>,
   conditions_from_resolution_mode: ConditionsFromResolutionMode,
+  typescript_version: Option<Version>,
 }
 
 impl<
@@ -217,7 +228,7 @@ impl<
     npm_pkg_folder_resolver: TNpmPackageFolderResolver,
     pkg_json_resolver: PackageJsonResolverRc<TSys>,
     sys: NodeResolutionSys<TSys>,
-    conditions_from_resolution_mode: ConditionsFromResolutionMode,
+    options: NodeResolverOptions,
   ) -> Self {
     Self {
       in_npm_pkg_checker,
@@ -225,7 +236,8 @@ impl<
       npm_pkg_folder_resolver,
       pkg_json_resolver,
       sys,
-      conditions_from_resolution_mode,
+      conditions_from_resolution_mode: options.conditions_from_resolution_mode,
+      typescript_version: options.typescript_version,
     }
   }
 
@@ -1160,7 +1172,7 @@ impl<
 
         if key == "default"
           || conditions.contains(&key.as_str())
-          || resolution_kind.is_types() && key.as_str() == "types"
+          || resolution_kind.is_types() && self.matches_types_key(key)
         {
           let resolved = self.resolve_package_target(
             package_json_path,
@@ -1198,6 +1210,22 @@ impl<
     )
   }
 
+  fn matches_types_key(&self, key: &str) -> bool {
+    if key == "types" {
+      return true;
+    }
+    let Some(ts_version) = &self.typescript_version else {
+      return false;
+    };
+    let Some(constraint) = key.strip_prefix("types@") else {
+      return false;
+    };
+    let Ok(version_req) = VersionReq::parse_from_npm(constraint) else {
+      return false;
+    };
+    version_req.matches(ts_version)
+  }
+
   #[allow(clippy::too_many_arguments)]
   pub fn package_exports_resolve(
     &self,
diff --git a/tests/specs/node/types_req_export/__test__.jsonc b/tests/specs/node/types_req_export/__test__.jsonc
new file mode 100644
index 00000000000000..25b1a7c3249506
--- /dev/null
+++ b/tests/specs/node/types_req_export/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+  "args": "check main.ts",
+  "output": "check.out",
+  "exitCode": 1
+}
diff --git a/tests/specs/node/types_req_export/check.out b/tests/specs/node/types_req_export/check.out
new file mode 100644
index 00000000000000..cbb969606a3ae2
--- /dev/null
+++ b/tests/specs/node/types_req_export/check.out
@@ -0,0 +1,7 @@
+Check file:///[WILDLINE]/main.ts
+TS2322 [ERROR]: Type '"expected"' is not assignable to type '"not"'.
+const local: "not" = value;
+      ~~~~~
+    at file:///[WILDLINE]/main.ts:4:7
+
+error: Type checking failed.
diff --git a/tests/specs/node/types_req_export/main.ts b/tests/specs/node/types_req_export/main.ts
new file mode 100644
index 00000000000000..1ffc61edfdaa10
--- /dev/null
+++ b/tests/specs/node/types_req_export/main.ts
@@ -0,0 +1,5 @@
+import { value } from "package";
+
+// should cause a type error where the type of value is "expected"
+const local: "not" = value;
+console.log(local);
diff --git a/tests/specs/node/types_req_export/node_modules/package/index.js b/tests/specs/node/types_req_export/node_modules/package/index.js
new file mode 100644
index 00000000000000..19aed86bb54969
--- /dev/null
+++ b/tests/specs/node/types_req_export/node_modules/package/index.js
@@ -0,0 +1 @@
+module.exports.value = 5;
diff --git a/tests/specs/node/types_req_export/node_modules/package/package.json b/tests/specs/node/types_req_export/node_modules/package/package.json
new file mode 100644
index 00000000000000..5b33862c7ab40a
--- /dev/null
+++ b/tests/specs/node/types_req_export/node_modules/package/package.json
@@ -0,0 +1,10 @@
+{
+  "exports": {
+    ".": {
+      "types@<4.8": "./types-4.8.d.ts",
+      "types@>5.0": "./types-expected.d.ts",
+      "types": "./types-fallback.d.ts",
+      "import": "./index.js"
+    }
+  }
+}
\ No newline at end of file
diff --git a/tests/specs/node/types_req_export/node_modules/package/types-4.8.d.ts b/tests/specs/node/types_req_export/node_modules/package/types-4.8.d.ts
new file mode 100644
index 00000000000000..098a2e94335522
--- /dev/null
+++ b/tests/specs/node/types_req_export/node_modules/package/types-4.8.d.ts
@@ -0,0 +1 @@
+export const value: "4.8";
diff --git a/tests/specs/node/types_req_export/node_modules/package/types-expected.d.ts b/tests/specs/node/types_req_export/node_modules/package/types-expected.d.ts
new file mode 100644
index 00000000000000..fda199512c3a27
--- /dev/null
+++ b/tests/specs/node/types_req_export/node_modules/package/types-expected.d.ts
@@ -0,0 +1 @@
+export const value: "expected";
\ No newline at end of file
diff --git a/tests/specs/node/types_req_export/node_modules/package/types-fallback.d.ts b/tests/specs/node/types_req_export/node_modules/package/types-fallback.d.ts
new file mode 100644
index 00000000000000..db0f4d8602a505
--- /dev/null
+++ b/tests/specs/node/types_req_export/node_modules/package/types-fallback.d.ts
@@ -0,0 +1 @@
+export const value: "fallback";
diff --git a/tests/specs/node/types_req_export/package.json b/tests/specs/node/types_req_export/package.json
new file mode 100644
index 00000000000000..f0b3ee21dd5975
--- /dev/null
+++ b/tests/specs/node/types_req_export/package.json
@@ -0,0 +1,5 @@
+{
+  "dependencies": {
+    "package": "*"
+  }
+}

From ff28ecd91ae7eec8d46ef4d0470b7555072a4c07 Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Mon, 10 Mar 2025 16:17:19 -0400
Subject: [PATCH 070/115] fix(bench): lower bench time budget when `n` is
 specified (#28454)

Closes #28430
---
 cli/js/40_bench.js           |  8 +++-----
 cli/tsc/dts/lib.deno.ns.d.ts | 11 +++++++++--
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/cli/js/40_bench.js b/cli/js/40_bench.js
index 83f1384a500851..eaa5b883c129a8 100644
--- a/cli/js/40_bench.js
+++ b/cli/js/40_bench.js
@@ -241,7 +241,7 @@ const allMaxLength = 10_000_000;
 let all = new Array(allMaxLength);
 const lowPrecisionThresholdInNs = 1e4;
 
-async function benchMeasure(timeBudget, fn, desc, context) {
+async function benchMeasure(fn, desc, context) {
   let n = 0;
   let avg = 0;
   let wavg = 0;
@@ -251,7 +251,7 @@ async function benchMeasure(timeBudget, fn, desc, context) {
 
   // warmup step
   let c = 0;
-  let iterations = desc.warmup > 0 ? desc.warmup : 20;
+  let iterations = desc.warmup >= 0 ? desc.warmup : 20;
   let budget = 10 * 1e6;
 
   if (!desc.async) {
@@ -298,7 +298,7 @@ async function benchMeasure(timeBudget, fn, desc, context) {
 
   // measure step
   iterations = desc.n > 0 ? desc.n : 10;
-  budget = timeBudget * 1e6;
+  budget = desc.n > 0 ? 10 * 1e6 : 500 * 1e6;
 
   if (wavg > lowPrecisionThresholdInNs) {
     if (!desc.async) {
@@ -475,10 +475,8 @@ function wrapBenchmark(desc) {
         });
       }
 
-      const benchTimeInMs = 500;
       const context = createBenchContext(desc);
       const stats = await benchMeasure(
-        benchTimeInMs,
         fn,
         desc,
         context,
diff --git a/cli/tsc/dts/lib.deno.ns.d.ts b/cli/tsc/dts/lib.deno.ns.d.ts
index 8765a82fcca061..2ba195e4aef4e7 100644
--- a/cli/tsc/dts/lib.deno.ns.d.ts
+++ b/cli/tsc/dts/lib.deno.ns.d.ts
@@ -1242,9 +1242,16 @@ declare namespace Deno {
     /** If at least one bench has `only` set to true, only run benches that have
      * `only` set to `true` and fail the bench suite. */
     only?: boolean;
-    /** Number of iterations to perform. */
+    /** Number of iterations to perform.
+     * @remarks When the benchmark is very fast, this will only be used as a
+     * suggestion in order to get a more accurate measurement.
+     */
     n?: number;
-    /** Number of warmups to do before running the benchmark. */
+    /** Number of warmups to do before running the benchmark.
+     * @remarks A warmup will always be performed even if this is `0` in order to
+     * determine the speed of the benchmark in order to improve the measurement. When
+     * the benchmark is very fast, this will be used as a suggestion.
+     */
     warmup?: number;
     /** Ensure the bench case does not prematurely cause the process to exit,
      * for example via a call to {@linkcode Deno.exit}.

From e88366aece4d575c2e03b5fa45017e141a5723a7 Mon Sep 17 00:00:00 2001
From: snek <snek@deno.com>
Date: Tue, 11 Mar 2025 07:23:42 +0100
Subject: [PATCH 071/115] fix: unhandled rejection from quic (#28448)

Fixes: https://github.com/denoland/deno/issues/28406
---
 ext/net/03_quic.js      |  9 ++++++---
 ext/web/webtransport.js | 12 ++++++++----
 2 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/ext/net/03_quic.js b/ext/net/03_quic.js
index a07eef8e7986f8..04b25cf913906c 100644
--- a/ext/net/03_quic.js
+++ b/ext/net/03_quic.js
@@ -55,11 +55,14 @@ const {
   ReflectConstruct,
   Symbol,
   SymbolAsyncIterator,
-  SafePromisePrototypeFinally,
 } = primordials;
 
 let getEndpointResource;
 
+function promiseFinallyWithoutUnhandled(p, f) {
+  return PromisePrototypeThen(p, f, f);
+}
+
 function transportOptions({
   keepAliveInterval,
   maxIdleTimeout,
@@ -385,7 +388,7 @@ class QuicReceiveStream extends ReadableStream {
 
 function readableStream(rid, closed) {
   // stream can be indirectly closed by closing connection.
-  SafePromisePrototypeFinally(closed, () => {
+  promiseFinallyWithoutUnhandled(closed, () => {
     core.tryClose(rid);
   });
   return readableStreamForRid(
@@ -397,7 +400,7 @@ function readableStream(rid, closed) {
 
 function writableStream(rid, closed) {
   // stream can be indirectly closed by closing connection.
-  SafePromisePrototypeFinally(closed, () => {
+  promiseFinallyWithoutUnhandled(closed, () => {
     core.tryClose(rid);
   });
   return writableStreamForRid(
diff --git a/ext/web/webtransport.js b/ext/web/webtransport.js
index 73c44f673758d9..d2b7d51271d920 100644
--- a/ext/web/webtransport.js
+++ b/ext/web/webtransport.js
@@ -682,10 +682,14 @@ class WebTransportDatagramDuplexStream {
     }
 
     this.#promise = promise;
-    PromisePrototypeThen(promise, ({ conn, sessionIdBuf }) => {
-      this.#conn = conn;
-      this.#sessionIdBuf = sessionIdBuf;
-    });
+    PromisePrototypeThen(
+      promise,
+      ({ conn, sessionIdBuf }) => {
+        this.#conn = conn;
+        this.#sessionIdBuf = sessionIdBuf;
+      },
+      () => {},
+    );
 
     this.#receiveDatagrams();
   }

From 6ddf0f2f5f55ed150aa7867a32eb023a3db3f7d0 Mon Sep 17 00:00:00 2001
From: Yoshiya Hinosawa <stibium121@gmail.com>
Date: Tue, 11 Mar 2025 23:11:19 +0900
Subject: [PATCH 072/115] test(otel): add test of otel integration of node http
 server (#28461)

---
 tests/specs/cli/otel_basic/__test__.jsonc     |   7 +
 .../specs/cli/otel_basic/node_http_metric.out | 434 ++++++++++++++++++
 .../specs/cli/otel_basic/node_http_metric.ts  |  19 +
 3 files changed, 460 insertions(+)
 create mode 100644 tests/specs/cli/otel_basic/node_http_metric.out
 create mode 100644 tests/specs/cli/otel_basic/node_http_metric.ts

diff --git a/tests/specs/cli/otel_basic/__test__.jsonc b/tests/specs/cli/otel_basic/__test__.jsonc
index 18d5e668cef868..2fae511463b9cd 100644
--- a/tests/specs/cli/otel_basic/__test__.jsonc
+++ b/tests/specs/cli/otel_basic/__test__.jsonc
@@ -30,6 +30,13 @@
       "args": "run -A main.ts http_metric.ts",
       "output": "http_metric.out"
     },
+    "node_http_metric": {
+      "envs": {
+        "OTEL_METRIC_EXPORT_INTERVAL": "1000"
+      },
+      "args": "run -A main.ts node_http_metric.ts",
+      "output": "node_http_metric.out"
+    },
     "links": {
       "args": "run -A main.ts links.ts",
       "output": "links.out"
diff --git a/tests/specs/cli/otel_basic/node_http_metric.out b/tests/specs/cli/otel_basic/node_http_metric.out
new file mode 100644
index 00000000000000..f79f0a62a51492
--- /dev/null
+++ b/tests/specs/cli/otel_basic/node_http_metric.out
@@ -0,0 +1,434 @@
+{
+  "spans": [
+    {
+      "traceId": "00000000000000000000000000000001",
+      "spanId": "0000000000000001",
+      "traceState": "",
+      "parentSpanId": "",
+      "flags": 1,
+      "name": "GET",
+      "kind": 2,
+      "startTimeUnixNano": "[WILDCARD]",
+      "endTimeUnixNano": "[WILDCARD]",
+      "attributes": [
+        {
+          "key": "http.request.method",
+          "value": {
+            "stringValue": "GET"
+          }
+        },
+        {
+          "key": "url.full",
+          "value": {
+            "stringValue": "http://localhost:[WILDCARD]/"
+          }
+        },
+        {
+          "key": "url.scheme",
+          "value": {
+            "stringValue": "http"
+          }
+        },
+        {
+          "key": "url.path",
+          "value": {
+            "stringValue": "/"
+          }
+        },
+        {
+          "key": "url.query",
+          "value": {
+            "stringValue": ""
+          }
+        },
+        {
+          "key": "http.response.status_code",
+          "value": {
+            "stringValue": "200"
+          }
+        }
+      ],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 0
+      }
+    },
+    {
+      "traceId": "00000000000000000000000000000002",
+      "spanId": "0000000000000002",
+      "traceState": "",
+      "parentSpanId": "",
+      "flags": 1,
+      "name": "GET",
+      "kind": 2,
+      "startTimeUnixNano": "[WILDCARD]",
+      "endTimeUnixNano": "[WILDCARD]",
+      "attributes": [
+        {
+          "key": "http.request.method",
+          "value": {
+            "stringValue": "GET"
+          }
+        },
+        {
+          "key": "url.full",
+          "value": {
+            "stringValue": "http://localhost:[WILDCARD]/"
+          }
+        },
+        {
+          "key": "url.scheme",
+          "value": {
+            "stringValue": "http"
+          }
+        },
+        {
+          "key": "url.path",
+          "value": {
+            "stringValue": "/"
+          }
+        },
+        {
+          "key": "url.query",
+          "value": {
+            "stringValue": ""
+          }
+        },
+        {
+          "key": "http.response.status_code",
+          "value": {
+            "stringValue": "200"
+          }
+        }
+      ],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 0
+      }
+    },
+    {
+      "traceId": "00000000000000000000000000000003",
+      "spanId": "0000000000000003",
+      "traceState": "",
+      "parentSpanId": "",
+      "flags": 1,
+      "name": "GET",
+      "kind": 2,
+      "startTimeUnixNano": "[WILDCARD]",
+      "endTimeUnixNano": "[WILDCARD]",
+      "attributes": [
+        {
+          "key": "http.request.method",
+          "value": {
+            "stringValue": "GET"
+          }
+        },
+        {
+          "key": "url.full",
+          "value": {
+            "stringValue": "http://localhost:[WILDCARD]/"
+          }
+        },
+        {
+          "key": "url.scheme",
+          "value": {
+            "stringValue": "http"
+          }
+        },
+        {
+          "key": "url.path",
+          "value": {
+            "stringValue": "/"
+          }
+        },
+        {
+          "key": "url.query",
+          "value": {
+            "stringValue": ""
+          }
+        },
+        {
+          "key": "http.response.status_code",
+          "value": {
+            "stringValue": "200"
+          }
+        }
+      ],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 0
+      }
+    }
+  ],
+  "logs": [],
+  "metrics": [
+    {
+      "name": "http.server.active_requests",
+      "description": "Number of active HTTP server requests.",
+      "unit": "{request}",
+      "metadata": [],
+      "sum": {
+        "dataPoints": [
+          {
+            "attributes": [
+              {
+                "key": "http.request.method",
+                "value": {
+                  "stringValue": "GET"
+                }
+              },
+              {
+                "key": "url.scheme",
+                "value": {
+                  "stringValue": "http"
+                }
+              }
+            ],
+            "startTimeUnixNano": "[WILDCARD]",
+            "timeUnixNano": "[WILDCARD]",
+            "exemplars": [],
+            "flags": 0,
+            "asInt": 0
+          }
+        ],
+        "aggregationTemporality": 2,
+        "isMonotonic": false
+      }
+    },
+    {
+      "name": "http.server.request.body.size",
+      "description": "Size of HTTP server request bodies.",
+      "unit": "By",
+      "metadata": [],
+      "histogram": {
+        "dataPoints": [
+          {
+            "attributes": [
+              {
+                "key": "http.request.method",
+                "value": {
+                  "stringValue": "GET"
+                }
+              },
+              {
+                "key": "http.response.status_code",
+                "value": {
+                  "intValue": "200"
+                }
+              },
+              {
+                "key": "network.protocol.version",
+                "value": {
+                  "stringValue": "1.1"
+                }
+              },
+              {
+                "key": "url.scheme",
+                "value": {
+                  "stringValue": "http"
+                }
+              }
+            ],
+            "startTimeUnixNano": "[WILDCARD]",
+            "timeUnixNano": "[WILDCARD]",
+            "count": 3,
+            "sum": 0,
+            "bucketCounts": [
+              3,
+              0,
+              0,
+              0,
+              0,
+              0,
+              0,
+              0,
+              0,
+              0
+            ],
+            "explicitBounds": [
+              0,
+              100,
+              1000,
+              10000,
+              100000,
+              1000000,
+              10000000,
+              100000000,
+              1000000000
+            ],
+            "exemplars": [],
+            "flags": 0,
+            "min": 0,
+            "max": 0
+          }
+        ],
+        "aggregationTemporality": 2
+      }
+    },
+    {
+      "name": "http.server.request.duration",
+      "description": "Duration of HTTP server requests.",
+      "unit": "s",
+      "metadata": [],
+      "histogram": {
+        "dataPoints": [
+          {
+            "attributes": [
+              {
+                "key": "http.request.method",
+                "value": {
+                  "stringValue": "GET"
+                }
+              },
+              {
+                "key": "http.response.status_code",
+                "value": {
+                  "intValue": "200"
+                }
+              },
+              {
+                "key": "network.protocol.version",
+                "value": {
+                  "stringValue": "1.1"
+                }
+              },
+              {
+                "key": "url.scheme",
+                "value": {
+                  "stringValue": "http"
+                }
+              }
+            ],
+            "startTimeUnixNano": "[WILDCARD]",
+            "timeUnixNano": "[WILDCARD]",
+            "count": 3,
+            "sum": [WILDCARD],
+            "bucketCounts": [
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE]
+            ],
+            "explicitBounds": [
+              0.005,
+              0.01,
+              0.025,
+              0.05,
+              0.075,
+              0.1,
+              0.25,
+              0.5,
+              0.75,
+              1,
+              2.5,
+              5,
+              7.5,
+              10
+            ],
+            "exemplars": [],
+            "flags": 0,
+            "min": [WILDCARD],
+            "max": [WILDCARD]
+          }
+        ],
+        "aggregationTemporality": 2
+      }
+    },
+    {
+      "name": "http.server.response.body.size",
+      "description": "Size of HTTP server response bodies.",
+      "unit": "By",
+      "metadata": [],
+      "histogram": {
+        "dataPoints": [
+          {
+            "attributes": [
+              {
+                "key": "http.request.method",
+                "value": {
+                  "stringValue": "GET"
+                }
+              },
+              {
+                "key": "http.response.status_code",
+                "value": {
+                  "intValue": "200"
+                }
+              },
+              {
+                "key": "network.protocol.version",
+                "value": {
+                  "stringValue": "1.1"
+                }
+              },
+              {
+                "key": "url.scheme",
+                "value": {
+                  "stringValue": "http"
+                }
+              }
+            ],
+            "startTimeUnixNano": "[WILDCARD]",
+            "timeUnixNano": "[WILDCARD]",
+            "count": 3,
+            "sum": 0,
+            "bucketCounts": [
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE],
+              [WILDLINE]
+            ],
+            "explicitBounds": [
+              0,
+              100,
+              1000,
+              10000,
+              100000,
+              1000000,
+              10000000,
+              100000000,
+              1000000000
+            ],
+            "exemplars": [],
+            "flags": 0,
+            "min": 0,
+            "max": 0
+          }
+        ],
+        "aggregationTemporality": 2
+      }
+    }
+  ]
+}
diff --git a/tests/specs/cli/otel_basic/node_http_metric.ts b/tests/specs/cli/otel_basic/node_http_metric.ts
new file mode 100644
index 00000000000000..b0fb6168eaaac1
--- /dev/null
+++ b/tests/specs/cli/otel_basic/node_http_metric.ts
@@ -0,0 +1,19 @@
+import http from "node:http";
+import { text } from "node:stream/consumers";
+
+const server = http.createServer((req, res) => {
+  res.end("foo");
+});
+
+server.listen(0, async () => {
+  const port = server.address().port;
+  for (const _ of Array(3)) {
+    await new Promise((resolve) => {
+      http.get(`http://localhost:${port}`, async (res) => {
+        await text(res);
+        resolve();
+      });
+    });
+  }
+  server.close();
+});

From fa51d5de4416a0eb6f81b425d6e9bb4891fa7158 Mon Sep 17 00:00:00 2001
From: Jo Franchetti <jofranchetti@gmail.com>
Date: Tue, 11 Mar 2025 14:36:55 +0000
Subject: [PATCH 073/115] docs: adding a missing full stop to context help text
 (#28465)

Full top missing from help text of config
---
 cli/args/flags.rs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index 33033593621588..a4c20928e2c6c3 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -4217,7 +4217,7 @@ fn config_arg() -> Arg {
     .short('c')
     .long("config")
     .value_name("FILE")
-    .help(cstr!("Configure different aspects of deno including TypeScript, linting, and code formatting
+    .help(cstr!("Configure different aspects of deno including TypeScript, linting, and code formatting.
   <p(245)>Typically the configuration file will be called `deno.json` or `deno.jsonc` and
   automatically detected; in that case this flag is not necessary.
   Docs: https://docs.deno.com/go/config</>"))

From 348900b8b79f4a434cab4c74b3bc8d4d2fa8ee74 Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Tue, 11 Mar 2025 11:23:30 -0400
Subject: [PATCH 074/115] fix(check): support `typesVersions` in npm
 dependencies (#28468)

---
 Cargo.lock                                    |   4 +-
 Cargo.toml                                    |   2 +-
 resolvers/node/Cargo.toml                     |   3 +
 resolvers/node/resolution.rs                  | 246 ++++++++++++++++--
 .../specs/node/types_versions/__test__.jsonc  |   5 +
 tests/specs/node/types_versions/check.out     |  14 +
 tests/specs/node/types_versions/main.ts       |  14 +
 .../node_modules/package/index.js             |   1 +
 .../node_modules/package/package.json         |  12 +
 .../node_modules/package/sub-types.d.ts       |   1 +
 .../node_modules/package/sub.js               |   0
 .../node_modules/package/types-4.8.d.ts       |   1 +
 .../node_modules/package/types-expected.d.ts  |   1 +
 tests/specs/node/types_versions/package.json  |   5 +
 14 files changed, 287 insertions(+), 22 deletions(-)
 create mode 100644 tests/specs/node/types_versions/__test__.jsonc
 create mode 100644 tests/specs/node/types_versions/check.out
 create mode 100644 tests/specs/node/types_versions/main.ts
 create mode 100644 tests/specs/node/types_versions/node_modules/package/index.js
 create mode 100644 tests/specs/node/types_versions/node_modules/package/package.json
 create mode 100644 tests/specs/node/types_versions/node_modules/package/sub-types.d.ts
 create mode 100644 tests/specs/node/types_versions/node_modules/package/sub.js
 create mode 100644 tests/specs/node/types_versions/node_modules/package/types-4.8.d.ts
 create mode 100644 tests/specs/node/types_versions/node_modules/package/types-expected.d.ts
 create mode 100644 tests/specs/node/types_versions/package.json

diff --git a/Cargo.lock b/Cargo.lock
index 7b8d53577f56db..4b7b7ddf6fa04e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2441,9 +2441,9 @@ dependencies = [
 
 [[package]]
 name = "deno_package_json"
-version = "0.5.1"
+version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9809d81d43f1805533e71d88adbe14343ada394abb236a754c8429ddd071ec65"
+checksum = "36ea66a2e2f45fe056b3db3e701e16c139767cb214530f339e9e86217b296cc6"
 dependencies = [
  "boxed_error",
  "deno_error",
diff --git a/Cargo.toml b/Cargo.toml
index 40e56347f14062..23194bc6445783 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -152,7 +152,7 @@ data-url = "=0.3.1"
 deno_cache_dir = "=0.18.0"
 deno_error = "=0.5.6"
 deno_native_certs = "0.3.0"
-deno_package_json = { version = "=0.5.1", default-features = false }
+deno_package_json = { version = "=0.5.2", default-features = false }
 deno_task_shell = "=0.20.2"
 deno_unsync = "0.4.2"
 deno_whoami = "0.1.0"
diff --git a/resolvers/node/Cargo.toml b/resolvers/node/Cargo.toml
index eb9ebe815d5af4..d713b692342f74 100644
--- a/resolvers/node/Cargo.toml
+++ b/resolvers/node/Cargo.toml
@@ -37,3 +37,6 @@ serde_json.workspace = true
 sys_traits.workspace = true
 thiserror.workspace = true
 url.workspace = true
+
+[dev-dependencies]
+sys_traits = { workspace = true, features = ["memory"] }
diff --git a/resolvers/node/resolution.rs b/resolvers/node/resolution.rs
index 17088fd4b80782..1535841265ab0d 100644
--- a/resolvers/node/resolution.rs
+++ b/resolvers/node/resolution.rs
@@ -1571,7 +1571,7 @@ impl<
     }
 
     if package_subpath == "." {
-      return self
+      self
         .legacy_main_resolve(
           package_json,
           referrer,
@@ -1581,36 +1581,74 @@ impl<
         )
         .map(|url| (url, ResolvedMethod::PackageSubPath))
         .map_err(|err| {
-          PackageSubpathResolveErrorKind::LegacyResolve(err).into()
-        });
+          PackageSubpathResolveErrorKind::LegacyResolve(err).into_box()
+        })
+    } else {
+      self
+        .resolve_subpath_exact(
+          package_json.path.parent().unwrap(),
+          package_subpath,
+          Some(package_json),
+          referrer,
+          resolution_mode,
+          conditions,
+          resolution_kind,
+        )
+        .map(|url| (url, ResolvedMethod::PackageSubPath))
+        .map_err(|err| {
+          PackageSubpathResolveErrorKind::LegacyResolve(err.into()).into_box()
+        })
     }
+  }
 
-    self
-      .resolve_subpath_exact(
-        package_json.path.parent().unwrap(),
-        package_subpath,
-        referrer,
-        resolution_mode,
-        conditions,
-        resolution_kind,
-      )
-      .map(|url| (url, ResolvedMethod::PackageSubPath))
-      .map_err(|err| {
-        PackageSubpathResolveErrorKind::LegacyResolve(err.into()).into()
+  fn pkg_json_types_versions<'a>(
+    &'a self,
+    pkg_json: &'a PackageJson,
+    resolution_kind: NodeResolutionKind,
+  ) -> Option<TypesVersions<'a, TSys>> {
+    if !resolution_kind.is_types() {
+      return None;
+    }
+    pkg_json
+      .types_versions
+      .as_ref()
+      .and_then(|entries| {
+        let ts_version = self.typescript_version.as_ref()?;
+        entries
+          .iter()
+          .filter_map(|(k, v)| {
+            let version_req = VersionReq::parse_from_npm(k).ok()?;
+            version_req.matches(ts_version).then_some(v)
+          })
+          .next()
+      })
+      .and_then(|value| value.as_object())
+      .map(|value| TypesVersions {
+        value,
+        dir_path: pkg_json.dir_path(),
+        sys: &self.sys,
       })
   }
 
+  #[allow(clippy::too_many_arguments)]
   fn resolve_subpath_exact(
     &self,
     directory: &Path,
     package_subpath: &str,
+    package_json: Option<&PackageJson>,
     referrer: Option<&UrlOrPathRef>,
     resolution_mode: ResolutionMode,
     conditions: &[&str],
     resolution_kind: NodeResolutionKind,
   ) -> Result<MaybeTypesResolvedUrl, TypesNotFoundError> {
     assert_ne!(package_subpath, ".");
-    let file_path = directory.join(package_subpath);
+    let types_versions = package_json.and_then(|pkg_json| {
+      self.pkg_json_types_versions(pkg_json, resolution_kind)
+    });
+    let package_subpath = types_versions
+      .and_then(|v| v.map(package_subpath))
+      .unwrap_or(Cow::Borrowed(package_subpath));
+    let file_path = directory.join(package_subpath.as_ref());
     self.maybe_resolve_types(
       LocalUrlOrPath::Path(LocalPath {
         path: file_path,
@@ -1644,6 +1682,7 @@ impl<
         .resolve_subpath_exact(
           directory,
           package_subpath,
+          None,
           maybe_referrer,
           resolution_mode,
           conditions,
@@ -1665,9 +1704,18 @@ impl<
       ResolutionMode::Require => deno_package_json::NodeModuleKind::Cjs,
       ResolutionMode::Import => deno_package_json::NodeModuleKind::Esm,
     };
+
     let maybe_main = if resolution_kind.is_types() {
       match package_json.types.as_ref() {
-        Some(types) => Some(types.as_str()),
+        Some(types) => {
+          let types_versions =
+            self.pkg_json_types_versions(package_json, resolution_kind);
+          Some(
+            types_versions
+              .and_then(|v| v.map(types.as_ref()))
+              .unwrap_or(Cow::Borrowed(types.as_str())),
+          )
+        }
         None => {
           // fallback to checking the main entrypoint for
           // a corresponding declaration file
@@ -1691,10 +1739,10 @@ impl<
         }
       }
     } else {
-      package_json.main(pkg_json_kind)
+      package_json.main(pkg_json_kind).map(Cow::Borrowed)
     };
 
-    if let Some(main) = maybe_main {
+    if let Some(main) = maybe_main.as_deref() {
       let guess = package_json.path.parent().unwrap().join(main).clean();
       if self.sys.is_file(&guess) {
         return Ok(self.maybe_resolve_types(
@@ -2133,9 +2181,64 @@ fn node_join_url(url: &Url, path: &str) -> Result<Url, url::ParseError> {
   }
 }
 
+struct TypesVersions<'a, TSys: FsMetadata> {
+  dir_path: &'a Path,
+  value: &'a serde_json::Map<std::string::String, serde_json::Value>,
+  sys: &'a NodeResolutionSys<TSys>,
+}
+
+impl<'a, TSys: FsMetadata> TypesVersions<'a, TSys> {
+  pub fn map(&self, search: &str) -> Option<Cow<'a, str>> {
+    let mut search = search
+      .strip_prefix("./")
+      .unwrap_or(search)
+      .trim_matches('/');
+    for (key, value) in self.value {
+      let key = key.strip_suffix("./").unwrap_or(key).trim_matches('/');
+      let is_match = if key == "*" || key == search {
+        true
+      } else if let Some(key_prefix) = key.strip_suffix("/*") {
+        if let Some(new_search) = search.strip_prefix(key_prefix) {
+          search = new_search.trim_matches('/');
+          true
+        } else {
+          false
+        }
+      } else {
+        false
+      };
+      if !is_match {
+        continue;
+      }
+      if let Some(values) = value.as_array() {
+        for value in values.iter().filter_map(|s| s.as_str()) {
+          let value = if let Some(asterisk_index) = value.find('*') {
+            Cow::Owned(format!(
+              "{}{}{}",
+              &value[..asterisk_index],
+              search,
+              &value[asterisk_index + 1..]
+            ))
+          } else {
+            Cow::Borrowed(value)
+          };
+          let path = self.dir_path.join(value.as_ref());
+          if self.sys.is_file(&path) {
+            return Some(value);
+          }
+        }
+      }
+    }
+    None
+  }
+}
+
 #[cfg(test)]
 mod tests {
   use serde_json::json;
+  use sys_traits::impls::InMemorySys;
+  use sys_traits::FsCreateDirAll;
+  use sys_traits::FsWrite;
 
   use super::*;
 
@@ -2323,4 +2426,109 @@ mod tests {
       "@types/scoped__package"
     );
   }
+
+  #[test]
+  fn test_types_versions() {
+    let dir_path = PathBuf::from("/dir");
+    let sys = InMemorySys::default();
+    sys.fs_create_dir_all(dir_path.join("ts3.1")).unwrap();
+    sys.fs_write(dir_path.join("file.d.ts"), "").unwrap();
+    sys.fs_write(dir_path.join("ts3.1/file.d.ts"), "").unwrap();
+    sys.fs_write(dir_path.join("ts3.1/file2.d.ts"), "").unwrap();
+    let node_resolution_sys = NodeResolutionSys::new(sys, None);
+
+    // asterisk key
+    {
+      let value = serde_json::json!({
+        "*": ["ts3.1/*"]
+      });
+      let types_versions = TypesVersions {
+        dir_path: &dir_path,
+        value: value.as_object().unwrap(),
+        sys: &node_resolution_sys,
+      };
+      assert_eq!(types_versions.map("file.d.ts").unwrap(), "ts3.1/file.d.ts");
+      assert_eq!(
+        types_versions.map("file2.d.ts").unwrap(),
+        "ts3.1/file2.d.ts"
+      );
+      assert!(types_versions.map("non_existent/file.d.ts").is_none());
+    }
+    // specific file
+    {
+      let value = serde_json::json!({
+        "types.d.ts": ["ts3.1/file.d.ts"]
+      });
+      let types_versions = TypesVersions {
+        dir_path: &dir_path,
+        value: value.as_object().unwrap(),
+        sys: &node_resolution_sys,
+      };
+      assert_eq!(types_versions.map("types.d.ts").unwrap(), "ts3.1/file.d.ts");
+      assert!(types_versions.map("file2.d.ts").is_none());
+    }
+    // multiple specific files
+    {
+      let value = serde_json::json!({
+        "types.d.ts": ["ts3.1/file.d.ts"],
+        "other.d.ts": ["ts3.1/file2.d.ts"],
+      });
+      let types_versions = TypesVersions {
+        dir_path: &dir_path,
+        value: value.as_object().unwrap(),
+        sys: &node_resolution_sys,
+      };
+      assert_eq!(types_versions.map("types.d.ts").unwrap(), "ts3.1/file.d.ts");
+      assert_eq!(
+        types_versions.map("other.d.ts").unwrap(),
+        "ts3.1/file2.d.ts"
+      );
+      assert!(types_versions.map("file2.d.ts").is_none());
+    }
+    // existing fallback
+    {
+      let value = serde_json::json!({
+        "*": ["ts3.1/*", "ts3.1/file2.d.ts"]
+      });
+      let types_versions = TypesVersions {
+        dir_path: &dir_path,
+        value: value.as_object().unwrap(),
+        sys: &node_resolution_sys,
+      };
+      assert_eq!(
+        types_versions.map("testing/types.d.ts").unwrap(),
+        "ts3.1/file2.d.ts"
+      );
+    }
+    // text then asterisk in key
+    {
+      let value = serde_json::json!({
+        "sub/*": ["ts3.1/file.d.ts"]
+      });
+      let types_versions = TypesVersions {
+        dir_path: &dir_path,
+        value: value.as_object().unwrap(),
+        sys: &node_resolution_sys,
+      };
+      assert_eq!(
+        types_versions.map("sub/types.d.ts").unwrap(),
+        "ts3.1/file.d.ts"
+      );
+    }
+    // text then asterisk in key and asterisk in value
+    {
+      let value = serde_json::json!({
+        "sub/*": ["ts3.1/*"]
+      });
+      let types_versions = TypesVersions {
+        dir_path: &dir_path,
+        value: value.as_object().unwrap(),
+        sys: &node_resolution_sys,
+      };
+      assert_eq!(
+        types_versions.map("sub/file.d.ts").unwrap(),
+        "ts3.1/file.d.ts"
+      );
+    }
+  }
 }
diff --git a/tests/specs/node/types_versions/__test__.jsonc b/tests/specs/node/types_versions/__test__.jsonc
new file mode 100644
index 00000000000000..25b1a7c3249506
--- /dev/null
+++ b/tests/specs/node/types_versions/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+  "args": "check main.ts",
+  "output": "check.out",
+  "exitCode": 1
+}
diff --git a/tests/specs/node/types_versions/check.out b/tests/specs/node/types_versions/check.out
new file mode 100644
index 00000000000000..07bdaa5cf27341
--- /dev/null
+++ b/tests/specs/node/types_versions/check.out
@@ -0,0 +1,14 @@
+Check file:///[WILDLINE]/main.ts
+TS2322 [ERROR]: Type '"expected"' is not assignable to type '"not"'.
+  const local: "not" = pkg.value;
+        ~~~~~
+    at file:///[WILDLINE]/main.ts:6:9
+
+TS2322 [ERROR]: Type '"sub-types"' is not assignable to type '"not"'.
+  const local: "not" = sub.value;
+        ~~~~~
+    at file:///[WILDLINE]/main.ts:12:9
+
+Found 2 errors.
+
+error: Type checking failed.
diff --git a/tests/specs/node/types_versions/main.ts b/tests/specs/node/types_versions/main.ts
new file mode 100644
index 00000000000000..6280e4da60f7c6
--- /dev/null
+++ b/tests/specs/node/types_versions/main.ts
@@ -0,0 +1,14 @@
+import * as pkg from "package";
+import * as sub from "package/sub";
+
+// should cause a type error where the type of value is "expected"
+{
+  const local: "not" = pkg.value;
+  console.log(local);
+}
+
+// should also cause a type error
+{
+  const local: "not" = sub.value;
+  console.log(local);
+}
diff --git a/tests/specs/node/types_versions/node_modules/package/index.js b/tests/specs/node/types_versions/node_modules/package/index.js
new file mode 100644
index 00000000000000..19aed86bb54969
--- /dev/null
+++ b/tests/specs/node/types_versions/node_modules/package/index.js
@@ -0,0 +1 @@
+module.exports.value = 5;
diff --git a/tests/specs/node/types_versions/node_modules/package/package.json b/tests/specs/node/types_versions/node_modules/package/package.json
new file mode 100644
index 00000000000000..9a8ff19844c1e9
--- /dev/null
+++ b/tests/specs/node/types_versions/node_modules/package/package.json
@@ -0,0 +1,12 @@
+{
+  "types": "./types-4.8.d.ts",
+  "typesVersions": {
+    "<=5.0": {
+      "types-4.8.d.ts": ["types-4.8.d.ts"]
+    },
+    ">5.0": {
+      "types-4.8.d.ts": ["types-expected.d.ts"],
+      "sub": ["sub-types.d.ts"]
+    }
+  }
+}
\ No newline at end of file
diff --git a/tests/specs/node/types_versions/node_modules/package/sub-types.d.ts b/tests/specs/node/types_versions/node_modules/package/sub-types.d.ts
new file mode 100644
index 00000000000000..98efc5faad86ee
--- /dev/null
+++ b/tests/specs/node/types_versions/node_modules/package/sub-types.d.ts
@@ -0,0 +1 @@
+export const value: "sub-types";
\ No newline at end of file
diff --git a/tests/specs/node/types_versions/node_modules/package/sub.js b/tests/specs/node/types_versions/node_modules/package/sub.js
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/tests/specs/node/types_versions/node_modules/package/types-4.8.d.ts b/tests/specs/node/types_versions/node_modules/package/types-4.8.d.ts
new file mode 100644
index 00000000000000..098a2e94335522
--- /dev/null
+++ b/tests/specs/node/types_versions/node_modules/package/types-4.8.d.ts
@@ -0,0 +1 @@
+export const value: "4.8";
diff --git a/tests/specs/node/types_versions/node_modules/package/types-expected.d.ts b/tests/specs/node/types_versions/node_modules/package/types-expected.d.ts
new file mode 100644
index 00000000000000..fda199512c3a27
--- /dev/null
+++ b/tests/specs/node/types_versions/node_modules/package/types-expected.d.ts
@@ -0,0 +1 @@
+export const value: "expected";
\ No newline at end of file
diff --git a/tests/specs/node/types_versions/package.json b/tests/specs/node/types_versions/package.json
new file mode 100644
index 00000000000000..f0b3ee21dd5975
--- /dev/null
+++ b/tests/specs/node/types_versions/package.json
@@ -0,0 +1,5 @@
+{
+  "dependencies": {
+    "package": "*"
+  }
+}

From 5c8d894aa3858e8aa8130b7d2058033a0c7de539 Mon Sep 17 00:00:00 2001
From: Luca Casonato <hello@lcas.dev>
Date: Wed, 12 Mar 2025 06:37:08 +0100
Subject: [PATCH 075/115] fix(otel): don't print otel warning when variable is
 not set (#28475)

---
 cli/args/flags.rs | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index a4c20928e2c6c3..08d07d871293f8 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -932,10 +932,11 @@ impl Flags {
     let otel_var = |name| match std::env::var(name) {
       Ok(s) if s.to_lowercase() == "true" => Some(true),
       Ok(s) if s.to_lowercase() == "false" => Some(false),
-      _ => {
+      Ok(_) => {
         log::warn!("'{name}' env var value not recognized, only 'true' and 'false' are accepted");
         None
       }
+      Err(_) => None,
     };
 
     let disabled =

From f3e9325a910f75a2396a63ea4a26cea0691e814d Mon Sep 17 00:00:00 2001
From: Ryan Dahl <ry@tinyclouds.org>
Date: Wed, 12 Mar 2025 06:10:15 -0700
Subject: [PATCH 076/115] docs: ignore absent window global variable in d.ts
 (#28456)

---
 cli/tsc/dts/lib.deno.window.d.ts | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/cli/tsc/dts/lib.deno.window.d.ts b/cli/tsc/dts/lib.deno.window.d.ts
index f4dc7b021fbaf2..8aa81edcd711ed 100644
--- a/cli/tsc/dts/lib.deno.window.d.ts
+++ b/cli/tsc/dts/lib.deno.window.d.ts
@@ -77,7 +77,12 @@ declare var Window: {
   new (): never;
 };
 
-/** @category Platform */
+/**
+ * The window variable was removed in Deno 2. This declaration should be
+ * removed at some point, but we're leaving it in out of caution.
+ * @ignore
+ * @category Platform
+ */
 declare var window: Window & typeof globalThis;
 /** @category Platform */
 declare var self: Window & typeof globalThis;

From fd490503309ba1e92dcf2dd4c34139e667e91355 Mon Sep 17 00:00:00 2001
From: letianpailove <113023596+letianpailove@users.noreply.github.com>
Date: Thu, 13 Mar 2025 16:42:56 +0800
Subject: [PATCH 077/115] docs: fixed a typo in update_typescript.md (#28486)

Asynciterable as singular means it adds the concept of AsyncIterable to
DOM instead of providing multiple AsyncIterable instances.

Signed-off-by: letianpailove <113023596+letianpailove@users.noreply.github.com>
---
 tools/update_typescript.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/update_typescript.md b/tools/update_typescript.md
index 390a339ff0bf5c..5e454dd23ef558 100644
--- a/tools/update_typescript.md
+++ b/tools/update_typescript.md
@@ -107,7 +107,7 @@ contextual awareness, it is the author's opinion that it is best to spend the
    maps `esnext.*` values to the ratified version of them to ensure they are
    less "breaking" so you will want to make sure, like for `esnext.array` that
    it points at `lib.esnext.array.d.ts`. You will also want to revert the
-   deletion of `dom.asynciterables` and `dom.extras`.
+   deletion of `dom.asynciterable` and `dom.extras`.
 
 8. For any new lib files that were added, but not included in the snapshot (e.g.
    `lib.es####.full.d.ts`) add them to `STATIC_ASSETS` in `deno/cli/tsc.rs`.

From c9930c591a2f988864e7a87e5e8275dd284ec4ca Mon Sep 17 00:00:00 2001
From: Yoshiya Hinosawa <stibium121@gmail.com>
Date: Thu, 13 Mar 2025 17:43:37 +0900
Subject: [PATCH 078/115] feat(unstable/otel): add otel tracing to
 node:http.request (#28463)

---
 ext/node/polyfills/http.ts                    |  42 +++-
 ext/telemetry/util.ts                         |   6 +
 tests/specs/cli/otel_basic/__test__.jsonc     |   4 +
 .../specs/cli/otel_basic/node_http_metric.out | 196 +++++++++++++++++-
 .../cli/otel_basic/node_http_request.out      | 128 ++++++++++++
 .../specs/cli/otel_basic/node_http_request.ts |  11 +
 6 files changed, 375 insertions(+), 12 deletions(-)
 create mode 100644 tests/specs/cli/otel_basic/node_http_request.out
 create mode 100644 tests/specs/cli/otel_basic/node_http_request.ts

diff --git a/ext/node/polyfills/http.ts b/ext/node/polyfills/http.ts
index 63552c387b53a5..452afb34c4e614 100644
--- a/ext/node/polyfills/http.ts
+++ b/ext/node/polyfills/http.ts
@@ -14,6 +14,7 @@ import {
 
 import { TextEncoder } from "ext:deno_web/08_text_encoding.js";
 import { setTimeout } from "ext:deno_web/02_timers.js";
+import { updateSpanFromError } from "ext:deno_telemetry/util.ts";
 import {
   _normalizeArgs,
   createConnection,
@@ -66,6 +67,12 @@ import {
 import { getTimerDuration } from "ext:deno_node/internal/timers.mjs";
 import { serve, upgradeHttpRaw } from "ext:deno_http/00_serve.ts";
 import { headersEntries } from "ext:deno_fetch/20_headers.js";
+import {
+  builtinTracer,
+  enterSpan,
+  restoreContext,
+  TRACING_ENABLED,
+} from "ext:deno_telemetry/telemetry.ts";
 import { timerId } from "ext:deno_web/03_abort_signal.js";
 import { clearTimeout as webClearTimeout } from "ext:deno_web/02_timers.js";
 import { resourceForReadableStream } from "ext:deno_web/06_streams.js";
@@ -458,6 +465,8 @@ class ClientRequest extends OutgoingMessage {
       this._bodyWriteRid = resourceForReadableStream(readable);
     }
 
+    let span;
+    let context;
     (async () => {
       try {
         const parsedUrl = new URL(url);
@@ -467,6 +476,17 @@ class ClientRequest extends OutgoingMessage {
           // This should be only happening in artificial test cases
           return;
         }
+
+        if (TRACING_ENABLED) {
+          span = builtinTracer().startSpan(this.method, { kind: 2 }); // Kind 2 = Client
+          context = enterSpan(span);
+          span.setAttribute("http.request.method", this.method);
+          span.setAttribute("url.full", parsedUrl.href);
+          span.setAttribute("url.scheme", parsedUrl.protocol.slice(0, -1));
+          span.setAttribute("url.path", parsedUrl.pathname);
+          span.setAttribute("url.query", parsedUrl.search.slice(1));
+        }
+
         let baseConnRid = handle[kStreamBaseField][internalRidSymbol];
         if (this._encrypted) {
           [baseConnRid] = op_tls_start({
@@ -476,6 +496,7 @@ class ClientRequest extends OutgoingMessage {
             alpnProtocols: ["http/1.0", "http/1.1"],
           });
         }
+
         this._req = await op_node_http_request_with_conn(
           this.method,
           url,
@@ -525,6 +546,15 @@ class ClientRequest extends OutgoingMessage {
         });
 
         const res = await op_node_http_await_response(this._req!.requestRid);
+
+        if (span) {
+          span.setAttribute("http.response.status_code", res.status);
+          if (res.status >= 400) {
+            span.setAttribute("error.type", String(res.status));
+            span.setStatus({ code: 2 }); // Code 2 = Error
+          }
+        }
+
         if (this._req.cancelHandleRid !== null) {
           core.tryClose(this._req.cancelHandleRid);
         }
@@ -541,7 +571,7 @@ class ClientRequest extends OutgoingMessage {
         // incoming.httpVersionMinor = versionMinor;
         // incoming.httpVersion = `${versionMajor}.${versionMinor}`;
         // incoming.joinDuplicateHeaders = socket?.server?.joinDuplicateHeaders ||
-        //  parser.joinDuplicateHeaders;
+        // parser.joinDuplicateHeaders;
 
         incoming.url = res.url;
         incoming.statusCode = res.status;
@@ -605,6 +635,10 @@ class ClientRequest extends OutgoingMessage {
           this.emit("response", incoming);
         }
       } catch (err) {
+        if (span) {
+          updateSpanFromError(span, err);
+        }
+
         if (this._req && this._req.cancelHandleRid !== null) {
           core.tryClose(this._req.cancelHandleRid);
         }
@@ -630,8 +664,14 @@ class ClientRequest extends OutgoingMessage {
         } else {
           this.emit("error", err);
         }
+      } finally {
+        span?.end();
       }
     })();
+
+    if (context) {
+      restoreContext(context);
+    }
   }
 
   _implicitHeader() {
diff --git a/ext/telemetry/util.ts b/ext/telemetry/util.ts
index ac233f7a9fd733..e39fa0facc55f6 100644
--- a/ext/telemetry/util.ts
+++ b/ext/telemetry/util.ts
@@ -25,3 +25,9 @@ export function updateSpanFromResponse(span: Span, response: Response) {
     String(response.status),
   );
 }
+
+// deno-lint-ignore no-explicit-any
+export function updateSpanFromError(span: Span, error: any) {
+  span.setAttribute("error.type", error.name ?? "Error");
+  span.setStatus({ code: 2, message: error.message ?? String(error) });
+}
diff --git a/tests/specs/cli/otel_basic/__test__.jsonc b/tests/specs/cli/otel_basic/__test__.jsonc
index 2fae511463b9cd..c87ff4e7f71405 100644
--- a/tests/specs/cli/otel_basic/__test__.jsonc
+++ b/tests/specs/cli/otel_basic/__test__.jsonc
@@ -44,6 +44,10 @@
     "start_active_span": {
       "args": "run -A main.ts start_active_span.ts",
       "output": "start_active_span.out"
+    },
+    "node_http_request": {
+      "args": "run -A main.ts node_http_request.ts",
+      "output": "node_http_request.out"
     }
   }
 }
diff --git a/tests/specs/cli/otel_basic/node_http_metric.out b/tests/specs/cli/otel_basic/node_http_metric.out
index f79f0a62a51492..ef5f73654cfdb6 100644
--- a/tests/specs/cli/otel_basic/node_http_metric.out
+++ b/tests/specs/cli/otel_basic/node_http_metric.out
@@ -7,9 +7,9 @@
       "parentSpanId": "",
       "flags": 1,
       "name": "GET",
-      "kind": 2,
-      "startTimeUnixNano": "[WILDCARD]",
-      "endTimeUnixNano": "[WILDCARD]",
+      "kind": 3,
+      "startTimeUnixNano": "[WILDLINE]",
+      "endTimeUnixNano": "[WILDLINE]",
       "attributes": [
         {
           "key": "http.request.method",
@@ -20,7 +20,7 @@
         {
           "key": "url.full",
           "value": {
-            "stringValue": "http://localhost:[WILDCARD]/"
+            "stringValue": "http://localhost:[WILDLINE]/"
           }
         },
         {
@@ -44,7 +44,7 @@
         {
           "key": "http.response.status_code",
           "value": {
-            "stringValue": "200"
+            "doubleValue": 200
           }
         }
       ],
@@ -66,8 +66,8 @@
       "flags": 1,
       "name": "GET",
       "kind": 2,
-      "startTimeUnixNano": "[WILDCARD]",
-      "endTimeUnixNano": "[WILDCARD]",
+      "startTimeUnixNano": "[WILDLINE]",
+      "endTimeUnixNano": "[WILDLINE]",
       "attributes": [
         {
           "key": "http.request.method",
@@ -78,7 +78,7 @@
         {
           "key": "url.full",
           "value": {
-            "stringValue": "http://localhost:[WILDCARD]/"
+            "stringValue": "http://localhost:[WILDLINE]/"
           }
         },
         {
@@ -123,9 +123,183 @@
       "parentSpanId": "",
       "flags": 1,
       "name": "GET",
+      "kind": 3,
+      "startTimeUnixNano": "[WILDLINE]",
+      "endTimeUnixNano": "[WILDLINE]",
+      "attributes": [
+        {
+          "key": "http.request.method",
+          "value": {
+            "stringValue": "GET"
+          }
+        },
+        {
+          "key": "url.full",
+          "value": {
+            "stringValue": "http://localhost:[WILDLINE]/"
+          }
+        },
+        {
+          "key": "url.scheme",
+          "value": {
+            "stringValue": "http"
+          }
+        },
+        {
+          "key": "url.path",
+          "value": {
+            "stringValue": "/"
+          }
+        },
+        {
+          "key": "url.query",
+          "value": {
+            "stringValue": ""
+          }
+        },
+        {
+          "key": "http.response.status_code",
+          "value": {
+            "doubleValue": 200
+          }
+        }
+      ],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 0
+      }
+    },
+    {
+      "traceId": "00000000000000000000000000000004",
+      "spanId": "0000000000000004",
+      "traceState": "",
+      "parentSpanId": "",
+      "flags": 1,
+      "name": "GET",
+      "kind": 2,
+      "startTimeUnixNano": "[WILDLINE]",
+      "endTimeUnixNano": "[WILDLINE]",
+      "attributes": [
+        {
+          "key": "http.request.method",
+          "value": {
+            "stringValue": "GET"
+          }
+        },
+        {
+          "key": "url.full",
+          "value": {
+            "stringValue": "http://localhost:[WILDLINE]/"
+          }
+        },
+        {
+          "key": "url.scheme",
+          "value": {
+            "stringValue": "http"
+          }
+        },
+        {
+          "key": "url.path",
+          "value": {
+            "stringValue": "/"
+          }
+        },
+        {
+          "key": "url.query",
+          "value": {
+            "stringValue": ""
+          }
+        },
+        {
+          "key": "http.response.status_code",
+          "value": {
+            "stringValue": "200"
+          }
+        }
+      ],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 0
+      }
+    },
+    {
+      "traceId": "00000000000000000000000000000005",
+      "spanId": "0000000000000005",
+      "traceState": "",
+      "parentSpanId": "",
+      "flags": 1,
+      "name": "GET",
+      "kind": 3,
+      "startTimeUnixNano": "[WILDLINE]",
+      "endTimeUnixNano": "[WILDLINE]",
+      "attributes": [
+        {
+          "key": "http.request.method",
+          "value": {
+            "stringValue": "GET"
+          }
+        },
+        {
+          "key": "url.full",
+          "value": {
+            "stringValue": "http://localhost:[WILDLINE]/"
+          }
+        },
+        {
+          "key": "url.scheme",
+          "value": {
+            "stringValue": "http"
+          }
+        },
+        {
+          "key": "url.path",
+          "value": {
+            "stringValue": "/"
+          }
+        },
+        {
+          "key": "url.query",
+          "value": {
+            "stringValue": ""
+          }
+        },
+        {
+          "key": "http.response.status_code",
+          "value": {
+            "doubleValue": 200
+          }
+        }
+      ],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 0
+      }
+    },
+    {
+      "traceId": "00000000000000000000000000000006",
+      "spanId": "0000000000000006",
+      "traceState": "",
+      "parentSpanId": "",
+      "flags": 1,
+      "name": "GET",
       "kind": 2,
-      "startTimeUnixNano": "[WILDCARD]",
-      "endTimeUnixNano": "[WILDCARD]",
+      "startTimeUnixNano": "[WILDLINE]",
+      "endTimeUnixNano": "[WILDLINE]",
       "attributes": [
         {
           "key": "http.request.method",
@@ -136,7 +310,7 @@
         {
           "key": "url.full",
           "value": {
-            "stringValue": "http://localhost:[WILDCARD]/"
+            "stringValue": "http://localhost:[WILDLINE]/"
           }
         },
         {
diff --git a/tests/specs/cli/otel_basic/node_http_request.out b/tests/specs/cli/otel_basic/node_http_request.out
new file mode 100644
index 00000000000000..9e569339402669
--- /dev/null
+++ b/tests/specs/cli/otel_basic/node_http_request.out
@@ -0,0 +1,128 @@
+{
+  "spans": [
+    {
+      "traceId": "00000000000000000000000000000001",
+      "spanId": "0000000000000001",
+      "traceState": "",
+      "parentSpanId": "",
+      "flags": 1,
+      "name": "GET",
+      "kind": 3,
+      "startTimeUnixNano": "[WILDCARD]",
+      "endTimeUnixNano": "[WILDCARD]",
+      "attributes": [
+        {
+          "key": "http.request.method",
+          "value": {
+            "stringValue": "GET"
+          }
+        },
+        {
+          "key": "url.full",
+          "value": {
+            "stringValue": "http://localhost:4545/echo.ts"
+          }
+        },
+        {
+          "key": "url.scheme",
+          "value": {
+            "stringValue": "http"
+          }
+        },
+        {
+          "key": "url.path",
+          "value": {
+            "stringValue": "/echo.ts"
+          }
+        },
+        {
+          "key": "url.query",
+          "value": {
+            "stringValue": ""
+          }
+        },
+        {
+          "key": "http.response.status_code",
+          "value": {
+            "doubleValue": 200
+          }
+        }
+      ],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 0
+      }
+    },
+    {
+      "traceId": "00000000000000000000000000000002",
+      "spanId": "0000000000000002",
+      "traceState": "",
+      "parentSpanId": "",
+      "flags": 1,
+      "name": "GET",
+      "kind": 3,
+      "startTimeUnixNano": "[WILDCARD]",
+      "endTimeUnixNano": "[WILDCARD]",
+      "attributes": [
+        {
+          "key": "http.request.method",
+          "value": {
+            "stringValue": "GET"
+          }
+        },
+        {
+          "key": "url.full",
+          "value": {
+            "stringValue": "http://localhost:4545/not-found"
+          }
+        },
+        {
+          "key": "url.scheme",
+          "value": {
+            "stringValue": "http"
+          }
+        },
+        {
+          "key": "url.path",
+          "value": {
+            "stringValue": "/not-found"
+          }
+        },
+        {
+          "key": "url.query",
+          "value": {
+            "stringValue": ""
+          }
+        },
+        {
+          "key": "http.response.status_code",
+          "value": {
+            "doubleValue": 404
+          }
+        },
+        {
+          "key": "error.type",
+          "value": {
+            "stringValue": "404"
+          }
+        }
+      ],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 2
+      }
+    }
+  ],
+  "logs": [],
+  "metrics": []
+}
diff --git a/tests/specs/cli/otel_basic/node_http_request.ts b/tests/specs/cli/otel_basic/node_http_request.ts
new file mode 100644
index 00000000000000..00a70d1dd10b7e
--- /dev/null
+++ b/tests/specs/cli/otel_basic/node_http_request.ts
@@ -0,0 +1,11 @@
+import http from "node:http";
+import { text } from "node:stream/consumers";
+
+function request(url: string) {
+  return new Promise((resolve) => {
+    http.request(url, (res) => resolve(text(res))).end();
+  });
+}
+
+await request("http://localhost:4545/echo.ts");
+await request("http://localhost:4545/not-found");

From dcfaba0f3a943bbf311b73579d8eaf3d0eedb04a Mon Sep 17 00:00:00 2001
From: Yoshiya Hinosawa <stibium121@gmail.com>
Date: Thu, 13 Mar 2025 17:47:00 +0900
Subject: [PATCH 079/115] fix(otel/unstable): trace error cases of fetch
 (#28480)

---
 ext/fetch/26_fetch.js                     |  12 +-
 ext/telemetry/util.ts                     |  10 +
 tests/specs/cli/otel_basic/__test__.jsonc |   4 +
 tests/specs/cli/otel_basic/fetch.out      | 244 ++++++++++++++++++++++
 tests/specs/cli/otel_basic/fetch.ts       |  11 +
 5 files changed, 280 insertions(+), 1 deletion(-)
 create mode 100644 tests/specs/cli/otel_basic/fetch.out
 create mode 100644 tests/specs/cli/otel_basic/fetch.ts

diff --git a/ext/fetch/26_fetch.js b/ext/fetch/26_fetch.js
index 82b62e3900ad0b..fa9cca1ff2cd35 100644
--- a/ext/fetch/26_fetch.js
+++ b/ext/fetch/26_fetch.js
@@ -65,6 +65,7 @@ import {
   TRACING_ENABLED,
 } from "ext:deno_telemetry/telemetry.ts";
 import {
+  updateSpanFromError,
   updateSpanFromRequest,
   updateSpanFromResponse,
 } from "ext:deno_telemetry/util.ts";
@@ -378,6 +379,11 @@ function fetch(input, init = { __proto__: null }) {
       const request = toInnerRequest(requestObject);
       // 4.
       if (requestObject.signal.aborted) {
+        if (span) {
+          // Handles this case here as this is the only case where `result` promise
+          // is settled immediately.
+          updateSpanFromError(span, requestObject.signal.reason);
+        }
         reject(abortFetch(request, null, requestObject.signal.reason));
         return;
       }
@@ -448,7 +454,11 @@ function fetch(input, init = { __proto__: null }) {
     });
 
     if (opPromise) {
-      PromisePrototypeCatch(result, () => {});
+      PromisePrototypeCatch(result, (e) => {
+        if (span) {
+          updateSpanFromError(span, e);
+        }
+      });
       return (async function fetch() {
         try {
           await opPromise;
diff --git a/ext/telemetry/util.ts b/ext/telemetry/util.ts
index e39fa0facc55f6..fcee764ac8606d 100644
--- a/ext/telemetry/util.ts
+++ b/ext/telemetry/util.ts
@@ -24,6 +24,16 @@ export function updateSpanFromResponse(span: Span, response: Response) {
     "http.response.status_code",
     String(response.status),
   );
+  if (response.status >= 400) {
+    span.setAttribute("error.type", String(response.status));
+    span.setStatus({ code: 2, message: response.statusText });
+  }
+}
+
+// deno-lint-ignore no-explicit-any
+export function updateSpanFromError(span: Span, error: any) {
+  span.setAttribute("error.type", error.name ?? "Error");
+  span.setStatus({ code: 2, message: error.message ?? String(error) });
 }
 
 // deno-lint-ignore no-explicit-any
diff --git a/tests/specs/cli/otel_basic/__test__.jsonc b/tests/specs/cli/otel_basic/__test__.jsonc
index c87ff4e7f71405..be14a634728d52 100644
--- a/tests/specs/cli/otel_basic/__test__.jsonc
+++ b/tests/specs/cli/otel_basic/__test__.jsonc
@@ -23,6 +23,10 @@
       "args": "run -A main.ts metric.ts",
       "output": "metric.out"
     },
+    "fetch": {
+      "args": "run -A main.ts fetch.ts",
+      "output": "fetch.out"
+    },
     "http_metric": {
       "envs": {
         "OTEL_METRIC_EXPORT_INTERVAL": "1000"
diff --git a/tests/specs/cli/otel_basic/fetch.out b/tests/specs/cli/otel_basic/fetch.out
new file mode 100644
index 00000000000000..50c27e5b78f119
--- /dev/null
+++ b/tests/specs/cli/otel_basic/fetch.out
@@ -0,0 +1,244 @@
+{
+  "spans": [
+    {
+      "traceId": "00000000000000000000000000000001",
+      "spanId": "0000000000000001",
+      "traceState": "",
+      "parentSpanId": "",
+      "flags": 1,
+      "name": "GET",
+      "kind": 3,
+      "startTimeUnixNano": "[WILDLINE]",
+      "endTimeUnixNano": "[WILDLINE]",
+      "attributes": [
+        {
+          "key": "http.request.method",
+          "value": {
+            "stringValue": "GET"
+          }
+        },
+        {
+          "key": "url.full",
+          "value": {
+            "stringValue": "http://localhost:4545/echo.ts"
+          }
+        },
+        {
+          "key": "url.scheme",
+          "value": {
+            "stringValue": "http"
+          }
+        },
+        {
+          "key": "url.path",
+          "value": {
+            "stringValue": "/echo.ts"
+          }
+        },
+        {
+          "key": "url.query",
+          "value": {
+            "stringValue": ""
+          }
+        },
+        {
+          "key": "http.response.status_code",
+          "value": {
+            "stringValue": "200"
+          }
+        }
+      ],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 0
+      }
+    },
+    {
+      "traceId": "00000000000000000000000000000001",
+      "spanId": "0000000000000002",
+      "traceState": "",
+      "parentSpanId": "0000000000000001",
+      "flags": 1,
+      "name": "GET",
+      "kind": 3,
+      "startTimeUnixNano": "[WILDLINE]",
+      "endTimeUnixNano": "[WILDLINE]",
+      "attributes": [
+        {
+          "key": "http.request.method",
+          "value": {
+            "stringValue": "GET"
+          }
+        },
+        {
+          "key": "url.full",
+          "value": {
+            "stringValue": "http://localhost:4545/not-found"
+          }
+        },
+        {
+          "key": "url.scheme",
+          "value": {
+            "stringValue": "http"
+          }
+        },
+        {
+          "key": "url.path",
+          "value": {
+            "stringValue": "/not-found"
+          }
+        },
+        {
+          "key": "url.query",
+          "value": {
+            "stringValue": ""
+          }
+        },
+        {
+          "key": "http.response.status_code",
+          "value": {
+            "stringValue": "404"
+          }
+        },
+        {
+          "key": "error.type",
+          "value": {
+            "stringValue": "404"
+          }
+        }
+      ],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "Not Found",
+        "code": 2
+      }
+    },
+    {
+      "traceId": "00000000000000000000000000000001",
+      "spanId": "0000000000000003",
+      "traceState": "",
+      "parentSpanId": "0000000000000001",
+      "flags": 1,
+      "name": "GET",
+      "kind": 3,
+      "startTimeUnixNano": "[WILDLINE]",
+      "endTimeUnixNano": "[WILDLINE]",
+      "attributes": [
+        {
+          "key": "http.request.method",
+          "value": {
+            "stringValue": "GET"
+          }
+        },
+        {
+          "key": "url.full",
+          "value": {
+            "stringValue": "http://unreachable-host.abc/"
+          }
+        },
+        {
+          "key": "url.scheme",
+          "value": {
+            "stringValue": "http"
+          }
+        },
+        {
+          "key": "url.path",
+          "value": {
+            "stringValue": "/"
+          }
+        },
+        {
+          "key": "url.query",
+          "value": {
+            "stringValue": ""
+          }
+        },
+        {
+          "key": "error.type",
+          "value": {
+            "stringValue": "TypeError"
+          }
+        }
+      ],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "error sending request for url (http://unreachable-host.abc/): client error (Connect): dns error: [WILDLINE]",
+        "code": 2
+      }
+    },
+    {
+      "traceId": "00000000000000000000000000000001",
+      "spanId": "0000000000000004",
+      "traceState": "",
+      "parentSpanId": "0000000000000001",
+      "flags": 1,
+      "name": "GET",
+      "kind": 3,
+      "startTimeUnixNano": "[WILDLINE]",
+      "endTimeUnixNano": "[WILDLINE]",
+      "attributes": [
+        {
+          "key": "http.request.method",
+          "value": {
+            "stringValue": "GET"
+          }
+        },
+        {
+          "key": "url.full",
+          "value": {
+            "stringValue": "http://localhost:4545/echo.ts"
+          }
+        },
+        {
+          "key": "url.scheme",
+          "value": {
+            "stringValue": "http"
+          }
+        },
+        {
+          "key": "url.path",
+          "value": {
+            "stringValue": "/echo.ts"
+          }
+        },
+        {
+          "key": "url.query",
+          "value": {
+            "stringValue": ""
+          }
+        },
+        {
+          "key": "error.type",
+          "value": {
+            "stringValue": "AbortError"
+          }
+        }
+      ],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "The signal has been aborted",
+        "code": 2
+      }
+    }
+  ],
+  "logs": [],
+  "metrics": []
+}
diff --git a/tests/specs/cli/otel_basic/fetch.ts b/tests/specs/cli/otel_basic/fetch.ts
new file mode 100644
index 00000000000000..82c7aa176d7c9c
--- /dev/null
+++ b/tests/specs/cli/otel_basic/fetch.ts
@@ -0,0 +1,11 @@
+async function request(url: string, options: any) {
+  try {
+    await (await fetch(url, options)).text();
+  } catch {
+  }
+}
+
+await request("http://localhost:4545/echo.ts");
+await request("http://localhost:4545/not-found");
+await request("http://unreachable-host.abc/");
+await request("http://localhost:4545/echo.ts", { signal: AbortSignal.abort() });

From b204cdc512b72ce894889b3569f2e1a75f11e459 Mon Sep 17 00:00:00 2001
From: Luca Casonato <hello@lcas.dev>
Date: Thu, 13 Mar 2025 12:58:52 +0100
Subject: [PATCH 080/115] chore: fix build on main (#28487)

---
 ext/telemetry/util.ts | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/ext/telemetry/util.ts b/ext/telemetry/util.ts
index fcee764ac8606d..54612a4d7d21f4 100644
--- a/ext/telemetry/util.ts
+++ b/ext/telemetry/util.ts
@@ -35,9 +35,3 @@ export function updateSpanFromError(span: Span, error: any) {
   span.setAttribute("error.type", error.name ?? "Error");
   span.setStatus({ code: 2, message: error.message ?? String(error) });
 }
-
-// deno-lint-ignore no-explicit-any
-export function updateSpanFromError(span: Span, error: any) {
-  span.setAttribute("error.type", error.name ?? "Error");
-  span.setStatus({ code: 2, message: error.message ?? String(error) });
-}

From 28e5c388b40799cd321eb0c2f8806b0788be464e Mon Sep 17 00:00:00 2001
From: Leo Kettmeir <crowlkats@toaxl.com>
Date: Thu, 13 Mar 2025 16:32:45 +0100
Subject: [PATCH 081/115] feat(otel): span context propagators (#28460)

Co-authored-by: Luca Casonato <hello@lcas.dev>
---
 cli/args/flags.rs                             |  32 +-
 ext/fetch/26_fetch.js                         |  19 +-
 ext/http/00_serve.ts                          |  57 +-
 ext/node/polyfills/http.ts                    |  30 +-
 ext/telemetry/lib.rs                          |  34 +-
 ext/telemetry/telemetry.ts                    | 615 +++++++++++++++++-
 tests/specs/cli/otel_basic/__test__.jsonc     |   4 +
 tests/specs/cli/otel_basic/basic.out          |  12 +-
 tests/specs/cli/otel_basic/http_metric.out    |  12 +-
 .../specs/cli/otel_basic/http_propagators.out | 295 +++++++++
 .../specs/cli/otel_basic/http_propagators.ts  |  32 +
 .../cli/otel_basic/http_propagators_1.ts      |   6 +
 .../cli/otel_basic/http_propagators_2.ts      |   7 +
 .../cli/otel_basic/http_propagators_call.ts   |   1 +
 tests/specs/cli/otel_basic/main.ts            |   2 +-
 .../specs/cli/otel_basic/node_http_metric.out |  16 +-
 16 files changed, 1101 insertions(+), 73 deletions(-)
 create mode 100644 tests/specs/cli/otel_basic/http_propagators.out
 create mode 100644 tests/specs/cli/otel_basic/http_propagators.ts
 create mode 100644 tests/specs/cli/otel_basic/http_propagators_1.ts
 create mode 100644 tests/specs/cli/otel_basic/http_propagators_2.ts
 create mode 100644 tests/specs/cli/otel_basic/http_propagators_call.ts

diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index 08d07d871293f8..132de3a0c3bdff 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -40,6 +40,7 @@ use deno_path_util::url_to_file_path;
 use deno_runtime::deno_permissions::SysDescriptor;
 use deno_telemetry::OtelConfig;
 use deno_telemetry::OtelConsoleConfig;
+use deno_telemetry::OtelPropagators;
 use log::debug;
 use log::Level;
 use serde::Deserialize;
@@ -943,11 +944,29 @@ impl Flags {
       !has_unstable_flag || otel_var("OTEL_SDK_DISABLED").unwrap_or(false);
     let default = !disabled && otel_var("OTEL_DENO").unwrap_or(false);
 
+    let propagators = if default {
+      if let Ok(propagators) = std::env::var("OTEL_PROPAGATORS") {
+        propagators
+          .split(',')
+          .filter_map(|p| match p.trim() {
+            "tracecontext" => Some(OtelPropagators::TraceContext),
+            "baggage" => Some(OtelPropagators::Baggage),
+            _ => None,
+          })
+          .collect()
+      } else {
+        HashSet::from([OtelPropagators::TraceContext, OtelPropagators::Baggage])
+      }
+    } else {
+      HashSet::default()
+    };
+
     OtelConfig {
       tracing_enabled: !disabled
         && otel_var("OTEL_DENO_TRACING").unwrap_or(default),
       metrics_enabled: !disabled
         && otel_var("OTEL_DENO_METRICS").unwrap_or(default),
+      propagators,
       console: match std::env::var("OTEL_DENO_CONSOLE").as_deref() {
         Ok(_) if disabled => OtelConsoleConfig::Ignore,
         Ok("ignore") => OtelConsoleConfig::Ignore,
@@ -964,9 +983,18 @@ impl Flags {
           }
         }
       },
-      deterministic: std::env::var("DENO_UNSTABLE_OTEL_DETERMINISTIC")
+      deterministic_prefix: std::env::var("DENO_UNSTABLE_OTEL_DETERMINISTIC")
         .as_deref()
-        == Ok("1"),
+        .map(u8::from_str)
+        .map(|x| match x {
+          Ok(x) => Some(x),
+          Err(_) => {
+            log::warn!("'DENO_UNSTABLE_OTEL_DETERMINISTIC' env var value not recognized, only integers are accepted");
+            None
+          }
+        })
+        .ok()
+        .flatten(),
     }
   }
 
diff --git a/ext/fetch/26_fetch.js b/ext/fetch/26_fetch.js
index fa9cca1ff2cd35..9341448d072be6 100644
--- a/ext/fetch/26_fetch.js
+++ b/ext/fetch/26_fetch.js
@@ -60,8 +60,10 @@ import {
 import * as abortSignal from "ext:deno_web/03_abort_signal.js";
 import {
   builtinTracer,
+  ContextManager,
   enterSpan,
-  restoreContext,
+  PROPAGATORS,
+  restoreSnapshot,
   TRACING_ENABLED,
 } from "ext:deno_telemetry/telemetry.ts";
 import {
@@ -352,11 +354,11 @@ function httpRedirectFetch(request, response, terminator) {
  */
 function fetch(input, init = { __proto__: null }) {
   let span;
-  let context;
+  let snapshot;
   try {
     if (TRACING_ENABLED) {
       span = builtinTracer().startSpan("fetch", { kind: 2 });
-      context = enterSpan(span);
+      snapshot = enterSpan(span);
     }
 
     // There is an async dispatch later that causes a stack trace disconnect.
@@ -372,6 +374,15 @@ function fetch(input, init = { __proto__: null }) {
       const requestObject = new Request(input, init);
 
       if (span) {
+        const context = ContextManager.active();
+        for (const propagator of new SafeArrayIterator(PROPAGATORS)) {
+          propagator.inject(context, requestObject.headers, {
+            set(carrier, key, value) {
+              carrier.append(key, value);
+            },
+          });
+        }
+
         updateSpanFromRequest(span, requestObject);
       }
 
@@ -487,7 +498,7 @@ function fetch(input, init = { __proto__: null }) {
     }
     return result;
   } finally {
-    if (context) restoreContext(context);
+    if (snapshot) restoreSnapshot(snapshot);
   }
 }
 
diff --git a/ext/http/00_serve.ts b/ext/http/00_serve.ts
index 4059b0c7a080b9..1251b865746710 100644
--- a/ext/http/00_serve.ts
+++ b/ext/http/00_serve.ts
@@ -31,10 +31,13 @@ import {
   op_http_wait,
 } from "ext:core/ops";
 const {
+  ArrayPrototypeFind,
+  ArrayPrototypeMap,
   ArrayPrototypePush,
   ObjectHasOwn,
   ObjectPrototypeIsPrototypeOf,
   PromisePrototypeCatch,
+  SafeArrayIterator,
   SafePromisePrototypeFinally,
   PromisePrototypeThen,
   StringPrototypeIncludes,
@@ -44,7 +47,6 @@ const {
   Uint8Array,
   Promise,
 } = primordials;
-const { getAsyncContext, setAsyncContext } = core;
 
 import { InnerBody } from "ext:deno_fetch/22_body.js";
 import { Event } from "ext:deno_web/02_event.js";
@@ -89,8 +91,12 @@ import { hasTlsKeyPairOptions, listenTls } from "ext:deno_net/02_tls.js";
 import { SymbolAsyncDispose } from "ext:deno_web/00_infra.js";
 import {
   builtinTracer,
+  ContextManager,
+  currentSnapshot,
   enterSpan,
   METRICS_ENABLED,
+  PROPAGATORS,
+  restoreSnapshot,
   TRACING_ENABLED,
 } from "ext:deno_telemetry/telemetry.ts";
 import {
@@ -425,10 +431,10 @@ class CallbackContext {
   /** @type {Promise<void> | undefined} */
   closing;
   listener;
-  asyncContext;
+  asyncContextSnapshot;
 
   constructor(signal, args, listener) {
-    this.asyncContext = getAsyncContext();
+    this.asyncContextSnapshot = currentSnapshot();
     // The abort signal triggers a non-graceful shutdown
     signal?.addEventListener(
       "abort",
@@ -624,29 +630,56 @@ function mapToCallback(context, callback, onError) {
   if (TRACING_ENABLED) {
     const origMapped = mapped;
     mapped = function (req, _span) {
-      const oldCtx = getAsyncContext();
-      setAsyncContext(context.asyncContext);
-      const span = builtinTracer().startSpan("deno.serve", { kind: 1 });
+      const snapshot = currentSnapshot();
+      restoreSnapshot(context.asyncContext);
+
+      const reqHeaders = op_http_get_request_headers(req);
+      const headers: [key: string, value: string][] = [];
+      for (let i = 0; i < reqHeaders.length; i += 2) {
+        ArrayPrototypePush(headers, [reqHeaders[i], reqHeaders[i + 1]]);
+      }
+      let activeContext = ContextManager.active();
+      for (const propagator of new SafeArrayIterator(PROPAGATORS)) {
+        activeContext = propagator.extract(activeContext, headers, {
+          get(carrier: [key: string, value: string][], key: string) {
+            return ArrayPrototypeFind(
+              carrier,
+              (carrierEntry) => carrierEntry[0] === key,
+            )?.[1];
+          },
+          keys(carrier: [key: string, value: string][]) {
+            return ArrayPrototypeMap(
+              carrier,
+              (carrierEntry) => carrierEntry[0],
+            );
+          },
+        });
+      }
+
+      const span = builtinTracer().startSpan(
+        "deno.serve",
+        { kind: 1 },
+        activeContext,
+      );
+      enterSpan(span);
       try {
-        enterSpan(span);
         return SafePromisePrototypeFinally(
           origMapped(req, span),
           () => span.end(),
         );
       } finally {
-        // equiv to exitSpan.
-        setAsyncContext(oldCtx);
+        restoreSnapshot(snapshot);
       }
     };
   } else {
     const origMapped = mapped;
     mapped = function (req, span) {
-      const oldCtx = getAsyncContext();
-      setAsyncContext(context.asyncContext);
+      const snapshot = currentSnapshot();
+      restoreSnapshot(context.asyncContext);
       try {
         return origMapped(req, span);
       } finally {
-        setAsyncContext(oldCtx);
+        restoreSnapshot(snapshot);
       }
     };
   }
diff --git a/ext/node/polyfills/http.ts b/ext/node/polyfills/http.ts
index 452afb34c4e614..6998a96e2f2cc2 100644
--- a/ext/node/polyfills/http.ts
+++ b/ext/node/polyfills/http.ts
@@ -69,8 +69,10 @@ import { serve, upgradeHttpRaw } from "ext:deno_http/00_serve.ts";
 import { headersEntries } from "ext:deno_fetch/20_headers.js";
 import {
   builtinTracer,
+  ContextManager,
   enterSpan,
-  restoreContext,
+  PROPAGATORS,
+  restoreSnapshot,
   TRACING_ENABLED,
 } from "ext:deno_telemetry/telemetry.ts";
 import { timerId } from "ext:deno_web/03_abort_signal.js";
@@ -82,7 +84,8 @@ import { methods as METHODS } from "node:_http_common";
 import { deprecate } from "node:util";
 
 const { internalRidSymbol } = core;
-const { ArrayIsArray, StringPrototypeToLowerCase } = primordials;
+const { ArrayIsArray, StringPrototypeToLowerCase, SafeArrayIterator } =
+  primordials;
 
 type Chunk = string | Buffer | Uint8Array;
 
@@ -466,7 +469,11 @@ class ClientRequest extends OutgoingMessage {
     }
 
     let span;
-    let context;
+    let snapshot;
+    if (TRACING_ENABLED) {
+      span = builtinTracer().startSpan(this.method, { kind: 2 }); // Kind 2 = Client
+      snapshot = enterSpan(span);
+    }
     (async () => {
       try {
         const parsedUrl = new URL(url);
@@ -476,10 +483,15 @@ class ClientRequest extends OutgoingMessage {
           // This should be only happening in artificial test cases
           return;
         }
-
-        if (TRACING_ENABLED) {
-          span = builtinTracer().startSpan(this.method, { kind: 2 }); // Kind 2 = Client
-          context = enterSpan(span);
+        if (span) {
+          const context = ContextManager.active();
+          for (const propagator of new SafeArrayIterator(PROPAGATORS)) {
+            propagator.inject(context, headers, {
+              set(carrier, key, value) {
+                carrier.push([key, value]);
+              },
+            });
+          }
           span.setAttribute("http.request.method", this.method);
           span.setAttribute("url.full", parsedUrl.href);
           span.setAttribute("url.scheme", parsedUrl.protocol.slice(0, -1));
@@ -669,8 +681,8 @@ class ClientRequest extends OutgoingMessage {
       }
     })();
 
-    if (context) {
-      restoreContext(context);
+    if (snapshot) {
+      restoreSnapshot(snapshot);
     }
   }
 
diff --git a/ext/telemetry/lib.rs b/ext/telemetry/lib.rs
index fba30a91ec2bbf..aac743e0fb0c53 100644
--- a/ext/telemetry/lib.rs
+++ b/ext/telemetry/lib.rs
@@ -127,20 +127,35 @@ pub struct OtelConfig {
   pub tracing_enabled: bool,
   pub metrics_enabled: bool,
   pub console: OtelConsoleConfig,
-  pub deterministic: bool,
+  pub deterministic_prefix: Option<u8>,
+  pub propagators: std::collections::HashSet<OtelPropagators>,
 }
 
 impl OtelConfig {
   pub fn as_v8(&self) -> Box<[u8]> {
-    Box::new([
+    let mut data = vec![
       self.tracing_enabled as u8,
       self.metrics_enabled as u8,
       self.console as u8,
-      self.deterministic as u8,
-    ])
+    ];
+
+    data.extend(self.propagators.iter().map(|propagator| *propagator as u8));
+
+    data.into_boxed_slice()
   }
 }
 
+#[derive(
+  Default, Debug, Clone, Copy, Serialize, Deserialize, Eq, PartialEq, Hash,
+)]
+#[repr(u8)]
+pub enum OtelPropagators {
+  TraceContext = 0,
+  Baggage = 1,
+  #[default]
+  None = 2,
+}
+
 #[derive(Debug, Clone, Copy, Serialize, Deserialize)]
 #[repr(u8)]
 pub enum OtelConsoleConfig {
@@ -725,8 +740,8 @@ pub fn init(
       .with_version(rt_config.runtime_version.clone())
       .build();
 
-  let id_generator = if config.deterministic {
-    DenoIdGenerator::deterministic()
+  let id_generator = if let Some(prefix) = config.deterministic_prefix {
+    DenoIdGenerator::deterministic(prefix)
   } else {
     DenoIdGenerator::random()
   };
@@ -866,10 +881,11 @@ impl DenoIdGenerator {
     Self::Random(RandomIdGenerator::default())
   }
 
-  fn deterministic() -> Self {
+  fn deterministic(prefix: u8) -> Self {
+    let prefix = u64::from(prefix) << 56;
     Self::Deterministic {
-      next_trace_id: AtomicU64::new(1),
-      next_span_id: AtomicU64::new(1),
+      next_trace_id: AtomicU64::new(prefix + 1),
+      next_span_id: AtomicU64::new(prefix + 1),
     }
   }
 }
diff --git a/ext/telemetry/telemetry.ts b/ext/telemetry/telemetry.ts
index 50983def638004..b39ce3cad248e2 100644
--- a/ext/telemetry/telemetry.ts
+++ b/ext/telemetry/telemetry.ts
@@ -27,28 +27,55 @@ import {
 import { Console } from "ext:deno_console/01_console.js";
 
 const {
+  ArrayFrom,
   ArrayIsArray,
+  ArrayPrototypeFilter,
+  ArrayPrototypeForEach,
+  ArrayPrototypeJoin,
+  ArrayPrototypeMap,
   ArrayPrototypePush,
+  ArrayPrototypeReduce,
+  ArrayPrototypeReverse,
+  ArrayPrototypeShift,
+  ArrayPrototypeSlice,
+  ArrayPrototypeSplit,
   DatePrototype,
   DatePrototypeGetTime,
   Error,
+  MapPrototypeEntries,
+  MapPrototypeKeys,
+  Number,
+  NumberParseInt,
+  NumberPrototypeToString,
+  ObjectAssign,
   ObjectDefineProperty,
   ObjectEntries,
   ObjectKeys,
   ObjectPrototypeIsPrototypeOf,
+  ObjectValues,
   ReflectApply,
+  SafeArrayIterator,
   SafeIterator,
   SafeMap,
   SafePromiseAll,
+  SafeRegExp,
   SafeSet,
   SafeWeakSet,
+  StringPrototypeIndexOf,
+  StringPrototypeSlice,
+  StringPrototypeSplit,
+  StringPrototypeSubstring,
+  StringPrototypeTrim,
   SymbolFor,
   TypeError,
+  decodeURIComponent,
+  encodeURIComponent,
 } = primordials;
-const { AsyncVariable, setAsyncContext } = core;
+const { AsyncVariable, getAsyncContext, setAsyncContext } = core;
 
 export let TRACING_ENABLED = false;
 export let METRICS_ENABLED = false;
+export let PROPAGATORS: TextMapPropagator[] = [];
 
 // Note: These start at 0 in the JS library,
 // but start at 1 when serialized with JSON.
@@ -143,15 +170,18 @@ function hrToMs(hr: [number, number]): number {
   return (hr[0] * 1e3 + hr[1] / 1e6);
 }
 
-export function enterSpan(span: Span): Context | undefined {
+interface AsyncContextSnapshot {
+  __brand: "AsyncContextSnapshot";
+}
+
+export function enterSpan(span: Span): AsyncContextSnapshot | undefined {
   if (!span.isRecording()) return undefined;
   const context = (CURRENT.get() ?? ROOT_CONTEXT).setValue(SPAN_KEY, span);
   return CURRENT.enter(context);
 }
 
-export function restoreContext(context: Context): void {
-  setAsyncContext(context);
-}
+export const currentSnapshot = getAsyncContext;
+export const restoreSnapshot = setAsyncContext;
 
 function isDate(value: unknown): value is Date {
   return ObjectPrototypeIsPrototypeOf(value, DatePrototype);
@@ -354,12 +384,12 @@ class Span {
     _name: string,
     _attributesOrStartTime?: Attributes | TimeInput,
     _startTime?: TimeInput,
-  ): Span {
+  ): this {
     this.#otelSpan?.dropEvent();
     return this;
   }
 
-  addLink(link: Link): Span {
+  addLink(link: Link): this {
     const droppedAttributeCount = (link.droppedAttributesCount ?? 0) +
       (link.attributes ? ObjectKeys(link.attributes).length : 0);
     const valid = op_otel_span_add_link(
@@ -374,7 +404,7 @@ class Span {
     return this;
   }
 
-  addLinks(links: Link[]): Span {
+  addLinks(links: Link[]): this {
     for (let i = 0; i < links.length; i++) {
       this.addLink(links[i]);
     }
@@ -395,18 +425,17 @@ class Span {
   }
 
   // deno-lint-ignore no-explicit-any
-  recordException(_exception: any, _time?: TimeInput): Span {
+  recordException(_exception: any, _time?: TimeInput): void {
     this.#otelSpan?.dropEvent();
-    return this;
   }
 
-  setAttribute(key: string, value: AttributeValue): Span {
+  setAttribute(key: string, value: AttributeValue): this {
     if (!this.#otelSpan) return this;
     op_otel_span_attribute1(this.#otelSpan, key, value);
     return this;
   }
 
-  setAttributes(attributes: Attributes): Span {
+  setAttributes(attributes: Attributes): this {
     if (!this.#otelSpan) return this;
     const attributeKvs = ObjectEntries(attributes);
     let i = 0;
@@ -443,12 +472,12 @@ class Span {
     return this;
   }
 
-  setStatus(status: SpanStatus): Span {
+  setStatus(status: SpanStatus): this {
     this.#otelSpan?.setStatus(status.code, status.message ?? "");
     return this;
   }
 
-  updateName(name: string): Span {
+  updateName(name: string): this {
     if (!this.#otelSpan) return this;
     op_otel_span_update_name(this.#otelSpan, name);
     return this;
@@ -487,7 +516,7 @@ class Context {
 const ROOT_CONTEXT = new Context();
 
 // Context manager for opentelemetry js library
-class ContextManager {
+export class ContextManager {
   constructor() {
     throw new TypeError("ContextManager can not be constructed");
   }
@@ -1076,6 +1105,539 @@ function otelLog(message: string, level: number) {
   }
 }
 
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+const VERSION = "00";
+const VERSION_PART = "(?!ff)[\\da-f]{2}";
+const TRACE_ID_PART = "(?![0]{32})[\\da-f]{32}";
+const PARENT_ID_PART = "(?![0]{16})[\\da-f]{16}";
+const FLAGS_PART = "[\\da-f]{2}";
+const TRACE_PARENT_REGEX = new SafeRegExp(
+  `^\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\s?$`,
+);
+const VALID_TRACEID_REGEX = new SafeRegExp("^([0-9a-f]{32})$", "i");
+const VALID_SPANID_REGEX = new SafeRegExp("^[0-9a-f]{16}$", "i");
+const MAX_TRACE_STATE_ITEMS = 32;
+const MAX_TRACE_STATE_LEN = 512;
+const LIST_MEMBERS_SEPARATOR = ",";
+const LIST_MEMBER_KEY_VALUE_SPLITTER = "=";
+const VALID_KEY_CHAR_RANGE = "[_0-9a-z-*/]";
+const VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;
+const VALID_VENDOR_KEY =
+  `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;
+const VALID_KEY_REGEX = new SafeRegExp(
+  `^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`,
+);
+const VALID_VALUE_BASE_REGEX = new SafeRegExp("^[ -~]{0,255}[!-~]$");
+const INVALID_VALUE_COMMA_EQUAL_REGEX = new SafeRegExp(",|=");
+
+const TRACE_PARENT_HEADER = "traceparent";
+const TRACE_STATE_HEADER = "tracestate";
+const INVALID_TRACEID = "00000000000000000000000000000000";
+const INVALID_SPANID = "0000000000000000";
+const INVALID_SPAN_CONTEXT: SpanContext = {
+  traceId: INVALID_TRACEID,
+  spanId: INVALID_SPANID,
+  traceFlags: 0,
+};
+const BAGGAGE_KEY_PAIR_SEPARATOR = "=";
+const BAGGAGE_PROPERTIES_SEPARATOR = ";";
+const BAGGAGE_ITEMS_SEPARATOR = ",";
+const BAGGAGE_HEADER = "baggage";
+const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;
+const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;
+const BAGGAGE_MAX_TOTAL_LENGTH = 8192;
+
+class NonRecordingSpan implements Span {
+  constructor(
+    private readonly _spanContext: SpanContext = INVALID_SPAN_CONTEXT,
+  ) {}
+
+  spanContext(): SpanContext {
+    return this._spanContext;
+  }
+
+  setAttribute(_key: string, _value: unknown): this {
+    return this;
+  }
+
+  setAttributes(_attributes: SpanAttributes): this {
+    return this;
+  }
+
+  addEvent(_name: string, _attributes?: SpanAttributes): this {
+    return this;
+  }
+
+  addLink(_link: Link): this {
+    return this;
+  }
+
+  addLinks(_links: Link[]): this {
+    return this;
+  }
+
+  setStatus(_status: SpanStatus): this {
+    return this;
+  }
+
+  updateName(_name: string): this {
+    return this;
+  }
+
+  end(_endTime?: TimeInput): void {}
+
+  isRecording(): boolean {
+    return false;
+  }
+
+  // deno-lint-ignore no-explicit-any
+  recordException(_exception: any, _time?: TimeInput): void {}
+}
+
+const otelPropagators = {
+  traceContext: 0,
+  baggage: 1,
+  none: 2,
+};
+
+function parseTraceParent(traceParent: string): SpanContext | null {
+  const match = TRACE_PARENT_REGEX.exec(traceParent);
+  if (!match) return null;
+
+  // According to the specification the implementation should be compatible
+  // with future versions. If there are more parts, we only reject it if it's using version 00
+  // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent
+  if (match[1] === "00" && match[5]) return null;
+
+  return {
+    traceId: match[2],
+    spanId: match[3],
+    traceFlags: NumberParseInt(match[4], 16),
+  };
+}
+
+// deno-lint-ignore no-explicit-any
+interface TextMapSetter<Carrier = any> {
+  set(carrier: Carrier, key: string, value: string): void;
+}
+
+// deno-lint-ignore no-explicit-any
+interface TextMapPropagator<Carrier = any> {
+  inject(
+    context: Context,
+    carrier: Carrier,
+    setter: TextMapSetter<Carrier>,
+  ): void;
+  extract(
+    context: Context,
+    carrier: Carrier,
+    getter: TextMapGetter<Carrier>,
+  ): Context;
+  fields(): string[];
+}
+
+// deno-lint-ignore no-explicit-any
+interface TextMapGetter<Carrier = any> {
+  keys(carrier: Carrier): string[];
+  get(carrier: Carrier, key: string): undefined | string | string[];
+}
+
+function isTracingSuppressed(context: Context): boolean {
+  return context.getValue(
+    SymbolFor("OpenTelemetry SDK Context Key SUPPRESS_TRACING"),
+  ) === true;
+}
+
+function isValidTraceId(traceId: string): boolean {
+  return VALID_TRACEID_REGEX.test(traceId) && traceId !== INVALID_TRACEID;
+}
+
+function isValidSpanId(spanId: string): boolean {
+  return VALID_SPANID_REGEX.test(spanId) && spanId !== INVALID_SPANID;
+}
+
+function isSpanContextValid(spanContext: SpanContext): boolean {
+  return (
+    isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId)
+  );
+}
+
+function validateKey(key: string): boolean {
+  return VALID_KEY_REGEX.test(key);
+}
+
+function validateValue(value: string): boolean {
+  return (
+    VALID_VALUE_BASE_REGEX.test(value) &&
+    !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)
+  );
+}
+
+class TraceStateClass implements TraceState {
+  private _internalState: Map<string, string> = new SafeMap();
+
+  constructor(rawTraceState?: string) {
+    if (rawTraceState) this._parse(rawTraceState);
+  }
+
+  set(key: string, value: string): TraceStateClass {
+    const traceState = this._clone();
+    if (traceState._internalState.has(key)) {
+      traceState._internalState.delete(key);
+    }
+    traceState._internalState.set(key, value);
+    return traceState;
+  }
+
+  unset(key: string): TraceStateClass {
+    const traceState = this._clone();
+    traceState._internalState.delete(key);
+    return traceState;
+  }
+
+  get(key: string): string | undefined {
+    return this._internalState.get(key);
+  }
+
+  serialize(): string {
+    return ArrayPrototypeJoin(
+      ArrayPrototypeReduce(this._keys(), (agg: string[], key) => {
+        ArrayPrototypePush(
+          agg,
+          key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key),
+        );
+        return agg;
+      }, []),
+      LIST_MEMBERS_SEPARATOR,
+    );
+  }
+
+  private _parse(rawTraceState: string) {
+    if (rawTraceState.length > MAX_TRACE_STATE_LEN) return;
+    this._internalState = ArrayPrototypeReduce(
+      ArrayPrototypeReverse(
+        ArrayPrototypeSplit(rawTraceState, LIST_MEMBERS_SEPARATOR),
+      ),
+      (agg: Map<string, string>, part: string) => {
+        const listMember = StringPrototypeTrim(part); // Optional Whitespace (OWS) handling
+        const i = StringPrototypeIndexOf(
+          listMember,
+          LIST_MEMBER_KEY_VALUE_SPLITTER,
+        );
+        if (i !== -1) {
+          const key = StringPrototypeSlice(listMember, 0, i);
+          const value = StringPrototypeSlice(listMember, i + 1, part.length);
+          if (validateKey(key) && validateValue(value)) {
+            agg.set(key, value);
+          }
+        }
+        return agg;
+      },
+      new SafeMap(),
+    );
+
+    // Because of the reverse() requirement, trunc must be done after map is created
+    if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {
+      this._internalState = new SafeMap(
+        ArrayPrototypeSlice(
+          ArrayPrototypeReverse(
+            ArrayFrom(MapPrototypeEntries(this._internalState)),
+          ),
+          0,
+          MAX_TRACE_STATE_ITEMS,
+        ),
+      );
+    }
+  }
+
+  private _keys(): string[] {
+    return ArrayPrototypeReverse(
+      ArrayFrom(MapPrototypeKeys(this._internalState)),
+    );
+  }
+
+  private _clone(): TraceStateClass {
+    const traceState = new TraceStateClass();
+    traceState._internalState = new SafeMap(this._internalState);
+    return traceState;
+  }
+}
+
+class W3CTraceContextPropagator implements TextMapPropagator {
+  inject(context: Context, carrier: unknown, setter: TextMapSetter): void {
+    const spanContext = (context.getValue(SPAN_KEY) as Span | undefined)
+      ?.spanContext();
+    if (
+      !spanContext ||
+      isTracingSuppressed(context) ||
+      !isSpanContextValid(spanContext)
+    ) {
+      return;
+    }
+
+    const traceParent =
+      `${VERSION}-${spanContext.traceId}-${spanContext.spanId}-0${
+        NumberPrototypeToString(Number(spanContext.traceFlags || 0), 16)
+      }`;
+
+    setter.set(carrier, TRACE_PARENT_HEADER, traceParent);
+    if (spanContext.traceState) {
+      setter.set(
+        carrier,
+        TRACE_STATE_HEADER,
+        spanContext.traceState.serialize(),
+      );
+    }
+  }
+
+  extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {
+    const traceParentHeader = getter.get(carrier, TRACE_PARENT_HEADER);
+    if (!traceParentHeader) return context;
+    const traceParent = ArrayIsArray(traceParentHeader)
+      ? traceParentHeader[0]
+      : traceParentHeader;
+    if (typeof traceParent !== "string") return context;
+    const spanContext = parseTraceParent(traceParent);
+    if (!spanContext) return context;
+
+    spanContext.isRemote = true;
+
+    const traceStateHeader = getter.get(carrier, TRACE_STATE_HEADER);
+    if (traceStateHeader) {
+      // If more than one `tracestate` header is found, we merge them into a
+      // single header.
+      const state = ArrayIsArray(traceStateHeader)
+        ? ArrayPrototypeJoin(traceStateHeader, ",")
+        : traceStateHeader;
+      spanContext.traceState = new TraceStateClass(
+        typeof state === "string" ? state : undefined,
+      );
+    }
+    return context.setValue(SPAN_KEY, new NonRecordingSpan(spanContext));
+  }
+
+  fields(): string[] {
+    return [TRACE_PARENT_HEADER, TRACE_STATE_HEADER];
+  }
+}
+
+const baggageEntryMetadataSymbol = SymbolFor("BaggageEntryMetadata");
+
+type BaggageEntryMetadata = { toString(): string } & {
+  __TYPE__: typeof baggageEntryMetadataSymbol;
+};
+
+interface BaggageEntry {
+  value: string;
+  metadata?: BaggageEntryMetadata;
+}
+
+interface ParsedBaggageKeyValue {
+  key: string;
+  value: string;
+  metadata: BaggageEntryMetadata | undefined;
+}
+
+interface Baggage {
+  getEntry(key: string): BaggageEntry | undefined;
+  getAllEntries(): [string, BaggageEntry][];
+  setEntry(key: string, entry: BaggageEntry): Baggage;
+  removeEntry(key: string): Baggage;
+  removeEntries(...key: string[]): Baggage;
+  clear(): Baggage;
+}
+
+export function baggageEntryMetadataFromString(
+  str: string,
+): BaggageEntryMetadata {
+  if (typeof str !== "string") {
+    str = "";
+  }
+
+  return {
+    __TYPE__: baggageEntryMetadataSymbol,
+    toString() {
+      return str;
+    },
+  };
+}
+
+function serializeKeyPairs(keyPairs: string[]): string {
+  return ArrayPrototypeReduce(keyPairs, (hValue: string, current: string) => {
+    const value = `${hValue}${
+      hValue !== "" ? BAGGAGE_ITEMS_SEPARATOR : ""
+    }${current}`;
+    return value.length > BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;
+  }, "");
+}
+
+function getKeyPairs(baggage: Baggage): string[] {
+  return ArrayPrototypeMap(baggage.getAllEntries(), (baggageEntry) => {
+    let entry = `${encodeURIComponent(baggageEntry[0])}=${
+      encodeURIComponent(baggageEntry[1].value)
+    }`;
+
+    // include opaque metadata if provided
+    // NOTE: we intentionally don't URI-encode the metadata - that responsibility falls on the metadata implementation
+    if (baggageEntry[1].metadata !== undefined) {
+      entry += BAGGAGE_PROPERTIES_SEPARATOR +
+        // deno-lint-ignore prefer-primordials
+        baggageEntry[1].metadata.toString();
+    }
+
+    return entry;
+  });
+}
+
+function parsePairKeyValue(
+  entry: string,
+): ParsedBaggageKeyValue | undefined {
+  const valueProps = ArrayPrototypeSplit(entry, BAGGAGE_PROPERTIES_SEPARATOR);
+  if (valueProps.length <= 0) return;
+  const keyPairPart = ArrayPrototypeShift(valueProps);
+  if (!keyPairPart) return;
+  const separatorIndex = StringPrototypeIndexOf(
+    keyPairPart,
+    BAGGAGE_KEY_PAIR_SEPARATOR,
+  );
+  if (separatorIndex <= 0) return;
+  const key = decodeURIComponent(
+    StringPrototypeTrim(
+      StringPrototypeSubstring(keyPairPart, 0, separatorIndex),
+    ),
+  );
+  const value = decodeURIComponent(
+    StringPrototypeTrim(
+      StringPrototypeSubstring(keyPairPart, separatorIndex + 1),
+    ),
+  );
+  let metadata;
+  if (valueProps.length > 0) {
+    metadata = baggageEntryMetadataFromString(
+      ArrayPrototypeJoin(valueProps, BAGGAGE_PROPERTIES_SEPARATOR),
+    );
+  }
+  return { key, value, metadata };
+}
+
+class BaggageImpl implements Baggage {
+  #entries: Map<string, BaggageEntry>;
+
+  constructor(entries?: Map<string, BaggageEntry>) {
+    this.#entries = entries ? new SafeMap(entries) : new SafeMap();
+  }
+
+  getEntry(key: string): BaggageEntry | undefined {
+    const entry = this.#entries.get(key);
+    if (!entry) {
+      return undefined;
+    }
+
+    return ObjectAssign({}, entry);
+  }
+
+  getAllEntries(): [string, BaggageEntry][] {
+    return ArrayPrototypeMap(
+      ArrayFrom(MapPrototypeEntries(this.#entries)),
+      (entry) => [entry[0], entry[1]],
+    );
+  }
+
+  setEntry(key: string, entry: BaggageEntry): BaggageImpl {
+    const newBaggage = new BaggageImpl(this.#entries);
+    newBaggage.#entries.set(key, entry);
+    return newBaggage;
+  }
+
+  removeEntry(key: string): BaggageImpl {
+    const newBaggage = new BaggageImpl(this.#entries);
+    newBaggage.#entries.delete(key);
+    return newBaggage;
+  }
+
+  removeEntries(...keys: string[]): BaggageImpl {
+    const newBaggage = new BaggageImpl(this.#entries);
+    for (const key of new SafeArrayIterator(keys)) {
+      newBaggage.#entries.delete(key);
+    }
+    return newBaggage;
+  }
+
+  clear(): BaggageImpl {
+    return new BaggageImpl();
+  }
+}
+
+export class W3CBaggagePropagator implements TextMapPropagator {
+  inject(context: Context, carrier: unknown, setter: TextMapSetter): void {
+    const baggage = context.getValue(baggageEntryMetadataSymbol) as
+      | Baggage
+      | undefined;
+    if (!baggage || isTracingSuppressed(context)) return;
+    const keyPairs = ArrayPrototypeSlice(
+      ArrayPrototypeFilter(getKeyPairs(baggage), (pair: string) => {
+        return pair.length <= BAGGAGE_MAX_PER_NAME_VALUE_PAIRS;
+      }),
+      0,
+      BAGGAGE_MAX_NAME_VALUE_PAIRS,
+    );
+    const headerValue = serializeKeyPairs(keyPairs);
+    if (headerValue.length > 0) {
+      setter.set(carrier, BAGGAGE_HEADER, headerValue);
+    }
+  }
+
+  extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {
+    const headerValue = getter.get(carrier, BAGGAGE_HEADER);
+    const baggageString = ArrayIsArray(headerValue)
+      ? ArrayPrototypeJoin(headerValue, BAGGAGE_ITEMS_SEPARATOR)
+      : headerValue;
+    if (!baggageString) return context;
+    const baggage: Record<string, BaggageEntry> = {};
+    if (baggageString.length === 0) {
+      return context;
+    }
+    const pairs = StringPrototypeSplit(baggageString, BAGGAGE_ITEMS_SEPARATOR);
+    ArrayPrototypeForEach(pairs, (entry) => {
+      const keyPair = parsePairKeyValue(entry);
+      if (keyPair) {
+        const baggageEntry: BaggageEntry = { value: keyPair.value };
+        if (keyPair.metadata) {
+          baggageEntry.metadata = keyPair.metadata;
+        }
+        baggage[keyPair.key] = baggageEntry;
+      }
+    });
+    if (ObjectEntries(baggage).length === 0) {
+      return context;
+    }
+
+    return context.setValue(
+      baggageEntryMetadataSymbol,
+      new BaggageImpl(new SafeMap(ObjectEntries(baggage))),
+    );
+  }
+
+  fields(): string[] {
+    return [BAGGAGE_HEADER];
+  }
+}
+
 let builtinTracerCache: Tracer;
 
 export function builtinTracer(): Tracer {
@@ -1096,13 +1658,34 @@ export function bootstrap(
     0 | 1,
     (typeof otelConsoleConfig)[keyof typeof otelConsoleConfig],
     0 | 1,
+    ...Array<(typeof otelPropagators)[keyof typeof otelPropagators]>,
   ],
 ): void {
-  const { 0: tracingEnabled, 1: metricsEnabled, 2: consoleConfig } = config;
+  const {
+    0: tracingEnabled,
+    1: metricsEnabled,
+    2: consoleConfig,
+    ...propagators
+  } = config;
 
   TRACING_ENABLED = tracingEnabled === 1;
   METRICS_ENABLED = metricsEnabled === 1;
 
+  PROPAGATORS = ArrayPrototypeMap(
+    ArrayPrototypeFilter(
+      ObjectValues(propagators),
+      (propagator) => propagator !== otelPropagators.none,
+    ),
+    (propagator) => {
+      switch (propagator) {
+        case otelPropagators.traceContext:
+          return new W3CTraceContextPropagator();
+        case otelPropagators.baggage:
+          return new W3CBaggagePropagator();
+      }
+    },
+  );
+
   switch (consoleConfig) {
     case otelConsoleConfig.capture:
       core.wrapConsole(globalThis.console, new Console(otelLog));
diff --git a/tests/specs/cli/otel_basic/__test__.jsonc b/tests/specs/cli/otel_basic/__test__.jsonc
index be14a634728d52..e54f6639930343 100644
--- a/tests/specs/cli/otel_basic/__test__.jsonc
+++ b/tests/specs/cli/otel_basic/__test__.jsonc
@@ -34,6 +34,10 @@
       "args": "run -A main.ts http_metric.ts",
       "output": "http_metric.out"
     },
+    "http_propagators": {
+      "args": "run -A main.ts http_propagators.ts",
+      "output": "http_propagators.out"
+    },
     "node_http_metric": {
       "envs": {
         "OTEL_METRIC_EXPORT_INTERVAL": "1000"
diff --git a/tests/specs/cli/otel_basic/basic.out b/tests/specs/cli/otel_basic/basic.out
index 0ce0bb7fde06ee..c6be81f7b7f708 100644
--- a/tests/specs/cli/otel_basic/basic.out
+++ b/tests/specs/cli/otel_basic/basic.out
@@ -59,10 +59,10 @@
       }
     },
     {
-      "traceId": "00000000000000000000000000000002",
+      "traceId": "00000000000000000000000000000001",
       "spanId": "0000000000000002",
       "traceState": "",
-      "parentSpanId": "",
+      "parentSpanId": "0000000000000001",
       "flags": 1,
       "name": "GET",
       "kind": 2,
@@ -117,7 +117,7 @@
       }
     },
     {
-      "traceId": "00000000000000000000000000000002",
+      "traceId": "00000000000000000000000000000001",
       "spanId": "0000000000000003",
       "traceState": "",
       "parentSpanId": "0000000000000002",
@@ -138,7 +138,7 @@
       }
     },
     {
-      "traceId": "00000000000000000000000000000002",
+      "traceId": "00000000000000000000000000000001",
       "spanId": "0000000000000004",
       "traceState": "",
       "parentSpanId": "0000000000000003",
@@ -171,7 +171,7 @@
       "attributes": [],
       "droppedAttributesCount": 0,
       "flags": 1,
-      "traceId": "00000000000000000000000000000002",
+      "traceId": "00000000000000000000000000000001",
       "spanId": "0000000000000004"
     },
     {
@@ -185,7 +185,7 @@
       "attributes": [],
       "droppedAttributesCount": 0,
       "flags": 1,
-      "traceId": "00000000000000000000000000000002",
+      "traceId": "00000000000000000000000000000001",
       "spanId": "0000000000000004"
     }
   ],
diff --git a/tests/specs/cli/otel_basic/http_metric.out b/tests/specs/cli/otel_basic/http_metric.out
index 8ff731c47a54e5..a8dcad8e448bc0 100644
--- a/tests/specs/cli/otel_basic/http_metric.out
+++ b/tests/specs/cli/otel_basic/http_metric.out
@@ -59,10 +59,10 @@
       }
     },
     {
-      "traceId": "00000000000000000000000000000002",
+      "traceId": "00000000000000000000000000000001",
       "spanId": "0000000000000002",
       "traceState": "",
-      "parentSpanId": "",
+      "parentSpanId": "0000000000000001",
       "flags": 1,
       "name": "GET",
       "kind": 2,
@@ -175,10 +175,10 @@
       }
     },
     {
-      "traceId": "00000000000000000000000000000003",
+      "traceId": "00000000000000000000000000000001",
       "spanId": "0000000000000004",
       "traceState": "",
-      "parentSpanId": "",
+      "parentSpanId": "0000000000000003",
       "flags": 1,
       "name": "GET",
       "kind": 2,
@@ -291,10 +291,10 @@
       }
     },
     {
-      "traceId": "00000000000000000000000000000004",
+      "traceId": "00000000000000000000000000000001",
       "spanId": "0000000000000006",
       "traceState": "",
-      "parentSpanId": "",
+      "parentSpanId": "0000000000000005",
       "flags": 1,
       "name": "GET",
       "kind": 2,
diff --git a/tests/specs/cli/otel_basic/http_propagators.out b/tests/specs/cli/otel_basic/http_propagators.out
new file mode 100644
index 00000000000000..e9ebeb39768b21
--- /dev/null
+++ b/tests/specs/cli/otel_basic/http_propagators.out
@@ -0,0 +1,295 @@
+{
+  "spans": [
+    {
+      "traceId": "00000000000000000000000000000001",
+      "spanId": "0000000000000001",
+      "traceState": "",
+      "parentSpanId": "",
+      "flags": 1,
+      "name": "GET",
+      "kind": 3,
+      "startTimeUnixNano": "[WILDCARD]",
+      "endTimeUnixNano": "[WILDCARD]",
+      "attributes": [
+        {
+          "key": "http.request.method",
+          "value": {
+            "stringValue": "GET"
+          }
+        },
+        {
+          "key": "url.full",
+          "value": {
+            "stringValue": "http://localhost:8000/"
+          }
+        },
+        {
+          "key": "url.scheme",
+          "value": {
+            "stringValue": "http"
+          }
+        },
+        {
+          "key": "url.path",
+          "value": {
+            "stringValue": "/"
+          }
+        },
+        {
+          "key": "url.query",
+          "value": {
+            "stringValue": ""
+          }
+        },
+        {
+          "key": "http.response.status_code",
+          "value": {
+            "stringValue": "200"
+          }
+        }
+      ],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 0
+      }
+    },
+    {
+      "traceId": "00000000000000000000000000000001",
+      "spanId": "0100000000000001",
+      "traceState": "",
+      "parentSpanId": "0000000000000001",
+      "flags": 1,
+      "name": "GET",
+      "kind": 2,
+      "startTimeUnixNano": "[WILDCARD]",
+      "endTimeUnixNano": "[WILDCARD]",
+      "attributes": [
+        {
+          "key": "http.request.method",
+          "value": {
+            "stringValue": "GET"
+          }
+        },
+        {
+          "key": "url.full",
+          "value": {
+            "stringValue": "http://localhost:8000/"
+          }
+        },
+        {
+          "key": "url.scheme",
+          "value": {
+            "stringValue": "http"
+          }
+        },
+        {
+          "key": "url.path",
+          "value": {
+            "stringValue": "/"
+          }
+        },
+        {
+          "key": "url.query",
+          "value": {
+            "stringValue": ""
+          }
+        },
+        {
+          "key": "http.response.status_code",
+          "value": {
+            "stringValue": "200"
+          }
+        }
+      ],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 0
+      }
+    },
+    {
+      "traceId": "00000000000000000000000000000001",
+      "spanId": "0100000000000002",
+      "traceState": "",
+      "parentSpanId": "0100000000000001",
+      "flags": 1,
+      "name": "GET",
+      "kind": 3,
+      "startTimeUnixNano": "[WILDCARD]",
+      "endTimeUnixNano": "[WILDCARD]",
+      "attributes": [
+        {
+          "key": "http.request.method",
+          "value": {
+            "stringValue": "GET"
+          }
+        },
+        {
+          "key": "url.full",
+          "value": {
+            "stringValue": "http://localhost:8001/"
+          }
+        },
+        {
+          "key": "url.scheme",
+          "value": {
+            "stringValue": "http"
+          }
+        },
+        {
+          "key": "url.path",
+          "value": {
+            "stringValue": "/"
+          }
+        },
+        {
+          "key": "url.query",
+          "value": {
+            "stringValue": ""
+          }
+        },
+        {
+          "key": "http.response.status_code",
+          "value": {
+            "stringValue": "200"
+          }
+        }
+      ],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 0
+      }
+    },
+    {
+      "traceId": "00000000000000000000000000000001",
+      "spanId": "0200000000000001",
+      "traceState": "",
+      "parentSpanId": "0100000000000002",
+      "flags": 1,
+      "name": "GET",
+      "kind": 2,
+      "startTimeUnixNano": "[WILDCARD]",
+      "endTimeUnixNano": "[WILDCARD]",
+      "attributes": [
+        {
+          "key": "http.request.method",
+          "value": {
+            "stringValue": "GET"
+          }
+        },
+        {
+          "key": "url.full",
+          "value": {
+            "stringValue": "http://localhost:8001/"
+          }
+        },
+        {
+          "key": "url.scheme",
+          "value": {
+            "stringValue": "http"
+          }
+        },
+        {
+          "key": "url.path",
+          "value": {
+            "stringValue": "/"
+          }
+        },
+        {
+          "key": "url.query",
+          "value": {
+            "stringValue": ""
+          }
+        },
+        {
+          "key": "http.response.status_code",
+          "value": {
+            "stringValue": "200"
+          }
+        }
+      ],
+      "droppedAttributesCount": 0,
+      "events": [],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 0
+      }
+    }
+  ],
+  "logs": [
+    {
+      "timeUnixNano": "[WILDCARD]",
+      "observedTimeUnixNano": "[WILDCARD]",
+      "severityNumber": 17,
+      "severityText": "ERROR",
+      "body": {
+        "stringValue": "Listening on http://[WILDCARD]:8000/\n"
+      },
+      "attributes": [],
+      "droppedAttributesCount": 0,
+      "flags": 0,
+      "traceId": "",
+      "spanId": ""
+    },
+    {
+      "timeUnixNano": "[WILDCARD]",
+      "observedTimeUnixNano": "[WILDCARD]",
+      "severityNumber": 17,
+      "severityText": "ERROR",
+      "body": {
+        "stringValue": "Listening on http://[WILDCARD]:8001/\n"
+      },
+      "attributes": [],
+      "droppedAttributesCount": 0,
+      "flags": 0,
+      "traceId": "",
+      "spanId": ""
+    },
+    {
+      "timeUnixNano": "[WILDCARD]",
+      "observedTimeUnixNano": "[WILDCARD]",
+      "severityNumber": 9,
+      "severityText": "INFO",
+      "body": {
+        "stringValue": "server 1\n"
+      },
+      "attributes": [],
+      "droppedAttributesCount": 0,
+      "flags": 1,
+      "traceId": "00000000000000000000000000000001",
+      "spanId": "0100000000000001"
+    },
+    {
+      "timeUnixNano": "[WILDCARD]",
+      "observedTimeUnixNano": "[WILDCARD]",
+      "severityNumber": 9,
+      "severityText": "INFO",
+      "body": {
+        "stringValue": "server 2\n"
+      },
+      "attributes": [],
+      "droppedAttributesCount": 0,
+      "flags": 1,
+      "traceId": "00000000000000000000000000000001",
+      "spanId": "0200000000000001"
+    }
+  ],
+  "metrics": []
+}
diff --git a/tests/specs/cli/otel_basic/http_propagators.ts b/tests/specs/cli/otel_basic/http_propagators.ts
new file mode 100644
index 00000000000000..9fa61692e03dcd
--- /dev/null
+++ b/tests/specs/cli/otel_basic/http_propagators.ts
@@ -0,0 +1,32 @@
+import { assertEquals } from "@std/assert";
+
+const command1 = new Deno.Command(Deno.execPath(), {
+  env: {
+    "OTEL_DENO_METRICS": "false",
+    "OTEL_SERVICE_NAME": "server_1",
+    "DENO_UNSTABLE_OTEL_DETERMINISTIC": "1",
+  },
+  args: ["run", "-A", "--unstable-otel", "http_propagators_1.ts"],
+});
+
+const p1 = command1.output();
+
+await new Promise((resolve) => setTimeout(resolve, 1000));
+
+const command2 = new Deno.Command(Deno.execPath(), {
+  env: {
+    "OTEL_DENO_METRICS": "false",
+    "OTEL_SERVICE_NAME": "server_2",
+    "DENO_UNSTABLE_OTEL_DETERMINISTIC": "2",
+  },
+  args: ["run", "-A", "--unstable-otel", "http_propagators_2.ts"],
+});
+
+const p2 = command2.output();
+
+await new Promise((resolve) => setTimeout(resolve, 1000));
+
+const res = await fetch("http://localhost:8000");
+assertEquals(await res.text(), "Hello World!");
+
+await Promise.all([p1, p2]);
diff --git a/tests/specs/cli/otel_basic/http_propagators_1.ts b/tests/specs/cli/otel_basic/http_propagators_1.ts
new file mode 100644
index 00000000000000..13f293bc0a1202
--- /dev/null
+++ b/tests/specs/cli/otel_basic/http_propagators_1.ts
@@ -0,0 +1,6 @@
+Deno.serve(async () => {
+  console.log("server 1");
+  await fetch("http://localhost:8001");
+  setTimeout(() => Deno.exit(0), 1000);
+  return new Response("Hello World!");
+});
diff --git a/tests/specs/cli/otel_basic/http_propagators_2.ts b/tests/specs/cli/otel_basic/http_propagators_2.ts
new file mode 100644
index 00000000000000..c9f4e96a605428
--- /dev/null
+++ b/tests/specs/cli/otel_basic/http_propagators_2.ts
@@ -0,0 +1,7 @@
+Deno.serve({
+  port: 8001,
+}, (req) => {
+  console.log("server 2");
+  setTimeout(() => Deno.exit(0), 1000);
+  return new Response("Hello World!");
+});
diff --git a/tests/specs/cli/otel_basic/http_propagators_call.ts b/tests/specs/cli/otel_basic/http_propagators_call.ts
new file mode 100644
index 00000000000000..145f01c88df17b
--- /dev/null
+++ b/tests/specs/cli/otel_basic/http_propagators_call.ts
@@ -0,0 +1 @@
+await fetch("http://localhost:8000");
diff --git a/tests/specs/cli/otel_basic/main.ts b/tests/specs/cli/otel_basic/main.ts
index 2c30bf332db987..dabd8c1e5352a0 100644
--- a/tests/specs/cli/otel_basic/main.ts
+++ b/tests/specs/cli/otel_basic/main.ts
@@ -16,7 +16,7 @@ const server = Deno.serve(
         args: ["run", "-A", "-q", "--unstable-otel", Deno.args[0]],
         env: {
           OTEL_DENO: "true",
-          DENO_UNSTABLE_OTEL_DETERMINISTIC: "1",
+          DENO_UNSTABLE_OTEL_DETERMINISTIC: "0",
           OTEL_EXPORTER_OTLP_PROTOCOL: "http/json",
           OTEL_EXPORTER_OTLP_ENDPOINT: `https://localhost:${port}`,
           OTEL_EXPORTER_OTLP_CERTIFICATE: "../../../testdata/tls/RootCA.crt",
diff --git a/tests/specs/cli/otel_basic/node_http_metric.out b/tests/specs/cli/otel_basic/node_http_metric.out
index ef5f73654cfdb6..7c5fe93bcee25d 100644
--- a/tests/specs/cli/otel_basic/node_http_metric.out
+++ b/tests/specs/cli/otel_basic/node_http_metric.out
@@ -59,10 +59,10 @@
       }
     },
     {
-      "traceId": "00000000000000000000000000000002",
+      "traceId": "00000000000000000000000000000001",
       "spanId": "0000000000000002",
       "traceState": "",
-      "parentSpanId": "",
+      "parentSpanId": "0000000000000001",
       "flags": 1,
       "name": "GET",
       "kind": 2,
@@ -117,7 +117,7 @@
       }
     },
     {
-      "traceId": "00000000000000000000000000000003",
+      "traceId": "00000000000000000000000000000002",
       "spanId": "0000000000000003",
       "traceState": "",
       "parentSpanId": "",
@@ -175,10 +175,10 @@
       }
     },
     {
-      "traceId": "00000000000000000000000000000004",
+      "traceId": "00000000000000000000000000000002",
       "spanId": "0000000000000004",
       "traceState": "",
-      "parentSpanId": "",
+      "parentSpanId": "0000000000000003",
       "flags": 1,
       "name": "GET",
       "kind": 2,
@@ -233,7 +233,7 @@
       }
     },
     {
-      "traceId": "00000000000000000000000000000005",
+      "traceId": "00000000000000000000000000000003",
       "spanId": "0000000000000005",
       "traceState": "",
       "parentSpanId": "",
@@ -291,10 +291,10 @@
       }
     },
     {
-      "traceId": "00000000000000000000000000000006",
+      "traceId": "00000000000000000000000000000003",
       "spanId": "0000000000000006",
       "traceState": "",
-      "parentSpanId": "",
+      "parentSpanId": "0000000000000005",
       "flags": 1,
       "name": "GET",
       "kind": 2,

From c892cd88c8ffe9886c3538cf2b6015ea833225b1 Mon Sep 17 00:00:00 2001
From: Max <m@maxcs.me>
Date: Thu, 13 Mar 2025 12:34:56 -0300
Subject: [PATCH 082/115] chore(ext/fetch): re-export FsError to implement
 FetchPermissions (#28485)

Currently, there is no way to implement `FetchPermissions` without
importing `FsError` from `deno_fs` directly. This PR aims to re-export
the `FsError` from `deno_fetch` itself to allow it.
---
 ext/fetch/lib.rs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ext/fetch/lib.rs b/ext/fetch/lib.rs
index 748a62e894bccc..6cace8abc90cb6 100644
--- a/ext/fetch/lib.rs
+++ b/ext/fetch/lib.rs
@@ -46,7 +46,7 @@ use deno_core::RcRef;
 use deno_core::Resource;
 use deno_core::ResourceId;
 use deno_error::JsErrorBox;
-use deno_fs::FsError;
+pub use deno_fs::FsError;
 use deno_path_util::PathToUrlError;
 use deno_permissions::PermissionCheckError;
 use deno_tls::rustls::RootCertStore;

From 424a2f3b57dff5a0fb4b7a3f56c0e03e86617ac3 Mon Sep 17 00:00:00 2001
From: Luke Edwards <luke.edwards05@gmail.com>
Date: Thu, 13 Mar 2025 14:21:08 -0400
Subject: [PATCH 083/115] fix(ext/node): correct `STATUS_CODES` strings
 (#28489)

Matches Node.js `http.STATUS_CODES` values now. Deno is currently
exporting an enum directly, which 1) adds keys like `BadRequest` and 2)
ships the status-text strings as non-space-delimited values (eg,
`'BadRequest`` instead of `'Bad Request'`)

Signed-off-by: Luke Edwards <luke.edwards05@gmail.com>
---
 ext/node/polyfills/_http_server.ts | 128 ++++++++++++++---------------
 1 file changed, 64 insertions(+), 64 deletions(-)

diff --git a/ext/node/polyfills/_http_server.ts b/ext/node/polyfills/_http_server.ts
index cf80f1e6e05b7d..fab921277f653c 100644
--- a/ext/node/polyfills/_http_server.ts
+++ b/ext/node/polyfills/_http_server.ts
@@ -1,135 +1,135 @@
 // Copyright 2018-2025 the Deno authors. MIT license.
 
-export enum STATUS_CODES {
+export const STATUS_CODES = {
   /** RFC 7231, 6.2.1 */
-  Continue = 100,
+  100: "Continue",
   /** RFC 7231, 6.2.2 */
-  SwitchingProtocols = 101,
+  101: "Switching Protocols",
   /** RFC 2518, 10.1 */
-  Processing = 102,
+  102: "Processing",
   /** RFC 8297 **/
-  EarlyHints = 103,
+  103: "Early Hints",
 
   /** RFC 7231, 6.3.1 */
-  OK = 200,
+  200: "OK",
   /** RFC 7231, 6.3.2 */
-  Created = 201,
+  201: "Created",
   /** RFC 7231, 6.3.3 */
-  Accepted = 202,
+  202: "Accepted",
   /** RFC 7231, 6.3.4 */
-  NonAuthoritativeInfo = 203,
+  203: "Non-Authoritative Information",
   /** RFC 7231, 6.3.5 */
-  NoContent = 204,
+  204: "No Content",
   /** RFC 7231, 6.3.6 */
-  ResetContent = 205,
+  205: "Reset Content",
   /** RFC 7233, 4.1 */
-  PartialContent = 206,
+  206: "Partial Content",
   /** RFC 4918, 11.1 */
-  MultiStatus = 207,
+  207: "Multi-Status",
   /** RFC 5842, 7.1 */
-  AlreadyReported = 208,
+  208: "Already Reported",
   /** RFC 3229, 10.4.1 */
-  IMUsed = 226,
+  226: "IM Used",
 
   /** RFC 7231, 6.4.1 */
-  MultipleChoices = 300,
+  300: "Multiple Choices",
   /** RFC 7231, 6.4.2 */
-  MovedPermanently = 301,
+  301: "Moved Permanently",
   /** RFC 7231, 6.4.3 */
-  Found = 302,
+  302: "Found",
   /** RFC 7231, 6.4.4 */
-  SeeOther = 303,
+  303: "See Other",
   /** RFC 7232, 4.1 */
-  NotModified = 304,
+  304: "Not Modified",
   /** RFC 7231, 6.4.5 */
-  UseProxy = 305,
+  305: "Use Proxy",
   /** RFC 7231, 6.4.7 */
-  TemporaryRedirect = 307,
+  307: "Temporary Redirect",
   /** RFC 7538, 3 */
-  PermanentRedirect = 308,
+  308: "Permanent Redirect",
 
   /** RFC 7231, 6.5.1 */
-  BadRequest = 400,
+  400: "Bad Request",
   /** RFC 7235, 3.1 */
-  Unauthorized = 401,
+  401: "Unauthorized",
   /** RFC 7231, 6.5.2 */
-  PaymentRequired = 402,
+  402: "Payment Required",
   /** RFC 7231, 6.5.3 */
-  Forbidden = 403,
+  403: "Forbidden",
   /** RFC 7231, 6.5.4 */
-  NotFound = 404,
+  404: "Not Found",
   /** RFC 7231, 6.5.5 */
-  MethodNotAllowed = 405,
+  405: "Method Not Allowed",
   /** RFC 7231, 6.5.6 */
-  NotAcceptable = 406,
+  406: "Not Acceptable",
   /** RFC 7235, 3.2 */
-  ProxyAuthRequired = 407,
+  407: "Proxy Authentication Required",
   /** RFC 7231, 6.5.7 */
-  RequestTimeout = 408,
+  408: "Request Timeout",
   /** RFC 7231, 6.5.8 */
-  Conflict = 409,
+  409: "Conflict",
   /** RFC 7231, 6.5.9 */
-  Gone = 410,
+  410: "Gone",
   /** RFC 7231, 6.5.10 */
-  LengthRequired = 411,
+  411: "Length Required",
   /** RFC 7232, 4.2 */
-  PreconditionFailed = 412,
+  412: "Precondition Failed",
   /** RFC 7231, 6.5.11 */
-  RequestEntityTooLarge = 413,
+  413: "Payload Too Large",
   /** RFC 7231, 6.5.12 */
-  RequestURITooLong = 414,
+  414: "URI Too Long",
   /** RFC 7231, 6.5.13 */
-  UnsupportedMediaType = 415,
+  415: "Unsupported Media Type",
   /** RFC 7233, 4.4 */
-  RequestedRangeNotSatisfiable = 416,
+  416: "Range Not Satisfiable",
   /** RFC 7231, 6.5.14 */
-  ExpectationFailed = 417,
+  417: "Expectation Failed",
   /** RFC 7168, 2.3.3 */
-  Teapot = 418,
+  418: "I'm a Teapot",
   /** RFC 7540, 9.1.2 */
-  MisdirectedRequest = 421,
+  421: "Misdirected Request",
   /** RFC 4918, 11.2 */
-  UnprocessableEntity = 422,
+  422: "Unprocessable Entity",
   /** RFC 4918, 11.3 */
-  Locked = 423,
+  423: "Locked",
   /** RFC 4918, 11.4 */
-  FailedDependency = 424,
+  424: "Failed Dependency",
   /** RFC 8470, 5.2 */
-  TooEarly = 425,
+  425: "Too Early",
   /** RFC 7231, 6.5.15 */
-  UpgradeRequired = 426,
+  426: "Upgrade Required",
   /** RFC 6585, 3 */
-  PreconditionRequired = 428,
+  428: "Precondition Required",
   /** RFC 6585, 4 */
-  TooManyRequests = 429,
+  429: "Too Many Requests",
   /** RFC 6585, 5 */
-  RequestHeaderFieldsTooLarge = 431,
+  431: "Request Header Fields Too Large",
   /** RFC 7725, 3 */
-  UnavailableForLegalReasons = 451,
+  451: "Unavailable For Legal Reasons",
 
   /** RFC 7231, 6.6.1 */
-  InternalServerError = 500,
+  500: "Internal Server Error",
   /** RFC 7231, 6.6.2 */
-  NotImplemented = 501,
+  501: "Not Implemented",
   /** RFC 7231, 6.6.3 */
-  BadGateway = 502,
+  502: "Bad Gateway",
   /** RFC 7231, 6.6.4 */
-  ServiceUnavailable = 503,
+  503: "Service Unavailable",
   /** RFC 7231, 6.6.5 */
-  GatewayTimeout = 504,
+  504: "Gateway Timeout",
   /** RFC 7231, 6.6.6 */
-  HTTPVersionNotSupported = 505,
+  505: "HTTP Version Not Supported",
   /** RFC 2295, 8.1 */
-  VariantAlsoNegotiates = 506,
+  506: "Variant Also Negotiates",
   /** RFC 4918, 11.5 */
-  InsufficientStorage = 507,
+  507: "Insufficient Storage",
   /** RFC 5842, 7.2 */
-  LoopDetected = 508,
+  508: "Loop Detected",
   /** RFC 2774, 7 */
-  NotExtended = 510,
+  510: "Not Extended",
   /** RFC 6585, 6 */
-  NetworkAuthenticationRequired = 511,
-}
+  511: "Network Authentication Required",
+};
 
 export default {
   STATUS_CODES,

From ea982cba78fa8b820af00dd3f0839641a6b58fae Mon Sep 17 00:00:00 2001
From: Jo Franchetti <jofranchetti@gmail.com>
Date: Thu, 13 Mar 2025 18:21:21 +0000
Subject: [PATCH 084/115] docs: making copy a little clearer (#28481)

Updating compile help text copy to make it a little clearer
Reported in https://github.com/denoland/docs/issues/1500
---
 cli/args/flags.rs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index 132de3a0c3bdff..9c0d9143de7370 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -1934,7 +1934,7 @@ Under the hood, it bundles a slimmed down version of the Deno runtime along with
 JavaScript or TypeScript code.
 
 Cross-compiling to different target architectures is supported using the <c>--target</> flag.
-On the first invocation with deno will download the proper binary and cache it in <c>$DENO_DIR</>.
+On the first invocation of `deno compile`, Deno will download the relevant binary and cache it in <c>$DENO_DIR</>.
 
 <y>Read more:</> <c>https://docs.deno.com/go/compile</>
 "),

From 30aa94010a3f59c45cc551c0e1487291f2f5096f Mon Sep 17 00:00:00 2001
From: Nayeem Rahman <nayeemrmn99@gmail.com>
Date: Thu, 13 Mar 2025 20:29:17 +0000
Subject: [PATCH 085/115] fix(lsp): auto-import from npm package exports with
 manual node_modules (#28414)

---
 cli/lsp/resolver.rs            | 204 ++++++++++++++++++++++-----------
 resolvers/node/resolution.rs   |  38 ++++++
 tests/integration/lsp_tests.rs |  75 +++++++++++-
 3 files changed, 251 insertions(+), 66 deletions(-)

diff --git a/cli/lsp/resolver.rs b/cli/lsp/resolver.rs
index dbc407f55fb68d..723d2514190582 100644
--- a/cli/lsp/resolver.rs
+++ b/cli/lsp/resolver.rs
@@ -43,6 +43,7 @@ use node_resolver::cache::NodeResolutionThreadLocalCache;
 use node_resolver::DenoIsBuiltInNodeModuleChecker;
 use node_resolver::NodeResolutionKind;
 use node_resolver::NodeResolverOptions;
+use node_resolver::PackageJson;
 use node_resolver::PackageJsonThreadLocalCache;
 use node_resolver::ResolutionMode;
 
@@ -102,7 +103,7 @@ struct LspScopeResolver {
   redirect_resolver: Option<Arc<RedirectResolver>>,
   graph_imports: Arc<IndexMap<ModuleSpecifier, GraphImport>>,
   dep_info: Arc<Mutex<Arc<ScopeDepInfo>>>,
-  package_json_deps_by_resolution: Arc<IndexMap<ModuleSpecifier, String>>,
+  package_json_dep_resolutions: Arc<PackageJsonDepResolutions>,
   config_data: Option<Arc<ConfigData>>,
 }
 
@@ -125,7 +126,7 @@ impl Default for LspScopeResolver {
       redirect_resolver: None,
       graph_imports: Default::default(),
       dep_info: Default::default(),
-      package_json_deps_by_resolution: Default::default(),
+      package_json_dep_resolutions: Default::default(),
       config_data: None,
     }
   }
@@ -186,48 +187,16 @@ impl LspScopeResolver {
         )
       })
       .unwrap_or_default();
-    let package_json_deps_by_resolution = (|| {
+    let package_json_dep_resolutions = (|| {
       let npm_pkg_req_resolver = npm_pkg_req_resolver.as_ref()?;
       let package_json = config_data?.maybe_pkg_json()?;
-      let referrer = package_json.specifier();
-      let dependencies = package_json.dependencies.as_ref()?;
-      let result = dependencies
-        .iter()
-        .flat_map(|(name, _)| {
-          let mut deps = Vec::with_capacity(2);
-          let Some(req_ref) =
-            NpmPackageReqReference::from_str(&format!("npm:{name}")).ok()
-          else {
-            return vec![];
-          };
-          for kind in [NodeResolutionKind::Types, NodeResolutionKind::Execution]
-          {
-            let Some(req) = npm_pkg_req_resolver
-              .resolve_req_reference(
-                &req_ref,
-                &referrer,
-                // todo(dsherret): this is wrong because it doesn't consider CJS referrers
-                ResolutionMode::Import,
-                kind,
-              )
-              .ok()
-            else {
-              continue;
-            };
-
-            let Some(url) = req.into_url().ok() else {
-              continue;
-            };
-            let specifier = into_specifier_and_media_type(Some(url)).0;
-            deps.push((specifier, name.clone()))
-          }
-          deps
-        })
-        .collect();
-      Some(result)
-    })();
-    let package_json_deps_by_resolution =
-      Arc::new(package_json_deps_by_resolution.unwrap_or_default());
+      Some(Arc::new(PackageJsonDepResolutions::new(
+        package_json,
+        npm_pkg_req_resolver,
+        &pkg_json_resolver,
+      )))
+    })()
+    .unwrap_or_default();
     Self {
       resolver: cli_resolver,
       in_npm_pkg_checker,
@@ -244,7 +213,7 @@ impl LspScopeResolver {
       redirect_resolver,
       graph_imports,
       dep_info: Default::default(),
-      package_json_deps_by_resolution,
+      package_json_dep_resolutions,
       config_data: config_data.cloned(),
     }
   }
@@ -320,9 +289,7 @@ impl LspScopeResolver {
       pkg_json_resolver: factory.pkg_json_resolver().clone(),
       graph_imports: self.graph_imports.clone(),
       dep_info: self.dep_info.clone(),
-      package_json_deps_by_resolution: self
-        .package_json_deps_by_resolution
-        .clone(),
+      package_json_dep_resolutions: self.package_json_dep_resolutions.clone(),
       config_data: self.config_data.clone(),
     })
   }
@@ -559,9 +526,14 @@ impl LspResolver {
   ) -> Option<String> {
     let resolver = self.get_scope_resolver(file_referrer);
     resolver
-      .package_json_deps_by_resolution
-      .get(specifier)
-      .cloned()
+      .package_json_dep_resolutions
+      .package_ref_from_resolution(specifier)
+      .or_else(|| {
+        resolver
+          .node_resolver
+          .as_ref()?
+          .lookup_package_specifier_for_resolution(specifier)
+      })
   }
 
   pub fn deno_types_to_code_resolution(
@@ -655,6 +627,105 @@ pub struct ScopeDepInfo {
   pub has_node_specifier: bool,
 }
 
+#[derive(Debug, Default)]
+struct PackageJsonDepResolutions {
+  deps_by_resolution: IndexMap<ModuleSpecifier, String>,
+}
+
+impl PackageJsonDepResolutions {
+  fn new(
+    package_json: &PackageJson,
+    npm_pkg_req_resolver: &CliNpmReqResolver,
+    pkg_json_resolver: &CliPackageJsonResolver,
+  ) -> Self {
+    let referrer = package_json.specifier();
+    let Some(dependencies) = package_json.dependencies.as_ref() else {
+      return Self::default();
+    };
+    let mut result = Self::default();
+    for name in dependencies.keys() {
+      let Some(req_ref) =
+        NpmPackageReqReference::from_str(&format!("npm:{name}")).ok()
+      else {
+        continue;
+      };
+      let mut dep_package_json = None;
+      for kind in [NodeResolutionKind::Types, NodeResolutionKind::Execution] {
+        let Some(req) = npm_pkg_req_resolver
+          .resolve_req_reference(
+            &req_ref,
+            &referrer,
+            // todo(dsherret): this is wrong because it doesn't consider CJS referrers
+            ResolutionMode::Import,
+            kind,
+          )
+          .ok()
+        else {
+          continue;
+        };
+        let Some(url) = req.into_url().ok() else {
+          continue;
+        };
+        let specifier = into_specifier_and_media_type(Some(url)).0;
+        if dep_package_json.is_none() {
+          dep_package_json = (|| {
+            let path = url_to_file_path(&specifier).ok()?;
+            pkg_json_resolver.get_closest_package_json(&path).ok()?
+          })();
+        }
+        result.deps_by_resolution.insert(specifier, name.clone());
+      }
+      let export_keys = dep_package_json
+        .as_ref()
+        .and_then(|p| p.exports.as_ref())
+        .into_iter()
+        .flat_map(|e| e.keys());
+      for export_key in export_keys {
+        let Some(export_name) = export_key.strip_prefix("./") else {
+          continue;
+        };
+        // Wildcards are not supported here.
+        if export_name.chars().filter(|c| *c == '*').count() == 1 {
+          continue;
+        }
+        let package_ref = format!("{name}/{export_name}");
+        let Some(req_ref) =
+          NpmPackageReqReference::from_str(&format!("npm:{}", &package_ref))
+            .ok()
+        else {
+          continue;
+        };
+        for kind in [NodeResolutionKind::Types, NodeResolutionKind::Execution] {
+          let Some(req) = npm_pkg_req_resolver
+            .resolve_req_reference(
+              &req_ref,
+              &referrer,
+              // todo(dsherret): this is wrong because it doesn't consider CJS referrers
+              ResolutionMode::Import,
+              kind,
+            )
+            .ok()
+          else {
+            continue;
+          };
+          let Some(url) = req.into_url().ok() else {
+            continue;
+          };
+          let specifier = into_specifier_and_media_type(Some(url)).0;
+          result
+            .deps_by_resolution
+            .insert(specifier, package_ref.clone());
+        }
+      }
+    }
+    result
+  }
+
+  fn package_ref_from_resolution(&self, resolution: &Url) -> Option<String> {
+    self.deps_by_resolution.get(resolution).cloned()
+  }
+}
+
 #[derive(Default)]
 struct ResolverFactoryServices {
   cli_resolver: Deferred<Arc<CliResolver>>,
@@ -925,22 +996,25 @@ impl<'a> ResolverFactory<'a> {
       .node_resolver
       .get_or_init(|| {
         let npm_resolver = self.services.npm_resolver.as_ref()?;
-        Some(Arc::new(CliNodeResolver::new(
-          self.in_npm_pkg_checker().clone(),
-          DenoIsBuiltInNodeModuleChecker,
-          npm_resolver.clone(),
-          self.pkg_json_resolver.clone(),
-          self.node_resolution_sys.clone(),
-          NodeResolverOptions {
-            conditions_from_resolution_mode: Default::default(),
-            typescript_version: Some(
-              deno_semver::Version::parse_standard(
-                deno_lib::version::DENO_VERSION_INFO.typescript,
-              )
-              .unwrap(),
-            ),
-          },
-        )))
+        Some(Arc::new(
+          CliNodeResolver::new(
+            self.in_npm_pkg_checker().clone(),
+            DenoIsBuiltInNodeModuleChecker,
+            npm_resolver.clone(),
+            self.pkg_json_resolver.clone(),
+            self.node_resolution_sys.clone(),
+            NodeResolverOptions {
+              conditions_from_resolution_mode: Default::default(),
+              typescript_version: Some(
+                deno_semver::Version::parse_standard(
+                  deno_lib::version::DENO_VERSION_INFO.typescript,
+                )
+                .unwrap(),
+              ),
+            },
+          )
+          .with_package_resolution_lookup_cache(),
+        ))
       })
       .as_ref()
   }
diff --git a/resolvers/node/resolution.rs b/resolvers/node/resolution.rs
index 1535841265ab0d..a3586963d2fea5 100644
--- a/resolvers/node/resolution.rs
+++ b/resolvers/node/resolution.rs
@@ -7,6 +7,7 @@ use std::path::PathBuf;
 
 use anyhow::bail;
 use anyhow::Error as AnyError;
+use dashmap::DashMap;
 use deno_media_type::MediaType;
 use deno_package_json::PackageJson;
 use deno_path_util::url_to_file_path;
@@ -207,6 +208,7 @@ pub struct NodeResolver<
   sys: NodeResolutionSys<TSys>,
   conditions_from_resolution_mode: ConditionsFromResolutionMode,
   typescript_version: Option<Version>,
+  package_resolution_lookup_cache: Option<DashMap<Url, String>>,
 }
 
 impl<
@@ -238,6 +240,14 @@ impl<
       sys,
       conditions_from_resolution_mode: options.conditions_from_resolution_mode,
       typescript_version: options.typescript_version,
+      package_resolution_lookup_cache: None,
+    }
+  }
+
+  pub fn with_package_resolution_lookup_cache(self) -> Self {
+    Self {
+      package_resolution_lookup_cache: Some(Default::default()),
+      ..self
     }
   }
 
@@ -264,7 +274,9 @@ impl<
       return Ok(NodeResolution::BuiltIn(specifier.to_string()));
     }
 
+    let mut specifier_is_url = false;
     if let Ok(url) = Url::parse(specifier) {
+      specifier_is_url = true;
       if url.scheme() == "data" {
         return Ok(NodeResolution::Module(UrlOrPath::Url(url)));
       }
@@ -309,6 +321,21 @@ impl<
 
     let url_or_path =
       self.finalize_resolution(url, resolved_kind, Some(&referrer))?;
+    let maybe_cache_resolution = || {
+      let package_resolution_lookup_cache =
+        self.package_resolution_lookup_cache.as_ref()?;
+      if specifier_is_url
+        || specifier.starts_with("./")
+        || specifier.starts_with("../")
+        || specifier.starts_with("/")
+      {
+        return None;
+      }
+      let url = url_or_path.clone().into_url().ok()?;
+      package_resolution_lookup_cache.insert(url, specifier.to_string());
+      Some(())
+    };
+    maybe_cache_resolution();
     let resolve_response = NodeResolution::Module(url_or_path);
     // TODO(bartlomieju): skipped checking errors for commonJS resolution and
     // "preserveSymlinksMain"/"preserveSymlinks" options.
@@ -473,6 +500,17 @@ impl<
     }
   }
 
+  pub fn lookup_package_specifier_for_resolution(
+    &self,
+    url: &Url,
+  ) -> Option<String> {
+    self
+      .package_resolution_lookup_cache
+      .as_ref()?
+      .get(url)
+      .map(|r| r.value().clone())
+  }
+
   fn module_not_found_ext_suggestion(
     &self,
     path: &Path,
diff --git a/tests/integration/lsp_tests.rs b/tests/integration/lsp_tests.rs
index ca90a757967824..6a0a599efd8496 100644
--- a/tests/integration/lsp_tests.rs
+++ b/tests/integration/lsp_tests.rs
@@ -9883,7 +9883,7 @@ fn lsp_completions_npm() {
 
 #[test]
 #[timeout(300_000)]
-fn lsp_auto_imports_npm_auto() {
+fn lsp_auto_import_npm_export_node_modules_dir_auto() {
   let context = TestContextBuilder::for_npm().use_temp_cwd().build();
   let temp_dir_path = context.temp_dir().path();
   temp_dir_path.join("deno.json").write_json(&json!({
@@ -9945,6 +9945,79 @@ fn lsp_auto_imports_npm_auto() {
   client.shutdown();
 }
 
+#[test]
+#[timeout(300_000)]
+fn lsp_auto_import_npm_export_node_modules_dir_manual() {
+  let context = TestContextBuilder::for_npm().use_temp_cwd().build();
+  let temp_dir = context.temp_dir();
+  temp_dir.write(
+    "deno.json",
+    json!({
+      "nodeModulesDir": "manual",
+    })
+    .to_string(),
+  );
+  temp_dir.write(
+    "package.json",
+    json!({
+      "dependencies": {
+        "preact": "*",
+      },
+    })
+    .to_string(),
+  );
+  temp_dir.write(
+    "mod.ts",
+    "import { useEffect } from 'preact/hooks'; console.log(useEffect);",
+  );
+  context.run_npm("install");
+  let mut client = context.new_lsp_command().build();
+  client.initialize_default();
+  let diagnostics = client
+    .did_open(json!({
+      "textDocument": {
+        "uri": temp_dir.url().join("file.ts").unwrap(),
+        "languageId": "typescript",
+        "version": 1,
+        "text": "useEffect",
+      }
+    }))
+    .all();
+  assert_eq!(diagnostics.len(), 1);
+  let diagnostic = diagnostics.first().unwrap();
+  let res = client.write_request(
+    "textDocument/codeAction",
+    json!({
+      "textDocument": {
+        "uri": temp_dir.url().join("file.ts").unwrap(),
+      },
+      "range": {
+        "start": { "line": 0, "character": 0 },
+        "end": { "line": 0, "character": 9 },
+      },
+      "context": {
+        "diagnostics": [diagnostic],
+        "only": ["quickfix"],
+      },
+    }),
+  );
+  assert_eq!(
+    res
+      .as_array()
+      .unwrap()
+      .first()
+      .unwrap()
+      .as_object()
+      .unwrap()
+      .get("title")
+      .unwrap()
+      .as_str()
+      .unwrap(),
+    "Add import from \"preact/hooks\"",
+  );
+  client.shutdown();
+}
+
 // Regression test for https://github.com/denoland/deno/issues/23869.
 #[test]
 #[timeout(300_000)]

From 4f738660b974a57bcac73004ead03ef41edd1d08 Mon Sep 17 00:00:00 2001
From: Ryan Dahl <ry@tinyclouds.org>
Date: Fri, 14 Mar 2025 07:15:29 -0700
Subject: [PATCH 086/115] feat: support FORCE_COLOR (#28490)

fixes https://github.com/denoland/deno/issues/17229
---
 Cargo.lock                  | 22 +++++++++++-----------
 Cargo.toml                  |  2 +-
 cli/args/flags.rs           |  1 +
 cli/lib/worker.rs           |  6 ------
 runtime/js/99_main.js       |  8 ++++----
 runtime/ops/bootstrap.rs    | 35 ++++++++++++++++++++---------------
 runtime/worker_bootstrap.rs |  7 -------
 7 files changed, 37 insertions(+), 44 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 4b7b7ddf6fa04e..a7852f2410f6e6 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -926,7 +926,7 @@ dependencies = [
  "deno_cache_dir",
  "deno_lockfile",
  "deno_semver",
- "deno_terminal 0.2.0",
+ "deno_terminal 0.2.2",
  "deno_tower_lsp",
  "deno_unsync",
  "fastwebsockets",
@@ -1512,7 +1512,7 @@ dependencies = [
  "deno_snapshots",
  "deno_task_shell",
  "deno_telemetry",
- "deno_terminal 0.2.0",
+ "deno_terminal 0.2.2",
  "deno_tower_lsp",
  "dhat",
  "dissimilar",
@@ -1617,7 +1617,7 @@ dependencies = [
  "base64 0.21.7",
  "deno_error",
  "deno_media_type",
- "deno_terminal 0.2.0",
+ "deno_terminal 0.2.2",
  "dprint-swc-ext",
  "once_cell",
  "percent-encoding",
@@ -1884,7 +1884,7 @@ dependencies = [
  "deno_ast",
  "deno_graph",
  "deno_path_util",
- "deno_terminal 0.2.0",
+ "deno_terminal 0.2.2",
  "handlebars",
  "html-escape",
  "import_map",
@@ -2154,7 +2154,7 @@ dependencies = [
  "deno_resolver",
  "deno_runtime",
  "deno_semver",
- "deno_terminal 0.2.0",
+ "deno_terminal 0.2.2",
  "env_logger",
  "faster-hex",
  "indexmap 2.7.1",
@@ -2478,7 +2478,7 @@ dependencies = [
  "deno_core",
  "deno_error",
  "deno_path_util",
- "deno_terminal 0.2.0",
+ "deno_terminal 0.2.2",
  "fqdn",
  "libc",
  "log",
@@ -2535,7 +2535,7 @@ dependencies = [
  "deno_package_json",
  "deno_path_util",
  "deno_semver",
- "deno_terminal 0.2.0",
+ "deno_terminal 0.2.2",
  "futures",
  "import_map",
  "indexmap 2.7.1",
@@ -2580,7 +2580,7 @@ dependencies = [
  "deno_process",
  "deno_resolver",
  "deno_telemetry",
- "deno_terminal 0.2.0",
+ "deno_terminal 0.2.2",
  "deno_tls",
  "deno_url",
  "deno_web",
@@ -2694,9 +2694,9 @@ dependencies = [
 
 [[package]]
 name = "deno_terminal"
-version = "0.2.0"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "daef12499e89ee99e51ad6000a91f600d3937fb028ad4918af76810c5bc9e0d5"
+checksum = "23f71c27009e0141dedd315f1dfa3ebb0a6ca4acce7c080fac576ea415a465f6"
 dependencies = [
  "once_cell",
  "termcolor",
@@ -2942,7 +2942,7 @@ dependencies = [
  "deno_runtime",
  "deno_semver",
  "deno_snapshots",
- "deno_terminal 0.2.0",
+ "deno_terminal 0.2.2",
  "import_map",
  "indexmap 2.7.1",
  "libsui",
diff --git a/Cargo.toml b/Cargo.toml
index 23194bc6445783..3f520dbee84ae5 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -65,7 +65,7 @@ deno_path_util = "=0.3.2"
 deno_permissions = { version = "0.53.0", path = "./runtime/permissions" }
 deno_runtime = { version = "0.202.0", path = "./runtime" }
 deno_semver = "=0.7.1"
-deno_terminal = "0.2.0"
+deno_terminal = "=0.2.2"
 eszip = "0.83.0"
 napi_sym = { version = "0.124.0", path = "./ext/napi/sym" }
 test_util = { package = "test_server", path = "./tests/util/server" }
diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index 9c0d9143de7370..d651d5db3d09d8 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -1181,6 +1181,7 @@ static ENV_VARIABLES_HELP: &str = cstr!(
   <g>DENO_TRACE_PERMISSIONS</> Environmental variable to enable stack traces in permission prompts.
                          Possible values: "system", "mozilla".
                           <p(245)>(defaults to "mozilla")</>
+  <g>FORCE_COLOR</>            Set force color output even if stdout isn't a tty
   <g>HTTP_PROXY</>             Proxy address for HTTP requests
                           <p(245)>(module downloads, fetch)</>
   <g>HTTPS_PROXY</>            Proxy address for HTTPS requests
diff --git a/cli/lib/worker.rs b/cli/lib/worker.rs
index a8c5528677ce91..4528a2161f5f3f 100644
--- a/cli/lib/worker.rs
+++ b/cli/lib/worker.rs
@@ -302,10 +302,7 @@ impl<TSys: DenoLibSys> LibWorkerFactorySharedState<TSys> {
           enable_testing_features: shared.options.enable_testing_features,
           locale: deno_core::v8::icu::get_language_tag(),
           location: Some(args.main_module),
-          no_color: !colors::use_color(),
           color_level: colors::get_color_level(),
-          is_stdout_tty: deno_terminal::is_stdout_tty(),
-          is_stderr_tty: deno_terminal::is_stderr_tty(),
           unstable_features,
           user_agent: crate::version::DENO_VERSION_INFO.user_agent.to_string(),
           inspect: shared.options.is_inspecting,
@@ -474,9 +471,6 @@ impl<TSys: DenoLibSys> LibMainWorkerFactory<TSys> {
         enable_testing_features: shared.options.enable_testing_features,
         locale: deno_core::v8::icu::get_language_tag(),
         location: shared.options.location.clone(),
-        no_color: !colors::use_color(),
-        is_stdout_tty: deno_terminal::is_stdout_tty(),
-        is_stderr_tty: deno_terminal::is_stderr_tty(),
         color_level: colors::get_color_level(),
         unstable_features,
         user_agent: crate::version::DENO_VERSION_INFO.user_agent.to_string(),
diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js
index 58cce3b94a496a..2ff1d1962d0735 100644
--- a/runtime/js/99_main.js
+++ b/runtime/js/99_main.js
@@ -8,10 +8,10 @@ import { core, internals, primordials } from "ext:core/mod.js";
 const ops = core.ops;
 import {
   op_bootstrap_args,
-  op_bootstrap_is_stderr_tty,
-  op_bootstrap_is_stdout_tty,
   op_bootstrap_no_color,
   op_bootstrap_pid,
+  op_bootstrap_stderr_no_color,
+  op_bootstrap_stdout_no_color,
   op_main_module,
   op_ppid,
   op_set_format_exception_callback,
@@ -278,8 +278,8 @@ function importScripts(...urls) {
 const opArgs = memoizeLazy(() => op_bootstrap_args());
 const opPid = memoizeLazy(() => op_bootstrap_pid());
 setNoColorFns(
-  () => op_bootstrap_no_color() || !op_bootstrap_is_stdout_tty(),
-  () => op_bootstrap_no_color() || !op_bootstrap_is_stderr_tty(),
+  () => op_bootstrap_stdout_no_color(),
+  () => op_bootstrap_stderr_no_color(),
 );
 
 function formatException(error) {
diff --git a/runtime/ops/bootstrap.rs b/runtime/ops/bootstrap.rs
index b362217d2ce8e5..5daa9f9736b58d 100644
--- a/runtime/ops/bootstrap.rs
+++ b/runtime/ops/bootstrap.rs
@@ -16,10 +16,10 @@ deno_core::extension!(
     op_bootstrap_user_agent,
     op_bootstrap_language,
     op_bootstrap_log_level,
-    op_bootstrap_no_color,
     op_bootstrap_color_depth,
-    op_bootstrap_is_stdout_tty,
-    op_bootstrap_is_stderr_tty,
+    op_bootstrap_no_color,
+    op_bootstrap_stdout_no_color,
+    op_bootstrap_stderr_no_color,
     op_bootstrap_unstable_args,
     op_snapshot_options,
   ],
@@ -116,12 +116,6 @@ pub fn op_bootstrap_log_level(state: &mut OpState) -> i32 {
   state.borrow::<BootstrapOptions>().log_level as i32
 }
 
-#[op2(fast)]
-pub fn op_bootstrap_no_color(state: &mut OpState) -> bool {
-  let options = state.borrow::<BootstrapOptions>();
-  options.no_color
-}
-
 #[op2(fast)]
 pub fn op_bootstrap_color_depth(state: &mut OpState) -> i32 {
   let options = state.borrow::<BootstrapOptions>();
@@ -134,13 +128,24 @@ pub fn op_bootstrap_color_depth(state: &mut OpState) -> i32 {
 }
 
 #[op2(fast)]
-pub fn op_bootstrap_is_stdout_tty(state: &mut OpState) -> bool {
-  let options = state.borrow::<BootstrapOptions>();
-  options.is_stdout_tty
+pub fn op_bootstrap_no_color(_state: &mut OpState) -> bool {
+  !deno_terminal::colors::use_color()
 }
 
 #[op2(fast)]
-pub fn op_bootstrap_is_stderr_tty(state: &mut OpState) -> bool {
-  let options = state.borrow::<BootstrapOptions>();
-  options.is_stderr_tty
+pub fn op_bootstrap_stdout_no_color(_state: &mut OpState) -> bool {
+  if deno_terminal::colors::force_color() {
+    return false;
+  }
+
+  !deno_terminal::is_stdout_tty() || !deno_terminal::colors::use_color()
+}
+
+#[op2(fast)]
+pub fn op_bootstrap_stderr_no_color(_state: &mut OpState) -> bool {
+  if deno_terminal::colors::force_color() {
+    return false;
+  }
+
+  !deno_terminal::is_stderr_tty() || !deno_terminal::colors::use_color()
 }
diff --git a/runtime/worker_bootstrap.rs b/runtime/worker_bootstrap.rs
index f263f6a0dbe681..dc06ea9808599d 100644
--- a/runtime/worker_bootstrap.rs
+++ b/runtime/worker_bootstrap.rs
@@ -102,10 +102,6 @@ pub struct BootstrapOptions {
   pub enable_testing_features: bool,
   pub locale: String,
   pub location: Option<ModuleSpecifier>,
-  /// Sets `Deno.noColor` in JS runtime.
-  pub no_color: bool,
-  pub is_stdout_tty: bool,
-  pub is_stderr_tty: bool,
   pub color_level: deno_terminal::colors::ColorLevel,
   // --unstable-* flags
   pub unstable_features: Vec<i32>,
@@ -138,9 +134,6 @@ impl Default for BootstrapOptions {
       deno_version: runtime_version.to_string(),
       user_agent,
       cpu_count,
-      no_color: !colors::use_color(),
-      is_stdout_tty: deno_terminal::is_stdout_tty(),
-      is_stderr_tty: deno_terminal::is_stderr_tty(),
       color_level: colors::get_color_level(),
       enable_op_summary_metrics: Default::default(),
       enable_testing_features: Default::default(),

From ed2fac89eb838831e6ff03f6fac5a7fba2359c8d Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Fri, 14 Mar 2025 11:19:08 -0400
Subject: [PATCH 087/115] refactor: handle deno_media_type having `Html` and
 `Sql` variants (#28495)

---
 Cargo.lock                          | 12 ++++++------
 Cargo.toml                          |  6 +++---
 cli/cache/module_info.rs            |  8 ++++++--
 cli/emit.rs                         |  2 ++
 cli/lib/standalone/binary.rs        | 12 ++++++++----
 cli/lsp/config.rs                   |  2 ++
 cli/lsp/language_server.rs          |  2 ++
 cli/module_loader.rs                |  6 +++++-
 cli/rt/binary.rs                    |  6 +++++-
 cli/tools/compile.rs                |  6 +++++-
 cli/tools/coverage/mod.rs           |  2 ++
 cli/tools/publish/module_content.rs |  2 ++
 cli/tsc/mod.rs                      |  2 ++
 cli/type_checker.rs                 |  4 ++++
 resolvers/deno/cjs.rs               |  4 ++++
 resolvers/deno/workspace.rs         |  2 ++
 16 files changed, 60 insertions(+), 18 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index a7852f2410f6e6..07df9fb73dcddb 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1610,9 +1610,9 @@ dependencies = [
 
 [[package]]
 name = "deno_ast"
-version = "0.46.1"
+version = "0.46.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88393f34aaba238da6a3694aef7e046eec4d261c3bf98dc6669d397f1c274e5e"
+checksum = "b5700894f83f8d6a7507ed0667b27b812afbfe9bfdfd4d574191023a9c8c3a11"
 dependencies = [
  "base64 0.21.7",
  "deno_error",
@@ -2014,9 +2014,9 @@ dependencies = [
 
 [[package]]
 name = "deno_graph"
-version = "0.89.1"
+version = "0.89.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c38c64a94e1e7792aa6eab7b013a075d88b3e04387d2c1291ecc2934c930095"
+checksum = "3e2570721f05ca346095896bd035acc35fd7cd95743077445418626a068a6b82"
 dependencies = [
  "async-trait",
  "capacity_builder 0.5.0",
@@ -2203,9 +2203,9 @@ dependencies = [
 
 [[package]]
 name = "deno_media_type"
-version = "0.2.6"
+version = "0.2.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "480223262efd08f96b3be5f0457c82bac7296e70dc4e7ef7350751f66293812c"
+checksum = "3d9080fcfcea53bcd6eea1916217bd5611c896f3a0db4c001a859722a1258a47"
 dependencies = [
  "data-url",
  "encoding_rs",
diff --git a/Cargo.toml b/Cargo.toml
index 3f520dbee84ae5..622893590f0622 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -50,16 +50,16 @@ license = "MIT"
 repository = "https://github.com/denoland/deno"
 
 [workspace.dependencies]
-deno_ast = { version = "=0.46.1", features = ["transpiling"] }
+deno_ast = { version = "=0.46.2", features = ["transpiling"] }
 deno_core = { version = "0.340.0" }
 
 deno_bench_util = { version = "0.188.0", path = "./bench_util" }
 deno_config = { version = "=0.50.0", features = ["workspace"] }
 deno_doc = "=0.169.0"
-deno_graph = "=0.89.1"
+deno_graph = "=0.89.2"
 deno_lint = "=0.74.0"
 deno_lockfile = "=0.24.0"
-deno_media_type = { version = "=0.2.6", features = ["module_specifier"] }
+deno_media_type = { version = "=0.2.8", features = ["module_specifier"] }
 deno_npm = "=0.27.2"
 deno_path_util = "=0.3.2"
 deno_permissions = { version = "0.53.0", path = "./runtime/permissions" }
diff --git a/cli/cache/module_info.rs b/cli/cache/module_info.rs
index 19fd85c293db08..9fcd845368f351 100644
--- a/cli/cache/module_info.rs
+++ b/cli/cache/module_info.rs
@@ -260,6 +260,8 @@ impl deno_graph::ModuleAnalyzer for ModuleInfoCacheModuleAnalyzer<'_> {
   }
 }
 
+// note: there is no deserialize for this because this is only ever
+// saved in the db and then used for comparisons
 fn serialize_media_type(media_type: MediaType) -> i64 {
   use MediaType::*;
   match media_type {
@@ -277,8 +279,10 @@ fn serialize_media_type(media_type: MediaType) -> i64 {
     Json => 12,
     Wasm => 13,
     Css => 14,
-    SourceMap => 15,
-    Unknown => 16,
+    Html => 15,
+    SourceMap => 16,
+    Sql => 17,
+    Unknown => 18,
   }
 }
 
diff --git a/cli/emit.rs b/cli/emit.rs
index 98d5b6478d243e..a172473c333a0d 100644
--- a/cli/emit.rs
+++ b/cli/emit.rs
@@ -280,7 +280,9 @@ impl Emitter {
       | MediaType::Json
       | MediaType::Wasm
       | MediaType::Css
+      | MediaType::Html
       | MediaType::SourceMap
+      | MediaType::Sql
       | MediaType::Unknown => {
         // clear this specifier from the parsed source cache as it's now out of date
         self.parsed_source_cache.free(specifier);
diff --git a/cli/lib/standalone/binary.rs b/cli/lib/standalone/binary.rs
index aa72a881b05ba9..23042532b264c0 100644
--- a/cli/lib/standalone/binary.rs
+++ b/cli/lib/standalone/binary.rs
@@ -237,8 +237,10 @@ fn serialize_media_type(media_type: MediaType) -> u8 {
     MediaType::Json => 11,
     MediaType::Wasm => 12,
     MediaType::Css => 13,
-    MediaType::SourceMap => 14,
-    MediaType::Unknown => 15,
+    MediaType::Html => 14,
+    MediaType::SourceMap => 15,
+    MediaType::Sql => 16,
+    MediaType::Unknown => 17,
   }
 }
 
@@ -260,8 +262,10 @@ impl<'a> DenoRtDeserializable<'a> for MediaType {
       11 => MediaType::Json,
       12 => MediaType::Wasm,
       13 => MediaType::Css,
-      14 => MediaType::SourceMap,
-      15 => MediaType::Unknown,
+      14 => MediaType::Html,
+      15 => MediaType::SourceMap,
+      16 => MediaType::Sql,
+      17 => MediaType::Unknown,
       value => {
         return Err(std::io::Error::new(
           std::io::ErrorKind::InvalidData,
diff --git a/cli/lsp/config.rs b/cli/lsp/config.rs
index 6e51027490b417..4fcd82dcb0d5ac 100644
--- a/cli/lsp/config.rs
+++ b/cli/lsp/config.rs
@@ -1008,7 +1008,9 @@ impl Config {
       MediaType::Json
       | MediaType::Wasm
       | MediaType::Css
+      | MediaType::Html
       | MediaType::SourceMap
+      | MediaType::Sql
       | MediaType::Unknown => None,
     }
   }
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index 12bdd5d3113e70..3c679003b96135 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -1010,6 +1010,8 @@ impl Inner {
             MediaType::Wasm
             | MediaType::SourceMap
             | MediaType::Css
+            | MediaType::Html
+            | MediaType::Sql
             | MediaType::Unknown => {
               if path.extension().and_then(|s| s.to_str()) != Some("jsonc") {
                 continue;
diff --git a/cli/module_loader.rs b/cli/module_loader.rs
index ea5df880cc948f..41adc93e6a55b0 100644
--- a/cli/module_loader.rs
+++ b/cli/module_loader.rs
@@ -909,7 +909,11 @@ impl<TGraphContainer: ModuleGraphContainer>
               source,
             }));
           }
-          MediaType::Css | MediaType::Wasm | MediaType::SourceMap => {
+          MediaType::Css
+          | MediaType::Html
+          | MediaType::Sql
+          | MediaType::Wasm
+          | MediaType::SourceMap => {
             panic!("Unexpected media type {media_type} for {specifier}")
           }
         };
diff --git a/cli/rt/binary.rs b/cli/rt/binary.rs
index c475edfaa8f56c..f5246187746698 100644
--- a/cli/rt/binary.rs
+++ b/cli/rt/binary.rs
@@ -357,7 +357,11 @@ impl<'a> DenoCompileModuleData<'a> {
         (ModuleType::Wasm, DenoCompileModuleSource::Bytes(data))
       }
       // just assume javascript if we made it here
-      MediaType::Css | MediaType::SourceMap | MediaType::Unknown => {
+      MediaType::Css
+      | MediaType::Html
+      | MediaType::SourceMap
+      | MediaType::Sql
+      | MediaType::Unknown => {
         (ModuleType::JavaScript, DenoCompileModuleSource::Bytes(data))
       }
     };
diff --git a/cli/tools/compile.rs b/cli/tools/compile.rs
index c9260b5ec844ca..8b1c863d48fb17 100644
--- a/cli/tools/compile.rs
+++ b/cli/tools/compile.rs
@@ -338,7 +338,11 @@ fn get_module_roots_and_include_files(
       | MediaType::Tsx
       | MediaType::Json
       | MediaType::Wasm => true,
-      MediaType::Css | MediaType::SourceMap | MediaType::Unknown => false,
+      MediaType::Css
+      | MediaType::Html
+      | MediaType::SourceMap
+      | MediaType::Sql
+      | MediaType::Unknown => false,
     }
   }
 
diff --git a/cli/tools/coverage/mod.rs b/cli/tools/coverage/mod.rs
index 96331e5157daa1..6f76b737ab7cd6 100644
--- a/cli/tools/coverage/mod.rs
+++ b/cli/tools/coverage/mod.rs
@@ -597,6 +597,8 @@ pub fn cover_files(
       MediaType::JavaScript
       | MediaType::Unknown
       | MediaType::Css
+      | MediaType::Html
+      | MediaType::Sql
       | MediaType::Wasm
       | MediaType::Cjs
       | MediaType::Mjs
diff --git a/cli/tools/publish/module_content.rs b/cli/tools/publish/module_content.rs
index 24d1dcefe72bba..70cde06dc7b3f1 100644
--- a/cli/tools/publish/module_content.rs
+++ b/cli/tools/publish/module_content.rs
@@ -88,6 +88,8 @@ impl<TSys: FsMetadata + FsRead> ModuleContentProvider<TSys> {
           }
           MediaType::SourceMap
           | MediaType::Unknown
+          | MediaType::Html
+          | MediaType::Sql
           | MediaType::Json
           | MediaType::Wasm
           | MediaType::Css => {
diff --git a/cli/tsc/mod.rs b/cli/tsc/mod.rs
index 61e6e3f79a18c3..4bc8513f37d584 100644
--- a/cli/tsc/mod.rs
+++ b/cli/tsc/mod.rs
@@ -604,6 +604,8 @@ pub fn as_ts_script_kind(media_type: MediaType) -> i32 {
     MediaType::Json => 6,
     MediaType::SourceMap
     | MediaType::Css
+    | MediaType::Html
+    | MediaType::Sql
     | MediaType::Wasm
     | MediaType::Unknown => 0,
   }
diff --git a/cli/type_checker.rs b/cli/type_checker.rs
index 13ffdd75010185..2f42de62bf5d76 100644
--- a/cli/type_checker.rs
+++ b/cli/type_checker.rs
@@ -833,7 +833,9 @@ impl<'a> GraphWalker<'a> {
           MediaType::Json
           | MediaType::Wasm
           | MediaType::Css
+          | MediaType::Html
           | MediaType::SourceMap
+          | MediaType::Sql
           | MediaType::Unknown => None,
         };
         if result.is_some() {
@@ -947,7 +949,9 @@ fn has_ts_check(media_type: MediaType, file_text: &str) -> bool {
     | MediaType::Json
     | MediaType::Wasm
     | MediaType::Css
+    | MediaType::Html
     | MediaType::SourceMap
+    | MediaType::Sql
     | MediaType::Unknown => false,
   }
 }
diff --git a/resolvers/deno/cjs.rs b/resolvers/deno/cjs.rs
index f9f38e8b4381bf..3ff92539860d6a 100644
--- a/resolvers/deno/cjs.rs
+++ b/resolvers/deno/cjs.rs
@@ -196,7 +196,9 @@ impl<TInNpmPackageChecker: InNpmPackageChecker, TSys: FsRead>
       | MediaType::Tsx
       // treat these as unknown
       | MediaType::Css
+      | MediaType::Html
       | MediaType::SourceMap
+      | MediaType::Sql
       | MediaType::Unknown => {
         match is_script {
           Some(true) => self.check_based_on_pkg_json(specifier).unwrap_or(ResolutionMode::Import),
@@ -241,7 +243,9 @@ impl<TInNpmPackageChecker: InNpmPackageChecker, TSys: FsRead>
       | MediaType::Tsx
       // treat these as unknown
       | MediaType::Css
+      | MediaType::Html
       | MediaType::SourceMap
+      | MediaType::Sql
       | MediaType::Unknown => {
         if let Some(value) = known_cache.get(specifier).map(|v| *v) {
           if value == ResolutionMode::Require && is_script == Some(false) {
diff --git a/resolvers/deno/workspace.rs b/resolvers/deno/workspace.rs
index c51a13f9956e95..d874ab2bf45634 100644
--- a/resolvers/deno/workspace.rs
+++ b/resolvers/deno/workspace.rs
@@ -498,6 +498,8 @@ impl<TSys: FsMetadata> SloppyImportsResolver<TSys> {
             | MediaType::Json
             | MediaType::Wasm
             | MediaType::Css
+            | MediaType::Html
+            | MediaType::Sql
             | MediaType::SourceMap => {
               return None;
             }

From 6d53bb9c9ecf952e37eb4517878390e0b785dd3a Mon Sep 17 00:00:00 2001
From: Ryan Dahl <ry@tinyclouds.org>
Date: Fri, 14 Mar 2025 11:06:06 -0700
Subject: [PATCH 088/115] docs: randomUUID and getRandomValues (#28496)

---
 cli/tsc/dts/lib.deno_crypto.d.ts | 48 ++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/cli/tsc/dts/lib.deno_crypto.d.ts b/cli/tsc/dts/lib.deno_crypto.d.ts
index 7a36a9654759fe..a05ff359335360 100644
--- a/cli/tsc/dts/lib.deno_crypto.d.ts
+++ b/cli/tsc/dts/lib.deno_crypto.d.ts
@@ -632,6 +632,23 @@ declare var SubtleCrypto: {
 /** @category Crypto */
 interface Crypto {
   readonly subtle: SubtleCrypto;
+
+  /**
+   * Mutates the provided typed array with cryptographically secure random
+   * values.
+   *
+   * @returns The same typed array, now populated with random values.
+   *
+   * @example
+   * ```ts
+   * const array = new Uint32Array(4);
+   * crypto.getRandomValues(array);
+   * console.log(array);
+   * // output: Uint32Array(4) [ 3629234207, 1947236412, 3171234560, 4294901234 ]
+   * ```
+   *
+   * @see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues
+   */
   getRandomValues<
     T extends
       | Int8Array
@@ -646,6 +663,37 @@ interface Crypto {
   >(
     array: T,
   ): T;
+
+  /**
+   * Generates a random RFC 4122 version 4 UUID using a cryptographically
+   * secure random number generator.
+   *
+   * @returns A randomly generated, 36-character long v4 UUID.
+   *
+   * @example
+   * ```ts
+   * const uuid = crypto.randomUUID();
+   * console.log(uuid);
+   * // Example output: '36b8f84d-df4e-4d49-b662-bcde71a8764f'
+   * ```
+   *
+   * The `randomUUID` method generates a version 4 UUID, which is purely
+   * random. If you require other versions of UUIDs, such as time-based (v1) or
+   * name-based (v3 and v5), consider using the `@std/uuid` package available
+   * at {@link https://jsr.io/@std/uuid}.
+   *
+   * @example
+   * ```ts
+   * import { v1 } from 'jsr:@std/uuid';
+   *
+   * // Generate a time-based UUID (v1)
+   * const uuidV1 = v1.generate();
+   * console.log(uuidV1);
+   * // output: 'a0c74f7e-82f1-11eb-8dcd-0242ac130003'
+   * ```
+   *
+   * @see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID
+   */
   randomUUID(): `${string}-${string}-${string}-${string}-${string}`;
 }
 

From 5f00b9700f044bc2878242a9102cc5cb557f36d7 Mon Sep 17 00:00:00 2001
From: denobot <33910674+denobot@users.noreply.github.com>
Date: Fri, 14 Mar 2025 18:40:38 -0400
Subject: [PATCH 089/115] chore: forward v2.2.4 release commit to main (#28500)

---
 .github/workflows/ci.generate.ts |  2 +-
 .github/workflows/ci.yml         |  8 ++--
 Cargo.lock                       | 72 ++++++++++++++++----------------
 Cargo.toml                       | 68 +++++++++++++++---------------
 Releases.md                      | 27 ++++++++++++
 bench_util/Cargo.toml            |  2 +-
 cli/Cargo.toml                   |  2 +-
 cli/lib/Cargo.toml               |  2 +-
 cli/lib/version.txt              |  2 +-
 cli/rt/Cargo.toml                |  2 +-
 cli/snapshot/Cargo.toml          |  2 +-
 ext/broadcast_channel/Cargo.toml |  2 +-
 ext/cache/Cargo.toml             |  2 +-
 ext/canvas/Cargo.toml            |  2 +-
 ext/console/Cargo.toml           |  2 +-
 ext/cron/Cargo.toml              |  2 +-
 ext/crypto/Cargo.toml            |  2 +-
 ext/fetch/Cargo.toml             |  2 +-
 ext/ffi/Cargo.toml               |  2 +-
 ext/fs/Cargo.toml                |  2 +-
 ext/http/Cargo.toml              |  2 +-
 ext/io/Cargo.toml                |  2 +-
 ext/kv/Cargo.toml                |  2 +-
 ext/napi/Cargo.toml              |  2 +-
 ext/napi/sym/Cargo.toml          |  2 +-
 ext/net/Cargo.toml               |  2 +-
 ext/node/Cargo.toml              |  2 +-
 ext/os/Cargo.toml                |  2 +-
 ext/process/Cargo.toml           |  2 +-
 ext/telemetry/Cargo.toml         |  2 +-
 ext/tls/Cargo.toml               |  2 +-
 ext/url/Cargo.toml               |  2 +-
 ext/web/Cargo.toml               |  2 +-
 ext/webgpu/Cargo.toml            |  2 +-
 ext/webidl/Cargo.toml            |  2 +-
 ext/websocket/Cargo.toml         |  2 +-
 ext/webstorage/Cargo.toml        |  2 +-
 resolvers/deno/Cargo.toml        |  2 +-
 resolvers/node/Cargo.toml        |  2 +-
 resolvers/npm_cache/Cargo.toml   |  2 +-
 runtime/Cargo.toml               |  2 +-
 runtime/permissions/Cargo.toml   |  2 +-
 42 files changed, 139 insertions(+), 112 deletions(-)

diff --git a/.github/workflows/ci.generate.ts b/.github/workflows/ci.generate.ts
index 72a0489ce5b44b..88c0e8262d3be9 100755
--- a/.github/workflows/ci.generate.ts
+++ b/.github/workflows/ci.generate.ts
@@ -5,7 +5,7 @@ import { stringify } from "jsr:@std/yaml@^0.221/stringify";
 // Bump this number when you want to purge the cache.
 // Note: the tools/release/01_bump_crate_versions.ts script will update this version
 // automatically via regex, so ensure that this line maintains this format.
-const cacheVersion = 44;
+const cacheVersion = 45;
 
 const ubuntuX86Runner = "ubuntu-24.04";
 const ubuntuX86XlRunner = "ubuntu-24.04-xl";
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index d369ef45da0421..1772043e363787 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -184,8 +184,8 @@ jobs:
             ~/.cargo/registry/index
             ~/.cargo/registry/cache
             ~/.cargo/git/db
-          key: '44-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-${{ hashFiles(''Cargo.lock'') }}'
-          restore-keys: '44-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-'
+          key: '45-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-${{ hashFiles(''Cargo.lock'') }}'
+          restore-keys: '45-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-'
         if: '!(matrix.skip)'
       - uses: dsherret/rust-toolchain-file@v1
         if: '!(matrix.skip)'
@@ -381,7 +381,7 @@ jobs:
             !./target/*/*.zip
             !./target/*/*.tar.gz
           key: never_saved
-          restore-keys: '44-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-'
+          restore-keys: '45-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-'
       - name: Apply and update mtime cache
         if: '!(matrix.skip) && (!startsWith(github.ref, ''refs/tags/''))'
         uses: ./.github/mtime_cache
@@ -699,7 +699,7 @@ jobs:
             !./target/*/gn_root
             !./target/*/*.zip
             !./target/*/*.tar.gz
-          key: '44-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-${{ github.sha }}'
+          key: '45-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-${{ github.sha }}'
   wasm:
     name: build wasm32
     needs:
diff --git a/Cargo.lock b/Cargo.lock
index 07df9fb73dcddb..fc1b736908fc94 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1473,7 +1473,7 @@ dependencies = [
 
 [[package]]
 name = "deno"
-version = "2.2.3"
+version = "2.2.4"
 dependencies = [
  "anstream",
  "async-trait",
@@ -1656,7 +1656,7 @@ dependencies = [
 
 [[package]]
 name = "deno_bench_util"
-version = "0.188.0"
+version = "0.189.0"
 dependencies = [
  "bencher",
  "deno_core",
@@ -1665,7 +1665,7 @@ dependencies = [
 
 [[package]]
 name = "deno_broadcast_channel"
-version = "0.188.0"
+version = "0.189.0"
 dependencies = [
  "async-trait",
  "deno_core",
@@ -1677,7 +1677,7 @@ dependencies = [
 
 [[package]]
 name = "deno_cache"
-version = "0.126.0"
+version = "0.127.0"
 dependencies = [
  "async-stream",
  "async-trait",
@@ -1733,7 +1733,7 @@ dependencies = [
 
 [[package]]
 name = "deno_canvas"
-version = "0.63.0"
+version = "0.64.0"
 dependencies = [
  "bytemuck",
  "deno_core",
@@ -1773,7 +1773,7 @@ dependencies = [
 
 [[package]]
 name = "deno_console"
-version = "0.194.0"
+version = "0.195.0"
 dependencies = [
  "deno_core",
 ]
@@ -1825,7 +1825,7 @@ checksum = "fe4dccb6147bb3f3ba0c7a48e993bfeb999d2c2e47a81badee80e2b370c8d695"
 
 [[package]]
 name = "deno_cron"
-version = "0.74.0"
+version = "0.75.0"
 dependencies = [
  "async-trait",
  "chrono",
@@ -1838,7 +1838,7 @@ dependencies = [
 
 [[package]]
 name = "deno_crypto"
-version = "0.208.0"
+version = "0.209.0"
 dependencies = [
  "aes",
  "aes-gcm",
@@ -1929,7 +1929,7 @@ dependencies = [
 
 [[package]]
 name = "deno_fetch"
-version = "0.218.0"
+version = "0.219.0"
 dependencies = [
  "base64 0.21.7",
  "bytes",
@@ -1967,7 +1967,7 @@ dependencies = [
 
 [[package]]
 name = "deno_ffi"
-version = "0.181.0"
+version = "0.182.0"
 dependencies = [
  "cranelift",
  "cranelift-native",
@@ -1990,7 +1990,7 @@ dependencies = [
 
 [[package]]
 name = "deno_fs"
-version = "0.104.0"
+version = "0.105.0"
 dependencies = [
  "async-trait",
  "base32",
@@ -2048,7 +2048,7 @@ dependencies = [
 
 [[package]]
 name = "deno_http"
-version = "0.192.0"
+version = "0.193.0"
 dependencies = [
  "async-compression",
  "async-trait",
@@ -2089,7 +2089,7 @@ dependencies = [
 
 [[package]]
 name = "deno_io"
-version = "0.104.0"
+version = "0.105.0"
 dependencies = [
  "async-trait",
  "deno_core",
@@ -2111,7 +2111,7 @@ dependencies = [
 
 [[package]]
 name = "deno_kv"
-version = "0.102.0"
+version = "0.103.0"
 dependencies = [
  "anyhow",
  "async-trait",
@@ -2142,7 +2142,7 @@ dependencies = [
 
 [[package]]
 name = "deno_lib"
-version = "0.10.0"
+version = "0.11.0"
 dependencies = [
  "capacity_builder 0.5.0",
  "deno_error",
@@ -2215,7 +2215,7 @@ dependencies = [
 
 [[package]]
 name = "deno_napi"
-version = "0.125.0"
+version = "0.126.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2244,7 +2244,7 @@ dependencies = [
 
 [[package]]
 name = "deno_net"
-version = "0.186.0"
+version = "0.187.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2266,7 +2266,7 @@ dependencies = [
 
 [[package]]
 name = "deno_node"
-version = "0.132.0"
+version = "0.133.0"
 dependencies = [
  "aead-gcm-stream",
  "aes",
@@ -2373,7 +2373,7 @@ dependencies = [
 
 [[package]]
 name = "deno_npm_cache"
-version = "0.13.0"
+version = "0.14.0"
 dependencies = [
  "async-trait",
  "base64 0.21.7",
@@ -2420,7 +2420,7 @@ dependencies = [
 
 [[package]]
 name = "deno_os"
-version = "0.11.0"
+version = "0.12.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2472,7 +2472,7 @@ dependencies = [
 
 [[package]]
 name = "deno_permissions"
-version = "0.53.0"
+version = "0.54.0"
 dependencies = [
  "capacity_builder 0.5.0",
  "deno_core",
@@ -2492,7 +2492,7 @@ dependencies = [
 
 [[package]]
 name = "deno_process"
-version = "0.9.0"
+version = "0.10.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2519,7 +2519,7 @@ dependencies = [
 
 [[package]]
 name = "deno_resolver"
-version = "0.25.0"
+version = "0.26.0"
 dependencies = [
  "anyhow",
  "async-once-cell",
@@ -2553,7 +2553,7 @@ dependencies = [
 
 [[package]]
 name = "deno_runtime"
-version = "0.202.0"
+version = "0.203.0"
 dependencies = [
  "color-print",
  "deno_ast",
@@ -2634,7 +2634,7 @@ dependencies = [
 
 [[package]]
 name = "deno_snapshots"
-version = "0.9.0"
+version = "0.10.0"
 dependencies = [
  "deno_runtime",
 ]
@@ -2659,7 +2659,7 @@ dependencies = [
 
 [[package]]
 name = "deno_telemetry"
-version = "0.16.0"
+version = "0.17.0"
 dependencies = [
  "async-trait",
  "deno_core",
@@ -2704,7 +2704,7 @@ dependencies = [
 
 [[package]]
 name = "deno_tls"
-version = "0.181.0"
+version = "0.182.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2755,7 +2755,7 @@ dependencies = [
 
 [[package]]
 name = "deno_url"
-version = "0.194.0"
+version = "0.195.0"
 dependencies = [
  "deno_bench_util",
  "deno_console",
@@ -2767,7 +2767,7 @@ dependencies = [
 
 [[package]]
 name = "deno_web"
-version = "0.225.0"
+version = "0.226.0"
 dependencies = [
  "async-trait",
  "base64-simd 0.8.0",
@@ -2790,7 +2790,7 @@ dependencies = [
 
 [[package]]
 name = "deno_webgpu"
-version = "0.161.0"
+version = "0.162.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2807,7 +2807,7 @@ dependencies = [
 
 [[package]]
 name = "deno_webidl"
-version = "0.194.0"
+version = "0.195.0"
 dependencies = [
  "deno_bench_util",
  "deno_core",
@@ -2815,7 +2815,7 @@ dependencies = [
 
 [[package]]
 name = "deno_websocket"
-version = "0.199.0"
+version = "0.200.0"
 dependencies = [
  "bytes",
  "deno_core",
@@ -2838,7 +2838,7 @@ dependencies = [
 
 [[package]]
 name = "deno_webstorage"
-version = "0.189.0"
+version = "0.190.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2925,7 +2925,7 @@ dependencies = [
 
 [[package]]
 name = "denort"
-version = "2.2.3"
+version = "2.2.4"
 dependencies = [
  "async-trait",
  "bincode",
@@ -5523,7 +5523,7 @@ dependencies = [
 
 [[package]]
 name = "napi_sym"
-version = "0.124.0"
+version = "0.125.0"
 dependencies = [
  "quote",
  "serde",
@@ -5578,7 +5578,7 @@ dependencies = [
 
 [[package]]
 name = "node_resolver"
-version = "0.32.0"
+version = "0.33.0"
 dependencies = [
  "anyhow",
  "async-trait",
diff --git a/Cargo.toml b/Cargo.toml
index 622893590f0622..c9d1a75eda7c23 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -53,7 +53,7 @@ repository = "https://github.com/denoland/deno"
 deno_ast = { version = "=0.46.2", features = ["transpiling"] }
 deno_core = { version = "0.340.0" }
 
-deno_bench_util = { version = "0.188.0", path = "./bench_util" }
+deno_bench_util = { version = "0.189.0", path = "./bench_util" }
 deno_config = { version = "=0.50.0", features = ["workspace"] }
 deno_doc = "=0.169.0"
 deno_graph = "=0.89.2"
@@ -62,12 +62,12 @@ deno_lockfile = "=0.24.0"
 deno_media_type = { version = "=0.2.8", features = ["module_specifier"] }
 deno_npm = "=0.27.2"
 deno_path_util = "=0.3.2"
-deno_permissions = { version = "0.53.0", path = "./runtime/permissions" }
-deno_runtime = { version = "0.202.0", path = "./runtime" }
+deno_permissions = { version = "0.54.0", path = "./runtime/permissions" }
+deno_runtime = { version = "0.203.0", path = "./runtime" }
 deno_semver = "=0.7.1"
 deno_terminal = "=0.2.2"
 eszip = "0.83.0"
-napi_sym = { version = "0.124.0", path = "./ext/napi/sym" }
+napi_sym = { version = "0.125.0", path = "./ext/napi/sym" }
 test_util = { package = "test_server", path = "./tests/util/server" }
 
 denokv_proto = "0.9.0"
@@ -76,38 +76,38 @@ denokv_remote = "0.9.0"
 denokv_sqlite = { default-features = false, version = "0.9.0" }
 
 # exts
-deno_broadcast_channel = { version = "0.188.0", path = "./ext/broadcast_channel" }
-deno_cache = { version = "0.126.0", path = "./ext/cache" }
-deno_canvas = { version = "0.63.0", path = "./ext/canvas" }
-deno_console = { version = "0.194.0", path = "./ext/console" }
-deno_cron = { version = "0.74.0", path = "./ext/cron" }
-deno_crypto = { version = "0.208.0", path = "./ext/crypto" }
-deno_fetch = { version = "0.218.0", path = "./ext/fetch" }
-deno_ffi = { version = "0.181.0", path = "./ext/ffi" }
-deno_fs = { version = "0.104.0", path = "./ext/fs" }
-deno_http = { version = "0.192.0", path = "./ext/http" }
-deno_io = { version = "0.104.0", path = "./ext/io" }
-deno_kv = { version = "0.102.0", path = "./ext/kv" }
-deno_napi = { version = "0.125.0", path = "./ext/napi" }
-deno_net = { version = "0.186.0", path = "./ext/net" }
-deno_node = { version = "0.132.0", path = "./ext/node" }
-deno_os = { version = "0.11.0", path = "./ext/os" }
-deno_process = { version = "0.9.0", path = "./ext/process" }
-deno_telemetry = { version = "0.16.0", path = "./ext/telemetry" }
-deno_tls = { version = "0.181.0", path = "./ext/tls" }
-deno_url = { version = "0.194.0", path = "./ext/url" }
-deno_web = { version = "0.225.0", path = "./ext/web" }
-deno_webgpu = { version = "0.161.0", path = "./ext/webgpu" }
-deno_webidl = { version = "0.194.0", path = "./ext/webidl" }
-deno_websocket = { version = "0.199.0", path = "./ext/websocket" }
-deno_webstorage = { version = "0.189.0", path = "./ext/webstorage" }
+deno_broadcast_channel = { version = "0.189.0", path = "./ext/broadcast_channel" }
+deno_cache = { version = "0.127.0", path = "./ext/cache" }
+deno_canvas = { version = "0.64.0", path = "./ext/canvas" }
+deno_console = { version = "0.195.0", path = "./ext/console" }
+deno_cron = { version = "0.75.0", path = "./ext/cron" }
+deno_crypto = { version = "0.209.0", path = "./ext/crypto" }
+deno_fetch = { version = "0.219.0", path = "./ext/fetch" }
+deno_ffi = { version = "0.182.0", path = "./ext/ffi" }
+deno_fs = { version = "0.105.0", path = "./ext/fs" }
+deno_http = { version = "0.193.0", path = "./ext/http" }
+deno_io = { version = "0.105.0", path = "./ext/io" }
+deno_kv = { version = "0.103.0", path = "./ext/kv" }
+deno_napi = { version = "0.126.0", path = "./ext/napi" }
+deno_net = { version = "0.187.0", path = "./ext/net" }
+deno_node = { version = "0.133.0", path = "./ext/node" }
+deno_os = { version = "0.12.0", path = "./ext/os" }
+deno_process = { version = "0.10.0", path = "./ext/process" }
+deno_telemetry = { version = "0.17.0", path = "./ext/telemetry" }
+deno_tls = { version = "0.182.0", path = "./ext/tls" }
+deno_url = { version = "0.195.0", path = "./ext/url" }
+deno_web = { version = "0.226.0", path = "./ext/web" }
+deno_webgpu = { version = "0.162.0", path = "./ext/webgpu" }
+deno_webidl = { version = "0.195.0", path = "./ext/webidl" }
+deno_websocket = { version = "0.200.0", path = "./ext/websocket" }
+deno_webstorage = { version = "0.190.0", path = "./ext/webstorage" }
 
 # workspace libraries
-deno_lib = { version = "0.10.0", path = "./cli/lib" }
-deno_npm_cache = { version = "0.13.0", path = "./resolvers/npm_cache" }
-deno_resolver = { version = "0.25.0", path = "./resolvers/deno" }
-deno_snapshots = { version = "0.9.0", path = "./cli/snapshot" }
-node_resolver = { version = "0.32.0", path = "./resolvers/node" }
+deno_lib = { version = "0.11.0", path = "./cli/lib" }
+deno_npm_cache = { version = "0.14.0", path = "./resolvers/npm_cache" }
+deno_resolver = { version = "0.26.0", path = "./resolvers/deno" }
+deno_snapshots = { version = "0.10.0", path = "./cli/snapshot" }
+node_resolver = { version = "0.33.0", path = "./resolvers/node" }
 
 aead-gcm-stream = "0.4"
 aes = "=0.8.3"
diff --git a/Releases.md b/Releases.md
index ee309d4419901e..0b3538653028ad 100644
--- a/Releases.md
+++ b/Releases.md
@@ -6,6 +6,33 @@ https://github.com/denoland/deno/releases
 We also have one-line install commands at:
 https://github.com/denoland/deno_install
 
+### 2.2.4 / 2025.03.14
+
+- feat(otel): span context propagators (#28460)
+- feat(unstable/otel): add otel tracing to node:http.request (#28463)
+- feat: support FORCE_COLOR (#28490)
+- fix(bench): lower bench time budget when `n` is specified (#28454)
+- fix(check): support `types@` export conditions (#28450)
+- fix(check): support `typesVersions` in npm dependencies (#28468)
+- fix(cli): warn when an otel env var has an invalid value (#28394)
+- fix(ext/node): correct `STATUS_CODES` strings (#28489)
+- fix(ext/node): use primordials in `ext/node/polyfills/path/_util.ts` (#28432)
+- fix(install): exclude npm workspace packages from graph roots in `install`
+  (#28401)
+- fix(install): support "file:" dependencies in local package.json (#28396)
+- fix(lsp): auto-import from npm package exports with manual node_modules
+  (#28414)
+- fix(lsp): silence errors from "codeAction/resolve" (#28400)
+- fix(node): support re-exported esm modules in cjs export analysis (#28379)
+- fix(otel): don't print otel warning when variable is not set (#28475)
+- fix(otel/unstable): trace error cases of fetch (#28480)
+- fix(run): skip the cjs suggestion for mjs/mts modules (#26698)
+- fix(unstable): lint plugin `!==` wrongly parsed as `!=` (#28403)
+- fix(unstable): wrong node with shorthand ObjectPattern + AssignPattern
+  (#28402)
+- fix: unhandled rejection from quic (#28448)
+- perf(lsp): lazily start the ts server (#28392)
+
 ### 2.2.3 / 2025.03.05
 
 - feat(unstable): lint plugins support field selectors (#28324)
diff --git a/bench_util/Cargo.toml b/bench_util/Cargo.toml
index 607007eb6eee82..0a66df21217be2 100644
--- a/bench_util/Cargo.toml
+++ b/bench_util/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_bench_util"
-version = "0.188.0"
+version = "0.189.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index af6a847cf76f45..03ec5601bdec6b 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno"
-version = "2.2.3"
+version = "2.2.4"
 authors.workspace = true
 default-run = "deno"
 edition.workspace = true
diff --git a/cli/lib/Cargo.toml b/cli/lib/Cargo.toml
index cb934ba4587301..3b831c664f660a 100644
--- a/cli/lib/Cargo.toml
+++ b/cli/lib/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_lib"
-version = "0.10.0"
+version = "0.11.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/cli/lib/version.txt b/cli/lib/version.txt
index 6b4d1577382586..047615559cd046 100644
--- a/cli/lib/version.txt
+++ b/cli/lib/version.txt
@@ -1 +1 @@
-2.2.3
\ No newline at end of file
+2.2.4
\ No newline at end of file
diff --git a/cli/rt/Cargo.toml b/cli/rt/Cargo.toml
index 5e82fdcafd74e9..8f6c20521cab5b 100644
--- a/cli/rt/Cargo.toml
+++ b/cli/rt/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "denort"
-version = "2.2.3"
+version = "2.2.4"
 authors.workspace = true
 default-run = "denort"
 edition.workspace = true
diff --git a/cli/snapshot/Cargo.toml b/cli/snapshot/Cargo.toml
index fbb89ee6f70fde..f7afa308aa02b5 100644
--- a/cli/snapshot/Cargo.toml
+++ b/cli/snapshot/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_snapshots"
-version = "0.9.0"
+version = "0.10.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/broadcast_channel/Cargo.toml b/ext/broadcast_channel/Cargo.toml
index a831524aa6d534..8dc8d7e7defdd3 100644
--- a/ext/broadcast_channel/Cargo.toml
+++ b/ext/broadcast_channel/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_broadcast_channel"
-version = "0.188.0"
+version = "0.189.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/cache/Cargo.toml b/ext/cache/Cargo.toml
index f35dcd2e71358f..6fec31a6c871db 100644
--- a/ext/cache/Cargo.toml
+++ b/ext/cache/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_cache"
-version = "0.126.0"
+version = "0.127.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/canvas/Cargo.toml b/ext/canvas/Cargo.toml
index aeb1776395ef58..a08387f4d012da 100644
--- a/ext/canvas/Cargo.toml
+++ b/ext/canvas/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_canvas"
-version = "0.63.0"
+version = "0.64.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/console/Cargo.toml b/ext/console/Cargo.toml
index 6772cca10c75ff..e7fc750bcccaa6 100644
--- a/ext/console/Cargo.toml
+++ b/ext/console/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_console"
-version = "0.194.0"
+version = "0.195.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/cron/Cargo.toml b/ext/cron/Cargo.toml
index 95371a86593b2f..6c76fa0f89ebc6 100644
--- a/ext/cron/Cargo.toml
+++ b/ext/cron/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_cron"
-version = "0.74.0"
+version = "0.75.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/crypto/Cargo.toml b/ext/crypto/Cargo.toml
index 27a3a01ea29630..f83e2c024e2279 100644
--- a/ext/crypto/Cargo.toml
+++ b/ext/crypto/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_crypto"
-version = "0.208.0"
+version = "0.209.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/fetch/Cargo.toml b/ext/fetch/Cargo.toml
index 574e15bdb2a2bd..7247ee99602b78 100644
--- a/ext/fetch/Cargo.toml
+++ b/ext/fetch/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_fetch"
-version = "0.218.0"
+version = "0.219.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/ffi/Cargo.toml b/ext/ffi/Cargo.toml
index 5700e41a215df7..0e8e3d3ed87a3e 100644
--- a/ext/ffi/Cargo.toml
+++ b/ext/ffi/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_ffi"
-version = "0.181.0"
+version = "0.182.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/fs/Cargo.toml b/ext/fs/Cargo.toml
index a2ee909843dd2e..d1702d37b72a19 100644
--- a/ext/fs/Cargo.toml
+++ b/ext/fs/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_fs"
-version = "0.104.0"
+version = "0.105.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/http/Cargo.toml b/ext/http/Cargo.toml
index 6a3a6d08a9f5af..38003d01ae97aa 100644
--- a/ext/http/Cargo.toml
+++ b/ext/http/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_http"
-version = "0.192.0"
+version = "0.193.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/io/Cargo.toml b/ext/io/Cargo.toml
index b7a41cfb7602f8..701dd1c19bc8b5 100644
--- a/ext/io/Cargo.toml
+++ b/ext/io/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_io"
-version = "0.104.0"
+version = "0.105.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/kv/Cargo.toml b/ext/kv/Cargo.toml
index 11a1938f57da40..bd7c1fdca95c28 100644
--- a/ext/kv/Cargo.toml
+++ b/ext/kv/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_kv"
-version = "0.102.0"
+version = "0.103.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/napi/Cargo.toml b/ext/napi/Cargo.toml
index a47965bec4b98e..90fcec5675981c 100644
--- a/ext/napi/Cargo.toml
+++ b/ext/napi/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_napi"
-version = "0.125.0"
+version = "0.126.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/napi/sym/Cargo.toml b/ext/napi/sym/Cargo.toml
index 349bed1ad28c99..d7a004dbed943b 100644
--- a/ext/napi/sym/Cargo.toml
+++ b/ext/napi/sym/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "napi_sym"
-version = "0.124.0"
+version = "0.125.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/net/Cargo.toml b/ext/net/Cargo.toml
index a826f4ab19d57c..fdcf8376164009 100644
--- a/ext/net/Cargo.toml
+++ b/ext/net/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_net"
-version = "0.186.0"
+version = "0.187.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/node/Cargo.toml b/ext/node/Cargo.toml
index 760cd54376030d..3db346b9bfbc03 100644
--- a/ext/node/Cargo.toml
+++ b/ext/node/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_node"
-version = "0.132.0"
+version = "0.133.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/os/Cargo.toml b/ext/os/Cargo.toml
index fbb862681beb17..7ebb7352cf6cf7 100644
--- a/ext/os/Cargo.toml
+++ b/ext/os/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_os"
-version = "0.11.0"
+version = "0.12.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/process/Cargo.toml b/ext/process/Cargo.toml
index 9a969129c9afbc..be811838e0c542 100644
--- a/ext/process/Cargo.toml
+++ b/ext/process/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_process"
-version = "0.9.0"
+version = "0.10.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/telemetry/Cargo.toml b/ext/telemetry/Cargo.toml
index 5cfde1aea92a20..f4f59d4213dc55 100644
--- a/ext/telemetry/Cargo.toml
+++ b/ext/telemetry/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_telemetry"
-version = "0.16.0"
+version = "0.17.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/tls/Cargo.toml b/ext/tls/Cargo.toml
index d99f42882943b4..3492e94cb4ff08 100644
--- a/ext/tls/Cargo.toml
+++ b/ext/tls/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_tls"
-version = "0.181.0"
+version = "0.182.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/url/Cargo.toml b/ext/url/Cargo.toml
index a896f50ef37f33..462e8b0e655c06 100644
--- a/ext/url/Cargo.toml
+++ b/ext/url/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_url"
-version = "0.194.0"
+version = "0.195.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/web/Cargo.toml b/ext/web/Cargo.toml
index 44e2f65afcf021..d0e27a3041d103 100644
--- a/ext/web/Cargo.toml
+++ b/ext/web/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_web"
-version = "0.225.0"
+version = "0.226.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/webgpu/Cargo.toml b/ext/webgpu/Cargo.toml
index 65244e8bd2c909..5666264168d392 100644
--- a/ext/webgpu/Cargo.toml
+++ b/ext/webgpu/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_webgpu"
-version = "0.161.0"
+version = "0.162.0"
 authors = ["the Deno authors"]
 edition.workspace = true
 license = "MIT"
diff --git a/ext/webidl/Cargo.toml b/ext/webidl/Cargo.toml
index 7f7f3b9eb3f377..7afd94daf95ad5 100644
--- a/ext/webidl/Cargo.toml
+++ b/ext/webidl/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_webidl"
-version = "0.194.0"
+version = "0.195.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/websocket/Cargo.toml b/ext/websocket/Cargo.toml
index d8bba25a6d8163..e971772f55da02 100644
--- a/ext/websocket/Cargo.toml
+++ b/ext/websocket/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_websocket"
-version = "0.199.0"
+version = "0.200.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/webstorage/Cargo.toml b/ext/webstorage/Cargo.toml
index 575cca184c422f..ebd95f105559b7 100644
--- a/ext/webstorage/Cargo.toml
+++ b/ext/webstorage/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_webstorage"
-version = "0.189.0"
+version = "0.190.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/resolvers/deno/Cargo.toml b/resolvers/deno/Cargo.toml
index 977799e84d7ff4..6b93e20f3c04ff 100644
--- a/resolvers/deno/Cargo.toml
+++ b/resolvers/deno/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_resolver"
-version = "0.25.0"
+version = "0.26.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/resolvers/node/Cargo.toml b/resolvers/node/Cargo.toml
index d713b692342f74..7794fe6de59da9 100644
--- a/resolvers/node/Cargo.toml
+++ b/resolvers/node/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "node_resolver"
-version = "0.32.0"
+version = "0.33.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/resolvers/npm_cache/Cargo.toml b/resolvers/npm_cache/Cargo.toml
index 8120b3fc903a05..f5ed3a10ef95ac 100644
--- a/resolvers/npm_cache/Cargo.toml
+++ b/resolvers/npm_cache/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_npm_cache"
-version = "0.13.0"
+version = "0.14.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml
index bebe4c3351792e..1b9e49fab74085 100644
--- a/runtime/Cargo.toml
+++ b/runtime/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_runtime"
-version = "0.202.0"
+version = "0.203.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/runtime/permissions/Cargo.toml b/runtime/permissions/Cargo.toml
index 6f10c13a82dd1f..32a564424af823 100644
--- a/runtime/permissions/Cargo.toml
+++ b/runtime/permissions/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_permissions"
-version = "0.53.0"
+version = "0.54.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true

From c638f9ade18547b0b4e172a3d381d4a2f2a47af1 Mon Sep 17 00:00:00 2001
From: Divy Srivastava <dj.srivastava23@gmail.com>
Date: Sat, 15 Mar 2025 20:14:24 +0530
Subject: [PATCH 090/115] fix(ext/node): reset statement immidiately in run()
 (#28506)

Fixes https://github.com/denoland/deno/issues/28492
---
 ext/node/ops/sqlite/statement.rs |  4 +++-
 tests/unit_node/sqlite_test.ts   | 22 ++++++++++++++++++++++
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/ext/node/ops/sqlite/statement.rs b/ext/node/ops/sqlite/statement.rs
index 03c807e0e1b324..d803947bf24a2a 100644
--- a/ext/node/ops/sqlite/statement.rs
+++ b/ext/node/ops/sqlite/statement.rs
@@ -449,9 +449,11 @@ impl StatementSync {
 
     self.bind_params(scope, params)?;
 
-    let _reset = ResetGuard(self);
+    let reset = ResetGuard(self);
 
     self.step()?;
+    // Reset to return correct change metadata.
+    drop(reset);
 
     Ok(RunStatementResult {
       last_insert_rowid: db.last_insert_rowid(),
diff --git a/tests/unit_node/sqlite_test.ts b/tests/unit_node/sqlite_test.ts
index 83996301bb9a54..f132106fa7c73e 100644
--- a/tests/unit_node/sqlite_test.ts
+++ b/tests/unit_node/sqlite_test.ts
@@ -286,3 +286,25 @@ Deno.test("[node/sqlite] StatementSync reset guards don't lock db", () => {
 
   db.exec("DROP TABLE IF EXISTS foo");
 });
+
+// https://github.com/denoland/deno/issues/28492
+Deno.test("[node/sqlite] StatementSync reset step change metadata", () => {
+  const db = new DatabaseSync(":memory:");
+
+  db.exec(`CREATE TABLE people (
+  id INTEGER PRIMARY KEY,
+  name TEXT NOT NULL,
+  birthdate TEXT NOT NULL
+) STRICT`);
+
+  const insertPeople = db.prepare(`
+INSERT INTO people
+  (name, birthdate)
+VALUES
+  (:name, :birthdate)
+RETURNING id
+`);
+
+  const id1 = insertPeople.run({ name: "Flash", birthdate: "1956-07-16" });
+  assertEquals(id1, { lastInsertRowid: 1, changes: 1 });
+});

From aee38ab6e39f2e5a22445e352fb817cf2262d000 Mon Sep 17 00:00:00 2001
From: letianpailove <113023596+letianpailove@users.noreply.github.com>
Date: Mon, 17 Mar 2025 16:46:22 +0800
Subject: [PATCH 091/115] docs: fix a typo in specs README.md (#28524)

---
 tests/specs/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/specs/README.md b/tests/specs/README.md
index 29c83ec1283fe5..436dc09409048c 100644
--- a/tests/specs/README.md
+++ b/tests/specs/README.md
@@ -95,7 +95,7 @@ Or if you want to run several tests at the same time:
 When writing a single step, these may be at the top level rather than nested in
 a "steps" array or "tests" object.
 
-- `args` - A string (that will be spilt on whitespace into an args array) or an
+- `args` - A string (that will be split on whitespace into an args array) or an
   array of arguments.
 - `output` - Path to use to assert the output or text (must end with an .out
   extension) _or_ text to pattern match against the output.

From bb4c662660dee8b064ba5fb095e70be3ce57742b Mon Sep 17 00:00:00 2001
From: Paolo Barbolini <paolo@paolo565.org>
Date: Mon, 17 Mar 2025 14:33:51 +0100
Subject: [PATCH 092/115] refactor: replace `memmem` with `memchr` (#28516)

---
 Cargo.lock                    | 10 ++--------
 Cargo.toml                    |  1 -
 cli/Cargo.toml                |  2 +-
 cli/tools/test/channel.rs     |  6 +++---
 ext/http/Cargo.toml           |  2 +-
 ext/http/websocket_upgrade.rs | 16 +++++++---------
 6 files changed, 14 insertions(+), 23 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index fc1b736908fc94..d3ed72ac75e072 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1542,7 +1542,7 @@ dependencies = [
  "lsp-types",
  "malva",
  "markup_fmt",
- "memmem",
+ "memchr",
  "nix",
  "node_resolver",
  "notify",
@@ -2071,7 +2071,7 @@ dependencies = [
  "hyper 1.6.0",
  "hyper-util",
  "itertools 0.10.5",
- "memmem",
+ "memchr",
  "mime",
  "once_cell",
  "percent-encoding",
@@ -5361,12 +5361,6 @@ dependencies = [
  "libc",
 ]
 
-[[package]]
-name = "memmem"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a64a92489e2744ce060c349162be1c5f33c6969234104dbd99ddb5feb08b8c15"
-
 [[package]]
 name = "memoffset"
 version = "0.9.1"
diff --git a/Cargo.toml b/Cargo.toml
index c9d1a75eda7c23..c9a15442c18a8c 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -230,7 +230,6 @@ md-5 = "0.10.5"
 md4 = "0.10.2"
 memchr = "2.7.4"
 memmap2 = "0.9"
-memmem = "0.1.1"
 mime = "0.3.16"
 monch = "=0.5.0"
 napi-build = "1"
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index 03ec5601bdec6b..82e707ed27ad36 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -134,7 +134,7 @@ log = { workspace = true, features = ["serde"] }
 lsp-types.workspace = true
 malva.workspace = true
 markup_fmt.workspace = true
-memmem.workspace = true
+memchr.workspace = true
 notify.workspace = true
 once_cell.workspace = true
 open.workspace = true
diff --git a/cli/tools/test/channel.rs b/cli/tools/test/channel.rs
index 68633b17e62b18..057cc9895d24ea 100644
--- a/cli/tools/test/channel.rs
+++ b/cli/tools/test/channel.rs
@@ -18,7 +18,6 @@ use deno_runtime::deno_io::pipe;
 use deno_runtime::deno_io::AsyncPipeRead;
 use deno_runtime::deno_io::PipeRead;
 use deno_runtime::deno_io::PipeWrite;
-use memmem::Searcher;
 use tokio::io::AsyncRead;
 use tokio::io::AsyncReadExt;
 use tokio::io::ReadBuf;
@@ -222,10 +221,11 @@ impl TestStream {
           // from before. There's still a possibility that the marker could be split because of a pipe
           // buffer that fills up, forcing the flush to be written across two writes and interleaving
           // data between, but that's a risk we take with this sync marker approach.
-          let searcher = memmem::TwoWaySearcher::new(HALF_SYNC_MARKER);
           let start =
             (flush.len() - read).saturating_sub(HALF_SYNC_MARKER.len());
-          if let Some(offset) = searcher.search_in(&flush[start..]) {
+          if let Some(offset) =
+            memchr::memmem::find(&flush[start..], HALF_SYNC_MARKER)
+          {
             flush.truncate(offset);
             // Try to send our flushed buffer. If the channel is closed, this stream will
             // be marked as not alive.
diff --git a/ext/http/Cargo.toml b/ext/http/Cargo.toml
index 38003d01ae97aa..18476a49c0abd7 100644
--- a/ext/http/Cargo.toml
+++ b/ext/http/Cargo.toml
@@ -42,7 +42,7 @@ hyper.workspace = true
 hyper-util.workspace = true
 hyper_v014 = { workspace = true, features = ["server", "stream", "http1", "http2", "runtime"] }
 itertools.workspace = true
-memmem.workspace = true
+memchr.workspace = true
 mime.workspace = true
 once_cell.workspace = true
 percent-encoding.workspace = true
diff --git a/ext/http/websocket_upgrade.rs b/ext/http/websocket_upgrade.rs
index 8a2e524399ee7d..306899ae7ed962 100644
--- a/ext/http/websocket_upgrade.rs
+++ b/ext/http/websocket_upgrade.rs
@@ -8,8 +8,6 @@ use httparse::Status;
 use hyper::header::HeaderName;
 use hyper::header::HeaderValue;
 use hyper::Response;
-use memmem::Searcher;
-use memmem::TwoWaySearcher;
 use once_cell::sync::OnceCell;
 
 #[derive(Debug, thiserror::Error, deno_error::JsError)]
@@ -81,8 +79,8 @@ enum WebSocketUpgradeState {
   Complete,
 }
 
-static HEADER_SEARCHER: OnceCell<TwoWaySearcher> = OnceCell::new();
-static HEADER_SEARCHER2: OnceCell<TwoWaySearcher> = OnceCell::new();
+static HEADER_SEARCHER: OnceCell<memchr::memmem::Finder> = OnceCell::new();
+static HEADER_SEARCHER2: OnceCell<memchr::memmem::Finder> = OnceCell::new();
 
 #[derive(Default)]
 pub struct WebSocketUpgrade<T: Default> {
@@ -155,12 +153,12 @@ impl<T: Default> WebSocketUpgrade<T> {
       }
       Headers => {
         self.buf.extend_from_slice(bytes);
-        let header_searcher =
-          HEADER_SEARCHER.get_or_init(|| TwoWaySearcher::new(b"\r\n\r\n"));
+        let header_searcher = HEADER_SEARCHER
+          .get_or_init(|| memchr::memmem::Finder::new(b"\r\n\r\n"));
         let header_searcher2 =
-          HEADER_SEARCHER2.get_or_init(|| TwoWaySearcher::new(b"\n\n"));
-        if header_searcher.search_in(&self.buf).is_some()
-          || header_searcher2.search_in(&self.buf).is_some()
+          HEADER_SEARCHER2.get_or_init(|| memchr::memmem::Finder::new(b"\n\n"));
+        if header_searcher.find(&self.buf).is_some()
+          || header_searcher2.find(&self.buf).is_some()
         {
           let (index, response) = parse_response(&self.buf)?;
           let mut buf = std::mem::take(&mut self.buf);

From 1516e3ef58c6f9cd30d7f2a1aed1320de9e79572 Mon Sep 17 00:00:00 2001
From: Paolo Barbolini <paolo@paolo565.org>
Date: Mon, 17 Mar 2025 15:14:19 +0100
Subject: [PATCH 093/115] refactor: reduce dependency on `futures` crate
 (#28515)

Over time many `futures` APIs have been stabilized in `std`. This
migrates most uses to the std variants.
---
 cli/cache/mod.rs                              | 11 ++++-------
 cli/module_loader.rs                          |  2 +-
 cli/task_runner.rs                            | 13 ++++++-------
 cli/tools/test/channel.rs                     |  2 +-
 cli/util/file_watcher.rs                      |  2 +-
 cli/util/sync/task_queue.rs                   |  2 +-
 ext/cache/sqlite.rs                           |  3 ++-
 ext/cron/local.rs                             |  2 +-
 ext/fetch/lib.rs                              |  2 +-
 ext/http/http_next.rs                         |  2 +-
 ext/http/lib.rs                               |  6 +++---
 ext/http/network_buffered_stream.rs           |  4 ++--
 ext/http/response_body.rs                     |  5 ++---
 ext/http/service.rs                           |  2 +-
 ext/net/quic.rs                               |  6 +++---
 ext/node/ops/http.rs                          |  2 +-
 ext/node/ops/http2.rs                         |  2 +-
 ext/tls/tls_key.rs                            |  2 +-
 ext/web/message_port.rs                       |  2 +-
 ext/web/stream_resource.rs                    |  2 +-
 runtime/inspector_server.rs                   |  2 +-
 tests/util/server/src/servers/hyper_utils.rs  |  2 +-
 tests/util/server/src/servers/npm_registry.rs |  2 +-
 tests/util/server/src/servers/ws.rs           |  4 ++--
 24 files changed, 40 insertions(+), 44 deletions(-)

diff --git a/cli/cache/mod.rs b/cli/cache/mod.rs
index 80e9ab40ae16de..4cf0cef604575c 100644
--- a/cli/cache/mod.rs
+++ b/cli/cache/mod.rs
@@ -8,7 +8,6 @@ use deno_ast::MediaType;
 use deno_cache_dir::file_fetcher::CacheSetting;
 use deno_cache_dir::file_fetcher::FetchNoFollowErrorKind;
 use deno_cache_dir::file_fetcher::FileOrRedirect;
-use deno_core::futures;
 use deno_core::futures::FutureExt;
 use deno_core::ModuleSpecifier;
 use deno_graph::source::CacheInfo;
@@ -158,7 +157,7 @@ impl Loader for FetchCacher {
         &self.sys, specifier,
       );
       if self.in_npm_pkg_checker.in_npm_package(&specifier) {
-        return Box::pin(futures::future::ready(Ok(Some(
+        return Box::pin(std::future::ready(Ok(Some(
           LoadResponse::External { specifier },
         ))));
       }
@@ -170,11 +169,9 @@ impl Loader for FetchCacher {
     {
       // mark non-JSR remote modules as external so we don't need --allow-import
       // permissions as these will error out later when publishing
-      return Box::pin(futures::future::ready(Ok(Some(
-        LoadResponse::External {
-          specifier: specifier.clone(),
-        },
-      ))));
+      return Box::pin(std::future::ready(Ok(Some(LoadResponse::External {
+        specifier: specifier.clone(),
+      }))));
     }
 
     let file_fetcher = self.file_fetcher.clone();
diff --git a/cli/module_loader.rs b/cli/module_loader.rs
index 41adc93e6a55b0..b62a0b8a0d3282 100644
--- a/cli/module_loader.rs
+++ b/cli/module_loader.rs
@@ -3,6 +3,7 @@
 use std::borrow::Cow;
 use std::cell::RefCell;
 use std::collections::HashMap;
+use std::future::Future;
 use std::path::Path;
 use std::path::PathBuf;
 use std::pin::Pin;
@@ -21,7 +22,6 @@ use deno_core::error::ModuleLoaderError;
 use deno_core::futures::future::FutureExt;
 use deno_core::futures::io::BufReader;
 use deno_core::futures::stream::FuturesOrdered;
-use deno_core::futures::Future;
 use deno_core::futures::StreamExt;
 use deno_core::parking_lot::Mutex;
 use deno_core::resolve_url;
diff --git a/cli/task_runner.rs b/cli/task_runner.rs
index 14e850ee76f733..20e77353ecb475 100644
--- a/cli/task_runner.rs
+++ b/cli/task_runner.rs
@@ -8,7 +8,6 @@ use std::rc::Rc;
 use deno_ast::MediaType;
 use deno_core::anyhow::Context;
 use deno_core::error::AnyError;
-use deno_core::futures;
 use deno_core::futures::future::LocalBoxFuture;
 use deno_semver::package::PackageNv;
 use deno_task_shell::ExecutableCommand;
@@ -246,9 +245,9 @@ impl ShellCommand for NpmCommand {
       Ok(path) => path,
       Err(err) => {
         let _ = context.stderr.write_line(&format!("{}", err));
-        return Box::pin(futures::future::ready(
-          ExecuteResult::from_exit_code(err.exit_code()),
-        ));
+        return Box::pin(std::future::ready(ExecuteResult::from_exit_code(
+          err.exit_code(),
+        )));
       }
     };
     ExecutableCommand::new("npm".to_string(), npm_path).execute(context)
@@ -337,7 +336,7 @@ impl ShellCommand for NpxCommand {
           Ok(npx) => npx,
           Err(err) => {
             let _ = context.stderr.write_line(&format!("{}", err));
-            return Box::pin(futures::future::ready(
+            return Box::pin(std::future::ready(
               ExecuteResult::from_exit_code(err.exit_code()),
             ));
           }
@@ -346,7 +345,7 @@ impl ShellCommand for NpxCommand {
       }
     } else {
       let _ = context.stderr.write_line("npx: missing command");
-      Box::pin(futures::future::ready(ExecuteResult::from_exit_code(1)))
+      Box::pin(std::future::ready(ExecuteResult::from_exit_code(1)))
     }
   }
 }
@@ -621,7 +620,7 @@ async fn listen_and_forward_all_signals(kill_signal: KillSignal) {
       .boxed_local(),
     )
   }
-  futures::future::join_all(futures).await;
+  deno_core::futures::future::join_all(futures).await;
 }
 
 #[cfg(test)]
diff --git a/cli/tools/test/channel.rs b/cli/tools/test/channel.rs
index 057cc9895d24ea..c696671bd45bcb 100644
--- a/cli/tools/test/channel.rs
+++ b/cli/tools/test/channel.rs
@@ -1,6 +1,7 @@
 // Copyright 2018-2025 the Deno authors. MIT license.
 
 use std::fmt::Display;
+use std::future::poll_fn;
 use std::future::Future;
 use std::io::Write;
 use std::pin::Pin;
@@ -10,7 +11,6 @@ use std::task::ready;
 use std::task::Poll;
 use std::time::Duration;
 
-use deno_core::futures::future::poll_fn;
 use deno_core::parking_lot;
 use deno_core::parking_lot::lock_api::RawMutex;
 use deno_core::parking_lot::lock_api::RawMutexTimed;
diff --git a/cli/util/file_watcher.rs b/cli/util/file_watcher.rs
index 20de748b4a7d4e..cb746e095e317b 100644
--- a/cli/util/file_watcher.rs
+++ b/cli/util/file_watcher.rs
@@ -2,6 +2,7 @@
 
 use std::cell::RefCell;
 use std::collections::HashSet;
+use std::future::Future;
 use std::io::IsTerminal;
 use std::path::PathBuf;
 use std::rc::Rc;
@@ -11,7 +12,6 @@ use std::time::Duration;
 use deno_config::glob::PathOrPatternSet;
 use deno_core::error::AnyError;
 use deno_core::error::CoreError;
-use deno_core::futures::Future;
 use deno_core::futures::FutureExt;
 use deno_core::parking_lot::Mutex;
 use deno_lib::util::result::any_and_jserrorbox_downcast_ref;
diff --git a/cli/util/sync/task_queue.rs b/cli/util/sync/task_queue.rs
index 4155b67f96ab04..816f89378709e8 100644
--- a/cli/util/sync/task_queue.rs
+++ b/cli/util/sync/task_queue.rs
@@ -1,10 +1,10 @@
 // Copyright 2018-2025 the Deno authors. MIT license.
 
 use std::collections::LinkedList;
+use std::future::Future;
 use std::sync::Arc;
 
 use deno_core::futures::task::AtomicWaker;
-use deno_core::futures::Future;
 use deno_core::parking_lot::Mutex;
 
 use super::AtomicFlag;
diff --git a/ext/cache/sqlite.rs b/ext/cache/sqlite.rs
index 37463316cf6c2f..30943581b5dd0a 100644
--- a/ext/cache/sqlite.rs
+++ b/ext/cache/sqlite.rs
@@ -1,4 +1,6 @@
 // Copyright 2018-2025 the Deno authors. MIT license.
+
+use std::future::poll_fn;
 use std::path::PathBuf;
 use std::pin::Pin;
 use std::rc::Rc;
@@ -6,7 +8,6 @@ use std::sync::Arc;
 use std::time::SystemTime;
 use std::time::UNIX_EPOCH;
 
-use deno_core::futures::future::poll_fn;
 use deno_core::parking_lot::Mutex;
 use deno_core::unsync::spawn_blocking;
 use deno_core::BufMutView;
diff --git a/ext/cron/local.rs b/ext/cron/local.rs
index d6213a7e36e05f..ab182836058831 100644
--- a/ext/cron/local.rs
+++ b/ext/cron/local.rs
@@ -94,7 +94,7 @@ impl LocalCronHandler {
         if let Some(delta) = earliest_deadline.checked_sub(now) {
           tokio::time::sleep(std::time::Duration::from_millis(delta)).boxed()
         } else {
-          futures::future::ready(()).boxed()
+          std::future::ready(()).boxed()
         }
       } else {
         futures::future::pending().boxed()
diff --git a/ext/fetch/lib.rs b/ext/fetch/lib.rs
index 6cace8abc90cb6..d955549ff16d68 100644
--- a/ext/fetch/lib.rs
+++ b/ext/fetch/lib.rs
@@ -11,6 +11,7 @@ use std::cell::RefCell;
 use std::cmp::min;
 use std::convert::From;
 use std::future;
+use std::future::Future;
 use std::path::Path;
 use std::pin::Pin;
 use std::rc::Rc;
@@ -23,7 +24,6 @@ use bytes::Bytes;
 pub use data_url;
 use data_url::DataUrl;
 use deno_core::futures::stream::Peekable;
-use deno_core::futures::Future;
 use deno_core::futures::FutureExt;
 use deno_core::futures::Stream;
 use deno_core::futures::StreamExt;
diff --git a/ext/http/http_next.rs b/ext/http/http_next.rs
index 4b3d55a142e5db..12813e42ac7ede 100644
--- a/ext/http/http_next.rs
+++ b/ext/http/http_next.rs
@@ -2,6 +2,7 @@
 use std::borrow::Cow;
 use std::cell::RefCell;
 use std::ffi::c_void;
+use std::future::poll_fn;
 use std::future::Future;
 use std::io;
 use std::pin::Pin;
@@ -10,7 +11,6 @@ use std::rc::Rc;
 
 use cache_control::CacheControl;
 use deno_core::external;
-use deno_core::futures::future::poll_fn;
 use deno_core::futures::TryFutureExt;
 use deno_core::op2;
 use deno_core::serde_v8::from_v8;
diff --git a/ext/http/lib.rs b/ext/http/lib.rs
index d421c2de1544fe..4f4c83d8ef8046 100644
--- a/ext/http/lib.rs
+++ b/ext/http/lib.rs
@@ -4,7 +4,9 @@ use std::borrow::Cow;
 use std::cell::RefCell;
 use std::cmp::min;
 use std::error::Error;
+use std::future::pending;
 use std::future::Future;
+use std::future::Pending;
 use std::io;
 use std::io::Write;
 use std::mem::replace;
@@ -13,6 +15,7 @@ use std::pin::pin;
 use std::pin::Pin;
 use std::rc::Rc;
 use std::sync::Arc;
+use std::task::ready;
 use std::task::Context;
 use std::task::Poll;
 
@@ -24,14 +27,11 @@ use base64::Engine;
 use cache_control::CacheControl;
 use deno_core::futures::channel::mpsc;
 use deno_core::futures::channel::oneshot;
-use deno_core::futures::future::pending;
 use deno_core::futures::future::select;
 use deno_core::futures::future::Either;
-use deno_core::futures::future::Pending;
 use deno_core::futures::future::RemoteHandle;
 use deno_core::futures::future::Shared;
 use deno_core::futures::never::Never;
-use deno_core::futures::ready;
 use deno_core::futures::stream::Peekable;
 use deno_core::futures::FutureExt;
 use deno_core::futures::StreamExt;
diff --git a/ext/http/network_buffered_stream.rs b/ext/http/network_buffered_stream.rs
index 5882dd14e325ba..fc3a2ec8c60411 100644
--- a/ext/http/network_buffered_stream.rs
+++ b/ext/http/network_buffered_stream.rs
@@ -1,13 +1,13 @@
 // Copyright 2018-2025 the Deno authors. MIT license.
 
+use std::future::poll_fn;
 use std::io;
 use std::mem::MaybeUninit;
 use std::pin::Pin;
+use std::task::ready;
 use std::task::Poll;
 
 use bytes::Bytes;
-use deno_core::futures::future::poll_fn;
-use deno_core::futures::ready;
 use tokio::io::AsyncRead;
 use tokio::io::AsyncWrite;
 use tokio::io::ReadBuf;
diff --git a/ext/http/response_body.rs b/ext/http/response_body.rs
index 6960e7c0fb3dde..1571ce557cd441 100644
--- a/ext/http/response_body.rs
+++ b/ext/http/response_body.rs
@@ -2,6 +2,7 @@
 use std::io::Write;
 use std::pin::Pin;
 use std::rc::Rc;
+use std::task::ready;
 
 use brotli::enc::encode::BrotliEncoderOperation;
 use brotli::enc::encode::BrotliEncoderParameter;
@@ -9,7 +10,6 @@ use brotli::enc::encode::BrotliEncoderStateStruct;
 use brotli::writer::StandardAlloc;
 use bytes::Bytes;
 use bytes::BytesMut;
-use deno_core::futures::ready;
 use deno_core::futures::FutureExt;
 use deno_core::AsyncResult;
 use deno_core::BufView;
@@ -575,12 +575,11 @@ impl PollFrame for BrotliResponseStream {
 #[allow(clippy::print_stderr)]
 #[cfg(test)]
 mod tests {
+  use std::future::poll_fn;
   use std::hash::Hasher;
   use std::io::Read;
   use std::io::Write;
 
-  use deno_core::futures::future::poll_fn;
-
   use super::*;
 
   fn zeros() -> Vec<u8> {
diff --git a/ext/http/service.rs b/ext/http/service.rs
index 9a018005881e53..1a11ab26e59418 100644
--- a/ext/http/service.rs
+++ b/ext/http/service.rs
@@ -9,11 +9,11 @@ use std::future::Future;
 use std::mem::ManuallyDrop;
 use std::pin::Pin;
 use std::rc::Rc;
+use std::task::ready;
 use std::task::Context;
 use std::task::Poll;
 use std::task::Waker;
 
-use deno_core::futures::ready;
 use deno_core::BufView;
 use deno_core::OpState;
 use deno_core::ResourceId;
diff --git a/ext/net/quic.rs b/ext/net/quic.rs
index 29176da221b909..281133a11bf7c7 100644
--- a/ext/net/quic.rs
+++ b/ext/net/quic.rs
@@ -15,10 +15,10 @@ use std::sync::atomic::Ordering;
 use std::sync::Arc;
 use std::task::Context;
 use std::task::Poll;
+use std::task::Waker;
 use std::time::Duration;
 
 use deno_core::error::ResourceError;
-use deno_core::futures::task::noop_waker_ref;
 use deno_core::op2;
 use deno_core::AsyncRefCell;
 use deno_core::AsyncResult;
@@ -820,7 +820,7 @@ pub(crate) async fn op_quic_connection_open_bi(
   let (tx, rx) = if wait_for_available {
     connection.0.open_bi().await?
   } else {
-    let waker = noop_waker_ref();
+    let waker = Waker::noop();
     let mut cx = Context::from_waker(waker);
     match pin!(connection.0.open_bi()).poll(&mut cx) {
       Poll::Ready(r) => r?,
@@ -869,7 +869,7 @@ pub(crate) async fn op_quic_connection_open_uni(
   let tx = if wait_for_available {
     connection.0.open_uni().await?
   } else {
-    let waker = noop_waker_ref();
+    let waker = Waker::noop();
     let mut cx = Context::from_waker(waker);
     match pin!(connection.0.open_uni()).poll(&mut cx) {
       Poll::Ready(r) => r?,
diff --git a/ext/node/ops/http.rs b/ext/node/ops/http.rs
index 1da630f97edebd..c9bcb9403ba540 100644
--- a/ext/node/ops/http.rs
+++ b/ext/node/ops/http.rs
@@ -4,6 +4,7 @@ use std::borrow::Cow;
 use std::cell::RefCell;
 use std::cmp::min;
 use std::fmt::Debug;
+use std::future::Future;
 use std::pin::Pin;
 use std::rc::Rc;
 use std::task::Context;
@@ -13,7 +14,6 @@ use bytes::Bytes;
 use deno_core::error::ResourceError;
 use deno_core::futures::channel::mpsc;
 use deno_core::futures::stream::Peekable;
-use deno_core::futures::Future;
 use deno_core::futures::FutureExt;
 use deno_core::futures::Stream;
 use deno_core::futures::StreamExt;
diff --git a/ext/node/ops/http2.rs b/ext/node/ops/http2.rs
index 2308ca82540ec0..19637e38fe1385 100644
--- a/ext/node/ops/http2.rs
+++ b/ext/node/ops/http2.rs
@@ -3,12 +3,12 @@
 use std::borrow::Cow;
 use std::cell::RefCell;
 use std::collections::HashMap;
+use std::future::poll_fn;
 use std::rc::Rc;
 use std::task::Poll;
 
 use bytes::Bytes;
 use deno_core::error::ResourceError;
-use deno_core::futures::future::poll_fn;
 use deno_core::op2;
 use deno_core::serde::Serialize;
 use deno_core::AsyncRefCell;
diff --git a/ext/tls/tls_key.rs b/ext/tls/tls_key.rs
index dfd2863e5edbc6..43e6a4e6291c76 100644
--- a/ext/tls/tls_key.rs
+++ b/ext/tls/tls_key.rs
@@ -14,13 +14,13 @@
 use std::cell::RefCell;
 use std::collections::HashMap;
 use std::fmt::Debug;
+use std::future::poll_fn;
 use std::future::ready;
 use std::future::Future;
 use std::io::ErrorKind;
 use std::rc::Rc;
 use std::sync::Arc;
 
-use deno_core::futures::future::poll_fn;
 use deno_core::futures::future::Either;
 use deno_core::futures::FutureExt;
 use deno_core::unsync::spawn;
diff --git a/ext/web/message_port.rs b/ext/web/message_port.rs
index 3d656fdea20cc7..b97d4de3864712 100644
--- a/ext/web/message_port.rs
+++ b/ext/web/message_port.rs
@@ -2,6 +2,7 @@
 
 use std::borrow::Cow;
 use std::cell::RefCell;
+use std::future::poll_fn;
 use std::rc::Rc;
 
 use deno_core::op2;
@@ -12,7 +13,6 @@ use deno_core::OpState;
 use deno_core::RcRef;
 use deno_core::Resource;
 use deno_core::ResourceId;
-use futures::future::poll_fn;
 use serde::Deserialize;
 use serde::Serialize;
 use tokio::sync::mpsc::error::TryRecvError;
diff --git a/ext/web/stream_resource.rs b/ext/web/stream_resource.rs
index edc842ff4d38d5..d554acd86552f9 100644
--- a/ext/web/stream_resource.rs
+++ b/ext/web/stream_resource.rs
@@ -3,6 +3,7 @@ use std::borrow::Cow;
 use std::cell::RefCell;
 use std::cell::RefMut;
 use std::ffi::c_void;
+use std::future::poll_fn;
 use std::future::Future;
 use std::marker::PhantomData;
 use std::mem::MaybeUninit;
@@ -28,7 +29,6 @@ use deno_core::RcLike;
 use deno_core::RcRef;
 use deno_core::Resource;
 use deno_core::ResourceId;
-use futures::future::poll_fn;
 use futures::TryFutureExt;
 
 #[derive(Debug, thiserror::Error, deno_error::JsError)]
diff --git a/runtime/inspector_server.rs b/runtime/inspector_server.rs
index cf043c97ace378..2c0f766b3cc1c3 100644
--- a/runtime/inspector_server.rs
+++ b/runtime/inspector_server.rs
@@ -8,6 +8,7 @@ use std::net::SocketAddr;
 use std::pin::pin;
 use std::process;
 use std::rc::Rc;
+use std::task::Poll;
 use std::thread;
 
 use deno_core::futures::channel::mpsc;
@@ -18,7 +19,6 @@ use deno_core::futures::future;
 use deno_core::futures::prelude::*;
 use deno_core::futures::select;
 use deno_core::futures::stream::StreamExt;
-use deno_core::futures::task::Poll;
 use deno_core::serde_json;
 use deno_core::serde_json::json;
 use deno_core::serde_json::Value;
diff --git a/tests/util/server/src/servers/hyper_utils.rs b/tests/util/server/src/servers/hyper_utils.rs
index 843d0bfec26407..c063868c37da69 100644
--- a/tests/util/server/src/servers/hyper_utils.rs
+++ b/tests/util/server/src/servers/hyper_utils.rs
@@ -1,13 +1,13 @@
 // Copyright 2018-2025 the Deno authors. MIT license.
 
 use std::convert::Infallible;
+use std::future::Future;
 use std::io;
 use std::net::SocketAddr;
 use std::pin::Pin;
 use std::result::Result;
 
 use bytes::Bytes;
-use futures::Future;
 use futures::FutureExt;
 use futures::Stream;
 use futures::StreamExt;
diff --git a/tests/util/server/src/servers/npm_registry.rs b/tests/util/server/src/servers/npm_registry.rs
index e2c1ceb5e869e1..1afca1329fefb0 100644
--- a/tests/util/server/src/servers/npm_registry.rs
+++ b/tests/util/server/src/servers/npm_registry.rs
@@ -1,6 +1,7 @@
 // Copyright 2018-2025 the Deno authors. MIT license.
 
 use std::convert::Infallible;
+use std::future::Future;
 use std::net::Ipv6Addr;
 use std::net::SocketAddr;
 use std::net::SocketAddrV6;
@@ -8,7 +9,6 @@ use std::path::PathBuf;
 
 use bytes::Bytes;
 use futures::future::LocalBoxFuture;
-use futures::Future;
 use futures::FutureExt;
 use http_body_util::combinators::UnsyncBoxBody;
 use hyper::body::Incoming;
diff --git a/tests/util/server/src/servers/ws.rs b/tests/util/server/src/servers/ws.rs
index 2b9189f3e127ed..783d39f31bff69 100644
--- a/tests/util/server/src/servers/ws.rs
+++ b/tests/util/server/src/servers/ws.rs
@@ -1,5 +1,7 @@
 // Copyright 2018-2025 the Deno authors. MIT license.
 
+use std::future::poll_fn;
+use std::future::Future;
 use std::pin::Pin;
 use std::result::Result;
 
@@ -11,8 +13,6 @@ use fastwebsockets::OpCode;
 use fastwebsockets::Role;
 use fastwebsockets::WebSocket;
 use futures::future::join3;
-use futures::future::poll_fn;
-use futures::Future;
 use futures::StreamExt;
 use h2::server::Handshake;
 use h2::server::SendResponse;

From e95938122e1165389c7aa44c0f7807c213e4c0d6 Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Mon, 17 Mar 2025 17:07:55 -0400
Subject: [PATCH 094/115] fix(doc): do not stack overflow for namespace that
 exports self or ancestor (#28533)

---
 Cargo.lock | 4 ++--
 Cargo.toml | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index d3ed72ac75e072..9f941cc728936d 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1874,9 +1874,9 @@ dependencies = [
 
 [[package]]
 name = "deno_doc"
-version = "0.169.0"
+version = "0.169.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fdbba1beab09de9eff58c54ec8f0abf2340f30de00ac511ad73067ff97883ce"
+checksum = "6bcf13d7637f5eb22952319b9477ae21f2497e3e34823394794cf12266e8493c"
 dependencies = [
  "anyhow",
  "cfg-if",
diff --git a/Cargo.toml b/Cargo.toml
index c9a15442c18a8c..d3bb0f2c8f4559 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -55,7 +55,7 @@ deno_core = { version = "0.340.0" }
 
 deno_bench_util = { version = "0.189.0", path = "./bench_util" }
 deno_config = { version = "=0.50.0", features = ["workspace"] }
-deno_doc = "=0.169.0"
+deno_doc = "=0.169.1"
 deno_graph = "=0.89.2"
 deno_lint = "=0.74.0"
 deno_lockfile = "=0.24.0"

From 8f7d56cf400850c99cc385777ec4b5b5bf6991dd Mon Sep 17 00:00:00 2001
From: Yoshiya Hinosawa <stibium121@gmail.com>
Date: Tue, 18 Mar 2025 21:57:04 +0900
Subject: [PATCH 095/115] chore: upgrade node test to v23.9.0 (#28458)

---
 tests/node_compat/config.jsonc                |   91 +-
 tests/node_compat/runner/TODO.md              | 5414 +++++++++--------
 tests/node_compat/runner/suite                |    2 +-
 .../test/abort/test-addon-uv-handle-leak.js   |    2 +-
 .../benchmark/test-benchmark-async-hooks.js   |    2 +-
 .../test/benchmark/test-benchmark-http.js     |    2 +-
 .../test/benchmark/test-benchmark-http2.js    |    2 +-
 .../test/benchmark/test-benchmark-tls.js      |    2 +-
 .../test/benchmark/test-benchmark-worker.js   |    2 +-
 .../node_compat/test/common/child_process.js  |   35 +-
 tests/node_compat/test/common/countdown.js    |    2 +-
 tests/node_compat/test/common/dns.js          |   35 +-
 tests/node_compat/test/common/fixtures.js     |   23 +-
 tests/node_compat/test/common/hijackstdio.js  |    2 +-
 tests/node_compat/test/common/index.mjs       |   30 +-
 tests/node_compat/test/common/tmpdir.js       |   29 +-
 .../es-module/test-cjs-prototype-pollution.js |    2 +-
 .../test-esm-dynamic-import-mutating-fs.js    |    2 +-
 .../test-esm-loader-cache-clearing.js         |    2 +-
 .../test/es-module/test-esm-windows.js        |    2 +-
 .../test-vm-compile-function-lineoffset.js    |    2 +-
 .../test/fixtures/GH-1899-output.js           |    2 +-
 tests/node_compat/test/fixtures/a.js          |    2 +-
 .../test/fixtures/child-process-persistent.js |    2 +-
 .../child_process_should_emit_error.js        |    2 +-
 tests/node_compat/test/fixtures/exit.js       |    2 +-
 tests/node_compat/test/fixtures/loop.js       |    2 +-
 .../fixtures/parent-process-nonpersistent.js  |    2 +-
 .../node_compat/test/fixtures/print-chars.js  |    2 +-
 .../test/internet/test-dns-idna2008.js        |    2 +-
 .../test/internet/test-dns-lookup.js          |    2 +-
 .../internet/test-dns-promises-resolve.js     |    2 +-
 .../test/internet/test-dns-regress-6244.js    |    2 +-
 ...t-dns-setserver-in-callback-of-resolve4.js |    2 +-
 .../internet/test-http-https-default-ports.js |    2 +-
 .../node_compat/test/message/eval_messages.js |   60 -
 .../test/message/max_tick_depth.js            |    2 +-
 .../test/message/stdin_messages.js            |   61 -
 .../test/message/util_inspect_error.js        |    2 +-
 .../test/parallel/test-assert-async.js        |    2 +-
 .../parallel/test-assert-strict-exists.js     |   13 -
 ...oks-run-in-async-scope-caught-exception.js |    2 +-
 ...async-hooks-run-in-async-scope-this-arg.js |    2 +-
 .../parallel/test-async-local-storage-bind.js |    2 +-
 .../test-async-local-storage-contexts.js      |    2 +-
 .../test-async-local-storage-deep-stack.js    |    2 +-
 ...t-async-local-storage-http-multiclients.js |    2 +-
 .../test-async-local-storage-snapshot.js      |    2 +-
 .../test/parallel/test-atomics-wake.js        |    2 +-
 .../test/parallel/test-bad-unicode.js         |    2 +-
 .../parallel/test-beforeexit-event-exit.js    |    2 +-
 .../parallel/test-blob-buffer-too-large.js    |   31 -
 .../test/parallel/test-btoa-atob.js           |    2 +-
 .../test/parallel/test-buffer-ascii.js        |    2 +-
 .../test/parallel/test-buffer-badhex.js       |    2 +-
 .../test/parallel/test-buffer-bigint64.js     |    2 +-
 .../test/parallel/test-buffer-bytelength.js   |    2 +-
 .../parallel/test-buffer-compare-offset.js    |    2 +-
 .../test/parallel/test-buffer-concat.js       |    2 +-
 .../test/parallel/test-buffer-constants.js    |    2 +-
 .../test/parallel/test-buffer-copy.js         |    2 +-
 .../test/parallel/test-buffer-equals.js       |    2 +-
 .../test-buffer-failed-alloc-typed-arrays.js  |    4 +-
 .../test/parallel/test-buffer-fakes.js        |    2 +-
 .../test/parallel/test-buffer-inheritance.js  |    2 +-
 .../test/parallel/test-buffer-isascii.js      |    2 +-
 .../test/parallel/test-buffer-isencoding.js   |    2 +-
 .../test/parallel/test-buffer-isutf8.js       |    2 +-
 .../test/parallel/test-buffer-iterator.js     |    2 +-
 .../test/parallel/test-buffer-new.js          |    2 +-
 .../test-buffer-no-negative-allocation.js     |    2 +-
 .../parallel/test-buffer-nopendingdep-map.js  |    2 +-
 .../parallel/test-buffer-of-no-deprecation.js |    2 +-
 .../parallel/test-buffer-over-max-length.js   |    2 +-
 .../parallel/test-buffer-parent-property.js   |    2 +-
 .../test/parallel/test-buffer-read.js         |    2 +-
 .../test/parallel/test-buffer-readdouble.js   |    2 +-
 .../test/parallel/test-buffer-readfloat.js    |    2 +-
 .../test/parallel/test-buffer-readint.js      |    2 +-
 .../test/parallel/test-buffer-readuint.js     |    2 +-
 .../test/parallel/test-buffer-safe-unsafe.js  |    2 +-
 .../parallel/test-buffer-sharedarraybuffer.js |    2 +-
 .../test/parallel/test-buffer-slice.js        |    2 +-
 .../test/parallel/test-buffer-slow.js         |   10 +-
 .../test/parallel/test-buffer-swap.js         |    2 +-
 .../test/parallel/test-buffer-tojson.js       |    2 +-
 .../test-buffer-tostring-rangeerror.js        |    2 +-
 .../test/parallel/test-buffer-tostring.js     |    2 +-
 .../test/parallel/test-buffer-writedouble.js  |    2 +-
 .../test/parallel/test-buffer-writefloat.js   |    2 +-
 .../test/parallel/test-buffer-writeint.js     |    2 +-
 .../test/parallel/test-buffer-writeuint.js    |    2 +-
 .../parallel/test-buffer-zero-fill-cli.js     |    2 +-
 .../parallel/test-buffer-zero-fill-reset.js   |    2 +-
 .../test/parallel/test-buffer-zero-fill.js    |    2 +-
 .../test-child-process-default-options.js     |    2 +-
 .../parallel/test-child-process-detached.js   |    2 +-
 .../test-child-process-double-pipe.js         |    2 +-
 .../parallel/test-child-process-exec-cwd.js   |    2 +-
 .../parallel/test-child-process-exec-env.js   |    2 +-
 .../parallel/test-child-process-exec-error.js |    2 +-
 .../test-child-process-exec-kill-throws.js    |    2 +-
 ...-process-exec-stdout-stderr-data-string.js |    2 +-
 .../test-child-process-execfile-maxbuf.js     |    2 +-
 .../test-child-process-execfilesync-maxbuf.js |    2 +-
 .../parallel/test-child-process-exit-code.js  |    2 +-
 .../test-child-process-flush-stdio.js         |    2 +-
 .../test/parallel/test-child-process-fork3.js |    2 +-
 .../test-child-process-ipc-next-tick.js       |    2 +-
 .../test/parallel/test-child-process-ipc.js   |    2 +-
 .../test-child-process-set-blocking.js        |    2 +-
 .../parallel/test-child-process-spawn-args.js |    2 +-
 .../test-child-process-spawn-event.js         |    2 +-
 .../test-child-process-spawnsync-args.js      |    2 +-
 .../test-child-process-spawnsync-env.js       |    2 +-
 .../test-child-process-spawnsync-maxbuf.js    |    2 +-
 ...ild-process-spawnsync-validation-errors.js |    2 +-
 .../parallel/test-child-process-spawnsync.js  |    2 +-
 .../parallel/test-child-process-stdin-ipc.js  |    2 +-
 .../test-child-process-stdio-inherit.js       |    2 +-
 .../test-child-process-stdio-overlapped.js    |    2 +-
 .../test-child-process-stdout-flush-exit.js   |    2 +-
 .../test-child-process-stdout-flush.js        |    2 +-
 .../parallel/test-client-request-destroy.js   |    2 +-
 .../test-cluster-uncaught-exception.js        |    2 +-
 .../parallel/test-console-assign-undefined.js |   18 +-
 .../test-console-async-write-error.js         |    2 +-
 .../test/parallel/test-console-group.js       |    2 +-
 .../test-console-log-stdio-broken-dest.js     |    2 +-
 .../test-console-log-throw-primitive.js       |    2 +-
 .../test-console-no-swallow-stack-overflow.js |    2 +-
 .../test-console-not-call-toString.js         |    2 +-
 .../test/parallel/test-console-self-assign.js |    4 +-
 .../parallel/test-console-sync-write-error.js |    2 +-
 .../test/parallel/test-console-table.js       |    2 +-
 .../test/parallel/test-crypto-dh-shared.js    |    2 +-
 .../test/parallel/test-crypto-domain.js       |    2 +-
 .../test/parallel/test-crypto-from-binary.js  |    2 +-
 .../parallel/test-crypto-keygen-dh-classic.js |    2 +-
 ...ypto-keygen-duplicate-deprecated-option.js |    2 +-
 ...crypto-keygen-empty-passphrase-no-error.js |    2 +-
 .../test-crypto-keygen-key-objects.js         |    2 +-
 ...pto-keygen-non-standard-public-exponent.js |    2 +-
 .../test-crypto-keygen-rfc8017-9-1.js         |    2 +-
 .../test-crypto-keygen-rfc8017-a-2-3.js       |    2 +-
 .../test-crypto-lazy-transform-writable.js    |    2 +-
 .../test-crypto-op-during-process-exit.js     |    2 +-
 .../parallel/test-crypto-padding-aes256.js    |    2 +-
 .../test-crypto-psychic-signatures.js         |    2 +-
 .../test-crypto-randomfillsync-regression.js  |    2 +-
 .../parallel/test-crypto-secret-keygen.js     |    2 +-
 .../test-crypto-subtle-zero-length.js         |    2 +-
 .../parallel/test-crypto-update-encoding.js   |    2 +-
 .../test/parallel/test-dgram-address.js       |    2 +-
 .../test-dgram-bind-default-address.js        |    2 +-
 .../parallel/test-dgram-bind-error-repeat.js  |    2 +-
 .../test/parallel/test-dgram-bind.js          |    2 +-
 .../test/parallel/test-dgram-bytes-length.js  |    2 +-
 .../parallel/test-dgram-close-during-bind.js  |    2 +-
 .../parallel/test-dgram-close-in-listening.js |    2 +-
 .../test-dgram-close-is-not-callback.js       |    2 +-
 .../test/parallel/test-dgram-close-signal.js  |    2 +-
 .../test/parallel/test-dgram-close.js         |    2 +-
 ...ram-connect-send-callback-buffer-length.js |    2 +-
 ...test-dgram-connect-send-callback-buffer.js |    2 +-
 ...gram-connect-send-callback-multi-buffer.js |    2 +-
 .../test-dgram-connect-send-default-host.js   |    2 +-
 .../test-dgram-connect-send-empty-array.js    |    2 +-
 .../test-dgram-connect-send-empty-buffer.js   |    2 +-
 ...st-dgram-connect-send-multi-buffer-copy.js |    2 +-
 ...t-dgram-connect-send-multi-string-array.js |    2 +-
 .../test/parallel/test-dgram-connect.js       |    2 +-
 .../test-dgram-error-message-address.js       |    2 +-
 .../test/parallel/test-dgram-implicit-bind.js |    2 +-
 .../parallel/test-dgram-listen-after-bind.js  |    2 +-
 .../test/parallel/test-dgram-msgsize.js       |    2 +-
 .../test/parallel/test-dgram-oob-buffer.js    |    2 +-
 .../test/parallel/test-dgram-recv-error.js    |    2 +-
 .../test/parallel/test-dgram-ref.js           |    2 +-
 .../parallel/test-dgram-send-bad-arguments.js |    2 +-
 ...gram-send-callback-buffer-empty-address.js |    2 +-
 ...nd-callback-buffer-length-empty-address.js |    2 +-
 .../test-dgram-send-callback-buffer-length.js |    2 +-
 .../test-dgram-send-callback-buffer.js        |    2 +-
 ...end-callback-multi-buffer-empty-address.js |    2 +-
 .../test-dgram-send-callback-multi-buffer.js  |    2 +-
 .../test-dgram-send-callback-recursive.js     |    2 +-
 .../parallel/test-dgram-send-default-host.js  |    2 +-
 .../test/parallel/test-dgram-send-error.js    |    2 +-
 .../test-dgram-send-invalid-msg-type.js       |    2 +-
 .../test-dgram-send-multi-buffer-copy.js      |    2 +-
 .../test-dgram-send-multi-string-array.js     |    2 +-
 .../test/parallel/test-dgram-udp4.js          |    2 +-
 .../test-dgram-udp6-send-default-host.js      |    2 +-
 .../test/parallel/test-dgram-unref.js         |    2 +-
 .../test-diagnostics-channel-bind-store.js    |    2 +-
 ...est-diagnostics-channel-has-subscribers.js |    2 +-
 ...gnostics-channel-object-channel-pub-sub.js |    2 +-
 .../test-diagnostics-channel-pub-sub.js       |    2 +-
 ...gnostics-channel-safe-subscriber-errors.js |    2 +-
 .../test-diagnostics-channel-symbol-named.js  |    2 +-
 ...ics-channel-tracing-channel-async-error.js |   53 -
 ...agnostics-channel-tracing-channel-async.js |   67 -
 ...nel-tracing-channel-callback-run-stores.js |    2 +-
 ...nnel-tracing-channel-promise-run-stores.js |    2 +-
 ...tics-channel-tracing-channel-run-stores.js |   28 -
 ...tics-channel-tracing-channel-sync-error.js |    2 +-
 ...iagnostics-channel-tracing-channel-sync.js |    2 +-
 .../parallel/test-diagnostics-channel-udp.js  |    2 +-
 .../test/parallel/test-dns-multi-channel.js   |    2 +-
 .../test/parallel/test-dns-promises-exists.js |    2 +-
 .../parallel/test-dns-resolvens-typeerror.js  |    2 +-
 .../test-dns-setservers-type-check.js         |    2 +-
 .../test/parallel/test-domain-crypto.js       |    4 +-
 .../parallel/test-domain-ee-error-listener.js |    2 +-
 .../test/parallel/test-domain-nested-throw.js |    2 +-
 .../test/parallel/test-domain-nested.js       |    2 +-
 .../test/parallel/test-domain-stack.js        |    2 +-
 ...in-top-level-error-handler-clears-stack.js |    2 +-
 ...otomethod-remove-unnecessary-prototypes.js |    2 +-
 .../test/parallel/test-errors-aborterror.js   |    2 +-
 .../test-eval-strict-referenceerror.js        |    2 +-
 tests/node_compat/test/parallel/test-eval.js  |    2 +-
 .../parallel/test-event-capture-rejections.js |    2 +-
 .../test-event-emitter-add-listeners.js       |    2 +-
 ...test-event-emitter-check-listener-leaks.js |    2 +-
 .../test-event-emitter-emit-context.js        |    2 +-
 .../test-event-emitter-error-monitor.js       |    2 +-
 .../parallel/test-event-emitter-errors.js     |    2 +-
 .../test-event-emitter-get-max-listeners.js   |    2 +-
 .../test-event-emitter-invalid-listener.js    |    2 +-
 .../test-event-emitter-listener-count.js      |    2 +-
 ...st-event-emitter-listeners-side-effects.js |    2 +-
 .../parallel/test-event-emitter-listeners.js  |    7 +-
 .../test-event-emitter-method-names.js        |    2 +-
 .../test-event-emitter-modify-in-emit.js      |    2 +-
 .../parallel/test-event-emitter-num-args.js   |    2 +-
 .../test/parallel/test-event-emitter-once.js  |    2 +-
 ...test-event-emitter-remove-all-listeners.js |    2 +-
 .../test-event-emitter-remove-listeners.js    |    2 +-
 ...-emitter-set-max-listeners-side-effects.js |    2 +-
 .../test-event-emitter-special-event-names.js |    2 +-
 .../parallel/test-event-emitter-subclass.js   |    2 +-
 .../parallel/test-event-emitter-symbols.js    |    2 +-
 .../test/parallel/test-events-list.js         |    2 +-
 .../test-events-uncaught-exception-stack.js   |    2 +-
 .../parallel/test-eventtarget-brandcheck.js   |    2 +-
 .../parallel/test-eventtarget-once-twice.js   |    2 +-
 .../test/parallel/test-exception-handler.js   |    2 +-
 .../test/parallel/test-exception-handler2.js  |    2 +-
 .../test/parallel/test-file-read-noexist.js   |    2 +-
 .../test/parallel/test-file-write-stream.js   |    2 +-
 .../test/parallel/test-file-write-stream2.js  |    2 +-
 .../test/parallel/test-file-write-stream3.js  |    2 +-
 .../test/parallel/test-file-write-stream4.js  |    2 +-
 .../test/parallel/test-fs-append-file-sync.js |   13 +-
 .../parallel/test-fs-buffertype-writesync.js  |    2 +-
 .../test/parallel/test-fs-chown-type-check.js |    2 +-
 .../test/parallel/test-fs-close.js            |    2 +-
 .../test/parallel/test-fs-constants.js        |    2 +-
 .../test/parallel/test-fs-copyfile.js         |    2 +-
 .../test/parallel/test-fs-empty-readStream.js |    2 +-
 .../node_compat/test/parallel/test-fs-fmap.js |    2 +-
 .../test/parallel/test-fs-lchown.js           |    2 +-
 .../test/parallel/test-fs-long-path.js        |    5 +-
 .../test-fs-non-number-arguments-throw.js     |    2 +-
 .../test/parallel/test-fs-open-flags.js       |    4 +-
 .../test/parallel/test-fs-open-mode-mask.js   |    2 +-
 .../test/parallel/test-fs-open-no-close.js    |    2 +-
 .../parallel/test-fs-open-numeric-flags.js    |    2 +-
 .../test/parallel/test-fs-promises-exists.js  |    2 +-
 .../test-fs-promises-file-handle-stat.js      |    2 +-
 .../test-fs-promises-file-handle-sync.js      |    2 +-
 .../test-fs-promises-file-handle-write.js     |    2 +-
 .../test-fs-promises-readfile-empty.js        |    2 +-
 .../test-fs-promises-readfile-with-fd.js      |    2 +-
 .../test-fs-promises-writefile-with-fd.js     |    2 +-
 .../test-fs-read-file-sync-hostname.js        |    2 +-
 .../parallel/test-fs-read-stream-autoClose.js |    2 +-
 .../test-fs-read-stream-concurrent-reads.js   |    2 +-
 .../test-fs-read-stream-double-close.js       |    2 +-
 .../parallel/test-fs-read-stream-encoding.js  |    2 +-
 .../parallel/test-fs-read-stream-fd-leak.js   |    2 +-
 .../test/parallel/test-fs-read-stream-fd.js   |    2 +-
 .../parallel/test-fs-read-stream-inherit.js   |    2 +-
 .../test-fs-read-stream-patch-open.js         |    2 +-
 .../test/parallel/test-fs-read-stream-pos.js  |    2 +-
 .../parallel/test-fs-read-stream-resume.js    |    2 +-
 .../test-fs-read-stream-throw-type-error.js   |    2 +-
 .../test/parallel/test-fs-read-type.js        |    2 +-
 .../test/parallel/test-fs-read-zero-length.js |    2 +-
 .../node_compat/test/parallel/test-fs-read.js |    2 +-
 .../test-fs-readdir-stack-overflow.js         |    2 +-
 .../test/parallel/test-fs-readdir.js          |    2 +-
 .../test/parallel/test-fs-readfile-empty.js   |    2 +-
 .../test/parallel/test-fs-readfile-fd.js      |    2 +-
 .../test/parallel/test-fs-readfile-unlink.js  |    2 +-
 .../test-fs-readfile-zero-byte-liar.js        |    2 +-
 .../parallel/test-fs-readfilesync-enoent.js   |    2 +-
 .../test/parallel/test-fs-readv-sync.js       |   10 +-
 .../test/parallel/test-fs-readv.js            |   11 +-
 .../parallel/test-fs-ready-event-stream.js    |    2 +-
 .../test/parallel/test-fs-realpath-native.js  |    2 +-
 ...fs-rmdir-recursive-sync-warns-not-found.js |    2 +-
 ...t-fs-rmdir-recursive-sync-warns-on-file.js |    2 +-
 ...est-fs-rmdir-recursive-throws-not-found.js |    2 +-
 .../test-fs-rmdir-recursive-throws-on-file.js |    2 +-
 ...test-fs-rmdir-recursive-warns-not-found.js |    2 +-
 .../test-fs-rmdir-recursive-warns-on-file.js  |    2 +-
 .../test/parallel/test-fs-rmdir-type-check.js |    2 +-
 .../test/parallel/test-fs-sir-writes-alot.js  |    2 +-
 ...t-fs-stream-construct-compat-error-read.js |    2 +-
 ...-fs-stream-construct-compat-graceful-fs.js |    2 +-
 ...est-fs-stream-construct-compat-old-node.js |    2 +-
 .../test-fs-stream-destroy-emit-error.js      |    2 +-
 .../parallel/test-fs-stream-double-close.js   |    2 +-
 .../parallel/test-fs-stream-fs-options.js     |    2 +-
 .../test/parallel/test-fs-stream-options.js   |    2 +-
 .../test-fs-symlink-dir-junction-relative.js  |    2 +-
 .../test-fs-timestamp-parsing-error.js        |    2 +-
 .../test-fs-truncate-clear-file-zero.js       |    2 +-
 .../test-fs-util-validateoffsetlength.js      |    2 +-
 .../test/parallel/test-fs-utimes-y2K38.js     |    2 +-
 .../test/parallel/test-fs-utimes.js           |    2 +-
 ...est-fs-watch-file-enoent-after-deletion.js |    2 +-
 ...st-fs-watch-recursive-add-file-with-url.js |    5 +-
 .../test-fs-watch-recursive-add-file.js       |   42 +-
 .../test-fs-watch-recursive-add-folder.js     |    5 +-
 .../test-fs-watch-recursive-update-file.js    |   43 +-
 .../test/parallel/test-fs-watchfile.js        |   19 +-
 .../test/parallel/test-fs-write-buffer.js     |    2 +-
 .../parallel/test-fs-write-file-buffer.js     |    5 +-
 .../test-fs-write-file-invalid-path.js        |    2 +-
 .../test/parallel/test-fs-write-file-sync.js  |    6 +-
 .../parallel/test-fs-write-negativeoffset.js  |    2 +-
 .../test/parallel/test-fs-write-no-fd.js      |    2 +-
 .../test-fs-write-stream-autoclose-option.js  |    2 +-
 ...-fs-write-stream-close-without-callback.js |    2 +-
 .../test-fs-write-stream-double-close.js      |    2 +-
 .../parallel/test-fs-write-stream-encoding.js |    2 +-
 .../test/parallel/test-fs-write-stream-end.js |    2 +-
 .../test/parallel/test-fs-write-stream-fs.js  |    2 +-
 .../test-fs-write-stream-patch-open.js        |    2 +-
 .../test-fs-write-stream-throw-type-error.js  |    2 +-
 .../test/parallel/test-fs-write-stream.js     |    2 +-
 .../test/parallel/test-fs-write-sync.js       |    2 +-
 .../test/parallel/test-fs-write.js            |   31 +-
 .../test/parallel/test-fs-writev-sync.js      |    2 +-
 .../test/parallel/test-fs-writev.js           |    2 +-
 .../test/parallel/test-global-domexception.js |    2 +-
 .../test/parallel/test-global-encoder.js      |    2 +-
 .../test/parallel/test-global-webcrypto.js    |    4 +-
 .../test/parallel/test-global-webstreams.js   |    2 +-
 .../parallel/test-handle-wrap-close-abort.js  |    2 +-
 .../parallel/test-http-abort-before-end.js    |    2 +-
 .../test-http-addrequest-localaddress.js      |    2 +-
 .../test/parallel/test-http-agent-getname.js  |    2 +-
 .../test-http-agent-maxtotalsockets.js        |    2 +-
 .../parallel/test-http-agent-no-protocol.js   |    2 +-
 .../test/parallel/test-http-agent-null.js     |    2 +-
 .../test-http-allow-req-after-204-res.js      |    2 +-
 .../test/parallel/test-http-bind-twice.js     |    2 +-
 .../test/parallel/test-http-buffer-sanity.js  |    2 +-
 .../parallel/test-http-chunked-smuggling.js   |    2 +-
 .../test/parallel/test-http-chunked.js        |   14 +-
 .../test/parallel/test-http-client-abort2.js  |    2 +-
 .../test-http-client-check-http-token.js      |    2 +-
 ...st-http-client-close-with-default-agent.js |    2 +-
 .../test-http-client-default-headers-exist.js |    6 +-
 .../parallel/test-http-client-defaults.js     |    2 +-
 .../parallel/test-http-client-encoding.js     |    2 +-
 .../test/parallel/test-http-client-get-url.js |    2 +-
 .../test-http-client-headers-array.js         |    2 +-
 .../parallel/test-http-client-invalid-path.js |    2 +-
 .../test-http-client-keep-alive-hint.js       |    2 +-
 .../test/parallel/test-http-client-race-2.js  |    2 +-
 .../test/parallel/test-http-client-race.js    |    2 +-
 .../test-http-client-read-in-error.js         |    2 +-
 ...est-http-client-reject-unexpected-agent.js |    2 +-
 .../test-http-client-timeout-with-data.js     |    2 +-
 .../test-http-client-unescaped-path.js        |    2 +-
 .../parallel/test-http-client-upload-buf.js   |    2 +-
 .../test/parallel/test-http-client-upload.js  |    2 +-
 .../test/parallel/test-http-common.js         |    2 +-
 .../test/parallel/test-http-contentLength0.js |    2 +-
 .../parallel/test-http-correct-hostname.js    |    2 +-
 .../test/parallel/test-http-date-header.js    |    2 +-
 .../test/parallel/test-http-decoded-auth.js   |    2 +-
 .../parallel/test-http-default-encoding.js    |    2 +-
 .../test-http-end-throw-socket-handling.js    |    2 +-
 .../test/parallel/test-http-eof-on-connect.js |    2 +-
 .../test/parallel/test-http-extra-response.js |    2 +-
 .../test/parallel/test-http-flush-headers.js  |    2 +-
 .../test/parallel/test-http-full-response.js  |    2 +-
 .../test/parallel/test-http-head-request.js   |    2 +-
 ...sponse-has-no-body-end-implicit-headers.js |    2 +-
 ...test-http-head-response-has-no-body-end.js |    2 +-
 .../test-http-head-response-has-no-body.js    |    2 +-
 ...-http-head-throw-on-response-body-write.js |    2 +-
 .../test/parallel/test-http-header-obstext.js |    2 +-
 .../test/parallel/test-http-header-owstext.js |    2 +-
 .../test/parallel/test-http-header-read.js    |    2 +-
 .../parallel/test-http-header-validators.js   |    2 +-
 .../test/parallel/test-http-hex-write.js      |    2 +-
 .../test/parallel/test-http-highwatermark.js  |    2 +-
 .../test/parallel/test-http-host-headers.js   |    2 +-
 .../test-http-incoming-message-destroy.js     |    2 +-
 .../parallel/test-http-invalid-path-chars.js  |    2 +-
 .../parallel/test-http-invalidheaderfield.js  |    2 +-
 .../parallel/test-http-invalidheaderfield2.js |    2 +-
 .../test-http-keep-alive-timeout-custom.js    |    2 +-
 .../test/parallel/test-http-listening.js      |    2 +-
 .../test-http-localaddress-bind-error.js      |    2 +-
 .../parallel/test-http-outgoing-end-types.js  |    2 +-
 .../parallel/test-http-outgoing-finished.js   |    2 +-
 ...tp-outgoing-internal-headernames-getter.js |    2 +-
 ...tp-outgoing-internal-headernames-setter.js |    2 +-
 .../test-http-outgoing-internal-headers.js    |    2 +-
 .../test-http-outgoing-renderHeaders.js       |    2 +-
 .../parallel/test-http-outgoing-settimeout.js |    2 +-
 .../test-http-outgoing-write-types.js         |    2 +-
 .../test/parallel/test-http-parser-free.js    |    2 +-
 .../test/parallel/test-http-pause-no-dump.js  |    2 +-
 .../test-http-pause-resume-one-end.js         |    2 +-
 .../test/parallel/test-http-pause.js          |    2 +-
 .../test/parallel/test-http-pipe-fs.js        |    2 +-
 ...-http-pipeline-requests-connection-leak.js |    2 +-
 .../test/parallel/test-http-proxy.js          |    2 +-
 .../parallel/test-http-readable-data-event.js |    2 +-
 .../parallel/test-http-request-arguments.js   |    2 +-
 ...test-http-request-dont-override-options.js |    2 +-
 .../parallel/test-http-request-end-twice.js   |    2 +-
 .../test/parallel/test-http-request-end.js    |   18 +-
 .../test-http-request-invalid-method-error.js |    2 +-
 .../test-http-request-large-payload.js        |    2 +-
 .../parallel/test-http-request-methods.js     |    2 +-
 ...test-http-res-write-end-dont-take-array.js |    2 +-
 .../test-http-response-multiheaders.js        |    2 +-
 .../parallel/test-http-response-readable.js   |    2 +-
 ...st-http-response-writehead-returns-this.js |    2 +-
 .../test-http-server-delete-parser.js         |    2 +-
 .../test-http-server-write-after-end.js       |    2 +-
 .../test-http-server-write-end-after-end.js   |    2 +-
 .../test/parallel/test-http-set-cookies.js    |    2 +-
 .../parallel/test-http-set-header-chain.js    |    2 +-
 .../test/parallel/test-http-status-code.js    |    2 +-
 .../test-http-status-reason-invalid-chars.js  |    2 +-
 ...est-http-uncaught-from-request-callback.js |    2 +-
 .../test/parallel/test-http-url.parse-auth.js |    2 +-
 .../parallel/test-http-url.parse-basic.js     |    2 +-
 ....parse-only-support-http-https-protocol.js |    2 +-
 .../test/parallel/test-http-url.parse-path.js |    2 +-
 .../test/parallel/test-http-url.parse-post.js |    2 +-
 .../parallel/test-http-url.parse-search.js    |    2 +-
 .../test/parallel/test-http-wget.js           |    2 +-
 .../parallel/test-http-write-empty-string.js  |    2 +-
 .../parallel/test-http-zerolengthbuffer.js    |    2 +-
 ...-http2-client-request-listeners-warning.js |    2 +-
 .../test-http2-compat-expect-handling.js      |    2 +-
 .../parallel/test-http2-compat-socket-set.js  |    2 +-
 .../test/parallel/test-http2-date-header.js   |    2 +-
 .../test/parallel/test-http2-dont-override.js |    2 +-
 .../parallel/test-http2-endafterheaders.js    |    2 +-
 .../test/parallel/test-http2-methods.js       |    2 +-
 .../test-http2-request-response-proto.js      |    2 +-
 .../parallel/test-http2-respond-file-204.js   |    2 +-
 .../test-http2-respond-file-compat.js         |    2 +-
 .../parallel/test-http2-session-timeout.js    |    2 +-
 .../test/parallel/test-http2-socket-proxy.js  |    2 +-
 .../test-http2-status-code-invalid.js         |    2 +-
 .../test/parallel/test-http2-status-code.js   |    2 +-
 ...ttp2-stream-removelisteners-after-close.js |    2 +-
 .../parallel/test-http2-write-empty-string.js |    2 +-
 .../parallel/test-https-connecting-to-http.js |    2 +-
 .../test-https-localaddress-bind-error.js     |    2 +-
 .../test/parallel/test-icu-data-dir.js        |    2 +-
 .../test/parallel/test-icu-stringwidth.js     |    2 +-
 .../test/parallel/test-icu-transcode.js       |    2 +-
 .../parallel/test-inspector-stops-no-file.js  |    2 +-
 .../test/parallel/test-instanceof.js          |    2 +-
 .../test/parallel/test-internal-fs.js         |    2 +-
 .../test-internal-util-normalizeencoding.js   |    2 +-
 .../parallel/test-kill-segfault-freebsd.js    |    2 +-
 .../test-listen-fd-detached-inherit.js        |    2 +-
 .../test/parallel/test-listen-fd-detached.js  |    2 +-
 .../test/parallel/test-memory-usage-emfile.js |    2 +-
 .../test/parallel/test-memory-usage.js        |    2 +-
 .../test/parallel/test-messagechannel.js      |    2 +-
 .../test-microtask-queue-integration.js       |    2 +-
 .../test-microtask-queue-run-immediate.js     |    2 +-
 .../test/parallel/test-microtask-queue-run.js |    2 +-
 .../test/parallel/test-module-cache.js        |    2 +-
 .../parallel/test-module-circular-symlinks.js |    2 +-
 .../test/parallel/test-module-isBuiltin.js    |    2 +-
 .../parallel/test-module-multi-extensions.js  |    2 +-
 .../parallel/test-module-nodemodulepaths.js   |    2 +-
 .../test/parallel/test-module-readonly.js     |    2 +-
 .../parallel/test-module-relative-lookup.js   |    6 +-
 .../parallel/test-net-access-byteswritten.js  |    2 +-
 .../test/parallel/test-net-after-close.js     |    2 +-
 ...t-net-better-error-messages-listen-path.js |    2 +-
 .../test-net-better-error-messages-listen.js  |    2 +-
 ...net-better-error-messages-port-hostname.js |    2 +-
 .../test/parallel/test-net-bind-twice.js      |    2 +-
 .../test/parallel/test-net-buffersize.js      |    2 +-
 .../parallel/test-net-bytes-written-large.js  |    2 +-
 .../parallel/test-net-can-reset-timeout.js    |    2 +-
 .../test-net-connect-after-destroy.js         |    2 +-
 .../test-net-connect-call-socket-connect.js   |    2 +-
 .../test/parallel/test-net-connect-destroy.js |    2 +-
 .../test-net-connect-immediate-destroy.js     |    2 +-
 .../test-net-connect-immediate-finish.js      |    2 +-
 .../test/parallel/test-net-connect-no-arg.js  |    2 +-
 .../parallel/test-net-connect-options-fd.js   |    2 +-
 .../parallel/test-net-connect-options-ipv6.js |    2 +-
 .../parallel/test-net-connect-options-port.js |    2 +-
 .../test-net-connect-paused-connection.js     |    2 +-
 .../parallel/test-net-dns-custom-lookup.js    |    2 +-
 .../test/parallel/test-net-dns-error.js       |    2 +-
 .../test/parallel/test-net-dns-lookup-skip.js |    2 +-
 .../test/parallel/test-net-dns-lookup.js      |    2 +-
 .../test/parallel/test-net-during-close.js    |    2 +-
 .../test/parallel/test-net-eaddrinuse.js      |    2 +-
 .../test/parallel/test-net-error-twice.js     |    2 +-
 .../test/parallel/test-net-isip.js            |    2 +-
 .../test/parallel/test-net-isipv4.js          |    2 +-
 .../test/parallel/test-net-isipv6.js          |    2 +-
 .../test/parallel/test-net-keepalive.js       |    2 +-
 .../test-net-listen-after-destroying-stdin.js |    2 +-
 ...n-close-server-callback-is-not-function.js |    2 +-
 .../parallel/test-net-listen-close-server.js  |    2 +-
 .../test/parallel/test-net-listen-error.js    |    2 +-
 .../test/parallel/test-net-listening.js       |    2 +-
 .../parallel/test-net-local-address-port.js   |    2 +-
 .../test/parallel/test-net-localerror.js      |    2 +-
 .../test/parallel/test-net-options-lookup.js  |    2 +-
 .../test-net-pause-resume-connecting.js       |    2 +-
 .../parallel/test-net-persistent-keepalive.js |    2 +-
 .../parallel/test-net-persistent-nodelay.js   |    2 +-
 .../parallel/test-net-persistent-ref-unref.js |    2 +-
 .../parallel/test-net-pipe-connect-errors.js  |    2 +-
 .../test/parallel/test-net-reconnect.js       |    2 +-
 .../parallel/test-net-remote-address-port.js  |    2 +-
 .../test/parallel/test-net-remote-address.js  |    2 +-
 .../test-net-server-capture-rejection.js      |    2 +-
 .../test/parallel/test-net-server-close.js    |    2 +-
 .../test-net-server-listen-options-signal.js  |    2 +-
 .../test-net-server-listen-options.js         |    2 +-
 .../test-net-server-listen-remove-callback.js |    2 +-
 .../test/parallel/test-net-server-options.js  |    2 +-
 .../test-net-server-pause-on-connect.js       |    2 +-
 .../test-net-server-unref-persistent.js       |    2 +-
 .../test/parallel/test-net-server-unref.js    |    2 +-
 .../test/parallel/test-net-settimeout.js      |    2 +-
 .../test-net-socket-close-after-end.js        |    2 +-
 ...socket-connect-invalid-autoselectfamily.js |    2 +-
 .../test-net-socket-connect-without-cb.js     |    2 +-
 .../parallel/test-net-socket-connecting.js    |    2 +-
 .../parallel/test-net-socket-destroy-send.js  |    2 +-
 .../parallel/test-net-socket-destroy-twice.js |    2 +-
 .../test-net-socket-end-before-connect.js     |    2 +-
 .../parallel/test-net-socket-end-callback.js  |    2 +-
 .../test-net-socket-no-halfopen-enforcer.js   |    2 +-
 .../test-net-socket-ready-without-cb.js       |    2 +-
 .../parallel/test-net-socket-setnodelay.js    |    2 +-
 .../parallel/test-net-socket-timeout-unref.js |    2 +-
 .../test-net-socket-write-after-close.js      |    2 +-
 .../parallel/test-net-socket-write-error.js   |    2 +-
 .../test/parallel/test-net-sync-cork.js       |    2 +-
 .../parallel/test-net-timeout-no-handle.js    |    2 +-
 .../test/parallel/test-net-writable.js        |    2 +-
 .../parallel/test-net-write-connect-write.js  |    2 +-
 .../test-net-write-fully-async-buffer.js      |    4 +-
 .../test-net-write-fully-async-hex-string.js  |    4 +-
 .../test/parallel/test-net-write-slow.js      |    2 +-
 .../parallel/test-next-tick-doesnt-hang.js    |    2 +-
 .../test/parallel/test-next-tick-domain.js    |    2 +-
 .../test/parallel/test-next-tick-errors.js    |    2 +-
 .../test-next-tick-fixed-queue-regression.js  |    2 +-
 .../test-next-tick-intentional-starvation.js  |    2 +-
 .../test/parallel/test-next-tick-ordering.js  |    2 +-
 .../test/parallel/test-next-tick-ordering2.js |    2 +-
 .../parallel/test-next-tick-when-exiting.js   |    2 +-
 .../test/parallel/test-next-tick.js           |    2 +-
 .../test/parallel/test-no-node-snapshot.js    |    2 +-
 .../test/parallel/test-nodeeventtarget.js     |    2 +-
 .../parallel/test-os-homedir-no-envvar.js     |    2 +-
 tests/node_compat/test/parallel/test-os.js    |   10 +-
 .../parallel/test-outgoing-message-destroy.js |    2 +-
 .../parallel/test-outgoing-message-pipe.js    |    2 +-
 .../test/parallel/test-path-basename.js       |    2 +-
 .../test/parallel/test-path-dirname.js        |    4 +-
 .../test/parallel/test-path-extname.js        |    2 +-
 .../test/parallel/test-path-isabsolute.js     |    2 +-
 .../test/parallel/test-path-parse-format.js   |   16 +-
 .../test/parallel/test-path-posix-exists.js   |    2 +-
 .../test/parallel/test-path-win32-exists.js   |    2 +-
 .../parallel/test-path-zero-length-strings.js |    2 +-
 tests/node_compat/test/parallel/test-path.js  |    2 +-
 .../test/parallel/test-perf-gc-crash.js       |    2 +-
 .../parallel/test-performanceobserver-gc.js   |    2 +-
 .../test/parallel/test-pipe-return-val.js     |    2 +-
 .../test/parallel/test-pipe-writev.js         |    2 +-
 .../test/parallel/test-process-abort.js       |    6 +-
 .../test/parallel/test-process-argv-0.js      |    2 +-
 .../test/parallel/test-process-beforeexit.js  |    2 +-
 ...ocess-binding-internalbinding-allowlist.js |    2 +-
 .../test/parallel/test-process-binding.js     |    2 +-
 .../test-process-dlopen-undefined-exports.js  |    2 +-
 .../parallel/test-process-domain-segfault.js  |    2 +-
 .../test/parallel/test-process-emitwarning.js |    2 +-
 .../test-process-env-allowed-flags.js         |    2 +-
 .../test/parallel/test-process-env-delete.js  |    2 +-
 .../test/parallel/test-process-env-tz.js      |    9 +-
 .../test-process-env-windows-error-reset.js   |    2 +-
 .../test-process-exit-from-before-exit.js     |    2 +-
 .../parallel/test-process-exit-handler.js     |    6 +-
 .../parallel/test-process-exit-recursive.js   |    2 +-
 .../test/parallel/test-process-exit.js        |    2 +-
 .../test/parallel/test-process-getgroups.js   |    4 +-
 .../parallel/test-process-hrtime-bigint.js    |    2 +-
 .../test/parallel/test-process-kill-pid.js    |    2 +-
 .../test/parallel/test-process-next-tick.js   |    2 +-
 .../parallel/test-process-no-deprecation.js   |    2 +-
 .../test/parallel/test-process-ppid.js        |    2 +-
 .../test/parallel/test-process-really-exit.js |    2 +-
 .../test/parallel/test-process-uptime.js      |    2 +-
 .../test/parallel/test-process-warning.js     |    2 +-
 ...st-promise-handled-rejection-no-warning.js |    2 +-
 .../parallel/test-promise-unhandled-silent.js |    2 +-
 .../test-promise-unhandled-throw-handler.js   |    2 +-
 .../test/parallel/test-punycode.js            |    2 +-
 .../test/parallel/test-querystring-escape.js  |    2 +-
 .../test-querystring-maxKeys-non-finite.js    |    2 +-
 .../test-querystring-multichar-separator.js   |    2 +-
 .../test-readable-from-iterator-closing.js    |    2 +-
 .../test/parallel/test-readable-from.js       |    2 +-
 .../test/parallel/test-readable-large-hwm.js  |    2 +-
 .../test/parallel/test-readable-single-end.js |    2 +-
 .../test-readline-async-iterators-destroy.js  |    2 +-
 .../parallel/test-readline-async-iterators.js |    2 +-
 ...readline-carriage-return-between-chunks.js |    2 +-
 .../test/parallel/test-readline-csi.js        |    2 +-
 .../test-readline-emit-keypress-events.js     |    2 +-
 ...st-readline-interface-escapecodetimeout.js |    2 +-
 .../test/parallel/test-readline-keys.js       |    2 +-
 .../test/parallel/test-readline-position.js   |    6 +-
 .../test/parallel/test-readline-reopen.js     |    2 +-
 .../parallel/test-readline-set-raw-mode.js    |    2 +-
 .../test-readline-undefined-columns.js        |    6 +-
 .../test/parallel/test-readline.js            |    6 +-
 .../test/parallel/test-ref-unref-return.js    |    2 +-
 .../test-regression-object-prototype.js       |    2 +-
 .../parallel/test-require-invalid-package.js  |    2 +-
 .../test/parallel/test-require-long-path.js   |    2 +-
 .../test/parallel/test-require-nul.js         |    2 +-
 .../test/parallel/test-require-process.js     |    2 +-
 .../test-signal-handler-remove-on-exit.js     |    2 +-
 .../test/parallel/test-signal-handler.js      |   11 +-
 .../test/parallel/test-socket-address.js      |    2 +-
 .../test-socket-write-after-fin-error.js      |    2 +-
 .../test/parallel/test-source-map-enable.js   |   29 +-
 .../parallel/test-spawn-cmd-named-pipe.js     |    2 +-
 .../test/parallel/test-stdin-hang.js          |    2 +-
 .../test/parallel/test-stdin-pipe-large.js    |    2 +-
 .../test/parallel/test-stdin-pipe-resume.js   |    2 +-
 .../test-stdin-script-child-option.js         |    2 +-
 .../test/parallel/test-stdio-pipe-access.js   |    7 +-
 .../test/parallel/test-stdio-pipe-redirect.js |    7 +-
 .../test/parallel/test-stdio-pipe-stderr.js   |    2 +-
 .../test/parallel/test-stdio-undestroy.js     |    2 +-
 ...out-cannot-be-closed-child-process-pipe.js |    2 +-
 .../parallel/test-stdout-pipeline-destroy.js  |    2 +-
 .../parallel/test-stdout-stderr-reading.js    |    2 +-
 .../test/parallel/test-stdout-stderr-write.js |    2 +-
 .../parallel/test-stream-add-abort-signal.js  |    2 +-
 .../parallel/test-stream-aliases-legacy.js    |    2 +-
 .../test/parallel/test-stream-auto-destroy.js |    2 +-
 ...riters-in-synchronously-recursion-write.js |    2 +-
 .../test/parallel/test-stream-backpressure.js |    2 +-
 .../test/parallel/test-stream-big-packet.js   |    8 +-
 .../test/parallel/test-stream-big-push.js     |    2 +-
 .../parallel/test-stream-catch-rejections.js  |    2 +-
 .../test/parallel/test-stream-construct.js    |    2 +-
 .../test-stream-decoder-objectmode.js         |    2 +-
 .../test-stream-destroy-event-order.js        |    2 +-
 .../test/parallel/test-stream-duplex-end.js   |    2 +-
 .../test/parallel/test-stream-duplex-props.js |    2 +-
 .../test-stream-duplex-readable-end.js        |    4 +-
 .../test-stream-duplex-readable-writable.js   |    2 +-
 .../test-stream-duplex-writable-finished.js   |    2 +-
 .../test/parallel/test-stream-duplex.js       |    2 +-
 .../parallel/test-stream-end-of-streams.js    |    2 +-
 .../test/parallel/test-stream-end-paused.js   |    2 +-
 .../test/parallel/test-stream-error-once.js   |    2 +-
 .../parallel/test-stream-events-prepend.js    |    2 +-
 .../test/parallel/test-stream-filter.js       |    2 +-
 .../test/parallel/test-stream-flatMap.js      |    2 +-
 .../test/parallel/test-stream-forEach.js      |    2 +-
 .../test/parallel/test-stream-inheritance.js  |    2 +-
 .../test/parallel/test-stream-ispaused.js     |    2 +-
 .../test-stream-objectmode-undefined.js       |    2 +-
 .../test-stream-once-readable-pipe.js         |    2 +-
 .../parallel/test-stream-passthrough-drain.js |    2 +-
 .../parallel/test-stream-pipe-after-end.js    |    2 +-
 ...t-stream-pipe-await-drain-manual-resume.js |    2 +-
 ...tream-pipe-await-drain-push-while-write.js |    4 +-
 .../parallel/test-stream-pipe-await-drain.js  |    2 +-
 .../test-stream-pipe-cleanup-pause.js         |    2 +-
 .../test/parallel/test-stream-pipe-cleanup.js |    2 +-
 .../test-stream-pipe-error-handling.js        |    2 +-
 .../test-stream-pipe-error-unhandled.js       |    2 +-
 .../test/parallel/test-stream-pipe-event.js   |    2 +-
 .../test-stream-pipe-flow-after-unpipe.js     |    2 +-
 .../test/parallel/test-stream-pipe-flow.js    |    2 +-
 .../test-stream-pipe-manual-resume.js         |    2 +-
 .../test-stream-pipe-multiple-pipes.js        |    2 +-
 .../parallel/test-stream-pipe-needDrain.js    |    2 +-
 ...test-stream-pipe-same-destination-twice.js |    2 +-
 .../test-stream-pipe-unpipe-streams.js        |   11 +-
 .../test-stream-pipe-without-listenerCount.js |    2 +-
 .../test-stream-pipeline-async-iterator.js    |    2 +-
 .../parallel/test-stream-pipeline-duplex.js   |    2 +-
 .../test-stream-pipeline-listeners.js         |    2 +-
 ...t-stream-pipeline-queued-end-in-destroy.js |    2 +-
 .../parallel/test-stream-pipeline-uncaught.js |    2 +-
 .../test-stream-pipeline-with-empty-string.js |    2 +-
 .../test/parallel/test-stream-push-order.js   |    2 +-
 .../test/parallel/test-stream-push-strings.js |    2 +-
 .../parallel/test-stream-readable-aborted.js  |    2 +-
 ...t-stream-readable-add-chunk-during-data.js |    2 +-
 ...stream-readable-constructor-set-methods.js |    2 +-
 .../parallel/test-stream-readable-data.js     |    2 +-
 .../parallel/test-stream-readable-destroy.js  |    2 +-
 .../parallel/test-stream-readable-didRead.js  |    2 +-
 ...eam-readable-emit-readable-short-stream.js |    2 +-
 .../test-stream-readable-emittedReadable.js   |    2 +-
 .../test-stream-readable-end-destroyed.js     |    2 +-
 .../parallel/test-stream-readable-ended.js    |    2 +-
 .../test-stream-readable-error-end.js         |    2 +-
 .../parallel/test-stream-readable-event.js    |    2 +-
 .../test-stream-readable-flow-recursion.js    |    2 +-
 .../test-stream-readable-hwm-0-async.js       |    2 +-
 ...test-stream-readable-hwm-0-no-flow-data.js |    2 +-
 .../parallel/test-stream-readable-hwm-0.js    |    2 +-
 .../test-stream-readable-infinite-read.js     |    3 +-
 .../test-stream-readable-invalid-chunk.js     |    2 +-
 .../test-stream-readable-needReadable.js      |    2 +-
 .../test-stream-readable-next-no-null.js      |    2 +-
 ...st-stream-readable-no-unneeded-readable.js |    2 +-
 ...stream-readable-object-multi-push-async.js |    2 +-
 .../test-stream-readable-pause-and-resume.js  |    2 +-
 ...st-stream-readable-readable-then-resume.js |    2 +-
 .../parallel/test-stream-readable-readable.js |    2 +-
 ...est-stream-readable-reading-readingMore.js |    2 +-
 .../test-stream-readable-resume-hwm.js        |    2 +-
 .../test-stream-readable-resumeScheduled.js   |    2 +-
 ...m-readable-setEncoding-existing-buffers.js |    2 +-
 .../test-stream-readable-setEncoding-null.js  |    2 +-
 .../test-stream-readable-strategy-option.js   |    2 +-
 .../test-stream-readable-unpipe-resume.js     |    2 +-
 .../parallel/test-stream-readable-unshift.js  |    2 +-
 ...tream-readable-with-unimplemented-_read.js |    2 +-
 .../test-stream-readableListening-state.js    |    2 +-
 .../test/parallel/test-stream-reduce.js       |    6 +-
 .../test/parallel/test-stream-toArray.js      |    2 +-
 ...est-stream-toWeb-allows-server-response.js |    2 +-
 .../test-stream-transform-callback-twice.js   |    2 +-
 ...tream-transform-constructor-set-methods.js |    2 +-
 .../test-stream-transform-final-sync.js       |    2 +-
 .../parallel/test-stream-transform-final.js   |    2 +-
 .../test-stream-transform-flush-data.js       |    2 +-
 .../parallel/test-stream-transform-hwm0.js    |    2 +-
 ...tream-transform-objectmode-falsey-value.js |    2 +-
 .../test/parallel/test-stream-uint8array.js   |    2 +-
 .../test/parallel/test-stream-unpipe-event.js |    2 +-
 .../test-stream-unshift-empty-chunk.js        |    2 +-
 .../parallel/test-stream-unshift-read-race.js |    2 +-
 .../parallel/test-stream-writable-aborted.js  |    2 +-
 ...stream-writable-change-default-encoding.js |    2 +-
 .../test-stream-writable-clear-buffer.js      |    2 +-
 ...stream-writable-constructor-set-methods.js |    2 +-
 .../test-stream-writable-decoded-encoding.js  |    2 +-
 .../test-stream-writable-end-cb-error.js      |    2 +-
 .../test-stream-writable-end-cb-uncaught.js   |    2 +-
 .../test-stream-writable-end-multiple.js      |    2 +-
 .../test-stream-writable-ended-state.js       |    2 +-
 .../test-stream-writable-final-async.js       |    2 +-
 .../test-stream-writable-final-destroy.js     |    2 +-
 .../test-stream-writable-final-throw.js       |    2 +-
 .../test-stream-writable-finish-destroyed.js  |    2 +-
 .../test-stream-writable-finished-state.js    |    2 +-
 .../parallel/test-stream-writable-finished.js |    2 +-
 .../test-stream-writable-invalid-chunk.js     |    2 +-
 .../test-stream-writable-needdrain-state.js   |    2 +-
 .../parallel/test-stream-writable-null.js     |    2 +-
 .../test-stream-writable-properties.js        |    2 +-
 .../parallel/test-stream-writable-writable.js |    2 +-
 .../test-stream-writable-write-cb-error.js    |    2 +-
 .../test-stream-writable-write-cb-twice.js    |    2 +-
 .../test-stream-writable-write-error.js       |    2 +-
 ...est-stream-writable-write-writev-finish.js |    2 +-
 .../test-stream-writableState-ending.js       |    2 +-
 ...ableState-uncorked-bufferedRequestCount.js |    2 +-
 .../parallel/test-stream-write-destroy.js     |    2 +-
 .../test/parallel/test-stream-write-drain.js  |    2 +-
 .../test/parallel/test-stream-write-final.js  |    2 +-
 .../test/parallel/test-stream-writev.js       |    2 +-
 ...est-stream2-base64-single-char-read-end.js |    2 +-
 .../test/parallel/test-stream2-basic.js       |    2 +-
 .../parallel/test-stream2-compatibility.js    |    2 +-
 .../parallel/test-stream2-decode-partial.js   |    2 +-
 .../test-stream2-finish-pipe-error.js         |    2 +-
 .../test/parallel/test-stream2-finish-pipe.js |    2 +-
 .../parallel/test-stream2-large-read-stall.js |    6 +-
 .../test/parallel/test-stream2-objects.js     |    2 +-
 .../test-stream2-pipe-error-handling.js       |    2 +-
 .../test-stream2-pipe-error-once-listener.js  |    2 +-
 .../test/parallel/test-stream2-push.js        |    2 +-
 .../parallel/test-stream2-read-sync-stack.js  |    2 +-
 ...st-stream2-readable-empty-buffer-no-eof.js |    2 +-
 .../test-stream2-readable-legacy-drain.js     |    2 +-
 .../test-stream2-readable-non-empty-end.js    |    2 +-
 .../test-stream2-readable-wrap-destroy.js     |    2 +-
 .../test-stream2-readable-wrap-empty.js       |    2 +-
 .../test-stream2-readable-wrap-error.js       |    2 +-
 .../parallel/test-stream2-readable-wrap.js    |    2 +-
 .../parallel/test-stream2-set-encoding.js     |    2 +-
 .../test/parallel/test-stream2-transform.js   |   14 +-
 .../parallel/test-stream2-unpipe-drain.js     |    2 +-
 .../test/parallel/test-stream2-unpipe-leak.js |    2 +-
 .../test/parallel/test-stream2-writable.js    |    2 +-
 .../test/parallel/test-stream3-cork-end.js    |    2 +-
 .../test/parallel/test-stream3-cork-uncork.js |    2 +-
 .../parallel/test-stream3-pause-then-read.js  |    2 +-
 .../test-stream3-pipeline-async-iterator.js   |    2 +-
 .../parallel/test-streams-highwatermark.js    |   26 +-
 .../test/parallel/test-string-decoder.js      |    2 +-
 .../parallel/test-stringbytes-external.js     |    2 +-
 .../test/parallel/test-sync-fileread.js       |    2 +-
 tests/node_compat/test/parallel/test-sys.js   |    2 +-
 .../parallel/test-tick-processor-arguments.js |    2 +-
 .../test/parallel/test-timers-api-refs.js     |   14 +-
 .../test/parallel/test-timers-args.js         |    2 +-
 ...-timers-clear-null-does-not-throw-error.js |    2 +-
 ...imers-clear-object-does-not-throw-error.js |    2 +-
 ...imers-clear-timeout-interval-equivalent.js |    2 +-
 .../test-timers-clearImmediate-als.js         |    2 +-
 .../parallel/test-timers-clearImmediate.js    |    2 +-
 .../parallel/test-timers-immediate-queue.js   |    3 +-
 .../test/parallel/test-timers-immediate.js    |    2 +-
 .../parallel/test-timers-interval-throw.js    |    2 +-
 .../parallel/test-timers-non-integer-delay.js |    2 +-
 .../test-timers-refresh-in-callback.js        |    2 +-
 .../test/parallel/test-timers-refresh.js      |    2 +-
 ...-timers-same-timeout-wrong-list-deleted.js |    2 +-
 .../test-timers-setimmediate-infinite-loop.js |    2 +-
 ...imeout-removes-other-socket-unref-timer.js |    2 +-
 .../test-timers-timeout-with-non-integer.js   |    2 +-
 .../test-timers-uncaught-exception.js         |    2 +-
 .../test-timers-unref-throw-then-ref.js       |    2 +-
 .../test/parallel/test-timers-unref.js        |    4 +-
 ...test-timers-unrefd-interval-still-fires.js |    2 +-
 .../test-timers-unrefed-in-beforeexit.js      |    2 +-
 .../test-timers-unrefed-in-callback.js        |    2 +-
 .../test/parallel/test-timers-user-call.js    |    2 +-
 .../test/parallel/test-timers-zero-timeout.js |    2 +-
 .../node_compat/test/parallel/test-timers.js  |    7 +-
 .../parallel/test-tls-enable-trace-cli.js     |    4 +-
 .../test/parallel/test-tls-enable-trace.js    |    4 +-
 .../test-tls-env-extra-ca-no-crypto.js        |    2 +-
 .../test-trace-events-async-hooks-dynamic.js  |    2 +-
 .../test-trace-events-async-hooks-worker.js   |    2 +-
 .../test/parallel/test-tty-stdin-end.js       |    2 +-
 .../test/parallel/test-tz-version.js          |    2 +-
 .../test/parallel/test-url-parse-query.js     |    2 +-
 .../test/parallel/test-url-relative.js        |    4 +-
 .../test/parallel/test-utf8-scripts.js        |    2 +-
 .../test-util-deprecate-invalid-code.js       |    2 +-
 .../test/parallel/test-util-deprecate.js      |    2 +-
 .../test/parallel/test-util-inherits.js       |    2 +-
 ...est-util-inspect-getters-accessing-this.js |    2 +-
 .../test-util-inspect-long-running.js         |    2 +-
 .../test-util-primordial-monkeypatching.js    |    2 +-
 .../test/parallel/test-util-types-exists.js   |    2 +-
 .../test/parallel/test-uv-binding-constant.js |    2 +-
 .../test/parallel/test-v8-coverage.js         |    2 +-
 .../parallel/test-v8-deserialize-buffer.js    |    6 +-
 .../test/parallel/test-v8-flag-pool-size-0.js |    2 +-
 .../test/parallel/test-v8-global-setter.js    |    2 +-
 .../test/parallel/test-v8-stop-coverage.js    |    2 +-
 .../parallel/test-v8-take-coverage-noop.js    |    2 +-
 .../test/parallel/test-v8-take-coverage.js    |    2 +-
 .../parallel/test-vm-access-process-env.js    |    2 +-
 ...t-vm-attributes-property-not-on-sandbox.js |    2 +-
 .../test/parallel/test-vm-codegen.js          |    2 +-
 .../parallel/test-vm-context-async-script.js  |    2 +-
 .../test-vm-context-property-forwarding.js    |    2 +-
 .../test-vm-create-and-run-in-context.js      |    4 +-
 .../test-vm-create-context-accessors.js       |    2 +-
 .../parallel/test-vm-create-context-arg.js    |    2 +-
 ...st-vm-create-context-circular-reference.js |    2 +-
 .../test/parallel/test-vm-createcacheddata.js |    2 +-
 .../test/parallel/test-vm-cross-context.js    |    4 +-
 .../test-vm-data-property-writable.js         |    2 +-
 .../parallel/test-vm-deleting-property.js     |    2 +-
 .../parallel/test-vm-function-declaration.js  |    2 +-
 .../parallel/test-vm-function-redefinition.js |    2 +-
 .../test/parallel/test-vm-getters.js          |    2 +-
 .../parallel/test-vm-global-assignment.js     |    2 +-
 .../test-vm-global-define-property.js         |    2 +-
 .../test/parallel/test-vm-global-identity.js  |    2 +-
 .../test/parallel/test-vm-global-setter.js    |    2 +-
 .../test/parallel/test-vm-harmony-symbols.js  |    2 +-
 .../parallel/test-vm-indexed-properties.js    |    2 +-
 .../parallel/test-vm-inherited_properties.js  |    2 +-
 .../test/parallel/test-vm-is-context.js       |    2 +-
 .../test/parallel/test-vm-low-stack-space.js  |    2 +-
 .../test-vm-new-script-new-context.js         |   36 +-
 .../test-vm-new-script-this-context.js        |   34 +-
 .../test/parallel/test-vm-not-strict.js       |    2 +-
 .../parallel/test-vm-options-validation.js    |    2 +-
 ...st-vm-parse-abort-on-uncaught-exception.js |    2 +-
 .../parallel/test-vm-preserves-property.js    |    2 +-
 .../test-vm-property-not-on-sandbox.js        |    2 +-
 .../test/parallel/test-vm-proxies.js          |    2 +-
 .../test/parallel/test-vm-proxy-failure-CP.js |    2 +-
 .../test-vm-script-throw-in-tostring.js       |    2 +-
 .../parallel/test-vm-set-property-proxy.js    |    2 +-
 .../test-vm-set-proto-null-on-globalthis.js   |    2 +-
 .../test/parallel/test-vm-source-map-url.js   |    2 +-
 .../test/parallel/test-vm-static-this.js      |   28 +-
 .../test/parallel/test-vm-strict-mode.js      |    2 +-
 .../test/parallel/test-vm-symbols.js          |    2 +-
 .../test-vm-timeout-escape-promise-2.js       |    2 +-
 .../test-vm-timeout-escape-promise.js         |    2 +-
 .../test/parallel/test-vm-timeout.js          |    2 +-
 .../node_compat/test/parallel/test-weakref.js |    2 +-
 .../test-webcrypto-encrypt-decrypt.js         |    2 +-
 .../test/parallel/test-websocket.js           |    4 +-
 .../parallel/test-webstream-string-tag.js     |    2 +-
 .../test-whatwg-encoding-custom-api-basics.js |    2 +-
 ...g-encoding-custom-textdecoder-ignorebom.js |    2 +-
 ...g-encoding-custom-textdecoder-streaming.js |    2 +-
 ...ents-add-event-listener-options-passive.js |    2 +-
 ...vents-add-event-listener-options-signal.js |    2 +-
 .../test-whatwg-events-customevent.js         |    2 +-
 .../test-whatwg-readablebytestreambyob.js     |    2 +-
 .../test-whatwg-url-custom-deepequal.js       |    2 +-
 .../parallel/test-whatwg-url-custom-global.js |    6 +-
 ...test-whatwg-url-custom-href-side-effect.js |    2 +-
 .../test-whatwg-url-custom-tostringtag.js     |    2 +-
 .../test-whatwg-url-override-hostname.js      |    2 +-
 .../parallel/test-worker-cleanexit-with-js.js |    2 +-
 ...rker-message-port-infinite-message-loop.js |    2 +-
 ...essage-port-multiple-sharedarraybuffers.js |    2 +-
 .../parallel/test-worker-on-process-exit.js   |    2 +-
 .../test/parallel/test-worker-ref-onexit.js   |    2 +-
 .../parallel/test-worker-terminate-unrefed.js |    2 +-
 .../parallel/test-zlib-close-after-error.js   |    2 +-
 .../parallel/test-zlib-close-after-write.js   |    2 +-
 .../test/parallel/test-zlib-create-raw.js     |    2 +-
 .../test-zlib-deflate-raw-inherits.js         |    2 +-
 .../test/parallel/test-zlib-destroy-pipe.js   |    2 +-
 .../test-zlib-flush-write-sync-interleaved.js |    2 +-
 .../test/parallel/test-zlib-from-string.js    |    2 +-
 .../test/parallel/test-zlib-no-stream.js      |    2 +-
 .../test/parallel/test-zlib-sync-no-event.js  |    2 +-
 .../test/parallel/test-zlib-truncated.js      |    6 +-
 .../test/pseudo-tty/console-dumb-tty.js       |    2 +-
 .../test/pseudo-tty/console_colors.js         |    3 +-
 .../test/pseudo-tty/no_dropped_stdio.js       |    2 +-
 .../test/pseudo-tty/no_interleaved_stdio.js   |    2 +-
 .../test-set-raw-mode-reset-process-exit.js   |    2 +-
 .../pseudo-tty/test-set-raw-mode-reset.js     |    2 +-
 .../test-tty-color-support-warning-2.js       |    2 +-
 .../test-tty-color-support-warning.js         |    2 +-
 .../pseudo-tty/test-tty-stdin-call-end.js     |    2 +-
 .../test/pseudo-tty/test-tty-stdin-end.js     |    2 +-
 .../test/pseudo-tty/test-tty-stdout-end.js    |    2 +-
 ...est-crypto-timing-safe-equal-benchmarks.js |  129 -
 .../test/pummel/test-fs-largefile.js          |    2 +-
 .../pummel/test-fs-readfile-tostring-fail.js  |    7 +-
 .../test-heapsnapshot-near-heap-limit-big.js  |    2 +-
 .../test/pummel/test-net-many-clients.js      |    2 +-
 .../test/pummel/test-net-pingpong-delay.js    |    2 +-
 .../test/pummel/test-process-cpuUsage.js      |    2 +-
 .../test/pummel/test-stream-pipe-multi.js     |    2 +-
 .../test-buffer-creation-regression.js        |    2 +-
 .../sequential/test-child-process-exit.js     |    2 +-
 ...p-server-keep-alive-timeout-slow-server.js |    2 +-
 .../test-net-connect-local-error.js           |    2 +-
 .../test/sequential/test-net-response-size.js |    2 +-
 .../test/sequential/test-net-server-bind.js   |    2 +-
 .../test/sequential/test-tls-lookup.js        |    2 +-
 995 files changed, 4350 insertions(+), 4264 deletions(-)
 delete mode 100644 tests/node_compat/test/message/eval_messages.js
 delete mode 100644 tests/node_compat/test/message/stdin_messages.js
 delete mode 100644 tests/node_compat/test/parallel/test-assert-strict-exists.js
 delete mode 100644 tests/node_compat/test/parallel/test-blob-buffer-too-large.js
 delete mode 100644 tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-async-error.js
 delete mode 100644 tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-async.js
 delete mode 100644 tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-run-stores.js
 delete mode 100644 tests/node_compat/test/pummel/test-crypto-timing-safe-equal-benchmarks.js

diff --git a/tests/node_compat/config.jsonc b/tests/node_compat/config.jsonc
index 29595981eea7e5..3e7dc2b7c493c9 100644
--- a/tests/node_compat/config.jsonc
+++ b/tests/node_compat/config.jsonc
@@ -1,6 +1,6 @@
 {
   "ignore": {
-    "common": ["index.js", "internet.js"],
+    "common": ["duplexpair.js", "index.js", "internet.js"],
     "fixtures": [
       "baz.js",
       "child-process-spawn-node.js",
@@ -18,6 +18,8 @@
       // "test-dns.js"
     ],
     "parallel": [
+      "test-arm-math-illegal-instruction.js",
+      "test-assert-fail.js",
       "test-assert.js",
       "test-blocklist.js",
       "test-buffer-alloc.js",
@@ -25,6 +27,8 @@
       "test-buffer-from.js",
       "test-buffer-includes.js",
       "test-buffer-indexof.js",
+      "test-buffer-tostring-range.js",
+      "test-buffer-write.js",
       "test-child-process-exec-abortcontroller-promisified.js",
       "test-child-process-exec-encoding.js",
       "test-child-process-exec-maxbuf.js",
@@ -39,53 +43,116 @@
       // TODO(littledivy): windows ipc streams not yet implemented
       "test-child-process-fork-ref.js",
       "test-child-process-fork-ref2.js",
+      "test-child-process-kill.js",
+      "test-child-process-send-type-error.js",
+      "test-console-formatTime.js",
       "test-console-instance.js",
+      "test-console-tty-colors.js",
+      "test-crypto-dh-errors.js",
+      "test-crypto-dh-odd-key.js",
       "test-crypto-dh.js",
+      "test-crypto-hash.js",
       "test-crypto-hkdf.js",
       "test-crypto-hmac.js",
+      "test-crypto-keygen-missing-oid.js",
+      "test-crypto-no-algorithm.js",
       "test-crypto-pbkdf2.js",
       "test-crypto-prime.js",
+      "test-crypto-publicDecrypt-fails-first-time.js",
+      "test-crypto-scrypt.js",
       "test-crypto-stream.js",
       "test-crypto-x509.js",
+      "test-dgram-createSocket-type.js",
       "test-dgram-custom-lookup.js",
       "test-dgram-ipv6only.js",
       "test-dgram-send-cb-quelches-error.js",
       "test-dgram-socket-buffer-size.js",
+      "test-diagnostics-channel-net.js",
+      "test-diagnostics-channel-sync-unsubscribe.js",
+      "test-diagnostics-channel-tracing-channel-args-types.js",
       "test-dns-lookup.js",
+      "test-dns-memory-error.js",
       "test-dns-resolveany.js",
       "test-dns.js",
+      "test-dsa-fips-invalid-key.js",
+      "test-error-aggregateTwoErrors.js",
+      "test-error-prepare-stack-trace.js",
+      "test-event-emitter-max-listeners-warning-for-null.js",
+      "test-event-emitter-max-listeners-warning-for-symbol.js",
+      "test-event-emitter-max-listeners-warning.js",
       "test-event-emitter-max-listeners.js",
       "test-event-emitter-no-error-provided-to-error-event.js",
       "test-event-emitter-prepend.js",
+      "test-events-on-async-iterator.js",
       "test-events-once.js",
+      "test-fs-access.js",
       "test-fs-append-file.js",
       "test-fs-chmod-mask.js",
       "test-fs-chmod.js",
       "test-fs-mkdir.js",
       "test-fs-open.js",
       "test-fs-opendir.js",
+      "test-fs-read-file-sync.js",
       "test-fs-read-stream.js",
       "test-fs-rmdir-recursive.js",
       "test-fs-write-file.js",
+      "test-http-localaddress.js",
+      "test-http-methods.js",
       "test-http-url.parse-https.request.js",
+      "test-http2-connect-options.js",
+      "test-https-client-renegotiation-limit.js",
+      "test-https-foafssl.js",
+      "test-https-localaddress.js",
+      "test-icu-env.js",
       "test-net-autoselectfamily.js",
       "test-net-better-error-messages-path.js",
       "test-net-connect-buffer.js",
       "test-net-connect-buffer2.js",
       "test-net-end-close.js",
+      "test-net-end-without-connect.js",
       "test-net-listen-invalid-port.js",
       "test-net-server-call-listen-multiple-times.js",
       "test-net-server-listen-path.js",
       "test-net-server-try-ports.js",
       "test-net-socket-timeout.js",
       "test-net-write-arguments.js",
+      "test-parse-args.mjs",
+      "test-path-join.js",
+      "test-path-makelong.js",
+      "test-path-normalize.js",
+      "test-path-relative.js",
       "test-path-resolve.js",
       "test-querystring.js",
       "test-readline-interface.js",
       "test-stdin-from-file-spawn.js",
+      "test-stream-duplex-destroy.js",
       "test-stream-duplex-from.js",
+      "test-stream-transform-destroy.js",
+      "test-stream-transform-split-highwatermark.js",
+      "test-stream-transform-split-objectmode.js",
+      "test-stream-writable-destroy.js",
+      "test-tls-alert-handling.js",
+      "test-tls-alert.js",
+      "test-tls-client-renegotiation-limit.js",
+      "test-tls-dhe.js",
+      "test-tls-ecdh-auto.js",
+      "test-tls-ecdh-multiple.js",
+      "test-tls-ecdh.js",
+      "test-tls-ocsp-callback.js",
+      "test-tls-psk-server.js",
+      "test-tls-securepair-server.js",
+      "test-tls-server-verify.js",
+      "test-tls-session-cache.js",
+      "test-tls-set-ciphers.js",
+      "test-tls-transport-destroy-after-own-gc.js",
       "test-ttywrap-invalid-fd.js",
+      "test-url-domain-ascii-unicode.js",
+      "test-url-fileurltopath.js",
+      "test-url-format-invalid-input.js",
+      "test-url-format-whatwg.js",
+      "test-url-format.js",
       "test-url-parse-invalid-input.js",
+      "test-url-pathtofileurl.js",
       "test-url-urltooptions.js",
       "test-util-format.js",
       "test-util-inspect-namespace.js",
@@ -95,6 +162,7 @@
       "test-util-promisify.js",
       "test-util-types.js",
       "test-util.js",
+      "test-uv-unmapped-exception.js",
       "test-v8-serdes.js",
       "test-webcrypto-sign-verify.js",
       "test-whatwg-url-properties.js",
@@ -104,11 +172,22 @@
       "test-zlib-empty-buffer.js",
       "test-zlib-invalid-input.js",
       "test-zlib-random-byte-pipes.js",
+      "test-zlib-unzip-one-byte-chunks.js",
+      "test-zlib-write-after-end.js",
       "test-zlib-write-after-flush.js",
       "test-zlib-zero-byte.js",
       "test-zlib-zero-windowBits.js"
     ],
-    "pummel": []
+    "pummel": [
+      "test-crypto-dh-hash.js",
+      "test-dh-regr.js",
+      "test-fs-watch-system-limit.js"
+    ],
+    "sequential": [
+      "test-tls-psk-client.js",
+      "test-tls-securepair-client.js",
+      "test-tls-session-timeout.js"
+    ]
   },
   "tests": {
     "abort": [
@@ -169,16 +248,13 @@
       "test-http-https-default-ports.js"
     ],
     "message": [
-      "eval_messages.js",
       "max_tick_depth.js",
-      "stdin_messages.js",
       "util_inspect_error.js"
     ],
     "parallel": [
       "test-arm-math-illegal-instruction.js",
       "test-assert-async.js",
       "test-assert-fail.js",
-      "test-assert-strict-exists.js",
       "test-assert.js",
       "test-async-hooks-run-in-async-scope-caught-exception.js",
       "test-async-hooks-run-in-async-scope-this-arg.js",
@@ -190,7 +266,6 @@
       "test-atomics-wake.js",
       "test-bad-unicode.js",
       "test-beforeexit-event-exit.js",
-      "test-blob-buffer-too-large.js",
       "test-blocklist.js",
       "test-btoa-atob.js",
       "test-buffer-alloc.js",
@@ -390,11 +465,8 @@
       "test-diagnostics-channel-symbol-named.js",
       "test-diagnostics-channel-sync-unsubscribe.js",
       "test-diagnostics-channel-tracing-channel-args-types.js",
-      "test-diagnostics-channel-tracing-channel-async-error.js",
-      "test-diagnostics-channel-tracing-channel-async.js",
       "test-diagnostics-channel-tracing-channel-callback-run-stores.js",
       "test-diagnostics-channel-tracing-channel-promise-run-stores.js",
-      "test-diagnostics-channel-tracing-channel-run-stores.js",
       "test-diagnostics-channel-tracing-channel-sync-error.js",
       "test-diagnostics-channel-tracing-channel-sync.js",
       "test-diagnostics-channel-udp.js",
@@ -1277,7 +1349,6 @@
     ],
     "pummel": [
       "test-crypto-dh-hash.js",
-      "test-crypto-timing-safe-equal-benchmarks.js",
       "test-dh-regr.js",
       "test-fs-largefile.js",
       "test-fs-readfile-tostring-fail.js",
diff --git a/tests/node_compat/runner/TODO.md b/tests/node_compat/runner/TODO.md
index 06c4cd800664cc..78103182b66e4b 100644
--- a/tests/node_compat/runner/TODO.md
+++ b/tests/node_compat/runner/TODO.md
@@ -1,2553 +1,2873 @@
 <!-- deno-fmt-ignore-file -->
 # Remaining Node Tests
 
-1155 tests out of 3681 have been ported from Node 20.11.1 (31.38% ported, 69.17% remaining).
+1147 tests out of 3993 have been ported from Node 23.9.0 (28.73% ported, 71.78% remaining).
 
 NOTE: This file should not be manually edited. Please edit `tests/node_compat/config.json` and run `deno task setup` in `tests/node_compat/runner` dir instead.
 
-- [abort/test-abort-backtrace.js](https://github.com/nodejs/node/tree/v20.11.1/test/abort/test-abort-backtrace.js)
-- [abort/test-abort-fatal-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/abort/test-abort-fatal-error.js)
-- [abort/test-abort-uncaught-exception.js](https://github.com/nodejs/node/tree/v20.11.1/test/abort/test-abort-uncaught-exception.js)
-- [abort/test-addon-register-signal-handler.js](https://github.com/nodejs/node/tree/v20.11.1/test/abort/test-addon-register-signal-handler.js)
-- [abort/test-http-parser-consume.js](https://github.com/nodejs/node/tree/v20.11.1/test/abort/test-http-parser-consume.js)
-- [abort/test-process-abort-exitcode.js](https://github.com/nodejs/node/tree/v20.11.1/test/abort/test-process-abort-exitcode.js)
-- [abort/test-signal-handler.js](https://github.com/nodejs/node/tree/v20.11.1/test/abort/test-signal-handler.js)
-- [abort/test-worker-abort-uncaught-exception.js](https://github.com/nodejs/node/tree/v20.11.1/test/abort/test-worker-abort-uncaught-exception.js)
-- [abort/test-zlib-invalid-internals-usage.js](https://github.com/nodejs/node/tree/v20.11.1/test/abort/test-zlib-invalid-internals-usage.js)
-- [benchmark/test-bechmark-readline.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-bechmark-readline.js)
-- [benchmark/test-benchmark-assert.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-assert.js)
-- [benchmark/test-benchmark-blob.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-blob.js)
-- [benchmark/test-benchmark-buffer.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-buffer.js)
-- [benchmark/test-benchmark-child-process.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-child-process.js)
-- [benchmark/test-benchmark-cluster.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-cluster.js)
-- [benchmark/test-benchmark-crypto.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-crypto.js)
-- [benchmark/test-benchmark-dgram.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-dgram.js)
-- [benchmark/test-benchmark-dns.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-dns.js)
-- [benchmark/test-benchmark-domain.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-domain.js)
-- [benchmark/test-benchmark-es.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-es.js)
-- [benchmark/test-benchmark-esm.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-esm.js)
-- [benchmark/test-benchmark-events.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-events.js)
-- [benchmark/test-benchmark-fs.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-fs.js)
-- [benchmark/test-benchmark-mime.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-mime.js)
-- [benchmark/test-benchmark-misc.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-misc.js)
-- [benchmark/test-benchmark-module.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-module.js)
-- [benchmark/test-benchmark-napi.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-napi.js)
-- [benchmark/test-benchmark-net.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-net.js)
-- [benchmark/test-benchmark-os.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-os.js)
-- [benchmark/test-benchmark-path.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-path.js)
-- [benchmark/test-benchmark-policy.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-policy.js)
-- [benchmark/test-benchmark-process.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-process.js)
-- [benchmark/test-benchmark-querystring.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-querystring.js)
-- [benchmark/test-benchmark-streams.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-streams.js)
-- [benchmark/test-benchmark-string_decoder.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-string_decoder.js)
-- [benchmark/test-benchmark-timers.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-timers.js)
-- [benchmark/test-benchmark-url.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-url.js)
-- [benchmark/test-benchmark-util.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-util.js)
-- [benchmark/test-benchmark-v8.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-v8.js)
-- [benchmark/test-benchmark-validators.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-validators.js)
-- [benchmark/test-benchmark-vm.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-vm.js)
-- [benchmark/test-benchmark-webstreams.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-webstreams.js)
-- [benchmark/test-benchmark-zlib.js](https://github.com/nodejs/node/tree/v20.11.1/test/benchmark/test-benchmark-zlib.js)
-- [es-module/test-cjs-esm-warn.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-cjs-esm-warn.js)
-- [es-module/test-cjs-legacyMainResolve-permission.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-cjs-legacyMainResolve-permission.js)
-- [es-module/test-cjs-legacyMainResolve.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-cjs-legacyMainResolve.js)
-- [es-module/test-dynamic-import-script-lifetime.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-dynamic-import-script-lifetime.js)
-- [es-module/test-esm-assertionless-json-import.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-assertionless-json-import.js)
-- [es-module/test-esm-cjs-builtins.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-cjs-builtins.js)
-- [es-module/test-esm-cjs-exports.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-cjs-exports.js)
-- [es-module/test-esm-cjs-main.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-cjs-main.js)
-- [es-module/test-esm-data-urls.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-data-urls.js)
-- [es-module/test-esm-dynamic-import-attribute.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-dynamic-import-attribute.js)
-- [es-module/test-esm-dynamic-import-commonjs.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-dynamic-import-commonjs.js)
-- [es-module/test-esm-dynamic-import.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-dynamic-import.js)
-- [es-module/test-esm-encoded-path-native.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-encoded-path-native.js)
-- [es-module/test-esm-error-cache.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-error-cache.js)
-- [es-module/test-esm-import-attributes-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-import-attributes-errors.js)
-- [es-module/test-esm-import-attributes-validation.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-import-attributes-validation.js)
-- [es-module/test-esm-invalid-data-urls.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-invalid-data-urls.js)
-- [es-module/test-esm-invalid-pjson.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-invalid-pjson.js)
-- [es-module/test-esm-loader-modulemap.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-loader-modulemap.js)
-- [es-module/test-esm-loader-search.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-loader-search.js)
-- [es-module/test-esm-named-exports.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-named-exports.js)
-- [es-module/test-esm-preserve-symlinks-main.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-preserve-symlinks-main.js)
-- [es-module/test-esm-preserve-symlinks.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-preserve-symlinks.js)
-- [es-module/test-esm-repl-imports.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-repl-imports.js)
-- [es-module/test-esm-repl.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-repl.js)
-- [es-module/test-esm-symlink-main.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-symlink-main.js)
-- [es-module/test-esm-symlink-type.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-symlink-type.js)
-- [es-module/test-esm-symlink.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-symlink.js)
-- [es-module/test-esm-type-field-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-type-field-errors.js)
-- [es-module/test-esm-undefined-cjs-global-like-variables.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-undefined-cjs-global-like-variables.js)
-- [es-module/test-esm-unknown-extension.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-unknown-extension.js)
-- [es-module/test-esm-url-extname.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-esm-url-extname.js)
-- [es-module/test-loaders-hidden-from-users.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-loaders-hidden-from-users.js)
-- [es-module/test-vm-compile-function-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-vm-compile-function-leak.js)
-- [es-module/test-vm-contextified-script-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-vm-contextified-script-leak.js)
-- [es-module/test-vm-source-text-module-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-vm-source-text-module-leak.js)
-- [es-module/test-vm-synthetic-module-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-vm-synthetic-module-leak.js)
-- [es-module/test-wasm-memory-out-of-bound.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-wasm-memory-out-of-bound.js)
-- [es-module/test-wasm-simple.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-wasm-simple.js)
-- [es-module/test-wasm-web-api.js](https://github.com/nodejs/node/tree/v20.11.1/test/es-module/test-wasm-web-api.js)
-- [internet/test-corepack-yarn-install.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-corepack-yarn-install.js)
-- [internet/test-dgram-broadcast-multi-process.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-dgram-broadcast-multi-process.js)
-- [internet/test-dgram-connect.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-dgram-connect.js)
-- [internet/test-dgram-membership.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-dgram-membership.js)
-- [internet/test-dgram-multicast-multi-process.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-dgram-multicast-multi-process.js)
-- [internet/test-dgram-multicast-set-interface-lo.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-dgram-multicast-set-interface-lo.js)
-- [internet/test-dgram-multicast-ssm-multi-process.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-dgram-multicast-ssm-multi-process.js)
-- [internet/test-dgram-multicast-ssmv6-multi-process.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-dgram-multicast-ssmv6-multi-process.js)
-- [internet/test-dns-any.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-dns-any.js)
-- [internet/test-dns-cares-domains.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-dns-cares-domains.js)
-- [internet/test-dns-getDefaultResultOrder.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-dns-getDefaultResultOrder.js)
-- [internet/test-dns-ipv4.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-dns-ipv4.js)
-- [internet/test-dns-ipv6.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-dns-ipv6.js)
-- [internet/test-dns-txt-sigsegv.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-dns-txt-sigsegv.js)
-- [internet/test-dns.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-dns.js)
-- [internet/test-http-dns-fail.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-http-dns-fail.js)
-- [internet/test-http2-issue-32922.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-http2-issue-32922.js)
-- [internet/test-https-autoselectfamily-slow-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-https-autoselectfamily-slow-timeout.js)
-- [internet/test-https-issue-43963.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-https-issue-43963.js)
-- [internet/test-inspector-help-page.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-inspector-help-page.js)
-- [internet/test-net-autoselectfamily-timeout-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-net-autoselectfamily-timeout-close.js)
-- [internet/test-net-connect-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-net-connect-timeout.js)
-- [internet/test-net-connect-unref.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-net-connect-unref.js)
-- [internet/test-snapshot-dns-lookup.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-snapshot-dns-lookup.js)
-- [internet/test-snapshot-dns-resolve.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-snapshot-dns-resolve.js)
-- [internet/test-tls-add-ca-cert.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-tls-add-ca-cert.js)
-- [internet/test-tls-autoselectfamily-backing-socket.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-tls-autoselectfamily-backing-socket.js)
-- [internet/test-tls-autoselectfamily-servername.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-tls-autoselectfamily-servername.js)
-- [internet/test-trace-events-dns.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-trace-events-dns.js)
-- [internet/test-uv-threadpool-schedule.js](https://github.com/nodejs/node/tree/v20.11.1/test/internet/test-uv-threadpool-schedule.js)
-- [known_issues/test-cli-print-var-crypto.js](https://github.com/nodejs/node/tree/v20.11.1/test/known_issues/test-cli-print-var-crypto.js)
-- [known_issues/test-cwd-enoent-file.js](https://github.com/nodejs/node/tree/v20.11.1/test/known_issues/test-cwd-enoent-file.js)
-- [known_issues/test-dgram-bind-shared-ports-after-port-0.js](https://github.com/nodejs/node/tree/v20.11.1/test/known_issues/test-dgram-bind-shared-ports-after-port-0.js)
-- [known_issues/test-fs-writeFileSync-invalid-windows.js](https://github.com/nodejs/node/tree/v20.11.1/test/known_issues/test-fs-writeFileSync-invalid-windows.js)
-- [known_issues/test-http-path-contains-unicode.js](https://github.com/nodejs/node/tree/v20.11.1/test/known_issues/test-http-path-contains-unicode.js)
-- [known_issues/test-inspector-cluster-port-clash.js](https://github.com/nodejs/node/tree/v20.11.1/test/known_issues/test-inspector-cluster-port-clash.js)
-- [known_issues/test-permission-model-path-resolution.js](https://github.com/nodejs/node/tree/v20.11.1/test/known_issues/test-permission-model-path-resolution.js)
-- [known_issues/test-repl-require-context.js](https://github.com/nodejs/node/tree/v20.11.1/test/known_issues/test-repl-require-context.js)
-- [known_issues/test-stdin-is-always-net.socket.js](https://github.com/nodejs/node/tree/v20.11.1/test/known_issues/test-stdin-is-always-net.socket.js)
-- [known_issues/test-stream-writable-sync-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/known_issues/test-stream-writable-sync-error.js)
-- [known_issues/test-url-parse-conformance.js](https://github.com/nodejs/node/tree/v20.11.1/test/known_issues/test-url-parse-conformance.js)
-- [known_issues/test-vm-function-declaration-uses-define.js](https://github.com/nodejs/node/tree/v20.11.1/test/known_issues/test-vm-function-declaration-uses-define.js)
-- [known_issues/test-vm-ownkeys.js](https://github.com/nodejs/node/tree/v20.11.1/test/known_issues/test-vm-ownkeys.js)
-- [known_issues/test-vm-ownpropertynames.js](https://github.com/nodejs/node/tree/v20.11.1/test/known_issues/test-vm-ownpropertynames.js)
-- [known_issues/test-vm-ownpropertysymbols.js](https://github.com/nodejs/node/tree/v20.11.1/test/known_issues/test-vm-ownpropertysymbols.js)
-- [known_issues/test-vm-timeout-escape-nexttick.js](https://github.com/nodejs/node/tree/v20.11.1/test/known_issues/test-vm-timeout-escape-nexttick.js)
-- [known_issues/test-vm-timeout-escape-queuemicrotask.js](https://github.com/nodejs/node/tree/v20.11.1/test/known_issues/test-vm-timeout-escape-queuemicrotask.js)
-- [message/assert_throws_stack.js](https://github.com/nodejs/node/tree/v20.11.1/test/message/assert_throws_stack.js)
-- [message/internal_assert.js](https://github.com/nodejs/node/tree/v20.11.1/test/message/internal_assert.js)
-- [message/internal_assert_fail.js](https://github.com/nodejs/node/tree/v20.11.1/test/message/internal_assert_fail.js)
-- [message/nexttick_throw.js](https://github.com/nodejs/node/tree/v20.11.1/test/message/nexttick_throw.js)
-- [message/util-inspect-error-cause.js](https://github.com/nodejs/node/tree/v20.11.1/test/message/util-inspect-error-cause.js)
-- [parallel/test-abortcontroller.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-abortcontroller.js)
-- [parallel/test-aborted-util.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-aborted-util.js)
-- [parallel/test-abortsignal-cloneable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-abortsignal-cloneable.js)
-- [parallel/test-accessor-properties.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-accessor-properties.js)
-- [parallel/test-assert-builtins-not-read-from-filesystem.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-assert-builtins-not-read-from-filesystem.js)
-- [parallel/test-assert-calltracker-calls.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-assert-calltracker-calls.js)
-- [parallel/test-assert-calltracker-getCalls.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-assert-calltracker-getCalls.js)
-- [parallel/test-assert-calltracker-report.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-assert-calltracker-report.js)
-- [parallel/test-assert-calltracker-verify.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-assert-calltracker-verify.js)
-- [parallel/test-assert-checktag.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-assert-checktag.js)
-- [parallel/test-assert-deep.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-assert-deep.js)
-- [parallel/test-assert-esm-cjs-message-verify.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-assert-esm-cjs-message-verify.js)
-- [parallel/test-assert-fail-deprecation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-assert-fail-deprecation.js)
-- [parallel/test-assert-first-line.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-assert-first-line.js)
-- [parallel/test-assert-if-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-assert-if-error.js)
-- [parallel/test-assert-typedarray-deepequal.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-assert-typedarray-deepequal.js)
-- [parallel/test-async-hooks-async-await.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-async-await.js)
-- [parallel/test-async-hooks-asyncresource-constructor.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-asyncresource-constructor.js)
-- [parallel/test-async-hooks-close-during-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-close-during-destroy.js)
-- [parallel/test-async-hooks-constructor.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-constructor.js)
-- [parallel/test-async-hooks-correctly-switch-promise-hook.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-correctly-switch-promise-hook.js)
-- [parallel/test-async-hooks-destroy-on-gc.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-destroy-on-gc.js)
-- [parallel/test-async-hooks-disable-during-promise.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-disable-during-promise.js)
-- [parallel/test-async-hooks-disable-gc-tracking.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-disable-gc-tracking.js)
-- [parallel/test-async-hooks-enable-before-promise-resolve.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-enable-before-promise-resolve.js)
-- [parallel/test-async-hooks-enable-disable-enable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-enable-disable-enable.js)
-- [parallel/test-async-hooks-enable-disable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-enable-disable.js)
-- [parallel/test-async-hooks-enable-during-promise.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-enable-during-promise.js)
-- [parallel/test-async-hooks-enable-recursive.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-enable-recursive.js)
-- [parallel/test-async-hooks-execution-async-resource-await.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-execution-async-resource-await.js)
-- [parallel/test-async-hooks-execution-async-resource.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-execution-async-resource.js)
-- [parallel/test-async-hooks-fatal-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-fatal-error.js)
-- [parallel/test-async-hooks-http-agent-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-http-agent-destroy.js)
-- [parallel/test-async-hooks-http-agent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-http-agent.js)
-- [parallel/test-async-hooks-http-parser-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-http-parser-destroy.js)
-- [parallel/test-async-hooks-prevent-double-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-prevent-double-destroy.js)
-- [parallel/test-async-hooks-promise-enable-disable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-promise-enable-disable.js)
-- [parallel/test-async-hooks-promise-triggerid.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-promise-triggerid.js)
-- [parallel/test-async-hooks-promise.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-promise.js)
-- [parallel/test-async-hooks-recursive-stack-runInAsyncScope.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-recursive-stack-runInAsyncScope.js)
-- [parallel/test-async-hooks-top-level-clearimmediate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-top-level-clearimmediate.js)
-- [parallel/test-async-hooks-vm-gc.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-vm-gc.js)
-- [parallel/test-async-hooks-worker-asyncfn-terminate-1.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-worker-asyncfn-terminate-1.js)
-- [parallel/test-async-hooks-worker-asyncfn-terminate-2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-worker-asyncfn-terminate-2.js)
-- [parallel/test-async-hooks-worker-asyncfn-terminate-3.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-worker-asyncfn-terminate-3.js)
-- [parallel/test-async-hooks-worker-asyncfn-terminate-4.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-hooks-worker-asyncfn-terminate-4.js)
-- [parallel/test-async-local-storage-exit-does-not-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-local-storage-exit-does-not-leak.js)
-- [parallel/test-async-wrap-constructor.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-wrap-constructor.js)
-- [parallel/test-async-wrap-destroyid.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-wrap-destroyid.js)
-- [parallel/test-async-wrap-pop-id-during-load.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-wrap-pop-id-during-load.js)
-- [parallel/test-async-wrap-promise-after-enabled.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-wrap-promise-after-enabled.js)
-- [parallel/test-async-wrap-tlssocket-asyncreset.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-wrap-tlssocket-asyncreset.js)
-- [parallel/test-async-wrap-trigger-id.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-wrap-trigger-id.js)
-- [parallel/test-async-wrap-uncaughtexception.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-async-wrap-uncaughtexception.js)
-- [parallel/test-asyncresource-bind.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-asyncresource-bind.js)
-- [parallel/test-bash-completion.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-bash-completion.js)
-- [parallel/test-benchmark-cli.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-benchmark-cli.js)
-- [parallel/test-binding-constants.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-binding-constants.js)
-- [parallel/test-blob-createobjecturl.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-blob-createobjecturl.js)
-- [parallel/test-blob-file-backed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-blob-file-backed.js)
-- [parallel/test-blob.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-blob.js)
-- [parallel/test-blocklist-clone.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-blocklist-clone.js)
-- [parallel/test-bootstrap-modules.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-bootstrap-modules.js)
-- [parallel/test-broadcastchannel-custom-inspect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-broadcastchannel-custom-inspect.js)
-- [parallel/test-buffer-backing-arraybuffer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-buffer-backing-arraybuffer.js)
-- [parallel/test-buffer-compare.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-buffer-compare.js)
-- [parallel/test-buffer-constructor-deprecation-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-buffer-constructor-deprecation-error.js)
-- [parallel/test-buffer-constructor-node-modules-paths.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-buffer-constructor-node-modules-paths.js)
-- [parallel/test-buffer-constructor-outside-node-modules.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-buffer-constructor-outside-node-modules.js)
-- [parallel/test-buffer-fill.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-buffer-fill.js)
-- [parallel/test-buffer-inspect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-buffer-inspect.js)
-- [parallel/test-buffer-pending-deprecation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-buffer-pending-deprecation.js)
-- [parallel/test-buffer-pool-untransferable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-buffer-pool-untransferable.js)
-- [parallel/test-buffer-prototype-inspect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-buffer-prototype-inspect.js)
-- [parallel/test-buffer-set-inspect-max-bytes.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-buffer-set-inspect-max-bytes.js)
-- [parallel/test-c-ares.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-c-ares.js)
-- [parallel/test-child-process-advanced-serialization-largebuffer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-advanced-serialization-largebuffer.js)
-- [parallel/test-child-process-advanced-serialization.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-advanced-serialization.js)
-- [parallel/test-child-process-bad-stdio.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-bad-stdio.js)
-- [parallel/test-child-process-can-write-to-stdout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-can-write-to-stdout.js)
-- [parallel/test-child-process-constructor.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-constructor.js)
-- [parallel/test-child-process-cwd.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-cwd.js)
-- [parallel/test-child-process-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-destroy.js)
-- [parallel/test-child-process-disconnect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-disconnect.js)
-- [parallel/test-child-process-env.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-env.js)
-- [parallel/test-child-process-exec-any-shells-windows.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-exec-any-shells-windows.js)
-- [parallel/test-child-process-exec-timeout-expire.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-exec-timeout-expire.js)
-- [parallel/test-child-process-exec-timeout-kill.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-exec-timeout-kill.js)
-- [parallel/test-child-process-execFile-promisified-abortController.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-execFile-promisified-abortController.js)
-- [parallel/test-child-process-fork-abort-signal.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork-abort-signal.js)
-- [parallel/test-child-process-fork-and-spawn.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork-and-spawn.js)
-- [parallel/test-child-process-fork-args.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork-args.js)
-- [parallel/test-child-process-fork-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork-close.js)
-- [parallel/test-child-process-fork-closed-channel-segfault.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork-closed-channel-segfault.js)
-- [parallel/test-child-process-fork-detached.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork-detached.js)
-- [parallel/test-child-process-fork-dgram.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork-dgram.js)
-- [parallel/test-child-process-fork-exec-argv.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork-exec-argv.js)
-- [parallel/test-child-process-fork-exec-path.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork-exec-path.js)
-- [parallel/test-child-process-fork-getconnections.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork-getconnections.js)
-- [parallel/test-child-process-fork-net-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork-net-server.js)
-- [parallel/test-child-process-fork-net-socket.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork-net-socket.js)
-- [parallel/test-child-process-fork-net.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork-net.js)
-- [parallel/test-child-process-fork-no-shell.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork-no-shell.js)
-- [parallel/test-child-process-fork-stdio-string-variant.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork-stdio-string-variant.js)
-- [parallel/test-child-process-fork-stdio.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork-stdio.js)
-- [parallel/test-child-process-fork-timeout-kill-signal.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork-timeout-kill-signal.js)
-- [parallel/test-child-process-fork.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-fork.js)
-- [parallel/test-child-process-http-socket-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-http-socket-leak.js)
-- [parallel/test-child-process-internal.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-internal.js)
-- [parallel/test-child-process-no-deprecation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-no-deprecation.js)
-- [parallel/test-child-process-pipe-dataflow.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-pipe-dataflow.js)
-- [parallel/test-child-process-promisified.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-promisified.js)
-- [parallel/test-child-process-recv-handle.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-recv-handle.js)
-- [parallel/test-child-process-reject-null-bytes.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-reject-null-bytes.js)
-- [parallel/test-child-process-send-after-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-send-after-close.js)
-- [parallel/test-child-process-send-cb.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-send-cb.js)
-- [parallel/test-child-process-send-keep-open.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-send-keep-open.js)
-- [parallel/test-child-process-send-returns-boolean.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-send-returns-boolean.js)
-- [parallel/test-child-process-send-utf8.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-send-utf8.js)
-- [parallel/test-child-process-server-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-server-close.js)
-- [parallel/test-child-process-silent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-silent.js)
-- [parallel/test-child-process-spawn-argv0.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-spawn-argv0.js)
-- [parallel/test-child-process-spawn-controller.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-spawn-controller.js)
-- [parallel/test-child-process-spawn-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-spawn-error.js)
-- [parallel/test-child-process-spawn-shell.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-spawn-shell.js)
-- [parallel/test-child-process-spawn-timeout-kill-signal.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-spawn-timeout-kill-signal.js)
-- [parallel/test-child-process-spawn-typeerror.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-spawn-typeerror.js)
-- [parallel/test-child-process-spawnsync-input.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-spawnsync-input.js)
-- [parallel/test-child-process-spawnsync-kill-signal.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-spawnsync-kill-signal.js)
-- [parallel/test-child-process-spawnsync-shell.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-spawnsync-shell.js)
-- [parallel/test-child-process-spawnsync-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-spawnsync-timeout.js)
-- [parallel/test-child-process-stdin.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-stdin.js)
-- [parallel/test-child-process-stdio-big-write-end.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-stdio-big-write-end.js)
-- [parallel/test-child-process-stdio-merge-stdouts-into-cat.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-stdio-merge-stdouts-into-cat.js)
-- [parallel/test-child-process-stdio-reuse-readable-stdio.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-stdio-reuse-readable-stdio.js)
-- [parallel/test-child-process-stdio.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-stdio.js)
-- [parallel/test-child-process-stdout-ipc.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-stdout-ipc.js)
-- [parallel/test-child-process-uid-gid.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-uid-gid.js)
-- [parallel/test-child-process-validate-stdio.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-validate-stdio.js)
-- [parallel/test-child-process-windows-hide.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-child-process-windows-hide.js)
-- [parallel/test-cli-bad-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cli-bad-options.js)
-- [parallel/test-cli-eval-event.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cli-eval-event.js)
-- [parallel/test-cli-eval.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cli-eval.js)
-- [parallel/test-cli-node-options-disallowed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cli-node-options-disallowed.js)
-- [parallel/test-cli-node-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cli-node-options.js)
-- [parallel/test-cli-node-print-help.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cli-node-print-help.js)
-- [parallel/test-cli-options-negation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cli-options-negation.js)
-- [parallel/test-cli-options-precedence.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cli-options-precedence.js)
-- [parallel/test-cli-permission-deny-fs.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cli-permission-deny-fs.js)
-- [parallel/test-cli-permission-multiple-allow.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cli-permission-multiple-allow.js)
-- [parallel/test-cli-syntax-eval.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cli-syntax-eval.js)
-- [parallel/test-cli-syntax-piped-bad.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cli-syntax-piped-bad.js)
-- [parallel/test-cli-syntax-piped-good.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cli-syntax-piped-good.js)
-- [parallel/test-cluster-accept-fail.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-accept-fail.js)
-- [parallel/test-cluster-advanced-serialization.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-advanced-serialization.js)
-- [parallel/test-cluster-basic.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-basic.js)
-- [parallel/test-cluster-bind-privileged-port.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-bind-privileged-port.js)
-- [parallel/test-cluster-bind-twice.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-bind-twice.js)
-- [parallel/test-cluster-call-and-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-call-and-destroy.js)
-- [parallel/test-cluster-child-index-dgram.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-child-index-dgram.js)
-- [parallel/test-cluster-child-index-net.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-child-index-net.js)
-- [parallel/test-cluster-concurrent-disconnect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-concurrent-disconnect.js)
-- [parallel/test-cluster-cwd.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-cwd.js)
-- [parallel/test-cluster-dgram-1.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-dgram-1.js)
-- [parallel/test-cluster-dgram-2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-dgram-2.js)
-- [parallel/test-cluster-dgram-bind-fd.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-dgram-bind-fd.js)
-- [parallel/test-cluster-dgram-ipv6only.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-dgram-ipv6only.js)
-- [parallel/test-cluster-dgram-reuse.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-dgram-reuse.js)
-- [parallel/test-cluster-disconnect-before-exit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-disconnect-before-exit.js)
-- [parallel/test-cluster-disconnect-exitedAfterDisconnect-race.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-disconnect-exitedAfterDisconnect-race.js)
-- [parallel/test-cluster-disconnect-idle-worker.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-disconnect-idle-worker.js)
-- [parallel/test-cluster-disconnect-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-disconnect-leak.js)
-- [parallel/test-cluster-disconnect-race.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-disconnect-race.js)
-- [parallel/test-cluster-disconnect-unshared-tcp.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-disconnect-unshared-tcp.js)
-- [parallel/test-cluster-disconnect-unshared-udp.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-disconnect-unshared-udp.js)
-- [parallel/test-cluster-disconnect-with-no-workers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-disconnect-with-no-workers.js)
-- [parallel/test-cluster-disconnect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-disconnect.js)
-- [parallel/test-cluster-eaccess.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-eaccess.js)
-- [parallel/test-cluster-eaddrinuse.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-eaddrinuse.js)
-- [parallel/test-cluster-fork-env.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-fork-env.js)
-- [parallel/test-cluster-fork-stdio.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-fork-stdio.js)
-- [parallel/test-cluster-fork-windowsHide.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-fork-windowsHide.js)
-- [parallel/test-cluster-http-pipe.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-http-pipe.js)
-- [parallel/test-cluster-invalid-message.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-invalid-message.js)
-- [parallel/test-cluster-ipc-throw.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-ipc-throw.js)
-- [parallel/test-cluster-kill-disconnect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-kill-disconnect.js)
-- [parallel/test-cluster-kill-infinite-loop.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-kill-infinite-loop.js)
-- [parallel/test-cluster-listen-pipe-readable-writable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-listen-pipe-readable-writable.js)
-- [parallel/test-cluster-listening-port.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-listening-port.js)
-- [parallel/test-cluster-message.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-message.js)
-- [parallel/test-cluster-net-listen-backlog.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-net-listen-backlog.js)
-- [parallel/test-cluster-net-listen-ipv6only-false.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-net-listen-ipv6only-false.js)
-- [parallel/test-cluster-net-listen-relative-path.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-net-listen-relative-path.js)
-- [parallel/test-cluster-net-listen.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-net-listen.js)
-- [parallel/test-cluster-net-send.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-net-send.js)
-- [parallel/test-cluster-net-server-drop-connection.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-net-server-drop-connection.js)
-- [parallel/test-cluster-primary-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-primary-error.js)
-- [parallel/test-cluster-primary-kill.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-primary-kill.js)
-- [parallel/test-cluster-process-disconnect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-process-disconnect.js)
-- [parallel/test-cluster-rr-domain-listen.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-rr-domain-listen.js)
-- [parallel/test-cluster-rr-handle-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-rr-handle-close.js)
-- [parallel/test-cluster-rr-handle-keep-loop-alive.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-rr-handle-keep-loop-alive.js)
-- [parallel/test-cluster-rr-handle-ref-unref.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-rr-handle-ref-unref.js)
-- [parallel/test-cluster-rr-ref.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-rr-ref.js)
-- [parallel/test-cluster-send-deadlock.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-send-deadlock.js)
-- [parallel/test-cluster-send-handle-twice.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-send-handle-twice.js)
-- [parallel/test-cluster-send-socket-to-worker-http-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-send-socket-to-worker-http-server.js)
-- [parallel/test-cluster-server-restart-none.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-server-restart-none.js)
-- [parallel/test-cluster-server-restart-rr.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-server-restart-rr.js)
-- [parallel/test-cluster-setup-primary-argv.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-setup-primary-argv.js)
-- [parallel/test-cluster-setup-primary-cumulative.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-setup-primary-cumulative.js)
-- [parallel/test-cluster-setup-primary-emit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-setup-primary-emit.js)
-- [parallel/test-cluster-setup-primary-multiple.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-setup-primary-multiple.js)
-- [parallel/test-cluster-setup-primary.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-setup-primary.js)
-- [parallel/test-cluster-shared-handle-bind-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-shared-handle-bind-error.js)
-- [parallel/test-cluster-shared-handle-bind-privileged-port.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-shared-handle-bind-privileged-port.js)
-- [parallel/test-cluster-shared-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-shared-leak.js)
-- [parallel/test-cluster-worker-constructor.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-worker-constructor.js)
-- [parallel/test-cluster-worker-death.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-worker-death.js)
-- [parallel/test-cluster-worker-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-worker-destroy.js)
-- [parallel/test-cluster-worker-disconnect-on-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-worker-disconnect-on-error.js)
-- [parallel/test-cluster-worker-disconnect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-worker-disconnect.js)
-- [parallel/test-cluster-worker-events.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-worker-events.js)
-- [parallel/test-cluster-worker-exit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-worker-exit.js)
-- [parallel/test-cluster-worker-forced-exit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-worker-forced-exit.js)
-- [parallel/test-cluster-worker-handle-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-worker-handle-close.js)
-- [parallel/test-cluster-worker-init.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-worker-init.js)
-- [parallel/test-cluster-worker-isconnected.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-worker-isconnected.js)
-- [parallel/test-cluster-worker-isdead.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-worker-isdead.js)
-- [parallel/test-cluster-worker-kill-signal.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-worker-kill-signal.js)
-- [parallel/test-cluster-worker-kill.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-worker-kill.js)
-- [parallel/test-cluster-worker-no-exit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-worker-no-exit.js)
-- [parallel/test-cluster-worker-wait-server-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cluster-worker-wait-server-close.js)
-- [parallel/test-code-cache.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-code-cache.js)
-- [parallel/test-common-countdown.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-common-countdown.js)
-- [parallel/test-common-expect-warning.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-common-expect-warning.js)
-- [parallel/test-common-gc.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-common-gc.js)
-- [parallel/test-common-must-not-call.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-common-must-not-call.js)
-- [parallel/test-common.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-common.js)
-- [parallel/test-console-clear.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-console-clear.js)
-- [parallel/test-console-count.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-console-count.js)
-- [parallel/test-console-issue-43095.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-console-issue-43095.js)
-- [parallel/test-console-methods.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-console-methods.js)
-- [parallel/test-console-stdio-setters.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-console-stdio-setters.js)
-- [parallel/test-console.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-console.js)
-- [parallel/test-constants.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-constants.js)
-- [parallel/test-corepack-version.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-corepack-version.js)
-- [parallel/test-coverage-with-inspector-disabled.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-coverage-with-inspector-disabled.js)
-- [parallel/test-crypto-aes-wrap.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-aes-wrap.js)
-- [parallel/test-crypto-async-sign-verify.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-async-sign-verify.js)
-- [parallel/test-crypto-authenticated-stream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-authenticated-stream.js)
-- [parallel/test-crypto-authenticated.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-authenticated.js)
-- [parallel/test-crypto-certificate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-certificate.js)
-- [parallel/test-crypto-cipher-decipher.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-cipher-decipher.js)
-- [parallel/test-crypto-cipheriv-decipheriv.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-cipheriv-decipheriv.js)
-- [parallel/test-crypto-classes.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-classes.js)
-- [parallel/test-crypto-des3-wrap.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-des3-wrap.js)
-- [parallel/test-crypto-dh-constructor.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-dh-constructor.js)
-- [parallel/test-crypto-dh-curves.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-dh-curves.js)
-- [parallel/test-crypto-dh-generate-keys.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-dh-generate-keys.js)
-- [parallel/test-crypto-dh-group-setters.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-dh-group-setters.js)
-- [parallel/test-crypto-dh-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-dh-leak.js)
-- [parallel/test-crypto-dh-modp2-views.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-dh-modp2-views.js)
-- [parallel/test-crypto-dh-modp2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-dh-modp2.js)
-- [parallel/test-crypto-dh-padding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-dh-padding.js)
-- [parallel/test-crypto-dh-stateless.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-dh-stateless.js)
-- [parallel/test-crypto-domains.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-domains.js)
-- [parallel/test-crypto-ecb.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-ecb.js)
-- [parallel/test-crypto-ecdh-convert-key.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-ecdh-convert-key.js)
-- [parallel/test-crypto-encoding-validation-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-encoding-validation-error.js)
-- [parallel/test-crypto-fips.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-fips.js)
-- [parallel/test-crypto-getcipherinfo.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-getcipherinfo.js)
-- [parallel/test-crypto-hash-stream-pipe.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-hash-stream-pipe.js)
-- [parallel/test-crypto-key-objects-messageport.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-key-objects-messageport.js)
-- [parallel/test-crypto-key-objects.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-key-objects.js)
-- [parallel/test-crypto-keygen-async-dsa-key-object.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-async-dsa-key-object.js)
-- [parallel/test-crypto-keygen-async-dsa.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-async-dsa.js)
-- [parallel/test-crypto-keygen-async-elliptic-curve-jwk-ec.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-async-elliptic-curve-jwk-ec.js)
-- [parallel/test-crypto-keygen-async-elliptic-curve-jwk-rsa.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-async-elliptic-curve-jwk-rsa.js)
-- [parallel/test-crypto-keygen-async-elliptic-curve-jwk.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-async-elliptic-curve-jwk.js)
-- [parallel/test-crypto-keygen-async-encrypted-private-key-der.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-async-encrypted-private-key-der.js)
-- [parallel/test-crypto-keygen-async-encrypted-private-key.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-async-encrypted-private-key.js)
-- [parallel/test-crypto-keygen-async-explicit-elliptic-curve-encrypted-p256.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-async-explicit-elliptic-curve-encrypted-p256.js)
-- [parallel/test-crypto-keygen-async-explicit-elliptic-curve-encrypted.js.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-async-explicit-elliptic-curve-encrypted.js.js)
-- [parallel/test-crypto-keygen-async-explicit-elliptic-curve.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-async-explicit-elliptic-curve.js)
-- [parallel/test-crypto-keygen-async-named-elliptic-curve-encrypted-p256.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-async-named-elliptic-curve-encrypted-p256.js)
-- [parallel/test-crypto-keygen-async-named-elliptic-curve-encrypted.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-async-named-elliptic-curve-encrypted.js)
-- [parallel/test-crypto-keygen-async-named-elliptic-curve.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-async-named-elliptic-curve.js)
-- [parallel/test-crypto-keygen-async-rsa.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-async-rsa.js)
-- [parallel/test-crypto-keygen-bit-length.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-bit-length.js)
-- [parallel/test-crypto-keygen-deprecation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-deprecation.js)
-- [parallel/test-crypto-keygen-eddsa.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-eddsa.js)
-- [parallel/test-crypto-keygen-empty-passphrase-no-prompt.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-empty-passphrase-no-prompt.js)
-- [parallel/test-crypto-keygen-invalid-parameter-encoding-dsa.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-invalid-parameter-encoding-dsa.js)
-- [parallel/test-crypto-keygen-invalid-parameter-encoding-ec.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-invalid-parameter-encoding-ec.js)
-- [parallel/test-crypto-keygen-key-object-without-encoding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-key-object-without-encoding.js)
-- [parallel/test-crypto-keygen-no-rsassa-pss-params.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-no-rsassa-pss-params.js)
-- [parallel/test-crypto-keygen-promisify.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-promisify.js)
-- [parallel/test-crypto-keygen-rsa-pss.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-rsa-pss.js)
-- [parallel/test-crypto-keygen-sync.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen-sync.js)
-- [parallel/test-crypto-keygen.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-keygen.js)
-- [parallel/test-crypto-padding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-padding.js)
-- [parallel/test-crypto-private-decrypt-gh32240.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-private-decrypt-gh32240.js)
-- [parallel/test-crypto-random.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-random.js)
-- [parallel/test-crypto-randomuuid.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-randomuuid.js)
-- [parallel/test-crypto-rsa-dsa-revert.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-rsa-dsa-revert.js)
-- [parallel/test-crypto-rsa-dsa.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-rsa-dsa.js)
-- [parallel/test-crypto-secure-heap.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-secure-heap.js)
-- [parallel/test-crypto-sign-verify.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-sign-verify.js)
-- [parallel/test-crypto-verify-failure.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-verify-failure.js)
-- [parallel/test-crypto-webcrypto-aes-decrypt-tag-too-small.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-webcrypto-aes-decrypt-tag-too-small.js)
-- [parallel/test-crypto-worker-thread.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto-worker-thread.js)
-- [parallel/test-crypto.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-crypto.js)
-- [parallel/test-cwd-enoent-preload.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cwd-enoent-preload.js)
-- [parallel/test-cwd-enoent-repl.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cwd-enoent-repl.js)
-- [parallel/test-cwd-enoent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-cwd-enoent.js)
-- [parallel/test-datetime-change-notify.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-datetime-change-notify.js)
-- [parallel/test-debugger-backtrace.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-backtrace.js)
-- [parallel/test-debugger-break.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-break.js)
-- [parallel/test-debugger-breakpoint-exists.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-breakpoint-exists.js)
-- [parallel/test-debugger-clear-breakpoints.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-clear-breakpoints.js)
-- [parallel/test-debugger-exceptions.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-exceptions.js)
-- [parallel/test-debugger-exec.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-exec.js)
-- [parallel/test-debugger-heap-profiler.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-heap-profiler.js)
-- [parallel/test-debugger-list.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-list.js)
-- [parallel/test-debugger-low-level.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-low-level.js)
-- [parallel/test-debugger-object-type-remote-object.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-object-type-remote-object.js)
-- [parallel/test-debugger-pid.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-pid.js)
-- [parallel/test-debugger-preserve-breaks.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-preserve-breaks.js)
-- [parallel/test-debugger-profile-command.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-profile-command.js)
-- [parallel/test-debugger-profile.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-profile.js)
-- [parallel/test-debugger-random-port-with-inspect-port.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-random-port-with-inspect-port.js)
-- [parallel/test-debugger-random-port.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-random-port.js)
-- [parallel/test-debugger-repeat-last.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-repeat-last.js)
-- [parallel/test-debugger-restart-message.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-restart-message.js)
-- [parallel/test-debugger-run-after-quit-restart.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-run-after-quit-restart.js)
-- [parallel/test-debugger-sb-before-load.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-sb-before-load.js)
-- [parallel/test-debugger-scripts.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-scripts.js)
-- [parallel/test-debugger-unavailable-port.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-unavailable-port.js)
-- [parallel/test-debugger-use-strict.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-use-strict.js)
-- [parallel/test-debugger-watch-validation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-watch-validation.js)
-- [parallel/test-debugger-websocket-secret-mismatch.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-debugger-websocket-secret-mismatch.js)
-- [parallel/test-delayed-require.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-delayed-require.js)
-- [parallel/test-dgram-abort-closed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-abort-closed.js)
-- [parallel/test-dgram-bind-fd-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-bind-fd-error.js)
-- [parallel/test-dgram-bind-fd.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-bind-fd.js)
-- [parallel/test-dgram-cluster-bind-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-cluster-bind-error.js)
-- [parallel/test-dgram-cluster-close-during-bind.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-cluster-close-during-bind.js)
-- [parallel/test-dgram-cluster-close-in-listening.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-cluster-close-in-listening.js)
-- [parallel/test-dgram-connect-send-empty-packet.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-connect-send-empty-packet.js)
-- [parallel/test-dgram-create-socket-handle-fd.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-create-socket-handle-fd.js)
-- [parallel/test-dgram-create-socket-handle.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-create-socket-handle.js)
-- [parallel/test-dgram-deprecation-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-deprecation-error.js)
-- [parallel/test-dgram-exclusive-implicit-bind.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-exclusive-implicit-bind.js)
-- [parallel/test-dgram-membership.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-membership.js)
-- [parallel/test-dgram-multicast-loopback.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-multicast-loopback.js)
-- [parallel/test-dgram-multicast-set-interface.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-multicast-set-interface.js)
-- [parallel/test-dgram-multicast-setTTL.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-multicast-setTTL.js)
-- [parallel/test-dgram-send-address-types.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-send-address-types.js)
-- [parallel/test-dgram-send-empty-array.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-send-empty-array.js)
-- [parallel/test-dgram-send-empty-buffer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-send-empty-buffer.js)
-- [parallel/test-dgram-send-empty-packet.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-send-empty-packet.js)
-- [parallel/test-dgram-send-queue-info.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-send-queue-info.js)
-- [parallel/test-dgram-sendto.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-sendto.js)
-- [parallel/test-dgram-setBroadcast.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-setBroadcast.js)
-- [parallel/test-dgram-setTTL.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-setTTL.js)
-- [parallel/test-dgram-udp6-link-local-address.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-udp6-link-local-address.js)
-- [parallel/test-dgram-unref-in-cluster.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dgram-unref-in-cluster.js)
-- [parallel/test-diagnostics-channel-http-server-start.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-diagnostics-channel-http-server-start.js)
-- [parallel/test-diagnostics-channel-http.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-diagnostics-channel-http.js)
-- [parallel/test-diagnostics-channel-memory-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-diagnostics-channel-memory-leak.js)
-- [parallel/test-diagnostics-channel-process.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-diagnostics-channel-process.js)
-- [parallel/test-diagnostics-channel-worker-threads.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-diagnostics-channel-worker-threads.js)
-- [parallel/test-directory-import.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-directory-import.js)
-- [parallel/test-disable-proto-delete.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-disable-proto-delete.js)
-- [parallel/test-disable-proto-throw.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-disable-proto-throw.js)
-- [parallel/test-dns-cancel-reverse-lookup.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dns-cancel-reverse-lookup.js)
-- [parallel/test-dns-channel-cancel-promise.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dns-channel-cancel-promise.js)
-- [parallel/test-dns-channel-cancel.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dns-channel-cancel.js)
-- [parallel/test-dns-channel-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dns-channel-timeout.js)
-- [parallel/test-dns-default-verbatim-false.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dns-default-verbatim-false.js)
-- [parallel/test-dns-default-verbatim-true.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dns-default-verbatim-true.js)
-- [parallel/test-dns-get-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dns-get-server.js)
-- [parallel/test-dns-lookup-promises-options-deprecated.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dns-lookup-promises-options-deprecated.js)
-- [parallel/test-dns-lookup-promises.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dns-lookup-promises.js)
-- [parallel/test-dns-lookupService-promises.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dns-lookupService-promises.js)
-- [parallel/test-dns-lookupService.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dns-lookupService.js)
-- [parallel/test-dns-perf_hooks.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dns-perf_hooks.js)
-- [parallel/test-dns-resolve-promises.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dns-resolve-promises.js)
-- [parallel/test-dns-resolveany-bad-ancount.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dns-resolveany-bad-ancount.js)
-- [parallel/test-dns-set-default-order.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dns-set-default-order.js)
-- [parallel/test-dns-setlocaladdress.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dns-setlocaladdress.js)
-- [parallel/test-dns-setserver-when-querying.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dns-setserver-when-querying.js)
-- [parallel/test-domain-abort-on-uncaught.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-abort-on-uncaught.js)
-- [parallel/test-domain-add-remove.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-add-remove.js)
-- [parallel/test-domain-async-id-map-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-async-id-map-leak.js)
-- [parallel/test-domain-bind-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-bind-timeout.js)
-- [parallel/test-domain-dep0097.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-dep0097.js)
-- [parallel/test-domain-ee-implicit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-ee-implicit.js)
-- [parallel/test-domain-ee.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-ee.js)
-- [parallel/test-domain-emit-error-handler-stack.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-emit-error-handler-stack.js)
-- [parallel/test-domain-enter-exit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-enter-exit.js)
-- [parallel/test-domain-error-types.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-error-types.js)
-- [parallel/test-domain-from-timer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-from-timer.js)
-- [parallel/test-domain-fs-enoent-stream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-fs-enoent-stream.js)
-- [parallel/test-domain-http-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-http-server.js)
-- [parallel/test-domain-implicit-binding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-implicit-binding.js)
-- [parallel/test-domain-implicit-fs.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-implicit-fs.js)
-- [parallel/test-domain-intercept.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-intercept.js)
-- [parallel/test-domain-load-after-set-uncaught-exception-capture.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-load-after-set-uncaught-exception-capture.js)
-- [parallel/test-domain-multi.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-multi.js)
-- [parallel/test-domain-multiple-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-multiple-errors.js)
-- [parallel/test-domain-nexttick.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-nexttick.js)
-- [parallel/test-domain-no-error-handler-abort-on-uncaught-0.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-no-error-handler-abort-on-uncaught-0.js)
-- [parallel/test-domain-no-error-handler-abort-on-uncaught-1.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-no-error-handler-abort-on-uncaught-1.js)
-- [parallel/test-domain-no-error-handler-abort-on-uncaught-2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-no-error-handler-abort-on-uncaught-2.js)
-- [parallel/test-domain-no-error-handler-abort-on-uncaught-3.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-no-error-handler-abort-on-uncaught-3.js)
-- [parallel/test-domain-no-error-handler-abort-on-uncaught-4.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-no-error-handler-abort-on-uncaught-4.js)
-- [parallel/test-domain-no-error-handler-abort-on-uncaught-5.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-no-error-handler-abort-on-uncaught-5.js)
-- [parallel/test-domain-no-error-handler-abort-on-uncaught-6.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-no-error-handler-abort-on-uncaught-6.js)
-- [parallel/test-domain-no-error-handler-abort-on-uncaught-7.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-no-error-handler-abort-on-uncaught-7.js)
-- [parallel/test-domain-no-error-handler-abort-on-uncaught-8.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-no-error-handler-abort-on-uncaught-8.js)
-- [parallel/test-domain-no-error-handler-abort-on-uncaught-9.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-no-error-handler-abort-on-uncaught-9.js)
-- [parallel/test-domain-promise.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-promise.js)
-- [parallel/test-domain-run.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-run.js)
-- [parallel/test-domain-safe-exit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-safe-exit.js)
-- [parallel/test-domain-set-uncaught-exception-capture-after-load.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-set-uncaught-exception-capture-after-load.js)
-- [parallel/test-domain-stack-empty-in-process-uncaughtexception.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-stack-empty-in-process-uncaughtexception.js)
-- [parallel/test-domain-throw-error-then-throw-from-uncaught-exception-handler.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-throw-error-then-throw-from-uncaught-exception-handler.js)
-- [parallel/test-domain-thrown-error-handler-stack.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-thrown-error-handler-stack.js)
-- [parallel/test-domain-timer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-timer.js)
-- [parallel/test-domain-timers-uncaught-exception.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-timers-uncaught-exception.js)
-- [parallel/test-domain-timers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-timers.js)
-- [parallel/test-domain-top-level-error-handler-throw.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-top-level-error-handler-throw.js)
-- [parallel/test-domain-uncaught-exception.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-uncaught-exception.js)
-- [parallel/test-domain-vm-promise-isolation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-vm-promise-isolation.js)
-- [parallel/test-domain-with-abort-on-uncaught-exception.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domain-with-abort-on-uncaught-exception.js)
-- [parallel/test-domexception-cause.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-domexception-cause.js)
-- [parallel/test-dotenv-edge-cases.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dotenv-edge-cases.js)
-- [parallel/test-dotenv-node-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dotenv-node-options.js)
-- [parallel/test-dotenv.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dotenv.js)
-- [parallel/test-double-tls-client.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-double-tls-client.js)
-- [parallel/test-double-tls-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-double-tls-server.js)
-- [parallel/test-dummy-stdio.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-dummy-stdio.js)
-- [parallel/test-emit-after-uncaught-exception.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-emit-after-uncaught-exception.js)
-- [parallel/test-env-var-no-warnings.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-env-var-no-warnings.js)
-- [parallel/test-err-name-deprecation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-err-name-deprecation.js)
-- [parallel/test-error-format-list.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-error-format-list.js)
-- [parallel/test-error-reporting.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-error-reporting.js)
-- [parallel/test-error-serdes.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-error-serdes.js)
-- [parallel/test-errors-systemerror-frozen-intrinsics.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-errors-systemerror-frozen-intrinsics.js)
-- [parallel/test-errors-systemerror-stackTraceLimit-custom-setter.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-errors-systemerror-stackTraceLimit-custom-setter.js)
-- [parallel/test-errors-systemerror-stackTraceLimit-deleted-and-Error-sealed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-errors-systemerror-stackTraceLimit-deleted-and-Error-sealed.js)
-- [parallel/test-errors-systemerror-stackTraceLimit-deleted.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-errors-systemerror-stackTraceLimit-deleted.js)
-- [parallel/test-errors-systemerror-stackTraceLimit-has-only-a-getter.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-errors-systemerror-stackTraceLimit-has-only-a-getter.js)
-- [parallel/test-errors-systemerror-stackTraceLimit-not-writable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-errors-systemerror-stackTraceLimit-not-writable.js)
-- [parallel/test-errors-systemerror.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-errors-systemerror.js)
-- [parallel/test-eslint-alphabetize-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-alphabetize-errors.js)
-- [parallel/test-eslint-async-iife-no-unused-result.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-async-iife-no-unused-result.js)
-- [parallel/test-eslint-avoid-prototype-pollution.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-avoid-prototype-pollution.js)
-- [parallel/test-eslint-crypto-check.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-crypto-check.js)
-- [parallel/test-eslint-documented-deprecation-codes.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-documented-deprecation-codes.js)
-- [parallel/test-eslint-documented-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-documented-errors.js)
-- [parallel/test-eslint-duplicate-requires.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-duplicate-requires.js)
-- [parallel/test-eslint-eslint-check.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-eslint-check.js)
-- [parallel/test-eslint-inspector-check.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-inspector-check.js)
-- [parallel/test-eslint-lowercase-name-for-primitive.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-lowercase-name-for-primitive.js)
-- [parallel/test-eslint-no-array-destructuring.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-no-array-destructuring.js)
-- [parallel/test-eslint-no-unescaped-regexp-dot.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-no-unescaped-regexp-dot.js)
-- [parallel/test-eslint-non-ascii-character.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-non-ascii-character.js)
-- [parallel/test-eslint-prefer-assert-iferror.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-prefer-assert-iferror.js)
-- [parallel/test-eslint-prefer-assert-methods.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-prefer-assert-methods.js)
-- [parallel/test-eslint-prefer-common-mustnotcall.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-prefer-common-mustnotcall.js)
-- [parallel/test-eslint-prefer-common-mustsucceed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-prefer-common-mustsucceed.js)
-- [parallel/test-eslint-prefer-primordials.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-prefer-primordials.js)
-- [parallel/test-eslint-prefer-proto.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-prefer-proto.js)
-- [parallel/test-eslint-prefer-util-format-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-prefer-util-format-errors.js)
-- [parallel/test-eslint-require-common-first.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-require-common-first.js)
-- [parallel/test-eslint-required-modules.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eslint-required-modules.js)
-- [parallel/test-eval-disallow-code-generation-from-strings.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eval-disallow-code-generation-from-strings.js)
-- [parallel/test-event-target.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-event-target.js)
-- [parallel/test-eventemitter-asyncresource.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eventemitter-asyncresource.js)
-- [parallel/test-events-customevent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-events-customevent.js)
-- [parallel/test-events-getmaxlisteners.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-events-getmaxlisteners.js)
-- [parallel/test-events-listener-count-with-listener.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-events-listener-count-with-listener.js)
-- [parallel/test-events-static-geteventlisteners.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-events-static-geteventlisteners.js)
-- [parallel/test-eventtarget-memoryleakwarning.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eventtarget-memoryleakwarning.js)
-- [parallel/test-eventtarget.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-eventtarget.js)
-- [parallel/test-experimental-shared-value-conveyor.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-experimental-shared-value-conveyor.js)
-- [parallel/test-file-validate-mode-flag.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-file-validate-mode-flag.js)
-- [parallel/test-file.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-file.js)
-- [parallel/test-filehandle-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-filehandle-close.js)
-- [parallel/test-filehandle-readablestream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-filehandle-readablestream.js)
-- [parallel/test-fixed-queue.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fixed-queue.js)
-- [parallel/test-force-repl-with-eval.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-force-repl-with-eval.js)
-- [parallel/test-force-repl.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-force-repl.js)
-- [parallel/test-freelist.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-freelist.js)
-- [parallel/test-freeze-intrinsics.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-freeze-intrinsics.js)
-- [parallel/test-fs-append-file-flush.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-append-file-flush.js)
-- [parallel/test-fs-assert-encoding-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-assert-encoding-error.js)
-- [parallel/test-fs-buffer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-buffer.js)
-- [parallel/test-fs-close-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-close-errors.js)
-- [parallel/test-fs-copyfile-respect-permissions.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-copyfile-respect-permissions.js)
-- [parallel/test-fs-error-messages.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-error-messages.js)
-- [parallel/test-fs-exists.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-exists.js)
-- [parallel/test-fs-existssync-false.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-existssync-false.js)
-- [parallel/test-fs-fchmod.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-fchmod.js)
-- [parallel/test-fs-fchown.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-fchown.js)
-- [parallel/test-fs-filehandle-use-after-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-filehandle-use-after-close.js)
-- [parallel/test-fs-filehandle.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-filehandle.js)
-- [parallel/test-fs-fsync.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-fsync.js)
-- [parallel/test-fs-lchmod.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-lchmod.js)
-- [parallel/test-fs-link.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-link.js)
-- [parallel/test-fs-make-callback.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-make-callback.js)
-- [parallel/test-fs-makeStatsCallback.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-makeStatsCallback.js)
-- [parallel/test-fs-mkdir-mode-mask.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-mkdir-mode-mask.js)
-- [parallel/test-fs-mkdir-recursive-eaccess.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-mkdir-recursive-eaccess.js)
-- [parallel/test-fs-mkdir-rmdir.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-mkdir-rmdir.js)
-- [parallel/test-fs-mkdtemp-prefix-check.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-mkdtemp-prefix-check.js)
-- [parallel/test-fs-mkdtemp.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-mkdtemp.js)
-- [parallel/test-fs-null-bytes.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-null-bytes.js)
-- [parallel/test-fs-options-immutable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-options-immutable.js)
-- [parallel/test-fs-promises-file-handle-aggregate-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-aggregate-errors.js)
-- [parallel/test-fs-promises-file-handle-append-file.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-append-file.js)
-- [parallel/test-fs-promises-file-handle-chmod.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-chmod.js)
-- [parallel/test-fs-promises-file-handle-close-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-close-errors.js)
-- [parallel/test-fs-promises-file-handle-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-close.js)
-- [parallel/test-fs-promises-file-handle-dispose.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-dispose.js)
-- [parallel/test-fs-promises-file-handle-op-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-op-errors.js)
-- [parallel/test-fs-promises-file-handle-read-worker.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-read-worker.js)
-- [parallel/test-fs-promises-file-handle-read.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-read.js)
-- [parallel/test-fs-promises-file-handle-readFile.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-readFile.js)
-- [parallel/test-fs-promises-file-handle-stream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-stream.js)
-- [parallel/test-fs-promises-file-handle-truncate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-truncate.js)
-- [parallel/test-fs-promises-file-handle-writeFile.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-writeFile.js)
-- [parallel/test-fs-promises-readfile.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-readfile.js)
-- [parallel/test-fs-promises-watch.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-watch.js)
-- [parallel/test-fs-promises-write-optional-params.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-write-optional-params.js)
-- [parallel/test-fs-promises-writefile-typedarray.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-writefile-typedarray.js)
-- [parallel/test-fs-promises-writefile.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-writefile.js)
-- [parallel/test-fs-promises.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises.js)
-- [parallel/test-fs-promisified.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promisified.js)
-- [parallel/test-fs-read-empty-buffer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-read-empty-buffer.js)
-- [parallel/test-fs-read-file-assert-encoding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-read-file-assert-encoding.js)
-- [parallel/test-fs-read-offset-null.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-read-offset-null.js)
-- [parallel/test-fs-read-optional-params.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-read-optional-params.js)
-- [parallel/test-fs-read-promises-optional-params.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-read-promises-optional-params.js)
-- [parallel/test-fs-read-stream-err.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-read-stream-err.js)
-- [parallel/test-fs-read-stream-file-handle.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-read-stream-file-handle.js)
-- [parallel/test-fs-readSync-optional-params.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-readSync-optional-params.js)
-- [parallel/test-fs-readdir-buffer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-readdir-buffer.js)
-- [parallel/test-fs-readdir-types.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-readdir-types.js)
-- [parallel/test-fs-readdir-ucs2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-readdir-ucs2.js)
-- [parallel/test-fs-readfile-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-readfile-error.js)
-- [parallel/test-fs-readfile-flags.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-readfile-flags.js)
-- [parallel/test-fs-readfile-pipe-large.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-readfile-pipe-large.js)
-- [parallel/test-fs-readfile-pipe.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-readfile-pipe.js)
-- [parallel/test-fs-readfile.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-readfile.js)
-- [parallel/test-fs-readfilesync-pipe-large.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-readfilesync-pipe-large.js)
-- [parallel/test-fs-readlink-type-check.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-readlink-type-check.js)
-- [parallel/test-fs-readv-promises.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-readv-promises.js)
-- [parallel/test-fs-readv-promisify.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-readv-promisify.js)
-- [parallel/test-fs-realpath-buffer-encoding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-realpath-buffer-encoding.js)
-- [parallel/test-fs-realpath-on-substed-drive.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-realpath-on-substed-drive.js)
-- [parallel/test-fs-realpath-pipe.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-realpath-pipe.js)
-- [parallel/test-fs-realpath.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-realpath.js)
-- [parallel/test-fs-rename-type-check.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-rename-type-check.js)
-- [parallel/test-fs-rm.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-rm.js)
-- [parallel/test-fs-stat-bigint.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-stat-bigint.js)
-- [parallel/test-fs-stat.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-stat.js)
-- [parallel/test-fs-statfs.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-statfs.js)
-- [parallel/test-fs-stream-construct-compat-error-write.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-stream-construct-compat-error-write.js)
-- [parallel/test-fs-symlink-buffer-path.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-symlink-buffer-path.js)
-- [parallel/test-fs-symlink-dir-junction.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-symlink-dir-junction.js)
-- [parallel/test-fs-symlink-dir.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-symlink-dir.js)
-- [parallel/test-fs-symlink-longpath.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-symlink-longpath.js)
-- [parallel/test-fs-symlink.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-symlink.js)
-- [parallel/test-fs-sync-fd-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-sync-fd-leak.js)
-- [parallel/test-fs-syncwritestream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-syncwritestream.js)
-- [parallel/test-fs-truncate-fd.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-truncate-fd.js)
-- [parallel/test-fs-truncate-sync.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-truncate-sync.js)
-- [parallel/test-fs-truncate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-truncate.js)
-- [parallel/test-fs-unlink-type-check.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-unlink-type-check.js)
-- [parallel/test-fs-utils-get-dirents.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-utils-get-dirents.js)
-- [parallel/test-fs-watch-abort-signal.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-watch-abort-signal.js)
-- [parallel/test-fs-watch-close-when-destroyed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-watch-close-when-destroyed.js)
-- [parallel/test-fs-watch-encoding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-watch-encoding.js)
-- [parallel/test-fs-watch-enoent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-watch-enoent.js)
-- [parallel/test-fs-watch-recursive-add-file-to-existing-subfolder.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-watch-recursive-add-file-to-existing-subfolder.js)
-- [parallel/test-fs-watch-recursive-add-file-to-new-folder.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-watch-recursive-add-file-to-new-folder.js)
-- [parallel/test-fs-watch-recursive-assert-leaks.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-watch-recursive-assert-leaks.js)
-- [parallel/test-fs-watch-recursive-promise.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-watch-recursive-promise.js)
-- [parallel/test-fs-watch-recursive-symlink.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-watch-recursive-symlink.js)
-- [parallel/test-fs-watch-recursive-validate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-watch-recursive-validate.js)
-- [parallel/test-fs-watch-recursive-watch-file.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-watch-recursive-watch-file.js)
-- [parallel/test-fs-watch-ref-unref.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-watch-ref-unref.js)
-- [parallel/test-fs-watch-stop-async.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-watch-stop-async.js)
-- [parallel/test-fs-watch-stop-sync.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-watch-stop-sync.js)
-- [parallel/test-fs-watch.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-watch.js)
-- [parallel/test-fs-watchfile-bigint.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-watchfile-bigint.js)
-- [parallel/test-fs-watchfile-ref-unref.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-watchfile-ref-unref.js)
-- [parallel/test-fs-whatwg-url.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-whatwg-url.js)
-- [parallel/test-fs-write-buffer-large.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-write-buffer-large.js)
-- [parallel/test-fs-write-file-flush.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-write-file-flush.js)
-- [parallel/test-fs-write-file-typedarrays.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-write-file-typedarrays.js)
-- [parallel/test-fs-write-optional-params.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-write-optional-params.js)
-- [parallel/test-fs-write-reuse-callback.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-write-reuse-callback.js)
-- [parallel/test-fs-write-sigxfsz.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-write-sigxfsz.js)
-- [parallel/test-fs-write-stream-change-open.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-write-stream-change-open.js)
-- [parallel/test-fs-write-stream-err.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-write-stream-err.js)
-- [parallel/test-fs-write-stream-file-handle-2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-write-stream-file-handle-2.js)
-- [parallel/test-fs-write-stream-file-handle.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-write-stream-file-handle.js)
-- [parallel/test-fs-write-stream-flush.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-write-stream-flush.js)
-- [parallel/test-fs-write-sync-optional-params.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-write-sync-optional-params.js)
-- [parallel/test-fs-writefile-with-fd.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-writefile-with-fd.js)
-- [parallel/test-fs-writev-promises.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-writev-promises.js)
-- [parallel/test-gc-http-client-connaborted.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-gc-http-client-connaborted.js)
-- [parallel/test-gc-net-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-gc-net-timeout.js)
-- [parallel/test-gc-tls-external-memory.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-gc-tls-external-memory.js)
-- [parallel/test-global-console-exists.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-global-console-exists.js)
-- [parallel/test-global-customevent-disabled.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-global-customevent-disabled.js)
-- [parallel/test-global-customevent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-global-customevent.js)
-- [parallel/test-global-setters.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-global-setters.js)
-- [parallel/test-global-webcrypto-classes.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-global-webcrypto-classes.js)
-- [parallel/test-global-webcrypto-disbled.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-global-webcrypto-disbled.js)
-- [parallel/test-global.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-global.js)
-- [parallel/test-h2-large-header-cause-client-to-hangup.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-h2-large-header-cause-client-to-hangup.js)
-- [parallel/test-handle-wrap-hasref.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-handle-wrap-hasref.js)
-- [parallel/test-heap-prof-basic.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-heap-prof-basic.js)
-- [parallel/test-heap-prof-dir-absolute.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-heap-prof-dir-absolute.js)
-- [parallel/test-heap-prof-dir-name.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-heap-prof-dir-name.js)
-- [parallel/test-heap-prof-dir-relative.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-heap-prof-dir-relative.js)
-- [parallel/test-heap-prof-exec-argv.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-heap-prof-exec-argv.js)
-- [parallel/test-heap-prof-exit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-heap-prof-exit.js)
-- [parallel/test-heap-prof-interval.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-heap-prof-interval.js)
-- [parallel/test-heap-prof-invalid-args.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-heap-prof-invalid-args.js)
-- [parallel/test-heap-prof-loop-drained.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-heap-prof-loop-drained.js)
-- [parallel/test-heap-prof-name.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-heap-prof-name.js)
-- [parallel/test-heap-prof-sigint.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-heap-prof-sigint.js)
-- [parallel/test-heapdump-async-hooks-init-promise.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-heapdump-async-hooks-init-promise.js)
-- [parallel/test-heapsnapshot-near-heap-limit-by-api-in-worker.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-heapsnapshot-near-heap-limit-by-api-in-worker.js)
-- [parallel/test-heapsnapshot-near-heap-limit-worker.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-heapsnapshot-near-heap-limit-worker.js)
-- [parallel/test-http-1.0-keep-alive.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-1.0-keep-alive.js)
-- [parallel/test-http-1.0.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-1.0.js)
-- [parallel/test-http-abort-client.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-abort-client.js)
-- [parallel/test-http-abort-queued.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-abort-queued.js)
-- [parallel/test-http-abort-stream-end.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-abort-stream-end.js)
-- [parallel/test-http-aborted.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-aborted.js)
-- [parallel/test-http-after-connect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-after-connect.js)
-- [parallel/test-http-agent-abort-controller.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent-abort-controller.js)
-- [parallel/test-http-agent-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent-close.js)
-- [parallel/test-http-agent-destroyed-socket.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent-destroyed-socket.js)
-- [parallel/test-http-agent-domain-reused-gc.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent-domain-reused-gc.js)
-- [parallel/test-http-agent-error-on-idle.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent-error-on-idle.js)
-- [parallel/test-http-agent-false.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent-false.js)
-- [parallel/test-http-agent-keepalive-delay.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent-keepalive-delay.js)
-- [parallel/test-http-agent-keepalive.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent-keepalive.js)
-- [parallel/test-http-agent-maxsockets-respected.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent-maxsockets-respected.js)
-- [parallel/test-http-agent-maxsockets.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent-maxsockets.js)
-- [parallel/test-http-agent-remove.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent-remove.js)
-- [parallel/test-http-agent-reuse-drained-socket-only.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent-reuse-drained-socket-only.js)
-- [parallel/test-http-agent-scheduling.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent-scheduling.js)
-- [parallel/test-http-agent-timeout-option.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent-timeout-option.js)
-- [parallel/test-http-agent-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent-timeout.js)
-- [parallel/test-http-agent-uninitialized-with-handle.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent-uninitialized-with-handle.js)
-- [parallel/test-http-agent-uninitialized.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent-uninitialized.js)
-- [parallel/test-http-agent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-agent.js)
-- [parallel/test-http-allow-content-length-304.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-allow-content-length-304.js)
-- [parallel/test-http-automatic-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-automatic-headers.js)
-- [parallel/test-http-autoselectfamily.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-autoselectfamily.js)
-- [parallel/test-http-blank-header.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-blank-header.js)
-- [parallel/test-http-byteswritten.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-byteswritten.js)
-- [parallel/test-http-catch-uncaughtexception.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-catch-uncaughtexception.js)
-- [parallel/test-http-chunk-extensions-limit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-chunk-extensions-limit.js)
-- [parallel/test-http-chunk-problem.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-chunk-problem.js)
-- [parallel/test-http-chunked-304.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-chunked-304.js)
-- [parallel/test-http-client-abort-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-abort-destroy.js)
-- [parallel/test-http-client-abort-event.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-abort-event.js)
-- [parallel/test-http-client-abort-keep-alive-destroy-res.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-abort-keep-alive-destroy-res.js)
-- [parallel/test-http-client-abort-keep-alive-queued-tcp-socket.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-abort-keep-alive-queued-tcp-socket.js)
-- [parallel/test-http-client-abort-keep-alive-queued-unix-socket.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-abort-keep-alive-queued-unix-socket.js)
-- [parallel/test-http-client-abort-no-agent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-abort-no-agent.js)
-- [parallel/test-http-client-abort-response-event.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-abort-response-event.js)
-- [parallel/test-http-client-abort-unix-socket.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-abort-unix-socket.js)
-- [parallel/test-http-client-abort.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-abort.js)
-- [parallel/test-http-client-abort3.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-abort3.js)
-- [parallel/test-http-client-aborted-event.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-aborted-event.js)
-- [parallel/test-http-client-agent-abort-close-event.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-agent-abort-close-event.js)
-- [parallel/test-http-client-agent-end-close-event.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-agent-end-close-event.js)
-- [parallel/test-http-client-agent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-agent.js)
-- [parallel/test-http-client-close-event.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-close-event.js)
-- [parallel/test-http-client-error-rawbytes.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-error-rawbytes.js)
-- [parallel/test-http-client-finished.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-finished.js)
-- [parallel/test-http-client-headers-host-array.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-headers-host-array.js)
-- [parallel/test-http-client-immediate-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-immediate-error.js)
-- [parallel/test-http-client-incomingmessage-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-incomingmessage-destroy.js)
-- [parallel/test-http-client-keep-alive-release-before-finish.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-keep-alive-release-before-finish.js)
-- [parallel/test-http-client-override-global-agent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-override-global-agent.js)
-- [parallel/test-http-client-parse-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-parse-error.js)
-- [parallel/test-http-client-pipe-end.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-pipe-end.js)
-- [parallel/test-http-client-readable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-readable.js)
-- [parallel/test-http-client-reject-chunked-with-content-length.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-reject-chunked-with-content-length.js)
-- [parallel/test-http-client-reject-cr-no-lf.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-reject-cr-no-lf.js)
-- [parallel/test-http-client-req-error-dont-double-fire.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-req-error-dont-double-fire.js)
-- [parallel/test-http-client-request-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-request-options.js)
-- [parallel/test-http-client-res-destroyed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-res-destroyed.js)
-- [parallel/test-http-client-response-domain.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-response-domain.js)
-- [parallel/test-http-client-response-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-response-timeout.js)
-- [parallel/test-http-client-set-timeout-after-end.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-set-timeout-after-end.js)
-- [parallel/test-http-client-set-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-set-timeout.js)
-- [parallel/test-http-client-spurious-aborted.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-spurious-aborted.js)
-- [parallel/test-http-client-timeout-agent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-timeout-agent.js)
-- [parallel/test-http-client-timeout-connect-listener.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-timeout-connect-listener.js)
-- [parallel/test-http-client-timeout-event.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-timeout-event.js)
-- [parallel/test-http-client-timeout-on-connect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-timeout-on-connect.js)
-- [parallel/test-http-client-timeout-option-listeners.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-timeout-option-listeners.js)
-- [parallel/test-http-client-timeout-option-with-agent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-timeout-option-with-agent.js)
-- [parallel/test-http-client-timeout-option.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-timeout-option.js)
-- [parallel/test-http-client-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-client-timeout.js)
-- [parallel/test-http-conn-reset.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-conn-reset.js)
-- [parallel/test-http-connect-req-res.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-connect-req-res.js)
-- [parallel/test-http-connect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-connect.js)
-- [parallel/test-http-content-length-mismatch.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-content-length-mismatch.js)
-- [parallel/test-http-content-length.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-content-length.js)
-- [parallel/test-http-createConnection.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-createConnection.js)
-- [parallel/test-http-debug.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-debug.js)
-- [parallel/test-http-default-port.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-default-port.js)
-- [parallel/test-http-destroyed-socket-write2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-destroyed-socket-write2.js)
-- [parallel/test-http-dns-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-dns-error.js)
-- [parallel/test-http-double-content-length.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-double-content-length.js)
-- [parallel/test-http-dump-req-when-res-ends.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-dump-req-when-res-ends.js)
-- [parallel/test-http-early-hints-invalid-argument.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-early-hints-invalid-argument.js)
-- [parallel/test-http-early-hints.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-early-hints.js)
-- [parallel/test-http-exceptions.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-exceptions.js)
-- [parallel/test-http-expect-continue.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-expect-continue.js)
-- [parallel/test-http-expect-handling.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-expect-handling.js)
-- [parallel/test-http-flush-response-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-flush-response-headers.js)
-- [parallel/test-http-generic-streams.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-generic-streams.js)
-- [parallel/test-http-get-pipeline-problem.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-get-pipeline-problem.js)
-- [parallel/test-http-header-badrequest.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-header-badrequest.js)
-- [parallel/test-http-header-overflow.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-header-overflow.js)
-- [parallel/test-http-host-header-ipv6-fail.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-host-header-ipv6-fail.js)
-- [parallel/test-http-hostname-typechecking.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-hostname-typechecking.js)
-- [parallel/test-http-incoming-matchKnownFields.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-incoming-matchKnownFields.js)
-- [parallel/test-http-incoming-message-connection-setter.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-incoming-message-connection-setter.js)
-- [parallel/test-http-incoming-message-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-incoming-message-options.js)
-- [parallel/test-http-incoming-pipelined-socket-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-incoming-pipelined-socket-destroy.js)
-- [parallel/test-http-information-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-information-headers.js)
-- [parallel/test-http-information-processing.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-information-processing.js)
-- [parallel/test-http-insecure-parser-per-stream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-insecure-parser-per-stream.js)
-- [parallel/test-http-insecure-parser.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-insecure-parser.js)
-- [parallel/test-http-invalid-te.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-invalid-te.js)
-- [parallel/test-http-invalid-urls.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-invalid-urls.js)
-- [parallel/test-http-keep-alive-close-on-header.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-keep-alive-close-on-header.js)
-- [parallel/test-http-keep-alive-drop-requests.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-keep-alive-drop-requests.js)
-- [parallel/test-http-keep-alive-max-requests.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-keep-alive-max-requests.js)
-- [parallel/test-http-keep-alive-pipeline-max-requests.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-keep-alive-pipeline-max-requests.js)
-- [parallel/test-http-keep-alive-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-keep-alive-timeout.js)
-- [parallel/test-http-keep-alive.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-keep-alive.js)
-- [parallel/test-http-keepalive-client.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-keepalive-client.js)
-- [parallel/test-http-keepalive-free.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-keepalive-free.js)
-- [parallel/test-http-keepalive-override.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-keepalive-override.js)
-- [parallel/test-http-keepalive-request.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-keepalive-request.js)
-- [parallel/test-http-malformed-request.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-malformed-request.js)
-- [parallel/test-http-many-ended-pipelines.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-many-ended-pipelines.js)
-- [parallel/test-http-max-header-size-per-stream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-max-header-size-per-stream.js)
-- [parallel/test-http-max-header-size.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-max-header-size.js)
-- [parallel/test-http-max-headers-count.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-max-headers-count.js)
-- [parallel/test-http-max-http-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-max-http-headers.js)
-- [parallel/test-http-missing-header-separator-cr.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-missing-header-separator-cr.js)
-- [parallel/test-http-missing-header-separator-lf.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-missing-header-separator-lf.js)
-- [parallel/test-http-multi-line-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-multi-line-headers.js)
-- [parallel/test-http-multiple-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-multiple-headers.js)
-- [parallel/test-http-mutable-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-mutable-headers.js)
-- [parallel/test-http-no-content-length.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-no-content-length.js)
-- [parallel/test-http-no-read-no-dump.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-no-read-no-dump.js)
-- [parallel/test-http-nodelay.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-nodelay.js)
-- [parallel/test-http-outgoing-buffer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-outgoing-buffer.js)
-- [parallel/test-http-outgoing-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-outgoing-destroy.js)
-- [parallel/test-http-outgoing-destroyed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-outgoing-destroyed.js)
-- [parallel/test-http-outgoing-end-cork.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-outgoing-end-cork.js)
-- [parallel/test-http-outgoing-end-multiple.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-outgoing-end-multiple.js)
-- [parallel/test-http-outgoing-finish-writable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-outgoing-finish-writable.js)
-- [parallel/test-http-outgoing-finish.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-outgoing-finish.js)
-- [parallel/test-http-outgoing-first-chunk-singlebyte-encoding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-outgoing-first-chunk-singlebyte-encoding.js)
-- [parallel/test-http-outgoing-message-capture-rejection.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-outgoing-message-capture-rejection.js)
-- [parallel/test-http-outgoing-message-inheritance.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-outgoing-message-inheritance.js)
-- [parallel/test-http-outgoing-message-write-callback.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-outgoing-message-write-callback.js)
-- [parallel/test-http-outgoing-properties.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-outgoing-properties.js)
-- [parallel/test-http-outgoing-proto.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-outgoing-proto.js)
-- [parallel/test-http-outgoing-writableFinished.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-outgoing-writableFinished.js)
-- [parallel/test-http-parser-bad-ref.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-parser-bad-ref.js)
-- [parallel/test-http-parser-finish-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-parser-finish-error.js)
-- [parallel/test-http-parser-freed-before-upgrade.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-parser-freed-before-upgrade.js)
-- [parallel/test-http-parser-lazy-loaded.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-parser-lazy-loaded.js)
-- [parallel/test-http-parser-memory-retention.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-parser-memory-retention.js)
-- [parallel/test-http-parser-multiple-execute.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-parser-multiple-execute.js)
-- [parallel/test-http-parser-timeout-reset.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-parser-timeout-reset.js)
-- [parallel/test-http-parser.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-parser.js)
-- [parallel/test-http-perf_hooks.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-perf_hooks.js)
-- [parallel/test-http-pipeline-assertionerror-finish.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-pipeline-assertionerror-finish.js)
-- [parallel/test-http-pipeline-flood.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-pipeline-flood.js)
-- [parallel/test-http-pipeline-socket-parser-typeerror.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-pipeline-socket-parser-typeerror.js)
-- [parallel/test-http-raw-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-raw-headers.js)
-- [parallel/test-http-remove-connection-header-persists-connection.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-remove-connection-header-persists-connection.js)
-- [parallel/test-http-remove-header-stays-removed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-remove-header-stays-removed.js)
-- [parallel/test-http-req-close-robust-from-tampering.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-req-close-robust-from-tampering.js)
-- [parallel/test-http-req-res-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-req-res-close.js)
-- [parallel/test-http-request-agent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-request-agent.js)
-- [parallel/test-http-request-host-header.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-request-host-header.js)
-- [parallel/test-http-request-join-authorization-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-request-join-authorization-headers.js)
-- [parallel/test-http-request-smuggling-content-length.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-request-smuggling-content-length.js)
-- [parallel/test-http-res-write-after-end.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-res-write-after-end.js)
-- [parallel/test-http-response-add-header-after-sent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-response-add-header-after-sent.js)
-- [parallel/test-http-response-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-response-close.js)
-- [parallel/test-http-response-cork.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-response-cork.js)
-- [parallel/test-http-response-multi-content-length.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-response-multi-content-length.js)
-- [parallel/test-http-response-no-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-response-no-headers.js)
-- [parallel/test-http-response-remove-header-after-sent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-response-remove-header-after-sent.js)
-- [parallel/test-http-response-setheaders.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-response-setheaders.js)
-- [parallel/test-http-response-splitting.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-response-splitting.js)
-- [parallel/test-http-response-status-message.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-response-status-message.js)
-- [parallel/test-http-response-statuscode.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-response-statuscode.js)
-- [parallel/test-http-same-map.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-same-map.js)
-- [parallel/test-http-server-async-dispose.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-async-dispose.js)
-- [parallel/test-http-server-capture-rejections.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-capture-rejections.js)
-- [parallel/test-http-server-client-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-client-error.js)
-- [parallel/test-http-server-close-all.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-close-all.js)
-- [parallel/test-http-server-close-destroy-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-close-destroy-timeout.js)
-- [parallel/test-http-server-close-idle-wait-response.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-close-idle-wait-response.js)
-- [parallel/test-http-server-close-idle.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-close-idle.js)
-- [parallel/test-http-server-connection-list-when-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-connection-list-when-close.js)
-- [parallel/test-http-server-connections-checking-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-connections-checking-leak.js)
-- [parallel/test-http-server-consumed-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-consumed-timeout.js)
-- [parallel/test-http-server-de-chunked-trailer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-de-chunked-trailer.js)
-- [parallel/test-http-server-destroy-socket-on-client-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-destroy-socket-on-client-error.js)
-- [parallel/test-http-server-headers-timeout-delayed-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-headers-timeout-delayed-headers.js)
-- [parallel/test-http-server-headers-timeout-interrupted-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-headers-timeout-interrupted-headers.js)
-- [parallel/test-http-server-headers-timeout-keepalive.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-headers-timeout-keepalive.js)
-- [parallel/test-http-server-headers-timeout-pipelining.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-headers-timeout-pipelining.js)
-- [parallel/test-http-server-incomingmessage-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-incomingmessage-destroy.js)
-- [parallel/test-http-server-keep-alive-defaults.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-keep-alive-defaults.js)
-- [parallel/test-http-server-keep-alive-max-requests-null.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-keep-alive-max-requests-null.js)
-- [parallel/test-http-server-keep-alive-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-keep-alive-timeout.js)
-- [parallel/test-http-server-keepalive-end.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-keepalive-end.js)
-- [parallel/test-http-server-keepalive-req-gc.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-keepalive-req-gc.js)
-- [parallel/test-http-server-multiheaders.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-multiheaders.js)
-- [parallel/test-http-server-multiheaders2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-multiheaders2.js)
-- [parallel/test-http-server-non-utf8-header.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-non-utf8-header.js)
-- [parallel/test-http-server-options-highwatermark.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-options-highwatermark.js)
-- [parallel/test-http-server-options-incoming-message.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-options-incoming-message.js)
-- [parallel/test-http-server-options-server-response.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-options-server-response.js)
-- [parallel/test-http-server-reject-chunked-with-content-length.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-reject-chunked-with-content-length.js)
-- [parallel/test-http-server-reject-cr-no-lf.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-reject-cr-no-lf.js)
-- [parallel/test-http-server-request-timeout-delayed-body.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-request-timeout-delayed-body.js)
-- [parallel/test-http-server-request-timeout-delayed-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-request-timeout-delayed-headers.js)
-- [parallel/test-http-server-request-timeout-interrupted-body.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-request-timeout-interrupted-body.js)
-- [parallel/test-http-server-request-timeout-interrupted-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-request-timeout-interrupted-headers.js)
-- [parallel/test-http-server-request-timeout-keepalive.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-request-timeout-keepalive.js)
-- [parallel/test-http-server-request-timeout-pipelining.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-request-timeout-pipelining.js)
-- [parallel/test-http-server-request-timeout-upgrade.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-request-timeout-upgrade.js)
-- [parallel/test-http-server-request-timeouts-mixed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-request-timeouts-mixed.js)
-- [parallel/test-http-server-response-standalone.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-response-standalone.js)
-- [parallel/test-http-server-stale-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-stale-close.js)
-- [parallel/test-http-server-timeouts-validation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-timeouts-validation.js)
-- [parallel/test-http-server-unconsume-consume.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-unconsume-consume.js)
-- [parallel/test-http-server-unconsume.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server-unconsume.js)
-- [parallel/test-http-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-server.js)
-- [parallel/test-http-set-max-idle-http-parser.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-set-max-idle-http-parser.js)
-- [parallel/test-http-set-timeout-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-set-timeout-server.js)
-- [parallel/test-http-set-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-set-timeout.js)
-- [parallel/test-http-set-trailers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-set-trailers.js)
-- [parallel/test-http-should-keep-alive.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-should-keep-alive.js)
-- [parallel/test-http-socket-encoding-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-socket-encoding-error.js)
-- [parallel/test-http-socket-error-listeners.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-socket-error-listeners.js)
-- [parallel/test-http-status-message.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-status-message.js)
-- [parallel/test-http-sync-write-error-during-continue.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-sync-write-error-during-continue.js)
-- [parallel/test-http-timeout-client-warning.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-timeout-client-warning.js)
-- [parallel/test-http-timeout-overflow.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-timeout-overflow.js)
-- [parallel/test-http-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-timeout.js)
-- [parallel/test-http-transfer-encoding-repeated-chunked.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-transfer-encoding-repeated-chunked.js)
-- [parallel/test-http-transfer-encoding-smuggling.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-transfer-encoding-smuggling.js)
-- [parallel/test-http-unix-socket-keep-alive.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-unix-socket-keep-alive.js)
-- [parallel/test-http-unix-socket.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-unix-socket.js)
-- [parallel/test-http-upgrade-advertise.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-upgrade-advertise.js)
-- [parallel/test-http-upgrade-agent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-upgrade-agent.js)
-- [parallel/test-http-upgrade-binary.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-upgrade-binary.js)
-- [parallel/test-http-upgrade-client.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-upgrade-client.js)
-- [parallel/test-http-upgrade-client2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-upgrade-client2.js)
-- [parallel/test-http-upgrade-reconsume-stream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-upgrade-reconsume-stream.js)
-- [parallel/test-http-upgrade-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-upgrade-server.js)
-- [parallel/test-http-upgrade-server2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-upgrade-server2.js)
-- [parallel/test-http-url.parse-auth-with-header-in-request.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-url.parse-auth-with-header-in-request.js)
-- [parallel/test-http-writable-true-after-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-writable-true-after-close.js)
-- [parallel/test-http-write-callbacks.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-write-callbacks.js)
-- [parallel/test-http-write-head-2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-write-head-2.js)
-- [parallel/test-http-write-head.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-write-head.js)
-- [parallel/test-http-zero-length-write.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http-zero-length-write.js)
-- [parallel/test-http.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http.js)
-- [parallel/test-http2-altsvc.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-altsvc.js)
-- [parallel/test-http2-autoselect-protocol.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-autoselect-protocol.js)
-- [parallel/test-http2-backpressure.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-backpressure.js)
-- [parallel/test-http2-binding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-binding.js)
-- [parallel/test-http2-buffersize.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-buffersize.js)
-- [parallel/test-http2-byteswritten-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-byteswritten-server.js)
-- [parallel/test-http2-cancel-while-client-reading.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-cancel-while-client-reading.js)
-- [parallel/test-http2-capture-rejection.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-capture-rejection.js)
-- [parallel/test-http2-clean-output.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-clean-output.js)
-- [parallel/test-http2-client-connection-tunnelling.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-connection-tunnelling.js)
-- [parallel/test-http2-client-data-end.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-data-end.js)
-- [parallel/test-http2-client-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-destroy.js)
-- [parallel/test-http2-client-http1-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-http1-server.js)
-- [parallel/test-http2-client-jsstream-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-jsstream-destroy.js)
-- [parallel/test-http2-client-onconnect-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-onconnect-errors.js)
-- [parallel/test-http2-client-port-80.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-port-80.js)
-- [parallel/test-http2-client-priority-before-connect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-priority-before-connect.js)
-- [parallel/test-http2-client-promisify-connect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-promisify-connect.js)
-- [parallel/test-http2-client-request-options-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-request-options-errors.js)
-- [parallel/test-http2-client-rststream-before-connect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-rststream-before-connect.js)
-- [parallel/test-http2-client-set-priority.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-set-priority.js)
-- [parallel/test-http2-client-setLocalWindowSize.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-setLocalWindowSize.js)
-- [parallel/test-http2-client-setNextStreamID-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-setNextStreamID-errors.js)
-- [parallel/test-http2-client-settings-before-connect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-settings-before-connect.js)
-- [parallel/test-http2-client-shutdown-before-connect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-shutdown-before-connect.js)
-- [parallel/test-http2-client-socket-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-socket-destroy.js)
-- [parallel/test-http2-client-stream-destroy-before-connect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-stream-destroy-before-connect.js)
-- [parallel/test-http2-client-unescaped-path.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-unescaped-path.js)
-- [parallel/test-http2-client-upload-reject.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-upload-reject.js)
-- [parallel/test-http2-client-upload.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-upload.js)
-- [parallel/test-http2-client-write-before-connect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-write-before-connect.js)
-- [parallel/test-http2-client-write-empty-string.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-client-write-empty-string.js)
-- [parallel/test-http2-close-while-writing.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-close-while-writing.js)
-- [parallel/test-http2-compat-aborted.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-aborted.js)
-- [parallel/test-http2-compat-client-upload-reject.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-client-upload-reject.js)
-- [parallel/test-http2-compat-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-errors.js)
-- [parallel/test-http2-compat-expect-continue-check.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-expect-continue-check.js)
-- [parallel/test-http2-compat-expect-continue.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-expect-continue.js)
-- [parallel/test-http2-compat-method-connect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-method-connect.js)
-- [parallel/test-http2-compat-serverrequest-end.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverrequest-end.js)
-- [parallel/test-http2-compat-serverrequest-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverrequest-headers.js)
-- [parallel/test-http2-compat-serverrequest-host.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverrequest-host.js)
-- [parallel/test-http2-compat-serverrequest-pause.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverrequest-pause.js)
-- [parallel/test-http2-compat-serverrequest-pipe.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverrequest-pipe.js)
-- [parallel/test-http2-compat-serverrequest-settimeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverrequest-settimeout.js)
-- [parallel/test-http2-compat-serverrequest-trailers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverrequest-trailers.js)
-- [parallel/test-http2-compat-serverrequest.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverrequest.js)
-- [parallel/test-http2-compat-serverresponse-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-close.js)
-- [parallel/test-http2-compat-serverresponse-createpushresponse.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-createpushresponse.js)
-- [parallel/test-http2-compat-serverresponse-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-destroy.js)
-- [parallel/test-http2-compat-serverresponse-drain.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-drain.js)
-- [parallel/test-http2-compat-serverresponse-end-after-statuses-without-body.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-end-after-statuses-without-body.js)
-- [parallel/test-http2-compat-serverresponse-end.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-end.js)
-- [parallel/test-http2-compat-serverresponse-finished.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-finished.js)
-- [parallel/test-http2-compat-serverresponse-flushheaders.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-flushheaders.js)
-- [parallel/test-http2-compat-serverresponse-headers-after-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-headers-after-destroy.js)
-- [parallel/test-http2-compat-serverresponse-headers-send-date.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-headers-send-date.js)
-- [parallel/test-http2-compat-serverresponse-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-headers.js)
-- [parallel/test-http2-compat-serverresponse-settimeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-settimeout.js)
-- [parallel/test-http2-compat-serverresponse-statuscode.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-statuscode.js)
-- [parallel/test-http2-compat-serverresponse-statusmessage-property-set.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-statusmessage-property-set.js)
-- [parallel/test-http2-compat-serverresponse-statusmessage-property.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-statusmessage-property.js)
-- [parallel/test-http2-compat-serverresponse-statusmessage.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-statusmessage.js)
-- [parallel/test-http2-compat-serverresponse-trailers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-trailers.js)
-- [parallel/test-http2-compat-serverresponse-write.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-write.js)
-- [parallel/test-http2-compat-serverresponse-writehead-array.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-writehead-array.js)
-- [parallel/test-http2-compat-serverresponse-writehead.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse-writehead.js)
-- [parallel/test-http2-compat-serverresponse.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-serverresponse.js)
-- [parallel/test-http2-compat-short-stream-client-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-short-stream-client-server.js)
-- [parallel/test-http2-compat-socket-destroy-delayed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-socket-destroy-delayed.js)
-- [parallel/test-http2-compat-socket.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-socket.js)
-- [parallel/test-http2-compat-write-early-hints-invalid-argument-type.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-write-early-hints-invalid-argument-type.js)
-- [parallel/test-http2-compat-write-early-hints-invalid-argument-value.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-write-early-hints-invalid-argument-value.js)
-- [parallel/test-http2-compat-write-early-hints.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-write-early-hints.js)
-- [parallel/test-http2-compat-write-head-destroyed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-compat-write-head-destroyed.js)
-- [parallel/test-http2-connect-method-extended-cant-turn-off.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-connect-method-extended-cant-turn-off.js)
-- [parallel/test-http2-connect-method-extended.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-connect-method-extended.js)
-- [parallel/test-http2-connect-method.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-connect-method.js)
-- [parallel/test-http2-connect-tls-with-delay.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-connect-tls-with-delay.js)
-- [parallel/test-http2-connect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-connect.js)
-- [parallel/test-http2-cookies.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-cookies.js)
-- [parallel/test-http2-create-client-connect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-create-client-connect.js)
-- [parallel/test-http2-create-client-secure-session.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-create-client-secure-session.js)
-- [parallel/test-http2-create-client-session.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-create-client-session.js)
-- [parallel/test-http2-createsecureserver-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-createsecureserver-options.js)
-- [parallel/test-http2-createserver-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-createserver-options.js)
-- [parallel/test-http2-createwritereq.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-createwritereq.js)
-- [parallel/test-http2-debug.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-debug.js)
-- [parallel/test-http2-destroy-after-write.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-destroy-after-write.js)
-- [parallel/test-http2-dont-lose-data.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-dont-lose-data.js)
-- [parallel/test-http2-empty-frame-without-eof.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-empty-frame-without-eof.js)
-- [parallel/test-http2-error-order.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-error-order.js)
-- [parallel/test-http2-exceeds-server-trailer-size.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-exceeds-server-trailer-size.js)
-- [parallel/test-http2-forget-closed-streams.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-forget-closed-streams.js)
-- [parallel/test-http2-generic-streams-sendfile.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-generic-streams-sendfile.js)
-- [parallel/test-http2-generic-streams.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-generic-streams.js)
-- [parallel/test-http2-getpackedsettings.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-getpackedsettings.js)
-- [parallel/test-http2-goaway-delayed-request.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-goaway-delayed-request.js)
-- [parallel/test-http2-goaway-opaquedata.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-goaway-opaquedata.js)
-- [parallel/test-http2-head-request.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-head-request.js)
-- [parallel/test-http2-https-fallback-http-server-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-https-fallback-http-server-options.js)
-- [parallel/test-http2-https-fallback.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-https-fallback.js)
-- [parallel/test-http2-info-headers-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-info-headers-errors.js)
-- [parallel/test-http2-info-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-info-headers.js)
-- [parallel/test-http2-invalidargtypes-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-invalidargtypes-errors.js)
-- [parallel/test-http2-invalidheaderfield.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-invalidheaderfield.js)
-- [parallel/test-http2-invalidheaderfields-client.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-invalidheaderfields-client.js)
-- [parallel/test-http2-large-write-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-large-write-close.js)
-- [parallel/test-http2-large-write-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-large-write-destroy.js)
-- [parallel/test-http2-large-write-multiple-requests.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-large-write-multiple-requests.js)
-- [parallel/test-http2-large-writes-session-memory-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-large-writes-session-memory-leak.js)
-- [parallel/test-http2-malformed-altsvc.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-malformed-altsvc.js)
-- [parallel/test-http2-many-writes-and-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-many-writes-and-destroy.js)
-- [parallel/test-http2-max-concurrent-streams.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-max-concurrent-streams.js)
-- [parallel/test-http2-max-invalid-frames.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-max-invalid-frames.js)
-- [parallel/test-http2-max-session-memory-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-max-session-memory-leak.js)
-- [parallel/test-http2-max-settings.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-max-settings.js)
-- [parallel/test-http2-misbehaving-flow-control-paused.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-misbehaving-flow-control-paused.js)
-- [parallel/test-http2-misbehaving-flow-control.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-misbehaving-flow-control.js)
-- [parallel/test-http2-misbehaving-multiplex.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-misbehaving-multiplex.js)
-- [parallel/test-http2-misc-util.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-misc-util.js)
-- [parallel/test-http2-misused-pseudoheaders.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-misused-pseudoheaders.js)
-- [parallel/test-http2-multi-content-length.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-multi-content-length.js)
-- [parallel/test-http2-multiheaders-raw.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-multiheaders-raw.js)
-- [parallel/test-http2-multiheaders.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-multiheaders.js)
-- [parallel/test-http2-multiplex.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-multiplex.js)
-- [parallel/test-http2-multistream-destroy-on-read-tls.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-multistream-destroy-on-read-tls.js)
-- [parallel/test-http2-no-more-streams.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-no-more-streams.js)
-- [parallel/test-http2-no-wanttrailers-listener.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-no-wanttrailers-listener.js)
-- [parallel/test-http2-onping.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-onping.js)
-- [parallel/test-http2-options-max-headers-block-length.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-options-max-headers-block-length.js)
-- [parallel/test-http2-options-max-headers-exceeds-nghttp2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-options-max-headers-exceeds-nghttp2.js)
-- [parallel/test-http2-options-max-reserved-streams.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-options-max-reserved-streams.js)
-- [parallel/test-http2-options-server-request.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-options-server-request.js)
-- [parallel/test-http2-options-server-response.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-options-server-response.js)
-- [parallel/test-http2-origin.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-origin.js)
-- [parallel/test-http2-pack-end-stream-flag.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-pack-end-stream-flag.js)
-- [parallel/test-http2-padding-aligned.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-padding-aligned.js)
-- [parallel/test-http2-perf_hooks.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-perf_hooks.js)
-- [parallel/test-http2-ping-settings-heapdump.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-ping-settings-heapdump.js)
-- [parallel/test-http2-ping-unsolicited-ack.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-ping-unsolicited-ack.js)
-- [parallel/test-http2-ping.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-ping.js)
-- [parallel/test-http2-pipe-named-pipe.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-pipe-named-pipe.js)
-- [parallel/test-http2-pipe.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-pipe.js)
-- [parallel/test-http2-priority-cycle-.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-priority-cycle-.js)
-- [parallel/test-http2-priority-event.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-priority-event.js)
-- [parallel/test-http2-propagate-session-destroy-code.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-propagate-session-destroy-code.js)
-- [parallel/test-http2-removed-header-stays-removed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-removed-header-stays-removed.js)
-- [parallel/test-http2-request-remove-connect-listener.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-request-remove-connect-listener.js)
-- [parallel/test-http2-res-corked.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-res-corked.js)
-- [parallel/test-http2-res-writable-properties.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-res-writable-properties.js)
-- [parallel/test-http2-reset-flood.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-reset-flood.js)
-- [parallel/test-http2-respond-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-errors.js)
-- [parallel/test-http2-respond-file-304.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-file-304.js)
-- [parallel/test-http2-respond-file-404.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-file-404.js)
-- [parallel/test-http2-respond-file-error-dir.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-file-error-dir.js)
-- [parallel/test-http2-respond-file-error-pipe-offset.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-file-error-pipe-offset.js)
-- [parallel/test-http2-respond-file-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-file-errors.js)
-- [parallel/test-http2-respond-file-fd-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-file-fd-errors.js)
-- [parallel/test-http2-respond-file-fd-invalid.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-file-fd-invalid.js)
-- [parallel/test-http2-respond-file-fd-range.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-file-fd-range.js)
-- [parallel/test-http2-respond-file-fd.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-file-fd.js)
-- [parallel/test-http2-respond-file-filehandle.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-file-filehandle.js)
-- [parallel/test-http2-respond-file-push.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-file-push.js)
-- [parallel/test-http2-respond-file-range.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-file-range.js)
-- [parallel/test-http2-respond-file-with-pipe.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-file-with-pipe.js)
-- [parallel/test-http2-respond-file.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-file.js)
-- [parallel/test-http2-respond-nghttperrors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-nghttperrors.js)
-- [parallel/test-http2-respond-no-data.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-no-data.js)
-- [parallel/test-http2-respond-with-fd-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-with-fd-errors.js)
-- [parallel/test-http2-respond-with-file-connection-abort.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-respond-with-file-connection-abort.js)
-- [parallel/test-http2-response-splitting.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-response-splitting.js)
-- [parallel/test-http2-sensitive-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-sensitive-headers.js)
-- [parallel/test-http2-sent-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-sent-headers.js)
-- [parallel/test-http2-serve-file.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-serve-file.js)
-- [parallel/test-http2-server-async-dispose.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-async-dispose.js)
-- [parallel/test-http2-server-close-callback.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-close-callback.js)
-- [parallel/test-http2-server-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-errors.js)
-- [parallel/test-http2-server-http1-client.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-http1-client.js)
-- [parallel/test-http2-server-push-disabled.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-push-disabled.js)
-- [parallel/test-http2-server-push-stream-errors-args.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-push-stream-errors-args.js)
-- [parallel/test-http2-server-push-stream-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-push-stream-errors.js)
-- [parallel/test-http2-server-push-stream-head.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-push-stream-head.js)
-- [parallel/test-http2-server-push-stream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-push-stream.js)
-- [parallel/test-http2-server-rst-before-respond.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-rst-before-respond.js)
-- [parallel/test-http2-server-rst-stream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-rst-stream.js)
-- [parallel/test-http2-server-session-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-session-destroy.js)
-- [parallel/test-http2-server-sessionerror.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-sessionerror.js)
-- [parallel/test-http2-server-set-header.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-set-header.js)
-- [parallel/test-http2-server-setLocalWindowSize.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-setLocalWindowSize.js)
-- [parallel/test-http2-server-settimeout-no-callback.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-settimeout-no-callback.js)
-- [parallel/test-http2-server-shutdown-before-respond.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-shutdown-before-respond.js)
-- [parallel/test-http2-server-shutdown-options-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-shutdown-options-errors.js)
-- [parallel/test-http2-server-shutdown-redundant.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-shutdown-redundant.js)
-- [parallel/test-http2-server-socket-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-socket-destroy.js)
-- [parallel/test-http2-server-startup.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-startup.js)
-- [parallel/test-http2-server-stream-session-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-stream-session-destroy.js)
-- [parallel/test-http2-server-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-timeout.js)
-- [parallel/test-http2-server-unknown-protocol.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-server-unknown-protocol.js)
-- [parallel/test-http2-session-gc-while-write-scheduled.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-session-gc-while-write-scheduled.js)
-- [parallel/test-http2-session-settings.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-session-settings.js)
-- [parallel/test-http2-session-stream-state.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-session-stream-state.js)
-- [parallel/test-http2-session-unref.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-session-unref.js)
-- [parallel/test-http2-settings-unsolicited-ack.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-settings-unsolicited-ack.js)
-- [parallel/test-http2-short-stream-client-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-short-stream-client-server.js)
-- [parallel/test-http2-single-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-single-headers.js)
-- [parallel/test-http2-socket-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-socket-close.js)
-- [parallel/test-http2-socket-proxy-handler-for-has.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-socket-proxy-handler-for-has.js)
-- [parallel/test-http2-stream-client.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-stream-client.js)
-- [parallel/test-http2-stream-destroy-event-order.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-stream-destroy-event-order.js)
-- [parallel/test-http2-timeouts.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-timeouts.js)
-- [parallel/test-http2-tls-disconnect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-tls-disconnect.js)
-- [parallel/test-http2-too-large-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-too-large-headers.js)
-- [parallel/test-http2-too-many-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-too-many-headers.js)
-- [parallel/test-http2-too-many-settings.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-too-many-settings.js)
-- [parallel/test-http2-too-many-streams.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-too-many-streams.js)
-- [parallel/test-http2-trailers-after-session-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-trailers-after-session-close.js)
-- [parallel/test-http2-trailers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-trailers.js)
-- [parallel/test-http2-unbound-socket-proxy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-unbound-socket-proxy.js)
-- [parallel/test-http2-update-settings.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-update-settings.js)
-- [parallel/test-http2-util-assert-valid-pseudoheader.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-util-assert-valid-pseudoheader.js)
-- [parallel/test-http2-util-asserts.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-util-asserts.js)
-- [parallel/test-http2-util-headers-list.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-util-headers-list.js)
-- [parallel/test-http2-util-nghttp2error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-util-nghttp2error.js)
-- [parallel/test-http2-util-update-options-buffer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-util-update-options-buffer.js)
-- [parallel/test-http2-window-size.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-window-size.js)
-- [parallel/test-http2-write-callbacks.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-write-callbacks.js)
-- [parallel/test-http2-write-finishes-after-stream-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-write-finishes-after-stream-destroy.js)
-- [parallel/test-http2-zero-length-header.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-zero-length-header.js)
-- [parallel/test-http2-zero-length-write.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-http2-zero-length-write.js)
-- [parallel/test-https-abortcontroller.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-abortcontroller.js)
-- [parallel/test-https-agent-abort-controller.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-agent-abort-controller.js)
-- [parallel/test-https-agent-additional-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-agent-additional-options.js)
-- [parallel/test-https-agent-constructor.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-agent-constructor.js)
-- [parallel/test-https-agent-create-connection.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-agent-create-connection.js)
-- [parallel/test-https-agent-disable-session-reuse.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-agent-disable-session-reuse.js)
-- [parallel/test-https-agent-getname.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-agent-getname.js)
-- [parallel/test-https-agent-keylog.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-agent-keylog.js)
-- [parallel/test-https-agent-servername.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-agent-servername.js)
-- [parallel/test-https-agent-session-eviction.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-agent-session-eviction.js)
-- [parallel/test-https-agent-session-injection.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-agent-session-injection.js)
-- [parallel/test-https-agent-session-reuse.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-agent-session-reuse.js)
-- [parallel/test-https-agent-sni.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-agent-sni.js)
-- [parallel/test-https-agent-sockets-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-agent-sockets-leak.js)
-- [parallel/test-https-agent-unref-socket.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-agent-unref-socket.js)
-- [parallel/test-https-agent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-agent.js)
-- [parallel/test-https-argument-of-creating.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-argument-of-creating.js)
-- [parallel/test-https-autoselectfamily.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-autoselectfamily.js)
-- [parallel/test-https-byteswritten.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-byteswritten.js)
-- [parallel/test-https-client-checkServerIdentity.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-client-checkServerIdentity.js)
-- [parallel/test-https-client-get-url.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-client-get-url.js)
-- [parallel/test-https-client-override-global-agent.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-client-override-global-agent.js)
-- [parallel/test-https-client-reject.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-client-reject.js)
-- [parallel/test-https-client-resume.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-client-resume.js)
-- [parallel/test-https-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-close.js)
-- [parallel/test-https-connect-address-family.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-connect-address-family.js)
-- [parallel/test-https-drain.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-drain.js)
-- [parallel/test-https-eof-for-eom.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-eof-for-eom.js)
-- [parallel/test-https-host-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-host-headers.js)
-- [parallel/test-https-hwm.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-hwm.js)
-- [parallel/test-https-insecure-parse-per-stream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-insecure-parse-per-stream.js)
-- [parallel/test-https-keep-alive-drop-requests.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-keep-alive-drop-requests.js)
-- [parallel/test-https-max-header-size-per-stream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-max-header-size-per-stream.js)
-- [parallel/test-https-max-headers-count.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-max-headers-count.js)
-- [parallel/test-https-options-boolean-check.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-options-boolean-check.js)
-- [parallel/test-https-pfx.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-pfx.js)
-- [parallel/test-https-request-arguments.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-request-arguments.js)
-- [parallel/test-https-resume-after-renew.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-resume-after-renew.js)
-- [parallel/test-https-selfsigned-no-keycertsign-no-crash.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-selfsigned-no-keycertsign-no-crash.js)
-- [parallel/test-https-server-async-dispose.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-server-async-dispose.js)
-- [parallel/test-https-server-close-all.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-server-close-all.js)
-- [parallel/test-https-server-close-destroy-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-server-close-destroy-timeout.js)
-- [parallel/test-https-server-close-idle.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-server-close-idle.js)
-- [parallel/test-https-server-connections-checking-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-server-connections-checking-leak.js)
-- [parallel/test-https-server-headers-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-server-headers-timeout.js)
-- [parallel/test-https-server-options-incoming-message.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-server-options-incoming-message.js)
-- [parallel/test-https-server-options-server-response.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-server-options-server-response.js)
-- [parallel/test-https-server-request-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-server-request-timeout.js)
-- [parallel/test-https-set-timeout-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-set-timeout-server.js)
-- [parallel/test-https-simple.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-simple.js)
-- [parallel/test-https-socket-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-socket-options.js)
-- [parallel/test-https-strict.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-strict.js)
-- [parallel/test-https-timeout-server-2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-timeout-server-2.js)
-- [parallel/test-https-timeout-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-timeout-server.js)
-- [parallel/test-https-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-timeout.js)
-- [parallel/test-https-truncate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-truncate.js)
-- [parallel/test-https-unix-socket-self-signed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-https-unix-socket-self-signed.js)
-- [parallel/test-icu-minimum-version.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-icu-minimum-version.js)
-- [parallel/test-icu-punycode.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-icu-punycode.js)
-- [parallel/test-inspect-address-in-use.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspect-address-in-use.js)
-- [parallel/test-inspect-async-hook-setup-at-inspect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspect-async-hook-setup-at-inspect.js)
-- [parallel/test-inspect-publish-uid.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspect-publish-uid.js)
-- [parallel/test-inspect-support-for-node_options.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspect-support-for-node_options.js)
-- [parallel/test-inspector-already-activated-cli.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-already-activated-cli.js)
-- [parallel/test-inspector-async-call-stack-abort.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-async-call-stack-abort.js)
-- [parallel/test-inspector-async-call-stack.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-async-call-stack.js)
-- [parallel/test-inspector-async-hook-after-done.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-async-hook-after-done.js)
-- [parallel/test-inspector-async-hook-setup-at-inspect-brk.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-async-hook-setup-at-inspect-brk.js)
-- [parallel/test-inspector-async-hook-setup-at-signal.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-async-hook-setup-at-signal.js)
-- [parallel/test-inspector-async-stack-traces-promise-then.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-async-stack-traces-promise-then.js)
-- [parallel/test-inspector-async-stack-traces-set-interval.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-async-stack-traces-set-interval.js)
-- [parallel/test-inspector-bindings.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-bindings.js)
-- [parallel/test-inspector-break-e.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-break-e.js)
-- [parallel/test-inspector-break-when-eval.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-break-when-eval.js)
-- [parallel/test-inspector-close-worker.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-close-worker.js)
-- [parallel/test-inspector-connect-main-thread.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-connect-main-thread.js)
-- [parallel/test-inspector-connect-to-main-thread.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-connect-to-main-thread.js)
-- [parallel/test-inspector-console-top-frame.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-console-top-frame.js)
-- [parallel/test-inspector-console.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-console.js)
-- [parallel/test-inspector-contexts.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-contexts.js)
-- [parallel/test-inspector-debug-brk-flag.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-debug-brk-flag.js)
-- [parallel/test-inspector-debug-end.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-debug-end.js)
-- [parallel/test-inspector-enabled.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-enabled.js)
-- [parallel/test-inspector-esm.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-esm.js)
-- [parallel/test-inspector-exception.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-exception.js)
-- [parallel/test-inspector-has-idle.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-has-idle.js)
-- [parallel/test-inspector-has-inspector-false.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-has-inspector-false.js)
-- [parallel/test-inspector-heap-allocation-tracker.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-heap-allocation-tracker.js)
-- [parallel/test-inspector-heapdump.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-heapdump.js)
-- [parallel/test-inspector-inspect-brk-node.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-inspect-brk-node.js)
-- [parallel/test-inspector-invalid-args.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-invalid-args.js)
-- [parallel/test-inspector-ip-detection.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-ip-detection.js)
-- [parallel/test-inspector-module.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-module.js)
-- [parallel/test-inspector-multisession-js.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-multisession-js.js)
-- [parallel/test-inspector-multisession-ws.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-multisession-ws.js)
-- [parallel/test-inspector-not-blocked-on-idle.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-not-blocked-on-idle.js)
-- [parallel/test-inspector-open-coverage.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-open-coverage.js)
-- [parallel/test-inspector-open-port-integer-overflow.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-open-port-integer-overflow.js)
-- [parallel/test-inspector-open.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-open.js)
-- [parallel/test-inspector-overwrite-config.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-overwrite-config.js)
-- [parallel/test-inspector-port-zero-cluster.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-port-zero-cluster.js)
-- [parallel/test-inspector-port-zero.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-port-zero.js)
-- [parallel/test-inspector-promises.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-promises.js)
-- [parallel/test-inspector-reported-host.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-reported-host.js)
-- [parallel/test-inspector-resource-name-to-url.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-resource-name-to-url.js)
-- [parallel/test-inspector-runtime-evaluate-with-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-runtime-evaluate-with-timeout.js)
-- [parallel/test-inspector-scriptparsed-context.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-scriptparsed-context.js)
-- [parallel/test-inspector-stop-profile-after-done.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-stop-profile-after-done.js)
-- [parallel/test-inspector-stress-http.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-stress-http.js)
-- [parallel/test-inspector-tracing-domain.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-tracing-domain.js)
-- [parallel/test-inspector-vm-global-accessors-getter-sideeffect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-vm-global-accessors-getter-sideeffect.js)
-- [parallel/test-inspector-vm-global-accessors-sideeffects.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-vm-global-accessors-sideeffects.js)
-- [parallel/test-inspector-wait-for-connection.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-wait-for-connection.js)
-- [parallel/test-inspector-waiting-for-disconnect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-waiting-for-disconnect.js)
-- [parallel/test-inspector-workers-flat-list.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector-workers-flat-list.js)
-- [parallel/test-inspector.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-inspector.js)
-- [parallel/test-internal-assert.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-assert.js)
-- [parallel/test-internal-error-original-names.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-error-original-names.js)
-- [parallel/test-internal-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-errors.js)
-- [parallel/test-internal-fs-syncwritestream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-fs-syncwritestream.js)
-- [parallel/test-internal-iterable-weak-map.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-iterable-weak-map.js)
-- [parallel/test-internal-module-require.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-module-require.js)
-- [parallel/test-internal-module-wrap.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-module-wrap.js)
-- [parallel/test-internal-modules.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-modules.js)
-- [parallel/test-internal-process-binding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-process-binding.js)
-- [parallel/test-internal-socket-list-receive.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-socket-list-receive.js)
-- [parallel/test-internal-socket-list-send.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-socket-list-send.js)
-- [parallel/test-internal-util-assertCrypto.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-util-assertCrypto.js)
-- [parallel/test-internal-util-classwrapper.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-util-classwrapper.js)
-- [parallel/test-internal-util-decorate-error-stack.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-util-decorate-error-stack.js)
-- [parallel/test-internal-util-helpers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-util-helpers.js)
-- [parallel/test-internal-util-objects.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-util-objects.js)
-- [parallel/test-internal-util-weakreference.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-util-weakreference.js)
-- [parallel/test-internal-validators-validateoneof.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-validators-validateoneof.js)
-- [parallel/test-internal-validators-validateport.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-validators-validateport.js)
-- [parallel/test-internal-webidl-converttoint.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-internal-webidl-converttoint.js)
-- [parallel/test-intl-v8BreakIterator.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-intl-v8BreakIterator.js)
-- [parallel/test-intl.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-intl.js)
-- [parallel/test-js-stream-call-properties.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-js-stream-call-properties.js)
-- [parallel/test-listen-fd-cluster.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-listen-fd-cluster.js)
-- [parallel/test-listen-fd-ebadf.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-listen-fd-ebadf.js)
-- [parallel/test-listen-fd-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-listen-fd-server.js)
-- [parallel/test-macos-app-sandbox.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-macos-app-sandbox.js)
-- [parallel/test-math-random.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-math-random.js)
-- [parallel/test-messageevent-brandcheck.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-messageevent-brandcheck.js)
-- [parallel/test-messageport-hasref.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-messageport-hasref.js)
-- [parallel/test-messaging-maketransferable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-messaging-maketransferable.js)
-- [parallel/test-mime-api.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-mime-api.js)
-- [parallel/test-mime-whatwg.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-mime-whatwg.js)
-- [parallel/test-module-binding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-binding.js)
-- [parallel/test-module-builtin.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-builtin.js)
-- [parallel/test-module-children.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-children.js)
-- [parallel/test-module-circular-dependency-warning.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-circular-dependency-warning.js)
-- [parallel/test-module-create-require.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-create-require.js)
-- [parallel/test-module-globalpaths-nodepath.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-globalpaths-nodepath.js)
-- [parallel/test-module-loading-deprecated.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-loading-deprecated.js)
-- [parallel/test-module-loading-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-loading-error.js)
-- [parallel/test-module-loading-globalpaths.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-loading-globalpaths.js)
-- [parallel/test-module-main-extension-lookup.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-main-extension-lookup.js)
-- [parallel/test-module-main-fail.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-main-fail.js)
-- [parallel/test-module-main-preserve-symlinks-fail.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-main-preserve-symlinks-fail.js)
-- [parallel/test-module-parent-deprecation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-parent-deprecation.js)
-- [parallel/test-module-parent-setter-deprecation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-parent-setter-deprecation.js)
-- [parallel/test-module-prototype-mutation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-prototype-mutation.js)
-- [parallel/test-module-run-main-monkey-patch.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-run-main-monkey-patch.js)
-- [parallel/test-module-stat.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-stat.js)
-- [parallel/test-module-symlinked-peer-modules.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-symlinked-peer-modules.js)
-- [parallel/test-module-version.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-version.js)
-- [parallel/test-module-wrap.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-wrap.js)
-- [parallel/test-module-wrapper.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-module-wrapper.js)
-- [parallel/test-net-allow-half-open.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-allow-half-open.js)
-- [parallel/test-net-autoselectfamily-commandline-option.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-autoselectfamily-commandline-option.js)
-- [parallel/test-net-autoselectfamily-default.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-autoselectfamily-default.js)
-- [parallel/test-net-autoselectfamily-ipv4first.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-autoselectfamily-ipv4first.js)
-- [parallel/test-net-binary.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-binary.js)
-- [parallel/test-net-bytes-read.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-bytes-read.js)
-- [parallel/test-net-bytes-stats.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-bytes-stats.js)
-- [parallel/test-net-child-process-connect-reset.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-child-process-connect-reset.js)
-- [parallel/test-net-client-bind-twice.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-client-bind-twice.js)
-- [parallel/test-net-connect-abort-controller.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-connect-abort-controller.js)
-- [parallel/test-net-connect-keepalive.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-connect-keepalive.js)
-- [parallel/test-net-connect-memleak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-connect-memleak.js)
-- [parallel/test-net-connect-nodelay.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-connect-nodelay.js)
-- [parallel/test-net-connect-options-allowhalfopen.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-connect-options-allowhalfopen.js)
-- [parallel/test-net-connect-options-invalid.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-connect-options-invalid.js)
-- [parallel/test-net-connect-options-path.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-connect-options-path.js)
-- [parallel/test-net-connect-reset-after-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-connect-reset-after-destroy.js)
-- [parallel/test-net-connect-reset-before-connected.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-connect-reset-before-connected.js)
-- [parallel/test-net-connect-reset-until-connected.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-connect-reset-until-connected.js)
-- [parallel/test-net-connect-reset.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-connect-reset.js)
-- [parallel/test-net-deprecated-setsimultaneousaccepts.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-deprecated-setsimultaneousaccepts.js)
-- [parallel/test-net-end-destroyed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-end-destroyed.js)
-- [parallel/test-net-large-string.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-large-string.js)
-- [parallel/test-net-listen-exclusive-random-ports.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-listen-exclusive-random-ports.js)
-- [parallel/test-net-listen-fd0.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-listen-fd0.js)
-- [parallel/test-net-listen-ipv6only.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-listen-ipv6only.js)
-- [parallel/test-net-normalize-args.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-normalize-args.js)
-- [parallel/test-net-onread-static-buffer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-onread-static-buffer.js)
-- [parallel/test-net-perf_hooks.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-perf_hooks.js)
-- [parallel/test-net-pingpong.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-pingpong.js)
-- [parallel/test-net-server-drop-connections.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-server-drop-connections.js)
-- [parallel/test-net-server-keepalive.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-server-keepalive.js)
-- [parallel/test-net-server-listen-handle.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-server-listen-handle.js)
-- [parallel/test-net-server-max-connections-close-makes-more-available.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-server-max-connections-close-makes-more-available.js)
-- [parallel/test-net-server-max-connections.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-server-max-connections.js)
-- [parallel/test-net-server-nodelay.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-server-nodelay.js)
-- [parallel/test-net-server-reset.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-server-reset.js)
-- [parallel/test-net-server-simultaneous-accepts-produce-warning-once.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-server-simultaneous-accepts-produce-warning-once.js)
-- [parallel/test-net-socket-byteswritten.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-socket-byteswritten.js)
-- [parallel/test-net-socket-connect-invalid-autoselectfamilyattempttimeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-socket-connect-invalid-autoselectfamilyattempttimeout.js)
-- [parallel/test-net-socket-constructor.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-socket-constructor.js)
-- [parallel/test-net-socket-local-address.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-socket-local-address.js)
-- [parallel/test-net-socket-reset-send.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-socket-reset-send.js)
-- [parallel/test-net-socket-reset-twice.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-socket-reset-twice.js)
-- [parallel/test-net-stream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-stream.js)
-- [parallel/test-net-throttle.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-throttle.js)
-- [parallel/test-net-write-after-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-write-after-close.js)
-- [parallel/test-net-write-after-end-nt.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-write-after-end-nt.js)
-- [parallel/test-net-write-cb-on-destroy-before-connect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-net-write-cb-on-destroy-before-connect.js)
-- [parallel/test-no-addons-resolution-condition.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-no-addons-resolution-condition.js)
-- [parallel/test-npm-install.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-npm-install.js)
-- [parallel/test-npm-version.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-npm-version.js)
-- [parallel/test-openssl-ca-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-openssl-ca-options.js)
-- [parallel/test-options-binding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-options-binding.js)
-- [parallel/test-os-checked-function.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-os-checked-function.js)
-- [parallel/test-os-eol.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-os-eol.js)
-- [parallel/test-os-process-priority.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-os-process-priority.js)
-- [parallel/test-os-userinfo-handles-getter-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-os-userinfo-handles-getter-errors.js)
-- [parallel/test-path-posix-relative-on-windows.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-path-posix-relative-on-windows.js)
-- [parallel/test-pending-deprecation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-pending-deprecation.js)
-- [parallel/test-perf-hooks-histogram.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-perf-hooks-histogram.js)
-- [parallel/test-perf-hooks-resourcetiming.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-perf-hooks-resourcetiming.js)
-- [parallel/test-perf-hooks-usertiming.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-perf-hooks-usertiming.js)
-- [parallel/test-perf-hooks-worker-timeorigin.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-perf-hooks-worker-timeorigin.js)
-- [parallel/test-performance-eventlooputil.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-performance-eventlooputil.js)
-- [parallel/test-performance-function-async.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-performance-function-async.js)
-- [parallel/test-performance-function.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-performance-function.js)
-- [parallel/test-performance-gc.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-performance-gc.js)
-- [parallel/test-performance-global.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-performance-global.js)
-- [parallel/test-performance-measure.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-performance-measure.js)
-- [parallel/test-performance-nodetiming.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-performance-nodetiming.js)
-- [parallel/test-performance-resourcetimingbufferfull.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-performance-resourcetimingbufferfull.js)
-- [parallel/test-performance-resourcetimingbuffersize.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-performance-resourcetimingbuffersize.js)
-- [parallel/test-performanceobserver.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-performanceobserver.js)
-- [parallel/test-permission-allow-child-process-cli.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-allow-child-process-cli.js)
-- [parallel/test-permission-allow-worker-cli.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-allow-worker-cli.js)
-- [parallel/test-permission-child-process-cli.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-child-process-cli.js)
-- [parallel/test-permission-experimental.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-experimental.js)
-- [parallel/test-permission-fs-read.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-fs-read.js)
-- [parallel/test-permission-fs-relative-path.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-fs-relative-path.js)
-- [parallel/test-permission-fs-supported.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-fs-supported.js)
-- [parallel/test-permission-fs-symlink-relative.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-fs-symlink-relative.js)
-- [parallel/test-permission-fs-symlink-target-write.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-fs-symlink-target-write.js)
-- [parallel/test-permission-fs-symlink.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-fs-symlink.js)
-- [parallel/test-permission-fs-traversal-path.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-fs-traversal-path.js)
-- [parallel/test-permission-fs-wildcard.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-fs-wildcard.js)
-- [parallel/test-permission-fs-windows-path.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-fs-windows-path.js)
-- [parallel/test-permission-fs-write-report.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-fs-write-report.js)
-- [parallel/test-permission-fs-write-v8.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-fs-write-v8.js)
-- [parallel/test-permission-fs-write.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-fs-write.js)
-- [parallel/test-permission-has.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-has.js)
-- [parallel/test-permission-inspector.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-inspector.js)
-- [parallel/test-permission-processbinding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-processbinding.js)
-- [parallel/test-permission-warning-flags.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-warning-flags.js)
-- [parallel/test-permission-worker-threads-cli.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-permission-worker-threads-cli.js)
-- [parallel/test-pipe-abstract-socket-http.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-pipe-abstract-socket-http.js)
-- [parallel/test-pipe-abstract-socket.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-pipe-abstract-socket.js)
-- [parallel/test-pipe-address.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-pipe-address.js)
-- [parallel/test-pipe-file-to-http.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-pipe-file-to-http.js)
-- [parallel/test-pipe-head.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-pipe-head.js)
-- [parallel/test-pipe-outgoing-message-data-emitted-after-ended.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-pipe-outgoing-message-data-emitted-after-ended.js)
-- [parallel/test-pipe-stream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-pipe-stream.js)
-- [parallel/test-pipe-unref.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-pipe-unref.js)
-- [parallel/test-policy-crypto-default-encoding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-policy-crypto-default-encoding.js)
-- [parallel/test-policy-crypto-hash-tampering.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-policy-crypto-hash-tampering.js)
-- [parallel/test-policy-dependencies.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-policy-dependencies.js)
-- [parallel/test-policy-dependency-conditions.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-policy-dependency-conditions.js)
-- [parallel/test-policy-integrity-flag.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-policy-integrity-flag.js)
-- [parallel/test-policy-manifest.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-policy-manifest.js)
-- [parallel/test-policy-parse-integrity.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-policy-parse-integrity.js)
-- [parallel/test-policy-process-binding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-policy-process-binding.js)
-- [parallel/test-policy-scopes-dependencies.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-policy-scopes-dependencies.js)
-- [parallel/test-policy-scopes-integrity.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-policy-scopes-integrity.js)
-- [parallel/test-policy-scopes.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-policy-scopes.js)
-- [parallel/test-preload-print-process-argv.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-preload-print-process-argv.js)
-- [parallel/test-preload-self-referential.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-preload-self-referential.js)
-- [parallel/test-preload-worker.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-preload-worker.js)
-- [parallel/test-preload.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-preload.js)
-- [parallel/test-primordials-apply.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-primordials-apply.js)
-- [parallel/test-primordials-promise.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-primordials-promise.js)
-- [parallel/test-primordials-regexp.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-primordials-regexp.js)
-- [parallel/test-priority-queue.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-priority-queue.js)
-- [parallel/test-process-assert.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-assert.js)
-- [parallel/test-process-beforeexit-throw-exit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-beforeexit-throw-exit.js)
-- [parallel/test-process-binding-util.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-binding-util.js)
-- [parallel/test-process-chdir-errormessage.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-chdir-errormessage.js)
-- [parallel/test-process-chdir.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-chdir.js)
-- [parallel/test-process-config.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-config.js)
-- [parallel/test-process-constants-noatime.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-constants-noatime.js)
-- [parallel/test-process-constrained-memory.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-constrained-memory.js)
-- [parallel/test-process-cpuUsage.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-cpuUsage.js)
-- [parallel/test-process-dlopen-error-message-crash.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-dlopen-error-message-crash.js)
-- [parallel/test-process-emit-warning-from-native.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-emit-warning-from-native.js)
-- [parallel/test-process-emit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-emit.js)
-- [parallel/test-process-env-allowed-flags-are-documented.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-env-allowed-flags-are-documented.js)
-- [parallel/test-process-env-deprecation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-env-deprecation.js)
-- [parallel/test-process-env-ignore-getter-setter.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-env-ignore-getter-setter.js)
-- [parallel/test-process-env-sideeffects.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-env-sideeffects.js)
-- [parallel/test-process-env-symbols.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-env-symbols.js)
-- [parallel/test-process-env.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-env.js)
-- [parallel/test-process-euid-egid.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-euid-egid.js)
-- [parallel/test-process-exception-capture-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-exception-capture-errors.js)
-- [parallel/test-process-exception-capture-should-abort-on-uncaught-setflagsfromstring.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-exception-capture-should-abort-on-uncaught-setflagsfromstring.js)
-- [parallel/test-process-exception-capture-should-abort-on-uncaught.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-exception-capture-should-abort-on-uncaught.js)
-- [parallel/test-process-exception-capture.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-exception-capture.js)
-- [parallel/test-process-exec-argv.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-exec-argv.js)
-- [parallel/test-process-execpath.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-execpath.js)
-- [parallel/test-process-exit-code-validation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-exit-code-validation.js)
-- [parallel/test-process-exit-code.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-exit-code.js)
-- [parallel/test-process-external-stdio-close-spawn.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-external-stdio-close-spawn.js)
-- [parallel/test-process-external-stdio-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-external-stdio-close.js)
-- [parallel/test-process-features.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-features.js)
-- [parallel/test-process-getactivehandles.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-getactivehandles.js)
-- [parallel/test-process-getactiverequests.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-getactiverequests.js)
-- [parallel/test-process-getactiveresources-track-active-handles.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-getactiveresources-track-active-handles.js)
-- [parallel/test-process-getactiveresources-track-active-requests.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-getactiveresources-track-active-requests.js)
-- [parallel/test-process-getactiveresources-track-interval-lifetime.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-getactiveresources-track-interval-lifetime.js)
-- [parallel/test-process-getactiveresources-track-multiple-timers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-getactiveresources-track-multiple-timers.js)
-- [parallel/test-process-getactiveresources-track-timer-lifetime.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-getactiveresources-track-timer-lifetime.js)
-- [parallel/test-process-getactiveresources.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-getactiveresources.js)
-- [parallel/test-process-hrtime.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-hrtime.js)
-- [parallel/test-process-initgroups.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-initgroups.js)
-- [parallel/test-process-kill-null.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-kill-null.js)
-- [parallel/test-process-prototype.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-prototype.js)
-- [parallel/test-process-raw-debug.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-raw-debug.js)
-- [parallel/test-process-redirect-warnings-env.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-redirect-warnings-env.js)
-- [parallel/test-process-redirect-warnings.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-redirect-warnings.js)
-- [parallel/test-process-release.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-release.js)
-- [parallel/test-process-remove-all-signal-listeners.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-remove-all-signal-listeners.js)
-- [parallel/test-process-setgroups.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-setgroups.js)
-- [parallel/test-process-setsourcemapsenabled.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-setsourcemapsenabled.js)
-- [parallel/test-process-setuid-io-uring.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-setuid-io-uring.js)
-- [parallel/test-process-title-cli.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-title-cli.js)
-- [parallel/test-process-uid-gid.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-uid-gid.js)
-- [parallel/test-process-umask-mask.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-umask-mask.js)
-- [parallel/test-process-umask.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-umask.js)
-- [parallel/test-process-uncaught-exception-monitor.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-uncaught-exception-monitor.js)
-- [parallel/test-process-versions.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-process-versions.js)
-- [parallel/test-promise-hook-create-hook.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promise-hook-create-hook.js)
-- [parallel/test-promise-hook-exceptions.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promise-hook-exceptions.js)
-- [parallel/test-promise-hook-on-after.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promise-hook-on-after.js)
-- [parallel/test-promise-hook-on-before.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promise-hook-on-before.js)
-- [parallel/test-promise-hook-on-init.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promise-hook-on-init.js)
-- [parallel/test-promise-hook-on-resolve.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promise-hook-on-resolve.js)
-- [parallel/test-promise-reject-callback-exception.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promise-reject-callback-exception.js)
-- [parallel/test-promise-swallowed-event.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promise-swallowed-event.js)
-- [parallel/test-promise-unhandled-default.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promise-unhandled-default.js)
-- [parallel/test-promise-unhandled-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promise-unhandled-error.js)
-- [parallel/test-promise-unhandled-flag.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promise-unhandled-flag.js)
-- [parallel/test-promise-unhandled-silent-no-hook.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promise-unhandled-silent-no-hook.js)
-- [parallel/test-promise-unhandled-throw.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promise-unhandled-throw.js)
-- [parallel/test-promise-unhandled-warn-no-hook.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promise-unhandled-warn-no-hook.js)
-- [parallel/test-promise-unhandled-warn.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promise-unhandled-warn.js)
-- [parallel/test-promises-unhandled-proxy-rejections.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promises-unhandled-proxy-rejections.js)
-- [parallel/test-promises-unhandled-rejections.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promises-unhandled-rejections.js)
-- [parallel/test-promises-unhandled-symbol-rejections.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promises-unhandled-symbol-rejections.js)
-- [parallel/test-promises-warning-on-unhandled-rejection.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-promises-warning-on-unhandled-rejection.js)
-- [parallel/test-queue-microtask-uncaught-asynchooks.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-queue-microtask-uncaught-asynchooks.js)
-- [parallel/test-queue-microtask.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-queue-microtask.js)
-- [parallel/test-readable-from-web-enqueue-then-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-readable-from-web-enqueue-then-close.js)
-- [parallel/test-readline-async-iterators-backpressure.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-readline-async-iterators-backpressure.js)
-- [parallel/test-readline-input-onerror.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-readline-input-onerror.js)
-- [parallel/test-readline-interface-no-trailing-newline.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-readline-interface-no-trailing-newline.js)
-- [parallel/test-readline-interface-recursive-writes.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-readline-interface-recursive-writes.js)
-- [parallel/test-readline-promises-interface.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-readline-promises-interface.js)
-- [parallel/test-readline-promises-tab-complete.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-readline-promises-tab-complete.js)
-- [parallel/test-readline-tab-complete.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-readline-tab-complete.js)
-- [parallel/test-release-changelog.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-release-changelog.js)
-- [parallel/test-release-npm.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-release-npm.js)
-- [parallel/test-repl-array-prototype-tempering.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-array-prototype-tempering.js)
-- [parallel/test-repl-autocomplete.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-autocomplete.js)
-- [parallel/test-repl-autolibs.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-autolibs.js)
-- [parallel/test-repl-clear-immediate-crash.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-clear-immediate-crash.js)
-- [parallel/test-repl-cli-eval.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-cli-eval.js)
-- [parallel/test-repl-colors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-colors.js)
-- [parallel/test-repl-context.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-context.js)
-- [parallel/test-repl-definecommand.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-definecommand.js)
-- [parallel/test-repl-domain.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-domain.js)
-- [parallel/test-repl-dynamic-import.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-dynamic-import.js)
-- [parallel/test-repl-editor.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-editor.js)
-- [parallel/test-repl-empty.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-empty.js)
-- [parallel/test-repl-end-emits-exit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-end-emits-exit.js)
-- [parallel/test-repl-envvars.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-envvars.js)
-- [parallel/test-repl-eval.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-eval.js)
-- [parallel/test-repl-function-definition-edge-case.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-function-definition-edge-case.js)
-- [parallel/test-repl-harmony.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-harmony.js)
-- [parallel/test-repl-history-navigation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-history-navigation.js)
-- [parallel/test-repl-history-perm.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-history-perm.js)
-- [parallel/test-repl-import-referrer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-import-referrer.js)
-- [parallel/test-repl-inspect-defaults.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-inspect-defaults.js)
-- [parallel/test-repl-inspector.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-inspector.js)
-- [parallel/test-repl-let-process.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-let-process.js)
-- [parallel/test-repl-load-multiline-no-trailing-newline.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-load-multiline-no-trailing-newline.js)
-- [parallel/test-repl-load-multiline.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-load-multiline.js)
-- [parallel/test-repl-mode.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-mode.js)
-- [parallel/test-repl-multiline.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-multiline.js)
-- [parallel/test-repl-no-terminal.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-no-terminal.js)
-- [parallel/test-repl-null-thrown.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-null-thrown.js)
-- [parallel/test-repl-null.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-null.js)
-- [parallel/test-repl-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-options.js)
-- [parallel/test-repl-permission-model.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-permission-model.js)
-- [parallel/test-repl-persistent-history.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-persistent-history.js)
-- [parallel/test-repl-preprocess-top-level-await.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-preprocess-top-level-await.js)
-- [parallel/test-repl-pretty-custom-stack.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-pretty-custom-stack.js)
-- [parallel/test-repl-pretty-stack-custom-writer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-pretty-stack-custom-writer.js)
-- [parallel/test-repl-pretty-stack.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-pretty-stack.js)
-- [parallel/test-repl-preview.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-preview.js)
-- [parallel/test-repl-programmatic-history.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-programmatic-history.js)
-- [parallel/test-repl-recoverable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-recoverable.js)
-- [parallel/test-repl-require-after-write.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-require-after-write.js)
-- [parallel/test-repl-require-cache.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-require-cache.js)
-- [parallel/test-repl-require-context.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-require-context.js)
-- [parallel/test-repl-require-self-referential.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-require-self-referential.js)
-- [parallel/test-repl-require.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-require.js)
-- [parallel/test-repl-reset-event.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-reset-event.js)
-- [parallel/test-repl-reverse-search.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-reverse-search.js)
-- [parallel/test-repl-save-load.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-save-load.js)
-- [parallel/test-repl-setprompt.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-setprompt.js)
-- [parallel/test-repl-sigint-nested-eval.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-sigint-nested-eval.js)
-- [parallel/test-repl-sigint.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-sigint.js)
-- [parallel/test-repl-stdin-push-null.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-stdin-push-null.js)
-- [parallel/test-repl-strict-mode-previews.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-strict-mode-previews.js)
-- [parallel/test-repl-syntax-error-handling.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-syntax-error-handling.js)
-- [parallel/test-repl-syntax-error-stack.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-syntax-error-stack.js)
-- [parallel/test-repl-tab-complete-crash.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-tab-complete-crash.js)
-- [parallel/test-repl-tab-complete-import.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-tab-complete-import.js)
-- [parallel/test-repl-tab-complete-nested-repls.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-tab-complete-nested-repls.js)
-- [parallel/test-repl-tab-complete-no-warn.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-tab-complete-no-warn.js)
-- [parallel/test-repl-tab-complete-on-editor-mode.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-tab-complete-on-editor-mode.js)
-- [parallel/test-repl-tab-complete.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-tab-complete.js)
-- [parallel/test-repl-tab.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-tab.js)
-- [parallel/test-repl-throw-null-or-undefined.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-throw-null-or-undefined.js)
-- [parallel/test-repl-top-level-await.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-top-level-await.js)
-- [parallel/test-repl-uncaught-exception-async.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-uncaught-exception-async.js)
-- [parallel/test-repl-uncaught-exception-evalcallback.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-uncaught-exception-evalcallback.js)
-- [parallel/test-repl-uncaught-exception-standalone.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-uncaught-exception-standalone.js)
-- [parallel/test-repl-uncaught-exception.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-uncaught-exception.js)
-- [parallel/test-repl-underscore.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-underscore.js)
-- [parallel/test-repl-unexpected-token-recoverable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-unexpected-token-recoverable.js)
-- [parallel/test-repl-unsafe-array-iteration.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-unsafe-array-iteration.js)
-- [parallel/test-repl-unsupported-option.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-unsupported-option.js)
-- [parallel/test-repl-use-global.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl-use-global.js)
-- [parallel/test-repl.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-repl.js)
-- [parallel/test-require-cache.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-require-cache.js)
-- [parallel/test-require-delete-array-iterator.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-require-delete-array-iterator.js)
-- [parallel/test-require-dot.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-require-dot.js)
-- [parallel/test-require-empty-main.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-require-empty-main.js)
-- [parallel/test-require-enoent-dir.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-require-enoent-dir.js)
-- [parallel/test-require-exceptions.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-require-exceptions.js)
-- [parallel/test-require-extension-over-directory.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-require-extension-over-directory.js)
-- [parallel/test-require-extensions-main.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-require-extensions-main.js)
-- [parallel/test-require-extensions-same-filename-as-dir-trailing-slash.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-require-extensions-same-filename-as-dir-trailing-slash.js)
-- [parallel/test-require-extensions-same-filename-as-dir.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-require-extensions-same-filename-as-dir.js)
-- [parallel/test-require-invalid-main-no-exports.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-require-invalid-main-no-exports.js)
-- [parallel/test-require-json.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-require-json.js)
-- [parallel/test-require-mjs.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-require-mjs.js)
-- [parallel/test-require-node-prefix.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-require-node-prefix.js)
-- [parallel/test-require-resolve.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-require-resolve.js)
-- [parallel/test-require-symlink.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-require-symlink.js)
-- [parallel/test-require-unicode.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-require-unicode.js)
-- [parallel/test-resource-usage.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-resource-usage.js)
-- [parallel/test-runner-cli-concurrency.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-cli-concurrency.js)
-- [parallel/test-runner-cli-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-cli-timeout.js)
-- [parallel/test-runner-cli.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-cli.js)
-- [parallel/test-runner-concurrency.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-concurrency.js)
-- [parallel/test-runner-coverage.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-coverage.js)
-- [parallel/test-runner-exit-code.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-exit-code.js)
-- [parallel/test-runner-extraneous-async-activity.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-extraneous-async-activity.js)
-- [parallel/test-runner-filetest-location.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-filetest-location.js)
-- [parallel/test-runner-import-no-scheme.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-import-no-scheme.js)
-- [parallel/test-runner-misc.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-misc.js)
-- [parallel/test-runner-mock-timers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-mock-timers.js)
-- [parallel/test-runner-mocking.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-mocking.js)
-- [parallel/test-runner-option-validation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-option-validation.js)
-- [parallel/test-runner-reporters.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-reporters.js)
-- [parallel/test-runner-root-after-with-refed-handles.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-root-after-with-refed-handles.js)
-- [parallel/test-runner-string-to-regexp.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-string-to-regexp.js)
-- [parallel/test-runner-test-filter.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-test-filter.js)
-- [parallel/test-runner-typechecking.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-runner-typechecking.js)
-- [parallel/test-safe-get-env.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-safe-get-env.js)
-- [parallel/test-security-revert-unknown.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-security-revert-unknown.js)
-- [parallel/test-set-http-max-http-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-set-http-max-http-headers.js)
-- [parallel/test-set-incoming-message-header.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-set-incoming-message-header.js)
-- [parallel/test-set-process-debug-port.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-set-process-debug-port.js)
-- [parallel/test-setproctitle.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-setproctitle.js)
-- [parallel/test-shadow-realm-allowed-builtin-modules.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-shadow-realm-allowed-builtin-modules.js)
-- [parallel/test-shadow-realm-custom-loaders.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-shadow-realm-custom-loaders.js)
-- [parallel/test-shadow-realm-gc-module.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-shadow-realm-gc-module.js)
-- [parallel/test-shadow-realm-gc.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-shadow-realm-gc.js)
-- [parallel/test-shadow-realm-globals.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-shadow-realm-globals.js)
-- [parallel/test-shadow-realm-import-value-resolve.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-shadow-realm-import-value-resolve.js)
-- [parallel/test-shadow-realm-module.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-shadow-realm-module.js)
-- [parallel/test-shadow-realm-preload-module.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-shadow-realm-preload-module.js)
-- [parallel/test-shadow-realm-prepare-stack-trace.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-shadow-realm-prepare-stack-trace.js)
-- [parallel/test-shadow-realm.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-shadow-realm.js)
-- [parallel/test-sigint-infinite-loop.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-sigint-infinite-loop.js)
-- [parallel/test-signal-args.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-signal-args.js)
-- [parallel/test-signal-safety.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-signal-safety.js)
-- [parallel/test-signal-unregister.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-signal-unregister.js)
-- [parallel/test-single-executable-blob-config-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-single-executable-blob-config-errors.js)
-- [parallel/test-single-executable-blob-config.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-single-executable-blob-config.js)
-- [parallel/test-snapshot-api.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-api.js)
-- [parallel/test-snapshot-argv1.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-argv1.js)
-- [parallel/test-snapshot-basic.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-basic.js)
-- [parallel/test-snapshot-cjs-main.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-cjs-main.js)
-- [parallel/test-snapshot-console.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-console.js)
-- [parallel/test-snapshot-cwd.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-cwd.js)
-- [parallel/test-snapshot-dns-lookup-localhost-promise.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-dns-lookup-localhost-promise.js)
-- [parallel/test-snapshot-dns-lookup-localhost.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-dns-lookup-localhost.js)
-- [parallel/test-snapshot-dns-resolve-localhost-promise.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-dns-resolve-localhost-promise.js)
-- [parallel/test-snapshot-dns-resolve-localhost.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-dns-resolve-localhost.js)
-- [parallel/test-snapshot-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-error.js)
-- [parallel/test-snapshot-eval.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-eval.js)
-- [parallel/test-snapshot-gzip.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-gzip.js)
-- [parallel/test-snapshot-incompatible.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-incompatible.js)
-- [parallel/test-snapshot-namespaced-builtin.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-namespaced-builtin.js)
-- [parallel/test-snapshot-net.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-net.js)
-- [parallel/test-snapshot-typescript.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-typescript.js)
-- [parallel/test-snapshot-umd.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-umd.js)
-- [parallel/test-snapshot-warning.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-warning.js)
-- [parallel/test-snapshot-weak-reference.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-weak-reference.js)
-- [parallel/test-snapshot-worker.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-snapshot-worker.js)
-- [parallel/test-socket-options-invalid.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-socket-options-invalid.js)
-- [parallel/test-socket-write-after-fin.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-socket-write-after-fin.js)
-- [parallel/test-socket-writes-before-passed-to-tls-socket.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-socket-writes-before-passed-to-tls-socket.js)
-- [parallel/test-socketaddress.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-socketaddress.js)
-- [parallel/test-source-map-api.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-source-map-api.js)
-- [parallel/test-stack-size-limit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stack-size-limit.js)
-- [parallel/test-startup-empty-regexp-statics.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-startup-empty-regexp-statics.js)
-- [parallel/test-startup-large-pages.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-startup-large-pages.js)
-- [parallel/test-stdin-child-proc.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stdin-child-proc.js)
-- [parallel/test-stdin-from-file.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stdin-from-file.js)
-- [parallel/test-stdin-pause-resume-sync.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stdin-pause-resume-sync.js)
-- [parallel/test-stdin-pause-resume.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stdin-pause-resume.js)
-- [parallel/test-stdin-resume-pause.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stdin-resume-pause.js)
-- [parallel/test-stdin-script-child.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stdin-script-child.js)
-- [parallel/test-stdio-closed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stdio-closed.js)
-- [parallel/test-stdout-close-catch.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stdout-close-catch.js)
-- [parallel/test-stdout-close-unref.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stdout-close-unref.js)
-- [parallel/test-stdout-to-file.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stdout-to-file.js)
-- [parallel/test-strace-openat-openssl.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-strace-openat-openssl.js)
-- [parallel/test-stream-base-prototype-accessors-enumerability.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-base-prototype-accessors-enumerability.js)
-- [parallel/test-stream-base-typechecking.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-base-typechecking.js)
-- [parallel/test-stream-compose-operator.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-compose-operator.js)
-- [parallel/test-stream-compose.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-compose.js)
-- [parallel/test-stream-consumers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-consumers.js)
-- [parallel/test-stream-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-destroy.js)
-- [parallel/test-stream-drop-take.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-drop-take.js)
-- [parallel/test-stream-finished.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-finished.js)
-- [parallel/test-stream-map.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-map.js)
-- [parallel/test-stream-pipe-deadlock.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-pipe-deadlock.js)
-- [parallel/test-stream-pipeline-http2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-pipeline-http2.js)
-- [parallel/test-stream-pipeline-process.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-pipeline-process.js)
-- [parallel/test-stream-pipeline.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-pipeline.js)
-- [parallel/test-stream-preprocess.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-preprocess.js)
-- [parallel/test-stream-promises.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-promises.js)
-- [parallel/test-stream-readable-async-iterators.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-readable-async-iterators.js)
-- [parallel/test-stream-readable-default-encoding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-readable-default-encoding.js)
-- [parallel/test-stream-readable-dispose.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-readable-dispose.js)
-- [parallel/test-stream-set-default-hwm.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-set-default-hwm.js)
-- [parallel/test-stream-wrap-drain.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-wrap-drain.js)
-- [parallel/test-stream-wrap-encoding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-wrap-encoding.js)
-- [parallel/test-stream-wrap.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-wrap.js)
-- [parallel/test-stream-writable-samecb-singletick.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream-writable-samecb-singletick.js)
-- [parallel/test-stream2-httpclient-response-end.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-stream2-httpclient-response-end.js)
-- [parallel/test-string-decoder-end.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-string-decoder-end.js)
-- [parallel/test-string-decoder-fuzz.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-string-decoder-fuzz.js)
-- [parallel/test-structuredClone-global.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-structuredClone-global.js)
-- [parallel/test-sync-io-option.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-sync-io-option.js)
-- [parallel/test-tcp-wrap-connect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tcp-wrap-connect.js)
-- [parallel/test-tcp-wrap-listen.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tcp-wrap-listen.js)
-- [parallel/test-tcp-wrap.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tcp-wrap.js)
-- [parallel/test-tick-processor-version-check.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tick-processor-version-check.js)
-- [parallel/test-timer-immediate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timer-immediate.js)
-- [parallel/test-timers-active.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-active.js)
-- [parallel/test-timers-destroyed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-destroyed.js)
-- [parallel/test-timers-dispose.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-dispose.js)
-- [parallel/test-timers-enroll-invalid-msecs.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-enroll-invalid-msecs.js)
-- [parallel/test-timers-enroll-second-time.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-enroll-second-time.js)
-- [parallel/test-timers-immediate-promisified.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-immediate-promisified.js)
-- [parallel/test-timers-immediate-queue-throw.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-immediate-queue-throw.js)
-- [parallel/test-timers-immediate-unref-nested-once.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-immediate-unref-nested-once.js)
-- [parallel/test-timers-immediate-unref-simple.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-immediate-unref-simple.js)
-- [parallel/test-timers-immediate-unref.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-immediate-unref.js)
-- [parallel/test-timers-interval-promisified.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-interval-promisified.js)
-- [parallel/test-timers-linked-list.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-linked-list.js)
-- [parallel/test-timers-max-duration-warning.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-max-duration-warning.js)
-- [parallel/test-timers-nested.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-nested.js)
-- [parallel/test-timers-next-tick.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-next-tick.js)
-- [parallel/test-timers-now.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-now.js)
-- [parallel/test-timers-ordering.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-ordering.js)
-- [parallel/test-timers-promises-scheduler.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-promises-scheduler.js)
-- [parallel/test-timers-reset-process-domain-on-throw.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-reset-process-domain-on-throw.js)
-- [parallel/test-timers-this.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-this.js)
-- [parallel/test-timers-throw-when-cb-not-function.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-throw-when-cb-not-function.js)
-- [parallel/test-timers-timeout-promisified.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-timeout-promisified.js)
-- [parallel/test-timers-timeout-to-interval.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-timeout-to-interval.js)
-- [parallel/test-timers-to-primitive.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-to-primitive.js)
-- [parallel/test-timers-unenroll-unref-interval.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-unenroll-unref-interval.js)
-- [parallel/test-timers-unref-active.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-unref-active.js)
-- [parallel/test-timers-unref-remove-other-unref-timers-only-one-fires.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-unref-remove-other-unref-timers-only-one-fires.js)
-- [parallel/test-timers-unref-remove-other-unref-timers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-timers-unref-remove-other-unref-timers.js)
-- [parallel/test-tls-0-dns-altname.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-0-dns-altname.js)
-- [parallel/test-tls-add-context.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-add-context.js)
-- [parallel/test-tls-addca.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-addca.js)
-- [parallel/test-tls-alpn-server-client.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-alpn-server-client.js)
-- [parallel/test-tls-async-cb-after-socket-end.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-async-cb-after-socket-end.js)
-- [parallel/test-tls-basic-validations.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-basic-validations.js)
-- [parallel/test-tls-buffersize.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-buffersize.js)
-- [parallel/test-tls-ca-concat.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-ca-concat.js)
-- [parallel/test-tls-canonical-ip.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-canonical-ip.js)
-- [parallel/test-tls-cert-chains-concat.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-cert-chains-concat.js)
-- [parallel/test-tls-cert-chains-in-ca.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-cert-chains-in-ca.js)
-- [parallel/test-tls-cert-ext-encoding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-cert-ext-encoding.js)
-- [parallel/test-tls-cert-regression.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-cert-regression.js)
-- [parallel/test-tls-check-server-identity.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-check-server-identity.js)
-- [parallel/test-tls-cipher-list.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-cipher-list.js)
-- [parallel/test-tls-cli-max-version-1.2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-cli-max-version-1.2.js)
-- [parallel/test-tls-cli-max-version-1.3.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-cli-max-version-1.3.js)
-- [parallel/test-tls-cli-min-max-conflict.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-cli-min-max-conflict.js)
-- [parallel/test-tls-cli-min-version-1.0.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-cli-min-version-1.0.js)
-- [parallel/test-tls-cli-min-version-1.1.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-cli-min-version-1.1.js)
-- [parallel/test-tls-cli-min-version-1.2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-cli-min-version-1.2.js)
-- [parallel/test-tls-cli-min-version-1.3.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-cli-min-version-1.3.js)
-- [parallel/test-tls-client-abort.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-client-abort.js)
-- [parallel/test-tls-client-abort2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-client-abort2.js)
-- [parallel/test-tls-client-auth.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-client-auth.js)
-- [parallel/test-tls-client-default-ciphers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-client-default-ciphers.js)
-- [parallel/test-tls-client-destroy-soon.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-client-destroy-soon.js)
-- [parallel/test-tls-client-getephemeralkeyinfo.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-client-getephemeralkeyinfo.js)
-- [parallel/test-tls-client-mindhsize.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-client-mindhsize.js)
-- [parallel/test-tls-client-reject-12.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-client-reject-12.js)
-- [parallel/test-tls-client-reject.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-client-reject.js)
-- [parallel/test-tls-client-renegotiation-13.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-client-renegotiation-13.js)
-- [parallel/test-tls-client-resume-12.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-client-resume-12.js)
-- [parallel/test-tls-client-resume.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-client-resume.js)
-- [parallel/test-tls-client-verify.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-client-verify.js)
-- [parallel/test-tls-clientcertengine-invalid-arg-type.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-clientcertengine-invalid-arg-type.js)
-- [parallel/test-tls-clientcertengine-unsupported.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-clientcertengine-unsupported.js)
-- [parallel/test-tls-close-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-close-error.js)
-- [parallel/test-tls-close-event-after-write.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-close-event-after-write.js)
-- [parallel/test-tls-close-notify.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-close-notify.js)
-- [parallel/test-tls-cnnic-whitelist.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-cnnic-whitelist.js)
-- [parallel/test-tls-connect-abort-controller.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-connect-abort-controller.js)
-- [parallel/test-tls-connect-address-family.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-connect-address-family.js)
-- [parallel/test-tls-connect-allow-half-open-option.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-connect-allow-half-open-option.js)
-- [parallel/test-tls-connect-given-socket.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-connect-given-socket.js)
-- [parallel/test-tls-connect-hints-option.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-connect-hints-option.js)
-- [parallel/test-tls-connect-hwm-option.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-connect-hwm-option.js)
-- [parallel/test-tls-connect-memleak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-connect-memleak.js)
-- [parallel/test-tls-connect-no-host.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-connect-no-host.js)
-- [parallel/test-tls-connect-pipe.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-connect-pipe.js)
-- [parallel/test-tls-connect-secure-context.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-connect-secure-context.js)
-- [parallel/test-tls-connect-simple.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-connect-simple.js)
-- [parallel/test-tls-connect-stream-writes.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-connect-stream-writes.js)
-- [parallel/test-tls-connect-timeout-option.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-connect-timeout-option.js)
-- [parallel/test-tls-delayed-attach-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-delayed-attach-error.js)
-- [parallel/test-tls-delayed-attach.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-delayed-attach.js)
-- [parallel/test-tls-destroy-stream-12.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-destroy-stream-12.js)
-- [parallel/test-tls-destroy-stream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-destroy-stream.js)
-- [parallel/test-tls-destroy-whilst-write.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-destroy-whilst-write.js)
-- [parallel/test-tls-disable-renegotiation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-disable-renegotiation.js)
-- [parallel/test-tls-econnreset.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-econnreset.js)
-- [parallel/test-tls-empty-sni-context.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-empty-sni-context.js)
-- [parallel/test-tls-enable-keylog-cli.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-enable-keylog-cli.js)
-- [parallel/test-tls-env-bad-extra-ca.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-env-bad-extra-ca.js)
-- [parallel/test-tls-env-extra-ca-file-load.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-env-extra-ca-file-load.js)
-- [parallel/test-tls-env-extra-ca.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-env-extra-ca.js)
-- [parallel/test-tls-error-servername.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-error-servername.js)
-- [parallel/test-tls-exportkeyingmaterial.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-exportkeyingmaterial.js)
-- [parallel/test-tls-external-accessor.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-external-accessor.js)
-- [parallel/test-tls-fast-writing.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-fast-writing.js)
-- [parallel/test-tls-finished.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-finished.js)
-- [parallel/test-tls-friendly-error-message.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-friendly-error-message.js)
-- [parallel/test-tls-generic-stream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-generic-stream.js)
-- [parallel/test-tls-getcertificate-x509.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-getcertificate-x509.js)
-- [parallel/test-tls-getcipher.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-getcipher.js)
-- [parallel/test-tls-getprotocol.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-getprotocol.js)
-- [parallel/test-tls-handshake-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-handshake-error.js)
-- [parallel/test-tls-handshake-exception.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-handshake-exception.js)
-- [parallel/test-tls-handshake-nohang.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-handshake-nohang.js)
-- [parallel/test-tls-hello-parser-failure.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-hello-parser-failure.js)
-- [parallel/test-tls-honorcipherorder.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-honorcipherorder.js)
-- [parallel/test-tls-inception.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-inception.js)
-- [parallel/test-tls-interleave.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-interleave.js)
-- [parallel/test-tls-invalid-pfx.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-invalid-pfx.js)
-- [parallel/test-tls-invoke-queued.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-invoke-queued.js)
-- [parallel/test-tls-ip-servername-deprecation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-ip-servername-deprecation.js)
-- [parallel/test-tls-js-stream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-js-stream.js)
-- [parallel/test-tls-junk-closes-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-junk-closes-server.js)
-- [parallel/test-tls-junk-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-junk-server.js)
-- [parallel/test-tls-key-mismatch.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-key-mismatch.js)
-- [parallel/test-tls-keyengine-invalid-arg-type.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-keyengine-invalid-arg-type.js)
-- [parallel/test-tls-keyengine-unsupported.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-keyengine-unsupported.js)
-- [parallel/test-tls-keylog-tlsv13.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-keylog-tlsv13.js)
-- [parallel/test-tls-legacy-deprecated.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-legacy-deprecated.js)
-- [parallel/test-tls-max-send-fragment.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-max-send-fragment.js)
-- [parallel/test-tls-min-max-version.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-min-max-version.js)
-- [parallel/test-tls-multi-key.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-multi-key.js)
-- [parallel/test-tls-multi-pfx.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-multi-pfx.js)
-- [parallel/test-tls-multiple-cas-as-string.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-multiple-cas-as-string.js)
-- [parallel/test-tls-net-connect-prefer-path.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-net-connect-prefer-path.js)
-- [parallel/test-tls-net-socket-keepalive-12.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-net-socket-keepalive-12.js)
-- [parallel/test-tls-net-socket-keepalive.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-net-socket-keepalive.js)
-- [parallel/test-tls-no-cert-required.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-no-cert-required.js)
-- [parallel/test-tls-no-rsa-key.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-no-rsa-key.js)
-- [parallel/test-tls-no-sslv23.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-no-sslv23.js)
-- [parallel/test-tls-no-sslv3.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-no-sslv3.js)
-- [parallel/test-tls-on-empty-socket.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-on-empty-socket.js)
-- [parallel/test-tls-onread-static-buffer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-onread-static-buffer.js)
-- [parallel/test-tls-options-boolean-check.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-options-boolean-check.js)
-- [parallel/test-tls-over-http-tunnel.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-over-http-tunnel.js)
-- [parallel/test-tls-passphrase.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-passphrase.js)
-- [parallel/test-tls-pause.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-pause.js)
-- [parallel/test-tls-peer-certificate-encoding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-peer-certificate-encoding.js)
-- [parallel/test-tls-peer-certificate-multi-keys.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-peer-certificate-multi-keys.js)
-- [parallel/test-tls-peer-certificate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-peer-certificate.js)
-- [parallel/test-tls-pfx-authorizationerror.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-pfx-authorizationerror.js)
-- [parallel/test-tls-psk-circuit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-psk-circuit.js)
-- [parallel/test-tls-psk-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-psk-errors.js)
-- [parallel/test-tls-reduced-SECLEVEL-in-cipher.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-reduced-SECLEVEL-in-cipher.js)
-- [parallel/test-tls-reinitialize-listeners.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-reinitialize-listeners.js)
-- [parallel/test-tls-request-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-request-timeout.js)
-- [parallel/test-tls-retain-handle-no-abort.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-retain-handle-no-abort.js)
-- [parallel/test-tls-reuse-host-from-socket.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-reuse-host-from-socket.js)
-- [parallel/test-tls-root-certificates.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-root-certificates.js)
-- [parallel/test-tls-secure-context-usage-order.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-secure-context-usage-order.js)
-- [parallel/test-tls-secure-session.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-secure-session.js)
-- [parallel/test-tls-securepair-fiftharg.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-securepair-fiftharg.js)
-- [parallel/test-tls-securepair-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-securepair-leak.js)
-- [parallel/test-tls-server-capture-rejection.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-server-capture-rejection.js)
-- [parallel/test-tls-server-connection-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-server-connection-server.js)
-- [parallel/test-tls-server-failed-handshake-emits-clienterror.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-server-failed-handshake-emits-clienterror.js)
-- [parallel/test-tls-server-parent-constructor-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-server-parent-constructor-options.js)
-- [parallel/test-tls-server-setoptions-clientcertengine.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-server-setoptions-clientcertengine.js)
-- [parallel/test-tls-set-ciphers-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-set-ciphers-error.js)
-- [parallel/test-tls-set-encoding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-set-encoding.js)
-- [parallel/test-tls-set-secure-context.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-set-secure-context.js)
-- [parallel/test-tls-set-sigalgs.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-set-sigalgs.js)
-- [parallel/test-tls-sni-option.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-sni-option.js)
-- [parallel/test-tls-sni-server-client.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-sni-server-client.js)
-- [parallel/test-tls-sni-servername.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-sni-servername.js)
-- [parallel/test-tls-snicallback-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-snicallback-error.js)
-- [parallel/test-tls-socket-allow-half-open-option.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-socket-allow-half-open-option.js)
-- [parallel/test-tls-socket-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-socket-close.js)
-- [parallel/test-tls-socket-constructor-alpn-options-parsing.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-socket-constructor-alpn-options-parsing.js)
-- [parallel/test-tls-socket-default-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-socket-default-options.js)
-- [parallel/test-tls-socket-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-socket-destroy.js)
-- [parallel/test-tls-socket-failed-handshake-emits-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-socket-failed-handshake-emits-error.js)
-- [parallel/test-tls-socket-snicallback-without-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-socket-snicallback-without-server.js)
-- [parallel/test-tls-startcom-wosign-whitelist.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-startcom-wosign-whitelist.js)
-- [parallel/test-tls-starttls-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-starttls-server.js)
-- [parallel/test-tls-streamwrap-buffersize.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-streamwrap-buffersize.js)
-- [parallel/test-tls-ticket-12.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-ticket-12.js)
-- [parallel/test-tls-ticket-cluster.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-ticket-cluster.js)
-- [parallel/test-tls-ticket-invalid-arg.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-ticket-invalid-arg.js)
-- [parallel/test-tls-ticket.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-ticket.js)
-- [parallel/test-tls-timeout-server-2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-timeout-server-2.js)
-- [parallel/test-tls-timeout-server.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-timeout-server.js)
-- [parallel/test-tls-tlswrap-segfault-2.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-tlswrap-segfault-2.js)
-- [parallel/test-tls-tlswrap-segfault.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-tlswrap-segfault.js)
-- [parallel/test-tls-translate-peer-certificate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-translate-peer-certificate.js)
-- [parallel/test-tls-use-after-free-regression.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-use-after-free-regression.js)
-- [parallel/test-tls-wrap-econnreset-localaddress.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-wrap-econnreset-localaddress.js)
-- [parallel/test-tls-wrap-econnreset-pipe.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-wrap-econnreset-pipe.js)
-- [parallel/test-tls-wrap-econnreset-socket.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-wrap-econnreset-socket.js)
-- [parallel/test-tls-wrap-econnreset.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-wrap-econnreset.js)
-- [parallel/test-tls-wrap-event-emmiter.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-wrap-event-emmiter.js)
-- [parallel/test-tls-wrap-no-abort.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-wrap-no-abort.js)
-- [parallel/test-tls-wrap-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-wrap-timeout.js)
-- [parallel/test-tls-write-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-write-error.js)
-- [parallel/test-tls-writewrap-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-writewrap-leak.js)
-- [parallel/test-tls-zero-clear-in.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tls-zero-clear-in.js)
-- [parallel/test-tojson-perf_hooks.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tojson-perf_hooks.js)
-- [parallel/test-trace-atomics-wait.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-atomics-wait.js)
-- [parallel/test-trace-events-all.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-all.js)
-- [parallel/test-trace-events-api-worker-disabled.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-api-worker-disabled.js)
-- [parallel/test-trace-events-api.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-api.js)
-- [parallel/test-trace-events-async-hooks.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-async-hooks.js)
-- [parallel/test-trace-events-binding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-binding.js)
-- [parallel/test-trace-events-bootstrap.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-bootstrap.js)
-- [parallel/test-trace-events-category-used.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-category-used.js)
-- [parallel/test-trace-events-console.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-console.js)
-- [parallel/test-trace-events-dynamic-enable-workers-disabled.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-dynamic-enable-workers-disabled.js)
-- [parallel/test-trace-events-dynamic-enable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-dynamic-enable.js)
-- [parallel/test-trace-events-environment.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-environment.js)
-- [parallel/test-trace-events-file-pattern.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-file-pattern.js)
-- [parallel/test-trace-events-fs-async.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-fs-async.js)
-- [parallel/test-trace-events-fs-sync.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-fs-sync.js)
-- [parallel/test-trace-events-http.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-http.js)
-- [parallel/test-trace-events-metadata.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-metadata.js)
-- [parallel/test-trace-events-net.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-net.js)
-- [parallel/test-trace-events-none.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-none.js)
-- [parallel/test-trace-events-process-exit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-process-exit.js)
-- [parallel/test-trace-events-promises.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-promises.js)
-- [parallel/test-trace-events-threadpool.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-threadpool.js)
-- [parallel/test-trace-events-v8.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-v8.js)
-- [parallel/test-trace-events-vm.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-vm.js)
-- [parallel/test-trace-events-worker-metadata-with-name.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-worker-metadata-with-name.js)
-- [parallel/test-trace-events-worker-metadata.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-events-worker-metadata.js)
-- [parallel/test-trace-exit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-trace-exit.js)
-- [parallel/test-tracing-no-crash.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tracing-no-crash.js)
-- [parallel/test-tty-backwards-api.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tty-backwards-api.js)
-- [parallel/test-tty-stdin-pipe.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-tty-stdin-pipe.js)
-- [parallel/test-ttywrap-stack.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-ttywrap-stack.js)
-- [parallel/test-unhandled-exception-rethrow-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-unhandled-exception-rethrow-error.js)
-- [parallel/test-unhandled-exception-with-worker-inuse.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-unhandled-exception-with-worker-inuse.js)
-- [parallel/test-unicode-node-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-unicode-node-options.js)
-- [parallel/test-url-canParse-whatwg.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-url-canParse-whatwg.js)
-- [parallel/test-url-is-url.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-url-is-url.js)
-- [parallel/test-url-null-char.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-url-null-char.js)
-- [parallel/test-url-parse-format.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-url-parse-format.js)
-- [parallel/test-util-callbackify.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-util-callbackify.js)
-- [parallel/test-util-emit-experimental-warning.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-util-emit-experimental-warning.js)
-- [parallel/test-util-internal.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-util-internal.js)
-- [parallel/test-util-log.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-util-log.js)
-- [parallel/test-util-sigint-watchdog.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-util-sigint-watchdog.js)
-- [parallel/test-util-sleep.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-util-sleep.js)
-- [parallel/test-uv-errmap.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-uv-errmap.js)
-- [parallel/test-uv-errno.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-uv-errno.js)
-- [parallel/test-v8-collect-gc-profile-exit-before-stop.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-v8-collect-gc-profile-exit-before-stop.js)
-- [parallel/test-v8-collect-gc-profile-in-worker.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-v8-collect-gc-profile-in-worker.js)
-- [parallel/test-v8-collect-gc-profile.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-v8-collect-gc-profile.js)
-- [parallel/test-v8-flag-type-check.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-v8-flag-type-check.js)
-- [parallel/test-v8-flags.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-v8-flags.js)
-- [parallel/test-v8-getheapsnapshot-twice.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-v8-getheapsnapshot-twice.js)
-- [parallel/test-v8-serialize-leak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-v8-serialize-leak.js)
-- [parallel/test-v8-startup-snapshot-api.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-v8-startup-snapshot-api.js)
-- [parallel/test-v8-stats.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-v8-stats.js)
-- [parallel/test-v8-version-tag.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-v8-version-tag.js)
-- [parallel/test-validators.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-validators.js)
-- [parallel/test-vfs.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vfs.js)
-- [parallel/test-vm-api-handles-getter-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-api-handles-getter-errors.js)
-- [parallel/test-vm-basic.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-basic.js)
-- [parallel/test-vm-cached-data.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-cached-data.js)
-- [parallel/test-vm-context.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-context.js)
-- [parallel/test-vm-dynamic-import-callback-missing-flag.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-dynamic-import-callback-missing-flag.js)
-- [parallel/test-vm-global-get-own.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-global-get-own.js)
-- [parallel/test-vm-global-non-writable-properties.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-global-non-writable-properties.js)
-- [parallel/test-vm-global-property-interceptors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-global-property-interceptors.js)
-- [parallel/test-vm-measure-memory-lazy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-measure-memory-lazy.js)
-- [parallel/test-vm-measure-memory-multi-context.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-measure-memory-multi-context.js)
-- [parallel/test-vm-measure-memory.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-measure-memory.js)
-- [parallel/test-vm-module-basic.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-module-basic.js)
-- [parallel/test-vm-module-cached-data.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-module-cached-data.js)
-- [parallel/test-vm-module-dynamic-import.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-module-dynamic-import.js)
-- [parallel/test-vm-module-dynamic-namespace.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-module-dynamic-namespace.js)
-- [parallel/test-vm-module-errors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-module-errors.js)
-- [parallel/test-vm-module-import-meta.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-module-import-meta.js)
-- [parallel/test-vm-module-link.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-module-link.js)
-- [parallel/test-vm-module-reevaluate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-module-reevaluate.js)
-- [parallel/test-vm-module-synthetic.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-module-synthetic.js)
-- [parallel/test-vm-no-dynamic-import-callback.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-no-dynamic-import-callback.js)
-- [parallel/test-vm-run-in-new-context.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-run-in-new-context.js)
-- [parallel/test-vm-sigint-existing-handler.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-sigint-existing-handler.js)
-- [parallel/test-vm-sigint.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-sigint.js)
-- [parallel/test-vm-strict-assign.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-strict-assign.js)
-- [parallel/test-vm-syntax-error-message.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-syntax-error-message.js)
-- [parallel/test-vm-syntax-error-stderr.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-syntax-error-stderr.js)
-- [parallel/test-vm-timeout-escape-promise-module.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-vm-timeout-escape-promise-module.js)
-- [parallel/test-warn-sigprof.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-warn-sigprof.js)
-- [parallel/test-warn-stream-wrap.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-warn-stream-wrap.js)
-- [parallel/test-webcrypto-constructors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-constructors.js)
-- [parallel/test-webcrypto-cryptokey-workers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-cryptokey-workers.js)
-- [parallel/test-webcrypto-derivebits-cfrg.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-derivebits-cfrg.js)
-- [parallel/test-webcrypto-derivebits-ecdh.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-derivebits-ecdh.js)
-- [parallel/test-webcrypto-derivebits-hkdf.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-derivebits-hkdf.js)
-- [parallel/test-webcrypto-derivebits.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-derivebits.js)
-- [parallel/test-webcrypto-derivekey-cfrg.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-derivekey-cfrg.js)
-- [parallel/test-webcrypto-derivekey-ecdh.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-derivekey-ecdh.js)
-- [parallel/test-webcrypto-derivekey.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-derivekey.js)
-- [parallel/test-webcrypto-digest.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-digest.js)
-- [parallel/test-webcrypto-encrypt-decrypt-aes.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-encrypt-decrypt-aes.js)
-- [parallel/test-webcrypto-encrypt-decrypt-rsa.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-encrypt-decrypt-rsa.js)
-- [parallel/test-webcrypto-export-import-cfrg.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-export-import-cfrg.js)
-- [parallel/test-webcrypto-export-import-ec.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-export-import-ec.js)
-- [parallel/test-webcrypto-export-import-rsa.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-export-import-rsa.js)
-- [parallel/test-webcrypto-export-import.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-export-import.js)
-- [parallel/test-webcrypto-getRandomValues.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-getRandomValues.js)
-- [parallel/test-webcrypto-keygen.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-keygen.js)
-- [parallel/test-webcrypto-random.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-random.js)
-- [parallel/test-webcrypto-sign-verify-ecdsa.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-sign-verify-ecdsa.js)
-- [parallel/test-webcrypto-sign-verify-eddsa.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-sign-verify-eddsa.js)
-- [parallel/test-webcrypto-sign-verify-hmac.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-sign-verify-hmac.js)
-- [parallel/test-webcrypto-sign-verify-rsa.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-sign-verify-rsa.js)
-- [parallel/test-webcrypto-util.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-util.js)
-- [parallel/test-webcrypto-webidl.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-webidl.js)
-- [parallel/test-webcrypto-wrap-unwrap.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webcrypto-wrap-unwrap.js)
-- [parallel/test-webstream-encoding-inspect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webstream-encoding-inspect.js)
-- [parallel/test-webstream-readablestream-pipeto.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webstream-readablestream-pipeto.js)
-- [parallel/test-webstreams-abort-controller.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webstreams-abort-controller.js)
-- [parallel/test-webstreams-compose.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webstreams-compose.js)
-- [parallel/test-webstreams-finished.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webstreams-finished.js)
-- [parallel/test-webstreams-pipeline.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-webstreams-pipeline.js)
-- [parallel/test-whatwg-encoding-custom-fatal-streaming.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-encoding-custom-fatal-streaming.js)
-- [parallel/test-whatwg-encoding-custom-internals.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-encoding-custom-internals.js)
-- [parallel/test-whatwg-encoding-custom-interop.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-encoding-custom-interop.js)
-- [parallel/test-whatwg-encoding-custom-textdecoder-api-invalid-label.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-encoding-custom-textdecoder-api-invalid-label.js)
-- [parallel/test-whatwg-encoding-custom-textdecoder-fatal.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-encoding-custom-textdecoder-fatal.js)
-- [parallel/test-whatwg-encoding-custom-textdecoder-invalid-arg.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-encoding-custom-textdecoder-invalid-arg.js)
-- [parallel/test-whatwg-encoding-custom-textdecoder-utf16-surrogates.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-encoding-custom-textdecoder-utf16-surrogates.js)
-- [parallel/test-whatwg-encoding-custom-textdecoder.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-encoding-custom-textdecoder.js)
-- [parallel/test-whatwg-events-event-constructors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-events-event-constructors.js)
-- [parallel/test-whatwg-events-eventtarget-this-of-listener.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-events-eventtarget-this-of-listener.js)
-- [parallel/test-whatwg-readablebytestream-bad-buffers-and-views.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-readablebytestream-bad-buffers-and-views.js)
-- [parallel/test-whatwg-readablebytestream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-readablebytestream.js)
-- [parallel/test-whatwg-readablestream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-readablestream.js)
-- [parallel/test-whatwg-transformstream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-transformstream.js)
-- [parallel/test-whatwg-url-canparse.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-canparse.js)
-- [parallel/test-whatwg-url-custom-domainto.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-domainto.js)
-- [parallel/test-whatwg-url-custom-inspect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-inspect.js)
-- [parallel/test-whatwg-url-custom-parsing.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-parsing.js)
-- [parallel/test-whatwg-url-custom-properties.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-properties.js)
-- [parallel/test-whatwg-url-custom-searchparams-append.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-searchparams-append.js)
-- [parallel/test-whatwg-url-custom-searchparams-constructor.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-searchparams-constructor.js)
-- [parallel/test-whatwg-url-custom-searchparams-delete.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-searchparams-delete.js)
-- [parallel/test-whatwg-url-custom-searchparams-entries.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-searchparams-entries.js)
-- [parallel/test-whatwg-url-custom-searchparams-foreach.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-searchparams-foreach.js)
-- [parallel/test-whatwg-url-custom-searchparams-get.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-searchparams-get.js)
-- [parallel/test-whatwg-url-custom-searchparams-getall.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-searchparams-getall.js)
-- [parallel/test-whatwg-url-custom-searchparams-has.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-searchparams-has.js)
-- [parallel/test-whatwg-url-custom-searchparams-inspect.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-searchparams-inspect.js)
-- [parallel/test-whatwg-url-custom-searchparams-keys.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-searchparams-keys.js)
-- [parallel/test-whatwg-url-custom-searchparams-set.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-searchparams-set.js)
-- [parallel/test-whatwg-url-custom-searchparams-sort.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-searchparams-sort.js)
-- [parallel/test-whatwg-url-custom-searchparams-stringifier.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-searchparams-stringifier.js)
-- [parallel/test-whatwg-url-custom-searchparams-values.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-searchparams-values.js)
-- [parallel/test-whatwg-url-custom-searchparams.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-searchparams.js)
-- [parallel/test-whatwg-url-custom-setters.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-custom-setters.js)
-- [parallel/test-whatwg-url-invalidthis.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-invalidthis.js)
-- [parallel/test-whatwg-url-toascii.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-url-toascii.js)
-- [parallel/test-whatwg-webstreams-adapters-streambase.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-webstreams-adapters-streambase.js)
-- [parallel/test-whatwg-webstreams-adapters-to-readablestream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-webstreams-adapters-to-readablestream.js)
-- [parallel/test-whatwg-webstreams-adapters-to-readablewritablepair.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-webstreams-adapters-to-readablewritablepair.js)
-- [parallel/test-whatwg-webstreams-adapters-to-streamduplex.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-webstreams-adapters-to-streamduplex.js)
-- [parallel/test-whatwg-webstreams-adapters-to-streamreadable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-webstreams-adapters-to-streamreadable.js)
-- [parallel/test-whatwg-webstreams-adapters-to-streamwritable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-webstreams-adapters-to-streamwritable.js)
-- [parallel/test-whatwg-webstreams-adapters-to-writablestream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-webstreams-adapters-to-writablestream.js)
-- [parallel/test-whatwg-webstreams-compression.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-webstreams-compression.js)
-- [parallel/test-whatwg-webstreams-coverage.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-webstreams-coverage.js)
-- [parallel/test-whatwg-webstreams-encoding.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-webstreams-encoding.js)
-- [parallel/test-whatwg-webstreams-transfer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-webstreams-transfer.js)
-- [parallel/test-whatwg-writablestream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-whatwg-writablestream.js)
-- [parallel/test-windows-abort-exitcode.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-windows-abort-exitcode.js)
-- [parallel/test-windows-failed-heap-allocation.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-windows-failed-heap-allocation.js)
-- [parallel/test-worker-abort-on-uncaught-exception-terminate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-abort-on-uncaught-exception-terminate.js)
-- [parallel/test-worker-abort-on-uncaught-exception.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-abort-on-uncaught-exception.js)
-- [parallel/test-worker-arraybuffer-zerofill.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-arraybuffer-zerofill.js)
-- [parallel/test-worker-beforeexit-throw-exit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-beforeexit-throw-exit.js)
-- [parallel/test-worker-broadcastchannel-wpt.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-broadcastchannel-wpt.js)
-- [parallel/test-worker-broadcastchannel.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-broadcastchannel.js)
-- [parallel/test-worker-cjs-workerdata.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-cjs-workerdata.js)
-- [parallel/test-worker-cleanexit-with-moduleload.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-cleanexit-with-moduleload.js)
-- [parallel/test-worker-cleanup-handles.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-cleanup-handles.js)
-- [parallel/test-worker-console-listeners.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-console-listeners.js)
-- [parallel/test-worker-crypto-sign-transfer-result.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-crypto-sign-transfer-result.js)
-- [parallel/test-worker-data-url.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-data-url.js)
-- [parallel/test-worker-debug.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-debug.js)
-- [parallel/test-worker-dns-terminate-during-query.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-dns-terminate-during-query.js)
-- [parallel/test-worker-dns-terminate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-dns-terminate.js)
-- [parallel/test-worker-environmentdata.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-environmentdata.js)
-- [parallel/test-worker-error-stack-getter-throws.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-error-stack-getter-throws.js)
-- [parallel/test-worker-esm-exit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-esm-exit.js)
-- [parallel/test-worker-esm-missing-main.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-esm-missing-main.js)
-- [parallel/test-worker-esmodule.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-esmodule.js)
-- [parallel/test-worker-event.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-event.js)
-- [parallel/test-worker-execargv-invalid.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-execargv-invalid.js)
-- [parallel/test-worker-execargv.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-execargv.js)
-- [parallel/test-worker-exit-code.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-exit-code.js)
-- [parallel/test-worker-exit-event-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-exit-event-error.js)
-- [parallel/test-worker-exit-from-uncaught-exception.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-exit-from-uncaught-exception.js)
-- [parallel/test-worker-exit-heapsnapshot.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-exit-heapsnapshot.js)
-- [parallel/test-worker-fs-stat-watcher.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-fs-stat-watcher.js)
-- [parallel/test-worker-hasref.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-hasref.js)
-- [parallel/test-worker-heap-snapshot.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-heap-snapshot.js)
-- [parallel/test-worker-heapdump-failure.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-heapdump-failure.js)
-- [parallel/test-worker-http2-generic-streams-terminate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-http2-generic-streams-terminate.js)
-- [parallel/test-worker-http2-stream-terminate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-http2-stream-terminate.js)
-- [parallel/test-worker-init-failure.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-init-failure.js)
-- [parallel/test-worker-invalid-workerdata.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-invalid-workerdata.js)
-- [parallel/test-worker-load-file-with-extension-other-than-js.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-load-file-with-extension-other-than-js.js)
-- [parallel/test-worker-memory.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-memory.js)
-- [parallel/test-worker-message-channel-sharedarraybuffer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-channel-sharedarraybuffer.js)
-- [parallel/test-worker-message-channel.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-channel.js)
-- [parallel/test-worker-message-event.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-event.js)
-- [parallel/test-worker-message-not-serializable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-not-serializable.js)
-- [parallel/test-worker-message-port-arraybuffer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-arraybuffer.js)
-- [parallel/test-worker-message-port-close-while-receiving.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-close-while-receiving.js)
-- [parallel/test-worker-message-port-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-close.js)
-- [parallel/test-worker-message-port-constructor.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-constructor.js)
-- [parallel/test-worker-message-port-drain.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-drain.js)
-- [parallel/test-worker-message-port-inspect-during-init-hook.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-inspect-during-init-hook.js)
-- [parallel/test-worker-message-port-jstransferable-nested-untransferable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-jstransferable-nested-untransferable.js)
-- [parallel/test-worker-message-port-message-before-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-message-before-close.js)
-- [parallel/test-worker-message-port-message-port-transferring.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-message-port-transferring.js)
-- [parallel/test-worker-message-port-move.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-move.js)
-- [parallel/test-worker-message-port-terminate-transfer-list.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-terminate-transfer-list.js)
-- [parallel/test-worker-message-port-transfer-closed.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-transfer-closed.js)
-- [parallel/test-worker-message-port-transfer-duplicate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-transfer-duplicate.js)
-- [parallel/test-worker-message-port-transfer-fake-js-transferable-internal.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-transfer-fake-js-transferable-internal.js)
-- [parallel/test-worker-message-port-transfer-fake-js-transferable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-transfer-fake-js-transferable.js)
-- [parallel/test-worker-message-port-transfer-filehandle.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-transfer-filehandle.js)
-- [parallel/test-worker-message-port-transfer-native.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-transfer-native.js)
-- [parallel/test-worker-message-port-transfer-self.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-transfer-self.js)
-- [parallel/test-worker-message-port-transfer-target.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-transfer-target.js)
-- [parallel/test-worker-message-port-transfer-terminate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-transfer-terminate.js)
-- [parallel/test-worker-message-port-wasm-module.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-wasm-module.js)
-- [parallel/test-worker-message-port-wasm-threads.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port-wasm-threads.js)
-- [parallel/test-worker-message-port.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-port.js)
-- [parallel/test-worker-message-transfer-port-mark-as-untransferable.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-transfer-port-mark-as-untransferable.js)
-- [parallel/test-worker-message-type-unknown.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-message-type-unknown.js)
-- [parallel/test-worker-messageport-hasref.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-messageport-hasref.js)
-- [parallel/test-worker-mjs-workerdata.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-mjs-workerdata.js)
-- [parallel/test-worker-name.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-name.js)
-- [parallel/test-worker-nearheaplimit-deadlock.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-nearheaplimit-deadlock.js)
-- [parallel/test-worker-nested-on-process-exit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-nested-on-process-exit.js)
-- [parallel/test-worker-nested-uncaught.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-nested-uncaught.js)
-- [parallel/test-worker-nexttick-terminate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-nexttick-terminate.js)
-- [parallel/test-worker-no-atomics.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-no-atomics.js)
-- [parallel/test-worker-no-sab.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-no-sab.js)
-- [parallel/test-worker-no-stdin-stdout-interaction.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-no-stdin-stdout-interaction.js)
-- [parallel/test-worker-non-fatal-uncaught-exception.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-non-fatal-uncaught-exception.js)
-- [parallel/test-worker-onmessage-not-a-function.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-onmessage-not-a-function.js)
-- [parallel/test-worker-onmessage.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-onmessage.js)
-- [parallel/test-worker-parent-port-ref.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-parent-port-ref.js)
-- [parallel/test-worker-process-argv.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-process-argv.js)
-- [parallel/test-worker-process-cwd.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-process-cwd.js)
-- [parallel/test-worker-process-env-shared.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-process-env-shared.js)
-- [parallel/test-worker-process-env.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-process-env.js)
-- [parallel/test-worker-process-exit-async-module.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-process-exit-async-module.js)
-- [parallel/test-worker-ref.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-ref.js)
-- [parallel/test-worker-relative-path-double-dot.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-relative-path-double-dot.js)
-- [parallel/test-worker-relative-path.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-relative-path.js)
-- [parallel/test-worker-resource-limits.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-resource-limits.js)
-- [parallel/test-worker-safe-getters.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-safe-getters.js)
-- [parallel/test-worker-sharedarraybuffer-from-worker-thread.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-sharedarraybuffer-from-worker-thread.js)
-- [parallel/test-worker-stack-overflow-stack-size.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-stack-overflow-stack-size.js)
-- [parallel/test-worker-stack-overflow.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-stack-overflow.js)
-- [parallel/test-worker-stdio-from-preload-module.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-stdio-from-preload-module.js)
-- [parallel/test-worker-stdio.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-stdio.js)
-- [parallel/test-worker-syntax-error-file.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-syntax-error-file.js)
-- [parallel/test-worker-syntax-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-syntax-error.js)
-- [parallel/test-worker-terminate-http2-respond-with-file.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-terminate-http2-respond-with-file.js)
-- [parallel/test-worker-terminate-microtask-loop.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-terminate-microtask-loop.js)
-- [parallel/test-worker-terminate-nested.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-terminate-nested.js)
-- [parallel/test-worker-terminate-null-handler.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-terminate-null-handler.js)
-- [parallel/test-worker-terminate-ref-public-port.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-terminate-ref-public-port.js)
-- [parallel/test-worker-terminate-source-map.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-terminate-source-map.js)
-- [parallel/test-worker-terminate-timers.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-terminate-timers.js)
-- [parallel/test-worker-track-unmanaged-fds.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-track-unmanaged-fds.js)
-- [parallel/test-worker-type-check.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-type-check.js)
-- [parallel/test-worker-uncaught-exception-async.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-uncaught-exception-async.js)
-- [parallel/test-worker-uncaught-exception.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-uncaught-exception.js)
-- [parallel/test-worker-unref-from-message-during-exit.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-unref-from-message-during-exit.js)
-- [parallel/test-worker-unsupported-path.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-unsupported-path.js)
-- [parallel/test-worker-unsupported-things.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-unsupported-things.js)
-- [parallel/test-worker-vm-context-terminate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-vm-context-terminate.js)
-- [parallel/test-worker-voluntarily-exit-followed-by-addition.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-voluntarily-exit-followed-by-addition.js)
-- [parallel/test-worker-voluntarily-exit-followed-by-throw.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-voluntarily-exit-followed-by-throw.js)
-- [parallel/test-worker-workerdata-messageport.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-workerdata-messageport.js)
-- [parallel/test-worker-workerdata-sharedarraybuffer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker-workerdata-sharedarraybuffer.js)
-- [parallel/test-worker.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-worker.js)
-- [parallel/test-wrap-js-stream-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-wrap-js-stream-destroy.js)
-- [parallel/test-wrap-js-stream-duplex.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-wrap-js-stream-duplex.js)
-- [parallel/test-wrap-js-stream-exceptions.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-wrap-js-stream-exceptions.js)
-- [parallel/test-wrap-js-stream-read-stop.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-wrap-js-stream-read-stop.js)
-- [parallel/test-x509-escaping.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-x509-escaping.js)
-- [parallel/test-zlib-brotli-16GB.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-brotli-16GB.js)
-- [parallel/test-zlib-brotli-flush.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-brotli-flush.js)
-- [parallel/test-zlib-brotli-from-brotli.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-brotli-from-brotli.js)
-- [parallel/test-zlib-brotli-from-string.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-brotli-from-string.js)
-- [parallel/test-zlib-brotli-kmaxlength-rangeerror.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-brotli-kmaxlength-rangeerror.js)
-- [parallel/test-zlib-brotli.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-brotli.js)
-- [parallel/test-zlib-bytes-read.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-bytes-read.js)
-- [parallel/test-zlib-close-in-ondata.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-close-in-ondata.js)
-- [parallel/test-zlib-const.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-const.js)
-- [parallel/test-zlib-deflate-constructors.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-deflate-constructors.js)
-- [parallel/test-zlib-destroy.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-destroy.js)
-- [parallel/test-zlib-dictionary-fail.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-dictionary-fail.js)
-- [parallel/test-zlib-dictionary.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-dictionary.js)
-- [parallel/test-zlib-failed-init.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-failed-init.js)
-- [parallel/test-zlib-flush-drain-longblock.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-flush-drain-longblock.js)
-- [parallel/test-zlib-flush-drain.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-flush-drain.js)
-- [parallel/test-zlib-flush-flags.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-flush-flags.js)
-- [parallel/test-zlib-flush.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-flush.js)
-- [parallel/test-zlib-from-concatenated-gzip.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-from-concatenated-gzip.js)
-- [parallel/test-zlib-from-gzip-with-trailing-garbage.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-from-gzip-with-trailing-garbage.js)
-- [parallel/test-zlib-from-gzip.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-from-gzip.js)
-- [parallel/test-zlib-invalid-arg-value-brotli-compress.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-invalid-arg-value-brotli-compress.js)
-- [parallel/test-zlib-invalid-input-memory.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-invalid-input-memory.js)
-- [parallel/test-zlib-kmaxlength-rangeerror.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-kmaxlength-rangeerror.js)
-- [parallel/test-zlib-maxOutputLength.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-maxOutputLength.js)
-- [parallel/test-zlib-not-string-or-buffer.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-not-string-or-buffer.js)
-- [parallel/test-zlib-object-write.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-object-write.js)
-- [parallel/test-zlib-params.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-params.js)
-- [parallel/test-zlib-premature-end.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-premature-end.js)
-- [parallel/test-zlib-reset-before-write.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-reset-before-write.js)
-- [parallel/test-zlib-unused-weak.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-unused-weak.js)
-- [parallel/test-zlib-write-after-close.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib-write-after-close.js)
-- [parallel/test-zlib.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-zlib.js)
-- [pseudo-tty/readline-dumb-tty.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/readline-dumb-tty.js)
-- [pseudo-tty/ref_keeps_node_running.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/ref_keeps_node_running.js)
-- [pseudo-tty/repl-dumb-tty.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/repl-dumb-tty.js)
-- [pseudo-tty/stdin-setrawmode.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/stdin-setrawmode.js)
-- [pseudo-tty/test-assert-colors.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-assert-colors.js)
-- [pseudo-tty/test-assert-no-color.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-assert-no-color.js)
-- [pseudo-tty/test-assert-position-indicator.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-assert-position-indicator.js)
-- [pseudo-tty/test-async-wrap-getasyncid-tty.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-async-wrap-getasyncid-tty.js)
-- [pseudo-tty/test-fatal-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-fatal-error.js)
-- [pseudo-tty/test-handle-wrap-hasref-tty.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-handle-wrap-hasref-tty.js)
-- [pseudo-tty/test-readable-tty-keepalive.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-readable-tty-keepalive.js)
-- [pseudo-tty/test-repl-external-module.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-repl-external-module.js)
-- [pseudo-tty/test-set-raw-mode-reset-signal.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-set-raw-mode-reset-signal.js)
-- [pseudo-tty/test-stderr-stdout-handle-sigwinch.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-stderr-stdout-handle-sigwinch.js)
-- [pseudo-tty/test-stdin-write.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-stdin-write.js)
-- [pseudo-tty/test-stdout-read.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-stdout-read.js)
-- [pseudo-tty/test-trace-sigint-disabled.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-trace-sigint-disabled.js)
-- [pseudo-tty/test-trace-sigint-on-idle.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-trace-sigint-on-idle.js)
-- [pseudo-tty/test-trace-sigint.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-trace-sigint.js)
-- [pseudo-tty/test-tty-color-support.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-tty-color-support.js)
-- [pseudo-tty/test-tty-isatty.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-tty-isatty.js)
-- [pseudo-tty/test-tty-stdout-resize.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-tty-stdout-resize.js)
-- [pseudo-tty/test-tty-stream-constructors.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-tty-stream-constructors.js)
-- [pseudo-tty/test-tty-window-size.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-tty-window-size.js)
-- [pseudo-tty/test-tty-wrap.js](https://github.com/nodejs/node/tree/v20.11.1/test/pseudo-tty/test-tty-wrap.js)
-- [pummel/test-child-process-spawn-loop.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-child-process-spawn-loop.js)
-- [pummel/test-crypto-dh-keys.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-crypto-dh-keys.js)
-- [pummel/test-fs-watch-file-slow.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-fs-watch-file-slow.js)
-- [pummel/test-fs-watch-file.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-fs-watch-file.js)
-- [pummel/test-fs-watch-non-recursive.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-fs-watch-non-recursive.js)
-- [pummel/test-hash-seed.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-hash-seed.js)
-- [pummel/test-heapdump-dns.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-heapdump-dns.js)
-- [pummel/test-heapdump-env.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-heapdump-env.js)
-- [pummel/test-heapdump-fs-promise.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-heapdump-fs-promise.js)
-- [pummel/test-heapdump-http2.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-heapdump-http2.js)
-- [pummel/test-heapdump-inspector.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-heapdump-inspector.js)
-- [pummel/test-heapdump-shadow-realm.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-heapdump-shadow-realm.js)
-- [pummel/test-heapdump-tls.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-heapdump-tls.js)
-- [pummel/test-heapdump-worker.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-heapdump-worker.js)
-- [pummel/test-heapdump-zlib.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-heapdump-zlib.js)
-- [pummel/test-heapsnapshot-near-heap-limit-bounded.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-heapsnapshot-near-heap-limit-bounded.js)
-- [pummel/test-heapsnapshot-near-heap-limit-by-api.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-heapsnapshot-near-heap-limit-by-api.js)
-- [pummel/test-heapsnapshot-near-heap-limit.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-heapsnapshot-near-heap-limit.js)
-- [pummel/test-http-many-keep-alive-connections.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-http-many-keep-alive-connections.js)
-- [pummel/test-http-upload-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-http-upload-timeout.js)
-- [pummel/test-https-large-response.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-https-large-response.js)
-- [pummel/test-https-no-reader.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-https-no-reader.js)
-- [pummel/test-keep-alive.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-keep-alive.js)
-- [pummel/test-net-pause.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-net-pause.js)
-- [pummel/test-net-pingpong.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-net-pingpong.js)
-- [pummel/test-net-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-net-timeout.js)
-- [pummel/test-net-timeout2.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-net-timeout2.js)
-- [pummel/test-net-write-callbacks.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-net-write-callbacks.js)
-- [pummel/test-next-tick-infinite-calls.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-next-tick-infinite-calls.js)
-- [pummel/test-policy-integrity-dep.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-policy-integrity-dep.js)
-- [pummel/test-policy-integrity-parent-commonjs.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-policy-integrity-parent-commonjs.js)
-- [pummel/test-policy-integrity-parent-module.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-policy-integrity-parent-module.js)
-- [pummel/test-policy-integrity-parent-no-package-json.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-policy-integrity-parent-no-package-json.js)
-- [pummel/test-policy-integrity-worker-commonjs.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-policy-integrity-worker-commonjs.js)
-- [pummel/test-policy-integrity-worker-module.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-policy-integrity-worker-module.js)
-- [pummel/test-policy-integrity-worker-no-package-json.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-policy-integrity-worker-no-package-json.js)
-- [pummel/test-process-hrtime.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-process-hrtime.js)
-- [pummel/test-regress-GH-892.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-regress-GH-892.js)
-- [pummel/test-timers.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-timers.js)
-- [pummel/test-tls-server-large-request.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-tls-server-large-request.js)
-- [pummel/test-tls-throttle.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-tls-throttle.js)
-- [pummel/test-vm-memleak.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-vm-memleak.js)
-- [pummel/test-vm-race.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-vm-race.js)
-- [pummel/test-watch-file.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-watch-file.js)
-- [pummel/test-webcrypto-derivebits-pbkdf2.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-webcrypto-derivebits-pbkdf2.js)
-- [pummel/test-worker-take-heapsnapshot.js](https://github.com/nodejs/node/tree/v20.11.1/test/pummel/test-worker-take-heapsnapshot.js)
-- [sequential/test-async-wrap-getasyncid.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-async-wrap-getasyncid.js)
-- [sequential/test-child-process-emfile.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-child-process-emfile.js)
-- [sequential/test-child-process-execsync.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-child-process-execsync.js)
-- [sequential/test-child-process-pass-fd.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-child-process-pass-fd.js)
-- [sequential/test-cli-syntax-bad.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cli-syntax-bad.js)
-- [sequential/test-cli-syntax-file-not-found.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cli-syntax-file-not-found.js)
-- [sequential/test-cli-syntax-good.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cli-syntax-good.js)
-- [sequential/test-cli-syntax-require.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cli-syntax-require.js)
-- [sequential/test-cluster-inspect-brk.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cluster-inspect-brk.js)
-- [sequential/test-cluster-net-listen-ipv6only-none.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cluster-net-listen-ipv6only-none.js)
-- [sequential/test-cluster-net-listen-ipv6only-rr.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cluster-net-listen-ipv6only-rr.js)
-- [sequential/test-cluster-send-handle-large-payload.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cluster-send-handle-large-payload.js)
-- [sequential/test-cpu-prof-default.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cpu-prof-default.js)
-- [sequential/test-cpu-prof-dir-absolute.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cpu-prof-dir-absolute.js)
-- [sequential/test-cpu-prof-dir-and-name.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cpu-prof-dir-and-name.js)
-- [sequential/test-cpu-prof-dir-relative.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cpu-prof-dir-relative.js)
-- [sequential/test-cpu-prof-dir-worker.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cpu-prof-dir-worker.js)
-- [sequential/test-cpu-prof-drained.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cpu-prof-drained.js)
-- [sequential/test-cpu-prof-exit.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cpu-prof-exit.js)
-- [sequential/test-cpu-prof-invalid-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cpu-prof-invalid-options.js)
-- [sequential/test-cpu-prof-kill.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cpu-prof-kill.js)
-- [sequential/test-cpu-prof-name.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cpu-prof-name.js)
-- [sequential/test-cpu-prof-worker-argv.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-cpu-prof-worker-argv.js)
-- [sequential/test-crypto-timing-safe-equal.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-crypto-timing-safe-equal.js)
-- [sequential/test-debug-prompt.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-debug-prompt.js)
-- [sequential/test-debugger-custom-port.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-debugger-custom-port.js)
-- [sequential/test-debugger-debug-brk.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-debugger-debug-brk.js)
-- [sequential/test-debugger-invalid-args.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-debugger-invalid-args.js)
-- [sequential/test-debugger-pid.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-debugger-pid.js)
-- [sequential/test-deprecation-flags.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-deprecation-flags.js)
-- [sequential/test-dgram-bind-shared-ports.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-dgram-bind-shared-ports.js)
-- [sequential/test-dgram-implicit-bind-failure.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-dgram-implicit-bind-failure.js)
-- [sequential/test-dgram-pingpong.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-dgram-pingpong.js)
-- [sequential/test-diagnostic-dir-cpu-prof.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-diagnostic-dir-cpu-prof.js)
-- [sequential/test-diagnostic-dir-heap-prof.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-diagnostic-dir-heap-prof.js)
-- [sequential/test-fs-opendir-recursive.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-fs-opendir-recursive.js)
-- [sequential/test-fs-readdir-recursive.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-fs-readdir-recursive.js)
-- [sequential/test-fs-stat-sync-overflow.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-fs-stat-sync-overflow.js)
-- [sequential/test-fs-watch.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-fs-watch.js)
-- [sequential/test-gc-http-client-onerror.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-gc-http-client-onerror.js)
-- [sequential/test-gc-http-client-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-gc-http-client-timeout.js)
-- [sequential/test-gc-http-client.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-gc-http-client.js)
-- [sequential/test-get-heapsnapshot-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-get-heapsnapshot-options.js)
-- [sequential/test-heapdump-flag-custom-dir.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-heapdump-flag-custom-dir.js)
-- [sequential/test-heapdump-flag.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-heapdump-flag.js)
-- [sequential/test-heapdump.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-heapdump.js)
-- [sequential/test-http-econnrefused.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-http-econnrefused.js)
-- [sequential/test-http-keep-alive-large-write.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-http-keep-alive-large-write.js)
-- [sequential/test-http-keepalive-maxsockets.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-http-keepalive-maxsockets.js)
-- [sequential/test-http-max-sockets.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-http-max-sockets.js)
-- [sequential/test-http-regr-gh-2928.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-http-regr-gh-2928.js)
-- [sequential/test-http-server-keep-alive-timeout-slow-client-headers.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-http-server-keep-alive-timeout-slow-client-headers.js)
-- [sequential/test-http2-large-file.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-http2-large-file.js)
-- [sequential/test-http2-max-session-memory.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-http2-max-session-memory.js)
-- [sequential/test-http2-ping-flood.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-http2-ping-flood.js)
-- [sequential/test-http2-settings-flood.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-http2-settings-flood.js)
-- [sequential/test-http2-timeout-large-write-file.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-http2-timeout-large-write-file.js)
-- [sequential/test-http2-timeout-large-write.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-http2-timeout-large-write.js)
-- [sequential/test-https-connect-localport.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-https-connect-localport.js)
-- [sequential/test-https-server-keep-alive-timeout.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-https-server-keep-alive-timeout.js)
-- [sequential/test-init.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-init.js)
-- [sequential/test-inspector-port-cluster.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-inspector-port-cluster.js)
-- [sequential/test-module-loading.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-module-loading.js)
-- [sequential/test-net-GH-5504.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-net-GH-5504.js)
-- [sequential/test-net-better-error-messages-port.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-net-better-error-messages-port.js)
-- [sequential/test-net-connect-econnrefused.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-net-connect-econnrefused.js)
-- [sequential/test-net-connect-handle-econnrefused.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-net-connect-handle-econnrefused.js)
-- [sequential/test-net-listen-shared-ports.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-net-listen-shared-ports.js)
-- [sequential/test-net-localport.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-net-localport.js)
-- [sequential/test-net-reconnect-error.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-net-reconnect-error.js)
-- [sequential/test-net-server-address.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-net-server-address.js)
-- [sequential/test-next-tick-error-spin.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-next-tick-error-spin.js)
-- [sequential/test-perf-hooks.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-perf-hooks.js)
-- [sequential/test-performance-eventloopdelay.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-performance-eventloopdelay.js)
-- [sequential/test-pipe.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-pipe.js)
-- [sequential/test-process-title.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-process-title.js)
-- [sequential/test-process-warnings.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-process-warnings.js)
-- [sequential/test-repl-timeout-throw.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-repl-timeout-throw.js)
-- [sequential/test-require-cache-without-stat.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-require-cache-without-stat.js)
-- [sequential/test-resolution-inspect-brk.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-resolution-inspect-brk.js)
-- [sequential/test-single-executable-application-disable-experimental-sea-warning.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-single-executable-application-disable-experimental-sea-warning.js)
-- [sequential/test-single-executable-application-empty.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-single-executable-application-empty.js)
-- [sequential/test-single-executable-application-snapshot-and-code-cache.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-single-executable-application-snapshot-and-code-cache.js)
-- [sequential/test-single-executable-application-snapshot.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-single-executable-application-snapshot.js)
-- [sequential/test-single-executable-application-use-code-cache.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-single-executable-application-use-code-cache.js)
-- [sequential/test-single-executable-application.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-single-executable-application.js)
-- [sequential/test-stream2-fs.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-stream2-fs.js)
-- [sequential/test-stream2-stderr-sync.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-stream2-stderr-sync.js)
-- [sequential/test-timers-block-eventloop.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-timers-block-eventloop.js)
-- [sequential/test-timers-set-interval-excludes-callback-duration.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-timers-set-interval-excludes-callback-duration.js)
-- [sequential/test-tls-connect.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-tls-connect.js)
-- [sequential/test-util-debug.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-util-debug.js)
-- [sequential/test-vm-break-on-sigint.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-vm-break-on-sigint.js)
-- [sequential/test-vm-timeout-escape-promise-module-2.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-vm-timeout-escape-promise-module-2.js)
-- [sequential/test-vm-timeout-rethrow.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-vm-timeout-rethrow.js)
-- [sequential/test-worker-eventlooputil.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-worker-eventlooputil.js)
-- [sequential/test-worker-fshandles-error-on-termination.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-worker-fshandles-error-on-termination.js)
-- [sequential/test-worker-fshandles-open-close-on-termination.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-worker-fshandles-open-close-on-termination.js)
-- [sequential/test-worker-heapsnapshot-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-worker-heapsnapshot-options.js)
-- [sequential/test-worker-prof.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-worker-prof.js)
-- [sequential/test-write-heapsnapshot-options.js](https://github.com/nodejs/node/tree/v20.11.1/test/sequential/test-write-heapsnapshot-options.js)
+- [abort/test-abort-backtrace.js](https://github.com/nodejs/node/tree/v23.9.0/test/abort/test-abort-backtrace.js)
+- [abort/test-abort-fatal-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/abort/test-abort-fatal-error.js)
+- [abort/test-abort-uncaught-exception.js](https://github.com/nodejs/node/tree/v23.9.0/test/abort/test-abort-uncaught-exception.js)
+- [abort/test-addon-register-signal-handler.js](https://github.com/nodejs/node/tree/v23.9.0/test/abort/test-addon-register-signal-handler.js)
+- [abort/test-http-parser-consume.js](https://github.com/nodejs/node/tree/v23.9.0/test/abort/test-http-parser-consume.js)
+- [abort/test-process-abort-exitcode.js](https://github.com/nodejs/node/tree/v23.9.0/test/abort/test-process-abort-exitcode.js)
+- [abort/test-signal-handler.js](https://github.com/nodejs/node/tree/v23.9.0/test/abort/test-signal-handler.js)
+- [abort/test-worker-abort-uncaught-exception.js](https://github.com/nodejs/node/tree/v23.9.0/test/abort/test-worker-abort-uncaught-exception.js)
+- [abort/test-zlib-invalid-internals-usage.js](https://github.com/nodejs/node/tree/v23.9.0/test/abort/test-zlib-invalid-internals-usage.js)
+- [benchmark/test-bechmark-readline.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-bechmark-readline.js)
+- [benchmark/test-benchmark-assert.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-assert.js)
+- [benchmark/test-benchmark-blob.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-blob.js)
+- [benchmark/test-benchmark-buffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-buffer.js)
+- [benchmark/test-benchmark-child-process.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-child-process.js)
+- [benchmark/test-benchmark-cluster.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-cluster.js)
+- [benchmark/test-benchmark-crypto.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-crypto.js)
+- [benchmark/test-benchmark-dgram.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-dgram.js)
+- [benchmark/test-benchmark-dns.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-dns.js)
+- [benchmark/test-benchmark-domain.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-domain.js)
+- [benchmark/test-benchmark-es.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-es.js)
+- [benchmark/test-benchmark-esm.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-esm.js)
+- [benchmark/test-benchmark-events.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-events.js)
+- [benchmark/test-benchmark-fs.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-fs.js)
+- [benchmark/test-benchmark-mime.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-mime.js)
+- [benchmark/test-benchmark-misc.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-misc.js)
+- [benchmark/test-benchmark-module.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-module.js)
+- [benchmark/test-benchmark-napi.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-napi.js)
+- [benchmark/test-benchmark-net.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-net.js)
+- [benchmark/test-benchmark-os.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-os.js)
+- [benchmark/test-benchmark-path.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-path.js)
+- [benchmark/test-benchmark-process.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-process.js)
+- [benchmark/test-benchmark-querystring.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-querystring.js)
+- [benchmark/test-benchmark-streams.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-streams.js)
+- [benchmark/test-benchmark-string_decoder.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-string_decoder.js)
+- [benchmark/test-benchmark-timers.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-timers.js)
+- [benchmark/test-benchmark-url.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-url.js)
+- [benchmark/test-benchmark-util.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-util.js)
+- [benchmark/test-benchmark-v8.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-v8.js)
+- [benchmark/test-benchmark-validators.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-validators.js)
+- [benchmark/test-benchmark-vm.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-vm.js)
+- [benchmark/test-benchmark-websocket.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-websocket.js)
+- [benchmark/test-benchmark-webstreams.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-webstreams.js)
+- [benchmark/test-benchmark-zlib.js](https://github.com/nodejs/node/tree/v23.9.0/test/benchmark/test-benchmark-zlib.js)
+- [es-module/test-cjs-esm-warn.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-cjs-esm-warn.js)
+- [es-module/test-cjs-legacyMainResolve-permission.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-cjs-legacyMainResolve-permission.js)
+- [es-module/test-cjs-legacyMainResolve.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-cjs-legacyMainResolve.js)
+- [es-module/test-disable-require-module-with-detection.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-disable-require-module-with-detection.js)
+- [es-module/test-dynamic-import-script-lifetime.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-dynamic-import-script-lifetime.js)
+- [es-module/test-esm-assertionless-json-import.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-assertionless-json-import.js)
+- [es-module/test-esm-cjs-builtins.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-cjs-builtins.js)
+- [es-module/test-esm-cjs-exports.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-cjs-exports.js)
+- [es-module/test-esm-cjs-main.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-cjs-main.js)
+- [es-module/test-esm-data-urls.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-data-urls.js)
+- [es-module/test-esm-dynamic-import-attribute.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-dynamic-import-attribute.js)
+- [es-module/test-esm-dynamic-import-commonjs.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-dynamic-import-commonjs.js)
+- [es-module/test-esm-dynamic-import.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-dynamic-import.js)
+- [es-module/test-esm-encoded-path-native.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-encoded-path-native.js)
+- [es-module/test-esm-error-cache.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-error-cache.js)
+- [es-module/test-esm-import-attributes-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-import-attributes-errors.js)
+- [es-module/test-esm-import-attributes-validation.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-import-attributes-validation.js)
+- [es-module/test-esm-invalid-data-urls.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-invalid-data-urls.js)
+- [es-module/test-esm-invalid-pjson.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-invalid-pjson.js)
+- [es-module/test-esm-loader-modulemap.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-loader-modulemap.js)
+- [es-module/test-esm-loader-search.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-loader-search.js)
+- [es-module/test-esm-long-path-win.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-long-path-win.js)
+- [es-module/test-esm-preserve-symlinks-main.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-preserve-symlinks-main.js)
+- [es-module/test-esm-preserve-symlinks.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-preserve-symlinks.js)
+- [es-module/test-esm-repl-imports.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-repl-imports.js)
+- [es-module/test-esm-repl.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-repl.js)
+- [es-module/test-esm-symlink-main.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-symlink-main.js)
+- [es-module/test-esm-symlink-type.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-symlink-type.js)
+- [es-module/test-esm-symlink.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-symlink.js)
+- [es-module/test-esm-type-field-errors-2.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-type-field-errors-2.js)
+- [es-module/test-esm-type-field-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-type-field-errors.js)
+- [es-module/test-esm-undefined-cjs-global-like-variables.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-undefined-cjs-global-like-variables.js)
+- [es-module/test-esm-unknown-extension.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-unknown-extension.js)
+- [es-module/test-esm-url-extname.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-esm-url-extname.js)
+- [es-module/test-loaders-hidden-from-users.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-loaders-hidden-from-users.js)
+- [es-module/test-require-module-cached-tla.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-cached-tla.js)
+- [es-module/test-require-module-conditional-exports-module.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-conditional-exports-module.js)
+- [es-module/test-require-module-conditional-exports.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-conditional-exports.js)
+- [es-module/test-require-module-cycle-cjs-esm-esm.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-cycle-cjs-esm-esm.js)
+- [es-module/test-require-module-cycle-esm-cjs-esm-esm.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-cycle-esm-cjs-esm-esm.js)
+- [es-module/test-require-module-cycle-esm-cjs-esm.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-cycle-esm-cjs-esm.js)
+- [es-module/test-require-module-cycle-esm-esm-cjs-esm-esm.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-cycle-esm-esm-cjs-esm-esm.js)
+- [es-module/test-require-module-cycle-esm-esm-cjs-esm.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-cycle-esm-esm-cjs-esm.js)
+- [es-module/test-require-module-default-extension.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-default-extension.js)
+- [es-module/test-require-module-defined-esmodule.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-defined-esmodule.js)
+- [es-module/test-require-module-detect-entry-point-aou.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-detect-entry-point-aou.js)
+- [es-module/test-require-module-detect-entry-point.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-detect-entry-point.js)
+- [es-module/test-require-module-dont-detect-cjs.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-dont-detect-cjs.js)
+- [es-module/test-require-module-dynamic-import-1.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-dynamic-import-1.js)
+- [es-module/test-require-module-dynamic-import-2.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-dynamic-import-2.js)
+- [es-module/test-require-module-dynamic-import-3.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-dynamic-import-3.js)
+- [es-module/test-require-module-dynamic-import-4.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-dynamic-import-4.js)
+- [es-module/test-require-module-error-catching.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-error-catching.js)
+- [es-module/test-require-module-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-errors.js)
+- [es-module/test-require-module-feature-detect.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-feature-detect.js)
+- [es-module/test-require-module-implicit.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-implicit.js)
+- [es-module/test-require-module-preload.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-preload.js)
+- [es-module/test-require-module-retry-import-errored.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-retry-import-errored.js)
+- [es-module/test-require-module-retry-import-evaluating.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-retry-import-evaluating.js)
+- [es-module/test-require-module-synchronous-rejection-handling.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-synchronous-rejection-handling.js)
+- [es-module/test-require-module-tla-execution.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-tla-execution.js)
+- [es-module/test-require-module-tla-nested.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-tla-nested.js)
+- [es-module/test-require-module-tla-print-execution.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-tla-print-execution.js)
+- [es-module/test-require-module-tla-rejected.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-tla-rejected.js)
+- [es-module/test-require-module-tla-resolved.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-tla-resolved.js)
+- [es-module/test-require-module-tla-retry-import-2.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-tla-retry-import-2.js)
+- [es-module/test-require-module-tla-retry-import.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-tla-retry-import.js)
+- [es-module/test-require-module-tla-retry-require.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-tla-retry-require.js)
+- [es-module/test-require-module-tla-unresolved.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-tla-unresolved.js)
+- [es-module/test-require-module-transpiled.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-transpiled.js)
+- [es-module/test-require-module-twice.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-twice.js)
+- [es-module/test-require-module-warning.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-warning.js)
+- [es-module/test-require-module-with-detection.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module-with-detection.js)
+- [es-module/test-require-module.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-module.js)
+- [es-module/test-require-node-modules-warning.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-require-node-modules-warning.js)
+- [es-module/test-vm-compile-function-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-vm-compile-function-leak.js)
+- [es-module/test-vm-contextified-script-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-vm-contextified-script-leak.js)
+- [es-module/test-vm-main-context-default-loader.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-vm-main-context-default-loader.js)
+- [es-module/test-vm-source-text-module-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-vm-source-text-module-leak.js)
+- [es-module/test-vm-synthetic-module-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-vm-synthetic-module-leak.js)
+- [es-module/test-wasm-memory-out-of-bound.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-wasm-memory-out-of-bound.js)
+- [es-module/test-wasm-simple.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-wasm-simple.js)
+- [es-module/test-wasm-web-api.js](https://github.com/nodejs/node/tree/v23.9.0/test/es-module/test-wasm-web-api.js)
+- [internet/test-corepack-yarn-install.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-corepack-yarn-install.js)
+- [internet/test-dgram-broadcast-multi-process.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-dgram-broadcast-multi-process.js)
+- [internet/test-dgram-connect.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-dgram-connect.js)
+- [internet/test-dgram-membership.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-dgram-membership.js)
+- [internet/test-dgram-multicast-multi-process.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-dgram-multicast-multi-process.js)
+- [internet/test-dgram-multicast-set-interface-lo.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-dgram-multicast-set-interface-lo.js)
+- [internet/test-dgram-multicast-ssm-multi-process.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-dgram-multicast-ssm-multi-process.js)
+- [internet/test-dgram-multicast-ssmv6-multi-process.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-dgram-multicast-ssmv6-multi-process.js)
+- [internet/test-dns-any.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-dns-any.js)
+- [internet/test-dns-cares-domains.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-dns-cares-domains.js)
+- [internet/test-dns-getDefaultResultOrder.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-dns-getDefaultResultOrder.js)
+- [internet/test-dns-ipv4.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-dns-ipv4.js)
+- [internet/test-dns-ipv6.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-dns-ipv6.js)
+- [internet/test-dns-txt-sigsegv.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-dns-txt-sigsegv.js)
+- [internet/test-dns.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-dns.js)
+- [internet/test-http-dns-fail.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-http-dns-fail.js)
+- [internet/test-http2-issue-32922.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-http2-issue-32922.js)
+- [internet/test-https-autoselectfamily-slow-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-https-autoselectfamily-slow-timeout.js)
+- [internet/test-https-issue-43963.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-https-issue-43963.js)
+- [internet/test-inspector-help-page.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-inspector-help-page.js)
+- [internet/test-net-autoselectfamily-events-failure.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-net-autoselectfamily-events-failure.js)
+- [internet/test-net-autoselectfamily-events-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-net-autoselectfamily-events-timeout.js)
+- [internet/test-net-autoselectfamily-timeout-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-net-autoselectfamily-timeout-close.js)
+- [internet/test-net-connect-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-net-connect-timeout.js)
+- [internet/test-net-connect-unref.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-net-connect-unref.js)
+- [internet/test-snapshot-dns-lookup.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-snapshot-dns-lookup.js)
+- [internet/test-snapshot-dns-resolve.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-snapshot-dns-resolve.js)
+- [internet/test-tls-add-ca-cert.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-tls-add-ca-cert.js)
+- [internet/test-tls-autoselectfamily-backing-socket.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-tls-autoselectfamily-backing-socket.js)
+- [internet/test-tls-autoselectfamily-servername.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-tls-autoselectfamily-servername.js)
+- [internet/test-trace-events-dns.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-trace-events-dns.js)
+- [internet/test-uv-threadpool-schedule.js](https://github.com/nodejs/node/tree/v23.9.0/test/internet/test-uv-threadpool-schedule.js)
+- [known_issues/test-cli-print-var-crypto.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-cli-print-var-crypto.js)
+- [known_issues/test-cwd-enoent-file.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-cwd-enoent-file.js)
+- [known_issues/test-dgram-bind-shared-ports-after-port-0.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-dgram-bind-shared-ports-after-port-0.js)
+- [known_issues/test-fs-writeFileSync-invalid-windows.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-fs-writeFileSync-invalid-windows.js)
+- [known_issues/test-http-clientrequest-end-contentlength.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-http-clientrequest-end-contentlength.js)
+- [known_issues/test-http-clientrequest-end-empty-response-body.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-http-clientrequest-end-empty-response-body.js)
+- [known_issues/test-http-clientrequest-write-chunked.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-http-clientrequest-write-chunked.js)
+- [known_issues/test-http-path-contains-unicode.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-http-path-contains-unicode.js)
+- [known_issues/test-inspector-cluster-port-clash.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-inspector-cluster-port-clash.js)
+- [known_issues/test-inspector-instrumentation-breakpoint.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-inspector-instrumentation-breakpoint.js)
+- [known_issues/test-repl-require-context.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-repl-require-context.js)
+- [known_issues/test-stdin-is-always-net.socket.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-stdin-is-always-net.socket.js)
+- [known_issues/test-stream-writable-sync-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-stream-writable-sync-error.js)
+- [known_issues/test-url-parse-conformance.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-url-parse-conformance.js)
+- [known_issues/test-vm-function-declaration-uses-define.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-vm-function-declaration-uses-define.js)
+- [known_issues/test-vm-timeout-escape-nexttick.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-vm-timeout-escape-nexttick.js)
+- [known_issues/test-vm-timeout-escape-queuemicrotask.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-vm-timeout-escape-queuemicrotask.js)
+- [known_issues/test-whatwg-url-custom-domainto.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-whatwg-url-custom-domainto.js)
+- [known_issues/test-whatwg-url-toascii.js](https://github.com/nodejs/node/tree/v23.9.0/test/known_issues/test-whatwg-url-toascii.js)
+- [message/assert_throws_stack.js](https://github.com/nodejs/node/tree/v23.9.0/test/message/assert_throws_stack.js)
+- [message/console_assert.js](https://github.com/nodejs/node/tree/v23.9.0/test/message/console_assert.js)
+- [message/internal_assert.js](https://github.com/nodejs/node/tree/v23.9.0/test/message/internal_assert.js)
+- [message/internal_assert_fail.js](https://github.com/nodejs/node/tree/v23.9.0/test/message/internal_assert_fail.js)
+- [message/nexttick_throw.js](https://github.com/nodejs/node/tree/v23.9.0/test/message/nexttick_throw.js)
+- [message/node_run_non_existent.js](https://github.com/nodejs/node/tree/v23.9.0/test/message/node_run_non_existent.js)
+- [message/util-inspect-error-cause.js](https://github.com/nodejs/node/tree/v23.9.0/test/message/util-inspect-error-cause.js)
+- [module-hooks/test-module-hooks-load-buffers.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-load-buffers.js)
+- [module-hooks/test-module-hooks-load-builtin-require.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-load-builtin-require.js)
+- [module-hooks/test-module-hooks-load-chained.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-load-chained.js)
+- [module-hooks/test-module-hooks-load-context-merged.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-load-context-merged.js)
+- [module-hooks/test-module-hooks-load-context-optional.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-load-context-optional.js)
+- [module-hooks/test-module-hooks-load-detection.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-load-detection.js)
+- [module-hooks/test-module-hooks-load-esm-mock.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-load-esm-mock.js)
+- [module-hooks/test-module-hooks-load-esm.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-load-esm.js)
+- [module-hooks/test-module-hooks-load-invalid.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-load-invalid.js)
+- [module-hooks/test-module-hooks-load-mock.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-load-mock.js)
+- [module-hooks/test-module-hooks-load-short-circuit-required-middle.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-load-short-circuit-required-middle.js)
+- [module-hooks/test-module-hooks-load-short-circuit-required-start.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-load-short-circuit-required-start.js)
+- [module-hooks/test-module-hooks-load-short-circuit.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-load-short-circuit.js)
+- [module-hooks/test-module-hooks-load-url-change-require.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-load-url-change-require.js)
+- [module-hooks/test-module-hooks-preload.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-preload.js)
+- [module-hooks/test-module-hooks-require-wasm.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-require-wasm.js)
+- [module-hooks/test-module-hooks-resolve-builtin-builtin-require.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-resolve-builtin-builtin-require.js)
+- [module-hooks/test-module-hooks-resolve-builtin-on-disk-require.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-resolve-builtin-on-disk-require.js)
+- [module-hooks/test-module-hooks-resolve-context-merged.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-resolve-context-merged.js)
+- [module-hooks/test-module-hooks-resolve-context-optional.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-resolve-context-optional.js)
+- [module-hooks/test-module-hooks-resolve-invalid.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-resolve-invalid.js)
+- [module-hooks/test-module-hooks-resolve-load-require-inline-typescript-override.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-resolve-load-require-inline-typescript-override.js)
+- [module-hooks/test-module-hooks-resolve-load-require-inline-typescript.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-resolve-load-require-inline-typescript.js)
+- [module-hooks/test-module-hooks-resolve-short-circuit-required-middle.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-resolve-short-circuit-required-middle.js)
+- [module-hooks/test-module-hooks-resolve-short-circuit-required-start.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-resolve-short-circuit-required-start.js)
+- [module-hooks/test-module-hooks-resolve-short-circuit.js](https://github.com/nodejs/node/tree/v23.9.0/test/module-hooks/test-module-hooks-resolve-short-circuit.js)
+- [parallel/test-abortcontroller-internal.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-abortcontroller-internal.js)
+- [parallel/test-abortcontroller.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-abortcontroller.js)
+- [parallel/test-aborted-util.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-aborted-util.js)
+- [parallel/test-abortsignal-cloneable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-abortsignal-cloneable.js)
+- [parallel/test-accessor-properties.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-accessor-properties.js)
+- [parallel/test-assert-builtins-not-read-from-filesystem.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-assert-builtins-not-read-from-filesystem.js)
+- [parallel/test-assert-calltracker-calls.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-assert-calltracker-calls.js)
+- [parallel/test-assert-calltracker-getCalls.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-assert-calltracker-getCalls.js)
+- [parallel/test-assert-calltracker-report.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-assert-calltracker-report.js)
+- [parallel/test-assert-calltracker-verify.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-assert-calltracker-verify.js)
+- [parallel/test-assert-checktag.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-assert-checktag.js)
+- [parallel/test-assert-deep-with-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-assert-deep-with-error.js)
+- [parallel/test-assert-deep.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-assert-deep.js)
+- [parallel/test-assert-esm-cjs-message-verify.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-assert-esm-cjs-message-verify.js)
+- [parallel/test-assert-fail-deprecation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-assert-fail-deprecation.js)
+- [parallel/test-assert-first-line.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-assert-first-line.js)
+- [parallel/test-assert-if-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-assert-if-error.js)
+- [parallel/test-assert-objects.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-assert-objects.js)
+- [parallel/test-assert-typedarray-deepequal.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-assert-typedarray-deepequal.js)
+- [parallel/test-async-hooks-async-await.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-async-await.js)
+- [parallel/test-async-hooks-asyncresource-constructor.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-asyncresource-constructor.js)
+- [parallel/test-async-hooks-close-during-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-close-during-destroy.js)
+- [parallel/test-async-hooks-constructor.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-constructor.js)
+- [parallel/test-async-hooks-correctly-switch-promise-hook.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-correctly-switch-promise-hook.js)
+- [parallel/test-async-hooks-destroy-on-gc.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-destroy-on-gc.js)
+- [parallel/test-async-hooks-disable-during-promise.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-disable-during-promise.js)
+- [parallel/test-async-hooks-disable-gc-tracking.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-disable-gc-tracking.js)
+- [parallel/test-async-hooks-enable-before-promise-resolve.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-enable-before-promise-resolve.js)
+- [parallel/test-async-hooks-enable-disable-enable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-enable-disable-enable.js)
+- [parallel/test-async-hooks-enable-disable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-enable-disable.js)
+- [parallel/test-async-hooks-enable-during-promise.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-enable-during-promise.js)
+- [parallel/test-async-hooks-enable-recursive.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-enable-recursive.js)
+- [parallel/test-async-hooks-execution-async-resource-await.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-execution-async-resource-await.js)
+- [parallel/test-async-hooks-execution-async-resource.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-execution-async-resource.js)
+- [parallel/test-async-hooks-fatal-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-fatal-error.js)
+- [parallel/test-async-hooks-http-agent-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-http-agent-destroy.js)
+- [parallel/test-async-hooks-http-agent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-http-agent.js)
+- [parallel/test-async-hooks-http-parser-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-http-parser-destroy.js)
+- [parallel/test-async-hooks-prevent-double-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-prevent-double-destroy.js)
+- [parallel/test-async-hooks-promise-enable-disable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-promise-enable-disable.js)
+- [parallel/test-async-hooks-promise-triggerid.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-promise-triggerid.js)
+- [parallel/test-async-hooks-promise.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-promise.js)
+- [parallel/test-async-hooks-recursive-stack-runInAsyncScope.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-recursive-stack-runInAsyncScope.js)
+- [parallel/test-async-hooks-top-level-clearimmediate.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-top-level-clearimmediate.js)
+- [parallel/test-async-hooks-vm-gc.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-vm-gc.js)
+- [parallel/test-async-hooks-worker-asyncfn-terminate-1.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-worker-asyncfn-terminate-1.js)
+- [parallel/test-async-hooks-worker-asyncfn-terminate-2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-worker-asyncfn-terminate-2.js)
+- [parallel/test-async-hooks-worker-asyncfn-terminate-3.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-worker-asyncfn-terminate-3.js)
+- [parallel/test-async-hooks-worker-asyncfn-terminate-4.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-hooks-worker-asyncfn-terminate-4.js)
+- [parallel/test-async-local-storage-exit-does-not-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-local-storage-exit-does-not-leak.js)
+- [parallel/test-async-wrap-constructor.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-wrap-constructor.js)
+- [parallel/test-async-wrap-destroyid.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-wrap-destroyid.js)
+- [parallel/test-async-wrap-pop-id-during-load.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-wrap-pop-id-during-load.js)
+- [parallel/test-async-wrap-promise-after-enabled.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-wrap-promise-after-enabled.js)
+- [parallel/test-async-wrap-tlssocket-asyncreset.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-wrap-tlssocket-asyncreset.js)
+- [parallel/test-async-wrap-trigger-id.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-wrap-trigger-id.js)
+- [parallel/test-async-wrap-uncaughtexception.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-async-wrap-uncaughtexception.js)
+- [parallel/test-asyncresource-bind.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-asyncresource-bind.js)
+- [parallel/test-bash-completion.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-bash-completion.js)
+- [parallel/test-benchmark-cli.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-benchmark-cli.js)
+- [parallel/test-binding-constants.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-binding-constants.js)
+- [parallel/test-blob-createobjecturl.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-blob-createobjecturl.js)
+- [parallel/test-blob-file-backed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-blob-file-backed.js)
+- [parallel/test-blob.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-blob.js)
+- [parallel/test-blocklist-clone.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-blocklist-clone.js)
+- [parallel/test-bootstrap-modules.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-bootstrap-modules.js)
+- [parallel/test-broadcastchannel-custom-inspect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-broadcastchannel-custom-inspect.js)
+- [parallel/test-buffer-backing-arraybuffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-backing-arraybuffer.js)
+- [parallel/test-buffer-compare.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-compare.js)
+- [parallel/test-buffer-constructor-deprecation-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-constructor-deprecation-error.js)
+- [parallel/test-buffer-constructor-node-modules-paths.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-constructor-node-modules-paths.js)
+- [parallel/test-buffer-constructor-node-modules.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-constructor-node-modules.js)
+- [parallel/test-buffer-constructor-outside-node-modules.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-constructor-outside-node-modules.js)
+- [parallel/test-buffer-fill.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-fill.js)
+- [parallel/test-buffer-inspect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-inspect.js)
+- [parallel/test-buffer-pending-deprecation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-pending-deprecation.js)
+- [parallel/test-buffer-pool-untransferable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-pool-untransferable.js)
+- [parallel/test-buffer-prototype-inspect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-prototype-inspect.js)
+- [parallel/test-buffer-resizable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-resizable.js)
+- [parallel/test-buffer-set-inspect-max-bytes.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-set-inspect-max-bytes.js)
+- [parallel/test-buffer-write-fast.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-write-fast.js)
+- [parallel/test-c-ares.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-c-ares.js)
+- [parallel/test-child-process-advanced-serialization-largebuffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-advanced-serialization-largebuffer.js)
+- [parallel/test-child-process-advanced-serialization-splitted-length-field.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-advanced-serialization-splitted-length-field.js)
+- [parallel/test-child-process-advanced-serialization.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-advanced-serialization.js)
+- [parallel/test-child-process-bad-stdio.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-bad-stdio.js)
+- [parallel/test-child-process-can-write-to-stdout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-can-write-to-stdout.js)
+- [parallel/test-child-process-constructor.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-constructor.js)
+- [parallel/test-child-process-cwd.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-cwd.js)
+- [parallel/test-child-process-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-destroy.js)
+- [parallel/test-child-process-dgram-reuseport.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-dgram-reuseport.js)
+- [parallel/test-child-process-disconnect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-disconnect.js)
+- [parallel/test-child-process-env.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-env.js)
+- [parallel/test-child-process-exec-any-shells-windows.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-exec-any-shells-windows.js)
+- [parallel/test-child-process-exec-timeout-expire.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-exec-timeout-expire.js)
+- [parallel/test-child-process-exec-timeout-kill.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-exec-timeout-kill.js)
+- [parallel/test-child-process-execFile-promisified-abortController.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-execFile-promisified-abortController.js)
+- [parallel/test-child-process-fork-abort-signal.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork-abort-signal.js)
+- [parallel/test-child-process-fork-and-spawn.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork-and-spawn.js)
+- [parallel/test-child-process-fork-args.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork-args.js)
+- [parallel/test-child-process-fork-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork-close.js)
+- [parallel/test-child-process-fork-closed-channel-segfault.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork-closed-channel-segfault.js)
+- [parallel/test-child-process-fork-detached.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork-detached.js)
+- [parallel/test-child-process-fork-dgram.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork-dgram.js)
+- [parallel/test-child-process-fork-exec-argv.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork-exec-argv.js)
+- [parallel/test-child-process-fork-exec-path.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork-exec-path.js)
+- [parallel/test-child-process-fork-getconnections.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork-getconnections.js)
+- [parallel/test-child-process-fork-net-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork-net-server.js)
+- [parallel/test-child-process-fork-net-socket.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork-net-socket.js)
+- [parallel/test-child-process-fork-net.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork-net.js)
+- [parallel/test-child-process-fork-no-shell.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork-no-shell.js)
+- [parallel/test-child-process-fork-stdio-string-variant.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork-stdio-string-variant.js)
+- [parallel/test-child-process-fork-stdio.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork-stdio.js)
+- [parallel/test-child-process-fork-timeout-kill-signal.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork-timeout-kill-signal.js)
+- [parallel/test-child-process-fork.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-fork.js)
+- [parallel/test-child-process-http-socket-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-http-socket-leak.js)
+- [parallel/test-child-process-internal.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-internal.js)
+- [parallel/test-child-process-net-reuseport.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-net-reuseport.js)
+- [parallel/test-child-process-no-deprecation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-no-deprecation.js)
+- [parallel/test-child-process-pipe-dataflow.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-pipe-dataflow.js)
+- [parallel/test-child-process-promisified.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-promisified.js)
+- [parallel/test-child-process-recv-handle.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-recv-handle.js)
+- [parallel/test-child-process-reject-null-bytes.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-reject-null-bytes.js)
+- [parallel/test-child-process-send-after-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-send-after-close.js)
+- [parallel/test-child-process-send-cb.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-send-cb.js)
+- [parallel/test-child-process-send-keep-open.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-send-keep-open.js)
+- [parallel/test-child-process-send-returns-boolean.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-send-returns-boolean.js)
+- [parallel/test-child-process-send-utf8.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-send-utf8.js)
+- [parallel/test-child-process-server-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-server-close.js)
+- [parallel/test-child-process-silent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-silent.js)
+- [parallel/test-child-process-spawn-argv0.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-spawn-argv0.js)
+- [parallel/test-child-process-spawn-controller.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-spawn-controller.js)
+- [parallel/test-child-process-spawn-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-spawn-error.js)
+- [parallel/test-child-process-spawn-shell.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-spawn-shell.js)
+- [parallel/test-child-process-spawn-timeout-kill-signal.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-spawn-timeout-kill-signal.js)
+- [parallel/test-child-process-spawn-typeerror.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-spawn-typeerror.js)
+- [parallel/test-child-process-spawn-windows-batch-file.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-spawn-windows-batch-file.js)
+- [parallel/test-child-process-spawnsync-input.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-spawnsync-input.js)
+- [parallel/test-child-process-spawnsync-kill-signal.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-spawnsync-kill-signal.js)
+- [parallel/test-child-process-spawnsync-shell.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-spawnsync-shell.js)
+- [parallel/test-child-process-spawnsync-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-spawnsync-timeout.js)
+- [parallel/test-child-process-stdin.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-stdin.js)
+- [parallel/test-child-process-stdio-big-write-end.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-stdio-big-write-end.js)
+- [parallel/test-child-process-stdio-merge-stdouts-into-cat.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-stdio-merge-stdouts-into-cat.js)
+- [parallel/test-child-process-stdio-reuse-readable-stdio.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-stdio-reuse-readable-stdio.js)
+- [parallel/test-child-process-stdio.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-stdio.js)
+- [parallel/test-child-process-stdout-ipc.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-stdout-ipc.js)
+- [parallel/test-child-process-uid-gid.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-uid-gid.js)
+- [parallel/test-child-process-validate-stdio.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-validate-stdio.js)
+- [parallel/test-child-process-windows-hide.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-windows-hide.js)
+- [parallel/test-cli-bad-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cli-bad-options.js)
+- [parallel/test-cli-eval-event.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cli-eval-event.js)
+- [parallel/test-cli-eval.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cli-eval.js)
+- [parallel/test-cli-node-options-disallowed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cli-node-options-disallowed.js)
+- [parallel/test-cli-node-options-docs.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cli-node-options-docs.js)
+- [parallel/test-cli-node-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cli-node-options.js)
+- [parallel/test-cli-node-print-help.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cli-node-print-help.js)
+- [parallel/test-cli-options-negation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cli-options-negation.js)
+- [parallel/test-cli-options-precedence.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cli-options-precedence.js)
+- [parallel/test-cli-permission-deny-fs.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cli-permission-deny-fs.js)
+- [parallel/test-cli-permission-multiple-allow.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cli-permission-multiple-allow.js)
+- [parallel/test-cli-syntax-eval.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cli-syntax-eval.js)
+- [parallel/test-cli-syntax-piped-bad.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cli-syntax-piped-bad.js)
+- [parallel/test-cli-syntax-piped-good.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cli-syntax-piped-good.js)
+- [parallel/test-cluster-accept-fail.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-accept-fail.js)
+- [parallel/test-cluster-advanced-serialization.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-advanced-serialization.js)
+- [parallel/test-cluster-basic.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-basic.js)
+- [parallel/test-cluster-bind-privileged-port.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-bind-privileged-port.js)
+- [parallel/test-cluster-bind-twice.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-bind-twice.js)
+- [parallel/test-cluster-call-and-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-call-and-destroy.js)
+- [parallel/test-cluster-child-index-dgram.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-child-index-dgram.js)
+- [parallel/test-cluster-child-index-net.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-child-index-net.js)
+- [parallel/test-cluster-concurrent-disconnect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-concurrent-disconnect.js)
+- [parallel/test-cluster-cwd.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-cwd.js)
+- [parallel/test-cluster-dgram-1.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-dgram-1.js)
+- [parallel/test-cluster-dgram-2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-dgram-2.js)
+- [parallel/test-cluster-dgram-bind-fd.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-dgram-bind-fd.js)
+- [parallel/test-cluster-dgram-ipv6only.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-dgram-ipv6only.js)
+- [parallel/test-cluster-dgram-reuse.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-dgram-reuse.js)
+- [parallel/test-cluster-dgram-reuseport.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-dgram-reuseport.js)
+- [parallel/test-cluster-disconnect-before-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-disconnect-before-exit.js)
+- [parallel/test-cluster-disconnect-exitedAfterDisconnect-race.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-disconnect-exitedAfterDisconnect-race.js)
+- [parallel/test-cluster-disconnect-idle-worker.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-disconnect-idle-worker.js)
+- [parallel/test-cluster-disconnect-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-disconnect-leak.js)
+- [parallel/test-cluster-disconnect-race.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-disconnect-race.js)
+- [parallel/test-cluster-disconnect-unshared-tcp.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-disconnect-unshared-tcp.js)
+- [parallel/test-cluster-disconnect-unshared-udp.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-disconnect-unshared-udp.js)
+- [parallel/test-cluster-disconnect-with-no-workers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-disconnect-with-no-workers.js)
+- [parallel/test-cluster-disconnect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-disconnect.js)
+- [parallel/test-cluster-eaccess.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-eaccess.js)
+- [parallel/test-cluster-eaddrinuse.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-eaddrinuse.js)
+- [parallel/test-cluster-fork-env.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-fork-env.js)
+- [parallel/test-cluster-fork-stdio.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-fork-stdio.js)
+- [parallel/test-cluster-fork-windowsHide.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-fork-windowsHide.js)
+- [parallel/test-cluster-http-pipe.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-http-pipe.js)
+- [parallel/test-cluster-invalid-message.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-invalid-message.js)
+- [parallel/test-cluster-ipc-throw.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-ipc-throw.js)
+- [parallel/test-cluster-kill-disconnect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-kill-disconnect.js)
+- [parallel/test-cluster-kill-infinite-loop.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-kill-infinite-loop.js)
+- [parallel/test-cluster-listen-pipe-readable-writable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-listen-pipe-readable-writable.js)
+- [parallel/test-cluster-listening-port.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-listening-port.js)
+- [parallel/test-cluster-message.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-message.js)
+- [parallel/test-cluster-net-listen-backlog.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-net-listen-backlog.js)
+- [parallel/test-cluster-net-listen-ipv6only-false.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-net-listen-ipv6only-false.js)
+- [parallel/test-cluster-net-listen-relative-path.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-net-listen-relative-path.js)
+- [parallel/test-cluster-net-listen.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-net-listen.js)
+- [parallel/test-cluster-net-reuseport.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-net-reuseport.js)
+- [parallel/test-cluster-net-send.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-net-send.js)
+- [parallel/test-cluster-net-server-drop-connection.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-net-server-drop-connection.js)
+- [parallel/test-cluster-primary-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-primary-error.js)
+- [parallel/test-cluster-primary-kill.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-primary-kill.js)
+- [parallel/test-cluster-process-disconnect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-process-disconnect.js)
+- [parallel/test-cluster-rr-domain-listen.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-rr-domain-listen.js)
+- [parallel/test-cluster-rr-handle-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-rr-handle-close.js)
+- [parallel/test-cluster-rr-handle-keep-loop-alive.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-rr-handle-keep-loop-alive.js)
+- [parallel/test-cluster-rr-handle-ref-unref.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-rr-handle-ref-unref.js)
+- [parallel/test-cluster-rr-ref.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-rr-ref.js)
+- [parallel/test-cluster-send-deadlock.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-send-deadlock.js)
+- [parallel/test-cluster-send-handle-twice.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-send-handle-twice.js)
+- [parallel/test-cluster-send-socket-to-worker-http-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-send-socket-to-worker-http-server.js)
+- [parallel/test-cluster-server-restart-none.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-server-restart-none.js)
+- [parallel/test-cluster-server-restart-rr.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-server-restart-rr.js)
+- [parallel/test-cluster-setup-primary-argv.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-setup-primary-argv.js)
+- [parallel/test-cluster-setup-primary-cumulative.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-setup-primary-cumulative.js)
+- [parallel/test-cluster-setup-primary-emit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-setup-primary-emit.js)
+- [parallel/test-cluster-setup-primary-multiple.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-setup-primary-multiple.js)
+- [parallel/test-cluster-setup-primary.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-setup-primary.js)
+- [parallel/test-cluster-shared-handle-bind-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-shared-handle-bind-error.js)
+- [parallel/test-cluster-shared-handle-bind-privileged-port.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-shared-handle-bind-privileged-port.js)
+- [parallel/test-cluster-shared-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-shared-leak.js)
+- [parallel/test-cluster-worker-constructor.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-worker-constructor.js)
+- [parallel/test-cluster-worker-death.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-worker-death.js)
+- [parallel/test-cluster-worker-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-worker-destroy.js)
+- [parallel/test-cluster-worker-disconnect-on-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-worker-disconnect-on-error.js)
+- [parallel/test-cluster-worker-disconnect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-worker-disconnect.js)
+- [parallel/test-cluster-worker-events.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-worker-events.js)
+- [parallel/test-cluster-worker-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-worker-exit.js)
+- [parallel/test-cluster-worker-forced-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-worker-forced-exit.js)
+- [parallel/test-cluster-worker-handle-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-worker-handle-close.js)
+- [parallel/test-cluster-worker-init.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-worker-init.js)
+- [parallel/test-cluster-worker-isconnected.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-worker-isconnected.js)
+- [parallel/test-cluster-worker-isdead.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-worker-isdead.js)
+- [parallel/test-cluster-worker-kill-signal.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-worker-kill-signal.js)
+- [parallel/test-cluster-worker-kill.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-worker-kill.js)
+- [parallel/test-cluster-worker-no-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-worker-no-exit.js)
+- [parallel/test-cluster-worker-wait-server-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cluster-worker-wait-server-close.js)
+- [parallel/test-code-cache.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-code-cache.js)
+- [parallel/test-common-countdown.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-common-countdown.js)
+- [parallel/test-common-expect-warning.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-common-expect-warning.js)
+- [parallel/test-common-gc.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-common-gc.js)
+- [parallel/test-common-must-not-call.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-common-must-not-call.js)
+- [parallel/test-common.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-common.js)
+- [parallel/test-compile-cache-api-env.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-api-env.js)
+- [parallel/test-compile-cache-api-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-api-error.js)
+- [parallel/test-compile-cache-api-flush.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-api-flush.js)
+- [parallel/test-compile-cache-api-permission.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-api-permission.js)
+- [parallel/test-compile-cache-api-success.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-api-success.js)
+- [parallel/test-compile-cache-api-tmpdir.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-api-tmpdir.js)
+- [parallel/test-compile-cache-bad-syntax.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-bad-syntax.js)
+- [parallel/test-compile-cache-disable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-disable.js)
+- [parallel/test-compile-cache-dynamic-import.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-dynamic-import.js)
+- [parallel/test-compile-cache-esm.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-esm.js)
+- [parallel/test-compile-cache-existing-directory.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-existing-directory.js)
+- [parallel/test-compile-cache-permission-allowed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-permission-allowed.js)
+- [parallel/test-compile-cache-permission-disallowed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-permission-disallowed.js)
+- [parallel/test-compile-cache-success.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-success.js)
+- [parallel/test-compile-cache-typescript-commonjs.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-typescript-commonjs.js)
+- [parallel/test-compile-cache-typescript-esm.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-typescript-esm.js)
+- [parallel/test-compile-cache-typescript-strip-miss.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-typescript-strip-miss.js)
+- [parallel/test-compile-cache-typescript-strip-sourcemaps.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-typescript-strip-sourcemaps.js)
+- [parallel/test-compile-cache-typescript-transform.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-typescript-transform.js)
+- [parallel/test-compile-cache-updated-file.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compile-cache-updated-file.js)
+- [parallel/test-compression-decompression-stream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-compression-decompression-stream.js)
+- [parallel/test-console-clear.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-console-clear.js)
+- [parallel/test-console-count.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-console-count.js)
+- [parallel/test-console-diagnostics-channels.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-console-diagnostics-channels.js)
+- [parallel/test-console-issue-43095.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-console-issue-43095.js)
+- [parallel/test-console-methods.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-console-methods.js)
+- [parallel/test-console-stdio-setters.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-console-stdio-setters.js)
+- [parallel/test-console-with-frozen-intrinsics.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-console-with-frozen-intrinsics.js)
+- [parallel/test-console.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-console.js)
+- [parallel/test-constants.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-constants.js)
+- [parallel/test-corepack-version.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-corepack-version.js)
+- [parallel/test-coverage-with-inspector-disabled.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-coverage-with-inspector-disabled.js)
+- [parallel/test-crypto-aes-wrap.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-aes-wrap.js)
+- [parallel/test-crypto-async-sign-verify.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-async-sign-verify.js)
+- [parallel/test-crypto-authenticated-stream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-authenticated-stream.js)
+- [parallel/test-crypto-authenticated.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-authenticated.js)
+- [parallel/test-crypto-certificate.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-certificate.js)
+- [parallel/test-crypto-cipheriv-decipheriv.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-cipheriv-decipheriv.js)
+- [parallel/test-crypto-classes.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-classes.js)
+- [parallel/test-crypto-des3-wrap.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-des3-wrap.js)
+- [parallel/test-crypto-dh-constructor.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-dh-constructor.js)
+- [parallel/test-crypto-dh-curves.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-dh-curves.js)
+- [parallel/test-crypto-dh-generate-keys.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-dh-generate-keys.js)
+- [parallel/test-crypto-dh-group-setters.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-dh-group-setters.js)
+- [parallel/test-crypto-dh-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-dh-leak.js)
+- [parallel/test-crypto-dh-modp2-views.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-dh-modp2-views.js)
+- [parallel/test-crypto-dh-modp2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-dh-modp2.js)
+- [parallel/test-crypto-dh-padding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-dh-padding.js)
+- [parallel/test-crypto-dh-stateless.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-dh-stateless.js)
+- [parallel/test-crypto-domains.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-domains.js)
+- [parallel/test-crypto-ecb.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-ecb.js)
+- [parallel/test-crypto-ecdh-convert-key.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-ecdh-convert-key.js)
+- [parallel/test-crypto-encoding-validation-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-encoding-validation-error.js)
+- [parallel/test-crypto-fips.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-fips.js)
+- [parallel/test-crypto-gcm-explicit-short-tag.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-gcm-explicit-short-tag.js)
+- [parallel/test-crypto-gcm-implicit-short-tag.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-gcm-implicit-short-tag.js)
+- [parallel/test-crypto-getcipherinfo.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-getcipherinfo.js)
+- [parallel/test-crypto-hash-stream-pipe.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-hash-stream-pipe.js)
+- [parallel/test-crypto-key-objects-messageport.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-key-objects-messageport.js)
+- [parallel/test-crypto-key-objects-to-crypto-key.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-key-objects-to-crypto-key.js)
+- [parallel/test-crypto-key-objects.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-key-objects.js)
+- [parallel/test-crypto-keygen-async-dsa-key-object.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-async-dsa-key-object.js)
+- [parallel/test-crypto-keygen-async-dsa.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-async-dsa.js)
+- [parallel/test-crypto-keygen-async-elliptic-curve-jwk-ec.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-async-elliptic-curve-jwk-ec.js)
+- [parallel/test-crypto-keygen-async-elliptic-curve-jwk-rsa.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-async-elliptic-curve-jwk-rsa.js)
+- [parallel/test-crypto-keygen-async-elliptic-curve-jwk.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-async-elliptic-curve-jwk.js)
+- [parallel/test-crypto-keygen-async-encrypted-private-key-der.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-async-encrypted-private-key-der.js)
+- [parallel/test-crypto-keygen-async-encrypted-private-key.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-async-encrypted-private-key.js)
+- [parallel/test-crypto-keygen-async-explicit-elliptic-curve-encrypted-p256.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-async-explicit-elliptic-curve-encrypted-p256.js)
+- [parallel/test-crypto-keygen-async-explicit-elliptic-curve-encrypted.js.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-async-explicit-elliptic-curve-encrypted.js.js)
+- [parallel/test-crypto-keygen-async-explicit-elliptic-curve.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-async-explicit-elliptic-curve.js)
+- [parallel/test-crypto-keygen-async-named-elliptic-curve-encrypted-p256.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-async-named-elliptic-curve-encrypted-p256.js)
+- [parallel/test-crypto-keygen-async-named-elliptic-curve-encrypted.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-async-named-elliptic-curve-encrypted.js)
+- [parallel/test-crypto-keygen-async-named-elliptic-curve.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-async-named-elliptic-curve.js)
+- [parallel/test-crypto-keygen-async-rsa.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-async-rsa.js)
+- [parallel/test-crypto-keygen-bit-length.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-bit-length.js)
+- [parallel/test-crypto-keygen-deprecation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-deprecation.js)
+- [parallel/test-crypto-keygen-eddsa.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-eddsa.js)
+- [parallel/test-crypto-keygen-empty-passphrase-no-prompt.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-empty-passphrase-no-prompt.js)
+- [parallel/test-crypto-keygen-invalid-parameter-encoding-dsa.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-invalid-parameter-encoding-dsa.js)
+- [parallel/test-crypto-keygen-invalid-parameter-encoding-ec.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-invalid-parameter-encoding-ec.js)
+- [parallel/test-crypto-keygen-key-object-without-encoding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-key-object-without-encoding.js)
+- [parallel/test-crypto-keygen-no-rsassa-pss-params.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-no-rsassa-pss-params.js)
+- [parallel/test-crypto-keygen-promisify.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-promisify.js)
+- [parallel/test-crypto-keygen-rsa-pss.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-rsa-pss.js)
+- [parallel/test-crypto-keygen-sync.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen-sync.js)
+- [parallel/test-crypto-keygen.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-keygen.js)
+- [parallel/test-crypto-oneshot-hash.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-oneshot-hash.js)
+- [parallel/test-crypto-padding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-padding.js)
+- [parallel/test-crypto-private-decrypt-gh32240.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-private-decrypt-gh32240.js)
+- [parallel/test-crypto-random.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-random.js)
+- [parallel/test-crypto-randomuuid.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-randomuuid.js)
+- [parallel/test-crypto-rsa-dsa.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-rsa-dsa.js)
+- [parallel/test-crypto-sec-level.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-sec-level.js)
+- [parallel/test-crypto-secure-heap.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-secure-heap.js)
+- [parallel/test-crypto-sign-verify.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-sign-verify.js)
+- [parallel/test-crypto-verify-failure.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-verify-failure.js)
+- [parallel/test-crypto-webcrypto-aes-decrypt-tag-too-small.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-webcrypto-aes-decrypt-tag-too-small.js)
+- [parallel/test-crypto-worker-thread.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto-worker-thread.js)
+- [parallel/test-crypto.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-crypto.js)
+- [parallel/test-cwd-enoent-preload.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cwd-enoent-preload.js)
+- [parallel/test-cwd-enoent-repl.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cwd-enoent-repl.js)
+- [parallel/test-cwd-enoent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-cwd-enoent.js)
+- [parallel/test-data-url.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-data-url.js)
+- [parallel/test-datetime-change-notify.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-datetime-change-notify.js)
+- [parallel/test-debug-process.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debug-process.js)
+- [parallel/test-debug-v8-fast-api.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debug-v8-fast-api.js)
+- [parallel/test-debugger-backtrace.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-backtrace.js)
+- [parallel/test-debugger-break.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-break.js)
+- [parallel/test-debugger-breakpoint-exists.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-breakpoint-exists.js)
+- [parallel/test-debugger-clear-breakpoints.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-clear-breakpoints.js)
+- [parallel/test-debugger-exceptions.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-exceptions.js)
+- [parallel/test-debugger-exec.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-exec.js)
+- [parallel/test-debugger-heap-profiler.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-heap-profiler.js)
+- [parallel/test-debugger-list.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-list.js)
+- [parallel/test-debugger-low-level.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-low-level.js)
+- [parallel/test-debugger-object-type-remote-object.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-object-type-remote-object.js)
+- [parallel/test-debugger-pid.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-pid.js)
+- [parallel/test-debugger-preserve-breaks.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-preserve-breaks.js)
+- [parallel/test-debugger-profile-command.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-profile-command.js)
+- [parallel/test-debugger-profile.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-profile.js)
+- [parallel/test-debugger-random-port-with-inspect-port.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-random-port-with-inspect-port.js)
+- [parallel/test-debugger-random-port.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-random-port.js)
+- [parallel/test-debugger-repeat-last.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-repeat-last.js)
+- [parallel/test-debugger-restart-message.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-restart-message.js)
+- [parallel/test-debugger-run-after-quit-restart.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-run-after-quit-restart.js)
+- [parallel/test-debugger-sb-before-load.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-sb-before-load.js)
+- [parallel/test-debugger-scripts.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-scripts.js)
+- [parallel/test-debugger-unavailable-port.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-unavailable-port.js)
+- [parallel/test-debugger-use-strict.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-use-strict.js)
+- [parallel/test-debugger-watch-validation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-watch-validation.js)
+- [parallel/test-debugger-websocket-secret-mismatch.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-debugger-websocket-secret-mismatch.js)
+- [parallel/test-delayed-require.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-delayed-require.js)
+- [parallel/test-destroy-socket-in-lookup.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-destroy-socket-in-lookup.js)
+- [parallel/test-dgram-abort-closed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-abort-closed.js)
+- [parallel/test-dgram-bind-fd-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-bind-fd-error.js)
+- [parallel/test-dgram-bind-fd.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-bind-fd.js)
+- [parallel/test-dgram-bind-socket-close-before-cluster-reply.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-bind-socket-close-before-cluster-reply.js)
+- [parallel/test-dgram-bind-socket-close-before-lookup.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-bind-socket-close-before-lookup.js)
+- [parallel/test-dgram-blocklist.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-blocklist.js)
+- [parallel/test-dgram-cluster-bind-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-cluster-bind-error.js)
+- [parallel/test-dgram-cluster-close-during-bind.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-cluster-close-during-bind.js)
+- [parallel/test-dgram-cluster-close-in-listening.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-cluster-close-in-listening.js)
+- [parallel/test-dgram-connect-send-empty-packet.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-connect-send-empty-packet.js)
+- [parallel/test-dgram-create-socket-handle-fd.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-create-socket-handle-fd.js)
+- [parallel/test-dgram-create-socket-handle.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-create-socket-handle.js)
+- [parallel/test-dgram-deprecation-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-deprecation-error.js)
+- [parallel/test-dgram-exclusive-implicit-bind.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-exclusive-implicit-bind.js)
+- [parallel/test-dgram-membership.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-membership.js)
+- [parallel/test-dgram-multicast-loopback.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-multicast-loopback.js)
+- [parallel/test-dgram-multicast-set-interface.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-multicast-set-interface.js)
+- [parallel/test-dgram-multicast-setTTL.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-multicast-setTTL.js)
+- [parallel/test-dgram-reuseport.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-reuseport.js)
+- [parallel/test-dgram-send-address-types.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-send-address-types.js)
+- [parallel/test-dgram-send-empty-array.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-send-empty-array.js)
+- [parallel/test-dgram-send-empty-buffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-send-empty-buffer.js)
+- [parallel/test-dgram-send-empty-packet.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-send-empty-packet.js)
+- [parallel/test-dgram-send-queue-info.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-send-queue-info.js)
+- [parallel/test-dgram-sendto.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-sendto.js)
+- [parallel/test-dgram-setBroadcast.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-setBroadcast.js)
+- [parallel/test-dgram-setTTL.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-setTTL.js)
+- [parallel/test-dgram-udp6-link-local-address.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-udp6-link-local-address.js)
+- [parallel/test-dgram-unref-in-cluster.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dgram-unref-in-cluster.js)
+- [parallel/test-diagnostic-channel-http-request-created.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostic-channel-http-request-created.js)
+- [parallel/test-diagnostic-channel-http-response-created.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostic-channel-http-response-created.js)
+- [parallel/test-diagnostics-channel-http-server-start.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-http-server-start.js)
+- [parallel/test-diagnostics-channel-http.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-http.js)
+- [parallel/test-diagnostics-channel-memory-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-memory-leak.js)
+- [parallel/test-diagnostics-channel-module-import-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-module-import-error.js)
+- [parallel/test-diagnostics-channel-module-import.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-module-import.js)
+- [parallel/test-diagnostics-channel-module-require-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-module-require-error.js)
+- [parallel/test-diagnostics-channel-module-require.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-module-require.js)
+- [parallel/test-diagnostics-channel-process.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-process.js)
+- [parallel/test-diagnostics-channel-tracing-channel-callback-early-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-tracing-channel-callback-early-exit.js)
+- [parallel/test-diagnostics-channel-tracing-channel-callback-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-tracing-channel-callback-error.js)
+- [parallel/test-diagnostics-channel-tracing-channel-callback.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-tracing-channel-callback.js)
+- [parallel/test-diagnostics-channel-tracing-channel-has-subscribers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-tracing-channel-has-subscribers.js)
+- [parallel/test-diagnostics-channel-tracing-channel-promise-early-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-tracing-channel-promise-early-exit.js)
+- [parallel/test-diagnostics-channel-tracing-channel-promise-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-tracing-channel-promise-error.js)
+- [parallel/test-diagnostics-channel-tracing-channel-promise.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-tracing-channel-promise.js)
+- [parallel/test-diagnostics-channel-tracing-channel-sync-early-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-tracing-channel-sync-early-exit.js)
+- [parallel/test-diagnostics-channel-tracing-channel-sync-run-stores.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-tracing-channel-sync-run-stores.js)
+- [parallel/test-diagnostics-channel-worker-threads.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-diagnostics-channel-worker-threads.js)
+- [parallel/test-directory-import.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-directory-import.js)
+- [parallel/test-disable-proto-delete.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-disable-proto-delete.js)
+- [parallel/test-disable-proto-throw.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-disable-proto-throw.js)
+- [parallel/test-disable-sigusr1.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-disable-sigusr1.js)
+- [parallel/test-dns-cancel-reverse-lookup.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-cancel-reverse-lookup.js)
+- [parallel/test-dns-channel-cancel-promise.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-channel-cancel-promise.js)
+- [parallel/test-dns-channel-cancel.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-channel-cancel.js)
+- [parallel/test-dns-channel-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-channel-timeout.js)
+- [parallel/test-dns-default-order-ipv4.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-default-order-ipv4.js)
+- [parallel/test-dns-default-order-ipv6.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-default-order-ipv6.js)
+- [parallel/test-dns-default-order-verbatim.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-default-order-verbatim.js)
+- [parallel/test-dns-get-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-get-server.js)
+- [parallel/test-dns-lookup-promises-options-deprecated.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-lookup-promises-options-deprecated.js)
+- [parallel/test-dns-lookup-promises.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-lookup-promises.js)
+- [parallel/test-dns-lookupService-promises.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-lookupService-promises.js)
+- [parallel/test-dns-lookupService.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-lookupService.js)
+- [parallel/test-dns-perf_hooks.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-perf_hooks.js)
+- [parallel/test-dns-resolve-promises.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-resolve-promises.js)
+- [parallel/test-dns-resolveany-bad-ancount.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-resolveany-bad-ancount.js)
+- [parallel/test-dns-set-default-order.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-set-default-order.js)
+- [parallel/test-dns-setlocaladdress.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-setlocaladdress.js)
+- [parallel/test-dns-setserver-when-querying.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dns-setserver-when-querying.js)
+- [parallel/test-domain-abort-on-uncaught.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-abort-on-uncaught.js)
+- [parallel/test-domain-add-remove.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-add-remove.js)
+- [parallel/test-domain-async-id-map-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-async-id-map-leak.js)
+- [parallel/test-domain-bind-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-bind-timeout.js)
+- [parallel/test-domain-dep0097.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-dep0097.js)
+- [parallel/test-domain-ee-implicit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-ee-implicit.js)
+- [parallel/test-domain-ee.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-ee.js)
+- [parallel/test-domain-emit-error-handler-stack.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-emit-error-handler-stack.js)
+- [parallel/test-domain-enter-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-enter-exit.js)
+- [parallel/test-domain-error-types.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-error-types.js)
+- [parallel/test-domain-from-timer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-from-timer.js)
+- [parallel/test-domain-fs-enoent-stream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-fs-enoent-stream.js)
+- [parallel/test-domain-http-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-http-server.js)
+- [parallel/test-domain-implicit-binding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-implicit-binding.js)
+- [parallel/test-domain-implicit-fs.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-implicit-fs.js)
+- [parallel/test-domain-intercept.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-intercept.js)
+- [parallel/test-domain-load-after-set-uncaught-exception-capture.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-load-after-set-uncaught-exception-capture.js)
+- [parallel/test-domain-multi.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-multi.js)
+- [parallel/test-domain-multiple-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-multiple-errors.js)
+- [parallel/test-domain-nexttick.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-nexttick.js)
+- [parallel/test-domain-no-error-handler-abort-on-uncaught-0.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-no-error-handler-abort-on-uncaught-0.js)
+- [parallel/test-domain-no-error-handler-abort-on-uncaught-1.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-no-error-handler-abort-on-uncaught-1.js)
+- [parallel/test-domain-no-error-handler-abort-on-uncaught-2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-no-error-handler-abort-on-uncaught-2.js)
+- [parallel/test-domain-no-error-handler-abort-on-uncaught-3.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-no-error-handler-abort-on-uncaught-3.js)
+- [parallel/test-domain-no-error-handler-abort-on-uncaught-4.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-no-error-handler-abort-on-uncaught-4.js)
+- [parallel/test-domain-no-error-handler-abort-on-uncaught-5.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-no-error-handler-abort-on-uncaught-5.js)
+- [parallel/test-domain-no-error-handler-abort-on-uncaught-6.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-no-error-handler-abort-on-uncaught-6.js)
+- [parallel/test-domain-no-error-handler-abort-on-uncaught-7.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-no-error-handler-abort-on-uncaught-7.js)
+- [parallel/test-domain-no-error-handler-abort-on-uncaught-8.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-no-error-handler-abort-on-uncaught-8.js)
+- [parallel/test-domain-no-error-handler-abort-on-uncaught-9.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-no-error-handler-abort-on-uncaught-9.js)
+- [parallel/test-domain-promise.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-promise.js)
+- [parallel/test-domain-run.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-run.js)
+- [parallel/test-domain-safe-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-safe-exit.js)
+- [parallel/test-domain-set-uncaught-exception-capture-after-load.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-set-uncaught-exception-capture-after-load.js)
+- [parallel/test-domain-stack-empty-in-process-uncaughtexception.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-stack-empty-in-process-uncaughtexception.js)
+- [parallel/test-domain-throw-error-then-throw-from-uncaught-exception-handler.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-throw-error-then-throw-from-uncaught-exception-handler.js)
+- [parallel/test-domain-thrown-error-handler-stack.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-thrown-error-handler-stack.js)
+- [parallel/test-domain-timer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-timer.js)
+- [parallel/test-domain-timers-uncaught-exception.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-timers-uncaught-exception.js)
+- [parallel/test-domain-timers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-timers.js)
+- [parallel/test-domain-top-level-error-handler-throw.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-top-level-error-handler-throw.js)
+- [parallel/test-domain-uncaught-exception.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-uncaught-exception.js)
+- [parallel/test-domain-vm-promise-isolation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-vm-promise-isolation.js)
+- [parallel/test-domain-with-abort-on-uncaught-exception.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domain-with-abort-on-uncaught-exception.js)
+- [parallel/test-domexception-cause.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-domexception-cause.js)
+- [parallel/test-dotenv-edge-cases.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dotenv-edge-cases.js)
+- [parallel/test-dotenv-node-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dotenv-node-options.js)
+- [parallel/test-dotenv.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dotenv.js)
+- [parallel/test-double-tls-client.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-double-tls-client.js)
+- [parallel/test-double-tls-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-double-tls-server.js)
+- [parallel/test-dummy-stdio.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-dummy-stdio.js)
+- [parallel/test-emit-after-uncaught-exception.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-emit-after-uncaught-exception.js)
+- [parallel/test-env-var-no-warnings.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-env-var-no-warnings.js)
+- [parallel/test-err-name-deprecation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-err-name-deprecation.js)
+- [parallel/test-error-format-list.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-error-format-list.js)
+- [parallel/test-error-reporting.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-error-reporting.js)
+- [parallel/test-errors-hide-stack-frames.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-errors-hide-stack-frames.js)
+- [parallel/test-errors-systemerror-frozen-intrinsics.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-errors-systemerror-frozen-intrinsics.js)
+- [parallel/test-errors-systemerror-stackTraceLimit-custom-setter.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-errors-systemerror-stackTraceLimit-custom-setter.js)
+- [parallel/test-errors-systemerror-stackTraceLimit-deleted-and-Error-sealed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-errors-systemerror-stackTraceLimit-deleted-and-Error-sealed.js)
+- [parallel/test-errors-systemerror-stackTraceLimit-deleted.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-errors-systemerror-stackTraceLimit-deleted.js)
+- [parallel/test-errors-systemerror-stackTraceLimit-has-only-a-getter.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-errors-systemerror-stackTraceLimit-has-only-a-getter.js)
+- [parallel/test-errors-systemerror-stackTraceLimit-not-writable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-errors-systemerror-stackTraceLimit-not-writable.js)
+- [parallel/test-errors-systemerror.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-errors-systemerror.js)
+- [parallel/test-eslint-alphabetize-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-alphabetize-errors.js)
+- [parallel/test-eslint-alphabetize-primordials.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-alphabetize-primordials.js)
+- [parallel/test-eslint-async-iife-no-unused-result.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-async-iife-no-unused-result.js)
+- [parallel/test-eslint-avoid-prototype-pollution.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-avoid-prototype-pollution.js)
+- [parallel/test-eslint-crypto-check.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-crypto-check.js)
+- [parallel/test-eslint-documented-deprecation-codes.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-documented-deprecation-codes.js)
+- [parallel/test-eslint-documented-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-documented-errors.js)
+- [parallel/test-eslint-duplicate-requires.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-duplicate-requires.js)
+- [parallel/test-eslint-eslint-check.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-eslint-check.js)
+- [parallel/test-eslint-inspector-check.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-inspector-check.js)
+- [parallel/test-eslint-lowercase-name-for-primitive.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-lowercase-name-for-primitive.js)
+- [parallel/test-eslint-no-array-destructuring.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-no-array-destructuring.js)
+- [parallel/test-eslint-no-unescaped-regexp-dot.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-no-unescaped-regexp-dot.js)
+- [parallel/test-eslint-non-ascii-character.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-non-ascii-character.js)
+- [parallel/test-eslint-prefer-assert-iferror.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-prefer-assert-iferror.js)
+- [parallel/test-eslint-prefer-assert-methods.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-prefer-assert-methods.js)
+- [parallel/test-eslint-prefer-common-mustnotcall.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-prefer-common-mustnotcall.js)
+- [parallel/test-eslint-prefer-common-mustsucceed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-prefer-common-mustsucceed.js)
+- [parallel/test-eslint-prefer-optional-chaining.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-prefer-optional-chaining.js)
+- [parallel/test-eslint-prefer-primordials.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-prefer-primordials.js)
+- [parallel/test-eslint-prefer-proto.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-prefer-proto.js)
+- [parallel/test-eslint-prefer-util-format-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-prefer-util-format-errors.js)
+- [parallel/test-eslint-require-common-first.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-require-common-first.js)
+- [parallel/test-eslint-required-modules.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eslint-required-modules.js)
+- [parallel/test-esm-loader-hooks-inspect-brk.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-esm-loader-hooks-inspect-brk.js)
+- [parallel/test-esm-loader-hooks-inspect-wait.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-esm-loader-hooks-inspect-wait.js)
+- [parallel/test-eval-disallow-code-generation-from-strings.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eval-disallow-code-generation-from-strings.js)
+- [parallel/test-event-target.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-event-target.js)
+- [parallel/test-eventemitter-asyncresource.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eventemitter-asyncresource.js)
+- [parallel/test-events-customevent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-events-customevent.js)
+- [parallel/test-events-getmaxlisteners.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-events-getmaxlisteners.js)
+- [parallel/test-events-listener-count-with-listener.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-events-listener-count-with-listener.js)
+- [parallel/test-events-static-geteventlisteners.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-events-static-geteventlisteners.js)
+- [parallel/test-eventsource-disabled.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eventsource-disabled.js)
+- [parallel/test-eventsource.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eventsource.js)
+- [parallel/test-eventtarget-memoryleakwarning.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eventtarget-memoryleakwarning.js)
+- [parallel/test-eventtarget.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-eventtarget.js)
+- [parallel/test-experimental-shared-value-conveyor.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-experimental-shared-value-conveyor.js)
+- [parallel/test-fetch-mock.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fetch-mock.js)
+- [parallel/test-file-validate-mode-flag.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-file-validate-mode-flag.js)
+- [parallel/test-file-write-stream5.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-file-write-stream5.js)
+- [parallel/test-file.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-file.js)
+- [parallel/test-filehandle-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-filehandle-close.js)
+- [parallel/test-filehandle-readablestream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-filehandle-readablestream.js)
+- [parallel/test-finalization-registry-shutdown.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-finalization-registry-shutdown.js)
+- [parallel/test-find-package-json.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-find-package-json.js)
+- [parallel/test-fixed-queue.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fixed-queue.js)
+- [parallel/test-force-repl-with-eval.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-force-repl-with-eval.js)
+- [parallel/test-force-repl.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-force-repl.js)
+- [parallel/test-freelist.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-freelist.js)
+- [parallel/test-freeze-intrinsics.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-freeze-intrinsics.js)
+- [parallel/test-fs-append-file-flush.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-append-file-flush.js)
+- [parallel/test-fs-assert-encoding-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-assert-encoding-error.js)
+- [parallel/test-fs-buffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-buffer.js)
+- [parallel/test-fs-close-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-close-errors.js)
+- [parallel/test-fs-copyfile-respect-permissions.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-copyfile-respect-permissions.js)
+- [parallel/test-fs-error-messages.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-error-messages.js)
+- [parallel/test-fs-exists.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-exists.js)
+- [parallel/test-fs-existssync-false.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-existssync-false.js)
+- [parallel/test-fs-fchmod.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-fchmod.js)
+- [parallel/test-fs-fchown.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-fchown.js)
+- [parallel/test-fs-filehandle-use-after-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-filehandle-use-after-close.js)
+- [parallel/test-fs-filehandle.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-filehandle.js)
+- [parallel/test-fs-fsync.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-fsync.js)
+- [parallel/test-fs-internal-assertencoding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-internal-assertencoding.js)
+- [parallel/test-fs-lchmod.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-lchmod.js)
+- [parallel/test-fs-link.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-link.js)
+- [parallel/test-fs-make-callback.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-make-callback.js)
+- [parallel/test-fs-makeStatsCallback.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-makeStatsCallback.js)
+- [parallel/test-fs-mkdir-mode-mask.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-mkdir-mode-mask.js)
+- [parallel/test-fs-mkdir-recursive-eaccess.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-mkdir-recursive-eaccess.js)
+- [parallel/test-fs-mkdir-rmdir.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-mkdir-rmdir.js)
+- [parallel/test-fs-mkdtemp-prefix-check.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-mkdtemp-prefix-check.js)
+- [parallel/test-fs-mkdtemp.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-mkdtemp.js)
+- [parallel/test-fs-null-bytes.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-null-bytes.js)
+- [parallel/test-fs-operations-with-surrogate-pairs.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-operations-with-surrogate-pairs.js)
+- [parallel/test-fs-options-immutable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-options-immutable.js)
+- [parallel/test-fs-promises-file-handle-aggregate-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-file-handle-aggregate-errors.js)
+- [parallel/test-fs-promises-file-handle-append-file.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-file-handle-append-file.js)
+- [parallel/test-fs-promises-file-handle-chmod.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-file-handle-chmod.js)
+- [parallel/test-fs-promises-file-handle-close-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-file-handle-close-errors.js)
+- [parallel/test-fs-promises-file-handle-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-file-handle-close.js)
+- [parallel/test-fs-promises-file-handle-dispose.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-file-handle-dispose.js)
+- [parallel/test-fs-promises-file-handle-op-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-file-handle-op-errors.js)
+- [parallel/test-fs-promises-file-handle-read-worker.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-file-handle-read-worker.js)
+- [parallel/test-fs-promises-file-handle-read.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-file-handle-read.js)
+- [parallel/test-fs-promises-file-handle-readFile.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-file-handle-readFile.js)
+- [parallel/test-fs-promises-file-handle-stream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-file-handle-stream.js)
+- [parallel/test-fs-promises-file-handle-truncate.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-file-handle-truncate.js)
+- [parallel/test-fs-promises-file-handle-writeFile.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-file-handle-writeFile.js)
+- [parallel/test-fs-promises-readfile.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-readfile.js)
+- [parallel/test-fs-promises-watch.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-watch.js)
+- [parallel/test-fs-promises-write-optional-params.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-write-optional-params.js)
+- [parallel/test-fs-promises-writefile-typedarray.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-writefile-typedarray.js)
+- [parallel/test-fs-promises-writefile.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises-writefile.js)
+- [parallel/test-fs-promises.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promises.js)
+- [parallel/test-fs-promisified.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-promisified.js)
+- [parallel/test-fs-read-empty-buffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-read-empty-buffer.js)
+- [parallel/test-fs-read-file-assert-encoding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-read-file-assert-encoding.js)
+- [parallel/test-fs-read-offset-null.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-read-offset-null.js)
+- [parallel/test-fs-read-optional-params.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-read-optional-params.js)
+- [parallel/test-fs-read-promises-optional-params.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-read-promises-optional-params.js)
+- [parallel/test-fs-read-stream-err.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-read-stream-err.js)
+- [parallel/test-fs-read-stream-file-handle.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-read-stream-file-handle.js)
+- [parallel/test-fs-readSync-optional-params.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-readSync-optional-params.js)
+- [parallel/test-fs-readdir-buffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-readdir-buffer.js)
+- [parallel/test-fs-readdir-pipe.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-readdir-pipe.js)
+- [parallel/test-fs-readdir-recursive.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-readdir-recursive.js)
+- [parallel/test-fs-readdir-types-symlinks.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-readdir-types-symlinks.js)
+- [parallel/test-fs-readdir-types.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-readdir-types.js)
+- [parallel/test-fs-readdir-ucs2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-readdir-ucs2.js)
+- [parallel/test-fs-readfile-eof.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-readfile-eof.js)
+- [parallel/test-fs-readfile-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-readfile-error.js)
+- [parallel/test-fs-readfile-flags.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-readfile-flags.js)
+- [parallel/test-fs-readfile-pipe-large.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-readfile-pipe-large.js)
+- [parallel/test-fs-readfile-pipe.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-readfile-pipe.js)
+- [parallel/test-fs-readfile.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-readfile.js)
+- [parallel/test-fs-readfilesync-pipe-large.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-readfilesync-pipe-large.js)
+- [parallel/test-fs-readlink-type-check.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-readlink-type-check.js)
+- [parallel/test-fs-readv-promises.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-readv-promises.js)
+- [parallel/test-fs-readv-promisify.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-readv-promisify.js)
+- [parallel/test-fs-realpath-buffer-encoding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-realpath-buffer-encoding.js)
+- [parallel/test-fs-realpath-on-substed-drive.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-realpath-on-substed-drive.js)
+- [parallel/test-fs-realpath-pipe.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-realpath-pipe.js)
+- [parallel/test-fs-realpath.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-realpath.js)
+- [parallel/test-fs-rename-type-check.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-rename-type-check.js)
+- [parallel/test-fs-rm.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-rm.js)
+- [parallel/test-fs-stat-bigint.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-stat-bigint.js)
+- [parallel/test-fs-stat.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-stat.js)
+- [parallel/test-fs-statfs.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-statfs.js)
+- [parallel/test-fs-stream-construct-compat-error-write.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-stream-construct-compat-error-write.js)
+- [parallel/test-fs-symlink-buffer-path.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-symlink-buffer-path.js)
+- [parallel/test-fs-symlink-dir-junction.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-symlink-dir-junction.js)
+- [parallel/test-fs-symlink-dir.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-symlink-dir.js)
+- [parallel/test-fs-symlink-longpath.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-symlink-longpath.js)
+- [parallel/test-fs-symlink.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-symlink.js)
+- [parallel/test-fs-sync-fd-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-sync-fd-leak.js)
+- [parallel/test-fs-syncwritestream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-syncwritestream.js)
+- [parallel/test-fs-truncate-fd.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-truncate-fd.js)
+- [parallel/test-fs-truncate-sync.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-truncate-sync.js)
+- [parallel/test-fs-truncate.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-truncate.js)
+- [parallel/test-fs-unlink-type-check.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-unlink-type-check.js)
+- [parallel/test-fs-utils-get-dirents.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-utils-get-dirents.js)
+- [parallel/test-fs-watch-abort-signal.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch-abort-signal.js)
+- [parallel/test-fs-watch-close-when-destroyed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch-close-when-destroyed.js)
+- [parallel/test-fs-watch-encoding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch-encoding.js)
+- [parallel/test-fs-watch-enoent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch-enoent.js)
+- [parallel/test-fs-watch-recursive-add-file-to-existing-subfolder.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch-recursive-add-file-to-existing-subfolder.js)
+- [parallel/test-fs-watch-recursive-add-file-to-new-folder.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch-recursive-add-file-to-new-folder.js)
+- [parallel/test-fs-watch-recursive-assert-leaks.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch-recursive-assert-leaks.js)
+- [parallel/test-fs-watch-recursive-delete.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch-recursive-delete.js)
+- [parallel/test-fs-watch-recursive-linux-parallel-remove.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch-recursive-linux-parallel-remove.js)
+- [parallel/test-fs-watch-recursive-promise.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch-recursive-promise.js)
+- [parallel/test-fs-watch-recursive-symlink.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch-recursive-symlink.js)
+- [parallel/test-fs-watch-recursive-sync-write.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch-recursive-sync-write.js)
+- [parallel/test-fs-watch-recursive-validate.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch-recursive-validate.js)
+- [parallel/test-fs-watch-recursive-watch-file.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch-recursive-watch-file.js)
+- [parallel/test-fs-watch-ref-unref.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch-ref-unref.js)
+- [parallel/test-fs-watch-stop-async.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch-stop-async.js)
+- [parallel/test-fs-watch-stop-sync.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch-stop-sync.js)
+- [parallel/test-fs-watch.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watch.js)
+- [parallel/test-fs-watchfile-bigint.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watchfile-bigint.js)
+- [parallel/test-fs-watchfile-ref-unref.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-watchfile-ref-unref.js)
+- [parallel/test-fs-whatwg-url.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-whatwg-url.js)
+- [parallel/test-fs-write-buffer-large.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-write-buffer-large.js)
+- [parallel/test-fs-write-file-flush.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-write-file-flush.js)
+- [parallel/test-fs-write-file-typedarrays.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-write-file-typedarrays.js)
+- [parallel/test-fs-write-optional-params.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-write-optional-params.js)
+- [parallel/test-fs-write-reuse-callback.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-write-reuse-callback.js)
+- [parallel/test-fs-write-sigxfsz.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-write-sigxfsz.js)
+- [parallel/test-fs-write-stream-change-open.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-write-stream-change-open.js)
+- [parallel/test-fs-write-stream-err.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-write-stream-err.js)
+- [parallel/test-fs-write-stream-file-handle-2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-write-stream-file-handle-2.js)
+- [parallel/test-fs-write-stream-file-handle.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-write-stream-file-handle.js)
+- [parallel/test-fs-write-stream-flush.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-write-stream-flush.js)
+- [parallel/test-fs-write-sync-optional-params.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-write-sync-optional-params.js)
+- [parallel/test-fs-writefile-with-fd.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-writefile-with-fd.js)
+- [parallel/test-fs-writestream-open-write.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-writestream-open-write.js)
+- [parallel/test-fs-writev-promises.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-fs-writev-promises.js)
+- [parallel/test-gc-http-client-connaborted.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-gc-http-client-connaborted.js)
+- [parallel/test-gc-net-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-gc-net-timeout.js)
+- [parallel/test-gc-tls-external-memory.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-gc-tls-external-memory.js)
+- [parallel/test-global-console-exists.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-global-console-exists.js)
+- [parallel/test-global-customevent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-global-customevent.js)
+- [parallel/test-global-setters.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-global-setters.js)
+- [parallel/test-global-webcrypto-classes.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-global-webcrypto-classes.js)
+- [parallel/test-global.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-global.js)
+- [parallel/test-h2-large-header-cause-client-to-hangup.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-h2-large-header-cause-client-to-hangup.js)
+- [parallel/test-h2leak-destroy-session-on-socket-ended.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-h2leak-destroy-session-on-socket-ended.js)
+- [parallel/test-handle-wrap-hasref.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-handle-wrap-hasref.js)
+- [parallel/test-heap-prof-basic.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-heap-prof-basic.js)
+- [parallel/test-heap-prof-dir-absolute.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-heap-prof-dir-absolute.js)
+- [parallel/test-heap-prof-dir-name.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-heap-prof-dir-name.js)
+- [parallel/test-heap-prof-dir-relative.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-heap-prof-dir-relative.js)
+- [parallel/test-heap-prof-exec-argv.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-heap-prof-exec-argv.js)
+- [parallel/test-heap-prof-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-heap-prof-exit.js)
+- [parallel/test-heap-prof-interval.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-heap-prof-interval.js)
+- [parallel/test-heap-prof-invalid-args.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-heap-prof-invalid-args.js)
+- [parallel/test-heap-prof-loop-drained.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-heap-prof-loop-drained.js)
+- [parallel/test-heap-prof-name.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-heap-prof-name.js)
+- [parallel/test-heap-prof-sigint.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-heap-prof-sigint.js)
+- [parallel/test-heapdump-async-hooks-init-promise.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-heapdump-async-hooks-init-promise.js)
+- [parallel/test-heapsnapshot-near-heap-limit-by-api-in-worker.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-heapsnapshot-near-heap-limit-by-api-in-worker.js)
+- [parallel/test-heapsnapshot-near-heap-limit-worker.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-heapsnapshot-near-heap-limit-worker.js)
+- [parallel/test-http-1.0-keep-alive.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-1.0-keep-alive.js)
+- [parallel/test-http-1.0.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-1.0.js)
+- [parallel/test-http-abort-client.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-abort-client.js)
+- [parallel/test-http-abort-queued.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-abort-queued.js)
+- [parallel/test-http-abort-stream-end.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-abort-stream-end.js)
+- [parallel/test-http-aborted.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-aborted.js)
+- [parallel/test-http-after-connect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-after-connect.js)
+- [parallel/test-http-agent-abort-controller.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent-abort-controller.js)
+- [parallel/test-http-agent-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent-close.js)
+- [parallel/test-http-agent-destroyed-socket.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent-destroyed-socket.js)
+- [parallel/test-http-agent-domain-reused-gc.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent-domain-reused-gc.js)
+- [parallel/test-http-agent-error-on-idle.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent-error-on-idle.js)
+- [parallel/test-http-agent-false.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent-false.js)
+- [parallel/test-http-agent-keepalive-delay.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent-keepalive-delay.js)
+- [parallel/test-http-agent-keepalive.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent-keepalive.js)
+- [parallel/test-http-agent-maxsockets-respected.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent-maxsockets-respected.js)
+- [parallel/test-http-agent-maxsockets.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent-maxsockets.js)
+- [parallel/test-http-agent-remove.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent-remove.js)
+- [parallel/test-http-agent-reuse-drained-socket-only.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent-reuse-drained-socket-only.js)
+- [parallel/test-http-agent-scheduling.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent-scheduling.js)
+- [parallel/test-http-agent-timeout-option.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent-timeout-option.js)
+- [parallel/test-http-agent-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent-timeout.js)
+- [parallel/test-http-agent-uninitialized-with-handle.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent-uninitialized-with-handle.js)
+- [parallel/test-http-agent-uninitialized.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent-uninitialized.js)
+- [parallel/test-http-agent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-agent.js)
+- [parallel/test-http-allow-content-length-304.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-allow-content-length-304.js)
+- [parallel/test-http-automatic-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-automatic-headers.js)
+- [parallel/test-http-autoselectfamily.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-autoselectfamily.js)
+- [parallel/test-http-blank-header.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-blank-header.js)
+- [parallel/test-http-byteswritten.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-byteswritten.js)
+- [parallel/test-http-catch-uncaughtexception.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-catch-uncaughtexception.js)
+- [parallel/test-http-chunk-extensions-limit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-chunk-extensions-limit.js)
+- [parallel/test-http-chunk-problem.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-chunk-problem.js)
+- [parallel/test-http-chunked-304.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-chunked-304.js)
+- [parallel/test-http-client-abort-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-abort-destroy.js)
+- [parallel/test-http-client-abort-event.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-abort-event.js)
+- [parallel/test-http-client-abort-keep-alive-destroy-res.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-abort-keep-alive-destroy-res.js)
+- [parallel/test-http-client-abort-keep-alive-queued-tcp-socket.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-abort-keep-alive-queued-tcp-socket.js)
+- [parallel/test-http-client-abort-keep-alive-queued-unix-socket.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-abort-keep-alive-queued-unix-socket.js)
+- [parallel/test-http-client-abort-no-agent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-abort-no-agent.js)
+- [parallel/test-http-client-abort-response-event.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-abort-response-event.js)
+- [parallel/test-http-client-abort-unix-socket.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-abort-unix-socket.js)
+- [parallel/test-http-client-abort.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-abort.js)
+- [parallel/test-http-client-abort3.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-abort3.js)
+- [parallel/test-http-client-aborted-event.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-aborted-event.js)
+- [parallel/test-http-client-agent-abort-close-event.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-agent-abort-close-event.js)
+- [parallel/test-http-client-agent-end-close-event.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-agent-end-close-event.js)
+- [parallel/test-http-client-agent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-agent.js)
+- [parallel/test-http-client-close-event.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-close-event.js)
+- [parallel/test-http-client-error-rawbytes.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-error-rawbytes.js)
+- [parallel/test-http-client-finished.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-finished.js)
+- [parallel/test-http-client-headers-host-array.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-headers-host-array.js)
+- [parallel/test-http-client-immediate-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-immediate-error.js)
+- [parallel/test-http-client-incomingmessage-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-incomingmessage-destroy.js)
+- [parallel/test-http-client-input-function.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-input-function.js)
+- [parallel/test-http-client-insecure-http-parser-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-insecure-http-parser-error.js)
+- [parallel/test-http-client-keep-alive-release-before-finish.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-keep-alive-release-before-finish.js)
+- [parallel/test-http-client-override-global-agent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-override-global-agent.js)
+- [parallel/test-http-client-parse-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-parse-error.js)
+- [parallel/test-http-client-pipe-end.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-pipe-end.js)
+- [parallel/test-http-client-readable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-readable.js)
+- [parallel/test-http-client-reject-chunked-with-content-length.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-reject-chunked-with-content-length.js)
+- [parallel/test-http-client-reject-cr-no-lf.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-reject-cr-no-lf.js)
+- [parallel/test-http-client-req-error-dont-double-fire.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-req-error-dont-double-fire.js)
+- [parallel/test-http-client-request-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-request-options.js)
+- [parallel/test-http-client-res-destroyed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-res-destroyed.js)
+- [parallel/test-http-client-response-domain.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-response-domain.js)
+- [parallel/test-http-client-response-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-response-timeout.js)
+- [parallel/test-http-client-set-timeout-after-end.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-set-timeout-after-end.js)
+- [parallel/test-http-client-set-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-set-timeout.js)
+- [parallel/test-http-client-spurious-aborted.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-spurious-aborted.js)
+- [parallel/test-http-client-timeout-agent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-timeout-agent.js)
+- [parallel/test-http-client-timeout-connect-listener.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-timeout-connect-listener.js)
+- [parallel/test-http-client-timeout-event.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-timeout-event.js)
+- [parallel/test-http-client-timeout-on-connect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-timeout-on-connect.js)
+- [parallel/test-http-client-timeout-option-listeners.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-timeout-option-listeners.js)
+- [parallel/test-http-client-timeout-option-with-agent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-timeout-option-with-agent.js)
+- [parallel/test-http-client-timeout-option.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-timeout-option.js)
+- [parallel/test-http-client-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-timeout.js)
+- [parallel/test-http-client-with-create-connection.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-client-with-create-connection.js)
+- [parallel/test-http-conn-reset.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-conn-reset.js)
+- [parallel/test-http-connect-req-res.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-connect-req-res.js)
+- [parallel/test-http-connect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-connect.js)
+- [parallel/test-http-content-length-mismatch.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-content-length-mismatch.js)
+- [parallel/test-http-content-length.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-content-length.js)
+- [parallel/test-http-createConnection.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-createConnection.js)
+- [parallel/test-http-debug.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-debug.js)
+- [parallel/test-http-default-port.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-default-port.js)
+- [parallel/test-http-destroyed-socket-write2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-destroyed-socket-write2.js)
+- [parallel/test-http-dns-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-dns-error.js)
+- [parallel/test-http-dont-set-default-headers-with-set-header.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-dont-set-default-headers-with-set-header.js)
+- [parallel/test-http-dont-set-default-headers-with-setHost.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-dont-set-default-headers-with-setHost.js)
+- [parallel/test-http-dont-set-default-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-dont-set-default-headers.js)
+- [parallel/test-http-double-content-length.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-double-content-length.js)
+- [parallel/test-http-dummy-characters-smuggling.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-dummy-characters-smuggling.js)
+- [parallel/test-http-dump-req-when-res-ends.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-dump-req-when-res-ends.js)
+- [parallel/test-http-early-hints-invalid-argument.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-early-hints-invalid-argument.js)
+- [parallel/test-http-early-hints.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-early-hints.js)
+- [parallel/test-http-exceptions.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-exceptions.js)
+- [parallel/test-http-expect-continue.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-expect-continue.js)
+- [parallel/test-http-expect-handling.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-expect-handling.js)
+- [parallel/test-http-flush-response-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-flush-response-headers.js)
+- [parallel/test-http-generic-streams.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-generic-streams.js)
+- [parallel/test-http-get-pipeline-problem.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-get-pipeline-problem.js)
+- [parallel/test-http-header-badrequest.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-header-badrequest.js)
+- [parallel/test-http-header-overflow.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-header-overflow.js)
+- [parallel/test-http-host-header-ipv6-fail.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-host-header-ipv6-fail.js)
+- [parallel/test-http-hostname-typechecking.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-hostname-typechecking.js)
+- [parallel/test-http-import-websocket.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-import-websocket.js)
+- [parallel/test-http-incoming-matchKnownFields.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-incoming-matchKnownFields.js)
+- [parallel/test-http-incoming-message-connection-setter.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-incoming-message-connection-setter.js)
+- [parallel/test-http-incoming-message-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-incoming-message-options.js)
+- [parallel/test-http-incoming-pipelined-socket-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-incoming-pipelined-socket-destroy.js)
+- [parallel/test-http-information-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-information-headers.js)
+- [parallel/test-http-information-processing.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-information-processing.js)
+- [parallel/test-http-insecure-parser-per-stream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-insecure-parser-per-stream.js)
+- [parallel/test-http-insecure-parser.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-insecure-parser.js)
+- [parallel/test-http-invalid-te.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-invalid-te.js)
+- [parallel/test-http-invalid-urls.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-invalid-urls.js)
+- [parallel/test-http-keep-alive-close-on-header.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-keep-alive-close-on-header.js)
+- [parallel/test-http-keep-alive-drop-requests.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-keep-alive-drop-requests.js)
+- [parallel/test-http-keep-alive-max-requests.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-keep-alive-max-requests.js)
+- [parallel/test-http-keep-alive-pipeline-max-requests.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-keep-alive-pipeline-max-requests.js)
+- [parallel/test-http-keep-alive-timeout-race-condition.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-keep-alive-timeout-race-condition.js)
+- [parallel/test-http-keep-alive-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-keep-alive-timeout.js)
+- [parallel/test-http-keep-alive.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-keep-alive.js)
+- [parallel/test-http-keepalive-client.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-keepalive-client.js)
+- [parallel/test-http-keepalive-free.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-keepalive-free.js)
+- [parallel/test-http-keepalive-override.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-keepalive-override.js)
+- [parallel/test-http-keepalive-request.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-keepalive-request.js)
+- [parallel/test-http-malformed-request.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-malformed-request.js)
+- [parallel/test-http-many-ended-pipelines.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-many-ended-pipelines.js)
+- [parallel/test-http-max-header-size-per-stream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-max-header-size-per-stream.js)
+- [parallel/test-http-max-header-size.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-max-header-size.js)
+- [parallel/test-http-max-headers-count.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-max-headers-count.js)
+- [parallel/test-http-max-http-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-max-http-headers.js)
+- [parallel/test-http-max-sockets.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-max-sockets.js)
+- [parallel/test-http-missing-header-separator-cr.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-missing-header-separator-cr.js)
+- [parallel/test-http-missing-header-separator-lf.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-missing-header-separator-lf.js)
+- [parallel/test-http-multi-line-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-multi-line-headers.js)
+- [parallel/test-http-multiple-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-multiple-headers.js)
+- [parallel/test-http-mutable-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-mutable-headers.js)
+- [parallel/test-http-no-content-length.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-no-content-length.js)
+- [parallel/test-http-no-read-no-dump.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-no-read-no-dump.js)
+- [parallel/test-http-nodelay.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-nodelay.js)
+- [parallel/test-http-outgoing-buffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-outgoing-buffer.js)
+- [parallel/test-http-outgoing-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-outgoing-destroy.js)
+- [parallel/test-http-outgoing-destroyed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-outgoing-destroyed.js)
+- [parallel/test-http-outgoing-end-cork.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-outgoing-end-cork.js)
+- [parallel/test-http-outgoing-end-multiple.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-outgoing-end-multiple.js)
+- [parallel/test-http-outgoing-finish-writable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-outgoing-finish-writable.js)
+- [parallel/test-http-outgoing-finish.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-outgoing-finish.js)
+- [parallel/test-http-outgoing-first-chunk-singlebyte-encoding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-outgoing-first-chunk-singlebyte-encoding.js)
+- [parallel/test-http-outgoing-message-capture-rejection.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-outgoing-message-capture-rejection.js)
+- [parallel/test-http-outgoing-message-inheritance.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-outgoing-message-inheritance.js)
+- [parallel/test-http-outgoing-message-write-callback.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-outgoing-message-write-callback.js)
+- [parallel/test-http-outgoing-properties.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-outgoing-properties.js)
+- [parallel/test-http-outgoing-proto.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-outgoing-proto.js)
+- [parallel/test-http-outgoing-writableFinished.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-outgoing-writableFinished.js)
+- [parallel/test-http-parser-bad-ref.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-parser-bad-ref.js)
+- [parallel/test-http-parser-finish-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-parser-finish-error.js)
+- [parallel/test-http-parser-freed-before-upgrade.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-parser-freed-before-upgrade.js)
+- [parallel/test-http-parser-lazy-loaded.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-parser-lazy-loaded.js)
+- [parallel/test-http-parser-memory-retention.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-parser-memory-retention.js)
+- [parallel/test-http-parser-multiple-execute.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-parser-multiple-execute.js)
+- [parallel/test-http-parser-timeout-reset.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-parser-timeout-reset.js)
+- [parallel/test-http-parser.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-parser.js)
+- [parallel/test-http-perf_hooks.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-perf_hooks.js)
+- [parallel/test-http-pipeline-assertionerror-finish.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-pipeline-assertionerror-finish.js)
+- [parallel/test-http-pipeline-flood.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-pipeline-flood.js)
+- [parallel/test-http-pipeline-socket-parser-typeerror.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-pipeline-socket-parser-typeerror.js)
+- [parallel/test-http-raw-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-raw-headers.js)
+- [parallel/test-http-remove-connection-header-persists-connection.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-remove-connection-header-persists-connection.js)
+- [parallel/test-http-remove-header-stays-removed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-remove-header-stays-removed.js)
+- [parallel/test-http-req-close-robust-from-tampering.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-req-close-robust-from-tampering.js)
+- [parallel/test-http-req-res-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-req-res-close.js)
+- [parallel/test-http-request-agent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-request-agent.js)
+- [parallel/test-http-request-host-header.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-request-host-header.js)
+- [parallel/test-http-request-join-authorization-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-request-join-authorization-headers.js)
+- [parallel/test-http-request-method-delete-payload.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-request-method-delete-payload.js)
+- [parallel/test-http-request-smuggling-content-length.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-request-smuggling-content-length.js)
+- [parallel/test-http-res-write-after-end.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-res-write-after-end.js)
+- [parallel/test-http-response-add-header-after-sent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-response-add-header-after-sent.js)
+- [parallel/test-http-response-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-response-close.js)
+- [parallel/test-http-response-cork.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-response-cork.js)
+- [parallel/test-http-response-multi-content-length.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-response-multi-content-length.js)
+- [parallel/test-http-response-no-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-response-no-headers.js)
+- [parallel/test-http-response-remove-header-after-sent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-response-remove-header-after-sent.js)
+- [parallel/test-http-response-setheaders.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-response-setheaders.js)
+- [parallel/test-http-response-splitting.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-response-splitting.js)
+- [parallel/test-http-response-status-message.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-response-status-message.js)
+- [parallel/test-http-response-statuscode.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-response-statuscode.js)
+- [parallel/test-http-same-map.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-same-map.js)
+- [parallel/test-http-server-async-dispose.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-async-dispose.js)
+- [parallel/test-http-server-capture-rejections.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-capture-rejections.js)
+- [parallel/test-http-server-clear-timer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-clear-timer.js)
+- [parallel/test-http-server-client-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-client-error.js)
+- [parallel/test-http-server-close-all.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-close-all.js)
+- [parallel/test-http-server-close-destroy-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-close-destroy-timeout.js)
+- [parallel/test-http-server-close-idle-wait-response.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-close-idle-wait-response.js)
+- [parallel/test-http-server-close-idle.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-close-idle.js)
+- [parallel/test-http-server-connection-list-when-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-connection-list-when-close.js)
+- [parallel/test-http-server-connections-checking-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-connections-checking-leak.js)
+- [parallel/test-http-server-consumed-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-consumed-timeout.js)
+- [parallel/test-http-server-de-chunked-trailer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-de-chunked-trailer.js)
+- [parallel/test-http-server-destroy-socket-on-client-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-destroy-socket-on-client-error.js)
+- [parallel/test-http-server-headers-timeout-delayed-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-headers-timeout-delayed-headers.js)
+- [parallel/test-http-server-headers-timeout-interrupted-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-headers-timeout-interrupted-headers.js)
+- [parallel/test-http-server-headers-timeout-keepalive.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-headers-timeout-keepalive.js)
+- [parallel/test-http-server-headers-timeout-pipelining.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-headers-timeout-pipelining.js)
+- [parallel/test-http-server-incomingmessage-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-incomingmessage-destroy.js)
+- [parallel/test-http-server-keep-alive-defaults.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-keep-alive-defaults.js)
+- [parallel/test-http-server-keep-alive-max-requests-null.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-keep-alive-max-requests-null.js)
+- [parallel/test-http-server-keep-alive-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-keep-alive-timeout.js)
+- [parallel/test-http-server-keepalive-end.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-keepalive-end.js)
+- [parallel/test-http-server-keepalive-req-gc.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-keepalive-req-gc.js)
+- [parallel/test-http-server-method.query.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-method.query.js)
+- [parallel/test-http-server-multiheaders.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-multiheaders.js)
+- [parallel/test-http-server-multiheaders2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-multiheaders2.js)
+- [parallel/test-http-server-multiple-client-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-multiple-client-error.js)
+- [parallel/test-http-server-non-utf8-header.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-non-utf8-header.js)
+- [parallel/test-http-server-options-highwatermark.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-options-highwatermark.js)
+- [parallel/test-http-server-options-incoming-message.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-options-incoming-message.js)
+- [parallel/test-http-server-options-server-response.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-options-server-response.js)
+- [parallel/test-http-server-reject-chunked-with-content-length.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-reject-chunked-with-content-length.js)
+- [parallel/test-http-server-reject-cr-no-lf.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-reject-cr-no-lf.js)
+- [parallel/test-http-server-request-timeout-delayed-body.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-request-timeout-delayed-body.js)
+- [parallel/test-http-server-request-timeout-delayed-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-request-timeout-delayed-headers.js)
+- [parallel/test-http-server-request-timeout-interrupted-body.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-request-timeout-interrupted-body.js)
+- [parallel/test-http-server-request-timeout-interrupted-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-request-timeout-interrupted-headers.js)
+- [parallel/test-http-server-request-timeout-keepalive.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-request-timeout-keepalive.js)
+- [parallel/test-http-server-request-timeout-pipelining.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-request-timeout-pipelining.js)
+- [parallel/test-http-server-request-timeout-upgrade.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-request-timeout-upgrade.js)
+- [parallel/test-http-server-response-standalone.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-response-standalone.js)
+- [parallel/test-http-server-stale-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-stale-close.js)
+- [parallel/test-http-server-timeouts-validation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-timeouts-validation.js)
+- [parallel/test-http-server-unconsume-consume.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-unconsume-consume.js)
+- [parallel/test-http-server-unconsume.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server-unconsume.js)
+- [parallel/test-http-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-server.js)
+- [parallel/test-http-set-max-idle-http-parser.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-set-max-idle-http-parser.js)
+- [parallel/test-http-set-timeout-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-set-timeout-server.js)
+- [parallel/test-http-set-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-set-timeout.js)
+- [parallel/test-http-set-trailers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-set-trailers.js)
+- [parallel/test-http-should-keep-alive.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-should-keep-alive.js)
+- [parallel/test-http-socket-encoding-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-socket-encoding-error.js)
+- [parallel/test-http-socket-error-listeners.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-socket-error-listeners.js)
+- [parallel/test-http-status-message.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-status-message.js)
+- [parallel/test-http-sync-write-error-during-continue.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-sync-write-error-during-continue.js)
+- [parallel/test-http-timeout-client-warning.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-timeout-client-warning.js)
+- [parallel/test-http-timeout-overflow.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-timeout-overflow.js)
+- [parallel/test-http-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-timeout.js)
+- [parallel/test-http-transfer-encoding-repeated-chunked.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-transfer-encoding-repeated-chunked.js)
+- [parallel/test-http-transfer-encoding-smuggling.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-transfer-encoding-smuggling.js)
+- [parallel/test-http-unix-socket-keep-alive.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-unix-socket-keep-alive.js)
+- [parallel/test-http-unix-socket.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-unix-socket.js)
+- [parallel/test-http-upgrade-advertise.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-upgrade-advertise.js)
+- [parallel/test-http-upgrade-agent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-upgrade-agent.js)
+- [parallel/test-http-upgrade-binary.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-upgrade-binary.js)
+- [parallel/test-http-upgrade-client.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-upgrade-client.js)
+- [parallel/test-http-upgrade-client2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-upgrade-client2.js)
+- [parallel/test-http-upgrade-reconsume-stream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-upgrade-reconsume-stream.js)
+- [parallel/test-http-upgrade-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-upgrade-server.js)
+- [parallel/test-http-upgrade-server2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-upgrade-server2.js)
+- [parallel/test-http-url.parse-auth-with-header-in-request.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-url.parse-auth-with-header-in-request.js)
+- [parallel/test-http-writable-true-after-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-writable-true-after-close.js)
+- [parallel/test-http-write-callbacks.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-write-callbacks.js)
+- [parallel/test-http-write-head-2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-write-head-2.js)
+- [parallel/test-http-write-head-after-set-header.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-write-head-after-set-header.js)
+- [parallel/test-http-write-head.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-write-head.js)
+- [parallel/test-http-zero-length-write.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http-zero-length-write.js)
+- [parallel/test-http.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http.js)
+- [parallel/test-http2-allow-http1.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-allow-http1.js)
+- [parallel/test-http2-alpn.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-alpn.js)
+- [parallel/test-http2-altsvc.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-altsvc.js)
+- [parallel/test-http2-async-local-storage.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-async-local-storage.js)
+- [parallel/test-http2-autoselect-protocol.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-autoselect-protocol.js)
+- [parallel/test-http2-backpressure.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-backpressure.js)
+- [parallel/test-http2-binding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-binding.js)
+- [parallel/test-http2-buffersize.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-buffersize.js)
+- [parallel/test-http2-byteswritten-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-byteswritten-server.js)
+- [parallel/test-http2-cancel-while-client-reading.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-cancel-while-client-reading.js)
+- [parallel/test-http2-capture-rejection.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-capture-rejection.js)
+- [parallel/test-http2-clean-output.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-clean-output.js)
+- [parallel/test-http2-client-connection-tunnelling.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-connection-tunnelling.js)
+- [parallel/test-http2-client-data-end.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-data-end.js)
+- [parallel/test-http2-client-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-destroy.js)
+- [parallel/test-http2-client-http1-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-http1-server.js)
+- [parallel/test-http2-client-jsstream-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-jsstream-destroy.js)
+- [parallel/test-http2-client-onconnect-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-onconnect-errors.js)
+- [parallel/test-http2-client-port-80.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-port-80.js)
+- [parallel/test-http2-client-priority-before-connect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-priority-before-connect.js)
+- [parallel/test-http2-client-promisify-connect-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-promisify-connect-error.js)
+- [parallel/test-http2-client-promisify-connect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-promisify-connect.js)
+- [parallel/test-http2-client-proxy-over-http2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-proxy-over-http2.js)
+- [parallel/test-http2-client-request-options-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-request-options-errors.js)
+- [parallel/test-http2-client-rststream-before-connect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-rststream-before-connect.js)
+- [parallel/test-http2-client-set-priority.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-set-priority.js)
+- [parallel/test-http2-client-setLocalWindowSize.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-setLocalWindowSize.js)
+- [parallel/test-http2-client-setNextStreamID-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-setNextStreamID-errors.js)
+- [parallel/test-http2-client-settings-before-connect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-settings-before-connect.js)
+- [parallel/test-http2-client-shutdown-before-connect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-shutdown-before-connect.js)
+- [parallel/test-http2-client-socket-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-socket-destroy.js)
+- [parallel/test-http2-client-stream-destroy-before-connect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-stream-destroy-before-connect.js)
+- [parallel/test-http2-client-unescaped-path.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-unescaped-path.js)
+- [parallel/test-http2-client-upload-reject.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-upload-reject.js)
+- [parallel/test-http2-client-upload.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-upload.js)
+- [parallel/test-http2-client-write-before-connect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-write-before-connect.js)
+- [parallel/test-http2-client-write-empty-string.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-client-write-empty-string.js)
+- [parallel/test-http2-close-while-writing.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-close-while-writing.js)
+- [parallel/test-http2-compat-aborted.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-aborted.js)
+- [parallel/test-http2-compat-client-upload-reject.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-client-upload-reject.js)
+- [parallel/test-http2-compat-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-errors.js)
+- [parallel/test-http2-compat-expect-continue-check.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-expect-continue-check.js)
+- [parallel/test-http2-compat-expect-continue.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-expect-continue.js)
+- [parallel/test-http2-compat-method-connect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-method-connect.js)
+- [parallel/test-http2-compat-serverrequest-end.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverrequest-end.js)
+- [parallel/test-http2-compat-serverrequest-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverrequest-headers.js)
+- [parallel/test-http2-compat-serverrequest-host.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverrequest-host.js)
+- [parallel/test-http2-compat-serverrequest-pause.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverrequest-pause.js)
+- [parallel/test-http2-compat-serverrequest-pipe.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverrequest-pipe.js)
+- [parallel/test-http2-compat-serverrequest-settimeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverrequest-settimeout.js)
+- [parallel/test-http2-compat-serverrequest-trailers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverrequest-trailers.js)
+- [parallel/test-http2-compat-serverrequest.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverrequest.js)
+- [parallel/test-http2-compat-serverresponse-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-close.js)
+- [parallel/test-http2-compat-serverresponse-createpushresponse.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-createpushresponse.js)
+- [parallel/test-http2-compat-serverresponse-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-destroy.js)
+- [parallel/test-http2-compat-serverresponse-drain.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-drain.js)
+- [parallel/test-http2-compat-serverresponse-end-after-statuses-without-body.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-end-after-statuses-without-body.js)
+- [parallel/test-http2-compat-serverresponse-end.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-end.js)
+- [parallel/test-http2-compat-serverresponse-finished.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-finished.js)
+- [parallel/test-http2-compat-serverresponse-flushheaders.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-flushheaders.js)
+- [parallel/test-http2-compat-serverresponse-headers-after-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-headers-after-destroy.js)
+- [parallel/test-http2-compat-serverresponse-headers-send-date.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-headers-send-date.js)
+- [parallel/test-http2-compat-serverresponse-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-headers.js)
+- [parallel/test-http2-compat-serverresponse-settimeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-settimeout.js)
+- [parallel/test-http2-compat-serverresponse-statuscode.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-statuscode.js)
+- [parallel/test-http2-compat-serverresponse-statusmessage-property-set.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-statusmessage-property-set.js)
+- [parallel/test-http2-compat-serverresponse-statusmessage-property.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-statusmessage-property.js)
+- [parallel/test-http2-compat-serverresponse-statusmessage.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-statusmessage.js)
+- [parallel/test-http2-compat-serverresponse-trailers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-trailers.js)
+- [parallel/test-http2-compat-serverresponse-write.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-write.js)
+- [parallel/test-http2-compat-serverresponse-writehead-array.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-writehead-array.js)
+- [parallel/test-http2-compat-serverresponse-writehead.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse-writehead.js)
+- [parallel/test-http2-compat-serverresponse.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-serverresponse.js)
+- [parallel/test-http2-compat-short-stream-client-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-short-stream-client-server.js)
+- [parallel/test-http2-compat-socket-destroy-delayed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-socket-destroy-delayed.js)
+- [parallel/test-http2-compat-socket.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-socket.js)
+- [parallel/test-http2-compat-write-early-hints-invalid-argument-type.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-write-early-hints-invalid-argument-type.js)
+- [parallel/test-http2-compat-write-early-hints-invalid-argument-value.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-write-early-hints-invalid-argument-value.js)
+- [parallel/test-http2-compat-write-early-hints.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-write-early-hints.js)
+- [parallel/test-http2-compat-write-head-destroyed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-compat-write-head-destroyed.js)
+- [parallel/test-http2-connect-method-extended-cant-turn-off.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-connect-method-extended-cant-turn-off.js)
+- [parallel/test-http2-connect-method-extended.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-connect-method-extended.js)
+- [parallel/test-http2-connect-method.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-connect-method.js)
+- [parallel/test-http2-connect-tls-with-delay.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-connect-tls-with-delay.js)
+- [parallel/test-http2-connect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-connect.js)
+- [parallel/test-http2-cookies.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-cookies.js)
+- [parallel/test-http2-create-client-connect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-create-client-connect.js)
+- [parallel/test-http2-create-client-secure-session.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-create-client-secure-session.js)
+- [parallel/test-http2-create-client-session.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-create-client-session.js)
+- [parallel/test-http2-createsecureserver-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-createsecureserver-options.js)
+- [parallel/test-http2-createserver-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-createserver-options.js)
+- [parallel/test-http2-createwritereq.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-createwritereq.js)
+- [parallel/test-http2-debug.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-debug.js)
+- [parallel/test-http2-destroy-after-write.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-destroy-after-write.js)
+- [parallel/test-http2-dont-lose-data.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-dont-lose-data.js)
+- [parallel/test-http2-empty-frame-without-eof.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-empty-frame-without-eof.js)
+- [parallel/test-http2-error-order.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-error-order.js)
+- [parallel/test-http2-exceeds-server-trailer-size.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-exceeds-server-trailer-size.js)
+- [parallel/test-http2-forget-closed-streams.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-forget-closed-streams.js)
+- [parallel/test-http2-generic-streams-sendfile.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-generic-streams-sendfile.js)
+- [parallel/test-http2-generic-streams.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-generic-streams.js)
+- [parallel/test-http2-getpackedsettings.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-getpackedsettings.js)
+- [parallel/test-http2-goaway-delayed-request.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-goaway-delayed-request.js)
+- [parallel/test-http2-goaway-opaquedata.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-goaway-opaquedata.js)
+- [parallel/test-http2-head-request.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-head-request.js)
+- [parallel/test-http2-https-fallback-http-server-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-https-fallback-http-server-options.js)
+- [parallel/test-http2-https-fallback.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-https-fallback.js)
+- [parallel/test-http2-info-headers-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-info-headers-errors.js)
+- [parallel/test-http2-info-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-info-headers.js)
+- [parallel/test-http2-invalid-last-stream-id.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-invalid-last-stream-id.js)
+- [parallel/test-http2-invalidargtypes-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-invalidargtypes-errors.js)
+- [parallel/test-http2-invalidheaderfield.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-invalidheaderfield.js)
+- [parallel/test-http2-invalidheaderfields-client.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-invalidheaderfields-client.js)
+- [parallel/test-http2-ip-address-host.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-ip-address-host.js)
+- [parallel/test-http2-large-write-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-large-write-close.js)
+- [parallel/test-http2-large-write-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-large-write-destroy.js)
+- [parallel/test-http2-large-write-multiple-requests.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-large-write-multiple-requests.js)
+- [parallel/test-http2-large-writes-session-memory-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-large-writes-session-memory-leak.js)
+- [parallel/test-http2-malformed-altsvc.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-malformed-altsvc.js)
+- [parallel/test-http2-many-writes-and-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-many-writes-and-destroy.js)
+- [parallel/test-http2-max-concurrent-streams.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-max-concurrent-streams.js)
+- [parallel/test-http2-max-invalid-frames.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-max-invalid-frames.js)
+- [parallel/test-http2-max-session-memory-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-max-session-memory-leak.js)
+- [parallel/test-http2-max-settings.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-max-settings.js)
+- [parallel/test-http2-misbehaving-flow-control-paused.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-misbehaving-flow-control-paused.js)
+- [parallel/test-http2-misbehaving-flow-control.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-misbehaving-flow-control.js)
+- [parallel/test-http2-misbehaving-multiplex.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-misbehaving-multiplex.js)
+- [parallel/test-http2-misc-util.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-misc-util.js)
+- [parallel/test-http2-misused-pseudoheaders.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-misused-pseudoheaders.js)
+- [parallel/test-http2-multi-content-length.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-multi-content-length.js)
+- [parallel/test-http2-multiheaders-raw.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-multiheaders-raw.js)
+- [parallel/test-http2-multiheaders.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-multiheaders.js)
+- [parallel/test-http2-multiplex.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-multiplex.js)
+- [parallel/test-http2-multistream-destroy-on-read-tls.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-multistream-destroy-on-read-tls.js)
+- [parallel/test-http2-no-more-streams.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-no-more-streams.js)
+- [parallel/test-http2-no-wanttrailers-listener.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-no-wanttrailers-listener.js)
+- [parallel/test-http2-onping.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-onping.js)
+- [parallel/test-http2-options-max-headers-block-length.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-options-max-headers-block-length.js)
+- [parallel/test-http2-options-max-headers-exceeds-nghttp2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-options-max-headers-exceeds-nghttp2.js)
+- [parallel/test-http2-options-max-reserved-streams.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-options-max-reserved-streams.js)
+- [parallel/test-http2-options-server-request.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-options-server-request.js)
+- [parallel/test-http2-options-server-response.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-options-server-response.js)
+- [parallel/test-http2-origin.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-origin.js)
+- [parallel/test-http2-pack-end-stream-flag.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-pack-end-stream-flag.js)
+- [parallel/test-http2-padding-aligned.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-padding-aligned.js)
+- [parallel/test-http2-perf_hooks.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-perf_hooks.js)
+- [parallel/test-http2-perform-server-handshake.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-perform-server-handshake.js)
+- [parallel/test-http2-ping-settings-heapdump.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-ping-settings-heapdump.js)
+- [parallel/test-http2-ping-unsolicited-ack.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-ping-unsolicited-ack.js)
+- [parallel/test-http2-ping.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-ping.js)
+- [parallel/test-http2-pipe-named-pipe.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-pipe-named-pipe.js)
+- [parallel/test-http2-pipe.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-pipe.js)
+- [parallel/test-http2-premature-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-premature-close.js)
+- [parallel/test-http2-priority-cycle-.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-priority-cycle-.js)
+- [parallel/test-http2-priority-event.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-priority-event.js)
+- [parallel/test-http2-propagate-session-destroy-code.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-propagate-session-destroy-code.js)
+- [parallel/test-http2-removed-header-stays-removed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-removed-header-stays-removed.js)
+- [parallel/test-http2-request-remove-connect-listener.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-request-remove-connect-listener.js)
+- [parallel/test-http2-res-corked.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-res-corked.js)
+- [parallel/test-http2-res-writable-properties.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-res-writable-properties.js)
+- [parallel/test-http2-reset-flood.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-reset-flood.js)
+- [parallel/test-http2-respond-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-errors.js)
+- [parallel/test-http2-respond-file-304.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-file-304.js)
+- [parallel/test-http2-respond-file-404.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-file-404.js)
+- [parallel/test-http2-respond-file-error-dir.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-file-error-dir.js)
+- [parallel/test-http2-respond-file-error-pipe-offset.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-file-error-pipe-offset.js)
+- [parallel/test-http2-respond-file-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-file-errors.js)
+- [parallel/test-http2-respond-file-fd-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-file-fd-errors.js)
+- [parallel/test-http2-respond-file-fd-invalid.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-file-fd-invalid.js)
+- [parallel/test-http2-respond-file-fd-range.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-file-fd-range.js)
+- [parallel/test-http2-respond-file-fd.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-file-fd.js)
+- [parallel/test-http2-respond-file-filehandle.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-file-filehandle.js)
+- [parallel/test-http2-respond-file-push.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-file-push.js)
+- [parallel/test-http2-respond-file-range.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-file-range.js)
+- [parallel/test-http2-respond-file-with-pipe.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-file-with-pipe.js)
+- [parallel/test-http2-respond-file.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-file.js)
+- [parallel/test-http2-respond-nghttperrors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-nghttperrors.js)
+- [parallel/test-http2-respond-no-data.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-no-data.js)
+- [parallel/test-http2-respond-with-fd-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-with-fd-errors.js)
+- [parallel/test-http2-respond-with-file-connection-abort.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-respond-with-file-connection-abort.js)
+- [parallel/test-http2-response-splitting.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-response-splitting.js)
+- [parallel/test-http2-sensitive-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-sensitive-headers.js)
+- [parallel/test-http2-sent-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-sent-headers.js)
+- [parallel/test-http2-serve-file.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-serve-file.js)
+- [parallel/test-http2-server-async-dispose.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-async-dispose.js)
+- [parallel/test-http2-server-close-callback.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-close-callback.js)
+- [parallel/test-http2-server-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-errors.js)
+- [parallel/test-http2-server-http1-client.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-http1-client.js)
+- [parallel/test-http2-server-push-disabled.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-push-disabled.js)
+- [parallel/test-http2-server-push-stream-errors-args.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-push-stream-errors-args.js)
+- [parallel/test-http2-server-push-stream-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-push-stream-errors.js)
+- [parallel/test-http2-server-push-stream-head.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-push-stream-head.js)
+- [parallel/test-http2-server-push-stream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-push-stream.js)
+- [parallel/test-http2-server-rst-before-respond.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-rst-before-respond.js)
+- [parallel/test-http2-server-rst-stream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-rst-stream.js)
+- [parallel/test-http2-server-session-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-session-destroy.js)
+- [parallel/test-http2-server-sessionerror.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-sessionerror.js)
+- [parallel/test-http2-server-set-header.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-set-header.js)
+- [parallel/test-http2-server-setLocalWindowSize.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-setLocalWindowSize.js)
+- [parallel/test-http2-server-settimeout-no-callback.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-settimeout-no-callback.js)
+- [parallel/test-http2-server-shutdown-before-respond.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-shutdown-before-respond.js)
+- [parallel/test-http2-server-shutdown-options-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-shutdown-options-errors.js)
+- [parallel/test-http2-server-shutdown-redundant.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-shutdown-redundant.js)
+- [parallel/test-http2-server-socket-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-socket-destroy.js)
+- [parallel/test-http2-server-startup.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-startup.js)
+- [parallel/test-http2-server-stream-session-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-stream-session-destroy.js)
+- [parallel/test-http2-server-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-timeout.js)
+- [parallel/test-http2-server-unknown-protocol.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-server-unknown-protocol.js)
+- [parallel/test-http2-session-gc-while-write-scheduled.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-session-gc-while-write-scheduled.js)
+- [parallel/test-http2-session-settings.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-session-settings.js)
+- [parallel/test-http2-session-stream-state.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-session-stream-state.js)
+- [parallel/test-http2-session-unref.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-session-unref.js)
+- [parallel/test-http2-settings-unsolicited-ack.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-settings-unsolicited-ack.js)
+- [parallel/test-http2-short-stream-client-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-short-stream-client-server.js)
+- [parallel/test-http2-single-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-single-headers.js)
+- [parallel/test-http2-socket-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-socket-close.js)
+- [parallel/test-http2-socket-proxy-handler-for-has.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-socket-proxy-handler-for-has.js)
+- [parallel/test-http2-stream-client.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-stream-client.js)
+- [parallel/test-http2-stream-destroy-event-order.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-stream-destroy-event-order.js)
+- [parallel/test-http2-timeouts.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-timeouts.js)
+- [parallel/test-http2-tls-disconnect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-tls-disconnect.js)
+- [parallel/test-http2-too-large-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-too-large-headers.js)
+- [parallel/test-http2-too-many-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-too-many-headers.js)
+- [parallel/test-http2-too-many-settings.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-too-many-settings.js)
+- [parallel/test-http2-too-many-streams.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-too-many-streams.js)
+- [parallel/test-http2-trailers-after-session-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-trailers-after-session-close.js)
+- [parallel/test-http2-trailers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-trailers.js)
+- [parallel/test-http2-unbound-socket-proxy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-unbound-socket-proxy.js)
+- [parallel/test-http2-update-settings.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-update-settings.js)
+- [parallel/test-http2-util-assert-valid-pseudoheader.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-util-assert-valid-pseudoheader.js)
+- [parallel/test-http2-util-asserts.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-util-asserts.js)
+- [parallel/test-http2-util-headers-list.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-util-headers-list.js)
+- [parallel/test-http2-util-nghttp2error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-util-nghttp2error.js)
+- [parallel/test-http2-util-update-options-buffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-util-update-options-buffer.js)
+- [parallel/test-http2-window-size.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-window-size.js)
+- [parallel/test-http2-write-callbacks.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-write-callbacks.js)
+- [parallel/test-http2-write-finishes-after-stream-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-write-finishes-after-stream-destroy.js)
+- [parallel/test-http2-zero-length-header.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-zero-length-header.js)
+- [parallel/test-http2-zero-length-write.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-http2-zero-length-write.js)
+- [parallel/test-https-abortcontroller.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-abortcontroller.js)
+- [parallel/test-https-agent-abort-controller.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-agent-abort-controller.js)
+- [parallel/test-https-agent-additional-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-agent-additional-options.js)
+- [parallel/test-https-agent-constructor.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-agent-constructor.js)
+- [parallel/test-https-agent-create-connection.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-agent-create-connection.js)
+- [parallel/test-https-agent-disable-session-reuse.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-agent-disable-session-reuse.js)
+- [parallel/test-https-agent-getname.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-agent-getname.js)
+- [parallel/test-https-agent-keylog.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-agent-keylog.js)
+- [parallel/test-https-agent-servername.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-agent-servername.js)
+- [parallel/test-https-agent-session-eviction.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-agent-session-eviction.js)
+- [parallel/test-https-agent-session-injection.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-agent-session-injection.js)
+- [parallel/test-https-agent-session-reuse.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-agent-session-reuse.js)
+- [parallel/test-https-agent-sni.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-agent-sni.js)
+- [parallel/test-https-agent-sockets-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-agent-sockets-leak.js)
+- [parallel/test-https-agent-unref-socket.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-agent-unref-socket.js)
+- [parallel/test-https-agent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-agent.js)
+- [parallel/test-https-argument-of-creating.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-argument-of-creating.js)
+- [parallel/test-https-autoselectfamily.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-autoselectfamily.js)
+- [parallel/test-https-byteswritten.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-byteswritten.js)
+- [parallel/test-https-client-checkServerIdentity.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-client-checkServerIdentity.js)
+- [parallel/test-https-client-get-url.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-client-get-url.js)
+- [parallel/test-https-client-override-global-agent.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-client-override-global-agent.js)
+- [parallel/test-https-client-reject.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-client-reject.js)
+- [parallel/test-https-client-resume.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-client-resume.js)
+- [parallel/test-https-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-close.js)
+- [parallel/test-https-connect-address-family.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-connect-address-family.js)
+- [parallel/test-https-drain.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-drain.js)
+- [parallel/test-https-eof-for-eom.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-eof-for-eom.js)
+- [parallel/test-https-host-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-host-headers.js)
+- [parallel/test-https-hwm.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-hwm.js)
+- [parallel/test-https-insecure-parse-per-stream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-insecure-parse-per-stream.js)
+- [parallel/test-https-keep-alive-drop-requests.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-keep-alive-drop-requests.js)
+- [parallel/test-https-max-header-size-per-stream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-max-header-size-per-stream.js)
+- [parallel/test-https-max-headers-count.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-max-headers-count.js)
+- [parallel/test-https-options-boolean-check.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-options-boolean-check.js)
+- [parallel/test-https-pfx.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-pfx.js)
+- [parallel/test-https-request-arguments.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-request-arguments.js)
+- [parallel/test-https-resume-after-renew.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-resume-after-renew.js)
+- [parallel/test-https-selfsigned-no-keycertsign-no-crash.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-selfsigned-no-keycertsign-no-crash.js)
+- [parallel/test-https-server-async-dispose.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-server-async-dispose.js)
+- [parallel/test-https-server-close-all.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-server-close-all.js)
+- [parallel/test-https-server-close-destroy-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-server-close-destroy-timeout.js)
+- [parallel/test-https-server-close-idle.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-server-close-idle.js)
+- [parallel/test-https-server-connections-checking-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-server-connections-checking-leak.js)
+- [parallel/test-https-server-headers-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-server-headers-timeout.js)
+- [parallel/test-https-server-options-incoming-message.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-server-options-incoming-message.js)
+- [parallel/test-https-server-options-server-response.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-server-options-server-response.js)
+- [parallel/test-https-server-request-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-server-request-timeout.js)
+- [parallel/test-https-set-timeout-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-set-timeout-server.js)
+- [parallel/test-https-simple.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-simple.js)
+- [parallel/test-https-socket-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-socket-options.js)
+- [parallel/test-https-strict.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-strict.js)
+- [parallel/test-https-timeout-server-2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-timeout-server-2.js)
+- [parallel/test-https-timeout-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-timeout-server.js)
+- [parallel/test-https-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-timeout.js)
+- [parallel/test-https-truncate.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-truncate.js)
+- [parallel/test-https-unix-socket-self-signed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-https-unix-socket-self-signed.js)
+- [parallel/test-icu-minimum-version.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-icu-minimum-version.js)
+- [parallel/test-inspect-address-in-use.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspect-address-in-use.js)
+- [parallel/test-inspect-async-hook-setup-at-inspect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspect-async-hook-setup-at-inspect.js)
+- [parallel/test-inspect-publish-uid.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspect-publish-uid.js)
+- [parallel/test-inspect-support-for-node_options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspect-support-for-node_options.js)
+- [parallel/test-inspector-already-activated-cli.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-already-activated-cli.js)
+- [parallel/test-inspector-async-call-stack-abort.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-async-call-stack-abort.js)
+- [parallel/test-inspector-async-call-stack.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-async-call-stack.js)
+- [parallel/test-inspector-async-context-brk.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-async-context-brk.js)
+- [parallel/test-inspector-async-hook-after-done.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-async-hook-after-done.js)
+- [parallel/test-inspector-async-hook-setup-at-inspect-brk.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-async-hook-setup-at-inspect-brk.js)
+- [parallel/test-inspector-async-hook-setup-at-signal.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-async-hook-setup-at-signal.js)
+- [parallel/test-inspector-async-stack-traces-promise-then.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-async-stack-traces-promise-then.js)
+- [parallel/test-inspector-async-stack-traces-set-interval.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-async-stack-traces-set-interval.js)
+- [parallel/test-inspector-bindings.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-bindings.js)
+- [parallel/test-inspector-break-e.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-break-e.js)
+- [parallel/test-inspector-break-when-eval.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-break-when-eval.js)
+- [parallel/test-inspector-close-worker.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-close-worker.js)
+- [parallel/test-inspector-connect-main-thread.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-connect-main-thread.js)
+- [parallel/test-inspector-connect-to-main-thread.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-connect-to-main-thread.js)
+- [parallel/test-inspector-console-top-frame.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-console-top-frame.js)
+- [parallel/test-inspector-console.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-console.js)
+- [parallel/test-inspector-contexts.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-contexts.js)
+- [parallel/test-inspector-debug-brk-flag.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-debug-brk-flag.js)
+- [parallel/test-inspector-debug-end.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-debug-end.js)
+- [parallel/test-inspector-emit-protocol-event.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-emit-protocol-event.js)
+- [parallel/test-inspector-enabled.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-enabled.js)
+- [parallel/test-inspector-esm.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-esm.js)
+- [parallel/test-inspector-exception.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-exception.js)
+- [parallel/test-inspector-exit-worker-in-wait-for-connection.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-exit-worker-in-wait-for-connection.js)
+- [parallel/test-inspector-exit-worker-in-wait-for-connection2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-exit-worker-in-wait-for-connection2.js)
+- [parallel/test-inspector-has-idle.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-has-idle.js)
+- [parallel/test-inspector-has-inspector-false.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-has-inspector-false.js)
+- [parallel/test-inspector-heap-allocation-tracker.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-heap-allocation-tracker.js)
+- [parallel/test-inspector-heapdump.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-heapdump.js)
+- [parallel/test-inspector-inspect-brk-node.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-inspect-brk-node.js)
+- [parallel/test-inspector-invalid-args.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-invalid-args.js)
+- [parallel/test-inspector-ip-detection.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-ip-detection.js)
+- [parallel/test-inspector-module.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-module.js)
+- [parallel/test-inspector-multisession-js.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-multisession-js.js)
+- [parallel/test-inspector-multisession-ws.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-multisession-ws.js)
+- [parallel/test-inspector-network-arbitrary-data.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-network-arbitrary-data.js)
+- [parallel/test-inspector-network-fetch.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-network-fetch.js)
+- [parallel/test-inspector-network-http.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-network-http.js)
+- [parallel/test-inspector-not-blocked-on-idle.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-not-blocked-on-idle.js)
+- [parallel/test-inspector-open-coverage.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-open-coverage.js)
+- [parallel/test-inspector-open-port-integer-overflow.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-open-port-integer-overflow.js)
+- [parallel/test-inspector-open.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-open.js)
+- [parallel/test-inspector-overwrite-config.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-overwrite-config.js)
+- [parallel/test-inspector-port-zero-cluster.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-port-zero-cluster.js)
+- [parallel/test-inspector-port-zero.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-port-zero.js)
+- [parallel/test-inspector-promises.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-promises.js)
+- [parallel/test-inspector-reported-host.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-reported-host.js)
+- [parallel/test-inspector-resource-name-to-url.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-resource-name-to-url.js)
+- [parallel/test-inspector-runtime-evaluate-with-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-runtime-evaluate-with-timeout.js)
+- [parallel/test-inspector-scriptparsed-context.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-scriptparsed-context.js)
+- [parallel/test-inspector-stop-profile-after-done.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-stop-profile-after-done.js)
+- [parallel/test-inspector-stress-http.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-stress-http.js)
+- [parallel/test-inspector-strip-types.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-strip-types.js)
+- [parallel/test-inspector-tracing-domain.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-tracing-domain.js)
+- [parallel/test-inspector-vm-global-accessors-getter-sideeffect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-vm-global-accessors-getter-sideeffect.js)
+- [parallel/test-inspector-vm-global-accessors-sideeffects.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-vm-global-accessors-sideeffects.js)
+- [parallel/test-inspector-wait-for-connection.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-wait-for-connection.js)
+- [parallel/test-inspector-waiting-for-disconnect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-waiting-for-disconnect.js)
+- [parallel/test-inspector-workers-flat-list.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector-workers-flat-list.js)
+- [parallel/test-inspector.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-inspector.js)
+- [parallel/test-internal-assert.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-assert.js)
+- [parallel/test-internal-encoding-binding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-encoding-binding.js)
+- [parallel/test-internal-error-original-names.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-error-original-names.js)
+- [parallel/test-internal-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-errors.js)
+- [parallel/test-internal-fs-syncwritestream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-fs-syncwritestream.js)
+- [parallel/test-internal-module-require.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-module-require.js)
+- [parallel/test-internal-module-wrap.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-module-wrap.js)
+- [parallel/test-internal-modules.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-modules.js)
+- [parallel/test-internal-only-binding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-only-binding.js)
+- [parallel/test-internal-process-binding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-process-binding.js)
+- [parallel/test-internal-socket-list-receive.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-socket-list-receive.js)
+- [parallel/test-internal-socket-list-send.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-socket-list-send.js)
+- [parallel/test-internal-util-assertCrypto.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-util-assertCrypto.js)
+- [parallel/test-internal-util-classwrapper.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-util-classwrapper.js)
+- [parallel/test-internal-util-decorate-error-stack.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-util-decorate-error-stack.js)
+- [parallel/test-internal-util-helpers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-util-helpers.js)
+- [parallel/test-internal-util-objects.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-util-objects.js)
+- [parallel/test-internal-util-weakreference.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-util-weakreference.js)
+- [parallel/test-internal-validators-validateoneof.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-validators-validateoneof.js)
+- [parallel/test-internal-validators-validateport.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-validators-validateport.js)
+- [parallel/test-internal-webidl-converttoint.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-internal-webidl-converttoint.js)
+- [parallel/test-intl-v8BreakIterator.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-intl-v8BreakIterator.js)
+- [parallel/test-intl.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-intl.js)
+- [parallel/test-js-stream-call-properties.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-js-stream-call-properties.js)
+- [parallel/test-listen-fd-cluster.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-listen-fd-cluster.js)
+- [parallel/test-listen-fd-ebadf.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-listen-fd-ebadf.js)
+- [parallel/test-listen-fd-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-listen-fd-server.js)
+- [parallel/test-macos-app-sandbox.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-macos-app-sandbox.js)
+- [parallel/test-math-random.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-math-random.js)
+- [parallel/test-messageevent-brandcheck.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-messageevent-brandcheck.js)
+- [parallel/test-messageport-hasref.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-messageport-hasref.js)
+- [parallel/test-messaging-marktransfermode.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-messaging-marktransfermode.js)
+- [parallel/test-mime-api.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-mime-api.js)
+- [parallel/test-mime-whatwg.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-mime-whatwg.js)
+- [parallel/test-module-builtin.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-builtin.js)
+- [parallel/test-module-children.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-children.js)
+- [parallel/test-module-circular-dependency-warning.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-circular-dependency-warning.js)
+- [parallel/test-module-create-require-multibyte.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-create-require-multibyte.js)
+- [parallel/test-module-create-require.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-create-require.js)
+- [parallel/test-module-globalpaths-nodepath.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-globalpaths-nodepath.js)
+- [parallel/test-module-loading-deprecated.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-loading-deprecated.js)
+- [parallel/test-module-loading-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-loading-error.js)
+- [parallel/test-module-loading-globalpaths.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-loading-globalpaths.js)
+- [parallel/test-module-main-extension-lookup.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-main-extension-lookup.js)
+- [parallel/test-module-main-fail.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-main-fail.js)
+- [parallel/test-module-main-preserve-symlinks-fail.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-main-preserve-symlinks-fail.js)
+- [parallel/test-module-parent-deprecation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-parent-deprecation.js)
+- [parallel/test-module-parent-setter-deprecation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-parent-setter-deprecation.js)
+- [parallel/test-module-prototype-mutation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-prototype-mutation.js)
+- [parallel/test-module-run-main-monkey-patch.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-run-main-monkey-patch.js)
+- [parallel/test-module-setsourcemapssupport.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-setsourcemapssupport.js)
+- [parallel/test-module-stat.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-stat.js)
+- [parallel/test-module-strip-types.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-strip-types.js)
+- [parallel/test-module-symlinked-peer-modules.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-symlinked-peer-modules.js)
+- [parallel/test-module-version.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-version.js)
+- [parallel/test-module-wrap.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-wrap.js)
+- [parallel/test-module-wrapper.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-module-wrapper.js)
+- [parallel/test-navigator.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-navigator.js)
+- [parallel/test-net-allow-half-open.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-allow-half-open.js)
+- [parallel/test-net-autoselectfamily-attempt-timeout-cli-option.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-autoselectfamily-attempt-timeout-cli-option.js)
+- [parallel/test-net-autoselectfamily-attempt-timeout-default-value.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-autoselectfamily-attempt-timeout-default-value.js)
+- [parallel/test-net-autoselectfamily-commandline-option.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-autoselectfamily-commandline-option.js)
+- [parallel/test-net-autoselectfamily-default.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-autoselectfamily-default.js)
+- [parallel/test-net-autoselectfamily-ipv4first.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-autoselectfamily-ipv4first.js)
+- [parallel/test-net-binary.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-binary.js)
+- [parallel/test-net-blocklist.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-blocklist.js)
+- [parallel/test-net-bytes-read.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-bytes-read.js)
+- [parallel/test-net-bytes-stats.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-bytes-stats.js)
+- [parallel/test-net-child-process-connect-reset.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-child-process-connect-reset.js)
+- [parallel/test-net-client-bind-twice.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-client-bind-twice.js)
+- [parallel/test-net-connect-abort-controller.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-connect-abort-controller.js)
+- [parallel/test-net-connect-keepalive.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-connect-keepalive.js)
+- [parallel/test-net-connect-memleak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-connect-memleak.js)
+- [parallel/test-net-connect-nodelay.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-connect-nodelay.js)
+- [parallel/test-net-connect-options-allowhalfopen.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-connect-options-allowhalfopen.js)
+- [parallel/test-net-connect-options-invalid.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-connect-options-invalid.js)
+- [parallel/test-net-connect-options-path.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-connect-options-path.js)
+- [parallel/test-net-connect-reset-after-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-connect-reset-after-destroy.js)
+- [parallel/test-net-connect-reset-before-connected.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-connect-reset-before-connected.js)
+- [parallel/test-net-connect-reset-until-connected.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-connect-reset-until-connected.js)
+- [parallel/test-net-connect-reset.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-connect-reset.js)
+- [parallel/test-net-deprecated-setsimultaneousaccepts.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-deprecated-setsimultaneousaccepts.js)
+- [parallel/test-net-end-destroyed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-end-destroyed.js)
+- [parallel/test-net-large-string.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-large-string.js)
+- [parallel/test-net-listen-exclusive-random-ports.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-listen-exclusive-random-ports.js)
+- [parallel/test-net-listen-fd0.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-listen-fd0.js)
+- [parallel/test-net-listen-handle-in-cluster-1.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-listen-handle-in-cluster-1.js)
+- [parallel/test-net-listen-handle-in-cluster-2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-listen-handle-in-cluster-2.js)
+- [parallel/test-net-listen-ipv6only.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-listen-ipv6only.js)
+- [parallel/test-net-listen-twice.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-listen-twice.js)
+- [parallel/test-net-normalize-args.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-normalize-args.js)
+- [parallel/test-net-onread-static-buffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-onread-static-buffer.js)
+- [parallel/test-net-perf_hooks.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-perf_hooks.js)
+- [parallel/test-net-pingpong.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-pingpong.js)
+- [parallel/test-net-pipe-with-long-path.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-pipe-with-long-path.js)
+- [parallel/test-net-reuseport.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-reuseport.js)
+- [parallel/test-net-server-blocklist.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-server-blocklist.js)
+- [parallel/test-net-server-close-before-calling-lookup-callback.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-server-close-before-calling-lookup-callback.js)
+- [parallel/test-net-server-close-before-ipc-response.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-server-close-before-ipc-response.js)
+- [parallel/test-net-server-drop-connections-in-cluster.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-server-drop-connections-in-cluster.js)
+- [parallel/test-net-server-drop-connections.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-server-drop-connections.js)
+- [parallel/test-net-server-keepalive.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-server-keepalive.js)
+- [parallel/test-net-server-listen-handle.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-server-listen-handle.js)
+- [parallel/test-net-server-max-connections-close-makes-more-available.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-server-max-connections-close-makes-more-available.js)
+- [parallel/test-net-server-max-connections.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-server-max-connections.js)
+- [parallel/test-net-server-nodelay.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-server-nodelay.js)
+- [parallel/test-net-server-reset.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-server-reset.js)
+- [parallel/test-net-server-simultaneous-accepts-produce-warning-once.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-server-simultaneous-accepts-produce-warning-once.js)
+- [parallel/test-net-socket-byteswritten.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-socket-byteswritten.js)
+- [parallel/test-net-socket-connect-invalid-autoselectfamilyattempttimeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-socket-connect-invalid-autoselectfamilyattempttimeout.js)
+- [parallel/test-net-socket-constructor.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-socket-constructor.js)
+- [parallel/test-net-socket-local-address.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-socket-local-address.js)
+- [parallel/test-net-socket-reset-send.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-socket-reset-send.js)
+- [parallel/test-net-socket-reset-twice.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-socket-reset-twice.js)
+- [parallel/test-net-stream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-stream.js)
+- [parallel/test-net-throttle.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-throttle.js)
+- [parallel/test-net-write-after-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-write-after-close.js)
+- [parallel/test-net-write-after-end-nt.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-write-after-end-nt.js)
+- [parallel/test-net-write-cb-on-destroy-before-connect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-net-write-cb-on-destroy-before-connect.js)
+- [parallel/test-no-addons-resolution-condition.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-no-addons-resolution-condition.js)
+- [parallel/test-node-run.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-node-run.js)
+- [parallel/test-npm-install.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-npm-install.js)
+- [parallel/test-npm-version.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-npm-version.js)
+- [parallel/test-openssl-ca-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-openssl-ca-options.js)
+- [parallel/test-options-binding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-options-binding.js)
+- [parallel/test-os-checked-function.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-os-checked-function.js)
+- [parallel/test-os-eol.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-os-eol.js)
+- [parallel/test-os-process-priority.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-os-process-priority.js)
+- [parallel/test-os-userinfo-handles-getter-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-os-userinfo-handles-getter-errors.js)
+- [parallel/test-path-glob.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-path-glob.js)
+- [parallel/test-path-posix-relative-on-windows.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-path-posix-relative-on-windows.js)
+- [parallel/test-pending-deprecation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-pending-deprecation.js)
+- [parallel/test-perf-hooks-histogram.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-perf-hooks-histogram.js)
+- [parallel/test-perf-hooks-resourcetiming.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-perf-hooks-resourcetiming.js)
+- [parallel/test-perf-hooks-usertiming.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-perf-hooks-usertiming.js)
+- [parallel/test-perf-hooks-worker-timeorigin.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-perf-hooks-worker-timeorigin.js)
+- [parallel/test-performance-eventlooputil.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-performance-eventlooputil.js)
+- [parallel/test-performance-function-async.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-performance-function-async.js)
+- [parallel/test-performance-function.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-performance-function.js)
+- [parallel/test-performance-gc.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-performance-gc.js)
+- [parallel/test-performance-global.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-performance-global.js)
+- [parallel/test-performance-measure-detail.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-performance-measure-detail.js)
+- [parallel/test-performance-measure.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-performance-measure.js)
+- [parallel/test-performance-nodetiming-uvmetricsinfo.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-performance-nodetiming-uvmetricsinfo.js)
+- [parallel/test-performance-nodetiming.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-performance-nodetiming.js)
+- [parallel/test-performance-resourcetimingbufferfull.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-performance-resourcetimingbufferfull.js)
+- [parallel/test-performance-resourcetimingbuffersize.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-performance-resourcetimingbuffersize.js)
+- [parallel/test-performanceobserver.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-performanceobserver.js)
+- [parallel/test-permission-allow-addons-cli.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-allow-addons-cli.js)
+- [parallel/test-permission-allow-child-process-cli.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-allow-child-process-cli.js)
+- [parallel/test-permission-allow-wasi-cli.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-allow-wasi-cli.js)
+- [parallel/test-permission-allow-worker-cli.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-allow-worker-cli.js)
+- [parallel/test-permission-child-process-cli.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-child-process-cli.js)
+- [parallel/test-permission-dc-worker-threads.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-dc-worker-threads.js)
+- [parallel/test-permission-fs-absolute-path.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-fs-absolute-path.js)
+- [parallel/test-permission-fs-internal-module-stat.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-fs-internal-module-stat.js)
+- [parallel/test-permission-fs-read.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-fs-read.js)
+- [parallel/test-permission-fs-relative-path.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-fs-relative-path.js)
+- [parallel/test-permission-fs-repeat-path.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-fs-repeat-path.js)
+- [parallel/test-permission-fs-require.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-fs-require.js)
+- [parallel/test-permission-fs-supported.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-fs-supported.js)
+- [parallel/test-permission-fs-symlink-relative.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-fs-symlink-relative.js)
+- [parallel/test-permission-fs-symlink-target-write.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-fs-symlink-target-write.js)
+- [parallel/test-permission-fs-symlink.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-fs-symlink.js)
+- [parallel/test-permission-fs-traversal-path.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-fs-traversal-path.js)
+- [parallel/test-permission-fs-wildcard.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-fs-wildcard.js)
+- [parallel/test-permission-fs-windows-path.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-fs-windows-path.js)
+- [parallel/test-permission-fs-write-report.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-fs-write-report.js)
+- [parallel/test-permission-fs-write-v8.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-fs-write-v8.js)
+- [parallel/test-permission-fs-write.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-fs-write.js)
+- [parallel/test-permission-has.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-has.js)
+- [parallel/test-permission-inspector-brk.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-inspector-brk.js)
+- [parallel/test-permission-inspector.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-inspector.js)
+- [parallel/test-permission-no-addons.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-no-addons.js)
+- [parallel/test-permission-processbinding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-processbinding.js)
+- [parallel/test-permission-sqlite-load-extension.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-sqlite-load-extension.js)
+- [parallel/test-permission-warning-flags.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-warning-flags.js)
+- [parallel/test-permission-wasi.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-wasi.js)
+- [parallel/test-permission-worker-threads-cli.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-permission-worker-threads-cli.js)
+- [parallel/test-pipe-abstract-socket-http.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-pipe-abstract-socket-http.js)
+- [parallel/test-pipe-abstract-socket.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-pipe-abstract-socket.js)
+- [parallel/test-pipe-address.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-pipe-address.js)
+- [parallel/test-pipe-file-to-http.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-pipe-file-to-http.js)
+- [parallel/test-pipe-head.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-pipe-head.js)
+- [parallel/test-pipe-outgoing-message-data-emitted-after-ended.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-pipe-outgoing-message-data-emitted-after-ended.js)
+- [parallel/test-pipe-stream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-pipe-stream.js)
+- [parallel/test-pipe-unref.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-pipe-unref.js)
+- [parallel/test-preload-print-process-argv.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-preload-print-process-argv.js)
+- [parallel/test-preload-self-referential.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-preload-self-referential.js)
+- [parallel/test-preload-worker.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-preload-worker.js)
+- [parallel/test-preload.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-preload.js)
+- [parallel/test-primitive-timer-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-primitive-timer-leak.js)
+- [parallel/test-primordials-apply.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-primordials-apply.js)
+- [parallel/test-primordials-promise.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-primordials-promise.js)
+- [parallel/test-primordials-regexp.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-primordials-regexp.js)
+- [parallel/test-priority-queue.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-priority-queue.js)
+- [parallel/test-process-available-memory.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-available-memory.js)
+- [parallel/test-process-beforeexit-throw-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-beforeexit-throw-exit.js)
+- [parallel/test-process-binding-util.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-binding-util.js)
+- [parallel/test-process-chdir-errormessage.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-chdir-errormessage.js)
+- [parallel/test-process-chdir.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-chdir.js)
+- [parallel/test-process-config.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-config.js)
+- [parallel/test-process-constants-noatime.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-constants-noatime.js)
+- [parallel/test-process-constrained-memory.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-constrained-memory.js)
+- [parallel/test-process-cpuUsage.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-cpuUsage.js)
+- [parallel/test-process-default.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-default.js)
+- [parallel/test-process-dlopen-error-message-crash.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-dlopen-error-message-crash.js)
+- [parallel/test-process-emit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-emit.js)
+- [parallel/test-process-env-allowed-flags-are-documented.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-env-allowed-flags-are-documented.js)
+- [parallel/test-process-env-deprecation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-env-deprecation.js)
+- [parallel/test-process-env-ignore-getter-setter.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-env-ignore-getter-setter.js)
+- [parallel/test-process-env-sideeffects.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-env-sideeffects.js)
+- [parallel/test-process-env-symbols.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-env-symbols.js)
+- [parallel/test-process-env.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-env.js)
+- [parallel/test-process-euid-egid.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-euid-egid.js)
+- [parallel/test-process-exception-capture-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-exception-capture-errors.js)
+- [parallel/test-process-exception-capture-should-abort-on-uncaught-setflagsfromstring.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-exception-capture-should-abort-on-uncaught-setflagsfromstring.js)
+- [parallel/test-process-exception-capture-should-abort-on-uncaught.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-exception-capture-should-abort-on-uncaught.js)
+- [parallel/test-process-exception-capture.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-exception-capture.js)
+- [parallel/test-process-exec-argv.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-exec-argv.js)
+- [parallel/test-process-execpath.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-execpath.js)
+- [parallel/test-process-exit-code-validation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-exit-code-validation.js)
+- [parallel/test-process-exit-code.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-exit-code.js)
+- [parallel/test-process-external-stdio-close-spawn.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-external-stdio-close-spawn.js)
+- [parallel/test-process-external-stdio-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-external-stdio-close.js)
+- [parallel/test-process-features.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-features.js)
+- [parallel/test-process-getactivehandles.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-getactivehandles.js)
+- [parallel/test-process-getactiverequests.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-getactiverequests.js)
+- [parallel/test-process-getactiveresources-track-active-handles.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-getactiveresources-track-active-handles.js)
+- [parallel/test-process-getactiveresources-track-active-requests.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-getactiveresources-track-active-requests.js)
+- [parallel/test-process-getactiveresources-track-interval-lifetime.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-getactiveresources-track-interval-lifetime.js)
+- [parallel/test-process-getactiveresources-track-multiple-timers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-getactiveresources-track-multiple-timers.js)
+- [parallel/test-process-getactiveresources-track-timer-lifetime.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-getactiveresources-track-timer-lifetime.js)
+- [parallel/test-process-getactiveresources.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-getactiveresources.js)
+- [parallel/test-process-hrtime.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-hrtime.js)
+- [parallel/test-process-initgroups.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-initgroups.js)
+- [parallel/test-process-kill-null.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-kill-null.js)
+- [parallel/test-process-load-env-file.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-load-env-file.js)
+- [parallel/test-process-prototype.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-prototype.js)
+- [parallel/test-process-raw-debug.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-raw-debug.js)
+- [parallel/test-process-redirect-warnings-env.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-redirect-warnings-env.js)
+- [parallel/test-process-redirect-warnings.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-redirect-warnings.js)
+- [parallel/test-process-ref-unref.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-ref-unref.js)
+- [parallel/test-process-release.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-release.js)
+- [parallel/test-process-remove-all-signal-listeners.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-remove-all-signal-listeners.js)
+- [parallel/test-process-setgroups.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-setgroups.js)
+- [parallel/test-process-setsourcemapsenabled.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-setsourcemapsenabled.js)
+- [parallel/test-process-threadCpuUsage-main-thread.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-threadCpuUsage-main-thread.js)
+- [parallel/test-process-threadCpuUsage-worker-threads.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-threadCpuUsage-worker-threads.js)
+- [parallel/test-process-title-cli.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-title-cli.js)
+- [parallel/test-process-uid-gid.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-uid-gid.js)
+- [parallel/test-process-umask-mask.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-umask-mask.js)
+- [parallel/test-process-umask.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-umask.js)
+- [parallel/test-process-uncaught-exception-monitor.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-uncaught-exception-monitor.js)
+- [parallel/test-process-versions.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-process-versions.js)
+- [parallel/test-promise-hook-create-hook.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promise-hook-create-hook.js)
+- [parallel/test-promise-hook-exceptions.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promise-hook-exceptions.js)
+- [parallel/test-promise-hook-on-after.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promise-hook-on-after.js)
+- [parallel/test-promise-hook-on-before.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promise-hook-on-before.js)
+- [parallel/test-promise-hook-on-init.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promise-hook-on-init.js)
+- [parallel/test-promise-hook-on-resolve.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promise-hook-on-resolve.js)
+- [parallel/test-promise-reject-callback-exception.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promise-reject-callback-exception.js)
+- [parallel/test-promise-swallowed-event.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promise-swallowed-event.js)
+- [parallel/test-promise-unhandled-default.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promise-unhandled-default.js)
+- [parallel/test-promise-unhandled-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promise-unhandled-error.js)
+- [parallel/test-promise-unhandled-flag.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promise-unhandled-flag.js)
+- [parallel/test-promise-unhandled-issue-43655.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promise-unhandled-issue-43655.js)
+- [parallel/test-promise-unhandled-silent-no-hook.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promise-unhandled-silent-no-hook.js)
+- [parallel/test-promise-unhandled-throw.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promise-unhandled-throw.js)
+- [parallel/test-promise-unhandled-warn-no-hook.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promise-unhandled-warn-no-hook.js)
+- [parallel/test-promise-unhandled-warn.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promise-unhandled-warn.js)
+- [parallel/test-promises-unhandled-proxy-rejections.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promises-unhandled-proxy-rejections.js)
+- [parallel/test-promises-unhandled-rejections.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promises-unhandled-rejections.js)
+- [parallel/test-promises-unhandled-symbol-rejections.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promises-unhandled-symbol-rejections.js)
+- [parallel/test-promises-warning-on-unhandled-rejection.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-promises-warning-on-unhandled-rejection.js)
+- [parallel/test-queue-microtask-uncaught-asynchooks.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-queue-microtask-uncaught-asynchooks.js)
+- [parallel/test-queue-microtask.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-queue-microtask.js)
+- [parallel/test-quic-handshake.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-quic-handshake.js)
+- [parallel/test-quic-internal-endpoint-listen-defaults.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-quic-internal-endpoint-listen-defaults.js)
+- [parallel/test-quic-internal-endpoint-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-quic-internal-endpoint-options.js)
+- [parallel/test-quic-internal-endpoint-stats-state.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-quic-internal-endpoint-stats-state.js)
+- [parallel/test-quic-internal-setcallbacks.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-quic-internal-setcallbacks.js)
+- [parallel/test-readable-from-web-enqueue-then-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-readable-from-web-enqueue-then-close.js)
+- [parallel/test-readline-async-iterators-backpressure.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-readline-async-iterators-backpressure.js)
+- [parallel/test-readline-input-onerror.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-readline-input-onerror.js)
+- [parallel/test-readline-interface-no-trailing-newline.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-readline-interface-no-trailing-newline.js)
+- [parallel/test-readline-interface-recursive-writes.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-readline-interface-recursive-writes.js)
+- [parallel/test-readline-promises-interface.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-readline-promises-interface.js)
+- [parallel/test-readline-promises-tab-complete.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-readline-promises-tab-complete.js)
+- [parallel/test-readline-tab-complete.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-readline-tab-complete.js)
+- [parallel/test-release-changelog.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-release-changelog.js)
+- [parallel/test-release-npm.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-release-npm.js)
+- [parallel/test-repl-array-prototype-tempering.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-array-prototype-tempering.js)
+- [parallel/test-repl-autocomplete.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-autocomplete.js)
+- [parallel/test-repl-autolibs.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-autolibs.js)
+- [parallel/test-repl-clear-immediate-crash.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-clear-immediate-crash.js)
+- [parallel/test-repl-cli-eval.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-cli-eval.js)
+- [parallel/test-repl-colors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-colors.js)
+- [parallel/test-repl-context.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-context.js)
+- [parallel/test-repl-definecommand.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-definecommand.js)
+- [parallel/test-repl-domain.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-domain.js)
+- [parallel/test-repl-dynamic-import.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-dynamic-import.js)
+- [parallel/test-repl-editor.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-editor.js)
+- [parallel/test-repl-empty.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-empty.js)
+- [parallel/test-repl-end-emits-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-end-emits-exit.js)
+- [parallel/test-repl-envvars.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-envvars.js)
+- [parallel/test-repl-eval.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-eval.js)
+- [parallel/test-repl-function-definition-edge-case.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-function-definition-edge-case.js)
+- [parallel/test-repl-harmony.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-harmony.js)
+- [parallel/test-repl-history-navigation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-history-navigation.js)
+- [parallel/test-repl-history-perm.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-history-perm.js)
+- [parallel/test-repl-import-referrer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-import-referrer.js)
+- [parallel/test-repl-inspect-defaults.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-inspect-defaults.js)
+- [parallel/test-repl-inspector.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-inspector.js)
+- [parallel/test-repl-let-process.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-let-process.js)
+- [parallel/test-repl-load-multiline-no-trailing-newline.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-load-multiline-no-trailing-newline.js)
+- [parallel/test-repl-load-multiline.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-load-multiline.js)
+- [parallel/test-repl-mode.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-mode.js)
+- [parallel/test-repl-multiline.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-multiline.js)
+- [parallel/test-repl-no-terminal.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-no-terminal.js)
+- [parallel/test-repl-null-thrown.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-null-thrown.js)
+- [parallel/test-repl-null.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-null.js)
+- [parallel/test-repl-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-options.js)
+- [parallel/test-repl-permission-model.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-permission-model.js)
+- [parallel/test-repl-persistent-history.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-persistent-history.js)
+- [parallel/test-repl-preprocess-top-level-await.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-preprocess-top-level-await.js)
+- [parallel/test-repl-pretty-custom-stack.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-pretty-custom-stack.js)
+- [parallel/test-repl-pretty-stack-custom-writer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-pretty-stack-custom-writer.js)
+- [parallel/test-repl-pretty-stack.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-pretty-stack.js)
+- [parallel/test-repl-preview-newlines.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-preview-newlines.js)
+- [parallel/test-repl-preview-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-preview-timeout.js)
+- [parallel/test-repl-preview-without-inspector.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-preview-without-inspector.js)
+- [parallel/test-repl-preview.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-preview.js)
+- [parallel/test-repl-programmatic-history.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-programmatic-history.js)
+- [parallel/test-repl-recoverable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-recoverable.js)
+- [parallel/test-repl-require-after-write.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-require-after-write.js)
+- [parallel/test-repl-require-cache.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-require-cache.js)
+- [parallel/test-repl-require-context.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-require-context.js)
+- [parallel/test-repl-require-self-referential.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-require-self-referential.js)
+- [parallel/test-repl-require.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-require.js)
+- [parallel/test-repl-reset-event.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-reset-event.js)
+- [parallel/test-repl-reverse-search.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-reverse-search.js)
+- [parallel/test-repl-save-load.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-save-load.js)
+- [parallel/test-repl-setprompt.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-setprompt.js)
+- [parallel/test-repl-sigint-nested-eval.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-sigint-nested-eval.js)
+- [parallel/test-repl-sigint.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-sigint.js)
+- [parallel/test-repl-stdin-push-null.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-stdin-push-null.js)
+- [parallel/test-repl-strict-mode-previews.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-strict-mode-previews.js)
+- [parallel/test-repl-syntax-error-handling.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-syntax-error-handling.js)
+- [parallel/test-repl-syntax-error-stack.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-syntax-error-stack.js)
+- [parallel/test-repl-tab-complete-crash.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-tab-complete-crash.js)
+- [parallel/test-repl-tab-complete-import.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-tab-complete-import.js)
+- [parallel/test-repl-tab-complete-nested-repls.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-tab-complete-nested-repls.js)
+- [parallel/test-repl-tab-complete-no-warn.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-tab-complete-no-warn.js)
+- [parallel/test-repl-tab-complete-on-editor-mode.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-tab-complete-on-editor-mode.js)
+- [parallel/test-repl-tab-complete.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-tab-complete.js)
+- [parallel/test-repl-tab.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-tab.js)
+- [parallel/test-repl-throw-null-or-undefined.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-throw-null-or-undefined.js)
+- [parallel/test-repl-top-level-await.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-top-level-await.js)
+- [parallel/test-repl-uncaught-exception-async.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-uncaught-exception-async.js)
+- [parallel/test-repl-uncaught-exception-evalcallback.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-uncaught-exception-evalcallback.js)
+- [parallel/test-repl-uncaught-exception-standalone.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-uncaught-exception-standalone.js)
+- [parallel/test-repl-uncaught-exception.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-uncaught-exception.js)
+- [parallel/test-repl-underscore.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-underscore.js)
+- [parallel/test-repl-unexpected-token-recoverable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-unexpected-token-recoverable.js)
+- [parallel/test-repl-unsafe-array-iteration.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-unsafe-array-iteration.js)
+- [parallel/test-repl-unsupported-option.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-unsupported-option.js)
+- [parallel/test-repl-use-global.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl-use-global.js)
+- [parallel/test-repl.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-repl.js)
+- [parallel/test-require-cache.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-cache.js)
+- [parallel/test-require-delete-array-iterator.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-delete-array-iterator.js)
+- [parallel/test-require-dot.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-dot.js)
+- [parallel/test-require-empty-main.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-empty-main.js)
+- [parallel/test-require-enoent-dir.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-enoent-dir.js)
+- [parallel/test-require-exceptions.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-exceptions.js)
+- [parallel/test-require-extension-over-directory.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-extension-over-directory.js)
+- [parallel/test-require-extensions-main.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-extensions-main.js)
+- [parallel/test-require-extensions-same-filename-as-dir-trailing-slash.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-extensions-same-filename-as-dir-trailing-slash.js)
+- [parallel/test-require-extensions-same-filename-as-dir.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-extensions-same-filename-as-dir.js)
+- [parallel/test-require-invalid-main-no-exports.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-invalid-main-no-exports.js)
+- [parallel/test-require-json.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-json.js)
+- [parallel/test-require-mjs.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-mjs.js)
+- [parallel/test-require-node-prefix.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-node-prefix.js)
+- [parallel/test-require-resolve-invalid-paths.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-resolve-invalid-paths.js)
+- [parallel/test-require-resolve-opts-paths-relative.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-resolve-opts-paths-relative.js)
+- [parallel/test-require-resolve.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-resolve.js)
+- [parallel/test-require-symlink.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-symlink.js)
+- [parallel/test-require-unicode.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-require-unicode.js)
+- [parallel/test-resource-usage.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-resource-usage.js)
+- [parallel/test-runner-aliases.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-aliases.js)
+- [parallel/test-runner-assert.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-assert.js)
+- [parallel/test-runner-cli-concurrency.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-cli-concurrency.js)
+- [parallel/test-runner-cli-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-cli-timeout.js)
+- [parallel/test-runner-cli.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-cli.js)
+- [parallel/test-runner-concurrency.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-concurrency.js)
+- [parallel/test-runner-coverage-source-map.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-coverage-source-map.js)
+- [parallel/test-runner-coverage-thresholds.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-coverage-thresholds.js)
+- [parallel/test-runner-coverage.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-coverage.js)
+- [parallel/test-runner-custom-assertions.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-custom-assertions.js)
+- [parallel/test-runner-enable-source-maps-issue.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-enable-source-maps-issue.js)
+- [parallel/test-runner-error-reporter.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-error-reporter.js)
+- [parallel/test-runner-exit-code.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-exit-code.js)
+- [parallel/test-runner-extraneous-async-activity.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-extraneous-async-activity.js)
+- [parallel/test-runner-filetest-location.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-filetest-location.js)
+- [parallel/test-runner-filter-warning.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-filter-warning.js)
+- [parallel/test-runner-force-exit-failure.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-force-exit-failure.js)
+- [parallel/test-runner-force-exit-flush.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-force-exit-flush.js)
+- [parallel/test-runner-import-no-scheme.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-import-no-scheme.js)
+- [parallel/test-runner-misc.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-misc.js)
+- [parallel/test-runner-mock-timers-date.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-mock-timers-date.js)
+- [parallel/test-runner-mock-timers-scheduler.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-mock-timers-scheduler.js)
+- [parallel/test-runner-mock-timers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-mock-timers.js)
+- [parallel/test-runner-mocking.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-mocking.js)
+- [parallel/test-runner-module-mocking.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-module-mocking.js)
+- [parallel/test-runner-no-isolation-filtering.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-no-isolation-filtering.js)
+- [parallel/test-runner-option-validation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-option-validation.js)
+- [parallel/test-runner-reporters.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-reporters.js)
+- [parallel/test-runner-root-after-with-refed-handles.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-root-after-with-refed-handles.js)
+- [parallel/test-runner-root-duration.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-root-duration.js)
+- [parallel/test-runner-snapshot-file-tests.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-snapshot-file-tests.js)
+- [parallel/test-runner-snapshot-tests.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-snapshot-tests.js)
+- [parallel/test-runner-source-maps-invalid-json.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-source-maps-invalid-json.js)
+- [parallel/test-runner-string-to-regexp.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-string-to-regexp.js)
+- [parallel/test-runner-subtest-after-hook.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-subtest-after-hook.js)
+- [parallel/test-runner-test-filepath.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-test-filepath.js)
+- [parallel/test-runner-test-fullname.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-test-fullname.js)
+- [parallel/test-runner-todo-skip-tests.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-todo-skip-tests.js)
+- [parallel/test-runner-typechecking.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-typechecking.js)
+- [parallel/test-runner-wait-for.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-runner-wait-for.js)
+- [parallel/test-safe-get-env.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-safe-get-env.js)
+- [parallel/test-security-revert-unknown.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-security-revert-unknown.js)
+- [parallel/test-set-http-max-http-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-set-http-max-http-headers.js)
+- [parallel/test-set-incoming-message-header.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-set-incoming-message-header.js)
+- [parallel/test-set-process-debug-port.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-set-process-debug-port.js)
+- [parallel/test-setproctitle.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-setproctitle.js)
+- [parallel/test-shadow-realm-allowed-builtin-modules.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-shadow-realm-allowed-builtin-modules.js)
+- [parallel/test-shadow-realm-custom-loaders.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-shadow-realm-custom-loaders.js)
+- [parallel/test-shadow-realm-gc-module.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-shadow-realm-gc-module.js)
+- [parallel/test-shadow-realm-gc.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-shadow-realm-gc.js)
+- [parallel/test-shadow-realm-globals.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-shadow-realm-globals.js)
+- [parallel/test-shadow-realm-import-value-resolve.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-shadow-realm-import-value-resolve.js)
+- [parallel/test-shadow-realm-module.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-shadow-realm-module.js)
+- [parallel/test-shadow-realm-preload-module.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-shadow-realm-preload-module.js)
+- [parallel/test-shadow-realm-prepare-stack-trace.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-shadow-realm-prepare-stack-trace.js)
+- [parallel/test-shadow-realm.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-shadow-realm.js)
+- [parallel/test-sigint-infinite-loop.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-sigint-infinite-loop.js)
+- [parallel/test-signal-args.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-signal-args.js)
+- [parallel/test-signal-safety.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-signal-safety.js)
+- [parallel/test-signal-unregister.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-signal-unregister.js)
+- [parallel/test-single-executable-blob-config-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-single-executable-blob-config-errors.js)
+- [parallel/test-single-executable-blob-config.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-single-executable-blob-config.js)
+- [parallel/test-snapshot-api.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-api.js)
+- [parallel/test-snapshot-argv1.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-argv1.js)
+- [parallel/test-snapshot-basic.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-basic.js)
+- [parallel/test-snapshot-child-process-sync.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-child-process-sync.js)
+- [parallel/test-snapshot-cjs-main.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-cjs-main.js)
+- [parallel/test-snapshot-config.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-config.js)
+- [parallel/test-snapshot-console.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-console.js)
+- [parallel/test-snapshot-coverage.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-coverage.js)
+- [parallel/test-snapshot-cwd.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-cwd.js)
+- [parallel/test-snapshot-dns-lookup-localhost-promise.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-dns-lookup-localhost-promise.js)
+- [parallel/test-snapshot-dns-lookup-localhost.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-dns-lookup-localhost.js)
+- [parallel/test-snapshot-dns-resolve-localhost-promise.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-dns-resolve-localhost-promise.js)
+- [parallel/test-snapshot-dns-resolve-localhost.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-dns-resolve-localhost.js)
+- [parallel/test-snapshot-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-error.js)
+- [parallel/test-snapshot-eval.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-eval.js)
+- [parallel/test-snapshot-gzip.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-gzip.js)
+- [parallel/test-snapshot-incompatible.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-incompatible.js)
+- [parallel/test-snapshot-namespaced-builtin.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-namespaced-builtin.js)
+- [parallel/test-snapshot-net.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-net.js)
+- [parallel/test-snapshot-reproducible.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-reproducible.js)
+- [parallel/test-snapshot-stack-trace-limit-mutation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-stack-trace-limit-mutation.js)
+- [parallel/test-snapshot-stack-trace-limit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-stack-trace-limit.js)
+- [parallel/test-snapshot-typescript.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-typescript.js)
+- [parallel/test-snapshot-umd.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-umd.js)
+- [parallel/test-snapshot-warning.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-warning.js)
+- [parallel/test-snapshot-weak-reference.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-weak-reference.js)
+- [parallel/test-snapshot-worker.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-snapshot-worker.js)
+- [parallel/test-socket-options-invalid.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-socket-options-invalid.js)
+- [parallel/test-socket-write-after-fin.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-socket-write-after-fin.js)
+- [parallel/test-socket-writes-before-passed-to-tls-socket.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-socket-writes-before-passed-to-tls-socket.js)
+- [parallel/test-socketaddress.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-socketaddress.js)
+- [parallel/test-source-map-api.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-source-map-api.js)
+- [parallel/test-source-map-cjs-require-cache.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-source-map-cjs-require-cache.js)
+- [parallel/test-sqlite-custom-functions.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-sqlite-custom-functions.js)
+- [parallel/test-sqlite-data-types.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-sqlite-data-types.js)
+- [parallel/test-sqlite-database-sync.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-sqlite-database-sync.js)
+- [parallel/test-sqlite-named-parameters.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-sqlite-named-parameters.js)
+- [parallel/test-sqlite-session.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-sqlite-session.js)
+- [parallel/test-sqlite-statement-sync.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-sqlite-statement-sync.js)
+- [parallel/test-sqlite-transactions.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-sqlite-transactions.js)
+- [parallel/test-sqlite-typed-array-and-data-view.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-sqlite-typed-array-and-data-view.js)
+- [parallel/test-sqlite.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-sqlite.js)
+- [parallel/test-stack-size-limit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stack-size-limit.js)
+- [parallel/test-startup-empty-regexp-statics.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-startup-empty-regexp-statics.js)
+- [parallel/test-startup-large-pages.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-startup-large-pages.js)
+- [parallel/test-stdin-child-proc.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stdin-child-proc.js)
+- [parallel/test-stdin-from-file.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stdin-from-file.js)
+- [parallel/test-stdin-pause-resume-sync.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stdin-pause-resume-sync.js)
+- [parallel/test-stdin-pause-resume.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stdin-pause-resume.js)
+- [parallel/test-stdin-resume-pause.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stdin-resume-pause.js)
+- [parallel/test-stdin-script-child.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stdin-script-child.js)
+- [parallel/test-stdio-closed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stdio-closed.js)
+- [parallel/test-stdout-close-catch.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stdout-close-catch.js)
+- [parallel/test-stdout-close-unref.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stdout-close-unref.js)
+- [parallel/test-stdout-to-file.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stdout-to-file.js)
+- [parallel/test-strace-openat-openssl.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-strace-openat-openssl.js)
+- [parallel/test-stream-base-prototype-accessors-enumerability.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-base-prototype-accessors-enumerability.js)
+- [parallel/test-stream-base-typechecking.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-base-typechecking.js)
+- [parallel/test-stream-compose-operator.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-compose-operator.js)
+- [parallel/test-stream-compose.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-compose.js)
+- [parallel/test-stream-consumers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-consumers.js)
+- [parallel/test-stream-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-destroy.js)
+- [parallel/test-stream-drop-take.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-drop-take.js)
+- [parallel/test-stream-duplexpair.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-duplexpair.js)
+- [parallel/test-stream-err-multiple-callback-construction.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-err-multiple-callback-construction.js)
+- [parallel/test-stream-event-names.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-event-names.js)
+- [parallel/test-stream-finished.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-finished.js)
+- [parallel/test-stream-map.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-map.js)
+- [parallel/test-stream-pipe-deadlock.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-pipe-deadlock.js)
+- [parallel/test-stream-pipeline-http2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-pipeline-http2.js)
+- [parallel/test-stream-pipeline-process.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-pipeline-process.js)
+- [parallel/test-stream-pipeline.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-pipeline.js)
+- [parallel/test-stream-preprocess.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-preprocess.js)
+- [parallel/test-stream-promises.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-promises.js)
+- [parallel/test-stream-readable-async-iterators.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-readable-async-iterators.js)
+- [parallel/test-stream-readable-default-encoding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-readable-default-encoding.js)
+- [parallel/test-stream-readable-dispose.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-readable-dispose.js)
+- [parallel/test-stream-readable-from-web-termination.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-readable-from-web-termination.js)
+- [parallel/test-stream-readable-to-web-termination.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-readable-to-web-termination.js)
+- [parallel/test-stream-readable-to-web.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-readable-to-web.js)
+- [parallel/test-stream-set-default-hwm.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-set-default-hwm.js)
+- [parallel/test-stream-typedarray.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-typedarray.js)
+- [parallel/test-stream-wrap-drain.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-wrap-drain.js)
+- [parallel/test-stream-wrap-encoding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-wrap-encoding.js)
+- [parallel/test-stream-wrap.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-wrap.js)
+- [parallel/test-stream-writable-samecb-singletick.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream-writable-samecb-singletick.js)
+- [parallel/test-stream2-httpclient-response-end.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-stream2-httpclient-response-end.js)
+- [parallel/test-string-decoder-end.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-string-decoder-end.js)
+- [parallel/test-string-decoder-fuzz.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-string-decoder-fuzz.js)
+- [parallel/test-structuredClone-global.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-structuredClone-global.js)
+- [parallel/test-sync-io-option.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-sync-io-option.js)
+- [parallel/test-tcp-wrap-connect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tcp-wrap-connect.js)
+- [parallel/test-tcp-wrap-listen.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tcp-wrap-listen.js)
+- [parallel/test-tcp-wrap.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tcp-wrap.js)
+- [parallel/test-tick-processor-version-check.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tick-processor-version-check.js)
+- [parallel/test-timers-active.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-active.js)
+- [parallel/test-timers-destroyed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-destroyed.js)
+- [parallel/test-timers-dispose.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-dispose.js)
+- [parallel/test-timers-enroll-invalid-msecs.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-enroll-invalid-msecs.js)
+- [parallel/test-timers-enroll-second-time.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-enroll-second-time.js)
+- [parallel/test-timers-immediate-promisified.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-immediate-promisified.js)
+- [parallel/test-timers-immediate-queue-throw.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-immediate-queue-throw.js)
+- [parallel/test-timers-immediate-unref-nested-once.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-immediate-unref-nested-once.js)
+- [parallel/test-timers-immediate-unref-simple.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-immediate-unref-simple.js)
+- [parallel/test-timers-immediate-unref.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-immediate-unref.js)
+- [parallel/test-timers-interval-promisified.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-interval-promisified.js)
+- [parallel/test-timers-linked-list.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-linked-list.js)
+- [parallel/test-timers-max-duration-warning.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-max-duration-warning.js)
+- [parallel/test-timers-nan-duration-emit-once-per-process.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-nan-duration-emit-once-per-process.js)
+- [parallel/test-timers-nan-duration-warning-promises.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-nan-duration-warning-promises.js)
+- [parallel/test-timers-nan-duration-warning.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-nan-duration-warning.js)
+- [parallel/test-timers-negative-duration-warning-emit-once-per-process.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-negative-duration-warning-emit-once-per-process.js)
+- [parallel/test-timers-negative-duration-warning.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-negative-duration-warning.js)
+- [parallel/test-timers-nested.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-nested.js)
+- [parallel/test-timers-next-tick.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-next-tick.js)
+- [parallel/test-timers-not-emit-duration-zero.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-not-emit-duration-zero.js)
+- [parallel/test-timers-now.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-now.js)
+- [parallel/test-timers-ordering.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-ordering.js)
+- [parallel/test-timers-process-tampering.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-process-tampering.js)
+- [parallel/test-timers-promises-scheduler.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-promises-scheduler.js)
+- [parallel/test-timers-promises.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-promises.js)
+- [parallel/test-timers-reset-process-domain-on-throw.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-reset-process-domain-on-throw.js)
+- [parallel/test-timers-this.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-this.js)
+- [parallel/test-timers-throw-when-cb-not-function.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-throw-when-cb-not-function.js)
+- [parallel/test-timers-timeout-promisified.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-timeout-promisified.js)
+- [parallel/test-timers-timeout-to-interval.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-timeout-to-interval.js)
+- [parallel/test-timers-to-primitive.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-to-primitive.js)
+- [parallel/test-timers-unenroll-unref-interval.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-unenroll-unref-interval.js)
+- [parallel/test-timers-unref-active.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-unref-active.js)
+- [parallel/test-timers-unref-remove-other-unref-timers-only-one-fires.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-unref-remove-other-unref-timers-only-one-fires.js)
+- [parallel/test-timers-unref-remove-other-unref-timers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-timers-unref-remove-other-unref-timers.js)
+- [parallel/test-tls-0-dns-altname.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-0-dns-altname.js)
+- [parallel/test-tls-add-context.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-add-context.js)
+- [parallel/test-tls-addca.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-addca.js)
+- [parallel/test-tls-alpn-server-client.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-alpn-server-client.js)
+- [parallel/test-tls-async-cb-after-socket-end.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-async-cb-after-socket-end.js)
+- [parallel/test-tls-basic-validations.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-basic-validations.js)
+- [parallel/test-tls-buffersize.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-buffersize.js)
+- [parallel/test-tls-ca-concat.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-ca-concat.js)
+- [parallel/test-tls-canonical-ip.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-canonical-ip.js)
+- [parallel/test-tls-cert-chains-concat.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-cert-chains-concat.js)
+- [parallel/test-tls-cert-chains-in-ca.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-cert-chains-in-ca.js)
+- [parallel/test-tls-cert-ext-encoding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-cert-ext-encoding.js)
+- [parallel/test-tls-cert-regression.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-cert-regression.js)
+- [parallel/test-tls-check-server-identity.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-check-server-identity.js)
+- [parallel/test-tls-cipher-list.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-cipher-list.js)
+- [parallel/test-tls-cli-max-version-1.2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-cli-max-version-1.2.js)
+- [parallel/test-tls-cli-max-version-1.3.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-cli-max-version-1.3.js)
+- [parallel/test-tls-cli-min-max-conflict.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-cli-min-max-conflict.js)
+- [parallel/test-tls-cli-min-version-1.0.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-cli-min-version-1.0.js)
+- [parallel/test-tls-cli-min-version-1.1.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-cli-min-version-1.1.js)
+- [parallel/test-tls-cli-min-version-1.2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-cli-min-version-1.2.js)
+- [parallel/test-tls-cli-min-version-1.3.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-cli-min-version-1.3.js)
+- [parallel/test-tls-client-abort.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-client-abort.js)
+- [parallel/test-tls-client-abort2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-client-abort2.js)
+- [parallel/test-tls-client-allow-partial-trust-chain.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-client-allow-partial-trust-chain.js)
+- [parallel/test-tls-client-auth.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-client-auth.js)
+- [parallel/test-tls-client-default-ciphers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-client-default-ciphers.js)
+- [parallel/test-tls-client-destroy-soon.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-client-destroy-soon.js)
+- [parallel/test-tls-client-getephemeralkeyinfo.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-client-getephemeralkeyinfo.js)
+- [parallel/test-tls-client-mindhsize.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-client-mindhsize.js)
+- [parallel/test-tls-client-reject-12.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-client-reject-12.js)
+- [parallel/test-tls-client-reject.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-client-reject.js)
+- [parallel/test-tls-client-renegotiation-13.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-client-renegotiation-13.js)
+- [parallel/test-tls-client-resume-12.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-client-resume-12.js)
+- [parallel/test-tls-client-resume.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-client-resume.js)
+- [parallel/test-tls-client-verify.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-client-verify.js)
+- [parallel/test-tls-clientcertengine-invalid-arg-type.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-clientcertengine-invalid-arg-type.js)
+- [parallel/test-tls-clientcertengine-unsupported.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-clientcertengine-unsupported.js)
+- [parallel/test-tls-close-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-close-error.js)
+- [parallel/test-tls-close-event-after-write.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-close-event-after-write.js)
+- [parallel/test-tls-close-notify.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-close-notify.js)
+- [parallel/test-tls-cnnic-whitelist.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-cnnic-whitelist.js)
+- [parallel/test-tls-connect-abort-controller.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-connect-abort-controller.js)
+- [parallel/test-tls-connect-address-family.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-connect-address-family.js)
+- [parallel/test-tls-connect-allow-half-open-option.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-connect-allow-half-open-option.js)
+- [parallel/test-tls-connect-given-socket.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-connect-given-socket.js)
+- [parallel/test-tls-connect-hints-option.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-connect-hints-option.js)
+- [parallel/test-tls-connect-hwm-option.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-connect-hwm-option.js)
+- [parallel/test-tls-connect-memleak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-connect-memleak.js)
+- [parallel/test-tls-connect-no-host.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-connect-no-host.js)
+- [parallel/test-tls-connect-pipe.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-connect-pipe.js)
+- [parallel/test-tls-connect-secure-context.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-connect-secure-context.js)
+- [parallel/test-tls-connect-simple.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-connect-simple.js)
+- [parallel/test-tls-connect-stream-writes.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-connect-stream-writes.js)
+- [parallel/test-tls-connect-timeout-option.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-connect-timeout-option.js)
+- [parallel/test-tls-delayed-attach-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-delayed-attach-error.js)
+- [parallel/test-tls-delayed-attach.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-delayed-attach.js)
+- [parallel/test-tls-destroy-stream-12.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-destroy-stream-12.js)
+- [parallel/test-tls-destroy-stream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-destroy-stream.js)
+- [parallel/test-tls-destroy-whilst-write.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-destroy-whilst-write.js)
+- [parallel/test-tls-disable-renegotiation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-disable-renegotiation.js)
+- [parallel/test-tls-econnreset.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-econnreset.js)
+- [parallel/test-tls-empty-sni-context.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-empty-sni-context.js)
+- [parallel/test-tls-enable-keylog-cli.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-enable-keylog-cli.js)
+- [parallel/test-tls-env-bad-extra-ca.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-env-bad-extra-ca.js)
+- [parallel/test-tls-env-extra-ca-with-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-env-extra-ca-with-options.js)
+- [parallel/test-tls-env-extra-ca.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-env-extra-ca.js)
+- [parallel/test-tls-error-servername.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-error-servername.js)
+- [parallel/test-tls-error-stack.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-error-stack.js)
+- [parallel/test-tls-exportkeyingmaterial.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-exportkeyingmaterial.js)
+- [parallel/test-tls-external-accessor.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-external-accessor.js)
+- [parallel/test-tls-fast-writing.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-fast-writing.js)
+- [parallel/test-tls-finished.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-finished.js)
+- [parallel/test-tls-friendly-error-message.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-friendly-error-message.js)
+- [parallel/test-tls-generic-stream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-generic-stream.js)
+- [parallel/test-tls-getcertificate-x509.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-getcertificate-x509.js)
+- [parallel/test-tls-getcipher.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-getcipher.js)
+- [parallel/test-tls-getprotocol.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-getprotocol.js)
+- [parallel/test-tls-handshake-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-handshake-error.js)
+- [parallel/test-tls-handshake-exception.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-handshake-exception.js)
+- [parallel/test-tls-handshake-nohang.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-handshake-nohang.js)
+- [parallel/test-tls-hello-parser-failure.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-hello-parser-failure.js)
+- [parallel/test-tls-honorcipherorder.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-honorcipherorder.js)
+- [parallel/test-tls-inception.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-inception.js)
+- [parallel/test-tls-interleave.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-interleave.js)
+- [parallel/test-tls-invalid-pfx.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-invalid-pfx.js)
+- [parallel/test-tls-invoke-queued.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-invoke-queued.js)
+- [parallel/test-tls-ip-servername-deprecation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-ip-servername-deprecation.js)
+- [parallel/test-tls-js-stream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-js-stream.js)
+- [parallel/test-tls-junk-closes-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-junk-closes-server.js)
+- [parallel/test-tls-junk-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-junk-server.js)
+- [parallel/test-tls-key-mismatch.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-key-mismatch.js)
+- [parallel/test-tls-keyengine-invalid-arg-type.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-keyengine-invalid-arg-type.js)
+- [parallel/test-tls-keyengine-unsupported.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-keyengine-unsupported.js)
+- [parallel/test-tls-keylog-tlsv13.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-keylog-tlsv13.js)
+- [parallel/test-tls-legacy-deprecated.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-legacy-deprecated.js)
+- [parallel/test-tls-legacy-pfx.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-legacy-pfx.js)
+- [parallel/test-tls-max-send-fragment.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-max-send-fragment.js)
+- [parallel/test-tls-min-max-version.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-min-max-version.js)
+- [parallel/test-tls-multi-key.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-multi-key.js)
+- [parallel/test-tls-multi-pfx.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-multi-pfx.js)
+- [parallel/test-tls-multiple-cas-as-string.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-multiple-cas-as-string.js)
+- [parallel/test-tls-net-connect-prefer-path.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-net-connect-prefer-path.js)
+- [parallel/test-tls-net-socket-keepalive-12.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-net-socket-keepalive-12.js)
+- [parallel/test-tls-net-socket-keepalive.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-net-socket-keepalive.js)
+- [parallel/test-tls-no-cert-required.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-no-cert-required.js)
+- [parallel/test-tls-no-rsa-key.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-no-rsa-key.js)
+- [parallel/test-tls-no-sslv23.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-no-sslv23.js)
+- [parallel/test-tls-no-sslv3.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-no-sslv3.js)
+- [parallel/test-tls-on-empty-socket.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-on-empty-socket.js)
+- [parallel/test-tls-onread-static-buffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-onread-static-buffer.js)
+- [parallel/test-tls-options-boolean-check.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-options-boolean-check.js)
+- [parallel/test-tls-over-http-tunnel.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-over-http-tunnel.js)
+- [parallel/test-tls-passphrase.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-passphrase.js)
+- [parallel/test-tls-pause.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-pause.js)
+- [parallel/test-tls-peer-certificate-encoding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-peer-certificate-encoding.js)
+- [parallel/test-tls-peer-certificate-multi-keys.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-peer-certificate-multi-keys.js)
+- [parallel/test-tls-peer-certificate.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-peer-certificate.js)
+- [parallel/test-tls-pfx-authorizationerror.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-pfx-authorizationerror.js)
+- [parallel/test-tls-psk-circuit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-psk-circuit.js)
+- [parallel/test-tls-psk-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-psk-errors.js)
+- [parallel/test-tls-reduced-SECLEVEL-in-cipher.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-reduced-SECLEVEL-in-cipher.js)
+- [parallel/test-tls-reinitialize-listeners.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-reinitialize-listeners.js)
+- [parallel/test-tls-request-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-request-timeout.js)
+- [parallel/test-tls-retain-handle-no-abort.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-retain-handle-no-abort.js)
+- [parallel/test-tls-reuse-host-from-socket.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-reuse-host-from-socket.js)
+- [parallel/test-tls-root-certificates.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-root-certificates.js)
+- [parallel/test-tls-secure-context-usage-order.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-secure-context-usage-order.js)
+- [parallel/test-tls-secure-session.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-secure-session.js)
+- [parallel/test-tls-securepair-fiftharg.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-securepair-fiftharg.js)
+- [parallel/test-tls-securepair-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-securepair-leak.js)
+- [parallel/test-tls-server-capture-rejection.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-server-capture-rejection.js)
+- [parallel/test-tls-server-connection-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-server-connection-server.js)
+- [parallel/test-tls-server-failed-handshake-emits-clienterror.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-server-failed-handshake-emits-clienterror.js)
+- [parallel/test-tls-server-parent-constructor-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-server-parent-constructor-options.js)
+- [parallel/test-tls-server-setkeycert.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-server-setkeycert.js)
+- [parallel/test-tls-server-setoptions-clientcertengine.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-server-setoptions-clientcertengine.js)
+- [parallel/test-tls-set-ciphers-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-set-ciphers-error.js)
+- [parallel/test-tls-set-encoding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-set-encoding.js)
+- [parallel/test-tls-set-secure-context.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-set-secure-context.js)
+- [parallel/test-tls-set-sigalgs.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-set-sigalgs.js)
+- [parallel/test-tls-sni-option.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-sni-option.js)
+- [parallel/test-tls-sni-server-client.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-sni-server-client.js)
+- [parallel/test-tls-sni-servername.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-sni-servername.js)
+- [parallel/test-tls-snicallback-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-snicallback-error.js)
+- [parallel/test-tls-socket-allow-half-open-option.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-socket-allow-half-open-option.js)
+- [parallel/test-tls-socket-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-socket-close.js)
+- [parallel/test-tls-socket-constructor-alpn-options-parsing.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-socket-constructor-alpn-options-parsing.js)
+- [parallel/test-tls-socket-default-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-socket-default-options.js)
+- [parallel/test-tls-socket-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-socket-destroy.js)
+- [parallel/test-tls-socket-failed-handshake-emits-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-socket-failed-handshake-emits-error.js)
+- [parallel/test-tls-socket-snicallback-without-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-socket-snicallback-without-server.js)
+- [parallel/test-tls-startcom-wosign-whitelist.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-startcom-wosign-whitelist.js)
+- [parallel/test-tls-starttls-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-starttls-server.js)
+- [parallel/test-tls-streamwrap-buffersize.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-streamwrap-buffersize.js)
+- [parallel/test-tls-ticket-12.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-ticket-12.js)
+- [parallel/test-tls-ticket-cluster.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-ticket-cluster.js)
+- [parallel/test-tls-ticket-invalid-arg.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-ticket-invalid-arg.js)
+- [parallel/test-tls-ticket.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-ticket.js)
+- [parallel/test-tls-timeout-server-2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-timeout-server-2.js)
+- [parallel/test-tls-timeout-server.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-timeout-server.js)
+- [parallel/test-tls-tlswrap-segfault-2.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-tlswrap-segfault-2.js)
+- [parallel/test-tls-tlswrap-segfault.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-tlswrap-segfault.js)
+- [parallel/test-tls-translate-peer-certificate.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-translate-peer-certificate.js)
+- [parallel/test-tls-use-after-free-regression.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-use-after-free-regression.js)
+- [parallel/test-tls-wrap-econnreset-localaddress.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-wrap-econnreset-localaddress.js)
+- [parallel/test-tls-wrap-econnreset-pipe.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-wrap-econnreset-pipe.js)
+- [parallel/test-tls-wrap-econnreset-socket.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-wrap-econnreset-socket.js)
+- [parallel/test-tls-wrap-econnreset.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-wrap-econnreset.js)
+- [parallel/test-tls-wrap-event-emmiter.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-wrap-event-emmiter.js)
+- [parallel/test-tls-wrap-no-abort.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-wrap-no-abort.js)
+- [parallel/test-tls-wrap-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-wrap-timeout.js)
+- [parallel/test-tls-write-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-write-error.js)
+- [parallel/test-tls-writewrap-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-writewrap-leak.js)
+- [parallel/test-tls-zero-clear-in.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tls-zero-clear-in.js)
+- [parallel/test-tojson-perf_hooks.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tojson-perf_hooks.js)
+- [parallel/test-trace-env-stack.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-env-stack.js)
+- [parallel/test-trace-env.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-env.js)
+- [parallel/test-trace-events-all.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-all.js)
+- [parallel/test-trace-events-api-worker-disabled.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-api-worker-disabled.js)
+- [parallel/test-trace-events-api.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-api.js)
+- [parallel/test-trace-events-async-hooks.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-async-hooks.js)
+- [parallel/test-trace-events-binding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-binding.js)
+- [parallel/test-trace-events-bootstrap.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-bootstrap.js)
+- [parallel/test-trace-events-category-used.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-category-used.js)
+- [parallel/test-trace-events-console.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-console.js)
+- [parallel/test-trace-events-dynamic-enable-workers-disabled.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-dynamic-enable-workers-disabled.js)
+- [parallel/test-trace-events-dynamic-enable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-dynamic-enable.js)
+- [parallel/test-trace-events-environment.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-environment.js)
+- [parallel/test-trace-events-file-pattern.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-file-pattern.js)
+- [parallel/test-trace-events-fs-async.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-fs-async.js)
+- [parallel/test-trace-events-fs-sync.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-fs-sync.js)
+- [parallel/test-trace-events-get-category-enabled-buffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-get-category-enabled-buffer.js)
+- [parallel/test-trace-events-http.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-http.js)
+- [parallel/test-trace-events-metadata.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-metadata.js)
+- [parallel/test-trace-events-net-abstract-socket.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-net-abstract-socket.js)
+- [parallel/test-trace-events-net.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-net.js)
+- [parallel/test-trace-events-none.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-none.js)
+- [parallel/test-trace-events-process-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-process-exit.js)
+- [parallel/test-trace-events-promises.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-promises.js)
+- [parallel/test-trace-events-threadpool.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-threadpool.js)
+- [parallel/test-trace-events-v8.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-v8.js)
+- [parallel/test-trace-events-vm.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-vm.js)
+- [parallel/test-trace-events-worker-metadata-with-name.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-worker-metadata-with-name.js)
+- [parallel/test-trace-events-worker-metadata.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-events-worker-metadata.js)
+- [parallel/test-trace-exit-stack-limit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-exit-stack-limit.js)
+- [parallel/test-trace-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-trace-exit.js)
+- [parallel/test-tracing-no-crash.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tracing-no-crash.js)
+- [parallel/test-tty-backwards-api.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tty-backwards-api.js)
+- [parallel/test-tty-stdin-pipe.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-tty-stdin-pipe.js)
+- [parallel/test-ttywrap-stack.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-ttywrap-stack.js)
+- [parallel/test-unhandled-exception-rethrow-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-unhandled-exception-rethrow-error.js)
+- [parallel/test-unhandled-exception-with-worker-inuse.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-unhandled-exception-with-worker-inuse.js)
+- [parallel/test-unicode-node-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-unicode-node-options.js)
+- [parallel/test-url-is-url-internal.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-url-is-url-internal.js)
+- [parallel/test-url-parse-format.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-url-parse-format.js)
+- [parallel/test-url-revokeobjecturl.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-url-revokeobjecturl.js)
+- [parallel/test-urlpattern-invalidthis.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-urlpattern-invalidthis.js)
+- [parallel/test-urlpattern-types.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-urlpattern-types.js)
+- [parallel/test-urlpattern.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-urlpattern.js)
+- [parallel/test-util-callbackify.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-callbackify.js)
+- [parallel/test-util-emit-experimental-warning.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-emit-experimental-warning.js)
+- [parallel/test-util-getcallsite.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-getcallsite.js)
+- [parallel/test-util-getcallsites.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-getcallsites.js)
+- [parallel/test-util-internal.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-internal.js)
+- [parallel/test-util-parse-env.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-parse-env.js)
+- [parallel/test-util-sigint-watchdog.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-sigint-watchdog.js)
+- [parallel/test-util-sleep.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-sleep.js)
+- [parallel/test-util-stripvtcontrolcharacters.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-stripvtcontrolcharacters.js)
+- [parallel/test-util-styletext.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-styletext.js)
+- [parallel/test-util-text-decoder.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-text-decoder.js)
+- [parallel/test-uv-errmap.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-uv-errmap.js)
+- [parallel/test-uv-errno.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-uv-errno.js)
+- [parallel/test-v8-collect-gc-profile-exit-before-stop.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-v8-collect-gc-profile-exit-before-stop.js)
+- [parallel/test-v8-collect-gc-profile-in-worker.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-v8-collect-gc-profile-in-worker.js)
+- [parallel/test-v8-collect-gc-profile.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-v8-collect-gc-profile.js)
+- [parallel/test-v8-flag-type-check.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-v8-flag-type-check.js)
+- [parallel/test-v8-flags.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-v8-flags.js)
+- [parallel/test-v8-getheapsnapshot-twice.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-v8-getheapsnapshot-twice.js)
+- [parallel/test-v8-query-objects.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-v8-query-objects.js)
+- [parallel/test-v8-serialize-leak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-v8-serialize-leak.js)
+- [parallel/test-v8-startup-snapshot-api.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-v8-startup-snapshot-api.js)
+- [parallel/test-v8-stats.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-v8-stats.js)
+- [parallel/test-v8-version-tag.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-v8-version-tag.js)
+- [parallel/test-validators.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-validators.js)
+- [parallel/test-vfs.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vfs.js)
+- [parallel/test-vm-api-handles-getter-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-api-handles-getter-errors.js)
+- [parallel/test-vm-basic.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-basic.js)
+- [parallel/test-vm-cached-data.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-cached-data.js)
+- [parallel/test-vm-context-dont-contextify.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-context-dont-contextify.js)
+- [parallel/test-vm-context.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-context.js)
+- [parallel/test-vm-dynamic-import-callback-missing-flag.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-dynamic-import-callback-missing-flag.js)
+- [parallel/test-vm-global-configurable-properties.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-global-configurable-properties.js)
+- [parallel/test-vm-global-get-own.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-global-get-own.js)
+- [parallel/test-vm-global-non-writable-properties.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-global-non-writable-properties.js)
+- [parallel/test-vm-global-property-enumerator.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-global-property-enumerator.js)
+- [parallel/test-vm-global-property-interceptors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-global-property-interceptors.js)
+- [parallel/test-vm-global-property-prototype.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-global-property-prototype.js)
+- [parallel/test-vm-measure-memory-lazy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-measure-memory-lazy.js)
+- [parallel/test-vm-measure-memory-multi-context.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-measure-memory-multi-context.js)
+- [parallel/test-vm-measure-memory.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-measure-memory.js)
+- [parallel/test-vm-module-basic.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-module-basic.js)
+- [parallel/test-vm-module-cached-data.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-module-cached-data.js)
+- [parallel/test-vm-module-dynamic-import.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-module-dynamic-import.js)
+- [parallel/test-vm-module-dynamic-namespace.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-module-dynamic-namespace.js)
+- [parallel/test-vm-module-errors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-module-errors.js)
+- [parallel/test-vm-module-import-meta.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-module-import-meta.js)
+- [parallel/test-vm-module-link.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-module-link.js)
+- [parallel/test-vm-module-reevaluate.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-module-reevaluate.js)
+- [parallel/test-vm-module-synthetic.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-module-synthetic.js)
+- [parallel/test-vm-no-dynamic-import-callback.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-no-dynamic-import-callback.js)
+- [parallel/test-vm-ownkeys.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-ownkeys.js)
+- [parallel/test-vm-ownpropertynames.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-ownpropertynames.js)
+- [parallel/test-vm-ownpropertysymbols.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-ownpropertysymbols.js)
+- [parallel/test-vm-run-in-new-context.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-run-in-new-context.js)
+- [parallel/test-vm-sigint-existing-handler.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-sigint-existing-handler.js)
+- [parallel/test-vm-sigint.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-sigint.js)
+- [parallel/test-vm-strict-assign.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-strict-assign.js)
+- [parallel/test-vm-syntax-error-message.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-syntax-error-message.js)
+- [parallel/test-vm-syntax-error-stderr.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-syntax-error-stderr.js)
+- [parallel/test-vm-timeout-escape-promise-module.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-timeout-escape-promise-module.js)
+- [parallel/test-vm-util-lazy-properties.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-vm-util-lazy-properties.js)
+- [parallel/test-warn-sigprof.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-warn-sigprof.js)
+- [parallel/test-warn-stream-wrap.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-warn-stream-wrap.js)
+- [parallel/test-webcrypto-constructors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-constructors.js)
+- [parallel/test-webcrypto-cryptokey-workers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-cryptokey-workers.js)
+- [parallel/test-webcrypto-derivebits-cfrg.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-derivebits-cfrg.js)
+- [parallel/test-webcrypto-derivebits-ecdh.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-derivebits-ecdh.js)
+- [parallel/test-webcrypto-derivebits-hkdf.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-derivebits-hkdf.js)
+- [parallel/test-webcrypto-derivebits.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-derivebits.js)
+- [parallel/test-webcrypto-derivekey-cfrg.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-derivekey-cfrg.js)
+- [parallel/test-webcrypto-derivekey-ecdh.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-derivekey-ecdh.js)
+- [parallel/test-webcrypto-derivekey.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-derivekey.js)
+- [parallel/test-webcrypto-digest.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-digest.js)
+- [parallel/test-webcrypto-encrypt-decrypt-aes.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-encrypt-decrypt-aes.js)
+- [parallel/test-webcrypto-encrypt-decrypt-rsa.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-encrypt-decrypt-rsa.js)
+- [parallel/test-webcrypto-export-import-cfrg.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-export-import-cfrg.js)
+- [parallel/test-webcrypto-export-import-ec.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-export-import-ec.js)
+- [parallel/test-webcrypto-export-import-rsa.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-export-import-rsa.js)
+- [parallel/test-webcrypto-export-import.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-export-import.js)
+- [parallel/test-webcrypto-getRandomValues.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-getRandomValues.js)
+- [parallel/test-webcrypto-keygen.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-keygen.js)
+- [parallel/test-webcrypto-random.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-random.js)
+- [parallel/test-webcrypto-sign-verify-ecdsa.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-sign-verify-ecdsa.js)
+- [parallel/test-webcrypto-sign-verify-eddsa.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-sign-verify-eddsa.js)
+- [parallel/test-webcrypto-sign-verify-hmac.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-sign-verify-hmac.js)
+- [parallel/test-webcrypto-sign-verify-rsa.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-sign-verify-rsa.js)
+- [parallel/test-webcrypto-util.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-util.js)
+- [parallel/test-webcrypto-webidl.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-webidl.js)
+- [parallel/test-webcrypto-wrap-unwrap.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webcrypto-wrap-unwrap.js)
+- [parallel/test-websocket-disabled.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-websocket-disabled.js)
+- [parallel/test-webstorage.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webstorage.js)
+- [parallel/test-webstream-encoding-inspect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webstream-encoding-inspect.js)
+- [parallel/test-webstream-readable-from.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webstream-readable-from.js)
+- [parallel/test-webstream-readablestream-pipeto.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webstream-readablestream-pipeto.js)
+- [parallel/test-webstreams-abort-controller.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webstreams-abort-controller.js)
+- [parallel/test-webstreams-clone-unref.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webstreams-clone-unref.js)
+- [parallel/test-webstreams-compose.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webstreams-compose.js)
+- [parallel/test-webstreams-finished.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webstreams-finished.js)
+- [parallel/test-webstreams-pipeline.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-webstreams-pipeline.js)
+- [parallel/test-whatwg-encoding-custom-fatal-streaming.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-encoding-custom-fatal-streaming.js)
+- [parallel/test-whatwg-encoding-custom-internals.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-encoding-custom-internals.js)
+- [parallel/test-whatwg-encoding-custom-interop.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-encoding-custom-interop.js)
+- [parallel/test-whatwg-encoding-custom-textdecoder-api-invalid-label.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-encoding-custom-textdecoder-api-invalid-label.js)
+- [parallel/test-whatwg-encoding-custom-textdecoder-fatal.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-encoding-custom-textdecoder-fatal.js)
+- [parallel/test-whatwg-encoding-custom-textdecoder-invalid-arg.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-encoding-custom-textdecoder-invalid-arg.js)
+- [parallel/test-whatwg-encoding-custom-textdecoder-utf16-surrogates.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-encoding-custom-textdecoder-utf16-surrogates.js)
+- [parallel/test-whatwg-encoding-custom-textdecoder.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-encoding-custom-textdecoder.js)
+- [parallel/test-whatwg-events-event-constructors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-events-event-constructors.js)
+- [parallel/test-whatwg-events-eventtarget-this-of-listener.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-events-eventtarget-this-of-listener.js)
+- [parallel/test-whatwg-readablebytestream-bad-buffers-and-views.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-readablebytestream-bad-buffers-and-views.js)
+- [parallel/test-whatwg-readablebytestream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-readablebytestream.js)
+- [parallel/test-whatwg-readablestream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-readablestream.js)
+- [parallel/test-whatwg-transformstream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-transformstream.js)
+- [parallel/test-whatwg-url-canparse.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-canparse.js)
+- [parallel/test-whatwg-url-custom-inspect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-inspect.js)
+- [parallel/test-whatwg-url-custom-parsing.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-parsing.js)
+- [parallel/test-whatwg-url-custom-properties.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-properties.js)
+- [parallel/test-whatwg-url-custom-searchparams-append.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-searchparams-append.js)
+- [parallel/test-whatwg-url-custom-searchparams-constructor.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-searchparams-constructor.js)
+- [parallel/test-whatwg-url-custom-searchparams-delete.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-searchparams-delete.js)
+- [parallel/test-whatwg-url-custom-searchparams-entries.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-searchparams-entries.js)
+- [parallel/test-whatwg-url-custom-searchparams-foreach.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-searchparams-foreach.js)
+- [parallel/test-whatwg-url-custom-searchparams-get.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-searchparams-get.js)
+- [parallel/test-whatwg-url-custom-searchparams-getall.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-searchparams-getall.js)
+- [parallel/test-whatwg-url-custom-searchparams-has.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-searchparams-has.js)
+- [parallel/test-whatwg-url-custom-searchparams-inspect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-searchparams-inspect.js)
+- [parallel/test-whatwg-url-custom-searchparams-keys.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-searchparams-keys.js)
+- [parallel/test-whatwg-url-custom-searchparams-set.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-searchparams-set.js)
+- [parallel/test-whatwg-url-custom-searchparams-sort.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-searchparams-sort.js)
+- [parallel/test-whatwg-url-custom-searchparams-stringifier.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-searchparams-stringifier.js)
+- [parallel/test-whatwg-url-custom-searchparams-values.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-searchparams-values.js)
+- [parallel/test-whatwg-url-custom-searchparams.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-searchparams.js)
+- [parallel/test-whatwg-url-custom-setters.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-custom-setters.js)
+- [parallel/test-whatwg-url-invalidthis.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-url-invalidthis.js)
+- [parallel/test-whatwg-webstreams-adapters-streambase.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-webstreams-adapters-streambase.js)
+- [parallel/test-whatwg-webstreams-adapters-to-readablestream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-webstreams-adapters-to-readablestream.js)
+- [parallel/test-whatwg-webstreams-adapters-to-readablewritablepair.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-webstreams-adapters-to-readablewritablepair.js)
+- [parallel/test-whatwg-webstreams-adapters-to-streamduplex.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-webstreams-adapters-to-streamduplex.js)
+- [parallel/test-whatwg-webstreams-adapters-to-streamreadable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-webstreams-adapters-to-streamreadable.js)
+- [parallel/test-whatwg-webstreams-adapters-to-streamwritable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-webstreams-adapters-to-streamwritable.js)
+- [parallel/test-whatwg-webstreams-adapters-to-writablestream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-webstreams-adapters-to-writablestream.js)
+- [parallel/test-whatwg-webstreams-compression.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-webstreams-compression.js)
+- [parallel/test-whatwg-webstreams-coverage.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-webstreams-coverage.js)
+- [parallel/test-whatwg-webstreams-encoding.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-webstreams-encoding.js)
+- [parallel/test-whatwg-webstreams-transfer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-webstreams-transfer.js)
+- [parallel/test-whatwg-writablestream.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-whatwg-writablestream.js)
+- [parallel/test-windows-abort-exitcode.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-windows-abort-exitcode.js)
+- [parallel/test-windows-failed-heap-allocation.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-windows-failed-heap-allocation.js)
+- [parallel/test-worker-abort-on-uncaught-exception-terminate.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-abort-on-uncaught-exception-terminate.js)
+- [parallel/test-worker-abort-on-uncaught-exception.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-abort-on-uncaught-exception.js)
+- [parallel/test-worker-arraybuffer-zerofill.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-arraybuffer-zerofill.js)
+- [parallel/test-worker-beforeexit-throw-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-beforeexit-throw-exit.js)
+- [parallel/test-worker-broadcastchannel-wpt.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-broadcastchannel-wpt.js)
+- [parallel/test-worker-broadcastchannel.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-broadcastchannel.js)
+- [parallel/test-worker-cjs-workerdata.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-cjs-workerdata.js)
+- [parallel/test-worker-cleanexit-with-moduleload.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-cleanexit-with-moduleload.js)
+- [parallel/test-worker-cleanup-handles.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-cleanup-handles.js)
+- [parallel/test-worker-cli-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-cli-options.js)
+- [parallel/test-worker-console-listeners.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-console-listeners.js)
+- [parallel/test-worker-crypto-sign-transfer-result.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-crypto-sign-transfer-result.js)
+- [parallel/test-worker-data-url.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-data-url.js)
+- [parallel/test-worker-debug.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-debug.js)
+- [parallel/test-worker-dns-terminate-during-query.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-dns-terminate-during-query.js)
+- [parallel/test-worker-dns-terminate.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-dns-terminate.js)
+- [parallel/test-worker-environmentdata.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-environmentdata.js)
+- [parallel/test-worker-error-stack-getter-throws.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-error-stack-getter-throws.js)
+- [parallel/test-worker-esm-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-esm-exit.js)
+- [parallel/test-worker-esm-missing-main.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-esm-missing-main.js)
+- [parallel/test-worker-esmodule.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-esmodule.js)
+- [parallel/test-worker-eval-typescript.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-eval-typescript.js)
+- [parallel/test-worker-event.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-event.js)
+- [parallel/test-worker-execargv-invalid.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-execargv-invalid.js)
+- [parallel/test-worker-execargv.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-execargv.js)
+- [parallel/test-worker-exit-code.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-exit-code.js)
+- [parallel/test-worker-exit-event-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-exit-event-error.js)
+- [parallel/test-worker-exit-from-uncaught-exception.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-exit-from-uncaught-exception.js)
+- [parallel/test-worker-exit-heapsnapshot.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-exit-heapsnapshot.js)
+- [parallel/test-worker-fs-stat-watcher.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-fs-stat-watcher.js)
+- [parallel/test-worker-hasref.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-hasref.js)
+- [parallel/test-worker-heap-snapshot.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-heap-snapshot.js)
+- [parallel/test-worker-heapdump-failure.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-heapdump-failure.js)
+- [parallel/test-worker-http2-generic-streams-terminate.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-http2-generic-streams-terminate.js)
+- [parallel/test-worker-http2-stream-terminate.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-http2-stream-terminate.js)
+- [parallel/test-worker-init-failure.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-init-failure.js)
+- [parallel/test-worker-invalid-workerdata.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-invalid-workerdata.js)
+- [parallel/test-worker-load-file-with-extension-other-than-js.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-load-file-with-extension-other-than-js.js)
+- [parallel/test-worker-memory.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-memory.js)
+- [parallel/test-worker-message-channel-sharedarraybuffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-channel-sharedarraybuffer.js)
+- [parallel/test-worker-message-channel.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-channel.js)
+- [parallel/test-worker-message-event.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-event.js)
+- [parallel/test-worker-message-mark-as-uncloneable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-mark-as-uncloneable.js)
+- [parallel/test-worker-message-not-serializable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-not-serializable.js)
+- [parallel/test-worker-message-port-arraybuffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-arraybuffer.js)
+- [parallel/test-worker-message-port-close-while-receiving.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-close-while-receiving.js)
+- [parallel/test-worker-message-port-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-close.js)
+- [parallel/test-worker-message-port-constructor.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-constructor.js)
+- [parallel/test-worker-message-port-drain.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-drain.js)
+- [parallel/test-worker-message-port-inspect-during-init-hook.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-inspect-during-init-hook.js)
+- [parallel/test-worker-message-port-jstransferable-nested-untransferable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-jstransferable-nested-untransferable.js)
+- [parallel/test-worker-message-port-message-before-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-message-before-close.js)
+- [parallel/test-worker-message-port-message-port-transferring.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-message-port-transferring.js)
+- [parallel/test-worker-message-port-move.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-move.js)
+- [parallel/test-worker-message-port-terminate-transfer-list.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-terminate-transfer-list.js)
+- [parallel/test-worker-message-port-transfer-closed.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-transfer-closed.js)
+- [parallel/test-worker-message-port-transfer-duplicate.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-transfer-duplicate.js)
+- [parallel/test-worker-message-port-transfer-fake-js-transferable-internal.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-transfer-fake-js-transferable-internal.js)
+- [parallel/test-worker-message-port-transfer-fake-js-transferable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-transfer-fake-js-transferable.js)
+- [parallel/test-worker-message-port-transfer-filehandle.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-transfer-filehandle.js)
+- [parallel/test-worker-message-port-transfer-native.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-transfer-native.js)
+- [parallel/test-worker-message-port-transfer-self.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-transfer-self.js)
+- [parallel/test-worker-message-port-transfer-target.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-transfer-target.js)
+- [parallel/test-worker-message-port-transfer-terminate.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-transfer-terminate.js)
+- [parallel/test-worker-message-port-wasm-module.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-wasm-module.js)
+- [parallel/test-worker-message-port-wasm-threads.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port-wasm-threads.js)
+- [parallel/test-worker-message-port.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-port.js)
+- [parallel/test-worker-message-transfer-port-mark-as-untransferable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-transfer-port-mark-as-untransferable.js)
+- [parallel/test-worker-message-type-unknown.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-message-type-unknown.js)
+- [parallel/test-worker-messageport-hasref.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-messageport-hasref.js)
+- [parallel/test-worker-messaging-errors-handler.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-messaging-errors-handler.js)
+- [parallel/test-worker-messaging-errors-invalid.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-messaging-errors-invalid.js)
+- [parallel/test-worker-messaging-errors-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-messaging-errors-timeout.js)
+- [parallel/test-worker-messaging.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-messaging.js)
+- [parallel/test-worker-mjs-workerdata.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-mjs-workerdata.js)
+- [parallel/test-worker-name.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-name.js)
+- [parallel/test-worker-nearheaplimit-deadlock.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-nearheaplimit-deadlock.js)
+- [parallel/test-worker-nested-on-process-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-nested-on-process-exit.js)
+- [parallel/test-worker-nested-uncaught.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-nested-uncaught.js)
+- [parallel/test-worker-nexttick-terminate.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-nexttick-terminate.js)
+- [parallel/test-worker-no-sab.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-no-sab.js)
+- [parallel/test-worker-no-stdin-stdout-interaction.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-no-stdin-stdout-interaction.js)
+- [parallel/test-worker-node-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-node-options.js)
+- [parallel/test-worker-non-fatal-uncaught-exception.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-non-fatal-uncaught-exception.js)
+- [parallel/test-worker-onmessage-not-a-function.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-onmessage-not-a-function.js)
+- [parallel/test-worker-onmessage.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-onmessage.js)
+- [parallel/test-worker-parent-port-ref.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-parent-port-ref.js)
+- [parallel/test-worker-process-argv.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-process-argv.js)
+- [parallel/test-worker-process-cwd.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-process-cwd.js)
+- [parallel/test-worker-process-env-shared.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-process-env-shared.js)
+- [parallel/test-worker-process-env.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-process-env.js)
+- [parallel/test-worker-process-exit-async-module.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-process-exit-async-module.js)
+- [parallel/test-worker-ref.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-ref.js)
+- [parallel/test-worker-relative-path-double-dot.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-relative-path-double-dot.js)
+- [parallel/test-worker-relative-path.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-relative-path.js)
+- [parallel/test-worker-resource-limits.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-resource-limits.js)
+- [parallel/test-worker-safe-getters.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-safe-getters.js)
+- [parallel/test-worker-sharedarraybuffer-from-worker-thread.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-sharedarraybuffer-from-worker-thread.js)
+- [parallel/test-worker-stack-overflow-stack-size.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-stack-overflow-stack-size.js)
+- [parallel/test-worker-stack-overflow.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-stack-overflow.js)
+- [parallel/test-worker-stdio-flush-inflight.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-stdio-flush-inflight.js)
+- [parallel/test-worker-stdio-flush.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-stdio-flush.js)
+- [parallel/test-worker-stdio-from-preload-module.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-stdio-from-preload-module.js)
+- [parallel/test-worker-stdio.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-stdio.js)
+- [parallel/test-worker-syntax-error-file.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-syntax-error-file.js)
+- [parallel/test-worker-syntax-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-syntax-error.js)
+- [parallel/test-worker-terminate-http2-respond-with-file.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-terminate-http2-respond-with-file.js)
+- [parallel/test-worker-terminate-microtask-loop.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-terminate-microtask-loop.js)
+- [parallel/test-worker-terminate-nested.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-terminate-nested.js)
+- [parallel/test-worker-terminate-null-handler.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-terminate-null-handler.js)
+- [parallel/test-worker-terminate-ref-public-port.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-terminate-ref-public-port.js)
+- [parallel/test-worker-terminate-source-map.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-terminate-source-map.js)
+- [parallel/test-worker-terminate-timers.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-terminate-timers.js)
+- [parallel/test-worker-track-unmanaged-fds.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-track-unmanaged-fds.js)
+- [parallel/test-worker-type-check.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-type-check.js)
+- [parallel/test-worker-uncaught-exception-async.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-uncaught-exception-async.js)
+- [parallel/test-worker-uncaught-exception.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-uncaught-exception.js)
+- [parallel/test-worker-unref-from-message-during-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-unref-from-message-during-exit.js)
+- [parallel/test-worker-unsupported-path.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-unsupported-path.js)
+- [parallel/test-worker-unsupported-things.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-unsupported-things.js)
+- [parallel/test-worker-vm-context-terminate.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-vm-context-terminate.js)
+- [parallel/test-worker-voluntarily-exit-followed-by-addition.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-voluntarily-exit-followed-by-addition.js)
+- [parallel/test-worker-voluntarily-exit-followed-by-throw.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-voluntarily-exit-followed-by-throw.js)
+- [parallel/test-worker-workerdata-messageport.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-workerdata-messageport.js)
+- [parallel/test-worker-workerdata-sharedarraybuffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker-workerdata-sharedarraybuffer.js)
+- [parallel/test-worker.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-worker.js)
+- [parallel/test-wrap-js-stream-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-wrap-js-stream-destroy.js)
+- [parallel/test-wrap-js-stream-duplex.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-wrap-js-stream-duplex.js)
+- [parallel/test-wrap-js-stream-exceptions.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-wrap-js-stream-exceptions.js)
+- [parallel/test-wrap-js-stream-read-stop.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-wrap-js-stream-read-stop.js)
+- [parallel/test-x509-escaping.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-x509-escaping.js)
+- [parallel/test-zlib-brotli-16GB.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-brotli-16GB.js)
+- [parallel/test-zlib-brotli-flush.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-brotli-flush.js)
+- [parallel/test-zlib-brotli-from-brotli.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-brotli-from-brotli.js)
+- [parallel/test-zlib-brotli-from-string.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-brotli-from-string.js)
+- [parallel/test-zlib-brotli-kmaxlength-rangeerror.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-brotli-kmaxlength-rangeerror.js)
+- [parallel/test-zlib-brotli.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-brotli.js)
+- [parallel/test-zlib-close-in-ondata.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-close-in-ondata.js)
+- [parallel/test-zlib-const.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-const.js)
+- [parallel/test-zlib-crc32.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-crc32.js)
+- [parallel/test-zlib-deflate-constructors.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-deflate-constructors.js)
+- [parallel/test-zlib-destroy.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-destroy.js)
+- [parallel/test-zlib-dictionary-fail.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-dictionary-fail.js)
+- [parallel/test-zlib-dictionary.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-dictionary.js)
+- [parallel/test-zlib-failed-init.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-failed-init.js)
+- [parallel/test-zlib-flush-drain-longblock.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-flush-drain-longblock.js)
+- [parallel/test-zlib-flush-drain.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-flush-drain.js)
+- [parallel/test-zlib-flush-flags.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-flush-flags.js)
+- [parallel/test-zlib-flush.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-flush.js)
+- [parallel/test-zlib-from-concatenated-gzip.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-from-concatenated-gzip.js)
+- [parallel/test-zlib-from-gzip-with-trailing-garbage.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-from-gzip-with-trailing-garbage.js)
+- [parallel/test-zlib-from-gzip.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-from-gzip.js)
+- [parallel/test-zlib-invalid-arg-value-brotli-compress.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-invalid-arg-value-brotli-compress.js)
+- [parallel/test-zlib-invalid-input-memory.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-invalid-input-memory.js)
+- [parallel/test-zlib-kmaxlength-rangeerror.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-kmaxlength-rangeerror.js)
+- [parallel/test-zlib-maxOutputLength.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-maxOutputLength.js)
+- [parallel/test-zlib-not-string-or-buffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-not-string-or-buffer.js)
+- [parallel/test-zlib-object-write.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-object-write.js)
+- [parallel/test-zlib-params.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-params.js)
+- [parallel/test-zlib-premature-end.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-premature-end.js)
+- [parallel/test-zlib-reset-before-write.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-reset-before-write.js)
+- [parallel/test-zlib-unused-weak.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-unused-weak.js)
+- [parallel/test-zlib-write-after-close.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-write-after-close.js)
+- [parallel/test-zlib-zstd-flush.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-zstd-flush.js)
+- [parallel/test-zlib-zstd-from-string.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-zstd-from-string.js)
+- [parallel/test-zlib-zstd-from-zstd.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-zstd-from-zstd.js)
+- [parallel/test-zlib-zstd-kmaxlength-rangeerror.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-zstd-kmaxlength-rangeerror.js)
+- [parallel/test-zlib-zstd-pledged-src-size.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-zstd-pledged-src-size.js)
+- [parallel/test-zlib-zstd.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib-zstd.js)
+- [parallel/test-zlib.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-zlib.js)
+- [pseudo-tty/readline-dumb-tty.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/readline-dumb-tty.js)
+- [pseudo-tty/ref_keeps_node_running.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/ref_keeps_node_running.js)
+- [pseudo-tty/repl-dumb-tty.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/repl-dumb-tty.js)
+- [pseudo-tty/stdin-setrawmode.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/stdin-setrawmode.js)
+- [pseudo-tty/test-assert-colors.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-assert-colors.js)
+- [pseudo-tty/test-assert-no-color.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-assert-no-color.js)
+- [pseudo-tty/test-assert-position-indicator.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-assert-position-indicator.js)
+- [pseudo-tty/test-async-wrap-getasyncid-tty.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-async-wrap-getasyncid-tty.js)
+- [pseudo-tty/test-fatal-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-fatal-error.js)
+- [pseudo-tty/test-handle-wrap-hasref-tty.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-handle-wrap-hasref-tty.js)
+- [pseudo-tty/test-readable-tty-keepalive.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-readable-tty-keepalive.js)
+- [pseudo-tty/test-repl-external-module.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-repl-external-module.js)
+- [pseudo-tty/test-set-raw-mode-reset-signal.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-set-raw-mode-reset-signal.js)
+- [pseudo-tty/test-stderr-stdout-handle-sigwinch.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-stderr-stdout-handle-sigwinch.js)
+- [pseudo-tty/test-stdin-write.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-stdin-write.js)
+- [pseudo-tty/test-stdout-read.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-stdout-read.js)
+- [pseudo-tty/test-trace-sigint-disabled.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-trace-sigint-disabled.js)
+- [pseudo-tty/test-trace-sigint-on-idle.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-trace-sigint-on-idle.js)
+- [pseudo-tty/test-trace-sigint.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-trace-sigint.js)
+- [pseudo-tty/test-tty-color-support.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-tty-color-support.js)
+- [pseudo-tty/test-tty-isatty.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-tty-isatty.js)
+- [pseudo-tty/test-tty-stdout-resize.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-tty-stdout-resize.js)
+- [pseudo-tty/test-tty-stream-constructors.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-tty-stream-constructors.js)
+- [pseudo-tty/test-tty-window-size.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-tty-window-size.js)
+- [pseudo-tty/test-tty-wrap.js](https://github.com/nodejs/node/tree/v23.9.0/test/pseudo-tty/test-tty-wrap.js)
+- [pummel/test-blob-slice-with-large-size.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-blob-slice-with-large-size.js)
+- [pummel/test-child-process-spawn-loop.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-child-process-spawn-loop.js)
+- [pummel/test-crypto-dh-keys.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-crypto-dh-keys.js)
+- [pummel/test-fs-watch-file-slow.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-fs-watch-file-slow.js)
+- [pummel/test-fs-watch-file.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-fs-watch-file.js)
+- [pummel/test-fs-watch-non-recursive.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-fs-watch-non-recursive.js)
+- [pummel/test-hash-seed.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-hash-seed.js)
+- [pummel/test-heapdump-dns.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-heapdump-dns.js)
+- [pummel/test-heapdump-env.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-heapdump-env.js)
+- [pummel/test-heapdump-fs-promise.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-heapdump-fs-promise.js)
+- [pummel/test-heapdump-http2.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-heapdump-http2.js)
+- [pummel/test-heapdump-inspector.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-heapdump-inspector.js)
+- [pummel/test-heapdump-shadow-realm.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-heapdump-shadow-realm.js)
+- [pummel/test-heapdump-tls.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-heapdump-tls.js)
+- [pummel/test-heapdump-urlpattern.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-heapdump-urlpattern.js)
+- [pummel/test-heapdump-vm-script.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-heapdump-vm-script.js)
+- [pummel/test-heapdump-worker.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-heapdump-worker.js)
+- [pummel/test-heapdump-zlib.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-heapdump-zlib.js)
+- [pummel/test-heapsnapshot-near-heap-limit-bounded.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-heapsnapshot-near-heap-limit-bounded.js)
+- [pummel/test-heapsnapshot-near-heap-limit-by-api.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-heapsnapshot-near-heap-limit-by-api.js)
+- [pummel/test-heapsnapshot-near-heap-limit.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-heapsnapshot-near-heap-limit.js)
+- [pummel/test-http-many-keep-alive-connections.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-http-many-keep-alive-connections.js)
+- [pummel/test-http-upload-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-http-upload-timeout.js)
+- [pummel/test-https-large-response.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-https-large-response.js)
+- [pummel/test-https-no-reader.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-https-no-reader.js)
+- [pummel/test-keep-alive.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-keep-alive.js)
+- [pummel/test-net-pause.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-net-pause.js)
+- [pummel/test-net-pingpong.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-net-pingpong.js)
+- [pummel/test-net-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-net-timeout.js)
+- [pummel/test-net-timeout2.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-net-timeout2.js)
+- [pummel/test-net-write-callbacks.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-net-write-callbacks.js)
+- [pummel/test-next-tick-infinite-calls.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-next-tick-infinite-calls.js)
+- [pummel/test-process-hrtime.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-process-hrtime.js)
+- [pummel/test-regress-GH-892.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-regress-GH-892.js)
+- [pummel/test-string-decoder-large-buffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-string-decoder-large-buffer.js)
+- [pummel/test-structuredclone-jstransferable.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-structuredclone-jstransferable.js)
+- [pummel/test-timers.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-timers.js)
+- [pummel/test-tls-server-large-request.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-tls-server-large-request.js)
+- [pummel/test-tls-throttle.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-tls-throttle.js)
+- [pummel/test-vm-memleak.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-vm-memleak.js)
+- [pummel/test-vm-race.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-vm-race.js)
+- [pummel/test-watch-file.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-watch-file.js)
+- [pummel/test-webcrypto-derivebits-pbkdf2.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-webcrypto-derivebits-pbkdf2.js)
+- [pummel/test-worker-take-heapsnapshot.js](https://github.com/nodejs/node/tree/v23.9.0/test/pummel/test-worker-take-heapsnapshot.js)
+- [sequential/test-async-wrap-getasyncid.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-async-wrap-getasyncid.js)
+- [sequential/test-child-process-emfile.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-child-process-emfile.js)
+- [sequential/test-child-process-execsync.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-child-process-execsync.js)
+- [sequential/test-child-process-pass-fd.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-child-process-pass-fd.js)
+- [sequential/test-cli-syntax-bad.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cli-syntax-bad.js)
+- [sequential/test-cli-syntax-file-not-found.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cli-syntax-file-not-found.js)
+- [sequential/test-cli-syntax-good.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cli-syntax-good.js)
+- [sequential/test-cli-syntax-require.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cli-syntax-require.js)
+- [sequential/test-cluster-inspect-brk.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cluster-inspect-brk.js)
+- [sequential/test-cluster-net-listen-ipv6only-none.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cluster-net-listen-ipv6only-none.js)
+- [sequential/test-cluster-net-listen-ipv6only-rr.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cluster-net-listen-ipv6only-rr.js)
+- [sequential/test-cluster-send-handle-large-payload.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cluster-send-handle-large-payload.js)
+- [sequential/test-cpu-prof-default.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cpu-prof-default.js)
+- [sequential/test-cpu-prof-dir-absolute.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cpu-prof-dir-absolute.js)
+- [sequential/test-cpu-prof-dir-and-name.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cpu-prof-dir-and-name.js)
+- [sequential/test-cpu-prof-dir-relative.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cpu-prof-dir-relative.js)
+- [sequential/test-cpu-prof-dir-worker.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cpu-prof-dir-worker.js)
+- [sequential/test-cpu-prof-drained.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cpu-prof-drained.js)
+- [sequential/test-cpu-prof-exit.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cpu-prof-exit.js)
+- [sequential/test-cpu-prof-invalid-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cpu-prof-invalid-options.js)
+- [sequential/test-cpu-prof-kill.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cpu-prof-kill.js)
+- [sequential/test-cpu-prof-name.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cpu-prof-name.js)
+- [sequential/test-cpu-prof-worker-argv.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-cpu-prof-worker-argv.js)
+- [sequential/test-crypto-timing-safe-equal.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-crypto-timing-safe-equal.js)
+- [sequential/test-debug-prompt.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-debug-prompt.js)
+- [sequential/test-debugger-custom-port.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-debugger-custom-port.js)
+- [sequential/test-debugger-debug-brk.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-debugger-debug-brk.js)
+- [sequential/test-debugger-invalid-args.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-debugger-invalid-args.js)
+- [sequential/test-debugger-pid.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-debugger-pid.js)
+- [sequential/test-deprecation-flags.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-deprecation-flags.js)
+- [sequential/test-dgram-bind-shared-ports.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-dgram-bind-shared-ports.js)
+- [sequential/test-dgram-implicit-bind-failure.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-dgram-implicit-bind-failure.js)
+- [sequential/test-dgram-pingpong.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-dgram-pingpong.js)
+- [sequential/test-diagnostic-dir-cpu-prof.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-diagnostic-dir-cpu-prof.js)
+- [sequential/test-diagnostic-dir-heap-prof.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-diagnostic-dir-heap-prof.js)
+- [sequential/test-error-serdes.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-error-serdes.js)
+- [sequential/test-fs-opendir-recursive.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-fs-opendir-recursive.js)
+- [sequential/test-fs-readdir-recursive.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-fs-readdir-recursive.js)
+- [sequential/test-fs-stat-sync-overflow.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-fs-stat-sync-overflow.js)
+- [sequential/test-fs-watch.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-fs-watch.js)
+- [sequential/test-gc-http-client-onerror.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-gc-http-client-onerror.js)
+- [sequential/test-gc-http-client-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-gc-http-client-timeout.js)
+- [sequential/test-gc-http-client.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-gc-http-client.js)
+- [sequential/test-get-heapsnapshot-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-get-heapsnapshot-options.js)
+- [sequential/test-heapdump-flag-custom-dir.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-heapdump-flag-custom-dir.js)
+- [sequential/test-heapdump-flag.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-heapdump-flag.js)
+- [sequential/test-heapdump.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-heapdump.js)
+- [sequential/test-http-econnrefused.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-http-econnrefused.js)
+- [sequential/test-http-keep-alive-large-write.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-http-keep-alive-large-write.js)
+- [sequential/test-http-keepalive-maxsockets.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-http-keepalive-maxsockets.js)
+- [sequential/test-http-regr-gh-2928.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-http-regr-gh-2928.js)
+- [sequential/test-http-server-keep-alive-timeout-slow-client-headers.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-http-server-keep-alive-timeout-slow-client-headers.js)
+- [sequential/test-http-server-request-timeouts-mixed.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-http-server-request-timeouts-mixed.js)
+- [sequential/test-http2-large-file.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-http2-large-file.js)
+- [sequential/test-http2-max-session-memory.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-http2-max-session-memory.js)
+- [sequential/test-http2-ping-flood.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-http2-ping-flood.js)
+- [sequential/test-http2-settings-flood.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-http2-settings-flood.js)
+- [sequential/test-http2-timeout-large-write-file.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-http2-timeout-large-write-file.js)
+- [sequential/test-http2-timeout-large-write.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-http2-timeout-large-write.js)
+- [sequential/test-https-connect-localport.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-https-connect-localport.js)
+- [sequential/test-https-server-keep-alive-timeout.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-https-server-keep-alive-timeout.js)
+- [sequential/test-init.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-init.js)
+- [sequential/test-inspector-port-cluster.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-inspector-port-cluster.js)
+- [sequential/test-module-loading.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-module-loading.js)
+- [sequential/test-net-GH-5504.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-net-GH-5504.js)
+- [sequential/test-net-better-error-messages-port.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-net-better-error-messages-port.js)
+- [sequential/test-net-connect-econnrefused.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-net-connect-econnrefused.js)
+- [sequential/test-net-connect-handle-econnrefused.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-net-connect-handle-econnrefused.js)
+- [sequential/test-net-listen-shared-ports.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-net-listen-shared-ports.js)
+- [sequential/test-net-localport.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-net-localport.js)
+- [sequential/test-net-reconnect-error.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-net-reconnect-error.js)
+- [sequential/test-net-server-address.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-net-server-address.js)
+- [sequential/test-net-server-listen-ipv6-link-local.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-net-server-listen-ipv6-link-local.js)
+- [sequential/test-next-tick-error-spin.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-next-tick-error-spin.js)
+- [sequential/test-perf-hooks.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-perf-hooks.js)
+- [sequential/test-performance-eventloopdelay.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-performance-eventloopdelay.js)
+- [sequential/test-pipe.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-pipe.js)
+- [sequential/test-process-title.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-process-title.js)
+- [sequential/test-process-warnings.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-process-warnings.js)
+- [sequential/test-repl-timeout-throw.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-repl-timeout-throw.js)
+- [sequential/test-require-cache-without-stat.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-require-cache-without-stat.js)
+- [sequential/test-resolution-inspect-brk.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-resolution-inspect-brk.js)
+- [sequential/test-single-executable-application-assets-raw.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-single-executable-application-assets-raw.js)
+- [sequential/test-single-executable-application-assets.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-single-executable-application-assets.js)
+- [sequential/test-single-executable-application-disable-experimental-sea-warning.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-single-executable-application-disable-experimental-sea-warning.js)
+- [sequential/test-single-executable-application-empty.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-single-executable-application-empty.js)
+- [sequential/test-single-executable-application-snapshot-and-code-cache.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-single-executable-application-snapshot-and-code-cache.js)
+- [sequential/test-single-executable-application-snapshot-worker.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-single-executable-application-snapshot-worker.js)
+- [sequential/test-single-executable-application-snapshot.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-single-executable-application-snapshot.js)
+- [sequential/test-single-executable-application-use-code-cache.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-single-executable-application-use-code-cache.js)
+- [sequential/test-single-executable-application.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-single-executable-application.js)
+- [sequential/test-stream2-fs.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-stream2-fs.js)
+- [sequential/test-stream2-stderr-sync.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-stream2-stderr-sync.js)
+- [sequential/test-timers-block-eventloop.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-timers-block-eventloop.js)
+- [sequential/test-timers-set-interval-excludes-callback-duration.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-timers-set-interval-excludes-callback-duration.js)
+- [sequential/test-tls-connect.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-tls-connect.js)
+- [sequential/test-util-debug.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-util-debug.js)
+- [sequential/test-vm-break-on-sigint.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-vm-break-on-sigint.js)
+- [sequential/test-vm-timeout-escape-promise-module-2.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-vm-timeout-escape-promise-module-2.js)
+- [sequential/test-vm-timeout-rethrow.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-vm-timeout-rethrow.js)
+- [sequential/test-worker-eventlooputil.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-worker-eventlooputil.js)
+- [sequential/test-worker-fshandles-error-on-termination.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-worker-fshandles-error-on-termination.js)
+- [sequential/test-worker-fshandles-open-close-on-termination.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-worker-fshandles-open-close-on-termination.js)
+- [sequential/test-worker-heapsnapshot-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-worker-heapsnapshot-options.js)
+- [sequential/test-worker-prof.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-worker-prof.js)
+- [sequential/test-write-heapsnapshot-options.js](https://github.com/nodejs/node/tree/v23.9.0/test/sequential/test-write-heapsnapshot-options.js)
+- [sqlite/test_sqlite_extensions/test.js](https://github.com/nodejs/node/tree/v23.9.0/test/sqlite/test_sqlite_extensions/test.js)
+- [wasm-allocation/test-wasm-allocation.js](https://github.com/nodejs/node/tree/v23.9.0/test/wasm-allocation/test-wasm-allocation.js)
diff --git a/tests/node_compat/runner/suite b/tests/node_compat/runner/suite
index 1c9511e584eb9d..dfcae8dc3d7ed7 160000
--- a/tests/node_compat/runner/suite
+++ b/tests/node_compat/runner/suite
@@ -1 +1 @@
-Subproject commit 1c9511e584eb9d465bcd4b1e6c05ecedf7f15549
+Subproject commit dfcae8dc3d7ed7dd4d6d51764d307468c849915d
diff --git a/tests/node_compat/test/abort/test-addon-uv-handle-leak.js b/tests/node_compat/test/abort/test-addon-uv-handle-leak.js
index 618eea481dc9b4..c39c65dea701bd 100644
--- a/tests/node_compat/test/abort/test-addon-uv-handle-leak.js
+++ b/tests/node_compat/test/abort/test-addon-uv-handle-leak.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/benchmark/test-benchmark-async-hooks.js b/tests/node_compat/test/benchmark/test-benchmark-async-hooks.js
index 282d1b2fcf9516..6c989e378c605e 100644
--- a/tests/node_compat/test/benchmark/test-benchmark-async-hooks.js
+++ b/tests/node_compat/test/benchmark/test-benchmark-async-hooks.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/benchmark/test-benchmark-http.js b/tests/node_compat/test/benchmark/test-benchmark-http.js
index ee54b6ba376bb3..ab2e0e9755d53e 100644
--- a/tests/node_compat/test/benchmark/test-benchmark-http.js
+++ b/tests/node_compat/test/benchmark/test-benchmark-http.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/benchmark/test-benchmark-http2.js b/tests/node_compat/test/benchmark/test-benchmark-http2.js
index d880132577f29e..bac6562d7f714e 100644
--- a/tests/node_compat/test/benchmark/test-benchmark-http2.js
+++ b/tests/node_compat/test/benchmark/test-benchmark-http2.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/benchmark/test-benchmark-tls.js b/tests/node_compat/test/benchmark/test-benchmark-tls.js
index ae97d0987254d0..784ac8a584fbdb 100644
--- a/tests/node_compat/test/benchmark/test-benchmark-tls.js
+++ b/tests/node_compat/test/benchmark/test-benchmark-tls.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/benchmark/test-benchmark-worker.js b/tests/node_compat/test/benchmark/test-benchmark-worker.js
index ef65c9cc2137ab..39bce38fbd8ca2 100644
--- a/tests/node_compat/test/benchmark/test-benchmark-worker.js
+++ b/tests/node_compat/test/benchmark/test-benchmark-worker.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/common/child_process.js b/tests/node_compat/test/common/child_process.js
index fd6676f570191e..f78a013a912041 100644
--- a/tests/node_compat/test/common/child_process.js
+++ b/tests/node_compat/test/common/child_process.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -67,13 +67,14 @@ function checkOutput(str, check) {
   return { passed: true };
 }
 
-function expectSyncExit(child, {
+function expectSyncExit(caller, spawnArgs, {
   status,
   signal,
   stderr: stderrCheck,
   stdout: stdoutCheck,
   trim = false,
 }) {
+  const child = spawnSync(...spawnArgs);
   const failures = [];
   let stderrStr, stdoutStr;
   if (status !== undefined && child.status !== status) {
@@ -90,7 +91,18 @@ function expectSyncExit(child, {
     console.error(`${tag} --- stdout ---`);
     console.error(stdoutStr === undefined ? child.stdout.toString() : stdoutStr);
     console.error(`${tag} status = ${child.status}, signal = ${child.signal}`);
-    throw new Error(`${failures.join('\n')}`);
+
+    const error = new Error(`${failures.join('\n')}`);
+    if (spawnArgs[2]) {
+      error.options = spawnArgs[2];
+    }
+    let command = spawnArgs[0];
+    if (Array.isArray(spawnArgs[1])) {
+      command += ' ' + spawnArgs[1].join(' ');
+    }
+    error.command = command;
+    Error.captureStackTrace(error, caller);
+    throw error;
   }
 
   // If status and signal are not matching expectations, fail early.
@@ -121,15 +133,19 @@ function expectSyncExit(child, {
 function spawnSyncAndExit(...args) {
   const spawnArgs = args.slice(0, args.length - 1);
   const expectations = args[args.length - 1];
-  const child = spawnSync(...spawnArgs);
-  return expectSyncExit(child, expectations);
+  return expectSyncExit(spawnSyncAndExit, spawnArgs, expectations);
 }
 
 function spawnSyncAndExitWithoutError(...args) {
-  const spawnArgs = args.slice(0, args.length);
-  const expectations = args[args.length - 1];
-  const child = spawnSync(...spawnArgs);
-  return expectSyncExit(child, {
+  return expectSyncExit(spawnSyncAndExitWithoutError, [...args], {
+    status: 0,
+    signal: null,
+  });
+}
+
+function spawnSyncAndAssert(...args) {
+  const expectations = args.pop();
+  return expectSyncExit(spawnSyncAndAssert, [...args], {
     status: 0,
     signal: null,
     ...expectations,
@@ -141,6 +157,7 @@ module.exports = {
   logAfterTime,
   kExpiringChildRunTime,
   kExpiringParentTimer,
+  spawnSyncAndAssert,
   spawnSyncAndExit,
   spawnSyncAndExitWithoutError,
 };
diff --git a/tests/node_compat/test/common/countdown.js b/tests/node_compat/test/common/countdown.js
index 1e3512e54089b3..bceb087edb7b04 100644
--- a/tests/node_compat/test/common/countdown.js
+++ b/tests/node_compat/test/common/countdown.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/common/dns.js b/tests/node_compat/test/common/dns.js
index b3b92a18e0740a..2b0f9554e69bb3 100644
--- a/tests/node_compat/test/common/dns.js
+++ b/tests/node_compat/test/common/dns.js
@@ -2,13 +2,14 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
 
 const assert = require('assert');
 const os = require('os');
+const { isIP } = require('net');
 
 const types = {
   A: 1,
@@ -46,7 +47,7 @@ function readDomainFromPacket(buffer, offset) {
   }
   // Pointer to another part of the packet.
   assert.strictEqual(length & 0xC0, 0xC0);
-  // eslint-disable-next-line space-infix-ops, space-unary-ops
+  // eslint-disable-next-line @stylistic/js/space-infix-ops, @stylistic/js/space-unary-ops
   const pointeeOffset = buffer.readUInt16BE(offset) &~ 0xC000;
   return {
     nread: 2,
@@ -202,11 +203,11 @@ function writeDNSPacket(parsed) {
 
   buffers.push(new Uint16Array([
     parsed.id,
-    parsed.flags === undefined ? kStandardResponseFlags : parsed.flags,
-    parsed.questions && parsed.questions.length,
-    parsed.answers && parsed.answers.length,
-    parsed.authorityAnswers && parsed.authorityAnswers.length,
-    parsed.additionalRecords && parsed.additionalRecords.length,
+    parsed.flags ?? kStandardResponseFlags,
+    parsed.questions?.length,
+    parsed.answers?.length,
+    parsed.authorityAnswers?.length,
+    parsed.additionalRecords?.length,
   ]));
 
   for (const q of parsed.questions) {
@@ -316,6 +317,25 @@ function errorLookupMock(code = mockedErrorCode, syscall = mockedSysCall) {
   };
 }
 
+function createMockedLookup(...addresses) {
+  addresses = addresses.map((address) => ({ address: address, family: isIP(address) }));
+
+  // Create a DNS server which replies with a AAAA and a A record for the same host
+  return function lookup(hostname, options, cb) {
+    if (options.all === true) {
+      process.nextTick(() => {
+        cb(null, addresses);
+      });
+
+      return;
+    }
+
+    process.nextTick(() => {
+      cb(null, addresses[0].address, addresses[0].family);
+    });
+  };
+}
+
 module.exports = {
   types,
   classes,
@@ -324,4 +344,5 @@ module.exports = {
   errorLookupMock,
   mockedErrorCode,
   mockedSysCall,
+  createMockedLookup,
 };
diff --git a/tests/node_compat/test/common/fixtures.js b/tests/node_compat/test/common/fixtures.js
index 6f68d8a0aab4d6..808ae27285457d 100644
--- a/tests/node_compat/test/common/fixtures.js
+++ b/tests/node_compat/test/common/fixtures.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -35,6 +35,23 @@ function readFixtureKeys(enc, ...names) {
   return names.map((name) => readFixtureKey(name, enc));
 }
 
+// This should be in sync with test/fixtures/utf8_test_text.txt.
+// We copy them here as a string because this is supposed to be used
+// in fs API tests.
+const utf8TestText = '永和九年,嵗在癸丑,暮春之初,會於會稽山隂之蘭亭,脩稧事也。' +
+                     '羣賢畢至,少長咸集。此地有崇山峻領,茂林脩竹;又有清流激湍,' +
+                     '暎帶左右。引以為流觴曲水,列坐其次。雖無絲竹管弦之盛,一觴一詠,' +
+                     '亦足以暢敘幽情。是日也,天朗氣清,恵風和暢;仰觀宇宙之大,' +
+                     '俯察品類之盛;所以遊目騁懐,足以極視聽之娛,信可樂也。夫人之相與,' +
+                     '俯仰一世,或取諸懐抱,悟言一室之內,或因寄所託,放浪形骸之外。' +
+                     '雖趣舎萬殊,靜躁不同,當其欣扵所遇,暫得扵己,怏然自足,' +
+                     '不知老之將至。及其所之既惓,情隨事遷,感慨係之矣。向之所欣,' +
+                     '俛仰之閒以為陳跡,猶不能不以之興懐;況脩短隨化,終期扵盡。' +
+                     '古人云:「死生亦大矣。」豈不痛哉!每攬昔人興感之由,若合一契,' +
+                     '未嘗不臨文嗟悼,不能喻之扵懐。固知一死生為虛誕,齊彭殤為妄作。' +
+                     '後之視今,亦由今之視昔,悲夫!故列敘時人,錄其所述,雖世殊事異,' +
+                     '所以興懐,其致一也。後之攬者,亦將有感扵斯文。';
+
 module.exports = {
   fixturesDir,
   path: fixturesPath,
@@ -42,4 +59,8 @@ module.exports = {
   readSync: readFixtureSync,
   readKey: readFixtureKey,
   readKeys: readFixtureKeys,
+  utf8TestText,
+  get utf8TestTextPath() {
+    return fixturesPath('utf8_test_text.txt');
+  },
 };
diff --git a/tests/node_compat/test/common/hijackstdio.js b/tests/node_compat/test/common/hijackstdio.js
index cb4be687f192d7..1c2ea68ef043e6 100644
--- a/tests/node_compat/test/common/hijackstdio.js
+++ b/tests/node_compat/test/common/hijackstdio.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/common/index.mjs b/tests/node_compat/test/common/index.mjs
index 1ede6073156e33..ac866b5ab15e80 100644
--- a/tests/node_compat/test/common/index.mjs
+++ b/tests/node_compat/test/common/index.mjs
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 import { createRequire } from 'module';
@@ -14,29 +14,25 @@ const {
   allowGlobals,
   buildType,
   canCreateSymLink,
-  checkoutEOL,
   childShouldThrowAndAbort,
-  createZeroFilledFile,
   enoughTestMem,
+  escapePOSIXShell,
   expectsError,
   expectWarning,
   getArrayBufferViews,
   getBufferSources,
-  getCallSite,
   getTTYfd,
   hasCrypto,
+  hasIntl,
   hasIPv6,
-  hasMultiLocalhost,
   isAIX,
   isAlive,
-  isDumbTerminal,
   isFreeBSD,
   isIBMi,
+  isInsideDirWithUnusualChars,
   isLinux,
-  isLinuxPPCBE,
-  isMainThread,
   isOpenBSD,
-  isOSX,
+  isMacOS,
   isSunOS,
   isWindows,
   localIPv6Hosts,
@@ -46,7 +42,6 @@ const {
   mustNotMutateObjectDeep,
   mustSucceed,
   nodeProcessAborted,
-  opensslCli,
   parseTestFlags,
   PIPE,
   platformTimeout,
@@ -54,7 +49,6 @@ const {
   runWithInvalidFD,
   skip,
   skipIf32Bits,
-  skipIfDumbTerminal,
   skipIfEslintMissing,
   skipIfInspectorDisabled,
   spawnPromisified,
@@ -66,31 +60,27 @@ export {
   allowGlobals,
   buildType,
   canCreateSymLink,
-  checkoutEOL,
   childShouldThrowAndAbort,
   createRequire,
-  createZeroFilledFile,
   enoughTestMem,
+  escapePOSIXShell,
   expectsError,
   expectWarning,
   getArrayBufferViews,
   getBufferSources,
-  getCallSite,
   getPort,
   getTTYfd,
   hasCrypto,
+  hasIntl,
   hasIPv6,
-  hasMultiLocalhost,
   isAIX,
   isAlive,
-  isDumbTerminal,
   isFreeBSD,
   isIBMi,
+  isInsideDirWithUnusualChars,
   isLinux,
-  isLinuxPPCBE,
-  isMainThread,
   isOpenBSD,
-  isOSX,
+  isMacOS,
   isSunOS,
   isWindows,
   localIPv6Hosts,
@@ -100,7 +90,6 @@ export {
   mustNotMutateObjectDeep,
   mustSucceed,
   nodeProcessAborted,
-  opensslCli,
   parseTestFlags,
   PIPE,
   platformTimeout,
@@ -108,7 +97,6 @@ export {
   runWithInvalidFD,
   skip,
   skipIf32Bits,
-  skipIfDumbTerminal,
   skipIfEslintMissing,
   skipIfInspectorDisabled,
   spawnPromisified,
diff --git a/tests/node_compat/test/common/tmpdir.js b/tests/node_compat/test/common/tmpdir.js
index c8951a1992fb73..ee81aa6bb5014b 100644
--- a/tests/node_compat/test/common/tmpdir.js
+++ b/tests/node_compat/test/common/tmpdir.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -12,17 +12,28 @@ const fs = require('fs');
 const path = require('path');
 const { pathToFileURL } = require('url');
 const { isMainThread } = require('worker_threads');
+const isUnixLike = process.platform !== 'win32';
+let escapePOSIXShell;
 
 function rmSync(pathname, useSpawn) {
   if (useSpawn) {
-    const escapedPath = pathname.replaceAll('\\', '\\\\');
-    spawnSync(
-      process.execPath,
-      [
-        '-e',
-        `require("fs").rmSync("${escapedPath}", { maxRetries: 3, recursive: true, force: true });`,
-      ],
-    );
+    if (isUnixLike) {
+      escapePOSIXShell ??= require('./index.js').escapePOSIXShell;
+      for (let i = 0; i < 3; i++) {
+        const { status } = spawnSync(...escapePOSIXShell`rm -rf "${pathname}"`);
+        if (status === 0) {
+          break;
+        }
+      }
+    } else {
+      spawnSync(
+        process.execPath,
+        [
+          '-e',
+          `fs.rmSync(${JSON.stringify(pathname)}, { maxRetries: 3, recursive: true, force: true });`,
+        ],
+      );
+    }
   } else {
     fs.rmSync(pathname, { maxRetries: 3, recursive: true, force: true });
   }
diff --git a/tests/node_compat/test/es-module/test-cjs-prototype-pollution.js b/tests/node_compat/test/es-module/test-cjs-prototype-pollution.js
index 8859653f49ac27..2b61d8bddba95b 100644
--- a/tests/node_compat/test/es-module/test-cjs-prototype-pollution.js
+++ b/tests/node_compat/test/es-module/test-cjs-prototype-pollution.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/es-module/test-esm-dynamic-import-mutating-fs.js b/tests/node_compat/test/es-module/test-esm-dynamic-import-mutating-fs.js
index 7e5050a87d0c1b..0da95759220901 100644
--- a/tests/node_compat/test/es-module/test-esm-dynamic-import-mutating-fs.js
+++ b/tests/node_compat/test/es-module/test-esm-dynamic-import-mutating-fs.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/es-module/test-esm-loader-cache-clearing.js b/tests/node_compat/test/es-module/test-esm-loader-cache-clearing.js
index 0f511fc867ac78..36885a686aa31d 100644
--- a/tests/node_compat/test/es-module/test-esm-loader-cache-clearing.js
+++ b/tests/node_compat/test/es-module/test-esm-loader-cache-clearing.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/es-module/test-esm-windows.js b/tests/node_compat/test/es-module/test-esm-windows.js
index 9150dbc1d9e402..0dfcf1e34e59d7 100644
--- a/tests/node_compat/test/es-module/test-esm-windows.js
+++ b/tests/node_compat/test/es-module/test-esm-windows.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/es-module/test-vm-compile-function-lineoffset.js b/tests/node_compat/test/es-module/test-vm-compile-function-lineoffset.js
index d287a3afb6d260..68716d4befd706 100644
--- a/tests/node_compat/test/es-module/test-vm-compile-function-lineoffset.js
+++ b/tests/node_compat/test/es-module/test-vm-compile-function-lineoffset.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/fixtures/GH-1899-output.js b/tests/node_compat/test/fixtures/GH-1899-output.js
index 736ce3681e5333..fd268fa57b1560 100644
--- a/tests/node_compat/test/fixtures/GH-1899-output.js
+++ b/tests/node_compat/test/fixtures/GH-1899-output.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/fixtures/a.js b/tests/node_compat/test/fixtures/a.js
index 18504e4781d003..ec6d403a6d0276 100644
--- a/tests/node_compat/test/fixtures/a.js
+++ b/tests/node_compat/test/fixtures/a.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/fixtures/child-process-persistent.js b/tests/node_compat/test/fixtures/child-process-persistent.js
index 9ca3f6b6a2c2f7..2c292324da3725 100644
--- a/tests/node_compat/test/fixtures/child-process-persistent.js
+++ b/tests/node_compat/test/fixtures/child-process-persistent.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 setInterval(function() {}, 9999);
diff --git a/tests/node_compat/test/fixtures/child_process_should_emit_error.js b/tests/node_compat/test/fixtures/child_process_should_emit_error.js
index e1c42d1d6d3d07..f18dc9829ffe59 100644
--- a/tests/node_compat/test/fixtures/child_process_should_emit_error.js
+++ b/tests/node_compat/test/fixtures/child_process_should_emit_error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/fixtures/exit.js b/tests/node_compat/test/fixtures/exit.js
index 20c16af2f4ea1b..9cfd1521c700f6 100644
--- a/tests/node_compat/test/fixtures/exit.js
+++ b/tests/node_compat/test/fixtures/exit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/fixtures/loop.js b/tests/node_compat/test/fixtures/loop.js
index e815aaabd9e3d8..deb1a92dd5f7a6 100644
--- a/tests/node_compat/test/fixtures/loop.js
+++ b/tests/node_compat/test/fixtures/loop.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 var t = 1;
diff --git a/tests/node_compat/test/fixtures/parent-process-nonpersistent.js b/tests/node_compat/test/fixtures/parent-process-nonpersistent.js
index 7aa0759ba6869f..5f271f9e547916 100644
--- a/tests/node_compat/test/fixtures/parent-process-nonpersistent.js
+++ b/tests/node_compat/test/fixtures/parent-process-nonpersistent.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 
diff --git a/tests/node_compat/test/fixtures/print-chars.js b/tests/node_compat/test/fixtures/print-chars.js
index 7617f7cd7d44ec..ff7dfd9334ebaf 100644
--- a/tests/node_compat/test/fixtures/print-chars.js
+++ b/tests/node_compat/test/fixtures/print-chars.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/internet/test-dns-idna2008.js b/tests/node_compat/test/internet/test-dns-idna2008.js
index 21072829370f0f..632da76ae6520d 100644
--- a/tests/node_compat/test/internet/test-dns-idna2008.js
+++ b/tests/node_compat/test/internet/test-dns-idna2008.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/internet/test-dns-lookup.js b/tests/node_compat/test/internet/test-dns-lookup.js
index 2f8405d36475fb..032bc5f83f7a47 100644
--- a/tests/node_compat/test/internet/test-dns-lookup.js
+++ b/tests/node_compat/test/internet/test-dns-lookup.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/internet/test-dns-promises-resolve.js b/tests/node_compat/test/internet/test-dns-promises-resolve.js
index aa4e1daa0b281e..e505ff0e1cd058 100644
--- a/tests/node_compat/test/internet/test-dns-promises-resolve.js
+++ b/tests/node_compat/test/internet/test-dns-promises-resolve.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/internet/test-dns-regress-6244.js b/tests/node_compat/test/internet/test-dns-regress-6244.js
index 76617f685b3ce8..093093e4afcd9c 100644
--- a/tests/node_compat/test/internet/test-dns-regress-6244.js
+++ b/tests/node_compat/test/internet/test-dns-regress-6244.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/internet/test-dns-setserver-in-callback-of-resolve4.js b/tests/node_compat/test/internet/test-dns-setserver-in-callback-of-resolve4.js
index ab2eac8fe1c7f9..91042ecdf5b807 100644
--- a/tests/node_compat/test/internet/test-dns-setserver-in-callback-of-resolve4.js
+++ b/tests/node_compat/test/internet/test-dns-setserver-in-callback-of-resolve4.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/internet/test-http-https-default-ports.js b/tests/node_compat/test/internet/test-http-https-default-ports.js
index 92ddbf36567f2f..ef7b7deb704ff4 100644
--- a/tests/node_compat/test/internet/test-http-https-default-ports.js
+++ b/tests/node_compat/test/internet/test-http-https-default-ports.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/message/eval_messages.js b/tests/node_compat/test/message/eval_messages.js
deleted file mode 100644
index c8e41c9109db53..00000000000000
--- a/tests/node_compat/test/message/eval_messages.js
+++ /dev/null
@@ -1,60 +0,0 @@
-// deno-fmt-ignore-file
-// deno-lint-ignore-file
-
-// Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
-// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
-
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-'use strict';
-
-require('../common');
-
-const spawn = require('child_process').spawn;
-
-function run(cmd, strict, cb) {
-  const args = [];
-  if (strict) args.push('--use_strict');
-  args.push('-pe', cmd);
-  const child = spawn(process.execPath, args);
-  child.stdout.pipe(process.stdout);
-  child.stderr.pipe(process.stdout);
-  child.on('close', cb);
-}
-
-const queue =
-  [ 'with(this){__filename}',
-    '42',
-    'throw new Error("hello")',
-    'var x = 100; y = x;',
-    'var ______________________________________________; throw 10' ];
-
-function go() {
-  const c = queue.shift();
-  if (!c) return console.log('done');
-  run(c, false, function() {
-    run(c, true, go);
-  });
-}
-
-go();
diff --git a/tests/node_compat/test/message/max_tick_depth.js b/tests/node_compat/test/message/max_tick_depth.js
index 5a2afb59676e68..ae1e43488dd220 100644
--- a/tests/node_compat/test/message/max_tick_depth.js
+++ b/tests/node_compat/test/message/max_tick_depth.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/message/stdin_messages.js b/tests/node_compat/test/message/stdin_messages.js
deleted file mode 100644
index 15911b69991d02..00000000000000
--- a/tests/node_compat/test/message/stdin_messages.js
+++ /dev/null
@@ -1,61 +0,0 @@
-// deno-fmt-ignore-file
-// deno-lint-ignore-file
-
-// Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
-// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
-
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-'use strict';
-
-require('../common');
-
-const spawn = require('child_process').spawn;
-
-function run(cmd, strict, cb) {
-  const args = [];
-  if (strict) args.push('--use_strict');
-  args.push('-p');
-  const child = spawn(process.execPath, args);
-  child.stdout.pipe(process.stdout);
-  child.stderr.pipe(process.stdout);
-  child.stdin.end(cmd);
-  child.on('close', cb);
-}
-
-const queue =
-  [ 'with(this){__filename}',
-    '42',
-    'throw new Error("hello")',
-    'let x = 100; y = x;',
-    'let ______________________________________________; throw 10' ];
-
-function go() {
-  const c = queue.shift();
-  if (!c) return console.log('done');
-  run(c, false, function() {
-    run(c, true, go);
-  });
-}
-
-go();
diff --git a/tests/node_compat/test/message/util_inspect_error.js b/tests/node_compat/test/message/util_inspect_error.js
index d3aad09fcdfc9b..f90546953e2c71 100644
--- a/tests/node_compat/test/message/util_inspect_error.js
+++ b/tests/node_compat/test/message/util_inspect_error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-assert-async.js b/tests/node_compat/test/parallel/test-assert-async.js
index 111cf44c6774ca..bd45bf019770d0 100644
--- a/tests/node_compat/test/parallel/test-assert-async.js
+++ b/tests/node_compat/test/parallel/test-assert-async.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-assert-strict-exists.js b/tests/node_compat/test/parallel/test-assert-strict-exists.js
deleted file mode 100644
index 806cff31f288d3..00000000000000
--- a/tests/node_compat/test/parallel/test-assert-strict-exists.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// deno-fmt-ignore-file
-// deno-lint-ignore-file
-
-// Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
-// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
-
-'use strict';
-
-require('../common');
-const assert = require('assert');
-
-assert.strictEqual(require('assert/strict'), assert.strict);
diff --git a/tests/node_compat/test/parallel/test-async-hooks-run-in-async-scope-caught-exception.js b/tests/node_compat/test/parallel/test-async-hooks-run-in-async-scope-caught-exception.js
index 17e1e35a873bc7..8cf04d03670ea3 100644
--- a/tests/node_compat/test/parallel/test-async-hooks-run-in-async-scope-caught-exception.js
+++ b/tests/node_compat/test/parallel/test-async-hooks-run-in-async-scope-caught-exception.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-async-hooks-run-in-async-scope-this-arg.js b/tests/node_compat/test/parallel/test-async-hooks-run-in-async-scope-this-arg.js
index f6886347fb84b8..9a66f11d3f439a 100644
--- a/tests/node_compat/test/parallel/test-async-hooks-run-in-async-scope-this-arg.js
+++ b/tests/node_compat/test/parallel/test-async-hooks-run-in-async-scope-this-arg.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-async-local-storage-bind.js b/tests/node_compat/test/parallel/test-async-local-storage-bind.js
index 2036c47aa9d1cb..c01c8f273a8f0a 100644
--- a/tests/node_compat/test/parallel/test-async-local-storage-bind.js
+++ b/tests/node_compat/test/parallel/test-async-local-storage-bind.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-async-local-storage-contexts.js b/tests/node_compat/test/parallel/test-async-local-storage-contexts.js
index de31622c142cd4..856f77393b45db 100644
--- a/tests/node_compat/test/parallel/test-async-local-storage-contexts.js
+++ b/tests/node_compat/test/parallel/test-async-local-storage-contexts.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-async-local-storage-deep-stack.js b/tests/node_compat/test/parallel/test-async-local-storage-deep-stack.js
index ee51af0eabbb51..4017b14312e541 100644
--- a/tests/node_compat/test/parallel/test-async-local-storage-deep-stack.js
+++ b/tests/node_compat/test/parallel/test-async-local-storage-deep-stack.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-async-local-storage-http-multiclients.js b/tests/node_compat/test/parallel/test-async-local-storage-http-multiclients.js
index 44e07f4c6b298f..0ce7fa26b500a7 100644
--- a/tests/node_compat/test/parallel/test-async-local-storage-http-multiclients.js
+++ b/tests/node_compat/test/parallel/test-async-local-storage-http-multiclients.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-async-local-storage-snapshot.js b/tests/node_compat/test/parallel/test-async-local-storage-snapshot.js
index 70fd7aa1c7ea19..0b5c4f03b02b6f 100644
--- a/tests/node_compat/test/parallel/test-async-local-storage-snapshot.js
+++ b/tests/node_compat/test/parallel/test-async-local-storage-snapshot.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-atomics-wake.js b/tests/node_compat/test/parallel/test-atomics-wake.js
index c7a4eca36a0d3a..7bf740085a292f 100644
--- a/tests/node_compat/test/parallel/test-atomics-wake.js
+++ b/tests/node_compat/test/parallel/test-atomics-wake.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-bad-unicode.js b/tests/node_compat/test/parallel/test-bad-unicode.js
index 5b72fd25e54df5..305773338c1c30 100644
--- a/tests/node_compat/test/parallel/test-bad-unicode.js
+++ b/tests/node_compat/test/parallel/test-bad-unicode.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-beforeexit-event-exit.js b/tests/node_compat/test/parallel/test-beforeexit-event-exit.js
index ef8963abf5949b..943d5bd6b6420d 100644
--- a/tests/node_compat/test/parallel/test-beforeexit-event-exit.js
+++ b/tests/node_compat/test/parallel/test-beforeexit-event-exit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-blob-buffer-too-large.js b/tests/node_compat/test/parallel/test-blob-buffer-too-large.js
deleted file mode 100644
index 8ae291fda2103a..00000000000000
--- a/tests/node_compat/test/parallel/test-blob-buffer-too-large.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// deno-fmt-ignore-file
-// deno-lint-ignore-file
-
-// Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
-// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
-
-// Flags: --no-warnings
-'use strict';
-
-const common = require('../common');
-const assert = require('assert');
-const { Blob, kMaxLength } = require('buffer');
-
-if (common.isFreeBSD)
-  common.skip('Oversized buffer make the FreeBSD CI runner crash');
-
-try {
-  new Blob([new Uint8Array(kMaxLength), [1]]);
-} catch (e) {
-  if (
-    e.message === 'Array buffer allocation failed' ||
-    e.message === `Invalid typed array length: ${kMaxLength}`
-  ) {
-    common.skip(
-      'Insufficient memory on this platform for oversized buffer test.'
-    );
-  } else {
-    assert.strictEqual(e.code, 'ERR_BUFFER_TOO_LARGE');
-  }
-}
diff --git a/tests/node_compat/test/parallel/test-btoa-atob.js b/tests/node_compat/test/parallel/test-btoa-atob.js
index 60c5d58c0f8fc3..c33ef108069623 100644
--- a/tests/node_compat/test/parallel/test-btoa-atob.js
+++ b/tests/node_compat/test/parallel/test-btoa-atob.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-ascii.js b/tests/node_compat/test/parallel/test-buffer-ascii.js
index f47a841e78530c..64e38f83ad9e82 100644
--- a/tests/node_compat/test/parallel/test-buffer-ascii.js
+++ b/tests/node_compat/test/parallel/test-buffer-ascii.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-buffer-badhex.js b/tests/node_compat/test/parallel/test-buffer-badhex.js
index ee227f578ef5f3..fa9f91acc22162 100644
--- a/tests/node_compat/test/parallel/test-buffer-badhex.js
+++ b/tests/node_compat/test/parallel/test-buffer-badhex.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-bigint64.js b/tests/node_compat/test/parallel/test-buffer-bigint64.js
index 10fdb761b46d67..ffa77b8dd5e05c 100644
--- a/tests/node_compat/test/parallel/test-buffer-bigint64.js
+++ b/tests/node_compat/test/parallel/test-buffer-bigint64.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-bytelength.js b/tests/node_compat/test/parallel/test-buffer-bytelength.js
index 781c08a1a1ba71..87c4390e98e518 100644
--- a/tests/node_compat/test/parallel/test-buffer-bytelength.js
+++ b/tests/node_compat/test/parallel/test-buffer-bytelength.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-compare-offset.js b/tests/node_compat/test/parallel/test-buffer-compare-offset.js
index 7e8f6d405a2760..98b7f950578931 100644
--- a/tests/node_compat/test/parallel/test-buffer-compare-offset.js
+++ b/tests/node_compat/test/parallel/test-buffer-compare-offset.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-concat.js b/tests/node_compat/test/parallel/test-buffer-concat.js
index ba84bbd6d4ea88..9e5ca38fb1411b 100644
--- a/tests/node_compat/test/parallel/test-buffer-concat.js
+++ b/tests/node_compat/test/parallel/test-buffer-concat.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-buffer-constants.js b/tests/node_compat/test/parallel/test-buffer-constants.js
index bbe3f579b762cf..24d3baa9d5c7cc 100644
--- a/tests/node_compat/test/parallel/test-buffer-constants.js
+++ b/tests/node_compat/test/parallel/test-buffer-constants.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-copy.js b/tests/node_compat/test/parallel/test-buffer-copy.js
index 8526070c24f8cc..9798c54a5f9e37 100644
--- a/tests/node_compat/test/parallel/test-buffer-copy.js
+++ b/tests/node_compat/test/parallel/test-buffer-copy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-equals.js b/tests/node_compat/test/parallel/test-buffer-equals.js
index b74b86f6520288..4a4672d2ac037c 100644
--- a/tests/node_compat/test/parallel/test-buffer-equals.js
+++ b/tests/node_compat/test/parallel/test-buffer-equals.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-failed-alloc-typed-arrays.js b/tests/node_compat/test/parallel/test-buffer-failed-alloc-typed-arrays.js
index 6055da4ab7b76d..20351c81b8fbbe 100644
--- a/tests/node_compat/test/parallel/test-buffer-failed-alloc-typed-arrays.js
+++ b/tests/node_compat/test/parallel/test-buffer-failed-alloc-typed-arrays.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -19,7 +19,7 @@ const SlowBuffer = require('buffer').SlowBuffer;
 // whether or not to zero-fill was not being reset, causing TypedArrays to
 // allocate incorrectly.
 const zeroArray = new Uint32Array(10).fill(0);
-const sizes = [1e10, 0, 0.1, -1, 'a', undefined, null, NaN];
+const sizes = [1e20, 0, 0.1, -1, 'a', undefined, null, NaN];
 const allocators = [
   Buffer,
   SlowBuffer,
diff --git a/tests/node_compat/test/parallel/test-buffer-fakes.js b/tests/node_compat/test/parallel/test-buffer-fakes.js
index e9db549cb228be..0fb6f83b94d912 100644
--- a/tests/node_compat/test/parallel/test-buffer-fakes.js
+++ b/tests/node_compat/test/parallel/test-buffer-fakes.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-inheritance.js b/tests/node_compat/test/parallel/test-buffer-inheritance.js
index 7c5564ade0c358..88271a87121272 100644
--- a/tests/node_compat/test/parallel/test-buffer-inheritance.js
+++ b/tests/node_compat/test/parallel/test-buffer-inheritance.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-isascii.js b/tests/node_compat/test/parallel/test-buffer-isascii.js
index 6c4abfb71d9ddb..35bfc1e19a1f1c 100644
--- a/tests/node_compat/test/parallel/test-buffer-isascii.js
+++ b/tests/node_compat/test/parallel/test-buffer-isascii.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-isencoding.js b/tests/node_compat/test/parallel/test-buffer-isencoding.js
index 68bb94d60d28a0..9b2c1b1941727b 100644
--- a/tests/node_compat/test/parallel/test-buffer-isencoding.js
+++ b/tests/node_compat/test/parallel/test-buffer-isencoding.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-isutf8.js b/tests/node_compat/test/parallel/test-buffer-isutf8.js
index 3c4d31da4b554d..7382232316b548 100644
--- a/tests/node_compat/test/parallel/test-buffer-isutf8.js
+++ b/tests/node_compat/test/parallel/test-buffer-isutf8.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-iterator.js b/tests/node_compat/test/parallel/test-buffer-iterator.js
index 76d5df5e63a0c5..f3c1a1a6747198 100644
--- a/tests/node_compat/test/parallel/test-buffer-iterator.js
+++ b/tests/node_compat/test/parallel/test-buffer-iterator.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-new.js b/tests/node_compat/test/parallel/test-buffer-new.js
index 110de4f3fe16b5..5a40713e1ad42d 100644
--- a/tests/node_compat/test/parallel/test-buffer-new.js
+++ b/tests/node_compat/test/parallel/test-buffer-new.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-no-negative-allocation.js b/tests/node_compat/test/parallel/test-buffer-no-negative-allocation.js
index 2ad0642f7fce42..52dc0edda4e817 100644
--- a/tests/node_compat/test/parallel/test-buffer-no-negative-allocation.js
+++ b/tests/node_compat/test/parallel/test-buffer-no-negative-allocation.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-nopendingdep-map.js b/tests/node_compat/test/parallel/test-buffer-nopendingdep-map.js
index c94ac5db40ed44..83864d9f77c773 100644
--- a/tests/node_compat/test/parallel/test-buffer-nopendingdep-map.js
+++ b/tests/node_compat/test/parallel/test-buffer-nopendingdep-map.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --no-warnings --pending-deprecation
diff --git a/tests/node_compat/test/parallel/test-buffer-of-no-deprecation.js b/tests/node_compat/test/parallel/test-buffer-of-no-deprecation.js
index 661201d2ff7516..d2f5b37af739b7 100644
--- a/tests/node_compat/test/parallel/test-buffer-of-no-deprecation.js
+++ b/tests/node_compat/test/parallel/test-buffer-of-no-deprecation.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-over-max-length.js b/tests/node_compat/test/parallel/test-buffer-over-max-length.js
index 56107e88313e02..bcd21151b11a9b 100644
--- a/tests/node_compat/test/parallel/test-buffer-over-max-length.js
+++ b/tests/node_compat/test/parallel/test-buffer-over-max-length.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-parent-property.js b/tests/node_compat/test/parallel/test-buffer-parent-property.js
index 44c4e83fea3b84..f6bb7d8e882b9d 100644
--- a/tests/node_compat/test/parallel/test-buffer-parent-property.js
+++ b/tests/node_compat/test/parallel/test-buffer-parent-property.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-read.js b/tests/node_compat/test/parallel/test-buffer-read.js
index 751572e54fd45c..1494db2c913565 100644
--- a/tests/node_compat/test/parallel/test-buffer-read.js
+++ b/tests/node_compat/test/parallel/test-buffer-read.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-readdouble.js b/tests/node_compat/test/parallel/test-buffer-readdouble.js
index ba159661a58c9f..649aa743272760 100644
--- a/tests/node_compat/test/parallel/test-buffer-readdouble.js
+++ b/tests/node_compat/test/parallel/test-buffer-readdouble.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-readfloat.js b/tests/node_compat/test/parallel/test-buffer-readfloat.js
index 56ad624cca1f1c..bf129bb886257e 100644
--- a/tests/node_compat/test/parallel/test-buffer-readfloat.js
+++ b/tests/node_compat/test/parallel/test-buffer-readfloat.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-readint.js b/tests/node_compat/test/parallel/test-buffer-readint.js
index ccf8e3616de65f..4330bdc4e77264 100644
--- a/tests/node_compat/test/parallel/test-buffer-readint.js
+++ b/tests/node_compat/test/parallel/test-buffer-readint.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-readuint.js b/tests/node_compat/test/parallel/test-buffer-readuint.js
index 948dc21962e61d..7500fda959f0f3 100644
--- a/tests/node_compat/test/parallel/test-buffer-readuint.js
+++ b/tests/node_compat/test/parallel/test-buffer-readuint.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-safe-unsafe.js b/tests/node_compat/test/parallel/test-buffer-safe-unsafe.js
index f3ca64c5f19f75..12b643662719e9 100644
--- a/tests/node_compat/test/parallel/test-buffer-safe-unsafe.js
+++ b/tests/node_compat/test/parallel/test-buffer-safe-unsafe.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-sharedarraybuffer.js b/tests/node_compat/test/parallel/test-buffer-sharedarraybuffer.js
index a7e8f03d92c1b7..d83e145aa19163 100644
--- a/tests/node_compat/test/parallel/test-buffer-sharedarraybuffer.js
+++ b/tests/node_compat/test/parallel/test-buffer-sharedarraybuffer.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-slice.js b/tests/node_compat/test/parallel/test-buffer-slice.js
index f67e59a6935fba..3f22a7856d138a 100644
--- a/tests/node_compat/test/parallel/test-buffer-slice.js
+++ b/tests/node_compat/test/parallel/test-buffer-slice.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-buffer-slow.js b/tests/node_compat/test/parallel/test-buffer-slow.js
index 16ead49c8a4230..78ba9b3b8fecf3 100644
--- a/tests/node_compat/test/parallel/test-buffer-slow.js
+++ b/tests/node_compat/test/parallel/test-buffer-slow.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -37,14 +37,6 @@ for (const [key, value] of sb.entries()) {
 
 // Should work with edge cases
 assert.strictEqual(SlowBuffer(0).length, 0);
-try {
-  assert.strictEqual(
-    SlowBuffer(buffer.kMaxLength).length, buffer.kMaxLength);
-} catch (e) {
-  // Don't match on message as it is from the JavaScript engine. V8 and
-  // ChakraCore provide different messages.
-  assert.strictEqual(e.name, 'RangeError');
-}
 
 // Should throw with invalid length type
 const bufferInvalidTypeMsg = {
diff --git a/tests/node_compat/test/parallel/test-buffer-swap.js b/tests/node_compat/test/parallel/test-buffer-swap.js
index 7afdaf1db8e3f0..ce22a812b75d0a 100644
--- a/tests/node_compat/test/parallel/test-buffer-swap.js
+++ b/tests/node_compat/test/parallel/test-buffer-swap.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-tojson.js b/tests/node_compat/test/parallel/test-buffer-tojson.js
index b135e655ab900a..eb55f9f175f363 100644
--- a/tests/node_compat/test/parallel/test-buffer-tojson.js
+++ b/tests/node_compat/test/parallel/test-buffer-tojson.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-tostring-rangeerror.js b/tests/node_compat/test/parallel/test-buffer-tostring-rangeerror.js
index dc0f3afc5682ac..d913abd4def72a 100644
--- a/tests/node_compat/test/parallel/test-buffer-tostring-rangeerror.js
+++ b/tests/node_compat/test/parallel/test-buffer-tostring-rangeerror.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-tostring.js b/tests/node_compat/test/parallel/test-buffer-tostring.js
index ce018a1b69ac1c..20ebc524211467 100644
--- a/tests/node_compat/test/parallel/test-buffer-tostring.js
+++ b/tests/node_compat/test/parallel/test-buffer-tostring.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-writedouble.js b/tests/node_compat/test/parallel/test-buffer-writedouble.js
index a41a433a0fc134..4a993343136d50 100644
--- a/tests/node_compat/test/parallel/test-buffer-writedouble.js
+++ b/tests/node_compat/test/parallel/test-buffer-writedouble.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-writefloat.js b/tests/node_compat/test/parallel/test-buffer-writefloat.js
index 56b9a4ebc89584..504cf74861d461 100644
--- a/tests/node_compat/test/parallel/test-buffer-writefloat.js
+++ b/tests/node_compat/test/parallel/test-buffer-writefloat.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-writeint.js b/tests/node_compat/test/parallel/test-buffer-writeint.js
index df36f6a7779e10..78bf9e77df403f 100644
--- a/tests/node_compat/test/parallel/test-buffer-writeint.js
+++ b/tests/node_compat/test/parallel/test-buffer-writeint.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-writeuint.js b/tests/node_compat/test/parallel/test-buffer-writeuint.js
index 831c27f602d279..075d3fc8f41879 100644
--- a/tests/node_compat/test/parallel/test-buffer-writeuint.js
+++ b/tests/node_compat/test/parallel/test-buffer-writeuint.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-zero-fill-cli.js b/tests/node_compat/test/parallel/test-buffer-zero-fill-cli.js
index 8edddbe418d8b5..e886c6cccb3c98 100644
--- a/tests/node_compat/test/parallel/test-buffer-zero-fill-cli.js
+++ b/tests/node_compat/test/parallel/test-buffer-zero-fill-cli.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-zero-fill-reset.js b/tests/node_compat/test/parallel/test-buffer-zero-fill-reset.js
index 86236f2c332aa7..edb6ab79c95b73 100644
--- a/tests/node_compat/test/parallel/test-buffer-zero-fill-reset.js
+++ b/tests/node_compat/test/parallel/test-buffer-zero-fill-reset.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-buffer-zero-fill.js b/tests/node_compat/test/parallel/test-buffer-zero-fill.js
index 9291887523765f..42b7bd67f5ff78 100644
--- a/tests/node_compat/test/parallel/test-buffer-zero-fill.js
+++ b/tests/node_compat/test/parallel/test-buffer-zero-fill.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-child-process-default-options.js b/tests/node_compat/test/parallel/test-child-process-default-options.js
index 29bbf49a633e17..c003084c9bb0f9 100644
--- a/tests/node_compat/test/parallel/test-child-process-default-options.js
+++ b/tests/node_compat/test/parallel/test-child-process-default-options.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-child-process-detached.js b/tests/node_compat/test/parallel/test-child-process-detached.js
index c9315318043110..f094031710570a 100644
--- a/tests/node_compat/test/parallel/test-child-process-detached.js
+++ b/tests/node_compat/test/parallel/test-child-process-detached.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-child-process-double-pipe.js b/tests/node_compat/test/parallel/test-child-process-double-pipe.js
index ac75915564f0af..d3fe7961ee7495 100644
--- a/tests/node_compat/test/parallel/test-child-process-double-pipe.js
+++ b/tests/node_compat/test/parallel/test-child-process-double-pipe.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-child-process-exec-cwd.js b/tests/node_compat/test/parallel/test-child-process-exec-cwd.js
index 09e06b20a732b5..c3e0efc2e7fa89 100644
--- a/tests/node_compat/test/parallel/test-child-process-exec-cwd.js
+++ b/tests/node_compat/test/parallel/test-child-process-exec-cwd.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-child-process-exec-env.js b/tests/node_compat/test/parallel/test-child-process-exec-env.js
index 5e144074b04f10..d075c232b870bf 100644
--- a/tests/node_compat/test/parallel/test-child-process-exec-env.js
+++ b/tests/node_compat/test/parallel/test-child-process-exec-env.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-child-process-exec-error.js b/tests/node_compat/test/parallel/test-child-process-exec-error.js
index ab16bdf7d5de81..7c9c576e7fba5e 100644
--- a/tests/node_compat/test/parallel/test-child-process-exec-error.js
+++ b/tests/node_compat/test/parallel/test-child-process-exec-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-child-process-exec-kill-throws.js b/tests/node_compat/test/parallel/test-child-process-exec-kill-throws.js
index 42e7235d21ca47..e3bb6998cf05d9 100644
--- a/tests/node_compat/test/parallel/test-child-process-exec-kill-throws.js
+++ b/tests/node_compat/test/parallel/test-child-process-exec-kill-throws.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-child-process-exec-stdout-stderr-data-string.js b/tests/node_compat/test/parallel/test-child-process-exec-stdout-stderr-data-string.js
index 7d15e05696e64b..efe7298b7a1a75 100644
--- a/tests/node_compat/test/parallel/test-child-process-exec-stdout-stderr-data-string.js
+++ b/tests/node_compat/test/parallel/test-child-process-exec-stdout-stderr-data-string.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-child-process-execfile-maxbuf.js b/tests/node_compat/test/parallel/test-child-process-execfile-maxbuf.js
index a30c8b55efdc4c..fe389a9e4cd82a 100644
--- a/tests/node_compat/test/parallel/test-child-process-execfile-maxbuf.js
+++ b/tests/node_compat/test/parallel/test-child-process-execfile-maxbuf.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-child-process-execfilesync-maxbuf.js b/tests/node_compat/test/parallel/test-child-process-execfilesync-maxbuf.js
index b44160ffcd82c8..c500934832e8f8 100644
--- a/tests/node_compat/test/parallel/test-child-process-execfilesync-maxbuf.js
+++ b/tests/node_compat/test/parallel/test-child-process-execfilesync-maxbuf.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-child-process-exit-code.js b/tests/node_compat/test/parallel/test-child-process-exit-code.js
index 24b5bb6d6c401f..ece3c1267b3036 100644
--- a/tests/node_compat/test/parallel/test-child-process-exit-code.js
+++ b/tests/node_compat/test/parallel/test-child-process-exit-code.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-child-process-flush-stdio.js b/tests/node_compat/test/parallel/test-child-process-flush-stdio.js
index 3909eca4a76fa0..3982f6b8859c0b 100644
--- a/tests/node_compat/test/parallel/test-child-process-flush-stdio.js
+++ b/tests/node_compat/test/parallel/test-child-process-flush-stdio.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-child-process-fork3.js b/tests/node_compat/test/parallel/test-child-process-fork3.js
index cda9098a3b161c..0b33dacf45b77b 100644
--- a/tests/node_compat/test/parallel/test-child-process-fork3.js
+++ b/tests/node_compat/test/parallel/test-child-process-fork3.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-child-process-ipc-next-tick.js b/tests/node_compat/test/parallel/test-child-process-ipc-next-tick.js
index cf37a1c5dedbea..938afa865b4dcc 100644
--- a/tests/node_compat/test/parallel/test-child-process-ipc-next-tick.js
+++ b/tests/node_compat/test/parallel/test-child-process-ipc-next-tick.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-child-process-ipc.js b/tests/node_compat/test/parallel/test-child-process-ipc.js
index 9474b24ed3f170..a6342ce82f9ee3 100644
--- a/tests/node_compat/test/parallel/test-child-process-ipc.js
+++ b/tests/node_compat/test/parallel/test-child-process-ipc.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-child-process-set-blocking.js b/tests/node_compat/test/parallel/test-child-process-set-blocking.js
index 6d3b6120337891..8bd998cf9694c9 100644
--- a/tests/node_compat/test/parallel/test-child-process-set-blocking.js
+++ b/tests/node_compat/test/parallel/test-child-process-set-blocking.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-child-process-spawn-args.js b/tests/node_compat/test/parallel/test-child-process-spawn-args.js
index 55f9dbcad871f7..be237137c4567b 100644
--- a/tests/node_compat/test/parallel/test-child-process-spawn-args.js
+++ b/tests/node_compat/test/parallel/test-child-process-spawn-args.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-child-process-spawn-event.js b/tests/node_compat/test/parallel/test-child-process-spawn-event.js
index 0b044a8013803c..c2312991135412 100644
--- a/tests/node_compat/test/parallel/test-child-process-spawn-event.js
+++ b/tests/node_compat/test/parallel/test-child-process-spawn-event.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-child-process-spawnsync-args.js b/tests/node_compat/test/parallel/test-child-process-spawnsync-args.js
index 7909eddeffdb47..ca43de86792e8f 100644
--- a/tests/node_compat/test/parallel/test-child-process-spawnsync-args.js
+++ b/tests/node_compat/test/parallel/test-child-process-spawnsync-args.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-child-process-spawnsync-env.js b/tests/node_compat/test/parallel/test-child-process-spawnsync-env.js
index fa9df7d27f85e8..349d25f3d5e96b 100644
--- a/tests/node_compat/test/parallel/test-child-process-spawnsync-env.js
+++ b/tests/node_compat/test/parallel/test-child-process-spawnsync-env.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-child-process-spawnsync-maxbuf.js b/tests/node_compat/test/parallel/test-child-process-spawnsync-maxbuf.js
index df7b4a3058ce5c..065c6cd280d4e5 100644
--- a/tests/node_compat/test/parallel/test-child-process-spawnsync-maxbuf.js
+++ b/tests/node_compat/test/parallel/test-child-process-spawnsync-maxbuf.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-child-process-spawnsync-validation-errors.js b/tests/node_compat/test/parallel/test-child-process-spawnsync-validation-errors.js
index 5e6ffda9d58b58..800d1ec6926a16 100644
--- a/tests/node_compat/test/parallel/test-child-process-spawnsync-validation-errors.js
+++ b/tests/node_compat/test/parallel/test-child-process-spawnsync-validation-errors.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-child-process-spawnsync.js b/tests/node_compat/test/parallel/test-child-process-spawnsync.js
index e6e667a22720ab..756ae7ea756294 100644
--- a/tests/node_compat/test/parallel/test-child-process-spawnsync.js
+++ b/tests/node_compat/test/parallel/test-child-process-spawnsync.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-child-process-stdin-ipc.js b/tests/node_compat/test/parallel/test-child-process-stdin-ipc.js
index 46bfdc7be6064d..68a25add632a34 100644
--- a/tests/node_compat/test/parallel/test-child-process-stdin-ipc.js
+++ b/tests/node_compat/test/parallel/test-child-process-stdin-ipc.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-child-process-stdio-inherit.js b/tests/node_compat/test/parallel/test-child-process-stdio-inherit.js
index 281ae39d0fff97..a75abfd751e94a 100644
--- a/tests/node_compat/test/parallel/test-child-process-stdio-inherit.js
+++ b/tests/node_compat/test/parallel/test-child-process-stdio-inherit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-child-process-stdio-overlapped.js b/tests/node_compat/test/parallel/test-child-process-stdio-overlapped.js
index 9ee17df49f16e8..abc8be4e6a6e27 100644
--- a/tests/node_compat/test/parallel/test-child-process-stdio-overlapped.js
+++ b/tests/node_compat/test/parallel/test-child-process-stdio-overlapped.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Test for "overlapped" stdio option. This test uses the "overlapped-checker"
diff --git a/tests/node_compat/test/parallel/test-child-process-stdout-flush-exit.js b/tests/node_compat/test/parallel/test-child-process-stdout-flush-exit.js
index 9f417bc1c79415..5e9f7568d5caca 100644
--- a/tests/node_compat/test/parallel/test-child-process-stdout-flush-exit.js
+++ b/tests/node_compat/test/parallel/test-child-process-stdout-flush-exit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-child-process-stdout-flush.js b/tests/node_compat/test/parallel/test-child-process-stdout-flush.js
index 9ef210e5b1984c..b5a5784c966c7a 100644
--- a/tests/node_compat/test/parallel/test-child-process-stdout-flush.js
+++ b/tests/node_compat/test/parallel/test-child-process-stdout-flush.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-client-request-destroy.js b/tests/node_compat/test/parallel/test-client-request-destroy.js
index dabdb8c4d3a32c..0e8372a5a7aaa8 100644
--- a/tests/node_compat/test/parallel/test-client-request-destroy.js
+++ b/tests/node_compat/test/parallel/test-client-request-destroy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-cluster-uncaught-exception.js b/tests/node_compat/test/parallel/test-cluster-uncaught-exception.js
index 96a5d261867ac4..3361bab10ce284 100644
--- a/tests/node_compat/test/parallel/test-cluster-uncaught-exception.js
+++ b/tests/node_compat/test/parallel/test-cluster-uncaught-exception.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-console-assign-undefined.js b/tests/node_compat/test/parallel/test-console-assign-undefined.js
index f19fb5c1f79eed..6ba92adf5ac049 100644
--- a/tests/node_compat/test/parallel/test-console-assign-undefined.js
+++ b/tests/node_compat/test/parallel/test-console-assign-undefined.js
@@ -2,34 +2,34 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
 
-// Patch global.console before importing modules that may modify the console
+// Patch globalThis.console before importing modules that may modify the console
 // object.
 
-const tmp = global.console;
-global.console = 42;
+const tmp = globalThis.console;
+globalThis.console = 42;
 
 require('../common');
 const assert = require('assert');
 
 // Originally the console had a getter. Test twice to verify it had no side
 // effect.
-assert.strictEqual(global.console, 42);
-assert.strictEqual(global.console, 42);
+assert.strictEqual(globalThis.console, 42);
+assert.strictEqual(globalThis.console, 42);
 
 assert.throws(
   () => console.log('foo'),
   { name: 'TypeError' }
 );
 
-global.console = 1;
-assert.strictEqual(global.console, 1);
+globalThis.console = 1;
+assert.strictEqual(globalThis.console, 1);
 assert.strictEqual(console, 1);
 
 // Reset the console
-global.console = tmp;
+globalThis.console = tmp;
 console.log('foo');
diff --git a/tests/node_compat/test/parallel/test-console-async-write-error.js b/tests/node_compat/test/parallel/test-console-async-write-error.js
index 812848f6e5e61a..5e320175a6c5e3 100644
--- a/tests/node_compat/test/parallel/test-console-async-write-error.js
+++ b/tests/node_compat/test/parallel/test-console-async-write-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-console-group.js b/tests/node_compat/test/parallel/test-console-group.js
index 272981e4672cfe..1add0a83fb86a3 100644
--- a/tests/node_compat/test/parallel/test-console-group.js
+++ b/tests/node_compat/test/parallel/test-console-group.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-console-log-stdio-broken-dest.js b/tests/node_compat/test/parallel/test-console-log-stdio-broken-dest.js
index cbbcd9d92b776e..1986f75d6f9861 100644
--- a/tests/node_compat/test/parallel/test-console-log-stdio-broken-dest.js
+++ b/tests/node_compat/test/parallel/test-console-log-stdio-broken-dest.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-console-log-throw-primitive.js b/tests/node_compat/test/parallel/test-console-log-throw-primitive.js
index 3d397598456e73..97e0a57c2a2a29 100644
--- a/tests/node_compat/test/parallel/test-console-log-throw-primitive.js
+++ b/tests/node_compat/test/parallel/test-console-log-throw-primitive.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-console-no-swallow-stack-overflow.js b/tests/node_compat/test/parallel/test-console-no-swallow-stack-overflow.js
index d7fc0269b5cea6..8f0ecfccce429e 100644
--- a/tests/node_compat/test/parallel/test-console-no-swallow-stack-overflow.js
+++ b/tests/node_compat/test/parallel/test-console-no-swallow-stack-overflow.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-console-not-call-toString.js b/tests/node_compat/test/parallel/test-console-not-call-toString.js
index fd7416dc2d9b32..d5d0b6b3c5d28e 100644
--- a/tests/node_compat/test/parallel/test-console-not-call-toString.js
+++ b/tests/node_compat/test/parallel/test-console-not-call-toString.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-console-self-assign.js b/tests/node_compat/test/parallel/test-console-self-assign.js
index 780bbfa81c33bd..798ad6321fb41c 100644
--- a/tests/node_compat/test/parallel/test-console-self-assign.js
+++ b/tests/node_compat/test/parallel/test-console-self-assign.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -10,4 +10,4 @@
 require('../common');
 
 // Assigning to itself should not throw.
-global.console = global.console; // eslint-disable-line no-self-assign
+globalThis.console = globalThis.console; // eslint-disable-line no-self-assign
diff --git a/tests/node_compat/test/parallel/test-console-sync-write-error.js b/tests/node_compat/test/parallel/test-console-sync-write-error.js
index 58fca44ba05531..35dfeeb433507a 100644
--- a/tests/node_compat/test/parallel/test-console-sync-write-error.js
+++ b/tests/node_compat/test/parallel/test-console-sync-write-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-console-table.js b/tests/node_compat/test/parallel/test-console-table.js
index 6a3de08f21b85e..d4be7f2aa23e82 100644
--- a/tests/node_compat/test/parallel/test-console-table.js
+++ b/tests/node_compat/test/parallel/test-console-table.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-crypto-dh-shared.js b/tests/node_compat/test/parallel/test-crypto-dh-shared.js
index d2afeaf38c00a7..3bd08526ec3b28 100644
--- a/tests/node_compat/test/parallel/test-crypto-dh-shared.js
+++ b/tests/node_compat/test/parallel/test-crypto-dh-shared.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-crypto-domain.js b/tests/node_compat/test/parallel/test-crypto-domain.js
index e0a7c7f11eb911..2bb571f46908c1 100644
--- a/tests/node_compat/test/parallel/test-crypto-domain.js
+++ b/tests/node_compat/test/parallel/test-crypto-domain.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-crypto-from-binary.js b/tests/node_compat/test/parallel/test-crypto-from-binary.js
index f1eee30a9620b4..c9b92e092d037a 100644
--- a/tests/node_compat/test/parallel/test-crypto-from-binary.js
+++ b/tests/node_compat/test/parallel/test-crypto-from-binary.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-crypto-keygen-dh-classic.js b/tests/node_compat/test/parallel/test-crypto-keygen-dh-classic.js
index 172a91470d807a..bf7cb04125d243 100644
--- a/tests/node_compat/test/parallel/test-crypto-keygen-dh-classic.js
+++ b/tests/node_compat/test/parallel/test-crypto-keygen-dh-classic.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-crypto-keygen-duplicate-deprecated-option.js b/tests/node_compat/test/parallel/test-crypto-keygen-duplicate-deprecated-option.js
index 300c8d893d0ddf..ce9f202b569245 100644
--- a/tests/node_compat/test/parallel/test-crypto-keygen-duplicate-deprecated-option.js
+++ b/tests/node_compat/test/parallel/test-crypto-keygen-duplicate-deprecated-option.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-crypto-keygen-empty-passphrase-no-error.js b/tests/node_compat/test/parallel/test-crypto-keygen-empty-passphrase-no-error.js
index ad6f10931cda40..28c5541ac153a0 100644
--- a/tests/node_compat/test/parallel/test-crypto-keygen-empty-passphrase-no-error.js
+++ b/tests/node_compat/test/parallel/test-crypto-keygen-empty-passphrase-no-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-crypto-keygen-key-objects.js b/tests/node_compat/test/parallel/test-crypto-keygen-key-objects.js
index e0dba542979333..dd5771fea63a6d 100644
--- a/tests/node_compat/test/parallel/test-crypto-keygen-key-objects.js
+++ b/tests/node_compat/test/parallel/test-crypto-keygen-key-objects.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-crypto-keygen-non-standard-public-exponent.js b/tests/node_compat/test/parallel/test-crypto-keygen-non-standard-public-exponent.js
index b769bb2437d1d0..1158fcc3bc51f4 100644
--- a/tests/node_compat/test/parallel/test-crypto-keygen-non-standard-public-exponent.js
+++ b/tests/node_compat/test/parallel/test-crypto-keygen-non-standard-public-exponent.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-crypto-keygen-rfc8017-9-1.js b/tests/node_compat/test/parallel/test-crypto-keygen-rfc8017-9-1.js
index 2019f03f6ac5bf..3ea6c207624f6c 100644
--- a/tests/node_compat/test/parallel/test-crypto-keygen-rfc8017-9-1.js
+++ b/tests/node_compat/test/parallel/test-crypto-keygen-rfc8017-9-1.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-crypto-keygen-rfc8017-a-2-3.js b/tests/node_compat/test/parallel/test-crypto-keygen-rfc8017-a-2-3.js
index fe732269a3c25c..abb6ffa15a4c1d 100644
--- a/tests/node_compat/test/parallel/test-crypto-keygen-rfc8017-a-2-3.js
+++ b/tests/node_compat/test/parallel/test-crypto-keygen-rfc8017-a-2-3.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-crypto-lazy-transform-writable.js b/tests/node_compat/test/parallel/test-crypto-lazy-transform-writable.js
index af0cf7d688a1f6..691e8bb10990f5 100644
--- a/tests/node_compat/test/parallel/test-crypto-lazy-transform-writable.js
+++ b/tests/node_compat/test/parallel/test-crypto-lazy-transform-writable.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-crypto-op-during-process-exit.js b/tests/node_compat/test/parallel/test-crypto-op-during-process-exit.js
index 2c75cbfcb737ba..c23d684e190474 100644
--- a/tests/node_compat/test/parallel/test-crypto-op-during-process-exit.js
+++ b/tests/node_compat/test/parallel/test-crypto-op-during-process-exit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-crypto-padding-aes256.js b/tests/node_compat/test/parallel/test-crypto-padding-aes256.js
index 812755a95cdbf5..9a7b15c9360584 100644
--- a/tests/node_compat/test/parallel/test-crypto-padding-aes256.js
+++ b/tests/node_compat/test/parallel/test-crypto-padding-aes256.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-crypto-psychic-signatures.js b/tests/node_compat/test/parallel/test-crypto-psychic-signatures.js
index f24d2d8b36f2ac..95968fb445fd1c 100644
--- a/tests/node_compat/test/parallel/test-crypto-psychic-signatures.js
+++ b/tests/node_compat/test/parallel/test-crypto-psychic-signatures.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-crypto-randomfillsync-regression.js b/tests/node_compat/test/parallel/test-crypto-randomfillsync-regression.js
index e81ec392727179..630522cb7c9c31 100644
--- a/tests/node_compat/test/parallel/test-crypto-randomfillsync-regression.js
+++ b/tests/node_compat/test/parallel/test-crypto-randomfillsync-regression.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-crypto-secret-keygen.js b/tests/node_compat/test/parallel/test-crypto-secret-keygen.js
index 5f70109f10710b..38d070399ceb49 100644
--- a/tests/node_compat/test/parallel/test-crypto-secret-keygen.js
+++ b/tests/node_compat/test/parallel/test-crypto-secret-keygen.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-crypto-subtle-zero-length.js b/tests/node_compat/test/parallel/test-crypto-subtle-zero-length.js
index 7aa73660a547fe..48b8a152e15926 100644
--- a/tests/node_compat/test/parallel/test-crypto-subtle-zero-length.js
+++ b/tests/node_compat/test/parallel/test-crypto-subtle-zero-length.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-crypto-update-encoding.js b/tests/node_compat/test/parallel/test-crypto-update-encoding.js
index 75064d8d148adc..54cb22aa6c49ef 100644
--- a/tests/node_compat/test/parallel/test-crypto-update-encoding.js
+++ b/tests/node_compat/test/parallel/test-crypto-update-encoding.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-address.js b/tests/node_compat/test/parallel/test-dgram-address.js
index 63e7c9e1ac1058..1bf7d5d522540b 100644
--- a/tests/node_compat/test/parallel/test-dgram-address.js
+++ b/tests/node_compat/test/parallel/test-dgram-address.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-dgram-bind-default-address.js b/tests/node_compat/test/parallel/test-dgram-bind-default-address.js
index ec3ab66a2058a1..937a69f366d76e 100644
--- a/tests/node_compat/test/parallel/test-dgram-bind-default-address.js
+++ b/tests/node_compat/test/parallel/test-dgram-bind-default-address.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-dgram-bind-error-repeat.js b/tests/node_compat/test/parallel/test-dgram-bind-error-repeat.js
index d03b133bf44db5..ac179f08bcae39 100644
--- a/tests/node_compat/test/parallel/test-dgram-bind-error-repeat.js
+++ b/tests/node_compat/test/parallel/test-dgram-bind-error-repeat.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-bind.js b/tests/node_compat/test/parallel/test-dgram-bind.js
index 010d795f833847..d54f091aba5927 100644
--- a/tests/node_compat/test/parallel/test-dgram-bind.js
+++ b/tests/node_compat/test/parallel/test-dgram-bind.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-dgram-bytes-length.js b/tests/node_compat/test/parallel/test-dgram-bytes-length.js
index df2a9608031a64..eb0103b46ef03e 100644
--- a/tests/node_compat/test/parallel/test-dgram-bytes-length.js
+++ b/tests/node_compat/test/parallel/test-dgram-bytes-length.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-dgram-close-during-bind.js b/tests/node_compat/test/parallel/test-dgram-close-during-bind.js
index 0333da5b9e1bb8..20b0f58d9281ec 100644
--- a/tests/node_compat/test/parallel/test-dgram-close-during-bind.js
+++ b/tests/node_compat/test/parallel/test-dgram-close-during-bind.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-dgram-close-in-listening.js b/tests/node_compat/test/parallel/test-dgram-close-in-listening.js
index fc0827d86f9672..ab870d2ee134b9 100644
--- a/tests/node_compat/test/parallel/test-dgram-close-in-listening.js
+++ b/tests/node_compat/test/parallel/test-dgram-close-in-listening.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-close-is-not-callback.js b/tests/node_compat/test/parallel/test-dgram-close-is-not-callback.js
index 6af6dcf956c144..5273a698a63f12 100644
--- a/tests/node_compat/test/parallel/test-dgram-close-is-not-callback.js
+++ b/tests/node_compat/test/parallel/test-dgram-close-is-not-callback.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-close-signal.js b/tests/node_compat/test/parallel/test-dgram-close-signal.js
index 788018e77c5d89..1be88cc7f436bb 100644
--- a/tests/node_compat/test/parallel/test-dgram-close-signal.js
+++ b/tests/node_compat/test/parallel/test-dgram-close-signal.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-close.js b/tests/node_compat/test/parallel/test-dgram-close.js
index 0bd7e78d103482..c66e2e8480f1e0 100644
--- a/tests/node_compat/test/parallel/test-dgram-close.js
+++ b/tests/node_compat/test/parallel/test-dgram-close.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-dgram-connect-send-callback-buffer-length.js b/tests/node_compat/test/parallel/test-dgram-connect-send-callback-buffer-length.js
index aa8e32eecc82b3..1b70d6463ebdd3 100644
--- a/tests/node_compat/test/parallel/test-dgram-connect-send-callback-buffer-length.js
+++ b/tests/node_compat/test/parallel/test-dgram-connect-send-callback-buffer-length.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-connect-send-callback-buffer.js b/tests/node_compat/test/parallel/test-dgram-connect-send-callback-buffer.js
index 19e01d6af82290..fb3b15ee5a6c97 100644
--- a/tests/node_compat/test/parallel/test-dgram-connect-send-callback-buffer.js
+++ b/tests/node_compat/test/parallel/test-dgram-connect-send-callback-buffer.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-connect-send-callback-multi-buffer.js b/tests/node_compat/test/parallel/test-dgram-connect-send-callback-multi-buffer.js
index 4f0a19ceab075b..9bd8f8cf17b25f 100644
--- a/tests/node_compat/test/parallel/test-dgram-connect-send-callback-multi-buffer.js
+++ b/tests/node_compat/test/parallel/test-dgram-connect-send-callback-multi-buffer.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-connect-send-default-host.js b/tests/node_compat/test/parallel/test-dgram-connect-send-default-host.js
index 7ca49680d69d84..db0509cbed5d1b 100644
--- a/tests/node_compat/test/parallel/test-dgram-connect-send-default-host.js
+++ b/tests/node_compat/test/parallel/test-dgram-connect-send-default-host.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-connect-send-empty-array.js b/tests/node_compat/test/parallel/test-dgram-connect-send-empty-array.js
index a47645c104e6c0..44e05887d715b2 100644
--- a/tests/node_compat/test/parallel/test-dgram-connect-send-empty-array.js
+++ b/tests/node_compat/test/parallel/test-dgram-connect-send-empty-array.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-connect-send-empty-buffer.js b/tests/node_compat/test/parallel/test-dgram-connect-send-empty-buffer.js
index 17e10aa804f699..be40160230bcee 100644
--- a/tests/node_compat/test/parallel/test-dgram-connect-send-empty-buffer.js
+++ b/tests/node_compat/test/parallel/test-dgram-connect-send-empty-buffer.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-connect-send-multi-buffer-copy.js b/tests/node_compat/test/parallel/test-dgram-connect-send-multi-buffer-copy.js
index e561ffbdcac8cf..5a6e6c996c788c 100644
--- a/tests/node_compat/test/parallel/test-dgram-connect-send-multi-buffer-copy.js
+++ b/tests/node_compat/test/parallel/test-dgram-connect-send-multi-buffer-copy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-connect-send-multi-string-array.js b/tests/node_compat/test/parallel/test-dgram-connect-send-multi-string-array.js
index 9f94a59b3cd240..57de6628c07255 100644
--- a/tests/node_compat/test/parallel/test-dgram-connect-send-multi-string-array.js
+++ b/tests/node_compat/test/parallel/test-dgram-connect-send-multi-string-array.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-connect.js b/tests/node_compat/test/parallel/test-dgram-connect.js
index d6c2df6f46f2e3..9a6178240a98ae 100644
--- a/tests/node_compat/test/parallel/test-dgram-connect.js
+++ b/tests/node_compat/test/parallel/test-dgram-connect.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-error-message-address.js b/tests/node_compat/test/parallel/test-dgram-error-message-address.js
index b8fab2d3cb61c5..be4994c8c0102d 100644
--- a/tests/node_compat/test/parallel/test-dgram-error-message-address.js
+++ b/tests/node_compat/test/parallel/test-dgram-error-message-address.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-dgram-implicit-bind.js b/tests/node_compat/test/parallel/test-dgram-implicit-bind.js
index dfafc2d1ac7d8b..a02d6f5b9a2faf 100644
--- a/tests/node_compat/test/parallel/test-dgram-implicit-bind.js
+++ b/tests/node_compat/test/parallel/test-dgram-implicit-bind.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-dgram-listen-after-bind.js b/tests/node_compat/test/parallel/test-dgram-listen-after-bind.js
index 7cfdd824ea0514..592a8c4fbf1475 100644
--- a/tests/node_compat/test/parallel/test-dgram-listen-after-bind.js
+++ b/tests/node_compat/test/parallel/test-dgram-listen-after-bind.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-dgram-msgsize.js b/tests/node_compat/test/parallel/test-dgram-msgsize.js
index 81754f66502d15..2777328fd96ef0 100644
--- a/tests/node_compat/test/parallel/test-dgram-msgsize.js
+++ b/tests/node_compat/test/parallel/test-dgram-msgsize.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-dgram-oob-buffer.js b/tests/node_compat/test/parallel/test-dgram-oob-buffer.js
index af9629c3ac88ab..4a339ec2e20d4f 100644
--- a/tests/node_compat/test/parallel/test-dgram-oob-buffer.js
+++ b/tests/node_compat/test/parallel/test-dgram-oob-buffer.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-dgram-recv-error.js b/tests/node_compat/test/parallel/test-dgram-recv-error.js
index 3bbdb300aaba7f..6f64c5b9e6ba9d 100644
--- a/tests/node_compat/test/parallel/test-dgram-recv-error.js
+++ b/tests/node_compat/test/parallel/test-dgram-recv-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-dgram-ref.js b/tests/node_compat/test/parallel/test-dgram-ref.js
index 7cd9200955be8e..15f7654f842bf5 100644
--- a/tests/node_compat/test/parallel/test-dgram-ref.js
+++ b/tests/node_compat/test/parallel/test-dgram-ref.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-dgram-send-bad-arguments.js b/tests/node_compat/test/parallel/test-dgram-send-bad-arguments.js
index a99f3596639683..85d0b3b93662ac 100644
--- a/tests/node_compat/test/parallel/test-dgram-send-bad-arguments.js
+++ b/tests/node_compat/test/parallel/test-dgram-send-bad-arguments.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-dgram-send-callback-buffer-empty-address.js b/tests/node_compat/test/parallel/test-dgram-send-callback-buffer-empty-address.js
index c9b8d08f03ae8e..12031dc4205b5a 100644
--- a/tests/node_compat/test/parallel/test-dgram-send-callback-buffer-empty-address.js
+++ b/tests/node_compat/test/parallel/test-dgram-send-callback-buffer-empty-address.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-send-callback-buffer-length-empty-address.js b/tests/node_compat/test/parallel/test-dgram-send-callback-buffer-length-empty-address.js
index aeab74b411bd60..4a6b8a9e51299d 100644
--- a/tests/node_compat/test/parallel/test-dgram-send-callback-buffer-length-empty-address.js
+++ b/tests/node_compat/test/parallel/test-dgram-send-callback-buffer-length-empty-address.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-send-callback-buffer-length.js b/tests/node_compat/test/parallel/test-dgram-send-callback-buffer-length.js
index decb1388e5ed93..67e88f44278b59 100644
--- a/tests/node_compat/test/parallel/test-dgram-send-callback-buffer-length.js
+++ b/tests/node_compat/test/parallel/test-dgram-send-callback-buffer-length.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-dgram-send-callback-buffer.js b/tests/node_compat/test/parallel/test-dgram-send-callback-buffer.js
index 73593844db470e..3238a9d732396b 100644
--- a/tests/node_compat/test/parallel/test-dgram-send-callback-buffer.js
+++ b/tests/node_compat/test/parallel/test-dgram-send-callback-buffer.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-send-callback-multi-buffer-empty-address.js b/tests/node_compat/test/parallel/test-dgram-send-callback-multi-buffer-empty-address.js
index 4a9d80eb578943..68280a1bc2a6b2 100644
--- a/tests/node_compat/test/parallel/test-dgram-send-callback-multi-buffer-empty-address.js
+++ b/tests/node_compat/test/parallel/test-dgram-send-callback-multi-buffer-empty-address.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-send-callback-multi-buffer.js b/tests/node_compat/test/parallel/test-dgram-send-callback-multi-buffer.js
index b775978be594e7..da12658d24b018 100644
--- a/tests/node_compat/test/parallel/test-dgram-send-callback-multi-buffer.js
+++ b/tests/node_compat/test/parallel/test-dgram-send-callback-multi-buffer.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-send-callback-recursive.js b/tests/node_compat/test/parallel/test-dgram-send-callback-recursive.js
index 27579516c887e9..7eeb1497d74665 100644
--- a/tests/node_compat/test/parallel/test-dgram-send-callback-recursive.js
+++ b/tests/node_compat/test/parallel/test-dgram-send-callback-recursive.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-send-default-host.js b/tests/node_compat/test/parallel/test-dgram-send-default-host.js
index 989dca888bde85..62178ec29772a0 100644
--- a/tests/node_compat/test/parallel/test-dgram-send-default-host.js
+++ b/tests/node_compat/test/parallel/test-dgram-send-default-host.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-send-error.js b/tests/node_compat/test/parallel/test-dgram-send-error.js
index 8b0887e349da37..cdd41e9e539efc 100644
--- a/tests/node_compat/test/parallel/test-dgram-send-error.js
+++ b/tests/node_compat/test/parallel/test-dgram-send-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-dgram-send-invalid-msg-type.js b/tests/node_compat/test/parallel/test-dgram-send-invalid-msg-type.js
index 7fbe1730a44ab9..a4de0d31a81e95 100644
--- a/tests/node_compat/test/parallel/test-dgram-send-invalid-msg-type.js
+++ b/tests/node_compat/test/parallel/test-dgram-send-invalid-msg-type.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-dgram-send-multi-buffer-copy.js b/tests/node_compat/test/parallel/test-dgram-send-multi-buffer-copy.js
index bb5217de718767..a8828186a09cb0 100644
--- a/tests/node_compat/test/parallel/test-dgram-send-multi-buffer-copy.js
+++ b/tests/node_compat/test/parallel/test-dgram-send-multi-buffer-copy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-send-multi-string-array.js b/tests/node_compat/test/parallel/test-dgram-send-multi-string-array.js
index ae77a421ed1f3e..8add4b59d0e32c 100644
--- a/tests/node_compat/test/parallel/test-dgram-send-multi-string-array.js
+++ b/tests/node_compat/test/parallel/test-dgram-send-multi-string-array.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-udp4.js b/tests/node_compat/test/parallel/test-dgram-udp4.js
index f477746a0dc603..3cfe3be5730f87 100644
--- a/tests/node_compat/test/parallel/test-dgram-udp4.js
+++ b/tests/node_compat/test/parallel/test-dgram-udp4.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-dgram-udp6-send-default-host.js b/tests/node_compat/test/parallel/test-dgram-udp6-send-default-host.js
index 039df7615b04a6..bee33392003a99 100644
--- a/tests/node_compat/test/parallel/test-dgram-udp6-send-default-host.js
+++ b/tests/node_compat/test/parallel/test-dgram-udp6-send-default-host.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dgram-unref.js b/tests/node_compat/test/parallel/test-dgram-unref.js
index 282c3ec3be0640..9ff6287cb8bbc3 100644
--- a/tests/node_compat/test/parallel/test-dgram-unref.js
+++ b/tests/node_compat/test/parallel/test-dgram-unref.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-diagnostics-channel-bind-store.js b/tests/node_compat/test/parallel/test-diagnostics-channel-bind-store.js
index 823c5bb63cc52e..ff7d263c565037 100644
--- a/tests/node_compat/test/parallel/test-diagnostics-channel-bind-store.js
+++ b/tests/node_compat/test/parallel/test-diagnostics-channel-bind-store.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-diagnostics-channel-has-subscribers.js b/tests/node_compat/test/parallel/test-diagnostics-channel-has-subscribers.js
index a86dc23675f4bf..df4a3b12df423e 100644
--- a/tests/node_compat/test/parallel/test-diagnostics-channel-has-subscribers.js
+++ b/tests/node_compat/test/parallel/test-diagnostics-channel-has-subscribers.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-diagnostics-channel-object-channel-pub-sub.js b/tests/node_compat/test/parallel/test-diagnostics-channel-object-channel-pub-sub.js
index 2466b67b1f4d40..dd082de4154470 100644
--- a/tests/node_compat/test/parallel/test-diagnostics-channel-object-channel-pub-sub.js
+++ b/tests/node_compat/test/parallel/test-diagnostics-channel-object-channel-pub-sub.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-diagnostics-channel-pub-sub.js b/tests/node_compat/test/parallel/test-diagnostics-channel-pub-sub.js
index cc21955ca0920f..32ad220766e683 100644
--- a/tests/node_compat/test/parallel/test-diagnostics-channel-pub-sub.js
+++ b/tests/node_compat/test/parallel/test-diagnostics-channel-pub-sub.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-diagnostics-channel-safe-subscriber-errors.js b/tests/node_compat/test/parallel/test-diagnostics-channel-safe-subscriber-errors.js
index 62a4edafdf2adf..6bc8aeff9ec3f9 100644
--- a/tests/node_compat/test/parallel/test-diagnostics-channel-safe-subscriber-errors.js
+++ b/tests/node_compat/test/parallel/test-diagnostics-channel-safe-subscriber-errors.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-diagnostics-channel-symbol-named.js b/tests/node_compat/test/parallel/test-diagnostics-channel-symbol-named.js
index 6c7fd4cfbb2353..1ed65ca69605ea 100644
--- a/tests/node_compat/test/parallel/test-diagnostics-channel-symbol-named.js
+++ b/tests/node_compat/test/parallel/test-diagnostics-channel-symbol-named.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-async-error.js b/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-async-error.js
deleted file mode 100644
index fa48387a269f94..00000000000000
--- a/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-async-error.js
+++ /dev/null
@@ -1,53 +0,0 @@
-// deno-fmt-ignore-file
-// deno-lint-ignore-file
-
-// Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
-// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
-
-'use strict';
-
-const common = require('../common');
-const dc = require('diagnostics_channel');
-const assert = require('assert');
-
-const channel = dc.tracingChannel('test');
-
-const expectedError = new Error('test');
-const input = { foo: 'bar' };
-const thisArg = { baz: 'buz' };
-
-function check(found) {
-  assert.deepStrictEqual(found, input);
-}
-
-const handlers = {
-  start: common.mustCall(check, 2),
-  end: common.mustCall(check, 2),
-  asyncStart: common.mustCall(check, 2),
-  asyncEnd: common.mustCall(check, 2),
-  error: common.mustCall((found) => {
-    check(found);
-    assert.deepStrictEqual(found.error, expectedError);
-  }, 2)
-};
-
-channel.subscribe(handlers);
-
-channel.traceCallback(function(cb, err) {
-  assert.deepStrictEqual(this, thisArg);
-  setImmediate(cb, err);
-}, 0, input, thisArg, common.mustCall((err, res) => {
-  assert.strictEqual(err, expectedError);
-  assert.strictEqual(res, undefined);
-}), expectedError);
-
-channel.tracePromise(function(value) {
-  assert.deepStrictEqual(this, thisArg);
-  return Promise.reject(value);
-}, input, thisArg, expectedError).then(
-  common.mustNotCall(),
-  common.mustCall((value) => {
-    assert.deepStrictEqual(value, expectedError);
-  })
-);
diff --git a/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-async.js b/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-async.js
deleted file mode 100644
index 25c67f77ce5a7d..00000000000000
--- a/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-async.js
+++ /dev/null
@@ -1,67 +0,0 @@
-// deno-fmt-ignore-file
-// deno-lint-ignore-file
-
-// Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
-// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
-
-'use strict';
-
-const common = require('../common');
-const dc = require('diagnostics_channel');
-const assert = require('assert');
-
-const channel = dc.tracingChannel('test');
-
-const expectedResult = { foo: 'bar' };
-const input = { foo: 'bar' };
-const thisArg = { baz: 'buz' };
-
-function check(found) {
-  assert.deepStrictEqual(found, input);
-}
-
-const handlers = {
-  start: common.mustCall(check, 2),
-  end: common.mustCall(check, 2),
-  asyncStart: common.mustCall((found) => {
-    check(found);
-    assert.strictEqual(found.error, undefined);
-    assert.deepStrictEqual(found.result, expectedResult);
-  }, 2),
-  asyncEnd: common.mustCall((found) => {
-    check(found);
-    assert.strictEqual(found.error, undefined);
-    assert.deepStrictEqual(found.result, expectedResult);
-  }, 2),
-  error: common.mustNotCall()
-};
-
-channel.subscribe(handlers);
-
-channel.traceCallback(function(cb, err, res) {
-  assert.deepStrictEqual(this, thisArg);
-  setImmediate(cb, err, res);
-}, 0, input, thisArg, common.mustCall((err, res) => {
-  assert.strictEqual(err, null);
-  assert.deepStrictEqual(res, expectedResult);
-}), null, expectedResult);
-
-channel.tracePromise(function(value) {
-  assert.deepStrictEqual(this, thisArg);
-  return Promise.resolve(value);
-}, input, thisArg, expectedResult).then(
-  common.mustCall((value) => {
-    assert.deepStrictEqual(value, expectedResult);
-  }),
-  common.mustNotCall()
-);
-
-let failed = false;
-try {
-  channel.traceCallback(common.mustNotCall(), 0, input, thisArg, 1, 2, 3);
-} catch (err) {
-  assert.ok(/"callback" argument must be of type function/.test(err.message));
-  failed = true;
-}
-assert.strictEqual(failed, true);
diff --git a/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-callback-run-stores.js b/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-callback-run-stores.js
index 6f91c361d0393a..f2dae5035fc061 100644
--- a/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-callback-run-stores.js
+++ b/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-callback-run-stores.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-promise-run-stores.js b/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-promise-run-stores.js
index 0a713e64a076c4..b945947cb692b6 100644
--- a/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-promise-run-stores.js
+++ b/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-promise-run-stores.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-run-stores.js b/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-run-stores.js
deleted file mode 100644
index 8efaaf4e278508..00000000000000
--- a/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-run-stores.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// deno-fmt-ignore-file
-// deno-lint-ignore-file
-
-// Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
-// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
-
-'use strict';
-
-const common = require('../common');
-const { AsyncLocalStorage } = require('async_hooks');
-const dc = require('diagnostics_channel');
-const assert = require('assert');
-
-const channel = dc.tracingChannel('test');
-const store = new AsyncLocalStorage();
-
-const context = { foo: 'bar' };
-
-channel.start.bindStore(store, common.mustCall(() => {
-  return context;
-}));
-
-assert.strictEqual(store.getStore(), undefined);
-channel.traceSync(common.mustCall(() => {
-  assert.deepStrictEqual(store.getStore(), context);
-}));
-assert.strictEqual(store.getStore(), undefined);
diff --git a/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-sync-error.js b/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-sync-error.js
index 0f5d276ac58854..a0c55f191f36d1 100644
--- a/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-sync-error.js
+++ b/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-sync-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-sync.js b/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-sync.js
index b8c642a9aaf4ae..eee7163462fba3 100644
--- a/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-sync.js
+++ b/tests/node_compat/test/parallel/test-diagnostics-channel-tracing-channel-sync.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-diagnostics-channel-udp.js b/tests/node_compat/test/parallel/test-diagnostics-channel-udp.js
index 6843d0f30e83e6..137d8c6a7c0329 100644
--- a/tests/node_compat/test/parallel/test-diagnostics-channel-udp.js
+++ b/tests/node_compat/test/parallel/test-diagnostics-channel-udp.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dns-multi-channel.js b/tests/node_compat/test/parallel/test-dns-multi-channel.js
index 708b49648fc71a..b66f8b1383ecf1 100644
--- a/tests/node_compat/test/parallel/test-dns-multi-channel.js
+++ b/tests/node_compat/test/parallel/test-dns-multi-channel.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dns-promises-exists.js b/tests/node_compat/test/parallel/test-dns-promises-exists.js
index 3368abc194cd9c..bed04831deafd5 100644
--- a/tests/node_compat/test/parallel/test-dns-promises-exists.js
+++ b/tests/node_compat/test/parallel/test-dns-promises-exists.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-dns-resolvens-typeerror.js b/tests/node_compat/test/parallel/test-dns-resolvens-typeerror.js
index b271ae34cebde8..62e384085e7913 100644
--- a/tests/node_compat/test/parallel/test-dns-resolvens-typeerror.js
+++ b/tests/node_compat/test/parallel/test-dns-resolvens-typeerror.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-dns-setservers-type-check.js b/tests/node_compat/test/parallel/test-dns-setservers-type-check.js
index 6218a1bdfd384f..4890fc04764d2f 100644
--- a/tests/node_compat/test/parallel/test-dns-setservers-type-check.js
+++ b/tests/node_compat/test/parallel/test-dns-setservers-type-check.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-domain-crypto.js b/tests/node_compat/test/parallel/test-domain-crypto.js
index 1d289eea6c7660..60b0ba835bf165 100644
--- a/tests/node_compat/test/parallel/test-domain-crypto.js
+++ b/tests/node_compat/test/parallel/test-domain-crypto.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -38,7 +38,7 @@ const crypto = require('crypto');
 // Pollution of global is intentional as part of test.
 common.allowGlobals(require('domain'));
 // See https://github.com/nodejs/node/commit/d1eff9ab
-global.domain = require('domain');
+globalThis.domain = require('domain');
 
 // Should not throw a 'TypeError: undefined is not a function' exception
 crypto.randomBytes(8);
diff --git a/tests/node_compat/test/parallel/test-domain-ee-error-listener.js b/tests/node_compat/test/parallel/test-domain-ee-error-listener.js
index a89345fafeb9da..1d255bce5d4f90 100644
--- a/tests/node_compat/test/parallel/test-domain-ee-error-listener.js
+++ b/tests/node_compat/test/parallel/test-domain-ee-error-listener.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-domain-nested-throw.js b/tests/node_compat/test/parallel/test-domain-nested-throw.js
index fa8d5763c2fb9b..cea2e0f6ab26a6 100644
--- a/tests/node_compat/test/parallel/test-domain-nested-throw.js
+++ b/tests/node_compat/test/parallel/test-domain-nested-throw.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-domain-nested.js b/tests/node_compat/test/parallel/test-domain-nested.js
index 8bffb960c2a380..491db4a9047e42 100644
--- a/tests/node_compat/test/parallel/test-domain-nested.js
+++ b/tests/node_compat/test/parallel/test-domain-nested.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-domain-stack.js b/tests/node_compat/test/parallel/test-domain-stack.js
index b7399ff2969e2c..73429e7f4106fb 100644
--- a/tests/node_compat/test/parallel/test-domain-stack.js
+++ b/tests/node_compat/test/parallel/test-domain-stack.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-domain-top-level-error-handler-clears-stack.js b/tests/node_compat/test/parallel/test-domain-top-level-error-handler-clears-stack.js
index 718159c0f4db46..8b482317905a77 100644
--- a/tests/node_compat/test/parallel/test-domain-top-level-error-handler-clears-stack.js
+++ b/tests/node_compat/test/parallel/test-domain-top-level-error-handler-clears-stack.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-env-newprotomethod-remove-unnecessary-prototypes.js b/tests/node_compat/test/parallel/test-env-newprotomethod-remove-unnecessary-prototypes.js
index bded14a4074351..2f047670a6e2b3 100644
--- a/tests/node_compat/test/parallel/test-env-newprotomethod-remove-unnecessary-prototypes.js
+++ b/tests/node_compat/test/parallel/test-env-newprotomethod-remove-unnecessary-prototypes.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-errors-aborterror.js b/tests/node_compat/test/parallel/test-errors-aborterror.js
index 38c4df0873f4ea..7936b900d4e209 100644
--- a/tests/node_compat/test/parallel/test-errors-aborterror.js
+++ b/tests/node_compat/test/parallel/test-errors-aborterror.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-eval-strict-referenceerror.js b/tests/node_compat/test/parallel/test-eval-strict-referenceerror.js
index 2c9943bbe8a6fa..450ed897d545c3 100644
--- a/tests/node_compat/test/parallel/test-eval-strict-referenceerror.js
+++ b/tests/node_compat/test/parallel/test-eval-strict-referenceerror.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 /* eslint-disable strict */
diff --git a/tests/node_compat/test/parallel/test-eval.js b/tests/node_compat/test/parallel/test-eval.js
index a6fb713b0b819c..db0163d3d5ee22 100644
--- a/tests/node_compat/test/parallel/test-eval.js
+++ b/tests/node_compat/test/parallel/test-eval.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-event-capture-rejections.js b/tests/node_compat/test/parallel/test-event-capture-rejections.js
index ae34d26b49451a..42ef054852bf8e 100644
--- a/tests/node_compat/test/parallel/test-event-capture-rejections.js
+++ b/tests/node_compat/test/parallel/test-event-capture-rejections.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-event-emitter-add-listeners.js b/tests/node_compat/test/parallel/test-event-emitter-add-listeners.js
index ec1a171230b7ff..53657712b5ba93 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-add-listeners.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-add-listeners.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-event-emitter-check-listener-leaks.js b/tests/node_compat/test/parallel/test-event-emitter-check-listener-leaks.js
index 3233ca06a67cde..d072cd0ac1756b 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-check-listener-leaks.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-check-listener-leaks.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-event-emitter-emit-context.js b/tests/node_compat/test/parallel/test-event-emitter-emit-context.js
index 03614bab76ad3a..3da45bd4785249 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-emit-context.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-emit-context.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-event-emitter-error-monitor.js b/tests/node_compat/test/parallel/test-event-emitter-error-monitor.js
index 39ba06f365c1ec..f2704ad9ac6873 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-error-monitor.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-error-monitor.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-event-emitter-errors.js b/tests/node_compat/test/parallel/test-event-emitter-errors.js
index da8b27b39b3216..470ce898ecc4f5 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-errors.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-errors.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-event-emitter-get-max-listeners.js b/tests/node_compat/test/parallel/test-event-emitter-get-max-listeners.js
index 111bb6b7304cb0..a3a4da85034859 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-get-max-listeners.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-get-max-listeners.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-event-emitter-invalid-listener.js b/tests/node_compat/test/parallel/test-event-emitter-invalid-listener.js
index 5053f399c750d4..4a9dd48d818cd7 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-invalid-listener.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-invalid-listener.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-event-emitter-listener-count.js b/tests/node_compat/test/parallel/test-event-emitter-listener-count.js
index bfe8bcced05872..9560e1b51a480f 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-listener-count.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-listener-count.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-event-emitter-listeners-side-effects.js b/tests/node_compat/test/parallel/test-event-emitter-listeners-side-effects.js
index c52acd2dde07df..775606e7b1a069 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-listeners-side-effects.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-listeners-side-effects.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-event-emitter-listeners.js b/tests/node_compat/test/parallel/test-event-emitter-listeners.js
index b62aac9f9108cf..e9a9fac9c86b71 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-listeners.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-listeners.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -93,6 +93,11 @@ function listener4() {
   assert.deepStrictEqual(ee.listeners('foo'), []);
 }
 
+{
+  const ee = new events.EventEmitter();
+  assert.deepStrictEqual(ee.listeners(), []);
+}
+
 {
   class TestStream extends events.EventEmitter {}
   const s = new TestStream();
diff --git a/tests/node_compat/test/parallel/test-event-emitter-method-names.js b/tests/node_compat/test/parallel/test-event-emitter-method-names.js
index f3890b839a8783..8ec3f7a3ecdf5f 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-method-names.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-method-names.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-event-emitter-modify-in-emit.js b/tests/node_compat/test/parallel/test-event-emitter-modify-in-emit.js
index 564f16246cfd43..5c9413af7fcba2 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-modify-in-emit.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-modify-in-emit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-event-emitter-num-args.js b/tests/node_compat/test/parallel/test-event-emitter-num-args.js
index 6e2cdf42f17e4f..0da7881dfafbb5 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-num-args.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-num-args.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-event-emitter-once.js b/tests/node_compat/test/parallel/test-event-emitter-once.js
index a93a5a43b648a4..7bd7e3bd739567 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-once.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-once.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-event-emitter-remove-all-listeners.js b/tests/node_compat/test/parallel/test-event-emitter-remove-all-listeners.js
index cfc76fc2fa3585..77941e7ff96fc7 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-remove-all-listeners.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-remove-all-listeners.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-event-emitter-remove-listeners.js b/tests/node_compat/test/parallel/test-event-emitter-remove-listeners.js
index 983da177a5c1bd..8db06926bdb19b 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-remove-listeners.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-remove-listeners.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-event-emitter-set-max-listeners-side-effects.js b/tests/node_compat/test/parallel/test-event-emitter-set-max-listeners-side-effects.js
index bc50b32cdacf6f..33c837d0d30058 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-set-max-listeners-side-effects.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-set-max-listeners-side-effects.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-event-emitter-special-event-names.js b/tests/node_compat/test/parallel/test-event-emitter-special-event-names.js
index 21455a24288d9a..26988ecdeefff2 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-special-event-names.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-special-event-names.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-event-emitter-subclass.js b/tests/node_compat/test/parallel/test-event-emitter-subclass.js
index 46d08041df7e17..0ca5264190dc30 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-subclass.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-subclass.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-event-emitter-symbols.js b/tests/node_compat/test/parallel/test-event-emitter-symbols.js
index 74f43f229a4163..51c5de36305017 100644
--- a/tests/node_compat/test/parallel/test-event-emitter-symbols.js
+++ b/tests/node_compat/test/parallel/test-event-emitter-symbols.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-events-list.js b/tests/node_compat/test/parallel/test-events-list.js
index f0b553812f9102..d547dc4e6c1891 100644
--- a/tests/node_compat/test/parallel/test-events-list.js
+++ b/tests/node_compat/test/parallel/test-events-list.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-events-uncaught-exception-stack.js b/tests/node_compat/test/parallel/test-events-uncaught-exception-stack.js
index 72a4067b39a6a2..ea8657d0e2fd36 100644
--- a/tests/node_compat/test/parallel/test-events-uncaught-exception-stack.js
+++ b/tests/node_compat/test/parallel/test-events-uncaught-exception-stack.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-eventtarget-brandcheck.js b/tests/node_compat/test/parallel/test-eventtarget-brandcheck.js
index de5592b169153d..5a23e563ef5ad7 100644
--- a/tests/node_compat/test/parallel/test-eventtarget-brandcheck.js
+++ b/tests/node_compat/test/parallel/test-eventtarget-brandcheck.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-eventtarget-once-twice.js b/tests/node_compat/test/parallel/test-eventtarget-once-twice.js
index 82877c7987dcdf..f4074b229b8855 100644
--- a/tests/node_compat/test/parallel/test-eventtarget-once-twice.js
+++ b/tests/node_compat/test/parallel/test-eventtarget-once-twice.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-exception-handler.js b/tests/node_compat/test/parallel/test-exception-handler.js
index 18557fbf81fa6d..78264335067dcb 100644
--- a/tests/node_compat/test/parallel/test-exception-handler.js
+++ b/tests/node_compat/test/parallel/test-exception-handler.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-exception-handler2.js b/tests/node_compat/test/parallel/test-exception-handler2.js
index 2dce592830a0e9..f65de5f514ca56 100644
--- a/tests/node_compat/test/parallel/test-exception-handler2.js
+++ b/tests/node_compat/test/parallel/test-exception-handler2.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-file-read-noexist.js b/tests/node_compat/test/parallel/test-file-read-noexist.js
index 3865ccfdd2677b..fce2d083430f71 100644
--- a/tests/node_compat/test/parallel/test-file-read-noexist.js
+++ b/tests/node_compat/test/parallel/test-file-read-noexist.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-file-write-stream.js b/tests/node_compat/test/parallel/test-file-write-stream.js
index bb247d1fb9bf67..cb75184b9812cb 100644
--- a/tests/node_compat/test/parallel/test-file-write-stream.js
+++ b/tests/node_compat/test/parallel/test-file-write-stream.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-file-write-stream2.js b/tests/node_compat/test/parallel/test-file-write-stream2.js
index 39d595f3d52513..0cf649dbb00042 100644
--- a/tests/node_compat/test/parallel/test-file-write-stream2.js
+++ b/tests/node_compat/test/parallel/test-file-write-stream2.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-file-write-stream3.js b/tests/node_compat/test/parallel/test-file-write-stream3.js
index 94775e0ef6751a..87e61b88eaed19 100644
--- a/tests/node_compat/test/parallel/test-file-write-stream3.js
+++ b/tests/node_compat/test/parallel/test-file-write-stream3.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-file-write-stream4.js b/tests/node_compat/test/parallel/test-file-write-stream4.js
index 82bd96b4698166..301995c44886b4 100644
--- a/tests/node_compat/test/parallel/test-file-write-stream4.js
+++ b/tests/node_compat/test/parallel/test-file-write-stream4.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-append-file-sync.js b/tests/node_compat/test/parallel/test-fs-append-file-sync.js
index 44f62f9a08b188..0bf52922fb36c0 100644
--- a/tests/node_compat/test/parallel/test-fs-append-file-sync.js
+++ b/tests/node_compat/test/parallel/test-fs-append-file-sync.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -34,15 +34,10 @@ const fs = require('fs');
 const currentFileData = 'ABCD';
 const m = 0o600;
 const num = 220;
-const data = '南越国是前203年至前111年存在于岭南地区的一个国家,国都位于番禺,疆域包括今天中国的广东、' +
-             '广西两省区的大部份地区,福建省、湖南、贵州、云南的一小部份地区和越南的北部。' +
-             '南越国是秦朝灭亡后,由南海郡尉赵佗于前203年起兵兼并桂林郡和象郡后建立。' +
-             '前196年和前179年,南越国曾先后两次名义上臣属于西汉,成为西汉的“外臣”。前112年,' +
-             '南越国末代君主赵建德与西汉发生战争,被汉武帝于前111年所灭。南越国共存在93年,' +
-             '历经五代君主。南越国是岭南地区的第一个有记载的政权国家,采用封建制和郡县制并存的制度,' +
-             '它的建立保证了秦末乱世岭南地区社会秩序的稳定,有效的改善了岭南地区落后的政治、##济现状。\n';
-
 const tmpdir = require('../common/tmpdir');
+const fixtures = require('../common/fixtures');
+const data = fixtures.utf8TestText;
+
 tmpdir.refresh();
 
 // Test that empty file will be created and have content added.
diff --git a/tests/node_compat/test/parallel/test-fs-buffertype-writesync.js b/tests/node_compat/test/parallel/test-fs-buffertype-writesync.js
index f2e8c97ee798d8..e723e62dfb2a81 100644
--- a/tests/node_compat/test/parallel/test-fs-buffertype-writesync.js
+++ b/tests/node_compat/test/parallel/test-fs-buffertype-writesync.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-chown-type-check.js b/tests/node_compat/test/parallel/test-fs-chown-type-check.js
index 3431e0a4c427b9..7749a354065293 100644
--- a/tests/node_compat/test/parallel/test-fs-chown-type-check.js
+++ b/tests/node_compat/test/parallel/test-fs-chown-type-check.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-close.js b/tests/node_compat/test/parallel/test-fs-close.js
index 1efb90ecd3d07f..b93a968827675e 100644
--- a/tests/node_compat/test/parallel/test-fs-close.js
+++ b/tests/node_compat/test/parallel/test-fs-close.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-constants.js b/tests/node_compat/test/parallel/test-fs-constants.js
index f6599ae8592d21..68a16bd4e435b1 100644
--- a/tests/node_compat/test/parallel/test-fs-constants.js
+++ b/tests/node_compat/test/parallel/test-fs-constants.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-copyfile.js b/tests/node_compat/test/parallel/test-fs-copyfile.js
index 4135b90678ece6..cad69a715e038e 100644
--- a/tests/node_compat/test/parallel/test-fs-copyfile.js
+++ b/tests/node_compat/test/parallel/test-fs-copyfile.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-fs-empty-readStream.js b/tests/node_compat/test/parallel/test-fs-empty-readStream.js
index 618eca5fbfe4c4..0fad6e51e71eac 100644
--- a/tests/node_compat/test/parallel/test-fs-empty-readStream.js
+++ b/tests/node_compat/test/parallel/test-fs-empty-readStream.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-fmap.js b/tests/node_compat/test/parallel/test-fs-fmap.js
index 728cdc8c54c397..de1db7b691ca09 100644
--- a/tests/node_compat/test/parallel/test-fs-fmap.js
+++ b/tests/node_compat/test/parallel/test-fs-fmap.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-lchown.js b/tests/node_compat/test/parallel/test-fs-lchown.js
index cdb4c7cb148b96..d81876f06f71c6 100644
--- a/tests/node_compat/test/parallel/test-fs-lchown.js
+++ b/tests/node_compat/test/parallel/test-fs-lchown.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-long-path.js b/tests/node_compat/test/parallel/test-fs-long-path.js
index 9b818cb75b4014..95829006da0d8a 100644
--- a/tests/node_compat/test/parallel/test-fs-long-path.js
+++ b/tests/node_compat/test/parallel/test-fs-long-path.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -53,4 +53,7 @@ fs.writeFile(fullPath, 'ok', common.mustSucceed(() => {
 
   // Tests https://github.com/nodejs/node/issues/39721
   fs.realpath.native(fullPath, common.mustSucceed());
+
+  // Tests https://github.com/nodejs/node/issues/51031
+  fs.promises.realpath(fullPath).then(common.mustCall(), common.mustNotCall());
 }));
diff --git a/tests/node_compat/test/parallel/test-fs-non-number-arguments-throw.js b/tests/node_compat/test/parallel/test-fs-non-number-arguments-throw.js
index 404ef6c29832a5..32b23a8e3f9a19 100644
--- a/tests/node_compat/test/parallel/test-fs-non-number-arguments-throw.js
+++ b/tests/node_compat/test/parallel/test-fs-non-number-arguments-throw.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-open-flags.js b/tests/node_compat/test/parallel/test-fs-open-flags.js
index 64967252a7db98..b5ef4781ea2b36 100644
--- a/tests/node_compat/test/parallel/test-fs-open-flags.js
+++ b/tests/node_compat/test/parallel/test-fs-open-flags.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -89,7 +89,7 @@ assert.throws(
   { code: 'ERR_INVALID_ARG_VALUE', name: 'TypeError' }
 );
 
-if (common.isLinux || common.isOSX) {
+if (common.isLinux || common.isMacOS) {
   const tmpdir = require('../common/tmpdir');
   tmpdir.refresh();
   const file = tmpdir.resolve('a.js');
diff --git a/tests/node_compat/test/parallel/test-fs-open-mode-mask.js b/tests/node_compat/test/parallel/test-fs-open-mode-mask.js
index a39b1e4bfb8c69..0d8ab12994b5bc 100644
--- a/tests/node_compat/test/parallel/test-fs-open-mode-mask.js
+++ b/tests/node_compat/test/parallel/test-fs-open-mode-mask.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-open-no-close.js b/tests/node_compat/test/parallel/test-fs-open-no-close.js
index 4ba8890d9fb787..a0d0fd08b4dd2f 100644
--- a/tests/node_compat/test/parallel/test-fs-open-no-close.js
+++ b/tests/node_compat/test/parallel/test-fs-open-no-close.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-open-numeric-flags.js b/tests/node_compat/test/parallel/test-fs-open-numeric-flags.js
index d658e329f0956b..5b66be1ab8102d 100644
--- a/tests/node_compat/test/parallel/test-fs-open-numeric-flags.js
+++ b/tests/node_compat/test/parallel/test-fs-open-numeric-flags.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-promises-exists.js b/tests/node_compat/test/parallel/test-fs-promises-exists.js
index 14550471750eed..a3dfcd5daf6d84 100644
--- a/tests/node_compat/test/parallel/test-fs-promises-exists.js
+++ b/tests/node_compat/test/parallel/test-fs-promises-exists.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-promises-file-handle-stat.js b/tests/node_compat/test/parallel/test-fs-promises-file-handle-stat.js
index 45315c10b2cf7a..41a1afd2ad36b6 100644
--- a/tests/node_compat/test/parallel/test-fs-promises-file-handle-stat.js
+++ b/tests/node_compat/test/parallel/test-fs-promises-file-handle-stat.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-promises-file-handle-sync.js b/tests/node_compat/test/parallel/test-fs-promises-file-handle-sync.js
index fa7022cb473fb0..87f41757eec007 100644
--- a/tests/node_compat/test/parallel/test-fs-promises-file-handle-sync.js
+++ b/tests/node_compat/test/parallel/test-fs-promises-file-handle-sync.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-promises-file-handle-write.js b/tests/node_compat/test/parallel/test-fs-promises-file-handle-write.js
index 994ce4ee6d3aea..38348dfc4c9882 100644
--- a/tests/node_compat/test/parallel/test-fs-promises-file-handle-write.js
+++ b/tests/node_compat/test/parallel/test-fs-promises-file-handle-write.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-promises-readfile-empty.js b/tests/node_compat/test/parallel/test-fs-promises-readfile-empty.js
index 3a72b0c6e61bf7..c475c86f37af71 100644
--- a/tests/node_compat/test/parallel/test-fs-promises-readfile-empty.js
+++ b/tests/node_compat/test/parallel/test-fs-promises-readfile-empty.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-promises-readfile-with-fd.js b/tests/node_compat/test/parallel/test-fs-promises-readfile-with-fd.js
index f5a0199d9398a0..86b05167f4d374 100644
--- a/tests/node_compat/test/parallel/test-fs-promises-readfile-with-fd.js
+++ b/tests/node_compat/test/parallel/test-fs-promises-readfile-with-fd.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-promises-writefile-with-fd.js b/tests/node_compat/test/parallel/test-fs-promises-writefile-with-fd.js
index 7812a4a87920d7..33f2560e651726 100644
--- a/tests/node_compat/test/parallel/test-fs-promises-writefile-with-fd.js
+++ b/tests/node_compat/test/parallel/test-fs-promises-writefile-with-fd.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-read-file-sync-hostname.js b/tests/node_compat/test/parallel/test-fs-read-file-sync-hostname.js
index 104f1c2b924118..423e6d7cc9be32 100644
--- a/tests/node_compat/test/parallel/test-fs-read-file-sync-hostname.js
+++ b/tests/node_compat/test/parallel/test-fs-read-file-sync-hostname.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-read-stream-autoClose.js b/tests/node_compat/test/parallel/test-fs-read-stream-autoClose.js
index 0719a62c94edd7..2e14edf6127640 100644
--- a/tests/node_compat/test/parallel/test-fs-read-stream-autoClose.js
+++ b/tests/node_compat/test/parallel/test-fs-read-stream-autoClose.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-read-stream-concurrent-reads.js b/tests/node_compat/test/parallel/test-fs-read-stream-concurrent-reads.js
index 89325bd322deb8..d37c24e5571ca9 100644
--- a/tests/node_compat/test/parallel/test-fs-read-stream-concurrent-reads.js
+++ b/tests/node_compat/test/parallel/test-fs-read-stream-concurrent-reads.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-read-stream-double-close.js b/tests/node_compat/test/parallel/test-fs-read-stream-double-close.js
index 3b17d45ffb2ea0..3449b74493c470 100644
--- a/tests/node_compat/test/parallel/test-fs-read-stream-double-close.js
+++ b/tests/node_compat/test/parallel/test-fs-read-stream-double-close.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-read-stream-encoding.js b/tests/node_compat/test/parallel/test-fs-read-stream-encoding.js
index 2b3fe85b0d9c1c..ee28af26e7584a 100644
--- a/tests/node_compat/test/parallel/test-fs-read-stream-encoding.js
+++ b/tests/node_compat/test/parallel/test-fs-read-stream-encoding.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-read-stream-fd-leak.js b/tests/node_compat/test/parallel/test-fs-read-stream-fd-leak.js
index 88025721ca5f4f..d9d80b4c562305 100644
--- a/tests/node_compat/test/parallel/test-fs-read-stream-fd-leak.js
+++ b/tests/node_compat/test/parallel/test-fs-read-stream-fd-leak.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-read-stream-fd.js b/tests/node_compat/test/parallel/test-fs-read-stream-fd.js
index 03a4dd4bf57c35..6a43892d42926c 100644
--- a/tests/node_compat/test/parallel/test-fs-read-stream-fd.js
+++ b/tests/node_compat/test/parallel/test-fs-read-stream-fd.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-read-stream-inherit.js b/tests/node_compat/test/parallel/test-fs-read-stream-inherit.js
index e5ad24fc6c5d63..ad135ea9e38deb 100644
--- a/tests/node_compat/test/parallel/test-fs-read-stream-inherit.js
+++ b/tests/node_compat/test/parallel/test-fs-read-stream-inherit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-read-stream-patch-open.js b/tests/node_compat/test/parallel/test-fs-read-stream-patch-open.js
index e662bf29597d20..34ee12b19f5e5c 100644
--- a/tests/node_compat/test/parallel/test-fs-read-stream-patch-open.js
+++ b/tests/node_compat/test/parallel/test-fs-read-stream-patch-open.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-read-stream-pos.js b/tests/node_compat/test/parallel/test-fs-read-stream-pos.js
index 58a79794e1691c..9b0afa496e7a84 100644
--- a/tests/node_compat/test/parallel/test-fs-read-stream-pos.js
+++ b/tests/node_compat/test/parallel/test-fs-read-stream-pos.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-read-stream-resume.js b/tests/node_compat/test/parallel/test-fs-read-stream-resume.js
index df89ba23a877b2..6674ee5e38f57a 100644
--- a/tests/node_compat/test/parallel/test-fs-read-stream-resume.js
+++ b/tests/node_compat/test/parallel/test-fs-read-stream-resume.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-read-stream-throw-type-error.js b/tests/node_compat/test/parallel/test-fs-read-stream-throw-type-error.js
index efc2c796d0ece9..1dac69dd9d07e9 100644
--- a/tests/node_compat/test/parallel/test-fs-read-stream-throw-type-error.js
+++ b/tests/node_compat/test/parallel/test-fs-read-stream-throw-type-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-read-type.js b/tests/node_compat/test/parallel/test-fs-read-type.js
index d127554b8ea963..2b7027cd027560 100644
--- a/tests/node_compat/test/parallel/test-fs-read-type.js
+++ b/tests/node_compat/test/parallel/test-fs-read-type.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-read-zero-length.js b/tests/node_compat/test/parallel/test-fs-read-zero-length.js
index 062f290a54198b..6a30d3cb6e30c1 100644
--- a/tests/node_compat/test/parallel/test-fs-read-zero-length.js
+++ b/tests/node_compat/test/parallel/test-fs-read-zero-length.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-read.js b/tests/node_compat/test/parallel/test-fs-read.js
index 0681e42dce3c67..a589bf3b6a6493 100644
--- a/tests/node_compat/test/parallel/test-fs-read.js
+++ b/tests/node_compat/test/parallel/test-fs-read.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-readdir-stack-overflow.js b/tests/node_compat/test/parallel/test-fs-readdir-stack-overflow.js
index a466e7e0109b59..3dd069c1530d72 100644
--- a/tests/node_compat/test/parallel/test-fs-readdir-stack-overflow.js
+++ b/tests/node_compat/test/parallel/test-fs-readdir-stack-overflow.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-readdir.js b/tests/node_compat/test/parallel/test-fs-readdir.js
index 31e8221ef5e70b..aaf53697488294 100644
--- a/tests/node_compat/test/parallel/test-fs-readdir.js
+++ b/tests/node_compat/test/parallel/test-fs-readdir.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-readfile-empty.js b/tests/node_compat/test/parallel/test-fs-readfile-empty.js
index 3f3f9e83e95f93..9de3339e390624 100644
--- a/tests/node_compat/test/parallel/test-fs-readfile-empty.js
+++ b/tests/node_compat/test/parallel/test-fs-readfile-empty.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-readfile-fd.js b/tests/node_compat/test/parallel/test-fs-readfile-fd.js
index 7edfd1d6a96437..08223f5c94994b 100644
--- a/tests/node_compat/test/parallel/test-fs-readfile-fd.js
+++ b/tests/node_compat/test/parallel/test-fs-readfile-fd.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-readfile-unlink.js b/tests/node_compat/test/parallel/test-fs-readfile-unlink.js
index e9e4b67b17ff14..3d1d949409591f 100644
--- a/tests/node_compat/test/parallel/test-fs-readfile-unlink.js
+++ b/tests/node_compat/test/parallel/test-fs-readfile-unlink.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-readfile-zero-byte-liar.js b/tests/node_compat/test/parallel/test-fs-readfile-zero-byte-liar.js
index e2481554c61505..7c9dba011ba8ca 100644
--- a/tests/node_compat/test/parallel/test-fs-readfile-zero-byte-liar.js
+++ b/tests/node_compat/test/parallel/test-fs-readfile-zero-byte-liar.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-readfilesync-enoent.js b/tests/node_compat/test/parallel/test-fs-readfilesync-enoent.js
index ba888cee5a8b26..afe9707196a429 100644
--- a/tests/node_compat/test/parallel/test-fs-readfilesync-enoent.js
+++ b/tests/node_compat/test/parallel/test-fs-readfilesync-enoent.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-readv-sync.js b/tests/node_compat/test/parallel/test-fs-readv-sync.js
index 2829dbb2c8d967..d15f3968005a7c 100644
--- a/tests/node_compat/test/parallel/test-fs-readv-sync.js
+++ b/tests/node_compat/test/parallel/test-fs-readv-sync.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -73,21 +73,21 @@ const wrongInputs = [false, 'test', {}, [{}], ['sdf'], null, undefined];
 {
   const fd = fs.openSync(filename, 'r');
 
-  wrongInputs.forEach((wrongInput) => {
+  for (const wrongInput of wrongInputs) {
     assert.throws(
       () => fs.readvSync(fd, wrongInput, null), {
         code: 'ERR_INVALID_ARG_TYPE',
         name: 'TypeError'
       }
     );
-  });
+  }
 
   fs.closeSync(fd);
 }
 
 {
   // fs.readv with wrong fd argument
-  wrongInputs.forEach((wrongInput) => {
+  for (const wrongInput of wrongInputs) {
     assert.throws(
       () => fs.readvSync(wrongInput),
       {
@@ -95,5 +95,5 @@ const wrongInputs = [false, 'test', {}, [{}], ['sdf'], null, undefined];
         name: 'TypeError'
       }
     );
-  });
+  }
 }
diff --git a/tests/node_compat/test/parallel/test-fs-readv.js b/tests/node_compat/test/parallel/test-fs-readv.js
index 834d1da63edead..249ff1408cdbeb 100644
--- a/tests/node_compat/test/parallel/test-fs-readv.js
+++ b/tests/node_compat/test/parallel/test-fs-readv.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -74,22 +74,21 @@ const wrongInputs = [false, 'test', {}, [{}], ['sdf'], null, undefined];
   fs.writeFileSync(filename, exptectedBuff);
   const fd = fs.openSync(filename, 'r');
 
-
-  wrongInputs.forEach((wrongInput) => {
+  for (const wrongInput of wrongInputs) {
     assert.throws(
       () => fs.readv(fd, wrongInput, null, common.mustNotCall()), {
         code: 'ERR_INVALID_ARG_TYPE',
         name: 'TypeError'
       }
     );
-  });
+  }
 
   fs.closeSync(fd);
 }
 
 {
   // fs.readv with wrong fd argument
-  wrongInputs.forEach((wrongInput) => {
+  for (const wrongInput of wrongInputs) {
     assert.throws(
       () => fs.readv(wrongInput, common.mustNotCall()),
       {
@@ -97,5 +96,5 @@ const wrongInputs = [false, 'test', {}, [{}], ['sdf'], null, undefined];
         name: 'TypeError'
       }
     );
-  });
+  }
 }
diff --git a/tests/node_compat/test/parallel/test-fs-ready-event-stream.js b/tests/node_compat/test/parallel/test-fs-ready-event-stream.js
index 12f1b044438ecc..47e5ff221d6410 100644
--- a/tests/node_compat/test/parallel/test-fs-ready-event-stream.js
+++ b/tests/node_compat/test/parallel/test-fs-ready-event-stream.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-realpath-native.js b/tests/node_compat/test/parallel/test-fs-realpath-native.js
index 753dfc1613af07..ed47c7c1c52871 100644
--- a/tests/node_compat/test/parallel/test-fs-realpath-native.js
+++ b/tests/node_compat/test/parallel/test-fs-realpath-native.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-not-found.js b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-not-found.js
index e20f5e622b64f0..0abb0365412cdc 100644
--- a/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-not-found.js
+++ b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-not-found.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-on-file.js b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-on-file.js
index 0691083103bb0e..ebae3e94a257b6 100644
--- a/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-on-file.js
+++ b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-on-file.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-not-found.js b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-not-found.js
index f337af1db284d8..fd53f3fde367fc 100644
--- a/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-not-found.js
+++ b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-not-found.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-on-file.js b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-on-file.js
index 123ca9775569b8..e2ca271adc3afa 100644
--- a/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-on-file.js
+++ b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-on-file.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-not-found.js b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-not-found.js
index f99f413b169721..976f429a2aa444 100644
--- a/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-not-found.js
+++ b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-not-found.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-on-file.js b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-on-file.js
index f1ed786977fb3a..16c6b110a84dab 100644
--- a/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-on-file.js
+++ b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-on-file.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-rmdir-type-check.js b/tests/node_compat/test/parallel/test-fs-rmdir-type-check.js
index 335824b2658d52..e04fafa2ba7325 100644
--- a/tests/node_compat/test/parallel/test-fs-rmdir-type-check.js
+++ b/tests/node_compat/test/parallel/test-fs-rmdir-type-check.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-sir-writes-alot.js b/tests/node_compat/test/parallel/test-fs-sir-writes-alot.js
index 4cf0fbe4e85c55..35feba40667759 100644
--- a/tests/node_compat/test/parallel/test-fs-sir-writes-alot.js
+++ b/tests/node_compat/test/parallel/test-fs-sir-writes-alot.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-stream-construct-compat-error-read.js b/tests/node_compat/test/parallel/test-fs-stream-construct-compat-error-read.js
index 210217ca1770f6..def4178879bde0 100644
--- a/tests/node_compat/test/parallel/test-fs-stream-construct-compat-error-read.js
+++ b/tests/node_compat/test/parallel/test-fs-stream-construct-compat-error-read.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-stream-construct-compat-graceful-fs.js b/tests/node_compat/test/parallel/test-fs-stream-construct-compat-graceful-fs.js
index 7df6566f832d73..680fd49fd83b6f 100644
--- a/tests/node_compat/test/parallel/test-fs-stream-construct-compat-graceful-fs.js
+++ b/tests/node_compat/test/parallel/test-fs-stream-construct-compat-graceful-fs.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-stream-construct-compat-old-node.js b/tests/node_compat/test/parallel/test-fs-stream-construct-compat-old-node.js
index 12ff3984b9dfe1..e54fc7ed96d066 100644
--- a/tests/node_compat/test/parallel/test-fs-stream-construct-compat-old-node.js
+++ b/tests/node_compat/test/parallel/test-fs-stream-construct-compat-old-node.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-stream-destroy-emit-error.js b/tests/node_compat/test/parallel/test-fs-stream-destroy-emit-error.js
index 1a3008895fa5f5..281611558244fd 100644
--- a/tests/node_compat/test/parallel/test-fs-stream-destroy-emit-error.js
+++ b/tests/node_compat/test/parallel/test-fs-stream-destroy-emit-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-stream-double-close.js b/tests/node_compat/test/parallel/test-fs-stream-double-close.js
index 01894e26029803..2a46f1b11fb418 100644
--- a/tests/node_compat/test/parallel/test-fs-stream-double-close.js
+++ b/tests/node_compat/test/parallel/test-fs-stream-double-close.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-stream-fs-options.js b/tests/node_compat/test/parallel/test-fs-stream-fs-options.js
index 3740962b7adf7b..0b69f83899c821 100644
--- a/tests/node_compat/test/parallel/test-fs-stream-fs-options.js
+++ b/tests/node_compat/test/parallel/test-fs-stream-fs-options.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-stream-options.js b/tests/node_compat/test/parallel/test-fs-stream-options.js
index 1733d191934d21..88780a21b7bcff 100644
--- a/tests/node_compat/test/parallel/test-fs-stream-options.js
+++ b/tests/node_compat/test/parallel/test-fs-stream-options.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-symlink-dir-junction-relative.js b/tests/node_compat/test/parallel/test-fs-symlink-dir-junction-relative.js
index 90487f51f5048b..c8dbb7df6b9b6c 100644
--- a/tests/node_compat/test/parallel/test-fs-symlink-dir-junction-relative.js
+++ b/tests/node_compat/test/parallel/test-fs-symlink-dir-junction-relative.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-timestamp-parsing-error.js b/tests/node_compat/test/parallel/test-fs-timestamp-parsing-error.js
index 1319f998b96335..d9a6e1c034922a 100644
--- a/tests/node_compat/test/parallel/test-fs-timestamp-parsing-error.js
+++ b/tests/node_compat/test/parallel/test-fs-timestamp-parsing-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-truncate-clear-file-zero.js b/tests/node_compat/test/parallel/test-fs-truncate-clear-file-zero.js
index 0dc50ef5638839..b47972fde946d8 100644
--- a/tests/node_compat/test/parallel/test-fs-truncate-clear-file-zero.js
+++ b/tests/node_compat/test/parallel/test-fs-truncate-clear-file-zero.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-util-validateoffsetlength.js b/tests/node_compat/test/parallel/test-fs-util-validateoffsetlength.js
index 7186df40715a24..bf219bedc4b6cd 100644
--- a/tests/node_compat/test/parallel/test-fs-util-validateoffsetlength.js
+++ b/tests/node_compat/test/parallel/test-fs-util-validateoffsetlength.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-fs-utimes-y2K38.js b/tests/node_compat/test/parallel/test-fs-utimes-y2K38.js
index 381b46b1fb3d66..e1ca79d1af07a7 100644
--- a/tests/node_compat/test/parallel/test-fs-utimes-y2K38.js
+++ b/tests/node_compat/test/parallel/test-fs-utimes-y2K38.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-utimes.js b/tests/node_compat/test/parallel/test-fs-utimes.js
index afc57776078521..62b4b7b7e183e6 100644
--- a/tests/node_compat/test/parallel/test-fs-utimes.js
+++ b/tests/node_compat/test/parallel/test-fs-utimes.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-watch-file-enoent-after-deletion.js b/tests/node_compat/test/parallel/test-fs-watch-file-enoent-after-deletion.js
index 5b4c892d00de14..a635b9386b64f9 100644
--- a/tests/node_compat/test/parallel/test-fs-watch-file-enoent-after-deletion.js
+++ b/tests/node_compat/test/parallel/test-fs-watch-file-enoent-after-deletion.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-watch-recursive-add-file-with-url.js b/tests/node_compat/test/parallel/test-fs-watch-recursive-add-file-with-url.js
index eb79cc85a99760..508752ceef6175 100644
--- a/tests/node_compat/test/parallel/test-fs-watch-recursive-add-file-with-url.js
+++ b/tests/node_compat/test/parallel/test-fs-watch-recursive-add-file-with-url.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -42,9 +42,8 @@ tmpdir.refresh();
   const watcher = fs.watch(url, { recursive: true });
   let watcherClosed = false;
   watcher.on('change', function(event, filename) {
-    assert.strictEqual(event, 'rename');
-
     if (filename === path.basename(filePath)) {
+      assert.strictEqual(event, 'rename');
       watcher.close();
       watcherClosed = true;
     }
diff --git a/tests/node_compat/test/parallel/test-fs-watch-recursive-add-file.js b/tests/node_compat/test/parallel/test-fs-watch-recursive-add-file.js
index d572026da56ddb..b716bd18afa8ea 100644
--- a/tests/node_compat/test/parallel/test-fs-watch-recursive-add-file.js
+++ b/tests/node_compat/test/parallel/test-fs-watch-recursive-add-file.js
@@ -2,13 +2,12 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
 
 const common = require('../common');
-const { setTimeout } = require('timers/promises');
 
 if (common.isIBMi)
   common.skip('IBMi does not support `fs.watch()`');
@@ -28,30 +27,29 @@ const tmpdir = require('../common/tmpdir');
 const testDir = tmpdir.path;
 tmpdir.refresh();
 
-(async () => {
-  // Add a file to already watching folder
+// Add a file to already watching folder
 
-  const rootDirectory = fs.mkdtempSync(testDir + path.sep);
-  const testDirectory = path.join(rootDirectory, 'test-1');
-  fs.mkdirSync(testDirectory);
+const rootDirectory = fs.mkdtempSync(testDir + path.sep);
+const testDirectory = path.join(rootDirectory, 'test-1');
+fs.mkdirSync(testDirectory);
 
-  const testFile = path.join(testDirectory, 'file-1.txt');
+const testFile = path.join(testDirectory, 'file-1.txt');
 
-  const watcher = fs.watch(testDirectory, { recursive: true });
-  let watcherClosed = false;
-  watcher.on('change', function(event, filename) {
+const watcher = fs.watch(testDirectory, { recursive: true });
+let watcherClosed = false;
+watcher.on('change', function(event, filename) {
+  if (filename === path.basename(testFile)) {
     assert.strictEqual(event, 'rename');
+    watcher.close();
+    watcherClosed = true;
+  }
+});
 
-    if (filename === path.basename(testFile)) {
-      watcher.close();
-      watcherClosed = true;
-    }
-  });
-
-  await setTimeout(common.platformTimeout(100));
+// Do the write with a delay to ensure that the OS is ready to notify us.
+setTimeout(() => {
   fs.writeFileSync(testFile, 'world');
+}, common.platformTimeout(200));
 
-  process.once('exit', function() {
-    assert(watcherClosed, 'watcher Object was not closed');
-  });
-})().then(common.mustCall());
+process.once('exit', function() {
+  assert(watcherClosed, 'watcher Object was not closed');
+});
diff --git a/tests/node_compat/test/parallel/test-fs-watch-recursive-add-folder.js b/tests/node_compat/test/parallel/test-fs-watch-recursive-add-folder.js
index 46345443c5bc74..76c665db92631f 100644
--- a/tests/node_compat/test/parallel/test-fs-watch-recursive-add-folder.js
+++ b/tests/node_compat/test/parallel/test-fs-watch-recursive-add-folder.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -40,9 +40,8 @@ tmpdir.refresh();
   const watcher = fs.watch(testDirectory, { recursive: true });
   let watcherClosed = false;
   watcher.on('change', function(event, filename) {
-    assert.strictEqual(event, 'rename');
-
     if (filename === path.basename(testFile)) {
+      assert.strictEqual(event, 'rename');
       watcher.close();
       watcherClosed = true;
     }
diff --git a/tests/node_compat/test/parallel/test-fs-watch-recursive-update-file.js b/tests/node_compat/test/parallel/test-fs-watch-recursive-update-file.js
index 185db0d645d9d9..032578816dbb73 100644
--- a/tests/node_compat/test/parallel/test-fs-watch-recursive-update-file.js
+++ b/tests/node_compat/test/parallel/test-fs-watch-recursive-update-file.js
@@ -2,13 +2,12 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
 
 const common = require('../common');
-const { setTimeout } = require('timers/promises');
 
 if (common.isIBMi)
   common.skip('IBMi does not support `fs.watch()`');
@@ -28,32 +27,26 @@ const tmpdir = require('../common/tmpdir');
 const testDir = tmpdir.path;
 tmpdir.refresh();
 
-(async () => {
-  // Watch a folder and update an already existing file in it.
+// Watch a folder and update an already existing file in it.
 
-  const rootDirectory = fs.mkdtempSync(testDir + path.sep);
-  const testDirectory = path.join(rootDirectory, 'test-0');
-  fs.mkdirSync(testDirectory);
+const rootDirectory = fs.mkdtempSync(testDir + path.sep);
+const testDirectory = path.join(rootDirectory, 'test-0');
+fs.mkdirSync(testDirectory);
 
-  const testFile = path.join(testDirectory, 'file-1.txt');
-  fs.writeFileSync(testFile, 'hello');
+const testFile = path.join(testDirectory, 'file-1.txt');
+fs.writeFileSync(testFile, 'hello');
 
-  const watcher = fs.watch(testDirectory, { recursive: true });
-  let watcherClosed = false;
-  watcher.on('change', common.mustCallAtLeast(function(event, filename) {
-    // Libuv inconsistenly emits a rename event for the file we are watching
-    assert.ok(event === 'change' || event === 'rename');
+const watcher = fs.watch(testDirectory, { recursive: true });
+watcher.on('change', common.mustCallAtLeast(function(event, filename) {
+  // Libuv inconsistently emits a rename event for the file we are watching
+  assert.ok(event === 'change' || event === 'rename');
 
-    if (filename === path.basename(testFile)) {
-      watcher.close();
-      watcherClosed = true;
-    }
-  }));
+  if (filename === path.basename(testFile)) {
+    watcher.close();
+  }
+}));
 
-  await setTimeout(common.platformTimeout(100));
+// Do the write with a delay to ensure that the OS is ready to notify us.
+setTimeout(() => {
   fs.writeFileSync(testFile, 'hello');
-
-  process.once('exit', function() {
-    assert(watcherClosed, 'watcher Object was not closed');
-  });
-})().then(common.mustCall());
+}, common.platformTimeout(200));
diff --git a/tests/node_compat/test/parallel/test-fs-watchfile.js b/tests/node_compat/test/parallel/test-fs-watchfile.js
index b46e2e5efef344..b91192054e83ee 100644
--- a/tests/node_compat/test/parallel/test-fs-watchfile.js
+++ b/tests/node_compat/test/parallel/test-fs-watchfile.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -91,12 +91,9 @@ watcher.on('stop', common.mustCall());
 
 // Watch events should callback with a filename on supported systems.
 // Omitting AIX. It works but not reliably.
-if (common.isLinux || common.isOSX || common.isWindows) {
+if (common.isLinux || common.isMacOS || common.isWindows) {
   const dir = tmpdir.resolve('watch');
-
-  fs.mkdir(dir, common.mustCall(function(err) {
-    if (err) assert.fail(err);
-
+  function doWatch() {
     const handle = fs.watch(dir, common.mustCall(function(eventType, filename) {
       clearInterval(interval);
       handle.close();
@@ -108,5 +105,15 @@ if (common.isLinux || common.isOSX || common.isWindows) {
         if (err) assert.fail(err);
       }));
     }, 1);
+  }
+
+  fs.mkdir(dir, common.mustSucceed(() => {
+    if (common.isMacOS) {
+      // On macOS delay watcher start to avoid leaking previous events.
+      // Refs: https://github.com/libuv/libuv/pull/4503
+      setTimeout(doWatch, common.platformTimeout(100));
+    } else {
+      doWatch();
+    }
   }));
 }
diff --git a/tests/node_compat/test/parallel/test-fs-write-buffer.js b/tests/node_compat/test/parallel/test-fs-write-buffer.js
index 4971a101d5db2e..7e466cae8d003e 100644
--- a/tests/node_compat/test/parallel/test-fs-write-buffer.js
+++ b/tests/node_compat/test/parallel/test-fs-write-buffer.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-write-file-buffer.js b/tests/node_compat/test/parallel/test-fs-write-file-buffer.js
index 155047de8a358f..9d67d60f82bbe9 100644
--- a/tests/node_compat/test/parallel/test-fs-write-file-buffer.js
+++ b/tests/node_compat/test/parallel/test-fs-write-file-buffer.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -28,7 +28,6 @@
 
 'use strict';
 require('../common');
-const util = require('util');
 const fs = require('fs');
 
 let data = [
@@ -57,5 +56,3 @@ tmpdir.refresh();
 
 const buf = Buffer.from(data, 'base64');
 fs.writeFileSync(tmpdir.resolve('test.jpg'), buf);
-
-util.log('Done!');
diff --git a/tests/node_compat/test/parallel/test-fs-write-file-invalid-path.js b/tests/node_compat/test/parallel/test-fs-write-file-invalid-path.js
index 93459235825a55..c161da1ba4d75d 100644
--- a/tests/node_compat/test/parallel/test-fs-write-file-invalid-path.js
+++ b/tests/node_compat/test/parallel/test-fs-write-file-invalid-path.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-write-file-sync.js b/tests/node_compat/test/parallel/test-fs-write-file-sync.js
index 01d14b8fd04f21..084475058eb47e 100644
--- a/tests/node_compat/test/parallel/test-fs-write-file-sync.js
+++ b/tests/node_compat/test/parallel/test-fs-write-file-sync.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -28,9 +28,11 @@
 
 'use strict';
 const common = require('../common');
+const { isMainThread } = require('worker_threads');
 
-if (!common.isMainThread)
+if (!isMainThread) {
   common.skip('Setting process.umask is not supported in Workers');
+}
 
 const assert = require('assert');
 const fs = require('fs');
diff --git a/tests/node_compat/test/parallel/test-fs-write-negativeoffset.js b/tests/node_compat/test/parallel/test-fs-write-negativeoffset.js
index 101b6ecc3b4f3b..4ca8f86a759269 100644
--- a/tests/node_compat/test/parallel/test-fs-write-negativeoffset.js
+++ b/tests/node_compat/test/parallel/test-fs-write-negativeoffset.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-write-no-fd.js b/tests/node_compat/test/parallel/test-fs-write-no-fd.js
index a6fdbf8eebd162..6806c10c0897be 100644
--- a/tests/node_compat/test/parallel/test-fs-write-no-fd.js
+++ b/tests/node_compat/test/parallel/test-fs-write-no-fd.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-write-stream-autoclose-option.js b/tests/node_compat/test/parallel/test-fs-write-stream-autoclose-option.js
index a38de9119e3db8..3173c23a6ef5f0 100644
--- a/tests/node_compat/test/parallel/test-fs-write-stream-autoclose-option.js
+++ b/tests/node_compat/test/parallel/test-fs-write-stream-autoclose-option.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-write-stream-close-without-callback.js b/tests/node_compat/test/parallel/test-fs-write-stream-close-without-callback.js
index 10ab6ca769cdc2..fdac9eecba7bfa 100644
--- a/tests/node_compat/test/parallel/test-fs-write-stream-close-without-callback.js
+++ b/tests/node_compat/test/parallel/test-fs-write-stream-close-without-callback.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-write-stream-double-close.js b/tests/node_compat/test/parallel/test-fs-write-stream-double-close.js
index 901a77cea9ef1d..011c53fd24f9b0 100644
--- a/tests/node_compat/test/parallel/test-fs-write-stream-double-close.js
+++ b/tests/node_compat/test/parallel/test-fs-write-stream-double-close.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-write-stream-encoding.js b/tests/node_compat/test/parallel/test-fs-write-stream-encoding.js
index 85f63bd7e97744..7f46b6e9b017ed 100644
--- a/tests/node_compat/test/parallel/test-fs-write-stream-encoding.js
+++ b/tests/node_compat/test/parallel/test-fs-write-stream-encoding.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-write-stream-end.js b/tests/node_compat/test/parallel/test-fs-write-stream-end.js
index d162e9644c8766..241648c859b593 100644
--- a/tests/node_compat/test/parallel/test-fs-write-stream-end.js
+++ b/tests/node_compat/test/parallel/test-fs-write-stream-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-write-stream-fs.js b/tests/node_compat/test/parallel/test-fs-write-stream-fs.js
index 95fcdde26bb605..1405e4dc5ad83f 100644
--- a/tests/node_compat/test/parallel/test-fs-write-stream-fs.js
+++ b/tests/node_compat/test/parallel/test-fs-write-stream-fs.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-write-stream-patch-open.js b/tests/node_compat/test/parallel/test-fs-write-stream-patch-open.js
index 8f9b15c59c1592..737495ffb13052 100644
--- a/tests/node_compat/test/parallel/test-fs-write-stream-patch-open.js
+++ b/tests/node_compat/test/parallel/test-fs-write-stream-patch-open.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-write-stream-throw-type-error.js b/tests/node_compat/test/parallel/test-fs-write-stream-throw-type-error.js
index d53ec243bc9148..3eea3de44e4692 100644
--- a/tests/node_compat/test/parallel/test-fs-write-stream-throw-type-error.js
+++ b/tests/node_compat/test/parallel/test-fs-write-stream-throw-type-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-write-stream.js b/tests/node_compat/test/parallel/test-fs-write-stream.js
index 589308135a7a1f..d15001cbaa7744 100644
--- a/tests/node_compat/test/parallel/test-fs-write-stream.js
+++ b/tests/node_compat/test/parallel/test-fs-write-stream.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-write-sync.js b/tests/node_compat/test/parallel/test-fs-write-sync.js
index c846989f3b4e14..8a35d0e3093e3a 100644
--- a/tests/node_compat/test/parallel/test-fs-write-sync.js
+++ b/tests/node_compat/test/parallel/test-fs-write-sync.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-fs-write.js b/tests/node_compat/test/parallel/test-fs-write.js
index c8d0c2b53f3ab0..ba3ff1427e1081 100644
--- a/tests/node_compat/test/parallel/test-fs-write.js
+++ b/tests/node_compat/test/parallel/test-fs-write.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -42,13 +42,27 @@ const fn4 = tmpdir.resolve('write4.txt');
 const expected = 'ümlaut.';
 const constants = fs.constants;
 
-const { externalizeString, isOneByteString } = global;
+const {
+  createExternalizableString,
+  externalizeString,
+  isOneByteString,
+} = globalThis;
+
+assert.notStrictEqual(createExternalizableString, undefined);
+assert.notStrictEqual(externalizeString, undefined);
+assert.notStrictEqual(isOneByteString, undefined);
 
 // Account for extra globals exposed by --expose_externalize_string.
-common.allowGlobals(externalizeString, isOneByteString, global.x);
+common.allowGlobals(
+  createExternalizableString,
+  externalizeString,
+  isOneByteString,
+  globalThis.x,
+);
 
 {
-  const expected = 'ümlaut sechzig';  // Must be a unique string.
+  // Must be a unique string.
+  const expected = createExternalizableString('ümlaut sechzig');
   externalizeString(expected);
   assert.strictEqual(isOneByteString(expected), true);
   const fd = fs.openSync(fn, 'w');
@@ -58,7 +72,8 @@ common.allowGlobals(externalizeString, isOneByteString, global.x);
 }
 
 {
-  const expected = 'ümlaut neunzig';  // Must be a unique string.
+  // Must be a unique string.
+  const expected = createExternalizableString('ümlaut neunzig');
   externalizeString(expected);
   assert.strictEqual(isOneByteString(expected), true);
   const fd = fs.openSync(fn, 'w');
@@ -68,7 +83,8 @@ common.allowGlobals(externalizeString, isOneByteString, global.x);
 }
 
 {
-  const expected = 'Zhōngwén 1';  // Must be a unique string.
+  // Must be a unique string.
+  const expected = createExternalizableString('Zhōngwén 1');
   externalizeString(expected);
   assert.strictEqual(isOneByteString(expected), false);
   const fd = fs.openSync(fn, 'w');
@@ -78,7 +94,8 @@ common.allowGlobals(externalizeString, isOneByteString, global.x);
 }
 
 {
-  const expected = 'Zhōngwén 2';  // Must be a unique string.
+  // Must be a unique string.
+  const expected = createExternalizableString('Zhōngwén 2');
   externalizeString(expected);
   assert.strictEqual(isOneByteString(expected), false);
   const fd = fs.openSync(fn, 'w');
diff --git a/tests/node_compat/test/parallel/test-fs-writev-sync.js b/tests/node_compat/test/parallel/test-fs-writev-sync.js
index eb4eee6bc12a30..f627b2601cff51 100644
--- a/tests/node_compat/test/parallel/test-fs-writev-sync.js
+++ b/tests/node_compat/test/parallel/test-fs-writev-sync.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-fs-writev.js b/tests/node_compat/test/parallel/test-fs-writev.js
index 2212aa65f44cdc..f28c6ad81f49d9 100644
--- a/tests/node_compat/test/parallel/test-fs-writev.js
+++ b/tests/node_compat/test/parallel/test-fs-writev.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-global-domexception.js b/tests/node_compat/test/parallel/test-global-domexception.js
index 1b88a08916b403..3879c37f235134 100644
--- a/tests/node_compat/test/parallel/test-global-domexception.js
+++ b/tests/node_compat/test/parallel/test-global-domexception.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-global-encoder.js b/tests/node_compat/test/parallel/test-global-encoder.js
index 4a2db0d2f36dd7..f25db89cb06eb2 100644
--- a/tests/node_compat/test/parallel/test-global-encoder.js
+++ b/tests/node_compat/test/parallel/test-global-encoder.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-global-webcrypto.js b/tests/node_compat/test/parallel/test-global-webcrypto.js
index b2074cf8bf718f..7e092d5b9c69e8 100644
--- a/tests/node_compat/test/parallel/test-global-webcrypto.js
+++ b/tests/node_compat/test/parallel/test-global-webcrypto.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -14,7 +14,7 @@ if (!common.hasCrypto)
 const assert = require('assert');
 const crypto = require('crypto');
 
-/* eslint-disable no-restricted-syntax */
+/* eslint-disable no-restricted-properties */
 assert.strictEqual(globalThis.crypto, crypto.webcrypto);
 assert.strictEqual(Crypto, crypto.webcrypto.constructor);
 assert.strictEqual(SubtleCrypto, crypto.webcrypto.subtle.constructor);
diff --git a/tests/node_compat/test/parallel/test-global-webstreams.js b/tests/node_compat/test/parallel/test-global-webstreams.js
index ae61fbe9fbf3a1..726c6d6e68d6db 100644
--- a/tests/node_compat/test/parallel/test-global-webstreams.js
+++ b/tests/node_compat/test/parallel/test-global-webstreams.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-handle-wrap-close-abort.js b/tests/node_compat/test/parallel/test-handle-wrap-close-abort.js
index c4cd5a42bc127d..15c2b1a585dcce 100644
--- a/tests/node_compat/test/parallel/test-handle-wrap-close-abort.js
+++ b/tests/node_compat/test/parallel/test-handle-wrap-close-abort.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-abort-before-end.js b/tests/node_compat/test/parallel/test-http-abort-before-end.js
index f144dff65d37a4..dd3099216d0531 100644
--- a/tests/node_compat/test/parallel/test-http-abort-before-end.js
+++ b/tests/node_compat/test/parallel/test-http-abort-before-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-addrequest-localaddress.js b/tests/node_compat/test/parallel/test-http-addrequest-localaddress.js
index 7f4cbc3f3120ce..aa265c351beed9 100644
--- a/tests/node_compat/test/parallel/test-http-addrequest-localaddress.js
+++ b/tests/node_compat/test/parallel/test-http-addrequest-localaddress.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-agent-getname.js b/tests/node_compat/test/parallel/test-http-agent-getname.js
index 2a41d3813dd561..d834137dae133d 100644
--- a/tests/node_compat/test/parallel/test-http-agent-getname.js
+++ b/tests/node_compat/test/parallel/test-http-agent-getname.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-agent-maxtotalsockets.js b/tests/node_compat/test/parallel/test-http-agent-maxtotalsockets.js
index ee7e2bb5d58069..004d10283be4fe 100644
--- a/tests/node_compat/test/parallel/test-http-agent-maxtotalsockets.js
+++ b/tests/node_compat/test/parallel/test-http-agent-maxtotalsockets.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-agent-no-protocol.js b/tests/node_compat/test/parallel/test-http-agent-no-protocol.js
index 58a43792a9adb2..ee868923d100db 100644
--- a/tests/node_compat/test/parallel/test-http-agent-no-protocol.js
+++ b/tests/node_compat/test/parallel/test-http-agent-no-protocol.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-agent-null.js b/tests/node_compat/test/parallel/test-http-agent-null.js
index 7619be7ecdeeb1..bbd05e5da6c2a5 100644
--- a/tests/node_compat/test/parallel/test-http-agent-null.js
+++ b/tests/node_compat/test/parallel/test-http-agent-null.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-allow-req-after-204-res.js b/tests/node_compat/test/parallel/test-http-allow-req-after-204-res.js
index 04d2560a44734f..88383026a015c0 100644
--- a/tests/node_compat/test/parallel/test-http-allow-req-after-204-res.js
+++ b/tests/node_compat/test/parallel/test-http-allow-req-after-204-res.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-bind-twice.js b/tests/node_compat/test/parallel/test-http-bind-twice.js
index 6ec3d2070867b1..128db6ee59a9f6 100644
--- a/tests/node_compat/test/parallel/test-http-bind-twice.js
+++ b/tests/node_compat/test/parallel/test-http-bind-twice.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-buffer-sanity.js b/tests/node_compat/test/parallel/test-http-buffer-sanity.js
index b9b5832be06af5..96940c1eb38af7 100644
--- a/tests/node_compat/test/parallel/test-http-buffer-sanity.js
+++ b/tests/node_compat/test/parallel/test-http-buffer-sanity.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-chunked-smuggling.js b/tests/node_compat/test/parallel/test-http-chunked-smuggling.js
index ef85d16798e111..0571d3afd93b69 100644
--- a/tests/node_compat/test/parallel/test-http-chunked-smuggling.js
+++ b/tests/node_compat/test/parallel/test-http-chunked-smuggling.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-chunked.js b/tests/node_compat/test/parallel/test-http-chunked.js
index 13a7c62b950402..dbaef42fc6af4a 100644
--- a/tests/node_compat/test/parallel/test-http-chunked.js
+++ b/tests/node_compat/test/parallel/test-http-chunked.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -30,16 +30,8 @@
 const common = require('../common');
 const assert = require('assert');
 const http = require('http');
-
-const UTF8_STRING = '南越国是前203年至前111年存在于岭南地区的一个国家,' +
-                    '国都位于番禺,疆域包括今天中国的广东、广西两省区的大部份地区,福建省、湖南、' +
-                    '贵州、云南的一小部份地区和越南的北部。南越国是秦朝灭亡后,' +
-                    '由南海郡尉赵佗于前203年起兵兼并桂林郡和象郡后建立。前196年和前179年,' +
-                    '南越国曾先后两次名义上臣属于西汉,成为西汉的“外臣”。前112年,' +
-                    '南越国末代君主赵建德与西汉发生战争,被汉武帝于前111年所灭。' +
-                    '南越国共存在93年,历经五代君主。南越国是岭南地区的第一个有记载的政权国家,' +
-                    '采用封建制和郡县制并存的制度,它的建立保证了秦末乱世岭南地区社会秩序的稳定,' +
-                    '有效的改善了岭南地区落后的政治、经济现状。';
+const fixtures = require('../common/fixtures');
+const UTF8_STRING = fixtures.utf8TestText;
 
 const server = http.createServer(common.mustCall((req, res) => {
   res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf8' });
diff --git a/tests/node_compat/test/parallel/test-http-client-abort2.js b/tests/node_compat/test/parallel/test-http-client-abort2.js
index f179e4951403a5..519f9b5a49a96d 100644
--- a/tests/node_compat/test/parallel/test-http-client-abort2.js
+++ b/tests/node_compat/test/parallel/test-http-client-abort2.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-client-check-http-token.js b/tests/node_compat/test/parallel/test-http-client-check-http-token.js
index 2457523b214b7f..cd84e819aacbaa 100644
--- a/tests/node_compat/test/parallel/test-http-client-check-http-token.js
+++ b/tests/node_compat/test/parallel/test-http-client-check-http-token.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-client-close-with-default-agent.js b/tests/node_compat/test/parallel/test-http-client-close-with-default-agent.js
index 67c2ae61560d23..75df35791d0f09 100644
--- a/tests/node_compat/test/parallel/test-http-client-close-with-default-agent.js
+++ b/tests/node_compat/test/parallel/test-http-client-close-with-default-agent.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-client-default-headers-exist.js b/tests/node_compat/test/parallel/test-http-client-default-headers-exist.js
index 883154db3dfbaa..6851dddf5f5379 100644
--- a/tests/node_compat/test/parallel/test-http-client-default-headers-exist.js
+++ b/tests/node_compat/test/parallel/test-http-client-default-headers-exist.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -52,12 +52,12 @@ const server = http.createServer(common.mustCall((req, res) => {
          `${req.method} was an unexpected method`);
 
   const requestHeaders = Object.keys(req.headers);
-  requestHeaders.forEach((header) => {
+  for (const header of requestHeaders) {
     assert.ok(
       expectedHeaders[req.method].includes(header.toLowerCase()),
       `${header} should not exist for method ${req.method}`
     );
-  });
+  }
 
   assert.strictEqual(
     requestHeaders.length,
diff --git a/tests/node_compat/test/parallel/test-http-client-defaults.js b/tests/node_compat/test/parallel/test-http-client-defaults.js
index 815dd60c0dd77e..c3384eb114b820 100644
--- a/tests/node_compat/test/parallel/test-http-client-defaults.js
+++ b/tests/node_compat/test/parallel/test-http-client-defaults.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-client-encoding.js b/tests/node_compat/test/parallel/test-http-client-encoding.js
index 3003bdf6e023a0..640bf5d41e3440 100644
--- a/tests/node_compat/test/parallel/test-http-client-encoding.js
+++ b/tests/node_compat/test/parallel/test-http-client-encoding.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-client-get-url.js b/tests/node_compat/test/parallel/test-http-client-get-url.js
index 073bcbe1dc758c..0840c1b1b9ef4a 100644
--- a/tests/node_compat/test/parallel/test-http-client-get-url.js
+++ b/tests/node_compat/test/parallel/test-http-client-get-url.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-client-headers-array.js b/tests/node_compat/test/parallel/test-http-client-headers-array.js
index 9558d22f6a8adc..a8a2e867539c92 100644
--- a/tests/node_compat/test/parallel/test-http-client-headers-array.js
+++ b/tests/node_compat/test/parallel/test-http-client-headers-array.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-client-invalid-path.js b/tests/node_compat/test/parallel/test-http-client-invalid-path.js
index 096d7674989631..922dedb9d62d2b 100644
--- a/tests/node_compat/test/parallel/test-http-client-invalid-path.js
+++ b/tests/node_compat/test/parallel/test-http-client-invalid-path.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-client-keep-alive-hint.js b/tests/node_compat/test/parallel/test-http-client-keep-alive-hint.js
index 91141329e086c4..45663c07558c2f 100644
--- a/tests/node_compat/test/parallel/test-http-client-keep-alive-hint.js
+++ b/tests/node_compat/test/parallel/test-http-client-keep-alive-hint.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-client-race-2.js b/tests/node_compat/test/parallel/test-http-client-race-2.js
index 09e77070fddfe4..142dab4670c5ed 100644
--- a/tests/node_compat/test/parallel/test-http-client-race-2.js
+++ b/tests/node_compat/test/parallel/test-http-client-race-2.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-client-race.js b/tests/node_compat/test/parallel/test-http-client-race.js
index 0dff9ce830e5ba..41a04c340e45b7 100644
--- a/tests/node_compat/test/parallel/test-http-client-race.js
+++ b/tests/node_compat/test/parallel/test-http-client-race.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-client-read-in-error.js b/tests/node_compat/test/parallel/test-http-client-read-in-error.js
index 0f54b721e42534..bc0746446d90a0 100644
--- a/tests/node_compat/test/parallel/test-http-client-read-in-error.js
+++ b/tests/node_compat/test/parallel/test-http-client-read-in-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-client-reject-unexpected-agent.js b/tests/node_compat/test/parallel/test-http-client-reject-unexpected-agent.js
index 4bfd4210a92448..f831eb41213336 100644
--- a/tests/node_compat/test/parallel/test-http-client-reject-unexpected-agent.js
+++ b/tests/node_compat/test/parallel/test-http-client-reject-unexpected-agent.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-client-timeout-with-data.js b/tests/node_compat/test/parallel/test-http-client-timeout-with-data.js
index 9e0f521b2e2d4c..ad8500430014c4 100644
--- a/tests/node_compat/test/parallel/test-http-client-timeout-with-data.js
+++ b/tests/node_compat/test/parallel/test-http-client-timeout-with-data.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-client-unescaped-path.js b/tests/node_compat/test/parallel/test-http-client-unescaped-path.js
index 6ae8106390f1c5..93c0db42ec0e27 100644
--- a/tests/node_compat/test/parallel/test-http-client-unescaped-path.js
+++ b/tests/node_compat/test/parallel/test-http-client-unescaped-path.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-client-upload-buf.js b/tests/node_compat/test/parallel/test-http-client-upload-buf.js
index a8299363fc02c6..20f99e14fe68bf 100644
--- a/tests/node_compat/test/parallel/test-http-client-upload-buf.js
+++ b/tests/node_compat/test/parallel/test-http-client-upload-buf.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-client-upload.js b/tests/node_compat/test/parallel/test-http-client-upload.js
index 4501c1e5fe095f..e80dc1f780b7fa 100644
--- a/tests/node_compat/test/parallel/test-http-client-upload.js
+++ b/tests/node_compat/test/parallel/test-http-client-upload.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-common.js b/tests/node_compat/test/parallel/test-http-common.js
index ce900ea72b2c7c..3390228b0b9d56 100644
--- a/tests/node_compat/test/parallel/test-http-common.js
+++ b/tests/node_compat/test/parallel/test-http-common.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-contentLength0.js b/tests/node_compat/test/parallel/test-http-contentLength0.js
index 8a0dc19ff32ba4..efee39945ead27 100644
--- a/tests/node_compat/test/parallel/test-http-contentLength0.js
+++ b/tests/node_compat/test/parallel/test-http-contentLength0.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-correct-hostname.js b/tests/node_compat/test/parallel/test-http-correct-hostname.js
index a38d57f03d9071..d708f01b942f25 100644
--- a/tests/node_compat/test/parallel/test-http-correct-hostname.js
+++ b/tests/node_compat/test/parallel/test-http-correct-hostname.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 /* eslint-disable node-core/crypto-check */
diff --git a/tests/node_compat/test/parallel/test-http-date-header.js b/tests/node_compat/test/parallel/test-http-date-header.js
index 4299a6848acfbe..075e4dfe3193eb 100644
--- a/tests/node_compat/test/parallel/test-http-date-header.js
+++ b/tests/node_compat/test/parallel/test-http-date-header.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-decoded-auth.js b/tests/node_compat/test/parallel/test-http-decoded-auth.js
index a0d2eb953e68c6..e1f18ae3abffd2 100644
--- a/tests/node_compat/test/parallel/test-http-decoded-auth.js
+++ b/tests/node_compat/test/parallel/test-http-decoded-auth.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-default-encoding.js b/tests/node_compat/test/parallel/test-http-default-encoding.js
index a87831c6327d92..123e89a36d2e3f 100644
--- a/tests/node_compat/test/parallel/test-http-default-encoding.js
+++ b/tests/node_compat/test/parallel/test-http-default-encoding.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-end-throw-socket-handling.js b/tests/node_compat/test/parallel/test-http-end-throw-socket-handling.js
index 2e963648e806ab..e6795d92ce66a3 100644
--- a/tests/node_compat/test/parallel/test-http-end-throw-socket-handling.js
+++ b/tests/node_compat/test/parallel/test-http-end-throw-socket-handling.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-eof-on-connect.js b/tests/node_compat/test/parallel/test-http-eof-on-connect.js
index 7a682a03c009d3..060ea238ef3dfd 100644
--- a/tests/node_compat/test/parallel/test-http-eof-on-connect.js
+++ b/tests/node_compat/test/parallel/test-http-eof-on-connect.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-extra-response.js b/tests/node_compat/test/parallel/test-http-extra-response.js
index 5d2ba9d36f5521..12a8f639ecf4f7 100644
--- a/tests/node_compat/test/parallel/test-http-extra-response.js
+++ b/tests/node_compat/test/parallel/test-http-extra-response.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-flush-headers.js b/tests/node_compat/test/parallel/test-http-flush-headers.js
index 5b5fe341990982..eb55059d13d1bf 100644
--- a/tests/node_compat/test/parallel/test-http-flush-headers.js
+++ b/tests/node_compat/test/parallel/test-http-flush-headers.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-full-response.js b/tests/node_compat/test/parallel/test-http-full-response.js
index cef22c7c802754..a5dce974a49cd8 100644
--- a/tests/node_compat/test/parallel/test-http-full-response.js
+++ b/tests/node_compat/test/parallel/test-http-full-response.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-head-request.js b/tests/node_compat/test/parallel/test-http-head-request.js
index fe3cc09ed16596..5988fa2cb2e086 100644
--- a/tests/node_compat/test/parallel/test-http-head-request.js
+++ b/tests/node_compat/test/parallel/test-http-head-request.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-head-response-has-no-body-end-implicit-headers.js b/tests/node_compat/test/parallel/test-http-head-response-has-no-body-end-implicit-headers.js
index 514fb4584b0f9a..78773994bfe21f 100644
--- a/tests/node_compat/test/parallel/test-http-head-response-has-no-body-end-implicit-headers.js
+++ b/tests/node_compat/test/parallel/test-http-head-response-has-no-body-end-implicit-headers.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-head-response-has-no-body-end.js b/tests/node_compat/test/parallel/test-http-head-response-has-no-body-end.js
index 9b831751a8146c..37df53f4bcb6aa 100644
--- a/tests/node_compat/test/parallel/test-http-head-response-has-no-body-end.js
+++ b/tests/node_compat/test/parallel/test-http-head-response-has-no-body-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-head-response-has-no-body.js b/tests/node_compat/test/parallel/test-http-head-response-has-no-body.js
index 334c89193d161f..c2b2e2610dcf47 100644
--- a/tests/node_compat/test/parallel/test-http-head-response-has-no-body.js
+++ b/tests/node_compat/test/parallel/test-http-head-response-has-no-body.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-head-throw-on-response-body-write.js b/tests/node_compat/test/parallel/test-http-head-throw-on-response-body-write.js
index 237cc1d89125be..c78f89bc05c64e 100644
--- a/tests/node_compat/test/parallel/test-http-head-throw-on-response-body-write.js
+++ b/tests/node_compat/test/parallel/test-http-head-throw-on-response-body-write.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-header-obstext.js b/tests/node_compat/test/parallel/test-http-header-obstext.js
index acdcef81add8ca..4608b55243367b 100644
--- a/tests/node_compat/test/parallel/test-http-header-obstext.js
+++ b/tests/node_compat/test/parallel/test-http-header-obstext.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-header-owstext.js b/tests/node_compat/test/parallel/test-http-header-owstext.js
index 488f14d026a311..454a6d3daa9381 100644
--- a/tests/node_compat/test/parallel/test-http-header-owstext.js
+++ b/tests/node_compat/test/parallel/test-http-header-owstext.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-header-read.js b/tests/node_compat/test/parallel/test-http-header-read.js
index cc57cc7a9e5612..c807aa2194c537 100644
--- a/tests/node_compat/test/parallel/test-http-header-read.js
+++ b/tests/node_compat/test/parallel/test-http-header-read.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-header-validators.js b/tests/node_compat/test/parallel/test-http-header-validators.js
index 9d896110d77c95..2d5b15b7396ec1 100644
--- a/tests/node_compat/test/parallel/test-http-header-validators.js
+++ b/tests/node_compat/test/parallel/test-http-header-validators.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-hex-write.js b/tests/node_compat/test/parallel/test-http-hex-write.js
index d855676ced1420..e1b57166ba02cc 100644
--- a/tests/node_compat/test/parallel/test-http-hex-write.js
+++ b/tests/node_compat/test/parallel/test-http-hex-write.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-highwatermark.js b/tests/node_compat/test/parallel/test-http-highwatermark.js
index 52d892f2469800..f1f817c43bca94 100644
--- a/tests/node_compat/test/parallel/test-http-highwatermark.js
+++ b/tests/node_compat/test/parallel/test-http-highwatermark.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-host-headers.js b/tests/node_compat/test/parallel/test-http-host-headers.js
index e3de01796794ce..62a530f349ed83 100644
--- a/tests/node_compat/test/parallel/test-http-host-headers.js
+++ b/tests/node_compat/test/parallel/test-http-host-headers.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-incoming-message-destroy.js b/tests/node_compat/test/parallel/test-http-incoming-message-destroy.js
index 0c41570d9a9bc0..c761d6213463b6 100644
--- a/tests/node_compat/test/parallel/test-http-incoming-message-destroy.js
+++ b/tests/node_compat/test/parallel/test-http-incoming-message-destroy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-invalid-path-chars.js b/tests/node_compat/test/parallel/test-http-invalid-path-chars.js
index be037050d50580..e220b236de4d61 100644
--- a/tests/node_compat/test/parallel/test-http-invalid-path-chars.js
+++ b/tests/node_compat/test/parallel/test-http-invalid-path-chars.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-invalidheaderfield.js b/tests/node_compat/test/parallel/test-http-invalidheaderfield.js
index 93d8d99f888b18..c936f8fb59047d 100644
--- a/tests/node_compat/test/parallel/test-http-invalidheaderfield.js
+++ b/tests/node_compat/test/parallel/test-http-invalidheaderfield.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-invalidheaderfield2.js b/tests/node_compat/test/parallel/test-http-invalidheaderfield2.js
index e6c0f976b6c63a..97232b7642d2ed 100644
--- a/tests/node_compat/test/parallel/test-http-invalidheaderfield2.js
+++ b/tests/node_compat/test/parallel/test-http-invalidheaderfield2.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-keep-alive-timeout-custom.js b/tests/node_compat/test/parallel/test-http-keep-alive-timeout-custom.js
index eb48c8c0bd2fda..9436e5bd44faca 100644
--- a/tests/node_compat/test/parallel/test-http-keep-alive-timeout-custom.js
+++ b/tests/node_compat/test/parallel/test-http-keep-alive-timeout-custom.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-listening.js b/tests/node_compat/test/parallel/test-http-listening.js
index 9963e377b558e0..d2e4635ca5667d 100644
--- a/tests/node_compat/test/parallel/test-http-listening.js
+++ b/tests/node_compat/test/parallel/test-http-listening.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-localaddress-bind-error.js b/tests/node_compat/test/parallel/test-http-localaddress-bind-error.js
index d951652e1b7d18..ebabf3d078d085 100644
--- a/tests/node_compat/test/parallel/test-http-localaddress-bind-error.js
+++ b/tests/node_compat/test/parallel/test-http-localaddress-bind-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-outgoing-end-types.js b/tests/node_compat/test/parallel/test-http-outgoing-end-types.js
index 30e466c4a8710c..7b7374a1e49d02 100644
--- a/tests/node_compat/test/parallel/test-http-outgoing-end-types.js
+++ b/tests/node_compat/test/parallel/test-http-outgoing-end-types.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-outgoing-finished.js b/tests/node_compat/test/parallel/test-http-outgoing-finished.js
index 543f4d7c6d42c8..2faaf1d23f2e88 100644
--- a/tests/node_compat/test/parallel/test-http-outgoing-finished.js
+++ b/tests/node_compat/test/parallel/test-http-outgoing-finished.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-getter.js b/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-getter.js
index dbd7f850a64861..672bd7c6e761b5 100644
--- a/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-getter.js
+++ b/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-getter.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-setter.js b/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-setter.js
index 8ecfbc7c3ef1b4..ed2df260092133 100644
--- a/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-setter.js
+++ b/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-setter.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-outgoing-internal-headers.js b/tests/node_compat/test/parallel/test-http-outgoing-internal-headers.js
index 05d6aa64a9343d..3efa39e9723348 100644
--- a/tests/node_compat/test/parallel/test-http-outgoing-internal-headers.js
+++ b/tests/node_compat/test/parallel/test-http-outgoing-internal-headers.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-http-outgoing-renderHeaders.js b/tests/node_compat/test/parallel/test-http-outgoing-renderHeaders.js
index c39d62c331ed45..d99b77465c3519 100644
--- a/tests/node_compat/test/parallel/test-http-outgoing-renderHeaders.js
+++ b/tests/node_compat/test/parallel/test-http-outgoing-renderHeaders.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-outgoing-settimeout.js b/tests/node_compat/test/parallel/test-http-outgoing-settimeout.js
index 70373d7c05e917..bb665baff7f230 100644
--- a/tests/node_compat/test/parallel/test-http-outgoing-settimeout.js
+++ b/tests/node_compat/test/parallel/test-http-outgoing-settimeout.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-outgoing-write-types.js b/tests/node_compat/test/parallel/test-http-outgoing-write-types.js
index 101f70581cc131..3ae21d3a63c221 100644
--- a/tests/node_compat/test/parallel/test-http-outgoing-write-types.js
+++ b/tests/node_compat/test/parallel/test-http-outgoing-write-types.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-parser-free.js b/tests/node_compat/test/parallel/test-http-parser-free.js
index d1fe71e254e94c..67ceec67bf5162 100644
--- a/tests/node_compat/test/parallel/test-http-parser-free.js
+++ b/tests/node_compat/test/parallel/test-http-parser-free.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-pause-no-dump.js b/tests/node_compat/test/parallel/test-http-pause-no-dump.js
index 0e9fb6605d1b0b..a581af235b97e7 100644
--- a/tests/node_compat/test/parallel/test-http-pause-no-dump.js
+++ b/tests/node_compat/test/parallel/test-http-pause-no-dump.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-pause-resume-one-end.js b/tests/node_compat/test/parallel/test-http-pause-resume-one-end.js
index c7b0126e620cd5..2202e4046fb3a0 100644
--- a/tests/node_compat/test/parallel/test-http-pause-resume-one-end.js
+++ b/tests/node_compat/test/parallel/test-http-pause-resume-one-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-pause.js b/tests/node_compat/test/parallel/test-http-pause.js
index a9e377de909f8c..12061e92601b44 100644
--- a/tests/node_compat/test/parallel/test-http-pause.js
+++ b/tests/node_compat/test/parallel/test-http-pause.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-pipe-fs.js b/tests/node_compat/test/parallel/test-http-pipe-fs.js
index 3fcd2e1f2cdf1b..587b9ef832e8fe 100644
--- a/tests/node_compat/test/parallel/test-http-pipe-fs.js
+++ b/tests/node_compat/test/parallel/test-http-pipe-fs.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-pipeline-requests-connection-leak.js b/tests/node_compat/test/parallel/test-http-pipeline-requests-connection-leak.js
index 3a5498113ba832..389bbb0036d3a3 100644
--- a/tests/node_compat/test/parallel/test-http-pipeline-requests-connection-leak.js
+++ b/tests/node_compat/test/parallel/test-http-pipeline-requests-connection-leak.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-proxy.js b/tests/node_compat/test/parallel/test-http-proxy.js
index a457275239b1e5..6fd5c6098c77f5 100644
--- a/tests/node_compat/test/parallel/test-http-proxy.js
+++ b/tests/node_compat/test/parallel/test-http-proxy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-readable-data-event.js b/tests/node_compat/test/parallel/test-http-readable-data-event.js
index 6c91ebe526c6a1..9bb894b362527f 100644
--- a/tests/node_compat/test/parallel/test-http-readable-data-event.js
+++ b/tests/node_compat/test/parallel/test-http-readable-data-event.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-request-arguments.js b/tests/node_compat/test/parallel/test-http-request-arguments.js
index d15bfc40eae145..fd7ce0569a9366 100644
--- a/tests/node_compat/test/parallel/test-http-request-arguments.js
+++ b/tests/node_compat/test/parallel/test-http-request-arguments.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-request-dont-override-options.js b/tests/node_compat/test/parallel/test-http-request-dont-override-options.js
index caa87bd953f04d..a29fd6fad1ab89 100644
--- a/tests/node_compat/test/parallel/test-http-request-dont-override-options.js
+++ b/tests/node_compat/test/parallel/test-http-request-dont-override-options.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-request-end-twice.js b/tests/node_compat/test/parallel/test-http-request-end-twice.js
index 34c3aee390c60b..2d15e30e98680d 100644
--- a/tests/node_compat/test/parallel/test-http-request-end-twice.js
+++ b/tests/node_compat/test/parallel/test-http-request-end-twice.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-request-end.js b/tests/node_compat/test/parallel/test-http-request-end.js
index 4c71cd14329a71..485a198e419eee 100644
--- a/tests/node_compat/test/parallel/test-http-request-end.js
+++ b/tests/node_compat/test/parallel/test-http-request-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -27,11 +27,12 @@
 // USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 'use strict';
-require('../common');
+const common = require('../common');
 const assert = require('assert');
 const http = require('http');
 
 const expected = 'Post Body For Test';
+const expectedStatusCode = 200;
 
 const server = http.Server(function(req, res) {
   let result = '';
@@ -41,12 +42,12 @@ const server = http.Server(function(req, res) {
     result += chunk;
   });
 
-  req.on('end', function() {
+  req.on('end', common.mustCall(() => {
     assert.strictEqual(result, expected);
-    res.writeHead(200);
+    res.writeHead(expectedStatusCode);
     res.end('hello world\n');
     server.close();
-  });
+  }));
 
 });
 
@@ -56,12 +57,9 @@ server.listen(0, function() {
     path: '/',
     method: 'POST'
   }, function(res) {
-    console.log(res.statusCode);
+    assert.strictEqual(res.statusCode, expectedStatusCode);
     res.resume();
-  }).on('error', function(e) {
-    console.log(e.message);
-    process.exit(1);
-  });
+  }).on('error', common.mustNotCall());
 
   const result = req.end(expected);
 
diff --git a/tests/node_compat/test/parallel/test-http-request-invalid-method-error.js b/tests/node_compat/test/parallel/test-http-request-invalid-method-error.js
index 570966056eef88..bfd02d78e0b27e 100644
--- a/tests/node_compat/test/parallel/test-http-request-invalid-method-error.js
+++ b/tests/node_compat/test/parallel/test-http-request-invalid-method-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-request-large-payload.js b/tests/node_compat/test/parallel/test-http-request-large-payload.js
index 80e36297ebca8d..d84c5464571d89 100644
--- a/tests/node_compat/test/parallel/test-http-request-large-payload.js
+++ b/tests/node_compat/test/parallel/test-http-request-large-payload.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-request-methods.js b/tests/node_compat/test/parallel/test-http-request-methods.js
index 69fb7aa5b1ee2c..bc3c10c3a0410f 100644
--- a/tests/node_compat/test/parallel/test-http-request-methods.js
+++ b/tests/node_compat/test/parallel/test-http-request-methods.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-res-write-end-dont-take-array.js b/tests/node_compat/test/parallel/test-http-res-write-end-dont-take-array.js
index 8d9996382368bb..21267f27e96193 100644
--- a/tests/node_compat/test/parallel/test-http-res-write-end-dont-take-array.js
+++ b/tests/node_compat/test/parallel/test-http-res-write-end-dont-take-array.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-response-multiheaders.js b/tests/node_compat/test/parallel/test-http-response-multiheaders.js
index 27bfbcdca501c1..05e975b661466a 100644
--- a/tests/node_compat/test/parallel/test-http-response-multiheaders.js
+++ b/tests/node_compat/test/parallel/test-http-response-multiheaders.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-response-readable.js b/tests/node_compat/test/parallel/test-http-response-readable.js
index 3d2ca1a8597ca6..46dd1500d4a394 100644
--- a/tests/node_compat/test/parallel/test-http-response-readable.js
+++ b/tests/node_compat/test/parallel/test-http-response-readable.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-response-writehead-returns-this.js b/tests/node_compat/test/parallel/test-http-response-writehead-returns-this.js
index a9796890f42306..6fbdb65bb19128 100644
--- a/tests/node_compat/test/parallel/test-http-response-writehead-returns-this.js
+++ b/tests/node_compat/test/parallel/test-http-response-writehead-returns-this.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-server-delete-parser.js b/tests/node_compat/test/parallel/test-http-server-delete-parser.js
index fbb242366fc4a0..2809e74e3cead2 100644
--- a/tests/node_compat/test/parallel/test-http-server-delete-parser.js
+++ b/tests/node_compat/test/parallel/test-http-server-delete-parser.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-server-write-after-end.js b/tests/node_compat/test/parallel/test-http-server-write-after-end.js
index c7e0cb48eba790..35e8750693c3e1 100644
--- a/tests/node_compat/test/parallel/test-http-server-write-after-end.js
+++ b/tests/node_compat/test/parallel/test-http-server-write-after-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-server-write-end-after-end.js b/tests/node_compat/test/parallel/test-http-server-write-end-after-end.js
index eb05ea93ccd174..76a6406c3ada42 100644
--- a/tests/node_compat/test/parallel/test-http-server-write-end-after-end.js
+++ b/tests/node_compat/test/parallel/test-http-server-write-end-after-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-set-cookies.js b/tests/node_compat/test/parallel/test-http-set-cookies.js
index d8c7627b7a0d96..0576f9dfa5cb50 100644
--- a/tests/node_compat/test/parallel/test-http-set-cookies.js
+++ b/tests/node_compat/test/parallel/test-http-set-cookies.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-set-header-chain.js b/tests/node_compat/test/parallel/test-http-set-header-chain.js
index 80f59711ae97f5..5dc16e3ef3bd6d 100644
--- a/tests/node_compat/test/parallel/test-http-set-header-chain.js
+++ b/tests/node_compat/test/parallel/test-http-set-header-chain.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-status-code.js b/tests/node_compat/test/parallel/test-http-status-code.js
index 78808640062849..3a97ea041b3671 100644
--- a/tests/node_compat/test/parallel/test-http-status-code.js
+++ b/tests/node_compat/test/parallel/test-http-status-code.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-status-reason-invalid-chars.js b/tests/node_compat/test/parallel/test-http-status-reason-invalid-chars.js
index cdf36c7cf630bd..7da43b1bc2e8b6 100644
--- a/tests/node_compat/test/parallel/test-http-status-reason-invalid-chars.js
+++ b/tests/node_compat/test/parallel/test-http-status-reason-invalid-chars.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-uncaught-from-request-callback.js b/tests/node_compat/test/parallel/test-http-uncaught-from-request-callback.js
index 32185e57dc4937..5e841957c3909a 100644
--- a/tests/node_compat/test/parallel/test-http-uncaught-from-request-callback.js
+++ b/tests/node_compat/test/parallel/test-http-uncaught-from-request-callback.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http-url.parse-auth.js b/tests/node_compat/test/parallel/test-http-url.parse-auth.js
index 9c805783382566..ae736b944fba8a 100644
--- a/tests/node_compat/test/parallel/test-http-url.parse-auth.js
+++ b/tests/node_compat/test/parallel/test-http-url.parse-auth.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-url.parse-basic.js b/tests/node_compat/test/parallel/test-http-url.parse-basic.js
index 62fa40431fa8a3..887fe3b6622be2 100644
--- a/tests/node_compat/test/parallel/test-http-url.parse-basic.js
+++ b/tests/node_compat/test/parallel/test-http-url.parse-basic.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-url.parse-only-support-http-https-protocol.js b/tests/node_compat/test/parallel/test-http-url.parse-only-support-http-https-protocol.js
index 6e2a25be7909f5..f04297f0403204 100644
--- a/tests/node_compat/test/parallel/test-http-url.parse-only-support-http-https-protocol.js
+++ b/tests/node_compat/test/parallel/test-http-url.parse-only-support-http-https-protocol.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-url.parse-path.js b/tests/node_compat/test/parallel/test-http-url.parse-path.js
index 1fb44adf6225da..7d35d05cb66e8c 100644
--- a/tests/node_compat/test/parallel/test-http-url.parse-path.js
+++ b/tests/node_compat/test/parallel/test-http-url.parse-path.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-url.parse-post.js b/tests/node_compat/test/parallel/test-http-url.parse-post.js
index 17561913793a55..984be48a3bc741 100644
--- a/tests/node_compat/test/parallel/test-http-url.parse-post.js
+++ b/tests/node_compat/test/parallel/test-http-url.parse-post.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-url.parse-search.js b/tests/node_compat/test/parallel/test-http-url.parse-search.js
index 181e1a1fdc60ad..786dbcb339fdeb 100644
--- a/tests/node_compat/test/parallel/test-http-url.parse-search.js
+++ b/tests/node_compat/test/parallel/test-http-url.parse-search.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-wget.js b/tests/node_compat/test/parallel/test-http-wget.js
index ea31a22acba59f..aba52862aed7de 100644
--- a/tests/node_compat/test/parallel/test-http-wget.js
+++ b/tests/node_compat/test/parallel/test-http-wget.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-write-empty-string.js b/tests/node_compat/test/parallel/test-http-write-empty-string.js
index 362a2a5cbfcf12..734e64cddc2b6e 100644
--- a/tests/node_compat/test/parallel/test-http-write-empty-string.js
+++ b/tests/node_compat/test/parallel/test-http-write-empty-string.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-http-zerolengthbuffer.js b/tests/node_compat/test/parallel/test-http-zerolengthbuffer.js
index ff41874fa6b239..af00b81eb44fda 100644
--- a/tests/node_compat/test/parallel/test-http-zerolengthbuffer.js
+++ b/tests/node_compat/test/parallel/test-http-zerolengthbuffer.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http2-client-request-listeners-warning.js b/tests/node_compat/test/parallel/test-http2-client-request-listeners-warning.js
index 0d1f5e07a85590..b7c613561a3b65 100644
--- a/tests/node_compat/test/parallel/test-http2-client-request-listeners-warning.js
+++ b/tests/node_compat/test/parallel/test-http2-client-request-listeners-warning.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http2-compat-expect-handling.js b/tests/node_compat/test/parallel/test-http2-compat-expect-handling.js
index 074c76680a2f51..3fe7ce1e187a07 100644
--- a/tests/node_compat/test/parallel/test-http2-compat-expect-handling.js
+++ b/tests/node_compat/test/parallel/test-http2-compat-expect-handling.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http2-compat-socket-set.js b/tests/node_compat/test/parallel/test-http2-compat-socket-set.js
index 1346226863c4b3..c1a9f6ecff4a48 100644
--- a/tests/node_compat/test/parallel/test-http2-compat-socket-set.js
+++ b/tests/node_compat/test/parallel/test-http2-compat-socket-set.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http2-date-header.js b/tests/node_compat/test/parallel/test-http2-date-header.js
index 0a8b9c9df3a6b1..65fde29b281ff7 100644
--- a/tests/node_compat/test/parallel/test-http2-date-header.js
+++ b/tests/node_compat/test/parallel/test-http2-date-header.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http2-dont-override.js b/tests/node_compat/test/parallel/test-http2-dont-override.js
index c14863be39a0e8..4ffbd1006ac461 100644
--- a/tests/node_compat/test/parallel/test-http2-dont-override.js
+++ b/tests/node_compat/test/parallel/test-http2-dont-override.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http2-endafterheaders.js b/tests/node_compat/test/parallel/test-http2-endafterheaders.js
index c1f9f0a55393a8..4a5592d18c8283 100644
--- a/tests/node_compat/test/parallel/test-http2-endafterheaders.js
+++ b/tests/node_compat/test/parallel/test-http2-endafterheaders.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http2-methods.js b/tests/node_compat/test/parallel/test-http2-methods.js
index b1597f8c033678..990dd9a4b1f961 100644
--- a/tests/node_compat/test/parallel/test-http2-methods.js
+++ b/tests/node_compat/test/parallel/test-http2-methods.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http2-request-response-proto.js b/tests/node_compat/test/parallel/test-http2-request-response-proto.js
index 8f34cbc3397e76..a3586130ca8ab0 100644
--- a/tests/node_compat/test/parallel/test-http2-request-response-proto.js
+++ b/tests/node_compat/test/parallel/test-http2-request-response-proto.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http2-respond-file-204.js b/tests/node_compat/test/parallel/test-http2-respond-file-204.js
index f0a87337dc5685..40c49a1cbf8920 100644
--- a/tests/node_compat/test/parallel/test-http2-respond-file-204.js
+++ b/tests/node_compat/test/parallel/test-http2-respond-file-204.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http2-respond-file-compat.js b/tests/node_compat/test/parallel/test-http2-respond-file-compat.js
index e8c78ce3ab39bb..90fa0532067040 100644
--- a/tests/node_compat/test/parallel/test-http2-respond-file-compat.js
+++ b/tests/node_compat/test/parallel/test-http2-respond-file-compat.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http2-session-timeout.js b/tests/node_compat/test/parallel/test-http2-session-timeout.js
index 84c549aa96acca..cd019efa7bc87e 100644
--- a/tests/node_compat/test/parallel/test-http2-session-timeout.js
+++ b/tests/node_compat/test/parallel/test-http2-session-timeout.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http2-socket-proxy.js b/tests/node_compat/test/parallel/test-http2-socket-proxy.js
index c24ca299828695..ff404965c96d40 100644
--- a/tests/node_compat/test/parallel/test-http2-socket-proxy.js
+++ b/tests/node_compat/test/parallel/test-http2-socket-proxy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-http2-status-code-invalid.js b/tests/node_compat/test/parallel/test-http2-status-code-invalid.js
index 3a5e46af843bd4..c85dbed7413fed 100644
--- a/tests/node_compat/test/parallel/test-http2-status-code-invalid.js
+++ b/tests/node_compat/test/parallel/test-http2-status-code-invalid.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http2-status-code.js b/tests/node_compat/test/parallel/test-http2-status-code.js
index 4af94b0cb7de87..9d1224a9ef632f 100644
--- a/tests/node_compat/test/parallel/test-http2-status-code.js
+++ b/tests/node_compat/test/parallel/test-http2-status-code.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http2-stream-removelisteners-after-close.js b/tests/node_compat/test/parallel/test-http2-stream-removelisteners-after-close.js
index e528dc2670cbd4..73f2b8a7dc4b79 100644
--- a/tests/node_compat/test/parallel/test-http2-stream-removelisteners-after-close.js
+++ b/tests/node_compat/test/parallel/test-http2-stream-removelisteners-after-close.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-http2-write-empty-string.js b/tests/node_compat/test/parallel/test-http2-write-empty-string.js
index aea523d5d58a05..5697e82c357802 100644
--- a/tests/node_compat/test/parallel/test-http2-write-empty-string.js
+++ b/tests/node_compat/test/parallel/test-http2-write-empty-string.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-https-connecting-to-http.js b/tests/node_compat/test/parallel/test-https-connecting-to-http.js
index ecb049fba2ee2d..7d4ccab2b6766a 100644
--- a/tests/node_compat/test/parallel/test-https-connecting-to-http.js
+++ b/tests/node_compat/test/parallel/test-https-connecting-to-http.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-https-localaddress-bind-error.js b/tests/node_compat/test/parallel/test-https-localaddress-bind-error.js
index 304f0b28574402..6aa1eece77902d 100644
--- a/tests/node_compat/test/parallel/test-https-localaddress-bind-error.js
+++ b/tests/node_compat/test/parallel/test-https-localaddress-bind-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-icu-data-dir.js b/tests/node_compat/test/parallel/test-icu-data-dir.js
index 5054de86ef6504..770d158fa8e99d 100644
--- a/tests/node_compat/test/parallel/test-icu-data-dir.js
+++ b/tests/node_compat/test/parallel/test-icu-data-dir.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-icu-stringwidth.js b/tests/node_compat/test/parallel/test-icu-stringwidth.js
index 3e3c1f0c311acf..9cf88ad85ddeb6 100644
--- a/tests/node_compat/test/parallel/test-icu-stringwidth.js
+++ b/tests/node_compat/test/parallel/test-icu-stringwidth.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-icu-transcode.js b/tests/node_compat/test/parallel/test-icu-transcode.js
index f34626892d0803..afcc48f05ce72d 100644
--- a/tests/node_compat/test/parallel/test-icu-transcode.js
+++ b/tests/node_compat/test/parallel/test-icu-transcode.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-inspector-stops-no-file.js b/tests/node_compat/test/parallel/test-inspector-stops-no-file.js
index 0eea1e3b1602c7..ee8bf9f4f5575c 100644
--- a/tests/node_compat/test/parallel/test-inspector-stops-no-file.js
+++ b/tests/node_compat/test/parallel/test-inspector-stops-no-file.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-instanceof.js b/tests/node_compat/test/parallel/test-instanceof.js
index 2d81c1cf158343..65ac235954ed3a 100644
--- a/tests/node_compat/test/parallel/test-instanceof.js
+++ b/tests/node_compat/test/parallel/test-instanceof.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-internal-fs.js b/tests/node_compat/test/parallel/test-internal-fs.js
index b0abd04e9b0c94..48cbffb7489edd 100644
--- a/tests/node_compat/test/parallel/test-internal-fs.js
+++ b/tests/node_compat/test/parallel/test-internal-fs.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-internal-util-normalizeencoding.js b/tests/node_compat/test/parallel/test-internal-util-normalizeencoding.js
index 9a85f6192e5679..b43aa8512e7ed9 100644
--- a/tests/node_compat/test/parallel/test-internal-util-normalizeencoding.js
+++ b/tests/node_compat/test/parallel/test-internal-util-normalizeencoding.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-kill-segfault-freebsd.js b/tests/node_compat/test/parallel/test-kill-segfault-freebsd.js
index b42901a3221af0..b1e022432165f0 100644
--- a/tests/node_compat/test/parallel/test-kill-segfault-freebsd.js
+++ b/tests/node_compat/test/parallel/test-kill-segfault-freebsd.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-listen-fd-detached-inherit.js b/tests/node_compat/test/parallel/test-listen-fd-detached-inherit.js
index 60ef9ac4b5059e..8614d56993a2a5 100644
--- a/tests/node_compat/test/parallel/test-listen-fd-detached-inherit.js
+++ b/tests/node_compat/test/parallel/test-listen-fd-detached-inherit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-listen-fd-detached.js b/tests/node_compat/test/parallel/test-listen-fd-detached.js
index 2bef173a2f2ee3..0ed1b57a8fc072 100644
--- a/tests/node_compat/test/parallel/test-listen-fd-detached.js
+++ b/tests/node_compat/test/parallel/test-listen-fd-detached.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-memory-usage-emfile.js b/tests/node_compat/test/parallel/test-memory-usage-emfile.js
index 4a89be3cb52bba..8df5543fa9d594 100644
--- a/tests/node_compat/test/parallel/test-memory-usage-emfile.js
+++ b/tests/node_compat/test/parallel/test-memory-usage-emfile.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-memory-usage.js b/tests/node_compat/test/parallel/test-memory-usage.js
index 8227b7b12265ee..9a6b701706aee1 100644
--- a/tests/node_compat/test/parallel/test-memory-usage.js
+++ b/tests/node_compat/test/parallel/test-memory-usage.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-messagechannel.js b/tests/node_compat/test/parallel/test-messagechannel.js
index 44ddf6d7aaf140..08341fc15c75eb 100644
--- a/tests/node_compat/test/parallel/test-messagechannel.js
+++ b/tests/node_compat/test/parallel/test-messagechannel.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-microtask-queue-integration.js b/tests/node_compat/test/parallel/test-microtask-queue-integration.js
index 8abb41d364efaa..3f766840e1bdc6 100644
--- a/tests/node_compat/test/parallel/test-microtask-queue-integration.js
+++ b/tests/node_compat/test/parallel/test-microtask-queue-integration.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-microtask-queue-run-immediate.js b/tests/node_compat/test/parallel/test-microtask-queue-run-immediate.js
index a1dff2c7e912a7..e30941dab49f4d 100644
--- a/tests/node_compat/test/parallel/test-microtask-queue-run-immediate.js
+++ b/tests/node_compat/test/parallel/test-microtask-queue-run-immediate.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-microtask-queue-run.js b/tests/node_compat/test/parallel/test-microtask-queue-run.js
index 43900006f04309..1a6281200b6be2 100644
--- a/tests/node_compat/test/parallel/test-microtask-queue-run.js
+++ b/tests/node_compat/test/parallel/test-microtask-queue-run.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-module-cache.js b/tests/node_compat/test/parallel/test-module-cache.js
index 01935e9c873fe8..25e0ca2d11546c 100644
--- a/tests/node_compat/test/parallel/test-module-cache.js
+++ b/tests/node_compat/test/parallel/test-module-cache.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-module-circular-symlinks.js b/tests/node_compat/test/parallel/test-module-circular-symlinks.js
index 0b329805884e65..dfd3b717774ddb 100644
--- a/tests/node_compat/test/parallel/test-module-circular-symlinks.js
+++ b/tests/node_compat/test/parallel/test-module-circular-symlinks.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-module-isBuiltin.js b/tests/node_compat/test/parallel/test-module-isBuiltin.js
index 13746a911685e6..6ada5d8d045f4f 100644
--- a/tests/node_compat/test/parallel/test-module-isBuiltin.js
+++ b/tests/node_compat/test/parallel/test-module-isBuiltin.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-module-multi-extensions.js b/tests/node_compat/test/parallel/test-module-multi-extensions.js
index 36de3187f96095..be049b12c650ba 100644
--- a/tests/node_compat/test/parallel/test-module-multi-extensions.js
+++ b/tests/node_compat/test/parallel/test-module-multi-extensions.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-module-nodemodulepaths.js b/tests/node_compat/test/parallel/test-module-nodemodulepaths.js
index cccbbee7f2e580..079fea03768f50 100644
--- a/tests/node_compat/test/parallel/test-module-nodemodulepaths.js
+++ b/tests/node_compat/test/parallel/test-module-nodemodulepaths.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-module-readonly.js b/tests/node_compat/test/parallel/test-module-readonly.js
index f231f8f9400712..8675458b2a6085 100644
--- a/tests/node_compat/test/parallel/test-module-readonly.js
+++ b/tests/node_compat/test/parallel/test-module-readonly.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-module-relative-lookup.js b/tests/node_compat/test/parallel/test-module-relative-lookup.js
index 4e714f070fe81f..abef2994bdd849 100644
--- a/tests/node_compat/test/parallel/test-module-relative-lookup.js
+++ b/tests/node_compat/test/parallel/test-module-relative-lookup.js
@@ -2,14 +2,14 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
 
 const common = require('../common');
 const assert = require('assert');
-const _module = require('module'); // Avoid collision with global.module
+const _module = require('module'); // Avoid collision with globalThis.module
 
 // Current directory gets highest priority for local modules
 function testFirstInPath(moduleName, isLocalModule) {
@@ -22,7 +22,7 @@ function testFirstInPath(moduleName, isLocalModule) {
   assertFunction(paths[0], '.');
 
   paths = _module._resolveLookupPaths(moduleName, null);
-  assertFunction(paths && paths[0], '.');
+  assertFunction(paths?.[0], '.');
 }
 
 testFirstInPath('./lodash', true);
diff --git a/tests/node_compat/test/parallel/test-net-access-byteswritten.js b/tests/node_compat/test/parallel/test-net-access-byteswritten.js
index 79c005a71a7c36..99f4995152ca80 100644
--- a/tests/node_compat/test/parallel/test-net-access-byteswritten.js
+++ b/tests/node_compat/test/parallel/test-net-access-byteswritten.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-after-close.js b/tests/node_compat/test/parallel/test-net-after-close.js
index 2f4428c6ca9ec3..861bafd4396571 100644
--- a/tests/node_compat/test/parallel/test-net-after-close.js
+++ b/tests/node_compat/test/parallel/test-net-after-close.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-better-error-messages-listen-path.js b/tests/node_compat/test/parallel/test-net-better-error-messages-listen-path.js
index c2541199265fee..ddbf7cf22384cd 100644
--- a/tests/node_compat/test/parallel/test-net-better-error-messages-listen-path.js
+++ b/tests/node_compat/test/parallel/test-net-better-error-messages-listen-path.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-better-error-messages-listen.js b/tests/node_compat/test/parallel/test-net-better-error-messages-listen.js
index f3ddc597ab228b..6c83a70712cd50 100644
--- a/tests/node_compat/test/parallel/test-net-better-error-messages-listen.js
+++ b/tests/node_compat/test/parallel/test-net-better-error-messages-listen.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-better-error-messages-port-hostname.js b/tests/node_compat/test/parallel/test-net-better-error-messages-port-hostname.js
index 92720a6101d200..ff098b6d9bed77 100644
--- a/tests/node_compat/test/parallel/test-net-better-error-messages-port-hostname.js
+++ b/tests/node_compat/test/parallel/test-net-better-error-messages-port-hostname.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-bind-twice.js b/tests/node_compat/test/parallel/test-net-bind-twice.js
index 1794c9a54f6739..b02b86869d8e88 100644
--- a/tests/node_compat/test/parallel/test-net-bind-twice.js
+++ b/tests/node_compat/test/parallel/test-net-bind-twice.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-buffersize.js b/tests/node_compat/test/parallel/test-net-buffersize.js
index 71560688c23e05..c9f0c141351106 100644
--- a/tests/node_compat/test/parallel/test-net-buffersize.js
+++ b/tests/node_compat/test/parallel/test-net-buffersize.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-bytes-written-large.js b/tests/node_compat/test/parallel/test-net-bytes-written-large.js
index 0eae9f10d37d6d..c7812ca516de51 100644
--- a/tests/node_compat/test/parallel/test-net-bytes-written-large.js
+++ b/tests/node_compat/test/parallel/test-net-bytes-written-large.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-can-reset-timeout.js b/tests/node_compat/test/parallel/test-net-can-reset-timeout.js
index 1abd0a16a5ff27..8ba7fac0a7a8f1 100644
--- a/tests/node_compat/test/parallel/test-net-can-reset-timeout.js
+++ b/tests/node_compat/test/parallel/test-net-can-reset-timeout.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-connect-after-destroy.js b/tests/node_compat/test/parallel/test-net-connect-after-destroy.js
index 76015e7dad81cf..390ec4031f422c 100644
--- a/tests/node_compat/test/parallel/test-net-connect-after-destroy.js
+++ b/tests/node_compat/test/parallel/test-net-connect-after-destroy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-connect-call-socket-connect.js b/tests/node_compat/test/parallel/test-net-connect-call-socket-connect.js
index db0cef479e3f34..17da2ab98bc0e0 100644
--- a/tests/node_compat/test/parallel/test-net-connect-call-socket-connect.js
+++ b/tests/node_compat/test/parallel/test-net-connect-call-socket-connect.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-connect-destroy.js b/tests/node_compat/test/parallel/test-net-connect-destroy.js
index 02126aeb48bc47..daa6e8a6bb9c6e 100644
--- a/tests/node_compat/test/parallel/test-net-connect-destroy.js
+++ b/tests/node_compat/test/parallel/test-net-connect-destroy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-connect-immediate-destroy.js b/tests/node_compat/test/parallel/test-net-connect-immediate-destroy.js
index 8dcc9262b22ec3..7517bf881b3f2f 100644
--- a/tests/node_compat/test/parallel/test-net-connect-immediate-destroy.js
+++ b/tests/node_compat/test/parallel/test-net-connect-immediate-destroy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-connect-immediate-finish.js b/tests/node_compat/test/parallel/test-net-connect-immediate-finish.js
index c7ba46098dfffc..410104c57174b6 100644
--- a/tests/node_compat/test/parallel/test-net-connect-immediate-finish.js
+++ b/tests/node_compat/test/parallel/test-net-connect-immediate-finish.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-connect-no-arg.js b/tests/node_compat/test/parallel/test-net-connect-no-arg.js
index 2211cd4f693aa1..f83e4a7b9d7322 100644
--- a/tests/node_compat/test/parallel/test-net-connect-no-arg.js
+++ b/tests/node_compat/test/parallel/test-net-connect-no-arg.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-connect-options-fd.js b/tests/node_compat/test/parallel/test-net-connect-options-fd.js
index f9aa99c12bb7a6..5b109965857dcd 100644
--- a/tests/node_compat/test/parallel/test-net-connect-options-fd.js
+++ b/tests/node_compat/test/parallel/test-net-connect-options-fd.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-net-connect-options-ipv6.js b/tests/node_compat/test/parallel/test-net-connect-options-ipv6.js
index de309e7be2b6c1..40389e848a028c 100644
--- a/tests/node_compat/test/parallel/test-net-connect-options-ipv6.js
+++ b/tests/node_compat/test/parallel/test-net-connect-options-ipv6.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-connect-options-port.js b/tests/node_compat/test/parallel/test-net-connect-options-port.js
index b4f747b3ef06f6..de9209a9185824 100644
--- a/tests/node_compat/test/parallel/test-net-connect-options-port.js
+++ b/tests/node_compat/test/parallel/test-net-connect-options-port.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-connect-paused-connection.js b/tests/node_compat/test/parallel/test-net-connect-paused-connection.js
index 81c28aaa891005..1886f871ae646e 100644
--- a/tests/node_compat/test/parallel/test-net-connect-paused-connection.js
+++ b/tests/node_compat/test/parallel/test-net-connect-paused-connection.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-dns-custom-lookup.js b/tests/node_compat/test/parallel/test-net-dns-custom-lookup.js
index 124a1f804bda4e..630874817c778d 100644
--- a/tests/node_compat/test/parallel/test-net-dns-custom-lookup.js
+++ b/tests/node_compat/test/parallel/test-net-dns-custom-lookup.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-dns-error.js b/tests/node_compat/test/parallel/test-net-dns-error.js
index 4a78055ccffdd5..f45b6fb39c0f15 100644
--- a/tests/node_compat/test/parallel/test-net-dns-error.js
+++ b/tests/node_compat/test/parallel/test-net-dns-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-dns-lookup-skip.js b/tests/node_compat/test/parallel/test-net-dns-lookup-skip.js
index 5010f73e66ebd2..1203d806900b39 100644
--- a/tests/node_compat/test/parallel/test-net-dns-lookup-skip.js
+++ b/tests/node_compat/test/parallel/test-net-dns-lookup-skip.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-dns-lookup.js b/tests/node_compat/test/parallel/test-net-dns-lookup.js
index 69278d4fbd5deb..5965e713152bca 100644
--- a/tests/node_compat/test/parallel/test-net-dns-lookup.js
+++ b/tests/node_compat/test/parallel/test-net-dns-lookup.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-during-close.js b/tests/node_compat/test/parallel/test-net-during-close.js
index 0c4f51cd3de45c..349783b49d333e 100644
--- a/tests/node_compat/test/parallel/test-net-during-close.js
+++ b/tests/node_compat/test/parallel/test-net-during-close.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-eaddrinuse.js b/tests/node_compat/test/parallel/test-net-eaddrinuse.js
index 12069e3cb1e2a0..1c0b4245211251 100644
--- a/tests/node_compat/test/parallel/test-net-eaddrinuse.js
+++ b/tests/node_compat/test/parallel/test-net-eaddrinuse.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-error-twice.js b/tests/node_compat/test/parallel/test-net-error-twice.js
index 950847cb2ebebc..8a23fe663396c4 100644
--- a/tests/node_compat/test/parallel/test-net-error-twice.js
+++ b/tests/node_compat/test/parallel/test-net-error-twice.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-isip.js b/tests/node_compat/test/parallel/test-net-isip.js
index a4eaa70ce190c9..1c5102030acaa0 100644
--- a/tests/node_compat/test/parallel/test-net-isip.js
+++ b/tests/node_compat/test/parallel/test-net-isip.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-isipv4.js b/tests/node_compat/test/parallel/test-net-isipv4.js
index 05ccc57258d2a4..b32c7d0d27c1e5 100644
--- a/tests/node_compat/test/parallel/test-net-isipv4.js
+++ b/tests/node_compat/test/parallel/test-net-isipv4.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-isipv6.js b/tests/node_compat/test/parallel/test-net-isipv6.js
index 5791c9fa13f33a..e9a6e1b1ab8f6f 100644
--- a/tests/node_compat/test/parallel/test-net-isipv6.js
+++ b/tests/node_compat/test/parallel/test-net-isipv6.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-keepalive.js b/tests/node_compat/test/parallel/test-net-keepalive.js
index 4f01b46751a26a..ec33d61d460164 100644
--- a/tests/node_compat/test/parallel/test-net-keepalive.js
+++ b/tests/node_compat/test/parallel/test-net-keepalive.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-listen-after-destroying-stdin.js b/tests/node_compat/test/parallel/test-net-listen-after-destroying-stdin.js
index 7dbc610f958d41..848c5914251f25 100644
--- a/tests/node_compat/test/parallel/test-net-listen-after-destroying-stdin.js
+++ b/tests/node_compat/test/parallel/test-net-listen-after-destroying-stdin.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-listen-close-server-callback-is-not-function.js b/tests/node_compat/test/parallel/test-net-listen-close-server-callback-is-not-function.js
index 94ab88407d2537..01ed68cbe9926f 100644
--- a/tests/node_compat/test/parallel/test-net-listen-close-server-callback-is-not-function.js
+++ b/tests/node_compat/test/parallel/test-net-listen-close-server-callback-is-not-function.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-listen-close-server.js b/tests/node_compat/test/parallel/test-net-listen-close-server.js
index df000b2dbec05f..6449427f33778f 100644
--- a/tests/node_compat/test/parallel/test-net-listen-close-server.js
+++ b/tests/node_compat/test/parallel/test-net-listen-close-server.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-listen-error.js b/tests/node_compat/test/parallel/test-net-listen-error.js
index e8a7b2a9313b60..c920014843084e 100644
--- a/tests/node_compat/test/parallel/test-net-listen-error.js
+++ b/tests/node_compat/test/parallel/test-net-listen-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-listening.js b/tests/node_compat/test/parallel/test-net-listening.js
index 30d832ec0a7ac0..d3afdc7f3c5745 100644
--- a/tests/node_compat/test/parallel/test-net-listening.js
+++ b/tests/node_compat/test/parallel/test-net-listening.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-local-address-port.js b/tests/node_compat/test/parallel/test-net-local-address-port.js
index 9b18f89ee58d09..699831ed4c9948 100644
--- a/tests/node_compat/test/parallel/test-net-local-address-port.js
+++ b/tests/node_compat/test/parallel/test-net-local-address-port.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-localerror.js b/tests/node_compat/test/parallel/test-net-localerror.js
index 63276fe2bbdc34..89c393fa1bc764 100644
--- a/tests/node_compat/test/parallel/test-net-localerror.js
+++ b/tests/node_compat/test/parallel/test-net-localerror.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-options-lookup.js b/tests/node_compat/test/parallel/test-net-options-lookup.js
index d285ae6e4a217f..4ced7b52d12d6e 100644
--- a/tests/node_compat/test/parallel/test-net-options-lookup.js
+++ b/tests/node_compat/test/parallel/test-net-options-lookup.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-pause-resume-connecting.js b/tests/node_compat/test/parallel/test-net-pause-resume-connecting.js
index 774ad66742efd1..51d771e846a1ae 100644
--- a/tests/node_compat/test/parallel/test-net-pause-resume-connecting.js
+++ b/tests/node_compat/test/parallel/test-net-pause-resume-connecting.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-persistent-keepalive.js b/tests/node_compat/test/parallel/test-net-persistent-keepalive.js
index 80ab2a08db3c71..5d2da189935409 100644
--- a/tests/node_compat/test/parallel/test-net-persistent-keepalive.js
+++ b/tests/node_compat/test/parallel/test-net-persistent-keepalive.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-persistent-nodelay.js b/tests/node_compat/test/parallel/test-net-persistent-nodelay.js
index c8733e31381625..567001e623bce5 100644
--- a/tests/node_compat/test/parallel/test-net-persistent-nodelay.js
+++ b/tests/node_compat/test/parallel/test-net-persistent-nodelay.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-net-persistent-ref-unref.js b/tests/node_compat/test/parallel/test-net-persistent-ref-unref.js
index 565f1211b1cd3d..251a37607d5329 100644
--- a/tests/node_compat/test/parallel/test-net-persistent-ref-unref.js
+++ b/tests/node_compat/test/parallel/test-net-persistent-ref-unref.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-net-pipe-connect-errors.js b/tests/node_compat/test/parallel/test-net-pipe-connect-errors.js
index c1e68f5b70a8bf..f8b86eeffac97d 100644
--- a/tests/node_compat/test/parallel/test-net-pipe-connect-errors.js
+++ b/tests/node_compat/test/parallel/test-net-pipe-connect-errors.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-reconnect.js b/tests/node_compat/test/parallel/test-net-reconnect.js
index 65a8718e9e7ea7..353901e11f024e 100644
--- a/tests/node_compat/test/parallel/test-net-reconnect.js
+++ b/tests/node_compat/test/parallel/test-net-reconnect.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-remote-address-port.js b/tests/node_compat/test/parallel/test-net-remote-address-port.js
index ff1d209bea9652..b3e8f98dfaa265 100644
--- a/tests/node_compat/test/parallel/test-net-remote-address-port.js
+++ b/tests/node_compat/test/parallel/test-net-remote-address-port.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-remote-address.js b/tests/node_compat/test/parallel/test-net-remote-address.js
index a157352674827b..e992fcfcd44875 100644
--- a/tests/node_compat/test/parallel/test-net-remote-address.js
+++ b/tests/node_compat/test/parallel/test-net-remote-address.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-server-capture-rejection.js b/tests/node_compat/test/parallel/test-net-server-capture-rejection.js
index 21289d571daf43..23fb7842b3dee1 100644
--- a/tests/node_compat/test/parallel/test-net-server-capture-rejection.js
+++ b/tests/node_compat/test/parallel/test-net-server-capture-rejection.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-server-close.js b/tests/node_compat/test/parallel/test-net-server-close.js
index 417bc11d8656be..9d438c27bfb2b8 100644
--- a/tests/node_compat/test/parallel/test-net-server-close.js
+++ b/tests/node_compat/test/parallel/test-net-server-close.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-server-listen-options-signal.js b/tests/node_compat/test/parallel/test-net-server-listen-options-signal.js
index b6e93f37ba4540..64979c2b7a0cd8 100644
--- a/tests/node_compat/test/parallel/test-net-server-listen-options-signal.js
+++ b/tests/node_compat/test/parallel/test-net-server-listen-options-signal.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-server-listen-options.js b/tests/node_compat/test/parallel/test-net-server-listen-options.js
index 982373e871b657..c58c4ab4ff71d2 100644
--- a/tests/node_compat/test/parallel/test-net-server-listen-options.js
+++ b/tests/node_compat/test/parallel/test-net-server-listen-options.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-server-listen-remove-callback.js b/tests/node_compat/test/parallel/test-net-server-listen-remove-callback.js
index 9f48ce4f2e0f20..6be51587f744e8 100644
--- a/tests/node_compat/test/parallel/test-net-server-listen-remove-callback.js
+++ b/tests/node_compat/test/parallel/test-net-server-listen-remove-callback.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-server-options.js b/tests/node_compat/test/parallel/test-net-server-options.js
index 3e4c557ddb5d14..c0489fb6146d07 100644
--- a/tests/node_compat/test/parallel/test-net-server-options.js
+++ b/tests/node_compat/test/parallel/test-net-server-options.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-server-pause-on-connect.js b/tests/node_compat/test/parallel/test-net-server-pause-on-connect.js
index eb2b94d51c124e..4359cf8f9a566c 100644
--- a/tests/node_compat/test/parallel/test-net-server-pause-on-connect.js
+++ b/tests/node_compat/test/parallel/test-net-server-pause-on-connect.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-server-unref-persistent.js b/tests/node_compat/test/parallel/test-net-server-unref-persistent.js
index 8cff4eb211090a..67d1efb963a151 100644
--- a/tests/node_compat/test/parallel/test-net-server-unref-persistent.js
+++ b/tests/node_compat/test/parallel/test-net-server-unref-persistent.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-server-unref.js b/tests/node_compat/test/parallel/test-net-server-unref.js
index 30f870585ca919..fc6a350e6f1edc 100644
--- a/tests/node_compat/test/parallel/test-net-server-unref.js
+++ b/tests/node_compat/test/parallel/test-net-server-unref.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-settimeout.js b/tests/node_compat/test/parallel/test-net-settimeout.js
index a1905b7f195197..64efe023843cfa 100644
--- a/tests/node_compat/test/parallel/test-net-settimeout.js
+++ b/tests/node_compat/test/parallel/test-net-settimeout.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-socket-close-after-end.js b/tests/node_compat/test/parallel/test-net-socket-close-after-end.js
index 27540e8fe69f8f..9c95674a2b3cf2 100644
--- a/tests/node_compat/test/parallel/test-net-socket-close-after-end.js
+++ b/tests/node_compat/test/parallel/test-net-socket-close-after-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-socket-connect-invalid-autoselectfamily.js b/tests/node_compat/test/parallel/test-net-socket-connect-invalid-autoselectfamily.js
index 110aadf7dd935f..225c735dfe5f32 100644
--- a/tests/node_compat/test/parallel/test-net-socket-connect-invalid-autoselectfamily.js
+++ b/tests/node_compat/test/parallel/test-net-socket-connect-invalid-autoselectfamily.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-socket-connect-without-cb.js b/tests/node_compat/test/parallel/test-net-socket-connect-without-cb.js
index 20c493e2a999ba..e4fb1d22cfa5d2 100644
--- a/tests/node_compat/test/parallel/test-net-socket-connect-without-cb.js
+++ b/tests/node_compat/test/parallel/test-net-socket-connect-without-cb.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-socket-connecting.js b/tests/node_compat/test/parallel/test-net-socket-connecting.js
index f5101e81d8764d..615a7f10b9250f 100644
--- a/tests/node_compat/test/parallel/test-net-socket-connecting.js
+++ b/tests/node_compat/test/parallel/test-net-socket-connecting.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-socket-destroy-send.js b/tests/node_compat/test/parallel/test-net-socket-destroy-send.js
index b76bca875dc562..61c316951e57c2 100644
--- a/tests/node_compat/test/parallel/test-net-socket-destroy-send.js
+++ b/tests/node_compat/test/parallel/test-net-socket-destroy-send.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-socket-destroy-twice.js b/tests/node_compat/test/parallel/test-net-socket-destroy-twice.js
index 597180bf4ebd64..b02523e7e70f3e 100644
--- a/tests/node_compat/test/parallel/test-net-socket-destroy-twice.js
+++ b/tests/node_compat/test/parallel/test-net-socket-destroy-twice.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-socket-end-before-connect.js b/tests/node_compat/test/parallel/test-net-socket-end-before-connect.js
index afe9664ccdcc11..2af0b2c302eaf3 100644
--- a/tests/node_compat/test/parallel/test-net-socket-end-before-connect.js
+++ b/tests/node_compat/test/parallel/test-net-socket-end-before-connect.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-socket-end-callback.js b/tests/node_compat/test/parallel/test-net-socket-end-callback.js
index 7b6d3ae5c2289d..ed8914f2a0205d 100644
--- a/tests/node_compat/test/parallel/test-net-socket-end-callback.js
+++ b/tests/node_compat/test/parallel/test-net-socket-end-callback.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-socket-no-halfopen-enforcer.js b/tests/node_compat/test/parallel/test-net-socket-no-halfopen-enforcer.js
index a9c8ef8e80310f..b498f0bfb78d95 100644
--- a/tests/node_compat/test/parallel/test-net-socket-no-halfopen-enforcer.js
+++ b/tests/node_compat/test/parallel/test-net-socket-no-halfopen-enforcer.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-socket-ready-without-cb.js b/tests/node_compat/test/parallel/test-net-socket-ready-without-cb.js
index 0f71f410bdd8f7..5fd6af94be70b2 100644
--- a/tests/node_compat/test/parallel/test-net-socket-ready-without-cb.js
+++ b/tests/node_compat/test/parallel/test-net-socket-ready-without-cb.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-socket-setnodelay.js b/tests/node_compat/test/parallel/test-net-socket-setnodelay.js
index ab389c58f7f7d9..5802bd082883b6 100644
--- a/tests/node_compat/test/parallel/test-net-socket-setnodelay.js
+++ b/tests/node_compat/test/parallel/test-net-socket-setnodelay.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-socket-timeout-unref.js b/tests/node_compat/test/parallel/test-net-socket-timeout-unref.js
index 5e3fc8bd3196e1..90c909d289ddaf 100644
--- a/tests/node_compat/test/parallel/test-net-socket-timeout-unref.js
+++ b/tests/node_compat/test/parallel/test-net-socket-timeout-unref.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-socket-write-after-close.js b/tests/node_compat/test/parallel/test-net-socket-write-after-close.js
index 9b2150294e359d..98746ae2e8c55c 100644
--- a/tests/node_compat/test/parallel/test-net-socket-write-after-close.js
+++ b/tests/node_compat/test/parallel/test-net-socket-write-after-close.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-socket-write-error.js b/tests/node_compat/test/parallel/test-net-socket-write-error.js
index a330058fdebdba..c3410b03e4312b 100644
--- a/tests/node_compat/test/parallel/test-net-socket-write-error.js
+++ b/tests/node_compat/test/parallel/test-net-socket-write-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-sync-cork.js b/tests/node_compat/test/parallel/test-net-sync-cork.js
index 289319c4294752..f830af27239056 100644
--- a/tests/node_compat/test/parallel/test-net-sync-cork.js
+++ b/tests/node_compat/test/parallel/test-net-sync-cork.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-timeout-no-handle.js b/tests/node_compat/test/parallel/test-net-timeout-no-handle.js
index 7b4e74ff194233..341509772c723b 100644
--- a/tests/node_compat/test/parallel/test-net-timeout-no-handle.js
+++ b/tests/node_compat/test/parallel/test-net-timeout-no-handle.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-writable.js b/tests/node_compat/test/parallel/test-net-writable.js
index 86ea2a3c037e7d..0757a7912a2d80 100644
--- a/tests/node_compat/test/parallel/test-net-writable.js
+++ b/tests/node_compat/test/parallel/test-net-writable.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-net-write-connect-write.js b/tests/node_compat/test/parallel/test-net-write-connect-write.js
index a87d80479ed0f8..99be0be3a498f7 100644
--- a/tests/node_compat/test/parallel/test-net-write-connect-write.js
+++ b/tests/node_compat/test/parallel/test-net-write-connect-write.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-net-write-fully-async-buffer.js b/tests/node_compat/test/parallel/test-net-write-fully-async-buffer.js
index 222c97ed9426e5..1d99a218f5e176 100644
--- a/tests/node_compat/test/parallel/test-net-write-fully-async-buffer.js
+++ b/tests/node_compat/test/parallel/test-net-write-fully-async-buffer.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -30,7 +30,7 @@ const server = net.createServer(common.mustCall(function(conn) {
       }
 
       while (conn.write(Buffer.from(data)));
-      global.gc({ type: 'minor' });
+      globalThis.gc({ type: 'major' });
       // The buffer allocated above should still be alive.
     }
 
diff --git a/tests/node_compat/test/parallel/test-net-write-fully-async-hex-string.js b/tests/node_compat/test/parallel/test-net-write-fully-async-hex-string.js
index 81a3db70105fdf..0d970fe73e12d5 100644
--- a/tests/node_compat/test/parallel/test-net-write-fully-async-hex-string.js
+++ b/tests/node_compat/test/parallel/test-net-write-fully-async-hex-string.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -28,7 +28,7 @@ const server = net.createServer(common.mustCall(function(conn) {
       }
 
       while (conn.write(data, 'hex'));
-      global.gc({ type: 'minor' });
+      globalThis.gc({ type: 'major' });
       // The buffer allocated inside the .write() call should still be alive.
     }
 
diff --git a/tests/node_compat/test/parallel/test-net-write-slow.js b/tests/node_compat/test/parallel/test-net-write-slow.js
index 0204bb979fdfc2..c0fb80e2a1d27d 100644
--- a/tests/node_compat/test/parallel/test-net-write-slow.js
+++ b/tests/node_compat/test/parallel/test-net-write-slow.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-next-tick-doesnt-hang.js b/tests/node_compat/test/parallel/test-next-tick-doesnt-hang.js
index 916e815bc53a16..f37effca150ab0 100644
--- a/tests/node_compat/test/parallel/test-next-tick-doesnt-hang.js
+++ b/tests/node_compat/test/parallel/test-next-tick-doesnt-hang.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-next-tick-domain.js b/tests/node_compat/test/parallel/test-next-tick-domain.js
index c39f56bea1df93..c83499de56d4f9 100644
--- a/tests/node_compat/test/parallel/test-next-tick-domain.js
+++ b/tests/node_compat/test/parallel/test-next-tick-domain.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-next-tick-errors.js b/tests/node_compat/test/parallel/test-next-tick-errors.js
index a275029f5ac37e..db97ae43f5f028 100644
--- a/tests/node_compat/test/parallel/test-next-tick-errors.js
+++ b/tests/node_compat/test/parallel/test-next-tick-errors.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-next-tick-fixed-queue-regression.js b/tests/node_compat/test/parallel/test-next-tick-fixed-queue-regression.js
index 9129fbbe422557..c359692a43653f 100644
--- a/tests/node_compat/test/parallel/test-next-tick-fixed-queue-regression.js
+++ b/tests/node_compat/test/parallel/test-next-tick-fixed-queue-regression.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-next-tick-intentional-starvation.js b/tests/node_compat/test/parallel/test-next-tick-intentional-starvation.js
index 16623fb6ca567f..5e77f78d497728 100644
--- a/tests/node_compat/test/parallel/test-next-tick-intentional-starvation.js
+++ b/tests/node_compat/test/parallel/test-next-tick-intentional-starvation.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-next-tick-ordering.js b/tests/node_compat/test/parallel/test-next-tick-ordering.js
index 78f7b3b1204271..7866e0997b1343 100644
--- a/tests/node_compat/test/parallel/test-next-tick-ordering.js
+++ b/tests/node_compat/test/parallel/test-next-tick-ordering.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-next-tick-ordering2.js b/tests/node_compat/test/parallel/test-next-tick-ordering2.js
index 6ea41c9079e7f1..03cab7e270cdf6 100644
--- a/tests/node_compat/test/parallel/test-next-tick-ordering2.js
+++ b/tests/node_compat/test/parallel/test-next-tick-ordering2.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-next-tick-when-exiting.js b/tests/node_compat/test/parallel/test-next-tick-when-exiting.js
index c2e9ecdbc39e93..682d03b351bccd 100644
--- a/tests/node_compat/test/parallel/test-next-tick-when-exiting.js
+++ b/tests/node_compat/test/parallel/test-next-tick-when-exiting.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-next-tick.js b/tests/node_compat/test/parallel/test-next-tick.js
index 1e6ceab70c6b99..7eaf31f58b7eae 100644
--- a/tests/node_compat/test/parallel/test-next-tick.js
+++ b/tests/node_compat/test/parallel/test-next-tick.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-no-node-snapshot.js b/tests/node_compat/test/parallel/test-no-node-snapshot.js
index a251c9f9d0ce80..863904b59bb324 100644
--- a/tests/node_compat/test/parallel/test-no-node-snapshot.js
+++ b/tests/node_compat/test/parallel/test-no-node-snapshot.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-nodeeventtarget.js b/tests/node_compat/test/parallel/test-nodeeventtarget.js
index aa325f601422a8..fd69e224743165 100644
--- a/tests/node_compat/test/parallel/test-nodeeventtarget.js
+++ b/tests/node_compat/test/parallel/test-nodeeventtarget.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals --no-warnings
diff --git a/tests/node_compat/test/parallel/test-os-homedir-no-envvar.js b/tests/node_compat/test/parallel/test-os-homedir-no-envvar.js
index f687422da8efc2..e3265e1a640da5 100644
--- a/tests/node_compat/test/parallel/test-os-homedir-no-envvar.js
+++ b/tests/node_compat/test/parallel/test-os-homedir-no-envvar.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-os.js b/tests/node_compat/test/parallel/test-os.js
index f3036c2c62ca97..0a93c344b50f4e 100644
--- a/tests/node_compat/test/parallel/test-os.js
+++ b/tests/node_compat/test/parallel/test-os.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -90,11 +90,13 @@ assert.ok(hostname.length > 0);
 
 // IBMi process priority is different.
 if (!common.isIBMi) {
-  const DUMMY_PRIORITY = 10;
-  os.setPriority(DUMMY_PRIORITY);
+  const { PRIORITY_BELOW_NORMAL, PRIORITY_LOW } = os.constants.priority;
+  // Priority means niceness: higher numeric value <=> lower priority
+  const LOWER_PRIORITY = os.getPriority() < PRIORITY_BELOW_NORMAL ? PRIORITY_BELOW_NORMAL : PRIORITY_LOW;
+  os.setPriority(LOWER_PRIORITY);
   const priority = os.getPriority();
   is.number(priority);
-  assert.strictEqual(priority, DUMMY_PRIORITY);
+  assert.strictEqual(priority, LOWER_PRIORITY);
 }
 
 // On IBMi, os.uptime() returns 'undefined'
diff --git a/tests/node_compat/test/parallel/test-outgoing-message-destroy.js b/tests/node_compat/test/parallel/test-outgoing-message-destroy.js
index 1e720ab5bcd03e..a78d0c2c05091c 100644
--- a/tests/node_compat/test/parallel/test-outgoing-message-destroy.js
+++ b/tests/node_compat/test/parallel/test-outgoing-message-destroy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-outgoing-message-pipe.js b/tests/node_compat/test/parallel/test-outgoing-message-pipe.js
index a0f28ae8e6f05b..4b4b0a9b829e9e 100644
--- a/tests/node_compat/test/parallel/test-outgoing-message-pipe.js
+++ b/tests/node_compat/test/parallel/test-outgoing-message-pipe.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-path-basename.js b/tests/node_compat/test/parallel/test-path-basename.js
index 8c186bc5cdc586..f59670eb06a995 100644
--- a/tests/node_compat/test/parallel/test-path-basename.js
+++ b/tests/node_compat/test/parallel/test-path-basename.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-path-dirname.js b/tests/node_compat/test/parallel/test-path-dirname.js
index dffb0e11d176f5..bc7e83eed2974e 100644
--- a/tests/node_compat/test/parallel/test-path-dirname.js
+++ b/tests/node_compat/test/parallel/test-path-dirname.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -10,7 +10,7 @@ const common = require('../common');
 const assert = require('assert');
 const path = require('path');
 
-assert.strictEqual(path.dirname(__filename).substr(-13),
+assert.strictEqual(path.dirname(__filename).slice(-13),
                    common.isWindows ? 'test\\parallel' : 'test/parallel');
 
 assert.strictEqual(path.posix.dirname('/a/b/'), '/a');
diff --git a/tests/node_compat/test/parallel/test-path-extname.js b/tests/node_compat/test/parallel/test-path-extname.js
index 96edd9c6acc60f..4c6ac9d6880785 100644
--- a/tests/node_compat/test/parallel/test-path-extname.js
+++ b/tests/node_compat/test/parallel/test-path-extname.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-path-isabsolute.js b/tests/node_compat/test/parallel/test-path-isabsolute.js
index e1820f07189318..8215b5dd6e6cf4 100644
--- a/tests/node_compat/test/parallel/test-path-isabsolute.js
+++ b/tests/node_compat/test/parallel/test-path-isabsolute.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-path-parse-format.js b/tests/node_compat/test/parallel/test-path-parse-format.js
index b2aeb1fb8346b3..fdb94b46c06310 100644
--- a/tests/node_compat/test/parallel/test-path-parse-format.js
+++ b/tests/node_compat/test/parallel/test-path-parse-format.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -155,13 +155,11 @@ const trailingTests = [
   ],
 ];
 const failures = [];
-trailingTests.forEach((test) => {
-  const parse = test[0];
+for (const [parse, testList] of trailingTests) {
   const os = parse === path.win32.parse ? 'win32' : 'posix';
-  test[1].forEach((test) => {
-    const actual = parse(test[0]);
-    const expected = test[1];
-    const message = `path.${os}.parse(${JSON.stringify(test[0])})\n  expect=${
+  for (const [input, expected] of testList) {
+    const actual = parse(input);
+    const message = `path.${os}.parse(${JSON.stringify(input)})\n  expect=${
       JSON.stringify(expected)}\n  actual=${JSON.stringify(actual)}`;
     const actualKeys = Object.keys(actual);
     const expectedKeys = Object.keys(expected);
@@ -177,8 +175,8 @@ trailingTests.forEach((test) => {
     }
     if (failed)
       failures.push(`\n${message}`);
-  });
-});
+  }
+}
 assert.strictEqual(failures.length, 0, failures.join(''));
 
 function checkErrors(path) {
diff --git a/tests/node_compat/test/parallel/test-path-posix-exists.js b/tests/node_compat/test/parallel/test-path-posix-exists.js
index b3c65726445e9c..f99649a6205494 100644
--- a/tests/node_compat/test/parallel/test-path-posix-exists.js
+++ b/tests/node_compat/test/parallel/test-path-posix-exists.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-path-win32-exists.js b/tests/node_compat/test/parallel/test-path-win32-exists.js
index 96ef69191c73cc..79ebd32559e3c9 100644
--- a/tests/node_compat/test/parallel/test-path-win32-exists.js
+++ b/tests/node_compat/test/parallel/test-path-win32-exists.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-path-zero-length-strings.js b/tests/node_compat/test/parallel/test-path-zero-length-strings.js
index 8c68bfff1fcef7..3ce6227d4a5913 100644
--- a/tests/node_compat/test/parallel/test-path-zero-length-strings.js
+++ b/tests/node_compat/test/parallel/test-path-zero-length-strings.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-path.js b/tests/node_compat/test/parallel/test-path.js
index 4396246b1b96c4..74b8d962f232f9 100644
--- a/tests/node_compat/test/parallel/test-path.js
+++ b/tests/node_compat/test/parallel/test-path.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-perf-gc-crash.js b/tests/node_compat/test/parallel/test-perf-gc-crash.js
index 474d1d04668780..f4382335cab5fa 100644
--- a/tests/node_compat/test/parallel/test-perf-gc-crash.js
+++ b/tests/node_compat/test/parallel/test-perf-gc-crash.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-performanceobserver-gc.js b/tests/node_compat/test/parallel/test-performanceobserver-gc.js
index b508bc4dfcc584..281e348287ef26 100644
--- a/tests/node_compat/test/parallel/test-performanceobserver-gc.js
+++ b/tests/node_compat/test/parallel/test-performanceobserver-gc.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-pipe-return-val.js b/tests/node_compat/test/parallel/test-pipe-return-val.js
index c72bb275f8d714..17b2304c899a5a 100644
--- a/tests/node_compat/test/parallel/test-pipe-return-val.js
+++ b/tests/node_compat/test/parallel/test-pipe-return-val.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-pipe-writev.js b/tests/node_compat/test/parallel/test-pipe-writev.js
index 900410427133a2..f6faab0ba74220 100644
--- a/tests/node_compat/test/parallel/test-pipe-writev.js
+++ b/tests/node_compat/test/parallel/test-pipe-writev.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-process-abort.js b/tests/node_compat/test/parallel/test-process-abort.js
index 6117205e6146a4..f949b834500838 100644
--- a/tests/node_compat/test/parallel/test-process-abort.js
+++ b/tests/node_compat/test/parallel/test-process-abort.js
@@ -2,16 +2,18 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
 
 const common = require('../common');
 const assert = require('assert');
+const { isMainThread } = require('worker_threads');
 
-if (!common.isMainThread)
+if (!isMainThread) {
   common.skip('process.abort() is not available in Workers');
+}
 
 // Check that our built-in methods do not have a prototype/constructor behaviour
 // if they don't need to. This could be tested for any of our C++ methods.
diff --git a/tests/node_compat/test/parallel/test-process-argv-0.js b/tests/node_compat/test/parallel/test-process-argv-0.js
index 3a4aa6982242da..c94e88c2f3001e 100644
--- a/tests/node_compat/test/parallel/test-process-argv-0.js
+++ b/tests/node_compat/test/parallel/test-process-argv-0.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-process-beforeexit.js b/tests/node_compat/test/parallel/test-process-beforeexit.js
index 27bbe677629e9f..67fe5a8538aff8 100644
--- a/tests/node_compat/test/parallel/test-process-beforeexit.js
+++ b/tests/node_compat/test/parallel/test-process-beforeexit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-process-binding-internalbinding-allowlist.js b/tests/node_compat/test/parallel/test-process-binding-internalbinding-allowlist.js
index 2747e9374397a4..a51141427c6778 100644
--- a/tests/node_compat/test/parallel/test-process-binding-internalbinding-allowlist.js
+++ b/tests/node_compat/test/parallel/test-process-binding-internalbinding-allowlist.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --no-warnings
diff --git a/tests/node_compat/test/parallel/test-process-binding.js b/tests/node_compat/test/parallel/test-process-binding.js
index e4895ed37de683..5fec92725325ef 100644
--- a/tests/node_compat/test/parallel/test-process-binding.js
+++ b/tests/node_compat/test/parallel/test-process-binding.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-process-dlopen-undefined-exports.js b/tests/node_compat/test/parallel/test-process-dlopen-undefined-exports.js
index 615eaf7aaaa915..fc37aaac9e8229 100644
--- a/tests/node_compat/test/parallel/test-process-dlopen-undefined-exports.js
+++ b/tests/node_compat/test/parallel/test-process-dlopen-undefined-exports.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-process-domain-segfault.js b/tests/node_compat/test/parallel/test-process-domain-segfault.js
index 65a46cebd18daf..0a7ee4181ebfd8 100644
--- a/tests/node_compat/test/parallel/test-process-domain-segfault.js
+++ b/tests/node_compat/test/parallel/test-process-domain-segfault.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-process-emitwarning.js b/tests/node_compat/test/parallel/test-process-emitwarning.js
index 7bf6082e7d473d..d9bbfa72826957 100644
--- a/tests/node_compat/test/parallel/test-process-emitwarning.js
+++ b/tests/node_compat/test/parallel/test-process-emitwarning.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --no-warnings
diff --git a/tests/node_compat/test/parallel/test-process-env-allowed-flags.js b/tests/node_compat/test/parallel/test-process-env-allowed-flags.js
index cdd847e9fe15a3..ca7c7abb1e76fe 100644
--- a/tests/node_compat/test/parallel/test-process-env-allowed-flags.js
+++ b/tests/node_compat/test/parallel/test-process-env-allowed-flags.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-process-env-delete.js b/tests/node_compat/test/parallel/test-process-env-delete.js
index cb74a681d49bdd..0195afae986fc4 100644
--- a/tests/node_compat/test/parallel/test-process-env-delete.js
+++ b/tests/node_compat/test/parallel/test-process-env-delete.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-process-env-tz.js b/tests/node_compat/test/parallel/test-process-env-tz.js
index ea28309f45a491..1770fb217b7bee 100644
--- a/tests/node_compat/test/parallel/test-process-env-tz.js
+++ b/tests/node_compat/test/parallel/test-process-env-tz.js
@@ -2,18 +2,21 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
 const common = require('../common');
 const assert = require('assert');
+const { isMainThread } = require('worker_threads');
 
-if (!common.isMainThread)
+if (!isMainThread) {
   common.skip('process.env.TZ is not intercepted in Workers');
+}
 
-if (common.isWindows)  // Using a different TZ format.
+if (common.isWindows) { // Using a different TZ format.
   common.skip('todo: test on Windows');
+}
 
 const date = new Date('2018-04-14T12:34:56.789Z');
 
diff --git a/tests/node_compat/test/parallel/test-process-env-windows-error-reset.js b/tests/node_compat/test/parallel/test-process-env-windows-error-reset.js
index 63b44e98c7ebba..f9ac1474deed0f 100644
--- a/tests/node_compat/test/parallel/test-process-env-windows-error-reset.js
+++ b/tests/node_compat/test/parallel/test-process-env-windows-error-reset.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-process-exit-from-before-exit.js b/tests/node_compat/test/parallel/test-process-exit-from-before-exit.js
index 49705c1f32aef2..6afb010e1f5a6e 100644
--- a/tests/node_compat/test/parallel/test-process-exit-from-before-exit.js
+++ b/tests/node_compat/test/parallel/test-process-exit-from-before-exit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-process-exit-handler.js b/tests/node_compat/test/parallel/test-process-exit-handler.js
index c8de3a91e5f81a..0bd48e1277bf68 100644
--- a/tests/node_compat/test/parallel/test-process-exit-handler.js
+++ b/tests/node_compat/test/parallel/test-process-exit-handler.js
@@ -2,14 +2,16 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
 const common = require('../common');
+const { isMainThread } = require('worker_threads');
 
-if (!common.isMainThread)
+if (!isMainThread) {
   common.skip('execArgv does not affect Workers');
+}
 
 // This test ensures that no asynchronous operations are performed in the 'exit'
 // handler.
diff --git a/tests/node_compat/test/parallel/test-process-exit-recursive.js b/tests/node_compat/test/parallel/test-process-exit-recursive.js
index 979347c8a04e44..0430fe2527c3b9 100644
--- a/tests/node_compat/test/parallel/test-process-exit-recursive.js
+++ b/tests/node_compat/test/parallel/test-process-exit-recursive.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-process-exit.js b/tests/node_compat/test/parallel/test-process-exit.js
index 2ff5fc6dc43f3e..04cae3764eb8c7 100644
--- a/tests/node_compat/test/parallel/test-process-exit.js
+++ b/tests/node_compat/test/parallel/test-process-exit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-process-getgroups.js b/tests/node_compat/test/parallel/test-process-getgroups.js
index 01eb92bf79222c..d1746e3bcb7293 100644
--- a/tests/node_compat/test/parallel/test-process-getgroups.js
+++ b/tests/node_compat/test/parallel/test-process-getgroups.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -31,7 +31,7 @@ const common = require('../common');
 
 // Check `id -G` and `process.getgroups()` return same groups.
 
-if (common.isOSX)
+if (common.isMacOS)
   common.skip('Output of `id -G` is unreliable on Darwin.');
 
 const assert = require('assert');
diff --git a/tests/node_compat/test/parallel/test-process-hrtime-bigint.js b/tests/node_compat/test/parallel/test-process-hrtime-bigint.js
index 22c382bb45aef4..4adf3349a765b8 100644
--- a/tests/node_compat/test/parallel/test-process-hrtime-bigint.js
+++ b/tests/node_compat/test/parallel/test-process-hrtime-bigint.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-process-kill-pid.js b/tests/node_compat/test/parallel/test-process-kill-pid.js
index 45036151122ef9..27fc9d60702c7e 100644
--- a/tests/node_compat/test/parallel/test-process-kill-pid.js
+++ b/tests/node_compat/test/parallel/test-process-kill-pid.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-process-next-tick.js b/tests/node_compat/test/parallel/test-process-next-tick.js
index b755188696d232..b23f988e168ebf 100644
--- a/tests/node_compat/test/parallel/test-process-next-tick.js
+++ b/tests/node_compat/test/parallel/test-process-next-tick.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-process-no-deprecation.js b/tests/node_compat/test/parallel/test-process-no-deprecation.js
index 310c3dbe4d89dc..b9acd9e57e148c 100644
--- a/tests/node_compat/test/parallel/test-process-no-deprecation.js
+++ b/tests/node_compat/test/parallel/test-process-no-deprecation.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-process-ppid.js b/tests/node_compat/test/parallel/test-process-ppid.js
index f9b184e254bb18..47672ca0e060f0 100644
--- a/tests/node_compat/test/parallel/test-process-ppid.js
+++ b/tests/node_compat/test/parallel/test-process-ppid.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-process-really-exit.js b/tests/node_compat/test/parallel/test-process-really-exit.js
index ea98eadf35a638..5eb7366d49ab86 100644
--- a/tests/node_compat/test/parallel/test-process-really-exit.js
+++ b/tests/node_compat/test/parallel/test-process-really-exit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-process-uptime.js b/tests/node_compat/test/parallel/test-process-uptime.js
index f93ad3d914d450..4bab3a9ff42614 100644
--- a/tests/node_compat/test/parallel/test-process-uptime.js
+++ b/tests/node_compat/test/parallel/test-process-uptime.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-process-warning.js b/tests/node_compat/test/parallel/test-process-warning.js
index 69514242dbbbae..43478de3c425b3 100644
--- a/tests/node_compat/test/parallel/test-process-warning.js
+++ b/tests/node_compat/test/parallel/test-process-warning.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-promise-handled-rejection-no-warning.js b/tests/node_compat/test/parallel/test-promise-handled-rejection-no-warning.js
index f7d636f187e5a5..15d82440847cbd 100644
--- a/tests/node_compat/test/parallel/test-promise-handled-rejection-no-warning.js
+++ b/tests/node_compat/test/parallel/test-promise-handled-rejection-no-warning.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-promise-unhandled-silent.js b/tests/node_compat/test/parallel/test-promise-unhandled-silent.js
index fc953ba33b86bd..dcc6c41d2a2d80 100644
--- a/tests/node_compat/test/parallel/test-promise-unhandled-silent.js
+++ b/tests/node_compat/test/parallel/test-promise-unhandled-silent.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --unhandled-rejections=none
diff --git a/tests/node_compat/test/parallel/test-promise-unhandled-throw-handler.js b/tests/node_compat/test/parallel/test-promise-unhandled-throw-handler.js
index b64e5f669bd1e6..c5821370b4f6d6 100644
--- a/tests/node_compat/test/parallel/test-promise-unhandled-throw-handler.js
+++ b/tests/node_compat/test/parallel/test-promise-unhandled-throw-handler.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --unhandled-rejections=throw
diff --git a/tests/node_compat/test/parallel/test-punycode.js b/tests/node_compat/test/parallel/test-punycode.js
index 10aabaa2761589..5c2ed89c15ff44 100644
--- a/tests/node_compat/test/parallel/test-punycode.js
+++ b/tests/node_compat/test/parallel/test-punycode.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --pending-deprecation
diff --git a/tests/node_compat/test/parallel/test-querystring-escape.js b/tests/node_compat/test/parallel/test-querystring-escape.js
index bd23596e3d961a..c9b3176d6c2349 100644
--- a/tests/node_compat/test/parallel/test-querystring-escape.js
+++ b/tests/node_compat/test/parallel/test-querystring-escape.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-querystring-maxKeys-non-finite.js b/tests/node_compat/test/parallel/test-querystring-maxKeys-non-finite.js
index b58be5d340614d..f13664e88f2a8c 100644
--- a/tests/node_compat/test/parallel/test-querystring-maxKeys-non-finite.js
+++ b/tests/node_compat/test/parallel/test-querystring-maxKeys-non-finite.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-querystring-multichar-separator.js b/tests/node_compat/test/parallel/test-querystring-multichar-separator.js
index 0626803e19be36..a1383c32cd7b39 100644
--- a/tests/node_compat/test/parallel/test-querystring-multichar-separator.js
+++ b/tests/node_compat/test/parallel/test-querystring-multichar-separator.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-readable-from-iterator-closing.js b/tests/node_compat/test/parallel/test-readable-from-iterator-closing.js
index fba145d4e7a940..fe16a8549e67c6 100644
--- a/tests/node_compat/test/parallel/test-readable-from-iterator-closing.js
+++ b/tests/node_compat/test/parallel/test-readable-from-iterator-closing.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-readable-from.js b/tests/node_compat/test/parallel/test-readable-from.js
index 066532466a9864..5c25ac18815d1c 100644
--- a/tests/node_compat/test/parallel/test-readable-from.js
+++ b/tests/node_compat/test/parallel/test-readable-from.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-readable-large-hwm.js b/tests/node_compat/test/parallel/test-readable-large-hwm.js
index 79a243a9d179f3..e4c8ca59bf5941 100644
--- a/tests/node_compat/test/parallel/test-readable-large-hwm.js
+++ b/tests/node_compat/test/parallel/test-readable-large-hwm.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-readable-single-end.js b/tests/node_compat/test/parallel/test-readable-single-end.js
index 33eb32e1fb5dcc..d49fd98158c1de 100644
--- a/tests/node_compat/test/parallel/test-readable-single-end.js
+++ b/tests/node_compat/test/parallel/test-readable-single-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-readline-async-iterators-destroy.js b/tests/node_compat/test/parallel/test-readline-async-iterators-destroy.js
index 2dcc43e05c0fe5..7ae49e87fd66d5 100644
--- a/tests/node_compat/test/parallel/test-readline-async-iterators-destroy.js
+++ b/tests/node_compat/test/parallel/test-readline-async-iterators-destroy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-readline-async-iterators.js b/tests/node_compat/test/parallel/test-readline-async-iterators.js
index a9e3a282fbc56a..0d7d8a8da0afbe 100644
--- a/tests/node_compat/test/parallel/test-readline-async-iterators.js
+++ b/tests/node_compat/test/parallel/test-readline-async-iterators.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-readline-carriage-return-between-chunks.js b/tests/node_compat/test/parallel/test-readline-carriage-return-between-chunks.js
index b678f8666d4cde..e25731998ff764 100644
--- a/tests/node_compat/test/parallel/test-readline-carriage-return-between-chunks.js
+++ b/tests/node_compat/test/parallel/test-readline-carriage-return-between-chunks.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-readline-csi.js b/tests/node_compat/test/parallel/test-readline-csi.js
index e657ed545e73df..7f661b58e977a4 100644
--- a/tests/node_compat/test/parallel/test-readline-csi.js
+++ b/tests/node_compat/test/parallel/test-readline-csi.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-readline-emit-keypress-events.js b/tests/node_compat/test/parallel/test-readline-emit-keypress-events.js
index ccb10af70d1f02..3f379427acd6bb 100644
--- a/tests/node_compat/test/parallel/test-readline-emit-keypress-events.js
+++ b/tests/node_compat/test/parallel/test-readline-emit-keypress-events.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-readline-interface-escapecodetimeout.js b/tests/node_compat/test/parallel/test-readline-interface-escapecodetimeout.js
index 69a9ded7c3b234..04f2a870ef7fb5 100644
--- a/tests/node_compat/test/parallel/test-readline-interface-escapecodetimeout.js
+++ b/tests/node_compat/test/parallel/test-readline-interface-escapecodetimeout.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-readline-keys.js b/tests/node_compat/test/parallel/test-readline-keys.js
index fc7feb735f00b1..bdaca5b8e00c0d 100644
--- a/tests/node_compat/test/parallel/test-readline-keys.js
+++ b/tests/node_compat/test/parallel/test-readline-keys.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-readline-position.js b/tests/node_compat/test/parallel/test-readline-position.js
index e43851997df309..a54963d6391271 100644
--- a/tests/node_compat/test/parallel/test-readline-position.js
+++ b/tests/node_compat/test/parallel/test-readline-position.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
@@ -14,7 +14,9 @@ const assert = require('assert');
 
 const ctrlU = { ctrl: true, name: 'u' };
 
-common.skipIfDumbTerminal();
+if (process.env.TERM === 'dumb') {
+  common.skip('skipping - dumb terminal');
+}
 
 {
   const input = new PassThrough();
diff --git a/tests/node_compat/test/parallel/test-readline-reopen.js b/tests/node_compat/test/parallel/test-readline-reopen.js
index a193c1eb811764..bba7d077f988cf 100644
--- a/tests/node_compat/test/parallel/test-readline-reopen.js
+++ b/tests/node_compat/test/parallel/test-readline-reopen.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-readline-set-raw-mode.js b/tests/node_compat/test/parallel/test-readline-set-raw-mode.js
index 7d31896e26c644..0305532ce95c22 100644
--- a/tests/node_compat/test/parallel/test-readline-set-raw-mode.js
+++ b/tests/node_compat/test/parallel/test-readline-set-raw-mode.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-readline-undefined-columns.js b/tests/node_compat/test/parallel/test-readline-undefined-columns.js
index 8de1ce3388e8ac..36d1d76292dca2 100644
--- a/tests/node_compat/test/parallel/test-readline-undefined-columns.js
+++ b/tests/node_compat/test/parallel/test-readline-undefined-columns.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -12,7 +12,9 @@ const assert = require('assert');
 const PassThrough = require('stream').PassThrough;
 const readline = require('readline');
 
-common.skipIfDumbTerminal();
+if (process.env.TERM === 'dumb') {
+  common.skip('skipping - dumb terminal');
+}
 
 // Checks that tab completion still works
 // when output column size is undefined
diff --git a/tests/node_compat/test/parallel/test-readline.js b/tests/node_compat/test/parallel/test-readline.js
index fb2388247a38b3..be0bd496123231 100644
--- a/tests/node_compat/test/parallel/test-readline.js
+++ b/tests/node_compat/test/parallel/test-readline.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -11,7 +11,9 @@ const { PassThrough } = require('stream');
 const readline = require('readline');
 const assert = require('assert');
 
-common.skipIfDumbTerminal();
+if (process.env.TERM === 'dumb') {
+  common.skip('skipping - dumb terminal');
+}
 
 {
   const input = new PassThrough();
diff --git a/tests/node_compat/test/parallel/test-ref-unref-return.js b/tests/node_compat/test/parallel/test-ref-unref-return.js
index d8f919bf88be8e..125b2bad4f40ce 100644
--- a/tests/node_compat/test/parallel/test-ref-unref-return.js
+++ b/tests/node_compat/test/parallel/test-ref-unref-return.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-regression-object-prototype.js b/tests/node_compat/test/parallel/test-regression-object-prototype.js
index d2b913604869e9..dc0cde7051b13a 100644
--- a/tests/node_compat/test/parallel/test-regression-object-prototype.js
+++ b/tests/node_compat/test/parallel/test-regression-object-prototype.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-require-invalid-package.js b/tests/node_compat/test/parallel/test-require-invalid-package.js
index 7c8b412dcdf65f..0141a8e9b5f05c 100644
--- a/tests/node_compat/test/parallel/test-require-invalid-package.js
+++ b/tests/node_compat/test/parallel/test-require-invalid-package.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-require-long-path.js b/tests/node_compat/test/parallel/test-require-long-path.js
index c9329e4626f0a9..6c3128cbf64651 100644
--- a/tests/node_compat/test/parallel/test-require-long-path.js
+++ b/tests/node_compat/test/parallel/test-require-long-path.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-require-nul.js b/tests/node_compat/test/parallel/test-require-nul.js
index b9a77a3004c7f9..da3a2ff10e5029 100644
--- a/tests/node_compat/test/parallel/test-require-nul.js
+++ b/tests/node_compat/test/parallel/test-require-nul.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-require-process.js b/tests/node_compat/test/parallel/test-require-process.js
index dff056e4f3b46b..27bc03a444f11a 100644
--- a/tests/node_compat/test/parallel/test-require-process.js
+++ b/tests/node_compat/test/parallel/test-require-process.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-signal-handler-remove-on-exit.js b/tests/node_compat/test/parallel/test-signal-handler-remove-on-exit.js
index 71ad993e20a2a5..aac7667641e868 100644
--- a/tests/node_compat/test/parallel/test-signal-handler-remove-on-exit.js
+++ b/tests/node_compat/test/parallel/test-signal-handler-remove-on-exit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-signal-handler.js b/tests/node_compat/test/parallel/test-signal-handler.js
index a4cfad7f4d297c..1ac53f5c0883c8 100644
--- a/tests/node_compat/test/parallel/test-signal-handler.js
+++ b/tests/node_compat/test/parallel/test-signal-handler.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -30,10 +30,15 @@
 
 const common = require('../common');
 
-if (common.isWindows)
+if (common.isWindows) {
   common.skip('SIGUSR1 and SIGHUP signals are not supported');
-if (!common.isMainThread)
+}
+
+const { isMainThread } = require('worker_threads');
+
+if (!isMainThread) {
   common.skip('Signal handling in Workers is not supported');
+}
 
 console.log(`process.pid: ${process.pid}`);
 
diff --git a/tests/node_compat/test/parallel/test-socket-address.js b/tests/node_compat/test/parallel/test-socket-address.js
index 7b132402aa162a..94c34b6473486d 100644
--- a/tests/node_compat/test/parallel/test-socket-address.js
+++ b/tests/node_compat/test/parallel/test-socket-address.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-socket-write-after-fin-error.js b/tests/node_compat/test/parallel/test-socket-write-after-fin-error.js
index 525627f4349639..146be58dd25270 100644
--- a/tests/node_compat/test/parallel/test-socket-write-after-fin-error.js
+++ b/tests/node_compat/test/parallel/test-socket-write-after-fin-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-source-map-enable.js b/tests/node_compat/test/parallel/test-source-map-enable.js
index b373aadda975ec..ac9fbff2e227b9 100644
--- a/tests/node_compat/test/parallel/test-source-map-enable.js
+++ b/tests/node_compat/test/parallel/test-source-map-enable.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -249,6 +249,7 @@ function nextdir() {
 
 // Persists line lengths for in-memory representation of source file.
 {
+  const checkoutEOL = fs.readFileSync(__filename).includes('\r\n') ? '\r\n' : '\n';
   const coverageDirectory = nextdir();
   spawnSync(process.execPath, [
     require.resolve('../fixtures/source-map/istanbul-throw.js'),
@@ -257,7 +258,7 @@ function nextdir() {
     'istanbul-throw.js',
     coverageDirectory
   );
-  if (common.checkoutEOL === '\r\n') {
+  if (checkoutEOL === '\r\n') {
     assert.deepStrictEqual(sourceMap.lineLengths, [1086, 31, 185, 649, 0]);
   } else {
     assert.deepStrictEqual(sourceMap.lineLengths, [1085, 30, 184, 648, 0]);
@@ -296,6 +297,30 @@ function nextdir() {
   assert.match(output.stderr.toString(), /at functionC.*10:3/);
 }
 
+// Properly converts Windows absolute paths to absolute URLs.
+// Refs: https://github.com/nodejs/node/issues/50523
+// Refs: https://github.com/TypeStrong/ts-node/issues/1769
+{
+  const coverageDirectory = nextdir();
+  const output = spawnSync(process.execPath, [
+    require.resolve('../fixtures/source-map/ts-node-win32.js'),
+  ], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } });
+  assert.strictEqual(output.status, 0);
+  assert.strictEqual(output.stderr.toString(), '');
+  const sourceMap = getSourceMapFromCache(
+    'ts-node-win32.js',
+    coverageDirectory
+  );
+  // base64 JSON should have been decoded, the D: in the sources field should
+  // have been taken as the drive letter on Windows, the scheme on POSIX.
+  assert.strictEqual(
+    sourceMap.data.sources[0],
+    common.isWindows ?
+      'file:///D:/workspaces/node/test/fixtures/source-map/ts-node.ts' :
+      'd:/workspaces/node/test/fixtures/source-map/ts-node.ts'
+  );
+}
+
 // Stores and applies source map associated with file that throws while
 // being required.
 {
diff --git a/tests/node_compat/test/parallel/test-spawn-cmd-named-pipe.js b/tests/node_compat/test/parallel/test-spawn-cmd-named-pipe.js
index 47b012a9ca5dec..3c6119a1362620 100644
--- a/tests/node_compat/test/parallel/test-spawn-cmd-named-pipe.js
+++ b/tests/node_compat/test/parallel/test-spawn-cmd-named-pipe.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stdin-hang.js b/tests/node_compat/test/parallel/test-stdin-hang.js
index 26e98abe03917f..ea0d869b204a42 100644
--- a/tests/node_compat/test/parallel/test-stdin-hang.js
+++ b/tests/node_compat/test/parallel/test-stdin-hang.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stdin-pipe-large.js b/tests/node_compat/test/parallel/test-stdin-pipe-large.js
index cdc4e9ff05d292..4b16ce9d818742 100644
--- a/tests/node_compat/test/parallel/test-stdin-pipe-large.js
+++ b/tests/node_compat/test/parallel/test-stdin-pipe-large.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stdin-pipe-resume.js b/tests/node_compat/test/parallel/test-stdin-pipe-resume.js
index 52054d2ddaa5df..6c2dc36fe99287 100644
--- a/tests/node_compat/test/parallel/test-stdin-pipe-resume.js
+++ b/tests/node_compat/test/parallel/test-stdin-pipe-resume.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stdin-script-child-option.js b/tests/node_compat/test/parallel/test-stdin-script-child-option.js
index 1d4cd00e1eb7cb..bdec8d16a31931 100644
--- a/tests/node_compat/test/parallel/test-stdin-script-child-option.js
+++ b/tests/node_compat/test/parallel/test-stdin-script-child-option.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stdio-pipe-access.js b/tests/node_compat/test/parallel/test-stdio-pipe-access.js
index ab1db54ccae57d..162eb6805839d9 100644
--- a/tests/node_compat/test/parallel/test-stdio-pipe-access.js
+++ b/tests/node_compat/test/parallel/test-stdio-pipe-access.js
@@ -2,13 +2,16 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
 const common = require('../common');
-if (!common.isMainThread)
+const { isMainThread } = require('worker_threads');
+
+if (!isMainThread) {
   common.skip("Workers don't have process-like stdio");
+}
 
 // Test if Node handles accessing process.stdin if it is a redirected
 // pipe without deadlocking
diff --git a/tests/node_compat/test/parallel/test-stdio-pipe-redirect.js b/tests/node_compat/test/parallel/test-stdio-pipe-redirect.js
index d2d51f7a697de2..8f7a7f845bb306 100644
--- a/tests/node_compat/test/parallel/test-stdio-pipe-redirect.js
+++ b/tests/node_compat/test/parallel/test-stdio-pipe-redirect.js
@@ -2,13 +2,16 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
 const common = require('../common');
-if (!common.isMainThread)
+const { isMainThread } = require('worker_threads');
+
+if (!isMainThread) {
   common.skip("Workers don't have process-like stdio");
+}
 
 // Test if Node handles redirecting one child process stdout to another
 // process stdin without crashing.
diff --git a/tests/node_compat/test/parallel/test-stdio-pipe-stderr.js b/tests/node_compat/test/parallel/test-stdio-pipe-stderr.js
index d8242a916e4275..d358020e853464 100644
--- a/tests/node_compat/test/parallel/test-stdio-pipe-stderr.js
+++ b/tests/node_compat/test/parallel/test-stdio-pipe-stderr.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stdio-undestroy.js b/tests/node_compat/test/parallel/test-stdio-undestroy.js
index f10ec0726d4d71..347a0fb460b852 100644
--- a/tests/node_compat/test/parallel/test-stdio-undestroy.js
+++ b/tests/node_compat/test/parallel/test-stdio-undestroy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stdout-cannot-be-closed-child-process-pipe.js b/tests/node_compat/test/parallel/test-stdout-cannot-be-closed-child-process-pipe.js
index 91dfd44cf67c01..2c4272398b156e 100644
--- a/tests/node_compat/test/parallel/test-stdout-cannot-be-closed-child-process-pipe.js
+++ b/tests/node_compat/test/parallel/test-stdout-cannot-be-closed-child-process-pipe.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stdout-pipeline-destroy.js b/tests/node_compat/test/parallel/test-stdout-pipeline-destroy.js
index 196f4a96e797f6..329c5a0657dd0e 100644
--- a/tests/node_compat/test/parallel/test-stdout-pipeline-destroy.js
+++ b/tests/node_compat/test/parallel/test-stdout-pipeline-destroy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stdout-stderr-reading.js b/tests/node_compat/test/parallel/test-stdout-stderr-reading.js
index 25eb25b7b00d63..5b076a49472a30 100644
--- a/tests/node_compat/test/parallel/test-stdout-stderr-reading.js
+++ b/tests/node_compat/test/parallel/test-stdout-stderr-reading.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stdout-stderr-write.js b/tests/node_compat/test/parallel/test-stdout-stderr-write.js
index afce78d19fab03..75eb29d7085722 100644
--- a/tests/node_compat/test/parallel/test-stdout-stderr-write.js
+++ b/tests/node_compat/test/parallel/test-stdout-stderr-write.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-add-abort-signal.js b/tests/node_compat/test/parallel/test-stream-add-abort-signal.js
index 1db215a43db4ce..ffdcb436cb65df 100644
--- a/tests/node_compat/test/parallel/test-stream-add-abort-signal.js
+++ b/tests/node_compat/test/parallel/test-stream-add-abort-signal.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-stream-aliases-legacy.js b/tests/node_compat/test/parallel/test-stream-aliases-legacy.js
index af966a80c67e0a..f66eff61177244 100644
--- a/tests/node_compat/test/parallel/test-stream-aliases-legacy.js
+++ b/tests/node_compat/test/parallel/test-stream-aliases-legacy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-auto-destroy.js b/tests/node_compat/test/parallel/test-stream-auto-destroy.js
index f036a6e419acff..81d212cfc8693a 100644
--- a/tests/node_compat/test/parallel/test-stream-auto-destroy.js
+++ b/tests/node_compat/test/parallel/test-stream-auto-destroy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-await-drain-writers-in-synchronously-recursion-write.js b/tests/node_compat/test/parallel/test-stream-await-drain-writers-in-synchronously-recursion-write.js
index 1d00048c0ec086..a6d4baeda578cd 100644
--- a/tests/node_compat/test/parallel/test-stream-await-drain-writers-in-synchronously-recursion-write.js
+++ b/tests/node_compat/test/parallel/test-stream-await-drain-writers-in-synchronously-recursion-write.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-backpressure.js b/tests/node_compat/test/parallel/test-stream-backpressure.js
index c88c5228caa2e4..18f23d06498f94 100644
--- a/tests/node_compat/test/parallel/test-stream-backpressure.js
+++ b/tests/node_compat/test/parallel/test-stream-backpressure.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-big-packet.js b/tests/node_compat/test/parallel/test-stream-big-packet.js
index 0db08f7e0cdbda..4c2a4c1da05b4b 100644
--- a/tests/node_compat/test/parallel/test-stream-big-packet.js
+++ b/tests/node_compat/test/parallel/test-stream-big-packet.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -35,10 +35,8 @@ let passed = false;
 
 class TestStream extends stream.Transform {
   _transform(chunk, encoding, done) {
-    if (!passed) {
-      // Char 'a' only exists in the last write
-      passed = chunk.toString().includes('a');
-    }
+    // Char 'a' only exists in the last write
+    passed ||= chunk.toString().includes('a');
     done();
   }
 }
diff --git a/tests/node_compat/test/parallel/test-stream-big-push.js b/tests/node_compat/test/parallel/test-stream-big-push.js
index 0ccdbc32d53fd1..3b5094cce4a876 100644
--- a/tests/node_compat/test/parallel/test-stream-big-push.js
+++ b/tests/node_compat/test/parallel/test-stream-big-push.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream-catch-rejections.js b/tests/node_compat/test/parallel/test-stream-catch-rejections.js
index 909f031b27d418..bc62417531bd82 100644
--- a/tests/node_compat/test/parallel/test-stream-catch-rejections.js
+++ b/tests/node_compat/test/parallel/test-stream-catch-rejections.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-construct.js b/tests/node_compat/test/parallel/test-stream-construct.js
index 33a14966626fb8..500c614637d5fa 100644
--- a/tests/node_compat/test/parallel/test-stream-construct.js
+++ b/tests/node_compat/test/parallel/test-stream-construct.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-decoder-objectmode.js b/tests/node_compat/test/parallel/test-stream-decoder-objectmode.js
index 816f35a3fac841..41a75df6f4996f 100644
--- a/tests/node_compat/test/parallel/test-stream-decoder-objectmode.js
+++ b/tests/node_compat/test/parallel/test-stream-decoder-objectmode.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-destroy-event-order.js b/tests/node_compat/test/parallel/test-stream-destroy-event-order.js
index 83963a9add5493..2c7c689a366635 100644
--- a/tests/node_compat/test/parallel/test-stream-destroy-event-order.js
+++ b/tests/node_compat/test/parallel/test-stream-destroy-event-order.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-duplex-end.js b/tests/node_compat/test/parallel/test-stream-duplex-end.js
index c661b9cbd20aaa..434968b64b62ec 100644
--- a/tests/node_compat/test/parallel/test-stream-duplex-end.js
+++ b/tests/node_compat/test/parallel/test-stream-duplex-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-duplex-props.js b/tests/node_compat/test/parallel/test-stream-duplex-props.js
index 402c9bfd1f1421..9017d39c60097a 100644
--- a/tests/node_compat/test/parallel/test-stream-duplex-props.js
+++ b/tests/node_compat/test/parallel/test-stream-duplex-props.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-duplex-readable-end.js b/tests/node_compat/test/parallel/test-stream-duplex-readable-end.js
index b091571788f06c..b3ab6d17c0e3b8 100644
--- a/tests/node_compat/test/parallel/test-stream-duplex-readable-end.js
+++ b/tests/node_compat/test/parallel/test-stream-duplex-readable-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -14,6 +14,7 @@ const stream = require('stream');
 let loops = 5;
 
 const src = new stream.Readable({
+  highWaterMark: 16 * 1024,
   read() {
     if (loops--)
       this.push(Buffer.alloc(20000));
@@ -21,6 +22,7 @@ const src = new stream.Readable({
 });
 
 const dst = new stream.Transform({
+  highWaterMark: 16 * 1024,
   transform(chunk, output, fn) {
     this.push(null);
     fn();
diff --git a/tests/node_compat/test/parallel/test-stream-duplex-readable-writable.js b/tests/node_compat/test/parallel/test-stream-duplex-readable-writable.js
index 82dfb54afb3ba9..f2a8f7dbc981a9 100644
--- a/tests/node_compat/test/parallel/test-stream-duplex-readable-writable.js
+++ b/tests/node_compat/test/parallel/test-stream-duplex-readable-writable.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-duplex-writable-finished.js b/tests/node_compat/test/parallel/test-stream-duplex-writable-finished.js
index 49b1e7c05256ed..f984ae9418af49 100644
--- a/tests/node_compat/test/parallel/test-stream-duplex-writable-finished.js
+++ b/tests/node_compat/test/parallel/test-stream-duplex-writable-finished.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-duplex.js b/tests/node_compat/test/parallel/test-stream-duplex.js
index a83ddf50409d0e..4e367c83e6a34e 100644
--- a/tests/node_compat/test/parallel/test-stream-duplex.js
+++ b/tests/node_compat/test/parallel/test-stream-duplex.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream-end-of-streams.js b/tests/node_compat/test/parallel/test-stream-end-of-streams.js
index 3ac78238ce50e0..d61472220260ec 100644
--- a/tests/node_compat/test/parallel/test-stream-end-of-streams.js
+++ b/tests/node_compat/test/parallel/test-stream-end-of-streams.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-end-paused.js b/tests/node_compat/test/parallel/test-stream-end-paused.js
index 7e316bff64a8e8..7aa13073349de6 100644
--- a/tests/node_compat/test/parallel/test-stream-end-paused.js
+++ b/tests/node_compat/test/parallel/test-stream-end-paused.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream-error-once.js b/tests/node_compat/test/parallel/test-stream-error-once.js
index 60a5cdd4e44aef..b7082e39bde946 100644
--- a/tests/node_compat/test/parallel/test-stream-error-once.js
+++ b/tests/node_compat/test/parallel/test-stream-error-once.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-events-prepend.js b/tests/node_compat/test/parallel/test-stream-events-prepend.js
index 81de84a26be174..bb021e56e33178 100644
--- a/tests/node_compat/test/parallel/test-stream-events-prepend.js
+++ b/tests/node_compat/test/parallel/test-stream-events-prepend.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-filter.js b/tests/node_compat/test/parallel/test-stream-filter.js
index 7043365ce935e0..e0de32e050fbd3 100644
--- a/tests/node_compat/test/parallel/test-stream-filter.js
+++ b/tests/node_compat/test/parallel/test-stream-filter.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-flatMap.js b/tests/node_compat/test/parallel/test-stream-flatMap.js
index 7575f90d651b25..d7781fb9b5f711 100644
--- a/tests/node_compat/test/parallel/test-stream-flatMap.js
+++ b/tests/node_compat/test/parallel/test-stream-flatMap.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-forEach.js b/tests/node_compat/test/parallel/test-stream-forEach.js
index 748193e1ba1684..d9de47862f740d 100644
--- a/tests/node_compat/test/parallel/test-stream-forEach.js
+++ b/tests/node_compat/test/parallel/test-stream-forEach.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-inheritance.js b/tests/node_compat/test/parallel/test-stream-inheritance.js
index f055bb70f2469f..46a1b96c7fd44e 100644
--- a/tests/node_compat/test/parallel/test-stream-inheritance.js
+++ b/tests/node_compat/test/parallel/test-stream-inheritance.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-ispaused.js b/tests/node_compat/test/parallel/test-stream-ispaused.js
index 852cd87535a459..792ebf375ec446 100644
--- a/tests/node_compat/test/parallel/test-stream-ispaused.js
+++ b/tests/node_compat/test/parallel/test-stream-ispaused.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream-objectmode-undefined.js b/tests/node_compat/test/parallel/test-stream-objectmode-undefined.js
index 6d11c60553e3e8..686d8f177e0c73 100644
--- a/tests/node_compat/test/parallel/test-stream-objectmode-undefined.js
+++ b/tests/node_compat/test/parallel/test-stream-objectmode-undefined.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-once-readable-pipe.js b/tests/node_compat/test/parallel/test-stream-once-readable-pipe.js
index a02a9eb059c9b6..0575539748727d 100644
--- a/tests/node_compat/test/parallel/test-stream-once-readable-pipe.js
+++ b/tests/node_compat/test/parallel/test-stream-once-readable-pipe.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-passthrough-drain.js b/tests/node_compat/test/parallel/test-stream-passthrough-drain.js
index 7e4cddc28955d0..be833f0e44c2db 100644
--- a/tests/node_compat/test/parallel/test-stream-passthrough-drain.js
+++ b/tests/node_compat/test/parallel/test-stream-passthrough-drain.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-after-end.js b/tests/node_compat/test/parallel/test-stream-pipe-after-end.js
index 6e71ac79924380..894e682ec8ce96 100644
--- a/tests/node_compat/test/parallel/test-stream-pipe-after-end.js
+++ b/tests/node_compat/test/parallel/test-stream-pipe-after-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-await-drain-manual-resume.js b/tests/node_compat/test/parallel/test-stream-pipe-await-drain-manual-resume.js
index d6fe4d534a7020..12f955cdb8f82b 100644
--- a/tests/node_compat/test/parallel/test-stream-pipe-await-drain-manual-resume.js
+++ b/tests/node_compat/test/parallel/test-stream-pipe-await-drain-manual-resume.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-await-drain-push-while-write.js b/tests/node_compat/test/parallel/test-stream-pipe-await-drain-push-while-write.js
index 00337d32ff31d0..7238ca47be3b42 100644
--- a/tests/node_compat/test/parallel/test-stream-pipe-await-drain-push-while-write.js
+++ b/tests/node_compat/test/parallel/test-stream-pipe-await-drain-push-while-write.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -11,6 +11,7 @@ const stream = require('stream');
 const assert = require('assert');
 
 const writable = new stream.Writable({
+  highWaterMark: 16 * 1024,
   write: common.mustCall(function(chunk, encoding, cb) {
     assert.strictEqual(
       readable._readableState.awaitDrainWriters,
@@ -33,6 +34,7 @@ const writable = new stream.Writable({
 // A readable stream which produces two buffers.
 const bufs = [Buffer.alloc(32 * 1024), Buffer.alloc(33 * 1024)]; // above hwm
 const readable = new stream.Readable({
+  highWaterMark: 16 * 1024,
   read: function() {
     while (bufs.length > 0) {
       this.push(bufs.shift());
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-await-drain.js b/tests/node_compat/test/parallel/test-stream-pipe-await-drain.js
index d54955829b0f0f..3cb65cc84251bc 100644
--- a/tests/node_compat/test/parallel/test-stream-pipe-await-drain.js
+++ b/tests/node_compat/test/parallel/test-stream-pipe-await-drain.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-cleanup-pause.js b/tests/node_compat/test/parallel/test-stream-pipe-cleanup-pause.js
index ce750bd01dcca5..206c96d2edb6c4 100644
--- a/tests/node_compat/test/parallel/test-stream-pipe-cleanup-pause.js
+++ b/tests/node_compat/test/parallel/test-stream-pipe-cleanup-pause.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-cleanup.js b/tests/node_compat/test/parallel/test-stream-pipe-cleanup.js
index 986871125bc318..ddaa6d8f0248ba 100644
--- a/tests/node_compat/test/parallel/test-stream-pipe-cleanup.js
+++ b/tests/node_compat/test/parallel/test-stream-pipe-cleanup.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-error-handling.js b/tests/node_compat/test/parallel/test-stream-pipe-error-handling.js
index 448cfed936b2f8..a5a09082cc42a9 100644
--- a/tests/node_compat/test/parallel/test-stream-pipe-error-handling.js
+++ b/tests/node_compat/test/parallel/test-stream-pipe-error-handling.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-error-unhandled.js b/tests/node_compat/test/parallel/test-stream-pipe-error-unhandled.js
index f4e9f3b4c7a79c..0ef7d2242a7584 100644
--- a/tests/node_compat/test/parallel/test-stream-pipe-error-unhandled.js
+++ b/tests/node_compat/test/parallel/test-stream-pipe-error-unhandled.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-event.js b/tests/node_compat/test/parallel/test-stream-pipe-event.js
index f49a6b0ab0a3f8..fd17e7bedc1e95 100644
--- a/tests/node_compat/test/parallel/test-stream-pipe-event.js
+++ b/tests/node_compat/test/parallel/test-stream-pipe-event.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-flow-after-unpipe.js b/tests/node_compat/test/parallel/test-stream-pipe-flow-after-unpipe.js
index f3cf7b7e83ca71..3883d81ef551e5 100644
--- a/tests/node_compat/test/parallel/test-stream-pipe-flow-after-unpipe.js
+++ b/tests/node_compat/test/parallel/test-stream-pipe-flow-after-unpipe.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-flow.js b/tests/node_compat/test/parallel/test-stream-pipe-flow.js
index 6d5ddc44a51bf8..07c29a11929008 100644
--- a/tests/node_compat/test/parallel/test-stream-pipe-flow.js
+++ b/tests/node_compat/test/parallel/test-stream-pipe-flow.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-manual-resume.js b/tests/node_compat/test/parallel/test-stream-pipe-manual-resume.js
index 13cf6bc9c71520..7eee717ee8da0f 100644
--- a/tests/node_compat/test/parallel/test-stream-pipe-manual-resume.js
+++ b/tests/node_compat/test/parallel/test-stream-pipe-manual-resume.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-multiple-pipes.js b/tests/node_compat/test/parallel/test-stream-pipe-multiple-pipes.js
index d9c8a239dc5595..f972d327407b0a 100644
--- a/tests/node_compat/test/parallel/test-stream-pipe-multiple-pipes.js
+++ b/tests/node_compat/test/parallel/test-stream-pipe-multiple-pipes.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-needDrain.js b/tests/node_compat/test/parallel/test-stream-pipe-needDrain.js
index 506b4c727ff681..71e05487fed649 100644
--- a/tests/node_compat/test/parallel/test-stream-pipe-needDrain.js
+++ b/tests/node_compat/test/parallel/test-stream-pipe-needDrain.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-same-destination-twice.js b/tests/node_compat/test/parallel/test-stream-pipe-same-destination-twice.js
index f6cf12c952816e..5e85eacb739820 100644
--- a/tests/node_compat/test/parallel/test-stream-pipe-same-destination-twice.js
+++ b/tests/node_compat/test/parallel/test-stream-pipe-same-destination-twice.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-unpipe-streams.js b/tests/node_compat/test/parallel/test-stream-pipe-unpipe-streams.js
index caba6406963075..be20a29ad00e0f 100644
--- a/tests/node_compat/test/parallel/test-stream-pipe-unpipe-streams.js
+++ b/tests/node_compat/test/parallel/test-stream-pipe-unpipe-streams.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -52,13 +52,12 @@ assert.strictEqual(source._readableState.pipes.length, 0);
   const checkSrcCleanup = common.mustCall(() => {
     assert.strictEqual(source._readableState.pipes.length, 0);
     assert.strictEqual(source._readableState.flowing, false);
-
-    srcCheckEventNames.forEach((eventName) => {
+    for (const eventName of srcCheckEventNames) {
       assert.strictEqual(
         source.listenerCount(eventName), 0,
         `source's '${eventName}' event listeners not removed`
       );
-    });
+    }
   });
 
   function checkDestCleanup(dest) {
@@ -72,13 +71,13 @@ assert.strictEqual(source._readableState.pipes.length, 0);
         'listener which is `unpipeChecker`'
       );
       dest.removeListener('unpipe', unpipeChecker);
-      destCheckEventNames.forEach((eventName) => {
+      for (const eventName of destCheckEventNames) {
         assert.strictEqual(
           dest.listenerCount(eventName), 0,
           `destination{${currentDestId}}'s '${eventName}' event ` +
           'listeners not removed'
         );
-      });
+      }
 
       if (--destCount === 0)
         checkSrcCleanup();
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-without-listenerCount.js b/tests/node_compat/test/parallel/test-stream-pipe-without-listenerCount.js
index 94bccd59f5b4ac..d5cdb57171f009 100644
--- a/tests/node_compat/test/parallel/test-stream-pipe-without-listenerCount.js
+++ b/tests/node_compat/test/parallel/test-stream-pipe-without-listenerCount.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-pipeline-async-iterator.js b/tests/node_compat/test/parallel/test-stream-pipeline-async-iterator.js
index 751c003b661c64..61c068e161cd98 100644
--- a/tests/node_compat/test/parallel/test-stream-pipeline-async-iterator.js
+++ b/tests/node_compat/test/parallel/test-stream-pipeline-async-iterator.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-pipeline-duplex.js b/tests/node_compat/test/parallel/test-stream-pipeline-duplex.js
index b2c0258fc9e2d5..cd3e6536a0391b 100644
--- a/tests/node_compat/test/parallel/test-stream-pipeline-duplex.js
+++ b/tests/node_compat/test/parallel/test-stream-pipeline-duplex.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-pipeline-listeners.js b/tests/node_compat/test/parallel/test-stream-pipeline-listeners.js
index 09ccc7ea47dda4..342784e722b31c 100644
--- a/tests/node_compat/test/parallel/test-stream-pipeline-listeners.js
+++ b/tests/node_compat/test/parallel/test-stream-pipeline-listeners.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-pipeline-queued-end-in-destroy.js b/tests/node_compat/test/parallel/test-stream-pipeline-queued-end-in-destroy.js
index 305c9f008b08e5..87027068139916 100644
--- a/tests/node_compat/test/parallel/test-stream-pipeline-queued-end-in-destroy.js
+++ b/tests/node_compat/test/parallel/test-stream-pipeline-queued-end-in-destroy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-pipeline-uncaught.js b/tests/node_compat/test/parallel/test-stream-pipeline-uncaught.js
index 77c409c9675b8b..4dd360a8547b4f 100644
--- a/tests/node_compat/test/parallel/test-stream-pipeline-uncaught.js
+++ b/tests/node_compat/test/parallel/test-stream-pipeline-uncaught.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-pipeline-with-empty-string.js b/tests/node_compat/test/parallel/test-stream-pipeline-with-empty-string.js
index d372c4ffa2a865..7ea4709050d1f1 100644
--- a/tests/node_compat/test/parallel/test-stream-pipeline-with-empty-string.js
+++ b/tests/node_compat/test/parallel/test-stream-pipeline-with-empty-string.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-push-order.js b/tests/node_compat/test/parallel/test-stream-push-order.js
index c0202df5422a18..33d3231c637f73 100644
--- a/tests/node_compat/test/parallel/test-stream-push-order.js
+++ b/tests/node_compat/test/parallel/test-stream-push-order.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream-push-strings.js b/tests/node_compat/test/parallel/test-stream-push-strings.js
index d98daadbd852ef..d6c956561d9550 100644
--- a/tests/node_compat/test/parallel/test-stream-push-strings.js
+++ b/tests/node_compat/test/parallel/test-stream-push-strings.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream-readable-aborted.js b/tests/node_compat/test/parallel/test-stream-readable-aborted.js
index 3f43426c613ab1..98f822167670e3 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-aborted.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-aborted.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-add-chunk-during-data.js b/tests/node_compat/test/parallel/test-stream-readable-add-chunk-during-data.js
index 5ae8f204692167..8a042ec0b786b7 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-add-chunk-during-data.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-add-chunk-during-data.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-constructor-set-methods.js b/tests/node_compat/test/parallel/test-stream-readable-constructor-set-methods.js
index 89bff31ce4dec5..82fb9419f26ca7 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-constructor-set-methods.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-constructor-set-methods.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-data.js b/tests/node_compat/test/parallel/test-stream-readable-data.js
index 391ded40d8615c..289a42f42638d2 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-data.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-data.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-destroy.js b/tests/node_compat/test/parallel/test-stream-readable-destroy.js
index ed0de9f85533dc..e88b93bd577361 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-destroy.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-destroy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-didRead.js b/tests/node_compat/test/parallel/test-stream-readable-didRead.js
index 17a6c683fbfc05..4b335f183161da 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-didRead.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-didRead.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-emit-readable-short-stream.js b/tests/node_compat/test/parallel/test-stream-readable-emit-readable-short-stream.js
index 4cb363fe8f3639..2bf02b80ea8de7 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-emit-readable-short-stream.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-emit-readable-short-stream.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-emittedReadable.js b/tests/node_compat/test/parallel/test-stream-readable-emittedReadable.js
index 5df4ceb8b47a38..99357819116276 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-emittedReadable.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-emittedReadable.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-end-destroyed.js b/tests/node_compat/test/parallel/test-stream-readable-end-destroyed.js
index 900f457c0cfbc9..dbb3da18270e37 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-end-destroyed.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-end-destroyed.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-ended.js b/tests/node_compat/test/parallel/test-stream-readable-ended.js
index 26c113d1e1bd8d..a5b837a48517a8 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-ended.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-ended.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-error-end.js b/tests/node_compat/test/parallel/test-stream-readable-error-end.js
index 2a56a35af4882a..628631609206b3 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-error-end.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-error-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-event.js b/tests/node_compat/test/parallel/test-stream-readable-event.js
index 11ff7e51f01bcb..c2c7c90e0fd067 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-event.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-event.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream-readable-flow-recursion.js b/tests/node_compat/test/parallel/test-stream-readable-flow-recursion.js
index cebc1af3abfe5b..38c446c393caa7 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-flow-recursion.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-flow-recursion.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream-readable-hwm-0-async.js b/tests/node_compat/test/parallel/test-stream-readable-hwm-0-async.js
index 641ed53e0c0535..80e030de26f92c 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-hwm-0-async.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-hwm-0-async.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-hwm-0-no-flow-data.js b/tests/node_compat/test/parallel/test-stream-readable-hwm-0-no-flow-data.js
index 1e4d48cd059844..c021bf11ab0975 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-hwm-0-no-flow-data.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-hwm-0-no-flow-data.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-hwm-0.js b/tests/node_compat/test/parallel/test-stream-readable-hwm-0.js
index c16ce1e95d9f1d..7576d0b049f3af 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-hwm-0.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-hwm-0.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-infinite-read.js b/tests/node_compat/test/parallel/test-stream-readable-infinite-read.js
index 2fab34f49aeb07..faf9e9542c113b 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-infinite-read.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-infinite-read.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -14,6 +14,7 @@ const { Readable } = require('stream');
 const buf = Buffer.alloc(8192);
 
 const readable = new Readable({
+  highWaterMark: 16 * 1024,
   read: common.mustCall(function() {
     this.push(buf);
   }, 31)
diff --git a/tests/node_compat/test/parallel/test-stream-readable-invalid-chunk.js b/tests/node_compat/test/parallel/test-stream-readable-invalid-chunk.js
index 225587e8c1d12d..629133655cf80b 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-invalid-chunk.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-invalid-chunk.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-needReadable.js b/tests/node_compat/test/parallel/test-stream-readable-needReadable.js
index 1d82a50520be9d..d4ef8609c8caf5 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-needReadable.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-needReadable.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-next-no-null.js b/tests/node_compat/test/parallel/test-stream-readable-next-no-null.js
index da026d98921864..4f828f8029a820 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-next-no-null.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-next-no-null.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-no-unneeded-readable.js b/tests/node_compat/test/parallel/test-stream-readable-no-unneeded-readable.js
index f6f7ef292efe45..c88e11df714eb1 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-no-unneeded-readable.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-no-unneeded-readable.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-object-multi-push-async.js b/tests/node_compat/test/parallel/test-stream-readable-object-multi-push-async.js
index ba4d932946d8b9..087dd80b5c2f7a 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-object-multi-push-async.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-object-multi-push-async.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-pause-and-resume.js b/tests/node_compat/test/parallel/test-stream-readable-pause-and-resume.js
index 1e6cf4410e2a84..1ba62b7e2dcfb5 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-pause-and-resume.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-pause-and-resume.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-readable-then-resume.js b/tests/node_compat/test/parallel/test-stream-readable-readable-then-resume.js
index 3626f31bdd66fd..4bb8c5460ebdb3 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-readable-then-resume.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-readable-then-resume.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-readable.js b/tests/node_compat/test/parallel/test-stream-readable-readable.js
index 6e052754317fb2..793e89c5dd937a 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-readable.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-readable.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-reading-readingMore.js b/tests/node_compat/test/parallel/test-stream-readable-reading-readingMore.js
index cf8afaf327129b..319db6f467b86f 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-reading-readingMore.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-reading-readingMore.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-resume-hwm.js b/tests/node_compat/test/parallel/test-stream-readable-resume-hwm.js
index 20735923620f11..299a43fc456d0c 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-resume-hwm.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-resume-hwm.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-resumeScheduled.js b/tests/node_compat/test/parallel/test-stream-readable-resumeScheduled.js
index 2615b662c20f36..d59e3f31664d03 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-resumeScheduled.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-resumeScheduled.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-setEncoding-existing-buffers.js b/tests/node_compat/test/parallel/test-stream-readable-setEncoding-existing-buffers.js
index 2e936cf8baa580..116fd780aa6d0a 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-setEncoding-existing-buffers.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-setEncoding-existing-buffers.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-setEncoding-null.js b/tests/node_compat/test/parallel/test-stream-readable-setEncoding-null.js
index 590714c8cb974a..2c3ac214143c88 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-setEncoding-null.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-setEncoding-null.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-strategy-option.js b/tests/node_compat/test/parallel/test-stream-readable-strategy-option.js
index 2c8712ee51ac26..1dece801277059 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-strategy-option.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-strategy-option.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-unpipe-resume.js b/tests/node_compat/test/parallel/test-stream-readable-unpipe-resume.js
index f8ff846afaebc0..2ed896a39cbc8f 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-unpipe-resume.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-unpipe-resume.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-unshift.js b/tests/node_compat/test/parallel/test-stream-readable-unshift.js
index e7678eea4a7eae..1658d80f8fb43d 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-unshift.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-unshift.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readable-with-unimplemented-_read.js b/tests/node_compat/test/parallel/test-stream-readable-with-unimplemented-_read.js
index 24ae96af8e6989..45007a0b0f7b0d 100644
--- a/tests/node_compat/test/parallel/test-stream-readable-with-unimplemented-_read.js
+++ b/tests/node_compat/test/parallel/test-stream-readable-with-unimplemented-_read.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-readableListening-state.js b/tests/node_compat/test/parallel/test-stream-readableListening-state.js
index 9554387c43e524..7f14a9d309aa67 100644
--- a/tests/node_compat/test/parallel/test-stream-readableListening-state.js
+++ b/tests/node_compat/test/parallel/test-stream-readableListening-state.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-reduce.js b/tests/node_compat/test/parallel/test-stream-reduce.js
index e0ec0f26d99596..5d8fcb1a7a4351 100644
--- a/tests/node_compat/test/parallel/test-stream-reduce.js
+++ b/tests/node_compat/test/parallel/test-stream-reduce.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -68,8 +68,8 @@ function sum(p, c) {
         throw new Error('boom');
       }
       return c;
-    }, 0)
-  , /boom/).then(common.mustCall());
+    }, 0),
+                 /boom/).then(common.mustCall());
 }
 
 {
diff --git a/tests/node_compat/test/parallel/test-stream-toArray.js b/tests/node_compat/test/parallel/test-stream-toArray.js
index 514c03112a9c74..7af20c6f7fca84 100644
--- a/tests/node_compat/test/parallel/test-stream-toArray.js
+++ b/tests/node_compat/test/parallel/test-stream-toArray.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-toWeb-allows-server-response.js b/tests/node_compat/test/parallel/test-stream-toWeb-allows-server-response.js
index 656013d89d1c68..4cf0975ead675b 100644
--- a/tests/node_compat/test/parallel/test-stream-toWeb-allows-server-response.js
+++ b/tests/node_compat/test/parallel/test-stream-toWeb-allows-server-response.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-transform-callback-twice.js b/tests/node_compat/test/parallel/test-stream-transform-callback-twice.js
index 47a48c8322b894..d851d25bff66ea 100644
--- a/tests/node_compat/test/parallel/test-stream-transform-callback-twice.js
+++ b/tests/node_compat/test/parallel/test-stream-transform-callback-twice.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-transform-constructor-set-methods.js b/tests/node_compat/test/parallel/test-stream-transform-constructor-set-methods.js
index 6c47b2445295c0..f7aab6fff5179f 100644
--- a/tests/node_compat/test/parallel/test-stream-transform-constructor-set-methods.js
+++ b/tests/node_compat/test/parallel/test-stream-transform-constructor-set-methods.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-transform-final-sync.js b/tests/node_compat/test/parallel/test-stream-transform-final-sync.js
index 5ff0e2177c118a..9998a5a1477be1 100644
--- a/tests/node_compat/test/parallel/test-stream-transform-final-sync.js
+++ b/tests/node_compat/test/parallel/test-stream-transform-final-sync.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-transform-final.js b/tests/node_compat/test/parallel/test-stream-transform-final.js
index e2f01188fd22ae..d8c92b62fd6e30 100644
--- a/tests/node_compat/test/parallel/test-stream-transform-final.js
+++ b/tests/node_compat/test/parallel/test-stream-transform-final.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-transform-flush-data.js b/tests/node_compat/test/parallel/test-stream-transform-flush-data.js
index 33c77475472d2c..7083439dcb20de 100644
--- a/tests/node_compat/test/parallel/test-stream-transform-flush-data.js
+++ b/tests/node_compat/test/parallel/test-stream-transform-flush-data.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-transform-hwm0.js b/tests/node_compat/test/parallel/test-stream-transform-hwm0.js
index dad67ae4a07b0c..d21cbef38d6411 100644
--- a/tests/node_compat/test/parallel/test-stream-transform-hwm0.js
+++ b/tests/node_compat/test/parallel/test-stream-transform-hwm0.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-transform-objectmode-falsey-value.js b/tests/node_compat/test/parallel/test-stream-transform-objectmode-falsey-value.js
index 571fa74d18e996..e960bc44f48ce0 100644
--- a/tests/node_compat/test/parallel/test-stream-transform-objectmode-falsey-value.js
+++ b/tests/node_compat/test/parallel/test-stream-transform-objectmode-falsey-value.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream-uint8array.js b/tests/node_compat/test/parallel/test-stream-uint8array.js
index 8820b4f79c885f..61ed4440a0582e 100644
--- a/tests/node_compat/test/parallel/test-stream-uint8array.js
+++ b/tests/node_compat/test/parallel/test-stream-uint8array.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-unpipe-event.js b/tests/node_compat/test/parallel/test-stream-unpipe-event.js
index 31cedc514cf3f4..ccb0639bfcbdf2 100644
--- a/tests/node_compat/test/parallel/test-stream-unpipe-event.js
+++ b/tests/node_compat/test/parallel/test-stream-unpipe-event.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-unshift-empty-chunk.js b/tests/node_compat/test/parallel/test-stream-unshift-empty-chunk.js
index e9d8ab81a6c904..da85f14ce34c7f 100644
--- a/tests/node_compat/test/parallel/test-stream-unshift-empty-chunk.js
+++ b/tests/node_compat/test/parallel/test-stream-unshift-empty-chunk.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream-unshift-read-race.js b/tests/node_compat/test/parallel/test-stream-unshift-read-race.js
index 771e3f98acbd80..105b83b49753d6 100644
--- a/tests/node_compat/test/parallel/test-stream-unshift-read-race.js
+++ b/tests/node_compat/test/parallel/test-stream-unshift-read-race.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream-writable-aborted.js b/tests/node_compat/test/parallel/test-stream-writable-aborted.js
index 55daa9f213db17..ffc1bf5b3f3e59 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-aborted.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-aborted.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-change-default-encoding.js b/tests/node_compat/test/parallel/test-stream-writable-change-default-encoding.js
index 555e1924dcff47..d14ef3a077aaf4 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-change-default-encoding.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-change-default-encoding.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream-writable-clear-buffer.js b/tests/node_compat/test/parallel/test-stream-writable-clear-buffer.js
index 3d80c8723463e8..779cbcd7118af9 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-clear-buffer.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-clear-buffer.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-constructor-set-methods.js b/tests/node_compat/test/parallel/test-stream-writable-constructor-set-methods.js
index c1dda3adc5fd9e..888830a04e790f 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-constructor-set-methods.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-constructor-set-methods.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-decoded-encoding.js b/tests/node_compat/test/parallel/test-stream-writable-decoded-encoding.js
index d488408262ac94..6a519226662511 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-decoded-encoding.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-decoded-encoding.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream-writable-end-cb-error.js b/tests/node_compat/test/parallel/test-stream-writable-end-cb-error.js
index 3d15d8700d4dc1..f04d06098aa245 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-end-cb-error.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-end-cb-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-end-cb-uncaught.js b/tests/node_compat/test/parallel/test-stream-writable-end-cb-uncaught.js
index 40ef4e274c314c..1a070b425085b1 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-end-cb-uncaught.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-end-cb-uncaught.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-end-multiple.js b/tests/node_compat/test/parallel/test-stream-writable-end-multiple.js
index 999f1402daea05..7679bab74755f5 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-end-multiple.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-end-multiple.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-ended-state.js b/tests/node_compat/test/parallel/test-stream-writable-ended-state.js
index 369fb9b16d8e03..8ec9e1a267ee32 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-ended-state.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-ended-state.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-final-async.js b/tests/node_compat/test/parallel/test-stream-writable-final-async.js
index 139471f980402e..69f0e1eeee5a52 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-final-async.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-final-async.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-final-destroy.js b/tests/node_compat/test/parallel/test-stream-writable-final-destroy.js
index 30868200f104e4..ddcb8eecedd664 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-final-destroy.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-final-destroy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-final-throw.js b/tests/node_compat/test/parallel/test-stream-writable-final-throw.js
index f0ec090b779087..fed1e02da611cb 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-final-throw.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-final-throw.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-finish-destroyed.js b/tests/node_compat/test/parallel/test-stream-writable-finish-destroyed.js
index 8ce5d29a9cff08..4cf31cd45ae819 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-finish-destroyed.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-finish-destroyed.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-finished-state.js b/tests/node_compat/test/parallel/test-stream-writable-finished-state.js
index b46b760e8b0e20..12e8a007024a70 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-finished-state.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-finished-state.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-finished.js b/tests/node_compat/test/parallel/test-stream-writable-finished.js
index 07b54233b82868..980fb0e271587d 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-finished.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-finished.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-invalid-chunk.js b/tests/node_compat/test/parallel/test-stream-writable-invalid-chunk.js
index b9e90c33784c2c..e2b8fb11bb0171 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-invalid-chunk.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-invalid-chunk.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-needdrain-state.js b/tests/node_compat/test/parallel/test-stream-writable-needdrain-state.js
index b456de29531d2f..00a2ac2ad83558 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-needdrain-state.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-needdrain-state.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-null.js b/tests/node_compat/test/parallel/test-stream-writable-null.js
index 57f2188c1e7255..b287adb6c177e2 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-null.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-null.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-properties.js b/tests/node_compat/test/parallel/test-stream-writable-properties.js
index b7283383a1b2fd..e61bd5cc4ab8ab 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-properties.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-properties.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-writable.js b/tests/node_compat/test/parallel/test-stream-writable-writable.js
index 274e6872a04937..87229b266c0868 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-writable.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-writable.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-write-cb-error.js b/tests/node_compat/test/parallel/test-stream-writable-write-cb-error.js
index c4efbd2ddbd385..2d74fe0d2bc64d 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-write-cb-error.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-write-cb-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-write-cb-twice.js b/tests/node_compat/test/parallel/test-stream-writable-write-cb-twice.js
index f862ecf0eacbe2..b7a33b667a7a8e 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-write-cb-twice.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-write-cb-twice.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-write-error.js b/tests/node_compat/test/parallel/test-stream-writable-write-error.js
index 2013a68fab84d1..6501adec56eae9 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-write-error.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-write-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writable-write-writev-finish.js b/tests/node_compat/test/parallel/test-stream-writable-write-writev-finish.js
index d32dfae6ed5b85..ad70d2d18a55fc 100644
--- a/tests/node_compat/test/parallel/test-stream-writable-write-writev-finish.js
+++ b/tests/node_compat/test/parallel/test-stream-writable-write-writev-finish.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writableState-ending.js b/tests/node_compat/test/parallel/test-stream-writableState-ending.js
index ebb1146ce2d60d..282f26365d5fd7 100644
--- a/tests/node_compat/test/parallel/test-stream-writableState-ending.js
+++ b/tests/node_compat/test/parallel/test-stream-writableState-ending.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writableState-uncorked-bufferedRequestCount.js b/tests/node_compat/test/parallel/test-stream-writableState-uncorked-bufferedRequestCount.js
index f0a246ac134922..3c8599007456ca 100644
--- a/tests/node_compat/test/parallel/test-stream-writableState-uncorked-bufferedRequestCount.js
+++ b/tests/node_compat/test/parallel/test-stream-writableState-uncorked-bufferedRequestCount.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-write-destroy.js b/tests/node_compat/test/parallel/test-stream-write-destroy.js
index ee03edb483d68e..e1f731454e8987 100644
--- a/tests/node_compat/test/parallel/test-stream-write-destroy.js
+++ b/tests/node_compat/test/parallel/test-stream-write-destroy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-write-drain.js b/tests/node_compat/test/parallel/test-stream-write-drain.js
index c23f33e188221e..3b86e230b8a035 100644
--- a/tests/node_compat/test/parallel/test-stream-write-drain.js
+++ b/tests/node_compat/test/parallel/test-stream-write-drain.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-write-final.js b/tests/node_compat/test/parallel/test-stream-write-final.js
index 2466da0f9943c9..92fd43a5db7adc 100644
--- a/tests/node_compat/test/parallel/test-stream-write-final.js
+++ b/tests/node_compat/test/parallel/test-stream-write-final.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream-writev.js b/tests/node_compat/test/parallel/test-stream-writev.js
index db6031897b368c..8f4cd4662e4f61 100644
--- a/tests/node_compat/test/parallel/test-stream-writev.js
+++ b/tests/node_compat/test/parallel/test-stream-writev.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-base64-single-char-read-end.js b/tests/node_compat/test/parallel/test-stream2-base64-single-char-read-end.js
index d59d56ec2a9268..eb3c1fde5193c7 100644
--- a/tests/node_compat/test/parallel/test-stream2-base64-single-char-read-end.js
+++ b/tests/node_compat/test/parallel/test-stream2-base64-single-char-read-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-basic.js b/tests/node_compat/test/parallel/test-stream2-basic.js
index 07942ca300d043..2085808e553e1e 100644
--- a/tests/node_compat/test/parallel/test-stream2-basic.js
+++ b/tests/node_compat/test/parallel/test-stream2-basic.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-compatibility.js b/tests/node_compat/test/parallel/test-stream2-compatibility.js
index 4b3eb67e79c94b..de094d2afa4fb3 100644
--- a/tests/node_compat/test/parallel/test-stream2-compatibility.js
+++ b/tests/node_compat/test/parallel/test-stream2-compatibility.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-decode-partial.js b/tests/node_compat/test/parallel/test-stream2-decode-partial.js
index 9143ea73c3fc71..ade50145a54e7c 100644
--- a/tests/node_compat/test/parallel/test-stream2-decode-partial.js
+++ b/tests/node_compat/test/parallel/test-stream2-decode-partial.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream2-finish-pipe-error.js b/tests/node_compat/test/parallel/test-stream2-finish-pipe-error.js
index 3a0b820b4d7cff..a86ed922a7e723 100644
--- a/tests/node_compat/test/parallel/test-stream2-finish-pipe-error.js
+++ b/tests/node_compat/test/parallel/test-stream2-finish-pipe-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream2-finish-pipe.js b/tests/node_compat/test/parallel/test-stream2-finish-pipe.js
index 22f17a43558dc9..322743e2443c8c 100644
--- a/tests/node_compat/test/parallel/test-stream2-finish-pipe.js
+++ b/tests/node_compat/test/parallel/test-stream2-finish-pipe.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-large-read-stall.js b/tests/node_compat/test/parallel/test-stream2-large-read-stall.js
index aeefcf21a292fe..0d9c5a6716a242 100644
--- a/tests/node_compat/test/parallel/test-stream2-large-read-stall.js
+++ b/tests/node_compat/test/parallel/test-stream2-large-read-stall.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -52,11 +52,11 @@ r.on('readable', function() {
   do {
     console.error(`  > read(${READSIZE})`);
     ret = r.read(READSIZE);
-    console.error(`  < ${ret && ret.length} (${rs.length} remain)`);
+    console.error(`  < ${ret?.length} (${rs.length} remain)`);
   } while (ret && ret.length === READSIZE);
 
   console.error('<< after read()',
-                ret && ret.length,
+                ret?.length,
                 rs.needReadable,
                 rs.length);
 });
diff --git a/tests/node_compat/test/parallel/test-stream2-objects.js b/tests/node_compat/test/parallel/test-stream2-objects.js
index 68340e0e54ed4c..68667fc5f0a362 100644
--- a/tests/node_compat/test/parallel/test-stream2-objects.js
+++ b/tests/node_compat/test/parallel/test-stream2-objects.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-pipe-error-handling.js b/tests/node_compat/test/parallel/test-stream2-pipe-error-handling.js
index 1591f6f4e900bd..172d119789a108 100644
--- a/tests/node_compat/test/parallel/test-stream2-pipe-error-handling.js
+++ b/tests/node_compat/test/parallel/test-stream2-pipe-error-handling.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-pipe-error-once-listener.js b/tests/node_compat/test/parallel/test-stream2-pipe-error-once-listener.js
index b9d67cd75ec1fa..560c9a1690232d 100644
--- a/tests/node_compat/test/parallel/test-stream2-pipe-error-once-listener.js
+++ b/tests/node_compat/test/parallel/test-stream2-pipe-error-once-listener.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-push.js b/tests/node_compat/test/parallel/test-stream2-push.js
index 4cb54a01fd0715..5b38a1b7d59240 100644
--- a/tests/node_compat/test/parallel/test-stream2-push.js
+++ b/tests/node_compat/test/parallel/test-stream2-push.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-read-sync-stack.js b/tests/node_compat/test/parallel/test-stream2-read-sync-stack.js
index 0aa654c70d7f55..d06d8632dfc50d 100644
--- a/tests/node_compat/test/parallel/test-stream2-read-sync-stack.js
+++ b/tests/node_compat/test/parallel/test-stream2-read-sync-stack.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-readable-empty-buffer-no-eof.js b/tests/node_compat/test/parallel/test-stream2-readable-empty-buffer-no-eof.js
index 806f958d8e01d5..cf85328d0b4a2a 100644
--- a/tests/node_compat/test/parallel/test-stream2-readable-empty-buffer-no-eof.js
+++ b/tests/node_compat/test/parallel/test-stream2-readable-empty-buffer-no-eof.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-readable-legacy-drain.js b/tests/node_compat/test/parallel/test-stream2-readable-legacy-drain.js
index 8c3de539880ec1..64034958f7d236 100644
--- a/tests/node_compat/test/parallel/test-stream2-readable-legacy-drain.js
+++ b/tests/node_compat/test/parallel/test-stream2-readable-legacy-drain.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-readable-non-empty-end.js b/tests/node_compat/test/parallel/test-stream2-readable-non-empty-end.js
index be14a8983a3d95..16d6c57a61e8f8 100644
--- a/tests/node_compat/test/parallel/test-stream2-readable-non-empty-end.js
+++ b/tests/node_compat/test/parallel/test-stream2-readable-non-empty-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-readable-wrap-destroy.js b/tests/node_compat/test/parallel/test-stream2-readable-wrap-destroy.js
index 6c24765e0d764f..473a4a3f5197bc 100644
--- a/tests/node_compat/test/parallel/test-stream2-readable-wrap-destroy.js
+++ b/tests/node_compat/test/parallel/test-stream2-readable-wrap-destroy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream2-readable-wrap-empty.js b/tests/node_compat/test/parallel/test-stream2-readable-wrap-empty.js
index eeb2d79ac42102..e979d951b5622c 100644
--- a/tests/node_compat/test/parallel/test-stream2-readable-wrap-empty.js
+++ b/tests/node_compat/test/parallel/test-stream2-readable-wrap-empty.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-readable-wrap-error.js b/tests/node_compat/test/parallel/test-stream2-readable-wrap-error.js
index 56d80b54a6b020..8481c01b6cf686 100644
--- a/tests/node_compat/test/parallel/test-stream2-readable-wrap-error.js
+++ b/tests/node_compat/test/parallel/test-stream2-readable-wrap-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream2-readable-wrap.js b/tests/node_compat/test/parallel/test-stream2-readable-wrap.js
index 07e4569eb54c54..c52e4397a78078 100644
--- a/tests/node_compat/test/parallel/test-stream2-readable-wrap.js
+++ b/tests/node_compat/test/parallel/test-stream2-readable-wrap.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-set-encoding.js b/tests/node_compat/test/parallel/test-stream2-set-encoding.js
index 3304f0ec47ecd5..06c8d334e30f9a 100644
--- a/tests/node_compat/test/parallel/test-stream2-set-encoding.js
+++ b/tests/node_compat/test/parallel/test-stream2-set-encoding.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-transform.js b/tests/node_compat/test/parallel/test-stream2-transform.js
index ebca5d33f31ace..84a500068f48b7 100644
--- a/tests/node_compat/test/parallel/test-stream2-transform.js
+++ b/tests/node_compat/test/parallel/test-stream2-transform.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -220,9 +220,7 @@ const { PassThrough, Transform } = require('stream');
   pt.state = '';
 
   pt._transform = function(chunk, encoding, cb) {
-    if (!chunk)
-      chunk = '';
-    const s = chunk.toString();
+    const s = (chunk ||= '').toString();
     setTimeout(() => {
       this.state += s.charAt(0);
       if (this.state.length === 3) {
@@ -420,11 +418,11 @@ const { PassThrough, Transform } = require('stream');
     ended = true;
   });
 
-  objects.forEach(function(obj) {
+  for (const obj of objects) {
     jp.write(JSON.stringify(obj));
     const res = jp.read();
     assert.deepStrictEqual(res, obj);
-  });
+  }
 
   jp.end();
   // Read one more time to get the 'end' event
@@ -461,11 +459,11 @@ const { PassThrough, Transform } = require('stream');
     ended = true;
   });
 
-  objects.forEach(function(obj) {
+  for (const obj of objects) {
     js.write(obj);
     const res = js.read();
     assert.strictEqual(res, JSON.stringify(obj));
-  });
+  }
 
   js.end();
   // Read one more time to get the 'end' event
diff --git a/tests/node_compat/test/parallel/test-stream2-unpipe-drain.js b/tests/node_compat/test/parallel/test-stream2-unpipe-drain.js
index 2e7eb2713fd573..5a8fe3b54b1b51 100644
--- a/tests/node_compat/test/parallel/test-stream2-unpipe-drain.js
+++ b/tests/node_compat/test/parallel/test-stream2-unpipe-drain.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-unpipe-leak.js b/tests/node_compat/test/parallel/test-stream2-unpipe-leak.js
index d9b42ad9a86026..54e528310cee4d 100644
--- a/tests/node_compat/test/parallel/test-stream2-unpipe-leak.js
+++ b/tests/node_compat/test/parallel/test-stream2-unpipe-leak.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream2-writable.js b/tests/node_compat/test/parallel/test-stream2-writable.js
index 0145257a33de24..46593e50f98fb8 100644
--- a/tests/node_compat/test/parallel/test-stream2-writable.js
+++ b/tests/node_compat/test/parallel/test-stream2-writable.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream3-cork-end.js b/tests/node_compat/test/parallel/test-stream3-cork-end.js
index 5453a56169e4ac..5aba2fc11d860c 100644
--- a/tests/node_compat/test/parallel/test-stream3-cork-end.js
+++ b/tests/node_compat/test/parallel/test-stream3-cork-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream3-cork-uncork.js b/tests/node_compat/test/parallel/test-stream3-cork-uncork.js
index 4b0ae805354a37..1efd56d15da883 100644
--- a/tests/node_compat/test/parallel/test-stream3-cork-uncork.js
+++ b/tests/node_compat/test/parallel/test-stream3-cork-uncork.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-stream3-pause-then-read.js b/tests/node_compat/test/parallel/test-stream3-pause-then-read.js
index 2a3bdf4bf0d76e..62e02726f2511f 100644
--- a/tests/node_compat/test/parallel/test-stream3-pause-then-read.js
+++ b/tests/node_compat/test/parallel/test-stream3-pause-then-read.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stream3-pipeline-async-iterator.js b/tests/node_compat/test/parallel/test-stream3-pipeline-async-iterator.js
index 6b22012769286a..47182274c5ea14 100644
--- a/tests/node_compat/test/parallel/test-stream3-pipeline-async-iterator.js
+++ b/tests/node_compat/test/parallel/test-stream3-pipeline-async-iterator.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 /* eslint-disable node-core/require-common-first, require-yield */
diff --git a/tests/node_compat/test/parallel/test-streams-highwatermark.js b/tests/node_compat/test/parallel/test-streams-highwatermark.js
index 451311c2c53475..4fab4095597645 100644
--- a/tests/node_compat/test/parallel/test-streams-highwatermark.js
+++ b/tests/node_compat/test/parallel/test-streams-highwatermark.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -92,3 +92,27 @@ const { inspect } = require('util');
              hwm,
   }));
 }
+
+{
+  const res = [];
+  const r = new stream.Readable({
+    read() {},
+  });
+  const w = new stream.Writable({
+    highWaterMark: 0,
+    write(chunk, encoding, callback) {
+      res.push(chunk.toString());
+      callback();
+    },
+  });
+
+  r.pipe(w);
+  r.push('a');
+  r.push('b');
+  r.push('c');
+  r.push(null);
+
+  r.on('end', common.mustCall(() => {
+    assert.deepStrictEqual(res, ['a', 'b', 'c']);
+  }));
+}
diff --git a/tests/node_compat/test/parallel/test-string-decoder.js b/tests/node_compat/test/parallel/test-string-decoder.js
index ee7b40d855065c..d5eef83bdeb1d3 100644
--- a/tests/node_compat/test/parallel/test-string-decoder.js
+++ b/tests/node_compat/test/parallel/test-string-decoder.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-stringbytes-external.js b/tests/node_compat/test/parallel/test-stringbytes-external.js
index 78f3c8608f4e16..6287fdb22c0017 100644
--- a/tests/node_compat/test/parallel/test-stringbytes-external.js
+++ b/tests/node_compat/test/parallel/test-stringbytes-external.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-sync-fileread.js b/tests/node_compat/test/parallel/test-sync-fileread.js
index 5d7633986737c3..a1e3ff339bf471 100644
--- a/tests/node_compat/test/parallel/test-sync-fileread.js
+++ b/tests/node_compat/test/parallel/test-sync-fileread.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-sys.js b/tests/node_compat/test/parallel/test-sys.js
index 284d622ba454e7..49e79c6e7e4f7c 100644
--- a/tests/node_compat/test/parallel/test-sys.js
+++ b/tests/node_compat/test/parallel/test-sys.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-tick-processor-arguments.js b/tests/node_compat/test/parallel/test-tick-processor-arguments.js
index 3ece0fe78db73f..893cef3382e69e 100644
--- a/tests/node_compat/test/parallel/test-tick-processor-arguments.js
+++ b/tests/node_compat/test/parallel/test-tick-processor-arguments.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-timers-api-refs.js b/tests/node_compat/test/parallel/test-timers-api-refs.js
index ccbe58eafa216f..b33a474b1cd9d8 100644
--- a/tests/node_compat/test/parallel/test-timers-api-refs.js
+++ b/tests/node_compat/test/parallel/test-timers-api-refs.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -11,12 +11,12 @@ const timers = require('timers');
 
 // Delete global APIs to make sure they're not relied on by the internal timers
 // code
-delete global.setTimeout;
-delete global.clearTimeout;
-delete global.setInterval;
-delete global.clearInterval;
-delete global.setImmediate;
-delete global.clearImmediate;
+delete globalThis.setTimeout;
+delete globalThis.clearTimeout;
+delete globalThis.setInterval;
+delete globalThis.clearInterval;
+delete globalThis.setImmediate;
+delete globalThis.clearImmediate;
 
 const timeoutCallback = () => { timers.clearTimeout(timeout); };
 const timeout = timers.setTimeout(common.mustCall(timeoutCallback), 1);
diff --git a/tests/node_compat/test/parallel/test-timers-args.js b/tests/node_compat/test/parallel/test-timers-args.js
index c987830e22fe85..2b273c8fbf28fc 100644
--- a/tests/node_compat/test/parallel/test-timers-args.js
+++ b/tests/node_compat/test/parallel/test-timers-args.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-timers-clear-null-does-not-throw-error.js b/tests/node_compat/test/parallel/test-timers-clear-null-does-not-throw-error.js
index 102f04a1e6e238..7e657a52cecaf6 100644
--- a/tests/node_compat/test/parallel/test-timers-clear-null-does-not-throw-error.js
+++ b/tests/node_compat/test/parallel/test-timers-clear-null-does-not-throw-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-timers-clear-object-does-not-throw-error.js b/tests/node_compat/test/parallel/test-timers-clear-object-does-not-throw-error.js
index 89a3cc696e2fb3..5b1591e95e3447 100644
--- a/tests/node_compat/test/parallel/test-timers-clear-object-does-not-throw-error.js
+++ b/tests/node_compat/test/parallel/test-timers-clear-object-does-not-throw-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-timers-clear-timeout-interval-equivalent.js b/tests/node_compat/test/parallel/test-timers-clear-timeout-interval-equivalent.js
index 4de5b8a2187c68..a5cd2912449395 100644
--- a/tests/node_compat/test/parallel/test-timers-clear-timeout-interval-equivalent.js
+++ b/tests/node_compat/test/parallel/test-timers-clear-timeout-interval-equivalent.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-timers-clearImmediate-als.js b/tests/node_compat/test/parallel/test-timers-clearImmediate-als.js
index b9a7d9a4d7eb9d..704d63f210af1c 100644
--- a/tests/node_compat/test/parallel/test-timers-clearImmediate-als.js
+++ b/tests/node_compat/test/parallel/test-timers-clearImmediate-als.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-timers-clearImmediate.js b/tests/node_compat/test/parallel/test-timers-clearImmediate.js
index 60dfeba4b93d5c..ea29c4eba0cff5 100644
--- a/tests/node_compat/test/parallel/test-timers-clearImmediate.js
+++ b/tests/node_compat/test/parallel/test-timers-clearImmediate.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-timers-immediate-queue.js b/tests/node_compat/test/parallel/test-timers-immediate-queue.js
index 9a025624f3b93a..4242a602359b33 100644
--- a/tests/node_compat/test/parallel/test-timers-immediate-queue.js
+++ b/tests/node_compat/test/parallel/test-timers-immediate-queue.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -59,6 +59,5 @@ for (let i = 0; i < QUEUE; i++)
   setImmediate(run);
 
 process.on('exit', function() {
-  console.log('hit', hit);
   assert.strictEqual(hit, QUEUE);
 });
diff --git a/tests/node_compat/test/parallel/test-timers-immediate.js b/tests/node_compat/test/parallel/test-timers-immediate.js
index 847901146c156b..aeb1d8e0e535e4 100644
--- a/tests/node_compat/test/parallel/test-timers-immediate.js
+++ b/tests/node_compat/test/parallel/test-timers-immediate.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-timers-interval-throw.js b/tests/node_compat/test/parallel/test-timers-interval-throw.js
index 1411e10155f578..d2ed5ff5ef3940 100644
--- a/tests/node_compat/test/parallel/test-timers-interval-throw.js
+++ b/tests/node_compat/test/parallel/test-timers-interval-throw.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-timers-non-integer-delay.js b/tests/node_compat/test/parallel/test-timers-non-integer-delay.js
index 8cc292a98d26d7..e24fdded7c736e 100644
--- a/tests/node_compat/test/parallel/test-timers-non-integer-delay.js
+++ b/tests/node_compat/test/parallel/test-timers-non-integer-delay.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-timers-refresh-in-callback.js b/tests/node_compat/test/parallel/test-timers-refresh-in-callback.js
index 8267eff10cf2be..72f8fe2465c4b7 100644
--- a/tests/node_compat/test/parallel/test-timers-refresh-in-callback.js
+++ b/tests/node_compat/test/parallel/test-timers-refresh-in-callback.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-timers-refresh.js b/tests/node_compat/test/parallel/test-timers-refresh.js
index 8a5d95a4e6be3b..1d465f14dc84ad 100644
--- a/tests/node_compat/test/parallel/test-timers-refresh.js
+++ b/tests/node_compat/test/parallel/test-timers-refresh.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-timers-same-timeout-wrong-list-deleted.js b/tests/node_compat/test/parallel/test-timers-same-timeout-wrong-list-deleted.js
index 358f4a38f829d7..c1f720bb24a4a4 100644
--- a/tests/node_compat/test/parallel/test-timers-same-timeout-wrong-list-deleted.js
+++ b/tests/node_compat/test/parallel/test-timers-same-timeout-wrong-list-deleted.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-timers-setimmediate-infinite-loop.js b/tests/node_compat/test/parallel/test-timers-setimmediate-infinite-loop.js
index bf269db64f90cd..5a5dea3d6c9a6a 100644
--- a/tests/node_compat/test/parallel/test-timers-setimmediate-infinite-loop.js
+++ b/tests/node_compat/test/parallel/test-timers-setimmediate-infinite-loop.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-timers-socket-timeout-removes-other-socket-unref-timer.js b/tests/node_compat/test/parallel/test-timers-socket-timeout-removes-other-socket-unref-timer.js
index 80658b4d6784e6..586055188cee8b 100644
--- a/tests/node_compat/test/parallel/test-timers-socket-timeout-removes-other-socket-unref-timer.js
+++ b/tests/node_compat/test/parallel/test-timers-socket-timeout-removes-other-socket-unref-timer.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-timers-timeout-with-non-integer.js b/tests/node_compat/test/parallel/test-timers-timeout-with-non-integer.js
index 3bce7f9d213625..38c8c6091d5e89 100644
--- a/tests/node_compat/test/parallel/test-timers-timeout-with-non-integer.js
+++ b/tests/node_compat/test/parallel/test-timers-timeout-with-non-integer.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-timers-uncaught-exception.js b/tests/node_compat/test/parallel/test-timers-uncaught-exception.js
index 9b3567ab71c092..8573a68ad1898d 100644
--- a/tests/node_compat/test/parallel/test-timers-uncaught-exception.js
+++ b/tests/node_compat/test/parallel/test-timers-uncaught-exception.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-timers-unref-throw-then-ref.js b/tests/node_compat/test/parallel/test-timers-unref-throw-then-ref.js
index 2c98a13eb1bef6..7be3496405200e 100644
--- a/tests/node_compat/test/parallel/test-timers-unref-throw-then-ref.js
+++ b/tests/node_compat/test/parallel/test-timers-unref-throw-then-ref.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-timers-unref.js b/tests/node_compat/test/parallel/test-timers-unref.js
index ca4145d3ef0376..cea5d3333fa2b1 100644
--- a/tests/node_compat/test/parallel/test-timers-unref.js
+++ b/tests/node_compat/test/parallel/test-timers-unref.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -79,7 +79,7 @@ const check_unref = setInterval(() => {
     setInterval(() => timeout.unref(), SHORT_TIME);
 }
 
-// Should not assert on args.Holder()->InternalFieldCount() > 0.
+// Should not assert on args.This()->InternalFieldCount() > 0.
 // See https://github.com/nodejs/node-v0.x-archive/issues/4261.
 {
   const t = setInterval(() => {}, 1);
diff --git a/tests/node_compat/test/parallel/test-timers-unrefd-interval-still-fires.js b/tests/node_compat/test/parallel/test-timers-unrefd-interval-still-fires.js
index 79b68e467d96e3..5cee9ca8fdea67 100644
--- a/tests/node_compat/test/parallel/test-timers-unrefd-interval-still-fires.js
+++ b/tests/node_compat/test/parallel/test-timers-unrefd-interval-still-fires.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-timers-unrefed-in-beforeexit.js b/tests/node_compat/test/parallel/test-timers-unrefed-in-beforeexit.js
index c551d61373cfd0..ba108cb2da4a9d 100644
--- a/tests/node_compat/test/parallel/test-timers-unrefed-in-beforeexit.js
+++ b/tests/node_compat/test/parallel/test-timers-unrefed-in-beforeexit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-timers-unrefed-in-callback.js b/tests/node_compat/test/parallel/test-timers-unrefed-in-callback.js
index 362af6516b9319..dc88e929850d04 100644
--- a/tests/node_compat/test/parallel/test-timers-unrefed-in-callback.js
+++ b/tests/node_compat/test/parallel/test-timers-unrefed-in-callback.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-timers-user-call.js b/tests/node_compat/test/parallel/test-timers-user-call.js
index f8d70d7e368592..353e77abed0fad 100644
--- a/tests/node_compat/test/parallel/test-timers-user-call.js
+++ b/tests/node_compat/test/parallel/test-timers-user-call.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Make sure `setTimeout()` and friends don't throw if the user-supplied
diff --git a/tests/node_compat/test/parallel/test-timers-zero-timeout.js b/tests/node_compat/test/parallel/test-timers-zero-timeout.js
index 9eadfb78bdfd40..aef3c8ef8ece73 100644
--- a/tests/node_compat/test/parallel/test-timers-zero-timeout.js
+++ b/tests/node_compat/test/parallel/test-timers-zero-timeout.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-timers.js b/tests/node_compat/test/parallel/test-timers.js
index a2f218df810984..f97d7779bacd2b 100644
--- a/tests/node_compat/test/parallel/test-timers.js
+++ b/tests/node_compat/test/parallel/test-timers.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -86,3 +86,8 @@ setTimeout(common.mustCall(() => {
 // Test 10 ms timeout separately.
 setTimeout(common.mustCall(), 10);
 setInterval(common.mustCall(function() { clearInterval(this); }), 10);
+
+// Test no timeout separately
+setTimeout(common.mustCall());
+// eslint-disable-next-line no-restricted-syntax
+setInterval(common.mustCall(function() { clearInterval(this); }));
diff --git a/tests/node_compat/test/parallel/test-tls-enable-trace-cli.js b/tests/node_compat/test/parallel/test-tls-enable-trace-cli.js
index ba049f611fc01c..219dad8c3d2ed6 100644
--- a/tests/node_compat/test/parallel/test-tls-enable-trace-cli.js
+++ b/tests/node_compat/test/parallel/test-tls-enable-trace-cli.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
@@ -43,7 +43,7 @@ child.on('close', common.mustCall((code, signal) => {
   assert.strictEqual(signal, null);
   assert.strictEqual(stdout.trim(), '');
   assert.match(stderr, /Warning: Enabling --trace-tls can expose sensitive/);
-  assert.match(stderr, /Sent Record/);
+  assert.match(stderr, /Sent (?:TLS )?Record/);
 }));
 
 function test() {
diff --git a/tests/node_compat/test/parallel/test-tls-enable-trace.js b/tests/node_compat/test/parallel/test-tls-enable-trace.js
index 30be82b47e645f..d315cf5562642e 100644
--- a/tests/node_compat/test/parallel/test-tls-enable-trace.js
+++ b/tests/node_compat/test/parallel/test-tls-enable-trace.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
@@ -30,7 +30,7 @@ let stderr = '';
 child.stderr.setEncoding('utf8');
 child.stderr.on('data', (data) => stderr += data);
 child.on('close', common.mustCall(() => {
-  assert.match(stderr, /Received Record/);
+  assert.match(stderr, /Received (?:TLS )?Record/);
   assert.match(stderr, /ClientHello/);
 }));
 
diff --git a/tests/node_compat/test/parallel/test-tls-env-extra-ca-no-crypto.js b/tests/node_compat/test/parallel/test-tls-env-extra-ca-no-crypto.js
index 7ed55855b56728..7e2ffdd5c5bc81 100644
--- a/tests/node_compat/test/parallel/test-tls-env-extra-ca-no-crypto.js
+++ b/tests/node_compat/test/parallel/test-tls-env-extra-ca-no-crypto.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-trace-events-async-hooks-dynamic.js b/tests/node_compat/test/parallel/test-trace-events-async-hooks-dynamic.js
index 6c320b54c0d2a5..0c9b882ed9aa60 100644
--- a/tests/node_compat/test/parallel/test-trace-events-async-hooks-dynamic.js
+++ b/tests/node_compat/test/parallel/test-trace-events-async-hooks-dynamic.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-trace-events-async-hooks-worker.js b/tests/node_compat/test/parallel/test-trace-events-async-hooks-worker.js
index c924afc56d1d40..210e33992efc68 100644
--- a/tests/node_compat/test/parallel/test-trace-events-async-hooks-worker.js
+++ b/tests/node_compat/test/parallel/test-trace-events-async-hooks-worker.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-tty-stdin-end.js b/tests/node_compat/test/parallel/test-tty-stdin-end.js
index 6ac9b8cb9889d7..bd990d957c51bd 100644
--- a/tests/node_compat/test/parallel/test-tty-stdin-end.js
+++ b/tests/node_compat/test/parallel/test-tty-stdin-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-tz-version.js b/tests/node_compat/test/parallel/test-tz-version.js
index e09c23db5589da..0ae266739a1efc 100644
--- a/tests/node_compat/test/parallel/test-tz-version.js
+++ b/tests/node_compat/test/parallel/test-tz-version.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-url-parse-query.js b/tests/node_compat/test/parallel/test-url-parse-query.js
index da37e9c4e2eab8..5c596eb0fee0b6 100644
--- a/tests/node_compat/test/parallel/test-url-parse-query.js
+++ b/tests/node_compat/test/parallel/test-url-parse-query.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-url-relative.js b/tests/node_compat/test/parallel/test-url-relative.js
index 15228095444bf4..c2de64f45c27a8 100644
--- a/tests/node_compat/test/parallel/test-url-relative.js
+++ b/tests/node_compat/test/parallel/test-url-relative.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -353,7 +353,7 @@ const relativeTests2 = [
    'file:///C:/DEV/Haskell/lib/HXmlToolbox-3.01/examples/mini1.xml'],
   ['../b/c', 'foo:a/y/z', 'foo:a/b/c'],
 
-  // changeing auth
+  // changing auth
   ['http://diff:auth@www.example.com',
    'http://asdf:qwer@www.example.com',
    'http://diff:auth@www.example.com/'],
diff --git a/tests/node_compat/test/parallel/test-utf8-scripts.js b/tests/node_compat/test/parallel/test-utf8-scripts.js
index e18b4fa71adda9..0f055c885fd924 100644
--- a/tests/node_compat/test/parallel/test-utf8-scripts.js
+++ b/tests/node_compat/test/parallel/test-utf8-scripts.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-util-deprecate-invalid-code.js b/tests/node_compat/test/parallel/test-util-deprecate-invalid-code.js
index 9bf5d197e94fff..d92d32e3de6d29 100644
--- a/tests/node_compat/test/parallel/test-util-deprecate-invalid-code.js
+++ b/tests/node_compat/test/parallel/test-util-deprecate-invalid-code.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-util-deprecate.js b/tests/node_compat/test/parallel/test-util-deprecate.js
index e69fc3364c2b5e..94f116ce2ff053 100644
--- a/tests/node_compat/test/parallel/test-util-deprecate.js
+++ b/tests/node_compat/test/parallel/test-util-deprecate.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-util-inherits.js b/tests/node_compat/test/parallel/test-util-inherits.js
index 7a2a96982d27fb..4bc1d11f4582ce 100644
--- a/tests/node_compat/test/parallel/test-util-inherits.js
+++ b/tests/node_compat/test/parallel/test-util-inherits.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-util-inspect-getters-accessing-this.js b/tests/node_compat/test/parallel/test-util-inspect-getters-accessing-this.js
index 14a2be456c778f..238fd2573c68c5 100644
--- a/tests/node_compat/test/parallel/test-util-inspect-getters-accessing-this.js
+++ b/tests/node_compat/test/parallel/test-util-inspect-getters-accessing-this.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-util-inspect-long-running.js b/tests/node_compat/test/parallel/test-util-inspect-long-running.js
index 645aaada73f018..4be3eda1c81b26 100644
--- a/tests/node_compat/test/parallel/test-util-inspect-long-running.js
+++ b/tests/node_compat/test/parallel/test-util-inspect-long-running.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-util-primordial-monkeypatching.js b/tests/node_compat/test/parallel/test-util-primordial-monkeypatching.js
index 927a3504284d6b..eb67dbf740ab15 100644
--- a/tests/node_compat/test/parallel/test-util-primordial-monkeypatching.js
+++ b/tests/node_compat/test/parallel/test-util-primordial-monkeypatching.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-util-types-exists.js b/tests/node_compat/test/parallel/test-util-types-exists.js
index a58baf725e25ca..2633b8263607ac 100644
--- a/tests/node_compat/test/parallel/test-util-types-exists.js
+++ b/tests/node_compat/test/parallel/test-util-types-exists.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-uv-binding-constant.js b/tests/node_compat/test/parallel/test-uv-binding-constant.js
index a4b74fddaee096..3d2ca5f692479f 100644
--- a/tests/node_compat/test/parallel/test-uv-binding-constant.js
+++ b/tests/node_compat/test/parallel/test-uv-binding-constant.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --expose-internals
diff --git a/tests/node_compat/test/parallel/test-v8-coverage.js b/tests/node_compat/test/parallel/test-v8-coverage.js
index 4b3c01a4387246..e0f77c154b4de5 100644
--- a/tests/node_compat/test/parallel/test-v8-coverage.js
+++ b/tests/node_compat/test/parallel/test-v8-coverage.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-v8-deserialize-buffer.js b/tests/node_compat/test/parallel/test-v8-deserialize-buffer.js
index 5740e0dbab1947..a2428d9586a3a6 100644
--- a/tests/node_compat/test/parallel/test-v8-deserialize-buffer.js
+++ b/tests/node_compat/test/parallel/test-v8-deserialize-buffer.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -12,3 +12,7 @@ const v8 = require('v8');
 
 process.on('warning', common.mustNotCall());
 v8.deserialize(v8.serialize(Buffer.alloc(0)));
+v8.deserialize(v8.serialize({ a: new Int32Array(1024) }));
+v8.deserialize(v8.serialize({ b: new Int16Array(8192) }));
+v8.deserialize(v8.serialize({ c: new Uint32Array(1024) }));
+v8.deserialize(v8.serialize({ d: new Uint16Array(8192) }));
diff --git a/tests/node_compat/test/parallel/test-v8-flag-pool-size-0.js b/tests/node_compat/test/parallel/test-v8-flag-pool-size-0.js
index cce685573dd84f..18167602acad95 100644
--- a/tests/node_compat/test/parallel/test-v8-flag-pool-size-0.js
+++ b/tests/node_compat/test/parallel/test-v8-flag-pool-size-0.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --v8-pool-size=0 --expose-gc
diff --git a/tests/node_compat/test/parallel/test-v8-global-setter.js b/tests/node_compat/test/parallel/test-v8-global-setter.js
index 68ee7230f8440f..92d798a8966914 100644
--- a/tests/node_compat/test/parallel/test-v8-global-setter.js
+++ b/tests/node_compat/test/parallel/test-v8-global-setter.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-v8-stop-coverage.js b/tests/node_compat/test/parallel/test-v8-stop-coverage.js
index 6092d7115d1076..fc72c9017a5af9 100644
--- a/tests/node_compat/test/parallel/test-v8-stop-coverage.js
+++ b/tests/node_compat/test/parallel/test-v8-stop-coverage.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-v8-take-coverage-noop.js b/tests/node_compat/test/parallel/test-v8-take-coverage-noop.js
index 931895097ebe36..d9a7c5c374a0aa 100644
--- a/tests/node_compat/test/parallel/test-v8-take-coverage-noop.js
+++ b/tests/node_compat/test/parallel/test-v8-take-coverage-noop.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-v8-take-coverage.js b/tests/node_compat/test/parallel/test-v8-take-coverage.js
index af5bd7b40289a8..25fd6781e45ef7 100644
--- a/tests/node_compat/test/parallel/test-v8-take-coverage.js
+++ b/tests/node_compat/test/parallel/test-v8-take-coverage.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-access-process-env.js b/tests/node_compat/test/parallel/test-vm-access-process-env.js
index d2589b3aa575c5..0e1b3cf651a046 100644
--- a/tests/node_compat/test/parallel/test-vm-access-process-env.js
+++ b/tests/node_compat/test/parallel/test-vm-access-process-env.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-vm-attributes-property-not-on-sandbox.js b/tests/node_compat/test/parallel/test-vm-attributes-property-not-on-sandbox.js
index ef2d21eb42edab..4a42e61937b3f0 100644
--- a/tests/node_compat/test/parallel/test-vm-attributes-property-not-on-sandbox.js
+++ b/tests/node_compat/test/parallel/test-vm-attributes-property-not-on-sandbox.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-codegen.js b/tests/node_compat/test/parallel/test-vm-codegen.js
index 7d6fec813d1716..471ea94b80b599 100644
--- a/tests/node_compat/test/parallel/test-vm-codegen.js
+++ b/tests/node_compat/test/parallel/test-vm-codegen.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-context-async-script.js b/tests/node_compat/test/parallel/test-vm-context-async-script.js
index 9ba46ed890ad1d..70b4cbbde2d4e3 100644
--- a/tests/node_compat/test/parallel/test-vm-context-async-script.js
+++ b/tests/node_compat/test/parallel/test-vm-context-async-script.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-vm-context-property-forwarding.js b/tests/node_compat/test/parallel/test-vm-context-property-forwarding.js
index 1ac2b029eb99cd..eeff85fbb32082 100644
--- a/tests/node_compat/test/parallel/test-vm-context-property-forwarding.js
+++ b/tests/node_compat/test/parallel/test-vm-context-property-forwarding.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-vm-create-and-run-in-context.js b/tests/node_compat/test/parallel/test-vm-create-and-run-in-context.js
index 21fdc0c676be8d..4d8e118e1e66cf 100644
--- a/tests/node_compat/test/parallel/test-vm-create-and-run-in-context.js
+++ b/tests/node_compat/test/parallel/test-vm-create-and-run-in-context.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -52,6 +52,6 @@ assert.strictEqual(context.thing, 'lala');
 // Run in contextified sandbox without referencing the context
 const sandbox = { x: 1 };
 vm.createContext(sandbox);
-global.gc();
+globalThis.gc();
 vm.runInContext('x = 2', sandbox);
 // Should not crash.
diff --git a/tests/node_compat/test/parallel/test-vm-create-context-accessors.js b/tests/node_compat/test/parallel/test-vm-create-context-accessors.js
index bd79ec12dbf5b7..b28222c8d621cb 100644
--- a/tests/node_compat/test/parallel/test-vm-create-context-accessors.js
+++ b/tests/node_compat/test/parallel/test-vm-create-context-accessors.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-vm-create-context-arg.js b/tests/node_compat/test/parallel/test-vm-create-context-arg.js
index 513584a1959101..02cafc0568be70 100644
--- a/tests/node_compat/test/parallel/test-vm-create-context-arg.js
+++ b/tests/node_compat/test/parallel/test-vm-create-context-arg.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-vm-create-context-circular-reference.js b/tests/node_compat/test/parallel/test-vm-create-context-circular-reference.js
index 501c728a77d089..5d6444987cd57a 100644
--- a/tests/node_compat/test/parallel/test-vm-create-context-circular-reference.js
+++ b/tests/node_compat/test/parallel/test-vm-create-context-circular-reference.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-vm-createcacheddata.js b/tests/node_compat/test/parallel/test-vm-createcacheddata.js
index 77f5385977c70a..a082ce7a47e587 100644
--- a/tests/node_compat/test/parallel/test-vm-createcacheddata.js
+++ b/tests/node_compat/test/parallel/test-vm-createcacheddata.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-cross-context.js b/tests/node_compat/test/parallel/test-vm-cross-context.js
index 3107be6a6174eb..51bd7cb5465247 100644
--- a/tests/node_compat/test/parallel/test-vm-cross-context.js
+++ b/tests/node_compat/test/parallel/test-vm-cross-context.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -30,7 +30,7 @@
 require('../common');
 
 const vm = require('vm');
-const ctx = vm.createContext(global);
+const ctx = vm.createContext(globalThis);
 
 // Should not throw.
 vm.runInContext('!function() { var x = console.log; }()', ctx);
diff --git a/tests/node_compat/test/parallel/test-vm-data-property-writable.js b/tests/node_compat/test/parallel/test-vm-data-property-writable.js
index f18f1f65969239..32e737c0591c31 100644
--- a/tests/node_compat/test/parallel/test-vm-data-property-writable.js
+++ b/tests/node_compat/test/parallel/test-vm-data-property-writable.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-deleting-property.js b/tests/node_compat/test/parallel/test-vm-deleting-property.js
index b01a7b05e1b3ab..83428aa58316c7 100644
--- a/tests/node_compat/test/parallel/test-vm-deleting-property.js
+++ b/tests/node_compat/test/parallel/test-vm-deleting-property.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-function-declaration.js b/tests/node_compat/test/parallel/test-vm-function-declaration.js
index 0bbe7589c57cad..eff63b23c7aed2 100644
--- a/tests/node_compat/test/parallel/test-vm-function-declaration.js
+++ b/tests/node_compat/test/parallel/test-vm-function-declaration.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-vm-function-redefinition.js b/tests/node_compat/test/parallel/test-vm-function-redefinition.js
index 44ba8da11e6f55..3e55f23cc54341 100644
--- a/tests/node_compat/test/parallel/test-vm-function-redefinition.js
+++ b/tests/node_compat/test/parallel/test-vm-function-redefinition.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-getters.js b/tests/node_compat/test/parallel/test-vm-getters.js
index 8a88abc9ae8910..0b8a1e57a0aaeb 100644
--- a/tests/node_compat/test/parallel/test-vm-getters.js
+++ b/tests/node_compat/test/parallel/test-vm-getters.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-global-assignment.js b/tests/node_compat/test/parallel/test-vm-global-assignment.js
index 1160dca1d78967..b317ca9cf34261 100644
--- a/tests/node_compat/test/parallel/test-vm-global-assignment.js
+++ b/tests/node_compat/test/parallel/test-vm-global-assignment.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-global-define-property.js b/tests/node_compat/test/parallel/test-vm-global-define-property.js
index 76ad6742e58770..fcde469617c32c 100644
--- a/tests/node_compat/test/parallel/test-vm-global-define-property.js
+++ b/tests/node_compat/test/parallel/test-vm-global-define-property.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-vm-global-identity.js b/tests/node_compat/test/parallel/test-vm-global-identity.js
index 68780ca544250a..7dca896e0a7570 100644
--- a/tests/node_compat/test/parallel/test-vm-global-identity.js
+++ b/tests/node_compat/test/parallel/test-vm-global-identity.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-vm-global-setter.js b/tests/node_compat/test/parallel/test-vm-global-setter.js
index 4908ce82caf869..1be354b5154951 100644
--- a/tests/node_compat/test/parallel/test-vm-global-setter.js
+++ b/tests/node_compat/test/parallel/test-vm-global-setter.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-harmony-symbols.js b/tests/node_compat/test/parallel/test-vm-harmony-symbols.js
index c597b1b49c7995..35300d3399ea8d 100644
--- a/tests/node_compat/test/parallel/test-vm-harmony-symbols.js
+++ b/tests/node_compat/test/parallel/test-vm-harmony-symbols.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-vm-indexed-properties.js b/tests/node_compat/test/parallel/test-vm-indexed-properties.js
index dda0aa90321e62..944ca9ad9392a5 100644
--- a/tests/node_compat/test/parallel/test-vm-indexed-properties.js
+++ b/tests/node_compat/test/parallel/test-vm-indexed-properties.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-inherited_properties.js b/tests/node_compat/test/parallel/test-vm-inherited_properties.js
index a2366bfef6303a..d6835afc439861 100644
--- a/tests/node_compat/test/parallel/test-vm-inherited_properties.js
+++ b/tests/node_compat/test/parallel/test-vm-inherited_properties.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-is-context.js b/tests/node_compat/test/parallel/test-vm-is-context.js
index 95217bc59762f2..05d78509084d45 100644
--- a/tests/node_compat/test/parallel/test-vm-is-context.js
+++ b/tests/node_compat/test/parallel/test-vm-is-context.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-vm-low-stack-space.js b/tests/node_compat/test/parallel/test-vm-low-stack-space.js
index 860bececc46358..4ef3da0908e2eb 100644
--- a/tests/node_compat/test/parallel/test-vm-low-stack-space.js
+++ b/tests/node_compat/test/parallel/test-vm-low-stack-space.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-new-script-new-context.js b/tests/node_compat/test/parallel/test-vm-new-script-new-context.js
index b46f99b8f1b518..c970feed4a514a 100644
--- a/tests/node_compat/test/parallel/test-vm-new-script-new-context.js
+++ b/tests/node_compat/test/parallel/test-vm-new-script-new-context.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -56,43 +56,43 @@ const Script = require('vm').Script;
 }
 
 {
-  global.hello = 5;
+  globalThis.hello = 5;
   const script = new Script('hello = 2');
   script.runInNewContext();
-  assert.strictEqual(global.hello, 5);
+  assert.strictEqual(globalThis.hello, 5);
 
   // Cleanup
-  delete global.hello;
+  delete globalThis.hello;
 }
 
 {
-  global.code = 'foo = 1;' +
+  globalThis.code = 'foo = 1;' +
                 'bar = 2;' +
                 'if (baz !== 3) throw new Error(\'test fail\');';
-  global.foo = 2;
-  global.obj = { foo: 0, baz: 3 };
-  const script = new Script(global.code);
+  globalThis.foo = 2;
+  globalThis.obj = { foo: 0, baz: 3 };
+  const script = new Script(globalThis.code);
   /* eslint-disable no-unused-vars */
-  const baz = script.runInNewContext(global.obj);
+  const baz = script.runInNewContext(globalThis.obj);
   /* eslint-enable no-unused-vars */
-  assert.strictEqual(global.obj.foo, 1);
-  assert.strictEqual(global.obj.bar, 2);
-  assert.strictEqual(global.foo, 2);
+  assert.strictEqual(globalThis.obj.foo, 1);
+  assert.strictEqual(globalThis.obj.bar, 2);
+  assert.strictEqual(globalThis.foo, 2);
 
   // cleanup
-  delete global.code;
-  delete global.foo;
-  delete global.obj;
+  delete globalThis.code;
+  delete globalThis.foo;
+  delete globalThis.obj;
 }
 
 {
   const script = new Script('f()');
-  function changeFoo() { global.foo = 100; }
+  function changeFoo() { globalThis.foo = 100; }
   script.runInNewContext({ f: changeFoo });
-  assert.strictEqual(global.foo, 100);
+  assert.strictEqual(globalThis.foo, 100);
 
   // cleanup
-  delete global.foo;
+  delete globalThis.foo;
 }
 
 {
diff --git a/tests/node_compat/test/parallel/test-vm-new-script-this-context.js b/tests/node_compat/test/parallel/test-vm-new-script-this-context.js
index 6f8247233ff8ee..7737d543ae4650 100644
--- a/tests/node_compat/test/parallel/test-vm-new-script-this-context.js
+++ b/tests/node_compat/test/parallel/test-vm-new-script-this-context.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -42,34 +42,34 @@ assert.throws(() => {
   script.runInThisContext(script);
 }, /^Error: test$/);
 
-global.hello = 5;
+globalThis.hello = 5;
 script = new Script('hello = 2');
 script.runInThisContext(script);
-assert.strictEqual(global.hello, 2);
+assert.strictEqual(globalThis.hello, 2);
 
 
 // Pass values
-global.code = 'foo = 1;' +
+globalThis.code = 'foo = 1;' +
               'bar = 2;' +
               'if (typeof baz !== "undefined") throw new Error("test fail");';
-global.foo = 2;
-global.obj = { foo: 0, baz: 3 };
-script = new Script(global.code);
+globalThis.foo = 2;
+globalThis.obj = { foo: 0, baz: 3 };
+script = new Script(globalThis.code);
 script.runInThisContext(script);
-assert.strictEqual(global.obj.foo, 0);
-assert.strictEqual(global.bar, 2);
-assert.strictEqual(global.foo, 1);
+assert.strictEqual(globalThis.obj.foo, 0);
+assert.strictEqual(globalThis.bar, 2);
+assert.strictEqual(globalThis.foo, 1);
 
 // Call a function
-global.f = function() { global.foo = 100; };
+globalThis.f = function() { globalThis.foo = 100; };
 script = new Script('f()');
 script.runInThisContext(script);
-assert.strictEqual(global.foo, 100);
+assert.strictEqual(globalThis.foo, 100);
 
 common.allowGlobals(
-  global.hello,
-  global.code,
-  global.foo,
-  global.obj,
-  global.f
+  globalThis.hello,
+  globalThis.code,
+  globalThis.foo,
+  globalThis.obj,
+  globalThis.f
 );
diff --git a/tests/node_compat/test/parallel/test-vm-not-strict.js b/tests/node_compat/test/parallel/test-vm-not-strict.js
index 725e00a9a6e2d5..562a71754a096e 100644
--- a/tests/node_compat/test/parallel/test-vm-not-strict.js
+++ b/tests/node_compat/test/parallel/test-vm-not-strict.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 /* eslint-disable strict, no-var, no-delete-var, no-undef, node-core/required-modules, node-core/require-common-first */
diff --git a/tests/node_compat/test/parallel/test-vm-options-validation.js b/tests/node_compat/test/parallel/test-vm-options-validation.js
index 430414379ecbd8..04c754983ee617 100644
--- a/tests/node_compat/test/parallel/test-vm-options-validation.js
+++ b/tests/node_compat/test/parallel/test-vm-options-validation.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-parse-abort-on-uncaught-exception.js b/tests/node_compat/test/parallel/test-vm-parse-abort-on-uncaught-exception.js
index 16a55508897d69..56bdb121e9ff82 100644
--- a/tests/node_compat/test/parallel/test-vm-parse-abort-on-uncaught-exception.js
+++ b/tests/node_compat/test/parallel/test-vm-parse-abort-on-uncaught-exception.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Flags: --abort-on-uncaught-exception
diff --git a/tests/node_compat/test/parallel/test-vm-preserves-property.js b/tests/node_compat/test/parallel/test-vm-preserves-property.js
index f415aa37d44423..a5c095da7b3333 100644
--- a/tests/node_compat/test/parallel/test-vm-preserves-property.js
+++ b/tests/node_compat/test/parallel/test-vm-preserves-property.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-property-not-on-sandbox.js b/tests/node_compat/test/parallel/test-vm-property-not-on-sandbox.js
index 8fe3a25843cfdc..6694d978f4dbec 100644
--- a/tests/node_compat/test/parallel/test-vm-property-not-on-sandbox.js
+++ b/tests/node_compat/test/parallel/test-vm-property-not-on-sandbox.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-proxies.js b/tests/node_compat/test/parallel/test-vm-proxies.js
index a7e86400511b26..0e27c4a5fa1398 100644
--- a/tests/node_compat/test/parallel/test-vm-proxies.js
+++ b/tests/node_compat/test/parallel/test-vm-proxies.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-proxy-failure-CP.js b/tests/node_compat/test/parallel/test-vm-proxy-failure-CP.js
index 850696f7a49132..2792724eee6319 100644
--- a/tests/node_compat/test/parallel/test-vm-proxy-failure-CP.js
+++ b/tests/node_compat/test/parallel/test-vm-proxy-failure-CP.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-script-throw-in-tostring.js b/tests/node_compat/test/parallel/test-vm-script-throw-in-tostring.js
index e64777c2928ed4..850c632471ddd9 100644
--- a/tests/node_compat/test/parallel/test-vm-script-throw-in-tostring.js
+++ b/tests/node_compat/test/parallel/test-vm-script-throw-in-tostring.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-set-property-proxy.js b/tests/node_compat/test/parallel/test-vm-set-property-proxy.js
index b1b0909a41c86e..463403ba5232b3 100644
--- a/tests/node_compat/test/parallel/test-vm-set-property-proxy.js
+++ b/tests/node_compat/test/parallel/test-vm-set-property-proxy.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-set-proto-null-on-globalthis.js b/tests/node_compat/test/parallel/test-vm-set-proto-null-on-globalthis.js
index 9b320678909c5a..0c674a2159882e 100644
--- a/tests/node_compat/test/parallel/test-vm-set-proto-null-on-globalthis.js
+++ b/tests/node_compat/test/parallel/test-vm-set-proto-null-on-globalthis.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-source-map-url.js b/tests/node_compat/test/parallel/test-vm-source-map-url.js
index f8aafaf3e94ea0..44fcf40c7475ff 100644
--- a/tests/node_compat/test/parallel/test-vm-source-map-url.js
+++ b/tests/node_compat/test/parallel/test-vm-source-map-url.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-static-this.js b/tests/node_compat/test/parallel/test-vm-static-this.js
index e99c6438cbbb55..22e7ec9519f109 100644
--- a/tests/node_compat/test/parallel/test-vm-static-this.js
+++ b/tests/node_compat/test/parallel/test-vm-static-this.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
@@ -40,9 +40,9 @@ assert.throws(function() {
   vm.runInThisContext('throw new Error(\'test\');');
 }, /test/);
 
-global.hello = 5;
+globalThis.hello = 5;
 vm.runInThisContext('hello = 2');
-assert.strictEqual(global.hello, 2);
+assert.strictEqual(globalThis.hello, 2);
 
 
 // pass values
@@ -50,23 +50,23 @@ const code = 'foo = 1;' +
              'bar = 2;' +
              'if (typeof baz !== \'undefined\')' +
              'throw new Error(\'test fail\');';
-global.foo = 2;
-global.obj = { foo: 0, baz: 3 };
+globalThis.foo = 2;
+globalThis.obj = { foo: 0, baz: 3 };
 /* eslint-disable no-unused-vars */
 const baz = vm.runInThisContext(code);
 /* eslint-enable no-unused-vars */
-assert.strictEqual(global.obj.foo, 0);
-assert.strictEqual(global.bar, 2);
-assert.strictEqual(global.foo, 1);
+assert.strictEqual(globalThis.obj.foo, 0);
+assert.strictEqual(globalThis.bar, 2);
+assert.strictEqual(globalThis.foo, 1);
 
 // call a function
-global.f = function() { global.foo = 100; };
+globalThis.f = function() { globalThis.foo = 100; };
 vm.runInThisContext('f()');
-assert.strictEqual(global.foo, 100);
+assert.strictEqual(globalThis.foo, 100);
 
 common.allowGlobals(
-  global.hello,
-  global.foo,
-  global.obj,
-  global.f
+  globalThis.hello,
+  globalThis.foo,
+  globalThis.obj,
+  globalThis.f
 );
diff --git a/tests/node_compat/test/parallel/test-vm-strict-mode.js b/tests/node_compat/test/parallel/test-vm-strict-mode.js
index 9d018216a6e72c..5edf5fd79d6034 100644
--- a/tests/node_compat/test/parallel/test-vm-strict-mode.js
+++ b/tests/node_compat/test/parallel/test-vm-strict-mode.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-symbols.js b/tests/node_compat/test/parallel/test-vm-symbols.js
index a4317f24a94523..4b88fc734c5dc2 100644
--- a/tests/node_compat/test/parallel/test-vm-symbols.js
+++ b/tests/node_compat/test/parallel/test-vm-symbols.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-timeout-escape-promise-2.js b/tests/node_compat/test/parallel/test-vm-timeout-escape-promise-2.js
index 176284eee3824d..f51a07311a803d 100644
--- a/tests/node_compat/test/parallel/test-vm-timeout-escape-promise-2.js
+++ b/tests/node_compat/test/parallel/test-vm-timeout-escape-promise-2.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-timeout-escape-promise.js b/tests/node_compat/test/parallel/test-vm-timeout-escape-promise.js
index 0bf90936d960ca..3ace2017b50ebc 100644
--- a/tests/node_compat/test/parallel/test-vm-timeout-escape-promise.js
+++ b/tests/node_compat/test/parallel/test-vm-timeout-escape-promise.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-vm-timeout.js b/tests/node_compat/test/parallel/test-vm-timeout.js
index d080dc8eedd7bc..662ed8b332fc81 100644
--- a/tests/node_compat/test/parallel/test-vm-timeout.js
+++ b/tests/node_compat/test/parallel/test-vm-timeout.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-weakref.js b/tests/node_compat/test/parallel/test-weakref.js
index 119bf612ae576e..e20dcc357e42c4 100644
--- a/tests/node_compat/test/parallel/test-weakref.js
+++ b/tests/node_compat/test/parallel/test-weakref.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-webcrypto-encrypt-decrypt.js b/tests/node_compat/test/parallel/test-webcrypto-encrypt-decrypt.js
index 1bbfd185e1e782..6d2181ec3eb27b 100644
--- a/tests/node_compat/test/parallel/test-webcrypto-encrypt-decrypt.js
+++ b/tests/node_compat/test/parallel/test-webcrypto-encrypt-decrypt.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-websocket.js b/tests/node_compat/test/parallel/test-websocket.js
index 325171173276b4..a683ef64c2e0f8 100644
--- a/tests/node_compat/test/parallel/test-websocket.js
+++ b/tests/node_compat/test/parallel/test-websocket.js
@@ -2,13 +2,13 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
-// Flags: --experimental-websocket
 'use strict';
 
 require('../common');
 const assert = require('assert');
 
 assert.strictEqual(typeof WebSocket, 'function');
+assert.strictEqual(typeof CloseEvent, 'function');
diff --git a/tests/node_compat/test/parallel/test-webstream-string-tag.js b/tests/node_compat/test/parallel/test-webstream-string-tag.js
index 9c44b57ce8abb3..72353b1b1e9845 100644
--- a/tests/node_compat/test/parallel/test-webstream-string-tag.js
+++ b/tests/node_compat/test/parallel/test-webstream-string-tag.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-whatwg-encoding-custom-api-basics.js b/tests/node_compat/test/parallel/test-whatwg-encoding-custom-api-basics.js
index 0e743648f7ce7a..2a37781588cdd6 100644
--- a/tests/node_compat/test/parallel/test-whatwg-encoding-custom-api-basics.js
+++ b/tests/node_compat/test/parallel/test-whatwg-encoding-custom-api-basics.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-ignorebom.js b/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-ignorebom.js
index 0391378eda2b81..1299e563cd2af8 100644
--- a/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-ignorebom.js
+++ b/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-ignorebom.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-streaming.js b/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-streaming.js
index 152d084c5a42a3..9e10711273be4a 100644
--- a/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-streaming.js
+++ b/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-streaming.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-passive.js b/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-passive.js
index f6a9eddf33fe58..4d0962ab8b2931 100644
--- a/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-passive.js
+++ b/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-passive.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-signal.js b/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-signal.js
index 93a332ab43abb1..f467a61b034bc7 100644
--- a/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-signal.js
+++ b/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-signal.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-whatwg-events-customevent.js b/tests/node_compat/test/parallel/test-whatwg-events-customevent.js
index 44c68a72a491cd..b764760c75b0f6 100644
--- a/tests/node_compat/test/parallel/test-whatwg-events-customevent.js
+++ b/tests/node_compat/test/parallel/test-whatwg-events-customevent.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-whatwg-readablebytestreambyob.js b/tests/node_compat/test/parallel/test-whatwg-readablebytestreambyob.js
index db0125bde139a3..e4ff626046dab2 100644
--- a/tests/node_compat/test/parallel/test-whatwg-readablebytestreambyob.js
+++ b/tests/node_compat/test/parallel/test-whatwg-readablebytestreambyob.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-whatwg-url-custom-deepequal.js b/tests/node_compat/test/parallel/test-whatwg-url-custom-deepequal.js
index 2980f554af3eb7..be2d3e3abc5226 100644
--- a/tests/node_compat/test/parallel/test-whatwg-url-custom-deepequal.js
+++ b/tests/node_compat/test/parallel/test-whatwg-url-custom-deepequal.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-whatwg-url-custom-global.js b/tests/node_compat/test/parallel/test-whatwg-url-custom-global.js
index 39d3cc002db2d8..9a64e078d3dd35 100644
--- a/tests/node_compat/test/parallel/test-whatwg-url-custom-global.js
+++ b/tests/node_compat/test/parallel/test-whatwg-url-custom-global.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -13,7 +13,7 @@ require('../common');
 const assert = require('assert');
 
 assert.deepStrictEqual(
-  Object.getOwnPropertyDescriptor(global, 'URL'),
+  Object.getOwnPropertyDescriptor(globalThis, 'URL'),
   {
     value: URL,
     writable: true,
@@ -23,7 +23,7 @@ assert.deepStrictEqual(
 );
 
 assert.deepStrictEqual(
-  Object.getOwnPropertyDescriptor(global, 'URLSearchParams'),
+  Object.getOwnPropertyDescriptor(globalThis, 'URLSearchParams'),
   {
     value: URLSearchParams,
     writable: true,
diff --git a/tests/node_compat/test/parallel/test-whatwg-url-custom-href-side-effect.js b/tests/node_compat/test/parallel/test-whatwg-url-custom-href-side-effect.js
index e2fbbca398c67c..5a771561bd9471 100644
--- a/tests/node_compat/test/parallel/test-whatwg-url-custom-href-side-effect.js
+++ b/tests/node_compat/test/parallel/test-whatwg-url-custom-href-side-effect.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-whatwg-url-custom-tostringtag.js b/tests/node_compat/test/parallel/test-whatwg-url-custom-tostringtag.js
index 404d6d8bcf5003..90b909d884dde0 100644
--- a/tests/node_compat/test/parallel/test-whatwg-url-custom-tostringtag.js
+++ b/tests/node_compat/test/parallel/test-whatwg-url-custom-tostringtag.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-whatwg-url-override-hostname.js b/tests/node_compat/test/parallel/test-whatwg-url-override-hostname.js
index 96a7dfe727c7ed..403e8118841f13 100644
--- a/tests/node_compat/test/parallel/test-whatwg-url-override-hostname.js
+++ b/tests/node_compat/test/parallel/test-whatwg-url-override-hostname.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-worker-cleanexit-with-js.js b/tests/node_compat/test/parallel/test-worker-cleanexit-with-js.js
index 1be06d334728cf..33573d00c30f20 100644
--- a/tests/node_compat/test/parallel/test-worker-cleanexit-with-js.js
+++ b/tests/node_compat/test/parallel/test-worker-cleanexit-with-js.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-worker-message-port-infinite-message-loop.js b/tests/node_compat/test/parallel/test-worker-message-port-infinite-message-loop.js
index f2a4a3242eb969..3ef067211b54ec 100644
--- a/tests/node_compat/test/parallel/test-worker-message-port-infinite-message-loop.js
+++ b/tests/node_compat/test/parallel/test-worker-message-port-infinite-message-loop.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-worker-message-port-multiple-sharedarraybuffers.js b/tests/node_compat/test/parallel/test-worker-message-port-multiple-sharedarraybuffers.js
index 986e7f1fb65c11..1814f46997b618 100644
--- a/tests/node_compat/test/parallel/test-worker-message-port-multiple-sharedarraybuffers.js
+++ b/tests/node_compat/test/parallel/test-worker-message-port-multiple-sharedarraybuffers.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-worker-on-process-exit.js b/tests/node_compat/test/parallel/test-worker-on-process-exit.js
index 4e821c2ac64083..77ffeeb195375a 100644
--- a/tests/node_compat/test/parallel/test-worker-on-process-exit.js
+++ b/tests/node_compat/test/parallel/test-worker-on-process-exit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-worker-ref-onexit.js b/tests/node_compat/test/parallel/test-worker-ref-onexit.js
index 6bfccb7e8f0e60..13058674ee5a5a 100644
--- a/tests/node_compat/test/parallel/test-worker-ref-onexit.js
+++ b/tests/node_compat/test/parallel/test-worker-ref-onexit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-worker-terminate-unrefed.js b/tests/node_compat/test/parallel/test-worker-terminate-unrefed.js
index 3647c96efdde17..dcbf445d6bb758 100644
--- a/tests/node_compat/test/parallel/test-worker-terminate-unrefed.js
+++ b/tests/node_compat/test/parallel/test-worker-terminate-unrefed.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-zlib-close-after-error.js b/tests/node_compat/test/parallel/test-zlib-close-after-error.js
index 845a34b39bc044..a049f5402338f3 100644
--- a/tests/node_compat/test/parallel/test-zlib-close-after-error.js
+++ b/tests/node_compat/test/parallel/test-zlib-close-after-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-zlib-close-after-write.js b/tests/node_compat/test/parallel/test-zlib-close-after-write.js
index 76abf5ac68520d..f95dc02b11fad8 100644
--- a/tests/node_compat/test/parallel/test-zlib-close-after-write.js
+++ b/tests/node_compat/test/parallel/test-zlib-close-after-write.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-zlib-create-raw.js b/tests/node_compat/test/parallel/test-zlib-create-raw.js
index d8367a889b75a3..d2b107694f77e3 100644
--- a/tests/node_compat/test/parallel/test-zlib-create-raw.js
+++ b/tests/node_compat/test/parallel/test-zlib-create-raw.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-zlib-deflate-raw-inherits.js b/tests/node_compat/test/parallel/test-zlib-deflate-raw-inherits.js
index 6c884bb0010791..a23f71bf3bcfe0 100644
--- a/tests/node_compat/test/parallel/test-zlib-deflate-raw-inherits.js
+++ b/tests/node_compat/test/parallel/test-zlib-deflate-raw-inherits.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-zlib-destroy-pipe.js b/tests/node_compat/test/parallel/test-zlib-destroy-pipe.js
index 3877b887762abd..f7195db1b5cdf0 100644
--- a/tests/node_compat/test/parallel/test-zlib-destroy-pipe.js
+++ b/tests/node_compat/test/parallel/test-zlib-destroy-pipe.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-zlib-flush-write-sync-interleaved.js b/tests/node_compat/test/parallel/test-zlib-flush-write-sync-interleaved.js
index c398880fc75372..c4d6cfe3eefacc 100644
--- a/tests/node_compat/test/parallel/test-zlib-flush-write-sync-interleaved.js
+++ b/tests/node_compat/test/parallel/test-zlib-flush-write-sync-interleaved.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-zlib-from-string.js b/tests/node_compat/test/parallel/test-zlib-from-string.js
index 42ccd0f0952dd6..ae5d9c439cdd11 100644
--- a/tests/node_compat/test/parallel/test-zlib-from-string.js
+++ b/tests/node_compat/test/parallel/test-zlib-from-string.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/parallel/test-zlib-no-stream.js b/tests/node_compat/test/parallel/test-zlib-no-stream.js
index f26cd4b2408572..0d42487b966348 100644
--- a/tests/node_compat/test/parallel/test-zlib-no-stream.js
+++ b/tests/node_compat/test/parallel/test-zlib-no-stream.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 /* eslint-disable node-core/required-modules */
diff --git a/tests/node_compat/test/parallel/test-zlib-sync-no-event.js b/tests/node_compat/test/parallel/test-zlib-sync-no-event.js
index f0b7c998ceecf0..7e7655685811fd 100644
--- a/tests/node_compat/test/parallel/test-zlib-sync-no-event.js
+++ b/tests/node_compat/test/parallel/test-zlib-sync-no-event.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/parallel/test-zlib-truncated.js b/tests/node_compat/test/parallel/test-zlib-truncated.js
index f73cfd187e0f69..0d78b5b6045738 100644
--- a/tests/node_compat/test/parallel/test-zlib-truncated.js
+++ b/tests/node_compat/test/parallel/test-zlib-truncated.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -59,13 +59,13 @@ const errMessage = /unexpected end of file/;
 
     // Sync truncated input test, finishFlush = Z_SYNC_FLUSH
     const result = toUTF8(zlib[methods.decompSync](truncated, syncFlushOpt));
-    assert.strictEqual(result, inputString.substr(0, result.length));
+    assert.strictEqual(result, inputString.slice(0, result.length));
 
     // Async truncated input test, finishFlush = Z_SYNC_FLUSH
     zlib[methods.decomp](truncated, syncFlushOpt, function(err, decompressed) {
       assert.ifError(err);
       const result = toUTF8(decompressed);
-      assert.strictEqual(result, inputString.substr(0, result.length));
+      assert.strictEqual(result, inputString.slice(0, result.length));
     });
   });
 });
diff --git a/tests/node_compat/test/pseudo-tty/console-dumb-tty.js b/tests/node_compat/test/pseudo-tty/console-dumb-tty.js
index 9039851e626623..e175855e9aee6b 100644
--- a/tests/node_compat/test/pseudo-tty/console-dumb-tty.js
+++ b/tests/node_compat/test/pseudo-tty/console-dumb-tty.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/pseudo-tty/console_colors.js b/tests/node_compat/test/pseudo-tty/console_colors.js
index c5a6d61ede7d31..33ba7d42f40f9a 100644
--- a/tests/node_compat/test/pseudo-tty/console_colors.js
+++ b/tests/node_compat/test/pseudo-tty/console_colors.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -11,6 +11,7 @@ const vm = require('vm');
 // Make this test OS-independent by overriding stdio getColorDepth().
 process.stdout.getColorDepth = () => 8;
 process.stderr.getColorDepth = () => 8;
+Error.stackTraceLimit = Infinity;
 
 console.log({ foo: 'bar' });
 console.log('%s q', 'string');
diff --git a/tests/node_compat/test/pseudo-tty/no_dropped_stdio.js b/tests/node_compat/test/pseudo-tty/no_dropped_stdio.js
index c8ee979aa69cc7..c291c4ba639cfe 100644
--- a/tests/node_compat/test/pseudo-tty/no_dropped_stdio.js
+++ b/tests/node_compat/test/pseudo-tty/no_dropped_stdio.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // https://github.com/nodejs/node/issues/6456#issuecomment-219320599
diff --git a/tests/node_compat/test/pseudo-tty/no_interleaved_stdio.js b/tests/node_compat/test/pseudo-tty/no_interleaved_stdio.js
index 4dd80de3dce499..8f758d6fe20f80 100644
--- a/tests/node_compat/test/pseudo-tty/no_interleaved_stdio.js
+++ b/tests/node_compat/test/pseudo-tty/no_interleaved_stdio.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // https://github.com/nodejs/node/issues/6456#issuecomment-219320599
diff --git a/tests/node_compat/test/pseudo-tty/test-set-raw-mode-reset-process-exit.js b/tests/node_compat/test/pseudo-tty/test-set-raw-mode-reset-process-exit.js
index 29d2b58232ffdc..98edbf3f904494 100644
--- a/tests/node_compat/test/pseudo-tty/test-set-raw-mode-reset-process-exit.js
+++ b/tests/node_compat/test/pseudo-tty/test-set-raw-mode-reset-process-exit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/pseudo-tty/test-set-raw-mode-reset.js b/tests/node_compat/test/pseudo-tty/test-set-raw-mode-reset.js
index 2fbfeb3ee8b8ba..ed1813571a0179 100644
--- a/tests/node_compat/test/pseudo-tty/test-set-raw-mode-reset.js
+++ b/tests/node_compat/test/pseudo-tty/test-set-raw-mode-reset.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning-2.js b/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning-2.js
index f90fc6b4a17a3b..6131264a619671 100644
--- a/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning-2.js
+++ b/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning-2.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning.js b/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning.js
index cccaa2b6a9e7e4..f2e8bafb52cc67 100644
--- a/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning.js
+++ b/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/pseudo-tty/test-tty-stdin-call-end.js b/tests/node_compat/test/pseudo-tty/test-tty-stdin-call-end.js
index 60570b57469268..fb286bd12daa7c 100644
--- a/tests/node_compat/test/pseudo-tty/test-tty-stdin-call-end.js
+++ b/tests/node_compat/test/pseudo-tty/test-tty-stdin-call-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/pseudo-tty/test-tty-stdin-end.js b/tests/node_compat/test/pseudo-tty/test-tty-stdin-end.js
index 6ac9b8cb9889d7..bd990d957c51bd 100644
--- a/tests/node_compat/test/pseudo-tty/test-tty-stdin-end.js
+++ b/tests/node_compat/test/pseudo-tty/test-tty-stdin-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/pseudo-tty/test-tty-stdout-end.js b/tests/node_compat/test/pseudo-tty/test-tty-stdout-end.js
index 9b3db4eab63d8c..2377fb52a59f05 100644
--- a/tests/node_compat/test/pseudo-tty/test-tty-stdout-end.js
+++ b/tests/node_compat/test/pseudo-tty/test-tty-stdout-end.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/pummel/test-crypto-timing-safe-equal-benchmarks.js b/tests/node_compat/test/pummel/test-crypto-timing-safe-equal-benchmarks.js
deleted file mode 100644
index e7f7b0fedece4f..00000000000000
--- a/tests/node_compat/test/pummel/test-crypto-timing-safe-equal-benchmarks.js
+++ /dev/null
@@ -1,129 +0,0 @@
-// deno-fmt-ignore-file
-// deno-lint-ignore-file
-
-// Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
-// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
-
-'use strict';
-const common = require('../common');
-if (!common.hasCrypto)
-  common.skip('missing crypto');
-
-if (!common.enoughTestMem)
-  common.skip('memory-intensive test');
-
-const assert = require('assert');
-const crypto = require('crypto');
-
-function runOneBenchmark(compareFunc, firstBufFill, secondBufFill, bufSize) {
-  return eval(`
-      const firstBuffer = Buffer.alloc(bufSize, firstBufFill);
-      const secondBuffer = Buffer.alloc(bufSize, secondBufFill);
-
-      const startTime = process.hrtime();
-      const result = compareFunc(firstBuffer, secondBuffer);
-      const endTime = process.hrtime(startTime);
-
-      // Ensure that the result of the function call gets used, so it doesn't
-      // get discarded due to engine optimizations.
-      assert.strictEqual(result, firstBufFill === secondBufFill);
-
-      endTime[0] * 1e9 + endTime[1];
-    `);
-}
-
-function getTValue(compareFunc) {
-  const numTrials = 1e5;
-  const bufSize = 10000;
-  // Perform benchmarks to verify that timingSafeEqual is actually timing-safe.
-
-  const rawEqualBenches = Array(numTrials);
-  const rawUnequalBenches = Array(numTrials);
-
-  for (let i = 0; i < numTrials; i++) {
-    if (Math.random() < 0.5) {
-      // First benchmark: comparing two equal buffers
-      rawEqualBenches[i] = runOneBenchmark(compareFunc, 'A', 'A', bufSize);
-      // Second benchmark: comparing two unequal buffers
-      rawUnequalBenches[i] = runOneBenchmark(compareFunc, 'B', 'C', bufSize);
-    } else {
-      // Flip the order of the benchmarks half of the time.
-      rawUnequalBenches[i] = runOneBenchmark(compareFunc, 'B', 'C', bufSize);
-      rawEqualBenches[i] = runOneBenchmark(compareFunc, 'A', 'A', bufSize);
-    }
-  }
-
-  const equalBenches = filterOutliers(rawEqualBenches);
-  const unequalBenches = filterOutliers(rawUnequalBenches);
-
-  // Use a two-sample t-test to determine whether the timing difference between
-  // the benchmarks is statistically significant.
-  // https://wikipedia.org/wiki/Student%27s_t-test#Independent_two-sample_t-test
-
-  const equalMean = mean(equalBenches);
-  const unequalMean = mean(unequalBenches);
-
-  const equalLen = equalBenches.length;
-  const unequalLen = unequalBenches.length;
-
-  const combinedStd = combinedStandardDeviation(equalBenches, unequalBenches);
-  const standardErr = combinedStd * Math.sqrt(1 / equalLen + 1 / unequalLen);
-
-  return (equalMean - unequalMean) / standardErr;
-}
-
-// Returns the mean of an array
-function mean(array) {
-  return array.reduce((sum, val) => sum + val, 0) / array.length;
-}
-
-// Returns the sample standard deviation of an array
-function standardDeviation(array) {
-  const arrMean = mean(array);
-  const total = array.reduce((sum, val) => sum + Math.pow(val - arrMean, 2), 0);
-  return Math.sqrt(total / (array.length - 1));
-}
-
-// Returns the common standard deviation of two arrays
-function combinedStandardDeviation(array1, array2) {
-  const sum1 = Math.pow(standardDeviation(array1), 2) * (array1.length - 1);
-  const sum2 = Math.pow(standardDeviation(array2), 2) * (array2.length - 1);
-  return Math.sqrt((sum1 + sum2) / (array1.length + array2.length - 2));
-}
-
-// Filter large outliers from an array. A 'large outlier' is a value that is at
-// least 50 times larger than the mean. This prevents the tests from failing
-// due to the standard deviation increase when a function unexpectedly takes
-// a very long time to execute.
-function filterOutliers(array) {
-  const arrMean = mean(array);
-  return array.filter((value) => value / arrMean < 50);
-}
-
-// t_(0.99995, ∞)
-// i.e. If a given comparison function is indeed timing-safe, the t-test result
-// has a 99.99% chance to be below this threshold. Unfortunately, this means
-// that this test will be a bit flakey and will fail 0.01% of the time even if
-// crypto.timingSafeEqual is working properly.
-// t-table ref: http://www.sjsu.edu/faculty/gerstman/StatPrimer/t-table.pdf
-// Note that in reality there are roughly `2 * numTrials - 2` degrees of
-// freedom, not ∞. However, assuming `numTrials` is large, this doesn't
-// significantly affect the threshold.
-const T_THRESHOLD = 3.892;
-
-const t = getTValue(crypto.timingSafeEqual);
-assert(
-  Math.abs(t) < T_THRESHOLD,
-  `timingSafeEqual should not leak information from its execution time (t=${t})`,
-);
-
-// As a coherence check to make sure the statistical tests are working, run the
-// same benchmarks again, this time with an unsafe comparison function. In this
-// case the t-value should be above the threshold.
-const unsafeCompare = (bufA, bufB) => bufA.equals(bufB);
-const t2 = getTValue(unsafeCompare);
-assert(
-  Math.abs(t2) > T_THRESHOLD,
-  `Buffer#equals should leak information from its execution time (t=${t2})`,
-);
diff --git a/tests/node_compat/test/pummel/test-fs-largefile.js b/tests/node_compat/test/pummel/test-fs-largefile.js
index 2a7741f092d4ea..df99ed7902bfad 100644
--- a/tests/node_compat/test/pummel/test-fs-largefile.js
+++ b/tests/node_compat/test/pummel/test-fs-largefile.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/pummel/test-fs-readfile-tostring-fail.js b/tests/node_compat/test/pummel/test-fs-readfile-tostring-fail.js
index b0df8eec6ecd15..672f2d37b34c2b 100644
--- a/tests/node_compat/test/pummel/test-fs-readfile-tostring-fail.js
+++ b/tests/node_compat/test/pummel/test-fs-readfile-tostring-fail.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
@@ -16,13 +16,15 @@ const assert = require('assert');
 const fs = require('fs');
 const cp = require('child_process');
 const kStringMaxLength = require('buffer').constants.MAX_STRING_LENGTH;
+const size = Math.floor(kStringMaxLength / 200);
+
 if (common.isAIX && (Number(cp.execSync('ulimit -f')) * 512) < kStringMaxLength)
   common.skip('intensive toString tests due to file size confinements');
 
 const tmpdir = require('../common/tmpdir');
 tmpdir.refresh();
 
-if (!tmpdir.hasEnoughSpace(kStringMaxLength)) {
+if (!tmpdir.hasEnoughSpace(kStringMaxLength + size)) {
   common.skip(`Not enough space in ${tmpdir.path}`);
 }
 
@@ -33,7 +35,6 @@ const stream = fs.createWriteStream(file, {
 
 stream.on('error', (err) => { throw err; });
 
-const size = kStringMaxLength / 200;
 const a = Buffer.alloc(size, 'a');
 let expectedSize = 0;
 
diff --git a/tests/node_compat/test/pummel/test-heapsnapshot-near-heap-limit-big.js b/tests/node_compat/test/pummel/test-heapsnapshot-near-heap-limit-big.js
index e1bb1280a3f28f..f5ac609d0d2710 100644
--- a/tests/node_compat/test/pummel/test-heapsnapshot-near-heap-limit-big.js
+++ b/tests/node_compat/test/pummel/test-heapsnapshot-near-heap-limit-big.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/pummel/test-net-many-clients.js b/tests/node_compat/test/pummel/test-net-many-clients.js
index a1789fa3559f96..08ba8df235a526 100644
--- a/tests/node_compat/test/pummel/test-net-many-clients.js
+++ b/tests/node_compat/test/pummel/test-net-many-clients.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/pummel/test-net-pingpong-delay.js b/tests/node_compat/test/pummel/test-net-pingpong-delay.js
index 8eb3edfa24ab81..28ff4cdc2d458f 100644
--- a/tests/node_compat/test/pummel/test-net-pingpong-delay.js
+++ b/tests/node_compat/test/pummel/test-net-pingpong-delay.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/pummel/test-process-cpuUsage.js b/tests/node_compat/test/pummel/test-process-cpuUsage.js
index b571e0ced8ed56..e7bc12036309fd 100644
--- a/tests/node_compat/test/pummel/test-process-cpuUsage.js
+++ b/tests/node_compat/test/pummel/test-process-cpuUsage.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/pummel/test-stream-pipe-multi.js b/tests/node_compat/test/pummel/test-stream-pipe-multi.js
index 979a722a5413d0..e9b56babe83d5d 100644
--- a/tests/node_compat/test/pummel/test-stream-pipe-multi.js
+++ b/tests/node_compat/test/pummel/test-stream-pipe-multi.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/sequential/test-buffer-creation-regression.js b/tests/node_compat/test/sequential/test-buffer-creation-regression.js
index d4b46fc8949e54..9a89080d35d83e 100644
--- a/tests/node_compat/test/sequential/test-buffer-creation-regression.js
+++ b/tests/node_compat/test/sequential/test-buffer-creation-regression.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/sequential/test-child-process-exit.js b/tests/node_compat/test/sequential/test-child-process-exit.js
index e7ab767163b775..7ce8235fbe3ff7 100644
--- a/tests/node_compat/test/sequential/test-child-process-exit.js
+++ b/tests/node_compat/test/sequential/test-child-process-exit.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/sequential/test-http-server-keep-alive-timeout-slow-server.js b/tests/node_compat/test/sequential/test-http-server-keep-alive-timeout-slow-server.js
index c07eae3f8d1ac8..1e5dee9124413e 100644
--- a/tests/node_compat/test/sequential/test-http-server-keep-alive-timeout-slow-server.js
+++ b/tests/node_compat/test/sequential/test-http-server-keep-alive-timeout-slow-server.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/sequential/test-net-connect-local-error.js b/tests/node_compat/test/sequential/test-net-connect-local-error.js
index d11ef37bc34e72..f27587a835f9c9 100644
--- a/tests/node_compat/test/sequential/test-net-connect-local-error.js
+++ b/tests/node_compat/test/sequential/test-net-connect-local-error.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/sequential/test-net-response-size.js b/tests/node_compat/test/sequential/test-net-response-size.js
index 2c279aaad0a844..f9a87ababd2c06 100644
--- a/tests/node_compat/test/sequential/test-net-response-size.js
+++ b/tests/node_compat/test/sequential/test-net-response-size.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 // Copyright Joyent, Inc. and other Node contributors.
diff --git a/tests/node_compat/test/sequential/test-net-server-bind.js b/tests/node_compat/test/sequential/test-net-server-bind.js
index 7048c097d6b140..322a4cd44c00b0 100644
--- a/tests/node_compat/test/sequential/test-net-server-bind.js
+++ b/tests/node_compat/test/sequential/test-net-server-bind.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';
diff --git a/tests/node_compat/test/sequential/test-tls-lookup.js b/tests/node_compat/test/sequential/test-tls-lookup.js
index 3801e3073ec2f2..14fc0a89313d5a 100644
--- a/tests/node_compat/test/sequential/test-tls-lookup.js
+++ b/tests/node_compat/test/sequential/test-tls-lookup.js
@@ -2,7 +2,7 @@
 // deno-lint-ignore-file
 
 // Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 20.11.1
+// Taken from Node 23.9.0
 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
 
 'use strict';

From 1eaac23af85db16961c8f10d7c699c820cca8f9f Mon Sep 17 00:00:00 2001
From: Jo Franchetti <jofranchetti@gmail.com>
Date: Tue, 18 Mar 2025 13:33:46 +0000
Subject: [PATCH 096/115] docs: adding jsdocs for url and workers (#28528)

---
 cli/tsc/dts/lib.deno.shared_globals.d.ts | 157 ++++++++++-
 cli/tsc/dts/lib.deno.worker.d.ts         | 295 +++++++++++++++++++--
 cli/tsc/dts/lib.deno_url.d.ts            | 323 +++++++++++++++++++----
 3 files changed, 692 insertions(+), 83 deletions(-)

diff --git a/cli/tsc/dts/lib.deno.shared_globals.d.ts b/cli/tsc/dts/lib.deno.shared_globals.d.ts
index e70d5422f4c3be..03dd9b2003a968 100644
--- a/cli/tsc/dts/lib.deno.shared_globals.d.ts
+++ b/cli/tsc/dts/lib.deno.shared_globals.d.ts
@@ -539,39 +539,192 @@ interface WorkerOptions {
   name?: string;
 }
 
-/** @category Workers */
+/**
+ * The Worker interface represents a background task that can be created via the
+ * `new Worker()` constructor. Workers run in a separate thread, allowing for parallel execution
+ * without blocking the main thread.
+ *
+ * Workers can be used to:
+ * - Perform CPU-intensive calculations
+ * - Process large datasets
+ * - Handle tasks in parallel with the main execution thread
+ * - Run code in isolation with its own event loop
+ *
+ * @example
+ * ```ts
+ * // Creating a basic worker (main.ts)
+ * const worker = new Worker(new URL("./worker.ts", import.meta.url).href, {
+ *   type: "module"
+ * });
+ *
+ * // Send data to the worker
+ * worker.postMessage({ command: "start", data: [1, 2, 3, 4] });
+ *
+ * // Receive messages from the worker
+ * worker.onmessage = (e) => {
+ *   console.log("Result from worker:", e.data);
+ *   worker.terminate(); // Stop the worker when done
+ * };
+ *
+ * // Handle worker errors
+ * worker.onerror = (e) => {
+ *   console.error("Worker error:", e.message);
+ * };
+ * ```
+ *
+ * @example
+ * ```ts
+ * // Worker file (worker.ts)
+ * // Worker context: self refers to the worker's global scope
+ * self.onmessage = (e) => {
+ *   if (e.data.command === "start") {
+ *     // Perform calculation with the data
+ *     const result = e.data.data.reduce((sum, num) => sum + num, 0);
+ *     // Send result back to main thread
+ *     self.postMessage(result);
+ *   }
+ * };
+ * ```
+ *
+ * @category Workers
+ */
 interface Worker extends EventTarget {
+  /** Event handler for error events. Fired when an error occurs in the worker's execution context. */
   onerror: (this: Worker, e: ErrorEvent) => any | null;
+
+  /** Event handler for message events. Fired when the worker sends data back to the main thread. */
   onmessage: (this: Worker, e: MessageEvent) => any | null;
+
+  /** Event handler for message error events. Fired when a message cannot be deserialized. */
   onmessageerror: (this: Worker, e: MessageEvent) => any | null;
+
+  /**
+   * Sends a message to the worker, transferring ownership of the specified transferable objects.
+   *
+   * @example
+   * ```ts
+   * // Create a buffer to transfer (not copy) to the worker
+   * const buffer = new ArrayBuffer(1024);
+   * worker.postMessage({ data: buffer }, [buffer]);
+   * // After transfer, buffer is no longer usable in the main thread
+   * ```
+   */
   postMessage(message: any, transfer: Transferable[]): void;
+
+  /**
+   * Sends a message to the worker.
+   *
+   * @example
+   * ```ts
+   * // Send a simple message with data
+   * worker.postMessage({
+   *   command: "process",
+   *   data: [1, 2, 3, 4],
+   *   settings: { optimize: true }
+   * });
+   * ```
+   */
   postMessage(message: any, options?: StructuredSerializeOptions): void;
+
+  /** Adds an event listener to the worker. */
   addEventListener<K extends keyof WorkerEventMap>(
     type: K,
     listener: (this: Worker, ev: WorkerEventMap[K]) => any,
     options?: boolean | AddEventListenerOptions,
   ): void;
+
+  /** Adds an event listener for events whose type attribute value is type. */
   addEventListener(
     type: string,
     listener: EventListenerOrEventListenerObject,
     options?: boolean | AddEventListenerOptions,
   ): void;
+
+  /** Removes an event listener from the worker. */
   removeEventListener<K extends keyof WorkerEventMap>(
     type: K,
     listener: (this: Worker, ev: WorkerEventMap[K]) => any,
     options?: boolean | EventListenerOptions,
   ): void;
+
+  /** Removes an event listener from the worker. */
   removeEventListener(
     type: string,
     listener: EventListenerOrEventListenerObject,
     options?: boolean | EventListenerOptions,
   ): void;
+
+  /**
+   * Immediately terminates the worker.
+   * This does not offer the worker an opportunity to finish its operations;
+   * it is stopped at once.
+   *
+   * @example
+   * ```ts
+   * // Create a worker
+   * const worker = new Worker(new URL("./worker.ts", import.meta.url).href, {
+   *   type: "module"
+   * });
+   *
+   * // Some time later, when you're done with the worker
+   * worker.terminate();
+   * // The worker is now terminated and its resources are freed
+   * ```
+   */
   terminate(): void;
 }
 
-/** @category Workers */
+/**
+ * The Worker constructor creates a new Worker object that executes code in a separate thread.
+ *
+ * Workers can import ES modules when created with the `type: "module"` option.
+ *
+ * @category Workers
+ */
 declare var Worker: {
   readonly prototype: Worker;
+
+  /**
+   * Creates a new Worker object.
+   *
+   * @param specifier - URL or file path for the worker's script.
+   *                    When using a relative path, use `new URL("./worker.ts", import.meta.url)`
+   *                    to ensure the path is correctly resolved relative to the current module.
+   * @param options - Worker options including type and name
+   *
+   * @example Module worker with URL resolution
+   * ```ts
+   * // Create a worker that can use ES modules
+   * const worker = new Worker(
+   *   new URL("./workers/heavy_computation.ts", import.meta.url).href,
+   *   { type: "module", name: "computation-worker" }
+   * );
+   * ```
+   *
+   * @example Worker communication pattern
+   * ```ts
+   * // Main thread
+   * const worker = new Worker(new URL("./worker.ts", import.meta.url).href, { type: "module" });
+   *
+   * // Set up communication
+   * worker.postMessage({ action: "start", data: [1, 2, 3, 4, 5] });
+   *
+   * worker.onmessage = (e) => {
+   *   console.log("Worker result:", e.data);
+   *   if (e.data.status === "complete") {
+   *     worker.terminate();
+   *   }
+   * };
+   *
+   * // Worker file (worker.ts)
+   * // self.onmessage = (e) => {
+   * //   if (e.data.action === "start") {
+   * //     const result = e.data.data.reduce((a, b) => a + b, 0);
+   * //     self.postMessage({ status: "complete", result });
+   * //   }
+   * // };
+   * ```
+   */
   new (specifier: string | URL, options?: WorkerOptions): Worker;
 };
 
diff --git a/cli/tsc/dts/lib.deno.worker.d.ts b/cli/tsc/dts/lib.deno.worker.d.ts
index c3094170314e4f..2164d5772158de 100644
--- a/cli/tsc/dts/lib.deno.worker.d.ts
+++ b/cli/tsc/dts/lib.deno.worker.d.ts
@@ -6,23 +6,53 @@
 /// <reference lib="esnext" />
 /// <reference lib="deno.cache" />
 
-/** @category Workers */
+/**
+ * Event map for WorkerGlobalScope event handlers.
+ *
+ * @category Workers
+ */
 declare interface WorkerGlobalScopeEventMap {
   "error": ErrorEvent;
   "unhandledrejection": PromiseRejectionEvent;
 }
 
-/** @category Workers */
+/**
+ * The WorkerGlobalScope interface represents the global execution context of a worker.
+ * It serves as the base interface for specific worker contexts like DedicatedWorkerGlobalScope.
+ *
+ * @example
+ * ```ts
+ * // Inside a worker script
+ * console.log(self.location.href);  // Logs the worker's location URL
+ *
+ * self.addEventListener("error", (event) => {
+ *   console.error("Error in worker:", event.message);
+ * });
+ * ```
+ *
+ * @category Workers
+ */
 declare interface WorkerGlobalScope extends EventTarget {
+  /** The location of the worker's script, represented by a WorkerLocation object. */
   readonly location: WorkerLocation;
+
+  /** The navigator object for the worker context. */
   readonly navigator: WorkerNavigator;
+
+  /** Event handler for error events that occur in the worker. */
   onerror: ((this: WorkerGlobalScope, ev: ErrorEvent) => any) | null;
+
+  /**
+   * Event handler for unhandled promise rejections in the worker.
+   */
   onunhandledrejection:
     | ((this: WorkerGlobalScope, ev: PromiseRejectionEvent) => any)
     | null;
 
+  /** Reference to the worker's global scope, which is the worker itself. */
   readonly self: WorkerGlobalScope & typeof globalThis;
 
+  /** Adds an event listener for events of a specific type on the worker. */
   addEventListener<K extends keyof WorkerGlobalScopeEventMap>(
     type: K,
     listener: (
@@ -31,11 +61,15 @@ declare interface WorkerGlobalScope extends EventTarget {
     ) => any,
     options?: boolean | AddEventListenerOptions,
   ): void;
+
+  /** Adds an event listener for events of a specific type on the worker. */
   addEventListener(
     type: string,
     listener: EventListenerOrEventListenerObject,
     options?: boolean | AddEventListenerOptions,
   ): void;
+
+  /** Removes an event listener previously registered with addEventListener. */
   removeEventListener<K extends keyof WorkerGlobalScopeEventMap>(
     type: K,
     listener: (
@@ -44,59 +78,167 @@ declare interface WorkerGlobalScope extends EventTarget {
     ) => any,
     options?: boolean | EventListenerOptions,
   ): void;
+
+  /** Removes an event listener previously registered with addEventListener. */
   removeEventListener(
     type: string,
     listener: EventListenerOrEventListenerObject,
     options?: boolean | EventListenerOptions,
   ): void;
 
+  /** The Deno namespace containing runtime APIs. */
   Deno: typeof Deno;
+
+  /** The cache storage object for the worker. */
   caches: CacheStorage;
 }
 
-/** @category Workers */
+/**
+ * The WorkerGlobalScope interface constructor.
+ *
+ * @category Workers
+ */
 declare var WorkerGlobalScope: {
   readonly prototype: WorkerGlobalScope;
   new (): never;
 };
 
-/** @category Platform */
+/**
+ * The WorkerNavigator interface represents the identity and state of the user agent
+ * (browser) in a worker context.
+ *
+ * @example
+ * ```ts
+ * // Inside a worker
+ * console.log(navigator.userAgent);  // Logs the user agent string
+ * console.log(navigator.hardwareConcurrency);  // Logs the number of logical processors
+ * ```
+ *
+ * @category Platform
+ */
 declare interface WorkerNavigator {
+  /** Provides access to the WebGPU API. */
   readonly gpu: GPU;
+
+  /** Returns the number of logical processors available to run threads on the user's computer. */
   readonly hardwareConcurrency: number;
+
+  /** Returns the user agent string for the current browser. */
   readonly userAgent: string;
+
+  /** Returns the preferred language of the user, as a string. */
   readonly language: string;
+
+  /** Returns an array of strings representing the languages known to the user. */
   readonly languages: string[];
 }
 
-/** @category Platform */
+/**
+ * The WorkerNavigator interface constructor.
+ *
+ * @category Platform
+ */
 declare var WorkerNavigator: {
   readonly prototype: WorkerNavigator;
   new (): never;
 };
 
-/** @category Platform */
+/**
+ * The navigator object for the worker context.
+ *
+ * @category Platform
+ */
 declare var navigator: WorkerNavigator;
 
-/** @category Workers */
+/**
+ * Event map for DedicatedWorkerGlobalScope event handlers.
+ * Extends WorkerGlobalScopeEventMap with worker-specific events.
+ *
+ * @category Workers
+ */
 declare interface DedicatedWorkerGlobalScopeEventMap
   extends WorkerGlobalScopeEventMap {
   "message": MessageEvent;
   "messageerror": MessageEvent;
 }
 
-/** @category Platform */
+/**
+ * The DedicatedWorkerGlobalScope interface represents the global execution context of a
+ * dedicated worker, which is a worker that is utilized by a single script.
+ *
+ * @example
+ * ```ts
+ * // Inside a dedicated worker
+ * self.addEventListener("message", (e) => {
+ *   const receivedData = e.data;
+ *   console.log("Worker received:", receivedData);
+ *
+ *   // Process the data and send a response back
+ *   const result = processData(receivedData);
+ *   self.postMessage(result);
+ * });
+ *
+ * function processData(data) {
+ *   return data.toUpperCase();
+ * }
+ * ```
+ *
+ * @category Platform
+ */
 declare interface DedicatedWorkerGlobalScope extends WorkerGlobalScope {
+  /** The name given to the worker when it was created. */
   readonly name: string;
+
+  /** Event handler for message events received from the parent context. */
   onmessage:
     | ((this: DedicatedWorkerGlobalScope, ev: MessageEvent) => any)
     | null;
+
+  /** Event handler for messageerror events that occur when a message cannot be deserialized. */
   onmessageerror:
     | ((this: DedicatedWorkerGlobalScope, ev: MessageEvent) => any)
     | null;
+
+  /**
+   * Closes the worker thread.
+   *
+   * @example
+   * ```ts
+   * // Inside a worker
+   * self.addEventListener("message", (e) => {
+   *   if (e.data === "terminate") {
+   *     self.close();  // Terminates the worker
+   *   }
+   * });
+   * ```
+   */
   close(): void;
+
+  /**
+   * Sends a message to the main thread that spawned the worker.
+   *
+   * @example
+   * ```ts
+   * // Inside a worker
+   * const result = { status: "complete", data: [1, 2, 3] };
+   * self.postMessage(result);
+   * ```
+   */
   postMessage(message: any, transfer: Transferable[]): void;
+
+  /**
+   * Sends a message to the main thread that spawned the worker.
+   *
+   * @example
+   * ```ts
+   * // Inside a worker, transferring an ArrayBuffer
+   * const buffer = new ArrayBuffer(1024);
+   * self.postMessage({ result: "data processed", buffer }, { transfer: [buffer] });
+   * ```
+   */
   postMessage(message: any, options?: StructuredSerializeOptions): void;
+
+  /** Adds an event listener for events of a specific type on the dedicated worker. */
   addEventListener<K extends keyof DedicatedWorkerGlobalScopeEventMap>(
     type: K,
     listener: (
@@ -105,11 +247,15 @@ declare interface DedicatedWorkerGlobalScope extends WorkerGlobalScope {
     ) => any,
     options?: boolean | AddEventListenerOptions,
   ): void;
+
+  /** Adds an event listener for events of a specific type on the dedicated worker. */
   addEventListener(
     type: string,
     listener: EventListenerOrEventListenerObject,
     options?: boolean | AddEventListenerOptions,
   ): void;
+
+  /** Removes an event listener previously registered with addEventListener. */
   removeEventListener<K extends keyof DedicatedWorkerGlobalScopeEventMap>(
     type: K,
     listener: (
@@ -118,6 +264,8 @@ declare interface DedicatedWorkerGlobalScope extends WorkerGlobalScope {
     ) => any,
     options?: boolean | EventListenerOptions,
   ): void;
+
+  /** Removes an event listener previously registered with addEventListener. */
   removeEventListener(
     type: string,
     listener: EventListenerOrEventListenerObject,
@@ -125,44 +273,102 @@ declare interface DedicatedWorkerGlobalScope extends WorkerGlobalScope {
   ): void;
 }
 
-/** @category Platform */
+/**
+ * The DedicatedWorkerGlobalScope interface constructor.
+ *
+ * @category Platform
+ */
 declare var DedicatedWorkerGlobalScope: {
   readonly prototype: DedicatedWorkerGlobalScope;
   new (): never;
 };
 
-/** @category Workers */
+/**
+ * The name given to the worker when it was created.
+ *
+ * @category Workers
+ */
 declare var name: string;
-/** @category Workers */
+
+/**
+ * Event handler for message events received from the parent context.
+ *
+ * @category Workers
+ */
 declare var onmessage:
   | ((this: DedicatedWorkerGlobalScope, ev: MessageEvent) => any)
   | null;
-/** @category Workers */
+
+/**
+ * Event handler for messageerror events that occur when a message cannot be deserialized.
+ *
+ * @category Workers
+ */
 declare var onmessageerror:
   | ((this: DedicatedWorkerGlobalScope, ev: MessageEvent) => any)
   | null;
-/** @category Workers */
+
+/**
+ * Closes the worker thread.
+ *
+ * @category Workers
+ */
 declare function close(): void;
-/** @category Workers */
+
+/**
+ * Sends a message to the main thread that spawned the worker.
+ *
+ * @category Workers
+ */
 declare function postMessage(message: any, transfer: Transferable[]): void;
-/** @category Workers */
+
+/**
+ * Sends a message to the main thread that spawned the worker.
+ *
+ * @category Workers
+ */
 declare function postMessage(
   message: any,
   options?: StructuredSerializeOptions,
 ): void;
-/** @category Platform */
+
+/**
+ * The navigator object for the worker context.
+ *
+ * @category Platform
+ */
 declare var navigator: WorkerNavigator;
-/** @category Platform */
+
+/**
+ * Event handler for error events that occur in the worker.
+ *
+ * @category Platform
+ */
 declare var onerror:
   | ((this: DedicatedWorkerGlobalScope, ev: ErrorEvent) => any)
   | null;
-/** @category Observability */
+
+/**
+ * Event handler for unhandled promise rejections in the worker.
+ *
+ * @category Observability
+ */
 declare var onunhandledrejection:
   | ((this: DedicatedWorkerGlobalScope, ev: PromiseRejectionEvent) => any)
   | null;
-/** @category Workers */
+
+/**
+ * Reference to the worker's global scope, which is the worker itself.
+ *
+ * @category Workers
+ */
 declare var self: WorkerGlobalScope & typeof globalThis;
-/** @category Events */
+
+/**
+ * Adds an event listener for events of a specific type on the worker.
+ *
+ * @category Events
+ */
 declare function addEventListener<
   K extends keyof DedicatedWorkerGlobalScopeEventMap,
 >(
@@ -173,13 +379,23 @@ declare function addEventListener<
   ) => any,
   options?: boolean | AddEventListenerOptions,
 ): void;
-/** @category Events */
+
+/**
+ * Adds an event listener for events of a specific type on the worker.
+ *
+ * @category Events
+ */
 declare function addEventListener(
   type: string,
   listener: EventListenerOrEventListenerObject,
   options?: boolean | AddEventListenerOptions,
 ): void;
-/** @category Events */
+
+/**
+ * Removes an event listener previously registered with addEventListener.
+ *
+ * @category Events
+ */
 declare function removeEventListener<
   K extends keyof DedicatedWorkerGlobalScopeEventMap,
 >(
@@ -190,7 +406,12 @@ declare function removeEventListener<
   ) => any,
   options?: boolean | EventListenerOptions,
 ): void;
-/** @category Events */
+
+/**
+ * Removes an event listener previously registered with addEventListener.
+ *
+ * @category Events
+ */
 declare function removeEventListener(
   type: string,
   listener: EventListenerOrEventListenerObject,
@@ -199,22 +420,42 @@ declare function removeEventListener(
 
 // TODO(nayeemrmn): Move this to `extensions/web` where its implementation is.
 // The types there must first be split into window, worker and global types.
-/** The absolute location of the script executed by the Worker. Such an object
+/**
+ * The absolute location of the script executed by the Worker. Such an object
  * is initialized for each worker and is available via the
  * WorkerGlobalScope.location property obtained by calling self.location.
  *
  * @category Platform
  */
 declare interface WorkerLocation {
+  /** The fragment identifier of the worker's URL, including the leading '#' character or an empty string if there is no fragment identifier. */
   readonly hash: string;
+
+  /** The host and port of the worker's URL. */
   readonly host: string;
+
+  /** The domain of the worker's URL. */
   readonly hostname: string;
+
+  /** The complete URL of the worker script. */
   readonly href: string;
+
+  /** Returns a string containing the serialized URL of the worker script. */
   toString(): string;
+
+  /** The origin of the worker's URL, which is the scheme, domain, and port. */
   readonly origin: string;
+
+  /** The path component of the worker's URL, including the leading slash. */
   readonly pathname: string;
+
+  /** The port component of the worker's URL, or an empty string if the port is not specified. */
   readonly port: string;
+
+  /** The protocol scheme of the worker's URL, including the trailing colon. */
   readonly protocol: string;
+
+  /** The search (query) component of the worker's URL, including the leading '?' character or an empty string if there is no search component. */
   readonly search: string;
 }
 
@@ -233,5 +474,9 @@ declare var WorkerLocation: {
 
 // TODO(nayeemrmn): Move this to `extensions/web` where its implementation is.
 // The types there must first be split into window, worker and global types.
-/** @category Platform */
+/**
+ * The location object for the worker script.
+ *
+ * @category Platform
+ */
 declare var location: WorkerLocation;
diff --git a/cli/tsc/dts/lib.deno_url.d.ts b/cli/tsc/dts/lib.deno_url.d.ts
index 0bbfefa3b73d87..d7b46d5f8b3981 100644
--- a/cli/tsc/dts/lib.deno_url.d.ts
+++ b/cli/tsc/dts/lib.deno_url.d.ts
@@ -5,13 +5,37 @@
 /// <reference no-default-lib="true" />
 /// <reference lib="esnext" />
 
-/** @category URL */
+/**
+ * Iterator for the URLSearchParams class, used to iterate over key-value pairs in search parameters.
+ *
+ * @example
+ * ```ts
+ * const url = new URL('https://example.org/path?a=1&b=2');
+ * const queryString = url.search.substring(1); // Remove the leading '?'
+ * const params = new URLSearchParams(queryString);
+ * const iterator = params.entries();
+ * console.log(iterator.next().value); // ['a', '1']
+ * console.log(iterator.next().value); // ['b', '2']
+ * ```
+ *
+ * @category URL
+ */
 interface URLSearchParamsIterator<T>
   extends IteratorObject<T, BuiltinIteratorReturn, unknown> {
   [Symbol.iterator](): URLSearchParamsIterator<T>;
 }
 
-/** @category URL */
+/**
+ * URLSearchParams provides methods for working with the query string of a URL.
+ *
+ * Use this interface to:
+ * - Parse query parameters from URLs
+ * - Build and modify query strings
+ * - Handle form data (when used with FormData)
+ * - Safely encode/decode URL parameter values
+ *
+ * @category URL
+ */
 interface URLSearchParams {
   /** Appends a specified key/value pair as a new search parameter.
    *
@@ -166,6 +190,44 @@ interface URLSearchParams {
 /** @category URL */
 declare var URLSearchParams: {
   readonly prototype: URLSearchParams;
+  /**
+   * Creates a new URLSearchParams object for parsing query strings.
+   *
+   * URLSearchParams is Deno's built-in query string parser, providing a standard
+   * way to parse, manipulate, and stringify URL query parameters. Instead of manually
+   * parsing query strings with regex or string operations, use this API for robust
+   * handling of URL query parameters.
+   *
+   * @example
+   * ```ts
+   * // From a URL object's query string (recommended approach for parsing query strings in URLs)
+   * const url = new URL('https://example.org/path?foo=bar&baz=qux');
+   * const params = url.searchParams;  // No need to manually extract the query string
+   * console.log(params.get('foo'));  // Logs "bar"
+   *
+   * // Manually parsing a query string from a URL
+   * const urlString = 'https://example.org/path?foo=bar&baz=qux';
+   * const queryString = urlString.split('?')[1];  // Extract query string part
+   * const params2 = new URLSearchParams(queryString);
+   * console.log(params2.get('foo'));  // Logs "bar"
+   *
+   * // Empty search parameters
+   * const params3 = new URLSearchParams();
+   * console.log(params3.toString());  // Logs ""
+   *
+   * // From a string
+   * const params4 = new URLSearchParams("foo=bar&baz=qux");
+   * console.log(params4.get("foo"));  // Logs "bar"
+   *
+   * // From an array of pairs
+   * const params5 = new URLSearchParams([["foo", "1"], ["bar", "2"]]);
+   * console.log(params5.toString());  // Logs "foo=1&bar=2"
+   *
+   * // From a record object
+   * const params6 = new URLSearchParams({"foo": "1", "bar": "2"});
+   * console.log(params6.toString());  // Logs "foo=1&bar=2"
+   * ```
+   */
   new (
     init?:
       | Iterable<string[]>
@@ -176,7 +238,11 @@ declare var URLSearchParams: {
 };
 
 /** The URL interface represents an object providing static methods used for
- * creating, parsing, and manipulating URLs.
+ * creating, parsing, and manipulating URLs in Deno.
+ *
+ * Use the URL API for safely parsing, constructing, normalizing, and encoding URLs.
+ * This is the preferred way to work with URLs in Deno rather than manual string
+ * manipulation which can lead to errors and security issues.
  *
  * @see https://developer.mozilla.org/docs/Web/API/URL
  *
@@ -191,12 +257,9 @@ interface URL {
    * ```ts
    * const myURL = new URL('https://example.org/foo#bar');
    * console.log(myURL.hash);  // Logs "#bar"
-   * ```
    *
-   * @example
-   * ```ts
-   * const myURL = new URL('https://example.org');
-   * console.log(myURL.hash);  // Logs ""
+   * const myOtherURL = new URL('https://example.org');
+   * console.log(myOtherURL.hash);  // Logs ""
    * ```
    *
    * @see https://developer.mozilla.org/docs/Web/API/URL/hash
@@ -210,12 +273,9 @@ interface URL {
    * ```ts
    * const myURL = new URL('https://example.org/foo');
    * console.log(myURL.host);  // Logs "example.org"
-   * ```
    *
-   * @example
-   * ```ts
-   * const myURL = new URL('https://example.org:8080/foo');
-   * console.log(myURL.host);  // Logs "example.org:8080"
+   * const myOtherURL = new URL('https://example.org:8080/foo');
+   * console.log(myOtherURL.host);  // Logs "example.org:8080"
    * ```
    *
    * @see https://developer.mozilla.org/docs/Web/API/URL/host
@@ -268,12 +328,9 @@ interface URL {
    * ```ts
    * const myURL = new URL('https://foo.example.org/bar');
    * console.log(myURL.origin);  // Logs "https://foo.example.org"
-   * ```
    *
-   * @example
-   * ```ts
-   * const myURL = new URL('https://example.org:8080/foo');
-   * console.log(myURL.origin);  // Logs "https://example.org:8080"
+   * const myOtherURL = new URL('https://example.org:8080/foo');
+   * console.log(myOtherURL.origin);  // Logs "https://example.org:8080"
    * ```
    *
    * @see https://developer.mozilla.org/docs/Web/API/URL/origin
@@ -300,12 +357,9 @@ interface URL {
    * ```ts
    * const myURL = new URL('https://example.org/foo/bar');
    * console.log(myURL.pathname);  // Logs "/foo/bar"
-   * ```
    *
-   * @example
-   * ```ts
-   * const myURL = new URL('https://example.org');
-   * console.log(myURL.pathname);  // Logs "/"
+   * const myOtherURL = new URL('https://example.org');
+   * console.log(myOtherURL.pathname);  // Logs "/"
    * ```
    *
    * @see https://developer.mozilla.org/docs/Web/API/URL/pathname
@@ -319,12 +373,9 @@ interface URL {
    * ```ts
    * const myURL = new URL('https://example.org:8080/foo');
    * console.log(myURL.port);  // Logs "8080"
-   * ```
    *
-   * @example
-   * ```ts
-   * const myURL = new URL('https://example.org/foo');
-   * console.log(myURL.port);  // Logs ""
+   * const myOtherURL = new URL('https://example.org/foo');
+   * console.log(myOtherURL.port);  // Logs ""
    * ```
    *
    * @see https://developer.mozilla.org/docs/Web/API/URL/port
@@ -352,12 +403,9 @@ interface URL {
    * ```ts
    * const myURL = new URL('https://example.org/foo?bar=baz');
    * console.log(myURL.search);  // Logs "?bar=baz"
-   * ```
    *
-   * @example
-   * ```ts
-   * const myURL = new URL('https://example.org/foo?bar=baz#quux');
-   * console.log(myURL.search);  // Logs "?bar=baz"
+   * const myOtherURL = new URL('https://example.org/foo?bar=baz#quux');
+   * console.log(myOtherURL.search);  // Logs "?bar=baz"
    * ```
    *
    * @see https://developer.mozilla.org/docs/Web/API/URL/search
@@ -365,15 +413,40 @@ interface URL {
   search: string;
 
   /**
-   * The `searchParams` property of the URL interface is a {@linkcode URL.URLSearchParams} object that represents the search parameters of the URL.
+   * The `searchParams` property of the URL interface provides a direct interface to
+   * query parameters through a {@linkcode URLSearchParams} object.
+   *
+   * This property offers a convenient way to:
+   * - Parse URL query parameters
+   * - Manipulate query strings
+   * - Add, modify, or delete URL parameters
+   * - Work with form data in a URL-encoded format
+   * - Handle query string encoding/decoding automatically
    *
    * @example
    * ```ts
-   * const myURL = new URL('https://example.org/foo?bar=baz');
+   * // Parse and access query parameters from a URL
+   * const myURL = new URL('https://example.org/search?term=deno&page=2&sort=desc');
    * const params = myURL.searchParams;
    *
-   * console.log(params);  // Logs { bar: "baz" }
-   * console.log(params.get('bar'));  // Logs "baz"
+   * console.log(params.get('term'));  // Logs "deno"
+   * console.log(params.get('page'));  // Logs "2"
+   *
+   * // Check if a parameter exists
+   * console.log(params.has('sort'));  // Logs true
+   *
+   * // Add or modify parameters (automatically updates the URL)
+   * params.append('filter', 'recent');
+   * params.set('page', '3');
+   * console.log(myURL.href);  // URL is updated with new parameters
+   *
+   * // Remove a parameter
+   * params.delete('sort');
+   *
+   * // Iterate over all parameters
+   * for (const [key, value] of params) {
+   *   console.log(`${key}: ${value}`);
+   * }
    * ```
    *
    * @see https://developer.mozilla.org/docs/Web/API/URL/searchParams
@@ -408,34 +481,142 @@ interface URL {
 }
 
 /** The URL interface represents an object providing static methods used for
- * creating object URLs.
+ * creating, parsing, and manipulating URLs.
+ *
+ * @see https://developer.mozilla.org/docs/Web/API/URL
  *
  * @category URL
  */
 declare var URL: {
   readonly prototype: URL;
   /**
+   * Creates a new URL object by parsing the specified URL string with an optional base URL.
+   * Throws a TypeError If the URL is invalid or if a relative URL is provided without a base.
+   *
+   * Use this to parse and validate URLs safely. Use this instead of string
+   * manipulation to ensure correct URL handling, proper encoding, and protection against
+   * security issues like path traversal attacks.
+   *
+   * @example
+   * ```ts
+   * // Creating a URL from an absolute URL string
+   * const url1 = new URL('https://example.org/foo');
+   * console.log(url1.href);  // Logs "https://example.org/foo"
+   *
+   * // Creating a URL from a relative URL string with a base URL
+   * const url2 = new URL('/bar', 'https://example.org');
+   * console.log(url2.href);  // Logs "https://example.org/bar"
+   *
+   * // Joining path segments safely (prevents path traversal)
+   * const baseUrl = 'https://api.example.com/v1';
+   * const userInput = '../secrets'; // Potentially malicious input
+   * const safeUrl = new URL(userInput, baseUrl);
+   * console.log(safeUrl.href); // Correctly resolves to "https://api.example.com/secrets"
+   *
+   * // Constructing URLs with proper encoding
+   * const search = 'query with spaces';
+   * const url3 = new URL('https://example.org/search');
+   * url3.searchParams.set('q', search); // Automatically handles URL encoding
+   * console.log(url3.href); // "https://example.org/search?q=query+with+spaces"
+   * ```
+   *
    * @see https://developer.mozilla.org/docs/Web/API/URL/URL
    */
   new (url: string | URL, base?: string | URL): URL;
 
   /**
+   * Parses a URL string or URL object and returns a URL object.
+   *
+   * @example
+   * ```ts
+   * const myURL = URL.parse('https://example.org');
+   * console.log(myURL.href);  // Logs "https://example.org/"
+   * console.log(myURL.hostname);  // Logs "example.org"
+   * console.log(myURL.pathname);  // Logs "/"
+   * console.log(myURL.protocol);  // Logs "https:"
+   *
+   * const baseURL = new URL('https://example.org');
+   * const myNewURL = URL.parse('/foo', baseURL);
+   * console.log(myNewURL.href);  // Logs "https://example.org/foo"
+   * console.log(myNewURL.hostname);  // Logs "example.org"
+   * console.log(myNewURL.pathname);  // Logs "/foo"
+   * console.log(myNewURL.protocol);  // Logs "https:"
+   * ```
+   *
    * @see https://developer.mozilla.org/docs/Web/API/URL/parse_static
    */
   parse(url: string | URL, base?: string | URL): URL | null;
 
   /**
+   * Returns a boolean value indicating if a URL string is valid and can be parsed.
+   *
+   * @example
+   * ```ts
+   * // Check if an absolute URL string is valid
+   * console.log(URL.canParse('https://example.org'));  // Logs true
+   * console.log(URL.canParse('https:://example.org'));  // Logs false
+   *
+   * // Check if a relative URL string with a base is valid
+   * console.log(URL.canParse('/foo', 'https://example.org'));  // Logs true
+   * console.log(URL.canParse('/foo', 'https:://example.org'));  // Logs false
+   * ```
+   *
    * @see https://developer.mozilla.org/docs/Web/API/URL/canParse_static
    */
   canParse(url: string | URL, base?: string | URL): boolean;
 
   /**
-   * @see https://developer.mozilla.org/docs/Web/API/URL/createObjectURL
+   * Creates a unique, temporary URL that represents a given Blob, File, or MediaSource object.
+   *
+   * This method is particularly useful for:
+   * - Creating URLs for dynamically generated content
+   * - Working with blobs in a browser context
+   * - Creating workers from dynamically generated code
+   * - Setting up temporary URL references for file downloads
+   *
+   * Note: Always call URL.revokeObjectURL() when you're done using the URL to prevent memory leaks.
+   *
+   * @example
+   * ```ts
+   * // Create a URL string for a Blob
+   * const blob = new Blob(["Hello, world!"], { type: "text/plain" });
+   * const url = URL.createObjectURL(blob);
+   * console.log(url);  // Logs something like "blob:null/1234-5678-9101-1121"
+   *
+   * // Dynamic web worker creation in Deno
+   * const workerCode = `
+   *   self.onmessage = (e) => {
+   *     self.postMessage(e.data.toUpperCase());
+   *   };
+   * `;
+   * const workerBlob = new Blob([workerCode], { type: "application/javascript" });
+   * const workerUrl = URL.createObjectURL(workerBlob);
+   * const worker = new Worker(workerUrl, { type: "module" });
+   *
+   * worker.onmessage = (e) => console.log(e.data);
+   * worker.postMessage("hello from deno");
+   *
+   * // Always revoke when done to prevent memory leaks
+   * URL.revokeObjectURL(workerUrl);
+   * ```
+   *
+   * @see https://developer.mozilla.org/docs/Web/API/URL/createObjectURL_static
    */
   createObjectURL(blob: Blob): string;
 
   /**
-   * @see https://developer.mozilla.org/docs/Web/API/URL/revokeObjectURL
+   * Revokes a previously created object URL, freeing the memory associated with it.
+   *
+   * Important for memory management in applications that create dynamic URLs.
+   * Once an object URL is revoked:
+   * - It can no longer be used to fetch the content it referenced
+   * - The browser/runtime is allowed to release the memory or resources associated with it
+   * - Workers created via the URL will continue to run, but the URL becomes invalid for new creations
+   *
+   * For security and performance in Deno applications, always revoke object URLs as soon as
+   * they're no longer needed, especially when processing large files or generating many URLs.
+   *
+   * @see https://developer.mozilla.org/docs/Web/API/URL/revokeObjectURL_static
    */
   revokeObjectURL(url: string): void;
 };
@@ -506,28 +687,58 @@ interface URLPatternOptions {
  * The URLPattern API provides a web platform primitive for matching URLs based
  * on a convenient pattern syntax.
  *
- * The syntax is based on path-to-regexp. Wildcards, named capture groups,
- * regular groups, and group modifiers are all supported.
+ * Common use cases for URLPattern include:
+ * - Building routers for web applications
+ * - Pattern-matching URLs for middleware
+ * - Extracting parameters from URL paths
+ * - URL-based feature toggles
+ * - Routing in serverless and edge functions
  *
- * ```ts
- * // Specify the pattern as structured data.
- * const pattern = new URLPattern({ pathname: "/users/:user" });
- * const match = pattern.exec("https://blog.example.com/users/joe");
- * console.log(match.pathname.groups.user); // joe
- * ```
+ * The syntax is based on path-to-regexp, supporting wildcards, named capture groups,
+ * regular groups, and group modifiers - similar to Express.js route patterns.
  *
+ * @example
  * ```ts
- * // Specify a fully qualified string pattern.
- * const pattern = new URLPattern("https://example.com/books/:id");
- * console.log(pattern.test("https://example.com/books/123")); // true
- * console.log(pattern.test("https://deno.land/books/123")); // false
+ * // Basic routing with URLPattern (similar to Express.js)
+ * const routes = [
+ *   new URLPattern({ pathname: "/users" }),
+ *   new URLPattern({ pathname: "/users/:id" }),
+ *   new URLPattern({ pathname: "/products/:category/:id?" }),
+ * ];
+ *
+ * // Check incoming request against routes
+ * function handleRequest(req: Request) {
+ *   const url = new URL(req.url);
+ *
+ *   for (const route of routes) {
+ *     const match = route.exec(url);
+ *     if (match) {
+ *       // Extract parameters from the URL
+ *       const params = match.pathname.groups;
+ *       return new Response(`Matched: ${JSON.stringify(params)}`);
+ *     }
+ *   }
+ *
+ *   return new Response("Not found", { status: 404 });
+ * }
  * ```
  *
+ * @example
  * ```ts
- * // Specify a relative string pattern with a base URL.
- * const pattern = new URLPattern("/article/:id", "https://blog.example.com");
- * console.log(pattern.test("https://blog.example.com/article")); // false
- * console.log(pattern.test("https://blog.example.com/article/123")); // true
+ * // Matching different URL parts
+ * const apiPattern = new URLPattern({
+ *   protocol: "https",
+ *   hostname: "api.example.com",
+ *   pathname: "/v:version/:resource/:id?",
+ *   search: "*", // Match any query string
+ * });
+ *
+ * const match = apiPattern.exec("https://api.example.com/v1/users/123?format=json");
+ * if (match) {
+ *   console.log(match.pathname.groups.version); // "1"
+ *   console.log(match.pathname.groups.resource); // "users"
+ *   console.log(match.pathname.groups.id); // "123"
+ * }
  * ```
  *
  * @category URL

From 5aeb04f443d8a40dfb19aad85f2d1e6569970b4f Mon Sep 17 00:00:00 2001
From: Jake Champion <me@jakechampion.name>
Date: Tue, 18 Mar 2025 13:56:39 +0000
Subject: [PATCH 097/115] fix: add stackTraceLimit to ErrorConstructor
 interface and removed ErrorWithStackTraceLimit interface (#28539)

Signed-off-by: Jake Champion <me@jakechampion.name>
---
 cli/tsc/dts/lib.deno.shared_globals.d.ts |  1 +
 ext/node/polyfills/assertion_error.ts    | 12 +++---------
 2 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/cli/tsc/dts/lib.deno.shared_globals.d.ts b/cli/tsc/dts/lib.deno.shared_globals.d.ts
index 03dd9b2003a968..84dd706d0940b7 100644
--- a/cli/tsc/dts/lib.deno.shared_globals.d.ts
+++ b/cli/tsc/dts/lib.deno.shared_globals.d.ts
@@ -907,6 +907,7 @@ declare var CustomEvent: {
 interface ErrorConstructor {
   /** See https://v8.dev/docs/stack-trace-api#stack-trace-collection-for-custom-exceptions. */
   captureStackTrace(error: Object, constructor?: Function): void;
+  stackTraceLimit: number;
   // TODO(nayeemrmn): Support `Error.prepareStackTrace()`. We currently use this
   // internally in a way that makes it unavailable for users.
 }
diff --git a/ext/node/polyfills/assertion_error.ts b/ext/node/polyfills/assertion_error.ts
index b56cec2c1d9f27..2ac0ae01a7d7f2 100644
--- a/ext/node/polyfills/assertion_error.ts
+++ b/ext/node/polyfills/assertion_error.ts
@@ -373,10 +373,6 @@ export interface AssertionErrorConstructorOptions {
   stackStartFunction?: Function;
 }
 
-interface ErrorWithStackTraceLimit extends ErrorConstructor {
-  stackTraceLimit: number;
-}
-
 export class AssertionError extends Error {
   [key: string]: unknown;
 
@@ -398,10 +394,8 @@ export class AssertionError extends Error {
       expected,
     } = options;
 
-    // TODO(schwarzkopfb): `stackTraceLimit` should be added to `ErrorConstructor` in
-    // cli/dts/lib.deno.shared_globals.d.ts
-    const limit = (Error as ErrorWithStackTraceLimit).stackTraceLimit;
-    (Error as ErrorWithStackTraceLimit).stackTraceLimit = 0;
+    const limit = Error.stackTraceLimit;
+    Error.stackTraceLimit = 0;
 
     if (message != null) {
       super(String(message));
@@ -501,7 +495,7 @@ export class AssertionError extends Error {
       }
     }
 
-    (Error as ErrorWithStackTraceLimit).stackTraceLimit = limit;
+    Error.stackTraceLimit = limit;
 
     this.generatedMessage = !message;
     ObjectDefineProperty(this, "name", {

From fb3df15fc827f51ffbc3460338cc240e46976175 Mon Sep 17 00:00:00 2001
From: Divy Srivastava <dj.srivastava23@gmail.com>
Date: Tue, 18 Mar 2025 22:03:35 +0530
Subject: [PATCH 098/115] fix(ext/node): restrict ATTACH DATABASE statement
 (#28513)

Disable `ATTACH DATABASE` statement in `node:sqlite` since it is not
supervised by Deno's permission system
---
 Cargo.lock                       | 55 +++++++++++--------------
 Cargo.toml                       |  8 ++--
 ext/node/Cargo.toml              |  1 -
 ext/node/ops/sqlite/database.rs  | 71 ++++++++++++++++++++++++++++++--
 ext/node/ops/sqlite/session.rs   |  2 +-
 ext/node/ops/sqlite/statement.rs |  2 +-
 tests/unit_node/sqlite_test.ts   | 11 +++++
 7 files changed, 107 insertions(+), 43 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 9f941cc728936d..8f8f91c5b2bc0e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -524,16 +524,16 @@ dependencies = [
 
 [[package]]
 name = "bindgen"
-version = "0.69.5"
+version = "0.70.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088"
+checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f"
 dependencies = [
  "bitflags 2.8.0",
  "cexpr",
  "clang-sys",
- "itertools 0.10.5",
- "lazy_static",
- "lazycell",
+ "itertools 0.13.0",
+ "log",
+ "prettyplease",
  "proc-macro2",
  "quote",
  "regex",
@@ -544,20 +544,18 @@ dependencies = [
 
 [[package]]
 name = "bindgen"
-version = "0.70.1"
+version = "0.71.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f"
+checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3"
 dependencies = [
  "bitflags 2.8.0",
  "cexpr",
  "clang-sys",
  "itertools 0.13.0",
- "log",
- "prettyplease",
  "proc-macro2",
  "quote",
  "regex",
- "rustc-hash 1.1.0",
+ "rustc-hash 2.1.1",
  "shlex",
  "syn 2.0.87",
 ]
@@ -2309,7 +2307,6 @@ dependencies = [
  "ipnetwork",
  "k256",
  "libc",
- "libsqlite3-sys",
  "libz-sys",
  "md-5",
  "md4",
@@ -2858,9 +2855,9 @@ dependencies = [
 
 [[package]]
 name = "denokv_proto"
-version = "0.9.0"
+version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d5b77de4d3b9215e14624d4f4eb16cb38c0810e3f5860ba3b3fc47d0537f9a4d"
+checksum = "fdc7c5c829ce15275d0898c94eecc243e2a47269a3f8ec5a1da45fe268a90886"
 dependencies = [
  "async-trait",
  "chrono",
@@ -2874,9 +2871,9 @@ dependencies = [
 
 [[package]]
 name = "denokv_remote"
-version = "0.9.0"
+version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6497c28eec268ed99f1e8664f0842935f02d1508529c67d94c57ca5d893d743"
+checksum = "ecd57015ff7b5d51cd7a61b83baec8e38367631cd13dc77140412fe5143e15fb"
 dependencies = [
  "async-stream",
  "async-trait",
@@ -2900,9 +2897,9 @@ dependencies = [
 
 [[package]]
 name = "denokv_sqlite"
-version = "0.9.0"
+version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc0f21a450a35eb85760761401fddf9bfff9840127be07a6ca5c31863127913d"
+checksum = "01024c5ad6ce7838d27dc35cfcc0877eee57e07a25126ccaac8eb2b61a0cf04f"
 dependencies = [
  "async-stream",
  "async-trait",
@@ -4187,11 +4184,11 @@ dependencies = [
 
 [[package]]
 name = "hashlink"
-version = "0.9.1"
+version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af"
+checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1"
 dependencies = [
- "hashbrown 0.14.5",
+ "hashbrown 0.15.2",
 ]
 
 [[package]]
@@ -5070,12 +5067,6 @@ dependencies = [
  "spin",
 ]
 
-[[package]]
-name = "lazycell"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
-
 [[package]]
 name = "lcms2"
 version = "6.1.0"
@@ -5162,11 +5153,11 @@ dependencies = [
 
 [[package]]
 name = "libsqlite3-sys"
-version = "0.30.1"
+version = "0.32.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149"
+checksum = "fbb8270bb4060bd76c6e96f20c52d80620f1d82a3470885694e41e0f81ef6fe7"
 dependencies = [
- "bindgen 0.69.5",
+ "bindgen 0.71.1",
  "cc",
  "pkg-config",
  "vcpkg",
@@ -6949,14 +6940,14 @@ dependencies = [
 
 [[package]]
 name = "rusqlite"
-version = "0.32.0"
+version = "0.34.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1cdbe9230a57259b37f7257d0aff38b8c9dbda3513edba2105e59b130189d82f"
+checksum = "37e34486da88d8e051c7c0e23c3f15fd806ea8546260aa2fec247e97242ec143"
 dependencies = [
  "bitflags 2.8.0",
  "fallible-iterator",
  "fallible-streaming-iterator",
- "hashlink 0.9.1",
+ "hashlink 0.10.0",
  "libsqlite3-sys",
  "smallvec",
 ]
diff --git a/Cargo.toml b/Cargo.toml
index d3bb0f2c8f4559..f61e0fffc620b6 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -70,10 +70,10 @@ eszip = "0.83.0"
 napi_sym = { version = "0.125.0", path = "./ext/napi/sym" }
 test_util = { package = "test_server", path = "./tests/util/server" }
 
-denokv_proto = "0.9.0"
-denokv_remote = "0.9.0"
+denokv_proto = "0.10.0"
+denokv_remote = "0.10.0"
 # denokv_sqlite brings in bundled sqlite if we don't disable the default features
-denokv_sqlite = { default-features = false, version = "0.9.0" }
+denokv_sqlite = { default-features = false, version = "0.10.0" }
 
 # exts
 deno_broadcast_channel = { version = "0.189.0", path = "./ext/broadcast_channel" }
@@ -269,7 +269,7 @@ regex = "^1.7.0"
 reqwest = { version = "=0.12.5", default-features = false, features = ["rustls-tls", "stream", "gzip", "brotli", "socks", "json", "http2"] } # pinned because of https://github.com/seanmonstar/reqwest/pull/1955
 ring = "^0.17.0"
 ripemd = "0.1.3"
-rusqlite = { version = "0.32.0", features = ["unlock_notify", "bundled", "session"] }
+rusqlite = { version = "0.34.0", features = ["unlock_notify", "bundled", "session", "modern_sqlite", "limits"] } # "modern_sqlite": need sqlite >= 3.49.0 for some db configs
 rustc-hash = "2.1.1"
 rustls = { version = "0.23.11", default-features = false, features = ["logging", "std", "tls12", "ring"] }
 rustls-pemfile = "2"
diff --git a/ext/node/Cargo.toml b/ext/node/Cargo.toml
index 3db346b9bfbc03..e6a6483230bce9 100644
--- a/ext/node/Cargo.toml
+++ b/ext/node/Cargo.toml
@@ -57,7 +57,6 @@ idna.workspace = true
 ipnetwork.workspace = true
 k256.workspace = true
 libc.workspace = true
-libsqlite3-sys.workspace = true
 libz-sys.workspace = true
 md-5 = { workspace = true, features = ["oid"] }
 md4.workspace = true
diff --git a/ext/node/ops/sqlite/database.rs b/ext/node/ops/sqlite/database.rs
index 7f6d40bbf3d1e2..a698afe9195e47 100644
--- a/ext/node/ops/sqlite/database.rs
+++ b/ext/node/ops/sqlite/database.rs
@@ -15,6 +15,8 @@ use deno_core::v8;
 use deno_core::GarbageCollected;
 use deno_core::OpState;
 use deno_permissions::PermissionsContainer;
+use rusqlite::ffi as libsqlite3_sys;
+use rusqlite::limits::Limit;
 use serde::Deserialize;
 
 use super::session::SessionOptions;
@@ -22,6 +24,9 @@ use super::Session;
 use super::SqliteError;
 use super::StatementSync;
 
+const SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION: i32 = 1005;
+const SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE: i32 = 1021;
+
 #[derive(Deserialize)]
 #[serde(rename_all = "camelCase")]
 struct DatabaseSyncOptions {
@@ -61,13 +66,50 @@ pub struct DatabaseSync {
 
 impl GarbageCollected for DatabaseSync {}
 
+fn set_db_config(
+  conn: &rusqlite::Connection,
+  config: i32,
+  value: bool,
+) -> bool {
+  // SAFETY: call to sqlite3_db_config is safe because the connection
+  // handle is valid and the parameters are correct.
+  unsafe {
+    let mut set = 0;
+    let r = libsqlite3_sys::sqlite3_db_config(
+      conn.handle(),
+      config,
+      value as i32,
+      &mut set,
+    );
+
+    if r != libsqlite3_sys::SQLITE_OK {
+      panic!("Failed to set db config");
+    }
+
+    set == value as i32
+  }
+}
+
 fn open_db(
   state: &mut OpState,
   readonly: bool,
   location: &str,
 ) -> Result<rusqlite::Connection, SqliteError> {
   if location == ":memory:" {
-    return Ok(rusqlite::Connection::open_in_memory()?);
+    let conn = rusqlite::Connection::open_in_memory()?;
+    assert!(set_db_config(
+      &conn,
+      SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE,
+      false
+    ));
+    assert!(set_db_config(
+      &conn,
+      SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION,
+      false
+    ));
+
+    conn.set_limit(Limit::SQLITE_LIMIT_ATTACHED, 0)?;
+    return Ok(conn);
   }
 
   state
@@ -75,17 +117,38 @@ fn open_db(
     .check_read_with_api_name(location, Some("node:sqlite"))?;
 
   if readonly {
-    return Ok(rusqlite::Connection::open_with_flags(
+    let conn = rusqlite::Connection::open_with_flags(
       location,
       rusqlite::OpenFlags::SQLITE_OPEN_READ_ONLY,
-    )?);
+    )?;
+    assert!(set_db_config(
+      &conn,
+      SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE,
+      false
+    ));
+    assert!(set_db_config(
+      &conn,
+      SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION,
+      false
+    ));
+
+    conn.set_limit(Limit::SQLITE_LIMIT_ATTACHED, 0)?;
+    return Ok(conn);
   }
 
   state
     .borrow::<PermissionsContainer>()
     .check_write_with_api_name(location, Some("node:sqlite"))?;
 
-  Ok(rusqlite::Connection::open(location)?)
+  let conn = rusqlite::Connection::open(location)?;
+  assert!(set_db_config(
+    &conn,
+    SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION,
+    false
+  ));
+  conn.set_limit(Limit::SQLITE_LIMIT_ATTACHED, 0)?;
+
+  Ok(conn)
 }
 
 // Represents a single connection to a SQLite database.
diff --git a/ext/node/ops/sqlite/session.rs b/ext/node/ops/sqlite/session.rs
index 4bc616a9c0d4c6..4b048704ae6d3a 100644
--- a/ext/node/ops/sqlite/session.rs
+++ b/ext/node/ops/sqlite/session.rs
@@ -7,7 +7,7 @@ use std::rc::Rc;
 
 use deno_core::op2;
 use deno_core::GarbageCollected;
-use libsqlite3_sys as ffi;
+use rusqlite::ffi;
 use serde::Deserialize;
 
 use super::SqliteError;
diff --git a/ext/node/ops/sqlite/statement.rs b/ext/node/ops/sqlite/statement.rs
index d803947bf24a2a..64f2b21d53097a 100644
--- a/ext/node/ops/sqlite/statement.rs
+++ b/ext/node/ops/sqlite/statement.rs
@@ -8,7 +8,7 @@ use deno_core::op2;
 use deno_core::v8;
 use deno_core::v8::GetPropertyNamesArgs;
 use deno_core::GarbageCollected;
-use libsqlite3_sys as ffi;
+use rusqlite::ffi;
 use serde::Serialize;
 
 use super::SqliteError;
diff --git a/tests/unit_node/sqlite_test.ts b/tests/unit_node/sqlite_test.ts
index f132106fa7c73e..ed3600b518c636 100644
--- a/tests/unit_node/sqlite_test.ts
+++ b/tests/unit_node/sqlite_test.ts
@@ -153,6 +153,17 @@ Deno.test({
       );
       db.close();
     }
+    {
+      const db = new DatabaseSync(":memory:");
+      assertThrows(
+        () => {
+          db.exec("ATTACH DATABASE 'test.db' AS test");
+        },
+        Error,
+        "too many attached databases - max 0",
+      );
+      db.close();
+    }
   },
 });
 

From 50f1bbd44ccd2ebd92fb4dc9905c60143816c25b Mon Sep 17 00:00:00 2001
From: Kenta Moriuchi <moriken@kimamass.com>
Date: Wed, 19 Mar 2025 02:19:10 +0900
Subject: [PATCH 099/115] fix(otel): replace `ArrayPrototypeSplit` with
 `StringPrototypeSplit` (#28538)

---
 ext/telemetry/telemetry.ts | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/ext/telemetry/telemetry.ts b/ext/telemetry/telemetry.ts
index b39ce3cad248e2..119e089cfdfd43 100644
--- a/ext/telemetry/telemetry.ts
+++ b/ext/telemetry/telemetry.ts
@@ -38,7 +38,6 @@ const {
   ArrayPrototypeReverse,
   ArrayPrototypeShift,
   ArrayPrototypeSlice,
-  ArrayPrototypeSplit,
   DatePrototype,
   DatePrototypeGetTime,
   Error,
@@ -1331,7 +1330,7 @@ class TraceStateClass implements TraceState {
     if (rawTraceState.length > MAX_TRACE_STATE_LEN) return;
     this._internalState = ArrayPrototypeReduce(
       ArrayPrototypeReverse(
-        ArrayPrototypeSplit(rawTraceState, LIST_MEMBERS_SEPARATOR),
+        StringPrototypeSplit(rawTraceState, LIST_MEMBERS_SEPARATOR),
       ),
       (agg: Map<string, string>, part: string) => {
         const listMember = StringPrototypeTrim(part); // Optional Whitespace (OWS) handling
@@ -1507,7 +1506,7 @@ function getKeyPairs(baggage: Baggage): string[] {
 function parsePairKeyValue(
   entry: string,
 ): ParsedBaggageKeyValue | undefined {
-  const valueProps = ArrayPrototypeSplit(entry, BAGGAGE_PROPERTIES_SEPARATOR);
+  const valueProps = StringPrototypeSplit(entry, BAGGAGE_PROPERTIES_SEPARATOR);
   if (valueProps.length <= 0) return;
   const keyPairPart = ArrayPrototypeShift(valueProps);
   if (!keyPairPart) return;

From 3e547da20b1a81936c6477be72a71629388d03b5 Mon Sep 17 00:00:00 2001
From: Jo Franchetti <jofranchetti@gmail.com>
Date: Tue, 18 Mar 2025 18:49:15 +0000
Subject: [PATCH 100/115] docs: adding jsdocs for temporalAPI (#28542)

---
 cli/tsc/dts/lib.deno.unstable.d.ts | 106 +++++++++++++++++++++++++++--
 1 file changed, 102 insertions(+), 4 deletions(-)

diff --git a/cli/tsc/dts/lib.deno.unstable.d.ts b/cli/tsc/dts/lib.deno.unstable.d.ts
index c853f327e37178..75fec10e805dd1 100644
--- a/cli/tsc/dts/lib.deno.unstable.d.ts
+++ b/cli/tsc/dts/lib.deno.unstable.d.ts
@@ -4425,8 +4425,8 @@ declare namespace Temporal {
      * - `ceil`: Always round up, towards the end of time.
      * - `trunc`: Always round down, towards the beginning of time. This mode is
      *   the default.
-     * - `floor`: Also round down, towards the beginning of time. This mode acts
-     *   the same as `trunc`, but it's included for consistency with
+     * - `floor`: Also round down, towards the beginning of time. This mode acts the
+     *   same as `trunc`, but it's included for consistency with
      *   `Temporal.Duration.round()` where negative values are allowed and
      *   `trunc` rounds towards zero, unlike `floor` which rounds towards
      *   negative infinity which is usually unexpected. For this reason, `trunc`
@@ -5634,6 +5634,24 @@ interface Date {
  */
 declare namespace Intl {
   /**
+   * Types that can be formatted using Intl.DateTimeFormat methods.
+   *
+   * This type defines what values can be passed to Intl.DateTimeFormat methods
+   * for internationalized date and time formatting. It includes standard Date objects
+   * and Temporal API date/time types.
+   *
+   * @example
+   * ```ts
+   * // Using with Date object
+   * const date = new Date();
+   * const formatter = new Intl.DateTimeFormat('en-US');
+   * console.log(formatter.format(date));
+   *
+   * // Using with Temporal types (when available)
+   * const instant = Temporal.Now.instant();
+   * console.log(formatter.format(instant));
+   * ```
+   *
    * @category Intl
    * @experimental
    */
@@ -5648,10 +5666,52 @@ declare namespace Intl {
     | Temporal.PlainMonthDay;
 
   /**
+   * Represents a part of a formatted date range produced by Intl.DateTimeFormat.formatRange().
+   *
+   * Each part has a type and value that describes its role within the formatted string.
+   * The source property indicates whether the part comes from the start date, end date, or
+   * is shared between them.
+   *
+   * @example
+   * ```ts
+   * const dtf = new Intl.DateTimeFormat('en', {
+   *   dateStyle: 'long',
+   *   timeStyle: 'short'
+   * });
+   * const parts = dtf.formatRangeToParts(
+   *   new Date(2023, 0, 1, 12, 0),
+   *   new Date(2023, 0, 3, 15, 30)
+   * );
+   * console.log(parts);
+   * // Parts might include elements like:
+   * // { type: 'month', value: 'January', source: 'startRange' }
+   * // { type: 'day', value: '1', source: 'startRange' }
+   * // { type: 'literal', value: ' - ', source: 'shared' }
+   * // { type: 'day', value: '3', source: 'endRange' }
+   * // ...
+   * ```
+   *
    * @category Intl
    * @experimental
    */
   export interface DateTimeFormatRangePart {
+    /**
+     * The type of date or time component this part represents.
+     * Possible values: 'day', 'dayPeriod', 'era', 'fractionalSecond', 'hour',
+     * 'literal', 'minute', 'month', 'relatedYear', 'second', 'timeZoneName',
+     * 'weekday', 'year', etc.
+     */
+    type: string;
+
+    /** The string value of this part. */
+    value: string;
+
+    /**
+     * Indicates which date in the range this part comes from.
+     * - 'startRange': The part is from the start date
+     * - 'endRange': The part is from the end date
+     * - 'shared': The part is shared between both dates (like separators)
+     */
     source: "shared" | "startRange" | "endRange";
   }
 
@@ -5664,7 +5724,12 @@ declare namespace Intl {
      * Format a date into a string according to the locale and formatting
      * options of this `Intl.DateTimeFormat` object.
      *
-     * @param date The date to format.
+     * @example
+     * ```ts
+     * const formatter = new Intl.DateTimeFormat('en-US', { dateStyle: 'full' });
+     * const date = new Date(2023, 0, 1);
+     * console.log(formatter.format(date)); // Output: "Sunday, January 1, 2023"
+     * ```
      */
     format(date?: Formattable | number): string;
 
@@ -5672,7 +5737,12 @@ declare namespace Intl {
      * Allow locale-aware formatting of strings produced by
      * `Intl.DateTimeFormat` formatters.
      *
-     * @param date The date to format.
+     * @example
+     * ```ts
+     * const formatter = new Intl.DateTimeFormat('en-US', { dateStyle: 'full' });
+     * const date = new Date(2023, 0, 1);
+     * console.log(formatter.format(date)); // Output: "Sunday, January 1, 2023"
+     * ```
      */
     formatToParts(
       date?: Formattable | number,
@@ -5685,6 +5755,15 @@ declare namespace Intl {
      * @param startDate The start date of the range to format.
      * @param endDate The start date of the range to format. Must be the same
      * type as `startRange`.
+     *
+     * @example
+     * ```ts
+     * const formatter = new Intl.DateTimeFormat('en-US', { dateStyle: 'long' });
+     * const startDate = new Date(2023, 0, 1);
+     * const endDate = new Date(2023, 0, 5);
+     * console.log(formatter.formatRange(startDate, endDate));
+     * // Output: "January 1 – 5, 2023"
+     * ```
      */
     formatRange<T extends Formattable>(startDate: T, endDate: T): string;
     formatRange(startDate: Date | number, endDate: Date | number): string;
@@ -5696,6 +5775,25 @@ declare namespace Intl {
      * @param startDate The start date of the range to format.
      * @param endDate The start date of the range to format. Must be the same
      * type as `startRange`.
+     *
+     * @example
+     * ```ts
+     * const formatter = new Intl.DateTimeFormat('en-US', { dateStyle: 'long' });
+     * const startDate = new Date(2023, 0, 1);
+     * const endDate = new Date(2023, 0, 5);
+     * const parts = formatter.formatRangeToParts(startDate, endDate);
+     * console.log(parts);
+     * // Output might include:
+     * // [
+     * //   { type: 'month', value: 'January', source: 'startRange' },
+     * //   { type: 'literal', value: ' ', source: 'shared' },
+     * //   { type: 'day', value: '1', source: 'startRange' },
+     * //   { type: 'literal', value: ' – ', source: 'shared' },
+     * //   { type: 'day', value: '5', source: 'endRange' },
+     * //   { type: 'literal', value: ', ', source: 'shared' },
+     * //   { type: 'year', value: '2023', source: 'shared' }
+     * // ]
+     * ```
      */
     formatRangeToParts<T extends Formattable>(
       startDate: T,

From 3849ace1d6b3f184645aaf077539ef7ef12f560c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 18 Mar 2025 11:52:40 -0700
Subject: [PATCH 101/115] chore(deps): bump zip from 2.1.6 to 2.4.1 (#28535)

---
 Cargo.lock | 10 +++++-----
 Cargo.toml |  2 +-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 8f8f91c5b2bc0e..3a84b8d526e6e3 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1299,9 +1299,9 @@ dependencies = [
 
 [[package]]
 name = "crossbeam-utils"
-version = "0.8.20"
+version = "0.8.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
+checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
 
 [[package]]
 name = "crossterm"
@@ -10064,9 +10064,9 @@ dependencies = [
 
 [[package]]
 name = "zip"
-version = "2.1.6"
+version = "2.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "40dd8c92efc296286ce1fbd16657c5dbefff44f1b4ca01cc5f517d8b7b3d3e2e"
+checksum = "938cc23ac49778ac8340e366ddc422b2227ea176edb447e23fc0627608dddadd"
 dependencies = [
  "arbitrary",
  "crc32fast",
@@ -10075,7 +10075,7 @@ dependencies = [
  "flate2",
  "indexmap 2.7.1",
  "memchr",
- "thiserror 1.0.69",
+ "thiserror 2.0.3",
 ]
 
 [[package]]
diff --git a/Cargo.toml b/Cargo.toml
index f61e0fffc620b6..1f957dbc47a939 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -335,7 +335,7 @@ x25519-dalek = "2.0.0"
 x509-parser = "0.15.0"
 yoke = { version = "0.7.4", features = ["derive"] }
 zeromq = { version = "=0.4.1", default-features = false, features = ["tcp-transport", "tokio-runtime"] }
-zip = { version = "2.1.6", default-features = false }
+zip = { version = "2.4.1", default-features = false, features = ["flate2"] }
 zstd = "=0.12.4"
 
 opentelemetry = "0.27.0"

From eadcd729d2d6719998d72ab5af2eb920c7dea0a4 Mon Sep 17 00:00:00 2001
From: letianpailove <113023596+letianpailove@users.noreply.github.com>
Date: Thu, 20 Mar 2025 22:21:49 +0800
Subject: [PATCH 102/115] docs: fix a numerical error in update_typescript.md
 (#28556)

Signed-off-by: letianpailove <113023596+letianpailove@users.noreply.github.com>
---
 tools/update_typescript.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/update_typescript.md b/tools/update_typescript.md
index 5e454dd23ef558..396d11cba0b554 100644
--- a/tools/update_typescript.md
+++ b/tools/update_typescript.md
@@ -70,7 +70,7 @@ contextual awareness, it is the author's opinion that it is best to spend the
    - Revert/merge any changes to lib files that provide forward support. This is
      the "hardest" thing, because you need to assess if the updated version of
      TypeScript now includes the type definitions that we forward support.
-     Currently there are three:
+     Currently there the following:
 
      - `lib.esnext.array.d.ts` contains additional array APIs. These likely will
        be moved to ES2022 at some point, but currently only the

From 60b502db80ea4524c8a5e316177f32329dc15a33 Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Thu, 20 Mar 2025 11:20:24 -0400
Subject: [PATCH 103/115] fix(lsp): do not show import-map-remap diagnostic
 when referrer and target are within the entry base (#28560)

For example, if someone has `"$src/": "./src"` in their import map, this
will no longer show a diagnostic when someone imports `"./a.ts"` from
./src/b.ts`
---
 cli/lsp/diagnostics.rs | 54 ++++++++++++++++++++++++++++++++++++++----
 1 file changed, 50 insertions(+), 4 deletions(-)

diff --git a/cli/lsp/diagnostics.rs b/cli/lsp/diagnostics.rs
index a30b269428faee..44317a84da26e1 100644
--- a/cli/lsp/diagnostics.rs
+++ b/cli/lsp/diagnostics.rs
@@ -1749,6 +1749,39 @@ fn diagnose_dependency(
   dependency_key: &str,
   dependency: &deno_graph::Dependency,
 ) {
+  /// Given a specifier and a referring specifier, determine if a value in the
+  /// import map could be used as an import specifier that resolves using the
+  /// import map.
+  ///
+  /// This was inlined from the import_map crate in order to ignore more
+  /// entries.
+  fn import_map_lookup(
+    import_map: &ImportMap,
+    specifier: &Url,
+    referrer: &Url,
+  ) -> Option<String> {
+    let specifier_str = specifier.as_str();
+    for entry in import_map.entries_for_referrer(referrer) {
+      if let Some(address) = entry.value {
+        let address_str = address.as_str();
+        if referrer.as_str().starts_with(address_str) {
+          // ignore when the referrer has a common base with the
+          // import map entry (ex. `./src/a.ts` importing `./src/b.ts`
+          // and there's a `"$src/": "./src/"` import map entry)
+          continue;
+        }
+        if address_str == specifier_str {
+          return Some(entry.raw_key.to_string());
+        }
+        if address_str.ends_with('/') && specifier_str.starts_with(address_str)
+        {
+          return Some(specifier_str.replace(address_str, entry.raw_key));
+        }
+      }
+    }
+    None
+  }
+
   let referrer = referrer_doc.specifier();
   if snapshot.resolver.in_node_modules(referrer) {
     return; // ignore, surface typescript errors instead
@@ -1765,7 +1798,9 @@ fn diagnose_dependency(
       .ok()
       .or_else(|| dependency.maybe_type.ok());
     if let Some(resolved) = resolved {
-      if let Some(to) = import_map.lookup(&resolved.specifier, referrer) {
+      if let Some(to) =
+        import_map_lookup(import_map, &resolved.specifier, referrer)
+      {
         if dependency_key != to {
           diagnostics.push(
             DenoDiagnostic::ImportMapRemap {
@@ -2144,7 +2179,13 @@ let c: number = "a";
         ),
         (
           "a/file.ts",
-          "import { assert } from \"../std/assert/mod.ts\";\n\nassert();\n",
+          "import { assert } from \"../std/assert/mod.ts\";\n\nassert();\nexport function a() {}",
+          1,
+          LanguageId::TypeScript,
+        ),
+        (
+          "a/file2.ts",
+          "import { a } from './file.ts';\nconsole.log(a);\n",
           1,
           LanguageId::TypeScript,
         ),
@@ -2153,7 +2194,9 @@ let c: number = "a";
         "a/deno.json",
         r#"{
         "imports": {
-          "/~/std/": "../std/"
+          "/~/std/": "../std/",
+          "$@/": "./",
+          "$a/": "../a/"
         }
       }"#,
       )),
@@ -2162,7 +2205,7 @@ let c: number = "a";
     let config = mock_config();
     let token = CancellationToken::new();
     let actual = generate_all_deno_diagnostics(&snapshot, &config, token);
-    assert_eq!(actual.len(), 2);
+    assert_eq!(actual.len(), 3);
     for record in actual {
       let relative_specifier =
         temp_dir.url().make_relative(&record.specifier).unwrap();
@@ -2195,6 +2238,9 @@ let c: number = "a";
             }
           ])
         ),
+        "a/file2.ts" => {
+          assert_eq!(json!(record.versioned.diagnostics), json!([]))
+        }
         _ => unreachable!("unexpected specifier {}", record.specifier),
       }
     }

From 7ac813085499def3ff829cf72f43a6daaaac3457 Mon Sep 17 00:00:00 2001
From: Lach <iam@lach.pw>
Date: Thu, 20 Mar 2025 21:58:08 +0100
Subject: [PATCH 104/115] feat(otel): basic event recording (#28552)

---
 ext/telemetry/lib.rs                      | 27 +++++++
 ext/telemetry/telemetry.ts                | 64 ++++++++++------
 tests/specs/cli/otel_basic/__test__.jsonc |  4 +
 tests/specs/cli/otel_basic/events.out     | 90 +++++++++++++++++++++++
 tests/specs/cli/otel_basic/events.ts      | 21 ++++++
 5 files changed, 185 insertions(+), 21 deletions(-)
 create mode 100644 tests/specs/cli/otel_basic/events.out
 create mode 100644 tests/specs/cli/otel_basic/events.ts

diff --git a/ext/telemetry/lib.rs b/ext/telemetry/lib.rs
index aac743e0fb0c53..cccef09399a966 100644
--- a/ext/telemetry/lib.rs
+++ b/ext/telemetry/lib.rs
@@ -45,6 +45,7 @@ pub use opentelemetry::metrics::MeterProvider;
 pub use opentelemetry::metrics::UpDownCounter;
 use opentelemetry::otel_debug;
 use opentelemetry::otel_error;
+use opentelemetry::trace::Event;
 use opentelemetry::trace::Link;
 use opentelemetry::trace::SpanContext;
 use opentelemetry::trace::SpanId;
@@ -1381,6 +1382,32 @@ impl OtelSpan {
     Ok(())
   }
 
+  #[fast]
+  fn add_event(
+    &self,
+    #[string] name: String,
+    start_time: f64,
+    #[smi] dropped_attributes_count: u32,
+  ) {
+    let start_time = if start_time.is_nan() {
+      SystemTime::now()
+    } else {
+      SystemTime::UNIX_EPOCH
+        .checked_add(Duration::from_secs_f64(start_time / 1000.0))
+        .unwrap()
+    };
+    let mut state = self.0.borrow_mut();
+    let OtelSpanState::Recording(span) = &mut **state else {
+      return;
+    };
+    span.events.events.push(Event::new(
+      name,
+      start_time,
+      vec![],
+      dropped_attributes_count,
+    ));
+  }
+
   #[fast]
   fn drop_event(&self) {
     let mut state = self.0.borrow_mut();
diff --git a/ext/telemetry/telemetry.ts b/ext/telemetry/telemetry.ts
index 119e089cfdfd43..703e659fb9e836 100644
--- a/ext/telemetry/telemetry.ts
+++ b/ext/telemetry/telemetry.ts
@@ -169,6 +169,25 @@ function hrToMs(hr: [number, number]): number {
   return (hr[0] * 1e3 + hr[1] / 1e6);
 }
 
+function isTimeInput(input: unknown): input is TimeInput {
+  return typeof input === "number" ||
+    (input && (ArrayIsArray(input) || isDate(input)));
+}
+
+function timeInputToMs(input?: TimeInput): number | undefined {
+  if (input === undefined) return;
+  if (ArrayIsArray(input)) {
+    return hrToMs(input);
+  } else if (isDate(input)) {
+    return DatePrototypeGetTime(input);
+  }
+  return input;
+}
+
+function countAttributes(attributes?: Attributes): number {
+  return attributes ? ObjectKeys(attributes).length : 0;
+}
+
 interface AsyncContextSnapshot {
   __brand: "AsyncContextSnapshot";
 }
@@ -183,7 +202,7 @@ export const currentSnapshot = getAsyncContext;
 export const restoreSnapshot = setAsyncContext;
 
 function isDate(value: unknown): value is Date {
-  return ObjectPrototypeIsPrototypeOf(value, DatePrototype);
+  return ObjectPrototypeIsPrototypeOf(DatePrototype, value);
 }
 
 interface OtelTracer {
@@ -215,6 +234,11 @@ interface OtelSpan {
 
   spanContext(): SpanContext;
   setStatus(status: SpanStatusCode, errorDescription: string): void;
+  addEvent(
+    name: string,
+    startTime: number,
+    droppedAttributeCount: number,
+  ): void;
   dropEvent(): void;
   end(endTime: number): void;
 }
@@ -303,20 +327,13 @@ class Tracer {
       context = context ?? CURRENT.get();
     }
 
-    let startTime = options?.startTime;
-    if (startTime && ArrayIsArray(startTime)) {
-      startTime = hrToMs(startTime);
-    } else if (startTime && isDate(startTime)) {
-      startTime = DatePrototypeGetTime(startTime);
-    }
+    const startTime = timeInputToMs(options?.startTime);
 
     const parentSpan = context?.getValue(SPAN_KEY) as
       | Span
       | { spanContext(): SpanContext }
       | undefined;
-    const attributesCount = options?.attributes
-      ? ObjectKeys(options.attributes).length
-      : 0;
+    const attributesCount = countAttributes(options?.attributes);
     const parentOtelSpan: OtelSpan | null | undefined = parentSpan !== undefined
       ? getOtelSpan(parentSpan) ?? undefined
       : undefined;
@@ -380,17 +397,27 @@ class Span {
   }
 
   addEvent(
-    _name: string,
-    _attributesOrStartTime?: Attributes | TimeInput,
-    _startTime?: TimeInput,
+    name: string,
+    attributesOrStartTime?: Attributes | TimeInput,
+    startTime?: TimeInput,
   ): this {
-    this.#otelSpan?.dropEvent();
+    if (isTimeInput(attributesOrStartTime)) {
+      startTime = attributesOrStartTime;
+      attributesOrStartTime = undefined;
+    }
+    const startTimeMs = timeInputToMs(startTime);
+
+    this.#otelSpan?.addEvent(
+      name,
+      startTimeMs ?? NaN,
+      countAttributes(attributesOrStartTime),
+    );
     return this;
   }
 
   addLink(link: Link): this {
     const droppedAttributeCount = (link.droppedAttributesCount ?? 0) +
-      (link.attributes ? ObjectKeys(link.attributes).length : 0);
+      countAttributes(link.attributes);
     const valid = op_otel_span_add_link(
       this.#otelSpan,
       link.context.traceId,
@@ -411,12 +438,7 @@ class Span {
   }
 
   end(endTime?: TimeInput): void {
-    if (endTime && ArrayIsArray(endTime)) {
-      endTime = hrToMs(endTime);
-    } else if (endTime && isDate(endTime)) {
-      endTime = DatePrototypeGetTime(endTime);
-    }
-    this.#otelSpan?.end(endTime || NaN);
+    this.#otelSpan?.end(timeInputToMs(endTime) || NaN);
   }
 
   isRecording(): boolean {
diff --git a/tests/specs/cli/otel_basic/__test__.jsonc b/tests/specs/cli/otel_basic/__test__.jsonc
index e54f6639930343..401c9a669e6cb3 100644
--- a/tests/specs/cli/otel_basic/__test__.jsonc
+++ b/tests/specs/cli/otel_basic/__test__.jsonc
@@ -56,6 +56,10 @@
     "node_http_request": {
       "args": "run -A main.ts node_http_request.ts",
       "output": "node_http_request.out"
+    },
+    "events": {
+      "args": "run -A main.ts events.ts",
+      "output": "events.out"
     }
   }
 }
diff --git a/tests/specs/cli/otel_basic/events.out b/tests/specs/cli/otel_basic/events.out
new file mode 100644
index 00000000000000..644ae9ab1a59f6
--- /dev/null
+++ b/tests/specs/cli/otel_basic/events.out
@@ -0,0 +1,90 @@
+{
+  "spans": [
+    {
+      "traceId": "00000000000000000000000000000001",
+      "spanId": "0000000000000001",
+      "traceState": "",
+      "parentSpanId": "",
+      "flags": 1,
+      "name": "example span",
+      "kind": 1,
+      "startTimeUnixNano": "[WILDCARD]",
+      "endTimeUnixNano": "[WILDCARD]",
+      "attributes": [],
+      "droppedAttributesCount": 0,
+      "events": [
+        {
+          "timeUnixNano": "[WILDCARD]",
+          "name": "example event",
+          "attributes": [],
+          "droppedAttributesCount": 0
+        }
+      ],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 0
+      }
+    },
+    {
+      "traceId": "00000000000000000000000000000002",
+      "spanId": "0000000000000002",
+      "traceState": "",
+      "parentSpanId": "",
+      "flags": 1,
+      "name": "example span",
+      "kind": 1,
+      "startTimeUnixNano": "[WILDCARD]",
+      "endTimeUnixNano": "[WILDCARD]",
+      "attributes": [],
+      "droppedAttributesCount": 0,
+      "events": [
+        {
+          "timeUnixNano": "[WILDCARD]",
+          "name": "example event",
+          "attributes": [],
+          "droppedAttributesCount": 1
+        }
+      ],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 0
+      }
+    },
+    {
+      "traceId": "00000000000000000000000000000003",
+      "spanId": "0000000000000003",
+      "traceState": "",
+      "parentSpanId": "",
+      "flags": 1,
+      "name": "example span",
+      "kind": 1,
+      "startTimeUnixNano": "[WILDCARD]",
+      "endTimeUnixNano": "[WILDCARD]",
+      "attributes": [],
+      "droppedAttributesCount": 0,
+      "events": [
+        {
+          "timeUnixNano": "[WILDCARD]",
+          "name": "example event",
+          "attributes": [],
+          "droppedAttributesCount": 1
+        }
+      ],
+      "droppedEventsCount": 0,
+      "links": [],
+      "droppedLinksCount": 0,
+      "status": {
+        "message": "",
+        "code": 0
+      }
+    }
+  ],
+  "logs": [],
+  "metrics": []
+}
diff --git a/tests/specs/cli/otel_basic/events.ts b/tests/specs/cli/otel_basic/events.ts
new file mode 100644
index 00000000000000..8e467284cb711e
--- /dev/null
+++ b/tests/specs/cli/otel_basic/events.ts
@@ -0,0 +1,21 @@
+// Copyright 2018-2025 the Deno authors. MIT license.
+
+import { trace } from "npm:@opentelemetry/api@1.9.0";
+
+const tracer = trace.getTracer("example-tracer");
+
+const span1 = tracer.startSpan("example span");
+span1.addEvent("example event");
+span1.end();
+
+const span2 = tracer.startSpan("example span");
+span2.addEvent("example event", {
+  key: "value",
+});
+span2.end();
+
+const span3 = tracer.startSpan("example span");
+span3.addEvent("example event", {
+  key: "value",
+}, new Date());
+span3.end();

From 6420e50cd0563192e60f8da29f8378c3bcbd902f Mon Sep 17 00:00:00 2001
From: Yoshiya Hinosawa <stibium121@gmail.com>
Date: Fri, 21 Mar 2025 06:39:04 +0900
Subject: [PATCH 105/115] fix(ext/node): add util.getCallSites (#28546)

This PR adds
[getCallSites](https://nodejs.org/api/util.html#utilgetcallsitesframecount-options)
API to "node:util".

This unblocks https://github.com/denoland/deno/issues/28318. Currently
the task is blocked by the unavailability of `util.getCallSites` because
it's used in
[`test/common/index.js`](https://github.com/denoland/node_test/blob/8846b5392f4ebd3d4e995b9bed61c23c0192d806/test/common/index.js#L31)
---
 ext/node/polyfills/util.ts                    |  62 ++++++
 tests/node_compat/config.jsonc                |   3 +
 tests/node_compat/runner/TODO.md              |   3 +-
 .../test/fixtures/get-call-sites.js           |  11 ++
 .../test/parallel/test-util-getcallsites.js   | 185 ++++++++++++++++++
 5 files changed, 262 insertions(+), 2 deletions(-)
 create mode 100644 tests/node_compat/test/fixtures/get-call-sites.js
 create mode 100644 tests/node_compat/test/parallel/test-util-getcallsites.js

diff --git a/ext/node/polyfills/util.ts b/ext/node/polyfills/util.ts
index 06c75ef79a2d8a..e039908b04800e 100644
--- a/ext/node/polyfills/util.ts
+++ b/ext/node/polyfills/util.ts
@@ -4,12 +4,14 @@ import { primordials } from "ext:core/mod.js";
 const {
   ArrayIsArray,
   ArrayPrototypeJoin,
+  ArrayPrototypeMap,
   Date,
   DatePrototypeGetDate,
   DatePrototypeGetHours,
   DatePrototypeGetMinutes,
   DatePrototypeGetMonth,
   DatePrototypeGetSeconds,
+  ErrorCaptureStackTrace,
   ErrorPrototype,
   NumberPrototypeToString,
   ObjectDefineProperty,
@@ -48,6 +50,8 @@ import { isDeepStrictEqual } from "ext:deno_node/internal/util/comparisons.ts";
 import process from "node:process";
 import {
   validateAbortSignal,
+  validateNumber,
+  validateObject,
   validateString,
 } from "ext:deno_node/internal/validators.mjs";
 import { parseArgs } from "ext:deno_node/internal/util/parse_args/parse_args.js";
@@ -318,6 +322,63 @@ export async function aborted(
   return abortPromise.promise;
 }
 
+function prepareStackTrace(_error, stackTraces) {
+  return ArrayPrototypeMap(stackTraces, (stack) => {
+    return ({
+      functionName: stack.getFunctionName() ?? "",
+      // TODO(kt3k): This needs to be script's id
+      scriptId: "0",
+      scriptName: stack.getFileName(),
+      lineNumber: stack.getLineNumber(),
+      column: stack.getColumnNumber(),
+      columnNumber: stack.getColumnNumber(),
+    });
+  });
+}
+
+const kDefaultMaxCallStackSizeToCapture = 200;
+
+// deno-lint-ignore-start
+/**
+ * Returns the call sites of the current call stack
+ * @param frameCount The limit of the number of frames to return
+ * @param _options The options
+ * @returns The call sites
+ */
+export function getCallSites(
+  frameCount = 10,
+  options: unknown = { __proto__: null },
+) {
+  validateNumber(
+    frameCount,
+    "frameCount",
+    0,
+    kDefaultMaxCallStackSizeToCapture,
+  );
+  if (options) {
+    validateObject(options, "options");
+  }
+  const target = {};
+  // deno-lint-ignore prefer-primordials
+  const original = Error.prepareStackTrace;
+  // deno-lint-ignore prefer-primordials
+  const limitOriginal = Error.stackTraceLimit;
+
+  // deno-lint-ignore prefer-primordials
+  Error.stackTraceLimit = frameCount;
+  // deno-lint-ignore prefer-primordials
+  Error.prepareStackTrace = prepareStackTrace;
+  ErrorCaptureStackTrace(target, getCallSites);
+
+  const capturedTraces = target.stack;
+  // deno-lint-ignore prefer-primordials
+  Error.prepareStackTrace = original;
+  // deno-lint-ignore prefer-primordials
+  Error.stackTraceLimit = limitOriginal;
+
+  return capturedTraces;
+}
+
 export { getSystemErrorName, isDeepStrictEqual };
 
 export default {
@@ -340,6 +401,7 @@ export default {
   isPrimitive,
   isBuffer,
   _extend,
+  getCallSites,
   getSystemErrorName,
   aborted,
   deprecate,
diff --git a/tests/node_compat/config.jsonc b/tests/node_compat/config.jsonc
index 3e7dc2b7c493c9..b8aed1ed69cce6 100644
--- a/tests/node_compat/config.jsonc
+++ b/tests/node_compat/config.jsonc
@@ -155,6 +155,7 @@
       "test-url-pathtofileurl.js",
       "test-url-urltooptions.js",
       "test-util-format.js",
+      "test-util-getcallsites.js",
       "test-util-inspect-namespace.js",
       "test-util-inspect-proxy.js",
       "test-util-inspect.js",
@@ -227,6 +228,7 @@
       "elipses.txt",
       "empty.txt",
       "exit.js",
+      "get-call-sites.js",
       "GH-1899-output.js",
       "loop.js",
       "parent-process-nonpersistent.js",
@@ -1224,6 +1226,7 @@
       "test-util-deprecate-invalid-code.js",
       "test-util-deprecate.js",
       "test-util-format.js",
+      "test-util-getcallsites.js",
       "test-util-inherits.js",
       "test-util-inspect-getters-accessing-this.js",
       "test-util-inspect-long-running.js",
diff --git a/tests/node_compat/runner/TODO.md b/tests/node_compat/runner/TODO.md
index 78103182b66e4b..2c98f083243d48 100644
--- a/tests/node_compat/runner/TODO.md
+++ b/tests/node_compat/runner/TODO.md
@@ -1,7 +1,7 @@
 <!-- deno-fmt-ignore-file -->
 # Remaining Node Tests
 
-1147 tests out of 3993 have been ported from Node 23.9.0 (28.73% ported, 71.78% remaining).
+1149 tests out of 3993 have been ported from Node 23.9.0 (28.78% ported, 71.75% remaining).
 
 NOTE: This file should not be manually edited. Please edit `tests/node_compat/config.json` and run `deno task setup` in `tests/node_compat/runner` dir instead.
 
@@ -2378,7 +2378,6 @@ NOTE: This file should not be manually edited. Please edit `tests/node_compat/co
 - [parallel/test-util-callbackify.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-callbackify.js)
 - [parallel/test-util-emit-experimental-warning.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-emit-experimental-warning.js)
 - [parallel/test-util-getcallsite.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-getcallsite.js)
-- [parallel/test-util-getcallsites.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-getcallsites.js)
 - [parallel/test-util-internal.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-internal.js)
 - [parallel/test-util-parse-env.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-parse-env.js)
 - [parallel/test-util-sigint-watchdog.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-util-sigint-watchdog.js)
diff --git a/tests/node_compat/test/fixtures/get-call-sites.js b/tests/node_compat/test/fixtures/get-call-sites.js
new file mode 100644
index 00000000000000..3eb286c1441cc8
--- /dev/null
+++ b/tests/node_compat/test/fixtures/get-call-sites.js
@@ -0,0 +1,11 @@
+// deno-fmt-ignore-file
+// deno-lint-ignore-file
+
+// Copyright Joyent and Node contributors. All rights reserved. MIT license.
+// Taken from Node 23.9.0
+// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
+
+const util = require('node:util');
+const assert = require('node:assert');
+assert.ok(util.getCallSites().length > 1);
+process.stdout.write(util.getCallSites()[0].scriptName);
diff --git a/tests/node_compat/test/parallel/test-util-getcallsites.js b/tests/node_compat/test/parallel/test-util-getcallsites.js
new file mode 100644
index 00000000000000..93a14e27094118
--- /dev/null
+++ b/tests/node_compat/test/parallel/test-util-getcallsites.js
@@ -0,0 +1,185 @@
+// deno-fmt-ignore-file
+// deno-lint-ignore-file
+
+// Copyright Joyent and Node contributors. All rights reserved. MIT license.
+// Taken from Node 23.9.0
+// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
+
+'use strict';
+
+const common = require('../common');
+
+const fixtures = require('../common/fixtures');
+const file = fixtures.path('get-call-sites.js');
+
+const { getCallSites } = require('node:util');
+const { spawnSync } = require('node:child_process');
+const assert = require('node:assert');
+
+{
+  const callSites = getCallSites();
+  assert.ok(callSites.length > 1);
+  assert.match(
+    callSites[0].scriptName,
+    /test-util-getcallsites/,
+    'node:util should be ignored',
+  );
+}
+
+{
+  const callSites = getCallSites(3);
+  assert.strictEqual(callSites.length, 3);
+  assert.match(
+    callSites[0].scriptName,
+    /test-util-getcallsites/,
+    'node:util should be ignored',
+  );
+}
+
+// Guarantee dot-left numbers are ignored
+{
+  const callSites = getCallSites(3.6);
+  assert.strictEqual(callSites.length, 3);
+}
+
+{
+  const callSites = getCallSites(3.4);
+  assert.strictEqual(callSites.length, 3);
+}
+
+{
+  assert.throws(() => {
+    // Max than kDefaultMaxCallStackSizeToCapture
+    getCallSites(201);
+  }, common.expectsError({
+    code: 'ERR_OUT_OF_RANGE'
+  }));
+  assert.throws(() => {
+    getCallSites(-1);
+  }, common.expectsError({
+    code: 'ERR_OUT_OF_RANGE'
+  }));
+  assert.throws(() => {
+    getCallSites([]);
+  }, common.expectsError({
+    code: 'ERR_INVALID_ARG_TYPE'
+  }));
+  assert.throws(() => {
+    getCallSites({}, {});
+  }, common.expectsError({
+    code: 'ERR_INVALID_ARG_TYPE'
+  }));
+  assert.throws(() => {
+    getCallSites(10, 10);
+  }, common.expectsError({
+    code: 'ERR_INVALID_ARG_TYPE'
+  }));
+}
+
+{
+  const callSites = getCallSites(1);
+  assert.strictEqual(callSites.length, 1);
+  assert.match(
+    callSites[0].scriptName,
+    /test-util-getcallsites/,
+    'node:util should be ignored',
+  );
+}
+
+// ScriptId is a string.
+{
+  const callSites = getCallSites(1);
+  assert.strictEqual(callSites.length, 1);
+  assert.strictEqual(typeof callSites[0].scriptId, 'string');
+}
+
+/* NOTE(kt3k): Skipping this test for now because Deno can't run eval string as commonjs module
+// Guarantee [eval] will appear on stacktraces when using -e
+{
+  const { status, stderr, stdout } = spawnSync(
+    process.execPath,
+    [
+      '-e',
+      `const util = require('util');
+       const assert = require('assert');
+       assert.ok(util.getCallSites().length > 1);
+       process.stdout.write(util.getCallSites()[0].scriptName);
+      `,
+    ],
+  );
+  assert.strictEqual(status, 0, stderr.toString());
+  assert.strictEqual(stdout.toString(), '[eval]');
+}
+*/
+
+// Guarantee the stacktrace[0] is the filename
+{
+  const { status, stderr, stdout } = spawnSync(
+    process.execPath,
+    [file],
+  );
+  assert.strictEqual(status, 0, stderr.toString());
+  assert.strictEqual(stdout.toString(), file);
+}
+
+// Error.stackTraceLimit should not influence callsite size
+{
+  const originalStackTraceLimit = Error.stackTraceLimit;
+  Error.stackTraceLimit = 0;
+  const callSites = getCallSites();
+  assert.notStrictEqual(callSites.length, 0);
+  Error.stackTraceLimit = originalStackTraceLimit;
+}
+
+/* NOTE(kt3k): Skipping source map related test cases.
+{
+  const { status, stderr, stdout } = spawnSync(process.execPath, [
+    '--no-warnings',
+    '--experimental-transform-types',
+    fixtures.path('typescript/ts/test-get-callsite.ts'),
+  ]);
+
+  const output = stdout.toString();
+  assert.strictEqual(stderr.toString(), '');
+  assert.match(output, /lineNumber: 8/);
+  assert.match(output, /column: 18/);
+  assert.match(output, /columnNumber: 18/);
+  assert.match(output, /test-get-callsite\.ts/);
+  assert.strictEqual(status, 0);
+}
+
+{
+  const { status, stderr, stdout } = spawnSync(process.execPath, [
+    '--no-warnings',
+    '--experimental-transform-types',
+    '--no-enable-source-maps',
+    fixtures.path('typescript/ts/test-get-callsite.ts'),
+  ]);
+
+  const output = stdout.toString();
+  assert.strictEqual(stderr.toString(), '');
+  // Line should be wrong when sourcemaps are disable
+  assert.match(output, /lineNumber: 2/);
+  assert.match(output, /column: 18/);
+  assert.match(output, /columnNumber: 18/);
+  assert.match(output, /test-get-callsite\.ts/);
+  assert.strictEqual(status, 0);
+}
+
+{
+  // Source maps should be disabled when options.sourceMap is false
+  const { status, stderr, stdout } = spawnSync(process.execPath, [
+    '--no-warnings',
+    '--experimental-transform-types',
+    fixtures.path('typescript/ts/test-get-callsite-explicit.ts'),
+  ]);
+
+  const output = stdout.toString();
+  assert.strictEqual(stderr.toString(), '');
+  assert.match(output, /lineNumber: 2/);
+  assert.match(output, /column: 18/);
+  assert.match(output, /columnNumber: 18/);
+  assert.match(output, /test-get-callsite-explicit\.ts/);
+  assert.strictEqual(status, 0);
+}
+*/

From d4ee94962ffafd4dac258ba7a5991fbe1840052c Mon Sep 17 00:00:00 2001
From: snek <snek@deno.com>
Date: Fri, 21 Mar 2025 00:19:44 +0100
Subject: [PATCH 106/115] feat: upgrade deno_core and V8 (#28562)

includes V8 upgrade to 135
---
 Cargo.lock                                    | 20 ++++++++++---------
 Cargo.toml                                    |  2 +-
 ext/node/ops/v8.rs                            |  5 ++---
 ext/os/lib.rs                                 |  3 +--
 tests/integration/compile_tests.rs            |  2 +-
 tests/node_compat/common.ts                   |  5 ++++-
 .../specs/run/seed_random/seed_random.js.out  |  8 ++++----
 7 files changed, 24 insertions(+), 21 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 3a84b8d526e6e3..88d5914df44caa 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -552,6 +552,8 @@ dependencies = [
  "cexpr",
  "clang-sys",
  "itertools 0.13.0",
+ "log",
+ "prettyplease",
  "proc-macro2",
  "quote",
  "regex",
@@ -1778,9 +1780,9 @@ dependencies = [
 
 [[package]]
 name = "deno_core"
-version = "0.340.0"
+version = "0.341.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe2827cc1215963b5073cca7db7c0ed8d8717a40e5ebad20832ae70e6df2d9d1"
+checksum = "143d4ac5f8f67ee99ab67ed84027c2a39815f5ce5295e85351a342a32973656d"
 dependencies = [
  "anyhow",
  "az",
@@ -2400,9 +2402,9 @@ dependencies = [
 
 [[package]]
 name = "deno_ops"
-version = "0.216.0"
+version = "0.217.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07cc2bc8f1754c7f66b701a05fb12ca39dc582edf8b4f04a422ae487f0223fa9"
+checksum = "b88e5ad62fd6e4769c17a1eb37a59d93e91ef47f5e6e08b3b5ef8e308a19adda"
 dependencies = [
  "indexmap 2.7.1",
  "proc-macro-rules",
@@ -7339,9 +7341,9 @@ dependencies = [
 
 [[package]]
 name = "serde_v8"
-version = "0.249.0"
+version = "0.250.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41bd50e0136873d94207fcbd1a78bd8da0b7bfa4537e1383377c7cf2c1d811b1"
+checksum = "f9b4f50e645e68fff5098d9cde15a26eb2a6c5c98bef8f95cfab186ecc6488de"
 dependencies = [
  "deno_error",
  "num-bigint",
@@ -9127,11 +9129,11 @@ dependencies = [
 
 [[package]]
 name = "v8"
-version = "134.5.0"
+version = "135.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21c7a224a7eaf3f98c1bad772fbaee56394dce185ef7b19a2e0ca5e3d274165d"
+checksum = "bc24d3e68c7e9b581fce2f0ceb9d1ad61565bf783a36d80d530ccf2be212a295"
 dependencies = [
- "bindgen 0.70.1",
+ "bindgen 0.71.1",
  "bitflags 2.8.0",
  "fslock",
  "gzip-header",
diff --git a/Cargo.toml b/Cargo.toml
index 1f957dbc47a939..2eb00cf11c6d4d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -51,7 +51,7 @@ repository = "https://github.com/denoland/deno"
 
 [workspace.dependencies]
 deno_ast = { version = "=0.46.2", features = ["transpiling"] }
-deno_core = { version = "0.340.0" }
+deno_core = { version = "0.341.0" }
 
 deno_bench_util = { version = "0.189.0", path = "./bench_util" }
 deno_config = { version = "=0.50.0", features = ["workspace"] }
diff --git a/ext/node/ops/v8.rs b/ext/node/ops/v8.rs
index f4cd39a816d4b6..323150c20420f2 100644
--- a/ext/node/ops/v8.rs
+++ b/ext/node/ops/v8.rs
@@ -21,8 +21,7 @@ pub fn op_v8_get_heap_statistics(
   scope: &mut v8::HandleScope,
   #[buffer] buffer: &mut [f64],
 ) {
-  let mut stats = v8::HeapStatistics::default();
-  scope.get_heap_statistics(&mut stats);
+  let stats = scope.get_heap_statistics();
 
   buffer[0] = stats.total_heap_size() as f64;
   buffer[1] = stats.total_heap_size_executable() as f64;
@@ -32,7 +31,7 @@ pub fn op_v8_get_heap_statistics(
   buffer[5] = stats.heap_size_limit() as f64;
   buffer[6] = stats.malloced_memory() as f64;
   buffer[7] = stats.peak_malloced_memory() as f64;
-  buffer[8] = stats.does_zap_garbage() as f64;
+  buffer[8] = if stats.does_zap_garbage() { 1.0 } else { 0.0 };
   buffer[9] = stats.number_of_native_contexts() as f64;
   buffer[10] = stats.number_of_detached_contexts() as f64;
   buffer[11] = stats.total_global_handles_size() as f64;
diff --git a/ext/os/lib.rs b/ext/os/lib.rs
index 7939e079acc26b..2b03c2256a7021 100644
--- a/ext/os/lib.rs
+++ b/ext/os/lib.rs
@@ -532,8 +532,7 @@ fn get_cpu_usage() -> (std::time::Duration, std::time::Duration) {
 fn op_runtime_memory_usage(
   scope: &mut v8::HandleScope,
 ) -> (usize, usize, usize, usize) {
-  let mut s = v8::HeapStatistics::default();
-  scope.get_heap_statistics(&mut s);
+  let s = scope.get_heap_statistics();
 
   let (rss, heap_total, heap_used, external) = (
     rss(),
diff --git a/tests/integration/compile_tests.rs b/tests/integration/compile_tests.rs
index 503538d24a84f1..de235a6b3dc34e 100644
--- a/tests/integration/compile_tests.rs
+++ b/tests/integration/compile_tests.rs
@@ -291,7 +291,7 @@ fn standalone_runtime_flags() {
     .name(&exe)
     .split_output()
     .run()
-    .assert_stdout_matches_text("0.147205063401058\n")
+    .assert_stdout_matches_text("0.1472050634010581\n")
     .assert_stderr_matches_text(
       "[WILDCARD]NotCapable: Requires write access to[WILDCARD]",
     )
diff --git a/tests/node_compat/common.ts b/tests/node_compat/common.ts
index ce50878e0084ad..304f5037869035 100644
--- a/tests/node_compat/common.ts
+++ b/tests/node_compat/common.ts
@@ -138,7 +138,10 @@ export async function runNodeCompatTestCase(
     switch (flag) {
       case "--expose_externalize_string":
         v8Flags.push("--expose-externalize-string");
-        knownGlobals.push("createExternalizableString");
+        knownGlobals.push(
+          "createExternalizableString",
+          "createExternalizableTwoByteString",
+        );
         break;
       case "--expose-gc":
         v8Flags.push("--expose-gc");
diff --git a/tests/specs/run/seed_random/seed_random.js.out b/tests/specs/run/seed_random/seed_random.js.out
index 4d1ebd0818faac..d06cf94572a7c0 100644
--- a/tests/specs/run/seed_random/seed_random.js.out
+++ b/tests/specs/run/seed_random/seed_random.js.out
@@ -1,12 +1,12 @@
 0.858562739044346
-0.8973397944553141
+0.8973397944553142
 0.15335012655691727
 0.36867387434349963
 0.3591039342838782
-0.7044499748617652
-0.7461423057751548
+0.7044499748617653
+0.746142305775155
 0.3824611207183364
-0.5950178237266042
+0.5950178237266043
 0.22440633214343908
 Uint8Array(32) [
   153, 221, 127, 193, 173,  88,  77, 155,

From 177d5b14764a6d2b2effc7d40c4aa54183aae37d Mon Sep 17 00:00:00 2001
From: Jo Franchetti <jofranchetti@gmail.com>
Date: Thu, 20 Mar 2025 23:35:21 +0000
Subject: [PATCH 107/115] docs: add docs for some webgpu APIs (#28548)

---
 cli/tsc/dts/lib.deno_webgpu.d.ts | 281 ++++++++++++++++++++++++++++++-
 1 file changed, 273 insertions(+), 8 deletions(-)

diff --git a/cli/tsc/dts/lib.deno_webgpu.d.ts b/cli/tsc/dts/lib.deno_webgpu.d.ts
index 4fd9460ffa7176..e365650e921625 100644
--- a/cli/tsc/dts/lib.deno_webgpu.d.ts
+++ b/cli/tsc/dts/lib.deno_webgpu.d.ts
@@ -76,7 +76,37 @@ declare class GPUAdapterInfo {
   readonly subgroupMaxSize: number;
 }
 
-/** @category GPU */
+/**
+ * The entry point to WebGPU in Deno, accessed via the global navigator.gpu property.
+ *
+ * @example
+ * ```ts
+ * // Basic WebGPU initialization in Deno
+ * const gpu = navigator.gpu;
+ * if (!gpu) {
+ *   console.error("WebGPU not supported in this Deno environment");
+ *   Deno.exit(1);
+ * }
+ *
+ * // Request an adapter (physical GPU device)
+ * const adapter = await gpu.requestAdapter();
+ * if (!adapter) {
+ *   console.error("Couldn't request WebGPU adapter");
+ *   Deno.exit(1);
+ * }
+ *
+ * // Get the preferred format for canvas rendering
+ * // Useful when working with canvas in browser/Deno environments
+ * const preferredFormat = gpu.getPreferredCanvasFormat();
+ * console.log(`Preferred canvas format: ${preferredFormat}`);
+ *
+ * // Create a device with default settings
+ * const device = await adapter.requestDevice();
+ * console.log("WebGPU device created successfully");
+ * ```
+ *
+ * @category GPU
+ */
 declare class GPU {
   requestAdapter(
     options?: GPURequestAdapterOptions,
@@ -93,7 +123,43 @@ interface GPURequestAdapterOptions {
 /** @category GPU */
 type GPUPowerPreference = "low-power" | "high-performance";
 
-/** @category GPU */
+/**
+ * Represents a physical GPU device that can be used to create a logical GPU device.
+ *
+ * @example
+ * ```ts
+ * // Request an adapter with specific power preference
+ * const adapter = await navigator.gpu.requestAdapter({
+ *   powerPreference: "high-performance"
+ * });
+ *
+ * if (!adapter) {
+ *   console.error("WebGPU not supported or no appropriate adapter found");
+ *   Deno.exit(1);
+ * }
+ *
+ * // Check adapter capabilities
+ * if (adapter.features.has("shader-f16")) {
+ *   console.log("Adapter supports 16-bit shader operations");
+ * }
+ *
+ * console.log(`Maximum buffer size: ${adapter.limits.maxBufferSize} bytes`);
+ *
+ * // Get adapter info (vendor, device, etc.)
+ * console.log(`GPU Vendor: ${adapter.info.vendor}`);
+ * console.log(`GPU Device: ${adapter.info.device}`);
+ *
+ * // Request a logical device with specific features and limits
+ * const device = await adapter.requestDevice({
+ *   requiredFeatures: ["shader-f16"],
+ *   requiredLimits: {
+ *     maxStorageBufferBindingSize: 128 * 1024 * 1024, // 128MB
+ *   }
+ * });
+ * ```
+ *
+ * @category GPU
+ */
 declare class GPUAdapter {
   readonly features: GPUSupportedFeatures;
   readonly limits: GPUSupportedLimits;
@@ -156,7 +222,30 @@ type GPUFeatureName =
   | "shader-primitive-index"
   | "shader-early-depth-test";
 
-/** @category GPU */
+/**
+ * The primary interface for interacting with a WebGPU device.
+ *
+ * @example
+ * ```ts
+ * // Request a GPU adapter from the browser/Deno
+ * const adapter = await navigator.gpu.requestAdapter();
+ * if (!adapter) throw new Error("WebGPU not supported");
+ *
+ * // Request a device from the adapter
+ * const device = await adapter.requestDevice();
+ *
+ * // Create a buffer on the GPU
+ * const buffer = device.createBuffer({
+ *   size: 128,
+ *   usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,
+ * });
+ *
+ * // Use device.queue to submit commands
+ * device.queue.writeBuffer(buffer, 0, new Uint8Array([1, 2, 3, 4]));
+ * ```
+ *
+ * @category GPU
+ */
 declare class GPUDevice extends EventTarget implements GPUObjectBase {
   label: string;
 
@@ -207,7 +296,35 @@ declare class GPUDevice extends EventTarget implements GPUObjectBase {
   createQuerySet(descriptor: GPUQuerySetDescriptor): GPUQuerySet;
 }
 
-/** @category GPU */
+/**
+ * Represents a block of memory allocated on the GPU.
+ *
+ * @example
+ * ```ts
+ * // Create a buffer that can be used as a vertex buffer and can be written to
+ * const vertexBuffer = device.createBuffer({
+ *   label: "Vertex Buffer",
+ *   size: vertices.byteLength,
+ *   usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,
+ * });
+ *
+ * // Write data to the buffer
+ * device.queue.writeBuffer(vertexBuffer, 0, vertices);
+ *
+ * // Example of creating a mapped buffer for CPU access
+ * const stagingBuffer = device.createBuffer({
+ *   size: data.byteLength,
+ *   usage: GPUBufferUsage.MAP_WRITE | GPUBufferUsage.COPY_SRC,
+ *   mappedAtCreation: true,
+ * });
+ *
+ * // Copy data to the mapped buffer
+ * new Uint8Array(stagingBuffer.getMappedRange()).set(data);
+ * stagingBuffer.unmap();
+ * ```
+ *
+ * @category GPU
+ */
 declare class GPUBuffer implements GPUObjectBase {
   label: string;
 
@@ -265,7 +382,35 @@ declare class GPUMapMode {
   static WRITE: 0x0002;
 }
 
-/** @category GPU */
+/**
+ * Represents a texture (image) in GPU memory.
+ *
+ * @example
+ * ```ts
+ * // Create a texture to render to
+ * const texture = device.createTexture({
+ *   label: "Output Texture",
+ *   size: { width: 640, height: 480 },
+ *   format: "rgba8unorm",
+ *   usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING,
+ * });
+ *
+ * // Get a view of the texture (needed for most operations)
+ * const textureView = texture.createView();
+ *
+ * // When the texture is no longer needed
+ * texture.destroy();
+ *
+ * // Example: Creating a depth texture
+ * const depthTexture = device.createTexture({
+ *   size: { width: 640, height: 480 },
+ *   format: "depth24plus",
+ *   usage: GPUTextureUsage.RENDER_ATTACHMENT,
+ * });
+ * ```
+ *
+ * @category GPU
+ */
 declare class GPUTexture implements GPUObjectBase {
   label: string;
 
@@ -625,9 +770,44 @@ interface GPUPipelineErrorInit {
 /** @category GPU */
 type GPUPipelineErrorReason = "validation" | "internal";
 
-/** @category GPU */
+/**
+ * Represents a compiled shader module that can be used to create graphics or compute pipelines.
+ *
+ * @example
+ * ```ts
+ * // Create a shader module using WGSL (WebGPU Shading Language)
+ * const shaderModule = device.createShaderModule({
+ *   label: "My Shader",
+ *   code: `
+ *     @vertex
+ *     fn vertexMain(@location(0) pos: vec2f) -> @builtin(position) vec4f {
+ *       return vec4f(pos, 0.0, 1.0);
+ *     }
+ *
+ *     @fragment
+ *     fn fragmentMain() -> @location(0) vec4f {
+ *       return vec4f(1.0, 0.0, 0.0, 1.0); // red color
+ *     }
+ *   `
+ * });
+ *
+ * // Can optionally check for compilation errors/warnings
+ * const compilationInfo = await shaderModule.getCompilationInfo();
+ * for (const message of compilationInfo.messages) {
+ *   console.log(`${message.type}: ${message.message} at ${message.lineNum}:${message.linePos}`);
+ * }
+ * ```
+ *
+ * @category GPU
+ */
 declare class GPUShaderModule implements GPUObjectBase {
   label: string;
+
+  /**
+   * Returns compilation messages for this shader module,
+   * which can include errors, warnings and info messages.
+   */
+  getCompilationInfo(): Promise<GPUCompilationInfo>;
 }
 
 /** @category GPU */
@@ -892,7 +1072,50 @@ declare class GPUCommandBuffer implements GPUObjectBase {
 /** @category GPU */
 interface GPUCommandBufferDescriptor extends GPUObjectDescriptorBase {}
 
-/** @category GPU */
+/**
+ * Used to record GPU commands for later execution by the GPU.
+ *
+ * @example
+ * ```ts
+ * // Create a command encoder
+ * const commandEncoder = device.createCommandEncoder({
+ *   label: "Main Command Encoder"
+ * });
+ *
+ * // Record a copy from one buffer to another
+ * commandEncoder.copyBufferToBuffer(
+ *   sourceBuffer, 0, // Source buffer and offset
+ *   destinationBuffer, 0, // Destination buffer and offset
+ *   sourceBuffer.size // Size to copy
+ * );
+ *
+ * // Begin a compute pass to execute a compute shader
+ * const computePass = commandEncoder.beginComputePass();
+ * computePass.setPipeline(computePipeline);
+ * computePass.setBindGroup(0, bindGroup);
+ * computePass.dispatchWorkgroups(32, 1, 1); // Run 32 workgroups
+ * computePass.end();
+ *
+ * // Begin a render pass to draw to a texture
+ * const renderPass = commandEncoder.beginRenderPass({
+ *   colorAttachments: [{
+ *     view: textureView,
+ *     clearValue: { r: 0.0, g: 0.0, b: 0.0, a: 1.0 },
+ *     loadOp: "clear",
+ *     storeOp: "store"
+ *   }]
+ * });
+ * renderPass.setPipeline(renderPipeline);
+ * renderPass.draw(3, 1, 0, 0); // Draw a triangle
+ * renderPass.end();
+ *
+ * // Finish encoding and submit to GPU
+ * const commandBuffer = commandEncoder.finish();
+ * device.queue.submit([commandBuffer]);
+ * ```
+ *
+ * @category GPU
+ */
 declare class GPUCommandEncoder implements GPUObjectBase {
   label: string;
 
@@ -1264,7 +1487,48 @@ interface GPURenderBundleEncoderDescriptor extends GPURenderPassLayout {
   stencilReadOnly?: boolean;
 }
 
-/** @category GPU */
+/**
+ * Represents a queue to submit commands to the GPU.
+ *
+ * @example
+ * ```ts
+ * // Get a queue from the device (each device has a default queue)
+ * const queue = device.queue;
+ *
+ * // Write data to a buffer
+ * const buffer = device.createBuffer({
+ *   size: data.byteLength,
+ *   usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.STORAGE
+ * });
+ * queue.writeBuffer(buffer, 0, data);
+ *
+ * // Submit command buffers to the GPU for execution
+ * const commandBuffer = commandEncoder.finish();
+ * queue.submit([commandBuffer]);
+ *
+ * // Wait for all submitted operations to complete
+ * await queue.onSubmittedWorkDone();
+ *
+ * // Example: Write data to a texture
+ * const texture = device.createTexture({
+ *   size: { width: 256, height: 256 },
+ *   format: "rgba8unorm",
+ *   usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST
+ * });
+ *
+ * const data = new Uint8Array(256 * 256 * 4); // RGBA data
+ * // Fill data with your texture content...
+ *
+ * queue.writeTexture(
+ *   { texture },
+ *   data,
+ *   { bytesPerRow: 256 * 4 },
+ *   { width: 256, height: 256 }
+ * );
+ * ```
+ *
+ * @category GPU
+ */
 declare class GPUQueue implements GPUObjectBase {
   label: string;
 
@@ -1397,6 +1661,7 @@ interface GPUCanvasConfiguration {
   colorSpace?: "srgb" | "display-p3";
   alphaMode?: GPUCanvasAlphaMode;
 }
+
 /** @category GPU */
 interface GPUCanvasContext {
   configure(configuration: GPUCanvasConfiguration): undefined;

From 24d20d6ec4c7bd3df004da613a7ec04e76a3b6c9 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 20 Mar 2025 19:21:34 -0700
Subject: [PATCH 108/115] chore(deps): bump ring from 0.17.8 to 0.17.13
 (#28423)

---
 Cargo.lock | 9 ++++-----
 Cargo.toml | 2 +-
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 88d5914df44caa..a66297ece607fb 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -807,9 +807,9 @@ dependencies = [
 
 [[package]]
 name = "cc"
-version = "1.2.3"
+version = "1.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "27f657647bcff5394bf56c7317665bbf790a137a50eaaa5c6bfbb9e27a518f2d"
+checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c"
 dependencies = [
  "jobserver",
  "libc",
@@ -6848,15 +6848,14 @@ dependencies = [
 
 [[package]]
 name = "ring"
-version = "0.17.8"
+version = "0.17.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
+checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
 dependencies = [
  "cc",
  "cfg-if",
  "getrandom",
  "libc",
- "spin",
  "untrusted",
  "windows-sys 0.52.0",
 ]
diff --git a/Cargo.toml b/Cargo.toml
index 2eb00cf11c6d4d..ac8cdc5d995c00 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -267,7 +267,7 @@ rand = "=0.8.5"
 rayon = "1.8.0"
 regex = "^1.7.0"
 reqwest = { version = "=0.12.5", default-features = false, features = ["rustls-tls", "stream", "gzip", "brotli", "socks", "json", "http2"] } # pinned because of https://github.com/seanmonstar/reqwest/pull/1955
-ring = "^0.17.0"
+ring = "^0.17.14"
 ripemd = "0.1.3"
 rusqlite = { version = "0.34.0", features = ["unlock_notify", "bundled", "session", "modern_sqlite", "limits"] } # "modern_sqlite": need sqlite >= 3.49.0 for some db configs
 rustc-hash = "2.1.1"

From 7afdff6f6ce3ee54b5b368880a0b526851640a5e Mon Sep 17 00:00:00 2001
From: Adakite <88466388+adakite1@users.noreply.github.com>
Date: Fri, 21 Mar 2025 11:04:44 +0800
Subject: [PATCH 109/115] fix(ext/os): explicitly enable `sysinfoapi` feature
 on `winapi` dependency (#28568)

This pr explicitly enables the `sysinfoapi` feature flag on `winapi` in
`deno_os`, so that `deno_os` and other deno crates that rely on it can
be built independently outside of the workspace on Windows.
---
 ext/os/Cargo.toml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ext/os/Cargo.toml b/ext/os/Cargo.toml
index 7ebb7352cf6cf7..2334680d6313f2 100644
--- a/ext/os/Cargo.toml
+++ b/ext/os/Cargo.toml
@@ -27,7 +27,7 @@ thiserror.workspace = true
 tokio.workspace = true
 
 [target.'cfg(windows)'.dependencies]
-winapi = { workspace = true, features = ["commapi", "knownfolders", "mswsock", "objbase", "psapi", "shlobj", "tlhelp32", "winbase", "winerror", "winuser", "winsock2"] }
+winapi = { workspace = true, features = ["commapi", "knownfolders", "mswsock", "objbase", "psapi", "shlobj", "sysinfoapi", "tlhelp32", "winbase", "winerror", "winuser", "winsock2"] }
 ntapi = "0.4.0"
 
 [target.'cfg(unix)'.dependencies]

From 94c9681385342b01b12adf49daf0cbb279aeb91d Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Thu, 20 Mar 2025 23:09:57 -0400
Subject: [PATCH 110/115] feat(unstable): support using a local copy of npm
 packages (#28512)

This adds support for using a local copy of an npm package.

```js
// deno.json
{
  "patch": [
    "../path/to/local_npm_package"
  ],
  // required until Deno 2.3, but it will still be considered unstable
  "unstable": ["npm-patch"]
}
```

1. Requires using a node_modules folder.
2. When using `"nodeModulesDir": "auto"`, it recreates the folder in the
node_modules directory on each run which will slightly increase startup
time.
3. When using the default with a package.json (`"nodeModulesDir":
"manual"`), updating the package requires running `deno install`. This
is to get the package into the node_modules directory of the current
workspace. This is necessary instead of linking because packages can
have multiple "copy packages" due to peer dep resolution.

Caveat: Specifying a local copy of an npm package or making changes to
its dependencies will purge npm packages from the lockfile. This might
cause npm resolution to resolve differently and it may end up not using
the local copy of the npm package. It's very difficult to only
invalidate resolution midway through the graph and then only rebuild
that part of the resolution, so this is just a first pass that can be
improved in the future. In practice, this probably won't be an issue for
most people.

Another limitation is this also requires the npm package name to exist
in the registry at the moment.
---
 Cargo.lock                                    |  58 +++-
 Cargo.toml                                    |   8 +-
 cli/args/lockfile.rs                          |  49 ++++
 cli/args/mod.rs                               |  35 ++-
 cli/args/package_json.rs                      |  39 +++
 cli/factory.rs                                |  25 ++
 cli/graph_util.rs                             |   2 +-
 cli/lsp/resolver.rs                           |  13 +
 cli/npm/installer/global.rs                   |  10 +-
 cli/npm/installer/local.rs                    | 277 +++++++++++++-----
 cli/npm/installer/resolution.rs               |  44 ++-
 cli/npm/managed.rs                            |  16 +-
 cli/npm/mod.rs                                | 235 +++++++++++++++
 cli/tools/run/mod.rs                          |   3 +-
 cli/util/fs.rs                                |   2 +-
 resolvers/npm_cache/fs_util.rs                | 133 +++++----
 resolvers/npm_cache/lib.rs                    |   3 +
 .../npm/patch_npm_package_deep/__test__.jsonc |  25 ++
 .../specs/npm/patch_npm_package_deep/auto.out |   5 +
 .../expected_lockfile.out                     |  25 ++
 .../npm/patch_npm_package_deep/main/deno.json |   6 +
 .../npm/patch_npm_package_deep/main/main.ts   |   3 +
 .../patch_npm_package_deep/main/package.json  |   5 +
 .../patch_npm_package_deep/patched/main.mjs   |   1 +
 .../patched/package.json                      |   5 +
 .../__test__.jsonc                            |   7 +
 .../cowsay/main.mjs                           |   3 +
 .../cowsay/package.json                       |   8 +
 .../main/deno.json                            |   6 +
 .../main/main.ts                              |   3 +
 .../main/package.json                         |   5 +
 .../output.out                                |   8 +
 .../__test__.jsonc                            |  46 +++
 .../change_patch.ts                           |   6 +
 .../cowsay/main.mjs                           |   3 +
 .../cowsay/package.json                       |   5 +
 .../expected_lockfile.out                     |  19 ++
 .../expected_lockfile_after_change.out        |  30 ++
 .../main/deno.json                            |   6 +
 .../patch_npm_package_top_level/main/main.ts  |   3 +
 .../main/package.json                         |   5 +
 .../node_modules_dir_none.out                 |   1 +
 42 files changed, 1011 insertions(+), 180 deletions(-)
 create mode 100644 tests/specs/npm/patch_npm_package_deep/__test__.jsonc
 create mode 100644 tests/specs/npm/patch_npm_package_deep/auto.out
 create mode 100644 tests/specs/npm/patch_npm_package_deep/expected_lockfile.out
 create mode 100644 tests/specs/npm/patch_npm_package_deep/main/deno.json
 create mode 100644 tests/specs/npm/patch_npm_package_deep/main/main.ts
 create mode 100644 tests/specs/npm/patch_npm_package_deep/main/package.json
 create mode 100644 tests/specs/npm/patch_npm_package_deep/patched/main.mjs
 create mode 100644 tests/specs/npm/patch_npm_package_deep/patched/package.json
 create mode 100644 tests/specs/npm/patch_npm_package_file_specifier/__test__.jsonc
 create mode 100644 tests/specs/npm/patch_npm_package_file_specifier/cowsay/main.mjs
 create mode 100644 tests/specs/npm/patch_npm_package_file_specifier/cowsay/package.json
 create mode 100644 tests/specs/npm/patch_npm_package_file_specifier/main/deno.json
 create mode 100644 tests/specs/npm/patch_npm_package_file_specifier/main/main.ts
 create mode 100644 tests/specs/npm/patch_npm_package_file_specifier/main/package.json
 create mode 100644 tests/specs/npm/patch_npm_package_file_specifier/output.out
 create mode 100644 tests/specs/npm/patch_npm_package_top_level/__test__.jsonc
 create mode 100644 tests/specs/npm/patch_npm_package_top_level/change_patch.ts
 create mode 100644 tests/specs/npm/patch_npm_package_top_level/cowsay/main.mjs
 create mode 100644 tests/specs/npm/patch_npm_package_top_level/cowsay/package.json
 create mode 100644 tests/specs/npm/patch_npm_package_top_level/expected_lockfile.out
 create mode 100644 tests/specs/npm/patch_npm_package_top_level/expected_lockfile_after_change.out
 create mode 100644 tests/specs/npm/patch_npm_package_top_level/main/deno.json
 create mode 100644 tests/specs/npm/patch_npm_package_top_level/main/main.ts
 create mode 100644 tests/specs/npm/patch_npm_package_top_level/main/package.json
 create mode 100644 tests/specs/npm/patch_npm_package_top_level/node_modules_dir_none.out

diff --git a/Cargo.lock b/Cargo.lock
index a66297ece607fb..ae9f29c32d806d 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -924,7 +924,7 @@ dependencies = [
  "chrono",
  "deno_bench_util",
  "deno_cache_dir",
- "deno_lockfile",
+ "deno_lockfile 0.25.0",
  "deno_semver",
  "deno_terminal 0.2.2",
  "deno_tower_lsp",
@@ -1500,9 +1500,9 @@ dependencies = [
  "deno_graph",
  "deno_lib",
  "deno_lint",
- "deno_lockfile",
+ "deno_lockfile 0.25.0",
  "deno_media_type",
- "deno_npm",
+ "deno_npm 0.28.0",
  "deno_npm_cache",
  "deno_package_json",
  "deno_path_util",
@@ -1746,9 +1746,9 @@ dependencies = [
 
 [[package]]
 name = "deno_config"
-version = "0.50.0"
+version = "0.51.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56792005d20f0b38f2e190b15918362440bebc0065b825af59d6022be465f764"
+checksum = "8910eedd609c53d8ed2f38afaf6932ed4dcc7d09f572757443068a3e6eea16c0"
 dependencies = [
  "boxed_error",
  "capacity_builder 0.5.0",
@@ -2149,7 +2149,7 @@ dependencies = [
  "deno_fs",
  "deno_media_type",
  "deno_node",
- "deno_npm",
+ "deno_npm 0.28.0",
  "deno_path_util",
  "deno_resolver",
  "deno_runtime",
@@ -2201,6 +2201,18 @@ dependencies = [
  "thiserror 2.0.3",
 ]
 
+[[package]]
+name = "deno_lockfile"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a77c5c11d1a40430ec193e7a64a824f7893cc561a7512b489d6569ceb373a1c6"
+dependencies = [
+ "deno_semver",
+ "serde",
+ "serde_json",
+ "thiserror 2.0.3",
+]
+
 [[package]]
 name = "deno_media_type"
 version = "0.2.8"
@@ -2359,7 +2371,27 @@ dependencies = [
  "async-trait",
  "capacity_builder 0.5.0",
  "deno_error",
- "deno_lockfile",
+ "deno_lockfile 0.24.0",
+ "deno_semver",
+ "futures",
+ "log",
+ "monch",
+ "serde",
+ "serde_json",
+ "thiserror 2.0.3",
+ "url",
+]
+
+[[package]]
+name = "deno_npm"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43418480889ca9de951229b9d09a9b75d2581ed9645643036207977b966246aa"
+dependencies = [
+ "async-trait",
+ "capacity_builder 0.5.0",
+ "deno_error",
+ "deno_lockfile 0.25.0",
  "deno_semver",
  "futures",
  "log",
@@ -2379,7 +2411,7 @@ dependencies = [
  "boxed_error",
  "deno_cache_dir",
  "deno_error",
- "deno_npm",
+ "deno_npm 0.28.0",
  "deno_path_util",
  "deno_semver",
  "deno_unsync",
@@ -2440,9 +2472,9 @@ dependencies = [
 
 [[package]]
 name = "deno_package_json"
-version = "0.5.2"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36ea66a2e2f45fe056b3db3e701e16c139767cb214530f339e9e86217b296cc6"
+checksum = "236bc2d6d6c06b68cbde960542e13501cf833c975f221a012da619f714c57123"
 dependencies = [
  "boxed_error",
  "deno_error",
@@ -2530,7 +2562,7 @@ dependencies = [
  "deno_config",
  "deno_error",
  "deno_media_type",
- "deno_npm",
+ "deno_npm 0.28.0",
  "deno_package_json",
  "deno_path_util",
  "deno_semver",
@@ -2934,7 +2966,7 @@ dependencies = [
  "deno_error",
  "deno_lib",
  "deno_media_type",
- "deno_npm",
+ "deno_npm 0.28.0",
  "deno_package_json",
  "deno_path_util",
  "deno_resolver",
@@ -3499,7 +3531,7 @@ dependencies = [
  "deno_ast",
  "deno_error",
  "deno_graph",
- "deno_npm",
+ "deno_npm 0.27.2",
  "deno_semver",
  "futures",
  "hashlink 0.8.4",
diff --git a/Cargo.toml b/Cargo.toml
index ac8cdc5d995c00..de04bb9b27591f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -54,13 +54,13 @@ deno_ast = { version = "=0.46.2", features = ["transpiling"] }
 deno_core = { version = "0.341.0" }
 
 deno_bench_util = { version = "0.189.0", path = "./bench_util" }
-deno_config = { version = "=0.50.0", features = ["workspace"] }
+deno_config = { version = "=0.51.0", features = ["workspace"] }
 deno_doc = "=0.169.1"
 deno_graph = "=0.89.2"
 deno_lint = "=0.74.0"
-deno_lockfile = "=0.24.0"
+deno_lockfile = "=0.25.0"
 deno_media_type = { version = "=0.2.8", features = ["module_specifier"] }
-deno_npm = "=0.27.2"
+deno_npm = "=0.28.0"
 deno_path_util = "=0.3.2"
 deno_permissions = { version = "0.54.0", path = "./runtime/permissions" }
 deno_runtime = { version = "0.203.0", path = "./runtime" }
@@ -152,7 +152,7 @@ data-url = "=0.3.1"
 deno_cache_dir = "=0.18.0"
 deno_error = "=0.5.6"
 deno_native_certs = "0.3.0"
-deno_package_json = { version = "=0.5.2", default-features = false }
+deno_package_json = { version = "=0.6.0", default-features = false }
 deno_task_shell = "=0.20.2"
 deno_unsync = "0.4.2"
 deno_whoami = "0.1.0"
diff --git a/cli/args/lockfile.rs b/cli/args/lockfile.rs
index 7c75eaabdf9d33..ce95d56f020aca 100644
--- a/cli/args/lockfile.rs
+++ b/cli/args/lockfile.rs
@@ -17,6 +17,7 @@ use deno_package_json::PackageJsonDepValue;
 use deno_path_util::fs::atomic_write_file_with_retries;
 use deno_runtime::deno_node::PackageJson;
 use deno_semver::jsr::JsrDepPackageReq;
+use indexmap::IndexMap;
 
 use crate::args::deno_json::import_map_deps;
 use crate::args::DenoSubcommand;
@@ -236,6 +237,54 @@ impl CliLockfile {
           ))
         })
         .collect(),
+      patches: if workspace.has_unstable("npm-patch") {
+        workspace
+          .patch_pkg_jsons()
+          .filter_map(|pkg_json| {
+            fn collect_deps(
+              deps: Option<&IndexMap<String, String>>,
+            ) -> HashSet<JsrDepPackageReq> {
+              deps
+                .map(|i| {
+                  i.iter()
+                    .filter_map(|(k, v)| PackageJsonDepValue::parse(k, v).ok())
+                    .filter_map(|dep| match dep {
+                      PackageJsonDepValue::Req(req) => {
+                        Some(JsrDepPackageReq::npm(req.clone()))
+                      }
+                      // not supported
+                      PackageJsonDepValue::File(_)
+                      | PackageJsonDepValue::Workspace(_) => None,
+                    })
+                    .collect()
+                })
+                .unwrap_or_default()
+            }
+
+            let key = format!(
+              "npm:{}@{}",
+              pkg_json.name.as_ref()?,
+              pkg_json.version.as_ref()?
+            );
+            // anything that affects npm resolution should go here in order to bust
+            // the npm resolution when it changes
+            let value = deno_lockfile::LockfilePatchContent {
+              dependencies: collect_deps(pkg_json.dependencies.as_ref()),
+              peer_dependencies: collect_deps(
+                pkg_json.peer_dependencies.as_ref(),
+              ),
+              peer_dependencies_meta: pkg_json
+                .peer_dependencies_meta
+                .clone()
+                .and_then(|v| serde_json::from_value(v).ok())
+                .unwrap_or_default(),
+            };
+            Some((key, value))
+          })
+          .collect()
+      } else {
+        Default::default()
+      },
     };
     lockfile.set_workspace_config(deno_lockfile::SetWorkspaceConfigOptions {
       no_npm: flags.no_npm,
diff --git a/cli/args/mod.rs b/cli/args/mod.rs
index 682e17de1b7fb1..fb6b783fd58357 100644
--- a/cli/args/mod.rs
+++ b/cli/args/mod.rs
@@ -701,7 +701,10 @@ impl CliOptions {
     NPM_PROCESS_STATE.is_some()
   }
 
-  pub fn node_modules_dir(
+  /// Gets the explicitly specified NodeModulesDir setting.
+  ///
+  /// Use `WorkspaceFactory.node_modules_dir_mode()` to get the resolved value.
+  pub fn specified_node_modules_dir(
     &self,
   ) -> Result<
     Option<NodeModulesDirMode>,
@@ -1122,20 +1125,21 @@ impl CliOptions {
   }
 
   pub fn unstable_features(&self) -> Vec<String> {
-    let mut from_config_file = self.workspace().unstable_features().to_vec();
-
-    self
-      .flags
-      .unstable_config
-      .features
+    let from_config_file = self.workspace().unstable_features();
+    let unstable_features = from_config_file
       .iter()
-      .for_each(|feature| {
-        if !from_config_file.contains(feature) {
-          from_config_file.push(feature.to_string());
-        }
-      });
+      .chain(
+        self
+          .flags
+          .unstable_config
+          .features
+          .iter()
+          .filter(|f| !from_config_file.contains(f)),
+      )
+      .map(|f| f.to_owned())
+      .collect::<Vec<_>>();
 
-    if !from_config_file.is_empty() {
+    if !unstable_features.is_empty() {
       let all_valid_unstable_flags: Vec<&str> = crate::UNSTABLE_GRANULAR_FLAGS
         .iter()
         .map(|granular_flag| granular_flag.name)
@@ -1147,12 +1151,13 @@ impl CliOptions {
           "fmt-component",
           "fmt-sql",
           "lazy-npm-caching",
+          "npm-patch",
         ])
         .collect();
 
       // check and warn if the unstable flag of config file isn't supported, by
       // iterating through the vector holding the unstable flags
-      for unstable_value_from_config_file in &from_config_file {
+      for unstable_value_from_config_file in &unstable_features {
         if !all_valid_unstable_flags
           .contains(&unstable_value_from_config_file.as_str())
         {
@@ -1165,7 +1170,7 @@ impl CliOptions {
       }
     }
 
-    from_config_file
+    unstable_features
   }
 
   pub fn v8_flags(&self) -> &Vec<String> {
diff --git a/cli/args/package_json.rs b/cli/args/package_json.rs
index 8e07bab59ec5e9..3007fa7a52f218 100644
--- a/cli/args/package_json.rs
+++ b/cli/args/package_json.rs
@@ -10,8 +10,11 @@ use deno_package_json::PackageJsonDepValue;
 use deno_package_json::PackageJsonDepValueParseError;
 use deno_package_json::PackageJsonDepWorkspaceReq;
 use deno_semver::npm::NpmPackageReqReference;
+use deno_semver::package::PackageName;
+use deno_semver::package::PackageNv;
 use deno_semver::package::PackageReq;
 use deno_semver::StackString;
+use deno_semver::Version;
 use deno_semver::VersionReq;
 use thiserror::Error;
 
@@ -28,6 +31,12 @@ pub struct InstallLocalPkg {
   pub target_dir: PathBuf,
 }
 
+#[derive(Debug)]
+pub struct InstallPatchPkg {
+  pub nv: PackageNv,
+  pub target_dir: PathBuf,
+}
+
 #[derive(Debug, Error, Clone)]
 #[error("Failed to install '{}'\n    at {}", alias, location)]
 pub struct PackageJsonDepValueParseWithLocationError {
@@ -41,6 +50,7 @@ pub struct PackageJsonDepValueParseWithLocationError {
 pub struct NpmInstallDepsProvider {
   remote_pkgs: Vec<InstallNpmRemotePkg>,
   local_pkgs: Vec<InstallLocalPkg>,
+  patch_pkgs: Vec<InstallPatchPkg>,
   pkg_json_dep_errors: Vec<PackageJsonDepValueParseWithLocationError>,
 }
 
@@ -53,6 +63,7 @@ impl NpmInstallDepsProvider {
     // todo(dsherret): estimate capacity?
     let mut local_pkgs = Vec::new();
     let mut remote_pkgs = Vec::new();
+    let mut patch_pkgs = Vec::new();
     let mut pkg_json_dep_errors = Vec::new();
     let workspace_npm_pkgs = workspace.npm_packages();
 
@@ -172,11 +183,35 @@ impl NpmInstallDepsProvider {
       }
     }
 
+    if workspace.has_unstable("npm-patch") {
+      for pkg in workspace.patch_pkg_jsons() {
+        let Some(name) = pkg.name.as_ref() else {
+          continue;
+        };
+        let Some(version) = pkg
+          .version
+          .as_ref()
+          .and_then(|v| Version::parse_from_npm(v).ok())
+        else {
+          continue;
+        };
+        patch_pkgs.push(InstallPatchPkg {
+          nv: PackageNv {
+            name: PackageName::from_str(name),
+            version,
+          },
+          target_dir: pkg.dir_path().to_path_buf(),
+        })
+      }
+    }
+
     remote_pkgs.shrink_to_fit();
     local_pkgs.shrink_to_fit();
+    patch_pkgs.shrink_to_fit();
     Self {
       remote_pkgs,
       local_pkgs,
+      patch_pkgs,
       pkg_json_dep_errors,
     }
   }
@@ -189,6 +224,10 @@ impl NpmInstallDepsProvider {
     &self.local_pkgs
   }
 
+  pub fn patch_pkgs(&self) -> &[InstallPatchPkg] {
+    &self.patch_pkgs
+  }
+
   pub fn pkg_json_dep_errors(
     &self,
   ) -> &[PackageJsonDepValueParseWithLocationError] {
diff --git a/cli/factory.rs b/cli/factory.rs
index ca79621eff5f7a..d219030ccd70b3 100644
--- a/cli/factory.rs
+++ b/cli/factory.rs
@@ -7,8 +7,10 @@ use std::path::PathBuf;
 use std::sync::Arc;
 
 use deno_cache_dir::npm::NpmCacheDir;
+use deno_config::deno_json::NodeModulesDirMode;
 use deno_config::workspace::Workspace;
 use deno_config::workspace::WorkspaceDirectory;
+use deno_core::anyhow::bail;
 use deno_core::anyhow::Context;
 use deno_core::error::AnyError;
 use deno_core::futures::FutureExt;
@@ -95,6 +97,7 @@ use crate::npm::CliNpmResolver;
 use crate::npm::CliNpmResolverManagedSnapshotOption;
 use crate::npm::CliNpmTarballCache;
 use crate::npm::NpmResolutionInitializer;
+use crate::npm::WorkspaceNpmPatchPackages;
 use crate::resolver::CliCjsTracker;
 use crate::resolver::CliDenoResolver;
 use crate::resolver::CliNpmGraphResolver;
@@ -342,6 +345,7 @@ struct CliFactoryServices {
   workspace_factory: Deferred<Arc<CliWorkspaceFactory>>,
   workspace_external_import_map_loader:
     Deferred<Arc<WorkspaceExternalImportMapLoader>>,
+  workspace_npm_patch_packages: Deferred<Arc<WorkspaceNpmPatchPackages>>,
 }
 
 #[derive(Debug, Default)]
@@ -641,6 +645,7 @@ impl CliFactory {
         Ok(Arc::new(NpmResolutionInitializer::new(
           self.npm_registry_info_provider()?.clone(),
           self.npm_resolution()?.clone(),
+          self.workspace_npm_patch_packages()?.clone(),
           match resolve_npm_resolution_snapshot()? {
             Some(snapshot) => {
               CliNpmResolverManagedSnapshotOption::Specified(Some(snapshot))
@@ -667,10 +672,30 @@ impl CliFactory {
         self.npm_registry_info_provider()?.clone(),
         self.npm_resolution()?.clone(),
         cli_options.maybe_lockfile().cloned(),
+        self.workspace_npm_patch_packages()?.clone(),
       )))
     })
   }
 
+  fn workspace_npm_patch_packages(
+    &self,
+  ) -> Result<&Arc<WorkspaceNpmPatchPackages>, AnyError> {
+    self
+      .services
+      .workspace_npm_patch_packages
+      .get_or_try_init(|| {
+        let cli_options = self.cli_options()?;
+        let npm_packages = Arc::new(WorkspaceNpmPatchPackages::from_workspace(
+          cli_options.workspace().as_ref(),
+        ));
+        if !npm_packages.0.is_empty() && !matches!(self.workspace_factory()?.node_modules_dir_mode()?, NodeModulesDirMode::Auto | NodeModulesDirMode::Manual) {
+          bail!("Patching npm packages requires using a node_modules directory. Ensure you have a package.json or set the \"nodeModulesDir\" option to \"auto\" or \"manual\" in your workspace root deno.json.")
+        } else {
+          Ok(npm_packages)
+        }
+      })
+  }
+
   pub async fn npm_resolver(&self) -> Result<&CliNpmResolver, AnyError> {
     self.initialize_npm_resolution_if_managed().await?;
     self.resolver_factory()?.npm_resolver()
diff --git a/cli/graph_util.rs b/cli/graph_util.rs
index 005641ec6005e4..d0b6f504b12d76 100644
--- a/cli/graph_util.rs
+++ b/cli/graph_util.rs
@@ -795,7 +795,7 @@ impl ModuleGraphBuilder {
     // opted into using a node_modules directory
     if self
       .cli_options
-      .node_modules_dir()?
+      .specified_node_modules_dir()?
       .map(|m| m == NodeModulesDirMode::Auto)
       .unwrap_or(false)
     {
diff --git a/cli/lsp/resolver.rs b/cli/lsp/resolver.rs
index 723d2514190582..7a0d5e7eef6974 100644
--- a/cli/lsp/resolver.rs
+++ b/cli/lsp/resolver.rs
@@ -75,6 +75,7 @@ use crate::npm::CliNpmResolver;
 use crate::npm::CliNpmResolverCreateOptions;
 use crate::npm::CliNpmResolverManagedSnapshotOption;
 use crate::npm::NpmResolutionInitializer;
+use crate::npm::WorkspaceNpmPatchPackages;
 use crate::resolver::CliDenoResolver;
 use crate::resolver::CliIsCjsResolver;
 use crate::resolver::CliNpmGraphResolver;
@@ -821,9 +822,20 @@ impl<'a> ResolverFactory<'a> {
         npm_client.clone(),
         npmrc.clone(),
       ));
+      let patch_packages: Arc<WorkspaceNpmPatchPackages> = self
+        .config_data
+        .as_ref()
+        .filter(|c| c.node_modules_dir.is_some()) // requires a node_modules dir
+        .map(|d| {
+          Arc::new(WorkspaceNpmPatchPackages::from_workspace(
+            &d.member_dir.workspace,
+          ))
+        })
+        .unwrap_or_default();
       let npm_resolution_initializer = Arc::new(NpmResolutionInitializer::new(
         registry_info_provider.clone(),
         self.services.npm_resolution.clone(),
+        patch_packages.clone(),
         match self.config_data.and_then(|d| d.lockfile.as_ref()) {
           Some(lockfile) => {
             CliNpmResolverManagedSnapshotOption::ResolveFromLockfile(
@@ -848,6 +860,7 @@ impl<'a> ResolverFactory<'a> {
         registry_info_provider,
         self.services.npm_resolution.clone(),
         maybe_lockfile.clone(),
+        patch_packages,
       ));
       let npm_installer = Arc::new(NpmInstaller::new(
         npm_cache.clone(),
diff --git a/cli/npm/installer/global.rs b/cli/npm/installer/global.rs
index bd3603d4731e99..74329db8c6dd74 100644
--- a/cli/npm/installer/global.rs
+++ b/cli/npm/installer/global.rs
@@ -101,11 +101,11 @@ async fn cache_packages(
 ) -> Result<(), deno_npm_cache::EnsurePackageError> {
   let mut futures_unordered = FuturesUnordered::new();
   for package in packages {
-    futures_unordered.push(async move {
-      tarball_cache
-        .ensure_package(&package.id.nv, &package.dist)
-        .await
-    });
+    if let Some(dist) = &package.dist {
+      futures_unordered.push(async move {
+        tarball_cache.ensure_package(&package.id.nv, dist).await
+      });
+    }
   }
   while let Some(result) = futures_unordered.next().await {
     // surface the first error
diff --git a/cli/npm/installer/local.rs b/cli/npm/installer/local.rs
index e3cb17299f956b..07e1f7eef2d0f4 100644
--- a/cli/npm/installer/local.rs
+++ b/cli/npm/installer/local.rs
@@ -18,12 +18,14 @@ use std::sync::Arc;
 
 use async_trait::async_trait;
 use deno_core::futures::stream::FuturesUnordered;
+use deno_core::futures::FutureExt;
 use deno_core::futures::StreamExt;
 use deno_core::parking_lot::Mutex;
 use deno_error::JsErrorBox;
 use deno_npm::resolution::NpmResolutionSnapshot;
 use deno_npm::NpmResolutionPackage;
 use deno_npm::NpmSystemInfo;
+use deno_npm_cache::hard_link_file;
 use deno_path_util::fs::atomic_write_file_with_retries;
 use deno_resolver::npm::get_package_folder_id_folder_name;
 use deno_resolver::npm::managed::NpmResolutionCell;
@@ -31,6 +33,9 @@ use deno_semver::package::PackageNv;
 use deno_semver::StackString;
 use serde::Deserialize;
 use serde::Serialize;
+use sys_traits::FsCopy;
+use sys_traits::FsDirEntry;
+use sys_traits::FsReadDir;
 
 use super::common::bin_entries;
 use super::common::NpmPackageFsInstaller;
@@ -142,6 +147,15 @@ pub enum SyncResolutionWithFsError {
     source: std::io::Error,
   },
   #[class(inherit)]
+  #[error("Copying '{from}' to '{to}'")]
+  Copying {
+    from: PathBuf,
+    to: PathBuf,
+    #[source]
+    #[inherit]
+    source: std::io::Error,
+  },
+  #[class(inherit)]
   #[error(transparent)]
   CopyDirRecursive(#[from] crate::util::fs::CopyDirRecursiveError),
   #[class(inherit)]
@@ -190,14 +204,14 @@ async fn sync_resolution_with_fs(
   let deno_node_modules_dir = deno_local_registry_dir.join("node_modules");
   fs::create_dir_all(&deno_node_modules_dir).map_err(|source| {
     SyncResolutionWithFsError::Creating {
-      path: deno_local_registry_dir.to_path_buf(),
+      path: deno_node_modules_dir.to_path_buf(),
       source,
     }
   })?;
   let bin_node_modules_dir_path = root_node_modules_dir_path.join(".bin");
   fs::create_dir_all(&bin_node_modules_dir_path).map_err(|source| {
     SyncResolutionWithFsError::Creating {
-      path: deno_local_registry_dir.to_path_buf(),
+      path: bin_node_modules_dir_path.to_path_buf(),
       source,
     }
   })?;
@@ -299,60 +313,67 @@ async fn sync_resolution_with_fs(
       .should_use_for_npm_package(&package.id.nv.name)
       || matches!(package_state, PackageFolderState::Uninitialized)
     {
-      // cache bust the dep from the dep setup cache so the symlinks
-      // are forced to be recreated
-      setup_cache.remove_dep(&package_folder_name);
-
-      let folder_path = folder_path.clone();
-      let bin_entries_to_setup = bin_entries.clone();
-      let packages_with_deprecation_warnings =
-        packages_with_deprecation_warnings.clone();
-
-      cache_futures.push(async move {
-        tarball_cache
-          .ensure_package(&package.id.nv, &package.dist)
-          .await
-          .map_err(JsErrorBox::from_err)?;
-        let pb_guard = progress_bar.update_with_prompt(
-          ProgressMessagePrompt::Initialize,
-          &package.id.nv.to_string(),
-        );
-        let sub_node_modules = folder_path.join("node_modules");
-        let package_path =
-          join_package_name(Cow::Owned(sub_node_modules), &package.id.nv.name);
-        let cache_folder = cache.package_folder_for_nv(&package.id.nv);
+      if let Some(dist) = &package.dist {
+        // cache bust the dep from the dep setup cache so the symlinks
+        // are forced to be recreated
+        setup_cache.remove_dep(&package_folder_name);
+
+        let folder_path = folder_path.clone();
+        let bin_entries_to_setup = bin_entries.clone();
+        let packages_with_deprecation_warnings =
+          packages_with_deprecation_warnings.clone();
+
+        cache_futures.push(
+          async move {
+            tarball_cache
+              .ensure_package(&package.id.nv, dist)
+              .await
+              .map_err(JsErrorBox::from_err)?;
+            let pb_guard = progress_bar.update_with_prompt(
+              ProgressMessagePrompt::Initialize,
+              &package.id.nv.to_string(),
+            );
+            let sub_node_modules = folder_path.join("node_modules");
+            let package_path = join_package_name(
+              Cow::Owned(sub_node_modules),
+              &package.id.nv.name,
+            );
+            let cache_folder = cache.package_folder_for_nv(&package.id.nv);
+
+            deno_core::unsync::spawn_blocking({
+              let package_path = package_path.clone();
+              let sys = sys.clone();
+              move || {
+                clone_dir_recursive(&sys, &cache_folder, &package_path)?;
+                // write out a file that indicates this folder has been initialized
+                write_initialized_file(&initialized_file, &tags)?;
+
+                Ok::<_, SyncResolutionWithFsError>(())
+              }
+            })
+            .await
+            .map_err(JsErrorBox::from_err)?
+            .map_err(JsErrorBox::from_err)?;
+
+            if package.bin.is_some() {
+              bin_entries_to_setup.borrow_mut().add(package, package_path);
+            }
 
-        deno_core::unsync::spawn_blocking({
-          let package_path = package_path.clone();
-          let sys = sys.clone();
-          move || {
-            clone_dir_recursive(&sys, &cache_folder, &package_path)?;
-            // write out a file that indicates this folder has been initialized
-            fs::write(initialized_file, tags)?;
+            if let Some(deprecated) = &package.deprecated {
+              packages_with_deprecation_warnings
+                .lock()
+                .push((package.id.clone(), deprecated.clone()));
+            }
 
-            Ok::<_, SyncResolutionWithFsError>(())
+            // finally stop showing the progress bar
+            drop(pb_guard); // explicit for clarity
+            Ok::<_, JsErrorBox>(())
           }
-        })
-        .await
-        .map_err(JsErrorBox::from_err)?
-        .map_err(JsErrorBox::from_err)?;
-
-        if package.bin.is_some() {
-          bin_entries_to_setup.borrow_mut().add(package, package_path);
-        }
-
-        if let Some(deprecated) = &package.deprecated {
-          packages_with_deprecation_warnings
-            .lock()
-            .push((package.id.clone(), deprecated.clone()));
-        }
-
-        // finally stop showing the progress bar
-        drop(pb_guard); // explicit for clarity
-        Ok::<_, JsErrorBox>(())
-      });
+          .boxed_local(),
+        );
+      }
     } else if matches!(package_state, PackageFolderState::TagsOutdated) {
-      fs::write(initialized_file, tags)?;
+      write_initialized_file(&initialized_file, &tags)?;
     }
 
     let sub_node_modules = folder_path.join("node_modules");
@@ -361,11 +382,52 @@ async fn sync_resolution_with_fs(
     lifecycle_scripts.add(package, package_path.into());
   }
 
+  // 2. Setup the patch packages
+  for patch_pkg in npm_install_deps_provider.patch_pkgs() {
+    // there might be multiple ids per package due to peer dep copy packages
+    for id in snapshot.package_ids_for_nv(&patch_pkg.nv) {
+      let package = snapshot.package_from_id(id).unwrap();
+      let package_folder_name = get_package_folder_id_folder_name(
+        &package.get_package_cache_folder_id(),
+      );
+      // node_modules/.deno/<package_folder_id_folder_name>/node_modules/<package_name> -> local package folder
+      let target = join_package_name(
+        Cow::Owned(
+          deno_local_registry_dir
+            .join(&package_folder_name)
+            .join("node_modules"),
+        ),
+        &patch_pkg.nv.name,
+      );
+
+      cache_futures.push(
+        async move {
+          let from_path = patch_pkg.target_dir.clone();
+          let sys = sys.clone();
+          deno_core::unsync::spawn_blocking({
+            move || {
+              clone_dir_recrusive_except_node_modules_child(
+                &sys, &from_path, &target,
+              )
+            }
+          })
+          .await
+          .map_err(JsErrorBox::from_err)?
+          .map_err(JsErrorBox::from_err)?;
+          Ok::<_, JsErrorBox>(())
+        }
+        .boxed_local(),
+      );
+    }
+  }
+
+  // copy packages copy from the main packages, so wait
+  // until these are all done
   while let Some(result) = cache_futures.next().await {
     result?; // surface the first error
   }
 
-  // 2. Create any "copy" packages, which are used for peer dependencies
+  // 3. Create any "copy" packages, which are used for peer dependencies
   for package in &package_partitions.copy_packages {
     let package_cache_folder_id = package.get_package_cache_folder_id();
     let destination_path = deno_local_registry_dir
@@ -375,7 +437,6 @@ async fn sync_resolution_with_fs(
       let sub_node_modules = destination_path.join("node_modules");
       let package_path =
         join_package_name(Cow::Owned(sub_node_modules), &package.id.nv.name);
-
       let source_path = join_package_name(
         Cow::Owned(
           deno_local_registry_dir
@@ -387,13 +448,31 @@ async fn sync_resolution_with_fs(
         &package.id.nv.name,
       );
 
-      clone_dir_recursive(sys, &source_path, &package_path)?;
-      // write out a file that indicates this folder has been initialized
-      fs::write(initialized_file, "")?;
+      cache_futures.push(
+        async move {
+          let sys = sys.clone();
+          deno_core::unsync::spawn_blocking(move || {
+            clone_dir_recursive(&sys, &source_path, &package_path)
+              .map_err(JsErrorBox::from_err)?;
+            // write out a file that indicates this folder has been initialized
+            create_initialized_file(&initialized_file)?;
+            Ok::<_, JsErrorBox>(())
+          })
+          .await
+          .map_err(JsErrorBox::from_err)?
+          .map_err(JsErrorBox::from_err)?;
+          Ok::<_, JsErrorBox>(())
+        }
+        .boxed_local(),
+      );
     }
   }
 
-  // 3. Symlink all the dependencies into the .deno directory.
+  while let Some(result) = cache_futures.next().await {
+    result?; // surface the first error
+  }
+
+  // 4. Symlink all the dependencies into the .deno directory.
   //
   // Symlink node_modules/.deno/<package_id>/node_modules/<dep_name> to
   // node_modules/.deno/<dep_id>/node_modules/<dep_package_name>
@@ -414,7 +493,9 @@ async fn sync_resolution_with_fs(
       let dep_cache_folder_id = dep.get_package_cache_folder_id();
       let dep_folder_name =
         get_package_folder_id_folder_name(&dep_cache_folder_id);
-      if dep_setup_cache.insert(name, &dep_folder_name) {
+      if package.dist.is_none()
+        || dep_setup_cache.insert(name, &dep_folder_name)
+      {
         let dep_folder_path = join_package_name(
           Cow::Owned(
             deno_local_registry_dir
@@ -436,7 +517,7 @@ async fn sync_resolution_with_fs(
   // set of node_modules in workspace packages that we've already ensured exist
   let mut existing_child_node_modules_dirs: HashSet<PathBuf> = HashSet::new();
 
-  // 4. Create symlinks for package json dependencies
+  // 5. Create symlinks for package json dependencies
   {
     for remote in npm_install_deps_provider.remote_pkgs() {
       let remote_pkg = if let Ok(remote_pkg) =
@@ -519,7 +600,7 @@ async fn sync_resolution_with_fs(
     }
   }
 
-  // 5. Create symlinks for the remaining top level packages in the node_modules folder.
+  // 6. Create symlinks for the remaining top level packages in the node_modules folder.
   // (These may be present if they are not in the package.json dependencies)
   // Symlink node_modules/.deno/<package_id>/node_modules/<package_name> to
   // node_modules/<package_name>
@@ -560,7 +641,7 @@ async fn sync_resolution_with_fs(
     }
   }
 
-  // 6. Create a node_modules/.deno/node_modules/<package-name> directory with
+  // 7. Create a node_modules/.deno/node_modules/<package-name> directory with
   // the remaining packages
   for package in newest_packages_by_name.values() {
     match found_names.entry(&package.id.nv.name) {
@@ -595,7 +676,7 @@ async fn sync_resolution_with_fs(
     }
   }
 
-  // 7. Set up `node_modules/.bin` entries for packages that need it.
+  // 8. Set up `node_modules/.bin` entries for packages that need it.
   {
     let bin_entries = std::mem::take(&mut *bin_entries.borrow_mut());
     bin_entries.finish(
@@ -622,7 +703,7 @@ async fn sync_resolution_with_fs(
     )?;
   }
 
-  // 8. Create symlinks for the workspace packages
+  // 9. Create symlinks for the workspace packages
   {
     // todo(dsherret): this is not exactly correct because it should
     // install correctly for a workspace (potentially in sub directories),
@@ -681,6 +762,45 @@ async fn sync_resolution_with_fs(
   Ok(())
 }
 
+fn clone_dir_recrusive_except_node_modules_child(
+  sys: &CliSys,
+  from: &Path,
+  to: &Path,
+) -> Result<(), SyncResolutionWithFsError> {
+  _ = fs::remove_dir_all(to);
+  fs::create_dir_all(to).map_err(|source| {
+    SyncResolutionWithFsError::Creating {
+      path: to.to_path_buf(),
+      source,
+    }
+  })?;
+  for entry in sys.fs_read_dir(from)? {
+    let entry = entry?;
+    if entry.file_name().to_str() == Some("node_modules") {
+      continue; // ignore
+    }
+    let file_type = entry.file_type()?;
+    let new_from = from.join(entry.file_name());
+    let new_to = to.join(entry.file_name());
+
+    if file_type.is_dir() {
+      clone_dir_recursive(sys, &new_from, &new_to)?;
+    } else if file_type.is_file() {
+      hard_link_file(sys, &new_from, &new_to).or_else(|_| {
+        sys
+          .fs_copy(&new_from, &new_to)
+          .map_err(|source| SyncResolutionWithFsError::Copying {
+            from: new_from.clone(),
+            to: new_to.clone(),
+            source,
+          })
+          .map(|_| ())
+      })?;
+    }
+  }
+  Ok(())
+}
+
 /// `node_modules/.deno/<package>/`
 fn local_node_modules_package_folder(
   local_registry_dir: &Path,
@@ -723,7 +843,7 @@ impl super::common::lifecycle_scripts::LifecycleScriptsStrategy
     &self,
     package: &NpmResolutionPackage,
   ) -> std::result::Result<(), std::io::Error> {
-    std::fs::write(self.ran_scripts_file(package), "")?;
+    _ = std::fs::File::create(self.ran_scripts_file(package))?;
     Ok(())
   }
 
@@ -758,7 +878,8 @@ impl super::common::lifecycle_scripts::LifecycleScriptsStrategy
       );
 
       for (package, _) in packages {
-        let _ignore_err = fs::write(self.warned_scripts_file(package), "");
+        let _ignore_err =
+          create_initialized_file(&self.warned_scripts_file(package));
       }
     }
     Ok(())
@@ -1012,6 +1133,30 @@ fn junction_or_symlink_dir(
   }
 }
 
+fn write_initialized_file(path: &Path, text: &str) -> Result<(), JsErrorBox> {
+  if text.is_empty() {
+    create_initialized_file(path)
+  } else {
+    std::fs::write(path, text).map_err(|err| {
+      JsErrorBox::generic(format!(
+        "Failed writing '{}': {}",
+        path.display(),
+        err
+      ))
+    })
+  }
+}
+
+fn create_initialized_file(path: &Path) -> Result<(), JsErrorBox> {
+  std::fs::File::create(path).map(|_| ()).map_err(|err| {
+    JsErrorBox::generic(format!(
+      "Failed to create '{}': {}",
+      path.display(),
+      err
+    ))
+  })
+}
+
 fn join_package_name(mut path: Cow<Path>, package_name: &str) -> PathBuf {
   // ensure backslashes are used on windows
   for part in package_name.split('/') {
diff --git a/cli/npm/installer/resolution.rs b/cli/npm/installer/resolution.rs
index 267ca2f4326090..51807d69a7da8a 100644
--- a/cli/npm/installer/resolution.rs
+++ b/cli/npm/installer/resolution.rs
@@ -24,6 +24,7 @@ use deno_semver::VersionReq;
 
 use crate::args::CliLockfile;
 use crate::npm::CliNpmRegistryInfoProvider;
+use crate::npm::WorkspaceNpmPatchPackages;
 use crate::util::sync::TaskQueue;
 
 pub struct AddPkgReqsResult {
@@ -42,6 +43,7 @@ pub struct NpmResolutionInstaller {
   registry_info_provider: Arc<CliNpmRegistryInfoProvider>,
   resolution: Arc<NpmResolutionCell>,
   maybe_lockfile: Option<Arc<CliLockfile>>,
+  patch_packages: Arc<WorkspaceNpmPatchPackages>,
   update_queue: TaskQueue,
 }
 
@@ -50,11 +52,13 @@ impl NpmResolutionInstaller {
     registry_info_provider: Arc<CliNpmRegistryInfoProvider>,
     resolution: Arc<NpmResolutionCell>,
     maybe_lockfile: Option<Arc<CliLockfile>>,
+    patch_packages: Arc<WorkspaceNpmPatchPackages>,
   ) -> Self {
     Self {
       registry_info_provider,
       resolution,
       maybe_lockfile,
+      patch_packages,
       update_queue: Default::default(),
     }
   }
@@ -77,6 +81,7 @@ impl NpmResolutionInstaller {
       &self.registry_info_provider,
       package_reqs,
       self.maybe_lockfile.clone(),
+      &self.patch_packages,
       || self.resolution.snapshot(),
     )
     .await;
@@ -105,6 +110,7 @@ impl NpmResolutionInstaller {
       &self.registry_info_provider,
       package_reqs,
       self.maybe_lockfile.clone(),
+      &self.patch_packages,
       || {
         let snapshot = self.resolution.snapshot();
         let has_removed_package = !snapshot
@@ -132,8 +138,15 @@ async fn add_package_reqs_to_snapshot(
   registry_info_provider: &Arc<CliNpmRegistryInfoProvider>,
   package_reqs: &[PackageReq],
   maybe_lockfile: Option<Arc<CliLockfile>>,
+  patch_packages: &WorkspaceNpmPatchPackages,
   get_new_snapshot: impl Fn() -> NpmResolutionSnapshot,
 ) -> deno_npm::resolution::AddPkgReqsResult {
+  fn get_types_node_version() -> VersionReq {
+    // WARNING: When bumping this version, check if anything needs to be
+    // updated in the `setNodeOnlyGlobalNames` call in 99_main_compiler.js
+    VersionReq::parse_from_npm("22.9.0 - 22.12.0").unwrap()
+  }
+
   let snapshot = get_new_snapshot();
   if package_reqs
     .iter()
@@ -154,7 +167,14 @@ async fn add_package_reqs_to_snapshot(
   );
   let npm_registry_api = registry_info_provider.as_npm_registry_api();
   let result = snapshot
-    .add_pkg_reqs(&npm_registry_api, get_add_pkg_reqs_options(package_reqs))
+    .add_pkg_reqs(
+      &npm_registry_api,
+      AddPkgReqsOptions {
+        package_reqs,
+        types_node_version_req: Some(get_types_node_version()),
+        patch_packages: &patch_packages.0,
+      },
+    )
     .await;
   let result = match &result.dep_graph_result {
     Err(NpmResolutionError::Resolution(err))
@@ -166,7 +186,14 @@ async fn add_package_reqs_to_snapshot(
       // try again with forced reloading
       let snapshot = get_new_snapshot();
       snapshot
-        .add_pkg_reqs(&npm_registry_api, get_add_pkg_reqs_options(package_reqs))
+        .add_pkg_reqs(
+          &npm_registry_api,
+          AddPkgReqsOptions {
+            package_reqs,
+            types_node_version_req: Some(get_types_node_version()),
+            patch_packages: &patch_packages.0,
+          },
+        )
         .await
     }
     _ => result,
@@ -183,17 +210,6 @@ async fn add_package_reqs_to_snapshot(
   result
 }
 
-fn get_add_pkg_reqs_options(package_reqs: &[PackageReq]) -> AddPkgReqsOptions {
-  AddPkgReqsOptions {
-    package_reqs,
-    // WARNING: When bumping this version, check if anything needs to be
-    // updated in the `setNodeOnlyGlobalNames` call in 99_main_compiler.js
-    types_node_version_req: Some(
-      VersionReq::parse_from_npm("22.9.0 - 22.12.0").unwrap(),
-    ),
-  }
-}
-
 fn populate_lockfile_from_snapshot(
   lockfile: &CliLockfile,
   snapshot: &NpmResolutionSnapshot,
@@ -212,7 +228,7 @@ fn populate_lockfile_from_snapshot(
 
     NpmPackageLockfileInfo {
       serialized_id: pkg.id.as_serialized(),
-      integrity: pkg.dist.integrity().for_lockfile(),
+      integrity: pkg.dist.as_ref().map(|d| d.integrity().for_lockfile()),
       dependencies,
     }
   }
diff --git a/cli/npm/managed.rs b/cli/npm/managed.rs
index 14ba088d89164f..662381e25746dd 100644
--- a/cli/npm/managed.rs
+++ b/cli/npm/managed.rs
@@ -14,6 +14,7 @@ use deno_resolver::npm::managed::NpmResolutionCell;
 use thiserror::Error;
 
 use super::CliNpmRegistryInfoProvider;
+use super::WorkspaceNpmPatchPackages;
 use crate::args::CliLockfile;
 use crate::sys::CliSys;
 
@@ -37,6 +38,7 @@ enum SyncState {
 pub struct NpmResolutionInitializer {
   npm_registry_info_provider: Arc<CliNpmRegistryInfoProvider>,
   npm_resolution: Arc<NpmResolutionCell>,
+  patch_packages: Arc<WorkspaceNpmPatchPackages>,
   queue: tokio::sync::Mutex<()>,
   sync_state: Mutex<SyncState>,
 }
@@ -45,11 +47,13 @@ impl NpmResolutionInitializer {
   pub fn new(
     npm_registry_info_provider: Arc<CliNpmRegistryInfoProvider>,
     npm_resolution: Arc<NpmResolutionCell>,
+    patch_packages: Arc<WorkspaceNpmPatchPackages>,
     snapshot_option: CliNpmResolverManagedSnapshotOption,
   ) -> Self {
     Self {
       npm_registry_info_provider,
       npm_resolution,
+      patch_packages,
       queue: tokio::sync::Mutex::new(()),
       sync_state: Mutex::new(SyncState::Pending(Some(snapshot_option))),
     }
@@ -95,8 +99,12 @@ impl NpmResolutionInitializer {
       }
     };
 
-    match resolve_snapshot(&self.npm_registry_info_provider, snapshot_option)
-      .await
+    match resolve_snapshot(
+      &self.npm_registry_info_provider,
+      snapshot_option,
+      &self.patch_packages,
+    )
+    .await
     {
       Ok(maybe_snapshot) => {
         if let Some(snapshot) = maybe_snapshot {
@@ -145,6 +153,7 @@ impl ResolveSnapshotError {
 async fn resolve_snapshot(
   registry_info_provider: &Arc<CliNpmRegistryInfoProvider>,
   snapshot: CliNpmResolverManagedSnapshotOption,
+  patch_packages: &WorkspaceNpmPatchPackages,
 ) -> Result<Option<ValidSerializedNpmResolutionSnapshot>, ResolveSnapshotError>
 {
   match snapshot {
@@ -153,6 +162,7 @@ async fn resolve_snapshot(
         let snapshot = snapshot_from_lockfile(
           lockfile.clone(),
           &registry_info_provider.as_npm_registry_api(),
+          patch_packages,
         )
         .await
         .map_err(|source| ResolveSnapshotError {
@@ -183,6 +193,7 @@ pub enum SnapshotFromLockfileError {
 async fn snapshot_from_lockfile(
   lockfile: Arc<CliLockfile>,
   api: &dyn NpmRegistryApi,
+  patch_packages: &WorkspaceNpmPatchPackages,
 ) -> Result<ValidSerializedNpmResolutionSnapshot, SnapshotFromLockfileError> {
   let (incomplete_snapshot, skip_integrity_check) = {
     let lock = lockfile.lock();
@@ -195,6 +206,7 @@ async fn snapshot_from_lockfile(
     deno_npm::resolution::SnapshotFromLockfileParams {
       incomplete_snapshot,
       api,
+      patch_packages: &patch_packages.0,
       skip_integrity_check,
     },
   )
diff --git a/cli/npm/mod.rs b/cli/npm/mod.rs
index be08ffde66d1fc..5d906a438e8f93 100644
--- a/cli/npm/mod.rs
+++ b/cli/npm/mod.rs
@@ -3,20 +3,30 @@
 pub mod installer;
 mod managed;
 
+use std::collections::HashMap;
 use std::sync::Arc;
 
 use dashmap::DashMap;
+use deno_config::workspace::Workspace;
 use deno_core::serde_json;
 use deno_core::url::Url;
 use deno_error::JsErrorBox;
 use deno_lib::version::DENO_VERSION_INFO;
 use deno_npm::npm_rc::ResolvedNpmRc;
 use deno_npm::registry::NpmPackageInfo;
+use deno_npm::registry::NpmPackageVersionInfo;
 use deno_resolver::npm::ByonmNpmResolverCreateOptions;
+use deno_runtime::colors;
+use deno_semver::package::PackageName;
 use deno_semver::package::PackageNv;
 use deno_semver::package::PackageReq;
+use deno_semver::SmallStackString;
+use deno_semver::StackString;
+use deno_semver::Version;
 use http::HeaderName;
 use http::HeaderValue;
+use indexmap::IndexMap;
+use thiserror::Error;
 
 pub use self::managed::CliManagedNpmResolverCreateOptions;
 pub use self::managed::CliNpmResolverManagedSnapshotOption;
@@ -39,6 +49,126 @@ pub type CliNpmResolverCreateOptions =
 pub type CliByonmNpmResolverCreateOptions =
   ByonmNpmResolverCreateOptions<CliSys>;
 
+#[derive(Debug, Default)]
+pub struct WorkspaceNpmPatchPackages(
+  pub HashMap<PackageName, Vec<NpmPackageVersionInfo>>,
+);
+
+impl WorkspaceNpmPatchPackages {
+  pub fn from_workspace(workspace: &Workspace) -> Self {
+    let mut entries: HashMap<PackageName, Vec<NpmPackageVersionInfo>> =
+      HashMap::new();
+    if workspace.has_unstable("npm-patch") {
+      for pkg_json in workspace.patch_pkg_jsons() {
+        let Some(name) = pkg_json.name.as_ref() else {
+          log::warn!(
+          "{} Patch package ignored because package.json was missing name field.\n    at {}",
+          colors::yellow("Warning"),
+          pkg_json.path.display(),
+        );
+          continue;
+        };
+        match pkg_json_to_version_info(pkg_json) {
+          Ok(version_info) => {
+            let entry = entries.entry(PackageName::from_str(name)).or_default();
+            entry.push(version_info);
+          }
+          Err(err) => {
+            log::warn!(
+              "{} {}\n    at {}",
+              colors::yellow("Warning"),
+              err.to_string(),
+              pkg_json.path.display(),
+            );
+          }
+        }
+      }
+    } else if workspace.patch_pkg_jsons().next().is_some() {
+      log::warn!(
+        "{} {}\n    at {}",
+        colors::yellow("Warning"),
+        "Patching npm packages is only supported when setting \"unstable\": [\"npm-patch\"] in the root deno.json",
+        workspace
+          .root_deno_json()
+          .map(|d| d.specifier.to_string())
+          .unwrap_or_else(|| workspace.root_dir().to_string()),
+      );
+    }
+    Self(entries)
+  }
+}
+
+#[derive(Debug, Error)]
+enum PkgJsonToVersionInfoError {
+  #[error(
+    "Patch package ignored because package.json was missing version field."
+  )]
+  VersionMissing,
+  #[error("Patch package ignored because package.json version field could not be parsed.")]
+  VersionInvalid {
+    #[source]
+    source: deno_semver::npm::NpmVersionParseError,
+  },
+}
+
+fn pkg_json_to_version_info(
+  pkg_json: &deno_package_json::PackageJson,
+) -> Result<NpmPackageVersionInfo, PkgJsonToVersionInfoError> {
+  fn parse_deps(
+    deps: Option<&IndexMap<String, String>>,
+  ) -> HashMap<StackString, StackString> {
+    deps
+      .map(|d| {
+        d.into_iter()
+          .map(|(k, v)| (StackString::from_str(k), StackString::from_str(v)))
+          .collect()
+      })
+      .unwrap_or_default()
+  }
+
+  fn parse_array(v: &[String]) -> Vec<SmallStackString> {
+    v.iter().map(|s| SmallStackString::from_str(s)).collect()
+  }
+
+  let Some(version) = &pkg_json.version else {
+    return Err(PkgJsonToVersionInfoError::VersionMissing);
+  };
+
+  let version = Version::parse_from_npm(version)
+    .map_err(|source| PkgJsonToVersionInfoError::VersionInvalid { source })?;
+  Ok(NpmPackageVersionInfo {
+    version,
+    dist: None,
+    bin: pkg_json
+      .bin
+      .as_ref()
+      .and_then(|v| serde_json::from_value(v.clone()).ok()),
+    dependencies: parse_deps(pkg_json.dependencies.as_ref()),
+    optional_dependencies: parse_deps(pkg_json.optional_dependencies.as_ref()),
+    peer_dependencies: parse_deps(pkg_json.peer_dependencies.as_ref()),
+    peer_dependencies_meta: pkg_json
+      .peer_dependencies_meta
+      .clone()
+      .and_then(|m| serde_json::from_value(m).ok())
+      .unwrap_or_default(),
+    os: pkg_json.os.as_deref().map(parse_array).unwrap_or_default(),
+    cpu: pkg_json.cpu.as_deref().map(parse_array).unwrap_or_default(),
+    scripts: pkg_json
+      .scripts
+      .as_ref()
+      .map(|scripts| {
+        scripts
+          .iter()
+          .map(|(k, v)| (SmallStackString::from_str(k), v.clone()))
+          .collect()
+      })
+      .unwrap_or_default(),
+    // not worth increasing memory for showing a deprecated
+    // message for patched packages
+    deprecated: None,
+  })
+}
+
 #[derive(Debug)]
 pub struct CliNpmCacheHttpClient {
   http_client_provider: Arc<HttpClientProvider>,
@@ -181,3 +311,108 @@ pub fn get_npm_config_user_agent() -> String {
     std::env::consts::ARCH
   )
 }
+
+#[cfg(test)]
+mod test {
+  use std::path::PathBuf;
+
+  use deno_npm::registry::NpmPeerDependencyMeta;
+
+  use super::*;
+
+  #[test]
+  fn test_pkg_json_to_version_info() {
+    fn convert(
+      text: &str,
+    ) -> Result<NpmPackageVersionInfo, PkgJsonToVersionInfoError> {
+      let pkg_json = deno_package_json::PackageJson::load_from_string(
+        PathBuf::from("package.json"),
+        text,
+      )
+      .unwrap();
+      pkg_json_to_version_info(&pkg_json)
+    }
+
+    assert_eq!(
+      convert(
+        r#"{
+  "name": "pkg",
+  "version": "1.0.0",
+  "bin": "./bin.js",
+  "dependencies": {
+    "my-dep": "1"
+  },
+  "optionalDependencies": {
+    "optional-dep": "~1"
+  },
+  "peerDependencies": {
+    "my-peer-dep": "^2"
+  },
+  "peerDependenciesMeta": {
+    "my-peer-dep": {
+      "optional": true
+    }
+  },
+  "os": ["win32"],
+  "cpu": ["x86_64"],
+  "scripts": {
+    "script": "testing",
+    "postInstall": "testing2"
+  },
+  "deprecated": "ignored for now"
+}"#
+      )
+      .unwrap(),
+      NpmPackageVersionInfo {
+        version: Version::parse_from_npm("1.0.0").unwrap(),
+        dist: None,
+        bin: Some(deno_npm::registry::NpmPackageVersionBinEntry::String(
+          "./bin.js".to_string()
+        )),
+        dependencies: HashMap::from([(
+          StackString::from_static("my-dep"),
+          StackString::from_static("1")
+        )]),
+        optional_dependencies: HashMap::from([(
+          StackString::from_static("optional-dep"),
+          StackString::from_static("~1")
+        )]),
+        peer_dependencies: HashMap::from([(
+          StackString::from_static("my-peer-dep"),
+          StackString::from_static("^2")
+        )]),
+        peer_dependencies_meta: HashMap::from([(
+          StackString::from_static("my-peer-dep"),
+          NpmPeerDependencyMeta { optional: true }
+        )]),
+        os: vec![SmallStackString::from_static("win32")],
+        cpu: vec![SmallStackString::from_static("x86_64")],
+        scripts: HashMap::from([
+          (
+            SmallStackString::from_static("script"),
+            "testing".to_string(),
+          ),
+          (
+            SmallStackString::from_static("postInstall"),
+            "testing2".to_string(),
+          )
+        ]),
+        // we don't bother ever setting this because we don't store it in deno_package_json
+        deprecated: None,
+      }
+    );
+
+    match convert("{}").unwrap_err() {
+      PkgJsonToVersionInfoError::VersionMissing => {
+        // ok
+      }
+      _ => unreachable!(),
+    }
+    match convert(r#"{ "version": "1.0.~" }"#).unwrap_err() {
+      PkgJsonToVersionInfoError::VersionInvalid { source: err } => {
+        assert_eq!(err.to_string(), "Invalid npm version");
+      }
+      _ => unreachable!(),
+    }
+  }
+}
diff --git a/cli/tools/run/mod.rs b/cli/tools/run/mod.rs
index efc63a94fb0c4f..7de4684e55ea19 100644
--- a/cli/tools/run/mod.rs
+++ b/cli/tools/run/mod.rs
@@ -208,7 +208,8 @@ pub async fn maybe_npm_install(factory: &CliFactory) -> Result<(), AnyError> {
   let cli_options = factory.cli_options()?;
   // ensure an "npm install" is done if the user has explicitly
   // opted into using a managed node_modules directory
-  if cli_options.node_modules_dir()? == Some(NodeModulesDirMode::Auto) {
+  if cli_options.specified_node_modules_dir()? == Some(NodeModulesDirMode::Auto)
+  {
     if let Some(npm_installer) = factory.npm_installer_if_managed()? {
       let already_done = npm_installer
         .ensure_top_level_package_json_install()
diff --git a/cli/util/fs.rs b/cli/util/fs.rs
index ecd9d41e3dab97..5c0a353726f095 100644
--- a/cli/util/fs.rs
+++ b/cli/util/fs.rs
@@ -210,7 +210,7 @@ pub enum CopyDirRecursiveError {
     source: Error,
   },
   #[class(inherit)]
-  #[error("Creating {path}")]
+  #[error("Reading {path}")]
   Reading {
     path: PathBuf,
     #[source]
diff --git a/resolvers/npm_cache/fs_util.rs b/resolvers/npm_cache/fs_util.rs
index 77269ebe0b447d..43bb11da7c43f3 100644
--- a/resolvers/npm_cache/fs_util.rs
+++ b/resolvers/npm_cache/fs_util.rs
@@ -43,23 +43,8 @@ pub enum HardLinkDirRecursiveError {
     source: Box<Self>,
   },
   #[class(inherit)]
-  #[error("Removing file to hard link {from} to {to}")]
-  RemoveFileToHardLink {
-    from: PathBuf,
-    to: PathBuf,
-    #[source]
-    #[inherit]
-    source: std::io::Error,
-  },
-  #[class(inherit)]
-  #[error("Hard linking {from} to {to}")]
-  HardLinking {
-    from: PathBuf,
-    to: PathBuf,
-    #[source]
-    #[inherit]
-    source: std::io::Error,
-  },
+  #[error(transparent)]
+  HardLinkFile(#[from] HardLinkFileError),
 }
 
 /// Hardlinks the files in one directory to another directory.
@@ -100,54 +85,86 @@ pub fn hard_link_dir_recursive<
         }
       })?;
     } else if file_type.is_file() {
-      // note: chance for race conditions here between attempting to create,
-      // then removing, then attempting to create. There doesn't seem to be
-      // a way to hard link with overwriting in Rust, but maybe there is some
-      // way with platform specific code. The workaround here is to handle
-      // scenarios where something else might create or remove files.
-      if let Err(err) = sys.fs_hard_link(&new_from, &new_to) {
-        if err.kind() == ErrorKind::AlreadyExists {
-          if let Err(err) = sys.fs_remove_file(&new_to) {
-            if err.kind() == ErrorKind::NotFound {
-              // Assume another process/thread created this hard link to the file we are wanting
-              // to remove then sleep a little bit to let the other process/thread move ahead
-              // faster to reduce contention.
-              sys.thread_sleep(Duration::from_millis(10));
-            } else {
-              return Err(HardLinkDirRecursiveError::RemoveFileToHardLink {
-                from: new_from.to_path_buf(),
-                to: new_to.to_path_buf(),
-                source: err,
-              });
-            }
-          }
+      hard_link_file(sys, &new_from, &new_to)?;
+    }
+  }
+
+  Ok(())
+}
+
+#[derive(Debug, thiserror::Error, deno_error::JsError)]
+pub enum HardLinkFileError {
+  #[class(inherit)]
+  #[error("Removing file to hard link {from} to {to}")]
+  RemoveFileToHardLink {
+    from: PathBuf,
+    to: PathBuf,
+    #[source]
+    #[inherit]
+    source: std::io::Error,
+  },
+  #[class(inherit)]
+  #[error("Hard linking {from} to {to}")]
+  HardLinking {
+    from: PathBuf,
+    to: PathBuf,
+    #[source]
+    #[inherit]
+    source: std::io::Error,
+  },
+}
+
+/// Hardlinks a file from one location to another.
+pub fn hard_link_file<TSys: FsHardLink + FsRemoveFile + ThreadSleep>(
+  sys: &TSys,
+  from: &Path,
+  to: &Path,
+) -> Result<(), HardLinkFileError> {
+  // note: chance for race conditions here between attempting to create,
+  // then removing, then attempting to create. There doesn't seem to be
+  // a way to hard link with overwriting in Rust, but maybe there is some
+  // way with platform specific code. The workaround here is to handle
+  // scenarios where something else might create or remove files.
+  if let Err(err) = sys.fs_hard_link(from, to) {
+    if err.kind() == ErrorKind::AlreadyExists {
+      if let Err(err) = sys.fs_remove_file(to) {
+        if err.kind() == ErrorKind::NotFound {
+          // Assume another process/thread created this hard link to the file we are wanting
+          // to remove then sleep a little bit to let the other process/thread move ahead
+          // faster to reduce contention.
+          sys.thread_sleep(Duration::from_millis(10));
+        } else {
+          return Err(HardLinkFileError::RemoveFileToHardLink {
+            from: from.to_path_buf(),
+            to: to.to_path_buf(),
+            source: err,
+          });
+        }
+      }
 
-          // Always attempt to recreate the hardlink. In contention scenarios, the other process
-          // might have been killed or exited after removing the file, but before creating the hardlink
-          if let Err(err) = sys.fs_hard_link(&new_from, &new_to) {
-            // Assume another process/thread created this hard link to the file we are wanting
-            // to now create then sleep a little bit to let the other process/thread move ahead
-            // faster to reduce contention.
-            if err.kind() == ErrorKind::AlreadyExists {
-              sys.thread_sleep(Duration::from_millis(10));
-            } else {
-              return Err(HardLinkDirRecursiveError::HardLinking {
-                from: new_from.to_path_buf(),
-                to: new_to.to_path_buf(),
-                source: err,
-              });
-            }
-          }
+      // Always attempt to recreate the hardlink. In contention scenarios, the other process
+      // might have been killed or exited after removing the file, but before creating the hardlink
+      if let Err(err) = sys.fs_hard_link(from, to) {
+        // Assume another process/thread created this hard link to the file we are wanting
+        // to now create then sleep a little bit to let the other process/thread move ahead
+        // faster to reduce contention.
+        if err.kind() == ErrorKind::AlreadyExists {
+          sys.thread_sleep(Duration::from_millis(10));
         } else {
-          return Err(HardLinkDirRecursiveError::HardLinking {
-            from: new_from.to_path_buf(),
-            to: new_to.to_path_buf(),
+          return Err(HardLinkFileError::HardLinking {
+            from: from.to_path_buf(),
+            to: to.to_path_buf(),
             source: err,
           });
         }
       }
+    } else {
+      return Err(HardLinkFileError::HardLinking {
+        from: from.to_path_buf(),
+        to: to.to_path_buf(),
+        source: err,
+      });
     }
   }
-
   Ok(())
 }
diff --git a/resolvers/npm_cache/lib.rs b/resolvers/npm_cache/lib.rs
index f0de201b758b61..17eb01b2102a4f 100644
--- a/resolvers/npm_cache/lib.rs
+++ b/resolvers/npm_cache/lib.rs
@@ -38,6 +38,9 @@ mod tarball;
 mod tarball_extract;
 
 pub use fs_util::hard_link_dir_recursive;
+pub use fs_util::hard_link_file;
+pub use fs_util::HardLinkDirRecursiveError;
+pub use fs_util::HardLinkFileError;
 // todo(#27198): make both of these private and get the rest of the code
 // using RegistryInfoProvider.
 pub use registry_info::get_package_url;
diff --git a/tests/specs/npm/patch_npm_package_deep/__test__.jsonc b/tests/specs/npm/patch_npm_package_deep/__test__.jsonc
new file mode 100644
index 00000000000000..030f4d1ad6819c
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_deep/__test__.jsonc
@@ -0,0 +1,25 @@
+{
+  "tempDir": true,
+  "tests": {
+    "node_modules_dir_auto": {
+      "args": "run --node-modules-dir=auto main/main.ts",
+      "output": "auto.out"
+    },
+    "node_modules_dir_manual": {
+      "steps": [{
+        "args": "install",
+        "output": "[WILDCARD]",
+        "cwd": "main"
+      }, {
+        "args": "run main/main.ts",
+        "output": "PATCHED\n"
+      }, {
+        "args": [
+          "eval",
+          "console.log(Deno.readTextFileSync('./main/deno.lock').trim())"
+        ],
+        "output": "expected_lockfile.out"
+      }]
+    }
+  }
+}
diff --git a/tests/specs/npm/patch_npm_package_deep/auto.out b/tests/specs/npm/patch_npm_package_deep/auto.out
new file mode 100644
index 00000000000000..2a2a7187ea079b
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_deep/auto.out
@@ -0,0 +1,5 @@
+Download http://localhost:4260/@denotest%2fdifferent-nested-dep
+Download http://localhost:4260/@denotest%2fdifferent-nested-dep-child
+Download http://localhost:4260/@denotest/different-nested-dep/1.0.0.tgz
+Initialize @denotest/different-nested-dep@1.0.0
+PATCHED
diff --git a/tests/specs/npm/patch_npm_package_deep/expected_lockfile.out b/tests/specs/npm/patch_npm_package_deep/expected_lockfile.out
new file mode 100644
index 00000000000000..d161193dcffbc3
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_deep/expected_lockfile.out
@@ -0,0 +1,25 @@
+{
+  "version": "4",
+  "specifiers": {
+    "npm:@denotest/different-nested-dep@*": "1.0.0"
+  },
+  "npm": {
+    "@denotest/different-nested-dep-child@1.0.0": {},
+    "@denotest/different-nested-dep@1.0.0": {
+      "integrity": "sha512-lsB/nZ3X5zTVihQ0YeX97wQcYMoUfvnOc2wf5Y83N6OtqOJEoekRqXnudMZptyPNam02M6JRZVKxg4E6arKc1Q==",
+      "dependencies": [
+        "@denotest/different-nested-dep-child"
+      ]
+    }
+  },
+  "workspace": {
+    "packageJson": {
+      "dependencies": [
+        "npm:@denotest/different-nested-dep@*"
+      ]
+    },
+    "patches": {
+      "npm:@denotest/different-nested-dep-child@1.0.0": {}
+    }
+  }
+}
diff --git a/tests/specs/npm/patch_npm_package_deep/main/deno.json b/tests/specs/npm/patch_npm_package_deep/main/deno.json
new file mode 100644
index 00000000000000..868b4b5d6340e2
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_deep/main/deno.json
@@ -0,0 +1,6 @@
+{
+  "unstable": ["npm-patch"],
+  "patch": [
+    "../patched"
+  ]
+}
diff --git a/tests/specs/npm/patch_npm_package_deep/main/main.ts b/tests/specs/npm/patch_npm_package_deep/main/main.ts
new file mode 100644
index 00000000000000..617fe760750f23
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_deep/main/main.ts
@@ -0,0 +1,3 @@
+import value from "@denotest/different-nested-dep";
+
+console.log(value);
diff --git a/tests/specs/npm/patch_npm_package_deep/main/package.json b/tests/specs/npm/patch_npm_package_deep/main/package.json
new file mode 100644
index 00000000000000..18e11f790236cb
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_deep/main/package.json
@@ -0,0 +1,5 @@
+{
+  "dependencies": {
+    "@denotest/different-nested-dep": "*"
+  }
+}
diff --git a/tests/specs/npm/patch_npm_package_deep/patched/main.mjs b/tests/specs/npm/patch_npm_package_deep/patched/main.mjs
new file mode 100644
index 00000000000000..2c16dbfceac4ac
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_deep/patched/main.mjs
@@ -0,0 +1 @@
+export default "PATCHED";
diff --git a/tests/specs/npm/patch_npm_package_deep/patched/package.json b/tests/specs/npm/patch_npm_package_deep/patched/package.json
new file mode 100644
index 00000000000000..39853ecdff4363
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_deep/patched/package.json
@@ -0,0 +1,5 @@
+{
+  "name": "@denotest/different-nested-dep-child",
+  "version": "1.0.0",
+  "exports": "./main.mjs"
+}
diff --git a/tests/specs/npm/patch_npm_package_file_specifier/__test__.jsonc b/tests/specs/npm/patch_npm_package_file_specifier/__test__.jsonc
new file mode 100644
index 00000000000000..53080ac66732ab
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_file_specifier/__test__.jsonc
@@ -0,0 +1,7 @@
+{
+  "tempDir": true,
+  "args": "install",
+  "exitCode": 1,
+  "output": "output.out",
+  "cwd": "main"
+}
diff --git a/tests/specs/npm/patch_npm_package_file_specifier/cowsay/main.mjs b/tests/specs/npm/patch_npm_package_file_specifier/cowsay/main.mjs
new file mode 100644
index 00000000000000..7d658310b0d95f
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_file_specifier/cowsay/main.mjs
@@ -0,0 +1,3 @@
+export function add(a, b) {
+  return a + b;
+}
diff --git a/tests/specs/npm/patch_npm_package_file_specifier/cowsay/package.json b/tests/specs/npm/patch_npm_package_file_specifier/cowsay/package.json
new file mode 100644
index 00000000000000..4cd663fbc2d848
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_file_specifier/cowsay/package.json
@@ -0,0 +1,8 @@
+{
+  "name": "cowsay",
+  "version": "1.2.0",
+  "exports": "./main.mjs",
+  "dependencies": {
+    "react": "file:../react"
+  }
+}
diff --git a/tests/specs/npm/patch_npm_package_file_specifier/main/deno.json b/tests/specs/npm/patch_npm_package_file_specifier/main/deno.json
new file mode 100644
index 00000000000000..21b247c8ed3ed9
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_file_specifier/main/deno.json
@@ -0,0 +1,6 @@
+{
+  "unstable": ["npm-patch"],
+  "patch": [
+    "../cowsay"
+  ]
+}
diff --git a/tests/specs/npm/patch_npm_package_file_specifier/main/main.ts b/tests/specs/npm/patch_npm_package_file_specifier/main/main.ts
new file mode 100644
index 00000000000000..32b89404b93bd2
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_file_specifier/main/main.ts
@@ -0,0 +1,3 @@
+import { add } from "cowsay";
+
+console.log(add(1, 2));
diff --git a/tests/specs/npm/patch_npm_package_file_specifier/main/package.json b/tests/specs/npm/patch_npm_package_file_specifier/main/package.json
new file mode 100644
index 00000000000000..ddbf1fc2569f55
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_file_specifier/main/package.json
@@ -0,0 +1,5 @@
+{
+  "dependencies": {
+    "cowsay": "1.2"
+  }
+}
diff --git a/tests/specs/npm/patch_npm_package_file_specifier/output.out b/tests/specs/npm/patch_npm_package_file_specifier/output.out
new file mode 100644
index 00000000000000..7e68d3a6635107
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_file_specifier/output.out
@@ -0,0 +1,8 @@
+Download http://localhost:4260/cowsay
+error: Error in cowsay@1.2.0 parsing version requirement for dependency "react": "file:../react"
+
+Caused by:
+    0: Invalid version requirement
+    1: Unexpected character.
+         file:../react
+         ~
diff --git a/tests/specs/npm/patch_npm_package_top_level/__test__.jsonc b/tests/specs/npm/patch_npm_package_top_level/__test__.jsonc
new file mode 100644
index 00000000000000..97f52f5c5184d4
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_top_level/__test__.jsonc
@@ -0,0 +1,46 @@
+{
+  "tempDir": true,
+  "tests": {
+    "node_modules_dir_none": {
+      "args": "run --node-modules-dir=none main/main.ts",
+      "exitCode": 1,
+      "output": "node_modules_dir_none.out"
+    },
+    "node_modules_dir_auto": {
+      "args": "run --node-modules-dir=auto main/main.ts",
+      "output": "Download http://localhost:4260/cowsay\n3\n"
+    },
+    "node_modules_dir_manual": {
+      "steps": [{
+        "args": "install",
+        "output": "[WILDCARD]",
+        "cwd": "main"
+      }, {
+        "args": "run main/main.ts",
+        "output": "3\n"
+      }, {
+        "args": [
+          "eval",
+          "console.log(Deno.readTextFileSync('./main/deno.lock').trim())"
+        ],
+        "output": "expected_lockfile.out"
+      }, {
+        "args": "run -RW change_patch.ts",
+        "output": ""
+      }, {
+        "args": "install",
+        "output": "[WILDCARD]",
+        "cwd": "main"
+      }, {
+        "args": [
+          "eval",
+          "console.log(Deno.readTextFileSync('./main/deno.lock').trim())"
+        ],
+        "output": "expected_lockfile_after_change.out"
+      }, {
+        "args": "run main/main.ts",
+        "output": "3\n"
+      }]
+    }
+  }
+}
diff --git a/tests/specs/npm/patch_npm_package_top_level/change_patch.ts b/tests/specs/npm/patch_npm_package_top_level/change_patch.ts
new file mode 100644
index 00000000000000..8d64292e36300d
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_top_level/change_patch.ts
@@ -0,0 +1,6 @@
+const filePath = "./cowsay/package.json";
+const packageJson = JSON.parse(Deno.readTextFileSync(filePath));
+packageJson.dependencies = {
+  "@denotest/add": "1",
+};
+Deno.writeTextFileSync(filePath, JSON.stringify(packageJson));
diff --git a/tests/specs/npm/patch_npm_package_top_level/cowsay/main.mjs b/tests/specs/npm/patch_npm_package_top_level/cowsay/main.mjs
new file mode 100644
index 00000000000000..7d658310b0d95f
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_top_level/cowsay/main.mjs
@@ -0,0 +1,3 @@
+export function add(a, b) {
+  return a + b;
+}
diff --git a/tests/specs/npm/patch_npm_package_top_level/cowsay/package.json b/tests/specs/npm/patch_npm_package_top_level/cowsay/package.json
new file mode 100644
index 00000000000000..71a59b0e036e11
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_top_level/cowsay/package.json
@@ -0,0 +1,5 @@
+{
+  "name": "cowsay",
+  "version": "1.2.0",
+  "exports": "./main.mjs"
+}
diff --git a/tests/specs/npm/patch_npm_package_top_level/expected_lockfile.out b/tests/specs/npm/patch_npm_package_top_level/expected_lockfile.out
new file mode 100644
index 00000000000000..665fa9cdb818aa
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_top_level/expected_lockfile.out
@@ -0,0 +1,19 @@
+{
+  "version": "4",
+  "specifiers": {
+    "npm:cowsay@1.2": "1.2.0"
+  },
+  "npm": {
+    "cowsay@1.2.0": {}
+  },
+  "workspace": {
+    "packageJson": {
+      "dependencies": [
+        "npm:cowsay@1.2"
+      ]
+    },
+    "patches": {
+      "npm:cowsay@1.2.0": {}
+    }
+  }
+}
diff --git a/tests/specs/npm/patch_npm_package_top_level/expected_lockfile_after_change.out b/tests/specs/npm/patch_npm_package_top_level/expected_lockfile_after_change.out
new file mode 100644
index 00000000000000..c958d6b574e860
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_top_level/expected_lockfile_after_change.out
@@ -0,0 +1,30 @@
+{
+  "version": "4",
+  "specifiers": {
+    "npm:cowsay@1.2": "1.2.0"
+  },
+  "npm": {
+    "@denotest/add@1.0.0": {
+      "integrity": "sha512-P7KqAn8qFLI/13TfERSPS0NYt7CmA0diT6bhscyT6FzZjFaAVCja3K/dk96eZDsCyI1gtwtHg5Ahh8XDIvAgrw=="
+    },
+    "cowsay@1.2.0": {
+      "dependencies": [
+        "@denotest/add"
+      ]
+    }
+  },
+  "workspace": {
+    "packageJson": {
+      "dependencies": [
+        "npm:cowsay@1.2"
+      ]
+    },
+    "patches": {
+      "npm:cowsay@1.2.0": {
+        "dependencies": [
+          "npm:@denotest/add@1"
+        ]
+      }
+    }
+  }
+}
diff --git a/tests/specs/npm/patch_npm_package_top_level/main/deno.json b/tests/specs/npm/patch_npm_package_top_level/main/deno.json
new file mode 100644
index 00000000000000..21b247c8ed3ed9
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_top_level/main/deno.json
@@ -0,0 +1,6 @@
+{
+  "unstable": ["npm-patch"],
+  "patch": [
+    "../cowsay"
+  ]
+}
diff --git a/tests/specs/npm/patch_npm_package_top_level/main/main.ts b/tests/specs/npm/patch_npm_package_top_level/main/main.ts
new file mode 100644
index 00000000000000..32b89404b93bd2
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_top_level/main/main.ts
@@ -0,0 +1,3 @@
+import { add } from "cowsay";
+
+console.log(add(1, 2));
diff --git a/tests/specs/npm/patch_npm_package_top_level/main/package.json b/tests/specs/npm/patch_npm_package_top_level/main/package.json
new file mode 100644
index 00000000000000..ddbf1fc2569f55
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_top_level/main/package.json
@@ -0,0 +1,5 @@
+{
+  "dependencies": {
+    "cowsay": "1.2"
+  }
+}
diff --git a/tests/specs/npm/patch_npm_package_top_level/node_modules_dir_none.out b/tests/specs/npm/patch_npm_package_top_level/node_modules_dir_none.out
new file mode 100644
index 00000000000000..653f07e5494da3
--- /dev/null
+++ b/tests/specs/npm/patch_npm_package_top_level/node_modules_dir_none.out
@@ -0,0 +1 @@
+error: Patching npm packages requires using a node_modules directory. Ensure you have a package.json or set the "nodeModulesDir" option to "auto" or "manual" in your workspace root deno.json.

From 27363d389dcb273885e2883f976900001f58e8c9 Mon Sep 17 00:00:00 2001
From: snek <snek@deno.com>
Date: Fri, 21 Mar 2025 12:17:50 +0100
Subject: [PATCH 111/115] refactor: internal logging utility (#28567)

`import.meta.log` enables basic log filtering through
`env_logger`/`DENO_LOG`. Log levels are supported, and filenames can
also be used. for example: `DENO_LOG=ext:deno_http::00_serve.ts=warn`
---
 ext/console/01_console.js                     |  1 +
 ext/cron/01_cron.ts                           |  3 +-
 ext/http/00_serve.ts                          | 33 ++++++----
 ext/kv/01_db.ts                               |  3 +-
 ext/web/06_streams.js                         |  3 +-
 runtime/js/99_main.js                         | 29 ++++++--
 runtime/ops/runtime.rs                        | 32 ++++++++-
 .../specs/cli/otel_basic/http_propagators.out | 12 ++--
 tests/specs/run/045_proxy/proxy_test.ts.out   |  1 -
 tests/specs/run/serve/__test__.jsonc          | 14 ++++
 tests/specs/run/serve/ipv6_hostname.out       |  1 +
 tests/specs/run/serve/ipv6_hostname.ts        |  6 ++
 tests/specs/run/serve/on_listen_default.out   |  1 +
 tests/specs/run/serve/on_listen_default.ts    |  9 +++
 tests/unit/serve_test.ts                      | 66 -------------------
 15 files changed, 116 insertions(+), 98 deletions(-)
 create mode 100644 tests/specs/run/serve/__test__.jsonc
 create mode 100644 tests/specs/run/serve/ipv6_hostname.out
 create mode 100644 tests/specs/run/serve/ipv6_hostname.ts
 create mode 100644 tests/specs/run/serve/on_listen_default.out
 create mode 100644 tests/specs/run/serve/on_listen_default.ts

diff --git a/ext/console/01_console.js b/ext/console/01_console.js
index 09441a56a3ee92..516350509074f1 100644
--- a/ext/console/01_console.js
+++ b/ext/console/01_console.js
@@ -3546,6 +3546,7 @@ export {
   formatBigInt,
   formatNumber,
   formatValue,
+  getConsoleInspectOptions,
   getDefaultInspectOptions,
   getStderrNoColor,
   getStdoutNoColor,
diff --git a/ext/cron/01_cron.ts b/ext/cron/01_cron.ts
index db193053d880f7..87bb626908db35 100644
--- a/ext/cron/01_cron.ts
+++ b/ext/cron/01_cron.ts
@@ -165,8 +165,7 @@ function cron(
         const _res = isPromise(result) ? (await result) : result;
         success = true;
       } catch (error) {
-        // deno-lint-ignore no-console
-        console.error(`Exception in cron handler ${name}`, error);
+        import.meta.log("error", `Exception in cron handler ${name}`, error);
         success = false;
       }
     }
diff --git a/ext/http/00_serve.ts b/ext/http/00_serve.ts
index 1251b865746710..16feab0829bfc2 100644
--- a/ext/http/00_serve.ts
+++ b/ext/http/00_serve.ts
@@ -584,8 +584,11 @@ function mapToCallback(context, callback, onError) {
         if (METRICS_ENABLED) {
           op_http_metric_handle_otel_error(req);
         }
-        // deno-lint-ignore no-console
-        console.error("Exception in onError while handling exception", error);
+        import.meta.log(
+          "error",
+          "Exception in onError while handling exception",
+          error,
+        );
         response = internalServerError();
       }
     }
@@ -598,8 +601,10 @@ function mapToCallback(context, callback, onError) {
     if (innerRequest?.[_upgraded]) {
       // We're done here as the connection has been upgraded during the callback and no longer requires servicing.
       if (response !== UPGRADE_RESPONSE_SENTINEL) {
-        // deno-lint-ignore no-console
-        console.error("Upgrade response was not returned from callback");
+        import.meta.log(
+          "error",
+          "Upgrade response was not returned from callback",
+        );
         context.close();
       }
       innerRequest?.[_upgraded]();
@@ -755,8 +760,7 @@ function serve(arg1, arg2) {
   const signal = options.signal;
   const onError = options.onError ??
     function (error) {
-      // deno-lint-ignore no-console
-      console.error(error);
+      import.meta.log("error", error);
       return internalServerError();
     };
 
@@ -771,8 +775,7 @@ function serve(arg1, arg2) {
       if (options.onListen) {
         options.onListen(listener.addr);
       } else {
-        // deno-lint-ignore no-console
-        console.error(`Listening on ${path}`);
+        import.meta.log("info", `Listening on ${path}`);
       }
     });
   }
@@ -820,8 +823,7 @@ function serve(arg1, arg2) {
     } else {
       const host = formatHostName(addr.hostname);
 
-      // deno-lint-ignore no-console
-      console.error(`Listening on ${scheme}${host}:${addr.port}/`);
+      import.meta.log("info", `Listening on ${scheme}${host}:${addr.port}/`);
     }
   };
 
@@ -866,8 +868,11 @@ function serveHttpOn(context, addr, callback) {
 
   const promiseErrorHandler = (error) => {
     // Abnormal exit
-    // deno-lint-ignore no-console
-    console.error("Terminating Deno.serve loop due to unexpected error", error);
+    import.meta.log(
+      "error",
+      "Terminating Deno.serve loop due to unexpected error",
+      error,
+    );
     context.close();
   };
 
@@ -993,8 +998,8 @@ function registerDeclarativeServer(exports) {
               : "";
             const host = formatHostName(hostname);
 
-            // deno-lint-ignore no-console
-            console.error(
+            import.meta.log(
+              "info",
               `%cdeno serve%c: Listening on %chttp://${host}:${port}/%c${nThreads}`,
               "color: green",
               "color: inherit",
diff --git a/ext/kv/01_db.ts b/ext/kv/01_db.ts
index 37d4c58c11ae19..276d9a0e1ec72e 100644
--- a/ext/kv/01_db.ts
+++ b/ext/kv/01_db.ts
@@ -324,8 +324,7 @@ class Kv {
           const _res = isPromise(result) ? (await result) : result;
           success = true;
         } catch (error) {
-          // deno-lint-ignore no-console
-          console.error("Exception in queue handler", error);
+          import.meta.log("error", "Exception in queue handler", error);
         } finally {
           const promise: Promise<void> = op_kv_finish_dequeued_message(
             handleId,
diff --git a/ext/web/06_streams.js b/ext/web/06_streams.js
index 75a6388f149ee1..29f03bd24c01fb 100644
--- a/ext/web/06_streams.js
+++ b/ext/web/06_streams.js
@@ -164,8 +164,7 @@ function resolvePromiseWith(value) {
 function rethrowAssertionErrorRejection(e) {
   if (e && ObjectPrototypeIsPrototypeOf(AssertionError.prototype, e)) {
     queueMicrotask(() => {
-      // deno-lint-ignore no-console
-      console.error(`Internal Error: ${e.stack}`);
+      import.meta.log("error", `Internal Error: ${e.stack}`);
     });
   }
 }
diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js
index 2ff1d1962d0735..9268d873e0a7ed 100644
--- a/runtime/js/99_main.js
+++ b/runtime/js/99_main.js
@@ -12,6 +12,8 @@ import {
   op_bootstrap_pid,
   op_bootstrap_stderr_no_color,
   op_bootstrap_stdout_no_color,
+  op_get_ext_import_meta_proto,
+  op_internal_log,
   op_main_module,
   op_ppid,
   op_set_format_exception_callback,
@@ -59,6 +61,7 @@ import * as version from "ext:runtime/01_version.ts";
 import * as os from "ext:deno_os/30_os.js";
 import * as timers from "ext:deno_web/02_timers.js";
 import {
+  getConsoleInspectOptions,
   getDefaultInspectOptions,
   getStderrNoColor,
   inspectArgs,
@@ -113,6 +116,24 @@ ObjectDefineProperties(Symbol, {
   },
 });
 
+// https://docs.rs/log/latest/log/enum.Level.html
+const LOG_LEVELS = {
+  error: 1,
+  warn: 2,
+  info: 3,
+  debug: 4,
+  trace: 5,
+};
+
+op_get_ext_import_meta_proto().log = function internalLog(levelStr, ...args) {
+  const level = LOG_LEVELS[levelStr];
+  const message = inspectArgs(
+    args,
+    getConsoleInspectOptions(getStderrNoColor()),
+  );
+  op_internal_log(this.url, level, message);
+};
+
 let windowIsClosing = false;
 let globalThis_;
 
@@ -819,8 +840,8 @@ function bootstrapMainRuntime(runtimeOptions, warmup = false) {
         if (mode === executionModes.serve && !serve) {
           if (serveIsMain) {
             // Only error if main worker
-            // deno-lint-ignore no-console
-            console.error(
+            import.meta.log(
+              "error",
               `%cerror: %cdeno serve requires %cexport default { fetch }%c in the main module, did you mean to run \"deno run\"?`,
               "color: yellow;",
               "color: inherit;",
@@ -833,8 +854,8 @@ function bootstrapMainRuntime(runtimeOptions, warmup = false) {
 
         if (serve) {
           if (mode === executionModes.run) {
-            // deno-lint-ignore no-console
-            console.error(
+            import.meta.log(
+              "error",
               `%cwarning: %cDetected %cexport default { fetch }%c, did you mean to run \"deno serve\"?`,
               "color: yellow;",
               "color: inherit;",
diff --git a/runtime/ops/runtime.rs b/runtime/ops/runtime.rs
index e95193167dd2a7..5d2f2db1e8c240 100644
--- a/runtime/ops/runtime.rs
+++ b/runtime/ops/runtime.rs
@@ -6,7 +6,7 @@ use deno_core::OpState;
 
 deno_core::extension!(
   deno_runtime,
-  ops = [op_main_module, op_ppid],
+  ops = [op_main_module, op_ppid, op_internal_log],
   options = { main_module: ModuleSpecifier },
   state = |state, options| {
     state.put::<ModuleSpecifier>(options.main_module);
@@ -86,3 +86,33 @@ pub fn op_ppid() -> i64 {
     parent_id().into()
   }
 }
+
+#[allow(clippy::match_single_binding)] // needed for temporary lifetime
+#[op2(fast)]
+fn op_internal_log(
+  #[string] url: &str,
+  #[smi] level: u32,
+  #[string] message: &str,
+) {
+  let level = match level {
+    1 => log::Level::Error,
+    2 => log::Level::Warn,
+    3 => log::Level::Info,
+    4 => log::Level::Debug,
+    5 => log::Level::Trace,
+    _ => unreachable!(),
+  };
+  let target = url.replace('/', "::");
+  match format_args!("{message}") {
+    args => {
+      let record = log::Record::builder()
+        .file(Some(url))
+        .module_path(Some(url))
+        .target(&target)
+        .level(level)
+        .args(args)
+        .build();
+      log::logger().log(&record);
+    }
+  }
+}
diff --git a/tests/specs/cli/otel_basic/http_propagators.out b/tests/specs/cli/otel_basic/http_propagators.out
index e9ebeb39768b21..8268a5d9e58060 100644
--- a/tests/specs/cli/otel_basic/http_propagators.out
+++ b/tests/specs/cli/otel_basic/http_propagators.out
@@ -237,10 +237,10 @@
     {
       "timeUnixNano": "[WILDCARD]",
       "observedTimeUnixNano": "[WILDCARD]",
-      "severityNumber": 17,
-      "severityText": "ERROR",
+      "severityNumber": 9,
+      "severityText": "INFO",
       "body": {
-        "stringValue": "Listening on http://[WILDCARD]:8000/\n"
+        "stringValue": "Listening on http://[WILDCARD]:8000/"
       },
       "attributes": [],
       "droppedAttributesCount": 0,
@@ -251,10 +251,10 @@
     {
       "timeUnixNano": "[WILDCARD]",
       "observedTimeUnixNano": "[WILDCARD]",
-      "severityNumber": 17,
-      "severityText": "ERROR",
+      "severityNumber": 9,
+      "severityText": "INFO",
       "body": {
-        "stringValue": "Listening on http://[WILDCARD]:8001/\n"
+        "stringValue": "Listening on http://[WILDCARD]:8001/"
       },
       "attributes": [],
       "droppedAttributesCount": 0,
diff --git a/tests/specs/run/045_proxy/proxy_test.ts.out b/tests/specs/run/045_proxy/proxy_test.ts.out
index 39cb8779aa2eed..a759e19998b1e1 100644
--- a/tests/specs/run/045_proxy/proxy_test.ts.out
+++ b/tests/specs/run/045_proxy/proxy_test.ts.out
@@ -1,4 +1,3 @@
-Listening on [WILDCARD]
 Proxy request to: http://localhost:4545/run/045_mod.ts
 Proxy request to: http://localhost:4545/run/045_mod.ts
 Proxy request to: http://localhost:4545/run/045_output.ts
diff --git a/tests/specs/run/serve/__test__.jsonc b/tests/specs/run/serve/__test__.jsonc
new file mode 100644
index 00000000000000..dc45bbf880bc41
--- /dev/null
+++ b/tests/specs/run/serve/__test__.jsonc
@@ -0,0 +1,14 @@
+{
+  "tests": {
+    "on_listen_default": {
+      "args": "run -A on_listen_default.ts",
+      "output": "on_listen_default.out",
+      "if": "unix"
+    },
+    "ipv6_hostname": {
+      "args": "run -A ipv6_hostname.ts",
+      "output": "ipv6_hostname.out",
+      "if": "unix"
+    }
+  }
+}
diff --git a/tests/specs/run/serve/ipv6_hostname.out b/tests/specs/run/serve/ipv6_hostname.out
new file mode 100644
index 00000000000000..002257d433c1ee
--- /dev/null
+++ b/tests/specs/run/serve/ipv6_hostname.out
@@ -0,0 +1 @@
+Listening on http://[::1]:[WILDCARD]/
diff --git a/tests/specs/run/serve/ipv6_hostname.ts b/tests/specs/run/serve/ipv6_hostname.ts
new file mode 100644
index 00000000000000..532aba23bbbf15
--- /dev/null
+++ b/tests/specs/run/serve/ipv6_hostname.ts
@@ -0,0 +1,6 @@
+const server = Deno.serve({
+  handler: () => new Response(),
+  hostname: "::1",
+  port: 0,
+});
+await server.shutdown();
diff --git a/tests/specs/run/serve/on_listen_default.out b/tests/specs/run/serve/on_listen_default.out
new file mode 100644
index 00000000000000..623accd3e43e0f
--- /dev/null
+++ b/tests/specs/run/serve/on_listen_default.out
@@ -0,0 +1 @@
+Listening on http://0.0.0.0:[WILDCARD]/
diff --git a/tests/specs/run/serve/on_listen_default.ts b/tests/specs/run/serve/on_listen_default.ts
new file mode 100644
index 00000000000000..3057a3ee43b741
--- /dev/null
+++ b/tests/specs/run/serve/on_listen_default.ts
@@ -0,0 +1,9 @@
+const server = Deno.serve({
+  handler() {
+    return new Response("Hello World");
+  },
+  hostname: "0.0.0.0",
+  port: 0,
+});
+
+await server.shutdown();
diff --git a/tests/unit/serve_test.ts b/tests/unit/serve_test.ts
index 6373fbb3a73684..21f68ed973e35b 100644
--- a/tests/unit/serve_test.ts
+++ b/tests/unit/serve_test.ts
@@ -823,42 +823,6 @@ Deno.test({ permissions: { net: true } }, async function httpServerPort0() {
   await server.finished;
 });
 
-Deno.test(
-  { permissions: { net: true } },
-  async function httpServerDefaultOnListenCallback() {
-    const ac = new AbortController();
-
-    const consoleError = console.error;
-    console.error = (msg) => {
-      try {
-        const match = msg.match(
-          /Listening on http:\/\/(localhost|0\.0\.0\.0):(\d+)\//,
-        );
-        assert(!!match, `Didn't match ${msg}`);
-        const port = +match[2];
-        assert(port > 0 && port < 65536);
-      } finally {
-        ac.abort();
-      }
-    };
-
-    try {
-      await using server = Deno.serve({
-        handler() {
-          return new Response("Hello World");
-        },
-        hostname: "0.0.0.0",
-        port: 0,
-        signal: ac.signal,
-      });
-
-      await server.finished;
-    } finally {
-      console.error = consoleError;
-    }
-  },
-);
-
 // https://github.com/denoland/deno/issues/15107
 Deno.test(
   { permissions: { net: true } },
@@ -907,36 +871,6 @@ Deno.test({ permissions: { net: true } }, async function validPortString() {
   await server.shutdown();
 });
 
-Deno.test({ permissions: { net: true } }, async function ipv6Hostname() {
-  const ac = new AbortController();
-  let url = "";
-
-  const consoleError = console.error;
-  console.error = (msg) => {
-    try {
-      const match = msg.match(/Listening on (http:\/\/(.*?):(\d+)\/)/);
-      assert(!!match, `Didn't match ${msg}`);
-      url = match[1];
-    } finally {
-      ac.abort();
-    }
-  };
-
-  try {
-    await using server = Deno.serve({
-      handler: () => new Response(),
-      hostname: "::1",
-      port: 0,
-      signal: ac.signal,
-    });
-    assertEquals(server.addr.transport, "tcp");
-    assert(new URL(url), `Not a valid URL "${url}"`);
-    await server.shutdown();
-  } finally {
-    console.error = consoleError;
-  }
-});
-
 Deno.test({ permissions: { net: true } }, function invalidPortFloat() {
   assertThrows(
     () =>

From 43f6137d92941823c5a91f396eff64ae0756d9cc Mon Sep 17 00:00:00 2001
From: denobot <33910674+denobot@users.noreply.github.com>
Date: Fri, 21 Mar 2025 14:25:03 +0100
Subject: [PATCH 112/115] chore: forward v2.2.5 release commit to main (#28579)

NOTE: Commit 27363d389 was incorrectly landed in main before the release
completed and is not included in v2.2.5. The official v2.2.5 release was made
from the v2.2 branch.
---
 .github/workflows/ci.generate.ts |  2 +-
 .github/workflows/ci.yml         |  8 ++--
 Cargo.lock                       | 72 ++++++++++++++++----------------
 Cargo.toml                       | 68 +++++++++++++++---------------
 Releases.md                      | 18 ++++++++
 bench_util/Cargo.toml            |  2 +-
 cli/Cargo.toml                   |  2 +-
 cli/lib/Cargo.toml               |  2 +-
 cli/lib/version.txt              |  2 +-
 cli/rt/Cargo.toml                |  2 +-
 cli/snapshot/Cargo.toml          |  2 +-
 ext/broadcast_channel/Cargo.toml |  2 +-
 ext/cache/Cargo.toml             |  2 +-
 ext/canvas/Cargo.toml            |  2 +-
 ext/console/Cargo.toml           |  2 +-
 ext/cron/Cargo.toml              |  2 +-
 ext/crypto/Cargo.toml            |  2 +-
 ext/fetch/Cargo.toml             |  2 +-
 ext/ffi/Cargo.toml               |  2 +-
 ext/fs/Cargo.toml                |  2 +-
 ext/http/Cargo.toml              |  2 +-
 ext/io/Cargo.toml                |  2 +-
 ext/kv/Cargo.toml                |  2 +-
 ext/napi/Cargo.toml              |  2 +-
 ext/napi/sym/Cargo.toml          |  2 +-
 ext/net/Cargo.toml               |  2 +-
 ext/node/Cargo.toml              |  2 +-
 ext/os/Cargo.toml                |  2 +-
 ext/process/Cargo.toml           |  2 +-
 ext/telemetry/Cargo.toml         |  2 +-
 ext/tls/Cargo.toml               |  2 +-
 ext/url/Cargo.toml               |  2 +-
 ext/web/Cargo.toml               |  2 +-
 ext/webgpu/Cargo.toml            |  2 +-
 ext/webidl/Cargo.toml            |  2 +-
 ext/websocket/Cargo.toml         |  2 +-
 ext/webstorage/Cargo.toml        |  2 +-
 resolvers/deno/Cargo.toml        |  2 +-
 resolvers/node/Cargo.toml        |  2 +-
 resolvers/npm_cache/Cargo.toml   |  2 +-
 runtime/Cargo.toml               |  2 +-
 runtime/permissions/Cargo.toml   |  2 +-
 42 files changed, 130 insertions(+), 112 deletions(-)

diff --git a/.github/workflows/ci.generate.ts b/.github/workflows/ci.generate.ts
index 88c0e8262d3be9..4c5aecaec04fa4 100755
--- a/.github/workflows/ci.generate.ts
+++ b/.github/workflows/ci.generate.ts
@@ -5,7 +5,7 @@ import { stringify } from "jsr:@std/yaml@^0.221/stringify";
 // Bump this number when you want to purge the cache.
 // Note: the tools/release/01_bump_crate_versions.ts script will update this version
 // automatically via regex, so ensure that this line maintains this format.
-const cacheVersion = 45;
+const cacheVersion = 46;
 
 const ubuntuX86Runner = "ubuntu-24.04";
 const ubuntuX86XlRunner = "ubuntu-24.04-xl";
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 1772043e363787..dfedb1ee779b32 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -184,8 +184,8 @@ jobs:
             ~/.cargo/registry/index
             ~/.cargo/registry/cache
             ~/.cargo/git/db
-          key: '45-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-${{ hashFiles(''Cargo.lock'') }}'
-          restore-keys: '45-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-'
+          key: '46-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-${{ hashFiles(''Cargo.lock'') }}'
+          restore-keys: '46-cargo-home-${{ matrix.os }}-${{ matrix.arch }}-'
         if: '!(matrix.skip)'
       - uses: dsherret/rust-toolchain-file@v1
         if: '!(matrix.skip)'
@@ -381,7 +381,7 @@ jobs:
             !./target/*/*.zip
             !./target/*/*.tar.gz
           key: never_saved
-          restore-keys: '45-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-'
+          restore-keys: '46-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-'
       - name: Apply and update mtime cache
         if: '!(matrix.skip) && (!startsWith(github.ref, ''refs/tags/''))'
         uses: ./.github/mtime_cache
@@ -699,7 +699,7 @@ jobs:
             !./target/*/gn_root
             !./target/*/*.zip
             !./target/*/*.tar.gz
-          key: '45-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-${{ github.sha }}'
+          key: '46-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-${{ github.sha }}'
   wasm:
     name: build wasm32
     needs:
diff --git a/Cargo.lock b/Cargo.lock
index ae9f29c32d806d..f349f0771c6803 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1473,7 +1473,7 @@ dependencies = [
 
 [[package]]
 name = "deno"
-version = "2.2.4"
+version = "2.2.5"
 dependencies = [
  "anstream",
  "async-trait",
@@ -1656,7 +1656,7 @@ dependencies = [
 
 [[package]]
 name = "deno_bench_util"
-version = "0.189.0"
+version = "0.190.0"
 dependencies = [
  "bencher",
  "deno_core",
@@ -1665,7 +1665,7 @@ dependencies = [
 
 [[package]]
 name = "deno_broadcast_channel"
-version = "0.189.0"
+version = "0.190.0"
 dependencies = [
  "async-trait",
  "deno_core",
@@ -1677,7 +1677,7 @@ dependencies = [
 
 [[package]]
 name = "deno_cache"
-version = "0.127.0"
+version = "0.128.0"
 dependencies = [
  "async-stream",
  "async-trait",
@@ -1733,7 +1733,7 @@ dependencies = [
 
 [[package]]
 name = "deno_canvas"
-version = "0.64.0"
+version = "0.65.0"
 dependencies = [
  "bytemuck",
  "deno_core",
@@ -1773,7 +1773,7 @@ dependencies = [
 
 [[package]]
 name = "deno_console"
-version = "0.195.0"
+version = "0.196.0"
 dependencies = [
  "deno_core",
 ]
@@ -1825,7 +1825,7 @@ checksum = "fe4dccb6147bb3f3ba0c7a48e993bfeb999d2c2e47a81badee80e2b370c8d695"
 
 [[package]]
 name = "deno_cron"
-version = "0.75.0"
+version = "0.76.0"
 dependencies = [
  "async-trait",
  "chrono",
@@ -1838,7 +1838,7 @@ dependencies = [
 
 [[package]]
 name = "deno_crypto"
-version = "0.209.0"
+version = "0.210.0"
 dependencies = [
  "aes",
  "aes-gcm",
@@ -1929,7 +1929,7 @@ dependencies = [
 
 [[package]]
 name = "deno_fetch"
-version = "0.219.0"
+version = "0.220.0"
 dependencies = [
  "base64 0.21.7",
  "bytes",
@@ -1967,7 +1967,7 @@ dependencies = [
 
 [[package]]
 name = "deno_ffi"
-version = "0.182.0"
+version = "0.183.0"
 dependencies = [
  "cranelift",
  "cranelift-native",
@@ -1990,7 +1990,7 @@ dependencies = [
 
 [[package]]
 name = "deno_fs"
-version = "0.105.0"
+version = "0.106.0"
 dependencies = [
  "async-trait",
  "base32",
@@ -2048,7 +2048,7 @@ dependencies = [
 
 [[package]]
 name = "deno_http"
-version = "0.193.0"
+version = "0.194.0"
 dependencies = [
  "async-compression",
  "async-trait",
@@ -2089,7 +2089,7 @@ dependencies = [
 
 [[package]]
 name = "deno_io"
-version = "0.105.0"
+version = "0.106.0"
 dependencies = [
  "async-trait",
  "deno_core",
@@ -2111,7 +2111,7 @@ dependencies = [
 
 [[package]]
 name = "deno_kv"
-version = "0.103.0"
+version = "0.104.0"
 dependencies = [
  "anyhow",
  "async-trait",
@@ -2142,7 +2142,7 @@ dependencies = [
 
 [[package]]
 name = "deno_lib"
-version = "0.11.0"
+version = "0.12.0"
 dependencies = [
  "capacity_builder 0.5.0",
  "deno_error",
@@ -2227,7 +2227,7 @@ dependencies = [
 
 [[package]]
 name = "deno_napi"
-version = "0.126.0"
+version = "0.127.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2256,7 +2256,7 @@ dependencies = [
 
 [[package]]
 name = "deno_net"
-version = "0.187.0"
+version = "0.188.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2278,7 +2278,7 @@ dependencies = [
 
 [[package]]
 name = "deno_node"
-version = "0.133.0"
+version = "0.134.0"
 dependencies = [
  "aead-gcm-stream",
  "aes",
@@ -2404,7 +2404,7 @@ dependencies = [
 
 [[package]]
 name = "deno_npm_cache"
-version = "0.14.0"
+version = "0.15.0"
 dependencies = [
  "async-trait",
  "base64 0.21.7",
@@ -2451,7 +2451,7 @@ dependencies = [
 
 [[package]]
 name = "deno_os"
-version = "0.12.0"
+version = "0.13.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2503,7 +2503,7 @@ dependencies = [
 
 [[package]]
 name = "deno_permissions"
-version = "0.54.0"
+version = "0.55.0"
 dependencies = [
  "capacity_builder 0.5.0",
  "deno_core",
@@ -2523,7 +2523,7 @@ dependencies = [
 
 [[package]]
 name = "deno_process"
-version = "0.10.0"
+version = "0.11.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2550,7 +2550,7 @@ dependencies = [
 
 [[package]]
 name = "deno_resolver"
-version = "0.26.0"
+version = "0.27.0"
 dependencies = [
  "anyhow",
  "async-once-cell",
@@ -2584,7 +2584,7 @@ dependencies = [
 
 [[package]]
 name = "deno_runtime"
-version = "0.203.0"
+version = "0.204.0"
 dependencies = [
  "color-print",
  "deno_ast",
@@ -2665,7 +2665,7 @@ dependencies = [
 
 [[package]]
 name = "deno_snapshots"
-version = "0.10.0"
+version = "0.11.0"
 dependencies = [
  "deno_runtime",
 ]
@@ -2690,7 +2690,7 @@ dependencies = [
 
 [[package]]
 name = "deno_telemetry"
-version = "0.17.0"
+version = "0.18.0"
 dependencies = [
  "async-trait",
  "deno_core",
@@ -2735,7 +2735,7 @@ dependencies = [
 
 [[package]]
 name = "deno_tls"
-version = "0.182.0"
+version = "0.183.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2786,7 +2786,7 @@ dependencies = [
 
 [[package]]
 name = "deno_url"
-version = "0.195.0"
+version = "0.196.0"
 dependencies = [
  "deno_bench_util",
  "deno_console",
@@ -2798,7 +2798,7 @@ dependencies = [
 
 [[package]]
 name = "deno_web"
-version = "0.226.0"
+version = "0.227.0"
 dependencies = [
  "async-trait",
  "base64-simd 0.8.0",
@@ -2821,7 +2821,7 @@ dependencies = [
 
 [[package]]
 name = "deno_webgpu"
-version = "0.162.0"
+version = "0.163.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2838,7 +2838,7 @@ dependencies = [
 
 [[package]]
 name = "deno_webidl"
-version = "0.195.0"
+version = "0.196.0"
 dependencies = [
  "deno_bench_util",
  "deno_core",
@@ -2846,7 +2846,7 @@ dependencies = [
 
 [[package]]
 name = "deno_websocket"
-version = "0.200.0"
+version = "0.201.0"
 dependencies = [
  "bytes",
  "deno_core",
@@ -2869,7 +2869,7 @@ dependencies = [
 
 [[package]]
 name = "deno_webstorage"
-version = "0.190.0"
+version = "0.191.0"
 dependencies = [
  "deno_core",
  "deno_error",
@@ -2956,7 +2956,7 @@ dependencies = [
 
 [[package]]
 name = "denort"
-version = "2.2.4"
+version = "2.2.5"
 dependencies = [
  "async-trait",
  "bincode",
@@ -5542,7 +5542,7 @@ dependencies = [
 
 [[package]]
 name = "napi_sym"
-version = "0.125.0"
+version = "0.126.0"
 dependencies = [
  "quote",
  "serde",
@@ -5597,7 +5597,7 @@ dependencies = [
 
 [[package]]
 name = "node_resolver"
-version = "0.33.0"
+version = "0.34.0"
 dependencies = [
  "anyhow",
  "async-trait",
diff --git a/Cargo.toml b/Cargo.toml
index de04bb9b27591f..42bf50fab373ea 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -53,7 +53,7 @@ repository = "https://github.com/denoland/deno"
 deno_ast = { version = "=0.46.2", features = ["transpiling"] }
 deno_core = { version = "0.341.0" }
 
-deno_bench_util = { version = "0.189.0", path = "./bench_util" }
+deno_bench_util = { version = "0.190.0", path = "./bench_util" }
 deno_config = { version = "=0.51.0", features = ["workspace"] }
 deno_doc = "=0.169.1"
 deno_graph = "=0.89.2"
@@ -62,12 +62,12 @@ deno_lockfile = "=0.25.0"
 deno_media_type = { version = "=0.2.8", features = ["module_specifier"] }
 deno_npm = "=0.28.0"
 deno_path_util = "=0.3.2"
-deno_permissions = { version = "0.54.0", path = "./runtime/permissions" }
-deno_runtime = { version = "0.203.0", path = "./runtime" }
+deno_permissions = { version = "0.55.0", path = "./runtime/permissions" }
+deno_runtime = { version = "0.204.0", path = "./runtime" }
 deno_semver = "=0.7.1"
 deno_terminal = "=0.2.2"
 eszip = "0.83.0"
-napi_sym = { version = "0.125.0", path = "./ext/napi/sym" }
+napi_sym = { version = "0.126.0", path = "./ext/napi/sym" }
 test_util = { package = "test_server", path = "./tests/util/server" }
 
 denokv_proto = "0.10.0"
@@ -76,38 +76,38 @@ denokv_remote = "0.10.0"
 denokv_sqlite = { default-features = false, version = "0.10.0" }
 
 # exts
-deno_broadcast_channel = { version = "0.189.0", path = "./ext/broadcast_channel" }
-deno_cache = { version = "0.127.0", path = "./ext/cache" }
-deno_canvas = { version = "0.64.0", path = "./ext/canvas" }
-deno_console = { version = "0.195.0", path = "./ext/console" }
-deno_cron = { version = "0.75.0", path = "./ext/cron" }
-deno_crypto = { version = "0.209.0", path = "./ext/crypto" }
-deno_fetch = { version = "0.219.0", path = "./ext/fetch" }
-deno_ffi = { version = "0.182.0", path = "./ext/ffi" }
-deno_fs = { version = "0.105.0", path = "./ext/fs" }
-deno_http = { version = "0.193.0", path = "./ext/http" }
-deno_io = { version = "0.105.0", path = "./ext/io" }
-deno_kv = { version = "0.103.0", path = "./ext/kv" }
-deno_napi = { version = "0.126.0", path = "./ext/napi" }
-deno_net = { version = "0.187.0", path = "./ext/net" }
-deno_node = { version = "0.133.0", path = "./ext/node" }
-deno_os = { version = "0.12.0", path = "./ext/os" }
-deno_process = { version = "0.10.0", path = "./ext/process" }
-deno_telemetry = { version = "0.17.0", path = "./ext/telemetry" }
-deno_tls = { version = "0.182.0", path = "./ext/tls" }
-deno_url = { version = "0.195.0", path = "./ext/url" }
-deno_web = { version = "0.226.0", path = "./ext/web" }
-deno_webgpu = { version = "0.162.0", path = "./ext/webgpu" }
-deno_webidl = { version = "0.195.0", path = "./ext/webidl" }
-deno_websocket = { version = "0.200.0", path = "./ext/websocket" }
-deno_webstorage = { version = "0.190.0", path = "./ext/webstorage" }
+deno_broadcast_channel = { version = "0.190.0", path = "./ext/broadcast_channel" }
+deno_cache = { version = "0.128.0", path = "./ext/cache" }
+deno_canvas = { version = "0.65.0", path = "./ext/canvas" }
+deno_console = { version = "0.196.0", path = "./ext/console" }
+deno_cron = { version = "0.76.0", path = "./ext/cron" }
+deno_crypto = { version = "0.210.0", path = "./ext/crypto" }
+deno_fetch = { version = "0.220.0", path = "./ext/fetch" }
+deno_ffi = { version = "0.183.0", path = "./ext/ffi" }
+deno_fs = { version = "0.106.0", path = "./ext/fs" }
+deno_http = { version = "0.194.0", path = "./ext/http" }
+deno_io = { version = "0.106.0", path = "./ext/io" }
+deno_kv = { version = "0.104.0", path = "./ext/kv" }
+deno_napi = { version = "0.127.0", path = "./ext/napi" }
+deno_net = { version = "0.188.0", path = "./ext/net" }
+deno_node = { version = "0.134.0", path = "./ext/node" }
+deno_os = { version = "0.13.0", path = "./ext/os" }
+deno_process = { version = "0.11.0", path = "./ext/process" }
+deno_telemetry = { version = "0.18.0", path = "./ext/telemetry" }
+deno_tls = { version = "0.183.0", path = "./ext/tls" }
+deno_url = { version = "0.196.0", path = "./ext/url" }
+deno_web = { version = "0.227.0", path = "./ext/web" }
+deno_webgpu = { version = "0.163.0", path = "./ext/webgpu" }
+deno_webidl = { version = "0.196.0", path = "./ext/webidl" }
+deno_websocket = { version = "0.201.0", path = "./ext/websocket" }
+deno_webstorage = { version = "0.191.0", path = "./ext/webstorage" }
 
 # workspace libraries
-deno_lib = { version = "0.11.0", path = "./cli/lib" }
-deno_npm_cache = { version = "0.14.0", path = "./resolvers/npm_cache" }
-deno_resolver = { version = "0.26.0", path = "./resolvers/deno" }
-deno_snapshots = { version = "0.10.0", path = "./cli/snapshot" }
-node_resolver = { version = "0.33.0", path = "./resolvers/node" }
+deno_lib = { version = "0.12.0", path = "./cli/lib" }
+deno_npm_cache = { version = "0.15.0", path = "./resolvers/npm_cache" }
+deno_resolver = { version = "0.27.0", path = "./resolvers/deno" }
+deno_snapshots = { version = "0.11.0", path = "./cli/snapshot" }
+node_resolver = { version = "0.34.0", path = "./resolvers/node" }
 
 aead-gcm-stream = "0.4"
 aes = "=0.8.3"
diff --git a/Releases.md b/Releases.md
index 0b3538653028ad..779a258fbacc24 100644
--- a/Releases.md
+++ b/Releases.md
@@ -6,6 +6,24 @@ https://github.com/denoland/deno/releases
 We also have one-line install commands at:
 https://github.com/denoland/deno_install
 
+### 2.2.5 / 2025.03.21
+
+- feat(unstable): basic otel event recording (#28552)
+- feat(unstable): support using a local copy of npm packages (#28512)
+- feat: upgrade deno_core and V8 13.5 (#28562)
+- fix(doc): do not stack overflow for namespace that exports self or ancestor
+  (#28533)
+- fix(ext/node): add util.getCallSites (#28546)
+- fix(ext/node): reset statement immidiately in run() (#28506)
+- fix(ext/node): restrict ATTACH DATABASE statement (#28513)
+- fix(ext/os): explicitly enable `sysinfoapi` feature on `winapi` dependency
+  (#28568)
+- fix(lsp): do not show import-map-remap diagnostic when referrer and target are
+  within the entry base (#28560)
+- fix(otel): replace `ArrayPrototypeSplit` with `StringPrototypeSplit` (#28538)
+- fix: add stackTraceLimit to ErrorConstructor interface and removed
+  ErrorWithStackTraceLimit interface (#28539)
+
 ### 2.2.4 / 2025.03.14
 
 - feat(otel): span context propagators (#28460)
diff --git a/bench_util/Cargo.toml b/bench_util/Cargo.toml
index 0a66df21217be2..fabca186162a56 100644
--- a/bench_util/Cargo.toml
+++ b/bench_util/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_bench_util"
-version = "0.189.0"
+version = "0.190.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index 82e707ed27ad36..a2c6ec7105bb4f 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno"
-version = "2.2.4"
+version = "2.2.5"
 authors.workspace = true
 default-run = "deno"
 edition.workspace = true
diff --git a/cli/lib/Cargo.toml b/cli/lib/Cargo.toml
index 3b831c664f660a..3aedda771ce934 100644
--- a/cli/lib/Cargo.toml
+++ b/cli/lib/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_lib"
-version = "0.11.0"
+version = "0.12.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/cli/lib/version.txt b/cli/lib/version.txt
index 047615559cd046..ecf00d9019dc7e 100644
--- a/cli/lib/version.txt
+++ b/cli/lib/version.txt
@@ -1 +1 @@
-2.2.4
\ No newline at end of file
+2.2.5
\ No newline at end of file
diff --git a/cli/rt/Cargo.toml b/cli/rt/Cargo.toml
index 8f6c20521cab5b..2ade8ee3dee96b 100644
--- a/cli/rt/Cargo.toml
+++ b/cli/rt/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "denort"
-version = "2.2.4"
+version = "2.2.5"
 authors.workspace = true
 default-run = "denort"
 edition.workspace = true
diff --git a/cli/snapshot/Cargo.toml b/cli/snapshot/Cargo.toml
index f7afa308aa02b5..8a8b77c882470e 100644
--- a/cli/snapshot/Cargo.toml
+++ b/cli/snapshot/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_snapshots"
-version = "0.10.0"
+version = "0.11.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/broadcast_channel/Cargo.toml b/ext/broadcast_channel/Cargo.toml
index 8dc8d7e7defdd3..7021191a5d4fcb 100644
--- a/ext/broadcast_channel/Cargo.toml
+++ b/ext/broadcast_channel/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_broadcast_channel"
-version = "0.189.0"
+version = "0.190.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/cache/Cargo.toml b/ext/cache/Cargo.toml
index 6fec31a6c871db..0aeec5fe2406e5 100644
--- a/ext/cache/Cargo.toml
+++ b/ext/cache/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_cache"
-version = "0.127.0"
+version = "0.128.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/canvas/Cargo.toml b/ext/canvas/Cargo.toml
index a08387f4d012da..7b2a78c47b0841 100644
--- a/ext/canvas/Cargo.toml
+++ b/ext/canvas/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_canvas"
-version = "0.64.0"
+version = "0.65.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/console/Cargo.toml b/ext/console/Cargo.toml
index e7fc750bcccaa6..168405bc2fca13 100644
--- a/ext/console/Cargo.toml
+++ b/ext/console/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_console"
-version = "0.195.0"
+version = "0.196.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/cron/Cargo.toml b/ext/cron/Cargo.toml
index 6c76fa0f89ebc6..b659b30fbaee6a 100644
--- a/ext/cron/Cargo.toml
+++ b/ext/cron/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_cron"
-version = "0.75.0"
+version = "0.76.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/crypto/Cargo.toml b/ext/crypto/Cargo.toml
index f83e2c024e2279..5330c9d97ad9b0 100644
--- a/ext/crypto/Cargo.toml
+++ b/ext/crypto/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_crypto"
-version = "0.209.0"
+version = "0.210.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/fetch/Cargo.toml b/ext/fetch/Cargo.toml
index 7247ee99602b78..7cf4c1577ad392 100644
--- a/ext/fetch/Cargo.toml
+++ b/ext/fetch/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_fetch"
-version = "0.219.0"
+version = "0.220.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/ffi/Cargo.toml b/ext/ffi/Cargo.toml
index 0e8e3d3ed87a3e..0649afb24f3e72 100644
--- a/ext/ffi/Cargo.toml
+++ b/ext/ffi/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_ffi"
-version = "0.182.0"
+version = "0.183.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/fs/Cargo.toml b/ext/fs/Cargo.toml
index d1702d37b72a19..e47a2a41ff4db3 100644
--- a/ext/fs/Cargo.toml
+++ b/ext/fs/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_fs"
-version = "0.105.0"
+version = "0.106.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/http/Cargo.toml b/ext/http/Cargo.toml
index 18476a49c0abd7..05c963d6c94603 100644
--- a/ext/http/Cargo.toml
+++ b/ext/http/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_http"
-version = "0.193.0"
+version = "0.194.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/io/Cargo.toml b/ext/io/Cargo.toml
index 701dd1c19bc8b5..aebc0c75a9cbe9 100644
--- a/ext/io/Cargo.toml
+++ b/ext/io/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_io"
-version = "0.105.0"
+version = "0.106.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/kv/Cargo.toml b/ext/kv/Cargo.toml
index bd7c1fdca95c28..ce1828b6b2df0b 100644
--- a/ext/kv/Cargo.toml
+++ b/ext/kv/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_kv"
-version = "0.103.0"
+version = "0.104.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/napi/Cargo.toml b/ext/napi/Cargo.toml
index 90fcec5675981c..78ee31651a0db3 100644
--- a/ext/napi/Cargo.toml
+++ b/ext/napi/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_napi"
-version = "0.126.0"
+version = "0.127.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/napi/sym/Cargo.toml b/ext/napi/sym/Cargo.toml
index d7a004dbed943b..dc4b9028d8d06d 100644
--- a/ext/napi/sym/Cargo.toml
+++ b/ext/napi/sym/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "napi_sym"
-version = "0.125.0"
+version = "0.126.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/net/Cargo.toml b/ext/net/Cargo.toml
index fdcf8376164009..623f156d25c517 100644
--- a/ext/net/Cargo.toml
+++ b/ext/net/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_net"
-version = "0.187.0"
+version = "0.188.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/node/Cargo.toml b/ext/node/Cargo.toml
index e6a6483230bce9..2acd324440819f 100644
--- a/ext/node/Cargo.toml
+++ b/ext/node/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_node"
-version = "0.133.0"
+version = "0.134.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/os/Cargo.toml b/ext/os/Cargo.toml
index 2334680d6313f2..b1c936d11292ac 100644
--- a/ext/os/Cargo.toml
+++ b/ext/os/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_os"
-version = "0.12.0"
+version = "0.13.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/process/Cargo.toml b/ext/process/Cargo.toml
index be811838e0c542..6ca91c7ee2ad46 100644
--- a/ext/process/Cargo.toml
+++ b/ext/process/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_process"
-version = "0.10.0"
+version = "0.11.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/telemetry/Cargo.toml b/ext/telemetry/Cargo.toml
index f4f59d4213dc55..df92c049f90e36 100644
--- a/ext/telemetry/Cargo.toml
+++ b/ext/telemetry/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_telemetry"
-version = "0.17.0"
+version = "0.18.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/tls/Cargo.toml b/ext/tls/Cargo.toml
index 3492e94cb4ff08..f79db8afafa8ad 100644
--- a/ext/tls/Cargo.toml
+++ b/ext/tls/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_tls"
-version = "0.182.0"
+version = "0.183.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/url/Cargo.toml b/ext/url/Cargo.toml
index 462e8b0e655c06..03b68e4248623c 100644
--- a/ext/url/Cargo.toml
+++ b/ext/url/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_url"
-version = "0.195.0"
+version = "0.196.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/web/Cargo.toml b/ext/web/Cargo.toml
index d0e27a3041d103..6b9ebf528f98bd 100644
--- a/ext/web/Cargo.toml
+++ b/ext/web/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_web"
-version = "0.226.0"
+version = "0.227.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/webgpu/Cargo.toml b/ext/webgpu/Cargo.toml
index 5666264168d392..c8632bcd31418d 100644
--- a/ext/webgpu/Cargo.toml
+++ b/ext/webgpu/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_webgpu"
-version = "0.162.0"
+version = "0.163.0"
 authors = ["the Deno authors"]
 edition.workspace = true
 license = "MIT"
diff --git a/ext/webidl/Cargo.toml b/ext/webidl/Cargo.toml
index 7afd94daf95ad5..190bc748931ce3 100644
--- a/ext/webidl/Cargo.toml
+++ b/ext/webidl/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_webidl"
-version = "0.195.0"
+version = "0.196.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/websocket/Cargo.toml b/ext/websocket/Cargo.toml
index e971772f55da02..3703743b02d4f1 100644
--- a/ext/websocket/Cargo.toml
+++ b/ext/websocket/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_websocket"
-version = "0.200.0"
+version = "0.201.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/ext/webstorage/Cargo.toml b/ext/webstorage/Cargo.toml
index ebd95f105559b7..2e187a542e0868 100644
--- a/ext/webstorage/Cargo.toml
+++ b/ext/webstorage/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_webstorage"
-version = "0.190.0"
+version = "0.191.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/resolvers/deno/Cargo.toml b/resolvers/deno/Cargo.toml
index 6b93e20f3c04ff..92a33c1e50f389 100644
--- a/resolvers/deno/Cargo.toml
+++ b/resolvers/deno/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_resolver"
-version = "0.26.0"
+version = "0.27.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/resolvers/node/Cargo.toml b/resolvers/node/Cargo.toml
index 7794fe6de59da9..87969ceacf805c 100644
--- a/resolvers/node/Cargo.toml
+++ b/resolvers/node/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "node_resolver"
-version = "0.33.0"
+version = "0.34.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/resolvers/npm_cache/Cargo.toml b/resolvers/npm_cache/Cargo.toml
index f5ed3a10ef95ac..9dcb7100173bd6 100644
--- a/resolvers/npm_cache/Cargo.toml
+++ b/resolvers/npm_cache/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_npm_cache"
-version = "0.14.0"
+version = "0.15.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml
index 1b9e49fab74085..86404d9b1fd566 100644
--- a/runtime/Cargo.toml
+++ b/runtime/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_runtime"
-version = "0.203.0"
+version = "0.204.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true
diff --git a/runtime/permissions/Cargo.toml b/runtime/permissions/Cargo.toml
index 32a564424af823..b727d7d4098486 100644
--- a/runtime/permissions/Cargo.toml
+++ b/runtime/permissions/Cargo.toml
@@ -2,7 +2,7 @@
 
 [package]
 name = "deno_permissions"
-version = "0.54.0"
+version = "0.55.0"
 authors.workspace = true
 edition.workspace = true
 license.workspace = true

From f7993280c9aa52230f56447d7a96b514b310edc9 Mon Sep 17 00:00:00 2001
From: David Sherret <dsherret@users.noreply.github.com>
Date: Fri, 21 Mar 2025 17:12:28 -0400
Subject: [PATCH 113/115] fix(npm): reduce occurrences of duplicate packages
 due to peer dep resolution (#28586)

---
 Cargo.lock | 14 +++++++-------
 Cargo.toml |  2 +-
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index f349f0771c6803..2b0064b7fed402 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1502,7 +1502,7 @@ dependencies = [
  "deno_lint",
  "deno_lockfile 0.25.0",
  "deno_media_type",
- "deno_npm 0.28.0",
+ "deno_npm 0.29.0",
  "deno_npm_cache",
  "deno_package_json",
  "deno_path_util",
@@ -2149,7 +2149,7 @@ dependencies = [
  "deno_fs",
  "deno_media_type",
  "deno_node",
- "deno_npm 0.28.0",
+ "deno_npm 0.29.0",
  "deno_path_util",
  "deno_resolver",
  "deno_runtime",
@@ -2384,9 +2384,9 @@ dependencies = [
 
 [[package]]
 name = "deno_npm"
-version = "0.28.0"
+version = "0.29.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43418480889ca9de951229b9d09a9b75d2581ed9645643036207977b966246aa"
+checksum = "e9391c57ce81d58e83ef4b2e45d001a2674a758a1c914e8562512c147257bc6d"
 dependencies = [
  "async-trait",
  "capacity_builder 0.5.0",
@@ -2411,7 +2411,7 @@ dependencies = [
  "boxed_error",
  "deno_cache_dir",
  "deno_error",
- "deno_npm 0.28.0",
+ "deno_npm 0.29.0",
  "deno_path_util",
  "deno_semver",
  "deno_unsync",
@@ -2562,7 +2562,7 @@ dependencies = [
  "deno_config",
  "deno_error",
  "deno_media_type",
- "deno_npm 0.28.0",
+ "deno_npm 0.29.0",
  "deno_package_json",
  "deno_path_util",
  "deno_semver",
@@ -2966,7 +2966,7 @@ dependencies = [
  "deno_error",
  "deno_lib",
  "deno_media_type",
- "deno_npm 0.28.0",
+ "deno_npm 0.29.0",
  "deno_package_json",
  "deno_path_util",
  "deno_resolver",
diff --git a/Cargo.toml b/Cargo.toml
index 42bf50fab373ea..199bfdacd07e1a 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -60,7 +60,7 @@ deno_graph = "=0.89.2"
 deno_lint = "=0.74.0"
 deno_lockfile = "=0.25.0"
 deno_media_type = { version = "=0.2.8", features = ["module_specifier"] }
-deno_npm = "=0.28.0"
+deno_npm = "=0.29.0"
 deno_path_util = "=0.3.2"
 deno_permissions = { version = "0.55.0", path = "./runtime/permissions" }
 deno_runtime = { version = "0.204.0", path = "./runtime" }

From 208992ad53a3fe0e8650b2812f10613ecbfb2b55 Mon Sep 17 00:00:00 2001
From: c00kie17 <anshul1708@gmail.com>
Date: Sat, 22 Mar 2025 07:52:22 +0530
Subject: [PATCH 114/115] fix(ext/node): sqlite error details (#28431)

Improves SQLite error reporting by including `err_code`, `err_str`,
matching Node.js behavior.

Fixes #28289
---
 ext/node/ops/sqlite/database.rs  |  10 +--
 ext/node/ops/sqlite/mod.rs       | 102 +++++++++++++++++++++++++++++++
 ext/node/ops/sqlite/session.rs   |  42 ++++++++++---
 ext/node/ops/sqlite/statement.rs |  75 ++++++++++++++++++++---
 4 files changed, 209 insertions(+), 20 deletions(-)

diff --git a/ext/node/ops/sqlite/database.rs b/ext/node/ops/sqlite/database.rs
index a698afe9195e47..f25a9158d0b95d 100644
--- a/ext/node/ops/sqlite/database.rs
+++ b/ext/node/ops/sqlite/database.rs
@@ -23,7 +23,7 @@ use super::session::SessionOptions;
 use super::Session;
 use super::SqliteError;
 use super::StatementSync;
-
+use crate::ops::sqlite::SqliteResultExt;
 const SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION: i32 = 1005;
 const SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE: i32 = 1021;
 
@@ -173,7 +173,8 @@ impl DatabaseSync {
       let db = open_db(state, options.read_only, &location)?;
 
       if options.enable_foreign_key_constraints {
-        db.execute("PRAGMA foreign_keys = ON", [])?;
+        db.execute("PRAGMA foreign_keys = ON", [])
+          .with_enhanced_errors(&db)?;
       }
       Some(db)
     } else {
@@ -200,7 +201,8 @@ impl DatabaseSync {
 
     let db = open_db(state, self.options.read_only, &self.location)?;
     if self.options.enable_foreign_key_constraints {
-      db.execute("PRAGMA foreign_keys = ON", [])?;
+      db.execute("PRAGMA foreign_keys = ON", [])
+        .with_enhanced_errors(&db)?;
     }
 
     *self.conn.borrow_mut() = Some(db);
@@ -229,7 +231,7 @@ impl DatabaseSync {
     let db = self.conn.borrow();
     let db = db.as_ref().ok_or(SqliteError::InUse)?;
 
-    db.execute_batch(sql)?;
+    db.execute_batch(sql).with_enhanced_errors(db)?;
 
     Ok(())
   }
diff --git a/ext/node/ops/sqlite/mod.rs b/ext/node/ops/sqlite/mod.rs
index 771dd24c318299..7e8586f156a81e 100644
--- a/ext/node/ops/sqlite/mod.rs
+++ b/ext/node/ops/sqlite/mod.rs
@@ -5,6 +5,7 @@ mod session;
 mod statement;
 
 pub use database::DatabaseSync;
+use rusqlite::ffi as libsqlite3_sys;
 pub use session::Session;
 pub use statement::StatementSync;
 
@@ -65,3 +66,104 @@ pub enum SqliteError {
   #[error("Invalid callback: {0}")]
   InvalidCallback(&'static str),
 }
+
+pub trait SqliteResultExt<T> {
+  fn with_enhanced_errors(
+    self,
+    db: &rusqlite::Connection,
+  ) -> Result<T, SqliteError>;
+}
+
+impl<T> SqliteResultExt<T> for Result<T, rusqlite::Error> {
+  fn with_enhanced_errors(
+    self,
+    db: &rusqlite::Connection,
+  ) -> Result<T, SqliteError> {
+    match self {
+      Ok(value) => Ok(value),
+      Err(error) => {
+        // SAFETY: lifetime of the connection is guaranteed by the rusqlite API.
+        let handle = unsafe { db.handle() };
+        // SAFETY: error conversion does not perform additional dereferencing beyond what is documented.
+        Err(unsafe { SqliteError::from_rusqlite_with_details(error, handle) })
+      }
+    }
+  }
+}
+
+impl SqliteError {
+  pub const ERROR_CODE_GENERIC: i32 = 1;
+
+  pub const ERROR_STR_UNKNOWN: &str = "unknown error";
+
+  pub fn create_enhanced_error<T>(
+    extended_code: i32,
+    message: &str,
+    db_handle: Option<*mut libsqlite3_sys::sqlite3>,
+  ) -> Result<T, Self> {
+    let rusqlite_error = rusqlite::Error::SqliteFailure(
+      rusqlite::ffi::Error {
+        code: rusqlite::ErrorCode::Unknown,
+        extended_code,
+      },
+      Some(message.to_string()),
+    );
+
+    let handle = db_handle.unwrap_or(std::ptr::null_mut());
+    // SAFETY: error conversion does not perform additional dereferencing beyond what is documented.
+    Err(unsafe {
+      SqliteError::from_rusqlite_with_details(rusqlite_error, handle)
+    })
+  }
+
+  /// Creates a `SqliteError` from a rusqlite error and a raw SQLite handle.
+  ///
+  /// # Safety
+  ///
+  /// Caller must ensure `handle` is non-null and points to a valid, initialized sqlite3 instance.
+  pub unsafe fn from_rusqlite_with_details(
+    error: rusqlite::Error,
+    handle: *mut libsqlite3_sys::sqlite3,
+  ) -> Self {
+    let message = error.to_string();
+
+    let err_code = match &error {
+      rusqlite::Error::SqliteFailure(ffi_error, _) => ffi_error.code as i32,
+      _ => {
+        if !handle.is_null() {
+          // SAFETY: We've verified that handle is not null in the previous condition.
+          unsafe { libsqlite3_sys::sqlite3_errcode(handle) }
+        } else {
+          Self::ERROR_CODE_GENERIC
+        }
+      }
+    };
+
+    // SAFETY: We're using sqlite3_errstr which returns a static string.
+    let err_str = unsafe {
+      let ptr = libsqlite3_sys::sqlite3_errstr(err_code);
+      if !ptr.is_null() {
+        std::ffi::CStr::from_ptr(ptr).to_string_lossy().into_owned()
+      } else {
+        Self::ERROR_STR_UNKNOWN.to_string()
+      }
+    };
+
+    let encoded_message = format!(
+      "{}\n  {{\n  code: 'ERR_SQLITE_ERROR',\n  errcode: {},\n  errstr: '{}'\n}}",
+      message,
+      err_code,
+      err_str
+    );
+
+    let custom_error = rusqlite::Error::SqliteFailure(
+      rusqlite::ffi::Error {
+        code: rusqlite::ErrorCode::Unknown,
+        extended_code: err_code,
+      },
+      Some(encoded_message),
+    );
+
+    SqliteError::SqliteError(custom_error)
+  }
+}
diff --git a/ext/node/ops/sqlite/session.rs b/ext/node/ops/sqlite/session.rs
index 4b048704ae6d3a..a999ec413c3cb8 100644
--- a/ext/node/ops/sqlite/session.rs
+++ b/ext/node/ops/sqlite/session.rs
@@ -38,7 +38,11 @@ impl Drop for Session {
 impl Session {
   fn delete(&self) -> Result<(), SqliteError> {
     if self.freed.get() {
-      return Err(SqliteError::SessionClosed);
+      return SqliteError::create_enhanced_error(
+        ffi::SQLITE_MISUSE,
+        &SqliteError::SessionClosed.to_string(),
+        None,
+      );
     }
 
     self.freed.set(true);
@@ -58,7 +62,11 @@ impl Session {
   #[fast]
   fn close(&self) -> Result<(), SqliteError> {
     if self.db.borrow().is_none() {
-      return Err(SqliteError::AlreadyClosed);
+      return SqliteError::create_enhanced_error(
+        ffi::SQLITE_MISUSE,
+        &SqliteError::AlreadyClosed.to_string(),
+        None,
+      );
     }
 
     self.delete()
@@ -71,10 +79,18 @@ impl Session {
   #[buffer]
   fn changeset(&self) -> Result<Box<[u8]>, SqliteError> {
     if self.db.borrow().is_none() {
-      return Err(SqliteError::AlreadyClosed);
+      return SqliteError::create_enhanced_error(
+        ffi::SQLITE_MISUSE,
+        &SqliteError::AlreadyClosed.to_string(),
+        None,
+      );
     }
     if self.freed.get() {
-      return Err(SqliteError::SessionClosed);
+      return SqliteError::create_enhanced_error(
+        ffi::SQLITE_MISUSE,
+        &SqliteError::SessionClosed.to_string(),
+        None,
+      );
     }
 
     session_buffer_op(self.inner, ffi::sqlite3session_changeset)
@@ -86,10 +102,18 @@ impl Session {
   #[buffer]
   fn patchset(&self) -> Result<Box<[u8]>, SqliteError> {
     if self.db.borrow().is_none() {
-      return Err(SqliteError::AlreadyClosed);
+      return SqliteError::create_enhanced_error(
+        ffi::SQLITE_MISUSE,
+        &SqliteError::AlreadyClosed.to_string(),
+        None,
+      );
     }
     if self.freed.get() {
-      return Err(SqliteError::SessionClosed);
+      return SqliteError::create_enhanced_error(
+        ffi::SQLITE_MISUSE,
+        &SqliteError::SessionClosed.to_string(),
+        None,
+      );
     }
 
     session_buffer_op(self.inner, ffi::sqlite3session_patchset)
@@ -111,7 +135,11 @@ fn session_buffer_op(
   // by sqlite3 and will be freed later.
   let r = unsafe { f(s, &mut n_buffer, &mut p_buffer) };
   if r != ffi::SQLITE_OK {
-    return Err(SqliteError::SessionChangesetFailed);
+    return SqliteError::create_enhanced_error(
+      r,
+      &SqliteError::SessionChangesetFailed.to_string(),
+      None,
+    );
   }
 
   if n_buffer == 0 {
diff --git a/ext/node/ops/sqlite/statement.rs b/ext/node/ops/sqlite/statement.rs
index 64f2b21d53097a..5defb17df104db 100644
--- a/ext/node/ops/sqlite/statement.rs
+++ b/ext/node/ops/sqlite/statement.rs
@@ -142,7 +142,17 @@ impl StatementSync {
           } else if value.abs() <= MAX_SAFE_JS_INTEGER {
             v8::Number::new(scope, value as f64).into()
           } else {
-            return Err(SqliteError::NumberTooLarge(index, value));
+            let db = self.db.borrow();
+            let db = db.as_ref().ok_or(SqliteError::InUse)?;
+            let handle = db.handle();
+
+            return SqliteError::create_enhanced_error::<
+              v8::Local<'a, v8::Value>,
+            >(
+              ffi::SQLITE_TOOBIG,
+              &SqliteError::NumberTooLarge(index, value).to_string(),
+              Some(handle),
+            );
           }
         }
         ffi::SQLITE_FLOAT => {
@@ -265,16 +275,33 @@ impl StatementSync {
       let value: v8::Local<v8::BigInt> = value.try_into().unwrap();
       let (as_int, lossless) = value.i64_value();
       if !lossless {
-        return Err(SqliteError::FailedBind(
-          "BigInt value is too large to bind",
-        ));
+        let db = self.db.borrow();
+        let db = db.as_ref().ok_or(SqliteError::InUse)?;
+        // SAFETY: lifetime of the connection is guaranteed by the rusqlite API.
+        let handle = unsafe { db.handle() };
+
+        return SqliteError::create_enhanced_error(
+          ffi::SQLITE_TOOBIG,
+          &SqliteError::FailedBind("BigInt value is too large to bind")
+            .to_string(),
+          Some(handle),
+        );
       }
 
       // SAFETY: `self.inner` is a valid pointer to a sqlite3_stmt
       // as it lives as long as the StatementSync instance.
       unsafe { ffi::sqlite3_bind_int64(raw, index, as_int) }
     } else {
-      return Err(SqliteError::FailedBind("Unsupported type"));
+      let db = self.db.borrow();
+      let db = db.as_ref().ok_or(SqliteError::InUse)?;
+      // SAFETY: lifetime of the connection is guaranteed by the rusqlite API.
+      let handle = unsafe { db.handle() };
+
+      return SqliteError::create_enhanced_error(
+        ffi::SQLITE_MISMATCH,
+        &SqliteError::FailedBind("Unsupported type").to_string(),
+        Some(handle),
+      );
     };
 
     self.check_error_code(r)
@@ -284,6 +311,8 @@ impl StatementSync {
     if r != ffi::SQLITE_OK {
       let db = self.db.borrow();
       let db = db.as_ref().ok_or(SqliteError::InUse)?;
+      // SAFETY: lifetime of the connection is guaranteed by the rusqlite API.
+      let handle = unsafe { db.handle() };
 
       // SAFETY: lifetime of the connection is guaranteed by reference
       // counting.
@@ -294,7 +323,7 @@ impl StatementSync {
         let err_str = unsafe { std::ffi::CStr::from_ptr(err_str) }
           .to_string_lossy()
           .into_owned();
-        return Err(SqliteError::SqliteSysError(err_str));
+        return SqliteError::create_enhanced_error(r, &err_str, Some(handle));
       }
     }
 
@@ -337,7 +366,17 @@ impl StatementSync {
 
             let e = bare_named_params.insert(bare_name, i);
             if e.is_some() {
-              return Err(SqliteError::FailedBind("Duplicate named parameter"));
+              let db = self.db.borrow();
+              let db = db.as_ref().ok_or(SqliteError::InUse)?;
+              // SAFETY: lifetime of the connection is guaranteed by the rusqlite API.
+              let handle = unsafe { db.handle() };
+
+              return SqliteError::create_enhanced_error(
+                ffi::SQLITE_ERROR,
+                &SqliteError::FailedBind("Duplicate named parameter")
+                  .to_string(),
+                Some(handle),
+              );
             }
           }
         }
@@ -359,7 +398,17 @@ impl StatementSync {
             }
 
             if r == 0 {
-              return Err(SqliteError::FailedBind("Named parameter not found"));
+              let db = self.db.borrow();
+              let db = db.as_ref().ok_or(SqliteError::InUse)?;
+              // SAFETY: lifetime of the connection is guaranteed by the rusqlite API.
+              let handle = unsafe { db.handle() };
+
+              return SqliteError::create_enhanced_error(
+                ffi::SQLITE_RANGE,
+                &SqliteError::FailedBind("Named parameter not found")
+                  .to_string(),
+                Some(handle),
+              );
             }
           }
 
@@ -653,7 +702,15 @@ impl StatementSync {
     unsafe {
       let raw = ffi::sqlite3_expanded_sql(self.inner);
       if raw.is_null() {
-        return Err(SqliteError::InvalidExpandedSql);
+        let db = self.db.borrow();
+        let db = db.as_ref().ok_or(SqliteError::InUse)?;
+        let handle = db.handle();
+
+        return SqliteError::create_enhanced_error(
+          ffi::SQLITE_ERROR,
+          &SqliteError::InvalidExpandedSql.to_string(),
+          Some(handle),
+        );
       }
       let sql = std::ffi::CStr::from_ptr(raw as _)
         .to_string_lossy()

From 48ccb671316dd2d69d120b2c6a287f905c1f4275 Mon Sep 17 00:00:00 2001
From: Divy Srivastava <dj.srivastava23@gmail.com>
Date: Sat, 22 Mar 2025 08:13:57 +0530
Subject: [PATCH 115/115] chore(ext/http): add "legacy_abort" runtime flag
 (#28371)

Deno.serve `Request` abort signals are aborted by default even when it
is finished successfully. This PR gates this behavior behind the
"legacy_abort" which is the default right now.

Turning the `no_legacy_abort` runtime option on is a **breaking change**
and will only abort request signals when there is a failure, thereby
cannot be used to determine if the request finished. This aligns with
`fetch` API.

Ref https://github.com/denoland/deno/issues/27005
---
 cli/args/flags.rs           |  7 +++++++
 cli/args/mod.rs             |  4 ++++
 cli/factory.rs              |  3 ++-
 cli/lib/worker.rs           |  3 +++
 cli/rt/run.rs               |  1 +
 ext/http/00_serve.ts        | 18 +++++++++++++++---
 ext/http/http_next.rs       | 28 ++++++++++++++++++++++------
 ext/http/lib.rs             |  3 +++
 ext/http/service.rs         | 20 +++++++++++++++++---
 runtime/lib.rs              |  6 ++++++
 runtime/web_worker.rs       |  5 ++++-
 runtime/worker.rs           |  5 ++++-
 runtime/worker_bootstrap.rs |  2 ++
 tests/unit/serve_test.ts    |  2 ++
 14 files changed, 92 insertions(+), 15 deletions(-)

diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index d651d5db3d09d8..53424812731a2d 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -924,6 +924,13 @@ impl Flags {
     args
   }
 
+  pub fn no_legacy_abort(&self) -> bool {
+    self
+      .unstable_config
+      .features
+      .contains(&String::from("no-legacy-abort"))
+  }
+
   pub fn otel_config(&self) -> OtelConfig {
     let has_unstable_flag = self
       .unstable_config
diff --git a/cli/args/mod.rs b/cli/args/mod.rs
index fb6b783fd58357..407651a80bb983 100644
--- a/cli/args/mod.rs
+++ b/cli/args/mod.rs
@@ -607,6 +607,10 @@ impl CliOptions {
     self.flags.otel_config()
   }
 
+  pub fn no_legacy_abort(&self) -> bool {
+    self.flags.no_legacy_abort()
+  }
+
   pub fn env_file_name(&self) -> Option<&Vec<String>> {
     self.flags.env_file.as_ref()
   }
diff --git a/cli/factory.rs b/cli/factory.rs
index d219030ccd70b3..9c644a07d193cb 100644
--- a/cli/factory.rs
+++ b/cli/factory.rs
@@ -1306,7 +1306,8 @@ impl CliFactory {
       node_ipc: cli_options.node_ipc_fd(),
       serve_port: cli_options.serve_port(),
       serve_host: cli_options.serve_host(),
-      otel_config: self.cli_options()?.otel_config(),
+      otel_config: cli_options.otel_config(),
+      no_legacy_abort: cli_options.no_legacy_abort(),
       startup_snapshot: deno_snapshots::CLI_SNAPSHOT,
     })
   }
diff --git a/cli/lib/worker.rs b/cli/lib/worker.rs
index 4528a2161f5f3f..4ec0b9b1439914 100644
--- a/cli/lib/worker.rs
+++ b/cli/lib/worker.rs
@@ -181,6 +181,7 @@ pub struct LibMainWorkerOptions {
   pub unsafely_ignore_certificate_errors: Option<Vec<String>>,
   pub skip_op_registration: bool,
   pub node_ipc: Option<i64>,
+  pub no_legacy_abort: bool,
   pub startup_snapshot: Option<&'static [u8]>,
   pub serve_port: Option<u16>,
   pub serve_host: Option<String>,
@@ -314,6 +315,7 @@ impl<TSys: DenoLibSys> LibWorkerFactorySharedState<TSys> {
           serve_port: shared.options.serve_port,
           serve_host: shared.options.serve_host.clone(),
           otel_config: shared.options.otel_config.clone(),
+          no_legacy_abort: shared.options.no_legacy_abort,
           close_on_idle: args.close_on_idle,
         },
         extensions: vec![],
@@ -480,6 +482,7 @@ impl<TSys: DenoLibSys> LibMainWorkerFactory<TSys> {
         node_debug: shared.options.node_debug.clone(),
         node_ipc_fd: shared.options.node_ipc,
         mode,
+        no_legacy_abort: shared.options.no_legacy_abort,
         serve_port: shared.options.serve_port,
         serve_host: shared.options.serve_host.clone(),
         otel_config: shared.options.otel_config.clone(),
diff --git a/cli/rt/run.rs b/cli/rt/run.rs
index a0e9669526a5db..e6592e36a06259 100644
--- a/cli/rt/run.rs
+++ b/cli/rt/run.rs
@@ -964,6 +964,7 @@ pub async fn run(
     serve_port: None,
     serve_host: None,
     otel_config: metadata.otel_config,
+    no_legacy_abort: false,
     startup_snapshot: deno_snapshots::CLI_SNAPSHOT,
   };
   let worker_factory = LibMainWorkerFactory::new(
diff --git a/ext/http/00_serve.ts b/ext/http/00_serve.ts
index 16feab0829bfc2..c5394b458b1457 100644
--- a/ext/http/00_serve.ts
+++ b/ext/http/00_serve.ts
@@ -179,12 +179,17 @@ class InnerRequest {
       if (success) {
         this.#completed.resolve(undefined);
       } else {
+        if (!this.#context.legacyAbort) {
+          abortRequest(this.request);
+        }
         this.#completed.reject(
           new Interrupted("HTTP response was not sent successfully"),
         );
       }
     }
-    abortRequest(this.request);
+    if (this.#context.legacyAbort) {
+      abortRequest(this.request);
+    }
     this.#external = null;
   }
 
@@ -414,11 +419,16 @@ class InnerRequest {
 
   onCancel(callback) {
     if (this.#external === null) {
-      callback();
+      if (this.#context.legacyAbort) callback();
       return;
     }
 
-    PromisePrototypeThen(op_http_request_on_cancel(this.#external), callback);
+    PromisePrototypeThen(
+      op_http_request_on_cancel(this.#external),
+      (r) => {
+        return !this.#context.legacyAbort ? r && callback() : callback();
+      },
+    );
   }
 }
 
@@ -432,6 +442,7 @@ class CallbackContext {
   closing;
   listener;
   asyncContextSnapshot;
+  legacyAbort;
 
   constructor(signal, args, listener) {
     this.asyncContextSnapshot = currentSnapshot();
@@ -447,6 +458,7 @@ class CallbackContext {
     this.serverRid = args[0];
     this.scheme = args[1];
     this.fallbackHost = args[2];
+    this.legacyAbort = args[3] == false;
     this.closed = false;
     this.listener = listener;
   }
diff --git a/ext/http/http_next.rs b/ext/http/http_next.rs
index 12813e42ac7ede..471dae760d36c4 100644
--- a/ext/http/http_next.rs
+++ b/ext/http/http_next.rs
@@ -741,7 +741,7 @@ pub fn op_http_get_request_cancelled(external: *const c_void) -> bool {
 }
 
 #[op2(async)]
-pub async fn op_http_request_on_cancel(external: *const c_void) {
+pub async fn op_http_request_on_cancel(external: *const c_void) -> bool {
   let http =
     // SAFETY: op is called with external.
     unsafe { clone_external!(external, "op_http_request_on_cancel") };
@@ -750,7 +750,7 @@ pub async fn op_http_request_on_cancel(external: *const c_void) {
   http.on_cancel(tx);
   drop(http);
 
-  rx.await.ok();
+  rx.await.is_ok()
 }
 
 /// Returned promise resolves when body streaming finishes.
@@ -928,8 +928,15 @@ fn serve_https(
     listen_cancel_handle,
   } = lifetime;
 
+  let legacy_abort = !options.no_legacy_abort;
   let svc = service_fn(move |req: Request| {
-    handle_request(req, request_info.clone(), server_state.clone(), tx.clone())
+    handle_request(
+      req,
+      request_info.clone(),
+      server_state.clone(),
+      tx.clone(),
+      legacy_abort,
+    )
   });
   spawn(
     async move {
@@ -976,8 +983,15 @@ fn serve_http(
     listen_cancel_handle,
   } = lifetime;
 
+  let legacy_abort = !options.no_legacy_abort;
   let svc = service_fn(move |req: Request| {
-    handle_request(req, request_info.clone(), server_state.clone(), tx.clone())
+    handle_request(
+      req,
+      request_info.clone(),
+      server_state.clone(),
+      tx.clone(),
+      legacy_abort,
+    )
   });
   spawn(
     serve_http2_autodetect(io, svc, listen_cancel_handle, options)
@@ -1082,7 +1096,7 @@ impl Drop for HttpJoinHandle {
 pub fn op_http_serve<HTTP>(
   state: Rc<RefCell<OpState>>,
   #[smi] listener_rid: ResourceId,
-) -> Result<(ResourceId, &'static str, String), HttpNextError>
+) -> Result<(ResourceId, &'static str, String, bool), HttpNextError>
 where
   HTTP: HttpPropertyExtractor,
 {
@@ -1129,6 +1143,7 @@ where
     state.borrow_mut().resource_table.add_rc(resource),
     listen_properties.scheme,
     listen_properties.fallback_host,
+    options.no_legacy_abort,
   ))
 }
 
@@ -1137,7 +1152,7 @@ where
 pub fn op_http_serve_on<HTTP>(
   state: Rc<RefCell<OpState>>,
   #[smi] connection_rid: ResourceId,
-) -> Result<(ResourceId, &'static str, String), HttpNextError>
+) -> Result<(ResourceId, &'static str, String, bool), HttpNextError>
 where
   HTTP: HttpPropertyExtractor,
 {
@@ -1171,6 +1186,7 @@ where
     state.borrow_mut().resource_table.add_rc(resource),
     listen_properties.scheme,
     listen_properties.fallback_host,
+    options.no_legacy_abort,
   ))
 }
 
diff --git a/ext/http/lib.rs b/ext/http/lib.rs
index 4f4c83d8ef8046..143d2b08cec6b8 100644
--- a/ext/http/lib.rs
+++ b/ext/http/lib.rs
@@ -131,6 +131,9 @@ pub struct Options {
   /// If `None`, the default configuration provided by hyper will be used. Note
   /// that the default configuration is subject to change in future versions.
   pub http1_builder_hook: Option<fn(http1::Builder) -> http1::Builder>,
+
+  /// If `false`, the server will abort the request when the response is dropped.
+  pub no_legacy_abort: bool,
 }
 
 #[cfg(not(feature = "default_property_extractor"))]
diff --git a/ext/http/service.rs b/ext/http/service.rs
index 1a11ab26e59418..ee4378474517f5 100644
--- a/ext/http/service.rs
+++ b/ext/http/service.rs
@@ -187,6 +187,7 @@ pub(crate) async fn handle_request(
   request_info: HttpConnectionProperties,
   server_state: SignallingRc<HttpServerState>, // Keep server alive for duration of this future.
   tx: tokio::sync::mpsc::Sender<Rc<HttpRecord>>,
+  legacy_abort: bool,
 ) -> Result<Response, hyper_v014::Error> {
   let otel_info = if let Some(otel) = deno_telemetry::OTEL_GLOBALS
     .get()
@@ -223,7 +224,13 @@ pub(crate) async fn handle_request(
   // The HttpRecord must live until JavaScript is done processing so is wrapped
   // in an Rc. The guard ensures unneeded resources are freed at cancellation.
   let guarded_record = guard(
-    HttpRecord::new(request, request_info, server_state, otel_info),
+    HttpRecord::new(
+      request,
+      request_info,
+      server_state,
+      otel_info,
+      legacy_abort,
+    ),
     HttpRecord::cancel,
   );
 
@@ -262,6 +269,7 @@ struct HttpRecordInner {
   been_dropped: bool,
   finished: bool,
   needs_close_after_finish: bool,
+  legacy_abort: bool,
   otel_info: Option<OtelInfo>,
 }
 
@@ -284,6 +292,7 @@ impl HttpRecord {
     request_info: HttpConnectionProperties,
     server_state: SignallingRc<HttpServerState>,
     otel_info: Option<OtelInfo>,
+    legacy_abort: bool,
   ) -> Rc<Self> {
     let (request_parts, request_body) = request.into_parts();
     let request_body = Some(request_body.into());
@@ -319,6 +328,7 @@ impl HttpRecord {
       closed_channel: None,
       been_dropped: false,
       finished: false,
+      legacy_abort,
       needs_close_after_finish: false,
       otel_info,
     });
@@ -436,8 +446,11 @@ impl HttpRecord {
     inner.been_dropped = true;
     // The request body might include actual resources.
     inner.request_body.take();
-    if let Some(closed_channel) = inner.closed_channel.take() {
-      let _ = closed_channel.send(());
+
+    if inner.legacy_abort || !inner.response_body_finished {
+      if let Some(closed_channel) = inner.closed_channel.take() {
+        let _ = closed_channel.send(());
+      }
     }
   }
 
@@ -737,6 +750,7 @@ mod tests {
         request_info.clone(),
         server_state.clone(),
         tx.clone(),
+        true,
       )
     });
 
diff --git a/runtime/lib.rs b/runtime/lib.rs
index 77967865a5b5bf..b5d25258a2dcdc 100644
--- a/runtime/lib.rs
+++ b/runtime/lib.rs
@@ -106,6 +106,12 @@ pub static UNSTABLE_GRANULAR_FLAGS: &[UnstableGranularFlag] = &[
     show_in_help: true,
     id: 7,
   },
+  UnstableGranularFlag {
+    name: "no-legacy-abort",
+    help_text: "Enable abort signal in Deno.serve without legacy behavior. This will not abort the server when the request is handled successfully.",
+    show_in_help: true,
+    id: 13,
+  },
   UnstableGranularFlag {
     name: "node-globals",
     help_text: "Expose Node globals everywhere",
diff --git a/runtime/web_worker.rs b/runtime/web_worker.rs
index 90df0e7cfc5e1f..41332f9092cbc2 100644
--- a/runtime/web_worker.rs
+++ b/runtime/web_worker.rs
@@ -548,7 +548,10 @@ impl WebWorker {
       ),
       deno_cron::deno_cron::init_ops_and_esm(LocalCronHandler::new()),
       deno_napi::deno_napi::init_ops_and_esm::<PermissionsContainer>(),
-      deno_http::deno_http::init_ops_and_esm(deno_http::Options::default()),
+      deno_http::deno_http::init_ops_and_esm(deno_http::Options {
+        no_legacy_abort: options.bootstrap.no_legacy_abort,
+        ..Default::default()
+      }),
       deno_io::deno_io::init_ops_and_esm(Some(options.stdio)),
       deno_fs::deno_fs::init_ops_and_esm::<PermissionsContainer>(
         services.fs.clone(),
diff --git a/runtime/worker.rs b/runtime/worker.rs
index d38b901fe5ce78..bcdb7267dc9223 100644
--- a/runtime/worker.rs
+++ b/runtime/worker.rs
@@ -448,7 +448,10 @@ impl MainWorker {
       ),
       deno_cron::deno_cron::init_ops_and_esm(LocalCronHandler::new()),
       deno_napi::deno_napi::init_ops_and_esm::<PermissionsContainer>(),
-      deno_http::deno_http::init_ops_and_esm(deno_http::Options::default()),
+      deno_http::deno_http::init_ops_and_esm(deno_http::Options {
+        no_legacy_abort: options.bootstrap.no_legacy_abort,
+        ..Default::default()
+      }),
       deno_io::deno_io::init_ops_and_esm(Some(options.stdio)),
       deno_fs::deno_fs::init_ops_and_esm::<PermissionsContainer>(
         services.fs.clone(),
diff --git a/runtime/worker_bootstrap.rs b/runtime/worker_bootstrap.rs
index dc06ea9808599d..31424da179804e 100644
--- a/runtime/worker_bootstrap.rs
+++ b/runtime/worker_bootstrap.rs
@@ -112,6 +112,7 @@ pub struct BootstrapOptions {
   pub node_debug: Option<String>,
   pub node_ipc_fd: Option<i64>,
   pub mode: WorkerExecutionMode,
+  pub no_legacy_abort: bool,
   // Used by `deno serve`
   pub serve_port: Option<u16>,
   pub serve_host: Option<String>,
@@ -148,6 +149,7 @@ impl Default for BootstrapOptions {
       node_debug: None,
       node_ipc_fd: None,
       mode: WorkerExecutionMode::None,
+      no_legacy_abort: false,
       serve_port: Default::default(),
       serve_host: Default::default(),
       otel_config: Default::default(),
diff --git a/tests/unit/serve_test.ts b/tests/unit/serve_test.ts
index 21f68ed973e35b..c88bf9af620704 100644
--- a/tests/unit/serve_test.ts
+++ b/tests/unit/serve_test.ts
@@ -2969,6 +2969,8 @@ for (const delay of ["delay", "nodelay"]) {
   }
 }
 
+// NOTE: This test will start failing when we disable "deno_http/legacy_abort" feature.
+//
 // Test for the internal implementation detail of cached request signals. Ensure that the request's
 // signal is aborted if we try to access it after the request has been completed.
 Deno.test(