@tsclean/core
Version:
Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.
63 lines • 10.1 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 });
exports.SocketServerProvider = void 0;
const server_and_event_streams_factory_1 = require("./factories/server-and-event-streams-factory");
const shared_utils_1 = require("../utils/shared.utils");
class SocketServerProvider {
constructor(socketsContainer, applicationConfig) {
this.socketsContainer = socketsContainer;
this.applicationConfig = applicationConfig;
}
scanForSocketServer(options, port) {
const serverAndStreamsHost = this.socketsContainer.getOneByConfig({
port,
path: options.path,
});
if (serverAndStreamsHost && options.namespace) {
return this.decorateWithNamespace(options, port, serverAndStreamsHost.server);
}
return serverAndStreamsHost
? serverAndStreamsHost
: this.createSocketServer(options, port);
}
createSocketServer(options, port) {
const adapter = this.applicationConfig.getIoAdapter();
const _a = options, { namespace, server } = _a, partialOptions = __rest(_a, ["namespace", "server"]);
const ioServer = adapter.create(port, partialOptions);
const serverAndEventStreamsHost = server_and_event_streams_factory_1.ServerAndEventStreamsFactory.create(ioServer);
this.socketsContainer.addOne({ port, path: options.path }, serverAndEventStreamsHost);
if (!namespace) {
return serverAndEventStreamsHost;
}
return this.decorateWithNamespace(options, port, ioServer);
}
decorateWithNamespace(options, port, targetServer) {
const namespaceServer = this.getServerOfNamespace(options, port, targetServer);
const serverAndEventStreamsHost = server_and_event_streams_factory_1.ServerAndEventStreamsFactory.create(namespaceServer);
this.socketsContainer.addOne({ port, path: options.path, namespace: options.namespace }, serverAndEventStreamsHost);
return serverAndEventStreamsHost;
}
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 (!(0, shared_utils_1.isString)(namespace)) {
return namespace;
}
return (0, shared_utils_1.addLeadingSlash)(namespace);
}
}
exports.SocketServerProvider = SocketServerProvider;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LXNlcnZlci1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93ZWJzb2NrZXRzL3NvY2tldC1zZXJ2ZXItcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFHQSxtR0FBNEY7QUFDNUYsd0RBQWtFO0FBR2xFLE1BQWEsb0JBQW9CO0lBQzdCLFlBQ21CLGdCQUFrQyxFQUNsQyxpQkFBb0M7UUFEcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBQ3BELENBQUM7SUFFRyxtQkFBbUIsQ0FDeEIsT0FBVSxFQUNWLElBQVk7UUFFWixNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7WUFDaEUsSUFBSTtZQUNKLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFDSCxJQUFJLG9CQUFvQixJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM5QyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FDL0IsT0FBTyxFQUNQLElBQUksRUFDSixvQkFBb0IsQ0FBQyxNQUFNLENBQzVCLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxvQkFBb0I7WUFDekIsQ0FBQyxDQUFDLG9CQUFvQjtZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sa0JBQWtCLENBQ3hCLE9BQVUsRUFDVixJQUFZO1FBRVosTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RELE1BQU0sS0FBMkMsT0FHaEQsRUFISyxFQUFFLFNBQVMsRUFBRSxNQUFNLE9BR3hCLEVBSDZCLGNBQWMsY0FBdEMsdUJBQXdDLENBRzdDLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN0RCxNQUFNLHlCQUF5QixHQUM3QiwrREFBNEIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FDMUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFDNUIseUJBQXlCLENBQzFCLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixPQUFPLHlCQUF5QixDQUFDO1FBQ25DLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTyxxQkFBcUIsQ0FDM0IsT0FBVSxFQUNWLElBQVksRUFDWixZQUFxQjtRQUVyQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQy9DLE9BQU8sRUFDUCxJQUFJLEVBQ0osWUFBWSxDQUNiLENBQUM7UUFDRixNQUFNLHlCQUF5QixHQUM3QiwrREFBNEIsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FDMUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFDMUQseUJBQXlCLENBQzFCLENBQUM7UUFDRixPQUFPLHlCQUF5QixDQUFDO0lBQ25DLENBQUM7SUFFTyxvQkFBb0IsQ0FHMUIsT0FBaUIsRUFBRSxJQUFZLEVBQUUsTUFBZTtRQUNoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksa0NBQ3JCLE9BQU8sS0FDVixTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLEVBQzFELE1BQU0sSUFDTixDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLFNBQTBCO1FBQ2xELElBQUksQ0FBQyxJQUFBLHVCQUFRLEVBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxJQUFBLDhCQUFlLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBdEZILG9EQXNGRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uQ29uZmlnIH0gZnJvbSBcIi4uL2FwcFwiO1xuaW1wb3J0IHsgR2F0ZXdheU1ldGFkYXRhIH0gZnJvbSBcIi4uL2NvbnRyYWN0cy9nYXRld2F5LW1ldGFkYXRhXCI7XG5pbXBvcnQgeyBTZXJ2ZXJBbmRFdmVudFN0cmVhbXNIb3N0IH0gZnJvbSBcIi4uL2NvbnRyYWN0cy9zZXJ2ZXItYW5kLWV2ZW50LXN0cmVhbXMtaG9zdFwiO1xuaW1wb3J0IHsgU2VydmVyQW5kRXZlbnRTdHJlYW1zRmFjdG9yeSB9IGZyb20gXCIuL2ZhY3Rvcmllcy9zZXJ2ZXItYW5kLWV2ZW50LXN0cmVhbXMtZmFjdG9yeVwiO1xuaW1wb3J0IHsgYWRkTGVhZGluZ1NsYXNoLCBpc1N0cmluZyB9IGZyb20gXCIuLi91dGlscy9zaGFyZWQudXRpbHNcIjtcbmltcG9ydCB7IFNvY2tldHNDb250YWluZXIgfSBmcm9tIFwiLi9zb2NrZXRzLWNvbnRhaW5lclwiO1xuXG5leHBvcnQgY2xhc3MgU29ja2V0U2VydmVyUHJvdmlkZXIge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBzb2NrZXRzQ29udGFpbmVyOiBTb2NrZXRzQ29udGFpbmVyLFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBhcHBsaWNhdGlvbkNvbmZpZzogQXBwbGljYXRpb25Db25maWcsXG4gICAgKSB7fVxuICBcbiAgICBwdWJsaWMgc2NhbkZvclNvY2tldFNlcnZlcjxUIGV4dGVuZHMgR2F0ZXdheU1ldGFkYXRhID0gYW55PihcbiAgICAgIG9wdGlvbnM6IFQsXG4gICAgICBwb3J0OiBudW1iZXIsXG4gICAgKTogU2VydmVyQW5kRXZlbnRTdHJlYW1zSG9zdCB7XG4gICAgICBjb25zdCBzZXJ2ZXJBbmRTdHJlYW1zSG9zdCA9IHRoaXMuc29ja2V0c0NvbnRhaW5lci5nZXRPbmVCeUNvbmZpZyh7XG4gICAgICAgIHBvcnQsXG4gICAgICAgIHBhdGg6IG9wdGlvbnMucGF0aCxcbiAgICAgIH0pO1xuICAgICAgaWYgKHNlcnZlckFuZFN0cmVhbXNIb3N0ICYmIG9wdGlvbnMubmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlY29yYXRlV2l0aE5hbWVzcGFjZShcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIHBvcnQsXG4gICAgICAgICAgc2VydmVyQW5kU3RyZWFtc0hvc3Quc2VydmVyLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNlcnZlckFuZFN0cmVhbXNIb3N0XG4gICAgICAgID8gc2VydmVyQW5kU3RyZWFtc0hvc3RcbiAgICAgICAgOiB0aGlzLmNyZWF0ZVNvY2tldFNlcnZlcihvcHRpb25zLCBwb3J0KTtcbiAgICB9XG4gIFxuICAgIHByaXZhdGUgY3JlYXRlU29ja2V0U2VydmVyPFQgZXh0ZW5kcyBHYXRld2F5TWV0YWRhdGE+KFxuICAgICAgb3B0aW9uczogVCxcbiAgICAgIHBvcnQ6IG51bWJlcixcbiAgICApOiBTZXJ2ZXJBbmRFdmVudFN0cmVhbXNIb3N0IHtcbiAgICAgIGNvbnN0IGFkYXB0ZXIgPSB0aGlzLmFwcGxpY2F0aW9uQ29uZmlnLmdldElvQWRhcHRlcigpO1xuICAgICAgY29uc3QgeyBuYW1lc3BhY2UsIHNlcnZlciwgLi4ucGFydGlhbE9wdGlvbnMgfSA9IG9wdGlvbnMgYXMgUmVjb3JkPFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIHVua25vd25cbiAgICAgID47XG4gICAgICBjb25zdCBpb1NlcnZlciA9IGFkYXB0ZXIuY3JlYXRlKHBvcnQsIHBhcnRpYWxPcHRpb25zKTtcbiAgICAgIGNvbnN0IHNlcnZlckFuZEV2ZW50U3RyZWFtc0hvc3QgPVxuICAgICAgICBTZXJ2ZXJBbmRFdmVudFN0cmVhbXNGYWN0b3J5LmNyZWF0ZShpb1NlcnZlcik7XG4gIFxuICAgICAgdGhpcy5zb2NrZXRzQ29udGFpbmVyLmFkZE9uZShcbiAgICAgICAgeyBwb3J0LCBwYXRoOiBvcHRpb25zLnBhdGggfSxcbiAgICAgICAgc2VydmVyQW5kRXZlbnRTdHJlYW1zSG9zdCxcbiAgICAgICk7XG4gICAgICBpZiAoIW5hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm4gc2VydmVyQW5kRXZlbnRTdHJlYW1zSG9zdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmRlY29yYXRlV2l0aE5hbWVzcGFjZShvcHRpb25zLCBwb3J0LCBpb1NlcnZlcik7XG4gICAgfVxuICBcbiAgICBwcml2YXRlIGRlY29yYXRlV2l0aE5hbWVzcGFjZTxUIGV4dGVuZHMgR2F0ZXdheU1ldGFkYXRhID0gYW55PihcbiAgICAgIG9wdGlvbnM6IFQsXG4gICAgICBwb3J0OiBudW1iZXIsXG4gICAgICB0YXJnZXRTZXJ2ZXI6IHVua25vd24sXG4gICAgKTogU2VydmVyQW5kRXZlbnRTdHJlYW1zSG9zdCB7XG4gICAgICBjb25zdCBuYW1lc3BhY2VTZXJ2ZXIgPSB0aGlzLmdldFNlcnZlck9mTmFtZXNwYWNlKFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBwb3J0LFxuICAgICAgICB0YXJnZXRTZXJ2ZXIsXG4gICAgICApO1xuICAgICAgY29uc3Qgc2VydmVyQW5kRXZlbnRTdHJlYW1zSG9zdCA9XG4gICAgICAgIFNlcnZlckFuZEV2ZW50U3RyZWFtc0ZhY3RvcnkuY3JlYXRlKG5hbWVzcGFjZVNlcnZlcik7XG4gICAgICB0aGlzLnNvY2tldHNDb250YWluZXIuYWRkT25lKFxuICAgICAgICB7IHBvcnQsIHBhdGg6IG9wdGlvbnMucGF0aCwgbmFtZXNwYWNlOiBvcHRpb25zLm5hbWVzcGFjZSB9LFxuICAgICAgICBzZXJ2ZXJBbmRFdmVudFN0cmVhbXNIb3N0LFxuICAgICAgKTtcbiAgICAgIHJldHVybiBzZXJ2ZXJBbmRFdmVudFN0cmVhbXNIb3N0O1xuICAgIH1cbiAgXG4gICAgcHJpdmF0ZSBnZXRTZXJ2ZXJPZk5hbWVzcGFjZTxcbiAgICAgIFRPcHRpb25zIGV4dGVuZHMgR2F0ZXdheU1ldGFkYXRhID0gYW55LFxuICAgICAgVFNlcnZlciA9IGFueSxcbiAgICA+KG9wdGlvbnM6IFRPcHRpb25zLCBwb3J0OiBudW1iZXIsIHNlcnZlcjogVFNlcnZlcikge1xuICAgICAgY29uc3QgYWRhcHRlciA9IHRoaXMuYXBwbGljYXRpb25Db25maWcuZ2V0SW9BZGFwdGVyKCk7XG4gICAgICByZXR1cm4gYWRhcHRlci5jcmVhdGUocG9ydCwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBuYW1lc3BhY2U6IHRoaXMudmFsaWRhdGVOYW1lc3BhY2Uob3B0aW9ucy5uYW1lc3BhY2UgfHwgJycpLFxuICAgICAgICBzZXJ2ZXIsXG4gICAgICB9KTtcbiAgICB9XG4gIFxuICAgIHByaXZhdGUgdmFsaWRhdGVOYW1lc3BhY2UobmFtZXNwYWNlOiBzdHJpbmcgfCBSZWdFeHApOiBzdHJpbmcgfCBSZWdFeHAge1xuICAgICAgaWYgKCFpc1N0cmluZyhuYW1lc3BhY2UpKSB7XG4gICAgICAgIHJldHVybiBuYW1lc3BhY2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWRkTGVhZGluZ1NsYXNoKG5hbWVzcGFjZSk7XG4gICAgfVxuICB9Il19