Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

sentry / @nestjs/websockets   js

Repository URL to install this package:

Version: 7.0.10 

/ socket-server-provider.js

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
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) {
        // eslint-disable-next-line @typescript-eslint/no-unused-vars
        const _a = options, { namespace, server } = _a, partialOptions = tslib_1.__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;