@telcomdataperu/zeus-vue-model-manager
Version:
Vue 3 Model Manager for Microfrontends with OpenUI5-style API - Part of ZEUS Platform by TelcomdataPeru
44 lines (43 loc) • 2.05 kB
TypeScript
import { ComputedRef, WatchStopHandle } from 'vue';
import { ModelPath, JsonModelOptions, IJsonModel, JsonModelEvents, ValidationRule, ModelMetadata, ModelWatchOptions } from '../types';
type Indexable = Record<string, unknown>;
export declare class JsonModel<T extends Indexable = Indexable> implements IJsonModel<T> {
private data;
private options;
private validators;
private watchers;
private eventListeners;
private metadata;
private changeCount;
constructor(initialData: T, options?: JsonModelOptions);
getData(): T;
getProperty(path: ModelPath): unknown;
setProperty(path: ModelPath, value: unknown): void;
updateProperties(updates: Record<ModelPath, unknown>): void;
createBinding<R = unknown>(path: ModelPath): ComputedRef<R>;
addToArray(path: ModelPath, item: unknown): void;
removeFromArray(path: ModelPath, index: number): void;
updateArrayItem(path: ModelPath, predicate: (item: any, index: number) => boolean, updates: Record<string, unknown>): boolean;
getArrayLength(path: ModelPath): number;
hasProperty(path: ModelPath): boolean;
resetProperty(path: ModelPath, defaultValue?: unknown): void;
getObjectKeys(path: ModelPath): string[];
clone(): JsonModel<T>;
toJSON(): string;
fromJSON(jsonString: string): void;
watch(path: ModelPath, callback: (newValue: unknown, oldValue: unknown) => void, options?: ModelWatchOptions): WatchStopHandle;
addValidator(path: ModelPath, rule: ValidationRule): void;
removeValidator(path: ModelPath): void;
validate(path?: ModelPath): boolean;
getErrors(path?: ModelPath): string[];
private validatePath;
getMetadata(): ModelMetadata;
reset(paths?: ModelPath[]): void;
destroy(): void;
private updateMetadata;
private getAllPaths;
private emit;
on<K extends keyof JsonModelEvents>(event: K, listener: (data: JsonModelEvents[K]) => void): void;
off<K extends keyof JsonModelEvents>(event: K, listener: (data: JsonModelEvents[K]) => void): void;
}
export {};