UNPKG

cs-element

Version:

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

131 lines 3.93 kB
/** * Основные типы и интерфейсы для библиотеки CSElement */ export type ElementValue = any; /** * Опции для создания элемента */ export interface ElementOptions { name?: string; data?: Map<string, any>; index?: number; } /** * Базовый интерфейс для паттерна CSElement */ export interface ICSElementPattern { readonly id: string; readonly name: string; readonly index: number; readonly data: ReadonlyMap<string, any>; readonly mainOwner: ICSElementPattern | 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>; } /** * Расширенный интерфейс для работы с элементами */ export interface ICSElement extends ICSElementPattern { readonly lastElement: ICSElement | null; 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; } /** * Типы событий элемента */ export declare enum ElementEventType { ElementAdded = "element:added", ElementRemoved = "element:removed", DataChanged = "data:changed", OwnerChanged = "owner:changed", Locked = "locked", Unlocked = "unlocked" } /** * Интерфейс события элемента */ export interface ElementEvent { type: string; target: ICSElement; data?: any; timestamp: number; } export interface SerializationOptions { includeChildren?: boolean; includeData?: boolean; includeOwners?: boolean; includeMetadata?: boolean; maxDepth?: number; excludeFields?: string[]; } export interface SerializedElement { id: string; name?: string; index?: number; data?: Record<string, any>; children?: SerializedElement[]; owners?: string[]; metadata?: { createdAt: number; updatedAt: number; depth: number; path: string; }; } export interface ValidationRule { field: string; type: 'required' | 'type' | 'range' | 'custom' | 'schema' | 'async' | 'pattern' | 'enum' | 'array' | 'object'; value?: any; validator?: (value: any, element: ICSElement) => boolean | string | Promise<boolean | string>; message?: string; } export interface ValidationResult { isValid: boolean; errors: ValidationError[]; warnings?: ValidationError[]; } export interface ValidationError { field: string; message: string; value?: any; } export interface QuerySelector { name?: string; index?: number; hasData?: string[]; depth?: number | { min?: number; max?: number; }; custom?: (element: ICSElement) => boolean; } export interface PersistenceAdapter { save(elements: ICSElement[], format: 'json' | 'xml'): Promise<string>; load(data: string, format: 'json' | 'xml'): Promise<ICSElement[]>; } export interface PerformanceMetrics { totalElements: number; averageDepth: number; maxDepth: number; memoryUsage: number; operationCounts: { create: number; read: number; update: number; delete: number; }; } //# sourceMappingURL=interfaces.d.ts.map