Browse Source

chore: bump node to v20.18.0 (33-x-y) (#44118)

* chore: bump node in DEPS to v20.18.0

* chore: update patches

(cherry picked from commit b108b649c263302590cbea83f90e27e371623799)

* src: improve buffer.transcode performance

https://github.com/nodejs/node/pull/54153
(cherry picked from commit 669984dafcb698716fc02a03e4cf027767a6ec59)

* chore: update patches

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <[email protected]>
electron-roller[bot] 6 months ago
parent
commit
9469efb4c9
34 changed files with 226 additions and 257 deletions
  1. 1 1
      DEPS
  2. 3 3
      patches/chromium/build_do_not_depend_on_packed_resource_integrity.patch
  3. 2 2
      patches/chromium/can_create_window.patch
  4. 1 1
      patches/chromium/mas_avoid_private_macos_api_usage.patch.patch
  5. 2 2
      patches/chromium/partially_revert_is_newly_created_to_allow_for_browser_initiated.patch
  6. 2 2
      patches/chromium/webview_fullscreen.patch
  7. 0 2
      patches/node/.patches
  8. 83 70
      patches/node/build_add_gn_build_files.patch
  9. 4 4
      patches/node/build_compile_with_c_20_support.patch
  10. 3 3
      patches/node/build_enable_perfetto.patch
  11. 6 6
      patches/node/build_ensure_native_module_compilation_fails_if_not_using_a_new.patch
  12. 12 12
      patches/node/cherry-pick_src_remove_calls_to_recently_deprecated_v8_apis.patch
  13. 2 2
      patches/node/chore_allow_the_node_entrypoint_to_be_a_builtin_module.patch
  14. 1 1
      patches/node/chore_remove_--no-harmony-atomics_related_code.patch
  15. 0 24
      patches/node/chore_remove_calls_to_v8_functioncallbackinfo_holder.patch
  16. 2 2
      patches/node/chore_remove_use_of_deprecated_kmaxlength.patch
  17. 2 2
      patches/node/fix_add_default_values_for_variables_in_common_gypi.patch
  18. 15 15
      patches/node/fix_add_property_query_interceptors.patch
  19. 11 11
      patches/node/fix_assert_module_in_the_renderer_process.patch
  20. 5 5
      patches/node/fix_capture_embedder_exceptions_before_entering_v8.patch
  21. 1 1
      patches/node/fix_crypto_tests_to_run_with_bssl.patch
  22. 4 4
      patches/node/fix_expose_the_built-in_electron_module_via_the_esm_loader.patch
  23. 2 2
      patches/node/fix_expose_tracing_agent_and_use_tracing_tracingcontroller_instead.patch
  24. 9 9
      patches/node/fix_handle_boringssl_and_openssl_incompatibilities.patch
  25. 1 1
      patches/node/fix_revert_src_lb_reducing_c_calls_of_esm_legacy_main_resolve.patch
  26. 1 1
      patches/node/spec_add_iterator_to_global_intrinsics.patch
  27. 0 45
      patches/node/src_account_for_openssl_unexpected_version.patch
  28. 2 2
      patches/node/src_do_not_use_deprecated_v8_api.patch
  29. 6 6
      patches/node/src_remove_dependency_on_wrapper-descriptor-based_cppheap.patch
  30. 1 1
      patches/node/src_stop_using_deprecated_fields_of_fastapicallbackoptions.patch
  31. 1 1
      patches/node/src_use_new_v8_api_to_define_stream_accessor.patch
  32. 37 10
      patches/node/support_v8_sandboxed_pointers.patch
  33. 2 2
      patches/node/test_formally_mark_some_tests_as_flaky.patch
  34. 2 2
      patches/node/test_match_wpt_streams_transferable_transform-stream-members_any_js.patch

+ 1 - 1
DEPS

@@ -4,7 +4,7 @@ vars = {
   'chromium_version':
     '130.0.6723.31',
   'node_version':
-    'v20.17.0',
+    'v20.18.0',
   'nan_version':
     'e14bdcd1f72d62bca1d541b66da43130384ec213',
   'squirrel.mac_version':

+ 3 - 3
patches/chromium/build_do_not_depend_on_packed_resource_integrity.patch

@@ -33,10 +33,10 @@ index ad7aef003b233245201937c58be12fa3acb6b1a4..275eb74983e684310753dabcd453e5a2
            "//base",
            "//build:branding_buildflags",
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
-index dd5c9db43d693fb9df7b5a0d661b4e8999956c49..2ea0ea1dd6f30e4e3c88ad803314bc5239545c1f 100644
+index 2b66b11333f732ea1ec65474d709b55638696cf3..d2d5eb596db1fc166c0498c2f7a6c15080e5d775 100644
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -4488,7 +4488,7 @@ static_library("browser") {
+@@ -4486,7 +4486,7 @@ static_library("browser") {
        ]
      }
  
@@ -46,7 +46,7 @@ index dd5c9db43d693fb9df7b5a0d661b4e8999956c49..2ea0ea1dd6f30e4e3c88ad803314bc52
        # than here in :chrome_dll.
        deps += [ "//chrome:packed_resources_integrity_header" ]
 diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
-index c79b93b972e244cc3f7bcce039e24bbfe363ed04..2a3b25d5f2dcf80d2e4c462d6cba00583785ca8e 100644
+index 2a55a6189c6a5c399a08edf4659f33f541726093..f8e8fb75e71a265a0cc2b7c57c4f0fd9035c6def 100644
 --- a/chrome/test/BUILD.gn
 +++ b/chrome/test/BUILD.gn
 @@ -7173,9 +7173,12 @@ test("unit_tests") {

+ 2 - 2
patches/chromium/can_create_window.patch

@@ -9,10 +9,10 @@ potentially prevent a window from being created.
 TODO(loc): this patch is currently broken.
 
 diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
-index 2fd13bfb778f31eff97ced7d5e41de30398b0a74..99a54798649942244c2ee51d1d10da8a8a637bfa 100644
+index c2e377d5b1603a2d3c67a61911545ce361d418c2..20fe5301a0120e926d118f8b27ef57621833a5bf 100644
 --- a/content/browser/renderer_host/render_frame_host_impl.cc
 +++ b/content/browser/renderer_host/render_frame_host_impl.cc
-@@ -8945,6 +8945,7 @@ void RenderFrameHostImpl::CreateNewWindow(
+@@ -9040,6 +9040,7 @@ void RenderFrameHostImpl::CreateNewWindow(
            last_committed_origin_, params->window_container_type,
            params->target_url, params->referrer.To<Referrer>(),
            params->frame_name, params->disposition, *params->features,

+ 1 - 1
patches/chromium/mas_avoid_private_macos_api_usage.patch.patch

@@ -1343,7 +1343,7 @@ index 2e24201fcdc1ec65688e2b08d28a74a218792af2..53b399c13c344b72992b9433add202ed
  
      if (is_ios) {
 diff --git a/ui/accessibility/platform/browser_accessibility_manager_mac.mm b/ui/accessibility/platform/browser_accessibility_manager_mac.mm
-index f9bd6478bea53f2b005c2d57b5f1db5313f77595..41a032e34335c554eca40edd74e8c271b3570a08 100644
+index be442f6a2a67d07ec78fe00a3e864bf0088fe504..3a8c8a3900db26b10f2b7735b860d8935d2a6085 100644
 --- a/ui/accessibility/platform/browser_accessibility_manager_mac.mm
 +++ b/ui/accessibility/platform/browser_accessibility_manager_mac.mm
 @@ -19,7 +19,9 @@

+ 2 - 2
patches/chromium/partially_revert_is_newly_created_to_allow_for_browser_initiated.patch

@@ -10,10 +10,10 @@ an about:blank check to this area.
 Ref: https://chromium-review.googlesource.com/c/chromium/src/+/5403876
 
 diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
-index 379da2b28724fb271338f797a116e5c44986c324..1277ee2264131e5da937b4c01f5c259eded2df39 100644
+index 2605701ace806adef40b748f93aebae45144e1be..888e1386d7ed0003bbaabddeefa98d2c25e9adbb 100644
 --- a/content/browser/renderer_host/render_frame_host_impl.cc
 +++ b/content/browser/renderer_host/render_frame_host_impl.cc
-@@ -778,8 +778,8 @@ void VerifyThatBrowserAndRendererCalculatedOriginsToCommitMatch(
+@@ -782,8 +782,8 @@ void VerifyThatBrowserAndRendererCalculatedOriginsToCommitMatch(
    // TODO(crbug.com/40092527): Consider adding a separate boolean that
    // tracks this instead of piggybacking `origin_calculation_debug_info`.
    if (renderer_side_origin.opaque() &&

+ 2 - 2
patches/chromium/webview_fullscreen.patch

@@ -15,10 +15,10 @@ Note that we also need to manually update embedder's
 `api::WebContents::IsFullscreenForTabOrPending` value.
 
 diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
-index 99a54798649942244c2ee51d1d10da8a8a637bfa..379da2b28724fb271338f797a116e5c44986c324 100644
+index 20fe5301a0120e926d118f8b27ef57621833a5bf..2605701ace806adef40b748f93aebae45144e1be 100644
 --- a/content/browser/renderer_host/render_frame_host_impl.cc
 +++ b/content/browser/renderer_host/render_frame_host_impl.cc
-@@ -8060,6 +8060,17 @@ void RenderFrameHostImpl::EnterFullscreen(
+@@ -8155,6 +8155,17 @@ void RenderFrameHostImpl::EnterFullscreen(
      }
    }
  

+ 0 - 2
patches/node/.patches

@@ -45,10 +45,8 @@ src_do_not_use_deprecated_v8_api.patch
 src_use_new_v8_api_to_define_stream_accessor.patch
 src_remove_dependency_on_wrapper-descriptor-based_cppheap.patch
 test_update_v8-stats_test_for_v8_12_6.patch
-chore_remove_calls_to_v8_functioncallbackinfo_holder.patch
 src_do_not_use_soon-to-be-deprecated_v8_api.patch
 fix_add_property_query_interceptors.patch
-src_account_for_openssl_unexpected_version.patch
 src_stop_using_deprecated_fields_of_fastapicallbackoptions.patch
 build_don_t_redefine_win32_lean_and_mean.patch
 src_use_supported_api_to_get_stalled_tla_messages.patch

+ 83 - 70
patches/node/build_add_gn_build_files.patch

@@ -537,10 +537,10 @@ index 0e69d7383762f6b81c5b57698aa9d121d5a9c401..35bbeb37acc7ccb14b4b8a644ec3d4c7
          cflags_c = [
            "-mavx512vl",
 diff --git a/deps/cares/BUILD.gn b/deps/cares/BUILD.gn
-index ac19ac73ed1e24c61cb679f3851685b79cfc8b39..d083aea4cb895d8425041879f1b22a6ee43a0b60 100644
+index ac19ac73ed1e24c61cb679f3851685b79cfc8b39..7f4885631a85a25692e8969991951be02e5d73f1 100644
 --- a/deps/cares/BUILD.gn
 +++ b/deps/cares/BUILD.gn
-@@ -1,14 +1,172 @@
+@@ -1,14 +1,175 @@
 -##############################################################################
 -#                                                                            #
 -#                       DO NOT EDIT THIS FILE!                               #
@@ -569,60 +569,18 @@ index ac19ac73ed1e24c61cb679f3851685b79cfc8b39..d083aea4cb895d8425041879f1b22a6e
 +    "include/ares_version.h",
 +    "src/lib/ares__addrinfo2hostent.c",
 +    "src/lib/ares__addrinfo_localhost.c",
-+    "src/lib/ares__buf.c",
-+    "src/lib/ares__buf.h",
 +    "src/lib/ares__close_sockets.c",
 +    "src/lib/ares__hosts_file.c",
-+    "src/lib/ares__htable.c",
-+    "src/lib/ares__htable.h",
-+    "src/lib/ares__htable_asvp.c",
-+    "src/lib/ares__htable_asvp.h",
-+    "src/lib/ares__htable_strvp.c",
-+    "src/lib/ares__htable_strvp.h",
-+    "src/lib/ares__htable_szvp.c",
-+    "src/lib/ares__htable_szvp.h",
-+    "src/lib/ares__htable_vpvp.c",
-+    "src/lib/ares__htable_vpvp.h",
-+    "src/lib/ares__iface_ips.c",
-+    "src/lib/ares__iface_ips.h",
-+    "src/lib/ares__llist.c",
-+    "src/lib/ares__llist.h",
 +    "src/lib/ares__parse_into_addrinfo.c",
-+    "src/lib/ares__slist.c",
-+    "src/lib/ares__slist.h",
 +    "src/lib/ares__socket.c",
 +    "src/lib/ares__sortaddrinfo.c",
-+    "src/lib/ares__threads.c",
-+    "src/lib/ares__threads.h",
-+    "src/lib/ares__timeval.c",
 +    "src/lib/ares_android.c",
 +    "src/lib/ares_android.h",
 +    "src/lib/ares_cancel.c",
-+    "src/lib/ares_create_query.c",
++    "src/lib/ares_cookie.c",
 +    "src/lib/ares_data.c",
 +    "src/lib/ares_data.h",
 +    "src/lib/ares_destroy.c",
-+    "src/lib/ares_dns_mapping.c",
-+    "src/lib/ares_dns_multistring.c",
-+    "src/lib/ares_dns_multistring.h",
-+    "src/lib/ares_dns_name.c",
-+    "src/lib/ares_dns_parse.c",
-+    "src/lib/ares_dns_record.c",
-+    "src/lib/ares_dns_private.h",
-+    "src/lib/ares_dns_write.c",
-+    "src/lib/ares_event_configchg.c",
-+    "src/lib/ares_event.h",
-+    "src/lib/ares_event_win32.h",
-+    "src/lib/ares_event_epoll.c",
-+    "src/lib/ares_event_kqueue.c",
-+    "src/lib/ares_event_poll.c",
-+    "src/lib/ares_event_select.c",
-+    "src/lib/ares_event_thread.c",
-+    "src/lib/ares_event_wake_pipe.c",
-+    "src/lib/ares_event_win32.c",
-+    "src/lib/ares_expand_name.c",
-+    "src/lib/ares_expand_string.c",
-+    "src/lib/ares_fds.c",
 +    "src/lib/ares_free_hostent.c",
 +    "src/lib/ares_free_string.c",
 +    "src/lib/ares_freeaddrinfo.c",
@@ -632,49 +590,94 @@ index ac19ac73ed1e24c61cb679f3851685b79cfc8b39..d083aea4cb895d8425041879f1b22a6e
 +    "src/lib/ares_gethostbyaddr.c",
 +    "src/lib/ares_gethostbyname.c",
 +    "src/lib/ares_getnameinfo.c",
-+    "src/lib/ares_getsock.c",
 +    "src/lib/ares_inet_net_pton.h",
 +    "src/lib/ares_init.c",
-+    "src/lib/ares_library_init.c",
 +    "src/lib/ares_ipv6.h",
-+    "src/lib/ares_math.c",
++    "src/lib/ares_library_init.c",
 +    "src/lib/ares_metrics.c",
 +    "src/lib/ares_options.c",
-+    "src/lib/ares_parse_a_reply.c",
-+    "src/lib/ares_parse_aaaa_reply.c",
-+    "src/lib/ares_parse_caa_reply.c",
-+    "src/lib/ares_parse_mx_reply.c",
-+    "src/lib/ares_parse_naptr_reply.c",
-+    "src/lib/ares_parse_ns_reply.c",
-+    "src/lib/ares_parse_ptr_reply.c",
-+    "src/lib/ares_parse_soa_reply.c",
-+    "src/lib/ares_parse_srv_reply.c",
-+    "src/lib/ares_parse_txt_reply.c",
-+    "src/lib/ares_parse_uri_reply.c",
 +    "src/lib/ares_platform.c",
 +    "src/lib/ares_platform.h",
 +    "src/lib/ares_private.h",
 +    "src/lib/ares_process.c",
 +    "src/lib/ares_qcache.c",
 +    "src/lib/ares_query.c",
-+    "src/lib/ares_rand.c",
 +    "src/lib/ares_search.c",
 +    "src/lib/ares_send.c",
 +    "src/lib/ares_setup.h",
-+    "src/lib/ares_strcasecmp.c",
-+    "src/lib/ares_strcasecmp.h",
-+    "src/lib/ares_str.c",
-+    "src/lib/ares_str.h",
 +    "src/lib/ares_strerror.c",
-+    "src/lib/ares_strsplit.c",
-+    "src/lib/ares_strsplit.h",
 +    "src/lib/ares_sysconfig.c",
 +    "src/lib/ares_sysconfig_files.c",
 +    "src/lib/ares_timeout.c",
 +    "src/lib/ares_update_servers.c",
 +    "src/lib/ares_version.c",
++    "src/lib/dsa/ares__array.c",
++    "src/lib/dsa/ares__array.h",
++    "src/lib/dsa/ares__htable.c",
++    "src/lib/dsa/ares__htable.h",
++    "src/lib/dsa/ares__htable_asvp.c",
++    "src/lib/dsa/ares__htable_asvp.h",
++    "src/lib/dsa/ares__htable_strvp.c",
++    "src/lib/dsa/ares__htable_strvp.h",
++    "src/lib/dsa/ares__htable_szvp.c",
++    "src/lib/dsa/ares__htable_szvp.h",
++    "src/lib/dsa/ares__htable_vpvp.c",
++    "src/lib/dsa/ares__htable_vpvp.h",
++    "src/lib/dsa/ares__llist.c",
++    "src/lib/dsa/ares__llist.h",
++    "src/lib/dsa/ares__slist.c",
++    "src/lib/dsa/ares__slist.h",
++    "src/lib/event/ares_event.h",
++    "src/lib/event/ares_event_configchg.c",
++    "src/lib/event/ares_event_epoll.c",
++    "src/lib/event/ares_event_kqueue.c",
++    "src/lib/event/ares_event_poll.c",
++    "src/lib/event/ares_event_select.c",
++    "src/lib/event/ares_event_thread.c",
++    "src/lib/event/ares_event_wake_pipe.c",
++    "src/lib/event/ares_event_win32.c",
++    "src/lib/event/ares_event_win32.h",
 +    "src/lib/inet_net_pton.c",
 +    "src/lib/inet_ntop.c",
++    "src/lib/legacy/ares_create_query.c",
++    "src/lib/legacy/ares_expand_name.c",
++    "src/lib/legacy/ares_expand_string.c",
++    "src/lib/legacy/ares_fds.c",
++    "src/lib/legacy/ares_getsock.c",
++    "src/lib/legacy/ares_parse_a_reply.c",
++    "src/lib/legacy/ares_parse_aaaa_reply.c",
++    "src/lib/legacy/ares_parse_caa_reply.c",
++    "src/lib/legacy/ares_parse_mx_reply.c",
++    "src/lib/legacy/ares_parse_naptr_reply.c",
++    "src/lib/legacy/ares_parse_ns_reply.c",
++    "src/lib/legacy/ares_parse_ptr_reply.c",
++    "src/lib/legacy/ares_parse_soa_reply.c",
++    "src/lib/legacy/ares_parse_srv_reply.c",
++    "src/lib/legacy/ares_parse_txt_reply.c",
++    "src/lib/legacy/ares_parse_uri_reply.c",
++    "src/lib/record/ares_dns_mapping.c",
++    "src/lib/record/ares_dns_multistring.c",
++    "src/lib/record/ares_dns_multistring.h",
++    "src/lib/record/ares_dns_name.c",
++    "src/lib/record/ares_dns_parse.c",
++    "src/lib/record/ares_dns_private.h",
++    "src/lib/record/ares_dns_record.c",
++    "src/lib/record/ares_dns_write.c",
++    "src/lib/str/ares__buf.c",
++    "src/lib/str/ares__buf.h",
++    "src/lib/str/ares_str.c",
++    "src/lib/str/ares_str.h",
++    "src/lib/str/ares_strcasecmp.c",
++    "src/lib/str/ares_strcasecmp.h",
++    "src/lib/str/ares_strsplit.c",
++    "src/lib/str/ares_strsplit.h",
++    "src/lib/util/ares__iface_ips.c",
++    "src/lib/util/ares__iface_ips.h",
++    "src/lib/util/ares__threads.c",
++    "src/lib/util/ares__threads.h",
++    "src/lib/util/ares__timeval.c",
++    "src/lib/util/ares_math.c",
++    "src/lib/util/ares_rand.c",
 +    "src/tools/ares_getopt.c",
 +    "src/tools/ares_getopt.h",
 +  ]
@@ -1265,10 +1268,10 @@ index 0000000000000000000000000000000000000000..af9cbada10203b387fb9732b346583b1
 +}
 diff --git a/filenames.json b/filenames.json
 new file mode 100644
-index 0000000000000000000000000000000000000000..646df853a2b985f14fd66cae6af854977c074706
+index 0000000000000000000000000000000000000000..889a487e24721a8ecfef91f5a655892a607bb12f
 --- /dev/null
 +++ b/filenames.json
-@@ -0,0 +1,737 @@
+@@ -0,0 +1,741 @@
 +// This file is automatically generated by generate_gn_filenames_json.py
 +// DO NOT EDIT
 +{
@@ -1477,6 +1480,7 @@ index 0000000000000000000000000000000000000000..646df853a2b985f14fd66cae6af85497
 +    "lib/internal/assert.js",
 +    "lib/internal/assert/assertion_error.js",
 +    "lib/internal/assert/calltracker.js",
++    "lib/internal/assert/utils.js",
 +    "lib/internal/async_hooks.js",
 +    "lib/internal/blob.js",
 +    "lib/internal/blocklist.js",
@@ -1548,6 +1552,7 @@ index 0000000000000000000000000000000000000000..646df853a2b985f14fd66cae6af85497
 +    "lib/internal/http2/util.js",
 +    "lib/internal/idna.js",
 +    "lib/internal/inspector_async_hook.js",
++    "lib/internal/inspector_network_tracking.js",
 +    "lib/internal/js_stream_socket.js",
 +    "lib/internal/legacy/processbinding.js",
 +    "lib/internal/linkedlist.js",
@@ -1655,6 +1660,7 @@ index 0000000000000000000000000000000000000000..646df853a2b985f14fd66cae6af85497
 +    "lib/internal/test/transfer.js",
 +    "lib/internal/test_runner/coverage.js",
 +    "lib/internal/test_runner/harness.js",
++    "lib/internal/test_runner/mock/loader.js",
 +    "lib/internal/test_runner/mock/mock.js",
 +    "lib/internal/test_runner/mock/mock_timers.js",
 +    "lib/internal/test_runner/reporter/dot.js",
@@ -1662,6 +1668,7 @@ index 0000000000000000000000000000000000000000..646df853a2b985f14fd66cae6af85497
 +    "lib/internal/test_runner/reporter/lcov.js",
 +    "lib/internal/test_runner/reporter/spec.js",
 +    "lib/internal/test_runner/reporter/tap.js",
++    "lib/internal/test_runner/reporter/utils.js",
 +    "lib/internal/test_runner/reporter/v8-serializer.js",
 +    "lib/internal/test_runner/runner.js",
 +    "lib/internal/test_runner/test.js",
@@ -2007,10 +2014,10 @@ index 0000000000000000000000000000000000000000..646df853a2b985f14fd66cae6af85497
 +  ]
 +}
 diff --git a/src/inspector/BUILD.gn b/src/inspector/BUILD.gn
-index 909fd14345fcd988c381e640280f4b33f2e0c351..800431e6659f95f0495cb90b8fa2cccbc9f34661 100644
+index 909fd14345fcd988c381e640280f4b33f2e0c351..3b430a666a7d5cb52ec41f8d828284625f916701 100644
 --- a/src/inspector/BUILD.gn
 +++ b/src/inspector/BUILD.gn
-@@ -1,14 +1,202 @@
+@@ -1,14 +1,208 @@
 -##############################################################################
 -#                                                                            #
 -#                       DO NOT EDIT THIS FILE!                               #
@@ -2034,6 +2041,8 @@ index 909fd14345fcd988c381e640280f4b33f2e0c351..800431e6659f95f0495cb90b8fa2cccb
 +  "protocol/NodeTracing.h",
 +  "protocol/NodeRuntime.cpp",
 +  "protocol/NodeRuntime.h",
++  "protocol/Network.cpp",
++  "protocol/Network.h",
 +]
  
 -inspector_gn_build("inspector") {
@@ -2066,6 +2075,10 @@ index 909fd14345fcd988c381e640280f4b33f2e0c351..800431e6659f95f0495cb90b8fa2cccb
 +    "tracing_agent.h",
 +    "worker_agent.cc",
 +    "worker_agent.h",
++    "network_inspector.cc",
++    "network_inspector.h",
++    "network_agent.cc",
++    "network_agent.h",
 +    "worker_inspector.cc",
 +    "worker_inspector.h",
 +  ]

+ 4 - 4
patches/node/build_compile_with_c_20_support.patch

@@ -10,10 +10,10 @@ V8 requires C++20 support as of https://chromium-review.googlesource.com/c/v8/v8
 This can be removed when Electron upgrades to a version of Node.js containing the required V8 version.
 
 diff --git a/common.gypi b/common.gypi
-index 8736ad12eec294070a5160a64248044cd16347c9..216200c279c599f6dee228120ff5f3943fa52ffd 100644
+index bdf1a1f33f3ea09d933757c7fee87c563cc833ab..2eb62610db2f0ebf68fa9a55ffba98291ecfe451 100644
 --- a/common.gypi
 +++ b/common.gypi
-@@ -307,7 +307,7 @@
+@@ -305,7 +305,7 @@
        'VCCLCompilerTool': {
          'AdditionalOptions': [
            '/Zc:__cplusplus',
@@ -22,7 +22,7 @@ index 8736ad12eec294070a5160a64248044cd16347c9..216200c279c599f6dee228120ff5f394
          ],
          'BufferSecurityCheck': 'true',
          'DebugInformationFormat': 1,          # /Z7 embed info in .obj files
-@@ -489,7 +489,7 @@
+@@ -487,7 +487,7 @@
        }],
        [ 'OS in "linux freebsd openbsd solaris android aix os400 cloudabi"', {
          'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ],
@@ -31,7 +31,7 @@ index 8736ad12eec294070a5160a64248044cd16347c9..216200c279c599f6dee228120ff5f394
          'defines': [ '__STDC_FORMAT_MACROS' ],
          'ldflags': [ '-rdynamic' ],
          'target_conditions': [
-@@ -660,7 +660,7 @@
+@@ -658,7 +658,7 @@
            ['clang==1', {
              'xcode_settings': {
                'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',

+ 3 - 3
patches/node/build_enable_perfetto.patch

@@ -33,10 +33,10 @@ index 8d7204f6cb48f783adc4d1c1eb2de0c83b7fffe2..a154559a56bf383d3c26af523c9bb07b
  
    // Non-alphabetic chars.
 diff --git a/lib/internal/http.js b/lib/internal/http.js
-index c26c322aafc64ed9ca2a7c1fd703555a251db9de..f94bc5824d6c83fd1feca31c572dcfd3ac130bda 100644
+index 251f51ec454f9cba4023b8b6729241ee753aac13..1de8cac6e3953ce9cab9db03530da327199acfd5 100644
 --- a/lib/internal/http.js
 +++ b/lib/internal/http.js
-@@ -10,8 +10,8 @@ const {
+@@ -8,8 +8,8 @@ const {
  const { setUnrefTimeout } = require('internal/timers');
  const { getCategoryEnabledBuffer, trace } = internalBinding('trace_events');
  const {
@@ -47,7 +47,7 @@ index c26c322aafc64ed9ca2a7c1fd703555a251db9de..f94bc5824d6c83fd1feca31c572dcfd3
  } = require('internal/constants');
  
  let utcCache;
-@@ -46,11 +46,13 @@ function isTraceHTTPEnabled() {
+@@ -44,11 +44,13 @@ function isTraceHTTPEnabled() {
  const traceEventCategory = 'node,node.http';
  
  function traceBegin(...args) {

+ 6 - 6
patches/node/build_ensure_native_module_compilation_fails_if_not_using_a_new.patch

@@ -7,10 +7,10 @@ Subject: build: ensure native module compilation fails if not using a new
 This should not be upstreamed, it is a quality-of-life patch for downstream module builders.
 
 diff --git a/common.gypi b/common.gypi
-index 689e7fb2339253d0f2be3ccf33ecd76660ccf176..8736ad12eec294070a5160a64248044cd16347c9 100644
+index 697b8bba6a55358924d6986f2eb347a99ff73889..bdf1a1f33f3ea09d933757c7fee87c563cc833ab 100644
 --- a/common.gypi
 +++ b/common.gypi
-@@ -87,6 +87,8 @@
+@@ -86,6 +86,8 @@
      'v8_use_perfetto': 0,
      'tsan%': 0,
  
@@ -19,7 +19,7 @@ index 689e7fb2339253d0f2be3ccf33ecd76660ccf176..8736ad12eec294070a5160a64248044c
      ##### end V8 defaults #####
  
      # When building native modules using 'npm install' with the system npm,
-@@ -287,6 +289,7 @@
+@@ -285,6 +287,7 @@
      # Defines these mostly for node-gyp to pickup.
      'defines': [
        '_GLIBCXX_USE_CXX11_ABI=1',
@@ -27,7 +27,7 @@ index 689e7fb2339253d0f2be3ccf33ecd76660ccf176..8736ad12eec294070a5160a64248044c
      ],
  
      # Forcibly disable -Werror.  We support a wide range of compilers, it's
-@@ -416,6 +419,11 @@
+@@ -414,6 +417,11 @@
            }],
          ],
        }],
@@ -40,10 +40,10 @@ index 689e7fb2339253d0f2be3ccf33ecd76660ccf176..8736ad12eec294070a5160a64248044c
        # list in v8/BUILD.gn.
        ['v8_enable_v8_checks == 1', {
 diff --git a/configure.py b/configure.py
-index 3084cc964cbe6d02f98d08cd6f847ea7f4a3d0db..5b6a3b62082985debf6ebc4bc09a7d056f58514a 100755
+index a6f66c41f75bffcfaf75d4415c694300b7624136..7ca0762fe3590fef7b88ba684de44d99aaecace4 100755
 --- a/configure.py
 +++ b/configure.py
-@@ -1559,6 +1559,7 @@ def configure_library(lib, output, pkgname=None):
+@@ -1585,6 +1585,7 @@ def configure_library(lib, output, pkgname=None):
  
  
  def configure_v8(o):

+ 12 - 12
patches/node/cherry-pick_src_remove_calls_to_recently_deprecated_v8_apis.patch

@@ -50,10 +50,10 @@ index 4bf80aa6cc6385dc376fd0a3538efc27fe5bd0a2..3e37aa8b0c9696cceb3f3cfab9721f38
    BuiltinCodeCacheData cached_data{};
    {
 diff --git a/src/node_contextify.cc b/src/node_contextify.cc
-index 708fa03d088e67a50dc4e69bb3f2cc14529dc3f1..4b7c4556d4cc94f589065409ed2a0aca497c99d0 100644
+index 6456d87d4202c013aafe071adbac06852b3ae2c1..28ba7dbe66a44a43c39e3d75edf0be9513bcf732 100644
 --- a/src/node_contextify.cc
 +++ b/src/node_contextify.cc
-@@ -850,16 +850,15 @@ void ContextifyScript::New(const FunctionCallbackInfo<Value>& args) {
+@@ -877,16 +877,15 @@ void ContextifyScript::New(const FunctionCallbackInfo<Value>& args) {
    host_defined_options->Set(
        isolate, loader::HostDefinedOptions::kID, id_symbol);
  
@@ -79,7 +79,7 @@ index 708fa03d088e67a50dc4e69bb3f2cc14529dc3f1..4b7c4556d4cc94f589065409ed2a0aca
                        host_defined_options);
    ScriptCompiler::Source source(code, origin, cached_data);
    ScriptCompiler::CompileOptions compile_options =
-@@ -971,7 +970,7 @@ MaybeLocal<Function> CompileFunction(Local<Context> context,
+@@ -998,7 +997,7 @@ MaybeLocal<Function> CompileFunction(Local<Context> context,
                                       Local<String> filename,
                                       Local<String> content,
                                       std::vector<Local<String>>* parameters) {
@@ -88,15 +88,15 @@ index 708fa03d088e67a50dc4e69bb3f2cc14529dc3f1..4b7c4556d4cc94f589065409ed2a0aca
    ScriptCompiler::Source script_source(content, script_origin);
  
    return ScriptCompiler::CompileFunction(context,
-@@ -1081,7 +1080,6 @@ bool ContextifyScript::EvalMachine(Local<Context> context,
+@@ -1108,7 +1107,6 @@ bool ContextifyScript::EvalMachine(Local<Context> context,
    }
  
    TryCatchScope try_catch(env);
 -  Isolate::SafeForTerminationScope safe_for_termination(env->isolate());
    ContextifyScript* wrapped_script;
-   ASSIGN_OR_RETURN_UNWRAP(&wrapped_script, args.Holder(), false);
+   ASSIGN_OR_RETURN_UNWRAP(&wrapped_script, args.This(), false);
    Local<UnboundScript> unbound_script =
-@@ -1259,8 +1257,7 @@ void ContextifyContext::CompileFunction(
+@@ -1286,8 +1284,7 @@ void ContextifyContext::CompileFunction(
    Local<PrimitiveArray> host_defined_options =
        GetHostDefinedOptions(isolate, id_symbol);
    ScriptCompiler::Source source =
@@ -106,7 +106,7 @@ index 708fa03d088e67a50dc4e69bb3f2cc14529dc3f1..4b7c4556d4cc94f589065409ed2a0aca
                                  filename,
                                  line_offset,
                                  column_offset,
-@@ -1315,15 +1312,13 @@ void ContextifyContext::CompileFunction(
+@@ -1342,15 +1339,13 @@ void ContextifyContext::CompileFunction(
  }
  
  ScriptCompiler::Source ContextifyContext::GetCommonJSSourceInstance(
@@ -123,7 +123,7 @@ index 708fa03d088e67a50dc4e69bb3f2cc14529dc3f1..4b7c4556d4cc94f589065409ed2a0aca
                        line_offset,     // line offset
                        column_offset,   // column offset
                        true,            // is cross origin
-@@ -1501,7 +1496,7 @@ void ContextifyContext::ContainsModuleSyntax(
+@@ -1528,7 +1523,7 @@ void ContextifyContext::ContainsModuleSyntax(
    Local<PrimitiveArray> host_defined_options =
        GetHostDefinedOptions(isolate, id_symbol);
    ScriptCompiler::Source source = GetCommonJSSourceInstance(
@@ -132,7 +132,7 @@ index 708fa03d088e67a50dc4e69bb3f2cc14529dc3f1..4b7c4556d4cc94f589065409ed2a0aca
    ScriptCompiler::CompileOptions options = GetCompileOptions(source);
  
    std::vector<Local<String>> params = GetCJSParameters(env->isolate_data());
-@@ -1549,7 +1544,7 @@ void ContextifyContext::ContainsModuleSyntax(
+@@ -1576,7 +1571,7 @@ void ContextifyContext::ContainsModuleSyntax(
                code,
                String::NewFromUtf8(isolate, "})();").ToLocalChecked());
            ScriptCompiler::Source wrapped_source = GetCommonJSSourceInstance(
@@ -141,7 +141,7 @@ index 708fa03d088e67a50dc4e69bb3f2cc14529dc3f1..4b7c4556d4cc94f589065409ed2a0aca
            std::ignore = ScriptCompiler::CompileFunction(
                context,
                &wrapped_source,
-@@ -1602,8 +1597,7 @@ static void CompileFunctionForCJSLoader(
+@@ -1629,8 +1624,7 @@ static void CompileFunctionForCJSLoader(
  
    Local<Symbol> symbol = env->vm_dynamic_import_default_internal();
    Local<PrimitiveArray> hdo = GetHostDefinedOptions(isolate, symbol);
@@ -152,10 +152,10 @@ index 708fa03d088e67a50dc4e69bb3f2cc14529dc3f1..4b7c4556d4cc94f589065409ed2a0aca
                        0,               // column offset
                        true,            // is cross origin
 diff --git a/src/node_contextify.h b/src/node_contextify.h
-index e96df803b7ec2aa1231d4ab5d4ae0fe863ceb672..d42b5e0c544e726fc3f6d8392a554df9aa480fe9 100644
+index 517e3f44d324900222e1da961a4cd60bbb4a85f9..10715c7eb07715cc11e49734bd54747dad95f6a4 100644
 --- a/src/node_contextify.h
 +++ b/src/node_contextify.h
-@@ -95,7 +95,6 @@ class ContextifyContext : public BaseObject {
+@@ -99,7 +99,6 @@ class ContextifyContext : public BaseObject {
        v8::Local<v8::Symbol> id_symbol,
        const errors::TryCatchScope& try_catch);
    static v8::ScriptCompiler::Source GetCommonJSSourceInstance(

+ 2 - 2
patches/node/chore_allow_the_node_entrypoint_to_be_a_builtin_module.patch

@@ -26,10 +26,10 @@ index 364469160af5e348f8890417de16a63c0d1dca67..75d5f58fe02fa8cfa7716ffaf761d567
          try {
            resolvedArgv = Module._resolveFilename(process.argv[1], null, false);
 diff --git a/lib/internal/process/pre_execution.js b/lib/internal/process/pre_execution.js
-index 59308ab817fb864a7b84ecf349c9e08d1c710342..8398657065b28a4451b8fe3996e63838a1645314 100644
+index ea7afd52fab1cf3fde1674be1429a00562b714c0..02cfc8b3328fedb6306abf6c738bea772c674458 100644
 --- a/lib/internal/process/pre_execution.js
 +++ b/lib/internal/process/pre_execution.js
-@@ -245,12 +245,14 @@ function patchProcessObject(expandArgv1) {
+@@ -247,12 +247,14 @@ function patchProcessObject(expandArgv1) {
    if (expandArgv1 && process.argv[1] &&
        !StringPrototypeStartsWith(process.argv[1], '-')) {
      // Expand process.argv[1] into a full path.

+ 1 - 1
patches/node/chore_remove_--no-harmony-atomics_related_code.patch

@@ -9,7 +9,7 @@ This patch can be removed when Node.js upgrades to a version of V8 containing
 the above CL.
 
 diff --git a/lib/.eslintrc.yaml b/lib/.eslintrc.yaml
-index 0cf84a0da5ee9e63d7b01d0a27946fc29090e516..ee16099ddc9abe5c19b319c111d1319c33b17be4 100644
+index 74e867ace6207751a96b4da03802b50b620dbd7b..53ceabeb58f56ebd27e60fd49c362d26e361e6d8 100644
 --- a/lib/.eslintrc.yaml
 +++ b/lib/.eslintrc.yaml
 @@ -30,10 +30,6 @@ rules:

+ 0 - 24
patches/node/chore_remove_calls_to_v8_functioncallbackinfo_holder.patch

@@ -1,24 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: John Kleinschmidt <[email protected]>
-Date: Mon, 10 Jun 2024 11:18:56 -0500
-Subject: chore: remove calls to v8::FunctionCallbackInfo::Holder()
-
-Use This() instead.
-Refs: https://chromium-review.googlesource.com/c/v8/v8/+/5604487
-https://issues.chromium.org/issues/333672197
-
-This patch can be removed once Node addresses this change.
-
-diff --git a/src/node_internals.h b/src/node_internals.h
-index 5dff80ee287256ba40bfa496df6db60a18fbb9d7..a9162b4e2ee48dbebec8dc52b6990369be15fe4a 100644
---- a/src/node_internals.h
-+++ b/src/node_internals.h
-@@ -67,7 +67,7 @@ template <typename T, int (*F)(const typename T::HandleType*, sockaddr*, int*)>
- void GetSockOrPeerName(const v8::FunctionCallbackInfo<v8::Value>& args) {
-   T* wrap;
-   ASSIGN_OR_RETURN_UNWRAP(&wrap,
--                          args.Holder(),
-+                          args.This(),
-                           args.GetReturnValue().Set(UV_EBADF));
-   CHECK(args[0]->IsObject());
-   sockaddr_storage storage;

+ 2 - 2
patches/node/chore_remove_use_of_deprecated_kmaxlength.patch

@@ -21,10 +21,10 @@ index 606a6f5caa3b11b6d2a9068ed2fd65800530a5eb..080dcce21da05ccea398d8a856deb397
  typedef void (*FreeCallback)(char* data, void* hint);
  
 diff --git a/src/node_errors.h b/src/node_errors.h
-index ad40141ca92c5a46ae2e4dfa96e4d6c239da8516..c462e5afcaa2328c4908fff462fc7c9fbfc1fd5f 100644
+index 1662491bac44311421eeb7ee35bb47c025162abf..a62b18e832986ee38d93b412b36020a2c22255a9 100644
 --- a/src/node_errors.h
 +++ b/src/node_errors.h
-@@ -232,7 +232,7 @@ inline v8::Local<v8::Value> ERR_BUFFER_TOO_LARGE(v8::Isolate* isolate) {
+@@ -230,7 +230,7 @@ inline v8::Local<v8::Object> ERR_BUFFER_TOO_LARGE(v8::Isolate* isolate) {
    char message[128];
    snprintf(message, sizeof(message),
        "Cannot create a Buffer larger than 0x%zx bytes",

+ 2 - 2
patches/node/fix_add_default_values_for_variables_in_common_gypi.patch

@@ -7,10 +7,10 @@ common.gypi is a file that's included in the node header bundle, despite
 the fact that we do not build node with gyp.
 
 diff --git a/common.gypi b/common.gypi
-index 7c0b4a0851b295ee0c86f701c997b739a3cb7a7a..689e7fb2339253d0f2be3ccf33ecd76660ccf176 100644
+index 1ece4f5e494533ea0fa25e0d35143fe424dbf70b..697b8bba6a55358924d6986f2eb347a99ff73889 100644
 --- a/common.gypi
 +++ b/common.gypi
-@@ -89,6 +89,23 @@
+@@ -88,6 +88,23 @@
  
      ##### end V8 defaults #####
  

+ 15 - 15
patches/node/fix_add_property_query_interceptors.patch

@@ -13,7 +13,7 @@ CL: https://chromium-review.googlesource.com/c/v8/v8/+/5630388
 This patch can be removed when the node change is incorporated into main.
 
 diff --git a/src/node_contextify.cc b/src/node_contextify.cc
-index 4b7c4556d4cc94f589065409ed2a0aca497c99d0..b4d6116f0c84b0cf3e1045c6b9571fd295fe5412 100644
+index 28ba7dbe66a44a43c39e3d75edf0be9513bcf732..0401b968916e5f45d148281c74b7e465e11439b8 100644
 --- a/src/node_contextify.cc
 +++ b/src/node_contextify.cc
 @@ -49,6 +49,7 @@ using v8::FunctionTemplate;
@@ -24,7 +24,7 @@ index 4b7c4556d4cc94f589065409ed2a0aca497c99d0..b4d6116f0c84b0cf3e1045c6b9571fd2
  using v8::Isolate;
  using v8::Just;
  using v8::Local;
-@@ -457,14 +458,15 @@ bool ContextifyContext::IsStillInitializing(const ContextifyContext* ctx) {
+@@ -484,14 +485,15 @@ bool ContextifyContext::IsStillInitializing(const ContextifyContext* ctx) {
  }
  
  // static
@@ -44,7 +44,7 @@ index 4b7c4556d4cc94f589065409ed2a0aca497c99d0..b4d6116f0c84b0cf3e1045c6b9571fd2
  
    Local<Context> context = ctx->context();
    Local<Object> sandbox = ctx->sandbox();
-@@ -488,18 +490,22 @@ void ContextifyContext::PropertyGetterCallback(
+@@ -515,18 +517,22 @@ void ContextifyContext::PropertyGetterCallback(
        rv = ctx->global_proxy();
  
      args.GetReturnValue().Set(rv);
@@ -70,7 +70,7 @@ index 4b7c4556d4cc94f589065409ed2a0aca497c99d0..b4d6116f0c84b0cf3e1045c6b9571fd2
  
    Local<Context> context = ctx->context();
    PropertyAttribute attributes = PropertyAttribute::None;
-@@ -517,8 +523,9 @@ void ContextifyContext::PropertySetterCallback(
+@@ -544,8 +550,9 @@ void ContextifyContext::PropertySetterCallback(
        (static_cast<int>(attributes) &
        static_cast<int>(PropertyAttribute::ReadOnly));
  
@@ -82,7 +82,7 @@ index 4b7c4556d4cc94f589065409ed2a0aca497c99d0..b4d6116f0c84b0cf3e1045c6b9571fd2
  
    // true for x = 5
    // false for this.x = 5
-@@ -537,11 +544,16 @@ void ContextifyContext::PropertySetterCallback(
+@@ -564,11 +571,16 @@ void ContextifyContext::PropertySetterCallback(
  
    bool is_declared = is_declared_on_global_proxy || is_declared_on_sandbox;
    if (!is_declared && args.ShouldThrowOnError() && is_contextual_store &&
@@ -103,7 +103,7 @@ index 4b7c4556d4cc94f589065409ed2a0aca497c99d0..b4d6116f0c84b0cf3e1045c6b9571fd2
  
    Local<Value> desc;
    if (is_declared_on_sandbox &&
-@@ -555,19 +567,23 @@ void ContextifyContext::PropertySetterCallback(
+@@ -582,19 +594,23 @@ void ContextifyContext::PropertySetterCallback(
      // We have to specify the return value for any contextual or get/set
      // property
      if (desc_obj->HasOwnProperty(context, env->get_string()).FromMaybe(false) ||
@@ -132,7 +132,7 @@ index 4b7c4556d4cc94f589065409ed2a0aca497c99d0..b4d6116f0c84b0cf3e1045c6b9571fd2
  
    Local<Context> context = ctx->context();
  
-@@ -577,19 +593,23 @@ void ContextifyContext::PropertyDescriptorCallback(
+@@ -604,19 +620,23 @@ void ContextifyContext::PropertyDescriptorCallback(
      Local<Value> desc;
      if (sandbox->GetOwnPropertyDescriptor(context, property).ToLocal(&desc)) {
        args.GetReturnValue().Set(desc);
@@ -159,7 +159,7 @@ index 4b7c4556d4cc94f589065409ed2a0aca497c99d0..b4d6116f0c84b0cf3e1045c6b9571fd2
  
    Local<Context> context = ctx->context();
    Isolate* isolate = context->GetIsolate();
-@@ -608,7 +628,7 @@ void ContextifyContext::PropertyDefinerCallback(
+@@ -635,7 +655,7 @@ void ContextifyContext::PropertyDefinerCallback(
    // If the property is set on the global as neither writable nor
    // configurable, don't change it on the global or sandbox.
    if (is_declared && read_only && dont_delete) {
@@ -168,7 +168,7 @@ index 4b7c4556d4cc94f589065409ed2a0aca497c99d0..b4d6116f0c84b0cf3e1045c6b9571fd2
    }
  
    Local<Object> sandbox = ctx->sandbox();
-@@ -631,6 +651,9 @@ void ContextifyContext::PropertyDefinerCallback(
+@@ -658,6 +678,9 @@ void ContextifyContext::PropertyDefinerCallback(
          desc.has_set() ? desc.set() : Undefined(isolate).As<Value>());
  
      define_prop_on_sandbox(&desc_for_sandbox);
@@ -178,7 +178,7 @@ index 4b7c4556d4cc94f589065409ed2a0aca497c99d0..b4d6116f0c84b0cf3e1045c6b9571fd2
    } else {
      Local<Value> value =
          desc.has_value() ? desc.value() : Undefined(isolate).As<Value>();
-@@ -642,26 +665,32 @@ void ContextifyContext::PropertyDefinerCallback(
+@@ -669,26 +692,32 @@ void ContextifyContext::PropertyDefinerCallback(
        PropertyDescriptor desc_for_sandbox(value);
        define_prop_on_sandbox(&desc_for_sandbox);
      }
@@ -217,7 +217,7 @@ index 4b7c4556d4cc94f589065409ed2a0aca497c99d0..b4d6116f0c84b0cf3e1045c6b9571fd2
  }
  
  // static
-@@ -681,76 +710,84 @@ void ContextifyContext::PropertyEnumeratorCallback(
+@@ -708,76 +737,84 @@ void ContextifyContext::PropertyEnumeratorCallback(
  }
  
  // static
@@ -328,10 +328,10 @@ index 4b7c4556d4cc94f589065409ed2a0aca497c99d0..b4d6116f0c84b0cf3e1045c6b9571fd2
  
  void ContextifyScript::CreatePerIsolateProperties(
 diff --git a/src/node_contextify.h b/src/node_contextify.h
-index d42b5e0c544e726fc3f6d8392a554df9aa480fe9..ea2d513463057715127cb4b4f2d66b4cfcf71351 100644
+index 10715c7eb07715cc11e49734bd54747dad95f6a4..49b9fabb399aed962e0d29e784a25ca4e9780a8f 100644
 --- a/src/node_contextify.h
 +++ b/src/node_contextify.h
-@@ -107,42 +107,39 @@ class ContextifyContext : public BaseObject {
+@@ -111,42 +111,39 @@ class ContextifyContext : public BaseObject {
        const v8::FunctionCallbackInfo<v8::Value>& args);
    static void WeakCallback(
        const v8::WeakCallbackInfo<ContextifyContext>& data);
@@ -541,10 +541,10 @@ index bce7ae07214ddf970a530db29ed6970e14b7a5ed..85f82180d48d6cfd7738cd7b1e504f23
  }
  
 diff --git a/src/node_external_reference.h b/src/node_external_reference.h
-index 9238f2d4d7376b22e264dbc9359b480937d29676..b5c1df6941616642075babdad81be00ce63ffd56 100644
+index c4aba23510872d66b58a1adc88cdd1ee85a86cfe..6d9988810b951771064de523bc20aaf389a9c08a 100644
 --- a/src/node_external_reference.h
 +++ b/src/node_external_reference.h
-@@ -59,16 +59,17 @@ class ExternalReferenceRegistry {
+@@ -66,16 +66,17 @@ class ExternalReferenceRegistry {
    V(v8::FunctionCallback)                                                      \
    V(v8::AccessorNameGetterCallback)                                            \
    V(v8::AccessorNameSetterCallback)                                            \

+ 11 - 11
patches/node/fix_assert_module_in_the_renderer_process.patch

@@ -12,19 +12,19 @@ if the override has been disabled.
 
 This will be upstreamed.
 
-diff --git a/lib/assert.js b/lib/assert.js
-index eadc3844c20128bb9f9a269e5d599f8febf17421..e4615e55c0847d969e9c95295ddecfc640019c99 100644
---- a/lib/assert.js
-+++ b/lib/assert.js
-@@ -66,6 +66,7 @@ const { inspect } = require('internal/util/inspect');
- const { isPromise, isRegExp } = require('internal/util/types');
+diff --git a/lib/internal/assert/utils.js b/lib/internal/assert/utils.js
+index 59b5a16f1309a5e4055bccfdb7a529045ad30402..bfdaf6211466a01b64b7942f7b16c480283278ff 100644
+--- a/lib/internal/assert/utils.js
++++ b/lib/internal/assert/utils.js
+@@ -25,6 +25,7 @@ const AssertionError = require('internal/assert/assertion_error');
+ const { openSync, closeSync, readSync } = require('fs');
  const { EOL } = require('internal/constants');
  const { BuiltinModule } = require('internal/bootstrap/realm');
 +const { getEmbedderOptions } = require('internal/options');
- const { isError, deprecate } = require('internal/util');
+ const { isError } = require('internal/util');
  
  const errorCache = new SafeMap();
-@@ -294,8 +295,16 @@ function getErrMessage(message, fn) {
+@@ -167,8 +168,16 @@ function getErrMessage(message, fn) {
    ErrorCaptureStackTrace(err, fn);
    if (errorStackTraceLimitIsWritable) Error.stackTraceLimit = tmpLimit;
  
@@ -44,7 +44,7 @@ index eadc3844c20128bb9f9a269e5d599f8febf17421..e4615e55c0847d969e9c95295ddecfc6
    let filename = call.getFileName();
    const line = call.getLineNumber() - 1;
 diff --git a/src/api/environment.cc b/src/api/environment.cc
-index fe41619f45913fe31a59771c8d1af6cde3b89f66..bb6c6d51846fed1d160ec9dcd5a5dd67b4fef911 100644
+index b9098d102b40adad7fafcc331ac62870617019b9..cb9269a31e073caf86164aa39c0640370ade60fd 100644
 --- a/src/api/environment.cc
 +++ b/src/api/environment.cc
 @@ -244,6 +244,9 @@ void SetIsolateErrorHandlers(v8::Isolate* isolate, const IsolateSettings& s) {
@@ -58,10 +58,10 @@ index fe41619f45913fe31a59771c8d1af6cde3b89f66..bb6c6d51846fed1d160ec9dcd5a5dd67
  }
  
 diff --git a/src/node_options.cc b/src/node_options.cc
-index 74955717117001393e8b55809b4e4a1424019dad..409c6e3918e3ef7c9d35f87e093cb965cb889dd7 100644
+index 818baf611fcab7838a339f3ea137467653e270d0..4e3c82e9528b04fd1a0cc99d30fb885e4b224bc9 100644
 --- a/src/node_options.cc
 +++ b/src/node_options.cc
-@@ -1393,14 +1393,16 @@ void GetEmbedderOptions(const FunctionCallbackInfo<Value>& args) {
+@@ -1405,14 +1405,16 @@ void GetEmbedderOptions(const FunctionCallbackInfo<Value>& args) {
    }
    Isolate* isolate = args.GetIsolate();
  

+ 5 - 5
patches/node/fix_capture_embedder_exceptions_before_entering_v8.patch

@@ -10,7 +10,7 @@ in the nodejs test suite. Need to be followed-up with upstream
 on the broader change as there maybe other callsites.
 
 diff --git a/src/handle_wrap.cc b/src/handle_wrap.cc
-index 69e2a389f9e1480a1a4ba37f5df5356b42f7d52d..0c29b00298b44b97f88a63aa5b89f1c201f6326a 100644
+index be02d4aaa04685cbd6a9ecfe082e38f179129ab5..277748a30bd97ae816d9ba1f2d73851a29b81010 100644
 --- a/src/handle_wrap.cc
 +++ b/src/handle_wrap.cc
 @@ -148,6 +148,9 @@ void HandleWrap::OnClose(uv_handle_t* handle) {
@@ -24,10 +24,10 @@ index 69e2a389f9e1480a1a4ba37f5df5356b42f7d52d..0c29b00298b44b97f88a63aa5b89f1c2
        wrap->object()->Has(env->context(), env->handle_onclose_symbol())
        .FromMaybe(false)) {
 diff --git a/src/node_contextify.cc b/src/node_contextify.cc
-index d873792ab95e41d54579f552c6c1fa43447ca4cd..708fa03d088e67a50dc4e69bb3f2cc14529dc3f1 100644
+index 8951cd378a9025f58fada47cf96f686d14639f95..6456d87d4202c013aafe071adbac06852b3ae2c1 100644
 --- a/src/node_contextify.cc
 +++ b/src/node_contextify.cc
-@@ -460,6 +460,7 @@ bool ContextifyContext::IsStillInitializing(const ContextifyContext* ctx) {
+@@ -487,6 +487,7 @@ bool ContextifyContext::IsStillInitializing(const ContextifyContext* ctx) {
  void ContextifyContext::PropertyGetterCallback(
      Local<Name> property,
      const PropertyCallbackInfo<Value>& args) {
@@ -35,7 +35,7 @@ index d873792ab95e41d54579f552c6c1fa43447ca4cd..708fa03d088e67a50dc4e69bb3f2cc14
    ContextifyContext* ctx = ContextifyContext::Get(args);
  
    // Still initializing
-@@ -467,6 +468,8 @@ void ContextifyContext::PropertyGetterCallback(
+@@ -494,6 +495,8 @@ void ContextifyContext::PropertyGetterCallback(
  
    Local<Context> context = ctx->context();
    Local<Object> sandbox = ctx->sandbox();
@@ -44,7 +44,7 @@ index d873792ab95e41d54579f552c6c1fa43447ca4cd..708fa03d088e67a50dc4e69bb3f2cc14
    MaybeLocal<Value> maybe_rv =
        sandbox->GetRealNamedProperty(context, property);
    if (maybe_rv.IsEmpty()) {
-@@ -476,6 +479,11 @@ void ContextifyContext::PropertyGetterCallback(
+@@ -503,6 +506,11 @@ void ContextifyContext::PropertyGetterCallback(
  
    Local<Value> rv;
    if (maybe_rv.ToLocal(&rv)) {

+ 1 - 1
patches/node/fix_crypto_tests_to_run_with_bssl.patch

@@ -608,7 +608,7 @@ index 61bd65fc92678c24baa3c0eb9ffb1ead64ace70b..cb690351696a811210b9d990ee4cde3c
    };
    assert.throws(() => crypto.scrypt('pass', 'salt', 1, options, () => {}),
 diff --git a/test/parallel/test-crypto-sign-verify.js b/test/parallel/test-crypto-sign-verify.js
-index 56e5c16c2867f019caccf42f228193cae6167150..dc585c44db9894ae57a5e11d453af03e1ea4f211 100644
+index 9dd586a1a1f9a00d9bb0af5b0532e81e7b96a5ce..1a0d0cfc09fb61d65472723ba54e1d0be69b5c68 100644
 --- a/test/parallel/test-crypto-sign-verify.js
 +++ b/test/parallel/test-crypto-sign-verify.js
 @@ -28,6 +28,7 @@ const keySize = 2048;

+ 4 - 4
patches/node/fix_expose_the_built-in_electron_module_via_the_esm_loader.patch

@@ -6,10 +6,10 @@ Subject: fix: expose the built-in electron module via the ESM loader
 This allows usage of `import { app } from 'electron'` and `import('electron')` natively in the browser + non-sandboxed renderer
 
 diff --git a/lib/internal/modules/esm/get_format.js b/lib/internal/modules/esm/get_format.js
-index 1931688e85d05ee2da4f88efb05d635cb43be233..afccc24392abff9eef2b9953fcffeb79ee71ad15 100644
+index 1fe5564545dbc86d7f2968274a25ee1579bcbf28..b876af21a0e97ae06dc344d9f78c8f5c7e403d43 100644
 --- a/lib/internal/modules/esm/get_format.js
 +++ b/lib/internal/modules/esm/get_format.js
-@@ -30,6 +30,7 @@ const protocolHandlers = {
+@@ -31,6 +31,7 @@ const protocolHandlers = {
    'http:': getHttpProtocolModuleFormat,
    'https:': getHttpProtocolModuleFormat,
    'node:'() { return 'builtin'; },
@@ -108,10 +108,10 @@ index 8f4b6b25d8889686d00613fd9821b0aa822a946a..89ca269294ee1afa7f5aeb0ac6b8958f
  // or as the initial entry point when the ESM loader handles a CommonJS entry.
  translators.set('commonjs', async function commonjsStrategy(url, source,
 diff --git a/lib/internal/url.js b/lib/internal/url.js
-index 4103775560644e4f1a78bf11da6cc07d5dc4cda2..474cf3b44d680c4c897553d5e98c3c43699e6592 100644
+index e6ed5466b8807a52633d8406824058bdc8c2ce13..e055facddf086eb8fb456b865ce006cdb7602b0a 100644
 --- a/lib/internal/url.js
 +++ b/lib/internal/url.js
-@@ -1459,6 +1459,8 @@ function fileURLToPath(path, options = kEmptyObject) {
+@@ -1485,6 +1485,8 @@ function fileURLToPath(path, options = kEmptyObject) {
      path = new URL(path);
    else if (!isURL(path))
      throw new ERR_INVALID_ARG_TYPE('path', ['string', 'URL'], path);

+ 2 - 2
patches/node/fix_expose_tracing_agent_and_use_tracing_tracingcontroller_instead.patch

@@ -7,10 +7,10 @@ Subject: fix: expose tracing::Agent and use tracing::TracingController instead
 This API is used by Electron to create Node's tracing controller.
 
 diff --git a/src/api/environment.cc b/src/api/environment.cc
-index cb4095dee52c5a5d40815c20c33065fd03ce0804..60be2353cf0e77287dfda965c820cf36655a7ce5 100644
+index 46106fa94b3055648e4f01cd28860d427268a253..e0bf37f09dceb93af58990438ab577a9d4b843e8 100644
 --- a/src/api/environment.cc
 +++ b/src/api/environment.cc
-@@ -558,6 +558,10 @@ MultiIsolatePlatform* GetMultiIsolatePlatform(IsolateData* env) {
+@@ -557,6 +557,10 @@ MultiIsolatePlatform* GetMultiIsolatePlatform(IsolateData* env) {
    return env->platform();
  }
  

+ 9 - 9
patches/node/fix_handle_boringssl_and_openssl_incompatibilities.patch

@@ -17,7 +17,7 @@ Upstreams:
 - https://github.com/nodejs/node/pull/39136
 
 diff --git a/src/crypto/crypto_cipher.cc b/src/crypto/crypto_cipher.cc
-index 67cd4f2adf15e7d8511f561c54163b1842e971af..88471fd6bc0b8a810bb55464cd2d1933d11a8623 100644
+index 4f0637f9511d1b90ae9d33760428dceb772667bd..5aba390c49613816ac359dfe995dc2c0a93f2206 100644
 --- a/src/crypto/crypto_cipher.cc
 +++ b/src/crypto/crypto_cipher.cc
 @@ -1088,7 +1088,7 @@ void PublicKeyCipher::Cipher(const FunctionCallbackInfo<Value>& args) {
@@ -109,7 +109,7 @@ index 85d48dfd2c15c453707bf6eb94e22f89b4f856b2..fe31a9a7f465a03d2de365cef392dfbb
    crypto::EVPKeyPointer key(raw_key);
  
 diff --git a/src/crypto/crypto_context.cc b/src/crypto/crypto_context.cc
-index e26e64834bee7fd9cd4e18bfe69a4f41d51fa8e9..a5b1ec5ea6284ab9892d5a2e576f369ae3bbac91 100644
+index cef0c877c67643d47da787eddb95ed5a410a941b..1b8af49a48f1a34a92d4f0b502d435f3a4ab5d8e 100644
 --- a/src/crypto/crypto_context.cc
 +++ b/src/crypto/crypto_context.cc
 @@ -63,7 +63,7 @@ inline X509_STORE* GetOrCreateRootCertStore() {
@@ -121,7 +121,7 @@ index e26e64834bee7fd9cd4e18bfe69a4f41d51fa8e9..a5b1ec5ea6284ab9892d5a2e576f369a
      if (!bio) return nullptr;
      ByteSource bsrc = ByteSource::FromStringOrBuffer(env, v);
      if (bsrc.size() > INT_MAX) return nullptr;
-@@ -861,10 +861,12 @@ void SecureContext::SetDHParam(const FunctionCallbackInfo<Value>& args) {
+@@ -882,10 +882,12 @@ void SecureContext::SetDHParam(const FunctionCallbackInfo<Value>& args) {
    // If the user specified "auto" for dhparams, the JavaScript layer will pass
    // true to this function instead of the original string. Any other string
    // value will be interpreted as custom DH parameters below.
@@ -135,7 +135,7 @@ index e26e64834bee7fd9cd4e18bfe69a4f41d51fa8e9..a5b1ec5ea6284ab9892d5a2e576f369a
    DHPointer dh;
    {
 diff --git a/src/crypto/crypto_dh.cc b/src/crypto/crypto_dh.cc
-index b4447102a8478639a5aa774e583834d79808603f..fa507b6d3c04691f44b3302058d2007a966306db 100644
+index dac37f52b9687cadfa2d02152241e9a6e4c16ddf..d47cfa4ad8707ed7f0a42e7fe176fec25be64305 100644
 --- a/src/crypto/crypto_dh.cc
 +++ b/src/crypto/crypto_dh.cc
 @@ -154,13 +154,11 @@ bool DiffieHellman::Init(BignumPointer&& bn_p, int g) {
@@ -237,7 +237,7 @@ index 3fa4a415dc911a13afd90dfb31c1ed4ad0fd268f..fa48dffc31342c44a1c1207b9d4c3dc7
      return EVPKeyCtxPointer();
  
 diff --git a/src/crypto/crypto_keys.cc b/src/crypto/crypto_keys.cc
-index ce28ec8f37a5e483b11284bc866cb649ad7b61cf..eaaa151a770a23a498984cf03c0e9b999a4ad8e8 100644
+index 35474c31bfc2e3692b7ca10e4ed7026b9c275dfb..43c42c14f75018d4705f218fe4ed7e5dacb46bb8 100644
 --- a/src/crypto/crypto_keys.cc
 +++ b/src/crypto/crypto_keys.cc
 @@ -1239,6 +1239,7 @@ void KeyObjectHandle::GetAsymmetricKeyType(
@@ -353,7 +353,7 @@ index 990638ec3993bde40ad3dd40d373d816ebc66a6a..63d971e1fe6b861e29c12f04563701b0
  }  // namespace
  
 diff --git a/src/env.h b/src/env.h
-index 1ca2d5ed40fa3c72256182fa4ca4b6a09190ca16..c6cc2c874b603f595a008a7d3bc229d6b9834f55 100644
+index 30561ab7a24c734be71ed29d963c11e2ea2c2b22..7cb77fb4f35a60fbda5b868798321ac8b6340bfa 100644
 --- a/src/env.h
 +++ b/src/env.h
 @@ -49,7 +49,7 @@
@@ -365,7 +365,7 @@ index 1ca2d5ed40fa3c72256182fa4ca4b6a09190ca16..c6cc2c874b603f595a008a7d3bc229d6
  #include <openssl/evp.h>
  #endif
  
-@@ -1040,7 +1040,7 @@ class Environment : public MemoryRetainer {
+@@ -1065,7 +1065,7 @@ class Environment : public MemoryRetainer {
      kExitInfoFieldCount
    };
  
@@ -388,7 +388,7 @@ index cf051585e779e2b03bd7b95fe5008b89cc7f8162..9de49c6828468fdf846dcd4ad445390f
  #if NODE_OPENSSL_HAS_QUIC
  #include <openssl/quic.h>
 diff --git a/src/node_options.cc b/src/node_options.cc
-index e94e4dbc959cee1fcab68799edc84745dfc07ec8..74955717117001393e8b55809b4e4a1424019dad 100644
+index dba59c5560c22899bd108789360f21fd85dd41bf..818baf611fcab7838a339f3ea137467653e270d0 100644
 --- a/src/node_options.cc
 +++ b/src/node_options.cc
 @@ -6,7 +6,7 @@
@@ -401,7 +401,7 @@ index e94e4dbc959cee1fcab68799edc84745dfc07ec8..74955717117001393e8b55809b4e4a14
  #endif
  
 diff --git a/src/node_options.h b/src/node_options.h
-index c978c339cbbb388f0f49d26ded0e92bb52a7973a..d13c97e8a0e1ea0212fb34a0178b3a7c74ff43e6 100644
+index 10c220f66122336215f25b9674acfdfe6df82a8e..e8b2243d24fe95ff31254071133fb646e186c07e 100644
 --- a/src/node_options.h
 +++ b/src/node_options.h
 @@ -11,7 +11,7 @@

+ 1 - 1
patches/node/fix_revert_src_lb_reducing_c_calls_of_esm_legacy_main_resolve.patch

@@ -142,7 +142,7 @@ index 69f73f829706deddc4f328b78af9d58434af647d..1d53a2a47423150e822bb917b2725d3a
  
  const encodedSepRegEx = /%2F|%5C/i;
 diff --git a/src/node_file.cc b/src/node_file.cc
-index 80ff36f2463035ed32cb8b7b826bfe94c339dbe2..cca6c6775bc8dd35b897498c7dd65b2e3957ee40 100644
+index 73ad5a1a2c092d7f8dac84585fb9b13e76e84e13..039f693de14bec248f93262ad70f2736c24827e3 100644
 --- a/src/node_file.cc
 +++ b/src/node_file.cc
 @@ -19,14 +19,11 @@

+ 1 - 1
patches/node/spec_add_iterator_to_global_intrinsics.patch

@@ -6,7 +6,7 @@ Subject: spec: add Iterator to global intrinsics
 Ref: https://chromium-review.googlesource.com/c/v8/v8/+/4266490
 
 diff --git a/test/common/globals.js b/test/common/globals.js
-index 8b9b6b34f6abaf713f362e8bcdbd140a86dfa767..7b5643a926d970e0e6c91d52b86ebd857d2cf062 100644
+index cb7c1629007ecfc6c6a1aae0e6d1e9a50f07d147..5d1c4415eeb09e92d062330afc0aecb1d297b6d3 100644
 --- a/test/common/globals.js
 +++ b/test/common/globals.js
 @@ -63,6 +63,7 @@ const intrinsics = new Set([

+ 0 - 45
patches/node/src_account_for_openssl_unexpected_version.patch

@@ -1,45 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Shelley Vohr <[email protected]>
-Date: Thu, 25 Jul 2024 12:19:41 +0200
-Subject: src: account for OpenSSL unexpected version
-
-Fixes a crash that occurs because the logic to parse for an OpenSSL
-version didn't account for OpenSSL_version returning a value that
-doesn't match the expected pattern of OpenSSL 1.1.0i 14 Aug 2018.
-In Electron's case, OpenSSL_version returns just BoringSSL, which in
-combination with the search logic not accounting for the delimiter not
-being present caused an out-of-bounds crash:
-
-out_of_range was thrown in -fno-exceptions mode with message "basic_string"
-
-This fixes that by checking for the null terminator and returning 0.0.0
-when the target delimiter isn't present.
-
-Upstreamed at https://github.com/nodejs/node/pull/54038
-
-diff --git a/src/node_metadata.cc b/src/node_metadata.cc
-index 985d44b3cd1f1aa5c09f99e868083f2e48c7e32b..1876249eb88065f649aee2c8348f42ec90ab70da 100644
---- a/src/node_metadata.cc
-+++ b/src/node_metadata.cc
-@@ -48,14 +48,19 @@ Metadata metadata;
- 
- #if HAVE_OPENSSL
- static constexpr size_t search(const char* s, char c, size_t n = 0) {
--  return *s == c ? n : search(s + 1, c, n + 1);
-+  return *s == '\0' ? n : (*s == c ? n : search(s + 1, c, n + 1));
- }
- 
- static inline std::string GetOpenSSLVersion() {
-   // sample openssl version string format
-   // for reference: "OpenSSL 1.1.0i 14 Aug 2018"
-   const char* version = OpenSSL_version(OPENSSL_VERSION);
--  const size_t start = search(version, ' ') + 1;
-+  const size_t first_space = search(version, ' ');
-+  if (version[first_space] == '\0') {
-+    return std::string("0.0.0");
-+  }
-+
-+  const size_t start = first_space + 1;
-   const size_t len = search(&version[start], ' ');
-   return std::string(version, start, len);
- }

+ 2 - 2
patches/node/src_do_not_use_deprecated_v8_api.patch

@@ -104,10 +104,10 @@ index 3e37aa8b0c9696cceb3f3cfab9721f38c74a2fba..78f20de6b127961e9de7b5caaeca702e
  
    SetMethod(isolate, target, "getCacheUsage", BuiltinLoader::GetCacheUsage);
 diff --git a/src/node_external_reference.h b/src/node_external_reference.h
-index a3317d25ad6a963751073287dba71cc766ada2a2..9238f2d4d7376b22e264dbc9359b480937d29676 100644
+index 4e2ad9024020fa0851da41da44afccdf188c7044..c4aba23510872d66b58a1adc88cdd1ee85a86cfe 100644
 --- a/src/node_external_reference.h
 +++ b/src/node_external_reference.h
-@@ -57,8 +57,6 @@ class ExternalReferenceRegistry {
+@@ -64,8 +64,6 @@ class ExternalReferenceRegistry {
    V(CFunctionWithBool)                                                         \
    V(const v8::CFunctionInfo*)                                                  \
    V(v8::FunctionCallback)                                                      \

+ 6 - 6
patches/node/src_remove_dependency_on_wrapper-descriptor-based_cppheap.patch

@@ -16,7 +16,7 @@ patch:
 (cherry picked from commit 30329d06235a9f9733b1d4da479b403462d1b326)
 
 diff --git a/src/env-inl.h b/src/env-inl.h
-index 18b1461e50e456728cbc5e26259d06e7602a8d11..c5973e430debcf354afb9c9288c9ba8cf8f538ee 100644
+index d98a32d6ec311459877bc3b0de33cca4766aeda7..9fc934975b015b97ddd84bf3eea5d53144130035 100644
 --- a/src/env-inl.h
 +++ b/src/env-inl.h
 @@ -62,31 +62,6 @@ inline uv_loop_t* IsolateData::event_loop() const {
@@ -52,7 +52,7 @@ index 18b1461e50e456728cbc5e26259d06e7602a8d11..c5973e430debcf354afb9c9288c9ba8c
    return &(wrapper_data_->cppgc_id);
  }
 diff --git a/src/env.cc b/src/env.cc
-index ea0ae4e08ec7dd98721bc89d2fe80fa47eaddfec..0f9846baeef6fd490cdc43893e29ea2d0a731d1d 100644
+index 38802b1e9acf9b3e99fdc4f39770e896393befe3..e0433e29ca98c42a38d1da6d66085fdea1edde29 100644
 --- a/src/env.cc
 +++ b/src/env.cc
 @@ -22,6 +22,7 @@
@@ -86,7 +86,7 @@ index ea0ae4e08ec7dd98721bc89d2fe80fa47eaddfec..0f9846baeef6fd490cdc43893e29ea2d
  constexpr uint16_t kDefaultCppGCEmbedderID = 0x90de;
  Mutex IsolateData::isolate_data_mutex_;
  std::unordered_map<uint16_t, std::unique_ptr<PerIsolateWrapperData>>
-@@ -551,36 +559,16 @@ IsolateData::IsolateData(Isolate* isolate,
+@@ -567,36 +575,16 @@ IsolateData::IsolateData(Isolate* isolate,
    v8::CppHeap* cpp_heap = isolate->GetCppHeap();
  
    uint16_t cppgc_id = kDefaultCppGCEmbedderID;
@@ -130,7 +130,7 @@ index ea0ae4e08ec7dd98721bc89d2fe80fa47eaddfec..0f9846baeef6fd490cdc43893e29ea2d
  
    {
      // GC could still be run after the IsolateData is destroyed, so we store
-@@ -612,11 +600,12 @@ IsolateData::~IsolateData() {
+@@ -628,11 +616,12 @@ IsolateData::~IsolateData() {
    }
  }
  
@@ -146,10 +146,10 @@ index ea0ae4e08ec7dd98721bc89d2fe80fa47eaddfec..0f9846baeef6fd490cdc43893e29ea2d
  
  void IsolateData::MemoryInfo(MemoryTracker* tracker) const {
 diff --git a/src/env.h b/src/env.h
-index c6cc2c874b603f595a008a7d3bc229d6b9834f55..f378e810e8b48dd07ec25c7eae7923767ef25270 100644
+index 7cb77fb4f35a60fbda5b868798321ac8b6340bfa..06746554e1d60a9377ff6d7d970220f3fa88e4ac 100644
 --- a/src/env.h
 +++ b/src/env.h
-@@ -164,10 +164,6 @@ class NODE_EXTERN_PRIVATE IsolateData : public MemoryRetainer {
+@@ -174,10 +174,6 @@ class NODE_EXTERN_PRIVATE IsolateData : public MemoryRetainer {
    uint16_t* embedder_id_for_cppgc() const;
    uint16_t* embedder_id_for_non_cppgc() const;
  

+ 1 - 1
patches/node/src_stop_using_deprecated_fields_of_fastapicallbackoptions.patch

@@ -12,7 +12,7 @@ branch of Node.js. This patch can be removed when Electron upgrades to
 a stable Node release that contains the change. -- Charles)
 
 diff --git a/src/histogram.cc b/src/histogram.cc
-index 4f58359fe58529329fca8b13d4d4655d87a097f2..18983209db834d10faad6c2a56658ab060bcd097 100644
+index 4dbdea9be5721486d71a9dda77311b4919d450a3..4aacaa2a5d12533a039b4b96cb7f1fd79063d50f 100644
 --- a/src/histogram.cc
 +++ b/src/histogram.cc
 @@ -193,7 +193,8 @@ void HistogramBase::FastRecord(Local<Value> receiver,

+ 1 - 1
patches/node/src_use_new_v8_api_to_define_stream_accessor.patch

@@ -80,7 +80,7 @@ index 5c16d0d1b32e2d056f4fcfa0e01781292932a0fa..ce6277dec5a2b9313ecd3699b39ec175
    // This is a bit of a hack. See the override in async_wrap.cc for details.
    virtual bool IsDoneInitializing() const;
 diff --git a/src/stream_base.cc b/src/stream_base.cc
-index af714734f49b836de79ebb25e61f1376b757d5ed..a8f9f98d413c8573eb22960a4cefb47408215469 100644
+index d2649ea0a649bb2f6c6becf1891c0b6d773c1a62..9d855c2992492d3394d9f8af4e53781027a2dd83 100644
 --- a/src/stream_base.cc
 +++ b/src/stream_base.cc
 @@ -492,6 +492,29 @@ Local<Object> StreamBase::GetObject() {

+ 37 - 10
patches/node/support_v8_sandboxed_pointers.patch

@@ -7,7 +7,7 @@ This refactors several allocators to allocate within the V8 memory cage,
 allowing them to be compatible with the V8_SANDBOXED_POINTERS feature.
 
 diff --git a/src/api/environment.cc b/src/api/environment.cc
-index 60be2353cf0e77287dfda965c820cf36655a7ce5..fe41619f45913fe31a59771c8d1af6cde3b89f66 100644
+index e0bf37f09dceb93af58990438ab577a9d4b843e8..b9098d102b40adad7fafcc331ac62870617019b9 100644
 --- a/src/api/environment.cc
 +++ b/src/api/environment.cc
 @@ -101,6 +101,14 @@ MaybeLocal<Value> PrepareStackTraceCallback(Local<Context> context,
@@ -105,10 +105,10 @@ index 63d971e1fe6b861e29c12f04563701b01fdfb976..f39652a6f5196531cd78ce74e91076b1
  void SecureHeapUsed(const FunctionCallbackInfo<Value>& args) {
  #ifndef OPENSSL_IS_BORINGSSL
 diff --git a/src/crypto/crypto_util.h b/src/crypto/crypto_util.h
-index 0ae2946e5e5884d6d095c039a3b4dc537e0f29a2..8c06e81de3ae93d82bf7eaf1bada77164a130695 100644
+index 4ba261014695cf1aa8eb53b21a2873f4c4ea8e43..b695d131bcdc331974f544924138bb5eedc50c9f 100644
 --- a/src/crypto/crypto_util.h
 +++ b/src/crypto/crypto_util.h
-@@ -280,7 +280,7 @@ class ByteSource {
+@@ -285,7 +285,7 @@ class ByteSource {
    // Creates a v8::BackingStore that takes over responsibility for
    // any allocated data. The ByteSource will be reset with size = 0
    // after being called.
@@ -118,10 +118,10 @@ index 0ae2946e5e5884d6d095c039a3b4dc537e0f29a2..8c06e81de3ae93d82bf7eaf1bada7716
    v8::Local<v8::ArrayBuffer> ToArrayBuffer(Environment* env);
  
 diff --git a/src/node_i18n.cc b/src/node_i18n.cc
-index d45325954d980724f80d49298bbe837197237a9b..ccea18080142bd9cba3765dbbec61c2a63406667 100644
+index 2aa7cd98ecc179519a6bb1932dafa86a38bda4f5..79376bef2e674f05fd95380dd419e8778cb98623 100644
 --- a/src/node_i18n.cc
 +++ b/src/node_i18n.cc
-@@ -105,7 +105,7 @@ namespace {
+@@ -106,7 +106,7 @@ namespace {
  
  template <typename T>
  MaybeLocal<Object> ToBufferEndian(Environment* env, MaybeStackBuffer<T>* buf) {
@@ -130,11 +130,38 @@ index d45325954d980724f80d49298bbe837197237a9b..ccea18080142bd9cba3765dbbec61c2a
    if (ret.IsEmpty())
      return ret;
  
+@@ -183,7 +183,7 @@ MaybeLocal<Object> TranscodeLatin1ToUcs2(Environment* env,
+     return {};
+   }
+ 
+-  return Buffer::New(env, &destbuf);
++  return Buffer::Copy(env, reinterpret_cast<char*>(destbuf.out()), destbuf.length() * sizeof(UChar));
+ }
+ 
+ MaybeLocal<Object> TranscodeFromUcs2(Environment* env,
+@@ -228,7 +228,7 @@ MaybeLocal<Object> TranscodeUcs2FromUtf8(Environment* env,
+     return {};
+   }
+ 
+-  return Buffer::New(env, &destbuf);
++  return Buffer::Copy(env, reinterpret_cast<char*>(destbuf.out()), destbuf.length() * sizeof(UChar));
+ }
+ 
+ MaybeLocal<Object> TranscodeUtf8FromUcs2(Environment* env,
+@@ -252,7 +252,7 @@ MaybeLocal<Object> TranscodeUtf8FromUcs2(Environment* env,
+     return {};
+   }
+ 
+-  return Buffer::New(env, &destbuf);
++  return Buffer::Copy(env, reinterpret_cast<char*>(destbuf.out()), destbuf.length() * sizeof(char));
+ }
+ 
+ constexpr const char* EncodingName(const enum encoding encoding) {
 diff --git a/src/node_internals.h b/src/node_internals.h
-index e04fadd7f83e52fe965d8c73916a56f60425ba3d..5dff80ee287256ba40bfa496df6db60a18fbb9d7 100644
+index 6264f23d54d6028bb0158f12a9296ba67a846358..613300215766aeb108219b0d1c3b95ee02db964f 100644
 --- a/src/node_internals.h
 +++ b/src/node_internals.h
-@@ -118,7 +118,9 @@ v8::Maybe<bool> InitializePrimordials(v8::Local<v8::Context> context);
+@@ -117,7 +117,9 @@ v8::Maybe<bool> InitializePrimordials(v8::Local<v8::Context> context);
  
  class NodeArrayBufferAllocator : public ArrayBufferAllocator {
   public:
@@ -145,7 +172,7 @@ index e04fadd7f83e52fe965d8c73916a56f60425ba3d..5dff80ee287256ba40bfa496df6db60a
  
    void* Allocate(size_t size) override;  // Defined in src/node.cc
    void* AllocateUninitialized(size_t size) override;
-@@ -136,7 +138,7 @@ class NodeArrayBufferAllocator : public ArrayBufferAllocator {
+@@ -135,7 +137,7 @@ class NodeArrayBufferAllocator : public ArrayBufferAllocator {
    }
  
   private:
@@ -155,7 +182,7 @@ index e04fadd7f83e52fe965d8c73916a56f60425ba3d..5dff80ee287256ba40bfa496df6db60a
  
    // Delegate to V8's allocator for compatibility with the V8 memory cage.
 diff --git a/src/node_serdes.cc b/src/node_serdes.cc
-index 6698a1df81cb4e0947c86fb30c2d77fca8e2d9d1..dad297652b347819805b09fbfd869f1d037e31c1 100644
+index 7a70997bc024efa4f3ff4cabe30d5e88dcc7bc78..438d6e581a2ee55216f9a9945204b07824fc28a0 100644
 --- a/src/node_serdes.cc
 +++ b/src/node_serdes.cc
 @@ -29,6 +29,11 @@ using v8::ValueSerializer;
@@ -238,7 +265,7 @@ index 6698a1df81cb4e0947c86fb30c2d77fca8e2d9d1..dad297652b347819805b09fbfd869f1d
    if (!buf.IsEmpty()) {
      args.GetReturnValue().Set(buf.ToLocalChecked());
 diff --git a/src/node_trace_events.cc b/src/node_trace_events.cc
-index c4960ee1427e3b29b873135a815a7a09bedcfb73..2c6d8cdeb37f7dce9f29b8f3b260036ae23e6fb5 100644
+index 9787b14352753c5e0f8dc2b90093680e7cd10f1a..31af9e62396368af1b81f8841a705fd313df2b9f 100644
 --- a/src/node_trace_events.cc
 +++ b/src/node_trace_events.cc
 @@ -132,12 +132,28 @@ static void GetCategoryEnabledBuffer(const FunctionCallbackInfo<Value>& args) {

+ 2 - 2
patches/node/test_formally_mark_some_tests_as_flaky.patch

@@ -7,7 +7,7 @@ Instead of disabling the tests, flag them as flaky so they still run
 but don't cause CI failures on flakes.
 
 diff --git a/test/parallel/parallel.status b/test/parallel/parallel.status
-index 28f25e4be7e3104894e53a22e50f5474e0b7bc76..2525b094e1eb936d311a0b57fc9579df360883d6 100644
+index 79a953df7da64b7d7580e099a5cc5160e7842999..94616df356cab50c8ef4099e7863f5986deed377 100644
 --- a/test/parallel/parallel.status
 +++ b/test/parallel/parallel.status
 @@ -5,6 +5,16 @@ prefix parallel
@@ -28,7 +28,7 @@ index 28f25e4be7e3104894e53a22e50f5474e0b7bc76..2525b094e1eb936d311a0b57fc9579df
  test-net-write-fully-async-hex-string: PASS, FLAKY
  # https://github.com/nodejs/node/issues/52273
 diff --git a/test/sequential/sequential.status b/test/sequential/sequential.status
-index ccab879b6e5fcdcc0d3a4b790b97db94d92f1a59..11339325697ae98f6996101163679590451c0b81 100644
+index a539649d5537376a6a2ac9a7a46051b8648f0cb1..a03c86b752772be7ae36fab31faeccf3b0ccff64 100644
 --- a/test/sequential/sequential.status
 +++ b/test/sequential/sequential.status
 @@ -7,6 +7,18 @@ prefix sequential

+ 2 - 2
patches/node/test_match_wpt_streams_transferable_transform-stream-members_any_js.patch

@@ -7,10 +7,10 @@ Subject: test: match wpt/streams/transferable/transform-stream-members.any.js
 All four of this calls should fail - see third_party/blink/web_tests/external/wpt/streams/transferable/transform-stream-members.any-expected.txt
 
 diff --git a/test/wpt/status/streams.json b/test/wpt/status/streams.json
-index 3b6e0ce6429f9dddb0b1a6882ce9e3a5158300e5..7ec49a378bfc84728b473d5df69675fff1dfdfef 100644
+index 5425c86bba85079a44745779d998337aaa063df1..775661cd59b14132c9a811e448792ea02198f949 100644
 --- a/test/wpt/status/streams.json
 +++ b/test/wpt/status/streams.json
-@@ -50,7 +50,9 @@
+@@ -60,7 +60,9 @@
      "fail": {
        "expected": [
          "Transferring [object TransformStream],[object ReadableStream] should fail",