@henkkelder/ng2-signalr
Version:
An angular typescript library that allows you to connect to Asp.Net SignalR
1 lines • 43.5 kB
Source Map (JSON)
{"version":3,"file":"henkkelder-ng2-signalr.mjs","sources":["../../../projects/ng2-signalr/src/lib/services/eventing/broadcast.event.listener.ts","../../../projects/ng2-signalr/src/lib/services/testing/signalr.connection.mock.ts","../../../projects/ng2-signalr/src/lib/services/testing/signalr.connection.mock.manager.ts","../../../projects/ng2-signalr/src/lib/services/connection/connection.status.ts","../../../projects/ng2-signalr/src/lib/services/connection/connection.statuses.ts","../../../projects/ng2-signalr/src/lib/services/connection/signalr.connection.ts","../../../projects/ng2-signalr/src/lib/services/connection/connection.transport.ts","../../../projects/ng2-signalr/src/lib/services/connection/connection.transports.ts","../../../projects/ng2-signalr/src/lib/services/signalr.configuration.ts","../../../projects/ng2-signalr/src/lib/services/signalr.module.ts","../../../projects/ng2-signalr/src/lib/services/signalr.ts","../../../projects/ng2-signalr/src/lib/modules/signalr-module.ts","../../../projects/ng2-signalr/src/public-api.ts","../../../projects/ng2-signalr/src/henkkelder-ng2-signalr.ts"],"sourcesContent":["import { Subject } from 'rxjs';\r\n\r\nexport class BroadcastEventListener<T> extends Subject<T> {\r\n\r\n constructor(public event: string) {\r\n super();\r\n if (event == null || event === '') {\r\n throw new Error('Failed to create BroadcastEventListener. Argument \\'event\\' can not be empty');\r\n }\r\n }\r\n}\r\n","import { Observable, AsyncSubject, ReplaySubject, Subject } from 'rxjs';\r\nimport { SignalRConfiguration } from '../signalr.configuration';\r\nimport { BroadcastEventListener } from '../eventing/broadcast.event.listener';\r\nimport { ConnectionStatus } from '../connection/connection.status';\r\nimport { ISignalRConnection } from '../connection/i.signalr.connection';\r\n\r\nexport interface IListenerCollection {\r\n [name: string]: BroadcastEventListener<any>;\r\n}\r\n\r\nexport class SignalRConnectionMock implements ISignalRConnection {\r\n constructor(\r\n private _mockErrors$: Subject<any>,\r\n private _mockStatus$: Subject<ConnectionStatus>,\r\n private _listeners: IListenerCollection) {\r\n }\r\n\r\n get errors(): Observable<any> {\r\n return this._mockErrors$;\r\n }\r\n\r\n get status(): Observable<ConnectionStatus> {\r\n return this._mockStatus$.asObservable();\r\n }\r\n\r\n get id(): string {\r\n return 'xxxxxxxx-xxxx-xxxx-xxxxxxxxx';\r\n }\r\n\r\n public stop(): void {\r\n //\r\n }\r\n\r\n public start(): Promise<any> {\r\n return Promise.resolve(null); // TODO: implement\r\n }\r\n\r\n public invoke(method: string, ...parameters: any[]): Promise<any> {\r\n return Promise.resolve(null);\r\n }\r\n\r\n public listen<T>(listener: BroadcastEventListener<T>): void {\r\n this._listeners[listener.event] = listener;\r\n }\r\n\r\n public listenFor<T>(event: string): BroadcastEventListener<T> {\r\n const listener = new BroadcastEventListener<T>(event);\r\n this.listen(listener);\r\n return listener;\r\n }\r\n\r\n public listenForRaw(event: string): BroadcastEventListener<any[]> {\r\n const listener = new BroadcastEventListener<any[]>(event);\r\n this._listeners[listener.event] = listener;\r\n return listener;\r\n }\r\n\r\n stopListening<T>(listener: BroadcastEventListener<T>): void {\r\n delete this._listeners[listener.event];\r\n }\r\n}\r\n","import { Subject, ReplaySubject } from 'rxjs';\r\nimport { SignalRConnectionMock, IListenerCollection } from './signalr.connection.mock';\r\nimport { ConnectionStatus } from '../connection/connection.status';\r\n\r\nexport class SignalRConnectionMockManager {\r\n\r\n private _listeners: IListenerCollection;\r\n private _status$: Subject<ConnectionStatus>;\r\n private _errors$: Subject<any>;\r\n private _object: SignalRConnectionMock;\r\n\r\n constructor() {\r\n this._errors$ = new Subject<any>();\r\n this._status$ = new Subject<ConnectionStatus>();\r\n this._listeners = {};\r\n this._object = new SignalRConnectionMock(this._errors$, this._status$, this._listeners);\r\n }\r\n\r\n get mock(): SignalRConnectionMock {\r\n return this._object;\r\n }\r\n\r\n get errors$(): Subject<any> {\r\n return this._errors$;\r\n }\r\n\r\n get status$(): Subject<ConnectionStatus> {\r\n return this._status$;\r\n }\r\n\r\n get listeners(): IListenerCollection {\r\n return this._listeners;\r\n }\r\n}\r\n","export class ConnectionStatus {\r\n\r\n private static names: string[] = ['connecting', 'connected', 'reconnecting', '', 'disconnected'];\r\n\r\n private _value: number;\r\n\r\n get value(): number {\r\n return this._value;\r\n }\r\n\r\n get name(): string {\r\n return ConnectionStatus.names[Number(this._value.toString())];\r\n }\r\n\r\n constructor(value: number) {\r\n if (value == null || value < 0) {\r\n throw new Error('Failed to create ConnectionStatus. Argument \\'name\\' can not be null or empty.');\r\n }\r\n this._value = value;\r\n }\r\n\r\n public toString(): string {\r\n return this.name;\r\n }\r\n\r\n public equals(other: ConnectionStatus): boolean {\r\n if (other == null) {\r\n return false;\r\n }\r\n return this._value === other.value;\r\n }\r\n}\r\n","import { ConnectionStatus } from './connection.status';\r\n\r\n// @dynamic\r\nexport class ConnectionStatuses {\r\n\r\n private static statuses: ConnectionStatus[] =\r\n [\r\n new ConnectionStatus(0),\r\n new ConnectionStatus(1),\r\n new ConnectionStatus(2),\r\n new ConnectionStatus(4)\r\n ];\r\n\r\n public static get connecting(): ConnectionStatus {\r\n return ConnectionStatuses.statuses[0];\r\n }\r\n\r\n public static get connected(): ConnectionStatus {\r\n return ConnectionStatuses.statuses[1];\r\n }\r\n\r\n public static get reconnecting(): ConnectionStatus {\r\n return ConnectionStatuses.statuses[2];\r\n }\r\n\r\n public static get disconnected(): ConnectionStatus {\r\n return ConnectionStatuses.statuses[3];\r\n }\r\n}\r\n","import { NgZone } from '@angular/core';\r\nimport { ISignalRConnection } from './i.signalr.connection';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { BroadcastEventListener } from '../eventing/broadcast.event.listener';\r\nimport { ConnectionStatus } from './connection.status';\r\nimport { SignalRConfiguration } from '../signalr.configuration';\r\nimport { ConnectionTransport } from './connection.transport';\r\n\r\nexport declare type CallbackFn = (...args: any[]) => void;\r\n\r\nexport class SignalRConnection implements ISignalRConnection {\r\n private _status: Observable<ConnectionStatus>;\r\n private _errors: Observable<any>;\r\n private _jConnection: any;\r\n private _jProxy: any;\r\n private _zone: NgZone;\r\n private _configuration: SignalRConfiguration;\r\n private _listeners: { [eventName: string]: CallbackFn[] };\r\n\r\n private _enabledLogging = true;\r\n\r\n constructor(jConnection: any, jProxy: any, zone: NgZone, configuration: SignalRConfiguration) {\r\n this._jProxy = jProxy;\r\n this._jConnection = jConnection;\r\n this._zone = zone;\r\n this._errors = this.wireUpErrorsAsObservable();\r\n this._status = this.wireUpStatusEventsAsObservable();\r\n this._configuration = configuration;\r\n this._enabledLogging = configuration.logging;\r\n this._listeners = {};\r\n }\r\n\r\n public get errors(): Observable<any> {\r\n return this._errors;\r\n }\r\n\r\n public get status(): Observable<ConnectionStatus> {\r\n return this._status;\r\n }\r\n\r\n public get enabledLogging() {\r\n return this._enabledLogging;\r\n }\r\n\r\n public set enabledLogging(val: boolean) {\r\n this._enabledLogging = val;\r\n }\r\n\r\n public start(): Promise<ISignalRConnection> {\r\n\r\n const jTransports = this.convertTransports(this._configuration.transport);\r\n\r\n const $promise = new Promise<ISignalRConnection>((resolve, reject) => {\r\n this._jConnection\r\n .start({\r\n jsonp: this._configuration.jsonp,\r\n pingInterval: this._configuration.pingInterval,\r\n transport: jTransports,\r\n withCredentials: this._configuration.withCredentials,\r\n })\r\n .done(() => {\r\n this.log('Connection established, ID: ' + this._jConnection.id);\r\n this.log('Connection established, Transport: ' + this._jConnection.transport.name);\r\n resolve(this);\r\n })\r\n .fail((error: any) => {\r\n this.log('Could not connect');\r\n reject('Failed to connect. Error: ' + error.message); // ex: Error during negotiation request.\r\n });\r\n });\r\n return $promise;\r\n }\r\n\r\n public stop(): void {\r\n this._jConnection.stop();\r\n }\r\n\r\n public get id(): string {\r\n return this._jConnection.id;\r\n }\r\n\r\n public invoke(method: string, ...parameters: any[]): Promise<any> {\r\n if (method == null) {\r\n throw new Error('SignalRConnection: Failed to invoke. Argument \\'method\\' can not be null');\r\n }\r\n this.log(`SignalRConnection. Start invoking \\'${method}\\'...`);\r\n\r\n const $promise = new Promise<any>((resolve, reject) => {\r\n this._jProxy.invoke(method, ...parameters)\r\n .done((result: any) => {\r\n this.log(`\\'${method}\\' invoked succesfully. Resolving promise...`);\r\n resolve(result);\r\n this.log(`Promise resolved.`);\r\n })\r\n .fail((err: any) => {\r\n this.log(`Invoking \\'${method}\\' failed. Rejecting promise...`);\r\n reject(err);\r\n this.log(`Promise rejected.`);\r\n });\r\n });\r\n return $promise;\r\n }\r\n\r\n public listen<T>(listener: BroadcastEventListener<T>): void {\r\n if (listener == null) {\r\n throw new Error('Failed to listen. Argument \\'listener\\' can not be null');\r\n }\r\n\r\n const callback: CallbackFn = (...args: any[]) => {\r\n this.run(() => {\r\n let casted: T = null;\r\n if (args.length > 0) {\r\n casted = args[0] as T;\r\n }\r\n this.log('SignalRConnection.proxy.on invoked. Calling listener next() ...');\r\n listener.next(casted);\r\n this.log('listener next() called.');\r\n }, this._configuration.executeEventsInZone);\r\n };\r\n\r\n this.setListener(callback, listener);\r\n }\r\n\r\n public stopListening<T>(listener: BroadcastEventListener<T>): void {\r\n if (listener == null) {\r\n throw new Error('Failed to listen. Argument \\'listener\\' can not be null');\r\n }\r\n\r\n this.log(`SignalRConnection: Stopping listening to server event with name ${listener.event}`);\r\n if (!this._listeners[listener.event]) {\r\n this._listeners[listener.event] = [];\r\n }\r\n\r\n for (const callback of this._listeners[listener.event]) {\r\n this._jProxy.off(listener.event, callback);\r\n }\r\n\r\n this._listeners[listener.event] = [];\r\n }\r\n\r\n public listenFor<T>(event: string): BroadcastEventListener<T> {\r\n if (event == null || event === '') {\r\n throw new Error('Failed to listen. Argument \\'event\\' can not be empty');\r\n }\r\n\r\n const listener = new BroadcastEventListener<T>(event);\r\n\r\n this.listen(listener);\r\n\r\n return listener;\r\n }\r\n\r\n public listenForRaw(event: string): BroadcastEventListener<any[]> {\r\n if (event == null || event === '') {\r\n throw new Error('Failed to listen. Argument \\'event\\' can not be empty');\r\n }\r\n\r\n const listener = new BroadcastEventListener<any[]>(event);\r\n\r\n const callback: CallbackFn = (...args: any[]) => {\r\n this.run(() => {\r\n let casted: any[] = [];\r\n if (args.length > 0) {\r\n casted = args;\r\n }\r\n this.log('SignalRConnection.proxy.on invoked. Calling listener next() ...');\r\n listener.next(args);\r\n this.log('listener next() called.');\r\n }, this._configuration.executeEventsInZone);\r\n };\r\n\r\n this.setListener(callback, listener);\r\n return listener;\r\n }\r\n\r\n private setListener<T>(callback: CallbackFn, listener: BroadcastEventListener<T>) {\r\n this.log(`SignalRConnection: Starting to listen to server event with name ${listener.event}`);\r\n this._jProxy.on(listener.event, callback);\r\n\r\n if (this._listeners[listener.event] == null) {\r\n this._listeners[listener.event] = [];\r\n }\r\n\r\n this._listeners[listener.event].push(callback);\r\n }\r\n\r\n private convertTransports(transports: ConnectionTransport | ConnectionTransport[]): any {\r\n if (transports instanceof Array) {\r\n return transports.map((t: ConnectionTransport) => t.name);\r\n }\r\n return transports.name;\r\n }\r\n\r\n private wireUpErrorsAsObservable(): Observable<any> {\r\n const sError = new Subject<any>();\r\n\r\n this._jConnection.error((error: any) => {\r\n this.run(() => sError.next(error), this._configuration.executeErrorsInZone);\r\n });\r\n return sError;\r\n }\r\n\r\n private wireUpStatusEventsAsObservable(): Observable<ConnectionStatus> {\r\n const sStatus = new Subject<ConnectionStatus>();\r\n // aggregate all signalr connection status handlers into 1 observable.\r\n // handler wire up, for signalr connection status callback.\r\n this._jConnection.stateChanged((change: any) => {\r\n this.run(() => sStatus.next(new ConnectionStatus(change.newState)),\r\n this._configuration.executeStatusChangeInZone);\r\n });\r\n return sStatus.asObservable();\r\n }\r\n\r\n private onBroadcastEventReceived<T>(listener: BroadcastEventListener<T>, ...args: any[]) {\r\n this.log('SignalRConnection.proxy.on invoked. Calling listener next() ...');\r\n\r\n let casted: T = null;\r\n if (args.length > 0) {\r\n casted = args[0] as T;\r\n }\r\n\r\n this.run(() => {\r\n listener.next(casted);\r\n }, this._configuration.executeEventsInZone);\r\n\r\n this.log('listener next() called.');\r\n }\r\n\r\n private log(...args: any[]) {\r\n if (this.enabledLogging === false) {\r\n return;\r\n }\r\n // tslint:disable-next-line: no-console\r\n console.log(args.join(', '));\r\n }\r\n\r\n private run(func: () => void, inZone: boolean) {\r\n if (inZone) {\r\n this._zone.run(() => func());\r\n } else {\r\n this._zone.runOutsideAngular(() => func());\r\n }\r\n }\r\n}\r\n","export class ConnectionTransport {\r\n\r\n private _name: string;\r\n\r\n get name(): string {\r\n return this._name;\r\n }\r\n\r\n constructor(name: string) {\r\n if (name == null || name === '') {\r\n throw new Error('Failed to create ConnectionTransport. Argument \\'name\\' can not be null or empty.');\r\n }\r\n this._name = name;\r\n }\r\n\r\n public toString(): string {\r\n return this._name;\r\n }\r\n\r\n public equals(other: ConnectionTransport): boolean {\r\n if (other == null) {\r\n return false;\r\n }\r\n\r\n return this._name === other.name;\r\n }\r\n}\r\n","import { ConnectionTransport } from './connection.transport';\r\n\r\n// @dynamic\r\nexport class ConnectionTransports {\r\n\r\n private static transports: ConnectionTransport[] =\r\n [\r\n new ConnectionTransport('foreverFrame'),\r\n new ConnectionTransport('longPolling'),\r\n new ConnectionTransport('serverSentEvents'),\r\n new ConnectionTransport('webSockets'),\r\n new ConnectionTransport('auto'),\r\n ];\r\n\r\n public static get foreverFrame(): ConnectionTransport {\r\n return ConnectionTransports.transports[0];\r\n }\r\n\r\n public static get longPolling(): ConnectionTransport {\r\n return ConnectionTransports.transports[1];\r\n }\r\n\r\n public static get serverSentEvents(): ConnectionTransport {\r\n return ConnectionTransports.transports[2];\r\n }\r\n\r\n public static get webSockets(): ConnectionTransport {\r\n return ConnectionTransports.transports[3];\r\n }\r\n\r\n public static get auto(): ConnectionTransport {\r\n return ConnectionTransports.transports[4];\r\n }\r\n}\r\n","\r\nimport { ConnectionTransports } from './connection/connection.transports';\r\nimport { ConnectionTransport } from './connection/connection.transport';\r\nimport { IConnectionOptions } from './connection/connection.options';\r\n\r\nexport class SignalRConfiguration implements IConnectionOptions {\r\n\r\n /** connection url to the SignalR service */\r\n public url: string;\r\n\r\n /** Allows you to specify query string parameters object when the client connects */\r\n public qs?: any;\r\n\r\n /** name of the SignalR service hub to connect to */\r\n public hubName: string;\r\n\r\n /** disable/enables client side logging. Defaults to false */\r\n public logging: boolean;\r\n\r\n /** Allows jsonp. This flag can be used to suppport CORS on older browsers */\r\n public jsonp: boolean;\r\n\r\n /** Allows withCredentials. This flag can be used to suppport CORS */\r\n public withCredentials: boolean;\r\n\r\n /** Allows pingInterval */\r\n public pingInterval?: number;\r\n\r\n /** Allows you to specify transport. You can specify a fallback order if you wan't to try specific transports in order. By default selects best avaliable transport. */\r\n public transport: ConnectionTransport | ConnectionTransport[];\r\n\r\n /** Allows you to run the event callback outside ngZone */\r\n public executeEventsInZone?: boolean;\r\n\r\n /** Allows you to run the errors callback outside ngZone */\r\n public executeErrorsInZone?: boolean;\r\n\r\n /** Allows you to run the status change in callback outside ngZone */\r\n public executeStatusChangeInZone?: boolean;\r\n\r\n constructor() {\r\n this.hubName = null;\r\n this.logging = false;\r\n this.qs = null;\r\n this.url = null;\r\n this.jsonp = false;\r\n this.withCredentials = false;\r\n this.transport = ConnectionTransports.auto;\r\n this.executeEventsInZone = true;\r\n this.executeErrorsInZone = false;\r\n this.executeStatusChangeInZone = true;\r\n this.pingInterval = 300000;\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const SIGNALR_JCONNECTION_TOKEN = new InjectionToken<any>('SIGNALR_JCONNECTION_TOKEN');\r\n","import { NgZone, Injectable, Inject } from '@angular/core';\r\nimport { ISignalRConnection } from './connection/i.signalr.connection';\r\nimport { SignalRConfiguration } from './signalr.configuration';\r\nimport { SignalRConnection } from './connection/signalr.connection';\r\nimport { IConnectionOptions } from './connection/connection.options';\r\nimport { SIGNALR_JCONNECTION_TOKEN } from './signalr.module';\r\n\r\ndeclare var jQuery: any;\r\n\r\n@Injectable()\r\nexport class SignalR {\r\n private _configuration: SignalRConfiguration;\r\n private _zone: NgZone;\r\n private _jHubConnectionFn: any;\r\n\r\n public constructor(\r\n configuration: SignalRConfiguration,\r\n zone: NgZone,\r\n @Inject(SIGNALR_JCONNECTION_TOKEN) jHubConnectionFn: any /* use type 'any'; Suggested workaround from angular repository: https://github.com/angular/angular/issues/12631 */\r\n ) {\r\n this._configuration = configuration;\r\n this._zone = zone;\r\n this._jHubConnectionFn = jHubConnectionFn;\r\n }\r\n\r\n public createConnection(options?: IConnectionOptions): SignalRConnection {\r\n const configuration = this.merge(options ? options : {});\r\n\r\n this.logConfiguration(configuration);\r\n\r\n // create connection object\r\n const jConnection = this._jHubConnectionFn(configuration.url);\r\n jConnection.logging = configuration.logging;\r\n jConnection.qs = configuration.qs;\r\n\r\n // create a proxy\r\n const jProxy = jConnection.createHubProxy(configuration.hubName);\r\n // !!! important. We need to register at least one function otherwise server callbacks will not work.\r\n jProxy.on('noOp', () => { /* */ });\r\n\r\n const hubConnection = new SignalRConnection(jConnection, jProxy, this._zone, configuration);\r\n\r\n return hubConnection;\r\n }\r\n\r\n public connect(options?: IConnectionOptions): Promise<ISignalRConnection> {\r\n return this.createConnection(options).start();\r\n }\r\n\r\n private logConfiguration(configuration: SignalRConfiguration) {\r\n try {\r\n const serializedQs = JSON.stringify(configuration.qs);\r\n const serializedTransport = JSON.stringify(configuration.transport);\r\n if (configuration.logging) {\r\n this.log(`Creating connecting with...`);\r\n this.log(`configuration:[url: '${configuration.url}'] ...`);\r\n this.log(`configuration:[hubName: '${configuration.hubName}'] ...`);\r\n this.log(`configuration:[qs: '${serializedQs}'] ...`);\r\n this.log(`configuration:[transport: '${serializedTransport}'] ...`);\r\n }\r\n } catch (err) { /* */ }\r\n }\r\n\r\n private log(str: string) {\r\n // tslint:disable-next-line: no-console\r\n console.log(str);\r\n }\r\n\r\n private merge(overrides: IConnectionOptions): SignalRConfiguration {\r\n const merged: SignalRConfiguration = new SignalRConfiguration();\r\n merged.hubName = overrides.hubName || this._configuration.hubName;\r\n merged.url = overrides.url || this._configuration.url;\r\n merged.qs = overrides.qs || this._configuration.qs;\r\n merged.logging = this._configuration.logging;\r\n merged.jsonp = overrides.jsonp || this._configuration.jsonp;\r\n merged.withCredentials = overrides.withCredentials || this._configuration.withCredentials;\r\n merged.transport = overrides.transport || this._configuration.transport;\r\n merged.executeEventsInZone = overrides.executeEventsInZone || this._configuration.executeEventsInZone;\r\n merged.executeErrorsInZone = overrides.executeErrorsInZone || this._configuration.executeErrorsInZone;\r\n merged.executeStatusChangeInZone = overrides.executeStatusChangeInZone || this._configuration.executeStatusChangeInZone;\r\n merged.pingInterval = overrides.pingInterval || this._configuration.pingInterval;\r\n return merged;\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule, ModuleWithProviders, NgZone, InjectionToken } from '@angular/core';\r\nimport { SignalR } from '../services/signalr';\r\nimport { SignalRConfiguration } from '../services/signalr.configuration';\r\n\r\nconst SIGNALR_CONFIGURATION = new InjectionToken<SignalRConfiguration>('SIGNALR_CONFIGURATION');\r\n\r\nexport function createSignalr(configuration: SignalRConfiguration, zone: NgZone) {\r\n\r\n const jConnectionFn = getJConnectionFn();\r\n\r\n return new SignalR(configuration, zone, jConnectionFn);\r\n}\r\n\r\nfunction getJConnectionFn(): any {\r\n const jQuery = getJquery();\r\n const hubConnectionFn = jQuery.hubConnection;\r\n if (hubConnectionFn == null) {\r\n throw new Error('Signalr failed to initialize. Script \\'jquery.signalR.js\\' is missing. Please make sure to include \\'jquery.signalR.js\\' script.');\r\n }\r\n return hubConnectionFn;\r\n}\r\n\r\nfunction getJquery(): any {\r\n const jQuery = (window as any).jQuery;\r\n if (jQuery == null) {\r\n throw new Error('Signalr failed to initialize. Script \\'jquery.js\\' is missing. Please make sure to include jquery script.');\r\n }\r\n return jQuery;\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n providers: [{\r\n provide: SignalR,\r\n useValue: SignalR\r\n }]\r\n})\r\nexport class SignalRModule {\r\n public static forRoot(getSignalRConfiguration: () => void): ModuleWithProviders<SignalRModule> {\r\n return {\r\n ngModule: SignalRModule,\r\n providers: [\r\n {\r\n provide: SIGNALR_CONFIGURATION,\r\n useFactory: getSignalRConfiguration\r\n },\r\n {\r\n deps: [SIGNALR_CONFIGURATION, NgZone],\r\n provide: SignalR,\r\n useFactory: (createSignalr)\r\n }\r\n ],\r\n };\r\n }\r\n public static forChild(): ModuleWithProviders<SignalRModule> {\r\n throw new Error('forChild method not implemented');\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ng2-signalr\r\n */\r\n\r\nexport { ISignalRConnection } from './lib/services/connection/i.signalr.connection';\r\nexport { SignalRConnectionMock } from './lib/services/testing/signalr.connection.mock';\r\nexport { SignalRConnectionMockManager } from './lib/services/testing/signalr.connection.mock.manager';\r\nexport { ConnectionStatus } from './lib/services/connection/connection.status';\r\nexport { ConnectionStatuses } from './lib/services/connection/connection.statuses';\r\nexport { BroadcastEventListener } from './lib/services/eventing/broadcast.event.listener';\r\nexport { SignalRConnection } from './lib/services/connection/signalr.connection';\r\nexport { IConnectionOptions } from './lib/services/connection/connection.options';\r\nexport { ConnectionTransport } from './lib/services/connection/connection.transport';\r\nexport { ConnectionTransports } from './lib/services/connection/connection.transports';\r\nexport { SignalR } from './lib/services/signalr';\r\nexport { SignalRConfiguration } from './lib/services/signalr.configuration';\r\nexport { SignalRModule } from './lib/modules/signalr-module';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}