Skip to content

TransactionLedger

Defined in: ledger.ts:167

An ordered, append-only log of LedgerRecords.

The internal array is kept sorted by the configured comparator at all times (binary-search insertion), so records is always in chronological order and merge is a stable union. Records are immutable once appended; the ledger never mutates them.

new TransactionLedger(options?): TransactionLedger;

Defined in: ledger.ts:178

ParameterType
optionsLedgerOptions

TransactionLedger

PropertyModifierTypeDescriptionDefined in
sourcereadonlystring | undefinedSource id stamped onto records this ledger authors.ledger.ts:169
get clock(): number;

Defined in: ledger.ts:194

The ledger’s logical (Lamport) clock — the high-water mark of observed lamports.

number


get comparator(): (a, b) => number;

Defined in: ledger.ts:199

The total-ordering comparator this ledger sorts by.

(a, b) => number


get length(): number;

Defined in: ledger.ts:189

number


get records(): readonly LedgerRecord[];

Defined in: ledger.ts:185

All records, in chronological order. Treat as read-only.

readonly LedgerRecord[]

iterator: Iterator<LedgerRecord>;

Defined in: ledger.ts:211

Iterator<LedgerRecord>


append(record): boolean;

Defined in: ledger.ts:236

Append an already-formed record (e.g. received from another ledger or the network). Advances the logical clock to at least the record’s lamport. Returns false if it was a duplicate and dedupe is on.

ParameterType
recordLedgerRecord

boolean


appendAll(records): number;

Defined in: ledger.ts:244

Append many records; returns how many were newly added.

ParameterType
recordsIterable<LedgerRecord>

number


apply(state): EditorState;

Defined in: ledger.ts:266

Fold the whole ledger over a state. Pure — the canonical replay primitive.

ParameterType
stateEditorState

EditorState


applyRange(
state,
start?,
end?): EditorState;

Defined in: ledger.ts:273

Fold a [start, end) slice of the ledger over a state.

ParameterType
stateEditorState
start?number
end?number

EditorState


at(index): LedgerRecord | undefined;

Defined in: ledger.ts:203

ParameterType
indexnumber

LedgerRecord | undefined


attach(editor, options?): () => void;

Defined in: ledger.ts:258

Subscribe an editor so every future committed transaction is recorded. Returns a detach function. Undo and redo now flow through dispatch as real transactions carrying inverse ops (undo) / original ops (redo), so they fire the transaction listeners and ARE recorded — replay therefore stays faithful across undo/redo. Use options.filter to skip transactions you don’t want in the log.

ParameterType
editorEditorHandle
optionsAttachOptions

() => void


clear(): void;

Defined in: ledger.ts:309

Drop all records. The logical clock is preserved (it must never run backwards).

void


clone(): TransactionLedger;

Defined in: ledger.ts:300

A shallow copy (records are shared, never mutated).

TransactionLedger


diff(other): LedgerDiff;

Defined in: ledger.ts:295

Set-difference against another ledger, by record id.

ParameterType
otherTransactionLedger

LedgerDiff


merge(...others): TransactionLedger;

Defined in: ledger.ts:290

Chronological union with other ledgers (deduped by id). Returns a new ledger.

ParameterType
…othersTransactionLedger[]

TransactionLedger


onRecord(listener): () => void;

Defined in: ledger.ts:314

ParameterType
listenerLedgerListener

() => void


record(tx, options?): LedgerRecord;

Defined in: ledger.ts:219

Record a transaction as a new entry authored by this ledger. Assigns the next lamport tick (unless one is supplied) and the ledger’s source.

ParameterType
txTransaction
optionsRecordFromTransactionOptions

LedgerRecord


replay(editor): void;

Defined in: ledger.ts:285

Replay the ledger onto a live editor in a single setState — no history pollution, one view update. The editor’s current state is the base the records are applied on top of, so replay onto a fresh editor seeded with the same base reproduces the source document exactly.

ParameterType
editorEditorHandle

void


serialize(): string;

Defined in: ledger.ts:328

string


slice(start?, end?): LedgerRecord[];

Defined in: ledger.ts:207

ParameterType
start?number
end?number

LedgerRecord[]


toJSON(): LedgerSnapshot;

Defined in: ledger.ts:319

LedgerSnapshot


static deserialize(payload, options?): TransactionLedger;

Defined in: ledger.ts:342

ParameterType
payloadstring
optionsLedgerOptions

TransactionLedger


static fromSnapshot(snapshot, options?): TransactionLedger;

Defined in: ledger.ts:332

ParameterType
snapshotLedgerSnapshot
optionsLedgerOptions

TransactionLedger