aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/ImportMetaObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/bindings/ImportMetaObject.cpp')
-rw-r--r--src/bun.js/bindings/ImportMetaObject.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/bun.js/bindings/ImportMetaObject.cpp b/src/bun.js/bindings/ImportMetaObject.cpp
index 67ca4acc6..ba1617aa4 100644
--- a/src/bun.js/bindings/ImportMetaObject.cpp
+++ b/src/bun.js/bindings/ImportMetaObject.cpp
@@ -35,6 +35,7 @@
#include "JSBufferConstructorBuiltins.h"
#include "JavaScriptCore/JSBase.h"
+#include "JSDOMURL.h"
#include "JavaScriptCore/JSNativeStdFunction.h"
namespace Zig {
@@ -133,6 +134,24 @@ JSC_DEFINE_CUSTOM_GETTER(functionRequireResolveLazyGetter,
return JSValue::encode(JSValue(resolverFunction));
}
+Zig::ImportMetaObject* Zig::ImportMetaObject::create(JSC::JSGlobalObject* globalObject, JSValue key)
+{
+ if (WebCore::DOMURL* domURL = WebCoreCast<WebCore::JSDOMURL, WebCore__DOMURL>(JSValue::encode(key))) {
+ return create(globalObject, JSC::jsString(globalObject->vm(), domURL->href().fileSystemPath()));
+ }
+
+ auto* keyString = key.toStringOrNull(globalObject);
+ if (UNLIKELY(!keyString)) {
+ return nullptr;
+ }
+
+ if (keyString->value(globalObject).startsWith("file://"_s)) {
+ return create(globalObject, JSC::jsString(globalObject->vm(), WTF::URL(keyString->value(globalObject)).fileSystemPath()));
+ }
+
+ return create(globalObject, keyString);
+}
+
JSObject* Zig::ImportMetaObject::createRequireFunction(VM& vm, JSGlobalObject* globalObject, WTF::String& pathString)
{
JSFunction* requireFunction = JSFunction::create(vm, importMetaObjectRequireCodeGenerator(vm), globalObject);