diff options
Diffstat (limited to 'src/bun.js/bindings/ImportMetaObject.cpp')
-rw-r--r-- | src/bun.js/bindings/ImportMetaObject.cpp | 19 |
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); |