#![forbid(missing_docs)]
#![forbid(missing_debug_implementations)]
#[cfg(feature = "axum")]
pub mod axum;
#[cfg(feature = "rama")]
pub mod rama;
#[cfg(feature = "rocket")]
pub mod rocket;
pub mod execute_script;
pub mod merge_fragments;
pub mod merge_signals;
pub mod remove_fragments;
pub mod remove_signals;
#[cfg(test)]
mod testing;
pub mod consts;
pub mod prelude {
#[cfg(feature = "axum")]
pub use crate::axum::ReadSignals;
#[cfg(all(feature = "rama", not(feature = "axum")))]
pub use crate::rama::ReadSignals;
pub use crate::{
DatastarEvent, Sse, TrySse, consts::FragmentMergeMode, execute_script::ExecuteScript,
merge_fragments::MergeFragments, merge_signals::MergeSignals,
remove_fragments::RemoveFragments, remove_signals::RemoveSignals,
};
}
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 {
writeln!(f, "event: {}", self.event.as_str())?;
if let Some(id) = &self.id {
writeln!(f, "id: {}", id)?;
}
let millis = self.retry.as_millis();
if millis != consts::DEFAULT_SSE_RETRY_DURATION as u128 {
writeln!(f, "retry: {}", millis)?;
}
for line in &self.data {
writeln!(f, "data: {}", line)?;
}
write!(f, "\n\n")?;
Ok(())
}
}
#[derive(Debug)]
pub struct Sse<S>(pub S);
#[derive(Debug)]
pub struct TrySse<S>(pub S);