UNPKG

cs-element

Version:

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

173 lines 5.45 kB
/** * Плагин сериализации для 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