UNPKG

cs-element

Version:

Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support

158 lines 6.38 kB
/** * Интерфейсы для системы истории изменений (Undo/Redo) */ export interface HistorySnapshot { /** Уникальный ID снимка */ id: string; /** Временная метка создания */ timestamp: number; /** Данные элемента на момент снимка */ data: any; /** Метаданные снимка */ metadata: { /** Описание операции */ operation: string; /** Пользователь или система, инициировавшая изменение */ source?: string; /** Дополнительные данные */ [key: string]: any; }; /** Размер снимка в байтах */ size: number; } export interface HistoryOperation { /** Уникальный ID операции */ id: string; /** Тип операции */ type: 'create' | 'update' | 'delete' | 'batch' | 'transaction'; /** Временная метка операции */ timestamp: number; /** Данные до операции */ before: any; /** Данные после операции */ after: any; /** Путь к измененному свойству */ path?: string[]; /** Описание операции */ description: string; /** Возможно ли отменить операцию */ canUndo: boolean; /** Возможно ли повторить операцию */ canRedo: boolean; /** Дополнительные метаданные */ metadata?: Record<string, any>; } export interface HistoryState { /** Текущая позиция в истории */ currentIndex: number; /** Максимальное количество операций в истории */ maxSize: number; /** Общее количество операций */ totalOperations: number; /** Размер истории в байтах */ totalSize: number; /** Можно ли выполнить undo */ canUndo: boolean; /** Можно ли выполнить redo */ canRedo: boolean; /** Статистика */ stats: { undoCount: number; redoCount: number; snapshotCount: number; lastCleanup: number; }; } export interface HistoryConfig { /** Максимальное количество операций в истории */ maxOperations?: number; /** Максимальный размер истории в байтах */ maxSize?: number; /** Интервал создания снимков (каждые N операций) */ snapshotInterval?: number; /** Автоматическая очистка старых записей */ autoCleanup?: boolean; /** Сжатие снимков */ compression?: boolean; /** Отслеживание определенных операций */ trackOperations?: string[]; /** Игнорировать определенные операции */ ignoreOperations?: string[]; } export interface HistoryManager { /** Добавить операцию в историю */ addOperation(operation: Omit<HistoryOperation, 'id' | 'timestamp'>): void; /** Создать снимок состояния */ createSnapshot(data: any, description: string): HistorySnapshot; /** Отменить последнюю операцию */ undo(): Promise<any>; /** Повторить отмененную операцию */ redo(): Promise<any>; /** Отменить до определенной операции */ undoTo(operationId: string): Promise<any>; /** Повторить до определенной операции */ redoTo(operationId: string): Promise<any>; /** Получить текущее состояние истории */ getState(): HistoryState; /** Получить список операций */ getOperations(limit?: number): HistoryOperation[]; /** Получить список снимков */ getSnapshots(limit?: number): HistorySnapshot[]; /** Очистить историю */ clear(): void; /** Очистить старые записи */ cleanup(): void; /** Получить операцию по ID */ getOperation(id: string): HistoryOperation | null; /** Получить снимок по ID */ getSnapshot(id: string): HistorySnapshot | null; /** Экспорт истории */ export(): HistoryExport; /** Импорт истории */ import(data: HistoryExport): void; /** Подписка на события истории */ on(event: HistoryEvent, callback: HistoryEventCallback): void; /** Отписка от событий */ off(event: HistoryEvent, callback: HistoryEventCallback): void; /** Создать diff между двумя состояниями */ createDiff(before: any, after: any, path?: string[]): HistoryDiff[]; } export type HistoryEvent = 'operation-added' | 'snapshot-created' | 'undo-performed' | 'redo-performed' | 'history-cleared' | 'cleanup-performed'; export interface HistoryEventData { operation?: HistoryOperation; snapshot?: HistorySnapshot; state: HistoryState; timestamp: number; } export type HistoryEventCallback = (data: HistoryEventData) => void; export interface HistoryExport { version: string; timestamp: number; operations: HistoryOperation[]; snapshots: HistorySnapshot[]; state: HistoryState; config: HistoryConfig; } export interface HistoryDiff { /** Тип изменения */ type: 'added' | 'removed' | 'modified'; /** Путь к свойству */ path: string[]; /** Старое значение */ oldValue?: any; /** Новое значение */ newValue?: any; /** Индекс для массивов */ index?: number; } export interface BatchOperation { /** ID батча */ id: string; /** Операции в батче */ operations: HistoryOperation[]; /** Описание батча */ description: string; /** Можно ли отменить весь батч */ canUndo: boolean; } //# sourceMappingURL=history-interfaces.d.ts.map