59 lines
1.5 KiB
JavaScript
59 lines
1.5 KiB
JavaScript
"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
|