cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
221 lines • 6.09 kB
TypeScript
import { ICSElement } from './interfaces';
/**
* Тип события DevTools
*/
export type DevToolsEventType = 'element:created' | 'element:modified' | 'element:destroyed' | 'element:selected' | 'structure:changed' | 'query:executed' | 'performance:measured' | 'error:occurred';
/**
* Базовое событие DevTools
*/
export interface DevToolsEvent {
type: DevToolsEventType;
timestamp: number;
elementId?: string;
data?: any;
metadata?: Record<string, any>;
}
/**
* Информация об элементе для инспектора
*/
export interface ElementInspectionInfo {
id: string;
type: string;
data: Record<string, any>;
children: string[];
parent?: string;
depth: number;
path: string[];
metadata: {
created: number;
modified: number;
size: number;
childCount: number;
isRoot: boolean;
};
}
/**
* Снимок структуры для DevTools
*/
export interface StructureSnapshot {
timestamp: number;
rootId: string;
elements: Map<string, ElementInspectionInfo>;
relationships: {
parentChild: Map<string, string[]>;
childParent: Map<string, string>;
};
statistics: {
totalElements: number;
maxDepth: number;
memoryUsage: number;
};
}
/**
* Опции сериализации
*/
export interface SerializationOptions {
includePrivateData?: boolean;
maxDepth?: number;
excludeFields?: string[];
includeMetadata?: boolean;
format?: 'json' | 'compact' | 'debug';
}
/**
* Результат сериализации
*/
export interface SerializationResult {
data: any;
metadata: {
version: string;
timestamp: number;
elementCount: number;
serializedSize: number;
};
}
/**
* Метрики производительности
*/
export interface PerformanceMetrics {
operationType: string;
duration: number;
elementCount: number;
memoryUsage: number;
timestamp: number;
metadata?: Record<string, any>;
}
/**
* Конфигурация профилировщика
*/
export interface ProfilerConfig {
enabled: boolean;
trackMemory: boolean;
trackOperations: boolean;
sampleRate: number;
maxHistorySize: number;
}
/**
* Отчет профилировщика
*/
export interface ProfilerReport {
timeRange: {
start: number;
end: number;
};
operations: PerformanceMetrics[];
summary: {
totalOperations: number;
averageDuration: number;
peakMemoryUsage: number;
slowestOperations: PerformanceMetrics[];
};
}
/**
* Интерфейс инспектора элементов
*/
export interface IElementInspector {
/**
* Получить информацию об элементе
*/
inspect(element: ICSElement): ElementInspectionInfo;
/**
* Создать снимок структуры
*/
createSnapshot(rootElement: ICSElement): StructureSnapshot;
/**
* Сериализовать элемент
*/
serialize(element: ICSElement, options?: SerializationOptions): SerializationResult;
/**
* Десериализовать элемент
*/
deserialize(data: any): ICSElement;
/**
* Найти элемент по пути
*/
findByPath(rootElement: ICSElement, path: string[]): ICSElement | null;
/**
* Получить путь к элементу
*/
getElementPath(element: ICSElement): string[];
}
/**
* Интерфейс профилировщика производительности
*/
export interface IPerformanceProfiler {
/**
* Конфигурация профилировщика
*/
config: ProfilerConfig;
/**
* Начать измерение операции
*/
startMeasurement(operationType: string, metadata?: Record<string, any>): string;
/**
* Завершить измерение операции
*/
endMeasurement(measurementId: string): PerformanceMetrics;
/**
* Получить отчет за период
*/
getReport(timeRange?: {
start: number;
end: number;
}): ProfilerReport;
/**
* Очистить историю метрик
*/
clearHistory(): void;
/**
* Включить/выключить профилировщик
*/
setEnabled(enabled: boolean): void;
}
/**
* Интерфейс менеджера DevTools
*/
export interface IDevToolsManager {
/**
* Инспектор элементов
*/
inspector: IElementInspector;
/**
* Профилировщик производительности
*/
profiler: IPerformanceProfiler;
/**
* Подписаться на события
*/
on(eventType: DevToolsEventType, handler: (event: DevToolsEvent) => void): void;
/**
* Отписаться от событий
*/
off(eventType: DevToolsEventType, handler: (event: DevToolsEvent) => void): void;
/**
* Отправить событие
*/
emitDevToolsEvent(event: DevToolsEvent): void;
/**
* Зарегистрировать элемент для отслеживания
*/
registerElement(element: ICSElement): void;
/**
* Отменить регистрацию элемента
*/
unregisterElement(element: ICSElement): void;
/**
* Получить все зарегистрированные элементы
*/
getRegisteredElements(): ICSElement[];
/**
* Создать глобальный снимок всех элементов
*/
createGlobalSnapshot(): Map<string, StructureSnapshot>;
/**
* Включить/выключить DevTools
*/
setEnabled(enabled: boolean): void;
/**
* Проверить, включены ли DevTools
*/
isEnabled(): boolean;
}
//# sourceMappingURL=devtools-interfaces.d.ts.map