UNPKG

ngx-actioncable

Version:

Library for real-time communication over websockets with Rails ActionCable.

1 lines 8.93 kB
{"version":3,"file":"ngx-actioncable.mjs","sources":["../../src/ngx-action-cable/ngx-action-cable-configuration.ts","../../src/ngx-action-cable/ngx-action-cable-broadcaster.ts","../../src/ngx-action-cable/ngx-action-cable.service.ts","../../src/ngx-action-cable/ngx-action-cable.module.ts","../../src/ngx-actioncable.ts"],"sourcesContent":["export class NgxActionCableConfiguration {\n \n urls = new Map<string, string>();\n\n constructor(key: string, url: string) {\n this.urls.set(key, url);\n }\n \n \n addUrl(key: string, url: string) {\n this.urls.set(key, url);\n }\n\n}\n","import { map, filter } from 'rxjs/operators';\nimport { Observable, Subject } from 'rxjs';\n\ninterface BroadcastEvent {\n key: any;\n data?: any;\n}\n\nexport class NgxActionCableBroadcaster {\n private _eventBus = new Subject<BroadcastEvent>();\n\n broadcast(key: any, data?: any) {\n this._eventBus.next({key, data});\n }\n\n on<T>(key: any): Observable<T> {\n return this._eventBus.asObservable()\n .pipe(\n filter(event => event.key === key),\n map(event => <T>event.data)\n );\n }\n}\n","import { NgxActionCableConfiguration } from './ngx-action-cable-configuration';\nimport { Injectable, Optional } from '@angular/core';\nimport { NgxActionCableBroadcaster } from './ngx-action-cable-broadcaster';\nimport * as ActionCable from 'actioncable';\n\n@Injectable()\nexport class NgxActionCableService {\n\n\tcables = new Map<string, any>();\n\tchannels = {};\n\n\tconstructor(@Optional() public readonly configuration: NgxActionCableConfiguration) {\n\n\t\t// TODO: remove this workaround -> createWebSocketURL is undefined exception \n\t\t// in action_cable.js\n\t\tlet w: any = window;\n\t\tw.createWebSocketURL = ActionCable.createWebSocketURL;\n\n\t\tconfiguration.urls.forEach((url: string, key: string) => {\n\t\t\tlet cable = this.connect(key, url);\n\t\t\tthis.cables.set(key, cable);\n\t\t});\n\t}\n\n\n\n\tsubscribe(key: string, channel: any, params = {}): NgxActionCableBroadcaster {\n\t\tlet channelName = this.getChannelName(channel, params);\n\n\t\tlet subscriptionParams = Object.assign({ channel: channel }, params);\n\t\tlet broadcaster = new NgxActionCableBroadcaster();\n\n\t\tlet cable = this.getCabel(key);\n\t\tlet subscription = cable.subscriptions.create(subscriptionParams, {\n\t\t\treceived: (data) => {\n\t\t\t\tbroadcaster.broadcast(data.action, data);\n\t\t\t}\n\t\t});\n\n\t\tthis.channels[channelName] = {\n\t\t\tsubscription: subscription,\n\t\t\tbroadcaster: broadcaster\n\t\t};\n\t\treturn broadcaster;\n\t}\n\n\tunsubscribe(key: string, channel: string, params = {}): void {\n\t\tlet channelName = this.getChannelName(channel, params);\n\n\t\tlet cable = this.getCabel(key);\n\t\tif (!this.channels[channelName]) {\n\t\t\tconsole.info(`No Subscription for Channel ${channelName} found!`);\n\t\t} else {\n\t\t\tlet subscription = this.channels[channelName].subscription;\n\t\t\tcable.subscriptions.remove(subscription);\n\t\t}\n\t}\n\n\tperform(channel: string, params = {}, action: string, data: any): void {\n\t\tlet channelName = this.getChannelName(channel, params);\n\t\tthis.channels[channelName].subscription.perform(action, data);\n\t}\n\n\tconnect(key, url: string): any {\n\t\tlet cable = ActionCable.createConsumer(url);\n\t\tcable.connect();\n\t\treturn cable;\n\t}\n\n\tdisconnect(key: string): void {\n\t\tlet cable = this.getCabel(key);\n\t\tcable.disconnect();\n\t}\n\n\tprivate getChannelName(channel: string, params = {}): string {\n\t\tlet channelName = (typeof (channel) === 'object') ? channel['channel'] : channel;\n\t\tchannelName += `_${JSON.stringify(params)}`; // also add params to unique channel name\n\t\treturn channelName;\n\t}\n\n\tprivate getCabel(key: string): any {\n\t\tlet cable = this.cables.get(key);\n\t\tif (!cable) {\n\t\t\tthrow Error(`No cable instance for key ${key} found!`);\n\t\t}\n\t\treturn cable;\n\t}\n\n}\n","import { NgxActionCableConfiguration } from './ngx-action-cable-configuration';\nimport { NgxActionCableService } from './ngx-action-cable.service';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\n@NgModule({\n imports: [ ],\n providers: [\n NgxActionCableService\n ]\n})\nexport class NgxActionCableModule {\n\tpublic static forConfig(configurationFactory: () => NgxActionCableConfiguration): ModuleWithProviders<NgxActionCableModule> {\n\t\treturn {\n\t\t\tngModule: NgxActionCableModule,\n\t\t\tproviders: [{ provide: NgxActionCableConfiguration, useFactory: configurationFactory }]\n\t\t};\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.NgxActionCableConfiguration"],"mappings":"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"}