-
Matiss Janis Aboltins authoredMatiss Janis Aboltins authored
errors.ts 1.73 KiB
// TODO: normalize error types
export class PostError extends Error {
meta?: { meta: string };
reason: string;
type: 'PostError';
constructor(reason: string, meta?: { meta: string }) {
super('PostError: ' + reason);
this.type = 'PostError';
this.reason = reason;
this.meta = meta;
}
}
export class HTTPError extends Error {
statusCode: number;
responseBody: string;
constructor(code: number, body: string) {
super(`HTTPError: unsuccessful status code (${code}): ${body}`);
this.statusCode = code;
this.responseBody = body;
}
}
export class SyncError extends Error {
meta?:
| {
isMissingKey: boolean;
}
| {
error: { message: string; stack: string };
query: { sql: string; params: Array<string | number> };
};
reason: string;
constructor(
reason: string,
meta?:
| {
isMissingKey: boolean;
}
| {
error: { message: string; stack: string };
query: { sql: string; params: Array<string | number> };
},
) {
super('SyncError: ' + reason);
this.reason = reason;
this.meta = meta;
}
}
export class TransactionError extends Error {}
export class RuleError extends Error {
type: string;
constructor(name: string, message: string) {
super('RuleError: ' + message);
this.type = name;
}
}
export function APIError(msg: string) {
return { type: 'APIError', message: msg };
}
export function FileDownloadError(
reason: string,
meta?: { fileId?: string; isMissingKey?: boolean },
) {
return { type: 'FileDownloadError', reason, meta };
}
export function FileUploadError(
reason: string,
meta?: { isMissingKey: boolean },
) {
return { type: 'FileUploadError', reason, meta };
}