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/bindings/ZigGlobalObject.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (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 d8db25e9a..1882ef6cd 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -78,6 +78,7 @@ #include "JSURLSearchParams.h" #include "JSDOMException.h" #include "JSEventTarget.h" +#include "JSEventEmitter.h" #include "EventTargetConcrete.h" #include "JSAbortSignal.h" #include "JSCustomEvent.h" @@ -156,6 +157,7 @@ using JSBuffer = WebCore::JSBuffer; #include #include "../modules/BufferModule.h" +#include "../modules/EventsModule.h" #include "../modules/ProcessModule.h" // #include @@ -2634,6 +2636,16 @@ static JSC_DEFINE_HOST_FUNCTION(functionFulfillModuleSync, RETURN_IF_EXCEPTION(scope, JSC::JSValue::encode(JSC::jsUndefined())); RELEASE_AND_RETURN(scope, JSValue::encode(JSC::jsUndefined())); } + case SyntheticModuleType::Events: { + auto source = JSC::SourceCode( + JSC::SyntheticSourceProvider::create( + generateEventsSourceCode, + JSC::SourceOrigin(WTF::URL::fileURLWithFileSystemPath("node:events"_s)), WTFMove(moduleKey))); + + globalObject->moduleLoader()->provideFetch(globalObject, key, WTFMove(source)); + RETURN_IF_EXCEPTION(scope, JSC::JSValue::encode(JSC::jsUndefined())); + RELEASE_AND_RETURN(scope, JSValue::encode(JSC::jsUndefined())); + } default: { auto provider = Zig::SourceProvider::create(res.result.value); globalObject->moduleLoader()->provideFetch(globalObject, key, JSC::SourceCode(provider)); @@ -2719,6 +2731,18 @@ JSC::JSInternalPromise* GlobalObject::moduleLoaderFetch(JSGlobalObject* globalOb scope.release(); return promise; } + case SyntheticModuleType::Events: { + auto source = JSC::SourceCode( + JSC::SyntheticSourceProvider::create(generateEventsSourceCode, + JSC::SourceOrigin(), WTFMove(moduleKey))); + + auto sourceCode = JSSourceCode::create(vm, WTFMove(source)); + RETURN_IF_EXCEPTION(scope, promise->rejectWithCaughtException(globalObject, scope)); + + promise->resolve(globalObject, sourceCode); + scope.release(); + return promise; + } default: { auto provider = Zig::SourceProvider::create(res.result.value); auto jsSourceCode = JSC::JSSourceCode::create(vm, JSC::SourceCode(provider)); -- cgit v1.2.3