@customjs/ws
Advanced tools
@@ -175,5 +175,3 @@ (function (global, factory) { | ||
| */ | ||
| function (message) { | ||
| return _this.handleMessage(message, connection); | ||
| }); | ||
| function (message) { return _this.handleMessage(message, connection); }); | ||
| }; | ||
@@ -180,0 +178,0 @@ /** |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"customjs-ws.umd.js","sources":["ng://@customjs/ws/lib/ws.models.ts","ng://@customjs/ws/lib/ws.service.ts","ng://@customjs/ws/lib/ws.module.ts"],"sourcesContent":["import { ReplaySubject } from 'rxjs';\n\nexport interface WsOpenConnection<T> {\n channel: WebSocket;\n message: ReplaySubject<T>;\n error: ReplaySubject<Event>;\n connect: ReplaySubject<string>;\n}\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { WsOpenConnection } from './ws.models';\n\nconst connectionInterval = 5e3;\n\nconst wsServiceConnections: {\n [key: string]: WsOpenConnection<any>;\n} = {};\n\n@Injectable()\nexport class WsService {\n constructor() {}\n\n connect<T>(url): WsOpenConnection<T> {\n const connection = wsServiceConnections[url];\n if (connection) {\n return connection;\n } else {\n return this.connectToWs(url);\n }\n }\n\n private connectToWs(url): WsOpenConnection<any> {\n const connection = this.openConnection(url);\n wsServiceConnections[url] = connection;\n return connection;\n }\n\n private openConnection(url: string, connection?: WsOpenConnection<any>) {\n if (connection) {\n connection.channel = this.createWebSocket(url);\n } else {\n connection = this.createNewConnection(url);\n }\n this.configureConnectionEvents(url, connection);\n return connection;\n }\n\n private watchConnectionRequests(connection: WsOpenConnection<any>) {\n connection.connect.pipe(debounceTime(connectionInterval)).subscribe(url => {\n this.openConnection(url, connection);\n });\n }\n\n private createNewConnection(url) {\n const connection = {\n channel: this.createWebSocket(url),\n message: this.createNewStreamSubject(),\n error: this.createNewStreamSubject(),\n connect: this.createNewStreamSubject(),\n };\n this.watchConnectionRequests(connection);\n return connection;\n }\n\n private createNewStreamSubject() {\n return new ReplaySubject<any>();\n }\n\n private configureConnectionEvents(url, connection: WsOpenConnection<any>) {\n connection.channel.onclose = () => this.handleOnClose(url, connection);\n connection.channel.onerror = error => this.handleError(error, connection);\n connection.channel.onmessage = message =>\n this.handleMessage(message, connection);\n }\n\n private handleMessage(message, connection: WsOpenConnection<any>) {\n const messageData = this.parseMessage(message);\n connection.message.next(messageData);\n }\n\n private parseMessage(message) {\n try {\n return JSON.parse(message.data || '\"\"');\n } catch {\n return message.data;\n }\n }\n\n private handleOnClose(url, connection) {\n connection.connect.next(url);\n }\n\n private handleError(error, connection) {\n connection.error.next(error);\n }\n\n private createWebSocket(url) {\n return new WebSocket(url);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { WsService } from './ws.service';\n\n@NgModule({\n providers: [WsService],\n})\nexport class WsModule {}\n"],"names":["debounceTime","ReplaySubject","Injectable","NgModule"],"mappings":"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"} | ||
| {"version":3,"file":"customjs-ws.umd.js","sources":["ng://@customjs/ws/lib/ws.models.ts","ng://@customjs/ws/lib/ws.service.ts","ng://@customjs/ws/lib/ws.module.ts"],"sourcesContent":["import { ReplaySubject } from 'rxjs';\n\nexport interface WsOpenConnection<T> {\n channel: WebSocket;\n message: ReplaySubject<T>;\n error: ReplaySubject<Event>;\n connect: ReplaySubject<string>;\n}\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { WsOpenConnection } from './ws.models';\n\nconst connectionInterval = 5e3;\n\nconst wsServiceConnections: {\n [key: string]: WsOpenConnection<any>;\n} = {};\n\n@Injectable()\nexport class WsService {\n constructor() {}\n\n connect<T>(url): WsOpenConnection<T> {\n const connection = wsServiceConnections[url];\n if (connection) {\n return connection;\n } else {\n return this.connectToWs(url);\n }\n }\n\n private connectToWs(url): WsOpenConnection<any> {\n const connection = this.openConnection(url);\n wsServiceConnections[url] = connection;\n return connection;\n }\n\n private openConnection(url: string, connection?: WsOpenConnection<any>) {\n if (connection) {\n connection.channel = this.createWebSocket(url);\n } else {\n connection = this.createNewConnection(url);\n }\n this.configureConnectionEvents(url, connection);\n return connection;\n }\n\n private watchConnectionRequests(connection: WsOpenConnection<any>) {\n connection.connect.pipe(debounceTime(connectionInterval)).subscribe(url => {\n this.openConnection(url, connection);\n });\n }\n\n private createNewConnection(url) {\n const connection = {\n channel: this.createWebSocket(url),\n message: this.createNewStreamSubject(),\n error: this.createNewStreamSubject(),\n connect: this.createNewStreamSubject(),\n };\n this.watchConnectionRequests(connection);\n return connection;\n }\n\n private createNewStreamSubject() {\n return new ReplaySubject<any>();\n }\n\n private configureConnectionEvents(url, connection: WsOpenConnection<any>) {\n connection.channel.onclose = () => this.handleOnClose(url, connection);\n connection.channel.onerror = error => this.handleError(error, connection);\n connection.channel.onmessage = message => this.handleMessage(message, connection);\n }\n\n private handleMessage(message, connection: WsOpenConnection<any>) {\n const messageData = this.parseMessage(message);\n connection.message.next(messageData);\n }\n\n private parseMessage(message) {\n try {\n return JSON.parse(message.data || '\"\"');\n } catch {\n return message.data;\n }\n }\n\n private handleOnClose(url, connection) {\n connection.connect.next(url);\n }\n\n private handleError(error, connection) {\n connection.error.next(error);\n }\n\n private createWebSocket(url) {\n return new WebSocket(url);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { WsService } from './ws.service';\n\n@NgModule({\n providers: [WsService],\n})\nexport class WsModule {}\n"],"names":["debounceTime","ReplaySubject","Injectable","NgModule"],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["ng://@customjs/ws/lib/ws.service.ts","ng://@customjs/ws/lib/ws.module.ts"],"names":["wsServiceConnections","WsService","prototype","connect","url","connection","this","connectToWs","openConnection","channel","createWebSocket","createNewConnection","configureConnectionEvents","watchConnectionRequests","_this","pipe","debounceTime","subscribe","message","createNewStreamSubject","error","ReplaySubject","onclose","handleOnClose","onerror","handleError","onmessage","handleMessage","messageData","parseMessage","next","JSON","parse","data","_a","WebSocket","Injectable","WsModule","NgModule","args","providers"],"mappings":"0YAOMA,EAEF,GAEJC,EAAA,WAEE,SAAAA,KA+EF,OA7EEA,EAAAC,UAAAC,QAAA,SAAWC,OACHC,EAAaL,EAAqBI,GACxC,OAAIC,GAGKC,KAAKC,YAAYH,IAIpBH,EAAAC,UAAAK,YAAR,SAAoBH,OACZC,EAAaC,KAAKE,eAAeJ,GAEvC,OADAJ,EAAqBI,GAAOC,EACrBA,GAGDJ,EAAAC,UAAAM,eAAR,SAAuBJ,EAAaC,GAOlC,OANIA,EACFA,EAAWI,QAAUH,KAAKI,gBAAgBN,GAE1CC,EAAaC,KAAKK,oBAAoBP,GAExCE,KAAKM,0BAA0BR,EAAKC,GAC7BA,GAGDJ,EAAAC,UAAAW,wBAAR,SAAgCR,GAAhC,IAAAS,EAAAR,KACED,EAAWF,QAAQY,KAAKC,EAAAA,aApCD,MAoCmCC,UAAS,SAACb,GAClEU,EAAKN,eAAeJ,EAAKC,MAIrBJ,EAAAC,UAAAS,oBAAR,SAA4BP,OACpBC,EAAa,CACjBI,QAASH,KAAKI,gBAAgBN,GAC9Bc,QAASZ,KAAKa,yBACdC,MAAOd,KAAKa,yBACZhB,QAASG,KAAKa,0BAGhB,OADAb,KAAKO,wBAAwBR,GACtBA,GAGDJ,EAAAC,UAAAiB,uBAAR,WACE,OAAO,IAAIE,EAAAA,eAGLpB,EAAAC,UAAAU,0BAAR,SAAkCR,EAAKC,GAAvC,IAAAS,EAAAR,KACED,EAAWI,QAAQa,QAAO,WAAS,OAAAR,EAAKS,cAAcnB,EAAKC,IAC3DA,EAAWI,QAAQe,QAAO,SAAGJ,GAAS,OAAAN,EAAKW,YAAYL,EAAOf,IAC9DA,EAAWI,QAAQiB,UAAS,SAAGR,GAC7B,OAAAJ,EAAKa,cAAcT,EAASb,KAGxBJ,EAAAC,UAAAyB,cAAR,SAAsBT,EAASb,OACvBuB,EAActB,KAAKuB,aAAaX,GACtCb,EAAWa,QAAQY,KAAKF,IAGlB3B,EAAAC,UAAA2B,aAAR,SAAqBX,GACnB,IACE,OAAOa,KAAKC,MAAMd,EAAQe,MAAQ,MAClC,MAAAC,GACA,OAAOhB,EAAQe,OAIXhC,EAAAC,UAAAqB,cAAR,SAAsBnB,EAAKC,GACzBA,EAAWF,QAAQ2B,KAAK1B,IAGlBH,EAAAC,UAAAuB,YAAR,SAAoBL,EAAOf,GACzBA,EAAWe,MAAMU,KAAKV,IAGhBnB,EAAAC,UAAAQ,gBAAR,SAAwBN,GACtB,OAAO,IAAI+B,UAAU/B,wBA/ExBgC,EAAAA,mDAiFDnC,EAjFA,GCXAoC,EAAA,WAGA,SAAAA,KAGuB,2BAHtBC,EAAAA,SAAQC,KAAA,CAAC,CACRC,UAAW,CAACvC,OAESoC,EANvB","sourcesContent":["import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { WsOpenConnection } from './ws.models';\n\nconst connectionInterval = 5e3;\n\nconst wsServiceConnections: {\n [key: string]: WsOpenConnection<any>;\n} = {};\n\n@Injectable()\nexport class WsService {\n constructor() {}\n\n connect<T>(url): WsOpenConnection<T> {\n const connection = wsServiceConnections[url];\n if (connection) {\n return connection;\n } else {\n return this.connectToWs(url);\n }\n }\n\n private connectToWs(url): WsOpenConnection<any> {\n const connection = this.openConnection(url);\n wsServiceConnections[url] = connection;\n return connection;\n }\n\n private openConnection(url: string, connection?: WsOpenConnection<any>) {\n if (connection) {\n connection.channel = this.createWebSocket(url);\n } else {\n connection = this.createNewConnection(url);\n }\n this.configureConnectionEvents(url, connection);\n return connection;\n }\n\n private watchConnectionRequests(connection: WsOpenConnection<any>) {\n connection.connect.pipe(debounceTime(connectionInterval)).subscribe(url => {\n this.openConnection(url, connection);\n });\n }\n\n private createNewConnection(url) {\n const connection = {\n channel: this.createWebSocket(url),\n message: this.createNewStreamSubject(),\n error: this.createNewStreamSubject(),\n connect: this.createNewStreamSubject(),\n };\n this.watchConnectionRequests(connection);\n return connection;\n }\n\n private createNewStreamSubject() {\n return new ReplaySubject<any>();\n }\n\n private configureConnectionEvents(url, connection: WsOpenConnection<any>) {\n connection.channel.onclose = () => this.handleOnClose(url, connection);\n connection.channel.onerror = error => this.handleError(error, connection);\n connection.channel.onmessage = message =>\n this.handleMessage(message, connection);\n }\n\n private handleMessage(message, connection: WsOpenConnection<any>) {\n const messageData = this.parseMessage(message);\n connection.message.next(messageData);\n }\n\n private parseMessage(message) {\n try {\n return JSON.parse(message.data || '\"\"');\n } catch {\n return message.data;\n }\n }\n\n private handleOnClose(url, connection) {\n connection.connect.next(url);\n }\n\n private handleError(error, connection) {\n connection.error.next(error);\n }\n\n private createWebSocket(url) {\n return new WebSocket(url);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { WsService } from './ws.service';\n\n@NgModule({\n providers: [WsService],\n})\nexport class WsModule {}\n"]} | ||
| {"version":3,"sources":["ng://@customjs/ws/lib/ws.service.ts","ng://@customjs/ws/lib/ws.module.ts"],"names":["wsServiceConnections","WsService","prototype","connect","url","connection","this","connectToWs","openConnection","channel","createWebSocket","createNewConnection","configureConnectionEvents","watchConnectionRequests","_this","pipe","debounceTime","subscribe","message","createNewStreamSubject","error","ReplaySubject","onclose","handleOnClose","onerror","handleError","onmessage","handleMessage","messageData","parseMessage","next","JSON","parse","data","_a","WebSocket","Injectable","WsModule","NgModule","args","providers"],"mappings":"0YAOMA,EAEF,GAEJC,EAAA,WAEE,SAAAA,KA8EF,OA5EEA,EAAAC,UAAAC,QAAA,SAAWC,OACHC,EAAaL,EAAqBI,GACxC,OAAIC,GAGKC,KAAKC,YAAYH,IAIpBH,EAAAC,UAAAK,YAAR,SAAoBH,OACZC,EAAaC,KAAKE,eAAeJ,GAEvC,OADAJ,EAAqBI,GAAOC,EACrBA,GAGDJ,EAAAC,UAAAM,eAAR,SAAuBJ,EAAaC,GAOlC,OANIA,EACFA,EAAWI,QAAUH,KAAKI,gBAAgBN,GAE1CC,EAAaC,KAAKK,oBAAoBP,GAExCE,KAAKM,0BAA0BR,EAAKC,GAC7BA,GAGDJ,EAAAC,UAAAW,wBAAR,SAAgCR,GAAhC,IAAAS,EAAAR,KACED,EAAWF,QAAQY,KAAKC,EAAAA,aApCD,MAoCmCC,UAAS,SAACb,GAClEU,EAAKN,eAAeJ,EAAKC,MAIrBJ,EAAAC,UAAAS,oBAAR,SAA4BP,OACpBC,EAAa,CACjBI,QAASH,KAAKI,gBAAgBN,GAC9Bc,QAASZ,KAAKa,yBACdC,MAAOd,KAAKa,yBACZhB,QAASG,KAAKa,0BAGhB,OADAb,KAAKO,wBAAwBR,GACtBA,GAGDJ,EAAAC,UAAAiB,uBAAR,WACE,OAAO,IAAIE,EAAAA,eAGLpB,EAAAC,UAAAU,0BAAR,SAAkCR,EAAKC,GAAvC,IAAAS,EAAAR,KACED,EAAWI,QAAQa,QAAO,WAAS,OAAAR,EAAKS,cAAcnB,EAAKC,IAC3DA,EAAWI,QAAQe,QAAO,SAAGJ,GAAS,OAAAN,EAAKW,YAAYL,EAAOf,IAC9DA,EAAWI,QAAQiB,UAAS,SAAGR,GAAW,OAAAJ,EAAKa,cAAcT,EAASb,KAGhEJ,EAAAC,UAAAyB,cAAR,SAAsBT,EAASb,OACvBuB,EAActB,KAAKuB,aAAaX,GACtCb,EAAWa,QAAQY,KAAKF,IAGlB3B,EAAAC,UAAA2B,aAAR,SAAqBX,GACnB,IACE,OAAOa,KAAKC,MAAMd,EAAQe,MAAQ,MAClC,MAAAC,GACA,OAAOhB,EAAQe,OAIXhC,EAAAC,UAAAqB,cAAR,SAAsBnB,EAAKC,GACzBA,EAAWF,QAAQ2B,KAAK1B,IAGlBH,EAAAC,UAAAuB,YAAR,SAAoBL,EAAOf,GACzBA,EAAWe,MAAMU,KAAKV,IAGhBnB,EAAAC,UAAAQ,gBAAR,SAAwBN,GACtB,OAAO,IAAI+B,UAAU/B,wBA9ExBgC,EAAAA,mDAgFDnC,EAhFA,GCXAoC,EAAA,WAGA,SAAAA,KAGuB,2BAHtBC,EAAAA,SAAQC,KAAA,CAAC,CACRC,UAAW,CAACvC,OAESoC,EANvB","sourcesContent":["import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { WsOpenConnection } from './ws.models';\n\nconst connectionInterval = 5e3;\n\nconst wsServiceConnections: {\n [key: string]: WsOpenConnection<any>;\n} = {};\n\n@Injectable()\nexport class WsService {\n constructor() {}\n\n connect<T>(url): WsOpenConnection<T> {\n const connection = wsServiceConnections[url];\n if (connection) {\n return connection;\n } else {\n return this.connectToWs(url);\n }\n }\n\n private connectToWs(url): WsOpenConnection<any> {\n const connection = this.openConnection(url);\n wsServiceConnections[url] = connection;\n return connection;\n }\n\n private openConnection(url: string, connection?: WsOpenConnection<any>) {\n if (connection) {\n connection.channel = this.createWebSocket(url);\n } else {\n connection = this.createNewConnection(url);\n }\n this.configureConnectionEvents(url, connection);\n return connection;\n }\n\n private watchConnectionRequests(connection: WsOpenConnection<any>) {\n connection.connect.pipe(debounceTime(connectionInterval)).subscribe(url => {\n this.openConnection(url, connection);\n });\n }\n\n private createNewConnection(url) {\n const connection = {\n channel: this.createWebSocket(url),\n message: this.createNewStreamSubject(),\n error: this.createNewStreamSubject(),\n connect: this.createNewStreamSubject(),\n };\n this.watchConnectionRequests(connection);\n return connection;\n }\n\n private createNewStreamSubject() {\n return new ReplaySubject<any>();\n }\n\n private configureConnectionEvents(url, connection: WsOpenConnection<any>) {\n connection.channel.onclose = () => this.handleOnClose(url, connection);\n connection.channel.onerror = error => this.handleError(error, connection);\n connection.channel.onmessage = message => this.handleMessage(message, connection);\n }\n\n private handleMessage(message, connection: WsOpenConnection<any>) {\n const messageData = this.parseMessage(message);\n connection.message.next(messageData);\n }\n\n private parseMessage(message) {\n try {\n return JSON.parse(message.data || '\"\"');\n } catch {\n return message.data;\n }\n }\n\n private handleOnClose(url, connection) {\n connection.connect.next(url);\n }\n\n private handleError(error, connection) {\n connection.error.next(error);\n }\n\n private createWebSocket(url) {\n return new WebSocket(url);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { WsService } from './ws.service';\n\n@NgModule({\n providers: [WsService],\n})\nexport class WsModule {}\n"]} |
@@ -171,2 +171,2 @@ /** | ||
| WsService.ctorParameters = () => []; | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjdXN0b21qcy93cy8iLCJzb3VyY2VzIjpbImxpYi93cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztNQUd4QyxrQkFBa0IsR0FBRyxHQUFHOztNQUV4QixvQkFBb0IsR0FFdEIsRUFBRTtBQUdOLE1BQU0sT0FBTyxTQUFTO0lBQ3BCLGdCQUFlLENBQUM7Ozs7OztJQUVoQixPQUFPLENBQUksR0FBRzs7Y0FDTixVQUFVLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxDQUFDO1FBQzVDLElBQUksVUFBVSxFQUFFO1lBQ2QsT0FBTyxVQUFVLENBQUM7U0FDbkI7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7Ozs7OztJQUVPLFdBQVcsQ0FBQyxHQUFHOztjQUNmLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztRQUMzQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUM7UUFDdkMsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzs7Ozs7OztJQUVPLGNBQWMsQ0FBQyxHQUFXLEVBQUUsVUFBa0M7UUFDcEUsSUFBSSxVQUFVLEVBQUU7WUFDZCxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEQ7YUFBTTtZQUNMLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDNUM7UUFDRCxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Ozs7OztJQUVPLHVCQUF1QixDQUFDLFVBQWlDO1FBQy9ELFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsU0FBUzs7OztRQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7O0lBRU8sbUJBQW1CLENBQUMsR0FBRzs7Y0FDdkIsVUFBVSxHQUFHO1lBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQztZQUNsQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQ3RDLEtBQUssRUFBRSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDcEMsT0FBTyxFQUFFLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtTQUN2QztRQUNELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOzs7OztJQUVPLHNCQUFzQjtRQUM1QixPQUFPLElBQUksYUFBYSxFQUFPLENBQUM7SUFDbEMsQ0FBQzs7Ozs7OztJQUVPLHlCQUF5QixDQUFDLEdBQUcsRUFBRSxVQUFpQztRQUN0RSxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU87OztRQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFBLENBQUM7UUFDdkUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzs7O1FBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQSxDQUFDO1FBQzFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUzs7OztRQUFHLE9BQU8sQ0FBQyxFQUFFLENBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFBLENBQUM7SUFDNUMsQ0FBQzs7Ozs7OztJQUVPLGFBQWEsQ0FBQyxPQUFPLEVBQUUsVUFBaUM7O2NBQ3hELFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUM5QyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDOzs7Ozs7SUFFTyxZQUFZLENBQUMsT0FBTztRQUMxQixJQUFJO1lBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUM7U0FDekM7UUFBQyxXQUFNO1lBQ04sT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQzs7Ozs7OztJQUVPLGFBQWEsQ0FBQyxHQUFHLEVBQUUsVUFBVTtRQUNuQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDOzs7Ozs7O0lBRU8sV0FBVyxDQUFDLEtBQUssRUFBRSxVQUFVO1FBQ25DLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7Ozs7OztJQUVPLGVBQWUsQ0FBQyxHQUFHO1FBQ3pCLE9BQU8sSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQzs7O1lBaEZGLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBXc09wZW5Db25uZWN0aW9uIH0gZnJvbSAnLi93cy5tb2RlbHMnO1xuXG5jb25zdCBjb25uZWN0aW9uSW50ZXJ2YWwgPSA1ZTM7XG5cbmNvbnN0IHdzU2VydmljZUNvbm5lY3Rpb25zOiB7XG4gIFtrZXk6IHN0cmluZ106IFdzT3BlbkNvbm5lY3Rpb248YW55Pjtcbn0gPSB7fTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFdzU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBjb25uZWN0PFQ+KHVybCk6IFdzT3BlbkNvbm5lY3Rpb248VD4ge1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB3c1NlcnZpY2VDb25uZWN0aW9uc1t1cmxdO1xuICAgIGlmIChjb25uZWN0aW9uKSB7XG4gICAgICByZXR1cm4gY29ubmVjdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdFRvV3ModXJsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbm5lY3RUb1dzKHVybCk6IFdzT3BlbkNvbm5lY3Rpb248YW55PiB7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMub3BlbkNvbm5lY3Rpb24odXJsKTtcbiAgICB3c1NlcnZpY2VDb25uZWN0aW9uc1t1cmxdID0gY29ubmVjdGlvbjtcbiAgICByZXR1cm4gY29ubmVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkNvbm5lY3Rpb24odXJsOiBzdHJpbmcsIGNvbm5lY3Rpb24/OiBXc09wZW5Db25uZWN0aW9uPGFueT4pIHtcbiAgICBpZiAoY29ubmVjdGlvbikge1xuICAgICAgY29ubmVjdGlvbi5jaGFubmVsID0gdGhpcy5jcmVhdGVXZWJTb2NrZXQodXJsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29ubmVjdGlvbiA9IHRoaXMuY3JlYXRlTmV3Q29ubmVjdGlvbih1cmwpO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZ3VyZUNvbm5lY3Rpb25FdmVudHModXJsLCBjb25uZWN0aW9uKTtcbiAgICByZXR1cm4gY29ubmVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hDb25uZWN0aW9uUmVxdWVzdHMoY29ubmVjdGlvbjogV3NPcGVuQ29ubmVjdGlvbjxhbnk+KSB7XG4gICAgY29ubmVjdGlvbi5jb25uZWN0LnBpcGUoZGVib3VuY2VUaW1lKGNvbm5lY3Rpb25JbnRlcnZhbCkpLnN1YnNjcmliZSh1cmwgPT4ge1xuICAgICAgdGhpcy5vcGVuQ29ubmVjdGlvbih1cmwsIGNvbm5lY3Rpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVOZXdDb25uZWN0aW9uKHVybCkge1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB7XG4gICAgICBjaGFubmVsOiB0aGlzLmNyZWF0ZVdlYlNvY2tldCh1cmwpLFxuICAgICAgbWVzc2FnZTogdGhpcy5jcmVhdGVOZXdTdHJlYW1TdWJqZWN0KCksXG4gICAgICBlcnJvcjogdGhpcy5jcmVhdGVOZXdTdHJlYW1TdWJqZWN0KCksXG4gICAgICBjb25uZWN0OiB0aGlzLmNyZWF0ZU5ld1N0cmVhbVN1YmplY3QoKSxcbiAgICB9O1xuICAgIHRoaXMud2F0Y2hDb25uZWN0aW9uUmVxdWVzdHMoY29ubmVjdGlvbik7XG4gICAgcmV0dXJuIGNvbm5lY3Rpb247XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5ld1N0cmVhbVN1YmplY3QoKSB7XG4gICAgcmV0dXJuIG5ldyBSZXBsYXlTdWJqZWN0PGFueT4oKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlQ29ubmVjdGlvbkV2ZW50cyh1cmwsIGNvbm5lY3Rpb246IFdzT3BlbkNvbm5lY3Rpb248YW55Pikge1xuICAgIGNvbm5lY3Rpb24uY2hhbm5lbC5vbmNsb3NlID0gKCkgPT4gdGhpcy5oYW5kbGVPbkNsb3NlKHVybCwgY29ubmVjdGlvbik7XG4gICAgY29ubmVjdGlvbi5jaGFubmVsLm9uZXJyb3IgPSBlcnJvciA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yLCBjb25uZWN0aW9uKTtcbiAgICBjb25uZWN0aW9uLmNoYW5uZWwub25tZXNzYWdlID0gbWVzc2FnZSA9PlxuICAgICAgdGhpcy5oYW5kbGVNZXNzYWdlKG1lc3NhZ2UsIGNvbm5lY3Rpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVNZXNzYWdlKG1lc3NhZ2UsIGNvbm5lY3Rpb246IFdzT3BlbkNvbm5lY3Rpb248YW55Pikge1xuICAgIGNvbnN0IG1lc3NhZ2VEYXRhID0gdGhpcy5wYXJzZU1lc3NhZ2UobWVzc2FnZSk7XG4gICAgY29ubmVjdGlvbi5tZXNzYWdlLm5leHQobWVzc2FnZURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZU1lc3NhZ2UobWVzc2FnZSkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShtZXNzYWdlLmRhdGEgfHwgJ1wiXCInKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBtZXNzYWdlLmRhdGE7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVPbkNsb3NlKHVybCwgY29ubmVjdGlvbikge1xuICAgIGNvbm5lY3Rpb24uY29ubmVjdC5uZXh0KHVybCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yLCBjb25uZWN0aW9uKSB7XG4gICAgY29ubmVjdGlvbi5lcnJvci5uZXh0KGVycm9yKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlV2ViU29ja2V0KHVybCkge1xuICAgIHJldHVybiBuZXcgV2ViU29ja2V0KHVybCk7XG4gIH1cbn1cbiJdfQ== | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjdXN0b21qcy93cy8iLCJzb3VyY2VzIjpbImxpYi93cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztNQUd4QyxrQkFBa0IsR0FBRyxHQUFHOztNQUV4QixvQkFBb0IsR0FFdEIsRUFBRTtBQUdOLE1BQU0sT0FBTyxTQUFTO0lBQ3BCLGdCQUFlLENBQUM7Ozs7OztJQUVoQixPQUFPLENBQUksR0FBRzs7Y0FDTixVQUFVLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxDQUFDO1FBQzVDLElBQUksVUFBVSxFQUFFO1lBQ2QsT0FBTyxVQUFVLENBQUM7U0FDbkI7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7Ozs7OztJQUVPLFdBQVcsQ0FBQyxHQUFHOztjQUNmLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztRQUMzQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUM7UUFDdkMsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzs7Ozs7OztJQUVPLGNBQWMsQ0FBQyxHQUFXLEVBQUUsVUFBa0M7UUFDcEUsSUFBSSxVQUFVLEVBQUU7WUFDZCxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEQ7YUFBTTtZQUNMLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDNUM7UUFDRCxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Ozs7OztJQUVPLHVCQUF1QixDQUFDLFVBQWlDO1FBQy9ELFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsU0FBUzs7OztRQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7O0lBRU8sbUJBQW1CLENBQUMsR0FBRzs7Y0FDdkIsVUFBVSxHQUFHO1lBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQztZQUNsQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQ3RDLEtBQUssRUFBRSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDcEMsT0FBTyxFQUFFLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtTQUN2QztRQUNELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOzs7OztJQUVPLHNCQUFzQjtRQUM1QixPQUFPLElBQUksYUFBYSxFQUFPLENBQUM7SUFDbEMsQ0FBQzs7Ozs7OztJQUVPLHlCQUF5QixDQUFDLEdBQUcsRUFBRSxVQUFpQztRQUN0RSxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU87OztRQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFBLENBQUM7UUFDdkUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzs7O1FBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQSxDQUFDO1FBQzFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUzs7OztRQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUEsQ0FBQztJQUNwRixDQUFDOzs7Ozs7O0lBRU8sYUFBYSxDQUFDLE9BQU8sRUFBRSxVQUFpQzs7Y0FDeEQsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQzlDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Ozs7OztJQUVPLFlBQVksQ0FBQyxPQUFPO1FBQzFCLElBQUk7WUFDRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztTQUN6QztRQUFDLFdBQU07WUFDTixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUM7U0FDckI7SUFDSCxDQUFDOzs7Ozs7O0lBRU8sYUFBYSxDQUFDLEdBQUcsRUFBRSxVQUFVO1FBQ25DLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7Ozs7Ozs7SUFFTyxXQUFXLENBQUMsS0FBSyxFQUFFLFVBQVU7UUFDbkMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQzs7Ozs7O0lBRU8sZUFBZSxDQUFDLEdBQUc7UUFDekIsT0FBTyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDOzs7WUEvRUYsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFdzT3BlbkNvbm5lY3Rpb24gfSBmcm9tICcuL3dzLm1vZGVscyc7XG5cbmNvbnN0IGNvbm5lY3Rpb25JbnRlcnZhbCA9IDVlMztcblxuY29uc3Qgd3NTZXJ2aWNlQ29ubmVjdGlvbnM6IHtcbiAgW2tleTogc3RyaW5nXTogV3NPcGVuQ29ubmVjdGlvbjxhbnk+O1xufSA9IHt9O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgV3NTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGNvbm5lY3Q8VD4odXJsKTogV3NPcGVuQ29ubmVjdGlvbjxUPiB7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IHdzU2VydmljZUNvbm5lY3Rpb25zW3VybF07XG4gICAgaWYgKGNvbm5lY3Rpb24pIHtcbiAgICAgIHJldHVybiBjb25uZWN0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25uZWN0VG9Xcyh1cmwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29ubmVjdFRvV3ModXJsKTogV3NPcGVuQ29ubmVjdGlvbjxhbnk+IHtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5vcGVuQ29ubmVjdGlvbih1cmwpO1xuICAgIHdzU2VydmljZUNvbm5lY3Rpb25zW3VybF0gPSBjb25uZWN0aW9uO1xuICAgIHJldHVybiBjb25uZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQ29ubmVjdGlvbih1cmw6IHN0cmluZywgY29ubmVjdGlvbj86IFdzT3BlbkNvbm5lY3Rpb248YW55Pikge1xuICAgIGlmIChjb25uZWN0aW9uKSB7XG4gICAgICBjb25uZWN0aW9uLmNoYW5uZWwgPSB0aGlzLmNyZWF0ZVdlYlNvY2tldCh1cmwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25uZWN0aW9uID0gdGhpcy5jcmVhdGVOZXdDb25uZWN0aW9uKHVybCk7XG4gICAgfVxuICAgIHRoaXMuY29uZmlndXJlQ29ubmVjdGlvbkV2ZW50cyh1cmwsIGNvbm5lY3Rpb24pO1xuICAgIHJldHVybiBjb25uZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSB3YXRjaENvbm5lY3Rpb25SZXF1ZXN0cyhjb25uZWN0aW9uOiBXc09wZW5Db25uZWN0aW9uPGFueT4pIHtcbiAgICBjb25uZWN0aW9uLmNvbm5lY3QucGlwZShkZWJvdW5jZVRpbWUoY29ubmVjdGlvbkludGVydmFsKSkuc3Vic2NyaWJlKHVybCA9PiB7XG4gICAgICB0aGlzLm9wZW5Db25uZWN0aW9uKHVybCwgY29ubmVjdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5ld0Nvbm5lY3Rpb24odXJsKSB7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IHtcbiAgICAgIGNoYW5uZWw6IHRoaXMuY3JlYXRlV2ViU29ja2V0KHVybCksXG4gICAgICBtZXNzYWdlOiB0aGlzLmNyZWF0ZU5ld1N0cmVhbVN1YmplY3QoKSxcbiAgICAgIGVycm9yOiB0aGlzLmNyZWF0ZU5ld1N0cmVhbVN1YmplY3QoKSxcbiAgICAgIGNvbm5lY3Q6IHRoaXMuY3JlYXRlTmV3U3RyZWFtU3ViamVjdCgpLFxuICAgIH07XG4gICAgdGhpcy53YXRjaENvbm5lY3Rpb25SZXF1ZXN0cyhjb25uZWN0aW9uKTtcbiAgICByZXR1cm4gY29ubmVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTmV3U3RyZWFtU3ViamVjdCgpIHtcbiAgICByZXR1cm4gbmV3IFJlcGxheVN1YmplY3Q8YW55PigpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWd1cmVDb25uZWN0aW9uRXZlbnRzKHVybCwgY29ubmVjdGlvbjogV3NPcGVuQ29ubmVjdGlvbjxhbnk+KSB7XG4gICAgY29ubmVjdGlvbi5jaGFubmVsLm9uY2xvc2UgPSAoKSA9PiB0aGlzLmhhbmRsZU9uQ2xvc2UodXJsLCBjb25uZWN0aW9uKTtcbiAgICBjb25uZWN0aW9uLmNoYW5uZWwub25lcnJvciA9IGVycm9yID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IsIGNvbm5lY3Rpb24pO1xuICAgIGNvbm5lY3Rpb24uY2hhbm5lbC5vbm1lc3NhZ2UgPSBtZXNzYWdlID0+IHRoaXMuaGFuZGxlTWVzc2FnZShtZXNzYWdlLCBjb25uZWN0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTWVzc2FnZShtZXNzYWdlLCBjb25uZWN0aW9uOiBXc09wZW5Db25uZWN0aW9uPGFueT4pIHtcbiAgICBjb25zdCBtZXNzYWdlRGF0YSA9IHRoaXMucGFyc2VNZXNzYWdlKG1lc3NhZ2UpO1xuICAgIGNvbm5lY3Rpb24ubWVzc2FnZS5uZXh0KG1lc3NhZ2VEYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VNZXNzYWdlKG1lc3NhZ2UpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UobWVzc2FnZS5kYXRhIHx8ICdcIlwiJyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbWVzc2FnZS5kYXRhO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlT25DbG9zZSh1cmwsIGNvbm5lY3Rpb24pIHtcbiAgICBjb25uZWN0aW9uLmNvbm5lY3QubmV4dCh1cmwpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvciwgY29ubmVjdGlvbikge1xuICAgIGNvbm5lY3Rpb24uZXJyb3IubmV4dChlcnJvcik7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdlYlNvY2tldCh1cmwpIHtcbiAgICByZXR1cm4gbmV3IFdlYlNvY2tldCh1cmwpO1xuICB9XG59XG4iXX0= |
@@ -152,5 +152,3 @@ /** | ||
| */ | ||
| function (message) { | ||
| return _this.handleMessage(message, connection); | ||
| }); | ||
| function (message) { return _this.handleMessage(message, connection); }); | ||
| }; | ||
@@ -243,2 +241,2 @@ /** | ||
| export { WsService }; | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjdXN0b21qcy93cy8iLCJzb3VyY2VzIjpbImxpYi93cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztJQUd4QyxrQkFBa0IsR0FBRyxHQUFHOztJQUV4QixvQkFBb0IsR0FFdEIsRUFBRTtBQUVOO0lBRUU7SUFBZSxDQUFDOzs7Ozs7SUFFaEIsMkJBQU87Ozs7O0lBQVAsVUFBVyxHQUFHOztZQUNOLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUM7UUFDNUMsSUFBSSxVQUFVLEVBQUU7WUFDZCxPQUFPLFVBQVUsQ0FBQztTQUNuQjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQzs7Ozs7O0lBRU8sK0JBQVc7Ozs7O0lBQW5CLFVBQW9CLEdBQUc7O1lBQ2YsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO1FBQzNDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUN2QyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOzs7Ozs7O0lBRU8sa0NBQWM7Ozs7OztJQUF0QixVQUF1QixHQUFXLEVBQUUsVUFBa0M7UUFDcEUsSUFBSSxVQUFVLEVBQUU7WUFDZCxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEQ7YUFBTTtZQUNMLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDNUM7UUFDRCxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxF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ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgV3NPcGVuQ29ubmVjdGlvbiB9IGZyb20gJy4vd3MubW9kZWxzJztcblxuY29uc3QgY29ubmVjdGlvbkludGVydmFsID0gNWUzO1xuXG5jb25zdCB3c1NlcnZpY2VDb25uZWN0aW9uczoge1xuICBba2V5OiBzdHJpbmddOiBXc09wZW5Db25uZWN0aW9uPGFueT47XG59ID0ge307XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBXc1NlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgY29ubmVjdDxUPih1cmwpOiBXc09wZW5Db25uZWN0aW9uPFQ+IHtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gd3NTZXJ2aWNlQ29ubmVjdGlvbnNbdXJsXTtcbiAgICBpZiAoY29ubmVjdGlvbikge1xuICAgICAgcmV0dXJuIGNvbm5lY3Rpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RUb1dzKHVybCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25uZWN0VG9Xcyh1cmwpOiBXc09wZW5Db25uZWN0aW9uPGFueT4ge1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLm9wZW5Db25uZWN0aW9uKHVybCk7XG4gICAgd3NTZXJ2aWNlQ29ubmVjdGlvbnNbdXJsXSA9IGNvbm5lY3Rpb247XG4gICAgcmV0dXJuIGNvbm5lY3Rpb247XG4gIH1cblxuICBwcml2YXRlIG9wZW5Db25uZWN0aW9uKHVybDogc3RyaW5nLCBjb25uZWN0aW9uPzogV3NPcGVuQ29ubmVjdGlvbjxhbnk+KSB7XG4gICAgaWYgKGNvbm5lY3Rpb24pIHtcbiAgICAgIGNvbm5lY3Rpb24uY2hhbm5lbCA9IHRoaXMuY3JlYXRlV2ViU29ja2V0KHVybCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbm5lY3Rpb24gPSB0aGlzLmNyZWF0ZU5ld0Nvbm5lY3Rpb24odXJsKTtcbiAgICB9XG4gICAgdGhpcy5jb25maWd1cmVDb25uZWN0aW9uRXZlbnRzKHVybCwgY29ubmVjdGlvbik7XG4gICAgcmV0dXJuIGNvbm5lY3Rpb247XG4gIH1cblxuICBwcml2YXRlIHdhdGNoQ29ubmVjdGlvblJlcXVlc3RzKGNvbm5lY3Rpb246IFdzT3BlbkNvbm5lY3Rpb248YW55Pikge1xuICAgIGNvbm5lY3Rpb24uY29ubmVjdC5waXBlKGRlYm91bmNlVGltZShjb25uZWN0aW9uSW50ZXJ2YWwpKS5zdWJzY3JpYmUodXJsID0+IHtcbiAgICAgIHRoaXMub3BlbkNvbm5lY3Rpb24odXJsLCBjb25uZWN0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTmV3Q29ubmVjdGlvbih1cmwpIHtcbiAgICBjb25zdCBjb25uZWN0aW9uID0ge1xuICAgICAgY2hhbm5lbDogdGhpcy5jcmVhdGVXZWJTb2NrZXQodXJsKSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMuY3JlYXRlTmV3U3RyZWFtU3ViamVjdCgpLFxuICAgICAgZXJyb3I6IHRoaXMuY3JlYXRlTmV3U3RyZWFtU3ViamVjdCgpLFxuICAgICAgY29ubmVjdDogdGhpcy5jcmVhdGVOZXdTdHJlYW1TdWJqZWN0KCksXG4gICAgfTtcbiAgICB0aGlzLndhdGNoQ29ubmVjdGlvblJlcXVlc3RzKGNvbm5lY3Rpb24pO1xuICAgIHJldHVybiBjb25uZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVOZXdTdHJlYW1TdWJqZWN0KCkge1xuICAgIHJldHVybiBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KCk7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ3VyZUNvbm5lY3Rpb25FdmVudHModXJsLCBjb25uZWN0aW9uOiBXc09wZW5Db25uZWN0aW9uPGFueT4pIHtcbiAgICBjb25uZWN0aW9uLmNoYW5uZWwub25jbG9zZSA9ICgpID0+IHRoaXMuaGFuZGxlT25DbG9zZSh1cmwsIGNvbm5lY3Rpb24pO1xuICAgIGNvbm5lY3Rpb24uY2hhbm5lbC5vbmVycm9yID0gZXJyb3IgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvciwgY29ubmVjdGlvbik7XG4gICAgY29ubmVjdGlvbi5jaGFubmVsLm9ubWVzc2FnZSA9IG1lc3NhZ2UgPT5cbiAgICAgIHRoaXMuaGFuZGxlTWVzc2FnZShtZXNzYWdlLCBjb25uZWN0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTWVzc2FnZShtZXNzYWdlLCBjb25uZWN0aW9uOiBXc09wZW5Db25uZWN0aW9uPGFueT4pIHtcbiAgICBjb25zdCBtZXNzYWdlRGF0YSA9IHRoaXMucGFyc2VNZXNzYWdlKG1lc3NhZ2UpO1xuICAgIGNvbm5lY3Rpb24ubWVzc2FnZS5uZXh0KG1lc3NhZ2VEYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VNZXNzYWdlKG1lc3NhZ2UpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UobWVzc2FnZS5kYXRhIHx8ICdcIlwiJyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbWVzc2FnZS5kYXRhO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlT25DbG9zZSh1cmwsIGNvbm5lY3Rpb24pIHtcbiAgICBjb25uZWN0aW9uLmNvbm5lY3QubmV4dCh1cmwpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvciwgY29ubmVjdGlvbikge1xuICAgIGNvbm5lY3Rpb24uZXJyb3IubmV4dChlcnJvcik7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdlYlNvY2tldCh1cmwpIHtcbiAgICByZXR1cm4gbmV3IFdlYlNvY2tldCh1cmwpO1xuICB9XG59XG4iXX0= | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjdXN0b21qcy93cy8iLCJzb3VyY2VzIjpbImxpYi93cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztJQUd4QyxrQkFBa0IsR0FBRyxHQUFHOztJQUV4QixvQkFBb0IsR0FFdEIsRUFBRTtBQUVOO0lBRUU7SUFBZSxDQUFDOzs7Ozs7SUFFaEIsMkJBQU87Ozs7O0lBQVAsVUFBVyxHQUFHOztZQUNOLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUM7UUFDNUMsSUFBSSxVQUFVLEVBQUU7WUFDZCxPQUFPLFVBQVUsQ0FBQztTQUNuQjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQzs7Ozs7O0lBRU8sK0JBQVc7Ozs7O0lBQW5CLFVBQW9CLEdBQUc7O1lBQ2YsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO1FBQzNDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUN2QyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOzs7Ozs7O0lBRU8sa0NBQWM7Ozs7OztJQUF0QixVQUF1QixHQUFXLEVBQUUsVUFBa0M7UUFDcEUsSUFBSSxVQUFVLEVBQUU7WUFDZCxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEQ7YUFBTTtZQUNMLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDNUM7UUFDRCxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxF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IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBXc09wZW5Db25uZWN0aW9uIH0gZnJvbSAnLi93cy5tb2RlbHMnO1xuXG5jb25zdCBjb25uZWN0aW9uSW50ZXJ2YWwgPSA1ZTM7XG5cbmNvbnN0IHdzU2VydmljZUNvbm5lY3Rpb25zOiB7XG4gIFtrZXk6IHN0cmluZ106IFdzT3BlbkNvbm5lY3Rpb248YW55Pjtcbn0gPSB7fTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFdzU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBjb25uZWN0PFQ+KHVybCk6IFdzT3BlbkNvbm5lY3Rpb248VD4ge1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB3c1NlcnZpY2VDb25uZWN0aW9uc1t1cmxdO1xuICAgIGlmIChjb25uZWN0aW9uKSB7XG4gICAgICByZXR1cm4gY29ubmVjdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdFRvV3ModXJsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbm5lY3RUb1dzKHVybCk6IFdzT3BlbkNvbm5lY3Rpb248YW55PiB7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMub3BlbkNvbm5lY3Rpb24odXJsKTtcbiAgICB3c1NlcnZpY2VDb25uZWN0aW9uc1t1cmxdID0gY29ubmVjdGlvbjtcbiAgICByZXR1cm4gY29ubmVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkNvbm5lY3Rpb24odXJsOiBzdHJpbmcsIGNvbm5lY3Rpb24/OiBXc09wZW5Db25uZWN0aW9uPGFueT4pIHtcbiAgICBpZiAoY29ubmVjdGlvbikge1xuICAgICAgY29ubmVjdGlvbi5jaGFubmVsID0gdGhpcy5jcmVhdGVXZWJTb2NrZXQodXJsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29ubmVjdGlvbiA9IHRoaXMuY3JlYXRlTmV3Q29ubmVjdGlvbih1cmwpO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZ3VyZUNvbm5lY3Rpb25FdmVudHModXJsLCBjb25uZWN0aW9uKTtcbiAgICByZXR1cm4gY29ubmVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hDb25uZWN0aW9uUmVxdWVzdHMoY29ubmVjdGlvbjogV3NPcGVuQ29ubmVjdGlvbjxhbnk+KSB7XG4gICAgY29ubmVjdGlvbi5jb25uZWN0LnBpcGUoZGVib3VuY2VUaW1lKGNvbm5lY3Rpb25JbnRlcnZhbCkpLnN1YnNjcmliZSh1cmwgPT4ge1xuICAgICAgdGhpcy5vcGVuQ29ubmVjdGlvbih1cmwsIGNvbm5lY3Rpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVOZXdDb25uZWN0aW9uKHVybCkge1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB7XG4gICAgICBjaGFubmVsOiB0aGlzLmNyZWF0ZVdlYlNvY2tldCh1cmwpLFxuICAgICAgbWVzc2FnZTogdGhpcy5jcmVhdGVOZXdTdHJlYW1TdWJqZWN0KCksXG4gICAgICBlcnJvcjogdGhpcy5jcmVhdGVOZXdTdHJlYW1TdWJqZWN0KCksXG4gICAgICBjb25uZWN0OiB0aGlzLmNyZWF0ZU5ld1N0cmVhbVN1YmplY3QoKSxcbiAgICB9O1xuICAgIHRoaXMud2F0Y2hDb25uZWN0aW9uUmVxdWVzdHMoY29ubmVjdGlvbik7XG4gICAgcmV0dXJuIGNvbm5lY3Rpb247XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5ld1N0cmVhbVN1YmplY3QoKSB7XG4gICAgcmV0dXJuIG5ldyBSZXBsYXlTdWJqZWN0PGFueT4oKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlQ29ubmVjdGlvbkV2ZW50cyh1cmwsIGNvbm5lY3Rpb246IFdzT3BlbkNvbm5lY3Rpb248YW55Pikge1xuICAgIGNvbm5lY3Rpb24uY2hhbm5lbC5vbmNsb3NlID0gKCkgPT4gdGhpcy5oYW5kbGVPbkNsb3NlKHVybCwgY29ubmVjdGlvbik7XG4gICAgY29ubmVjdGlvbi5jaGFubmVsLm9uZXJyb3IgPSBlcnJvciA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yLCBjb25uZWN0aW9uKTtcbiAgICBjb25uZWN0aW9uLmNoYW5uZWwub25tZXNzYWdlID0gbWVzc2FnZSA9PiB0aGlzLmhhbmRsZU1lc3NhZ2UobWVzc2FnZSwgY29ubmVjdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU1lc3NhZ2UobWVzc2FnZSwgY29ubmVjdGlvbjogV3NPcGVuQ29ubmVjdGlvbjxhbnk+KSB7XG4gICAgY29uc3QgbWVzc2FnZURhdGEgPSB0aGlzLnBhcnNlTWVzc2FnZShtZXNzYWdlKTtcbiAgICBjb25uZWN0aW9uLm1lc3NhZ2UubmV4dChtZXNzYWdlRGF0YSk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlTWVzc2FnZShtZXNzYWdlKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKG1lc3NhZ2UuZGF0YSB8fCAnXCJcIicpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG1lc3NhZ2UuZGF0YTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU9uQ2xvc2UodXJsLCBjb25uZWN0aW9uKSB7XG4gICAgY29ubmVjdGlvbi5jb25uZWN0Lm5leHQodXJsKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3IsIGNvbm5lY3Rpb24pIHtcbiAgICBjb25uZWN0aW9uLmVycm9yLm5leHQoZXJyb3IpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVXZWJTb2NrZXQodXJsKSB7XG4gICAgcmV0dXJuIG5ldyBXZWJTb2NrZXQodXJsKTtcbiAgfVxufVxuIl19 |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"customjs-ws.js","sources":["ng://@customjs/ws/lib/ws.models.ts","ng://@customjs/ws/lib/ws.service.ts","ng://@customjs/ws/lib/ws.module.ts"],"sourcesContent":["import { ReplaySubject } from 'rxjs';\n\nexport interface WsOpenConnection<T> {\n channel: WebSocket;\n message: ReplaySubject<T>;\n error: ReplaySubject<Event>;\n connect: ReplaySubject<string>;\n}\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { WsOpenConnection } from './ws.models';\n\nconst connectionInterval = 5e3;\n\nconst wsServiceConnections: {\n [key: string]: WsOpenConnection<any>;\n} = {};\n\n@Injectable()\nexport class WsService {\n constructor() {}\n\n connect<T>(url): WsOpenConnection<T> {\n const connection = wsServiceConnections[url];\n if (connection) {\n return connection;\n } else {\n return this.connectToWs(url);\n }\n }\n\n private connectToWs(url): WsOpenConnection<any> {\n const connection = this.openConnection(url);\n wsServiceConnections[url] = connection;\n return connection;\n }\n\n private openConnection(url: string, connection?: WsOpenConnection<any>) {\n if (connection) {\n connection.channel = this.createWebSocket(url);\n } else {\n connection = this.createNewConnection(url);\n }\n this.configureConnectionEvents(url, connection);\n return connection;\n }\n\n private watchConnectionRequests(connection: WsOpenConnection<any>) {\n connection.connect.pipe(debounceTime(connectionInterval)).subscribe(url => {\n this.openConnection(url, connection);\n });\n }\n\n private createNewConnection(url) {\n const connection = {\n channel: this.createWebSocket(url),\n message: this.createNewStreamSubject(),\n error: this.createNewStreamSubject(),\n connect: this.createNewStreamSubject(),\n };\n this.watchConnectionRequests(connection);\n return connection;\n }\n\n private createNewStreamSubject() {\n return new ReplaySubject<any>();\n }\n\n private configureConnectionEvents(url, connection: WsOpenConnection<any>) {\n connection.channel.onclose = () => this.handleOnClose(url, connection);\n connection.channel.onerror = error => this.handleError(error, connection);\n connection.channel.onmessage = message =>\n this.handleMessage(message, connection);\n }\n\n private handleMessage(message, connection: WsOpenConnection<any>) {\n const messageData = this.parseMessage(message);\n connection.message.next(messageData);\n }\n\n private parseMessage(message) {\n try {\n return JSON.parse(message.data || '\"\"');\n } catch {\n return message.data;\n }\n }\n\n private handleOnClose(url, connection) {\n connection.connect.next(url);\n }\n\n private handleError(error, connection) {\n connection.error.next(error);\n }\n\n private createWebSocket(url) {\n return new WebSocket(url);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { WsService } from './ws.service';\n\n@NgModule({\n providers: [WsService],\n})\nexport class WsModule {}\n"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"customjs-ws.js","sources":["ng://@customjs/ws/lib/ws.models.ts","ng://@customjs/ws/lib/ws.service.ts","ng://@customjs/ws/lib/ws.module.ts"],"sourcesContent":["import { ReplaySubject } from 'rxjs';\n\nexport interface WsOpenConnection<T> {\n channel: WebSocket;\n message: ReplaySubject<T>;\n error: ReplaySubject<Event>;\n connect: ReplaySubject<string>;\n}\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { WsOpenConnection } from './ws.models';\n\nconst connectionInterval = 5e3;\n\nconst wsServiceConnections: {\n [key: string]: WsOpenConnection<any>;\n} = {};\n\n@Injectable()\nexport class WsService {\n constructor() {}\n\n connect<T>(url): WsOpenConnection<T> {\n const connection = wsServiceConnections[url];\n if (connection) {\n return connection;\n } else {\n return this.connectToWs(url);\n }\n }\n\n private connectToWs(url): WsOpenConnection<any> {\n const connection = this.openConnection(url);\n wsServiceConnections[url] = connection;\n return connection;\n }\n\n private openConnection(url: string, connection?: WsOpenConnection<any>) {\n if (connection) {\n connection.channel = this.createWebSocket(url);\n } else {\n connection = this.createNewConnection(url);\n }\n this.configureConnectionEvents(url, connection);\n return connection;\n }\n\n private watchConnectionRequests(connection: WsOpenConnection<any>) {\n connection.connect.pipe(debounceTime(connectionInterval)).subscribe(url => {\n this.openConnection(url, connection);\n });\n }\n\n private createNewConnection(url) {\n const connection = {\n channel: this.createWebSocket(url),\n message: this.createNewStreamSubject(),\n error: this.createNewStreamSubject(),\n connect: this.createNewStreamSubject(),\n };\n this.watchConnectionRequests(connection);\n return connection;\n }\n\n private createNewStreamSubject() {\n return new ReplaySubject<any>();\n }\n\n private configureConnectionEvents(url, connection: WsOpenConnection<any>) {\n connection.channel.onclose = () => this.handleOnClose(url, connection);\n connection.channel.onerror = error => this.handleError(error, connection);\n connection.channel.onmessage = message => this.handleMessage(message, connection);\n }\n\n private handleMessage(message, connection: WsOpenConnection<any>) {\n const messageData = this.parseMessage(message);\n connection.message.next(messageData);\n }\n\n private parseMessage(message) {\n try {\n return JSON.parse(message.data || '\"\"');\n } catch {\n return message.data;\n }\n }\n\n private handleOnClose(url, connection) {\n connection.connect.next(url);\n }\n\n private handleError(error, connection) {\n connection.error.next(error);\n }\n\n private createWebSocket(url) {\n return new WebSocket(url);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { WsService } from './ws.service';\n\n@NgModule({\n providers: [WsService],\n})\nexport class WsModule {}\n"],"names":[],"mappings":"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"} |
@@ -173,5 +173,3 @@ import { Injectable, NgModule } from '@angular/core'; | ||
| */ | ||
| function (message) { | ||
| return _this.handleMessage(message, connection); | ||
| }); | ||
| function (message) { return _this.handleMessage(message, connection); }); | ||
| }; | ||
@@ -178,0 +176,0 @@ /** |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"customjs-ws.js","sources":["ng://@customjs/ws/lib/ws.models.ts","ng://@customjs/ws/lib/ws.service.ts","ng://@customjs/ws/lib/ws.module.ts"],"sourcesContent":["import { ReplaySubject } from 'rxjs';\n\nexport interface WsOpenConnection<T> {\n channel: WebSocket;\n message: ReplaySubject<T>;\n error: ReplaySubject<Event>;\n connect: ReplaySubject<string>;\n}\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { WsOpenConnection } from './ws.models';\n\nconst connectionInterval = 5e3;\n\nconst wsServiceConnections: {\n [key: string]: WsOpenConnection<any>;\n} = {};\n\n@Injectable()\nexport class WsService {\n constructor() {}\n\n connect<T>(url): WsOpenConnection<T> {\n const connection = wsServiceConnections[url];\n if (connection) {\n return connection;\n } else {\n return this.connectToWs(url);\n }\n }\n\n private connectToWs(url): WsOpenConnection<any> {\n const connection = this.openConnection(url);\n wsServiceConnections[url] = connection;\n return connection;\n }\n\n private openConnection(url: string, connection?: WsOpenConnection<any>) {\n if (connection) {\n connection.channel = this.createWebSocket(url);\n } else {\n connection = this.createNewConnection(url);\n }\n this.configureConnectionEvents(url, connection);\n return connection;\n }\n\n private watchConnectionRequests(connection: WsOpenConnection<any>) {\n connection.connect.pipe(debounceTime(connectionInterval)).subscribe(url => {\n this.openConnection(url, connection);\n });\n }\n\n private createNewConnection(url) {\n const connection = {\n channel: this.createWebSocket(url),\n message: this.createNewStreamSubject(),\n error: this.createNewStreamSubject(),\n connect: this.createNewStreamSubject(),\n };\n this.watchConnectionRequests(connection);\n return connection;\n }\n\n private createNewStreamSubject() {\n return new ReplaySubject<any>();\n }\n\n private configureConnectionEvents(url, connection: WsOpenConnection<any>) {\n connection.channel.onclose = () => this.handleOnClose(url, connection);\n connection.channel.onerror = error => this.handleError(error, connection);\n connection.channel.onmessage = message =>\n this.handleMessage(message, connection);\n }\n\n private handleMessage(message, connection: WsOpenConnection<any>) {\n const messageData = this.parseMessage(message);\n connection.message.next(messageData);\n }\n\n private parseMessage(message) {\n try {\n return JSON.parse(message.data || '\"\"');\n } catch {\n return message.data;\n }\n }\n\n private handleOnClose(url, connection) {\n connection.connect.next(url);\n }\n\n private handleError(error, connection) {\n connection.error.next(error);\n }\n\n private createWebSocket(url) {\n return new WebSocket(url);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { WsService } from './ws.service';\n\n@NgModule({\n providers: [WsService],\n})\nexport class WsModule {}\n"],"names":[],"mappings":";;;;;;;;;;;;AAEA,+BAKC;;;IAJC,mCAAmB;;IACnB,mCAA0B;;IAC1B,iCAA4B;;IAC5B,mCAA+B;;;;;;;ACNjC;IAKM,kBAAkB,GAAG,GAAG;;IAExB,oBAAoB,GAEtB,EAAE;AAEN;IAEE;KAAgB;;;;;;IAEhB,2BAAO;;;;;IAAP,UAAW,GAAG;;YACN,UAAU,GAAG,oBAAoB,CAAC,GAAG,CAAC;QAC5C,IAAI,UAAU,EAAE;YACd,OAAO,UAAU,CAAC;SACnB;aAAM;YACL,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;SAC9B;KACF;;;;;;IAEO,+BAAW;;;;;IAAnB,UAAoB,GAAG;;YACf,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;QAC3C,oBAAoB,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;QACvC,OAAO,UAAU,CAAC;KACnB;;;;;;;IAEO,kCAAc;;;;;;IAAtB,UAAuB,GAAW,EAAE,UAAkC;QACpE,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;SAChD;aAAM;YACL,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;SAC5C;QACD,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAChD,OAAO,UAAU,CAAC;KACnB;;;;;;IAEO,2CAAuB;;;;;IAA/B,UAAgC,UAAiC;QAAjE,iBAIC;QAHC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;;;;QAAC,UAAA,GAAG;YACrE,KAAI,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;SACtC,EAAC,CAAC;KACJ;;;;;;IAEO,uCAAmB;;;;;IAA3B,UAA4B,GAAG;;YACvB,UAAU,GAAG;YACjB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;YAClC,OAAO,EAAE,IAAI,CAAC,sBAAsB,EAAE;YACtC,KAAK,EAAE,IAAI,CAAC,sBAAsB,EAAE;YACpC,OAAO,EAAE,IAAI,CAAC,sBAAsB,EAAE;SACvC;QACD,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACzC,OAAO,UAAU,CAAC;KACnB;;;;;IAEO,0CAAsB;;;;IAA9B;QACE,OAAO,IAAI,aAAa,EAAO,CAAC;KACjC;;;;;;;IAEO,6CAAyB;;;;;;IAAjC,UAAkC,GAAG,EAAE,UAAiC;QAAxE,iBAKC;QAJC,UAAU,CAAC,OAAO,CAAC,OAAO;;;QAAG,cAAM,OAAA,KAAI,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,GAAA,CAAA,CAAC;QACvE,UAAU,CAAC,OAAO,CAAC,OAAO;;;;QAAG,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,GAAA,CAAA,CAAC;QAC1E,UAAU,CAAC,OAAO,CAAC,SAAS;;;;QAAG,UAAA,OAAO;YACpC,OAAA,KAAI,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC;SAAA,CAAA,CAAC;KAC3C;;;;;;;IAEO,iCAAa;;;;;;IAArB,UAAsB,OAAO,EAAE,UAAiC;;YACxD,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAC9C,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACtC;;;;;;IAEO,gCAAY;;;;;IAApB,UAAqB,OAAO;QAC1B,IAAI;YACF,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;SACzC;QAAC,WAAM;YACN,OAAO,OAAO,CAAC,IAAI,CAAC;SACrB;KACF;;;;;;;IAEO,iCAAa;;;;;;IAArB,UAAsB,GAAG,EAAE,UAAU;QACnC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC9B;;;;;;;IAEO,+BAAW;;;;;;IAAnB,UAAoB,KAAK,EAAE,UAAU;QACnC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;;;;;;IAEO,mCAAe;;;;;IAAvB,UAAwB,GAAG;QACzB,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;KAC3B;;gBAhFF,UAAU;;;;IAiFX,gBAAC;CAjFD;;;;;;ACXA;IAGA;KAGwB;;gBAHvB,QAAQ,SAAC;oBACR,SAAS,EAAE,CAAC,SAAS,CAAC;iBACvB;;IACsB,eAAC;CAHxB;;;;;;;;;;;;;;"} | ||
| {"version":3,"file":"customjs-ws.js","sources":["ng://@customjs/ws/lib/ws.models.ts","ng://@customjs/ws/lib/ws.service.ts","ng://@customjs/ws/lib/ws.module.ts"],"sourcesContent":["import { ReplaySubject } from 'rxjs';\n\nexport interface WsOpenConnection<T> {\n channel: WebSocket;\n message: ReplaySubject<T>;\n error: ReplaySubject<Event>;\n connect: ReplaySubject<string>;\n}\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { WsOpenConnection } from './ws.models';\n\nconst connectionInterval = 5e3;\n\nconst wsServiceConnections: {\n [key: string]: WsOpenConnection<any>;\n} = {};\n\n@Injectable()\nexport class WsService {\n constructor() {}\n\n connect<T>(url): WsOpenConnection<T> {\n const connection = wsServiceConnections[url];\n if (connection) {\n return connection;\n } else {\n return this.connectToWs(url);\n }\n }\n\n private connectToWs(url): WsOpenConnection<any> {\n const connection = this.openConnection(url);\n wsServiceConnections[url] = connection;\n return connection;\n }\n\n private openConnection(url: string, connection?: WsOpenConnection<any>) {\n if (connection) {\n connection.channel = this.createWebSocket(url);\n } else {\n connection = this.createNewConnection(url);\n }\n this.configureConnectionEvents(url, connection);\n return connection;\n }\n\n private watchConnectionRequests(connection: WsOpenConnection<any>) {\n connection.connect.pipe(debounceTime(connectionInterval)).subscribe(url => {\n this.openConnection(url, connection);\n });\n }\n\n private createNewConnection(url) {\n const connection = {\n channel: this.createWebSocket(url),\n message: this.createNewStreamSubject(),\n error: this.createNewStreamSubject(),\n connect: this.createNewStreamSubject(),\n };\n this.watchConnectionRequests(connection);\n return connection;\n }\n\n private createNewStreamSubject() {\n return new ReplaySubject<any>();\n }\n\n private configureConnectionEvents(url, connection: WsOpenConnection<any>) {\n connection.channel.onclose = () => this.handleOnClose(url, connection);\n connection.channel.onerror = error => this.handleError(error, connection);\n connection.channel.onmessage = message => this.handleMessage(message, connection);\n }\n\n private handleMessage(message, connection: WsOpenConnection<any>) {\n const messageData = this.parseMessage(message);\n connection.message.next(messageData);\n }\n\n private parseMessage(message) {\n try {\n return JSON.parse(message.data || '\"\"');\n } catch {\n return message.data;\n }\n }\n\n private handleOnClose(url, connection) {\n connection.connect.next(url);\n }\n\n private handleError(error, connection) {\n connection.error.next(error);\n }\n\n private createWebSocket(url) {\n return new WebSocket(url);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { WsService } from './ws.service';\n\n@NgModule({\n providers: [WsService],\n})\nexport class WsModule {}\n"],"names":[],"mappings":"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"} |
+3
-3
| { | ||
| "name": "@customjs/ws", | ||
| "version": "0.0.1-beta.2", | ||
| "version": "1.0.0", | ||
| "peerDependencies": { | ||
| "@angular/common": "^8.2.0", | ||
| "@angular/core": "^8.2.0" | ||
| "@angular/common": ">=8.2.0", | ||
| "@angular/core": ">=8.2.0" | ||
| }, | ||
@@ -8,0 +8,0 @@ "main": "bundles/customjs-ws.umd.js", |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
2
-33.33%79541
-0.16%1322
-0.45%