cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
85 lines • 4.16 kB
TypeScript
/**
* Менеджер типизированных элементов
*/
import { EventEmitter } from 'events';
import { ITypedElementManager, TypedElementSchema, TypedFieldSchema, ITypedElement, SchemaValidationResult, TypeStats, TypedElementConfig } from '../types/typed-elements-interfaces.js';
/**
* Менеджер для работы с типизированными элементами
*/
export declare class TypedElementManager extends EventEmitter implements ITypedElementManager {
private schemas;
private elements;
private config;
private inheritanceGraph;
constructor(config?: Partial<TypedElementConfig>);
registerSchema<T>(schema: TypedElementSchema<T>): void;
unregisterSchema(typeName: string): void;
getSchema<T>(typeName: string): TypedElementSchema<T> | null;
getAllSchemas(): Map<string, TypedElementSchema>;
createElement<T>(typeName: string, data?: Partial<T>): Promise<ITypedElement<T>>;
createFromSchema<T>(schema: TypedElementSchema<T>, data?: Partial<T>): Promise<ITypedElement<T>>;
validateSchema<T>(schema: TypedElementSchema<T>): SchemaValidationResult;
validateInheritance(typeName: string, parentTypeName: string): boolean;
findElementsByType<T>(typeName: string): ITypedElement<T>[];
findElementsByField<T>(fieldName: keyof T, value: T[keyof T]): ITypedElement<T>[];
buildInheritanceChain(typeName: string): string[];
canInherit(childType: string, parentType: string): boolean;
/**
* Получает все поля с учетом наследования
*/
getInheritedFields<T>(typeName: string): TypedFieldSchema<T>[];
/**
* Создает композитную схему из нескольких схем
*/
createCompositeSchema<T>(name: string, version: string, sourceSchemas: string[], additionalFields?: TypedFieldSchema<T>[], options?: {
description?: string;
sealed?: boolean;
abstract?: boolean;
resolveConflicts?: 'first' | 'last' | 'merge' | 'error';
}): TypedElementSchema<T>;
/**
* Объединяет два поля при композиции
*/
private mergeFields;
/**
* Создает схему-наследник от существующей схемы
*/
createInheritedSchema<T>(name: string, version: string, parentTypeName: string, additionalFields?: TypedFieldSchema<T>[], overrideFields?: Partial<Record<keyof T, TypedFieldSchema<T>>>, options?: {
description?: string;
sealed?: boolean;
abstract?: boolean;
}): TypedElementSchema<T>;
/**
* Проверяет совместимость типов для присваивания
*/
isTypeCompatible(childType: string, parentType: string): boolean;
/**
* Получает общий родительский тип для двух типов
*/
getCommonParentType(type1: string, type2: string): string | null;
/**
* Создает интерфейс (абстрактный тип) с методами
*/
createInterface<T>(name: string, version: string, fields: TypedFieldSchema<T>[], methods?: Record<string, Function>, options?: {
description?: string;
sealed?: boolean;
}): TypedElementSchema<T>;
/**
* Реализует интерфейс в конкретном типе
*/
implementInterface<T>(typeName: string, interfaceName: string, implementation?: Record<string, Function>): void;
getTypeStats(): TypeStats;
private updateInheritanceGraph;
private getInheritanceDepth;
private isValidFieldType;
removeElement(elementId: string): boolean;
getElement(elementId: string): ITypedElement | null;
getAllElements(): ITypedElement[];
updateConfig(config: Partial<TypedElementConfig>): void;
getConfig(): TypedElementConfig;
clear(): void;
exportSchemas(): Record<string, TypedElementSchema>;
importSchemas(schemas: Record<string, TypedElementSchema>): void;
}
export declare const defaultTypedElementManager: TypedElementManager;
//# sourceMappingURL=TypedElementManager.d.ts.map