UNPKG

cs-element

Version:

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

720 lines 27.5 kB
import { EventEmitter } from 'eventemitter3'; import { ICSElement, ICSElementPattern, ElementOptions, ElementValue, SerializationOptions, SerializedElement, ValidationResult, QuerySelector } from '../types/interfaces'; import { CSElementPlugin, PluginOptions, PluginManager } from '../types/plugin-interfaces'; import { HistoryManager, HistoryConfig } from '../types/history-interfaces'; import { ReactivityManager, ReactivityConfig, ComputedProperty, ReactiveWatcher, ReactiveRef, ComputedFunction, WatchCallback, ComputedConfig, WatcherConfig } from '../types/reactivity-interfaces'; import { LiveQueryManager, LiveQuery, LiveQueryConfig, LiveQueryBuilder, LiveQueryCallback, QueryOptions } from '../types/live-query-interfaces'; import { GraphAlgorithmsManager } from '../types/graph-interfaces'; import { PersistenceManager } from '../types/persistence-interfaces'; import { ElementValidator } from '../utils/Validator'; /** * Основная реализация CSElement * Потокобезопасный класс для работы с графовыми структурами */ export declare class CSElement extends EventEmitter implements ICSElement { private _id; private _name; private _index; private _data; private _elements; private _elementsByIndex; private _owners; private _mainOwner; private _lock; private _lastElement; /** * Получить количество всех элементов в системе */ static get totalElementsCount(): number; /** * Получить все элементы из глобального реестра */ static getAllElements(): CSElement[]; constructor(name?: string, options?: ElementOptions); get id(): string; get name(): string; get index(): number; get data(): ReadonlyMap<string, any>; get mainOwner(): ICSElementPattern | null; get lastElement(): ICSElement | null; /** * Получить владельца по имени или индексу */ getOwner(nameOrIndex: string | number): ICSElementPattern | null; /** * Асинхронно получить владельца */ getOwnerAsync(nameOrIndex: string | number): Promise<ICSElementPattern | null>; /** * Получить элемент по имени или индексу */ getElement(nameOrIndex: string | number): ICSElementPattern | null; /** * Асинхронно получить элемент */ getElementAsync(nameOrIndex: string | number): Promise<ICSElementPattern | null>; /** * Получить относительный индекс для владельца */ getRelativeIndex(owner: ICSElementPattern): number; /** * Количество дочерних элементов */ elementsCount(): number; /** * Количество владельцев */ ownersCount(): number; /** * Получить все дочерние элементы */ getAllElements(): ReadonlyArray<ICSElementPattern>; /** * Получить всех владельцев */ getAllOwners(): ReadonlyArray<ICSElementPattern>; /** * Проверяет наличие дочернего элемента по имени или индексу */ hasElement(nameOrIndex: string | number): boolean; /** * Добавить новый элемент */ addElement(value: ElementValue, options?: ElementOptions): Promise<ICSElement>; /** * Удалить элемент */ removeElement(nameOrIndex: string | number | ICSElement): Promise<boolean>; /** * Установить данные */ setData(key: string, value: any): Promise<void>; /** * Получить данные */ getData(key: string): any; /** * Удалить данные */ deleteData(key: string): Promise<boolean>; /** * Войти в блокировку */ enterLock(): Promise<void>; /** * Выйти из блокировки */ leaveLock(): Promise<void>; /** * Проверить заблокирован ли элемент */ isLocked(): boolean; /** * Добавить себя как дочерний элемент к другому элементу */ addTo(owner: CSElement, options?: ElementOptions): Promise<ICSElement>; /** * Удалить себя из владельца */ removeFrom(owner: CSElement): Promise<boolean>; /** * Установить имя элемента (fluent API) */ setName(name: string): this; /** * Установить индекс элемента (fluent API) */ setIndex(index: number): this; /** * Добавить данные (fluent API) */ withData(key: string, value: any): this; /** * Добавить несколько данных сразу (fluent API) */ withDataObject(data: Record<string, any>): this; /** * Добавить дочерний элемент (fluent API) */ withChild(nameOrElement: string | CSElement, options?: ElementOptions): this; /** * Добавить несколько дочерних элементов (fluent API) */ withChildren(...names: string[]): this; /** * Создать новый элемент с fluent API */ static create(name?: string, options?: ElementOptions): CSElement; /** * Найти элемент по ID глобально */ static getElementById(id: string): CSElement | null; /** * Найти все элементы по имени глобально */ static getElementsByName(name: string): CSElement[]; /** * Установить плагин */ static use(plugin: CSElementPlugin, options?: PluginOptions): void; /** * Удалить плагин */ static uninstall(pluginName: string): boolean; /** * Получить менеджер плагинов */ static get plugins(): PluginManager; /** * Проверить, установлен ли плагин */ static hasPlugin(name: string): boolean; /** * Получить информацию о плагинах */ static getPluginInfo(): import("../types/plugin-interfaces").PluginInfo[]; /** * Получить менеджер персистентности */ static get persistence(): PersistenceManager; /** * Сохранить элемент в хранилище */ save(adapterName?: string, options?: any): Promise<any>; /** * Загрузить элемент из хранилища и восстановить его состояние */ static load(elementId: string, adapterName?: string, options?: any): Promise<CSElement | null>; /** * Удалить элемент из хранилища */ deleteFromStorage(adapterName?: string, options?: any): Promise<any>; /** * Найти все элементы по условию */ findElements(predicate: (element: CSElement) => boolean): Promise<CSElement[]>; /** * Найти первый элемент по условию */ findElement(predicate: (element: CSElement) => boolean): Promise<CSElement | null>; /** * Обход всех элементов в глубину */ traverseDepthFirst(callback: (element: CSElement) => void | Promise<void>, includeThis?: boolean): Promise<void>; /** * Обход всех элементов в ширину */ traverseBreadthFirst(callback: (element: CSElement) => void | Promise<void>, includeThis?: boolean): Promise<void>; /** * Получить путь до элемента */ getPath(): string[]; /** * Получить глубину элемента */ getDepth(): number; /** * Экспорт структуры в JSON */ toJSON(includeData?: boolean): any; /** * Клонировать элемент со всей структурой */ clone(deep?: boolean): Promise<CSElement>; /** * Удалить элемент из глобального реестра (вызывается при уничтожении) */ destroy(): void; /** * Получить статистику элемента */ getStats(): { totalElements: number; maxDepth: number; totalData: number; }; /** * Проверить является ли элемент предком */ isAncestorOf(element: CSElement): boolean; /** * Проверить является ли элемент потомком */ isDescendantOf(element: CSElement): boolean; /** * Улучшенная сериализация с опциями */ serialize(options?: SerializationOptions): SerializedElement; /** * Десериализация из объекта */ static deserialize(data: SerializedElement): CSElement; /** * Валидирует элемент используя глобальный валидатор */ validate(elementType?: string): ValidationResult; /** * Валидирует элемент используя кастомный валидатор */ validateWith(validator: ElementValidator, elementType?: string): ValidationResult; /** * Поиск элементов по селектору */ query(selector: string | QuerySelector): CSElement[]; /** * Поиск первого элемента по селектору */ queryOne(selector: string | QuerySelector): CSElement | null; /** * Проверяет, соответствует ли элемент селектору */ matches(selector: string | QuerySelector): boolean; /** * Создает селектор для поиска */ static createSelector(): import("../utils/QueryEngine").SelectorBuilder; /** * Получает предопределенные селекторы */ static get selectors(): { byName: (name: string) => QuerySelector; byIndex: (index: number) => QuerySelector; leaves: () => QuerySelector; roots: () => QuerySelector; withChildrenCount: (count: number) => QuerySelector; atDepth: (depth: number) => QuerySelector; withDataType: (key: string, type: string) => QuerySelector; }; /** * Массовое обновление данных с валидацией */ updateData(updates: Record<string, any>, validate?: boolean): Promise<ValidationResult | null>; /** * Получает все данные как обычный объект */ getDataAsObject(): Record<string, any>; /** * Проверяет наличие данных по ключу */ hasData(key: string): boolean; /** * Получает размер данных */ getDataSize(): number; /** * Очищает все данные */ clearData(): Promise<void>; /** * Получить менеджер истории */ static get history(): HistoryManager; /** * Настроить систему истории */ static configureHistory(config: HistoryConfig): void; /** * Отменить последнюю операцию */ static undo(): Promise<any>; /** * Повторить отмененную операцию */ static redo(): Promise<any>; /** * Отменить до определенной операции */ static undoTo(operationId: string): Promise<any>; /** * Повторить до определенной операции */ static redoTo(operationId: string): Promise<any>; /** * Получить состояние истории */ static getHistoryState(): import("../types/history-interfaces").HistoryState; /** * Получить операции истории */ static getHistoryOperations(limit?: number): import("../types/history-interfaces").HistoryOperation[]; /** * Получить снимки истории */ static getHistorySnapshots(limit?: number): import("../types/history-interfaces").HistorySnapshot[]; /** * Создать снимок текущего состояния элемента */ createSnapshot(description?: string): import("../types/history-interfaces").HistorySnapshot; /** * Очистить историю */ static clearHistory(): void; /** * Экспорт истории */ static exportHistory(): import("../types/history-interfaces").HistoryExport; /** * Импорт истории */ static importHistory(data: any): void; /** * Подписка на события истории */ static onHistoryEvent(event: string, callback: Function): void; /** * Отписка от событий истории */ static offHistoryEvent(event: string, callback: Function): void; private recordOperation; /** * Получить глобальный менеджер реактивности */ static get reactivity(): ReactivityManager; /** * Настроить систему реактивности */ static configureReactivity(config: ReactivityConfig): void; /** * Создать computed свойство */ static computed<T>(compute: ComputedFunction<T>, config?: ComputedConfig): ComputedProperty<T>; /** * Создать наблюдатель за изменениями */ static watch(path: string | string[], callback: WatchCallback, config?: WatcherConfig): ReactiveWatcher; /** * Удалить наблюдатель */ static unwatch(watcherId: string): boolean; /** * Получить значение computed свойства */ static getComputedValue<T>(computedId: string): T | undefined; /** * Создать реактивную ссылку */ static ref<T>(value: T): ReactiveRef<T>; /** * Создать реактивный объект */ static reactive<T extends object>(obj: T): T; /** * Получить граф зависимостей */ static getDependencyGraph(): import("../types/reactivity-interfaces").DependencyGraph; /** * Получить статистику реактивности */ static getReactivityStats(): import("../types/reactivity-interfaces").ReactivityStats; /** * Очистить все реактивные данные */ static clearReactivity(): void; /** * Подписаться на события реактивности */ static onReactivityEvent(event: string, callback: Function): void; /** * Отписаться от событий реактивности */ static offReactivityEvent(event: string, callback: Function): void; /** * Создать новую область видимости */ static createScope(parentId?: string): import("../types/reactivity-interfaces").ReactiveScope; /** * Выполнить функцию в контексте области видимости */ static runInScope<T>(scopeId: string, fn: () => T): T; /** * Очистить область видимости и все её дочерние элементы */ static disposeScope(scopeId: string): void; /** * Очистить computed и все его дочерние элементы */ static disposeComputed(computedId: string): void; /** * Очистить watcher и все его дочерние элементы */ static disposeWatcher(watcherId: string): void; /** * Получить текущий контекст выполнения */ static getCurrentContext(): import("../types/reactivity-interfaces").ReactiveContext; /** * Установить родителя для auto-dispose */ static setParent(childId: string, parentId: string, type: 'computed' | 'watcher'): void; /** * Получить всех детей элемента */ static getChildren(parentId: string, type?: 'computed' | 'watcher'): string[]; /** * Проверить, был ли элемент disposed */ static isDisposed(id: string, type: 'computed' | 'watcher'): boolean; /** * Создать computed свойство для этого элемента */ computed<T>(compute: ComputedFunction<T>, config?: ComputedConfig): ComputedProperty<T>; /** * Создать наблюдатель за свойством этого элемента */ watch(property: string, callback: WatchCallback, config?: WatcherConfig): ReactiveWatcher; /** * Наблюдать за дочерними элементами */ watchChildren(callback: WatchCallback, config?: WatcherConfig): ReactiveWatcher; /** * Создать реактивную версию данных элемента */ makeReactive(): this; private notifyDataChange; private notifyChildrenChange; /** * Получить менеджер Live queries */ static get liveQueries(): LiveQueryManager; /** * Получить менеджер алгоритмов работы с графами */ static get graphAlgorithms(): GraphAlgorithmsManager; /** * Создать live query */ static createLiveQuery<T = any>(selector: string, options?: QueryOptions, config?: LiveQueryConfig): LiveQuery<T>; /** * Получить builder для live query */ static queryBuilder<T = any>(): LiveQueryBuilder<T>; /** * Подписаться на live query */ static subscribeLiveQuery<T>(queryId: string, callback: LiveQueryCallback<T>): string; /** * Отписаться от live query */ static unsubscribeLiveQuery(queryId: string, subscriptionId: string): boolean; /** * Запустить live query */ static startLiveQuery(queryId: string): void; /** * Остановить live query */ static stopLiveQuery(queryId: string): void; /** * Получить live query */ static getLiveQuery(queryId: string): LiveQuery | undefined; /** * Получить все live queries */ static getAllLiveQueries(): LiveQuery[]; /** * Удалить live query */ static removeLiveQuery(queryId: string): boolean; /** * Получить статистику live query */ static getLiveQueryStats(): import("../types/live-query-interfaces").LiveQueryStats; /** * Очистить все live query */ static clearLiveQueries(): void; /** * Обновить все live query */ static updateAllLiveQueries(): void; /** * Подписаться на события live query */ static onLiveQueryEvent(callback: (event: any) => void): void; /** * Отписаться от событий live query */ static offLiveQueryEvent(callback: (event: any) => void): void; /** * Создать live query для дочерних элементов */ createChildrenLiveQuery<T = any>(selector?: string, options?: QueryOptions, config?: LiveQueryConfig): LiveQuery<T>; /** * Создать live query для всех потомков */ createDescendantsLiveQuery<T = any>(selector?: string, options?: QueryOptions, config?: LiveQueryConfig): LiveQuery<T>; /** * Наблюдать за дочерними элементами */ watchChildrenLive<T = any>(callback: LiveQueryCallback<T>, config?: LiveQueryConfig): LiveQuery<T>; /** * Наблюдать за элементами с определенными данными */ watchElementsWithData<T = any>(dataKey: string, callback: LiveQueryCallback<T>, config?: LiveQueryConfig): LiveQuery<T>; /** * Уведомить live query об изменении элемента */ private notifyElementChange; /** * Найти путь между узлами */ static findPath(from: CSElement, to: CSElement, options?: any): Promise<import("../types/graph-interfaces").PathResult | null>; /** * Найти кратчайший путь */ static findShortestPath(from: CSElement, to: CSElement, options?: any): Promise<import("../types/graph-interfaces").PathResult | null>; /** * Найти все пути */ static findAllPaths(from: CSElement, to: CSElement, options?: any): Promise<import("../types/graph-interfaces").PathResult[]>; /** * Обнаружить циклы */ static detectCycles(root: CSElement, options?: any): Promise<import("../types/graph-interfaces").CycleResult>; /** * Проверить наличие циклов */ static hasCycle(root: CSElement, options?: any): Promise<boolean>; /** * Найти цикл */ static findCycle(root: CSElement, options?: any): Promise<import("../types/graph-interfaces").GraphCycle | null>; /** * Найти компоненты связности */ static findConnectedComponents(root: CSElement, options?: any): Promise<import("../types/graph-interfaces").ComponentResult>; /** * Найти сильно связанные компоненты */ static findStronglyConnectedComponents(root: CSElement, options?: any): Promise<import("../types/graph-interfaces").ComponentResult>; /** * Проверить связность */ static isConnected(root: CSElement, options?: any): Promise<boolean>; /** * Построить представление графа */ static buildGraph(root: CSElement, options?: any): Promise<import("../types/graph-interfaces").GraphRepresentation>; /** * Проанализировать граф */ static analyzeGraph(root: CSElement, options?: any): Promise<import("../types/graph-interfaces").GraphAnalysisResult>; /** * Получить статистику графа */ static getGraphStatistics(root: CSElement, options?: any): Promise<import("../types/graph-interfaces").GraphStatistics>; /** * Получить расстояние между узлами */ static getDistance(from: CSElement, to: CSElement, options?: any): Promise<number>; /** * Получить соседей */ static getNeighbors(node: CSElement, options?: any): CSElement[]; /** * Получить степень вершины */ static getDegree(node: CSElement, options?: any): number; /** * Топологическая сортировка */ static topologicalSort(root: CSElement, options?: any): Promise<string[]>; /** * Минимальное остовное дерево */ static minimumSpanningTree(root: CSElement, options?: any): Promise<import("../types/graph-interfaces").GraphRepresentation>; /** * Рассчитать центральность */ static calculateCentrality(root: CSElement, options?: any): Promise<Map<string, number>>; /** * Получить метрики производительности */ static getGraphAlgorithmMetrics(): import("../types/graph-interfaces").AlgorithmMetrics; /** * Очистить кэш алгоритмов */ static clearGraphAlgorithmCache(): void; /** * Настроить алгоритмы */ static configureGraphAlgorithms(config: any): void; /** * Подписаться на события */ static onGraphAlgorithmEvent(callback: (event: any) => void): void; /** * Отписаться от событий */ static offGraphAlgorithmEvent(callback: (event: any) => void): void; /** * Найти путь до другого элемента */ findPathTo(target: CSElement, options?: any): Promise<import("../types/graph-interfaces").PathResult | null>; /** * Найти кратчайший путь до другого элемента */ findShortestPathTo(target: CSElement, options?: any): Promise<import("../types/graph-interfaces").PathResult | null>; /** * Найти все пути до другого элемента */ findAllPathsTo(target: CSElement, options?: any): Promise<import("../types/graph-interfaces").PathResult[]>; /** * Обнаружить циклы начиная отсюда */ detectCyclesFromHere(options?: any): Promise<import("../types/graph-interfaces").CycleResult>; /** * Проверить наличие циклов отсюда */ hasCycleFromHere(options?: any): Promise<boolean>; /** * Найти компоненты связности отсюда */ findConnectedComponentsFromHere(options?: any): Promise<import("../types/graph-interfaces").ComponentResult>; /** * Проверить связность отсюда */ isConnectedFromHere(options?: any): Promise<boolean>; /** * Построить граф отсюда */ buildGraphFromHere(options?: any): Promise<import("../types/graph-interfaces").GraphRepresentation>; /** * Проанализировать граф отсюда */ analyzeGraphFromHere(options?: any): Promise<import("../types/graph-interfaces").GraphAnalysisResult>; /** * Получить статистику графа отсюда */ getGraphStatisticsFromHere(options?: any): Promise<import("../types/graph-interfaces").GraphStatistics>; /** * Получить расстояние до другого элемента */ getDistanceTo(target: CSElement, options?: any): Promise<number>; /** * Получить соседей отсюда */ getNeighborsFromHere(options?: any): CSElement[]; /** * Получить степень отсюда */ getDegreeFromHere(options?: any): number; /** * Топологическая сортировка отсюда */ topologicalSortFromHere(options?: any): Promise<string[]>; /** * Минимальное остовное дерево отсюда */ minimumSpanningTreeFromHere(options?: any): Promise<import("../types/graph-interfaces").GraphRepresentation>; /** * Рассчитать центральность для этого узла */ calculateCentralityFromHere(options?: any): Promise<Map<string, number>>; /** * Преобразует элемент и его потомков в простой объект для JSPath */ toJSPathObject(): any; } //# sourceMappingURL=CSElement.d.ts.map