diff options
Diffstat (limited to 'src/bun.js/bindings/ZigGlobalObject.cpp')
-rw-r--r-- | src/bun.js/bindings/ZigGlobalObject.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index daf6d3f14..bfc8e2ad4 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -2466,23 +2466,31 @@ JSC::JSObject* GlobalObject::moduleLoaderCreateImportMetaProperties(JSGlobalObje } RETURN_IF_EXCEPTION(scope, nullptr); + auto& builtinNames = clientData->builtinNames(); + auto view = keyString->value(globalObject); auto index = view.reverseFind('/', view.length()); if (index != WTF::notFound) { - metaProperties->putDirect(vm, clientData->builtinNames().dirPublicName(), + metaProperties->putDirect(vm, builtinNames.dirPublicName(), JSC::jsSubstring(globalObject, keyString, 0, index)); metaProperties->putDirect( - vm, clientData->builtinNames().filePublicName(), + vm, builtinNames.filePublicName(), JSC::jsSubstring(globalObject, keyString, index + 1, keyString->length() - index - 1)); } else { - metaProperties->putDirect(vm, clientData->builtinNames().filePublicName(), keyString); + metaProperties->putDirect(vm, builtinNames.filePublicName(), keyString); } - metaProperties->putDirect(vm, clientData->builtinNames().pathPublicName(), keyString); + metaProperties->putDirect(vm, builtinNames.pathPublicName(), keyString); + metaProperties->putDirect( + vm, + builtinNames.requirePublicName(), + Zig::ImportMetaObject::createRequireFunction(vm, globalObject, view), + PropertyAttribute::Builtin | PropertyAttribute::Function | 0); + if (view.startsWith('/')) { - metaProperties->putDirect(vm, clientData->builtinNames().urlPublicName(), JSC::JSValue(JSC::jsString(vm, WTF::URL::fileURLWithFileSystemPath(view).string()))); + metaProperties->putDirect(vm, builtinNames.urlPublicName(), JSC::JSValue(JSC::jsString(vm, WTF::URL::fileURLWithFileSystemPath(view).string()))); } else { - metaProperties->putDirect(vm, clientData->builtinNames().urlPublicName(), keyString); + metaProperties->putDirect(vm, builtinNames.urlPublicName(), keyString); } RELEASE_AND_RETURN(scope, metaProperties); |