cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
433 lines • 13.8 kB
TypeScript
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