event-bus-lites
v1.0.0
Published
A lightweight, zero-dependency event bus with wildcard events, async handlers, once listeners, and middleware support.
Maintainers
Readme
event-bus-lite
A lightweight, zero-dependency event bus for Node.js with wildcard subscriptions, async handler support, once listeners, middleware chain, event history, and clean unsubscribe API.
Installation
npm install event-bus-litesQuick Start
const { EventBus } = require('event-bus-lites');
const bus = new EventBus();
bus.on('user.created', (payload) => {
console.log('New user:', payload.name);
});
bus.emit('user.created', { name: 'John' });Features & Usage
Wildcard Subscriptions
bus.on('user.*', (payload, event) => {
console.log(`Event: ${event}`, payload);
});
bus.emit('user.created', { id: 1 }); // ✅ matches
bus.emit('user.updated', { id: 1 }); // ✅ matches
bus.emit('order.created', { id: 1 }); // ❌ no match
// Deep wildcard
bus.on('**', (payload, event) => {
console.log('Any event:', event);
});Once Listeners
bus.once('app.ready', () => console.log('Ready!'));
bus.emit('app.ready'); // fires
bus.emit('app.ready'); // nothing happensAsync Handlers
bus.on('order.placed', async (order) => {
await sendEmail(order.email);
await updateInventory(order.items);
});
await bus.emit('order.placed', order); // waits for all handlersUnsubscribe
const unsub = bus.on('tick', () => console.log('tick'));
unsub(); // removes this specific listenerMiddleware
bus.use((event, payload, next) => {
console.log(`[LOG] ${event}`);
next(); // continue — don't call next() to block the event
});Event History
bus.enableHistory(50);
bus.emit('user.login', { id: 1 });
console.log(bus.getHistory());API
| Method | Description |
|---|---|
| on(event, handler) | Subscribe (returns unsubscribe fn) |
| once(event, handler) | Subscribe once |
| emit(event, payload) | Emit event (async, returns Promise) |
| off(event?) | Remove listeners (all if no event) |
| use(middleware) | Add middleware |
| listenerCount(event) | Count listeners for event |
| eventNames() | List registered event names |
| enableHistory(max) | Enable event logging |
| getHistory() | Get event history |
| clearHistory() | Clear history |
License
MIT
