synapse-storage
Version:
Набор инструментов для управления состоянием и апи-запросами
48 lines (43 loc) • 2.05 kB
JavaScript
import { loggerConsole } from "../../../_utils/index.js";
/** Логируем только пишущие действия — чтения (`get`/`keys`) не шумят. */ const WRITE_ACTIONS = new Set([
'set',
'update',
'delete',
'clear',
'reset',
'init'
]);
/**
* Sync-версия {@link loggerMiddleware} для Memory/LocalStorage. Dev-only: логирует пишущие
* действия (тип, ключ, длительность, опционально prev/next состояние). Без i18n/цветов.
*/ const syncLoggerMiddleware = (options = {})=>{
const { collapsed = false, showState = true } = options;
return {
name: 'sync-logger',
reducer: (api)=>(next)=>(action)=>{
if (!WRITE_ACTIONS.has(action.type)) {
return next(action);
}
const started = Date.now();
const prevState = showState ? api.getState() : undefined;
try {
const result = next(action);
const time = Date.now() - started;
const group = collapsed ? loggerConsole.groupCollapsed : loggerConsole.group;
group(`[synapse storage] ${action.type}${action.key != null ? ` "${String(action.key)}"` : ''} (${time}ms)`);
loggerConsole.log('action:', action);
if (showState) {
loggerConsole.log('prev:', prevState);
loggerConsole.log('next:', api.getState());
}
loggerConsole.groupEnd();
return result;
} catch (error) {
loggerConsole.error(`[synapse storage] ${action.type} FAILED`, error);
throw error;
}
}
};
};
export { syncLoggerMiddleware };
//# sourceMappingURL=sync-storage-logger.middleware.js.map