UNPKG

actionhero

Version:

The reusable, scalable, and quick node.js API server for stateless and stateful applications

68 lines (67 loc) 2.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConnectionsInitializer = void 0; const index_1 = require("../index"); class ConnectionsInitializer extends index_1.Initializer { constructor() { super(); this.apply = async (connectionId, method, args) => { return index_1.redis.doCluster("api.connections.applyResponder", [connectionId, method, args], connectionId, true); }; this.applyResponder = async (connectionId, method, args) => { const connection = index_1.api.connections.connections[connectionId]; if (!connection) return; if (method && args) { if (method === "sendMessage" || method === "sendFile") { await connection[method](args); } else { //@ts-ignore await connection[method].apply(connection, args); } } return index_1.api.connections.cleanConnection(connection); }; this.addMiddleware = (data) => { if (!data.name) { throw new Error("middleware.name is required"); } if (!data.priority) { data.priority = index_1.config.general.defaultMiddlewarePriority; } data.priority = Number(data.priority); index_1.api.connections.middleware[data.name] = data; index_1.api.connections.globalMiddleware.push(data.name); index_1.api.connections.globalMiddleware.sort((a, b) => index_1.api.connections.middleware[a].priority - index_1.api.connections.middleware[b].priority); }; this.cleanConnection = (connection) => { const clean = {}; for (const [key, value] of Object.entries(connection)) { if (key !== "rawConnection" && key !== "api") { try { JSON.stringify(value); clean[key] = value; } catch (error) { } } } return clean; }; this.name = "connections"; this.loadPriority = 400; } async initialize() { index_1.api.connections = { connections: {}, middleware: {}, globalMiddleware: [], apply: this.apply, applyResponder: this.applyResponder, addMiddleware: this.addMiddleware, cleanConnection: this.cleanConnection, }; } } exports.ConnectionsInitializer = ConnectionsInitializer;