@pearl-framework/events
v0.1.1
Published
Pearl.js events — type-safe event dispatcher, listeners, and queued events
Readme
@pearl-framework/events
Type-safe event dispatcher and listener system for Pearl.js
Installation
pnpm add @pearl-framework/events @pearl-framework/coreUsage
Define events and listeners
import { Event, Listener } from '@pearl-framework/events'
export class UserRegistered extends Event {
constructor(public readonly user: User) { super() }
}
export class SendWelcomeEmail extends Listener<UserRegistered> {
async handle(event: UserRegistered): Promise<void> {
await mailer.send(new WelcomeEmail(event.user))
}
// optional: skip handling under conditions
shouldHandle(event: UserRegistered): boolean {
return event.user.emailVerified
}
}Dispatch events
import { EventDispatcher } from '@pearl-framework/events'
const dispatcher = new EventDispatcher()
dispatcher.on(UserRegistered, SendWelcomeEmail)
await dispatcher.dispatch(new UserRegistered(user))
dispatcher.dispatchSync(new UserRegistered(user)) // fire and forgetEventServiceProvider
import { EventServiceProvider } from '@pearl-framework/events'
export class AppEventServiceProvider extends EventServiceProvider {
protected listen = new Map([
[UserRegistered, [SendWelcomeEmail, NotifyAdmins]],
[OrderPlaced, [SendOrderConfirmation, UpdateInventory]],
])
}