From b74351e55fcb54451e793879302754de440e3da0 Mon Sep 17 00:00:00 2001 From: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Date: Wed, 28 Sep 2022 14:37:35 -0700 Subject: Support a `default` object in CommonJS wrapper Fixes https://github.com/oven-sh/bun/issues/1284 Related to https://github.com/oven-sh/bun/issues/1285 --- src/bun.js/modules/EventsModule.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/bun.js/modules/EventsModule.h') diff --git a/src/bun.js/modules/EventsModule.h b/src/bun.js/modules/EventsModule.h index d1e14a2db..00966b858 100644 --- a/src/bun.js/modules/EventsModule.h +++ b/src/bun.js/modules/EventsModule.h @@ -3,6 +3,7 @@ namespace Zig { using namespace WebCore; + inline void generateEventsSourceCode(JSC::JSGlobalObject *lexicalGlobalObject, JSC::Identifier moduleKey, Vector &exportNames, @@ -31,6 +32,23 @@ inline void generateEventsSourceCode(JSC::JSGlobalObject *lexicalGlobalObject, exportValues.append(JSC::JSFunction::create( vm, lexicalGlobalObject, 0, MAKE_STATIC_STRING_IMPL("on"), Events_functionOn, ImplementationVisibility::Public)); + + JSFunction *eventEmitterModuleCJS = + jsCast(WebCore::JSEventEmitter::getConstructor( + vm, reinterpret_cast(globalObject))); + + eventEmitterModuleCJS->putDirect( + vm, + PropertyName( + Identifier::fromUid(vm.symbolRegistry().symbolForKey("CommonJS"_s))), + jsNumber(0), 0); + + for (size_t i = 0; i < exportNames.size(); i++) { + eventEmitterModuleCJS->putDirect(vm, exportNames[i], exportValues.at(i), 0); + } + + exportNames.append(JSC::Identifier::fromString(vm, "default"_s)); + exportValues.append(eventEmitterModuleCJS); } } // namespace Zig -- cgit v1.2.3