UNPKG

synapse-storage

Version:

Набор инструментов для управления состоянием и апи-запросами

67 lines (62 loc) 2.61 kB
import { loggerConsole } from "./logger-console.util.js"; /** * Базовый класс ошибок Synapse. * Позволяет отличать ошибки библиотеки от прочих через `instanceof`. */ class SynapseError extends Error { context; cause; constructor(message, context, cause){ super(context ? `[${context}] ${message}` : message), this.context = context, this.cause = cause; this.name = 'SynapseError'; } } /** * Логирует ошибку через ILogger (если есть) или через console-fallback. */ function logError(message, error, logger, level = 'error') { const meta = { error: error instanceof Error ? error.message : String(error) }; if (logger) { logger[level](message, meta); } else { loggerConsole[level](`[Synapse] ${message}`, error); } } /** * OPERATION pattern: логирует и пробрасывает ошибку. * Для CRUD-операций (get, set, update, delete) и инициализации. */ function handleOperationError(context, error, logger) { logError(context, error, logger); throw error; } /** * CALLBACK pattern: логирует и проглатывает ошибку. * Для пользовательских callback'ов, подписчиков, эффектов. * Ошибка в одном callback'е не должна ломать остальные. */ function handleCallbackError(context, error, logger) { logError(context, error, logger); } /** * CLEANUP pattern: логирует предупреждение и продолжает. * Для destroy(), unsubscribe() и прочих cleanup-операций. */ function handleCleanupError(context, error, logger) { logError(context, error, logger, 'warn'); } /** * Обёртка для безопасного вызова callback'а (CALLBACK pattern). * Возвращает результат или undefined при ошибке. */ function safeCallback(fn, context, logger) { try { return fn(); } catch (error) { handleCallbackError(context, error, logger); return undefined; } } /** * Обёртка для promise в fire-and-forget сценариях (CLEANUP pattern). */ function safePromise(promise, context, logger) { promise.catch((error)=>handleCleanupError(context, error, logger)); } export { SynapseError, handleCallbackError, handleCleanupError, handleOperationError, logError, safeCallback, safePromise }; //# sourceMappingURL=error-handling.util.js.map