UNPKG

@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
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 {};