UNPKG

@szegedsw/lib-node

Version:

A little framework published by Szeged Software Zrt. in order to enhance api endpoint security and create reuseable code. Email module, Logging system, and much more. Further improvements are expected.

49 lines 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports._try = void 0; const http_codes_1 = require("../config/http-codes"); // eslint-disable-next-line no-underscore-dangle async function _try(res, tryFunction, errors, onError, splitter = "#") { const stack = new Error().stack; try { const returned = await tryFunction(); return returned !== undefined ? returned : true; } catch (err) { const throwIt = ["KnexTimeoutError"]; const splitted = err.message.split(":")[0].split(splitter); const message = splitted[0].trim(); if (throwIt.includes(message)) { throw err; } const variables = splitted.slice(1); if (errors && Object.keys(errors).includes(message)) { const error = errors[message]; if (error.onError) { await _try(res, error.onError); } if (onError) { await _try(res, async () => onError(error.override || message, variables)); } if (!(res === null || res === void 0 ? void 0 : res.headersSent)) { res === null || res === void 0 ? void 0 : res.status(http_codes_1.HttpCodes[error.code]).json(error.body + [""].concat(variables).join(" #")).end(); } // tslint:disable-next-line: no-console console.log(err, stack); return false; } console.error(err, stack, "Function:", tryFunction.toString()); if (!(res === null || res === void 0 ? void 0 : res.headersSent)) { // killing circular keys Object.keys(err).forEach((key) => { if (err[key] === err) { err[key] = undefined; } }); res === null || res === void 0 ? void 0 : res.status(http_codes_1.HttpCodes.internalError).json(err).end(); } return false; } } exports._try = _try; //# sourceMappingURL=try.js.map