Skip to content
Sheetwrite

Sheetwrite / Documentation

SyncCoordinator@sheetwrite/core

Deterministic, transport-neutral optimistic sync.

Deterministic, transport-neutral optimistic sync. Local rendering is never blocked: changes queue immediately, while hosts explicitly call sendNext or retry to perform network work.

Members 18

constructor
constructor(grid: Grid, adapter: PersistenceAdapter, options: SyncCoordinatorOptions);
applyVersionedOperation
applyVersionedOperation: (operation: VersionedOperation) => Promise<void>;
destroy
destroy: () => void;
flush
flush: () => Promise<readonly PersistenceCommitResponse[]>;
handleResponse Public for transports that deliver responses independently of send promises.
handleResponse: (response: PersistenceCommitResponse, requestedMutationId?: string) => Promise<void>;
on
on: (listener: SyncListener) => () => void;
pendingCommits
pendingCommits: () => readonly SyncMutationRecord[];
pendingCount
pendingCount: number;
ready Resolves after durable work is restored and every startup commit is visible locally.
ready: () => Promise<void>;
resumeAfterReload Resume only after the host remounted/reloaded document state and reapplied retained local operations.
resumeAfterReload: (snapshot: WorkbookSnapshot) => Promise<void>;

Resume only after the host remounted/reloaded document state and reapplied retained local operations. No lossy structural merge is attempted here.

retry Explicit retry; the original mutation ID and durable record are retained.
retry: (clientMutationId: string) => Promise<PersistenceCommitResponse | null>;
retryPersistence
retryPersistence: (clientMutationId: string) => Promise<boolean>;
send
send: (clientMutationId: string) => Promise<PersistenceCommitResponse | null>;
sendNext
sendNext: () => Promise<PersistenceCommitResponse | null>;
serverVersion
serverVersion: number;
setOnline Update connectivity. Reconnection drains durable work in order; going offline aborts in-flight requests so retries retain their mutation IDs.
setOnline: (online: boolean) => void;
state
state: SyncStateSnapshot;
subscribe
subscribe: (source: RemoteOperationSource | AsyncIterable<VersionedOperation>) => () => void

Declaration

View full TypeScript declaration
class SyncCoordinator {
constructor(
grid: Grid,
adapter: PersistenceAdapter,
options: SyncCoordinatorOptions,
);
applyVersionedOperation: (operation: VersionedOperation) => Promise<void>;
destroy: () => void;
flush: () => Promise<readonly PersistenceCommitResponse[]>;
handleResponse: (
response: PersistenceCommitResponse,
requestedMutationId?: string,
) => Promise<void>;
on: (listener: SyncListener) => () => void;
pendingCommits: () => readonly SyncMutationRecord[];
pendingCount: number;
ready: () => Promise<void>;
resumeAfterReload: (snapshot: WorkbookSnapshot) => Promise<void>;
retry: (
clientMutationId: string,
) => Promise<PersistenceCommitResponse | null>;
retryPersistence: (clientMutationId: string) => Promise<boolean>;
send: (
clientMutationId: string,
) => Promise<PersistenceCommitResponse | null>;
sendNext: () => Promise<PersistenceCommitResponse | null>;
serverVersion: number;
setOnline: (online: boolean) => void;
state: SyncStateSnapshot;
subscribe: (
source: RemoteOperationSource | AsyncIterable<VersionedOperation>,
) => () => void;
}