@@ -405,20 +405,24 @@ void BindingData::GetNearestParentPackageJSONType(
405405}
406406
407407const BindingData::PackageConfig* BindingData::FindPackageScopeConfig (
408- Realm* realm, const FunctionCallbackInfo<Value>& args) {
408+ Realm* realm,
409+ const FunctionCallbackInfo<Value>& args,
410+ bool & invalid_url_out) {
409411 CHECK_GE (args.Length (), 1 );
410412 CHECK (args[0 ]->IsString ());
411413 Utf8Value resolved (realm->isolate (), args[0 ]);
412414 auto package_json_url_base = ada::parse (resolved.ToStringView ());
413415 if (!package_json_url_base) {
414416 url::ThrowInvalidURL (realm->env (), resolved.ToStringView (), std::nullopt );
417+ invalid_url_out = true ;
415418 return nullptr ;
416419 }
417420
418421 auto package_json_url =
419422 ada::parse (" ./package.json" , &package_json_url_base.value ());
420423 if (!package_json_url) {
421424 url::ThrowInvalidURL (realm->env (), " ./package.json" , resolved.ToString ());
425+ invalid_url_out = true ;
422426 return nullptr ;
423427 }
424428
@@ -436,6 +440,7 @@ const BindingData::PackageConfig* BindingData::FindPackageScopeConfig(
436440 auto file_url = url::FileURLToPath (realm->env (), *package_json_url);
437441 if (!file_url) {
438442 url::ThrowInvalidURL (realm->env (), resolved.ToStringView (), std::nullopt );
443+ invalid_url_out = true ;
439444 return nullptr ;
440445 }
441446 error_context.specifier = resolved.ToString ();
@@ -449,6 +454,7 @@ const BindingData::PackageConfig* BindingData::FindPackageScopeConfig(
449454 package_json_url = ada::parse (" ../package.json" , &package_json_url.value ());
450455 if (!package_json_url) {
451456 url::ThrowInvalidURL (realm->env (), " ../package.json" , last_href);
457+ invalid_url_out = true ;
452458 return nullptr ;
453459 }
454460
@@ -466,7 +472,12 @@ void BindingData::GetPackageScopeConfig(
466472 const FunctionCallbackInfo<Value>& args) {
467473 Realm* realm = Realm::GetCurrent (args);
468474
469- auto package_json = FindPackageScopeConfig (realm, args);
475+ bool invalid_url = false ;
476+ auto package_json = FindPackageScopeConfig (realm, args, invalid_url);
477+ if (invalid_url) {
478+ return ;
479+ }
480+
470481 if (package_json != nullptr ) {
471482 return args.GetReturnValue ().Set (package_json->Serialize (realm));
472483 }
@@ -489,7 +500,11 @@ void BindingData::GetPackageScopeConfig(
489500void BindingData::GetPackageType (const FunctionCallbackInfo<Value>& args) {
490501 Realm* realm = Realm::GetCurrent (args);
491502
492- auto package_scope = FindPackageScopeConfig (realm, args);
503+ bool invalid_url = false ;
504+ auto package_scope = FindPackageScopeConfig (realm, args, invalid_url);
505+ if (invalid_url) {
506+ return ;
507+ }
493508
494509 std::string resultType = " none" ;
495510
0 commit comments