UNPKG

@decorators/server

Version:

node decorators - decorators for express library

67 lines 8.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SocketIoAdapter = void 0; const socket_io_1 = require("socket.io"); const sockets_1 = require("../sockets"); const helpers_1 = require("../sockets/helpers"); class SocketIoAdapter { constructor(app = new socket_io_1.Server()) { this.app = app; this.type = 'socket-io'; } attachServer(server) { this.server = server; } close() { this.app.close(); if (this.server.listening) { this.server.close(); } } disconnect(socket) { socket.disconnect(); } emit(socket, event, message) { socket.emit(event, message); } events(events) { for (const event of events) { const ns = this.app.of(event.url); if (event.type === helpers_1.EventType.CONNECTION) { ns.on(helpers_1.EventType.CONNECTION, socket => event.handler(socket, helpers_1.EventType.CONNECTION)); } if (event.type === helpers_1.EventType.DISCONNECT) { ns.on(helpers_1.EventType.CONNECTION, socket => { socket.on(event.type, (...args) => event.handler(socket, event.type, ...args)); }); } if (event.type === helpers_1.EventType.EVENT) { ns.on(helpers_1.EventType.CONNECTION, socket => { socket.on(event.event, (...args) => event.handler(socket, event.event, ...args)); }); } } } getParam(type, index, socket, event, ...args) { switch (type) { case sockets_1.ParameterType.ACK: return () => this.getAck(args); case sockets_1.ParameterType.EVENT: return () => event; case sockets_1.ParameterType.PARAM: return () => args[index]; case sockets_1.ParameterType.SERVER: return () => this.app; case sockets_1.ParameterType.SOCKET: return () => socket; default: return () => this.app; } } listen(options) { this.app.listen(this.server, options); } use(...args) { this.app.use.call(this.app, ...args); } getAck(args) { const ack = args[args.length - 1]; return typeof ack === 'function' ? ack : undefined; } } exports.SocketIoAdapter = SocketIoAdapter; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LWlvLWFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGxhdGZvcm1zL3NvY2tldC1pby9zb2NrZXQtaW8tYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5Q0FBNkQ7QUFFN0Qsd0NBQW9GO0FBQ3BGLGdEQUErQztBQUUvQyxNQUFhLGVBQWU7SUFJMUIsWUFBbUIsTUFBTSxJQUFJLGtCQUFjLEVBQUU7UUFBMUIsUUFBRyxHQUFILEdBQUcsQ0FBdUI7UUFIN0MsU0FBSSxHQUFHLFdBQVcsQ0FBQztJQUc4QixDQUFDO0lBRWxELFlBQVksQ0FBQyxNQUFjO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVqQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQWM7UUFDdkIsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLENBQUMsTUFBYyxFQUFFLEtBQWEsRUFBRSxPQUFnQjtRQUNsRCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQXNCO1FBQzNCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFO1lBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVsQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQVMsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3ZDLEVBQUUsQ0FBQyxFQUFFLENBQUMsbUJBQVMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxtQkFBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7YUFDcEY7WUFFRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQVMsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3ZDLEVBQUUsQ0FBQyxFQUFFLENBQUMsbUJBQVMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ25DLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDakYsQ0FBQyxDQUFDLENBQUM7YUFDSjtZQUVELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxtQkFBUyxDQUFDLEtBQUssRUFBRTtnQkFDbEMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxtQkFBUyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsRUFBRTtvQkFDbkMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNuRixDQUFDLENBQUMsQ0FBQzthQUNKO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQW1CLEVBQUUsS0FBYSxFQUFFLE1BQWMsRUFBRSxLQUFhLEVBQUUsR0FBRyxJQUFXO1FBQ3hGLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyx1QkFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RCxLQUFLLHVCQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDN0MsS0FBSyx1QkFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25ELEtBQUssdUJBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDakQsS0FBSyx1QkFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQy9DLE9BQU8sQ0FBQyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsT0FBZ0I7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQUcsSUFBVztRQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxNQUFNLENBQUMsSUFBVztRQUN4QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVsQyxPQUFPLE9BQU8sR0FBRyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDckQsQ0FBQztDQUNGO0FBeEVELDBDQXdFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlcnZlciB9IGZyb20gJ2h0dHAnO1xuaW1wb3J0IHsgU2VydmVyIGFzIFNvY2tldElvU2VydmVyLCBTb2NrZXQgfSBmcm9tICdzb2NrZXQuaW8nO1xuXG5pbXBvcnQgeyBBZGFwdGVyRXZlbnQsIFBhcmFtZXRlclR5cGUsIFNvY2tldHNBcHBsaWNhdGlvbkFkYXB0ZXIgfSBmcm9tICcuLi9zb2NrZXRzJztcbmltcG9ydCB7IEV2ZW50VHlwZSB9IGZyb20gJy4uL3NvY2tldHMvaGVscGVycyc7XG5cbmV4cG9ydCBjbGFzcyBTb2NrZXRJb0FkYXB0ZXIgaW1wbGVtZW50cyBTb2NrZXRzQXBwbGljYXRpb25BZGFwdGVyIHtcbiAgdHlwZSA9ICdzb2NrZXQtaW8nO1xuICBwcml2YXRlIHNlcnZlcjogU2VydmVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBhcHAgPSBuZXcgU29ja2V0SW9TZXJ2ZXIoKSkgeyB9XG5cbiAgYXR0YWNoU2VydmVyKHNlcnZlcjogU2VydmVyKSB7XG4gICAgdGhpcy5zZXJ2ZXIgPSBzZXJ2ZXI7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmFwcC5jbG9zZSgpO1xuXG4gICAgaWYgKHRoaXMuc2VydmVyLmxpc3RlbmluZykge1xuICAgICAgdGhpcy5zZXJ2ZXIuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBkaXNjb25uZWN0KHNvY2tldDogU29ja2V0KSB7XG4gICAgc29ja2V0LmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIGVtaXQoc29ja2V0OiBTb2NrZXQsIGV2ZW50OiBzdHJpbmcsIG1lc3NhZ2U6IHVua25vd24pIHtcbiAgICBzb2NrZXQuZW1pdChldmVudCwgbWVzc2FnZSk7XG4gIH1cblxuICBldmVudHMoZXZlbnRzOiBBZGFwdGVyRXZlbnRbXSkge1xuICAgIGZvciAoY29uc3QgZXZlbnQgb2YgZXZlbnRzKSB7XG4gICAgICBjb25zdCBucyA9IHRoaXMuYXBwLm9mKGV2ZW50LnVybCk7XG5cbiAgICAgIGlmIChldmVudC50eXBlID09PSBFdmVudFR5cGUuQ09OTkVDVElPTikge1xuICAgICAgICBucy5vbihFdmVudFR5cGUuQ09OTkVDVElPTiwgc29ja2V0ID0+IGV2ZW50LmhhbmRsZXIoc29ja2V0LCBFdmVudFR5cGUuQ09OTkVDVElPTikpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gRXZlbnRUeXBlLkRJU0NPTk5FQ1QpIHtcbiAgICAgICAgbnMub24oRXZlbnRUeXBlLkNPTk5FQ1RJT04sIHNvY2tldCA9PiB7XG4gICAgICAgICAgc29ja2V0Lm9uKGV2ZW50LnR5cGUsICguLi5hcmdzKSA9PiBldmVudC5oYW5kbGVyKHNvY2tldCwgZXZlbnQudHlwZSwgLi4uYXJncykpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEV2ZW50VHlwZS5FVkVOVCkge1xuICAgICAgICBucy5vbihFdmVudFR5cGUuQ09OTkVDVElPTiwgc29ja2V0ID0+IHtcbiAgICAgICAgICBzb2NrZXQub24oZXZlbnQuZXZlbnQsICguLi5hcmdzKSA9PiBldmVudC5oYW5kbGVyKHNvY2tldCwgZXZlbnQuZXZlbnQsIC4uLmFyZ3MpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0UGFyYW0odHlwZTogUGFyYW1ldGVyVHlwZSwgaW5kZXg6IG51bWJlciwgc29ja2V0OiBTb2NrZXQsIGV2ZW50OiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFBhcmFtZXRlclR5cGUuQUNLOiByZXR1cm4gKCkgPT4gdGhpcy5nZXRBY2soYXJncyk7XG4gICAgICBjYXNlIFBhcmFtZXRlclR5cGUuRVZFTlQ6IHJldHVybiAoKSA9PiBldmVudDtcbiAgICAgIGNhc2UgUGFyYW1ldGVyVHlwZS5QQVJBTTogcmV0dXJuICgpID0+IGFyZ3NbaW5kZXhdO1xuICAgICAgY2FzZSBQYXJhbWV0ZXJUeXBlLlNFUlZFUjogcmV0dXJuICgpID0+IHRoaXMuYXBwO1xuICAgICAgY2FzZSBQYXJhbWV0ZXJUeXBlLlNPQ0tFVDogcmV0dXJuICgpID0+IHNvY2tldDtcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAoKSA9PiB0aGlzLmFwcDtcbiAgICB9XG4gIH1cblxuICBsaXN0ZW4ob3B0aW9ucz86IG9iamVjdCkge1xuICAgIHRoaXMuYXBwLmxpc3Rlbih0aGlzLnNlcnZlciwgb3B0aW9ucyk7XG4gIH1cblxuICB1c2UoLi4uYXJnczogYW55W10pIHtcbiAgICB0aGlzLmFwcC51c2UuY2FsbCh0aGlzLmFwcCwgLi4uYXJncyk7XG4gIH1cblxuICBwcml2YXRlIGdldEFjayhhcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGFjayA9IGFyZ3NbYXJncy5sZW5ndGggLSAxXTtcblxuICAgIHJldHVybiB0eXBlb2YgYWNrID09PSAnZnVuY3Rpb24nID8gYWNrIDogdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=