xerv_nodes/lib.rs
1//! Standard library nodes and triggers for XERV.
2//!
3//! This crate provides the built-in nodes and triggers that form XERV's standard library:
4//!
5//! ## Flow Control (`flow::*`)
6//! - [`flow::MergeNode`] - N→1 barrier that waits for all inputs
7//! - [`flow::SwitchNode`] - Conditional routing based on expression
8//! - [`flow::LoopNode`] - Controlled iteration with exit condition
9//! - [`flow::WaitNode`] - Human-in-the-loop approval patterns
10//!
11//! ## Data Manipulation (`data::*`)
12//! - [`data::SplitNode`] - Fan-out iterator for collections
13//! - [`data::MapNode`] - Field renaming and transformation
14//! - [`data::ConcatNode`] - String concatenation
15//! - [`data::AggregateNode`] - Numeric aggregation (sum, avg, min, max)
16//! - [`data::JsonDynamicNode`] - Schemaless JSON handling
17//!
18//! ## Triggers (`triggers::*`)
19//! - [`triggers::WebhookTrigger`] - HTTP webhook endpoint
20//! - [`triggers::CronTrigger`] - Scheduled execution via cron expressions
21//! - [`triggers::FilesystemTrigger`] - File system event watcher
22//! - [`triggers::QueueTrigger`] - In-memory message queue
23//! - [`triggers::MemoryTrigger`] - Direct memory injection (benchmarks)
24//! - [`triggers::ManualTrigger`] - Manual invocation (testing)
25
26pub mod data;
27pub mod flow;
28pub mod triggers;
29
30// Flow control exports
31pub use flow::{
32 LoopCondition, LoopNode, MergeNode, MergeStrategy, ResumeMethod, SwitchCondition, SwitchNode,
33 TimeoutAction, WaitNode, WaitPersistence,
34};
35
36// Data manipulation exports
37pub use data::{
38 AggregateNode, AggregateOperation, ConcatNode, FieldMapping, JsonDynamicNode, MapNode,
39 SplitMode, SplitNode,
40};
41
42// Trigger exports
43pub use triggers::{
44 CronTrigger, CronTriggerFactory, FilesystemTrigger, FilesystemTriggerFactory, ManualEvent,
45 ManualFireHandle, ManualTrigger, ManualTriggerFactory, MemoryInjector, MemoryTrigger,
46 MemoryTriggerFactory, QueueHandle, QueueMessage, QueueTrigger, QueueTriggerFactory,
47 StandardTriggerFactory, WebhookTrigger, WebhookTriggerFactory,
48};
49
50/// Prelude for commonly used types.
51pub mod prelude {
52 // Flow control
53 pub use crate::flow::{
54 LoopCondition, LoopNode, MergeNode, MergeStrategy, ResumeMethod, SwitchCondition,
55 SwitchNode, TimeoutAction, WaitNode, WaitPersistence,
56 };
57
58 // Data manipulation
59 pub use crate::data::{
60 AggregateNode, AggregateOperation, ConcatNode, FieldMapping, JsonDynamicNode, MapNode,
61 SplitMode, SplitNode,
62 };
63
64 // Triggers
65 pub use crate::triggers::{
66 CronTrigger, FilesystemTrigger, ManualEvent, ManualFireHandle, ManualTrigger,
67 MemoryInjector, MemoryTrigger, QueueHandle, QueueMessage, QueueTrigger,
68 StandardTriggerFactory, WebhookTrigger,
69 };
70}