Files
flights_web/src/shared/api/errors.ts
T

39 lines
903 B
TypeScript

export class ApiError extends Error {
constructor(message: string) {
super(message);
this.name = "ApiError";
}
}
export class ApiHttpError extends ApiError {
readonly status: number;
readonly body?: unknown;
constructor(message: string, status: number, body?: unknown) {
super(message);
this.name = "ApiHttpError";
this.status = status;
this.body = body;
}
}
export class ApiTimeoutError extends ApiError {
readonly timeoutMs: number;
constructor(timeoutMs: number) {
super(`Request timed out after ${timeoutMs}ms`);
this.name = "ApiTimeoutError";
this.timeoutMs = timeoutMs;
}
}
export class ApiNetworkError extends ApiError {
override readonly cause?: Error | undefined;
constructor(cause?: Error) {
super(cause ? `Network error: ${cause.message}` : "Network error");
this.name = "ApiNetworkError";
this.cause = cause;
}
}