{"version":3,"file":"narik-signalr-client.mjs","sources":["../../../projects/narik-signalr-client/src/lib/internal-injectionTokens.ts","../../../projects/narik-signalr-client/src/lib/services/narik-signalR-client.service.ts","../../../projects/narik-signalr-client/src/lib/narik-signalr-client.module.ts","../../../projects/narik-signalr-client/src/narik-signalr-client.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { NarikSignalRConfig } from './base/narik-signalR.config';\r\n\r\nexport const SIGNALR_CONFIG = new InjectionToken<NarikSignalRConfig>(\r\n    'SIGNALR_CONFIG'\r\n);\r\n","import { Observable } from 'rxjs';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { pluck } from 'rxjs/operators';\r\nimport { share } from 'rxjs/operators';\r\n\r\nimport {\r\n    HubConnection,\r\n    HubConnectionBuilder,\r\n    HubConnectionState,\r\n} from '@aspnet/signalr';\r\nimport { Injectable, Inject } from '@angular/core';\r\nimport { SIGNALR_CONFIG } from '../internal-injectionTokens';\r\nimport { NarikSignalRConfig } from '../base/narik-signalR.config';\r\nimport { RemoteMessagingService } from '@narik/infrastructure';\r\n\r\n@Injectable()\r\nexport class NarikSignalRMessagingService extends RemoteMessagingService {\r\n    private messagingSubject = new Subject<any>();\r\n    connectionEstablished = new Subject<Boolean>();\r\n    private hubConnection: HubConnection;\r\n    private connecting = false;\r\n\r\n    constructor(@Inject(SIGNALR_CONFIG) private config: NarikSignalRConfig) {\r\n        super();\r\n        this.createConnection();\r\n        this.registerOnServerEvents();\r\n    }\r\n\r\n    listen<T>(messageType: any): Observable<T> {\r\n        return this.messagingSubject.pipe(\r\n            filter((x) => x.messageType === messageType),\r\n            map((x) => x.messageData),\r\n            share()\r\n        );\r\n    }\r\n\r\n    private createConnection() {\r\n        this.hubConnection = new HubConnectionBuilder()\r\n            .withUrl(this.config.url)\r\n            .build();\r\n    }\r\n\r\n    private startConnection(): Promise<any> {\r\n        return new Promise((res, rej) => {\r\n            setTimeout(() => {\r\n                if (\r\n                    !this.connecting &&\r\n                    this.hubConnection.state === HubConnectionState.Disconnected\r\n                ) {\r\n                    this.connecting = true;\r\n                    this.hubConnection.start().then(\r\n                        () => {\r\n                            this.connecting = false;\r\n                            this.connectionEstablished.next(true);\r\n                            res(true);\r\n                        },\r\n                        () => {\r\n                            this.connecting = false;\r\n                        }\r\n                    );\r\n                } else {\r\n                    res(true);\r\n                }\r\n            }, this.config.WitUntilServerIsReady || 2000);\r\n        });\r\n    }\r\n\r\n    private registerOnServerEvents(): void {\r\n        for (const message of this.config.messageKeys) {\r\n            this.hubConnection.on(message, (data: any) => {\r\n                this.messagingSubject.next({\r\n                    messageData: data,\r\n                    messageType: message,\r\n                });\r\n            });\r\n        }\r\n    }\r\n\r\n    connect(): Promise<any> {\r\n        return this.startConnection();\r\n    }\r\n    disConnect(): Promise<any> {\r\n        return this.hubConnection.stop();\r\n    }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { NarikSignalRConfig } from './base/narik-signalR.config';\r\nimport { SIGNALR_CONFIG } from './internal-injectionTokens';\r\nimport { NarikSignalRMessagingService } from './services/narik-signalR-client.service';\r\nimport { RemoteMessagingService } from '@narik/infrastructure';\r\n\r\n@NgModule({\r\n    imports: [],\r\n    declarations: [],\r\n    exports: [],\r\n    providers: [],\r\n})\r\nexport class NarikSignalRClientModule {\r\n    static forRoot(\r\n        config: NarikSignalRConfig\r\n    ): ModuleWithProviders<NarikSignalRClientModule> {\r\n        return {\r\n            ngModule: NarikSignalRClientModule,\r\n            providers: [\r\n                {\r\n                    provide: RemoteMessagingService,\r\n                    useClass: NarikSignalRMessagingService,\r\n                },\r\n                {\r\n                    provide: SIGNALR_CONFIG,\r\n                    useValue: config,\r\n                },\r\n            ],\r\n        };\r\n    }\r\n\r\n    constructor(private signalRService: RemoteMessagingService) {}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}