crdt_lf library

Classes

Change
Change implementation for CRDT
ChangeStore
ChangeStore implementation for CRDT
CRDTDocument
CRDT Document implementation
CRDTFugueTextHandler
CRDT Text with Fugue implementation
CRDTListHandler<T>
CRDT List
CRDTMapHandler<T>
CRDT Map
CRDTORMapHandler<K, V>
CRDT OR-Map
CRDTORSetHandler<T>
CRDT OR-Set
CRDTTextHandler
CRDT Text
DAG
DAG (Directed Acyclic Graph) implementation for CRDT
DAGNode
Directed Acyclic Graph (DAG) Node implementation for CRDT
DiffSegment
A single diff segment with an operation and the associated text.
Frontiers
Frontiers implementation for CRDT
FugueElementID
Represents the ID of an element in the Fugue algorithm
FugueNode<T>
Represents a node in the FugueTree
FugueNodeTriple<T>
Represents the triple of a node and its children in the Fugue tree
FugueTextState
fugue text state
FugueTree<T>
Implementation of the Fugue tree for collaborative text editing
FugueValueNode<T>
Represents a node within the logical sequence maintained by a Fugue-based CRDT.
Handler<T>
Abstract class for CRDT handlers
Operation
Abstract class for operations
OperationId
OperationId implementation for CRDT
OperationType
Available operation on data for CRDT
ORMapEntry<V>
Entry in the OR-Map representing a (value, tag) pair
ORMapState<K, V>
State of the CRDTORMapHandler
ORMapTag
Tag for OR-Map entries, combining HLC and PeerId for proper ordering. Comparison is done first by HLC (causal order), then by PeerId (deterministic).
ORSetState<T>
State of the CRDTORSetHandler
PeerId
PeerId implementation for CRDT
Snapshot
Represents a snapshot of a CRDTDocument's state at a specific version.
VersionVector
A version vector is a map of PeerIds to their corresponding HybridLogicalClock.

Enums

DiffOp
Diff operation types.
FugueSide
Represents the side of a node in the FugueTree (left or right)

Mixins

CacheableStateProvider<T>
A provider that can provide a cacheable state of a CRDTDocument
DocumentConsumer
A consumer that can consume a CRDTDocument
SnapshotProvider
A provider that can provide a snapshot of the state of a CRDTDocument

Extensions

ChangeList on List<Change>
Utilities on List of Changes

Properties

peerIdRegex RegExp
A regular expression for validating PeerIds
final

Functions

myersDiff(String oldText, String newText) List<DiffSegment>
Compute Myers diff between two strings and return coalesced segments of Equal, Insert, and Remove operations.
setEquals<T>(Set<T>? a, Set<T>? b) bool
Checks if two sets are equal

Exceptions / Errors

CausallyNotReadyException
Thrown when a change cannot be applied because its causal dependencies (previous changes) are not yet present in the document's history.
ChangesCycleException
Thrown when a cycle is detected in the dependency graph of changes, which would violate the causal ordering of operations.
CrdtException
Base exception for all CRDT-related errors.
DuplicateNodeException
Thrown when attempting to add a node (e.g., a change or an element) to a data structure that already contains a node with the same identifier.
HandlerAlreadyRegisteredException
Thrown when attempting to register a handler that already exists.
MissingDependencyException
Thrown when a change references a dependency that does not exist in the document's history (the DAG).