UNPKG

@addapptables/ng-web-socket

Version:
414 lines (401 loc) 12.6 kB
import { InjectionToken, Injectable, Inject, NgModule } from '@angular/core'; import { __spread, __awaiter, __generator } from 'tslib'; import 'reflect-metadata'; /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var ROOT_GATEWAY = new InjectionToken('addapptables/websocket: Root WebSocket'); /** @type {?} */ var ROOT_ADAPTER = new InjectionToken('addapptables/websocket: Root Adapter'); /** @type {?} */ var FEATURE_GATEWAY = new InjectionToken('addapptables/websocket: Feature WebSocket'); /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var METADATA_KEY = '__@addapptables/websocket__'; /** @type {?} */ var getMetadata = (/** * @param {?} target * @return {?} */ function (target) { return Reflect.getMetadata(METADATA_KEY, target); }); /** * @template T * @param {?=} webSocketOptions * @return {?} */ function WebSocketGateway(webSocketOptions) { if (webSocketOptions === void 0) { webSocketOptions = {}; } return (/** * @param {?} target * @return {?} */ function (target) { /** @type {?} */ var metadata = getMetadata(target) || {}; Reflect.defineMetadata(METADATA_KEY, Object.assign(metadata, webSocketOptions), target); }); } /** * @param {?} event * @return {?} */ function Subscribe(event) { return (/** * @param {?} target * @param {?} propertyKey * @return {?} */ function (target, propertyKey) { /** @type {?} */ var metadata = getMetadata(target) || {}; /** @type {?} */ var events = [{ name: event, function: propertyKey }]; if (metadata.events) { events.push.apply(events, __spread(metadata.events)); } Reflect.defineMetadata(METADATA_KEY, Object.assign(metadata, { events: events }), target); }); } /** * @return {?} */ function WebSocketServer() { return (/** * @param {?} target * @param {?} propertyKey * @return {?} */ function (target, propertyKey) { /** @type {?} */ var metadata = getMetadata(target) || {}; Reflect.defineMetadata(METADATA_KEY, Object.assign(metadata, { connection: propertyKey }), target); }); } /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @record * @template T */ function ISocketWithOptions() { } if (false) { /** * @return {?} */ ISocketWithOptions.prototype.withOptions = function () { }; } /** @type {?} */ var withOptions = 'withOptions'; /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var ManagerSocketAdapter = /** @class */ (function () { function ManagerSocketAdapter(adapter) { this.adapter = adapter; this.connections = []; } /** * @param {?} serviceSockets * @return {?} */ ManagerSocketAdapter.prototype.addSockects = /** * @param {?} serviceSockets * @return {?} */ function (serviceSockets) { var _this = this; this.sockets = serviceSockets; this.sockets.forEach((/** * @param {?} socket * @return {?} */ function (socket) { /** @type {?} */ var metadata = (/** @type {?} */ (getMetadata(socket.constructor))); if (metadata.autoConnect) { _this.connect(socket); } })); }; /** * @param {?} serviceSocket * @return {?} */ ManagerSocketAdapter.prototype.connect = /** * @param {?} serviceSocket * @return {?} */ function (serviceSocket) { return __awaiter(this, void 0, void 0, function () { var metadata, methods, connection, events; return __generator(this, function (_a) { switch (_a.label) { case 0: metadata = (/** @type {?} */ (getMetadata(serviceSocket.constructor))); methods = getMetadata(serviceSocket); if (typeof serviceSocket[withOptions] === 'function') { metadata = Object.assign(metadata, serviceSocket[withOptions]()); } return [4 /*yield*/, this.adapter.connect(metadata.url, metadata.options)]; case 1: connection = _a.sent(); this.bindConnection(methods, connection, serviceSocket); events = methods && methods.events; this.bindEvents(connection, events, serviceSocket); return [2 /*return*/]; } }); }); }; /** * @private * @param {?} methods * @param {?} connection * @param {?} serviceSocket * @return {?} */ ManagerSocketAdapter.prototype.bindConnection = /** * @private * @param {?} methods * @param {?} connection * @param {?} serviceSocket * @return {?} */ function (methods, connection, serviceSocket) { if (methods && methods.connection) { serviceSocket[methods.connection] = connection; } this.connections.push(connection); }; /** * @private * @param {?} connection * @param {?} events * @param {?} serviceSocket * @return {?} */ ManagerSocketAdapter.prototype.bindEvents = /** * @private * @param {?} connection * @param {?} events * @param {?} serviceSocket * @return {?} */ function (connection, events, serviceSocket) { var _this = this; if (events) { events.forEach((/** * @param {?} event * @return {?} */ function (event) { _this.adapter.bindEvent(connection, event.name, serviceSocket[event.function].bind(serviceSocket)); })); } }; /** * @return {?} */ ManagerSocketAdapter.prototype.ngOnDestroy = /** * @return {?} */ function () { var _this = this; this.connections.forEach((/** * @param {?} x * @return {?} */ function (x) { return _this.adapter.disconnect(x); })); }; ManagerSocketAdapter.decorators = [ { type: Injectable } ]; /** @nocollapse */ ManagerSocketAdapter.ctorParameters = function () { return [ { type: undefined, decorators: [{ type: Inject, args: [ROOT_ADAPTER,] }] } ]; }; return ManagerSocketAdapter; }()); if (false) { /** * @type {?} * @private */ ManagerSocketAdapter.prototype.sockets; /** * @type {?} * @private */ ManagerSocketAdapter.prototype.connections; /** * @type {?} * @private */ ManagerSocketAdapter.prototype.adapter; } /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var SocketRootModule = /** @class */ (function () { function SocketRootModule(managerSocketAdapter, sockets) { managerSocketAdapter.addSockects(sockets); } SocketRootModule.decorators = [ { type: NgModule } ]; /** @nocollapse */ SocketRootModule.ctorParameters = function () { return [ { type: ManagerSocketAdapter }, { type: Array, decorators: [{ type: Inject, args: [ROOT_GATEWAY,] }] } ]; }; return SocketRootModule; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var SocketFeatureModule = /** @class */ (function () { function SocketFeatureModule(managerSocketAdapter, sockets) { managerSocketAdapter.addSockects(sockets); } SocketFeatureModule.decorators = [ { type: NgModule } ]; /** @nocollapse */ SocketFeatureModule.ctorParameters = function () { return [ { type: ManagerSocketAdapter }, { type: Array, decorators: [{ type: Inject, args: [FEATURE_GATEWAY,] }] } ]; }; return SocketFeatureModule; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var NgWebSocketModule = /** @class */ (function () { function NgWebSocketModule() { } /** * @param {?} adapter * @param {?} webSockets * @return {?} */ NgWebSocketModule.forRoot = /** * @param {?} adapter * @param {?} webSockets * @return {?} */ function (adapter, webSockets) { return { ngModule: SocketRootModule, providers: [ ManagerSocketAdapter, webSockets, adapter, { provide: ROOT_ADAPTER, useExisting: adapter }, { provide: ROOT_GATEWAY, deps: webSockets, useFactory: createSourceInstances, }, ], }; }; /** * @param {?} webSockets * @return {?} */ NgWebSocketModule.forFeature = /** * @param {?} webSockets * @return {?} */ function (webSockets) { return { ngModule: SocketFeatureModule, providers: [ webSockets, { provide: FEATURE_GATEWAY, multi: true, deps: webSockets, useFactory: createSourceInstances, }, ], }; }; NgWebSocketModule.decorators = [ { type: NgModule } ]; return NgWebSocketModule; }()); /** * @param {...?} instances * @return {?} */ function createSourceInstances() { var instances = []; for (var _i = 0; _i < arguments.length; _i++) { instances[_i] = arguments[_i]; } return instances; } /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var WebSocketEventModel = /** @class */ (function () { function WebSocketEventModel() { } return WebSocketEventModel; }()); if (false) { /** @type {?} */ WebSocketEventModel.prototype.name; /** @type {?} */ WebSocketEventModel.prototype.function; } /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @template T */ var /** * @template T */ WebSocketOptions = /** @class */ (function () { function WebSocketOptions() { } return WebSocketOptions; }()); if (false) { /** @type {?} */ WebSocketOptions.prototype.autoConnect; /** @type {?} */ WebSocketOptions.prototype.url; /** @type {?} */ WebSocketOptions.prototype.options; } /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export { ManagerSocketAdapter, NgWebSocketModule, SocketFeatureModule, SocketRootModule, Subscribe, WebSocketEventModel, WebSocketGateway, WebSocketOptions, WebSocketServer, createSourceInstances as ɵa, ROOT_GATEWAY as ɵb, ROOT_ADAPTER as ɵc, FEATURE_GATEWAY as ɵd }; //# sourceMappingURL=addapptables-ng-web-socket.js.map