ngx-message-bus
Version:
Messaging system for angular 11.x application. It allows communication between components and modules. Direct messages, messages by types and broadcasting.
46 lines • 5.39 kB
JavaScript
import { ErrorHandlingEnum } from './error-handling.enum';
import { Connection } from "./connection";
import { Hub } from "./hub";
import { Injectable } from "@angular/core";
import * as i0 from "@angular/core";
export class MessageBus {
constructor() {
this.errorHandling = ErrorHandlingEnum.Log;
this.hubs = {};
}
setLogLevel(errorHandling) {
this.errorHandling = errorHandling;
}
connect(hubName, subscriberId) {
hubName = hubName.toString();
if (!this.hubs[hubName] || this.hubs[hubName] === null) {
this.hubs[hubName] = new Hub(hubName, this.errorHandling);
}
const hub = this.hubs[hubName];
const connection = new Connection(hub, subscriberId);
hub.connect(connection);
return connection;
}
disconnect(connection) {
if (!connection || connection == null) {
return;
}
const hubName = connection.getHubName().toString();
let hub = this.hubs[hubName];
if (hub) {
hub.disconnect(connection);
if (hub.getActiveConnections() < 1) {
hub.dispose();
this.hubs[hubName] = null;
}
}
}
}
MessageBus.ɵprov = i0.ɵɵdefineInjectable({ factory: function MessageBus_Factory() { return new MessageBus(); }, token: MessageBus, providedIn: "root" });
MessageBus.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
MessageBus.ctorParameters = () => [];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5idXMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vIiwic291cmNlcyI6WyJzcmMvbWVzc2FnZS5idXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzVCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUzNDLE1BQU0sT0FBTyxVQUFVO0lBSW5CO1FBSEEsa0JBQWEsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7UUFJbEMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFdBQVcsQ0FBQyxhQUFnQztRQUN4QyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUN2QyxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQWUsRUFBRSxZQUFvQjtRQUN6QyxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdCLElBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUM3RDtRQUNELE1BQU0sR0FBRyxHQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsTUFBTSxVQUFVLEdBQWUsSUFBSSxVQUFVLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEIsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxVQUFzQjtRQUM3QixJQUFHLENBQUMsVUFBVSxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7WUFDbEMsT0FBTztTQUNWO1FBQ0QsTUFBTSxPQUFPLEdBQVUsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFELElBQUksR0FBRyxHQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsSUFBRyxHQUFHLEVBQUU7WUFDSixHQUFHLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzNCLElBQUcsR0FBRyxDQUFDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUMvQixHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUM7YUFDN0I7U0FDSjtJQUNMLENBQUM7Ozs7WUF2Q0osVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JIYW5kbGluZ0VudW0gfSBmcm9tICcuL2Vycm9yLWhhbmRsaW5nLmVudW0nO1xuaW1wb3J0IHsgQ29ubmVjdGlvbiB9IGZyb20gXCIuL2Nvbm5lY3Rpb25cIjtcbmltcG9ydCB7IEh1YiB9IGZyb20gXCIuL2h1YlwiO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmludGVyZmFjZSBJTWFwIHtcbiAgICBbaHViTmFtZTogc3RyaW5nXTogSHViO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VCdXMge1xuICAgIGVycm9ySGFuZGxpbmcgPSBFcnJvckhhbmRsaW5nRW51bS5Mb2c7XG4gICAgcHJpdmF0ZSBodWJzOiBJTWFwO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaHVicyA9IHt9O1xuICAgIH1cblxuICAgIHNldExvZ0xldmVsKGVycm9ySGFuZGxpbmc6IEVycm9ySGFuZGxpbmdFbnVtKSB7XG4gICAgICAgIHRoaXMuZXJyb3JIYW5kbGluZyA9IGVycm9ySGFuZGxpbmc7XG4gICAgfVxuXG4gICAgY29ubmVjdChodWJOYW1lOiBzdHJpbmcsIHN1YnNjcmliZXJJZDogc3RyaW5nKTpDb25uZWN0aW9uIHtcbiAgICAgICAgaHViTmFtZSA9IGh1Yk5hbWUudG9TdHJpbmcoKTtcbiAgICAgICAgaWYoIXRoaXMuaHVic1todWJOYW1lXSB8fCB0aGlzLmh1YnNbaHViTmFtZV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuaHVic1todWJOYW1lXSA9IG5ldyBIdWIoaHViTmFtZSwgdGhpcy5lcnJvckhhbmRsaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBodWI6IEh1YiA9IHRoaXMuaHVic1todWJOYW1lXTtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvbjogQ29ubmVjdGlvbiA9IG5ldyBDb25uZWN0aW9uKGh1Yiwgc3Vic2NyaWJlcklkKTtcbiAgICAgICAgaHViLmNvbm5lY3QoY29ubmVjdGlvbik7XG4gICAgICAgIHJldHVybiBjb25uZWN0aW9uO1xuICAgIH1cblxuICAgIGRpc2Nvbm5lY3QoY29ubmVjdGlvbjogQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZighY29ubmVjdGlvbiB8fCBjb25uZWN0aW9uID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBodWJOYW1lOnN0cmluZyA9IGNvbm5lY3Rpb24uZ2V0SHViTmFtZSgpLnRvU3RyaW5nKCk7XG4gICAgICAgIGxldCBodWI6IEh1YiA9IHRoaXMuaHVic1todWJOYW1lXTtcbiAgICAgICAgaWYoaHViKSB7XG4gICAgICAgICAgICBodWIuZGlzY29ubmVjdChjb25uZWN0aW9uKTtcbiAgICAgICAgICAgIGlmKGh1Yi5nZXRBY3RpdmVDb25uZWN0aW9ucygpIDwgMSkge1xuICAgICAgICAgICAgICAgIGh1Yi5kaXNwb3NlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5odWJzW2h1Yk5hbWVdID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn0iXX0=