Events
Event Listening
on()
Listen for events with callback or return async generator.
typescript
// Returns generator for specific event
on<E extends Events<Shape>>(event: E, options?: ListenerOptions): EventGenerator<Shape, E>
// Listen to specific event with callback
on<E extends Events<Shape>>(event: E, listener: EventCallback<Shape[E]>, options?: ListenerOptions): Cleanup
// Returns generator for regex events
on(event: RegExp, options?: ListenerOptions): EventGenerator<Shape, RegExp>
// Listen to regex events with callback
on(event: RegExp, listener: EventCallback<RgxEmitData<Shape>>, options?: ListenerOptions): CleanupParameters:
event- Event name (string) or regex patternlistener- Optional callback functionoptions- Optional{ signal?: AbortSignal }for automatic cleanup
Returns:
EventGeneratorwhen no callback providedCleanupfunction when callback provided
Examples:
typescript
// Generator pattern
const userEvents = observer.on('user:login')
for await (const data of userEvents) {
console.log('User logged in:', data.userId)
}
// Callback pattern
const cleanup = observer.on('user:login', (data) => {
console.log('Login:', data.userId)
})
cleanup() // Remove listener
// Regex matching
observer.on(/^user:/, ({ event, data }) => {
console.log(`Event ${event}:`, data)
})once()
Listen for single event emission.
typescript
// Returns promise for specific event
once<E extends Events<Shape>>(event: E, options?: ListenerOptions): EventPromise<Shape[E]>
// Listen once with callback
once<E extends Events<Shape>>(event: E, listener: EventCallback<Shape[E]>, options?: ListenerOptions): Cleanup
// Returns promise for regex events
once(event: RegExp, options?: ListenerOptions): EventPromise<RgxEmitData<Shape>>
// Listen once to regex with callback
once(event: RegExp, listener: EventCallback<RgxEmitData<Shape>>, options?: ListenerOptions): CleanupExamples:
typescript
// Promise pattern
const loginData = await observer.once('user:login')
console.log('Login data:', loginData.userId)
// Callback pattern
const cleanup = observer.once('user:logout', (data) => {
console.log('User logged out:', data.userId)
})off()
Remove event listeners.
typescript
off(event: Events<Shape> | RegExp | string, listener?: Function): voidParameters:
event- Event name or regex patternlistener- Specific listener to remove (optional, removes all if omitted)
Examples:
typescript
observer.off('user:login', specificCallback) // Remove specific listener
observer.off('user:login') // Remove all listeners for event
observer.off(/^user:/) // Remove all regex listeners matching patternEvent Emission
emit()
Trigger event with data.
typescript
emit<E extends Events<Shape> | RegExp | string>(
event: E,
data?: E extends Events<Shape>
? Shape[E]
: E extends string
? Record<E, any>[E]
: unknown
): voidParameters:
event- Event name or regex patterndata- Event data (type-safe based on event shape)
Examples:
typescript
observer.emit('user:login', { userId: '123' })
observer.emit(/^user:/, { type: 'broadcast' }) // Emits to all regex listeners