UNPKG

@glandjs/events

Version:

A fast, zero‑dependency event broker and message bus for building scalable, event‑driven applications.

62 lines (61 loc) 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BrokerChannel = void 0; class BrokerChannel { constructor(_broker, _name, _delimiter) { this._broker = _broker; this._name = _name; this._delimiter = _delimiter; } get id() { return this._broker.id; } get name() { return this._name; } _createEventName(event) { return `${this.name}${this._delimiter}${event}`; } on(event, listener, options) { const namespaced = this._createEventName(event); const result = this._broker.on(namespaced, listener, options); return typeof result === 'object' && result instanceof Promise ? result : this; } once(event, listener, options) { const namespaced = this._createEventName(event); const result = this._broker.once(namespaced, listener, options); return typeof result === 'object' && result instanceof Promise ? result : this; } off(event, listener) { const namespaced = this._createEventName(event); this._broker.off(namespaced, listener); return this; } emit(event, payload, options) { const namespaced = this._createEventName(event); this._broker.emit(namespaced, payload, options); return this; } call(event, data, strategy) { const mode = strategy ?? 'first'; const namespaced = this._createEventName(event); return this._broker.call(namespaced, data, mode); } getListener(event) { const namespaced = this._createEventName(event); return this._broker.getListener(namespaced); } channel(name) { const nestedName = `${this.name}${this._delimiter}${name}`; return this._broker.channel(nestedName); } broadcast(event, payload, options) { const namespaced = this._createEventName(event); this._broker.broadcast(namespaced, payload, options); return this; } watch(event, timeoutMs) { return this._broker.watch(event, timeoutMs); } } exports.BrokerChannel = BrokerChannel;