1#![deny(unsafe_code)]
75#![deny(rustdoc::broken_intra_doc_links)]
76
77pub mod app;
78pub mod auth;
79pub mod compliance;
80pub mod core;
81pub mod data;
82pub mod docs;
83pub mod http;
84pub mod messaging;
85pub mod observability;
86pub mod pipeline;
87pub mod realtime;
88pub mod resilience;
89pub mod testing;
90pub mod web;
91
92pub use auth::cookie;
97
98pub use auth::guards;
103pub use auth::oauth;
104pub use auth::session;
105pub use docs::openapi;
106pub use messaging::event;
107pub use web::security;
108pub use web::validation;
109
110pub use core::plugins;
112pub use web::cache;
113pub use web::interceptors;
114
115#[doc(hidden)]
117pub use axum as __axum;
118pub use futures;
119pub use inventory;
120pub use schemars;
121pub use serde_json;
122pub use validator;
123
124pub use app::{App, LaunchConfig};
125pub use web::{Error, RequestContext};
126
127#[doc(hidden)]
128#[inline]
129pub fn __schema_for<T: schemars::JsonSchema>() -> serde_json::Value {
130 serde_json::to_value(schemars::schema_for!(T)).unwrap_or(serde_json::Value::Null)
131}
132
133#[doc(hidden)]
139pub mod __macro_support {
140 pub use crate::auth::guards::Guard;
141 pub use crate::auth::policy::check_policies;
142 pub use crate::compliance::crypto::EncryptRecord;
143 pub use crate::compliance::masking::mask_response;
144 pub use crate::core::engine::{
149 FrozenDiContainer, HttpMethod, Module, ModuleDescriptor, ParamLoc, ParamSpec,
150 ProviderDescriptor, Resolver, RouteDescriptor, RouteSpec,
151 };
152 pub use crate::data::tx::run_transactional;
153 pub use crate::http::Json;
154 pub use crate::messaging::{EventContext, EventError, EventHandlerDescriptor};
155 pub use crate::observability::audit::emit_route_audit;
156 pub use crate::realtime::gateway::{GatewayDescriptor, GatewayRuntime, MessageHandler};
157 pub use crate::realtime::{ArclyGateway, WsClient};
158 pub use crate::resilience::timeout::run_with_timeout;
159 pub use crate::resilience::{BreakerOpen, CircuitBreaker};
160 pub use crate::web::context::RequestContext;
161 pub use crate::web::extract::{
162 extract_body_validated, extract_header, extract_param, extract_query_validated, Inject,
163 };
164 pub use crate::web::idempotency::run_idempotent;
165 pub use crate::web::interceptors::{Interceptor, NextHandler};
166 pub use crate::web::Error;
167}
168
169pub mod prelude {
171 pub use crate::app::{App, LaunchConfig};
172 pub use crate::auth::cookie::{CookieConfig, CookieService, SameSite};
173 pub use crate::auth::guards::{
174 JwtAuthGuard, RoleGuard, SessionAuthGuard, JWT_AUTH, SESSION_AUTH,
175 };
176 pub use crate::auth::oauth::{OAuth2Provider, OAuth2Service, OAuth2UserInfo};
177 pub use crate::auth::policy::{
178 check_policies, Decision, EnvAttributes, PolicyEngine, PolicyInput, PolicySet, PolicySource,
179 };
180 pub use crate::auth::secrets::{spawn_secret_watcher, Rotating, SecretSource, SecretVersion};
181 pub use crate::auth::session::{Session, SessionConfig, SessionManager, SessionStore};
182 pub use crate::auth::{JwtConfig, JwtService};
183 pub use crate::cache::{stats as cache_stats, CacheInterceptor, CacheStats};
184 pub use crate::compliance::{
185 CryptoError, CryptoVault, DataKey, EncryptRecord, EncryptedField, KekSource, KeyId,
186 MaskRule, MaskStrategy, Masker, MaskingPolicy,
187 };
188 pub use crate::core::engine::FrozenDiContainer;
189 pub use crate::core::plugins::{ArclyPlugin, ArclyPluginContext, PluginError, PluginStage};
190 pub use crate::data::db::{ArclyDbPool, DbDriver, DbHealthCheck, OwnedDbConn};
191 #[cfg(feature = "db-sqlx")]
192 pub use crate::data::migrate::{Migration, MigrationReport, MigrationRunner};
193 pub use crate::data::outbox::{
194 with_transaction, OutboxEntry, OutboxPublisher, OutboxRelay, OutboxStore, OutboxTx,
195 TransactionalDataSource,
196 };
197 pub use crate::data::tx::{in_transaction, with_current_tx, ArclyTransaction};
198 pub use crate::data::{
199 AccessIntent, DataError, DataErrorKind, DataSource, DataSourceRegistry, ReadAfterWritePin,
200 };
201 pub use crate::http::{IntoResponse, Json, Response};
202 pub use crate::interceptors::{
203 EnvelopeResponse, Interceptor, LatencyLog, NextHandler, TelemetryLog, TraceInterceptor,
204 };
205 pub use crate::messaging::{
206 ConsumerRuntime, EventContext, EventHandlerDescriptor, InboundMessage, MessageTransport,
207 };
208 pub use crate::observability::audit::{AuditOutcome, AuditPipeline, AuditRecord, AuditSink};
209 pub use crate::observability::health::{HealthCheck, HealthRegistry, HealthStatus};
210 pub use crate::observability::plugin::ArclyObservabilityPlugin;
211 pub use crate::openapi::{ApiKeyIn, OpenApiInfo, SecurityScheme};
212 pub use crate::pipeline::Provenance;
213 pub use crate::resilience::{
214 Bulkhead, DLockBackend, DistributedLock, DistributedRateLimit, FailurePolicy, LockGuard,
215 RateDecision, RateLimit, RateLimitBackend,
216 };
217 pub use crate::security::{configure as configure_security, FrameOptions, SecurityConfig};
218 pub use crate::validation::Validated;
219 pub use crate::web::boundary::BoundaryFilter;
220 pub use crate::web::cors::CorsConfig;
221 pub use crate::web::dynamic::{DynamicRouteTable, DYNAMIC_PREFIX};
222 pub use crate::web::error::{
223 BadRequest, Conflict, FieldError, Forbidden, GatewayTimeout, HttpError, HttpException,
224 Internal, NotFound, ProblemDetails, ServiceUnavailable, TooManyRequests, Unauthorized,
225 Validation,
226 };
227 pub use crate::web::idempotency::{IdempotencyDecision, IdempotencyStore};
228 pub use crate::web::multipart::{MultipartForm, Part};
229 pub use crate::web::pagination::{Page, PageParams};
230 pub use crate::web::responses::{Accepted, Created, NoContent};
231 pub use crate::web::tenant::{
232 TenantConfig, TenantGuard, TenantId, TenantRegistry, TenantStrategy, TENANT,
233 };
234 pub use crate::web::{Error, Inject, RequestContext};
235 pub use arcly_http_macros::{
236 circuit_breaker, AuditLog, CacheKey, CacheTTL, Controller, Delete, Deprecated,
237 EncryptFields, EventConsumer, EventPattern, Get, Idempotent, Injectable, MaskFields,
238 Module, Multipart, Patch, Post, Put, RequirePolicies, Timeout, Transactional,
239 UseInterceptors, Version,
240 };
241 pub use schemars::JsonSchema;
242 pub use validator::Validate;
243}