aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/ImportMetaObject.cpp
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2023-04-04 16:49:33 -0700
committerGravatar GitHub <noreply@github.com> 2023-04-04 16:49:33 -0700
commita369fc8c8969b0f2d823bed5a7565d245311345b (patch)
tree1b8c16d0d5506d9fd6c3510e472588684e718030 /src/bun.js/bindings/ImportMetaObject.cpp
parent54d6f95f43774f92dddcbd91a669eec4a9f24d38 (diff)
downloadbun-a369fc8c8969b0f2d823bed5a7565d245311345b.tar.gz
bun-a369fc8c8969b0f2d823bed5a7565d245311345b.tar.zst
bun-a369fc8c8969b0f2d823bed5a7565d245311345b.zip
Implement `import.meta.main` (#2556)
* Implement `import.meta.main` * Update main-test-1.js * Update fs.test.ts --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'src/bun.js/bindings/ImportMetaObject.cpp')
-rw-r--r--src/bun.js/bindings/ImportMetaObject.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/bun.js/bindings/ImportMetaObject.cpp b/src/bun.js/bindings/ImportMetaObject.cpp
index f8b6d0f9b..7831cf881 100644
--- a/src/bun.js/bindings/ImportMetaObject.cpp
+++ b/src/bun.js/bindings/ImportMetaObject.cpp
@@ -39,6 +39,7 @@
#include "JSDOMURL.h"
#include "JavaScriptCore/JSNativeStdFunction.h"
+#include "JavaScriptCore/GetterSetter.h"
namespace Zig {
using namespace JSC;
@@ -84,7 +85,7 @@ static EncodedJSValue functionRequireResolve(JSC::JSGlobalObject* globalObject,
// require.resolve also supports a paths array
// we only support a single path
if (!fromValue.isUndefinedOrNull() && fromValue.isObject()) {
- if (JSValue pathsValue = fromValue.getObject()->getIfPropertyExists(globalObject, JSC::Identifier::fromString(vm, "paths"_s))) {
+ if (JSValue pathsValue = fromValue.getObject()->getIfPropertyExists(globalObject, JSC::Identifier::fromString(vm, "paths"_s))) {
if (JSC::JSArray* array = JSC::jsDynamicCast<JSC::JSArray*>(pathsValue)) {
if (array->length() > 0) {
fromValue = array->getIndex(globalObject, 0);
@@ -413,7 +414,13 @@ void ImportMetaObjectPrototype::finishCreation(VM& vm, JSGlobalObject* globalObj
this->putDirect(vm, builtinNames.dirPublicName(), jsEmptyString(vm), 0);
this->putDirect(vm, builtinNames.pathPublicName(), jsEmptyString(vm), 0);
this->putDirect(vm, builtinNames.urlPublicName(), jsEmptyString(vm), 0);
- this->putDirect(vm, builtinNames.mainPublicName(), jsBoolean(false), 0);
+
+ this->putDirect(
+ vm,
+ builtinNames.mainPublicName(),
+ GetterSetter::create(vm, globalObject, JSFunction::create(vm, importMetaObjectMainCodeGenerator(vm), globalObject), nullptr),
+ JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::Accessor | JSC::PropertyAttribute::Builtin | 0);
+
this->putDirect(vm, Identifier::fromString(vm, "primordials"_s), jsUndefined(), JSC::PropertyAttribute::DontEnum | 0);
String requireString = "[[require]]"_s;