This commit is contained in:
+59
@@ -0,0 +1,59 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.AppError = void 0;
|
||||
exports.errorHandler = errorHandler;
|
||||
exports.notFoundHandler = notFoundHandler;
|
||||
const zod_1 = require("zod");
|
||||
class AppError extends Error {
|
||||
code;
|
||||
message;
|
||||
statusCode;
|
||||
details;
|
||||
constructor(code, message, statusCode = 500, details) {
|
||||
super(message);
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
this.statusCode = statusCode;
|
||||
this.details = details;
|
||||
this.name = 'AppError';
|
||||
}
|
||||
}
|
||||
exports.AppError = AppError;
|
||||
function errorHandler(err, req, res, next) {
|
||||
console.error('Error:', err);
|
||||
if (err instanceof zod_1.ZodError) {
|
||||
res.status(400).json({
|
||||
error: {
|
||||
code: 'INVALID_PAYLOAD',
|
||||
message: 'Request validation failed',
|
||||
details: err.flatten().fieldErrors,
|
||||
},
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (err instanceof AppError) {
|
||||
res.status(err.statusCode).json({
|
||||
error: {
|
||||
code: err.code,
|
||||
message: err.message,
|
||||
details: err.details,
|
||||
},
|
||||
});
|
||||
return;
|
||||
}
|
||||
res.status(500).json({
|
||||
error: {
|
||||
code: 'SERVER_ERROR',
|
||||
message: 'Internal server error',
|
||||
},
|
||||
});
|
||||
}
|
||||
function notFoundHandler(req, res) {
|
||||
res.status(404).json({
|
||||
error: {
|
||||
code: 'NOT_FOUND',
|
||||
message: `Route ${req.method} ${req.path} not found`,
|
||||
},
|
||||
});
|
||||
}
|
||||
//# sourceMappingURL=errorHandler.js.map
|
||||
Reference in New Issue
Block a user