pipeflow/lib.rs
1//! pipeflow - A lightweight, configuration-driven data pipeline framework
2//!
3//! # Overview
4//!
5//! pipeflow follows the classic ETL pattern:
6//!
7//! ```text
8//! Source → Transform → Sink
9//! ```
10//!
11//! Pipelines are defined in YAML configuration files, requiring no code to set up
12//! common data processing workflows.
13//!
14//! # Quick Start
15//!
16//! ```yaml
17//! # pipeline.yaml
18//!
19//! pipeline:
20//! sources:
21//! - id: api_poller
22//! type: http_client
23//! config:
24//! url: "https://httpbin.org/json"
25//! interval: "10s" # supports "30s", "5m", "1h 30m", etc.
26//!
27//! sinks:
28//! - id: console_out
29//! type: console
30//! inputs: [api_poller]
31//! config:
32//! format: pretty
33//! ```
34//!
35//! # Features
36//!
37//! - **Configuration-driven**: Define pipelines in YAML
38//! - **Backpressure**: Bounded channels with configurable capacity
39//! - **Fan-out**: One source/transform can feed multiple downstream nodes
40
41#![warn(missing_docs)]
42#![warn(clippy::all)]
43#![deny(unsafe_code)]
44
45pub mod config;
46pub mod engine;
47pub mod error;
48pub mod message;
49pub mod sink;
50pub mod source;
51pub mod transform;
52
53// Re-exports
54pub use error::{Error, Result};
55pub use message::{DeadLetter, Message, MessageMeta, SharedMessage};
56
57/// Prelude module for convenient imports
58pub mod prelude {
59 pub use crate::config::Config;
60 pub use crate::engine::Engine;
61 pub use crate::error::{Error, Result};
62 pub use crate::message::{DeadLetter, Message, MessageMeta, SharedMessage};
63 pub use crate::sink::Sink;
64 pub use crate::source::Source;
65 pub use crate::transform::Transform;
66}