A lightweight, async event bus for TypeScript/JavaScript applications.
npm install @prestonarnold/eventsOR
yarn add @prestonarnold/eventsimport{createEventBus}from"@prestonarnold/events";constbus=createEventBus<{"user:login": {userId: string};"user:logout": {userId: string};}>();constuserModule={asynchandleLogin({ userId }: {userId: string}){console.log("[Explicit] User logged in:",userId);},logAll(event: string,payload: any){console.log("[Explicit][ALL]",event,payload);}};bus.on("user:login",userModule.handleLogin.bind(userModule));bus.onAll(userModule.logAll.bind(userModule));(async()=>{awaitbus.emit("user:login",{userId: "123"});})();import{createEventBus}from"@prestonarnold/events";import{on,onAll}from"@prestonarnold/events/decorators";constbus=createEventBus<{"user:login": {userId: string};"user:logout": {userId: string};}>();classUserModuleDecorated{
@on(bus,"user:login")asynchandleLogin({ userId }: {userId: string}){console.log("[Decorator] User logged in:",userId);}
@onAll(bus)logAll(event: string,payload: any){console.log("[Decorator][ALL]",event,payload);}}const_=newUserModuleDecorated();(async()=>{awaitbus.emit("user:login",{userId: "456"});})();