actionhero
Version:
The reusable, scalable, and quick node.js API server for stateless and stateful applications
53 lines (52 loc) • 1.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.action = void 0;
const connection_1 = require("../classes/connection");
const actionProcessor_1 = require("../classes/actionProcessor");
const index_1 = require("../index");
var action;
(function (action) {
/**
* Add a middleware component available to pre or post-process actions.
*/
function 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.actions.middleware[data.name] = data;
if (data.global === true) {
index_1.api.actions.globalMiddleware.push(data.name);
index_1.utils.sortGlobalMiddleware(index_1.api.actions.globalMiddleware, index_1.api.actions.middleware);
}
}
action.addMiddleware = addMiddleware;
/**
* Run an Action in-line, perhaps from within another Action or Task.
*/
async function run(actionName, actionVersion, params = {}, connectionProperties = {}) {
const connection = new connection_1.Connection({
type: "in-line-action",
remotePort: "0",
remoteIP: "0",
rawConnection: {},
canChat: false,
});
connection.params = params;
Object.assign(connection, connectionProperties);
try {
const actionProcessor = new actionProcessor_1.ActionProcessor(connection);
const data = await actionProcessor.processAction(actionName, actionVersion);
if (data.response.error)
throw new Error(data.response.error);
return data.response;
}
finally {
await connection.destroy();
}
}
action.run = run;
})(action || (exports.action = action = {}));