mosx
Version:
Multiview observable state management engine
18 lines (17 loc) • 780 B
TypeScript
/// <reference types="node" />
import { ITreeNode, IReversibleJsonPatch, MosxTracker, IListener, IChange } from "../internal";
export declare abstract class Serializer<T = any> {
nodes: WeakMap<any, ITreeNode>;
listeneres: Set<IListener<T>>;
root: T;
constructor(tracker: MosxTracker);
onCreate(): void;
beforeChange(change: IChange, parent: ITreeNode): void;
afterChange(change: IChange, parent: ITreeNode): void;
onCreateNode(entry: ITreeNode, target: any): void;
onDeleteNode(entry: ITreeNode): void;
abstract encodeSnapshot(value: any): Buffer;
abstract decodeSnapshot(value: Buffer): any;
abstract encodePatch(patch: IReversibleJsonPatch, target: any): Buffer;
abstract decodePatch(buffer: Buffer): IReversibleJsonPatch;
}