{"version":3,"sources":["node_modules/ng-event-bus/fesm2022/ng-event-bus.mjs"],"sourcesContent":["import { Subject } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n/* tslint:disable:variable-name */\n/**\n * Metadata of the messages sent through the events bus.\n *\n * @author Cristiam Mercado\n * @since 2.0.0\n * @version 6.0.0\n */\nclass MetaData {\n /**\n * Constructor for this class.\n *\n * @param key Original key associated to the message sent through the events bus.\n * @param [data] Optional: Additional data sent with the message.\n */\n constructor(key, data) {\n this._id = this.uuid();\n this._key = key;\n this._data = data;\n this._timestamp = new Date().getTime();\n }\n /**\n * Gets unique identifier of the message sent through the events bus.\n */\n get id() {\n return this._id;\n }\n /**\n * Original key associated to the message.\n */\n get key() {\n return this._key;\n }\n /**\n * Data associated to message. It's optional.\n */\n get data() {\n return this._data;\n }\n /**\n * Gets the time in milliseconds in which the message was generated.\n */\n get timestamp() {\n return this._timestamp;\n }\n /**\n * Generates UUID version 4. The solution above uses Math.random() for brevity, however Math.random() is not\n * guaranteed to be a high-quality RNG.\n *\n * @return UUID version 4.\n */\n uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n }\n}\n\n/**\n * Main library class.\n *\n * @author Cristiam Mercado\n * @since 2.0.0\n * @version 6.0.0\n */\nclass NgEventBus {\n /**\n * Constructor for this class: Initializes event bus.\n */\n constructor() {\n /**\n * Key message separator.\n */\n this.separator = ':';\n this.eventBus = new Subject();\n }\n /**\n * Validates key matching.\n *\n * @param key Key to identify the message/event.\n * @param wildcard Wildcard received from on method.\n *\n * @return true if key matches, false otherwise.\n */\n keyMatch(key, wildcard) {\n const w = '*';\n const ww = '**';\n const partMatch = (wl, k) => wl === w || wl === k;\n const sep = this.separator;\n const kArr = key.split(sep);\n const wArr = wildcard.split(sep);\n const kLen = kArr.length;\n const wLen = wArr.length;\n const max = Math.max(kLen, wLen);\n for (let i = 0; i < max; i++) {\n const cK = kArr[i];\n const cW = wArr[i];\n if (cW === ww && typeof cK !== 'undefined') {\n return true;\n }\n if (!partMatch(cW, cK)) {\n return false;\n }\n }\n return true;\n }\n /**\n * Publish a message/event to event bus.\n *\n * @param key Key to identify the message/event.\n * @param [data] Optional: Additional data sent with the message/event.\n * @throws {Error} key parameter must be a string and must not be empty.\n */\n cast(key, data) {\n if (!key.trim().length) {\n throw new Error('key parameter must be a string and must not be empty');\n }\n const metadata = new MetaData(key, data);\n this.eventBus.next({\n key,\n metadata\n });\n }\n /**\n * Returns an observable you can subscribe to listen messages/events.\n *\n * @param key Key to identify the message/event.\n *\n * @return Observable you can subscribe to listen messages/events.\n */\n on(key) {\n return this.eventBus.asObservable().pipe(filter(event => this.keyMatch(event.key, key)), map(event => event.metadata));\n }\n}\n\n/*\n * Public API Surface of ng-event-bus\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MetaData, NgEventBus };\n"],"mappings":"sDAWA,IAAMA,EAAN,KAAe,CAOb,YAAYC,EAAKC,EAAM,CACrB,KAAK,IAAM,KAAK,KAAK,EACrB,KAAK,KAAOD,EACZ,KAAK,MAAQC,EACb,KAAK,WAAa,IAAI,KAAK,EAAE,QAAQ,CACvC,CAIA,IAAI,IAAK,CACP,OAAO,KAAK,GACd,CAIA,IAAI,KAAM,CACR,OAAO,KAAK,IACd,CAIA,IAAI,MAAO,CACT,OAAO,KAAK,KACd,CAIA,IAAI,WAAY,CACd,OAAO,KAAK,UACd,CAOA,MAAO,CACL,MAAO,uCAAuC,QAAQ,QAASC,GAAK,CAClE,IAAMC,EAAI,KAAK,OAAO,EAAI,GAAK,EAE/B,OADUD,IAAM,IAAMC,EAAIA,EAAI,EAAM,GAC3B,SAAS,EAAE,CACtB,CAAC,CACH,CACF,EASMC,EAAN,KAAiB,CAIf,aAAc,CAIZ,KAAK,UAAY,IACjB,KAAK,SAAW,IAAIC,CACtB,CASA,SAASL,EAAKM,EAAU,CACtB,IAAMC,EAAI,IACJC,EAAK,KACLC,EAAY,CAACC,EAAIC,IAAMD,IAAOH,GAAKG,IAAOC,EAC1CC,EAAM,KAAK,UACXC,EAAOb,EAAI,MAAMY,CAAG,EACpBE,EAAOR,EAAS,MAAMM,CAAG,EACzBG,EAAOF,EAAK,OACZG,EAAOF,EAAK,OACZG,EAAM,KAAK,IAAIF,EAAMC,CAAI,EAC/B,QAASE,EAAI,EAAGA,EAAID,EAAKC,IAAK,CAC5B,IAAMC,EAAKN,EAAKK,CAAC,EACXE,EAAKN,EAAKI,CAAC,EACjB,GAAIE,IAAOZ,GAAM,OAAOW,EAAO,IAC7B,MAAO,GAET,GAAI,CAACV,EAAUW,EAAID,CAAE,EACnB,MAAO,EAEX,CACA,MAAO,EACT,CAQA,KAAKnB,EAAKC,EAAM,CACd,GAAI,CAACD,EAAI,KAAK,EAAE,OACd,MAAM,IAAI,MAAM,sDAAsD,EAExE,IAAMqB,EAAW,IAAItB,EAASC,EAAKC,CAAI,EACvC,KAAK,SAAS,KAAK,CACjB,IAAAD,EACA,SAAAqB,CACF,CAAC,CACH,CAQA,GAAGrB,EAAK,CACN,OAAO,KAAK,SAAS,aAAa,EAAE,KAAKsB,EAAOC,GAAS,KAAK,SAASA,EAAM,IAAKvB,CAAG,CAAC,EAAGwB,EAAID,GAASA,EAAM,QAAQ,CAAC,CACvH,CACF","names":["MetaData","key","data","c","r","NgEventBus","Subject","wildcard","w","ww","partMatch","wl","k","sep","kArr","wArr","kLen","wLen","max","i","cK","cW","metadata","filter","event","map"],"x_google_ignoreList":[0]}