featherbit/config/mod.rs
1//! Configuration loading and schema types for the gateway's two YAML files:
2//! `system.yaml` (process-level settings: listener, timeouts, admin, logging)
3//! and `gateway.yaml` (routes and node-graph policies). All values support
4//! `${ENV_VAR:-default}` interpolation: raw YAML file text is interpolated by
5//! [`load_yaml_with_env`], and structured plugin config authored through the
6//! Admin API / Web UI (or delivered over etcd) is interpolated at graph-compile
7//! time by [`interpolate_env_json`].
8
9mod gateway;
10mod loader;
11mod system;
12
13pub use loader::{interpolate_env_json, load_yaml_with_env};
14// featherbit is a binary crate, so `pub` exports nothing externally: re-exports
15// consumed only by `#[cfg(test)]` code read as unused in the bin build.
16#[allow(unused_imports)]
17pub use gateway::{EdgeConfig, GatewayConfig, MatchRule, NodeConfig, PolicyConfig, RouteConfig};
18#[allow(unused_imports)]
19pub use system::{
20 AdminConfig, ConfigSourceKind, DebugConfig, EtcdConfig, LoggingConfig, SniCert, SniRoute,
21 StreamListenerConfig, StreamProtocol, StreamUpstreamConfig, SystemConfig, TimeoutConfig,
22 TlsConfig,
23};