UNPKG

@fabrix/spool-broadcast

Version:

Spool: broadcast for Fabrix to implement CQRS and Event Sourcing

50 lines 1.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const common_1 = require("@fabrix/fabrix/dist/common"); class BroadcastEntity extends common_1.FabrixGeneric { constructor(app, _type) { super(app); this._type = _type; this._broadcasters = new Map(); this._protectedMethods = ['getBroadcaster', 'addBroadcaster', 'removeBroadcaster', 'hasBroadcaster']; super.unallowedMethods = this._protectedMethods; const broadcasters = Object.keys(this.app.config.get(`broadcast.${this._type}.${this.name}.broadcasters`) || {}); broadcasters.forEach((k) => { if (k && this.app.broadcasts[k]) { this.addBroadcaster(this.app.broadcasts[k]); } else { this.app.log.error(`Attempting to register broadcast ${k} on ${this._type} ${this.name},`, `but ${k} was not found in api/broadcasts`); } }); } get type() { return this._type; } get name() { return this.constructor.name; } getBroadcaster(name) { return this._broadcasters.get(name); } addBroadcaster(broadcaster) { this._broadcasters.set(broadcaster.name, broadcaster); return this.broadcasters; } removeBroadcaster(broadcaster) { this._broadcasters.delete(broadcaster.name); return this.broadcasters; } hasBroadcaster(broadcaster) { return this.broadcasters.has(broadcaster.name); } get broadcasters() { return this._broadcasters; } set broadcasters(broadcasters) { throw new Error(`Can not map broadcasters through this method`); } } exports.BroadcastEntity = BroadcastEntity; //# sourceMappingURL=BroadcastEntity.js.map