json-crdt-repo
Version:
JSON CRDT server and syncing local-first browser client
42 lines (41 loc) • 1.38 kB
TypeScript
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;
}