A lightweight, async event bus for TypeScript/JavaScript applications.
npm install @prestonarnold/eventsOR
yarn add @prestonarnold/eventsimport { createEventBus } from "@prestonarnold/events";
const bus = createEventBus<{
"user:login": { userId: string };
"user:logout": { userId: string };
}>();
const userModule = {
async handleLogin({ 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 () => {
await bus.emit("user:login", { userId: "123" });
})();import { createEventBus } from "@prestonarnold/events";
import { on, onAll } from "@prestonarnold/events/decorators";
const bus = createEventBus<{
"user:login": { userId: string };
"user:logout": { userId: string };
}>();
class UserModuleDecorated {
@on(bus, "user:login")
async handleLogin({ userId }: { userId: string }) {
console.log("[Decorator] User logged in:", userId);
}
@onAll(bus)
logAll(event: string, payload: any) {
console.log("[Decorator][ALL]", event, payload);
}
}
const _ = new UserModuleDecorated();
(async () => {
await bus.emit("user:login", { userId: "456" });
})();