Event Bus

In-process publish/subscribe with wildcards.

1 min readEdit this page

Usage

import { EventBus } from '@restjs/events'
 
const bus = new EventBus()
 
bus.on('user.created', async (event) => {
  console.log(event.payload)
})
 
await bus.emit('user.created', { id: 1 })

Wildcards

bus.on('user.*', handler)  // user.created, user.deleted
bus.on('*', handler)       // everything

One-time and wait

bus.once('payment.confirmed', handler)
const event = await bus.waitFor('payment.confirmed', 5000)

Decorators

import { OnEvent, registerEventHandlers } from '@restjs/events'
 
class Notifications {
  @OnEvent('user.created')
  async sendWelcome(event) { await sendEmail(event.payload.email) }
}
 
registerEventHandlers(new Notifications(), bus)