51 lines
1.0 KiB
JavaScript

export class HttpError extends Error {
/**
* @param {{ name?: string, message: string, statusCode: number }} msg
*/
constructor({ name, message, statusCode = 500 }) {
super(message);
this.name = name || this.constructor.name;
this.statusCode = statusCode;
Error.captureStackTrace(this);
}
}
export class BadRequestError extends HttpError {
/**
* @param {string} [message]
*/
constructor(message) {
super({
name: "ERR_BAD_REQUEST",
message: message || "Bad Request",
statusCode: 400
});
}
}
export class NotFoundError extends HttpError {
/**
* @param {string} [message]
*/
constructor(message) {
super({
name: "ERR_NOT_FOUND",
message: message || "Not found",
statusCode: 404
});
}
}
export class ServiceUnavailableError extends HttpError {
/**
* @param {string} [message]
*/
constructor(message) {
super({
name: "ERR_SERVICE_UNAVAILABLE",
message: message || "Service unavailable",
statusCode: 503
});
}
}