diff --git a/DEPS b/DEPS index 8f5d6fad30..54d14cd3fa 100644 --- a/DEPS +++ b/DEPS @@ -4,7 +4,7 @@ vars = { 'chromium_version': '148.0.7778.5', 'node_version': - 'v24.14.1', + 'v24.15.0', 'nan_version': '675cefebca42410733da8a454c8d9391fcebfbc2', 'squirrel.mac_version': diff --git a/patches/node/.patches b/patches/node/.patches index e1516485c9..be1399867b 100644 --- a/patches/node/.patches +++ b/patches/node/.patches @@ -44,5 +44,4 @@ src_refactor_module_wrap_cc_to_update_fixedarray_get_params.patch src_refactor_wasmstreaming_finish_to_accept_a_callback.patch src_stop_using_v8_propertycallbackinfo_t_this.patch build_restore_macos_deployment_target_to_12_0.patch -fix_generate_config_gypi_needs_to_generate_valid_json.patch fix_add_externalpointertypetag_to_v8_external_api_calls.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 ded01f9a98..5dd0ca5cbc 100644 --- a/patches/node/api_delete_deprecated_fields_on_v8_isolate.patch +++ b/patches/node/api_delete_deprecated_fields_on_v8_isolate.patch @@ -6,7 +6,7 @@ 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 2111ee63a6ace438c1a143c90a807ed9fc2bcc9d..ce6426a1bf2dadb1a642874a05718724ef0f3d7c 100644 +index 6873a9f203ccace7d5c501b62bed56732332d060..7ba7943c666d9cf3de47bf9a18b8e6e0e1196886 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -218,8 +218,6 @@ void SetIsolateCreateParamsForNode(Isolate::CreateParams* params) { diff --git a/patches/node/api_promote_deprecation_of_v8_context_and_v8_object_api_methods.patch b/patches/node/api_promote_deprecation_of_v8_context_and_v8_object_api_methods.patch index 0c85eae51a..ec3af2a572 100644 --- a/patches/node/api_promote_deprecation_of_v8_context_and_v8_object_api_methods.patch +++ b/patches/node/api_promote_deprecation_of_v8_context_and_v8_object_api_methods.patch @@ -44,7 +44,7 @@ index 37d83e41b618a07aca98118260abe9618f11256d..26d5c1bd3c8191fce1d22b969996b6bf template diff --git a/src/base_object.cc b/src/base_object.cc -index 404e2aa8c88d0cc0e6717c01e0df68899c64cc32..16462f305a2ac6b6c3d7b85024f2e52648c4300c 100644 +index 8a14a8c32626f98c2afa402786e1b6b2fbbb0988..946e60ea2d0ffe984328185a0e7762603be8e0dd 100644 --- a/src/base_object.cc +++ b/src/base_object.cc @@ -45,7 +45,8 @@ BaseObject::~BaseObject() { @@ -72,7 +72,7 @@ index 74bbb9fb83246a90bc425e259150f0868020ac9e..a4b3a1c0907c9d50baf6c8cd473cb4c7 inline Environment* Environment::GetCurrent( diff --git a/src/histogram.cc b/src/histogram.cc -index 836a51b0e5aa4b1910604537c8b380038c27a7db..c4634e42fd2e5a27b0139a9b1716bc04875be469 100644 +index 2bcfcbdd9547db136c5992335a76dd3190886d6d..c34a83c9ccc83ec2973228a32cf0a51d29b4d681 100644 --- a/src/histogram.cc +++ b/src/histogram.cc @@ -136,7 +136,8 @@ HistogramBase::HistogramBase( @@ -116,7 +116,7 @@ index 836a51b0e5aa4b1910604537c8b380038c27a7db..c4634e42fd2e5a27b0139a9b1716bc04 std::unique_ptr diff --git a/src/js_udp_wrap.cc b/src/js_udp_wrap.cc -index 51e4f8c45ffd38fcf925ab8d283b3b88f2a35832..0c30c8b4609e4870c0ccfc5e9e465248c20763b8 100644 +index 6b35871d92ceb1b1eead21e328088cf87a10fa6e..57c96645fa0fdb7ed77c0a36c877b2628b7f0571 100644 --- a/src/js_udp_wrap.cc +++ b/src/js_udp_wrap.cc @@ -55,8 +55,9 @@ JSUDPWrap::JSUDPWrap(Environment* env, Local obj) @@ -207,10 +207,10 @@ index 0af487a9abc9ee1783367ac86b0016ab89e02006..c01cef477aaba52f9894943acede7fb2 inline Realm* Realm::GetCurrent( diff --git a/src/node_snapshotable.cc b/src/node_snapshotable.cc -index e34d24d51d5c090b560d06f727043f20924e6f46..07615933c858a17515836a29f7e27ace4b81e6ff 100644 +index c3e995adf437413fe956e45c2ccc704d8737de59..8561933060ac30e3559d7ce2ac633d25f1e4d6ec 100644 --- a/src/node_snapshotable.cc +++ b/src/node_snapshotable.cc -@@ -1400,7 +1400,8 @@ StartupData SerializeNodeContextInternalFields(Local holder, +@@ -1461,7 +1461,8 @@ StartupData SerializeNodeContextInternalFields(Local holder, // For the moment we do not set any internal fields in ArrayBuffer // or ArrayBufferViews, so just return nullptr. if (holder->IsArrayBuffer() || holder->IsArrayBufferView()) { @@ -220,7 +220,7 @@ index e34d24d51d5c090b560d06f727043f20924e6f46..07615933c858a17515836a29f7e27ace return StartupData{nullptr, 0}; } -@@ -1420,7 +1421,8 @@ StartupData SerializeNodeContextInternalFields(Local holder, +@@ -1481,7 +1482,8 @@ StartupData SerializeNodeContextInternalFields(Local holder, *holder); BaseObject* object_ptr = static_cast( @@ -296,7 +296,7 @@ index 29a4c29f3d3822394d23c453899cdd6aae280f3f..2a953d6390d5e4e251e54c1e847d4e5e } // namespace node diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc -index 150ef0f0400bed9df4f4b1a4c20ec4045ef7a5f6..2ca2ac177c6b5edc3b40712a40ff4a36e96904dc 100644 +index 6f3e68b79f1c7089b8c17a6ed5cd33eee4078b02..e09cd7a553464060619ecf4ac51e028382e2e148 100644 --- a/src/udp_wrap.cc +++ b/src/udp_wrap.cc @@ -126,8 +126,8 @@ void UDPWrapBase::set_listener(UDPListener* listener) { diff --git a/patches/node/api_remove_deprecated_getisolate.patch b/patches/node/api_remove_deprecated_getisolate.patch index 1cbfee4ea1..c3742f111b 100644 --- a/patches/node/api_remove_deprecated_getisolate.patch +++ b/patches/node/api_remove_deprecated_getisolate.patch @@ -6,7 +6,7 @@ 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 8974bac7dca43294cc5cc4570f8e2e78f42aefaa..2111ee63a6ace438c1a143c90a807ed9fc2bcc9d 100644 +index ec1496467f5071a810a3d7a76d80f3d12a8582dc..6873a9f203ccace7d5c501b62bed56732332d060 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -795,7 +795,7 @@ std::unique_ptr MultiIsolatePlatform::Create( @@ -85,7 +85,7 @@ index cc60ddddb037e0279615bbe24821eb20fd8da677..37d83e41b618a07aca98118260abe961 return handle; diff --git a/src/crypto/crypto_context.cc b/src/crypto/crypto_context.cc -index 2e3f31e1765024373c3fc2acd33fc3bfb352a906..ca62d3001bf51193d78caac0cccd93c188a8410c 100644 +index cb586936a904e7b9a017732e993a35ef1115ff9a..fd2dfa9fcf444fe705a2d42cd0963531cea9a74c 100644 --- a/src/crypto/crypto_context.cc +++ b/src/crypto/crypto_context.cc @@ -1045,7 +1045,7 @@ bool ArrayOfStringsToX509s(Local context, @@ -98,21 +98,21 @@ index 2e3f31e1765024373c3fc2acd33fc3bfb352a906..ca62d3001bf51193d78caac0cccd93c1 uint32_t array_length = cert_array->Length(); diff --git a/src/crypto/crypto_x509.cc b/src/crypto/crypto_x509.cc -index 4c5427596d1c90d3a413cdd9ff4f1151e657073d..70135a6be65e41fcb3564ddf6d1e8083a59ef8bb 100644 +index 6b7e4211a8969351168fc982fe3466a2096bed3a..76c84dd516719849a44e7d67f42ea16dd315b190 100644 --- a/src/crypto/crypto_x509.cc +++ b/src/crypto/crypto_x509.cc -@@ -107,7 +107,7 @@ MaybeLocal ToV8Value(Local context, BIOPointer&& bio) { +@@ -109,7 +109,7 @@ MaybeLocal ToV8Value(Local context, BIOPointer&& bio) { + if (!mem) [[unlikely]] return {}; - BUF_MEM* mem = bio; Local ret; - if (!String::NewFromUtf8(context->GetIsolate(), + if (!String::NewFromUtf8(Isolate::GetCurrent(), mem->data, NewStringType::kNormal, mem->length) -@@ -121,7 +121,7 @@ MaybeLocal ToV8Value(Local context, const BIOPointer& bio) { +@@ -125,7 +125,7 @@ MaybeLocal ToV8Value(Local context, const BIOPointer& bio) { + if (!mem) [[unlikely]] return {}; - BUF_MEM* mem = bio; Local ret; - if (!String::NewFromUtf8(context->GetIsolate(), + if (!String::NewFromUtf8(Isolate::GetCurrent(), @@ -133,10 +133,10 @@ index 6fe4f0492dc1f3eaf576c8ff7866080a54cb81c1..41e8e052ff81df78ece87163b0499966 // Recreate the buffer in the constructor. InternalFieldInfo* casted_info = static_cast(info); diff --git a/src/env.cc b/src/env.cc -index b5cf58cc953590493beb52abf249e33e486ffc46..347ec5c42e098186ff489dff199ac5989961f6e3 100644 +index 82aee7e38bbd859e1a76eedcc3a51278a1b3a793..a09603573c02466c0d25431fe6168ca33ee4692e 100644 --- a/src/env.cc +++ b/src/env.cc -@@ -1765,10 +1765,10 @@ void AsyncHooks::Deserialize(Local context) { +@@ -1764,10 +1764,10 @@ void AsyncHooks::Deserialize(Local context) { context->GetDataFromSnapshotOnce( info_->js_execution_async_resources).ToLocalChecked(); } else { @@ -149,7 +149,7 @@ index b5cf58cc953590493beb52abf249e33e486ffc46..347ec5c42e098186ff489dff199ac598 // The native_execution_async_resources_ field requires v8::Local<> instances // for async calls whose resources were on the stack as JS objects when they -@@ -1808,7 +1808,7 @@ AsyncHooks::SerializeInfo AsyncHooks::Serialize(Local context, +@@ -1807,7 +1807,7 @@ AsyncHooks::SerializeInfo AsyncHooks::Serialize(Local context, info.async_id_fields = async_id_fields_.Serialize(context, creator); if (!js_execution_async_resources_.IsEmpty()) { info.js_execution_async_resources = creator->AddData( @@ -353,10 +353,10 @@ index 52483740bb377a2bc2a16af701615d9a4e448eae..84d17a46efe146c1794a43963c41a446 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 bbe35c7a8f1bc0bcddf628af42b71efaef8a7759..102bcc0b3400fd334bdf259a076a3ac3b5d4a266 100644 +index 8aac774805a002f5af9e9aca62abc56e8f986bab..da87773ba7f0d38f04a7b3851d8a1a6df0eca489 100644 --- a/src/node.h +++ b/src/node.h -@@ -1142,7 +1142,7 @@ NODE_DEPRECATED("Use v8::Date::ValueOf() directly", +@@ -1144,7 +1144,7 @@ NODE_DEPRECATED("Use v8::Date::ValueOf() directly", #define NODE_DEFINE_CONSTANT(target, constant) \ do { \ @@ -365,7 +365,7 @@ index bbe35c7a8f1bc0bcddf628af42b71efaef8a7759..102bcc0b3400fd334bdf259a076a3ac3 v8::Local context = isolate->GetCurrentContext(); \ v8::Local constant_name = v8::String::NewFromUtf8Literal( \ isolate, #constant, v8::NewStringType::kInternalized); \ -@@ -1158,7 +1158,7 @@ NODE_DEPRECATED("Use v8::Date::ValueOf() directly", +@@ -1160,7 +1160,7 @@ NODE_DEPRECATED("Use v8::Date::ValueOf() directly", #define NODE_DEFINE_HIDDEN_CONSTANT(target, constant) \ do { \ @@ -375,10 +375,10 @@ index bbe35c7a8f1bc0bcddf628af42b71efaef8a7759..102bcc0b3400fd334bdf259a076a3ac3 v8::Local constant_name = v8::String::NewFromUtf8Literal( \ isolate, #constant, v8::NewStringType::kInternalized); \ diff --git a/src/node_blob.cc b/src/node_blob.cc -index 4311d71bb0526f9a83a16525243446a590092910..417cd8cbd307b9bfc498ad2df24ed193616ac512 100644 +index 40407527800075b6afec5b6c7d98de2c6229e85a..6371aad07beb8514ca2a3acfd30d7c68969e8e20 100644 --- a/src/node_blob.cc +++ b/src/node_blob.cc -@@ -562,7 +562,7 @@ void BlobBindingData::Deserialize(Local context, +@@ -561,7 +561,7 @@ void BlobBindingData::Deserialize(Local context, int index, InternalFieldInfoBase* info) { DCHECK_IS_SNAPSHOT_SLOT(index); @@ -388,37 +388,37 @@ index 4311d71bb0526f9a83a16525243446a590092910..417cd8cbd307b9bfc498ad2df24ed193 BlobBindingData* binding = realm->AddBindingData(holder); CHECK_NOT_NULL(binding); diff --git a/src/node_builtins.cc b/src/node_builtins.cc -index 3377d697615ee168e49e83c4202bc227581f1aaf..1a9a57b73e635ac61016598687167a08b073f84a 100644 +index 7922f2f936f64cbb7bd08f0d367f66f0b9eb083b..04d76fdd3d170a7c501bd773b698d380b8bb2426 100644 --- a/src/node_builtins.cc +++ b/src/node_builtins.cc -@@ -260,7 +260,7 @@ MaybeLocal BuiltinLoader::LookupAndCompileInternal( - const char* id, - LocalVector* parameters, +@@ -274,7 +274,7 @@ MaybeLocal BuiltinLoader::LookupAndCompile( + Local context, + const BuiltinSource* builtin_source, Realm* optional_realm) { - Isolate* isolate = context->GetIsolate(); + Isolate* isolate = Isolate::GetCurrent(); EscapableHandleScope scope(isolate); - Local source; -@@ -382,7 +382,7 @@ void BuiltinLoader::SaveCodeCache(const char* id, Local fun) { - MaybeLocal BuiltinLoader::LookupAndCompile(Local context, - const char* id, - Realm* optional_realm) { + BuiltinCodeCacheData cached_data{}; +@@ -442,7 +442,7 @@ void BuiltinLoader::SaveCodeCache(const std::string& id, Local data) { + + MaybeLocal BuiltinLoader::LookupAndCompileFunction( + Local context, const char* id, Realm* optional_realm) { - Isolate* isolate = context->GetIsolate(); + Isolate* isolate = Isolate::GetCurrent(); LocalVector parameters(isolate); - // Detects parameters of the scripts based on module ids. - // internal/bootstrap/realm: process, getLinkedBinding, -@@ -436,7 +436,7 @@ MaybeLocal BuiltinLoader::LookupAndCompile(Local context, + + Local data; +@@ -483,7 +483,7 @@ MaybeLocal BuiltinLoader::LookupAndCompileFunction( MaybeLocal BuiltinLoader::CompileAndCall(Local context, const char* id, Realm* realm) { - Isolate* isolate = context->GetIsolate(); + Isolate* isolate = Isolate::GetCurrent(); - // Detects parameters of the scripts based on module ids. - // internal/bootstrap/realm: process, getLinkedBinding, - // getInternalBinding, primordials -@@ -492,7 +492,7 @@ MaybeLocal BuiltinLoader::CompileAndCall(Local context, + const BuiltinSource* builtin_source = LoadBuiltinSource(isolate, id); + if (builtin_source == nullptr) { + THROW_ERR_MODULE_NOT_FOUND(isolate, "Cannot find module %s", id); +@@ -555,7 +555,7 @@ MaybeLocal BuiltinLoader::CompileAndCallWith(Local context, if (!maybe_fn.ToLocal(&fn)) { return MaybeLocal(); } @@ -427,17 +427,17 @@ index 3377d697615ee168e49e83c4202bc227581f1aaf..1a9a57b73e635ac61016598687167a08 return fn->Call(context, undefined, argc, argv); } -@@ -530,14 +530,14 @@ bool BuiltinLoader::CompileAllBuiltinsAndCopyCodeCache( +@@ -579,14 +579,14 @@ bool BuiltinLoader::CompileAllBuiltinsAndCopyCodeCache( to_eager_compile_.emplace(id); } - TryCatch bootstrapCatch(context->GetIsolate()); + TryCatch bootstrapCatch(Isolate::GetCurrent()); - auto fn = LookupAndCompile(context, id.data(), nullptr); + auto data = LookupAndCompile(context, id.data(), nullptr); if (bootstrapCatch.HasCaught()) { per_process::Debug(DebugCategory::CODE_CACHE, "Failed to compile code cache for %s\n", - id.data()); + id); all_succeeded = false; - PrintCaughtException(context->GetIsolate(), context, bootstrapCatch); + PrintCaughtException(Isolate::GetCurrent(), context, bootstrapCatch); @@ -458,19 +458,19 @@ index fea0426496978c0003fe1481afcf93fc9c23edca..c9588880d05435ab9f4e23fcff74c933 CHECK( diff --git a/src/node_contextify.cc b/src/node_contextify.cc -index 3c234205e89be7e976dae5c3fcc73ca67953e034..e66d4fcb0c064f96cdb819c783027d864fe88d12 100644 +index d3568da72a0f99419b4029b93d9eb1e9328d6bd5..cd8b64d58413914e72c32df6a2f192143e85ac46 100644 --- a/src/node_contextify.cc +++ b/src/node_contextify.cc -@@ -113,7 +113,7 @@ namespace { +@@ -108,6 +108,8 @@ using v8::Value; + // For every `set` of a global property, the interceptor callback defines or + // changes the property both on the sandbox and the global proxy. - // Convert an int to a V8 Name (String or Symbol). - MaybeLocal Uint32ToName(Local context, uint32_t index) { -- return Uint32::New(context->GetIsolate(), index)->ToString(context); -+ return Uint32::New(Isolate::GetCurrent(), index)->ToString(context); - } - - } // anonymous namespace -@@ -677,7 +677,7 @@ Intercepted ContextifyContext::PropertyDefinerCallback( ++ ++ + ContextifyContext* ContextifyContext::New(Environment* env, + Local sandbox_obj, + ContextOptions* options) { +@@ -667,7 +669,7 @@ Intercepted ContextifyContext::PropertyDefinerCallback( } Local context = ctx->context(); @@ -479,7 +479,7 @@ index 3c234205e89be7e976dae5c3fcc73ca67953e034..e66d4fcb0c064f96cdb819c783027d86 PropertyAttribute attributes = PropertyAttribute::None; bool is_declared = -@@ -1666,7 +1666,7 @@ static MaybeLocal CompileFunctionForCJSLoader( +@@ -1641,7 +1643,7 @@ static MaybeLocal CompileFunctionForCJSLoader( bool* cache_rejected, bool is_cjs_scope, ScriptCompiler::CachedData* cached_data) { @@ -489,7 +489,7 @@ index 3c234205e89be7e976dae5c3fcc73ca67953e034..e66d4fcb0c064f96cdb819c783027d86 Local symbol = env->vm_dynamic_import_default_internal(); diff --git a/src/node_env_var.cc b/src/node_env_var.cc -index 6aad252eb5681bb9ab9890812602b43c418e7a7f..5f7ef8cc58f589ba30a44abaaaaaf1514458c3f0 100644 +index 5550a4bee3ce9ec8759d216335a9b2b96e20c96e..b38c2f75a92f2d6c1b9c6e7b7aca924653f7494d 100644 --- a/src/node_env_var.cc +++ b/src/node_env_var.cc @@ -311,7 +311,7 @@ std::shared_ptr KVStore::CreateMapKVStore() { @@ -502,10 +502,10 @@ index 6aad252eb5681bb9ab9890812602b43c418e7a7f..5f7ef8cc58f589ba30a44abaaaaaf151 Local keys; if (!entries->GetOwnPropertyNames(context).ToLocal(&keys)) diff --git a/src/node_errors.cc b/src/node_errors.cc -index 55a0c986c5b6989ee9ce277bb6a9778abb2ad2ee..809d88f21e5572807e38132d40ee75870ab8de07 100644 +index c6404e00d04e61b675a8c4a02139b36da25bd2a8..ea90e6501bb58260f06d6720cc2fc4989752a347 100644 --- a/src/node_errors.cc +++ b/src/node_errors.cc -@@ -631,7 +631,7 @@ v8::ModifyCodeGenerationFromStringsResult ModifyCodeGenerationFromStrings( +@@ -629,7 +629,7 @@ v8::ModifyCodeGenerationFromStringsResult ModifyCodeGenerationFromStrings( v8::Local context, v8::Local source, bool is_code_like) { @@ -514,7 +514,7 @@ index 55a0c986c5b6989ee9ce277bb6a9778abb2ad2ee..809d88f21e5572807e38132d40ee7587 if (context->GetNumberOfEmbedderDataFields() <= ContextEmbedderIndex::kAllowCodeGenerationFromStrings) { -@@ -1037,7 +1037,7 @@ const char* errno_string(int errorno) { +@@ -1035,7 +1035,7 @@ const char* errno_string(int errorno) { } void PerIsolateMessageListener(Local message, Local error) { @@ -523,7 +523,7 @@ index 55a0c986c5b6989ee9ce277bb6a9778abb2ad2ee..809d88f21e5572807e38132d40ee7587 switch (message->ErrorLevel()) { case Isolate::MessageErrorLevel::kMessageWarning: { Environment* env = Environment::GetCurrent(isolate); -@@ -1197,7 +1197,7 @@ void Initialize(Local target, +@@ -1195,7 +1195,7 @@ void Initialize(Local target, SetMethod( context, target, "getErrorSourcePositions", GetErrorSourcePositions); @@ -533,10 +533,10 @@ index 55a0c986c5b6989ee9ce277bb6a9778abb2ad2ee..809d88f21e5572807e38132d40ee7587 READONLY_PROPERTY(target, "exitCodes", exit_codes); diff --git a/src/node_file.cc b/src/node_file.cc -index 96aac2d86695732bf6805f2ad2168a62241b5045..547455bb5011677719a8de1f98cb447561bce6aa 100644 +index bf202f5e2bf5eaf2dd9192dfd701e621126c492c..56b6cd5c39d5e72efd24b7aba1f28dab91a6144e 100644 --- a/src/node_file.cc +++ b/src/node_file.cc -@@ -3850,7 +3850,7 @@ void BindingData::Deserialize(Local context, +@@ -3891,7 +3891,7 @@ void BindingData::Deserialize(Local context, int index, InternalFieldInfoBase* info) { DCHECK_IS_SNAPSHOT_SLOT(index); @@ -647,10 +647,10 @@ index ba2dd7e676bfdfe7da66a4a79db3c791a505c9a8..28e6cfac682e301b605c00c4ef2eaf01 if (!error_obj->GetOwnPropertyNames(context).ToLocal(&keys)) { return writer->json_objectend(); // the end of 'errorProperties' diff --git a/src/node_snapshotable.cc b/src/node_snapshotable.cc -index c2e24b4645e7903e08c80aead1c18c7bcff1bd89..e34d24d51d5c090b560d06f727043f20924e6f46 100644 +index 41b0773f4c37a016cfa55aff6bb03baf50905b32..c3e995adf437413fe956e45c2ccc704d8737de59 100644 --- a/src/node_snapshotable.cc +++ b/src/node_snapshotable.cc -@@ -1614,7 +1614,7 @@ void BindingData::Deserialize(Local context, +@@ -1675,7 +1675,7 @@ void BindingData::Deserialize(Local context, int index, InternalFieldInfoBase* info) { DCHECK_IS_SNAPSHOT_SLOT(index); @@ -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 050d779bdcd2b3129abddc3fefa1e852831df236..3f4749286406e03e77de6567b667c0098fbc2a18 100644 +index d7c5bc5514044aa1ed39dd4e1c0cef346498c96f..91b80b4fb44c26e95503556064e7429b8cbf4639 100644 --- a/src/node_sqlite.cc +++ b/src/node_sqlite.cc -@@ -2162,7 +2162,7 @@ bool StatementSync::BindParams(const FunctionCallbackInfo& args) { +@@ -2436,7 +2436,7 @@ bool StatementSync::BindParams(const FunctionCallbackInfo& args) { if (args[0]->IsObject() && !args[0]->IsArrayBufferView()) { Local obj = args[0].As(); @@ -699,7 +699,7 @@ index 9b676a0156ab8ef47f62627be953c23d4fcbf4f4..6294cd03667980e2ad23cae9e7961262 BindingData* binding = realm->AddBindingData(holder); CHECK_NOT_NULL(binding); diff --git a/src/node_v8.cc b/src/node_v8.cc -index 8dd32dad262679444c10878299eb6bb8fb04e120..935ea2cf5157c3a2fbdf142fc7024ec6b6d5de26 100644 +index 4ee452d5bc6b67da52e91d98531ac35a7af155c7..b226d6fe60f4fdf5a237c336b9101c5a974ce837 100644 --- a/src/node_v8.cc +++ b/src/node_v8.cc @@ -163,7 +163,7 @@ void BindingData::Deserialize(Local context, @@ -736,10 +736,10 @@ index 370221d3cddc201180260ecb3a222bc831c91093..f5aff2f65fe6b9f48cf970ab3e7c57cf THROW_ERR_WASI_NOT_STARTED(isolate); return EinvalError(); diff --git a/src/node_webstorage.cc b/src/node_webstorage.cc -index 5c7d268d38ff55ce4db07463b1ea0bcb2f4e63ea..bd83654012442195866e57173b6e5d4d25fecf0f 100644 +index 013322e8fb6cb76074326c2a45a04eb0f8e133f1..0a169a8dcf27eeb5b5b0c1b00ac8b79ed43d551b 100644 --- a/src/node_webstorage.cc +++ b/src/node_webstorage.cc -@@ -57,7 +57,7 @@ using v8::Value; +@@ -56,7 +56,7 @@ using v8::Value; } while (0) static void ThrowQuotaExceededException(Local context) { @@ -748,17 +748,17 @@ index 5c7d268d38ff55ce4db07463b1ea0bcb2f4e63ea..bd83654012442195866e57173b6e5d4d auto dom_exception_str = FIXED_ONE_BYTE_STRING(isolate, "DOMException"); auto err_name = FIXED_ONE_BYTE_STRING(isolate, "QuotaExceededError"); auto err_message = -@@ -437,7 +437,7 @@ Maybe Storage::Store(Local key, Local value) { - } - - static MaybeLocal Uint32ToName(Local context, uint32_t index) { -- return Uint32::New(context->GetIsolate(), index)->ToString(context); -+ return Uint32::New(Isolate::GetCurrent(), index)->ToString(context); +@@ -435,6 +435,8 @@ Maybe Storage::Store(Local key, Local value) { + return JustVoid(); } ++ ++ static void Clear(const FunctionCallbackInfo& info) { + Storage* storage; + ASSIGN_OR_RETURN_UNWRAP(&storage, info.This()); diff --git a/src/node_worker.cc b/src/node_worker.cc -index 1acc61af0c995ddefbc00fe232b2454de77a84a3..3041746fc8a132f68cc1d801bb1700634699828d 100644 +index a2631a96371becb0f4ea4f47a52313f4f02477da..4866c7ff589825d41fe84786ed8f9b3fccd3d1b7 100644 --- a/src/node_worker.cc +++ b/src/node_worker.cc @@ -1465,8 +1465,6 @@ void GetEnvMessagePort(const FunctionCallbackInfo& args) { @@ -784,10 +784,10 @@ 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 aae5956742f195279ab6af04029d76dee6af2e84..6898e8ea794675e903e13e2b45524d572a3f68bb 100644 +index f42c7b1250d1eb2e4d9f8e10c5ea9a9ca310924b..d59e30a635b08b97d255ed2e5540a66db54b068f 100644 --- a/src/util-inl.h +++ b/src/util-inl.h -@@ -336,14 +336,14 @@ v8::Maybe FromV8Array(v8::Local context, +@@ -337,14 +337,14 @@ v8::Maybe FromV8Array(v8::Local context, std::vector>* out) { uint32_t count = js_array->Length(); out->reserve(count); @@ -804,7 +804,7 @@ index aae5956742f195279ab6af04029d76dee6af2e84..6898e8ea794675e903e13e2b45524d57 if (str.size() >= static_cast(v8::String::kMaxLength)) [[unlikely]] { // 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, +@@ -360,7 +360,7 @@ v8::MaybeLocal ToV8Value(v8::Local context, v8::MaybeLocal ToV8Value(v8::Local context, std::u16string_view str, v8::Isolate* isolate) { @@ -813,7 +813,7 @@ index aae5956742f195279ab6af04029d76dee6af2e84..6898e8ea794675e903e13e2b45524d57 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, +@@ -380,7 +380,7 @@ v8::MaybeLocal ToV8Value(v8::Local context, v8::MaybeLocal ToV8Value(v8::Local context, v8_inspector::StringView str, v8::Isolate* isolate) { @@ -822,7 +822,7 @@ index aae5956742f195279ab6af04029d76dee6af2e84..6898e8ea794675e903e13e2b45524d57 if (str.length() >= static_cast(v8::String::kMaxLength)) [[unlikely]] { // V8 only has a TODO comment about adding an exception when the maximum -@@ -406,7 +406,7 @@ template +@@ -407,7 +407,7 @@ template v8::MaybeLocal ToV8Value(v8::Local context, const std::vector& vec, v8::Isolate* isolate) { @@ -831,7 +831,7 @@ index aae5956742f195279ab6af04029d76dee6af2e84..6898e8ea794675e903e13e2b45524d57 v8::EscapableHandleScope handle_scope(isolate); MaybeStackBuffer, 128> arr(vec.size()); -@@ -423,7 +423,7 @@ template +@@ -424,7 +424,7 @@ template v8::MaybeLocal ToV8Value(v8::Local context, const std::set& set, v8::Isolate* isolate) { @@ -840,7 +840,7 @@ index aae5956742f195279ab6af04029d76dee6af2e84..6898e8ea794675e903e13e2b45524d57 v8::Local set_js = v8::Set::New(isolate); v8::HandleScope handle_scope(isolate); -@@ -442,7 +442,7 @@ template +@@ -443,7 +443,7 @@ template v8::MaybeLocal ToV8Value(v8::Local context, const std::ranges::elements_view& vec, v8::Isolate* isolate) { @@ -849,7 +849,7 @@ index aae5956742f195279ab6af04029d76dee6af2e84..6898e8ea794675e903e13e2b45524d57 v8::EscapableHandleScope handle_scope(isolate); MaybeStackBuffer, 128> arr(vec.size()); -@@ -461,7 +461,7 @@ template +@@ -462,7 +462,7 @@ template v8::MaybeLocal ToV8Value(v8::Local context, const std::unordered_map& map, v8::Isolate* isolate) { @@ -858,7 +858,7 @@ index aae5956742f195279ab6af04029d76dee6af2e84..6898e8ea794675e903e13e2b45524d57 v8::EscapableHandleScope handle_scope(isolate); v8::Local ret = v8::Map::New(isolate); -@@ -504,7 +504,7 @@ template +@@ -505,7 +505,7 @@ template v8::MaybeLocal ToV8Value(v8::Local context, const T& number, v8::Isolate* isolate) { @@ -867,7 +867,7 @@ index aae5956742f195279ab6af04029d76dee6af2e84..6898e8ea794675e903e13e2b45524d57 return ConvertNumberToV8Value(isolate, number); } -@@ -517,7 +517,7 @@ v8::Local ToV8ValuePrimitiveArray(v8::Local context, +@@ -518,7 +518,7 @@ v8::Local ToV8ValuePrimitiveArray(v8::Local context, std::is_floating_point_v, "Only primitive types (bool, integral, floating-point) are supported."); @@ -876,7 +876,7 @@ index aae5956742f195279ab6af04029d76dee6af2e84..6898e8ea794675e903e13e2b45524d57 v8::EscapableHandleScope handle_scope(isolate); v8::LocalVector elements(isolate); -@@ -803,7 +803,7 @@ inline v8::MaybeLocal NewDictionaryInstanceNullProto( +@@ -811,7 +811,7 @@ inline v8::MaybeLocal NewDictionaryInstanceNullProto( if (value.IsEmpty()) return v8::MaybeLocal(); } v8::Local obj = tmpl->NewInstance(context, property_values); @@ -935,7 +935,7 @@ index 660cfff6b8a0c583be843e555e7a06cd09e0d279..c4b39450c5b7f91c46f7027db367c30d context, that, OneByteString(isolate, name), tmpl, flag); } diff --git a/src/util.h b/src/util.h -index 81d08c27fb7037d16e12843dc03c3d8f9caee723..52e6a149d6760640d93c56ce91a759ae9207a8c7 100644 +index 51f0b6463ab6bc33aa4e66bd55e0ab3822840ab0..ee05fa017f48c5b03e7179d6fef39b6e32e488a5 100644 --- a/src/util.h +++ b/src/util.h @@ -753,7 +753,7 @@ inline v8::MaybeLocal ToV8Value( diff --git a/patches/node/build_add_gn_build_files.patch b/patches/node/build_add_gn_build_files.patch index cd78e6b9ea..3414f67c6b 100644 --- a/patches/node/build_add_gn_build_files.patch +++ b/patches/node/build_add_gn_build_files.patch @@ -11,10 +11,10 @@ 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 98a8b147e4cbfd5957c35688f2b37ae0ca52a818..fd13970ae73bbe5db186f81faed792a5597bbcd0 100755 +index fa25de8c316b71d3ad5b55b5ce398b69a5d4a965..fc48438060e0dd84edc60d1aebf3d0946be98ea9 100755 --- a/configure.py +++ b/configure.py -@@ -1821,7 +1821,7 @@ def configure_v8(o, configs): +@@ -1838,7 +1838,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. @@ -23,54 +23,8 @@ index 98a8b147e4cbfd5957c35688f2b37ae0ca52a818..fd13970ae73bbe5db186f81faed792a5 # 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/deps/merve/BUILD.gn b/deps/merve/BUILD.gn -new file mode 100644 -index 0000000000000000000000000000000000000000..7bb318f8835dba6f4a6f211d8534bb6923958747 ---- /dev/null -+++ b/deps/merve/BUILD.gn -@@ -0,0 +1,14 @@ -+############################################################################## -+# # -+# DO NOT EDIT THIS FILE! # -+# # -+############################################################################## -+ -+# This file is used by GN for building, which is NOT the build system used for -+# building official binaries. -+# Please modify the gyp files if you are making changes to build system. -+ -+import("unofficial.gni") -+ -+merve_gn_build("merve") { -+} -diff --git a/deps/merve/unofficial.gni b/deps/merve/unofficial.gni -new file mode 100644 -index 0000000000000000000000000000000000000000..dfb508d1d22f84accb146620ed07d89715b367e6 ---- /dev/null -+++ b/deps/merve/unofficial.gni -@@ -0,0 +1,20 @@ -+# This file is used by GN for building, which is NOT the build system used for -+# building official binaries. -+# Please edit the gyp files if you are making changes to build system. -+ -+# The actual configurations are put inside a template in unofficial.gni to -+# prevent accidental edits from contributors. -+template("merve_gn_build") { -+ config("merve_config") { -+ include_dirs = [ "." ] -+ } -+ gypi_values = exec_script("../../tools/gypi_to_gn.py", -+ [ rebase_path("merve.gyp") ], -+ "scope", -+ [ "merve.gyp" ]) -+ source_set(target_name) { -+ forward_variables_from(invoker, "*") -+ public_configs = [ ":merve_config" ] -+ sources = gypi_values.merve_sources -+ } -+} diff --git a/node.gni b/node.gni -index d4438f7fd61598afac2c1e3184721a759d22b10c..156fee33b3813fe4d94a1c9585f217a99dbfbd5f 100644 +index 41f200189a34e150e4c8f25da2a72c2108259720..156fee33b3813fe4d94a1c9585f217a99dbfbd5f 100644 --- a/node.gni +++ b/node.gni @@ -5,10 +5,10 @@ @@ -86,16 +40,7 @@ index d4438f7fd61598afac2c1e3184721a759d22b10c..156fee33b3813fe4d94a1c9585f217a9 # The location of OpenSSL - use the one from node's deps by default. node_openssl_path = "$node_path/deps/openssl" -@@ -26,8 +26,6 @@ declare_args() { - # TODO(zcbenz): This is currently copied from configure.py, we should share - # the list between configure.py and GN configurations. - node_builtin_shareable_builtins = [ -- "deps/cjs-module-lexer/lexer.js", -- "deps/cjs-module-lexer/dist/lexer.js", - "deps/undici/undici.js", - "deps/amaro/dist/index.js", - ] -@@ -50,7 +48,7 @@ declare_args() { +@@ -48,7 +48,7 @@ declare_args() { node_openssl_system_ca_path = "" # Initialize v8 platform during node.js startup. @@ -104,7 +49,7 @@ index d4438f7fd61598afac2c1e3184721a759d22b10c..156fee33b3813fe4d94a1c9585f217a9 # Custom build tag. node_tag = "" -@@ -70,10 +68,16 @@ declare_args() { +@@ -68,10 +68,16 @@ declare_args() { # TODO(zcbenz): There are few broken things for now: # 1. cross-os compilation is not supported. # 2. node_mksnapshot crashes when cross-compiling for x64 from arm64. @@ -123,11 +68,51 @@ index d4438f7fd61598afac2c1e3184721a759d22b10c..156fee33b3813fe4d94a1c9585f217a9 assert(!node_enable_inspector || node_use_openssl, diff --git a/src/node_builtins.cc b/src/node_builtins.cc -index f25ca01d6ef016489371a3a1c9d8500da65e8023..2c816bef8d64f3e0ba2993c4885641620ee64272 100644 +index 6506dcea3f4f88a7781975fae1ee5f8b87d4dfb2..a077ad673fdf7eab61878940e5fef43921c2e453 100644 --- a/src/node_builtins.cc +++ b/src/node_builtins.cc -@@ -760,6 +760,7 @@ void BuiltinLoader::RegisterExternalReferences( - registry->Register(GetNatives); +@@ -455,6 +455,30 @@ MaybeLocal BuiltinLoader::LookupAndCompileFunction( + return value.As(); + } + ++MaybeLocal BuiltinLoader::LookupAndCompileFunction( ++ Local context, ++ const char* id, ++ LocalVector* parameters, ++ Realm* optional_realm) { ++ Isolate* isolate = Isolate::GetCurrent(); ++ const BuiltinSource* builtin_source = LoadBuiltinSource(isolate, id); ++ if (builtin_source == nullptr) { ++ THROW_ERR_MODULE_NOT_FOUND(isolate, "Cannot find module %s", id); ++ return MaybeLocal(); ++ } ++ std::string filename_s = std::string("node:") + builtin_source->id; ++ Local filename = OneByteString(isolate, filename_s); ++ Local source = builtin_source->source.ToStringChecked(isolate); ++ ScriptOrigin origin(filename, 0, 0, true); ++ ScriptCompiler::Source script_source(source, origin); ++ return ScriptCompiler::CompileFunction(context, ++ &script_source, ++ parameters->size(), ++ parameters->data(), ++ 0, ++ nullptr); ++} ++ + MaybeLocal BuiltinLoader::CompileAndCall(Local context, + const char* id, + Realm* realm) { +@@ -741,7 +765,7 @@ MaybeLocal BuiltinLoader::LoadBuiltinSourceTextModule(Realm* realm, + // Pre-fetch all dependencies. + if (requests->Length() > 0) { + for (int i = 0; i < requests->Length(); i++) { +- Local req = requests->Get(context, i).As(); ++ Local req = requests->Get(i).As(); + std::string specifier = + Utf8Value(isolate, req->GetSpecifier()).ToString(); + std::string resolved_id = ResolveRequestForBuiltin(specifier); +@@ -900,6 +924,7 @@ void BuiltinLoader::RegisterExternalReferences( + registry->Register(ImportBuiltinSourceTextModule); RegisterExternalReferencesForInternalizedBuiltinCode(registry); + EmbedderRegisterExternalReferencesForInternalizedBuiltinCode(registry); @@ -135,10 +120,10 @@ index f25ca01d6ef016489371a3a1c9d8500da65e8023..2c816bef8d64f3e0ba2993c488564162 } // namespace builtins diff --git a/src/node_builtins.h b/src/node_builtins.h -index 7a7b84337feb67960819472e43192dbdc151e299..bcdd50f635757f41287c87df1db9cd3b55c4b6b9 100644 +index e4af1f42f4442b4c1ec94cf25d8d811f0e82d89e..490f429986e43653e0dd2048d9e3bd2e99ae44b2 100644 --- a/src/node_builtins.h +++ b/src/node_builtins.h -@@ -75,6 +75,8 @@ using BuiltinCodeCacheMap = +@@ -82,6 +82,8 @@ using BuiltinCodeCacheMap = // Generated by tools/js2c.cc as node_javascript.cc void RegisterExternalReferencesForInternalizedBuiltinCode( ExternalReferenceRegistry* registry); @@ -147,13 +132,27 @@ index 7a7b84337feb67960819472e43192dbdc151e299..bcdd50f635757f41287c87df1db9cd3b // Handles compilation and caching of built-in JavaScript modules and // bootstrap scripts, whose source are bundled into the binary as static data. +@@ -104,6 +106,13 @@ class NODE_EXTERN_PRIVATE BuiltinLoader { + v8::MaybeLocal LookupAndCompileFunction( + v8::Local context, const char* id, Realm* optional_realm); + ++ // Overload that accepts custom parameters for embedder scripts. ++ v8::MaybeLocal LookupAndCompileFunction( ++ v8::Local context, ++ const char* id, ++ v8::LocalVector* parameters, ++ Realm* optional_realm); ++ + v8::MaybeLocal CompileAndCallWith(v8::Local context, + const char* id, + int argc, diff --git a/tools/js2c.cc b/tools/js2c.cc old mode 100644 new mode 100755 -index 9c2f70de4e00834ff448e573743898072dc14c5d..71a12c606f4da7165cc41a295a278b2e504af1b6 +index 2cb09f8e1d7ba6ba389f70cdfc6300458f469caa..1a7b6ec6e6c51cf947694fac5dfd860b345d478f --- a/tools/js2c.cc +++ b/tools/js2c.cc -@@ -28,6 +28,7 @@ namespace js2c { +@@ -29,6 +29,7 @@ namespace js2c { int Main(int argc, char* argv[]); static bool is_verbose = false; @@ -161,7 +160,7 @@ index 9c2f70de4e00834ff448e573743898072dc14c5d..71a12c606f4da7165cc41a295a278b2e void Debug(const char* format, ...) { va_list arguments; -@@ -175,6 +176,7 @@ const char* kTemplate = R"( +@@ -176,6 +177,7 @@ const char* kTemplate = R"( #include "node_builtins.h" #include "node_external_reference.h" #include "node_internals.h" @@ -169,7 +168,7 @@ index 9c2f70de4e00834ff448e573743898072dc14c5d..71a12c606f4da7165cc41a295a278b2e namespace node { -@@ -190,7 +192,11 @@ const ThreadsafeCopyOnWrite global_source_map { +@@ -191,7 +193,11 @@ const ThreadsafeCopyOnWrite global_source_map { } // anonymous namespace void BuiltinLoader::LoadJavaScriptSource() { @@ -182,7 +181,7 @@ index 9c2f70de4e00834ff448e573743898072dc14c5d..71a12c606f4da7165cc41a295a278b2e } void RegisterExternalReferencesForInternalizedBuiltinCode( -@@ -207,6 +213,45 @@ UnionBytes BuiltinLoader::GetConfig() { +@@ -208,6 +214,45 @@ UnionBytes BuiltinLoader::GetConfig() { } // namespace node )"; @@ -228,7 +227,7 @@ index 9c2f70de4e00834ff448e573743898072dc14c5d..71a12c606f4da7165cc41a295a278b2e Fragment Format(const Fragments& definitions, const Fragments& initializers, const Fragments& registrations) { -@@ -216,13 +261,12 @@ Fragment Format(const Fragments& definitions, +@@ -217,13 +262,12 @@ Fragment Format(const Fragments& definitions, size_t init_size = init_buf.size(); std::vector reg_buf = Join(registrations, "\n"); size_t reg_size = reg_buf.size(); @@ -245,7 +244,7 @@ index 9c2f70de4e00834ff448e573743898072dc14c5d..71a12c606f4da7165cc41a295a278b2e static_cast(def_buf.size()), def_buf.data(), static_cast(init_buf.size()), -@@ -836,12 +880,15 @@ int JS2C(const FileList& js_files, +@@ -848,12 +892,15 @@ int JS2C(const FileList& js_files, } } @@ -261,7 +260,7 @@ index 9c2f70de4e00834ff448e573743898072dc14c5d..71a12c606f4da7165cc41a295a278b2e Fragment out = Format(definitions, initializers, registrations); return WriteIfChanged(out, dest); } -@@ -867,6 +914,8 @@ int Main(int argc, char* argv[]) { +@@ -879,6 +926,8 @@ int Main(int argc, char* argv[]) { std::string arg(argv[i]); if (arg == "--verbose") { is_verbose = true; @@ -270,7 +269,7 @@ index 9c2f70de4e00834ff448e573743898072dc14c5d..71a12c606f4da7165cc41a295a278b2e } else if (arg == "--root") { if (i == argc - 1) { fprintf(stderr, "--root must be followed by a path\n"); -@@ -915,6 +964,14 @@ int Main(int argc, char* argv[]) { +@@ -927,6 +976,14 @@ int Main(int argc, char* argv[]) { } } @@ -285,7 +284,7 @@ index 9c2f70de4e00834ff448e573743898072dc14c5d..71a12c606f4da7165cc41a295a278b2e // Should have exactly 3 types: `.js`, `.mjs` and `.gypi`. assert(file_map.size() == 3); auto gypi_it = file_map.find(".gypi"); -@@ -941,6 +998,7 @@ int Main(int argc, char* argv[]) { +@@ -953,6 +1010,7 @@ int Main(int argc, char* argv[]) { std::sort(mjs_it->second.begin(), mjs_it->second.end()); return JS2C(js_it->second, mjs_it->second, gypi_it->second[0], output); @@ -306,10 +305,10 @@ index 856878c33681a73d41016729dabe48b0a6a80589..91a11852d206b65485fe90fd037a0bd1 if sys.platform == 'win32': files = [ x.replace('\\', '/') for x in files ] diff --git a/unofficial.gni b/unofficial.gni -index c742b62c484e9dd205eff63dcffad78c76828375..bff7b0650cfe8578a044e45d0f9e352859909695 100644 +index aa78f9ce60c0439536eaf6e23880e30ebef0e1a9..df0ae804a5338d8f2ec4d331a1e2ed053c3c3955 100644 --- a/unofficial.gni +++ b/unofficial.gni -@@ -147,31 +147,42 @@ template("node_gn_build") { +@@ -147,32 +147,42 @@ template("node_gn_build") { public_configs = [ ":node_external_config", "deps/googletest:googletest_config", @@ -328,7 +327,7 @@ index c742b62c484e9dd205eff63dcffad78c76828375..bff7b0650cfe8578a044e45d0f9e3528 "deps/cares", "deps/histogram", "deps/llhttp", -+ "deps/merve", + "deps/merve", "deps/nbytes", "deps/nghttp2", - "deps/ngtcp2", @@ -355,7 +354,7 @@ index c742b62c484e9dd205eff63dcffad78c76828375..bff7b0650cfe8578a044e45d0f9e3528 "$target_gen_dir/node_javascript.cc", ] + gypi_values.node_sources -@@ -194,7 +205,7 @@ template("node_gn_build") { +@@ -195,7 +205,7 @@ template("node_gn_build") { } if (node_use_openssl) { deps += [ "deps/ncrypto" ] @@ -364,7 +363,7 @@ index c742b62c484e9dd205eff63dcffad78c76828375..bff7b0650cfe8578a044e45d0f9e3528 sources += gypi_values.node_crypto_sources } if (node_use_sqlite) { -@@ -223,6 +234,10 @@ template("node_gn_build") { +@@ -224,6 +234,10 @@ template("node_gn_build") { } } @@ -375,7 +374,7 @@ index c742b62c484e9dd205eff63dcffad78c76828375..bff7b0650cfe8578a044e45d0f9e3528 executable(target_name) { forward_variables_from(invoker, "*") -@@ -314,6 +329,7 @@ template("node_gn_build") { +@@ -315,6 +329,7 @@ template("node_gn_build") { } executable("node_js2c") { @@ -383,9 +382,9 @@ index c742b62c484e9dd205eff63dcffad78c76828375..bff7b0650cfe8578a044e45d0f9e3528 deps = [ "deps/uv", "$node_simdutf_path", -@@ -324,26 +340,75 @@ template("node_gn_build") { - "src/embedded_data.cc", - "src/embedded_data.h", +@@ -327,26 +342,75 @@ template("node_gn_build") { + "src/builtin_info.cc", + "src/builtin_info.h", ] - include_dirs = [ "src" ] + include_dirs = [ "src", "tools" ] @@ -469,7 +468,7 @@ index c742b62c484e9dd205eff63dcffad78c76828375..bff7b0650cfe8578a044e45d0f9e3528 outputs = [ "$target_gen_dir/node_javascript.cc" ] # Get the path to node_js2c executable of the host toolchain. -@@ -357,11 +422,11 @@ template("node_gn_build") { +@@ -360,11 +424,11 @@ template("node_gn_build") { get_label_info(":node_js2c($host_toolchain)", "name") + host_executable_suffix diff --git a/patches/node/build_allow_unbundling_of_node_js_dependencies.patch b/patches/node/build_allow_unbundling_of_node_js_dependencies.patch index b3ebf17c74..3446cbb087 100644 --- a/patches/node/build_allow_unbundling_of_node_js_dependencies.patch +++ b/patches/node/build_allow_unbundling_of_node_js_dependencies.patch @@ -14,7 +14,7 @@ We don't need to do this for zlib, as the existing gn workflow uses the same Upstreamed at https://github.com/nodejs/node/pull/55903 diff --git a/unofficial.gni b/unofficial.gni -index bff7b0650cfe8578a044e45d0f9e352859909695..4ab316e45bd84e43a53335df60f847b17fe6c2fa 100644 +index df0ae804a5338d8f2ec4d331a1e2ed053c3c3955..07ebc4706c6b3208dc9136e6ba0e4d795c238d61 100644 --- a/unofficial.gni +++ b/unofficial.gni @@ -199,7 +199,17 @@ template("node_gn_build") { diff --git a/patches/node/build_enable_perfetto.patch b/patches/node/build_enable_perfetto.patch index b5dfacc986..f48ed5128e 100644 --- a/patches/node/build_enable_perfetto.patch +++ b/patches/node/build_enable_perfetto.patch @@ -64,10 +64,10 @@ index f8b4fd7c4ca5a0907806c7e804de8c951675a36a..209e3bcf8be5a23ac528dcd673bed82c function ipToInt(ip) { diff --git a/node.gyp b/node.gyp -index f5cd416b5fe7a51084bc4af9a4427a8e62599fd8..5eb70ce3820f2b82121bc102c5182ab768cbef36 100644 +index 0620850e0872cfea9a1241b2a56f7bede7fa291a..cdd977a2fb0a9a2debd75631c4c691b673c1e544 100644 --- a/node.gyp +++ b/node.gyp -@@ -182,7 +182,6 @@ +@@ -184,7 +184,6 @@ 'src/timers.cc', 'src/timer_wrap.cc', 'src/tracing/agent.cc', @@ -75,7 +75,7 @@ index f5cd416b5fe7a51084bc4af9a4427a8e62599fd8..5eb70ce3820f2b82121bc102c5182ab7 'src/tracing/node_trace_writer.cc', 'src/tracing/trace_event.cc', 'src/tracing/traced_value.cc', -@@ -314,7 +313,6 @@ +@@ -318,7 +317,6 @@ 'src/tcp_wrap.h', 'src/timers.h', 'src/tracing/agent.h', 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 76da3ac7cd..0b5a5bad55 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 d9eb9527e3cbb3b101274ab19e6d6ace42f0e022..a1243ad39b8fcf564285ace0b51b1482bd85071b 100644 +index d398e33d5acc9acd096e2c263a6f8ad9d947d1b0..f760bb6e6a498c3f9786b46b60fbbf38521ab60a 100644 --- a/common.gypi +++ b/common.gypi @@ -89,6 +89,8 @@ @@ -42,19 +42,19 @@ index d9eb9527e3cbb3b101274ab19e6d6ace42f0e022..a1243ad39b8fcf564285ace0b51b1482 # list in v8/BUILD.gn. ['v8_enable_v8_checks == 1', { diff --git a/configure.py b/configure.py -index fd13970ae73bbe5db186f81faed792a5597bbcd0..162e3b09c92b49cd39d32a87ff97a54555d3e47b 100755 +index fc48438060e0dd84edc60d1aebf3d0946be98ea9..4e30f58c3f33ed400301ed08a365a738b49f530f 100755 --- a/configure.py +++ b/configure.py -@@ -1802,6 +1802,7 @@ def configure_library(lib, output, pkgname=None): +@@ -1810,6 +1810,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) + set_configuration_variable(configs, 'v8_enable_v8_checks', release=0, debug=1) + o['variables']['using_electron_config_gypi'] = 1 o['variables']['v8_enable_webassembly'] = 0 if options.v8_lite_mode else 1 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 ebfd7229b5f0044b628fbe0b03ac211f0c6ed9a6..b92a9d42da8419741c435643b7401efcb21a9e8b 100644 +index 2087509f7961dcacf02c634f2c4940e45f374072..0225ff4f43e8b82c08e8ec5492df73223a82066c 100644 --- a/src/node.h +++ b/src/node.h @@ -22,6 +22,12 @@ diff --git a/patches/node/build_modify_js2c_py_to_allow_injection_of_original-fs_and_custom_embedder_js.patch b/patches/node/build_modify_js2c_py_to_allow_injection_of_original-fs_and_custom_embedder_js.patch index cd38cecb09..4b1d57b168 100644 --- a/patches/node/build_modify_js2c_py_to_allow_injection_of_original-fs_and_custom_embedder_js.patch +++ b/patches/node/build_modify_js2c_py_to_allow_injection_of_original-fs_and_custom_embedder_js.patch @@ -34,10 +34,10 @@ index a493c9579669072d97c7caa9049e846bda36f8b9..334ffaa6f2d955125ca8b427ace1442c let kResistStopPropagation; diff --git a/src/node_builtins.cc b/src/node_builtins.cc -index 2c816bef8d64f3e0ba2993c4885641620ee64272..3377d697615ee168e49e83c4202bc227581f1aaf 100644 +index a077ad673fdf7eab61878940e5fef43921c2e453..7922f2f936f64cbb7bd08f0d367f66f0b9eb083b 100644 --- a/src/node_builtins.cc +++ b/src/node_builtins.cc -@@ -39,6 +39,7 @@ using v8::Value; +@@ -46,6 +46,7 @@ using v8::Value; BuiltinLoader::BuiltinLoader() : config_(GetConfig()), code_cache_(std::make_shared()) { LoadJavaScriptSource(); @@ -46,10 +46,10 @@ index 2c816bef8d64f3e0ba2993c4885641620ee64272..3377d697615ee168e49e83c4202bc227 AddExternalizedBuiltin("internal/deps/undici/undici", STRINGIFY(NODE_SHARED_BUILTIN_UNDICI_UNDICI_PATH)); diff --git a/src/node_builtins.h b/src/node_builtins.h -index bcdd50f635757f41287c87df1db9cd3b55c4b6b9..e908f3c0e314b90ff7b6c599940ea8f4e657c709 100644 +index 490f429986e43653e0dd2048d9e3bd2e99ae44b2..05b1c5bbc38f851b11383b7e3e48c1c92f47aba1 100644 --- a/src/node_builtins.h +++ b/src/node_builtins.h -@@ -141,6 +141,7 @@ class NODE_EXTERN_PRIVATE BuiltinLoader { +@@ -150,6 +150,7 @@ class NODE_EXTERN_PRIVATE BuiltinLoader { // Generated by tools/js2c.cc as node_javascript.cc void LoadJavaScriptSource(); // Loads data into source_ 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 cba19216c3..331c6d79ae 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 a1243ad39b8fcf564285ace0b51b1482bd85071b..60ac7a50718fd8239fd96b811cdccd1c73b2d606 100644 +index f760bb6e6a498c3f9786b46b60fbbf38521ab60a..d9ba0816ae424e5eb77fa742f8fd3d2d1c9845fc 100644 --- a/common.gypi +++ b/common.gypi @@ -128,6 +128,7 @@ diff --git a/patches/node/build_restore_macos_deployment_target_to_12_0.patch b/patches/node/build_restore_macos_deployment_target_to_12_0.patch index da5d6fed32..246545c4dc 100644 --- a/patches/node/build_restore_macos_deployment_target_to_12_0.patch +++ b/patches/node/build_restore_macos_deployment_target_to_12_0.patch @@ -10,7 +10,7 @@ M151, and so we should allow for building until then. This patch can be removed at the M151 branch point. diff --git a/common.gypi b/common.gypi -index 60ac7a50718fd8239fd96b811cdccd1c73b2d606..709eb83801eeed81f79c4305a86d1a19710298c2 100644 +index d9ba0816ae424e5eb77fa742f8fd3d2d1c9845fc..537332b67dc7a45ef2b9ca4e439081a9f39a5f69 100644 --- a/common.gypi +++ b/common.gypi @@ -677,7 +677,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 15ed9010f8..8b40bd4e1c 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 8ed8802adcda308166d700e463c8d6cbcb26d94a..9a99ff6d44320c0e28f4a787d24ea98ae1c96196 100644 +index e9ab2b2a8958e99a6cd9d4280641c05eedec18aa..4a42dd66f451eece98fded909a72dd5ffcfd9708 100644 --- a/lib/internal/process/pre_execution.js +++ b/lib/internal/process/pre_execution.js -@@ -276,12 +276,14 @@ function patchProcessObject(expandArgv1) { +@@ -281,12 +281,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 3d3947a05b..246af780c8 100644 --- a/patches/node/chore_disable_deprecation_ftbfs_in_simdjson_header.patch +++ b/patches/node/chore_disable_deprecation_ftbfs_in_simdjson_header.patch @@ -14,10 +14,10 @@ and 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 1d6560e80fab0458b22f0ac2437056bce4873e8f..c3dbe2b6fc08c36a07ced5e29a814f7bcd85b748 100644 +index 3a413a7d1e046e93babfdda9982bd602f35ba3fc..76a6d4a30efcf0f5c9d14a314f1be670e8184524 100644 --- a/deps/simdjson/simdjson.h +++ b/deps/simdjson/simdjson.h -@@ -4215,12 +4215,17 @@ inline std::ostream& operator<<(std::ostream& out, simdjson_result padded_string::load(std::wstring_view file +@@ -5105,6 +5110,9 @@ simdjson_inline bool padded_memory_map::is_valid() const noexcept { } // namespace simdjson @@ -45,16 +45,16 @@ index 1d6560e80fab0458b22f0ac2437056bce4873e8f..c3dbe2b6fc08c36a07ced5e29a814f7b inline simdjson::padded_string operator ""_padded(const char *str, size_t len) { return simdjson::padded_string(str, len); } -@@ -4737,6 +4745,8 @@ inline simdjson::padded_string operator ""_padded(const char8_t *str, size_t len +@@ -5113,6 +5121,8 @@ inline simdjson::padded_string operator ""_padded(const char8_t *str, size_t len return simdjson::padded_string(reinterpret_cast(str), len); } #endif +#pragma clang diagnostic pop + + #endif // SIMDJSON_PADDED_STRING_INL_H /* end file simdjson/padded_string-inl.h */ - /* skipped duplicate #include "simdjson/padded_string_view.h" */ -@@ -44745,12 +44755,16 @@ simdjson_inline simdjson_warn_unused std::unique_ptr& parser:: +@@ -72412,12 +72422,16 @@ simdjson_inline simdjson_warn_unused std::unique_ptr& parser:: return parser_instance; } @@ -71,7 +71,7 @@ index 1d6560e80fab0458b22f0ac2437056bce4873e8f..c3dbe2b6fc08c36a07ced5e29a814f7b } // namespace ondemand } // namespace arm64 -@@ -59221,12 +59235,16 @@ simdjson_inline simdjson_warn_unused std::unique_ptr& parser:: +@@ -85564,12 +85578,16 @@ simdjson_inline simdjson_warn_unused std::unique_ptr& parser:: return parser_instance; } diff --git a/patches/node/chore_exclude_electron_node_folder_from_exit-time-destructors.patch b/patches/node/chore_exclude_electron_node_folder_from_exit-time-destructors.patch index e05263391a..c99ae4931d 100644 --- a/patches/node/chore_exclude_electron_node_folder_from_exit-time-destructors.patch +++ b/patches/node/chore_exclude_electron_node_folder_from_exit-time-destructors.patch @@ -20,7 +20,7 @@ index ab7dc27de3e304f6d912d5834da47e3b4eb25495..b6c0fd4ceee989dac55c7d54e52fef18 } } diff --git a/unofficial.gni b/unofficial.gni -index 4ab316e45bd84e43a53335df60f847b17fe6c2fa..def9a302830e493e51cc2b3588816fcbd3a1bb51 100644 +index 07ebc4706c6b3208dc9136e6ba0e4d795c238d61..8844e2c3916541b62418c4b891b5a834b910bea4 100644 --- a/unofficial.gni +++ b/unofficial.gni @@ -143,7 +143,10 @@ template("node_gn_build") { @@ -35,8 +35,8 @@ index 4ab316e45bd84e43a53335df60f847b17fe6c2fa..def9a302830e493e51cc2b3588816fcb public_configs = [ ":node_external_config", "deps/googletest:googletest_config", -@@ -364,6 +367,7 @@ template("node_gn_build") { - "src/embedded_data.h", +@@ -366,6 +369,7 @@ template("node_gn_build") { + "src/builtin_info.h", ] include_dirs = [ "src", "tools" ] + configs += [ "//build/config/compiler:no_exit_time_destructors" ] diff --git a/patches/node/chore_expose_importmoduledynamically_and.patch b/patches/node/chore_expose_importmoduledynamically_and.patch index d3ceb31fde..4a8079ab0b 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 0af25ebbf6c3f2b790238e32f01addfb648e4e52..bd726088f7480853b8507c39668cc4716c4ce61f 100644 +index 5019477c55e5ff1121a2b51168f12e008d54d59e..8eb390fbe16401a7abf836030233832925ab5c9e 100644 --- a/lib/internal/modules/esm/utils.js +++ b/lib/internal/modules/esm/utils.js @@ -35,7 +35,7 @@ const { diff --git a/patches/node/expose_get_builtin_module_function.patch b/patches/node/expose_get_builtin_module_function.patch index 9f9b2d9f59..d820596562 100644 --- a/patches/node/expose_get_builtin_module_function.patch +++ b/patches/node/expose_get_builtin_module_function.patch @@ -9,10 +9,10 @@ modules to sandboxed renderers. TODO(codebytere): remove and replace with a public facing API. diff --git a/src/node_binding.cc b/src/node_binding.cc -index 740706e917b7d28c520abdbd743605bf73274f30..9ab30b3c9bc663d2947fcbfaac6f06d2c8f8a5b1 100644 +index b76ecc8cab47dfb96adce17294eb0191a60a2efd..0ddc080f6f1e1b3d0aaa0e55c9aa5ddb7409b11b 100644 --- a/src/node_binding.cc +++ b/src/node_binding.cc -@@ -656,6 +656,10 @@ void GetInternalBinding(const FunctionCallbackInfo& args) { +@@ -657,6 +657,10 @@ void GetInternalBinding(const FunctionCallbackInfo& args) { args.GetReturnValue().Set(exports); } @@ -24,10 +24,10 @@ index 740706e917b7d28c520abdbd743605bf73274f30..9ab30b3c9bc663d2947fcbfaac6f06d2 Environment* env = Environment::GetCurrent(args); diff --git a/src/node_binding.h b/src/node_binding.h -index a55a9c6a5787983c0477cb268ef1355162e72911..3455eb3d223a49cd73d80c72c209c26d49b769dc 100644 +index bb6547e5dac4086e29fd588d46e1b69d4e5dbc15..58f68485c298dce116a6a8ee6960c85edcb65e93 100644 --- a/src/node_binding.h +++ b/src/node_binding.h -@@ -154,6 +154,8 @@ void GetInternalBinding(const v8::FunctionCallbackInfo& args); +@@ -155,6 +155,8 @@ void GetInternalBinding(const v8::FunctionCallbackInfo& args); void GetLinkedBinding(const v8::FunctionCallbackInfo& args); void DLOpen(const v8::FunctionCallbackInfo& args); 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 bed45ab340..42272c2235 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 283c60eab356a5befc15027cd186ea0416914ee6..d9eb9527e3cbb3b101274ab19e6d6ace42f0e022 100644 +index 576d5057d988fca43a604a6db6a0b5723e960e2e..d398e33d5acc9acd096e2c263a6f8ad9d947d1b0 100644 --- a/common.gypi +++ b/common.gypi @@ -91,6 +91,23 @@ diff --git a/patches/node/fix_add_externalpointertypetag_to_v8_external_api_calls.patch b/patches/node/fix_add_externalpointertypetag_to_v8_external_api_calls.patch index 17daaeffaa..71d8db35c7 100644 --- a/patches/node/fix_add_externalpointertypetag_to_v8_external_api_calls.patch +++ b/patches/node/fix_add_externalpointertypetag_to_v8_external_api_calls.patch @@ -8,7 +8,7 @@ an ExternalPointerTypeTag parameter. Use kExternalPointerTypeTagDefault for all existing call sites. diff --git a/src/crypto/crypto_context.cc b/src/crypto/crypto_context.cc -index d6af2460c3745901415d4e785cf210da8a730a8d..4b5b892b81727c8f93e3041d33902c31d3776a52 100644 +index ff7a5917b554fc0c67edf4e36f567e7223e70577..23aaa364e955753a92c3cb575646955c40cdfd55 100644 --- a/src/crypto/crypto_context.cc +++ b/src/crypto/crypto_context.cc @@ -2336,7 +2336,7 @@ int SecureContext::TicketCompatibilityCallback(SSL* ssl, @@ -100,7 +100,7 @@ index d067b47e7e30a95740fe0275c70445707dec426b..391c57eed9058602bd8311d885cf5fc6 env->compile_cache_handler()->MaybeSave(cache_entry, utf8.ToStringView()); } diff --git a/src/node_util.cc b/src/node_util.cc -index e9f4c1cdb60c03dce210f49e18dda57a4934a8b5..263edfd92e38c66f7912c602b306d420b503a839 100644 +index 065ed602b314f367c2e7dec94019521fd5d23bf4..8be8a8b5726a265a838841a21bb023fa41ceeb13 100644 --- a/src/node_util.cc +++ b/src/node_util.cc @@ -93,7 +93,7 @@ static void GetExternalValue( 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 362ea2a165..4f2fc2f1b2 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 f05686608297e538f0a6f65abb389281bced4291..c8da076f80a559b9ee6d2ffed831b088c15c8e88 100644 +index ba9fcc3a3abf48f7ab4416a7ec13e689fd5802c7..4311a6e35ab85876b24c03036e5d91d5adb5c369 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md -@@ -1820,6 +1820,14 @@ changes: +@@ -1802,6 +1802,14 @@ changes: Disable using [syntax detection][] to determine module type. @@ -27,7 +27,7 @@ index f05686608297e538f0a6f65abb389281bced4291..c8da076f80a559b9ee6d2ffed831b088 ### `--no-experimental-global-navigator`