From 3d8bc140aad4d7b035836037e94d688a11f0d7fb Mon Sep 17 00:00:00 2001 From: Zilin Zhu Date: Sun, 21 Aug 2022 20:34:31 +0800 Subject: Add native EventEmitter (#1123) * Add native EventEmitter * add listeners, listenerCount and eventNames * add global functions * add Object to EventEmitter conversion * fix upon review --- src/bun.js/modules/EventsModule.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/bun.js/modules/EventsModule.h (limited to 'src/bun.js/modules/EventsModule.h') diff --git a/src/bun.js/modules/EventsModule.h b/src/bun.js/modules/EventsModule.h new file mode 100644 index 000000000..5adb19d01 --- /dev/null +++ b/src/bun.js/modules/EventsModule.h @@ -0,0 +1,27 @@ +#include "../bindings/ZigGlobalObject.h" +#include "JavaScriptCore/JSGlobalObject.h" + +namespace Zig { + +inline void generateEventsSourceCode(JSC::JSGlobalObject* lexicalGlobalObject, JSC::Identifier moduleKey, Vector& exportNames, JSC::MarkedArgumentBuffer& exportValues) { + JSC::VM& vm = lexicalGlobalObject->vm(); + GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); + + exportNames.append(JSC::Identifier::fromString(vm, "EventEmitter"_s)); + exportValues.append(WebCore::JSEventEmitter::getConstructor(vm, globalObject)); + + exportNames.append(JSC::Identifier::fromString(vm, "getEventListeners"_s)); + exportValues.append(JSC::JSFunction::create(vm, lexicalGlobalObject, 0, + MAKE_STATIC_STRING_IMPL("getEventListeners"), Events_functionGetEventListeners, ImplementationVisibility::Public)); + exportNames.append(JSC::Identifier::fromString(vm, "listenerCount"_s)); + exportValues.append(JSC::JSFunction::create(vm, lexicalGlobalObject, 0, + MAKE_STATIC_STRING_IMPL("listenerCount"), Events_functionListenerCount, ImplementationVisibility::Public)); + exportNames.append(JSC::Identifier::fromString(vm, "once"_s)); + exportValues.append(JSC::JSFunction::create(vm, lexicalGlobalObject, 0, + MAKE_STATIC_STRING_IMPL("once"), Events_functionOnce, ImplementationVisibility::Public)); + exportNames.append(JSC::Identifier::fromString(vm, "on"_s)); + exportValues.append(JSC::JSFunction::create(vm, lexicalGlobalObject, 0, + MAKE_STATIC_STRING_IMPL("on"), Events_functionOn, ImplementationVisibility::Public)); +} + +} -- cgit v1.2.3