cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
131 lines • 3.93 kB
TypeScript
/**
* Основные типы и интерфейсы для библиотеки 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