actionhero
Version:
The reusable, scalable, and quick node.js API server for stateless and stateful applications
68 lines (67 loc) • 2.67 kB
JavaScript
;
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;