@sphereon/ssi-express-support
Version:
55 lines • 2.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.jsonErrorHandler = void 0;
exports.sendErrorResponse = sendErrorResponse;
function sendErrorResponse(response, statusCode, message, error) {
let msg = message;
if (!msg) {
console.error('Message was null when calling sendErrorResponse. This should not happen');
msg = 'An unexpected error occurred';
statusCode = 500;
}
else {
console.error(`sendErrorResponse (${statusCode}): ${typeof msg === 'string' ? msg : JSON.stringify(msg)}`);
}
if (error) {
if (error instanceof Error) {
console.error(`error message: ${error.message}`);
}
console.error(`error object: ${JSON.stringify(error)}`);
}
if (statusCode >= 500) {
console.error('Original error stack (if any) and REST API error stack:');
console.error(error === null || error === void 0 ? void 0 : error.stack);
console.error(Error().stack);
}
if (response.headersSent) {
console.error(`sendErrorResponse headers already sent`);
return response;
}
response.statusCode = statusCode;
if (typeof msg === 'string' && !msg.startsWith('{')) {
msg = { error: msg };
}
if (typeof msg === 'string' && msg.startsWith('{')) {
response.header('Content-Type', 'application/json');
return response.status(statusCode).end(msg);
}
return response.status(statusCode).json(msg);
}
const jsonErrorHandler = (err, req, res, next) => {
var _a;
const statusCode = 'statusCode' in err ? err.statusCode : 500;
let errorMsg = typeof err === 'string' ? err : ((_a = err.message) !== null && _a !== void 0 ? _a : err);
if (typeof errorMsg !== 'string') {
errorMsg = JSON.stringify(errorMsg);
}
if (res.headersSent) {
console.log('Headers already sent, when calling error handler. Will defer to next error handler');
console.log(`Error was: ${JSON.stringify(err)}`);
return next(err);
}
return sendErrorResponse(res, statusCode, errorMsg, err);
};
exports.jsonErrorHandler = jsonErrorHandler;
//# sourceMappingURL=express-utils.js.map