#![deny(unsafe_code)]
#![warn(clippy::pedantic)]
#![allow(clippy::module_name_repetitions)]
#![allow(clippy::doc_markdown)] #![allow(clippy::cast_precision_loss)] #![allow(clippy::missing_panics_doc)] #![allow(clippy::missing_errors_doc)] #![allow(clippy::double_must_use)] #![allow(clippy::unused_async)] #![allow(clippy::redundant_closure_for_method_calls)] #![allow(clippy::result_large_err)] #![allow(clippy::needless_pass_by_value)]
#![cfg_attr(test, allow(clippy::unwrap_used))]
#![cfg_attr(test, allow(clippy::field_reassign_with_default))]
pub mod env;
pub mod kafka_config;
pub mod sensitive;
#[cfg(feature = "runtime")]
pub mod runtime;
#[cfg(feature = "shutdown")]
pub mod shutdown;
#[cfg(feature = "health")]
pub mod health;
#[cfg(feature = "config")]
pub mod config;
#[cfg(feature = "logger")]
pub mod logger;
#[cfg(any(feature = "metrics", feature = "otel-metrics"))]
pub mod metrics;
#[cfg(feature = "transport")]
pub mod transport;
#[cfg(feature = "http")]
pub mod http_client;
#[cfg(feature = "http-server")]
pub mod http_server;
#[cfg(feature = "database")]
pub mod database;
#[cfg(feature = "cache")]
pub mod cache;
#[cfg(feature = "spool")]
pub mod spool;
#[cfg(feature = "tiered-sink")]
pub mod tiered_sink;
#[cfg(feature = "secrets")]
pub mod secrets;
#[cfg(feature = "directory-config")]
pub mod directory_config;
#[cfg(feature = "memory")]
pub mod memory;
#[cfg(feature = "scaling")]
pub mod scaling;
#[cfg(feature = "worker")]
pub mod worker;
#[cfg(feature = "cli")]
pub mod cli;
#[cfg(feature = "top")]
pub mod top;
#[cfg(feature = "io")]
pub mod io;
#[cfg(feature = "dlq")]
pub mod dlq;
#[cfg(feature = "output-file")]
pub mod output;
#[cfg(feature = "expression")]
pub mod expression;
#[cfg(feature = "deployment")]
pub mod deployment;
#[cfg(feature = "version-check")]
pub mod version_check;
pub use env::{Environment, RuntimeContext, runtime_context};
pub use kafka_config::{
DfeSource, KafkaConfigError, KafkaConfigResult, ServiceRole, TOPIC_SUFFIX_LAND,
TOPIC_SUFFIX_LOAD, config_from_file, config_from_properties_str,
};
pub use sensitive::SensitiveString;
#[cfg(feature = "runtime")]
pub use runtime::RuntimePaths;
#[cfg(feature = "health")]
pub use health::{HealthRegistry, HealthStatus};
#[cfg(feature = "config")]
pub use config::{Config, ConfigError, ConfigOptions};
#[cfg(feature = "config")]
pub use config::flat_env::{ApplyFlatEnv, EnvVarDoc, Normalize};
#[cfg(feature = "config-reload")]
pub use config::reloader::{ConfigReloader, ReloaderConfig};
#[cfg(feature = "config-reload")]
pub use config::shared::SharedConfig;
#[cfg(feature = "config-postgres")]
pub use config::postgres::{
FallbackMode, PostgresConfig, PostgresConfigError, PostgresConfigSource,
};
#[cfg(feature = "logger")]
pub use logger::{
LogFormat, LoggerError, LoggerOptions, SecurityEvent, SecurityOutcome, ThrottleConfig,
};
#[cfg(any(feature = "metrics", feature = "otel-metrics"))]
pub use metrics::{DfeMetrics, MetricsConfig, MetricsError, MetricsManager};
#[cfg(feature = "otel-metrics")]
pub use metrics::{OtelMetricsConfig, OtelProtocol};
#[cfg(feature = "transport")]
pub use transport::{
CommitToken, Message, PayloadFormat, SendResult, Transport, TransportConfig, TransportError,
TransportResult, TransportType,
};
#[cfg(feature = "http-server")]
pub use http_server::{HttpServer, HttpServerConfig, HttpServerError};
#[cfg(feature = "spool")]
pub use spool::{Spool, SpoolConfig, SpoolError};
#[cfg(feature = "tiered-sink")]
pub use tiered_sink::{
CircuitBreaker, CircuitState, CompressionCodec, DrainStrategy, OrderingMode, Sink, SinkError,
TieredSink, TieredSinkConfig, TieredSinkError,
};
#[cfg(feature = "secrets")]
pub use secrets::{
CacheConfig, FileProvider, RotationEvent, SecretMetadata, SecretProvider, SecretSource,
SecretValue, SecretsConfig, SecretsError, SecretsManager, SecretsResult,
};
#[cfg(feature = "secrets-vault")]
pub use secrets::{OpenBaoAuth, OpenBaoConfig, OpenBaoProvider};
#[cfg(feature = "secrets-aws")]
pub use secrets::{AwsConfig, AwsProvider};
#[cfg(feature = "directory-config")]
pub use directory_config::{
ChangeEvent, ChangeOperation, DirectoryConfigError, DirectoryConfigResult,
DirectoryConfigStore, DirectoryConfigStoreConfig, WriteMode, WriteResult,
};
#[cfg(feature = "memory")]
pub use memory::{MemoryGuard, MemoryGuardConfig, MemoryPressure, detect_memory_limit};
#[cfg(feature = "scaling")]
pub use scaling::{
ComponentSnapshot, GateType, PressureSnapshot, RateWindow, ScalingComponent, ScalingPressure,
ScalingPressureConfig,
};
#[cfg(feature = "worker")]
pub use worker::{
AccumulatorConfig, AccumulatorFull, AdaptiveWorkerPool, BatchAccumulator, BatchDrainer,
BatchPipeline, BatchProcessor, PipelineStats, PipelineStatsSnapshot, ScalingDecision,
ScalingInput, WorkerPoolConfig,
};
#[cfg(feature = "cli")]
pub use cli::{CliError, CommonArgs, DfeApp, ServiceRuntime, StandardCommand, VersionInfo};
#[cfg(feature = "io")]
pub use io::{FileWriterConfig, NdjsonWriter, RotationPeriod};
#[cfg(feature = "dlq")]
pub use dlq::{
Dlq, DlqBackend, DlqConfig, DlqEntry, DlqError, DlqMode, DlqSource, FileDlq, FileDlqConfig,
};
#[cfg(feature = "dlq-kafka")]
pub use dlq::{DlqRouting, KafkaDlq, KafkaDlqConfig};
#[cfg(feature = "dlq-http")]
pub use dlq::{HttpDlq, HttpDlqConfig};
#[cfg(feature = "dlq-redis")]
pub use dlq::{RedisDlq, RedisDlqConfig};
#[cfg(feature = "output-file")]
pub use output::{FileOutput, FileOutputConfig, OutputError};
#[cfg(feature = "expression")]
pub use expression::{
ALLOWED_FUNCTIONS, DISALLOWED_FUNCTIONS, ExpressionError, ExpressionResult, build_context,
compile, evaluate, evaluate_condition, validate,
};
#[cfg(feature = "deployment")]
pub use deployment::{
ContractMismatch, DeploymentContract, DeploymentError, HealthContract, KedaConfig, KedaContract,
};
#[cfg(feature = "version-check")]
pub use version_check::{VersionCheck, VersionCheckConfig, VersionCheckResponse};
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
#[cfg(all(feature = "config", feature = "logger"))]
pub fn init(env_prefix: &str) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
logger::setup_default()?;
config::setup(config::ConfigOptions {
env_prefix: env_prefix.to_string(),
..Default::default()
})?;
Ok(())
}