cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
335 lines • 9.86 kB
TypeScript
/**
* Интерфейсы для системы персистентности 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