ngrx-event-bus
Version:
Angular and RxJs event bus with Mediator Pattern
1 lines • 9.63 kB
Source Map (JSON)
{"version":3,"file":"ngrx-event-bus.mjs","sources":["../../../projects/ngrx-event-bus/src/lib/interface/Event.ts","../../../projects/ngrx-event-bus/src/lib/services/ngrx-event-bus.service.ts","../../../projects/ngrx-event-bus/src/lib/ngrx-event-bus.module.ts","../../../projects/ngrx-event-bus/src/public-api.ts","../../../projects/ngrx-event-bus/src/ngrx-event-bus.ts"],"sourcesContent":["import {IEvent} from \"./IEvent\";\r\n\r\nexport class EmitEvent {\r\n constructor(public name: IEvent, public value?: any) {\r\n }\r\n}\r\nexport enum EmitRecord {\r\n First = 1,\r\n Last = 2,\r\n All = 3\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { IEvent } from '../interface/IEvent';\r\nimport { IEventRegister } from '../interface/IEventRegister';\r\nimport { EmitEvent, EmitRecord } from '../interface/Event';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgRxEventBusService {\r\n\r\n private eventRegister: Map<IEvent, IEventRegister>;\r\n private eventLastEmitted = {};\r\n constructor() {\r\n this.eventRegister = new Map<IEvent, IEventRegister>();\r\n }\r\n\r\n //#region Public\r\n /**\r\n * register event with or without default value.\r\n * @param event should be IEvent type.\r\n * @param defaultValue is option if data passed BehaviorSubject type has been considered else Subject type.\r\n */\r\n registerEvent(event: IEvent, defaultValue?: unknown) {\r\n let eventRegister = this.eventRegister.get(event);\r\n if (eventRegister && eventRegister.unRegister === false) {\r\n throw `${event} event already registered`;\r\n }else if(eventRegister && eventRegister.unRegister){\r\n eventRegister.unRegister = false;\r\n return;\r\n }\r\n eventRegister = {\r\n event: event,\r\n subject: defaultValue ? new BehaviorSubject(defaultValue) : new Subject()\r\n };\r\n this.eventRegister.set(event, eventRegister);\r\n }\r\n\r\n /**\r\n * unregister the event.\r\n * @param event should be IEvent type.\r\n */\r\n unregisterEvent(event: IEvent, soft: boolean = false): boolean {\r\n const eventRegister = this.eventRegister.get(event);\r\n if (eventRegister) {\r\n if (soft) {\r\n eventRegister.unRegister = true;\r\n } else {\r\n eventRegister.subject.unsubscribe();\r\n this.eventRegister.delete(event);\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Binding function to subscribe the published event.\r\n * If event has not registered, it will register the same with default Subject type\r\n * @param event should be IEvent type.\r\n * @param action callback function when something event got publish.\r\n * @param emittedValue by the event based on selected enum.\r\n */\r\n on(event: IEvent, action: any, emittedValue?: EmitRecord): Subscription {\r\n let eventRegister = this.eventRegister.get(event);\r\n if (!eventRegister) {\r\n eventRegister = { event: event, subject: new Subject() };\r\n this.eventRegister.set(event, eventRegister);\r\n }\r\n\r\n if (this.eventLastEmitted[event as string] && emittedValue) {\r\n let response;\r\n const eventName = event as string;\r\n switch (emittedValue) {\r\n case EmitRecord.First:\r\n response = this.eventLastEmitted[eventName][0];\r\n break;\r\n case EmitRecord.Last:\r\n response = this.eventLastEmitted[eventName][this.eventLastEmitted[eventName].length - 1];\r\n break;\r\n case EmitRecord.All:\r\n response = this.eventLastEmitted[eventName];\r\n break;\r\n }\r\n setTimeout((data) => {\r\n eventRegister.subject.next(data);\r\n }, 0, response);\r\n }\r\n return eventRegister.subject.subscribe(action);\r\n }\r\n\r\n /**\r\n * Publish event using this function.\r\n * If event has not registered it will register it with default BehaviorSubject type\r\n * @param event should be EmitEvent type.\r\n */\r\n emit(event: EmitEvent) {\r\n let eventRegister = this.eventRegister.get(event.name);\r\n if (!eventRegister) {\r\n eventRegister = { event: event.name, subject: new BehaviorSubject(event.value) };\r\n this.eventRegister.set(event.name, eventRegister);\r\n } else if (eventRegister.unRegister) {\r\n return;\r\n }\r\n eventRegister.subject.next(event.value);\r\n this.eventLastEmitted[event.name as string] = this.eventLastEmitted[event.name as string] || [];\r\n this.eventLastEmitted[event.name as string].push(event.value);\r\n }\r\n //#endregion\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgRxEventBusService } from './services/ngrx-event-bus.service';\r\n\r\n\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n providers: [NgRxEventBusService]\r\n})\r\nexport class NgRxEventBusModule { }\r\n","/*\r\n * Public API Surface of ngrx-event-bus\r\n */\r\n\r\nexport * from './lib/services/ngrx-event-bus.service';\r\nexport * from './lib/interface/IEvent';\r\nexport * from './lib/interface/Event';\r\nexport * from './lib/ngrx-event-bus.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAEa,SAAS,CAAA;IACpB,WAAmB,CAAA,IAAY,EAAS,KAAW,EAAA;AAAhC,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;AAAS,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAM;KAClD;AACF,CAAA;AACW,IAAA,WAIX;AAJD,CAAA,UAAY,UAAU,EAAA;IACpB,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;IACT,UAAA,CAAA,UAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;IACR,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO,CAAA;AACT,CAAC,EAJW,UAAU,KAAV,UAAU,GAIrB,EAAA,CAAA,CAAA;;MCDY,mBAAmB,CAAA;AAI9B,IAAA,WAAA,GAAA;AADQ,QAAA,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;AAE5B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAA0B,CAAC;KACxD;;AAGD;;;;AAII;IACJ,aAAa,CAAC,KAAa,EAAE,YAAsB,EAAA;QACjD,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAClD,QAAA,IAAI,aAAa,IAAI,aAAa,CAAC,UAAU,KAAK,KAAK,EAAE;YACvD,MAAM,CAAA,EAAG,KAAK,CAAA,yBAAA,CAA2B,CAAC;AAC3C,SAAA;AAAK,aAAA,IAAG,aAAa,IAAI,aAAa,CAAC,UAAU,EAAC;AACjD,YAAA,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC;YACjC,OAAO;AACR,SAAA;AACD,QAAA,aAAa,GAAG;AACd,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE,YAAY,GAAG,IAAI,eAAe,CAAC,YAAY,CAAC,GAAG,IAAI,OAAO,EAAE;SAC1E,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;KAC9C;AAED;;;AAGE;AACF,IAAA,eAAe,CAAC,KAAa,EAAE,IAAA,GAAgB,KAAK,EAAA;QAClD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACpD,QAAA,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,IAAI,EAAE;AACR,gBAAA,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC;AACjC,aAAA;AAAM,iBAAA;AACL,gBAAA,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AACpC,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;;;;AAME;AACF,IAAA,EAAE,CAAC,KAAa,EAAE,MAAW,EAAE,YAAyB,EAAA;QACtD,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,aAAa,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,EAAE,CAAC;YACzD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAC9C,SAAA;QAED,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAe,CAAC,IAAI,YAAY,EAAE;AAC1D,YAAA,IAAI,QAAQ,CAAC;YACb,MAAM,SAAS,GAAG,KAAe,CAAC;AAClC,YAAA,QAAQ,YAAY;gBAClB,KAAK,UAAU,CAAC,KAAK;oBACnB,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/C,MAAM;gBACR,KAAK,UAAU,CAAC,IAAI;AAClB,oBAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACzF,MAAM;gBACR,KAAK,UAAU,CAAC,GAAG;AACjB,oBAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;oBAC5C,MAAM;AACT,aAAA;AACD,YAAA,UAAU,CAAC,CAAC,IAAI,KAAI;AAClB,gBAAA,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,aAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjB,SAAA;QACD,OAAO,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KAChD;AAED;;;;AAIE;AACF,IAAA,IAAI,CAAC,KAAgB,EAAA;AACnB,QAAA,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,aAAa,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACjF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACnD,SAAA;aAAM,IAAI,aAAa,CAAC,UAAU,EAAE;YACnC,OAAO;AACR,SAAA;QACD,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAc,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAc,CAAC,IAAI,EAAE,CAAC;AAChG,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC/D;;gHAlGU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;MCEY,kBAAkB,CAAA;;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAHnB,YAAY,CAAA,EAAA,CAAA,CAAA;AAGX,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,aAFlB,CAAC,mBAAmB,CAAC,EADvB,OAAA,EAAA,CAAA,CAAC,YAAY,CAAC,CAAA,EAAA,CAAA,CAAA;2FAGZ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,SAAS,EAAE,CAAC,mBAAmB,CAAC;iBACjC,CAAA;;;ACTD;;AAEG;;ACFH;;AAEG;;;;"}