UNPKG

@loopback/socketio

Version:

LoopBack's WebSocket server based on socket.io

76 lines 2.82 kB
"use strict"; // Copyright IBM Corp. and LoopBack contributors 2019,2020. All Rights Reserved. // Node module: @loopback/socketio // This file is licensed under the MIT License. // License text available at https://opensource.org/licenses/MIT Object.defineProperty(exports, "__esModule", { value: true }); exports.getSocketIoMetadata = exports.socketio = exports.SOCKET_IO_CONNECT_METADATA = exports.SOCKET_IO_SUBSCRIBE_METADATA = exports.SOCKET_IO_METADATA = void 0; const core_1 = require("@loopback/core"); const keys_1 = require("../keys"); exports.SOCKET_IO_METADATA = core_1.MetadataAccessor.create('socketio'); exports.SOCKET_IO_SUBSCRIBE_METADATA = core_1.MetadataAccessor.create('socketio:subscribe'); exports.SOCKET_IO_CONNECT_METADATA = core_1.MetadataAccessor.create('socketio:connect'); /** * Decorate a socketio controller class to specify the namespace. * * @example * ```ts * @socketio({namespace: '/chats'}) * export class SocketIoController {} * ``` * @param spec A namespace or object */ function socketio(spec = {}) { if (typeof spec === 'string' || spec instanceof RegExp) { spec = { namespace: spec }; } return core_1.ClassDecoratorFactory.createDecorator(exports.SOCKET_IO_METADATA, spec); } exports.socketio = socketio; function getSocketIoMetadata(controllerClass) { return core_1.MetadataInspector.getClassMetadata(exports.SOCKET_IO_METADATA, controllerClass); } exports.getSocketIoMetadata = getSocketIoMetadata; (function (socketio) { function io() { return (0, core_1.inject)(keys_1.SocketIoBindings.IO); } socketio.io = io; function namespace(name) { return (0, core_1.inject)(`socketio.namespace.${name}`); } socketio.namespace = namespace; function socket() { return (0, core_1.inject)(keys_1.SocketIoBindings.SOCKET); } socketio.socket = socket; /** * Decorate a method to subscribe to socketio events. * For example, * ```ts * @socketio.subscribe('chat message') * async function onChat(msg: string) { * } * ``` * @param messageTypes */ function subscribe(...messageTypes) { return core_1.MethodDecoratorFactory.createDecorator(exports.SOCKET_IO_SUBSCRIBE_METADATA, messageTypes); } socketio.subscribe = subscribe; /** * Decorate a controller method for `disconnect` */ function disconnect() { return subscribe('disconnect'); } socketio.disconnect = disconnect; /** * Decorate a controller method for `connect` */ function connect() { return core_1.MethodDecoratorFactory.createDecorator(exports.SOCKET_IO_CONNECT_METADATA, true); } socketio.connect = connect; })(socketio || (exports.socketio = socketio = {})); //# sourceMappingURL=socketio.decorator.js.map