@fabrix/spool-broadcast
Version:
Spool: broadcast for Fabrix to implement CQRS and Event Sourcing
50 lines • 1.79 kB
JavaScript
"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