mirror of
https://github.com/oven-sh/bun
synced 2026-02-17 14:22:01 +00:00
implement require.extensions (#18478)
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
#include <JavaScriptCore/JSInternalPromise.h>
|
||||
#include "JavaScriptCore/Completion.h"
|
||||
#include "JavaScriptCore/JSNativeStdFunction.h"
|
||||
#include "JSCommonJSExtensions.h"
|
||||
|
||||
#include "PathInlines.h"
|
||||
#include "ZigGlobalObject.h"
|
||||
@@ -562,6 +563,12 @@ static JSValue getModuleCacheObject(VM& vm, JSObject* moduleObject)
|
||||
->lazyRequireCacheObject();
|
||||
}
|
||||
|
||||
static JSValue getModuleExtensionsObject(VM& vm, JSObject* moduleObject)
|
||||
{
|
||||
return jsCast<Zig::GlobalObject*>(moduleObject->globalObject())
|
||||
->lazyRequireExtensionsObject();
|
||||
}
|
||||
|
||||
static JSValue getModuleDebugObject(VM& vm, JSObject* moduleObject)
|
||||
{
|
||||
return JSC::constructEmptyObject(moduleObject->globalObject());
|
||||
@@ -574,13 +581,6 @@ static JSValue getPathCacheObject(VM& vm, JSObject* moduleObject)
|
||||
vm, globalObject->nullPrototypeObjectStructure());
|
||||
}
|
||||
|
||||
static JSValue getModuleExtensionsObject(VM& vm, JSObject* moduleObject)
|
||||
{
|
||||
auto* globalObject = defaultGlobalObject(moduleObject->globalObject());
|
||||
return globalObject->requireFunctionUnbound()->getIfPropertyExists(
|
||||
globalObject, Identifier::fromString(vm, "extensions"_s));
|
||||
}
|
||||
|
||||
static JSValue getSourceMapFunction(VM& vm, JSObject* moduleObject)
|
||||
{
|
||||
auto* globalObject = defaultGlobalObject(moduleObject->globalObject());
|
||||
@@ -951,6 +951,27 @@ void addNodeModuleConstructorProperties(JSC::VM& vm,
|
||||
JSC::NoIntrinsic, jsFunctionResolveFileName);
|
||||
init.set(resolveFilenameFunction);
|
||||
});
|
||||
|
||||
globalObject->m_lazyRequireCacheObject.initLater(
|
||||
[](const Zig::GlobalObject::Initializer<JSObject>& init) {
|
||||
JSC::VM& vm = init.vm;
|
||||
JSC::JSGlobalObject* globalObject = init.owner;
|
||||
|
||||
auto* function = JSFunction::create(vm, globalObject, static_cast<JSC::FunctionExecutable*>(commonJSCreateRequireCacheCodeGenerator(vm)), globalObject);
|
||||
|
||||
NakedPtr<JSC::Exception> returnedException = nullptr;
|
||||
auto result = JSC::profiledCall(globalObject, ProfilingReason::API, function, JSC::getCallData(function), globalObject, ArgList(), returnedException);
|
||||
ASSERT(!returnedException);
|
||||
init.set(result.toObject(globalObject));
|
||||
});
|
||||
|
||||
globalObject->m_lazyRequireExtensionsObject.initLater(
|
||||
[](const Zig::GlobalObject::Initializer<Bun::JSCommonJSExtensions>& init) {
|
||||
JSC::VM& vm = init.vm;
|
||||
JSC::JSGlobalObject* globalObject = init.owner;
|
||||
|
||||
init.set(JSCommonJSExtensions::create(vm, globalObject, JSCommonJSExtensions::createStructure(vm, globalObject, globalObject->nullPrototype())));
|
||||
});
|
||||
}
|
||||
|
||||
JSC_DEFINE_HOST_FUNCTION(jsFunctionIsModuleResolveFilenameSlowPathEnabled,
|
||||
|
||||
Reference in New Issue
Block a user