UNPKG

@addapptables/ng-web-socket

Version:
123 lines 9.59 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Injectable, Inject } from '@angular/core'; import { ROOT_ADAPTER } from '../tokens'; import { getMetadata } from '../decorators/socket.decorator'; import { withOptions } from '../life-cycle/socket-with-options'; export class ManagerSocketAdapter { /** * @param {?} adapter */ constructor(adapter) { this.adapter = adapter; this.connections = []; } /** * @param {?} serviceSockets * @return {?} */ addSockects(serviceSockets) { this.sockets = serviceSockets; this.sockets.forEach((/** * @param {?} socket * @return {?} */ socket => { /** @type {?} */ const metadata = (/** @type {?} */ (getMetadata(socket.constructor))); if (metadata.autoConnect) { this.connect(socket); } })); } /** * @param {?} serviceSocket * @return {?} */ connect(serviceSocket) { return tslib_1.__awaiter(this, void 0, void 0, /** @this {!ManagerSocketAdapter} */ function* () { /** @type {?} */ let metadata = (/** @type {?} */ (getMetadata(serviceSocket.constructor))); /** @type {?} */ const methods = getMetadata(serviceSocket); if (typeof serviceSocket[withOptions] === 'function') { metadata = Object.assign(metadata, serviceSocket[withOptions]()); } /** @type {?} */ const connection = yield this.adapter.connect(metadata.url, metadata.options); this.bindConnection(methods, connection, serviceSocket); /** @type {?} */ const events = methods && methods.events; this.bindEvents(connection, events, serviceSocket); }); } /** * @private * @param {?} methods * @param {?} connection * @param {?} serviceSocket * @return {?} */ bindConnection(methods, connection, serviceSocket) { if (methods && methods.connection) { serviceSocket[methods.connection] = connection; } this.connections.push(connection); } /** * @private * @param {?} connection * @param {?} events * @param {?} serviceSocket * @return {?} */ bindEvents(connection, events, serviceSocket) { if (events) { events.forEach((/** * @param {?} event * @return {?} */ event => { this.adapter.bindEvent(connection, event.name, serviceSocket[event.function].bind(serviceSocket)); })); } } /** * @return {?} */ ngOnDestroy() { this.connections.forEach((/** * @param {?} x * @return {?} */ x => this.adapter.disconnect(x))); } } ManagerSocketAdapter.decorators = [ { type: Injectable } ]; /** @nocollapse */ ManagerSocketAdapter.ctorParameters = () => [ { type: undefined, decorators: [{ type: Inject, args: [ROOT_ADAPTER,] }] } ]; if (false) { /** * @type {?} * @private */ ManagerSocketAdapter.prototype.sockets; /** * @type {?} * @private */ ManagerSocketAdapter.prototype.connections; /** * @type {?} * @private */ ManagerSocketAdapter.prototype.adapter; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlci1zb2NrZXQtYWRhcHRlcnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWRkYXBwdGFibGVzL25nLXdlYi1zb2NrZXQvIiwic291cmNlcyI6WyJsaWIvYWRhcHRlcnMvbWFuYWdlci1zb2NrZXQtYWRhcHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUc3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHaEUsTUFBTSxPQUFPLG9CQUFvQjs7OztJQU03QixZQUEwQyxPQUFxQjtRQUFyQixZQUFPLEdBQVAsT0FBTyxDQUFjO1FBRnZELGdCQUFXLEdBQVUsRUFBRSxDQUFDO0lBRW1DLENBQUM7Ozs7O0lBRXBFLFdBQVcsQ0FBQyxjQUFtQjtRQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU87Ozs7UUFBQyxNQUFNLENBQUMsRUFBRTs7a0JBQ3BCLFFBQVEsR0FBRyxtQkFBa0IsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBQTtZQUNsRSxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDeEI7UUFDTCxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7O0lBRUssT0FBTyxDQUFDLGFBQWtCOzs7Z0JBQ3hCLFFBQVEsR0FBRyxtQkFBa0IsV0FBVyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsRUFBQTs7a0JBQ2pFLE9BQU8sR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDO1lBQzFDLElBQUksT0FBTyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssVUFBVSxFQUFFO2dCQUNsRCxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNwRTs7a0JBQ0ssVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQzdFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQzs7a0JBQ2xELE1BQU0sR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU07WUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7S0FBQTs7Ozs7Ozs7SUFFTyxjQUFjLENBQUMsT0FBWSxFQUFFLFVBQWUsRUFBRSxhQUFrQjtRQUNwRSxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQy9CLGFBQWEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsVUFBVSxDQUFDO1NBQ2xEO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7Ozs7Ozs7SUFFTyxVQUFVLENBQUMsVUFBZSxFQUFFLE1BQTZCLEVBQUUsYUFBa0I7UUFDakYsSUFBSSxNQUFNLEVBQUU7WUFDUixNQUFNLENBQUMsT0FBTzs7OztZQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ3RHLENBQUMsRUFBQyxDQUFDO1NBQ047SUFDTCxDQUFDOzs7O0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQztJQUM5RCxDQUFDOzs7WUFoREosVUFBVTs7Ozs0Q0FPTSxNQUFNLFNBQUMsWUFBWTs7Ozs7OztJQUpoQyx1Q0FBdUI7Ozs7O0lBRXZCLDJDQUFnQzs7Ozs7SUFFcEIsdUNBQW1EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSVNvY2tldCB9IGZyb20gJy4uL2ludGVyZmFjZXMvc29ja2V0LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFJPT1RfQURBUFRFUiB9IGZyb20gJy4uL3Rva2Vucyc7XHJcbmltcG9ydCB7IGdldE1ldGFkYXRhIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy9zb2NrZXQuZGVjb3JhdG9yJztcclxuaW1wb3J0IHsgV2ViU29ja2V0T3B0aW9ucyB9IGZyb20gJy4uL21vZGVscy93ZWJzb2NrZXQtb3B0aW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7IFdlYlNvY2tldEV2ZW50TW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvd2Vic29ja2V0LWV2ZW50Lm1vZGVsJztcclxuaW1wb3J0IHsgd2l0aE9wdGlvbnMgfSBmcm9tICcuLi9saWZlLWN5Y2xlL3NvY2tldC13aXRoLW9wdGlvbnMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTWFuYWdlclNvY2tldEFkYXB0ZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICAgIHByaXZhdGUgc29ja2V0czogYW55W107XHJcblxyXG4gICAgcHJpdmF0ZSBjb25uZWN0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFJPT1RfQURBUFRFUikgcHJpdmF0ZSBhZGFwdGVyOiBJU29ja2V0PGFueT4pIHsgfVxyXG5cclxuICAgIGFkZFNvY2tlY3RzKHNlcnZpY2VTb2NrZXRzOiBhbnkpIHtcclxuICAgICAgICB0aGlzLnNvY2tldHMgPSBzZXJ2aWNlU29ja2V0cztcclxuICAgICAgICB0aGlzLnNvY2tldHMuZm9yRWFjaChzb2NrZXQgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IDxXZWJTb2NrZXRPcHRpb25zPmdldE1ldGFkYXRhKHNvY2tldC5jb25zdHJ1Y3Rvcik7XHJcbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5hdXRvQ29ubmVjdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0KHNvY2tldCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjb25uZWN0KHNlcnZpY2VTb2NrZXQ6IGFueSkge1xyXG4gICAgICAgIGxldCBtZXRhZGF0YSA9IDxXZWJTb2NrZXRPcHRpb25zPmdldE1ldGFkYXRhKHNlcnZpY2VTb2NrZXQuY29uc3RydWN0b3IpO1xyXG4gICAgICAgIGNvbnN0IG1ldGhvZHMgPSBnZXRNZXRhZGF0YShzZXJ2aWNlU29ja2V0KTtcclxuICAgICAgICBpZiAodHlwZW9mIHNlcnZpY2VTb2NrZXRbd2l0aE9wdGlvbnNdID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIG1ldGFkYXRhID0gT2JqZWN0LmFzc2lnbihtZXRhZGF0YSwgc2VydmljZVNvY2tldFt3aXRoT3B0aW9uc10oKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBhd2FpdCB0aGlzLmFkYXB0ZXIuY29ubmVjdChtZXRhZGF0YS51cmwsIG1ldGFkYXRhLm9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMuYmluZENvbm5lY3Rpb24obWV0aG9kcywgY29ubmVjdGlvbiwgc2VydmljZVNvY2tldCk7XHJcbiAgICAgICAgY29uc3QgZXZlbnRzID0gbWV0aG9kcyAmJiBtZXRob2RzLmV2ZW50cztcclxuICAgICAgICB0aGlzLmJpbmRFdmVudHMoY29ubmVjdGlvbiwgZXZlbnRzLCBzZXJ2aWNlU29ja2V0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGJpbmRDb25uZWN0aW9uKG1ldGhvZHM6IGFueSwgY29ubmVjdGlvbjogYW55LCBzZXJ2aWNlU29ja2V0OiBhbnkpIHtcclxuICAgICAgICBpZiAobWV0aG9kcyAmJiBtZXRob2RzLmNvbm5lY3Rpb24pIHtcclxuICAgICAgICAgICAgc2VydmljZVNvY2tldFttZXRob2RzLmNvbm5lY3Rpb25dID0gY29ubmVjdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9ucy5wdXNoKGNvbm5lY3Rpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYmluZEV2ZW50cyhjb25uZWN0aW9uOiBhbnksIGV2ZW50czogV2ViU29ja2V0RXZlbnRNb2RlbFtdLCBzZXJ2aWNlU29ja2V0OiBhbnkpIHtcclxuICAgICAgICBpZiAoZXZlbnRzKSB7XHJcbiAgICAgICAgICAgIGV2ZW50cy5mb3JFYWNoKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRhcHRlci5iaW5kRXZlbnQoY29ubmVjdGlvbiwgZXZlbnQubmFtZSwgc2VydmljZVNvY2tldFtldmVudC5mdW5jdGlvbl0uYmluZChzZXJ2aWNlU29ja2V0KSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25zLmZvckVhY2goeCA9PiB0aGlzLmFkYXB0ZXIuZGlzY29ubmVjdCh4KSk7XHJcbiAgICB9XHJcbn1cclxuIl19