diff options
author | 2023-01-11 14:22:31 -0800 | |
---|---|---|
committer | 2023-01-11 14:22:31 -0800 | |
commit | 4a1470d26c9d303ad9de93185e1e877d144d5592 (patch) | |
tree | 4af13d70fb642b9f987c11b654cbeaa31bf8ae2d /src/bun.js/modules/NodeModuleModule.cpp | |
parent | 5a3b6349821a2fd9756de600c0896a76daf7bc8d (diff) | |
download | bun-4a1470d26c9d303ad9de93185e1e877d144d5592.tar.gz bun-4a1470d26c9d303ad9de93185e1e877d144d5592.tar.zst bun-4a1470d26c9d303ad9de93185e1e877d144d5592.zip |
`require.resolve` in the runtime should use CommonJS export conditions
Diffstat (limited to 'src/bun.js/modules/NodeModuleModule.cpp')
-rw-r--r-- | src/bun.js/modules/NodeModuleModule.cpp | 44 |
1 files changed, 16 insertions, 28 deletions
diff --git a/src/bun.js/modules/NodeModuleModule.cpp b/src/bun.js/modules/NodeModuleModule.cpp index 02e4e3849..01e061499 100644 --- a/src/bun.js/modules/NodeModuleModule.cpp +++ b/src/bun.js/modules/NodeModuleModule.cpp @@ -19,36 +19,24 @@ JSC_DEFINE_HOST_FUNCTION(jsFunctionNodeModuleCreateRequire, return JSC::JSValue::encode(JSC::jsUndefined()); } - Zig::ImportMetaObject *importMetaObject = Zig::ImportMetaObject::create( - globalObject, callFrame->uncheckedArgument(0)); + auto str = callFrame->uncheckedArgument(0).toStringOrNull(globalObject); + RETURN_IF_EXCEPTION(scope, JSC::JSValue::encode(JSC::jsUndefined())); + WTF::String val = str->value(globalObject); + auto *meta = Zig::ImportMetaObject::create(globalObject, str); auto clientData = WebCore::clientData(vm); - - RETURN_IF_EXCEPTION(scope, {}); - - if (!importMetaObject) { - throwTypeError(globalObject, scope, "Invalid path"_s); - return JSC::JSValue::encode(JSC::jsUndefined()); - } - - auto requireFunctionValue = importMetaObject->get( - globalObject, clientData->builtinNames().requirePublicName()); - RETURN_IF_EXCEPTION(scope, {}); - - JSC::JSBoundFunction *boundRequireFunction = JSC::JSBoundFunction::create( - vm, globalObject, requireFunctionValue.getObject(), importMetaObject, - nullptr, 1, jsString(vm, String("require"_s))); - RETURN_IF_EXCEPTION(scope, {}); - auto resolveFunction = importMetaObject->get( - globalObject, clientData->builtinNames().resolveSyncPublicName()); - - JSC::JSBoundFunction *boundResolveFunction = JSC::JSBoundFunction::create( - vm, globalObject, resolveFunction.getObject(), importMetaObject, nullptr, - 1, jsString(vm, String("resolve"_s))); + auto requireFunction = + Zig::ImportMetaObject::createRequireFunction(vm, globalObject, val); + auto nameStr = jsCast<JSFunction *>(requireFunction)->name(vm); + JSC::JSBoundFunction *boundRequireFunction = + JSC::JSBoundFunction::create(vm, globalObject, requireFunction, meta, + nullptr, 0, jsString(vm, nameStr)); boundRequireFunction->putDirect( - vm, clientData->builtinNames().resolvePublicName(), boundResolveFunction, - JSC::PropertyAttribute::Function | 0); + vm, clientData->builtinNames().resolvePublicName(), + requireFunction->getDirect( + vm, clientData->builtinNames().resolvePublicName()), + 0); - RELEASE_AND_RETURN(scope, JSC::JSValue::encode(boundRequireFunction)); + RELEASE_AND_RETURN(scope, JSValue::encode(boundRequireFunction)); } JSC_DEFINE_HOST_FUNCTION(jsFunctionNodeModulePaths, (JSC::JSGlobalObject * globalObject, @@ -113,7 +101,7 @@ JSC_DEFINE_HOST_FUNCTION(jsFunctionResolveFileName, auto result = Bun__resolveSync(globalObject, JSC::JSValue::encode(moduleName), - JSValue::encode(callFrame->argument(1))); + JSValue::encode(callFrame->argument(1)), false); auto scope = DECLARE_THROW_SCOPE(globalObject->vm()); if (!JSC::JSValue::decode(result).isString()) { |