/** * Типы для системы миграции конфигураций виджета чата */ import { WidgetConfig } from '../config.types'; /** Версии конфигурации */ export type ConfigVersion = '1.0' | '2.0' | '3.0' | '3.1'; /** * Ordered list of supported config versions. * Keep this in sync with `ConfigVersion` union above. */ export declare const CONFIG_VERSIONS: readonly ["1.0", "2.0", "3.0", "3.1"]; /** Latest supported config version. */ export declare const LATEST_CONFIG_VERSION: ConfigVersion; /** Результат миграции */ export interface MigrationResult { success: boolean; data?: T; errors: string[]; warnings: string[]; fromVersion: ConfigVersion; toVersion: ConfigVersion; appliedStrategies: string[]; } /** Контекст миграции */ export interface MigrationContext { fromVersion: ConfigVersion; toVersion: ConfigVersion; config: any; options?: MigrationOptions; } /** Опции миграции */ export interface MigrationOptions { /** Строгий режим - останавливаться на ошибках */ strict?: boolean; /** Сохранять неизвестные поля */ preserveUnknown?: boolean; /** Логировать процесс миграции */ verbose?: boolean; /** Применить только определенные стратегии */ onlyStrategies?: string[]; /** Исключить определенные стратегии */ excludeStrategies?: string[]; } /** Абстрактная стратегия миграции */ export interface MigrationStrategy { /** Уникальное имя стратегии */ name: string; /** Описание что делает стратегия */ description: string; /** Версии для которых применяется */ appliesTo: { from: ConfigVersion; to: ConfigVersion; }; /** Проверка применимости стратегии */ canApply(context: MigrationContext): boolean; /** Применение стратегии */ apply(context: MigrationContext): MigrationStepResult; /** Откат стратегии (если возможен) */ rollback?(context: MigrationContext): MigrationStepResult; } /** Результат шага миграции */ export interface MigrationStepResult { success: boolean; data?: any; errors: string[]; warnings: string[]; modified: boolean; } /** Команда миграции */ export interface MigrationCommand { /** Имя команды */ name: string; /** Описание команды */ description: string; /** Выполнить команду */ execute(config: any, options?: any): MigrationStepResult; } /** Детектор версии конфигурации */ export interface VersionDetector { /** Определить версию конфигурации */ detect(config: any): ConfigVersion | null; } /** Валидатор конфигурации */ export interface ConfigValidator { /** Валидировать конфигурацию для версии */ validate(config: any, version: ConfigVersion): { isValid: boolean; errors: string[]; warnings: string[]; }; } /** Схема конфигурации для конкретной версии */ export interface ConfigSchema { version: ConfigVersion; schema: any; required: string[]; optional: string[]; } /** Отчет о миграции */ export interface MigrationReport { timestamp: Date; fromVersion: ConfigVersion; toVersion: ConfigVersion; success: boolean; duration: number; appliedStrategies: Array<{ name: string; success: boolean; errors: string[]; warnings: string[]; }>; totalErrors: number; totalWarnings: number; summary: string; } /** Логгер для миграции */ export interface MigrationLogger { info(message: string, context?: any): void; warn(message: string, context?: any): void; error(message: string, context?: any): void; debug(message: string, context?: any): void; } /** Базовые типы для различных версий конфигурации */ /** Конфигурация V1 */ export interface ConfigV1 { settings: { widgetTitle: string; welcomeMessage: string; bgChat: string; gapMessageLine: number; paddingChat: number; fontFamily: string; borderRadius: string; launchView: string; letterSpacing: number; logo: string; fontWeight: number; }; sections: { top: { params: { size: string; }; chipWidgetTitle: { color: string; bgColor: string; }; btnClose: { color: string; bgColor: string; }; }; inside: { params: { size: string; }; messageUser: { color: string; bgColor: string; }; messageBot: { color: string; bgColor: string; }; welcomeMessage: { color: string; }; }; bottom: { params: { size: string; }; inputSend: { color: string; bgColor: string; }; btnSend: { color: string; bgColor: string; type: string; }; activeBtn: { color: string; bgColor: string; }; }; }; } /** Конфигурация V2 - расширенная версия */ export interface ConfigV2 extends WidgetConfig { } /** Маппинг типов конфигурации по версиям */ export type ConfigByVersion = { '1.0': ConfigV1; '2.0': ConfigV2; '3.0': WidgetConfig; '3.1': WidgetConfig; }; /** Фабрика для создания пустых конфигураций */ export type ConfigFactory = { [V in ConfigVersion]: () => ConfigByVersion[V]; }; //# sourceMappingURL=types.d.ts.map