pub mod base;
pub mod component_graph_source;
pub mod future_queue_source;
pub(crate) mod graph_elements;
pub mod manager;
mod traits;
#[cfg(test)]
pub(crate) mod tests;
use async_trait::async_trait;
use drasi_core::models::SourceChange;
#[async_trait]
pub trait Publisher: Send + Sync {
async fn publish(
&self,
change: SourceChange,
) -> Result<(), Box<dyn std::error::Error + Send + Sync>>;
}
pub use traits::Source;
pub use traits::SourceError;
pub use base::{SourceBase, SourceBaseParams};
pub use component_graph_source::{ComponentGraphSource, COMPONENT_GRAPH_SOURCE_ID};
pub use future_queue_source::{FutureQueueSource, FUTURE_QUEUE_SOURCE_ID};
pub use manager::SourceManager;
pub use manager::{convert_json_to_element_properties, convert_json_to_element_value};