@@ -405,20 +405,24 @@ void BindingData::GetNearestParentPackageJSONType(
405
405
}
406
406
407
407
const BindingData::PackageConfig* BindingData::FindPackageScopeConfig (
408
- Realm* realm, const FunctionCallbackInfo<Value>& args) {
408
+ Realm* realm,
409
+ const FunctionCallbackInfo<Value>& args,
410
+ bool * invalid_url_out) {
409
411
CHECK_GE (args.Length (), 1 );
410
412
CHECK (args[0 ]->IsString ());
411
413
Utf8Value resolved (realm->isolate (), args[0 ]);
412
414
auto package_json_url_base = ada::parse (resolved.ToStringView ());
413
415
if (!package_json_url_base) {
414
416
url::ThrowInvalidURL (realm->env (), resolved.ToStringView (), std::nullopt);
417
+ *invalid_url_out = true ;
415
418
return nullptr ;
416
419
}
417
420
418
421
auto package_json_url =
419
422
ada::parse (" ./package.json" , &package_json_url_base.value ());
420
423
if (!package_json_url) {
421
424
url::ThrowInvalidURL (realm->env (), " ./package.json" , resolved.ToString ());
425
+ *invalid_url_out = true ;
422
426
return nullptr ;
423
427
}
424
428
@@ -436,6 +440,7 @@ const BindingData::PackageConfig* BindingData::FindPackageScopeConfig(
436
440
auto file_url = url::FileURLToPath (realm->env (), *package_json_url);
437
441
if (!file_url) {
438
442
url::ThrowInvalidURL (realm->env (), resolved.ToStringView (), std::nullopt);
443
+ *invalid_url_out = true ;
439
444
return nullptr ;
440
445
}
441
446
error_context.specifier = resolved.ToString ();
@@ -449,6 +454,7 @@ const BindingData::PackageConfig* BindingData::FindPackageScopeConfig(
449
454
package_json_url = ada::parse (" ../package.json" , &package_json_url.value ());
450
455
if (!package_json_url) {
451
456
url::ThrowInvalidURL (realm->env (), " ../package.json" , last_href);
457
+ *invalid_url_out = true ;
452
458
return nullptr ;
453
459
}
454
460
@@ -466,7 +472,12 @@ void BindingData::GetPackageScopeConfig(
466
472
const FunctionCallbackInfo<Value>& args) {
467
473
Realm* realm = Realm::GetCurrent (args);
468
474
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
+
470
481
if (package_json != nullptr ) {
471
482
return args.GetReturnValue ().Set (package_json->Serialize (realm));
472
483
}
@@ -489,7 +500,11 @@ void BindingData::GetPackageScopeConfig(
489
500
void BindingData::GetPackageType (const FunctionCallbackInfo<Value>& args) {
490
501
Realm* realm = Realm::GetCurrent (args);
491
502
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
+ }
493
508
494
509
std::string resultType = " none" ;
495
510
0 commit comments