UNPKG

homebridge-config-ui-x

Version:

A web based management, configuration and control platform for Homebridge

58 lines (57 loc) 2.77 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); const shared_utils_1 = require("@nestjs/common/utils/shared.utils"); const util_1 = require("util"); const socket_events_host_factory_1 = require("./socket-events-host-factory"); class SocketServerProvider { constructor(socketsContainer, applicationConfig) { this.socketsContainer = socketsContainer; this.applicationConfig = applicationConfig; } scanForSocketServer(options, port) { const socketEventsHost = this.socketsContainer.getSocketEventsHostByPort(port); return socketEventsHost ? this.createWithNamespace(options, port, socketEventsHost) : this.createSocketServer(options, port); } createSocketServer(options, port) { const _a = options, { namespace, server } = _a, partialOptions = __rest(_a, ["namespace", "server"]); const adapter = this.applicationConfig.getIoAdapter(); const ioServer = adapter.create(port, partialOptions); const observableSocket = socket_events_host_factory_1.SocketEventsHostFactory.create(ioServer); this.socketsContainer.addSocketEventsHost(null, port, observableSocket); return this.createWithNamespace(options, port, observableSocket); } createWithNamespace(options, port, socketEventsHost) { const { namespace } = options; if (!namespace) { return socketEventsHost; } const namespaceServer = this.getServerOfNamespace(options, port, socketEventsHost.server); const eventsHost = socket_events_host_factory_1.SocketEventsHostFactory.create(namespaceServer); this.socketsContainer.addSocketEventsHost(namespace, port, eventsHost); return eventsHost; } getServerOfNamespace(options, port, server) { const adapter = this.applicationConfig.getIoAdapter(); return adapter.create(port, Object.assign(Object.assign({}, options), { namespace: this.validateNamespace(options.namespace || ''), server })); } validateNamespace(namespace) { if (!util_1.isString(namespace)) { return namespace; } return shared_utils_1.validatePath(namespace); } } exports.SocketServerProvider = SocketServerProvider;