UNPKG

json-crdt-repo

Version:

JSON CRDT server and syncing local-first browser client

42 lines (41 loc) 1.38 kB
import { Log } from 'json-joy/lib/json-crdt/log/Log'; import { type JsonNode, Model, type Patch } from 'json-joy/lib/json-crdt'; import { Subject } from 'rxjs'; import type { BlockId, LocalRepo } from '../local/types'; export declare class EditSession<N extends JsonNode = JsonNode<any>> { readonly repo: LocalRepo; readonly id: BlockId; protected start: Model<N>; cursor: undefined | unknown; protected readonly session: number; log: Log<N>; protected _stopped: boolean; protected _stop$: Subject<void>; onsyncerror?: (error: Error | unknown) => void; private _syncRace; get model(): Model<N>; constructor(repo: LocalRepo, id: BlockId, start: Model<N>, cursor?: undefined | unknown, session?: number); dispose(): void; protected clear(): void; private saveInProgress; /** * Push (persist) any in-memory changes and pull (load) the latest state * from the local repo. */ sync(): Promise<null | { remote?: Promise<void>; }>; syncLog(): void; del(): Promise<void>; /** * Load latest state from the local repo. */ load(): Promise<void>; loadSilent(): void; protected reset(model: Model<N>): void; protected rebase(patches: Patch[]): void; protected merge(patches: Patch[]): void; private events; private onEvent; private drainEvents; }