cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
194 lines • 5.95 kB
TypeScript
/**
* Плагин трансформации данных для CSElement
* Обеспечивает преобразование данных при операциях
*/
import { CSElementPlugin, LifecycleHooks, PluginOptions } from '../types/plugin-interfaces';
import { ICSElement } from '../types/interfaces';
import { CSElement } from '../core/CSElement';
/**
* Типы трансформации
*/
export declare enum TransformType {
INPUT = "input",// При входе данных
OUTPUT = "output",// При выходе данных
STORAGE = "storage",// При сохранении
DISPLAY = "display",// При отображении
JSON_STRINGIFY = "json_stringify",
JSON_PARSE = "json_parse",
BASE64_ENCODE = "base64_encode",
BASE64_DECODE = "base64_decode",
UPPERCASE = "uppercase",
LOWERCASE = "lowercase",
CUSTOM = "custom"
}
/**
* Направление трансформации
*/
export declare enum TransformDirection {
ENCODE = "encode",// Кодирование
DECODE = "decode",// Декодирование
BOTH = "both"
}
/**
* Функция трансформации
*/
export type TransformFunction<T = any, R = any> = (value: T, context: TransformContext) => R | Promise<R>;
/**
* Контекст трансформации
*/
export interface TransformContext {
element: ICSElement;
key: string;
type: TransformType;
direction: TransformDirection;
metadata: Record<string, any>;
originalValue: any;
}
/**
* Правило трансформации
*/
export interface TransformRule {
name: string;
type: TransformType;
direction: TransformDirection;
keyPattern?: string | RegExp;
valueType?: string;
condition?: (context: TransformContext) => boolean;
transform: TransformFunction;
priority?: number;
enabled?: boolean;
field?: string;
transformer?: (value: any) => any;
}
/**
* Результат трансформации
*/
export interface TransformResult<T = any> {
success: boolean;
value: T;
error?: string;
metadata?: Record<string, any>;
appliedRules: string[];
}
/**
* Конфигурация трансформации
*/
export interface TransformConfig {
enabled: boolean;
enabledTypes: TransformType[];
rules: TransformRule[];
maxTransformTime: number;
enableCache: boolean;
enableStats: boolean;
}
/**
* Статистика трансформаций
*/
export interface TransformStats {
totalTransforms: number;
successfulTransforms: number;
failedTransforms: number;
averageTime: number;
ruleStats: Map<string, {
executions: number;
successes: number;
failures: number;
totalTime: number;
averageTime: number;
}>;
}
/**
* Плагин трансформации
*/
export declare class TransformPlugin implements CSElementPlugin {
readonly name = "TransformPlugin";
readonly version = "1.0.0";
readonly description = "\u041F\u043B\u0430\u0433\u0438\u043D \u0434\u043B\u044F \u0442\u0440\u0430\u043D\u0441\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438 \u0434\u0430\u043D\u043D\u044B\u0445";
private config;
private transformCache;
private stats;
constructor(options?: PluginOptions);
install(CSElementClass: typeof CSElement): void;
getLifecycleHooks(): LifecycleHooks;
/**
* Применение трансформаций
*/
applyTransforms(value: any, context: TransformContext): Promise<TransformResult>;
/**
* Получение применимых правил
*/
private getApplicableRules;
/**
* Проверка соответствия паттерну ключа
*/
private matchesKeyPattern;
/**
* Проверка соответствия типу значения
*/
private matchesValueType;
/**
* Применение трансформации с таймаутом
*/
private applyTransformWithTimeout;
/**
* Добавление правила трансформации
*/
addRule(rule: TransformRule): void;
/**
* Удаление правила трансформации
*/
removeRule(name: string): boolean;
/**
* Получение правила по имени
*/
getRule(name: string): TransformRule | undefined;
/**
* Получение всех правил
*/
getRules(): TransformRule[];
/**
* Включение/отключение правила
*/
toggleRule(name: string, enabled: boolean): boolean;
/**
* Трансформация значения напрямую
*/
transform(value: any, type: TransformType, direction: TransformDirection, element: ICSElement, key?: string): Promise<TransformResult>;
/**
* Добавление встроенных трансформаций
*/
private addBuiltInTransforms;
/**
* Обновление статистики
*/
private updateStats;
/**
* Обновление статистики правила
*/
private updateRuleStats;
/**
* Получение статистики
*/
getStats(): TransformStats;
/**
* Сброс статистики
*/
resetStats(): void;
/**
* Очистка кэша
*/
clearCache(): void;
/**
* Обновление конфигурации
*/
updateConfig(config: Partial<TransformConfig>): void;
/**
* Получение конфигурации
*/
getConfig(): TransformConfig;
}
/**
* Фабричная функция для создания плагина трансформации
*/
export declare function transformPlugin(config?: Partial<TransformConfig>): TransformPlugin;
//# sourceMappingURL=TransformPlugin.d.ts.map