Fix createRequire() in node:module

Fixes https://github.com/oven-sh/bun/issues/831
Fixes https://github.com/oven-sh/bun/issues/453
This commit is contained in:
Jarred Sumner
2022-09-03 21:48:06 -07:00
parent 4891be8d0d
commit 04cc1968db
10 changed files with 302 additions and 161 deletions

View File

@@ -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);