etherpad-lite/doc/api/changeset_library.adoc
Peter Metz 58fd7a8ebb
docs(api): fix broken changeset_library GitHub URLs (.js -> .ts) (#7131)
Signed-off-by: Peter Metz <peter.metz@unarin.com>
2025-09-23 16:28:53 +02:00

47 lines
1.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

== Changeset Library
The https://github.com/ether/etherpad-lite/blob/develop/src/static/js/Changeset.ts[changeset
library]
provides tools to create, read, and apply changesets.
=== Changeset
[source,javascript]
----
const Changeset = require('ep_etherpad-lite/static/js/Changeset');
----
A changeset describes the difference between two revisions of a document. When a
user edits a pad, the browser generates and sends a changeset to the server,
which relays it to the other users and saves a copy (so that every past revision
is accessible).
A transmitted changeset looks like this:
[source]
----
'Z:z>1|2=m=b*0|1+1$\n'
----
=== Attribute Pool
[source,javascript]
----
const AttributePool = require('ep_etherpad-lite/static/js/AttributePool');
----
Changesets do not include any attribute keyvalue pairs. Instead, they use
numeric identifiers that reference attributes kept in an https://github.com/ether/etherpad-lite/blob/develop/src/static/js/AttributePool.ts[attribute pool].
This attribute interning reduces the transmission overhead of attributes that
are used many times.
There is one attribute pool per pad, and it includes every current and
historical attribute used in the pad.
=== Further Reading
Detailed information about the changesets & Easysync protocol:
* https://github.com/ether/etherpad-lite/blob/develop/doc/easysync/easysync-notes.pdf[Easysync Protocol]
* https://github.com/ether/etherpad-lite/blob/develop/doc/easysync/easysync-full-description.pdf[Etherpad and EasySync Technical Manual]