UNPKG

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
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=