UNPKG

cs-element

Version:

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

335 lines 9.86 kB
/** * Интерфейсы для системы персистентности CSElement * Поддержка различных типов хранилищ и адаптеров */ import { SerializedElement } from './interfaces'; /** * Типы хранилищ */ export declare enum StorageType { MEMORY = "memory", LOCAL_STORAGE = "localStorage", SESSION_STORAGE = "sessionStorage", INDEXED_DB = "indexedDB", FILE_SYSTEM = "fileSystem", CUSTOM = "custom" } /** * Конфигурация хранилища */ export interface StorageConfig { type: StorageType; name: string; options?: Record<string, any>; encryption?: { enabled: boolean; algorithm?: string; key?: string; }; compression?: { enabled: boolean; algorithm?: 'gzip' | 'deflate' | 'br'; }; versioning?: { enabled: boolean; maxVersions?: number; }; } /** * Метаданные элемента в хранилище */ export interface StorageMetadata { id: string; version: number; createdAt: number; updatedAt: number; size: number; checksum?: string; tags?: string[]; userMetadata?: Record<string, any>; } /** * Запись в хранилище */ export interface StorageRecord { id: string; data: SerializedElement; metadata: StorageMetadata; } /** * Результат операции в хранилище */ export interface StorageResult<T = any> { success: boolean; data?: T; error?: string; metadata?: StorageMetadata; } /** * Опции для операций с хранилищем */ export interface StorageOptions { createVersion?: boolean; validateChecksum?: boolean; includeMetadata?: boolean; timeout?: number; retries?: number; softDelete?: boolean; } /** * Фильтр для поиска в хранилище */ export interface StorageFilter { ids?: string[]; tags?: string[]; createdAfter?: number; createdBefore?: number; updatedAfter?: number; updatedBefore?: number; minSize?: number; maxSize?: number; userMetadata?: Record<string, any>; } /** * Результат поиска в хранилище */ export interface StorageSearchResult { records: StorageRecord[]; totalCount: number; hasMore: boolean; nextCursor?: string; } /** * Опции для поиска в хранилище */ export interface StorageSearchOptions { limit?: number; offset?: number; cursor?: string; sortBy?: 'createdAt' | 'updatedAt' | 'size' | 'id'; sortOrder?: 'asc' | 'desc'; includeData?: boolean; } /** * Базовый интерфейс адаптера хранилища */ export interface StorageAdapter { readonly type: StorageType; readonly name: string; readonly config: StorageConfig; /** * Инициализация адаптера */ initialize(): Promise<void>; /** * Закрытие адаптера */ close(): Promise<void>; /** * Проверка готовности адаптера */ isReady(): boolean; /** * Сохранение элемента */ save(id: string, data: SerializedElement, options?: StorageOptions): Promise<StorageResult<StorageMetadata>>; /** * Загрузка элемента */ load(id: string, options?: StorageOptions): Promise<StorageResult<SerializedElement>>; /** * Удаление элемента */ delete(id: string, options?: StorageOptions): Promise<StorageResult<boolean>>; /** * Проверка существования элемента */ exists(id: string): Promise<boolean>; /** * Получение метаданных элемента */ getMetadata(id: string): Promise<StorageResult<StorageMetadata>>; /** * Обновление метаданных элемента */ updateMetadata(id: string, metadata: Partial<StorageMetadata>): Promise<StorageResult<StorageMetadata>>; /** * Поиск элементов */ search(filter: StorageFilter, options?: StorageSearchOptions): Promise<StorageSearchResult>; /** * Получение списка всех ID */ listIds(): Promise<string[]>; /** * Очистка хранилища */ clear(): Promise<StorageResult<number>>; /** * Получение размера хранилища */ getSize(): Promise<number>; /** * Получение статистики хранилища */ getStats(): Promise<{ totalRecords: number; totalSize: number; oldestRecord?: StorageMetadata; newestRecord?: StorageMetadata; averageSize: number; }>; } /** * Интерфейс для адаптеров с поддержкой транзакций */ export interface TransactionalStorageAdapter extends StorageAdapter { /** * Начало транзакции */ beginTransaction(): Promise<string>; /** * Подтверждение транзакции */ commitTransaction(transactionId: string): Promise<void>; /** * Откат транзакции */ rollbackTransaction(transactionId: string): Promise<void>; /** * Выполнение операций в транзакции */ withTransaction<T>(callback: (adapter: TransactionalStorageAdapter) => Promise<T>): Promise<T>; } /** * Интерфейс для адаптеров с поддержкой версионирования */ export interface VersionedStorageAdapter extends StorageAdapter { /** * Получение версии элемента */ getVersion(id: string, version: number): Promise<StorageResult<SerializedElement>>; /** * Получение списка версий элемента */ getVersions(id: string): Promise<StorageMetadata[]>; /** * Удаление версии элемента */ deleteVersion(id: string, version: number): Promise<StorageResult<boolean>>; /** * Очистка старых версий */ cleanupVersions(id: string, keepCount: number): Promise<number>; } /** * Интерфейс менеджера персистентности */ export interface PersistenceManager { /** * Регистрация адаптера хранилища */ registerAdapter(adapter: StorageAdapter): void; /** * Получение адаптера по имени */ getAdapter(name: string): StorageAdapter | null; /** * Получение всех адаптеров */ getAllAdapters(): StorageAdapter[]; /** * Удаление адаптера */ removeAdapter(name: string): boolean; /** * Установка адаптера по умолчанию */ setDefaultAdapter(name: string): void; /** * Получение адаптера по умолчанию */ getDefaultAdapter(): StorageAdapter | null; /** * Сохранение элемента в указанное хранилище */ save(elementId: string, adapterName?: string, options?: StorageOptions): Promise<StorageResult<StorageMetadata>>; /** * Загрузка элемента из хранилища */ load(elementId: string, adapterName?: string, options?: StorageOptions): Promise<StorageResult<SerializedElement>>; /** * Удаление элемента из хранилища */ delete(elementId: string, adapterName?: string, options?: StorageOptions): Promise<StorageResult<boolean>>; /** * Синхронизация между хранилищами */ sync(sourceAdapter: string, targetAdapter: string, options?: { bidirectional?: boolean; conflictResolution?: 'source' | 'target' | 'latest' | 'merge'; filter?: StorageFilter; }): Promise<{ synced: number; conflicts: number; errors: string[]; }>; /** * Резервное копирование */ backup(adapterName: string, options?: { includeMetadata?: boolean; compression?: boolean; encryption?: boolean; }): Promise<{ data: any; metadata: { timestamp: number; recordCount: number; size: number; }; }>; /** * Восстановление из резервной копии */ restore(backupData: any, adapterName: string, options?: { overwrite?: boolean; validateData?: boolean; }): Promise<{ restored: number; skipped: number; errors: string[]; }>; } /** * События системы персистентности */ export declare enum PersistenceEventType { ADAPTER_REGISTERED = "adapter:registered", ADAPTER_REMOVED = "adapter:removed", ADAPTER_ERROR = "adapter:error", SAVE_STARTED = "save:started", SAVE_COMPLETED = "save:completed", SAVE_FAILED = "save:failed", LOAD_STARTED = "load:started", LOAD_COMPLETED = "load:completed", LOAD_FAILED = "load:failed", DELETE_STARTED = "delete:started", DELETE_COMPLETED = "delete:completed", DELETE_FAILED = "delete:failed", SYNC_STARTED = "sync:started", SYNC_COMPLETED = "sync:completed", SYNC_FAILED = "sync:failed" } /** * Данные события персистентности */ export interface PersistenceEventData { type: PersistenceEventType; timestamp: number; elementId?: string; adapterName?: string; error?: string; metadata?: any; } //# sourceMappingURL=persistence-interfaces.d.ts.map