From 54a617caab3871ccffbc5e3a9bd2a86381fa5ebb Mon Sep 17 00:00:00 2001 From: "electron-roller[bot]" <84116207+electron-roller[bot]@users.noreply.github.com> Date: Tue, 18 Nov 2025 09:34:51 -0500 Subject: [PATCH] chore: bump node to v24.11.1 (main) (#48917) * chore: bump node in DEPS to v24.11.1 * src: add a default branch for module phase https://github.com/nodejs/node/pull/60261 * src: conditionally disable source phase imports by default https://github.com/nodejs/node/pull/60364 * chore: update patches * src: update locks to use DictionaryTemplate and other minor cleanups https://github.com/nodejs/node/pull/60061 * deps: update simdjson to 4.0.7 https://github.com/nodejs/node/pull/59883 * test: move sea tests into test/sea https://github.com/nodejs/node/pull/60250 * fixup deps: update simdjson to 4.0.7a * src: conditionally disable source phase imports by default https://github.com/nodejs/node/pull/60364 * module: handle null source from async loader hooks in sync hooks https://github.com/nodejs/node/pull/59929 * Revert "src: conditionally disable source phase imports by default" This reverts commit 5f85b84262d8895850272f4d10a9f8dde221a06d. * src: allow disabling JS source phase imports https://github.com/nodejs/node/pull/60364 --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt Co-authored-by: Shelley Vohr --- DEPS | 2 +- patches/node/.patches | 1 - ...lete_deprecated_fields_on_v8_isolate.patch | 4 +- .../api_remove_deprecated_getisolate.patch | 91 +- patches/node/build_add_gn_build_files.patch | 10 +- patches/node/build_enable_perfetto.patch | 2 +- ...compilation_fails_if_not_using_a_new.patch | 8 +- ...e_clang_as_default_compiler_on_macos.patch | 2 +- ...de_entrypoint_to_be_a_builtin_module.patch | 4 +- ...deprecation_ftbfs_in_simdjson_header.patch | 45 +- ...e_expose_importmoduledynamically_and.patch | 22 +- ..._import_defer_as_ns_and_import_defer.patch | 48 - ...e_js_source_phase_imports_by_default.patch | 14 +- ..._values_for_variables_in_common_gypi.patch | 2 +- ...tch_in_renderer_and_worker_processes.patch | 18 +- .../node/fix_cppgc_initializing_twice.patch | 4 +- .../fix_crypto_tests_to_run_with_bssl.patch | 875 +----------------- ..._do_not_resolve_electron_entrypoints.patch | 6 +- ...se_readfilesync_override_for_modules.patch | 2 +- ...n_electron_module_via_the_esm_loader.patch | 34 +- ...in_esm_loaders_to_apply_asar_patches.patch | 10 +- ...ix_remove_deprecated_errno_constants.patch | 2 +- .../pass_all_globals_through_require.patch | 6 +- ...ch_cppgc_heap_on_v8_isolate_creation.patch | 14 +- ...cp_utf8_for_wide_file_names_on_win32.patch | 10 +- .../node/support_v8_sandboxed_pointers.patch | 14 +- ...st_formally_mark_some_tests_as_flaky.patch | 4 +- script/node-disabled-tests.json | 4 +- 28 files changed, 191 insertions(+), 1067 deletions(-) delete mode 100644 patches/node/chore_handle_support_for_import_defer_as_ns_and_import_defer.patch diff --git a/DEPS b/DEPS index 8a6ec729eb..8fbca1d559 100644 --- a/DEPS +++ b/DEPS @@ -4,7 +4,7 @@ vars = { 'chromium_version': '144.0.7526.0', 'node_version': - 'v24.11.0', + 'v24.11.1', 'nan_version': '675cefebca42410733da8a454c8d9391fcebfbc2', 'squirrel.mac_version': diff --git a/patches/node/.patches b/patches/node/.patches index 619b6affec..bfc8753752 100644 --- a/patches/node/.patches +++ b/patches/node/.patches @@ -37,7 +37,6 @@ fix_allow_disabling_fetch_in_renderer_and_worker_processes.patch feat_disable_js_source_phase_imports_by_default.patch fix_avoid_external_memory_leak_on_invalid_tls_protocol_versions.patch lib_check_sharedarraybuffer_existence_in_fast-utf8-stream.patch -chore_handle_support_for_import_defer_as_ns_and_import_defer.patch api_delete_deprecated_fields_on_v8_isolate.patch api_promote_deprecation_of_v8_context_and_v8_object_api_methods.patch src_use_cp_utf8_for_wide_file_names_on_win32.patch diff --git a/patches/node/api_delete_deprecated_fields_on_v8_isolate.patch b/patches/node/api_delete_deprecated_fields_on_v8_isolate.patch index c8896e87c5..319a9c6a6c 100644 --- a/patches/node/api_delete_deprecated_fields_on_v8_isolate.patch +++ b/patches/node/api_delete_deprecated_fields_on_v8_isolate.patch @@ -6,10 +6,10 @@ Subject: Delete deprecated fields on v8::Isolate https://chromium-review.googlesource.com/c/v8/v8/+/7081397 diff --git a/src/api/environment.cc b/src/api/environment.cc -index 14be033113bfb13c64e5f99446afaf0cb2aa16a9..3eccf4ce7fcd13091186086456e60334f95f643e 100644 +index ea3e9374c30be92ba5668e33773ffbb2aef55b30..44ba3c42c7a980eee19e1aadcbe7999eefeda989 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc -@@ -225,8 +225,6 @@ void SetIsolateCreateParamsForNode(Isolate::CreateParams* params) { +@@ -231,8 +231,6 @@ void SetIsolateCreateParamsForNode(Isolate::CreateParams* params) { // heap based on the actual physical memory. params->constraints.ConfigureDefaults(total_memory, 0); } diff --git a/patches/node/api_remove_deprecated_getisolate.patch b/patches/node/api_remove_deprecated_getisolate.patch index 8b381856d1..a8f0fe1931 100644 --- a/patches/node/api_remove_deprecated_getisolate.patch +++ b/patches/node/api_remove_deprecated_getisolate.patch @@ -6,10 +6,10 @@ Subject: Remove deprecated `GetIsolate` https://chromium-review.googlesource.com/c/v8/v8/+/6905244 diff --git a/src/api/environment.cc b/src/api/environment.cc -index 072deb1fa70313e33397f6ff994e3f3548e86092..14be033113bfb13c64e5f99446afaf0cb2aa16a9 100644 +index 451796ffc4ec93b6e317dd49d92070c61aca04e5..ea3e9374c30be92ba5668e33773ffbb2aef55b30 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc -@@ -669,7 +669,7 @@ std::unique_ptr MultiIsolatePlatform::Create( +@@ -687,7 +687,7 @@ std::unique_ptr MultiIsolatePlatform::Create( MaybeLocal GetPerContextExports(Local context, IsolateData* isolate_data) { @@ -18,7 +18,7 @@ index 072deb1fa70313e33397f6ff994e3f3548e86092..14be033113bfb13c64e5f99446afaf0c EscapableHandleScope handle_scope(isolate); Local global = context->Global(); -@@ -715,7 +715,7 @@ void ProtoThrower(const FunctionCallbackInfo& info) { +@@ -733,7 +733,7 @@ void ProtoThrower(const FunctionCallbackInfo& info) { // This runs at runtime, regardless of whether the context // is created from a snapshot. Maybe InitializeContextRuntime(Local context) { @@ -27,7 +27,7 @@ index 072deb1fa70313e33397f6ff994e3f3548e86092..14be033113bfb13c64e5f99446afaf0c HandleScope handle_scope(isolate); // When `IsCodeGenerationFromStringsAllowed` is true, V8 takes the fast path -@@ -794,7 +794,7 @@ Maybe InitializeContextRuntime(Local context) { +@@ -812,7 +812,7 @@ Maybe InitializeContextRuntime(Local context) { } Maybe InitializeBaseContextForSnapshot(Local context) { @@ -36,7 +36,7 @@ index 072deb1fa70313e33397f6ff994e3f3548e86092..14be033113bfb13c64e5f99446afaf0c HandleScope handle_scope(isolate); // Delete `Intl.v8BreakIterator` -@@ -819,7 +819,7 @@ Maybe InitializeBaseContextForSnapshot(Local context) { +@@ -837,7 +837,7 @@ Maybe InitializeBaseContextForSnapshot(Local context) { } Maybe InitializeMainContextForSnapshot(Local context) { @@ -45,7 +45,7 @@ index 072deb1fa70313e33397f6ff994e3f3548e86092..14be033113bfb13c64e5f99446afaf0c HandleScope handle_scope(isolate); // Initialize the default values. -@@ -837,7 +837,7 @@ Maybe InitializeMainContextForSnapshot(Local context) { +@@ -855,7 +855,7 @@ Maybe InitializeMainContextForSnapshot(Local context) { MaybeLocal InitializePrivateSymbols(Local context, IsolateData* isolate_data) { CHECK(isolate_data); @@ -54,7 +54,7 @@ index 072deb1fa70313e33397f6ff994e3f3548e86092..14be033113bfb13c64e5f99446afaf0c EscapableHandleScope scope(isolate); Context::Scope context_scope(context); -@@ -861,7 +861,7 @@ MaybeLocal InitializePrivateSymbols(Local context, +@@ -879,7 +879,7 @@ MaybeLocal InitializePrivateSymbols(Local context, MaybeLocal InitializePerIsolateSymbols(Local context, IsolateData* isolate_data) { CHECK(isolate_data); @@ -63,7 +63,7 @@ index 072deb1fa70313e33397f6ff994e3f3548e86092..14be033113bfb13c64e5f99446afaf0c EscapableHandleScope scope(isolate); Context::Scope context_scope(context); -@@ -887,7 +887,7 @@ MaybeLocal InitializePerIsolateSymbols(Local context, +@@ -905,7 +905,7 @@ MaybeLocal InitializePerIsolateSymbols(Local context, Maybe InitializePrimordials(Local context, IsolateData* isolate_data) { // Run per-context JS files. @@ -159,10 +159,10 @@ index a78817467518245c4a190e870e0eb30658eafcdb..13dcf0e9c2c86486d1e43763033f43ac } else { info.js_execution_async_resources = 0; diff --git a/src/inspector/network_agent.cc b/src/inspector/network_agent.cc -index d136b72e598d07f3c2fcc9c2c8ba84f5ff1aaad7..649008aafc8d68cfecb02c28ad1e26a9b749f7bd 100644 +index aacd4e8cb83c88649537ab5d9e1ce752ea5b87a8..a47ea86adb9da081a125b6590bcd96f43053d44b 100644 --- a/src/inspector/network_agent.cc +++ b/src/inspector/network_agent.cc -@@ -29,31 +29,31 @@ using v8::Value; +@@ -31,31 +31,31 @@ constexpr size_t kDefaultMaxTotalBufferSize = 100 * 1024 * 1024; // 100MB Maybe ObjectGetProtocolString(v8::Local context, Local object, Local property) { @@ -200,7 +200,7 @@ index d136b72e598d07f3c2fcc9c2c8ba84f5ff1aaad7..649008aafc8d68cfecb02c28ad1e26a9 .ToLocal(&value) || !value->IsNumber()) { return Nothing(); -@@ -65,9 +65,9 @@ Maybe ObjectGetDouble(v8::Local context, +@@ -67,9 +67,9 @@ Maybe ObjectGetDouble(v8::Local context, Maybe ObjectGetInt(v8::Local context, Local object, const char* property) { @@ -212,7 +212,7 @@ index d136b72e598d07f3c2fcc9c2c8ba84f5ff1aaad7..649008aafc8d68cfecb02c28ad1e26a9 .ToLocal(&value) || !value->IsInt32()) { return Nothing(); -@@ -79,9 +79,9 @@ Maybe ObjectGetInt(v8::Local context, +@@ -81,9 +81,9 @@ Maybe ObjectGetInt(v8::Local context, Maybe ObjectGetBool(v8::Local context, Local object, const char* property) { @@ -224,7 +224,7 @@ index d136b72e598d07f3c2fcc9c2c8ba84f5ff1aaad7..649008aafc8d68cfecb02c28ad1e26a9 .ToLocal(&value) || !value->IsBoolean()) { return Nothing(); -@@ -93,9 +93,9 @@ Maybe ObjectGetBool(v8::Local context, +@@ -95,9 +95,9 @@ Maybe ObjectGetBool(v8::Local context, MaybeLocal ObjectGetObject(v8::Local context, Local object, const char* property) { @@ -236,7 +236,7 @@ index d136b72e598d07f3c2fcc9c2c8ba84f5ff1aaad7..649008aafc8d68cfecb02c28ad1e26a9 .ToLocal(&value) || !value->IsObject()) { return {}; -@@ -106,7 +106,7 @@ MaybeLocal ObjectGetObject(v8::Local context, +@@ -108,7 +108,7 @@ MaybeLocal ObjectGetObject(v8::Local context, // Create a protocol::Network::Headers from the v8 object. std::unique_ptr createHeadersFromObject( v8::Local context, Local headers_obj) { @@ -245,7 +245,7 @@ index d136b72e598d07f3c2fcc9c2c8ba84f5ff1aaad7..649008aafc8d68cfecb02c28ad1e26a9 std::unique_ptr dict = protocol::DictionaryValue::create(); -@@ -127,7 +127,7 @@ std::unique_ptr createHeadersFromObject( +@@ -129,7 +129,7 @@ std::unique_ptr createHeadersFromObject( .To(&property_value)) { return {}; } @@ -254,7 +254,7 @@ index d136b72e598d07f3c2fcc9c2c8ba84f5ff1aaad7..649008aafc8d68cfecb02c28ad1e26a9 property_value); } -@@ -137,7 +137,7 @@ std::unique_ptr createHeadersFromObject( +@@ -139,7 +139,7 @@ std::unique_ptr createHeadersFromObject( // Create a protocol::Network::Request from the v8 object. std::unique_ptr createRequestFromObject( v8::Local context, Local request) { @@ -263,7 +263,7 @@ index d136b72e598d07f3c2fcc9c2c8ba84f5ff1aaad7..649008aafc8d68cfecb02c28ad1e26a9 protocol::String url; if (!ObjectGetProtocolString(context, request, "url").To(&url)) { return {}; -@@ -169,7 +169,7 @@ std::unique_ptr createRequestFromObject( +@@ -171,7 +171,7 @@ std::unique_ptr createRequestFromObject( // Create a protocol::Network::Response from the v8 object. std::unique_ptr createResponseFromObject( v8::Local context, Local response) { @@ -272,7 +272,7 @@ index d136b72e598d07f3c2fcc9c2c8ba84f5ff1aaad7..649008aafc8d68cfecb02c28ad1e26a9 protocol::String url; if (!ObjectGetProtocolString(context, response, "url").To(&url)) { return {}; -@@ -210,7 +210,7 @@ std::unique_ptr createResponseFromObject( +@@ -212,7 +212,7 @@ std::unique_ptr createResponseFromObject( std::unique_ptr createWebSocketResponse( v8::Local context, Local response) { @@ -295,7 +295,7 @@ index 27aeac589b19cd681923fb848ce5f36c66fc05e2..5f2900869763f40cac54e3cb3fe2e24e module_api_version(module_api_version) { napi_clear_last_error(this); diff --git a/src/module_wrap.cc b/src/module_wrap.cc -index 8fed194cbae9ce75bd0805b4df30b4de64fbbefa..a584e3a80adb69d2028dc79450349823ab973a58 100644 +index fa2f28989be19e8ea8f53b990ae96be92ef3c3a3..c26d1301d7b81a6c281d5465bfb29a5786b09dc2 100644 --- a/src/module_wrap.cc +++ b/src/module_wrap.cc @@ -99,7 +99,7 @@ ModuleCacheKey ModuleCacheKey::From(Local context, @@ -307,7 +307,7 @@ index 8fed194cbae9ce75bd0805b4df30b4de64fbbefa..a584e3a80adb69d2028dc79450349823 std::size_t h1 = specifier->GetIdentityHash(); size_t num_attributes = import_attributes->Length() / elements_per_attribute; ImportAttributeVector attributes; -@@ -1022,7 +1022,7 @@ MaybeLocal ModuleWrap::ResolveModuleCallback( +@@ -1023,7 +1023,7 @@ MaybeLocal ModuleWrap::ResolveModuleCallback( return {}; } DCHECK_NOT_NULL(resolved_module); @@ -316,7 +316,7 @@ index 8fed194cbae9ce75bd0805b4df30b4de64fbbefa..a584e3a80adb69d2028dc79450349823 } // static -@@ -1046,7 +1046,7 @@ MaybeLocal ModuleWrap::ResolveSourceCallback( +@@ -1047,7 +1047,7 @@ MaybeLocal ModuleWrap::ResolveSourceCallback( Local url = resolved_module->object() ->GetInternalField(ModuleWrap::kURLSlot) .As(); @@ -325,7 +325,7 @@ index 8fed194cbae9ce75bd0805b4df30b4de64fbbefa..a584e3a80adb69d2028dc79450349823 return {}; } CHECK(module_source_object->IsObject()); -@@ -1059,7 +1059,7 @@ Maybe ModuleWrap::ResolveModule( +@@ -1060,7 +1060,7 @@ Maybe ModuleWrap::ResolveModule( Local specifier, Local import_attributes, Local referrer) { @@ -334,7 +334,7 @@ index 8fed194cbae9ce75bd0805b4df30b4de64fbbefa..a584e3a80adb69d2028dc79450349823 Environment* env = Environment::GetCurrent(context); if (env == nullptr) { THROW_ERR_EXECUTION_ENVIRONMENT_NOT_AVAILABLE(isolate); -@@ -1104,7 +1104,7 @@ MaybeLocal ImportModuleDynamicallyWithPhase( +@@ -1105,7 +1105,7 @@ MaybeLocal ImportModuleDynamicallyWithPhase( Local specifier, ModuleImportPhase phase, Local import_attributes) { @@ -343,7 +343,7 @@ index 8fed194cbae9ce75bd0805b4df30b4de64fbbefa..a584e3a80adb69d2028dc79450349823 Environment* env = Environment::GetCurrent(context); if (env == nullptr) { THROW_ERR_EXECUTION_ENVIRONMENT_NOT_AVAILABLE(isolate); -@@ -1346,7 +1346,7 @@ MaybeLocal LinkRequireFacadeWithOriginal( +@@ -1347,7 +1347,7 @@ MaybeLocal LinkRequireFacadeWithOriginal( Local import_attributes, Local referrer) { Environment* env = Environment::GetCurrent(context); @@ -353,7 +353,7 @@ index 8fed194cbae9ce75bd0805b4df30b4de64fbbefa..a584e3a80adb69d2028dc79450349823 CHECK(!env->temporary_required_module_facade_original.IsEmpty()); return env->temporary_required_module_facade_original.Get(isolate); diff --git a/src/node.h b/src/node.h -index 7fae281a6e0f3c1a9f0eb97536883bb26c16d94d..fb37310f44c8d06d1ab2697ed64a0b539776a411 100644 +index 84c121f13caa1472cef67113fbc7b7213e7af7e1..6a6f6f057f89ae72c680d19f4d478d421dede613 100644 --- a/src/node.h +++ b/src/node.h @@ -1064,7 +1064,7 @@ NODE_DEPRECATED("Use v8::Date::ValueOf() directly", @@ -502,7 +502,7 @@ index 6aad252eb5681bb9ab9890812602b43c418e7a7f..5f7ef8cc58f589ba30a44abaaaaaf151 Local keys; if (!entries->GetOwnPropertyNames(context).ToLocal(&keys)) diff --git a/src/node_errors.cc b/src/node_errors.cc -index 4386a1bc5678e351ce084cd2c47202561619b164..8d51201ad24999ed8f54e16c7878432d41841cf2 100644 +index 15d78e3eca9693dc518ccb28fc7c02fa1372f34b..9286d20c19a1e06001ca4b60981291d320858064 100644 --- a/src/node_errors.cc +++ b/src/node_errors.cc @@ -633,7 +633,7 @@ v8::ModifyCodeGenerationFromStringsResult ModifyCodeGenerationFromStrings( @@ -523,7 +523,7 @@ index 4386a1bc5678e351ce084cd2c47202561619b164..8d51201ad24999ed8f54e16c7878432d switch (message->ErrorLevel()) { case Isolate::MessageErrorLevel::kMessageWarning: { Environment* env = Environment::GetCurrent(isolate); -@@ -1161,7 +1161,7 @@ void Initialize(Local target, +@@ -1160,7 +1160,7 @@ void Initialize(Local target, SetMethod( context, target, "getErrorSourcePositions", GetErrorSourcePositions); @@ -634,7 +634,7 @@ index 2a5fe9fe501d1fd9356eeb7d044a872fa5a55f38..39f6f142044c42904d234da20a266315 env->AssignToContext(context, this, ContextInfo("")); // The environment can also purge empty wrappers in the check callback, diff --git a/src/node_report.cc b/src/node_report.cc -index c82c6bcc083ba60137e83b3c291130636db3162f..0d06f61d7fb2472a3d7a66854040dc493406b79e 100644 +index 139e2ae3f2de1f1e28876bdc5332f68ea392484e..d479ada5bf0776fac52cd43c952a7f418ebc0679 100644 --- a/src/node_report.cc +++ b/src/node_report.cc @@ -400,7 +400,7 @@ static void PrintJavaScriptErrorProperties(JSONWriter* writer, @@ -660,10 +660,10 @@ index c2e24b4645e7903e08c80aead1c18c7bcff1bd89..e34d24d51d5c090b560d06f727043f20 // Recreate the buffer in the constructor. InternalFieldInfo* casted_info = static_cast(info); diff --git a/src/node_sqlite.cc b/src/node_sqlite.cc -index 7bb4d4108c8326d69da5236c7ea7f00ddb68cea9..cf9ce6686cffca7e700a0e20cb9f776a5f0f7c4a 100644 +index 8b0bd18e6d9434aba4dd1a02beb0d8a2347c851c..1cab6dde9df945eb82ae59908711cfb75bd8993f 100644 --- a/src/node_sqlite.cc +++ b/src/node_sqlite.cc -@@ -2020,7 +2020,7 @@ bool StatementSync::BindParams(const FunctionCallbackInfo& args) { +@@ -2018,7 +2018,7 @@ bool StatementSync::BindParams(const FunctionCallbackInfo& args) { if (args[0]->IsObject() && !args[0]->IsArrayBufferView()) { Local obj = args[0].As(); @@ -699,7 +699,7 @@ index 9d1e8ec05161570db11f7b662395509774668d78..9b91f83d879ea02fd3d61913c8dfd35b BindingData* binding = realm->AddBindingData(holder); CHECK_NOT_NULL(binding); diff --git a/src/node_v8.cc b/src/node_v8.cc -index 98e392f6d7118bee8a3d0bce4de1ded76a293001..152b030198c6b36efd2be6c06f5c6e8bbc7cfadb 100644 +index 5cf30e8094b0014e12fa26d95d19a2d0e6f0ff56..13a4cbb11ad59e761f686c67f7a550d002b8e45c 100644 --- a/src/node_v8.cc +++ b/src/node_v8.cc @@ -158,7 +158,7 @@ void BindingData::Deserialize(Local context, @@ -784,7 +784,7 @@ index da4206187f7c7d2becb8a101c1ff5346a10e13f4..03f0910926f3d403121e227cee32a546 // Recreate the buffer in the constructor. BindingData* binding = realm->AddBindingData(holder); diff --git a/src/util-inl.h b/src/util-inl.h -index 9d4db311024c5f526fc3c00764fff686af044026..da9268dcf2ff432ddeec7c0f61a147b73f3130e2 100644 +index 5699d76fdfee4b260aa23929f1fb678389ad99e7..d07bceb425f00882db116975a92f4835d7c2cf3b 100644 --- a/src/util-inl.h +++ b/src/util-inl.h @@ -336,14 +336,14 @@ v8::Maybe FromV8Array(v8::Local context, @@ -805,6 +805,15 @@ index 9d4db311024c5f526fc3c00764fff686af044026..da9268dcf2ff432ddeec7c0f61a147b7 // V8 only has a TODO comment about adding an exception when the maximum // string size is exceeded. @@ -359,7 +359,7 @@ v8::MaybeLocal ToV8Value(v8::Local context, + v8::MaybeLocal ToV8Value(v8::Local context, + std::u16string_view str, + v8::Isolate* isolate) { +- if (isolate == nullptr) isolate = context->GetIsolate(); ++ if (isolate == nullptr) isolate = v8::Isolate::GetCurrent(); + if (str.length() >= static_cast(v8::String::kMaxLength)) + [[unlikely]] { + // V8 only has a TODO comment about adding an exception when the maximum +@@ -379,7 +379,7 @@ v8::MaybeLocal ToV8Value(v8::Local context, v8::MaybeLocal ToV8Value(v8::Local context, v8_inspector::StringView str, v8::Isolate* isolate) { @@ -813,7 +822,7 @@ index 9d4db311024c5f526fc3c00764fff686af044026..da9268dcf2ff432ddeec7c0f61a147b7 if (str.length() >= static_cast(v8::String::kMaxLength)) [[unlikely]] { // V8 only has a TODO comment about adding an exception when the maximum -@@ -386,7 +386,7 @@ template +@@ -406,7 +406,7 @@ template v8::MaybeLocal ToV8Value(v8::Local context, const std::vector& vec, v8::Isolate* isolate) { @@ -822,7 +831,7 @@ index 9d4db311024c5f526fc3c00764fff686af044026..da9268dcf2ff432ddeec7c0f61a147b7 v8::EscapableHandleScope handle_scope(isolate); MaybeStackBuffer, 128> arr(vec.size()); -@@ -403,7 +403,7 @@ template +@@ -423,7 +423,7 @@ template v8::MaybeLocal ToV8Value(v8::Local context, const std::set& set, v8::Isolate* isolate) { @@ -831,7 +840,7 @@ index 9d4db311024c5f526fc3c00764fff686af044026..da9268dcf2ff432ddeec7c0f61a147b7 v8::Local set_js = v8::Set::New(isolate); v8::HandleScope handle_scope(isolate); -@@ -422,7 +422,7 @@ template +@@ -442,7 +442,7 @@ template v8::MaybeLocal ToV8Value(v8::Local context, const std::ranges::elements_view& vec, v8::Isolate* isolate) { @@ -840,7 +849,7 @@ index 9d4db311024c5f526fc3c00764fff686af044026..da9268dcf2ff432ddeec7c0f61a147b7 v8::EscapableHandleScope handle_scope(isolate); MaybeStackBuffer, 128> arr(vec.size()); -@@ -441,7 +441,7 @@ template +@@ -461,7 +461,7 @@ template v8::MaybeLocal ToV8Value(v8::Local context, const std::unordered_map& map, v8::Isolate* isolate) { @@ -849,7 +858,7 @@ index 9d4db311024c5f526fc3c00764fff686af044026..da9268dcf2ff432ddeec7c0f61a147b7 v8::EscapableHandleScope handle_scope(isolate); v8::Local ret = v8::Map::New(isolate); -@@ -484,7 +484,7 @@ template +@@ -504,7 +504,7 @@ template v8::MaybeLocal ToV8Value(v8::Local context, const T& number, v8::Isolate* isolate) { @@ -858,7 +867,7 @@ index 9d4db311024c5f526fc3c00764fff686af044026..da9268dcf2ff432ddeec7c0f61a147b7 return ConvertNumberToV8Value(isolate, number); } -@@ -497,7 +497,7 @@ v8::Local ToV8ValuePrimitiveArray(v8::Local context, +@@ -517,7 +517,7 @@ v8::Local ToV8ValuePrimitiveArray(v8::Local context, std::is_floating_point_v, "Only primitive types (bool, integral, floating-point) are supported."); @@ -867,7 +876,7 @@ index 9d4db311024c5f526fc3c00764fff686af044026..da9268dcf2ff432ddeec7c0f61a147b7 v8::EscapableHandleScope handle_scope(isolate); v8::LocalVector elements(isolate); -@@ -731,7 +731,7 @@ inline v8::MaybeLocal NewDictionaryInstanceNullProto( +@@ -751,7 +751,7 @@ inline v8::MaybeLocal NewDictionaryInstanceNullProto( if (value.IsEmpty()) return v8::MaybeLocal(); } v8::Local obj = tmpl->NewInstance(context, property_values); @@ -926,10 +935,10 @@ index 660cfff6b8a0c583be843e555e7a06cd09e0d279..c4b39450c5b7f91c46f7027db367c30d context, that, OneByteString(isolate, name), tmpl, flag); } diff --git a/src/util.h b/src/util.h -index 2b351235cf7f32c9fad25367cc912d187466f1e0..6da57f95165bbdedb65dab6eaae8c39b815ee4e5 100644 +index 63479eb3f12685702a06c27db52183a585de0da9..1db426df35e4976427b578a2974041ec9e92cf4c 100644 --- a/src/util.h +++ b/src/util.h -@@ -739,7 +739,7 @@ inline v8::MaybeLocal ToV8Value( +@@ -751,7 +751,7 @@ inline v8::MaybeLocal ToV8Value( // Variation on NODE_DEFINE_CONSTANT that sets a String value. #define NODE_DEFINE_STRING_CONSTANT(target, name, constant) \ do { \ diff --git a/patches/node/build_add_gn_build_files.patch b/patches/node/build_add_gn_build_files.patch index 8524c80056..c4a490dca2 100644 --- a/patches/node/build_add_gn_build_files.patch +++ b/patches/node/build_add_gn_build_files.patch @@ -11,18 +11,18 @@ really in 20/21. We have to wait until 22 is released to be able to build with upstream GN files. diff --git a/configure.py b/configure.py -index 7f73f084ef1a8336089e6a16423c2eb310c0b9f2..96eedd5d9ae05ee6704724290973251059d5dd78 100755 +index 750ddc8ace6cad894e738f6e1d983b5906acc10f..e063f9131d4d547d231811dafea03c8c52b611e6 100755 --- a/configure.py +++ b/configure.py -@@ -1730,7 +1730,7 @@ def configure_v8(o, configs): +@@ -1736,7 +1736,7 @@ def configure_v8(o, configs): # Until we manage to get rid of all those, v8_enable_sandbox cannot be used. # Note that enabling pointer compression without enabling sandbox is unsupported by V8, # so this can be broken at any time. - o['variables']['v8_enable_sandbox'] = 0 + o['variables']['v8_enable_sandbox'] = 1 if options.enable_pointer_compression else 0 - o['variables']['v8_enable_pointer_compression_shared_cage'] = 1 if options.enable_pointer_compression else 0 - o['variables']['v8_enable_external_code_space'] = 1 if options.enable_pointer_compression else 0 - o['variables']['v8_enable_31bit_smis_on_64bit_arch'] = 1 if options.enable_pointer_compression else 0 + # We set v8_enable_pointer_compression_shared_cage to 0 always, even when + # pointer compression is enabled so that we don't accidentally enable shared + # cage mode when pointer compression is on. diff --git a/node.gni b/node.gni index d4438f7fd61598afac2c1e3184721a759d22b10c..e2407027ab05e59b2f0f1c213b98ea469db7a91b 100644 --- a/node.gni diff --git a/patches/node/build_enable_perfetto.patch b/patches/node/build_enable_perfetto.patch index 34af611eae..8cabd3a129 100644 --- a/patches/node/build_enable_perfetto.patch +++ b/patches/node/build_enable_perfetto.patch @@ -64,7 +64,7 @@ index 9bf929f7f3360f13058d3f446c18a36cd15bea58..abf9a06d891488288bccd98c437746c1 function ipToInt(ip) { diff --git a/node.gyp b/node.gyp -index 420d57135f48df59b2cbd33497ef90b6148017e6..eefb1e0577b881da7a1570fd7ac465fe8b06747c 100644 +index a598de39f13e7069e75484463fb096b771fa45fb..975f3897dd1ce1074626925b9fbf22f15632a0b1 100644 --- a/node.gyp +++ b/node.gyp @@ -176,7 +176,6 @@ diff --git a/patches/node/build_ensure_native_module_compilation_fails_if_not_using_a_new.patch b/patches/node/build_ensure_native_module_compilation_fails_if_not_using_a_new.patch index f0ca785e28..f266372ce4 100644 --- a/patches/node/build_ensure_native_module_compilation_fails_if_not_using_a_new.patch +++ b/patches/node/build_ensure_native_module_compilation_fails_if_not_using_a_new.patch @@ -7,7 +7,7 @@ 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 29a912f58e7b522ae21fddac510946cbcbaaa4cc..aea3a882c338eb757bef9e85fabab3fc7e7495f7 100644 +index 088e7ebbfe07d273691c86c7ab2dce00fcb475c8..a3f7415dba63828bec94ac8503420f14e3fea14c 100644 --- a/common.gypi +++ b/common.gypi @@ -89,6 +89,8 @@ @@ -42,10 +42,10 @@ index 29a912f58e7b522ae21fddac510946cbcbaaa4cc..aea3a882c338eb757bef9e85fabab3fc # list in v8/BUILD.gn. ['v8_enable_v8_checks == 1', { diff --git a/configure.py b/configure.py -index 96eedd5d9ae05ee6704724290973251059d5dd78..52060f9c6dc1bcec67a0fd4710e01e73a6cf276c 100755 +index e063f9131d4d547d231811dafea03c8c52b611e6..a5c764d9e7fb0ffa219202015ec67ed6d3e14c04 100755 --- a/configure.py +++ b/configure.py -@@ -1711,6 +1711,7 @@ def configure_library(lib, output, pkgname=None): +@@ -1717,6 +1717,7 @@ def configure_library(lib, output, pkgname=None): def configure_v8(o, configs): set_configuration_variable(configs, 'v8_enable_v8_checks', release=1, debug=0) @@ -54,7 +54,7 @@ index 96eedd5d9ae05ee6704724290973251059d5dd78..52060f9c6dc1bcec67a0fd4710e01e73 o['variables']['v8_enable_javascript_promise_hooks'] = 1 o['variables']['v8_enable_lite_mode'] = 1 if options.v8_lite_mode else 0 diff --git a/src/node.h b/src/node.h -index c5ade4bd30456cde33379c6202b65709650d3ec0..f7b3f90b0c2cfbeacc5bc50112dd711df8d3c364 100644 +index 27f5bb1571920c963e05644a5fc5858aa4b88288..9c624e4ef26c1b06a6c4bca7def245935189ce07 100644 --- a/src/node.h +++ b/src/node.h @@ -22,6 +22,12 @@ diff --git a/patches/node/build_restore_clang_as_default_compiler_on_macos.patch b/patches/node/build_restore_clang_as_default_compiler_on_macos.patch index a1f987b2b7..013c4508da 100644 --- a/patches/node/build_restore_clang_as_default_compiler_on_macos.patch +++ b/patches/node/build_restore_clang_as_default_compiler_on_macos.patch @@ -11,7 +11,7 @@ node-gyp will use the result of `process.config` that reflects the environment in which the binary got built. diff --git a/common.gypi b/common.gypi -index aea3a882c338eb757bef9e85fabab3fc7e7495f7..9303217fb05190c734e410a524a6921723d665d5 100644 +index a3f7415dba63828bec94ac8503420f14e3fea14c..c08f65b0448806c613b27eb91f9dd512adab938c 100644 --- a/common.gypi +++ b/common.gypi @@ -128,6 +128,7 @@ diff --git a/patches/node/chore_allow_the_node_entrypoint_to_be_a_builtin_module.patch b/patches/node/chore_allow_the_node_entrypoint_to_be_a_builtin_module.patch index 2c56c247ed..1973d46f32 100644 --- a/patches/node/chore_allow_the_node_entrypoint_to_be_a_builtin_module.patch +++ b/patches/node/chore_allow_the_node_entrypoint_to_be_a_builtin_module.patch @@ -8,10 +8,10 @@ they use themselves as the entry point. We should try to upstream some form of this. diff --git a/lib/internal/process/pre_execution.js b/lib/internal/process/pre_execution.js -index c7f86098bdb00b6be84d547a0ac41919fa1bbb0f..35b43990c8f24f0888f89173f5662050a11b26ed 100644 +index 6585c52e4bd997b20d5a297c536844dea1b8fdc8..fd0a81f5216d8bcf662c7e8bb972ed789eda8645 100644 --- a/lib/internal/process/pre_execution.js +++ b/lib/internal/process/pre_execution.js -@@ -243,12 +243,14 @@ function patchProcessObject(expandArgv1) { +@@ -276,12 +276,14 @@ function patchProcessObject(expandArgv1) { // the entry point. if (expandArgv1 && process.argv[1] && process.argv[1][0] !== '-') { // Expand process.argv[1] into a full path. diff --git a/patches/node/chore_disable_deprecation_ftbfs_in_simdjson_header.patch b/patches/node/chore_disable_deprecation_ftbfs_in_simdjson_header.patch index b91313c834..12f77104a8 100644 --- a/patches/node/chore_disable_deprecation_ftbfs_in_simdjson_header.patch +++ b/patches/node/chore_disable_deprecation_ftbfs_in_simdjson_header.patch @@ -8,13 +8,16 @@ Without this patch, building with simdjson fails with > error: identifier '_padded' preceded by whitespace in a literal operator > declaration is deprecated [-Werror,-Wdeprecated-literal-operator] +and +> error: declaration requires an exit-time destructor [-Werror,-Wexit-time-destructors] + This patch can be removed once this is fixed upstream in simdjson. diff --git a/deps/simdjson/simdjson.h b/deps/simdjson/simdjson.h -index 8f52a4331d59996786450eec982659da9244cac1..74729673d87b068dff5f24166bbb77d844f15f42 100644 +index a8bd86b28acc16cb04c193a1afbeb8171b314107..e200835e3ae6042f5af62f7ea3e082c677a9d0cf 100644 --- a/deps/simdjson/simdjson.h +++ b/deps/simdjson/simdjson.h -@@ -3899,12 +3899,17 @@ inline std::ostream& operator<<(std::ostream& out, simdjson_result padded_string::load(std::string_view filen +@@ -4617,6 +4622,9 @@ inline simdjson_result padded_string::load(std::string_view filen } // namespace simdjson @@ -42,7 +45,7 @@ index 8f52a4331d59996786450eec982659da9244cac1..74729673d87b068dff5f24166bbb77d8 inline simdjson::padded_string operator ""_padded(const char *str, size_t len) { return simdjson::padded_string(str, len); } -@@ -4312,6 +4320,8 @@ inline simdjson::padded_string operator ""_padded(const char8_t *str, size_t len +@@ -4625,6 +4633,8 @@ inline simdjson::padded_string operator ""_padded(const char8_t *str, size_t len return simdjson::padded_string(reinterpret_cast(str), len); } #endif @@ -51,3 +54,37 @@ index 8f52a4331d59996786450eec982659da9244cac1..74729673d87b068dff5f24166bbb77d8 #endif // SIMDJSON_PADDED_STRING_INL_H /* end file simdjson/padded_string-inl.h */ /* skipped duplicate #include "simdjson/padded_string_view.h" */ +@@ -43655,12 +43665,16 @@ simdjson_inline simdjson_warn_unused std::unique_ptr& parser:: + return parser_instance; + } + ++#pragma clang diagnostic push ++#pragma clang diagnostic ignored "-Wexit-time-destructors" ++ + simdjson_inline simdjson_warn_unused std::unique_ptr& parser::get_threadlocal_parser_if_exists() { + // @the-moisrex points out that this could be implemented with std::optional (C++17). + thread_local std::unique_ptr parser_instance = nullptr; + return parser_instance; + } + ++#pragma clang diagnostic pop + + } // namespace ondemand + } // namespace arm64 +@@ -56961,12 +56975,16 @@ simdjson_inline simdjson_warn_unused std::unique_ptr& parser:: + return parser_instance; + } + ++#pragma clang diagnostic push ++#pragma clang diagnostic ignored "-Wexit-time-destructors" ++ + simdjson_inline simdjson_warn_unused std::unique_ptr& parser::get_threadlocal_parser_if_exists() { + // @the-moisrex points out that this could be implemented with std::optional (C++17). + thread_local std::unique_ptr parser_instance = nullptr; + return parser_instance; + } + ++#pragma clang diagnostic pop + + } // namespace ondemand + } // namespace fallback diff --git a/patches/node/chore_expose_importmoduledynamically_and.patch b/patches/node/chore_expose_importmoduledynamically_and.patch index 4a0b9dff2e..53cc5334b6 100644 --- a/patches/node/chore_expose_importmoduledynamically_and.patch +++ b/patches/node/chore_expose_importmoduledynamically_and.patch @@ -11,7 +11,7 @@ its own blended handler between Node and Blink. Not upstreamable. diff --git a/lib/internal/modules/esm/utils.js b/lib/internal/modules/esm/utils.js -index 4a4279459341e87784ee8efa832dc74371c4a708..88d84786e72cf8712e0b9bda16c418d4087fe549 100644 +index a9076a7ae941284d4585829292e2ece25c2b90e4..7335fe20f34fdd822276575686379dd954f1c8e1 100644 --- a/lib/internal/modules/esm/utils.js +++ b/lib/internal/modules/esm/utils.js @@ -34,7 +34,7 @@ const { @@ -21,14 +21,14 @@ index 4a4279459341e87784ee8efa832dc74371c4a708..88d84786e72cf8712e0b9bda16c418d4 -const { getOptionValue } = require('internal/options'); +const { getOptionValue, getEmbedderOptions } = require('internal/options'); const { - loadPreloadModules, - initializeFrozenIntrinsics, -@@ -291,12 +291,13 @@ let _forceDefaultLoader = false; - * @param {boolean} [forceDefaultLoader] - A boolean indicating disabling custom loaders. + emitExperimentalWarning, + kEmptyObject, +@@ -285,12 +285,13 @@ let _shouldSpawnLoaderHookWorker = true; + * should be spawned later. */ - function initializeESM(forceDefaultLoader = false) { + function initializeESM(shouldSpawnLoaderHookWorker = true) { + const shouldSetOnIsolate = !getEmbedderOptions().shouldNotRegisterESMLoader; - _forceDefaultLoader = forceDefaultLoader; + _shouldSpawnLoaderHookWorker = shouldSpawnLoaderHookWorker; initializeDefaultConditions(); // Setup per-realm callbacks that locate data or callbacks that we keep // track of for different ESM modules. @@ -40,10 +40,10 @@ index 4a4279459341e87784ee8efa832dc74371c4a708..88d84786e72cf8712e0b9bda16c418d4 /** diff --git a/src/module_wrap.cc b/src/module_wrap.cc -index 5783728da2894270f902f47b210008df0e911bde..8fed194cbae9ce75bd0805b4df30b4de64fbbefa 100644 +index 26e6bcfa30be8b22b20e66ffe2f8d0b7d60fc6cc..fa2f28989be19e8ea8f53b990ae96be92ef3c3a3 100644 --- a/src/module_wrap.cc +++ b/src/module_wrap.cc -@@ -1097,7 +1097,7 @@ Maybe ModuleWrap::ResolveModule( +@@ -1098,7 +1098,7 @@ Maybe ModuleWrap::ResolveModule( return Just(module_wrap); } @@ -52,7 +52,7 @@ index 5783728da2894270f902f47b210008df0e911bde..8fed194cbae9ce75bd0805b4df30b4de Local context, Local host_defined_options, Local resource_name, -@@ -1185,14 +1185,16 @@ void ModuleWrap::SetImportModuleDynamicallyCallback( +@@ -1186,14 +1186,16 @@ void ModuleWrap::SetImportModuleDynamicallyCallback( Realm* realm = Realm::GetCurrent(args); HandleScope handle_scope(isolate); @@ -72,7 +72,7 @@ index 5783728da2894270f902f47b210008df0e911bde..8fed194cbae9ce75bd0805b4df30b4de } void ModuleWrap::HostInitializeImportMetaObjectCallback( -@@ -1234,13 +1236,14 @@ void ModuleWrap::SetInitializeImportMetaObjectCallback( +@@ -1235,13 +1237,14 @@ void ModuleWrap::SetInitializeImportMetaObjectCallback( Realm* realm = Realm::GetCurrent(args); Isolate* isolate = realm->isolate(); diff --git a/patches/node/chore_handle_support_for_import_defer_as_ns_and_import_defer.patch b/patches/node/chore_handle_support_for_import_defer_as_ns_and_import_defer.patch deleted file mode 100644 index dffa0560f0..0000000000 --- a/patches/node/chore_handle_support_for_import_defer_as_ns_and_import_defer.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Shelley Vohr -Date: Wed, 29 Oct 2025 11:45:23 +0000 -Subject: chore: handle support for `import defer * as ns` and `import.defer` - syntax - -V8 added support for the above syntax https://chromium-review.googlesource.com/c/v8/v8/+/7017517 -by adding a new `ModuleImportPhase::kDefer` phase. - -This patch can be removed when Electron updates to a version of Node.js containing -the above CL. - -diff --git a/src/module_wrap.cc b/src/module_wrap.cc -index a584e3a80adb69d2028dc79450349823ab973a58..6f010fa2e014b2d13b1f89a691d09e2ffdf690b6 100644 ---- a/src/module_wrap.cc -+++ b/src/module_wrap.cc -@@ -563,8 +563,10 @@ ModulePhase to_phase_constant(ModuleImportPhase phase) { - return kEvaluationPhase; - case ModuleImportPhase::kSource: - return kSourcePhase; -+ case ModuleImportPhase::kDefer: -+ default: -+ UNREACHABLE(); - } -- UNREACHABLE(); - } - - static Local createImportAttributesContainer( -@@ -1471,6 +1473,7 @@ void ModuleWrap::CreatePerContextProperties(Local target, - - V(ModulePhase, kEvaluationPhase); - V(ModulePhase, kSourcePhase); -+ V(ModulePhase, kDeferPhase); - #undef V - } - -diff --git a/src/module_wrap.h b/src/module_wrap.h -index 45264c2ad58e37a73fd62addac7fb671eed6d502..fb32fbc5c1cfa4aef4a7822dbc6195429299da3e 100644 ---- a/src/module_wrap.h -+++ b/src/module_wrap.h -@@ -37,6 +37,7 @@ enum HostDefinedOptions : int { - enum ModulePhase : int { - kSourcePhase = 1, - kEvaluationPhase = 2, -+ kDeferPhase = 3, - }; - - /** diff --git a/patches/node/feat_disable_js_source_phase_imports_by_default.patch b/patches/node/feat_disable_js_source_phase_imports_by_default.patch index a1de4431ef..aa51478dd8 100644 --- a/patches/node/feat_disable_js_source_phase_imports_by_default.patch +++ b/patches/node/feat_disable_js_source_phase_imports_by_default.patch @@ -18,15 +18,15 @@ Stage 3. Upstreamed in https://github.com/nodejs/node/pull/60364 diff --git a/src/node.cc b/src/node.cc -index 5713d49d859e1161e1d6703c0b6f3d717a5a9a34..829634c084cb91eb7f488dbdd48175a093dd6e12 100644 +index d77735f4f5686e914811c0576975b57e6c631398..d8e1c809df6e96ed561c73c0e8de0cf9736e4aaa 100644 --- a/src/node.cc +++ b/src/node.cc -@@ -780,7 +780,7 @@ static ExitCode ProcessGlobalArgsInternal(std::vector* args, - env_opts->abort_on_uncaught_exception = true; +@@ -782,7 +782,7 @@ static ExitCode ProcessGlobalArgsInternal(std::vector* args, + + if (std::ranges::find(v8_args, "--no-js-source-phase-imports") == + v8_args.end()) { +- v8_args.emplace_back("--js-source-phase-imports"); ++ // v8_args.emplace_back("--js-source-phase-imports"); } -- v8_args.emplace_back("--js-source-phase-imports"); -+ // v8_args.emplace_back("--js-source-phase-imports"); - #ifdef __POSIX__ - // Block SIGPROF signals when sleeping in epoll_wait/kevent/etc. Avoids the diff --git a/patches/node/fix_add_default_values_for_variables_in_common_gypi.patch b/patches/node/fix_add_default_values_for_variables_in_common_gypi.patch index 37e9f42526..57f917d104 100644 --- a/patches/node/fix_add_default_values_for_variables_in_common_gypi.patch +++ b/patches/node/fix_add_default_values_for_variables_in_common_gypi.patch @@ -7,7 +7,7 @@ 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 7727dfc4c62100cbd873ee4b34c6089ab4b638b1..29a912f58e7b522ae21fddac510946cbcbaaa4cc 100644 +index 60585d136f7ee103ac49ce0271e24561a2685a0a..088e7ebbfe07d273691c86c7ab2dce00fcb475c8 100644 --- a/common.gypi +++ b/common.gypi @@ -91,6 +91,23 @@ diff --git a/patches/node/fix_allow_disabling_fetch_in_renderer_and_worker_processes.patch b/patches/node/fix_allow_disabling_fetch_in_renderer_and_worker_processes.patch index 23e5b493cc..97d036c07c 100644 --- a/patches/node/fix_allow_disabling_fetch_in_renderer_and_worker_processes.patch +++ b/patches/node/fix_allow_disabling_fetch_in_renderer_and_worker_processes.patch @@ -9,10 +9,10 @@ conflict with Blink's in renderer and worker processes. We should try to upstream some version of this. diff --git a/doc/api/cli.md b/doc/api/cli.md -index cc990c01704484cbaa314320b3b3b72acffb6940..6b985c9fce6ec607df0e04f93b3cd5b84233d0b9 100644 +index 38c66ec426205c07925e4d634e877a8cbb47b255..9b9a5455b9d597bb4009074c922d2c7c5aa975f1 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md -@@ -1767,6 +1767,14 @@ changes: +@@ -1770,6 +1770,14 @@ changes: Disable using [syntax detection][] to determine module type. @@ -27,7 +27,7 @@ index cc990c01704484cbaa314320b3b3b72acffb6940..6b985c9fce6ec607df0e04f93b3cd5b8 ### `--no-experimental-global-navigator`