@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
JavaScript
;
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