From 0df3eb0fe284953847dc157814b97b6b31f29d63 Mon Sep 17 00:00:00 2001 From: Mert Can Altin Date: Wed, 4 Jun 2025 23:09:21 +0300 Subject: [PATCH 1/2] node-api: preserve URL filenames without conversion --- src/node_api.cc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/node_api.cc b/src/node_api.cc index fbe3d84fc20d12..a7aa2a63bace3c 100644 --- a/src/node_api.cc +++ b/src/node_api.cc @@ -722,11 +722,12 @@ void napi_module_register_by_symbol(v8::Local exports, filename_js->IsString()) { node::Utf8Value filename(node_env->isolate(), filename_js); - // Turn the absolute path into a URL. Currently the absolute path is always - // a file system path. - // TODO(gabrielschulhof): Pass the `filename` through unchanged if/when we - // receive it as a URL already. - module_filename = node::url::FromFilePath(filename.ToStringView()); + const auto filename_view = filename.ToStringView(); + if (filename_view.find("://") != std::string_view::npos) { + module_filename = filename_view; + } else { + module_filename = node::url::FromFilePath(filename_view); + } } // Create a new napi_env for this specific module. From 6b50c57e50ac119d03136aa572a819c0d4c3b5bc Mon Sep 17 00:00:00 2001 From: Mert Can Altin Date: Sun, 8 Jun 2025 04:27:12 +0300 Subject: [PATCH 2/2] used can_parse --- src/node_api.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/node_api.cc b/src/node_api.cc index a7aa2a63bace3c..f52e364c1cf35a 100644 --- a/src/node_api.cc +++ b/src/node_api.cc @@ -1,3 +1,4 @@ +#include "ada.h" #include "async_context_frame.h" #include "async_wrap-inl.h" #include "env-inl.h" @@ -723,7 +724,7 @@ void napi_module_register_by_symbol(v8::Local exports, node::Utf8Value filename(node_env->isolate(), filename_js); const auto filename_view = filename.ToStringView(); - if (filename_view.find("://") != std::string_view::npos) { + if (ada::can_parse(filename_view)) { module_filename = filename_view; } else { module_filename = node::url::FromFilePath(filename_view);