Yex is wrapper library for the Yjs CRDT library.
Summary
Functions
Apply a document update on the shared document.
Encode the document state as a single update message that can be applied on the remote document. Optionally, specify the target state vector to only write the missing differences to the update message.
@see encode_state_as_update/2
Computes the state vector and encodes it into an Binary. A state vector describes the state of the local client. The remote client can use this to exchange only the missing differences.
@see encode_state_vector/1
Returns the pending delete set (v1 encoded) for the document, if any.
Returns the pending update (v1 encoded) for the document, if any.
Normalize a number to a format that can be used in Yjs.
Creates a snapshot of the current document state.
Parses an update payload encoded in lib0 v1 format and returns a human-readable debug string.
Parses an update payload encoded in lib0 v2 format and returns a human-readable debug string.
Types
Functions
Apply a document update on the shared document.
Examples syncs two clients by exchanging the complete document structure
iex> doc1 = Yex.Doc.new()
iex> doc2 = Yex.Doc.new()
iex> {:ok, state1} = Yex.encode_state_as_update(doc1)
iex> {:ok, state2} = Yex.encode_state_as_update(doc2)
iex> Yex.apply_update(doc1, state2)
:ok
iex> Yex.apply_update(doc2, state1)
:ok
Encode the document state as a single update message that can be applied on the remote document. Optionally, specify the target state vector to only write the missing differences to the update message.
Examples
iex> doc = Yex.Doc.new()
iex> {:ok, _binary} = Yex.encode_state_as_update(doc)
@see encode_state_as_update/2
Computes the state vector and encodes it into an Binary. A state vector describes the state of the local client. The remote client can use this to exchange only the missing differences.
Examples
iex> doc = Yex.Doc.new()
iex> {:ok, _binary} = Yex.encode_state_vector(doc)
@see encode_state_vector/1
Returns the pending delete set (v1 encoded) for the document, if any.
A pending delete set holds deletions that arrived out of order and could
not yet be applied. Returns {:ok, binary()} when a pending delete set
exists, {:ok, nil} otherwise.
Returns the pending update (v1 encoded) for the document, if any.
A pending update accumulates operations that arrived out of order and
could not yet be applied because their causal predecessors are missing.
Returns {:ok, binary()} when a pending update exists, {:ok, nil} otherwise.
Normalize a number to a format that can be used in Yjs.
@spec snapshot(Yex.Doc.t()) :: {:ok, Yex.Snapshot.t()} | {:error, term()}
Creates a snapshot of the current document state.
The returned snapshot can later be used with
Yex.Snapshot.encode_state_v1/1 or Yex.Snapshot.encode_state_v2/1
to produce a time-travel update for that point-in-time state.
The source document must have garbage collection disabled
(Yex.Doc.Options.skip_gc == true) for snapshot-based time-travel encoding.
Parses an update payload encoded in lib0 v1 format and returns a human-readable debug string.
Parses an update payload encoded in lib0 v2 format and returns a human-readable debug string.