@glandjs/events
Version:
A fast, zero‑dependency event broker and message bus for building scalable, event‑driven applications.
28 lines (27 loc) • 2.18 kB
TypeScript
import type { EventBroker } from './broker';
import type { BrokerOptions, Channel, ChannelEvents, EventOptions, EventPayload, EventRecord, EventReturn, EventType, Listener, Events } from './common';
export declare class BrokerChannel<TEvents extends EventRecord, TPrefix extends EventType> implements Channel<TEvents> {
private readonly _broker;
private readonly _name;
private readonly _delimiter;
constructor(_broker: EventBroker<any>, _name: string, _delimiter: BrokerOptions['delimiter']);
get id(): string;
get name(): string;
private _createEventName;
on<K extends Events<TEvents>>(event: K, listener: Listener<EventPayload<TEvents, K>, void>, options?: EventOptions): this;
on<K extends Events<TEvents>>(event: K, listener: null | Listener<EventPayload<TEvents, K>, void>, options: EventOptions & {
watch: true;
}): Promise<EventPayload<TEvents, K>>;
once<K extends Events<TEvents>>(event: K, listener: Listener<EventPayload<TEvents, K>, void>): this;
once<K extends Events<TEvents>>(event: K, listener: Listener<EventPayload<TEvents, K>, void> | null, options: EventOptions & {
watch: true;
}): Promise<EventPayload<TEvents, K>>;
off<K extends Events<TEvents>>(event: K, listener?: Listener<EventPayload<TEvents, K>, void>): this;
emit<K extends Events<TEvents>>(event: K, payload: EventPayload<TEvents, K>, options?: EventOptions): this;
call<K extends Events<TEvents>>(event: K, data: EventPayload<TEvents, K>): EventReturn<TEvents, K>;
call<K extends Events<TEvents>>(event: K, data: EventPayload<TEvents, K>, strategy: 'all'): EventReturn<TEvents, K>[];
getListener<K extends Events<TEvents>>(event: K): Listener<EventPayload<TEvents, K>, EventReturn<TEvents, K>>[];
channel<TNestedPrefix extends string, TNestedEvents extends ChannelEvents<TNestedPrefix, TEvents> = ChannelEvents<TNestedPrefix, TEvents>>(name: TNestedPrefix): Channel<TNestedEvents>;
broadcast<K extends Events<TEvents>>(event: K, payload: EventPayload<TEvents, K>, options?: EventOptions): this;
watch<K extends Events<TEvents>>(event: K, timeoutMs?: number): Promise<EventPayload<TEvents, K>>;
}