UNPKG

cs-element

Version:

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

433 lines 13.8 kB
import { ICSElement } from './interfaces'; /** * Типы готовых шаблонов */ export declare enum BlueprintType { FILE_SYSTEM = "file-system", TASK_MANAGER = "task-manager", ORG_CHART = "org-chart", WORKFLOW = "workflow", COMPONENT_TREE = "component-tree", DATA_MODEL = "data-model", CUSTOM = "custom" } /** * Категории шаблонов */ export declare enum BlueprintCategory { BUSINESS = "business", TECHNICAL = "technical", ORGANIZATIONAL = "organizational", EDUCATIONAL = "educational", PERSONAL = "personal" } /** * Параметр для настройки шаблона */ export interface BlueprintParameter { /** Уникальный идентификатор параметра */ id: string; /** Отображаемое имя параметра */ name: string; /** Описание параметра */ description?: string; /** Тип параметра */ type: 'string' | 'number' | 'boolean' | 'array' | 'object' | 'select' | 'multiselect'; /** Значение по умолчанию */ defaultValue?: any; /** Обязательный параметр */ required?: boolean; /** Варианты для select/multiselect */ options?: Array<{ value: any; label: string; description?: string; }>; /** Валидация параметра */ validation?: { min?: number; max?: number; pattern?: string; custom?: (value: any) => boolean | string; }; /** Зависимости от других параметров */ dependencies?: string[]; /** Условие отображения параметра */ condition?: (params: Record<string, any>) => boolean; } /** * Группа параметров */ export interface BlueprintParameterGroup { /** Идентификатор группы */ id: string; /** Название группы */ name: string; /** Описание группы */ description?: string; /** Параметры в группе */ parameters: BlueprintParameter[]; /** Сворачиваемая группа */ collapsible?: boolean; /** Свернута по умолчанию */ collapsed?: boolean; } /** * Метаданные шаблона */ export interface BlueprintMetadata { /** Автор шаблона */ author?: string; /** Версия шаблона */ version?: string; /** Дата создания */ created?: Date; /** Дата последнего обновления */ updated?: Date; /** Теги для поиска */ tags?: string[]; /** Лицензия */ license?: string; /** Ссылка на документацию */ documentation?: string; /** Примеры использования */ examples?: Array<{ name: string; description: string; parameters: Record<string, any>; }>; } /** * Результат генерации шаблона */ export interface BlueprintGenerationResult { /** Сгенерированные элементы */ elements: ICSElement[]; /** Корневой элемент */ rootElement?: ICSElement; /** Дополнительные метаданные */ metadata?: Record<string, any>; /** Предупреждения */ warnings?: string[]; /** Статистика генерации */ statistics?: { totalElements: number; generationTime: number; memoryUsed: number; }; } /** * Контекст генерации шаблона */ export interface BlueprintGenerationContext { /** Параметры для генерации */ parameters: Record<string, any>; /** Родительский элемент */ parentElement?: ICSElement; /** Префикс для ID элементов */ idPrefix?: string; /** Настройки генерации */ options?: { validateParameters?: boolean; generateMetadata?: boolean; preserveExisting?: boolean; dryRun?: boolean; }; } /** * Основной интерфейс шаблона */ export interface IBlueprint { /** Уникальный идентификатор шаблона */ readonly id: string; /** Название шаблона */ readonly name: string; /** Описание шаблона */ readonly description: string; /** Тип шаблона */ readonly type: BlueprintType; /** Категория шаблона */ readonly category: BlueprintCategory; /** Версия шаблона */ readonly version: string; /** Метаданные шаблона */ readonly metadata: BlueprintMetadata; /** Группы параметров */ readonly parameterGroups: BlueprintParameterGroup[]; /** Все параметры (плоский список) */ readonly parameters: BlueprintParameter[]; /** * Валидация параметров */ validateParameters(parameters: Record<string, any>): { valid: boolean; errors: Array<{ parameter: string; message: string; }>; warnings: Array<{ parameter: string; message: string; }>; }; /** * Получение значений параметров по умолчанию */ getDefaultParameters(): Record<string, any>; /** * Генерация структуры на основе параметров */ generate(context: BlueprintGenerationContext): Promise<BlueprintGenerationResult>; /** * Предварительный просмотр структуры */ preview(parameters: Record<string, any>): Promise<{ structure: string; elementCount: number; estimatedSize: number; }>; /** * Клонирование шаблона с модификациями */ clone(modifications?: Partial<IBlueprint>): IBlueprint; } /** * Фабрика шаблонов */ export interface IBlueprintFactory { /** * Создание шаблона по типу */ createBlueprint(type: BlueprintType, config?: any): IBlueprint; /** * Регистрация пользовательского шаблона */ registerBlueprint(blueprint: IBlueprint): void; /** * Получение списка доступных типов */ getAvailableTypes(): BlueprintType[]; /** * Создание пользовательского шаблона */ createCustomBlueprint(config: { id: string; name: string; description: string; generator: (context: BlueprintGenerationContext) => Promise<BlueprintGenerationResult>; parameters?: BlueprintParameter[]; metadata?: BlueprintMetadata; }): IBlueprint; } /** * Конфигурация менеджера шаблонов */ export interface BlueprintManagerConfig { /** Автоматическая регистрация встроенных шаблонов */ autoRegisterBuiltins?: boolean; /** Кэширование результатов генерации */ enableCaching?: boolean; /** Максимальный размер кэша */ maxCacheSize?: number; /** Валидация параметров по умолчанию */ defaultValidation?: boolean; /** Логирование операций */ enableLogging?: boolean; /** Пути для загрузки пользовательских шаблонов */ customBlueprintPaths?: string[]; } /** * Результат поиска шаблонов */ export interface BlueprintSearchResult { /** Найденные шаблоны */ blueprints: IBlueprint[]; /** Общее количество найденных */ total: number; /** Время поиска */ searchTime: number; /** Критерии поиска */ criteria: BlueprintSearchCriteria; } /** * Критерии поиска шаблонов */ export interface BlueprintSearchCriteria { /** Поиск по тексту */ query?: string; /** Фильтр по типу */ type?: BlueprintType[]; /** Фильтр по категории */ category?: BlueprintCategory[]; /** Фильтр по тегам */ tags?: string[]; /** Фильтр по автору */ author?: string; /** Сортировка */ sortBy?: 'name' | 'created' | 'updated' | 'popularity'; /** Направление сортировки */ sortOrder?: 'asc' | 'desc'; /** Лимит результатов */ limit?: number; /** Смещение для пагинации */ offset?: number; } /** * Статистика использования шаблонов */ export interface BlueprintUsageStatistics { /** ID шаблона */ blueprintId: string; /** Количество использований */ usageCount: number; /** Последнее использование */ lastUsed: Date; /** Средние параметры использования */ averageParameters?: Record<string, any>; /** Популярные комбинации параметров */ popularParameterCombinations?: Array<{ parameters: Record<string, any>; count: number; }>; } /** * Менеджер шаблонов */ export interface IBlueprintManager { /** Конфигурация менеджера */ readonly config: BlueprintManagerConfig; /** Фабрика шаблонов */ readonly factory: IBlueprintFactory; /** * Регистрация шаблона */ registerBlueprint(blueprint: IBlueprint): Promise<void>; /** * Получение шаблона по ID */ getBlueprint(id: string): Promise<IBlueprint | null>; /** * Получение всех зарегистрированных шаблонов */ getAllBlueprints(): Promise<IBlueprint[]>; /** * Поиск шаблонов */ searchBlueprints(criteria: BlueprintSearchCriteria): Promise<BlueprintSearchResult>; /** * Удаление шаблона */ unregisterBlueprint(id: string): Promise<boolean>; /** * Генерация структуры из шаблона */ generateFromBlueprint(blueprintId: string, parameters: Record<string, any>, options?: { parentElement?: ICSElement; idPrefix?: string; dryRun?: boolean; }): Promise<BlueprintGenerationResult>; /** * Валидация параметров шаблона */ validateBlueprintParameters(blueprintId: string, parameters: Record<string, any>): Promise<{ valid: boolean; errors: Array<{ parameter: string; message: string; }>; warnings: Array<{ parameter: string; message: string; }>; }>; /** * Получение статистики использования */ getUsageStatistics(blueprintId?: string): Promise<BlueprintUsageStatistics[]>; /** * Экспорт шаблона */ exportBlueprint(blueprintId: string): Promise<string>; /** * Импорт шаблона */ importBlueprint(blueprintData: string): Promise<IBlueprint>; /** * Очистка кэша */ clearCache(): Promise<void>; /** * Получение рекомендаций шаблонов */ getRecommendations(context?: { usageHistory?: string[]; currentProject?: any; userPreferences?: any; }): Promise<IBlueprint[]>; } /** * События менеджера шаблонов */ export interface BlueprintManagerEvents { 'blueprint-registered': { blueprint: IBlueprint; }; 'blueprint-unregistered': { blueprintId: string; }; 'blueprint-generated': { blueprintId: string; result: BlueprintGenerationResult; }; 'blueprint-error': { blueprintId: string; error: Error; }; 'cache-cleared': {}; 'statistics-updated': { statistics: BlueprintUsageStatistics[]; }; } /** * Построитель шаблонов */ export interface IBlueprintBuilder { /** * Установка базовой информации */ setBasicInfo(info: { id: string; name: string; description: string; type: BlueprintType; category: BlueprintCategory; }): IBlueprintBuilder; /** * Добавление группы параметров */ addParameterGroup(group: BlueprintParameterGroup): IBlueprintBuilder; /** * Добавление параметра */ addParameter(parameter: BlueprintParameter, groupId?: string): IBlueprintBuilder; /** * Установка метаданных */ setMetadata(metadata: BlueprintMetadata): IBlueprintBuilder; /** * Установка генератора */ setGenerator(generator: (context: BlueprintGenerationContext) => Promise<BlueprintGenerationResult>): IBlueprintBuilder; /** * Построение шаблона */ build(): IBlueprint; /** * Валидация конфигурации */ validate(): { valid: boolean; errors: string[]; }; } //# sourceMappingURL=blueprint-interfaces.d.ts.map