@yucom/rest-server
Version:
Preconfigured rest-server
33 lines • 1.47 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const log_1 = __importDefault(require("@yucom/log"));
const server_error_1 = require("../server-error");
let log = log_1.default.create('rest-server:error-handler');
const isError = (err) => {
return err instanceof Error;
};
const isAppError = (err) => {
return err instanceof server_error_1.AppError;
};
function handlerCommonError(err) {
const status = err.status;
const serverError = server_error_1.ServerError.forStatusCode(status) || server_error_1.ServerError.internalServerError;
return serverError.new(undefined, err);
}
function handlerUnknowObject(obj) {
return server_error_1.ServerError.internalServerError.new(obj);
}
function ErrorHandlerMiddleware(err, req, res, next) {
const serverError = isAppError(err) ? err :
isError(err) ? handlerCommonError(err) :
handlerUnknowObject(err);
const errorStatus = server_error_1.ServerError.statusOf(serverError);
log.info(`Request(path="${req.originalUrl}", body=${JSON.stringify(req.body)}) => ` +
`Error(status=${errorStatus}, body=${JSON.stringify(serverError)})`);
return res.status(errorStatus).send(serverError);
}
exports.ErrorHandlerMiddleware = ErrorHandlerMiddleware;
//# sourceMappingURL=error-handler.middleware.js.map