feat: implement save all

This commit is contained in:
2026-02-07 18:35:29 +05:00
parent 0444b0cd2c
commit 2eab18569e
9 changed files with 258 additions and 50 deletions
+36
View File
@@ -0,0 +1,36 @@
export class AppError extends Error {
constructor(
message: string,
public code: string,
public details?: unknown,
) {
super(message);
this.name = "AppError";
}
}
export class ImageError extends AppError {
constructor(message: string) {
super(message, "IMAGE_ERROR");
}
}
export class TextError extends AppError {
constructor(message: string) {
super(message, "TEXT_ERROR");
}
}
export class CanvasError extends AppError {
constructor(message: string) {
super(message, "CANVAS_ERROR");
}
}
export class StorageError extends AppError {
constructor(message: string) {
super(message, "STORAGE_ERROR");
}
}
export type ErrorType = AppError | ImageError | TextError | CanvasError | StorageError;
+26
View File
@@ -0,0 +1,26 @@
import { AppError } from "$lib/error.types";
export function formatError(error: unknown, defaultMessage: string = "Произошла ошибка"): string {
if (error instanceof AppError || error instanceof Error) {
return `${defaultMessage}: ${error.message}`;
}
if (typeof error === "string") {
return `${defaultMessage}: ${error}`;
}
return `${defaultMessage}: Произошла неизвестная ошибка`;
}
export function createError(message: string, code: string, recoverable: boolean = true, details?: unknown): AppError {
return new AppError(message, code, recoverable);
}
export function logError(error: unknown, context?: string): void {
console.error("Error occurred:", {
error,
context,
timestamp: new Date().toISOString(),
stack: error instanceof Error ? error.stack : undefined,
});
}