diff options
author | 2023-06-25 11:43:54 -0700 | |
---|---|---|
committer | 2023-06-25 11:43:54 -0700 | |
commit | 5bd94b8f47efab5ca736e6ec76b72e991df1da11 (patch) | |
tree | 78cef2ee806bc83094ca312e016ae522dbf52eed | |
parent | aa5432e162be03dbeddb25c5145169859eaeef32 (diff) | |
download | bun-5bd94b8f47efab5ca736e6ec76b72e991df1da11.tar.gz bun-5bd94b8f47efab5ca736e6ec76b72e991df1da11.tar.zst bun-5bd94b8f47efab5ca736e6ec76b72e991df1da11.zip |
Add `process.mainModule`
-rw-r--r-- | src/bun.js/bindings/Process.cpp | 12 | ||||
-rw-r--r-- | test/cli/run/require-cache-fixture.cjs | 5 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/bun.js/bindings/Process.cpp b/src/bun.js/bindings/Process.cpp index 69ee11e60..a369faee2 100644 --- a/src/bun.js/bindings/Process.cpp +++ b/src/bun.js/bindings/Process.cpp @@ -10,6 +10,7 @@ #include "ImportMetaObject.h" #include <sys/stat.h> #include "ZigConsoleClient.h" +#include <JavaScriptCore/GetterSetter.h> #pragma mark - Node.js Process namespace Zig { @@ -787,6 +788,17 @@ void Process::finishCreation(JSC::VM& vm) this->putDirectNativeFunction(vm, globalObject, JSC::Identifier::fromString(this->vm(), "emitWarning"_s), 1, Process_emitWarning, ImplementationVisibility::Public, NoIntrinsic, 0); + + JSC::JSFunction* requireDotMainFunction = JSFunction::create( + vm, + moduleMainCodeGenerator(vm), + globalObject->globalScope()); + // https://nodejs.org/api/process.html#processmainmodule + this->putDirect( + vm, + JSC::Identifier::fromString(vm, "mainModule"_s), + JSC::GetterSetter::create(vm, globalObject, requireDotMainFunction, JSValue()), + PropertyAttribute::Builtin | PropertyAttribute::Accessor | PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum | 0); } const JSC::ClassInfo Process::s_info = { "Process"_s, &Base::s_info, nullptr, nullptr, diff --git a/test/cli/run/require-cache-fixture.cjs b/test/cli/run/require-cache-fixture.cjs index ce02b86d7..838be9ceb 100644 --- a/test/cli/run/require-cache-fixture.cjs +++ b/test/cli/run/require-cache-fixture.cjs @@ -8,6 +8,11 @@ if (require.main !== module) { throw new Error("require.main !== module"); } +if (process.mainModule !== module) { + console.error(__filename, module.id); + throw new Error("process.mainModule !== module"); +} + if (__filename !== resolve(module.filename)) { console.error(__filename, module.id); throw new Error("__filename !== module.id"); |