From b36b7fee16a5239cfb50cfde94ed871d60032b3c Mon Sep 17 00:00:00 2001 From: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Date: Tue, 9 Aug 2022 01:33:12 -0700 Subject: [node compat] Implement `require.resolve` --- src/bun.js/bindings/ZigGlobalObject.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'src/bun.js/bindings/ZigGlobalObject.cpp') 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); -- cgit v1.2.3