UNPKG

n8n

Version:

n8n Workflow Automation Tool

136 lines 4.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.unflattenExecutionData = exports.flattenExecutionData = exports.send = exports.sendErrorResponse = exports.sendSuccessResponse = exports.jwtAuthAuthorizationError = exports.basicAuthAuthorizationError = exports.ResponseError = void 0; const flatted_1 = require("flatted"); class ResponseError extends Error { constructor(message, errorCode, httpStatusCode, hint) { super(message); this.name = 'ResponseError'; if (errorCode) { this.errorCode = errorCode; } if (httpStatusCode) { this.httpStatusCode = httpStatusCode; } if (hint) { this.hint = hint; } } } exports.ResponseError = ResponseError; function basicAuthAuthorizationError(resp, realm, message) { resp.statusCode = 401; resp.setHeader('WWW-Authenticate', `Basic realm="${realm}"`); resp.json({ code: resp.statusCode, message }); } exports.basicAuthAuthorizationError = basicAuthAuthorizationError; function jwtAuthAuthorizationError(resp, message) { resp.statusCode = 403; resp.json({ code: resp.statusCode, message }); } exports.jwtAuthAuthorizationError = jwtAuthAuthorizationError; function sendSuccessResponse(res, data, raw, responseCode, responseHeader) { if (responseCode !== undefined) { res.status(responseCode); } if (responseHeader) { res.header(responseHeader); } if (raw === true) { if (typeof data === 'string') { res.send(data); } else { res.json(data); } } else { res.json({ data, }); } } exports.sendSuccessResponse = sendSuccessResponse; function sendErrorResponse(res, error, shouldLog = true) { let httpStatusCode = 500; if (error.httpStatusCode) { httpStatusCode = error.httpStatusCode; } if (process.env.NODE_ENV !== 'production' && shouldLog) { console.error('ERROR RESPONSE'); console.error(error); } const response = { code: 0, message: 'Unknown error', hint: '', }; if (error.name === 'NodeApiError') { Object.assign(response, error); } if (error.errorCode) { response.code = error.errorCode; } if (error.message) { response.message = error.message; } if (error.hint) { response.hint = error.hint; } if (error.stack && process.env.NODE_ENV !== 'production') { response.stack = error.stack; } res.status(httpStatusCode).json(response); } exports.sendErrorResponse = sendErrorResponse; function send(processFunction) { return async (req, res) => { try { const data = await processFunction(req, res); sendSuccessResponse(res, data); } catch (error) { sendErrorResponse(res, error); } }; } exports.send = send; function flattenExecutionData(fullExecutionData) { const returnData = { data: flatted_1.stringify(fullExecutionData.data), mode: fullExecutionData.mode, waitTill: fullExecutionData.waitTill, startedAt: fullExecutionData.startedAt, stoppedAt: fullExecutionData.stoppedAt, finished: fullExecutionData.finished ? fullExecutionData.finished : false, workflowId: fullExecutionData.workflowId, workflowData: fullExecutionData.workflowData, }; if (fullExecutionData.id !== undefined) { returnData.id = fullExecutionData.id.toString(); } if (fullExecutionData.retryOf !== undefined) { returnData.retryOf = fullExecutionData.retryOf.toString(); } if (fullExecutionData.retrySuccessId !== undefined) { returnData.retrySuccessId = fullExecutionData.retrySuccessId.toString(); } return returnData; } exports.flattenExecutionData = flattenExecutionData; function unflattenExecutionData(fullExecutionData) { const returnData = { id: fullExecutionData.id.toString(), workflowData: fullExecutionData.workflowData, data: flatted_1.parse(fullExecutionData.data), mode: fullExecutionData.mode, waitTill: fullExecutionData.waitTill ? fullExecutionData.waitTill : undefined, startedAt: fullExecutionData.startedAt, stoppedAt: fullExecutionData.stoppedAt, finished: fullExecutionData.finished ? fullExecutionData.finished : false, workflowId: fullExecutionData.workflowId, }; return returnData; } exports.unflattenExecutionData = unflattenExecutionData; //# sourceMappingURL=ResponseHelper.js.map