@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
JavaScript
"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;