diff options
author | 2022-08-09 01:33:12 -0700 | |
---|---|---|
committer | 2022-08-09 01:41:13 -0700 | |
commit | b36b7fee16a5239cfb50cfde94ed871d60032b3c (patch) | |
tree | 1456e78bd1434ed92c9e0720cdc1bf07d3a6d63c /src/bun.js/bindings/ZigGlobalObject.cpp | |
parent | 01847cabd20d82733874a4b78eb8ee570f08c943 (diff) | |
download | bun-b36b7fee16a5239cfb50cfde94ed871d60032b3c.tar.gz bun-b36b7fee16a5239cfb50cfde94ed871d60032b3c.tar.zst bun-b36b7fee16a5239cfb50cfde94ed871d60032b3c.zip |
[node compat] Implement `require.resolve`
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); |