radicle_node/
lib.rs

1// N.b. Rust 1.85 introduced some annoying clippy warnings about using `b""`
2// syntax in place of `b''`, but in our cases they were u8 and not [u8] so the
3// suggestions did not make sense.
4#![allow(clippy::byte_char_slices)]
5
6use std::str::FromStr;
7use std::sync::LazyLock;
8
9pub mod control;
10pub mod runtime;
11pub(crate) use radicle_protocol::service;
12#[cfg(any(test, feature = "test"))]
13pub mod test;
14#[cfg(test)]
15pub mod tests;
16pub mod wire;
17pub mod worker;
18
19use radicle::version::Version;
20
21pub use localtime::{LocalDuration, LocalTime};
22pub use radicle::node::Link;
23pub use radicle::node::UserAgent;
24pub use radicle::node::PROTOCOL_VERSION;
25pub use radicle::prelude::Timestamp;
26pub use radicle::{collections, crypto, git, identity, node, profile, rad, storage};
27pub use runtime::Runtime;
28
29/// Node version.
30pub const VERSION: Version = Version {
31    name: env!("CARGO_PKG_NAME"),
32    commit: env!("GIT_HEAD"),
33    version: env!("RADICLE_VERSION"),
34    timestamp: env!("SOURCE_DATE_EPOCH"),
35};
36
37/// This node's user agent string.
38pub static USER_AGENT: LazyLock<UserAgent> = LazyLock::new(|| {
39    FromStr::from_str(format!("/radicle:{}/", VERSION.version).as_str())
40        .expect("user agent is valid")
41});
42
43pub mod prelude {
44    pub use crate::crypto::{PublicKey, Signature};
45    pub use crate::identity::{Did, RepoId};
46    pub use crate::node::{config::Network, Address, Event, NodeId};
47    pub use crate::service::filter::Filter;
48    pub use crate::service::{DisconnectReason, Message};
49    pub use crate::storage::refs::Refs;
50    pub use crate::storage::WriteStorage;
51    pub use crate::{LocalDuration, LocalTime, Timestamp};
52}