1pub const VERSION: &str = env!("CARGO_PKG_VERSION");
3
4pub mod bus;
5pub mod cluster;
6pub mod config;
7pub mod debug;
8pub mod error;
9pub mod event;
10pub mod iam;
11pub mod metadata;
12pub mod never;
13pub mod outcome;
14pub mod policy;
15pub mod saga;
16pub mod schematic;
17pub mod static_gen;
18pub mod synapse;
19pub mod telemetry;
20pub mod tenant;
21pub mod timeline;
22pub mod transition;
23
24#[allow(deprecated)]
29pub use static_gen::{
30 StaticAxon, StaticBuildConfig, StaticBuildResult, StaticManifest, StaticNode, StaticStateEntry,
31 read_json_file, write_json_file,
32};
33
34pub mod prelude {
36 pub use crate::bus::{Bus, BusAccessError, BusAccessPolicy, BusTypeRef};
37 pub use crate::config::{RanvierConfig, ServerConfig, LoggingConfig, TlsConfig, InspectorConfig, TelemetryConfig, OtlpProtocol, LogFormat, ConfigError};
38 pub use crate::debug::{DebugControl, DebugState};
39 pub use crate::event::{DeadLetter, DlqPolicy, DlqReader, DlqSink, EventSink, EventSource};
40 pub use crate::iam::{
41 AuthContext, AuthScheme, IamError, IamHandle, IamIdentity, IamPolicy, IamToken,
42 IamVerifier,
43 };
44 pub use crate::metadata::StepMetadata;
45 pub use crate::outcome::{BranchId, NodeId, Outcome};
46 pub use crate::policy::{DynamicPolicy, PolicyRegistry};
47 pub use crate::saga::{SagaCompensationRegistry, SagaPolicy, SagaStack, SagaTask};
48 pub use crate::schematic::{Edge, EdgeType, Node, NodeKind, SchemaMigrationMapper, Schematic};
49 pub use crate::tenant::{IsolationPolicy, TenantExtractor, TenantId, TenantResolver};
50 pub use crate::timeline::{Timeline, TimelineEvent};
51 pub use crate::error::RanvierError;
52 pub use crate::never::Never;
53 pub use crate::transition::{ResourceRequirement, Transition};
54}
55
56pub use bus::{Bus, BusAccessError, BusAccessPolicy, BusTypeRef};
62pub use cluster::{ClusterBus, ClusterError, DistributedLock};
63pub use never::Never;
64pub use outcome::Outcome;
65pub use schematic::Schematic;
66pub use timeline::{Timeline, TimelineEvent};
67pub use transition::Transition;
68
69#[macro_export]
74macro_rules! ranvier_bus {
75 () => {{
76 $crate::bus::Bus::new()
77 }};
78 ($($resource:expr),+ $(,)?) => {{
79 let mut __ranvier_bus = $crate::bus::Bus::new();
80 $(
81 __ranvier_bus.insert($resource);
82 )+
83 __ranvier_bus
84 }};
85}
86
87#[cfg(test)]
88mod macro_tests {
89 #[test]
90 fn ranvier_bus_macro_creates_empty_bus() {
91 let bus = crate::ranvier_bus!();
92 assert!(bus.is_empty());
93 }
94
95 #[test]
96 fn ranvier_bus_macro_inserts_multiple_resources() {
97 let bus = crate::ranvier_bus!(42i32, String::from("value"));
98 assert_eq!(*bus.read::<i32>().unwrap(), 42);
99 assert_eq!(bus.read::<String>().unwrap(), "value");
100 }
101}