39 lines
903 B
TypeScript
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;
|
|
}
|
|
}
|