#![forbid(missing_docs)]
#![forbid(missing_debug_implementations)]
#[cfg(feature = "axum")]
pub mod axum;
#[cfg(feature = "rocket")]
pub mod rocket;
pub mod execute_script;
pub mod patch_elements;
pub mod patch_signals;
#[doc = include_str!("../README.md")]
#[cfg(doctest)]
#[expect(unused)]
struct ReadmeDoctests;
pub mod consts;
pub mod prelude {
pub use crate::{
DatastarEvent, consts::ElementPatchMode, execute_script::ExecuteScript,
patch_elements::PatchElements, patch_signals::PatchSignals,
};
}
use core::{fmt::Display, time::Duration};
#[derive(Debug)]
pub struct DatastarEvent {
pub event: consts::EventType,
pub id: Option<String>,
pub retry: Duration,
pub data: Vec<String>,
}
impl Display for DatastarEvent {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "event: {}", self.event.as_str())?;
if let Some(id) = &self.id {
write!(f, "\nid: {id}")?;
}
let millis = self.retry.as_millis();
if millis != consts::DEFAULT_SSE_RETRY_DURATION as u128 {
write!(f, "\nretry: {millis}")?;
}
for line in &self.data {
write!(f, "\ndata: {line}")?;
}
write!(f, "\n\n")?;
Ok(())
}
}