atproto blogging
1//! CRDT-backed editor with AT Protocol sync.
2//!
3//! This crate provides:
4//! - `LoroTextBuffer`: Loro-backed text buffer implementing `TextBuffer` + `UndoManager`
5//! - `CrdtDocument`: Trait for documents that can sync to AT Protocol PDS
6//! - Generic sync logic for edit records (root/diff/draft)
7//! - Worker implementation for off-main-thread CRDT operations
8//! - Collab coordination types and helpers
9
10mod buffer;
11mod coordinator;
12mod document;
13mod error;
14mod sync;
15
16pub mod worker;
17
18pub use buffer::LoroTextBuffer;
19pub use coordinator::{
20 CoordinatorState, PEER_DISCOVERY_INTERVAL_MS, SESSION_REFRESH_INTERVAL_MS, SESSION_TTL_MINUTES,
21 compute_collab_topic,
22};
23pub use document::{CrdtDocument, SimpleCrdtDocument, SyncState};
24pub use error::CrdtError;
25pub use sync::{
26 CreateRootResult, PdsEditState, RemoteDraft, SyncResult,
27 build_draft_uri, create_diff, create_edit_root,
28 find_all_edit_roots, find_diffs_for_root, find_edit_root_for_draft,
29 list_drafts, load_all_edit_states, load_edit_state_from_draft,
30 load_edit_state_from_entry, sync_to_pds,
31};
32
33// Re-export worker types
34pub use worker::{WorkerInput, WorkerOutput};
35#[cfg(all(target_family = "wasm", target_os = "unknown"))]
36pub use worker::EditorReactor;
37
38// Re-export Loro types that consumers need
39pub use loro::{ExportMode, LoroDoc, LoroText, VersionVector};