homebridge-config-ui-x
Version:
A web based management, configuration and control platform for Homebridge
58 lines (57 loc) • 2.77 kB
JavaScript
;
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;