cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
173 lines • 5.45 kB
TypeScript
/**
* Плагин сериализации для CSElement
* Поддерживает различные форматы сериализации
*/
import { CSElementPlugin, LifecycleHooks, PluginOptions } from '../types/plugin-interfaces';
import { ICSElement } from '../types/interfaces';
import { CSElement } from '../core/CSElement';
/**
* Поддерживаемые форматы сериализации
*/
export declare enum SerializationFormat {
JSON = "json",
XML = "xml",
YAML = "yaml",
CSV = "csv",
BINARY = "binary",
CUSTOM = "custom"
}
/**
* Опции сериализации
*/
export interface SerializationOptions {
format: SerializationFormat;
includeMetadata?: boolean;
includeChildren?: boolean;
includeParent?: boolean;
pretty?: boolean;
compression?: boolean;
encryption?: boolean;
customOptions?: Record<string, any>;
}
/**
* Результат сериализации
*/
export interface SerializationResult {
success: boolean;
data: string | Buffer;
format: SerializationFormat;
size: number;
metadata?: Record<string, any>;
error?: string;
}
/**
* Результат десериализации
*/
export interface DeserializationResult {
success: boolean;
element?: any;
metadata?: Record<string, any>;
error?: string;
}
/**
* Сериализатор для конкретного формата
*/
export interface FormatSerializer {
format: SerializationFormat;
serialize(element: ICSElement, options: SerializationOptions): Promise<string | Buffer>;
deserialize(data: string | Buffer, options: SerializationOptions): Promise<any>;
validate?(data: string | Buffer): boolean;
[key: string]: any;
}
/**
* Конфигурация сериализации
*/
export interface SerializationConfig {
enabled: boolean;
defaultFormat: SerializationFormat;
enabledFormats: SerializationFormat[];
enableCache: boolean;
enableCompression: boolean;
enableEncryption: boolean;
maxCacheSize: number;
compressionLevel: number;
encryptionKey?: string;
}
/**
* Плагин сериализации
*/
export declare class SerializationPlugin implements CSElementPlugin {
readonly name = "SerializationPlugin";
readonly version = "1.0.0";
readonly description = "\u041F\u043B\u0430\u0433\u0438\u043D \u0434\u043B\u044F \u0441\u0435\u0440\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0430\u043D\u043D\u044B\u0445 \u0432 \u0440\u0430\u0437\u043D\u044B\u0435 \u0444\u043E\u0440\u043C\u0430\u0442\u044B";
private config;
private serializers;
private cache;
constructor(options?: PluginOptions);
install(CSElementClass: typeof CSElement): void;
getLifecycleHooks(): LifecycleHooks;
/**
* Сериализация элемента
*/
serialize(element: ICSElement, format: SerializationFormat): Promise<SerializationResult>;
/**
* Десериализация данных
*/
deserialize(data: string, format: SerializationFormat): Promise<DeserializationResult>;
/**
* Регистрация пользовательского сериализатора
*/
registerSerializer(serializer: FormatSerializer): void;
/**
* Удаление сериализатора
*/
unregisterSerializer(format: SerializationFormat): boolean;
/**
* Инициализация встроенных сериализаторов
*/
private initializeSerializers;
/**
* Генерация ключа кэша
*/
private generateCacheKey;
/**
* Простое хэширование строки
*/
private hashString;
/**
* Кэширование результата
*/
private cacheResult;
/**
* Сжатие данных с использованием gzip
*/
private compress;
/**
* Распаковка данных с использованием gzip
*/
private decompress;
/**
* Шифрование данных с использованием AES
*/
private encrypt;
/**
* Расшифровка данных с использованием AES
*/
private decrypt;
/**
* Получение поддерживаемых форматов
*/
getSupportedFormats(): SerializationFormat[];
/**
* Проверка поддержки формата
*/
supportsFormat(format: SerializationFormat): boolean;
/**
* Валидация данных для формата
*/
validate(data: string | Buffer, format: SerializationFormat): boolean;
/**
* Очистка кэша
*/
clearCache(): void;
/**
* Получение статистики кэша
*/
getCacheStats(): {
size: number;
maxSize: number;
};
/**
* Обновление конфигурации
*/
updateConfig(config: Partial<SerializationConfig>): void;
/**
* Получение конфигурации
*/
getConfig(): SerializationConfig;
}
/**
* Фабричная функция для создания плагина сериализации
*/
export declare function serializationPlugin(config?: Partial<SerializationConfig>): SerializationPlugin;
//# sourceMappingURL=SerializationPlugin.d.ts.map