Skip to main content

Class: PluginEventBus

Defined in: src/plugins/core/event-bus.ts:117

Plugin event bus implementation.

Remarks​

Provides a pub/sub event system for plugin hooks built on EventEmitter2. Features include:

  • Wildcard event patterns (eprint.*)
  • Namespace delimiter (.)
  • Error isolation per handler
  • Handler cleanup tracking
  • Async event emission

Example​

const eventBus = container.resolve(PluginEventBus);

// Subscribe to all eprint events
eventBus.on('eprint.*', (data) => {
console.log('Eprint event:', data);
});

// Emit specific event
eventBus.emit('eprint.indexed', { uri, title });

// Emit and wait for all handlers
await eventBus.emitAsync('eprint.indexed', { uri, title });

Implements​

Constructors​

new PluginEventBus()​

new PluginEventBus(logger): PluginEventBus

Defined in: src/plugins/core/event-bus.ts:141

Creates a new PluginEventBus.

Parameters​

logger​

ILogger

Logger instance for event bus logging

Returns​

PluginEventBus

Methods​

emit()​

emit(event, ...args): void

Defined in: src/plugins/core/event-bus.ts:299

Emits an event synchronously.

Parameters​

event​

string

Event name

args​

...readonly unknown[]

Arguments to pass to handlers

Returns​

void

Remarks​

This emits the event but doesn't wait for async handlers to complete. Use emitAsync if you need to wait for all handlers.

Example​

eventBus.emit('eprint.indexed', {
uri: 'at://did:plc:abc/pub.chive.eprint.submission/xyz',
title: 'My Eprint',
});

Implementation of​

IPluginEventBus.emit


emitAsync()​

emitAsync(event, ...args): Promise<void>

Defined in: src/plugins/core/event-bus.ts:326

Emits an event and waits for all handlers to complete.

Parameters​

event​

string

Event name

args​

...readonly unknown[]

Arguments to pass to handlers

Returns​

Promise<void>

Promise resolving when all handlers complete

Example​

await eventBus.emitAsync('eprint.indexed', {
uri: 'at://did:plc:abc/pub.chive.eprint.submission/xyz',
title: 'My Eprint',
});
console.log('All handlers completed');

Implementation of​

IPluginEventBus.emitAsync


eventNames()​

eventNames(): string[]

Defined in: src/plugins/core/event-bus.ts:394

Gets all event names with listeners.

Returns​

string[]

Array of event names

Implementation of​

IPluginEventBus.eventNames


listenerCount()​

listenerCount(event): number

Defined in: src/plugins/core/event-bus.ts:383

Gets listener count for an event pattern.

Parameters​

event​

string

Event name or pattern

Returns​

number

Number of listeners

Implementation of​

IPluginEventBus.listenerCount


off()​

off(event, handler): void

Defined in: src/plugins/core/event-bus.ts:349

Unsubscribes from an event.

Parameters​

event​

string

Event name

handler​

(...args) => void

Handler function to remove

Returns​

void

Example​

const handler = (data) => console.log(data);
eventBus.on('eprint.indexed', handler);

// Later...
eventBus.off('eprint.indexed', handler);

Implementation of​

IPluginEventBus.off


on()​

on(event, handler): void

Defined in: src/plugins/core/event-bus.ts:177

Subscribes to an event.

Parameters​

event​

string

Event name or pattern (supports wildcards like 'eprint.*')

handler​

(...args) => void

Event handler function

Returns​

void

Remarks​

Handlers are wrapped to isolate errors. If a handler throws, the error is logged but doesn't affect other handlers or crash the event bus.

Example​

// Subscribe to specific event
eventBus.on('eprint.indexed', (data) => {
console.log('Indexed:', data.uri);
});

// Subscribe to all eprint events
eventBus.on('eprint.*', (data) => {
console.log('Eprint event:', data);
});

Implementation of​

IPluginEventBus.on


once()​

once(event, handler): void

Defined in: src/plugins/core/event-bus.ts:236

Subscribes to an event for one-time execution.

Parameters​

event​

string

Event name or pattern

handler​

(...args) => void

Event handler function (called once then removed)

Returns​

void

Example​

eventBus.once('system.startup', () => {
console.log('System started');
});

Implementation of​

IPluginEventBus.once


removeAllListeners()​

removeAllListeners(): void

Defined in: src/plugins/core/event-bus.ts:406

Removes all listeners.

Returns​

void

Remarks​

Use during shutdown to clean up all event subscriptions.

Implementation of​

IPluginEventBus.removeAllListeners


removeAllListenersForEvent()​

removeAllListenersForEvent(event): void

Defined in: src/plugins/core/event-bus.ts:420

Removes all listeners for a specific event.

Parameters​

event​

string

Event name to clear

Returns​

void